Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
+
+
\ No newline at end of file
diff --git a/assets/css/styles.563202eb.css b/assets/css/styles.563202eb.css
new file mode 100644
index 00000000..840678a2
--- /dev/null
+++ b/assets/css/styles.563202eb.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown:after,.markdown:before{content:"";display:table}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_MMFG,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_QWGu,.details_IpIu>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_BiEj,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_XzR1 .wordWrapButtonIcon_HV9T{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_GCBg,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.button,.button:hover{color:var(--ifm-button-color)}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_BE9Z:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_tjFy article>:first-child,.docItemContainer_tjFy header+*,.footer__item{margin-top:0}.admonitionContent_pbrs>:last-child,.collapsibleContent_Fd2D p:last-child,.details_IpIu>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_wQog,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_IpIu[data-collapsed=false].isBrowser_QD4r>summary:before,.details_IpIu[open]:not(.isBrowser_QD4r)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);display:flex;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_t7IR,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_QWGu>li)>.containsTaskList_QWGu{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.docusaurus-highlight-code-line{background-color:#484d5b;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.header-github-link:hover{opacity:.6}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;content:"";display:flex;height:24px;width:24px}html[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_c7NB,.navbarSearchContainer_bzqh:empty,.sidebarLogo_CYvI,.themedComponent_siVc,[data-theme=dark] .lightToggleIcon_lgto,[data-theme=light] .darkToggleIcon_U96C,html[data-announcement-bar-initially-dismissed=true] .announcementBar_zJRd{display:none}.skipToContent_oPtH{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_oPtH:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_J5rP{line-height:0;padding:0}.content_bSb_{font-size:85%;padding:5px 0;text-align:center}.content_bSb_ a{color:inherit;text-decoration:underline}.announcementBar_zJRd{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_NpUd{flex:0 0 10px}.announcementBarClose_Jjdj{align-self:stretch;flex:0 0 30px}.toggle_ki11{height:2rem;width:2rem}.toggleButton_MMFG{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_MMFG:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_Uw7m{cursor:not-allowed}.darkNavbarColorModeToggle_m8pZ:hover{background:var(--ifm-color-gray-800)}.tag_otG2{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_otG2:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_s0E1{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_PGyn{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_PGyn:after,.tagWithCount_PGyn:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_PGyn:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_PGyn:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_PGyn span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_Ow0B{display:inline}.tag_DFxh{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_bHB7{margin-right:.3em;vertical-align:sub}.lastUpdated_ydrU{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_iI2p{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_iI2p:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_cHjC:after,.tocCollapsibleExpanded_BbRn{transform:none}.tocCollapsible_wXna{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vea0>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vea0 ul li{margin:.4rem .8rem}.tocCollapsibleContent_vea0 a{display:block}.tableOfContents_XG6w{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_iEvu{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_iEvu:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_DO8w{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark] .themedComponent--dark_yETr,[data-theme=light] .themedComponent--light_hHel,html:not([data-theme]) .themedComponent--light_hHel{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_oTwn{display:none;margin:0}.iconExternalLink_nPrP{margin-left:.3rem}.dropdownNavbarItemMobile_MJ1i{cursor:pointer}.iconLanguage_kvP7{margin-right:5px;vertical-align:text-bottom}.navbarHideable_hhpl{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nmcs{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_WE6Q{color:red;white-space:pre-wrap}.errorBoundaryFallback_bdJX{color:red;padding:.55rem}.buttonGroup_aaMX button,.codeBlockContainer_mQmQ{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_tutC{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_tutC:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.docMainContainer_a9sJ,.docRoot_DfVB{display:flex;width:100%}.docsWrapper__sE8{display:flex;flex:1 0 auto}.anchorWithStickyNavbar_JmGV{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_pMLv{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_MB5r{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_mQmQ{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_D5yF{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_x_ju{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_RMoD{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_x_ju+.codeBlockContent_D5yF .codeBlock_RMoD{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_AclH{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_O625{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_aaMX{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_aaMX button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_aaMX button:focus-visible,.buttonGroup_aaMX button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_aaMX button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_FAqz{counter-increment:a;display:table-row}.codeLineNumber_BE9Z{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_BE9Z:before{content:counter(a);opacity:.4}.codeLineContent_EF2y{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_TYdd{opacity:1!important}.copyButtonIcons_z5j7{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_FoOz,.copyButtonSuccessIcon_L0B6{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_L0B6{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TYdd .copyButtonIcon_FoOz{opacity:0;transform:scale(.33)}.copyButtonCopied_TYdd .copyButtonSuccessIcon_L0B6{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_HV9T{height:1.2rem;width:1.2rem}.details_IpIu{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_IpIu>summary{cursor:pointer;padding-left:1rem;position:relative}.details_IpIu>summary::-webkit-details-marker{display:none}.details_IpIu>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_Fd2D{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_jERq{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_SS3x{height:auto}.admonition_WCGJ{margin-bottom:1em}.admonitionHeading_GCBg{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_GCBg:not(:last-child){margin-bottom:.3rem}.admonitionHeading_GCBg code{text-transform:none}.admonitionIcon_L39b{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_L39b svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_sfvy{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_T5ub{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}@media (min-width:997px){.collapseSidebarButton_oTwn,.expandButton_pLDq{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_Jjdj,.announcementBarPlaceholder_NpUd{flex-basis:50px}.lastUpdated_ydrU{text-align:right}.tocMobile_Ojys{display:none}.collapseSidebarButton_oTwn{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_pMEX{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_X5ff,[dir=rtl] .collapseSidebarButtonIcon_pMEX{transform:rotate(0)}.collapseSidebarButton_oTwn:focus,.collapseSidebarButton_oTwn:hover,.expandButton_pLDq:focus,.expandButton_pLDq:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.navbarSearchContainer_bzqh{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.menuHtmlItem_OniL{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_jmj1{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_jmj1{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_YufC{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_CUen{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_w4KB{padding-top:0}.sidebarHidden_k6VE{opacity:0;visibility:hidden}.sidebarLogo_CYvI{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_CYvI img{height:2rem;margin-right:.5rem}.expandButton_pLDq{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_X5ff{transform:rotate(180deg)}.docSidebarContainer_c7NB{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_P3S_{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_KYo0{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_a9sJ{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_grEJ{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_VqDq{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_Qr34{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hewu,.footer__link-separator,.navbar__item,.tableOfContents_XG6w{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer_Tr6w{padding:0 .3rem}.navbarSearchContainer_bzqh{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_iEvu:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_zJRd,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_Ojys{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_AclH{white-space:pre-wrap}}
\ No newline at end of file
diff --git a/assets/js/0941ac51.1a47743e.js b/assets/js/0941ac51.1a47743e.js
new file mode 100644
index 00000000..e28c209a
--- /dev/null
+++ b/assets/js/0941ac51.1a47743e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[197],{326:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"someSidebar":[{"type":"category","label":"Workflow CLI Docs","items":[{"type":"link","label":"Introduction","href":"/availity-workflow/","docId":"index","unlisted":false},{"type":"link","label":"Quick Start","href":"/availity-workflow/quick-start","docId":"quick-start","unlisted":false},{"type":"link","label":"Upgrading @availity/workflow","href":"/availity-workflow/upgrading-workflow","docId":"upgrading-workflow","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Tutorial","items":[{"type":"link","label":"Getting Started","href":"/availity-workflow/tutorial/","docId":"tutorial/index","unlisted":false},{"type":"link","label":"Bring on the Mocks","href":"/availity-workflow/tutorial/mocks","docId":"tutorial/mocks","unlisted":false},{"type":"link","label":"Creating a Deployment","href":"/availity-workflow/tutorial/deploy","docId":"tutorial/deploy","unlisted":false},{"type":"link","label":"Dependency Management","href":"/availity-workflow/tutorial/dependency-management","docId":"tutorial/dependency-management","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Recipe","items":[{"type":"link","label":"Testing Libraries","href":"/availity-workflow/recipes/testing-libraries","docId":"recipes/testing-libraries","unlisted":false},{"type":"link","label":"Configuring Root Imports","href":"/availity-workflow/recipes/root-imports","docId":"recipes/root-imports","unlisted":false},{"type":"link","label":"Adding Typescript Support","href":"/availity-workflow/recipes/typescript","docId":"recipes/typescript","unlisted":false},{"type":"link","label":"Setting up Logging","href":"/availity-workflow/recipes/logging","docId":"recipes/logging","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"API Reference","items":[{"type":"link","label":"Reference: Workflow Configuration","href":"/availity-workflow/reference/workflow-config","docId":"reference/workflow-config","unlisted":false},{"type":"link","label":"Reference: CLI Commands","href":"/availity-workflow/reference/commands","docId":"reference/commands","unlisted":false},{"type":"link","label":"Reference: Mock Server","href":"/availity-workflow/reference/mock-server","docId":"reference/mock-server","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"index":{"id":"index","title":"Introduction","description":"Workflow CLI is a toolkit designed for kick-starting React web projects on the Availity Portal.","sidebar":"someSidebar"},"quick-start":{"id":"quick-start","title":"Quick Start","description":"Create a new App using the Workflow CLI","sidebar":"someSidebar"},"recipes/logging":{"id":"recipes/logging","title":"Setting up Logging","description":"Analytics allows you to collect data on clicks and different page events across your application. More detailed prop options and examples can be found here.","sidebar":"someSidebar"},"recipes/root-imports":{"id":"recipes/root-imports","title":"Configuring Root Imports","description":"Note that the below recipe only works in Workflow Versions >=7.0.0","sidebar":"someSidebar"},"recipes/testing-libraries":{"id":"recipes/testing-libraries","title":"Testing Libraries","description":"By default @testing-library/react and @testing-library/jest-dom/extend-expect are added to the project. Some of their scripts are also automatically added to the setupFilesAfterEnv param for jest here.","sidebar":"someSidebar"},"recipes/typescript":{"id":"recipes/typescript","title":"Adding Typescript Support","description":"Step by step for adding typescript to workflow.","sidebar":"someSidebar"},"reference/commands":{"id":"reference/commands","title":"Reference: CLI Commands","description":"Full list of Workflow Commands","sidebar":"someSidebar"},"reference/mock-server":{"id":"reference/mock-server","title":"Reference: Mock Server","description":"Intro","sidebar":"someSidebar"},"reference/workflow-config":{"id":"reference/workflow-config","title":"Reference: Workflow Configuration","description":"Features","sidebar":"someSidebar"},"tutorial/dependency-management":{"id":"tutorial/dependency-management","title":"Dependency Management","description":"Everything related to managing dependencies","sidebar":"someSidebar"},"tutorial/deploy":{"id":"tutorial/deploy","title":"Creating a Deployment","description":"If you have made it this far then you must mean business. The application must have 100% test coverage and be ready to be deployed on a Friday afternoon to production. \ud83d\ude09","sidebar":"someSidebar"},"tutorial/index":{"id":"tutorial/index","title":"Getting Started","description":"Prerequisites","sidebar":"someSidebar"},"tutorial/mocks":{"id":"tutorial/mocks","title":"Bring on the Mocks","description":"When developing Availity applications there is no use in a UI that doesn\'t connect to some data source. There are a few ways a developer can get data when developing locally:","sidebar":"someSidebar"},"upgrading-workflow":{"id":"upgrading-workflow","title":"Upgrading @availity/workflow","description":"It\'s important to stay up to date with the latest version of @availity/workflow. Keeping your dependencies up to date minimizes security risk and ensures your project maintains compatibility with our build system. You can upgrade @availity/workflow manually yourself, or utilize the workflow-upgrade script.","sidebar":"someSidebar"}}}}')}}]);
\ No newline at end of file
diff --git a/assets/js/0e4ddfbf.7e025a3f.js b/assets/js/0e4ddfbf.7e025a3f.js
new file mode 100644
index 00000000..b1f0cc7c
--- /dev/null
+++ b/assets/js/0e4ddfbf.7e025a3f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[912],{6550:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var n=t(2540),i=t(3023);const r={title:"Configuring Root Imports"},s=void 0,l={id:"recipes/root-imports",title:"Configuring Root Imports",description:"Note that the below recipe only works in Workflow Versions >=7.0.0",source:"@site/docs/recipes/root-imports.md",sourceDirName:"recipes",slug:"/recipes/root-imports",permalink:"/availity-workflow/recipes/root-imports",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/recipes/root-imports.md",tags:[],version:"current",frontMatter:{title:"Configuring Root Imports"},sidebar:"someSidebar",previous:{title:"Testing Libraries",permalink:"/availity-workflow/recipes/testing-libraries"},next:{title:"Adding Typescript Support",permalink:"/availity-workflow/recipes/typescript"}},a={},c=[{value:"Example",id:"example",level:2},{value:"Eslint Config",id:"eslint-config",level:2},{value:"TsConfig For Visual Studio Code",id:"tsconfig-for-visual-studio-code",level:2},{value:"References",id:"references",level:2}];function d(e){const o={a:"a",blockquote:"blockquote",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.blockquote,{children:["\n",(0,n.jsxs)(o.p,{children:["Note that the below recipe only works in Workflow Versions ",(0,n.jsx)(o.code,{children:">=7.0.0"})]}),"\n"]}),"\n",(0,n.jsxs)(o.p,{children:["By default we include ",(0,n.jsx)(o.code,{children:"babel-plugin-import"})," which allows you to import components using a specific syntax if you have a tree structure that goes past 2 - 3 layers."]}),"\n",(0,n.jsxs)(o.p,{children:["Using the ",(0,n.jsx)(o.code,{children:"@/"})," key we can alias anything from the root of ",(0,n.jsx)(o.code,{children:"project/app"})," inside of our project. We include the eslint config, and tsconfig so that if you are using vscode you will get all the intellisense for free."]}),"\n",(0,n.jsx)(o.h2,{id:"example",children:"Example"}),"\n",(0,n.jsx)(o.p,{children:"In the below example, we are"}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-jsx",metastring:"hideCopy=true",children:"import React from 'react';\nimport Form from '@/components/Form';\n\n;\n"})}),"\n",(0,n.jsx)(o.h2,{id:"eslint-config",children:"Eslint Config"}),"\n",(0,n.jsxs)(o.p,{children:["Make sure you have the latest ",(0,n.jsx)(o.code,{children:"eslint-config-availity"})," installed."]}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-bash",children:"yarn add eslint-config-availity@latest --dev\n"})}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-yaml",metastring:"header=.eslintrc.yml",children:"extends: availity/workflow\n"})}),"\n",(0,n.jsx)(o.h2,{id:"tsconfig-for-visual-studio-code",children:"TsConfig For Visual Studio Code"}),"\n",(0,n.jsxs)(o.p,{children:["If you want intellisense in vscode to pick up the root imports and allow you to control click into components you will need to make sure your ",(0,n.jsx)(o.code,{children:"tsconfig.json"})," is updated. We have pasted ours below that we use in our starter projects."]}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-json",children:'{\n "compilerOptions": {\n "target": "es5",\n "lib": ["dom", "dom.iterable", "esnext"],\n "allowJs": true,\n "skipLibCheck": true,\n "esModuleInterop": true,\n "allowSyntheticDefaultImports": true,\n "strict": true,\n "forceConsistentCasingInFileNames": true,\n "module": "esnext",\n "moduleResolution": "node",\n "resolveJsonModule": true,\n "isolatedModules": true,\n "noEmit": true,\n "jsx": "react",\n "baseUrl": ".",\n "paths": {\n "@/*": ["./project/app/*"]\n }\n }\n}\n'})}),"\n",(0,n.jsx)(o.h2,{id:"references",children:"References"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.a,{href:"https://www.npmjs.com/package/babel-plugin-root-import",children:"babel-plugin-root-import"})}),"\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.a,{href:"https://www.npmjs.com/package/eslint-import-resolver-babel-plugin-root-import",children:"eslint-root-import-resolver"})}),"\n"]})]})}function p(e={}){const{wrapper:o}={...(0,i.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},3023:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>l});var n=t(3696);const i={},r=n.createContext(i);function s(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1617aa34.2c1a74ca.js b/assets/js/1617aa34.2c1a74ca.js
new file mode 100644
index 00000000..79e22e8f
--- /dev/null
+++ b/assets/js/1617aa34.2c1a74ca.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[433],{1573:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>t,metadata:()=>o,toc:()=>c});var r=s(2540),a=s(3023);const t={title:"Reference: Mock Server"},i=void 0,o={id:"reference/mock-server",title:"Reference: Mock Server",description:"Intro",source:"@site/docs/reference/mock-server.md",sourceDirName:"reference",slug:"/reference/mock-server",permalink:"/availity-workflow/reference/mock-server",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/reference/mock-server.md",tags:[],version:"current",frontMatter:{title:"Reference: Mock Server"},sidebar:"someSidebar",previous:{title:"Reference: CLI Commands",permalink:"/availity-workflow/reference/commands"}},l={},c=[{value:"Intro",id:"intro",level:2},{value:"Route Matching",id:"route-matching",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Standalone Server",id:"standalone-server",level:3},{value:"Express Middleware",id:"express-middleware",level:3},{value:"Options",id:"options",level:2},{value:"Route Configuration Examples",id:"route-configuration-examples",level:2},{value:"Simple",id:"simple",level:3},{value:"Status Code",id:"status-code",level:3},{value:"POST with Default Response",id:"post-with-default-response",level:3},{value:"CRUD",id:"crud",level:3},{value:"CRUD using objects",id:"crud-using-objects",level:3},{value:"Query Params with Arrays and Regexes",id:"query-params-with-arrays-and-regexes",level:3},{value:"POST Params",id:"post-params",level:3},{value:"Multipart",id:"multipart",level:3},{value:"Async Responses",id:"async-responses",level:3},{value:"Async Responses with Repeat Option",id:"async-responses-with-repeat-option",level:3},{value:"Match Headers",id:"match-headers",level:3},{value:"Url Redirect",id:"url-redirect",level:3},{value:"Acknowledgements",id:"acknowledgements",level:2}];function d(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"intro",children:"Intro"}),"\n",(0,r.jsx)(n.p,{children:"Develop web applications without heavy back-end services by running Express middleware or http server which can deliver mock responses."}),"\n",(0,r.jsxs)(n.p,{children:["Responses can be JSON or other formats to simulate REST services. Access-Control HTTP Headers are set by default to allow CORS requests. Mock services are configured in the ",(0,r.jsx)(n.a,{href:"https://github.com/Availity/availity-workflow/blob/master/packages/mock-data/routes.json",children:"routes.json"})," file."]}),"\n",(0,r.jsxs)(n.p,{children:["This server can return other file types besides XML or JSON (PDFs, images, etc). The appropriate response headers will be automatically set for different file types. For a complete list of file types supported view the ",(0,r.jsx)(n.a,{href:"https://github.com/jshttp/mime-db/blob/88d8b0424d93aefef4ef300dc35ad2c8d1e1f9d4/db.json",children:"mime types here"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"route-matching",children:"Route Matching"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"availity-mock-server"})," is designed to respond with the route configuration that matches the incoming request the closest by introspecting the request body, parameters and headers. ",(0,r.jsx)(n.code,{children:"availity-mock-server"})," calculates which route scores the highest for each request and returns the appropriate mock response."]}),"\n",(0,r.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,r.jsx)(n.h3,{id:"standalone-server",children:"Standalone Server"}),"\n",(0,r.jsxs)(n.p,{children:["The default server configuration can be found in ",(0,r.jsx)(n.a,{href:"https://github.com/Availity/availity-workflow/blob/master/packages/mock-server/config/index.js",children:"config.js"}),". Pass a different configuration file to the ",(0,r.jsx)(n.code,{children:"availity-mock-server"})," server to override the defaults."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:"const path = require('path');\nconst MockServer = require('@availity/mock-server');\n\nconst configPath = path.join(__dirname, 'path/to/config.js');\nconst server = new MockServer(configPath);\nserver.start();\n"})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, pass options in the start method."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:"const = new MockServer();\n.start({\n data: path.join(__dirname, './data'),\n routes: path.join(__dirname, './routes'),\n plugins: ['@availity/mock-data']\n}).then(function() {\n // server started\n});\n"})}),"\n",(0,r.jsx)(n.h3,{id:"express-middleware",children:"Express Middleware"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"const express = require('express');\nconst app = express();\n\n// This is the same as the stand-alone server use.\nconst MockServer = require('@availity/mock-server');\nconst server = new MockServer({/* options */});\n\napp.use(server.middleware(/* options, same as `start` */);\n\napp.listen(3001);\n"})}),"\n",(0,r.jsx)(n.h2,{id:"options",children:"Options"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"latency"}),": Global delay for all reponses. The latency can be overridden per route configuration. Default is ",(0,r.jsx)(n.code,{children:"250ms"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"limit"}),": Upload max size. Default is ",(0,r.jsx)(n.code,{children:"50mb"}),","]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"host"}),": Server binds and listens for connections on the specified host. Default is ",(0,r.jsx)(n.code,{children:"0.0.0.0"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"port"}),": Server binds and listens for connections on the specified port. Default is ",(0,r.jsx)(n.code,{children:"9999"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"data"}),": Path to folder that contains the json mock responses."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"routes"}),": Path(s) to configuration file that contains a mapping of the request/response routes. Multiple paths can be passed in with an array of strings."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"plugins"}),": Array of NPM module names that enhance ",(0,r.jsx)(n.code,{children:"@availity/mock-server"})," with additional data and routes. @See ",(0,r.jsx)(n.a,{href:"https://github.com/Availity/availity-workflow/tree/master/packages/mock-data",children:"@availity/mock-data"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"logProvider"}),": Function that returns a logger that is used in place of the default logger. Inspired by the log provider in ",(0,r.jsx)(n.a,{href:"https://github.com/chimurai/http-proxy-middleware",children:"http-proxy-middleware"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"pluginContext"}),": A url context value which is used to rewrite every instance of ",(0,r.jsx)(n.code,{children:"${context}"})," variable in mock data responses. This can be useful for HATEOS links."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Simple"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"function logProvider(provider) {\n return require('winston');\n}\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Advanced"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"function logProvider(provider) {\n var logger = new (require('winston').Logger)();\n\n var myCustomProvider = {\n log: logger.log,\n debug: logger.debug,\n info: logger.info,\n warn: logger.warn,\n error: logger.error\n };\n return myCustomProvider;\n}\n"})}),"\n",(0,r.jsx)(n.h2,{id:"route-configuration-examples",children:"Route Configuration Examples"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"routes.json"})," defines the mock responses for rest services. Below are some sample scenarios that should help you understand the configuration options."]}),"\n",(0,r.jsx)(n.p,{children:"The mock configuration supports deep nested introspection of JSON and multi-part form data when matching routes. See Example 6 below."}),"\n",(0,r.jsx)(n.h3,{id:"simple",children:"Simple"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route1": {\n "file": "example1.json" // response for GET|PUT|POST|DELETE\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"status-code",children:"Status Code"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route2": {\n "latency": 250, // latency in (ms)\n "file": "example2.json", // all GET|PUT|POST|DELETE requests\n "status": 201 // return status code 201\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"post-with-default-response",children:"POST with Default Response"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route3": {\n "file": "example3.json", // GET|PUT|DELETE requests\n "post": "example1.json" // POST requests\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"crud",children:"CRUD"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route4": {\n "get": "example1.json", // all GET requests\n "put": "example2.json", // all PUT requests\n "post": "example3.json", // all POST requests\n "delete": "example4.json" // all DELETE requests\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"crud-using-objects",children:"CRUD using objects"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route4": {\n "get": {// all GET requests\n "status": 204,\n "responseHeader": {\n "a": "1",\n "b": "2"\n }\n },\n "put": {// all PUT requests\n "file": "example1.json",\n },\n "post": "example3.json", // all POST requests\n "delete": "example4.json" // all DELETE requests\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"query-params-with-arrays-and-regexes",children:"Query Params with Arrays and Regexes"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route5": {\n "file": "example1.json", // all POST|PUT|DELETE requests\n "get": [\n {\n "file": "example2.json",\n "status": 200, // default status code is 200\n "params": { // GET /v1/router?a=1&b=2&c=3\n "a": "1",\n "b": "2",\n "c": "3"\n }\n },\n {\n "file": "example3.json",\n "params": { // GET /v1/router?a=1&a=2&a=3&a=4\n "a": [1, 2, 3, 4]\n }\n },\n {\n "file": "example4.json",\n "params": { // Regular expression configruation for matching params\n "a": { // GET /v1/router?a=1 OR /v1/router?a=2 OR /v1/router?a=3\n pattern: "1|2|3",\n flags: "i" // Javascript regex flags to ignore case\n }\n }\n },\n ]\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"post-params",children:"POST Params"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route6": {\n "file": "example1.json", // all GET|PUT|DELETE requests\n "post": [\n {\n "file": "example2.json",\n "params": { // POST with JSON payload {"a": 1}\n "a": 1\n }\n },\n {\n "file": "example3.json",\n "params": { // POST with JSON payload {a: {b: {c: "1"} } }\n "a.b.c": 1 // nested attributes supported\n }\n },\n {\n "file": "example4.json",\n "params": { // POST with JSON payload {a : {b: [0,1,2] } }\n "a.b[2]": 2 // nested array attributes supported\n }\n }\n ]\n},\n'})}),"\n",(0,r.jsx)(n.h3,{id:"multipart",children:"Multipart"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-html",children:'\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route7": {\n "file": "example1.json", // all GET|PUT|DELETE requests\n "post": [\n {\n "file": "example2.json" // default response if none match below\n },\n {\n "file": "example3.json",\n "params": { // form submit where form fields a=1 and b="sample.pdf"\n "a": 1,\n "b": "sample.pdf"\n }\n },\n {\n "file": "example4.json",\n "params": { // form submit where form fields a=2 and b="another.name.jpg"\n "a": 2,\n "b": "another.name.jpg"\n }\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"async-responses",children:"Async Responses"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route8": {\n "file": "example1.json",\n "get": [\n {\n "file": "example1.json",\n "response": [\n {\n // first GET request to /v1/route8\n "status": 202,\n "file": "example1.json"\n },\n {\n // second GET request to /v1/route8\n "status": 201,\n "file": "example2.json"\n }\n ]\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"async-responses-with-repeat-option",children:"Async Responses with Repeat Option"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route10": {\n "get": [\n {\n "file": "example1.json",\n "response": [\n {\n "status": 202,\n "file": "example1.json",\n "repeat": 3\n },\n {\n "status": 202,\n "file": "example2.json"\n },\n {\n "status": 202,\n "file": "example3.json",\n "repeat": 4\n },\n {\n "status": 201,\n "file": "example4.json"\n }\n ]\n }\n ]\n }\n'})}),"\n",(0,r.jsx)(n.h3,{id:"match-headers",children:"Match Headers"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route11": {\n "file": "example1.json",\n "get": [\n {\n "file": "example2.json",\n "headers": { // GET with header key-value pair b:2\n "b": "2"\n }\n },\n {\n "file": "example3.json",\n "headers": { // GET with header key-value pair b:3\n "c": "3"\n }\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"url-redirect",children:"Url Redirect"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:'"v1/route9": {\n "url": "http://www.google.com"\n}\n'})}),"\n",(0,r.jsxs)(n.p,{children:["If you omit the port, or set it to ",(0,r.jsx)(n.code,{children:"0"}),", ",(0,r.jsx)(n.code,{children:"@availity/mock-server"})," will let the OS assign a random open port.\nThis allows you to run multiple servers without keeping track of all ports being used. (see Example 2)"]}),"\n",(0,r.jsx)(n.h2,{id:"acknowledgements",children:"Acknowledgements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/gstroup/apimocker",children:"apimocker"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/typicode/json-server",children:"json-server"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},3023:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>o});var r=s(3696);const a={},t=r.createContext(a);function i(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/17896441.6c6924f4.js b/assets/js/17896441.6c6924f4.js
new file mode 100644
index 00000000..f69fc61d
--- /dev/null
+++ b/assets/js/17896441.6c6924f4.js
@@ -0,0 +1 @@
+(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[401],{1138:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Xt});var s=n(3696),a=n(113),o=n(2666),i=n(2540);const l=s.createContext(null);function c(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,i.jsx)(l.Provider,{value:a,children:t})}function r(){const e=(0,s.useContext)(l);if(null===e)throw new o.dV("DocProvider");return e}function d(){var e;const{metadata:t,frontMatter:n,assets:s}=r();return(0,i.jsx)(a.be,{title:t.title,description:t.description,keywords:n.keywords,image:null!=(e=s.image)?e:n.image})}var u=n(2689),m=n(4115),h=n(1287),p=n(2660);function f(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,i.jsxs)(p.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function x(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(f,{...t,subLabel:(0,i.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(f,{...n,subLabel:(0,i.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function b(){const{metadata:e}=r();return(0,i.jsx)(x,{previous:e.previous,next:e.next})}var g=n(2268),v=n(706),j=n(6881),N=n(6719),C=n(6578);const A={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function y(e){const t=A[e.versionMetadata.banner];return(0,i.jsx)(t,{...e})}function k(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,i.jsx)("b",{children:(0,i.jsx)(p.A,{to:n,onClick:s,children:(0,i.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function L(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:a}=(0,v.vT)({failfast:!0}),{savePreferredVersionName:o}=(0,N.g1)(a),{latestDocSuggestion:l,latestVersionSuggestion:c}=(0,v.HW)(a),r=null!=l?l:(d=c).docs.find((e=>e.id===d.mainDocId));var d;return(0,i.jsxs)("div",{className:(0,u.A)(t,j.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,i.jsx)("div",{children:(0,i.jsx)(y,{siteTitle:s,versionMetadata:n})}),(0,i.jsx)("div",{className:"margin-top--md",children:(0,i.jsx)(k,{versionLabel:c.label,to:r.path,onClick:()=>o(c.name)})})]})}function B(e){let{className:t}=e;const n=(0,C.r)();return n.banner?(0,i.jsx)(L,{className:t,versionMetadata:n}):null}function _(e){let{className:t}=e;const n=(0,C.r)();return n.badge?(0,i.jsx)("span",{className:(0,u.A)(t,j.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,i.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}const w={tag:"tag_otG2",tagRegular:"tagRegular_s0E1",tagWithCount:"tagWithCount_PGyn"};function T(e){let{permalink:t,label:n,count:s,description:a}=e;return(0,i.jsxs)(p.A,{href:t,title:a,className:(0,u.A)(w.tag,s?w.tagWithCount:w.tagRegular),children:[n,s&&(0,i.jsx)("span",{children:s})]})}const E={tags:"tags_Ow0B",tag:"tag_DFxh"};function H(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,u.A)(E.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,i.jsx)("li",{className:E.tag,children:(0,i.jsx)(T,{...e})},e.permalink)))})]})}const M={iconEdit:"iconEdit_bHB7"};function I(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.A)(M.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function S(e){let{editUrl:t}=e;return(0,i.jsxs)(p.A,{to:t,className:j.G.common.editThisPage,children:[(0,i.jsx)(I,{}),(0,i.jsx)(h.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}function U(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,g.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,g.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}function R(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=U({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,i.jsx)(h.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function z(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(h.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function O(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,i.jsxs)("span",{className:j.G.common.lastUpdated,children:[(0,i.jsx)(h.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,i.jsx)(R,{lastUpdatedAt:t}):"",byUser:n?(0,i.jsx)(z,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const V={lastUpdated:"lastUpdated_ydrU"};function D(e){let{className:t,editUrl:n,lastUpdatedAt:s,lastUpdatedBy:a}=e;return(0,i.jsxs)("div",{className:(0,u.A)("row",t),children:[(0,i.jsx)("div",{className:"col",children:n&&(0,i.jsx)(S,{editUrl:n})}),(0,i.jsx)("div",{className:(0,u.A)("col",V.lastUpdated),children:(s||a)&&(0,i.jsx)(O,{lastUpdatedAt:s,lastUpdatedBy:a})})]})}function G(){const{metadata:e}=r(),{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,tags:a}=e,o=a.length>0,l=!!(t||n||s);return o||l?(0,i.jsxs)("footer",{className:(0,u.A)(j.G.docs.docFooter,"docusaurus-mt-lg"),children:[o&&(0,i.jsx)("div",{className:(0,u.A)("row margin-top--sm",j.G.docs.docFooterTagsRow),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(H,{tags:a})})}),l&&(0,i.jsx)(D,{className:(0,u.A)("margin-top--sm",j.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s})]}):null}var P=n(4972),W=n(3432);function F(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function q(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=q({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function Q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?Q(e.parentNode):t}function X(e,t){var n;let{anchorTopOffset:s}=t;const a=e.find((e=>Q(e).top>=s));if(a){var o;return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function $(e){const t=(0,s.useRef)(void 0),n=Z();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push("h"+a+".anchor");return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),c=X(l,{anchorTopOffset:n.current}),r=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===r)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function Y(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,i.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,i.jsxs)("li",{children:[(0,i.jsx)(p.A,{to:"#"+e.id,className:null!=s?s:void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,i.jsx)(Y,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const J=s.memo(Y);function K(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:l,maxHeadingLevel:c,...r}=e;const d=(0,W.p)(),u=null!=l?l:d.tableOfContents.minHeadingLevel,m=null!=c?c:d.tableOfContents.maxHeadingLevel,h=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>q({toc:F(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:u,maxHeadingLevel:m});return $((0,s.useMemo)((()=>{if(a&&o)return{linkClassName:a,linkActiveClassName:o,minHeadingLevel:u,maxHeadingLevel:m}}),[a,o,u,m])),(0,i.jsx)(J,{toc:h,className:n,linkClassName:a,...r})}const ee={tocCollapsibleButton:"tocCollapsibleButton_iI2p",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_cHjC"};function te(e){let{collapsed:t,...n}=e;return(0,i.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",ee.tocCollapsibleButton,!t&&ee.tocCollapsibleButtonExpanded,n.className),children:(0,i.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const ne={tocCollapsible:"tocCollapsible_wXna",tocCollapsibleContent:"tocCollapsibleContent_vea0",tocCollapsibleExpanded:"tocCollapsibleExpanded_BbRn"};function se(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:o,toggleCollapsed:l}=(0,P.u)({initialState:!0});return(0,i.jsxs)("div",{className:(0,u.A)(ne.tocCollapsible,!o&&ne.tocCollapsibleExpanded,n),children:[(0,i.jsx)(te,{collapsed:o,onClick:l}),(0,i.jsx)(P.N,{lazy:!0,className:ne.tocCollapsibleContent,collapsed:o,children:(0,i.jsx)(K,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const ae={tocMobile:"tocMobile_Ojys"};function oe(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(se,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(j.G.docs.docTocMobile,ae.tocMobile)})}const ie={tableOfContents:"tableOfContents_XG6w",docItemContainer:"docItemContainer_Tr6w"},le="table-of-contents__link toc-highlight",ce="table-of-contents__link--active";function re(e){let{className:t,...n}=e;return(0,i.jsx)("div",{className:(0,u.A)(ie.tableOfContents,"thin-scrollbar",t),children:(0,i.jsx)(K,{...n,linkClassName:le,linkActiveClassName:ce})})}function de(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(re,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:j.G.docs.docTocDesktop})}var ue=n(5761),me=n(3023),he=n(1186),pe=n(1173),fe=n(5943);function xe(){const{prism:e}=(0,W.p)(),{colorMode:t}=(0,fe.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var be=n(9934),ge=n.n(be);const ve=/title=(?["'])(?.*?)\1/,je=/\{(?[\d,-]+)\}/,Ne={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Ce={...Ne,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},Ae=Object.keys(Ne);function ye(e,t){const n=e.map((e=>{const{start:n,end:s}=Ce[e];return"(?:"+n+"\\s*("+t.flatMap((e=>{var t,n;return[e.line,null==(t=e.block)?void 0:t.start,null==(n=e.block)?void 0:n.end].filter(Boolean)})).join("|")+")\\s*"+s+")"})).join("|");return new RegExp("^\\s*(?:"+n+")\\s*$")}function ke(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&je.test(o)){const e=o.match(je).groups.range;if(0===a.length)throw new Error("A highlight range has been given in code block's metastring (``` "+o+"), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.");const t=a[0].className,s=ge()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return ye(["js","jsBlock"],t);case"jsx":case"tsx":return ye(["js","jsBlock","jsx"],t);case"html":return ye(["js","jsBlock","html"],t);case"python":case"py":case"bash":return ye(["bash"],t);case"markdown":case"md":return ye(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return ye(["tex"],t);case"lua":case"haskell":case"sql":return ye(["lua"],t);case"wasm":return ye(["wasm"],t);case"vb":case"vba":case"visual-basic":return ye(["vb","rem"],t);case"vbnet":return ye(["vbnet","rem"],t);case"batch":return ye(["rem"],t);case"basic":return ye(["rem","f90"],t);case"fsharp":return ye(["js","ml"],t);case"ocaml":case"sml":return ye(["ml"],t);case"fortran":return ye(["f90"],t);case"cobol":return ye(["cobol"],t);default:return ye(Ae,t)}}(s,a),l=n.split("\n"),c=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),r=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;hvoid 0!==e));r[t]?c[r[t]].range+=h+",":d[t]?c[d[t]].start=h:u[t]&&(c[u[t]].range+=c[u[t]].start+"-"+(h-1)+","),l.splice(h,1)}n=l.join("\n");const m={};return Object.entries(c).forEach((e=>{let[t,{range:n}]=e;ge()(n).forEach((e=>{null!=m[e]||(m[e]=[]),m[e].push(t)}))})),{lineClassNames:m,code:n}}const Le={codeBlockContainer:"codeBlockContainer_mQmQ"};function Be(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(xe());return(0,i.jsx)(t,{...n,style:s,className:(0,u.A)(n.className,Le.codeBlockContainer,j.G.common.codeBlock)})}const _e={codeBlockContent:"codeBlockContent_D5yF",codeBlockTitle:"codeBlockTitle_x_ju",codeBlock:"codeBlock_RMoD",codeBlockStandalone:"codeBlockStandalone_wQog",codeBlockLines:"codeBlockLines_AclH",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_O625",buttonGroup:"buttonGroup_aaMX"};function we(e){let{children:t,className:n}=e;return(0,i.jsx)(Be,{as:"pre",tabIndex:0,className:(0,u.A)(_e.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:_e.codeBlockLines,children:t})})}const Te={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ee(e,t){const[n,a]=(0,s.useState)(),i=(0,s.useCallback)((()=>{var t;a(null==(t=e.current)?void 0:t.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{i()}),[i]),function(e,t,n){void 0===n&&(n=Te);const a=(0,o._q)(t),i=(0,o.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,i),()=>t.disconnect()}),[e,a,i])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),i())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var He=n(3915);const Me={codeLine:"codeLine_FAqz",codeLineNumber:"codeLineNumber_BE9Z",codeLineContent:"codeLineContent_EF2y"};function Ie(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const l=a({line:t,className:(0,u.A)(n,s&&Me.codeLine)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e})},t)));return(0,i.jsxs)("span",{...l,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:Me.codeLineNumber}),(0,i.jsx)("span",{className:Me.codeLineContent,children:c})]}):c,(0,i.jsx)("br",{})]})}function Se(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Ue(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const Re={copyButtonCopied:"copyButtonCopied_TYdd",copyButtonIcons:"copyButtonIcons_z5j7",copyButtonIcon:"copyButtonIcon_FoOz",copyButtonSuccessIcon:"copyButtonSuccessIcon_L0B6"};function ze(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError("Expected parameter `text` to be a `string`, got `"+typeof e+"`.");const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),l.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,h.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,h.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,h.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.A)("clean-btn",n,Re.copyButton,a&&Re.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:Re.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(Se,{className:Re.copyButtonIcon}),(0,i.jsx)(Ue,{className:Re.copyButtonSuccessIcon})]})})}function Oe(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Ve={wordWrapButtonIcon:"wordWrapButtonIcon_HV9T",wordWrapButtonEnabled:"wordWrapButtonEnabled_XzR1"};function De(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,h.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,u.A)("clean-btn",t,s&&Ve.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,i.jsx)(Oe,{className:Ve.wordWrapButtonIcon,"aria-hidden":"true"})})}function Ge(e){var t;let{children:n,className:a="",metastring:o,title:l,showLineNumbers:c,language:r}=e;const{prism:{defaultLanguage:d,magicComments:m}}=(0,W.p)(),h=function(e){return null==e?void 0:e.toLowerCase()}(null!=(t=null!=r?r:function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}(a))?t:d),p=xe(),f=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),l=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return Ee(o,l),(0,s.useEffect)((()=>{l()}),[e,l]),(0,s.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),x=function(e){var t,n;return null!=(t=null==e||null==(n=e.match(ve))?void 0:n.groups.title)?t:""}(o)||l,{lineClassNames:b,code:g}=ke(n,{metastring:o,language:h,magicComments:m}),v=null!=c?c:function(e){return Boolean(null==e?void 0:e.includes("showLineNumbers"))}(o);return(0,i.jsxs)(Be,{as:"div",className:(0,u.A)(a,h&&!a.includes("language-"+h)&&"language-"+h),children:[x&&(0,i.jsx)("div",{className:_e.codeBlockTitle,children:x}),(0,i.jsxs)("div",{className:_e.codeBlockContent,children:[(0,i.jsx)(He.f4,{theme:p,code:g,language:null!=h?h:"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:f.codeBlockRef,className:(0,u.A)(t,_e.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,u.A)(_e.codeBlockLines,v&&_e.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(Ie,{line:e,getLineProps:a,getTokenProps:o,classNames:b[t],showLineNumbers:v},t)))})})}}),(0,i.jsxs)("div",{className:_e.buttonGroup,children:[(f.isEnabled||f.isCodeScrollable)&&(0,i.jsx)(De,{className:_e.codeButton,onClick:()=>f.toggle(),isEnabled:f.isEnabled}),(0,i.jsx)(ze,{className:_e.codeButton,code:g})]})]})]})}function Pe(e){let{children:t,...n}=e;const a=(0,pe.A)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof o?Ge:we;return(0,i.jsx)(l,{...n,children:o},String(a))}function We(e){return(0,i.jsx)("code",{...e})}var Fe=n(9256),qe=n(3854);const Qe={details:"details_IpIu",isBrowser:"isBrowser_QD4r",collapsibleContent:"collapsibleContent_Fd2D"};function Xe(e){return!!e&&("SUMMARY"===e.tagName||Xe(e.parentElement))}function Ze(e,t){return!!e&&(e===t||Ze(e.parentElement,t))}function $e(e){let{summary:t,children:n,...a}=e;(0,qe.A)().collectAnchor(a.id);const o=(0,pe.A)(),l=(0,s.useRef)(null),{collapsed:c,setCollapsed:r}=(0,P.u)({initialState:!a.open}),[d,u]=(0,s.useState)(a.open),m=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:null!=t?t:"Details"});return(0,i.jsxs)("details",{...a,ref:l,open:d,"data-collapsed":c,className:(0,Fe.A)(Qe.details,o&&Qe.isBrowser,a.className),onMouseDown:e=>{Xe(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Xe(t)&&Ze(t,l.current)&&(e.preventDefault(),c?(r(!1),u(!0)):r(!0))},children:[m,(0,i.jsx)(P.N,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{r(e),u(!e)},children:(0,i.jsx)("div",{className:Qe.collapsibleContent,children:n})})]})}const Ye={details:"details_jERq"},Je="alert alert--info";function Ke(e){let{...t}=e;return(0,i.jsx)($e,{...t,className:(0,u.A)(Je,Ye.details,t.className)})}function et(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(Ke,{...e,summary:n,children:a})}function tt(e){return(0,i.jsx)(ue.A,{...e})}const nt={containsTaskList:"containsTaskList_QWGu"};function st(e){if(void 0!==e)return(0,u.A)(e,(null==e?void 0:e.includes("contains-task-list"))&&nt.containsTaskList)}const at={img:"img_SS3x"};function ot(e){var t;const{mdxAdmonitionTitle:n,rest:a}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n));return{mdxAdmonitionTitle:null==n?void 0:n.props.children,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(e.children),o=null!=(t=e.title)?t:n;return{...e,...o&&{title:o},children:a}}const it={admonition:"admonition_WCGJ",admonitionHeading:"admonitionHeading_GCBg",admonitionIcon:"admonitionIcon_L39b",admonitionContent:"admonitionContent_pbrs"};function lt(e){let{type:t,className:n,children:s}=e;return(0,i.jsx)("div",{className:(0,u.A)(j.G.common.admonition,j.G.common.admonitionType(t),it.admonition,n),children:s})}function ct(e){let{icon:t,title:n}=e;return(0,i.jsxs)("div",{className:it.admonitionHeading,children:[(0,i.jsx)("span",{className:it.admonitionIcon,children:t}),n]})}function rt(e){let{children:t}=e;return t?(0,i.jsx)("div",{className:it.admonitionContent,children:t}):null}function dt(e){const{type:t,icon:n,title:s,children:a,className:o}=e;return(0,i.jsxs)(lt,{type:t,className:o,children:[s||n?(0,i.jsx)(ct,{title:s,icon:n}):null,(0,i.jsx)(rt,{children:a})]})}function ut(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const mt={icon:(0,i.jsx)(ut,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function ht(e){return(0,i.jsx)(dt,{...mt,...e,className:(0,u.A)("alert alert--secondary",e.className),children:e.children})}function pt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const ft={icon:(0,i.jsx)(pt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function xt(e){return(0,i.jsx)(dt,{...ft,...e,className:(0,u.A)("alert alert--success",e.className),children:e.children})}function bt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const gt={icon:(0,i.jsx)(bt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function vt(e){return(0,i.jsx)(dt,{...gt,...e,className:(0,u.A)("alert alert--info",e.className),children:e.children})}function jt(e){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const Nt={icon:(0,i.jsx)(jt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function Ct(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const At={icon:(0,i.jsx)(Ct,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const yt={icon:(0,i.jsx)(jt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const kt={...{note:ht,tip:xt,info:vt,warning:function(e){return(0,i.jsx)(dt,{...Nt,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,i.jsx)(dt,{...At,...e,className:(0,u.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,i.jsx)(ht,{title:"secondary",...e}),important:e=>(0,i.jsx)(vt,{title:"important",...e}),success:e=>(0,i.jsx)(xt,{title:"success",...e}),caution:function(e){return(0,i.jsx)(dt,{...yt,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})}}};function Lt(e){const t=ot(e),n=(s=t.type,kt[s]||(console.warn('No admonition component found for admonition type "'+s+'". Using Info as fallback.'),kt.info));var s;return(0,i.jsx)(n,{...t})}var Bt=n(3668);const _t={Head:he.A,details:et,Details:et,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(We,{...e}):(0,i.jsx)(Pe,{...e})},a:function(e){return(0,i.jsx)(p.A,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:st(e.className)})},li:function(e){return(0,qe.A)().collectAnchor(e.id),(0,i.jsx)("li",{...e})},img:function(e){return(0,i.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.A)(t,at.img))});var t},h1:e=>(0,i.jsx)(tt,{as:"h1",...e}),h2:e=>(0,i.jsx)(tt,{as:"h2",...e}),h3:e=>(0,i.jsx)(tt,{as:"h3",...e}),h4:e=>(0,i.jsx)(tt,{as:"h4",...e}),h5:e=>(0,i.jsx)(tt,{as:"h5",...e}),h6:e=>(0,i.jsx)(tt,{as:"h6",...e}),admonition:Lt,mermaid:Bt.A};function wt(e){let{children:t}=e;return(0,i.jsx)(me.x,{components:_t,children:t})}function Tt(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=r();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,u.A)(j.G.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(ue.A,{as:"h1",children:n})}),(0,i.jsx)(wt,{children:t})]})}var Et=n(3823),Ht=n(7679),Mt=n(4927);function It(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const St={breadcrumbHomeIcon:"breadcrumbHomeIcon_sfvy"};function Ut(){const e=(0,Mt.Ay)("/");return(0,i.jsx)("li",{className:"breadcrumbs__item",children:(0,i.jsx)(p.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,i.jsx)(It,{className:St.breadcrumbHomeIcon})})})}const Rt={breadcrumbsContainer:"breadcrumbsContainer_T5ub"};function zt(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,i.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,i.jsx)(p.A,{className:a,href:n,itemProp:"item",children:(0,i.jsx)("span",{itemProp:"name",children:t})}):(0,i.jsx)("span",{className:a,children:t})}function Ot(e){let{children:t,active:n,index:s,addMicrodata:a}=e;return(0,i.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,i.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function Vt(){const e=(0,Et.OF)(),t=(0,Ht.Dt)();return e?(0,i.jsx)("nav",{className:(0,u.A)(j.G.docs.docBreadcrumbs,Rt.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,i.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,i.jsx)(Ut,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,i.jsx)(Ot,{active:s,index:n,addMicrodata:!!a,children:(0,i.jsx)(zt,{href:a,isLast:s,children:t.label})},n)}))]})}):null}function Dt(){return(0,i.jsx)(h.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function Gt(){return(0,i.jsx)(h.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Pt(){return(0,i.jsx)(he.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function Wt(e){let{className:t}=e;return(0,i.jsx)(Lt,{type:"caution",title:(0,i.jsx)(Dt,{}),className:(0,u.A)(t,j.G.common.unlistedBanner),children:(0,i.jsx)(Gt,{})})}function Ft(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Pt,{}),(0,i.jsx)(Wt,{...e})]})}const qt={docItemContainer:"docItemContainer_tjFy",docItemCol:"docItemCol_Qr34"};function Qt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=r(),n=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(oe,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(de,{})}}(),{metadata:{unlisted:s}}=r();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,u.A)("col",!n.hidden&&qt.docItemCol),children:[s&&(0,i.jsx)(Ft,{}),(0,i.jsx)(B,{}),(0,i.jsxs)("div",{className:qt.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(Vt,{}),(0,i.jsx)(_,{}),n.mobile,(0,i.jsx)(Tt,{children:t}),(0,i.jsx)(G,{})]}),(0,i.jsx)(b,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function Xt(e){const t="docs-doc-id-"+e.content.metadata.id,n=e.content;return(0,i.jsx)(c,{content:e.content,children:(0,i.jsxs)(a.e3,{className:t,children:[(0,i.jsx)(d,{}),(0,i.jsx)(Qt,{children:(0,i.jsx)(n,{})})]})})}},9934:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s{"use strict";n.d(t,{R:()=>i,x:()=>l});var s=n(3696);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1c2c1ffb.fca7f7a8.js b/assets/js/1c2c1ffb.fca7f7a8.js
new file mode 100644
index 00000000..53cdb1d7
--- /dev/null
+++ b/assets/js/1c2c1ffb.fca7f7a8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[291],{7209:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>l,metadata:()=>d,toc:()=>a});var t=o(2540),s=o(3023),i=o(4927);const l={title:"Reference: Workflow Configuration"},r=void 0,d={id:"reference/workflow-config",title:"Reference: Workflow Configuration",description:"Features",source:"@site/docs/reference/workflow-config.md",sourceDirName:"reference",slug:"/reference/workflow-config",permalink:"/availity-workflow/reference/workflow-config",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/reference/workflow-config.md",tags:[],version:"current",frontMatter:{title:"Reference: Workflow Configuration"},sidebar:"someSidebar",previous:{title:"Setting up Logging",permalink:"/availity-workflow/recipes/logging"},next:{title:"Reference: CLI Commands",permalink:"/availity-workflow/reference/commands"}},c={},a=[{value:"Features",id:"features",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Options",id:"options",level:3},{value:"development.open",id:"developmentopen",level:4},{value:"development.notification",id:"developmentnotification",level:4},{value:"development.host",id:"developmenthost",level:4},{value:"development.port",id:"developmentport",level:4},{value:"development.logLevel",id:"developmentloglevel",level:4},{value:"development.sourceMap",id:"developmentsourcemap",level:4},{value:"development.hotLoader",id:"developmenthotloader",level:4},{value:"development.webpackDevServer",id:"developmentwebpackdevserver",level:4},{value:"development.targets",id:"developmenttargets",level:4},{value:"development.babelInclude",id:"developmentbabelinclude",level:4},{value:"development.jestOverrides",id:"developmentjestoverrides",level:4},{value:"app.title",id:"apptitle",level:4},{value:"globals",id:"globals",level:4},{value:"mock.enabled",id:"mockenabled",level:4},{value:"mock.port",id:"mockport",level:4},{value:"mock.latency",id:"mocklatency",level:4},{value:"mock.data",id:"mockdata",level:4},{value:"mock.path",id:"mockpath",level:4},{value:"mock.plugins",id:"mockplugins",level:4},{value:"mock.pluginContext",id:"mockplugincontext",level:4},{value:"proxies",id:"proxies",level:4},{value:"modifyWebpackConfig",id:"modifywebpackconfig",level:4},{value:"FAQ",id:"faq",level:2},{value:"How to integrate with Visual Studio Code's Jest plugin?",id:"how-to-integrate-with-visual-studio-codes-jest-plugin",level:3},{value:"How to setup a development environment to match the deployment environment?",id:"how-to-setup-a-development-environment-to-match-the-deployment-environment",level:3}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"features",children:"Features"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Files placed in ",(0,t.jsx)(n.code,{children:"project/app/static"})," will automatically get copied to the build directory. This can be useful when an application needs to reference static documents like images and PDFs without having to import them using Webpack. The files would be accessible through the path ",(0,t.jsx)(n.code,{children:"static"})," relative to the application."]}),"\n",(0,t.jsxs)(n.li,{children:["A global variable ",(0,t.jsx)(n.code,{children:"APP_VERSION"})," is written to javascript bundle that can be used to determine the version of the application that was deployed. Open up the browser debugger and type ",(0,t.jsx)(n.code,{children:"APP_VERSION"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Hook into Jest ",(0,t.jsx)(n.code,{children:"setupFiles"})," by adding ",(0,t.jsx)(n.code,{children:"jest.setup.js"})," at the root of your project"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"workflow"})," can be configured using a javascript or yaml configuration file called ",(0,t.jsx)(n.code,{children:"workflow.js"})," or ",(0,t.jsx)(n.code,{children:"workflow.yml"}),".\n",(0,t.jsx)(n.code,{children:"workflow.js"})," or ",(0,t.jsx)(n.code,{children:"workflow.yml"})," lives in ",(0,t.jsx)(n.code,{children:"/project/config/workflow.js"})]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"module.exports = {\n development: {\n notification: true\n hot: true\n },\n app: {\n title: 'My Awesome App'\n }\n mock: {\n latency: 300,\n port: 9999\n },\n proxies: [\n {\n context: '/api',\n target: `http://localhost:9999`,\n enabled: true,\n logLevel: 'info',\n pathRewrite: {\n '^/api': ''\n },\n headers: {\n RemoteUser: 'janedoe'\n }\n }\n ]\n}\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"workflow"})," can also be configured using ",(0,t.jsx)(n.code,{children:"package.json"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'{\n "name": "foo",\n "availityWorkflow": {\n development: {\n notification: true\n hot: true\n },\n "app": {\n "title": "My Awesome App"\n }\n }\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:["If ",(0,t.jsx)(n.code,{children:"workflow.js"})," exports a function it can be used to override properties from the default configuration. The function must return a configuration."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"function merge(config) {\n config.development.open = '#/foo';\n return config;\n}\n\nmodule.exports = merge;\n"})}),"\n",(0,t.jsx)(n.h3,{id:"options",children:"Options"}),"\n",(0,t.jsx)(n.h4,{id:"developmentopen",children:(0,t.jsx)(n.code,{children:"development.open"})}),"\n",(0,t.jsx)(n.p,{children:"Opens the url in the default browser"}),"\n",(0,t.jsx)(n.h4,{id:"developmentnotification",children:(0,t.jsx)(n.code,{children:"development.notification"})}),"\n",(0,t.jsx)(n.p,{children:"Webpack build status system notifications"}),"\n",(0,t.jsx)("img",{src:(0,i.Ay)("img/notification.png"),className:"w-50 mb-2",alt:"notification"}),"\n",(0,t.jsx)(n.h4,{id:"developmenthost",children:(0,t.jsx)(n.code,{children:"development.host"})}),"\n",(0,t.jsx)(n.p,{children:"Webpack dev server host"}),"\n",(0,t.jsx)(n.h4,{id:"developmentport",children:(0,t.jsx)(n.code,{children:"development.port"})}),"\n",(0,t.jsxs)(n.p,{children:["Webpack dev server port. If the port at this value is unavailable, the port value will be incremented until an unused port is found.\nDefault: ",(0,t.jsx)(n.code,{children:"3000"})]}),"\n",(0,t.jsx)(n.h4,{id:"developmentloglevel",children:(0,t.jsx)(n.code,{children:"development.logLevel"})}),"\n",(0,t.jsxs)(n.p,{children:["Allows ",(0,t.jsx)(n.a,{href:"https://webpack.js.org/configuration/stats/#stats",children:"Webpack log levels presets"})," to be used during development. A custom logger is used by default."]}),"\n",(0,t.jsx)(n.h4,{id:"developmentsourcemap",children:(0,t.jsx)(n.code,{children:"development.sourceMap"})}),"\n",(0,t.jsxs)(n.p,{children:["Webpack ",(0,t.jsx)(n.code,{children:"devtool"})," setting. Default is ",(0,t.jsx)(n.code,{children:"source-map"}),". For more options please see ",(0,t.jsx)(n.a,{href:"https://webpack.js.org/configuration/devtool/#devtool",children:"https://webpack.js.org/configuration/devtool/#devtool"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"developmenthotloader",children:(0,t.jsx)(n.code,{children:"development.hotLoader"})}),"\n",(0,t.jsxs)(n.p,{children:["Enable or disable react-hot-loader. Default is ",(0,t.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Can also be an object to enable experimental ",(0,t.jsx)(n.code,{children:"react-refresh"})," features\nex."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "hotLoader": true\n}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"developmentwebpackdevserver",children:(0,t.jsx)(n.code,{children:"development.webpackDevServer"})}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Caution"}),": Please be careful when overriding defaults"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Optional options for Webpack development server. If undefined, ",(0,t.jsx)(n.code,{children:"workflow"})," defaults are used. Please see ",(0,t.jsx)(n.a,{href:"https://webpack.js.org/configuration/dev-server/#devserver",children:"https://webpack.js.org/configuration/dev-server/#devserver"})," for all available options."]}),"\n",(0,t.jsx)(n.h4,{id:"developmenttargets",children:(0,t.jsx)(n.code,{children:"development.targets"})}),"\n",(0,t.jsxs)(n.p,{children:["Allows developers to override the ",(0,t.jsx)(n.code,{children:"babel-preset-env"})," target to match their developer environment. This is beneficial if a developer is doing their primary development environment in a browser like Chrome 57+ that already supports a lot of the ES6 features, therefore, not needing to Babelfy code completely."]}),"\n",(0,t.jsxs)(n.p,{children:["This setting is is only used for development and does not effect staging/production/testing builds which use browserslist defaults. ",(0,t.jsx)(n.strong,{children:"@See"})," ",(0,t.jsx)(n.a,{href:"https://github.com/babel/babel-preset-env",children:"https://github.com/babel/babel-preset-env"})]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Examples:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"targets: {\n browsers: ['last 2 Chrome versions'];\n}\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"targets: {\n chrome: 57;\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"developmentbabelinclude",children:(0,t.jsx)(n.code,{children:"development.babelInclude"})}),"\n",(0,t.jsxs)(n.p,{children:["Include additional packages from ",(0,t.jsx)(n.code,{children:"node_modules"})," that should be compiled by Babel and Wepback. The default is to compile all packages that are prefixed with ",(0,t.jsx)(n.code,{children:"@av/"})]}),"\n",(0,t.jsx)(n.h4,{id:"developmentjestoverrides",children:(0,t.jsx)(n.code,{children:"development.jestOverrides"})}),"\n",(0,t.jsxs)(n.p,{children:["Customize any available jest configuration option. See ",(0,t.jsx)(n.a,{href:"https://jestjs.io/docs/configuration#reference",children:"https://jestjs.io/docs/configuration#reference"})," for list of configuration options. Uses lodash merge to deeply merge user config object with defaults."]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Ex:"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"{\n collectCoverageFrom: ['project/app/**/*.{js,jsx,ts,tsx}', '!project/app/**/*.d.ts'],\n coveragePathIgnorePatterns: ['/node_modules/', '/coverage/', '/dist/', '/types'],\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"apptitle",children:(0,t.jsx)(n.code,{children:"app.title"})}),"\n",(0,t.jsxs)(n.p,{children:["Page title to use for the generated HTML document. Default is ",(0,t.jsx)(n.code,{children:"Availity"}),"."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",children:"\n \n Availity\n \n\n"})}),"\n",(0,t.jsx)(n.h4,{id:"globals",children:(0,t.jsx)(n.code,{children:"globals"})}),"\n",(0,t.jsx)(n.p,{children:"Create globals to be used for feature flags. Globals must be defined in the workflow configuration file before they can be used as flags by a project."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"globals: {\n BROWSER_SUPPORTS_HTML5: true,\n EXPERIMENTAL_FEATURE: false\n}\n"})}),"\n",(0,t.jsx)(n.p,{children:"Once declared, override the default flag values from the command line ."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Ex:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"EXPERIMENTAL_FEATURE=true npm run production\n"})}),"\n",(0,t.jsx)(n.p,{children:"By default, the following feature flags are enabled:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"__DEV__"}),": ",(0,t.jsx)(n.strong,{children:"true"})," when ",(0,t.jsx)(n.code,{children:"process.env.NODE_ENV"})," is ",(0,t.jsx)(n.strong,{children:"development"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"__TEST__"}),": ",(0,t.jsx)(n.strong,{children:"true"})," when ",(0,t.jsx)(n.code,{children:"process.env.NODE_ENV"})," is ",(0,t.jsx)(n.strong,{children:"test"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"__PROD__"}),": ",(0,t.jsx)(n.strong,{children:"true"})," when ",(0,t.jsx)(n.code,{children:"process.env.NODE_ENV"})," is ",(0,t.jsx)(n.strong,{children:"production"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"__STAGING__"}),": ",(0,t.jsx)(n.strong,{children:"true"})," when ",(0,t.jsx)(n.code,{children:"process.env.NODE_ENV"})," is ",(0,t.jsx)(n.strong,{children:"staging"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"process.env.NODE_ENV"}),": is ",(0,t.jsx)(n.code,{children:"development"}),", ",(0,t.jsx)(n.code,{children:"test"}),", ",(0,t.jsx)(n.code,{children:"staging"})," or ",(0,t.jsx)(n.code,{children:"production"})," accordingly."]}),"\n"]}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"eslint-config-availity@2.1.0"})," or higher is needed for the default feature toggles to be recognized as valid globals by ",(0,t.jsx)(n.strong,{children:"eslint"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.h4,{id:"mockenabled",children:(0,t.jsx)(n.code,{children:"mock.enabled"})}),"\n",(0,t.jsxs)(n.p,{children:["Enables or disables mock server. Default is ",(0,t.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"mockport",children:(0,t.jsx)(n.code,{children:"mock.port"})}),"\n",(0,t.jsx)(n.p,{children:"Mock server port number. If the port is unavailable, a random available port will be used."}),"\n",(0,t.jsx)(n.p,{children:"Note: we will automatically update the proxy settings to reflect the port used in the case of a random port being selected."}),"\n",(0,t.jsx)(n.h4,{id:"mocklatency",children:(0,t.jsx)(n.code,{children:"mock.latency"})}),"\n",(0,t.jsx)(n.p,{children:"Sets default latency for all mock responses"}),"\n",(0,t.jsx)(n.h4,{id:"mockdata",children:(0,t.jsx)(n.code,{children:"mock.data"})}),"\n",(0,t.jsxs)(n.p,{children:["Folder that contains the mock data files (json, images, etc). Defaults to ",(0,t.jsx)(n.code,{children:"project/data"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"mockpath",children:(0,t.jsx)(n.code,{children:"mock.path"})}),"\n",(0,t.jsxs)(n.p,{children:["Path to route configuration file used by Mock server to build Express routes. Defaults to ",(0,t.jsx)(n.code,{children:"project/config/routes.json"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"mockplugins",children:(0,t.jsx)(n.code,{children:"mock.plugins"})}),"\n",(0,t.jsxs)(n.p,{children:["Array of NPM module names that enhance mock server with additional data and routes. @See ",(0,t.jsx)(n.a,{href:"https://github.com/Availity/@availity/mock-data",children:"https://github.com/Availity/@availity/mock-data"})]}),"\n",(0,t.jsx)(n.h4,{id:"mockplugincontext",children:(0,t.jsx)(n.code,{children:"mock.pluginContext"})}),"\n",(0,t.jsxs)(n.p,{children:["Pass URL context information to mock responses so that HATEOS links traverse correctly. Defaults to ",(0,t.jsx)(n.code,{children:"http://localhost:{development.port}/api"})]}),"\n",(0,t.jsx)(n.h4,{id:"proxies",children:(0,t.jsx)(n.code,{children:"proxies"})}),"\n",(0,t.jsx)(n.p,{children:"Array of proxy configurations. A default configuration is enabled to proxy requests to the mock server. Each proxy configuration can have the following attributes."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"context"}),": URL context used to match the activation of the proxy per request."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Ex:"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"context: '/api';\n"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"target"}),": Host and port number for proxy."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"enabled"}),": Enables or disables a proxy configuration"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"pathRewrite"}),": ",(0,t.jsx)(n.em,{children:"(Optional)"})," Rewrites (using regex) the path before sending request to proxy target."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Ex:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"pathRewrite: {\n '^/api': ''\n}\n"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"contextRewrite"}),": ",(0,t.jsx)(n.em,{children:"(Optional)"})," Does not work with multiple proxy contexts. When ",(0,t.jsx)(n.code,{children:"true"}),":"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Rewrites the ",(0,t.jsx)(n.code,{children:"Origin"})," and ",(0,t.jsx)(n.code,{children:"Referer"})," headers from host to match the the proxy target url."]}),"\n",(0,t.jsxs)(n.li,{children:["Rewrites the ",(0,t.jsx)(n.code,{children:"Location"})," header from proxy to the host url."]}),"\n",(0,t.jsx)(n.li,{children:"Rewrites any urls of the response body (JSON only) to match the url of the host. Only URLs that match the proxy target are rewritten. This feature is useful if the proxy server sends back HATEOS links that need to work on the host. The proxy context is automatically appended to the host url if missing the a URL response."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"headers"}),": ",(0,t.jsx)(n.em,{children:"(Optional)"})," Send default headers to the proxy destination."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Ex:"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"headers: {\n RemoteUser: 'janedoe';\n}\n"})}),"\n",(0,t.jsx)(n.h4,{id:"modifywebpackconfig",children:(0,t.jsx)(n.code,{children:"modifyWebpackConfig"})}),"\n",(0,t.jsx)(n.p,{children:"A function which, when provided, can be used to enhance/override or replace the webpack configuration used. The function will be invoked with the current webpack configuration object and a reference to the workflow settings."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Ex:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"modifyWebpackConfig: (webpackConfig, settings) => {\n // Add Subresource Integrity (SRI) security feature\n webpackConfig.output = { crossOriginLoading: 'anonymous' };\n // Note: SriPlugin would be imported in your workflow.js to be referenced here\n webpackConfig.plugins.push(\n new SriPlugin({\n hashFuncNames: ['sha256', 'sha384'],\n // only enable it for non-development builds\n enabled: !settings.isDevelopment()\n })\n );\n return webpackConfig;\n};\n"})}),"\n",(0,t.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,t.jsxs)(n.h3,{id:"how-to-integrate-with-visual-studio-codes-jest-plugin",children:["How to integrate with Visual Studio Code's ",(0,t.jsx)(n.a,{href:"https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest",children:"Jest plugin"}),"?"]}),"\n",(0,t.jsxs)(n.p,{children:["Create ",(0,t.jsx)(n.code,{children:"./vscode/settings.json"})," file with the following configuration:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "jest.pathToJest": "node_modules/.bin/av test"\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note"}),": The Jest plugin will still warn about Jest 20+ features missing but it doesn't appear to affect the plugins's functionality"]}),"\n",(0,t.jsxs)(n.p,{children:["If you would like to debug Jest tests, create ",(0,t.jsx)(n.code,{children:"./vscode/launch.json"})," with this configuration:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "version": "0.2.0",\n "configurations": [\n {\n "type": "node",\n "name": "vscode-jest-tests",\n "request": "launch",\n "program": "${workspaceRoot}/node_modules/.bin/av",\n "args": ["test", "--runInBand"],\n "cwd": "${workspaceFolder}",\n "console": "integratedTerminal",\n "internalConsoleOptions": "neverOpen"\n }\n ]\n}\n'})}),"\n",(0,t.jsx)(n.p,{children:"Then you will be able to debug Jest tests like this:"}),"\n",(0,t.jsx)("img",{width:"100%",src:(0,i.Ay)("img/jest-debug.gif"),src:"jest-debug.gif",alt:"Jest Debugging Example"}),"\n",(0,t.jsx)(n.h3,{id:"how-to-setup-a-development-environment-to-match-the-deployment-environment",children:"How to setup a development environment to match the deployment environment?"}),"\n",(0,t.jsxs)(n.p,{children:["Update ",(0,t.jsx)(n.code,{children:"workflow.js"})," using the configuration below:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"module.exports = (config) => {\n config.proxies = [\n {\n context: ['/api/**', '/ms/**', '!/api/v1/proxy/healthplan/**'],\n target: 'http://localhost:9999',\n enabled: true,\n logLevel: 'debug',\n pathRewrite: {\n '^/api': ''\n }\n },\n {\n context: ['/api/v1/proxy/healthplan/some/mock/path'],\n target: 'http://localhost:9999',\n enabled: true,\n logLevel: 'debug',\n pathRewrite: {\n '^/api': ''\n }\n },\n {\n context: ['/api/v1/proxy/healthplan/**'],\n target: 'http://localhost:8888',\n enabled: true,\n logLevel: 'debug',\n pathRewrite: {\n '^/api/v1/proxy/healthplan/': ''\n }\n }\n ];\n return config;\n};\n"})}),"\n",(0,t.jsx)(n.p,{children:"The configuration above does the following:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Proxy requests starting with ",(0,t.jsx)(n.code,{children:"/ms"})," or ",(0,t.jsx)(n.code,{children:"/api"})," to the mock server but not paths that haves segments ",(0,t.jsx)(n.code,{children:"/api/v1/proxy/healthplan/"}),". This configuration allows the Availity API to be simulated from mock server."]}),"\n",(0,t.jsxs)(n.li,{children:["Proxy requests with path ",(0,t.jsx)(n.code,{children:"/api/v1/proxy/healthplan/some/mock/path"})," to the mock server. Optional configuration that is useful if an API is not available for use and needs to be mocked."]}),"\n",(0,t.jsxs)(n.li,{children:["Proxy all requests with path segments ",(0,t.jsx)(n.code,{children:"/api/v1/proxy/healthplan/"})," to the configured target ",(0,t.jsx)(n.code,{children:"'http://localhost:8888'"}),". Notice the URL is being rewritten. Change the rewrite path to match your local path as needed. This configuration is useful when testing against live services."]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},3023:(e,n,o)=>{o.d(n,{R:()=>l,x:()=>r});var t=o(3696);const s={},i=t.createContext(s);function l(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/35.c8959f33.js b/assets/js/35.c8959f33.js
new file mode 100644
index 00000000..ed82ca61
--- /dev/null
+++ b/assets/js/35.c8959f33.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[35],{5381:(e,t,i)=>{i.d(t,{A:()=>r});i(3696);var n=i(2689),o=i(1287),s=i(5761),a=i(2540);function r(e){let{className:t}=e;return(0,a.jsx)("main",{className:(0,n.A)("container margin-vert--xl",t),children:(0,a.jsx)("div",{className:"row",children:(0,a.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,a.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,a.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,a.jsx)("p",{children:(0,a.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,a.jsx)("p",{children:(0,a.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},3035:(e,t,i)=>{i.r(t),i.d(t,{default:()=>d});i(3696);var n=i(1287),o=i(113),s=i(5538),a=i(5381),r=i(2540);function d(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.be,{title:e}),(0,r.jsx)(s.A,{children:(0,r.jsx)(a.A,{})})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/383d31c1.1d363411.js b/assets/js/383d31c1.1d363411.js
new file mode 100644
index 00000000..3072ab89
--- /dev/null
+++ b/assets/js/383d31c1.1d363411.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[395],{9344:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>d});var o=n(2540),i=n(3023),r=n(4927);const a={title:"Getting Started"},s=void 0,l={id:"tutorial/index",title:"Getting Started",description:"Prerequisites",source:"@site/docs/tutorial/index.md",sourceDirName:"tutorial",slug:"/tutorial/",permalink:"/availity-workflow/tutorial/",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/tutorial/index.md",tags:[],version:"current",frontMatter:{title:"Getting Started"},sidebar:"someSidebar",previous:{title:"Upgrading @availity/workflow",permalink:"/availity-workflow/upgrading-workflow"},next:{title:"Bring on the Mocks",permalink:"/availity-workflow/tutorial/mocks"}},c={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Creating a new App Using the Workflow CLI",id:"creating-a-new-app-using-the-workflow-cli",level:2},{value:"Project Structure",id:"project-structure",level:2},{value:"Application Code",id:"application-code",level:3},{value:"Exploring workflow.js",id:"exploring-workflowjs",level:3}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsxs)(t.p,{children:["Throughout the documentation you will see ",(0,o.jsx)(t.a,{href:"https://yarnpkg.com/",children:"yarn"})," used. You are not required to use this however it is our package manager of choice. If you are still wanting to use npm then just note the subtle differences in the commands. ",(0,o.jsx)(t.code,{children:"yarn start"})," would be the same ",(0,o.jsx)(t.code,{children:"npm start"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The minimum required ",(0,o.jsx)(t.a,{href:"https://nodejs.org/",children:"Nodejs"})," version to run and use our toolkit is ",(0,o.jsx)(t.code,{children:"v16.0.0"}),", but using ",(0,o.jsx)(t.code,{children:"v18.0.0"})," or higher is recommended."]}),"\n",(0,o.jsx)(t.h2,{id:"creating-a-new-app-using-the-workflow-cli",children:"Creating a new App Using the Workflow CLI"}),"\n",(0,o.jsxs)(t.p,{children:["Our toolkit has a built in CLI that will allow you to run multiple commands like you would with any other react project. In addition to the default commands you would see like ",(0,o.jsx)(t.code,{children:"start"}),", ",(0,o.jsx)(t.code,{children:"test"}),", ",(0,o.jsx)(t.code,{children:"build"})," we have an ",(0,o.jsx)(t.code,{children:"init"})," command that will initialize a new project using a ",(0,o.jsx)(t.a,{href:"/reference/commands/#availity-templates",children:"specified default template"}),"."]}),"\n",(0,o.jsx)(t.p,{children:"You can run the below command to get started:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"npx @availity/workflow init workflow-app\n"})}),"\n",(0,o.jsxs)(t.p,{children:["What the above command is doing is using ",(0,o.jsx)(t.a,{href:"https://www.npmjs.com/package/npx",children:"npx"})," to download and execute the script without you having a pre-existing ",(0,o.jsx)(t.code,{children:"package.json"}),". The ",(0,o.jsx)(t.code,{children:"init"})," command is the command we send to our package ",(0,o.jsx)(t.code,{children:"@availity/workflow"}),". The last argument, ",(0,o.jsx)(t.code,{children:"workflow-app"})," is the project name that we gave."]}),"\n",(0,o.jsxs)(t.p,{children:["Once the CLI finishes initializing the project we can ",(0,o.jsx)(t.code,{children:"cd"})," into the directory with the below command:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"cd ./workflow-app\n"})}),"\n",(0,o.jsx)(t.p,{children:"Go ahead and start the application by running the below command:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"yarn start\n"})}),"\n",(0,o.jsx)(t.h2,{id:"project-structure",children:"Project Structure"}),"\n",(0,o.jsx)(t.p,{children:"Next let's open the project in any one of your favorite editors so we can review the project structure."}),"\n",(0,o.jsx)("img",{width:"100%",src:(0,r.Ay)("img/project-structure.png"),alt:"Project Structure"}),"\n",(0,o.jsxs)(t.blockquote,{children:["\n",(0,o.jsxs)(t.p,{children:["Our editor of choice is ",(0,o.jsx)(t.a,{href:"https://code.visualstudio.com/",children:"Visual Studio Code"})," and the above screen shot is depicting what it would look like in here."]}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"application-code",children:"Application Code"}),"\n",(0,o.jsxs)(t.p,{children:["All of our application logic is stored in the ",(0,o.jsx)(t.code,{children:"project/app"})," folder. We can see the ",(0,o.jsx)(t.code,{children:"index.js"})," is the main entry point."]}),"\n",(0,o.jsxs)(t.p,{children:["Making any change to the files inside of ",(0,o.jsx)(t.code,{children:"project/app"})," will automatically hot-reload the web page, given some small edge cases."]}),"\n",(0,o.jsx)("img",{width:"100%",src:(0,r.Ay)("img/project-change.gif"),alt:"Project Change Example"}),"\n",(0,o.jsx)(t.p,{children:"We recommend you explore the coding styles and libraries we chose in this starter toolkit before deleting as it has some good practices to follow when developing web applications."}),"\n",(0,o.jsx)(t.h3,{id:"exploring-workflowjs",children:"Exploring workflow.js"}),"\n",(0,o.jsxs)(t.p,{children:["Inside of the ",(0,o.jsx)(t.code,{children:"config"})," folder there is a file titled ",(0,o.jsx)(t.code,{children:"workflow.js"}),". You can use this file to provide any overrides to the webpack configuration, development dependencies as well as additional proxy configurations you may want."]}),"\n",(0,o.jsx)(t.p,{children:"Let's open the current file and see what we got."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-js",metastring:"header=workflow.js",children:"module.exports = (config) => {\n config.development.open = '#/?spaceId=48C607A70B5A46A3864A34E2BDDDEA04';\n\n config.development.hotLoader = true;\n\n return config;\n};\n"})}),"\n",(0,o.jsxs)(t.p,{children:["The workflow file takes in a ",(0,o.jsx)(t.code,{children:"config"})," object which contains all of the webpack configurations, babel presets and more. We specify the webpack development server to open the application with a path of ",(0,o.jsx)(t.code,{children:"#/?spaceId=48C607A70B5A46A3864A34E2BDDDEA04"})," once it has compiled."]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",metastring:"hideCopy=true",children:"config.development.open = '#/?spaceId=48C607A70B5A46A3864A34E2BDDDEA04';\n"})}),"\n",(0,o.jsxs)(t.p,{children:["Wait, but what is a ",(0,o.jsx)(t.code,{children:"spaceId"}),"? We will get into that later but if you want you can skip ahead to ",(0,o.jsx)(t.code,{children:"here"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["Next we have some overrides to the ",(0,o.jsx)(t.code,{children:"hotLoader"})," that will hot reload our app. The experimental flag is enabled so that we can leverage a new feature that the ",(0,o.jsx)(t.a,{href:"https://reactjs.org/community/team.html",children:"React Core Team"})," is working on but is not yet feature complete."]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-js",metastring:"hideCopy=true",children:"config.development.hotLoader = {\n enabled: true,\n experimental: true\n};\n"})}),"\n",(0,o.jsxs)(t.p,{children:["Lastly we have to return the ",(0,o.jsx)(t.code,{children:"config"})," for the rest of the build process to take advantage of the overrides we gave it."]}),"\n",(0,o.jsx)(t.p,{children:"By now you should have a general grasp on the project strcuture for developing and making changes to your application. Next we will talk about getting data into your application."})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},3023:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>s});var o=n(3696);const i={},r=o.createContext(i);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/56ad79dd.7f564d3a.js b/assets/js/56ad79dd.7f564d3a.js
new file mode 100644
index 00000000..61d0635b
--- /dev/null
+++ b/assets/js/56ad79dd.7f564d3a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[489],{1731:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var n=s(2540),i=s(3023);const r={title:"Testing Libraries"},a=void 0,o={id:"recipes/testing-libraries",title:"Testing Libraries",description:"By default @testing-library/react and @testing-library/jest-dom/extend-expect are added to the project. Some of their scripts are also automatically added to the setupFilesAfterEnv param for jest here.",source:"@site/docs/recipes/testing-libraries.md",sourceDirName:"recipes",slug:"/recipes/testing-libraries",permalink:"/availity-workflow/recipes/testing-libraries",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/recipes/testing-libraries.md",tags:[],version:"current",frontMatter:{title:"Testing Libraries"},sidebar:"someSidebar",previous:{title:"Dependency Management",permalink:"/availity-workflow/tutorial/dependency-management"},next:{title:"Configuring Root Imports",permalink:"/availity-workflow/recipes/root-imports"}},c={},l=[{value:"Example",id:"example",level:2},{value:"Mocking API Responses",id:"mocking-api-responses",level:3},{value:"Example",id:"example-1",level:2}];function d(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["By default ",(0,n.jsx)(t.code,{children:"@testing-library/react"})," and ",(0,n.jsx)(t.code,{children:"@testing-library/jest-dom/extend-expect"})," are added to the project. Some of their scripts are also automatically added to the ",(0,n.jsx)(t.code,{children:"setupFilesAfterEnv"})," param for jest ",(0,n.jsx)(t.a,{href:"https://github.com/Availity/availity-workflow/blob/master/packages/workflow/jest.config.js#L38",children:"here"}),"."]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"@testing-library/react/cleanup-after-each"})," - Will clean up the DOM after each test has ran."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"@testing-library/jest-dom/extend-expect"})," - Custom jest matchers that you can use to extend jest"]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["If you want to override this you can create a file in the ",(0,n.jsx)(t.code,{children:"/app"})," directory called ",(0,n.jsx)(t.code,{children:"jest.init.js"})," and export whichever modules you want."]}),"\n",(0,n.jsx)(t.h2,{id:"example",children:"Example"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-javascript",children:"module.exports = ['@testing-library/react/cleanup-after-each', '@testing-library/jest-dom/extend-expect'];\n"})}),"\n",(0,n.jsxs)(t.p,{children:["More Info on Jest ",(0,n.jsx)(t.code,{children:"setupFilesAfterEnv"})," ",(0,n.jsx)(t.a,{href:"https://jestjs.io/docs/en/configuration#setupfilesafterenv-array",children:"here"})]}),"\n",(0,n.jsx)(t.h3,{id:"mocking-api-responses",children:"Mocking API Responses"}),"\n",(0,n.jsxs)(t.p,{children:["If your tests require data that's supplied by an external data source, you can use the ",(0,n.jsx)(t.code,{children:"jest.mock(...)"})," function to automatically mock the modules used to supply the data."]}),"\n",(0,n.jsxs)(t.p,{children:["Once you've mocked the module, you can provide a ",(0,n.jsx)(t.code,{children:"mockResolvedValue"})," that returns the data you want to use for your test."]}),"\n",(0,n.jsx)(t.h2,{id:"example-1",children:"Example"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-javascript",children:"import React from 'react';\nimport axiosMock from 'axios';\nimport slotmachineResponse from '../data/slotmachine.json';\n\njest.mock('axios');\n\naxiosMock.mockResolvedValue({\n config: { polling: false },\n data: slotmachineResponse,\n status: 202,\n statusText: 'Ok'\n});\n"})}),"\n",(0,n.jsxs)(t.p,{children:["More info on using mocks in Jest ",(0,n.jsx)(t.a,{href:"https://jestjs.io/docs/en/mock-functions",children:"here"})]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},3023:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>o});var n=s(3696);const i={},r=n.createContext(i);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/5e95c892.f62bbbe2.js b/assets/js/5e95c892.f62bbbe2.js
new file mode 100644
index 00000000..0dd0fa4b
--- /dev/null
+++ b/assets/js/5e95c892.f62bbbe2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[647],{2635:(s,e,a)=>{a.r(e),a.d(e,{default:()=>t});a(3696);var r=a(2689),u=a(113),c=a(6881),i=a(3971),d=a(5538),n=a(2540);function t(s){return(0,n.jsx)(u.e3,{className:(0,r.A)(c.G.wrapper.docsPages),children:(0,n.jsx)(d.A,{children:(0,i.v)(s.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/72e14192.8d862438.js b/assets/js/72e14192.8d862438.js
new file mode 100644
index 00000000..07c9eb91
--- /dev/null
+++ b/assets/js/72e14192.8d862438.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[814],{5827:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(2540),i=n(3023);const o={title:"Quick Start"},a=void 0,l={id:"quick-start",title:"Quick Start",description:"Create a new App using the Workflow CLI",source:"@site/docs/quick-start.md",sourceDirName:".",slug:"/quick-start",permalink:"/availity-workflow/quick-start",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/quick-start.md",tags:[],version:"current",frontMatter:{title:"Quick Start"},sidebar:"someSidebar",previous:{title:"Introduction",permalink:"/availity-workflow/"},next:{title:"Upgrading @availity/workflow",permalink:"/availity-workflow/upgrading-workflow"}},s={},c=[{value:"Create a new App using the Workflow CLI",id:"create-a-new-app-using-the-workflow-cli",level:2},{value:"Change directories into the App Folder",id:"change-directories-into-the-app-folder",level:2},{value:"Start Development Enviornment",id:"start-development-enviornment",level:2},{value:"Create a Production Deployment",id:"create-a-production-deployment",level:2}];function d(e){const t={blockquote:"blockquote",code:"code",h2:"h2",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"create-a-new-app-using-the-workflow-cli",children:"Create a new App using the Workflow CLI"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npx @availity/workflow init workflow-app\n"})}),"\n",(0,r.jsx)(t.h2,{id:"change-directories-into-the-app-folder",children:"Change directories into the App Folder"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"cd ./workflow-app\n"})}),"\n",(0,r.jsx)(t.h2,{id:"start-development-enviornment",children:"Start Development Enviornment"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn start\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Workflow will start a development environment avaiable at ",(0,r.jsx)(t.code,{children:"http://localhost:3000"}),". Any changes inside the ",(0,r.jsx)(t.code,{children:"project/app"})," directory will hot reload the application."]}),"\n",(0,r.jsx)(t.h2,{id:"create-a-production-deployment",children:"Create a Production Deployment"}),"\n",(0,r.jsx)(t.p,{children:"The toolkit ships with several release tasks for building your bundle and updating the package version."}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn production\n"})}),"\n",(0,r.jsxs)(t.p,{children:["This will bundle the app in the ",(0,r.jsx)(t.code,{children:"./dist"})," directory and create a tag with the appropriate version. Push this to the server."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"git push && git push --tags\n"})}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:["Note that in order to push the ",(0,r.jsx)(t.code,{children:"./dist"})," folder up you will need to make sure the folder is not ignored inside of your ",(0,r.jsx)(t.code,{children:".gitignore"})," file."]}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},3023:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var r=n(3696);const i={},o=r.createContext(i);function a(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/74155a9d.fc66a32f.js b/assets/js/74155a9d.fc66a32f.js
new file mode 100644
index 00000000..97eeec29
--- /dev/null
+++ b/assets/js/74155a9d.fc66a32f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[317],{7451:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>d});var a=n(2540),o=n(3023),i=n(4927);const r={title:"Bring on the Mocks"},s=void 0,l={id:"tutorial/mocks",title:"Bring on the Mocks",description:"When developing Availity applications there is no use in a UI that doesn't connect to some data source. There are a few ways a developer can get data when developing locally:",source:"@site/docs/tutorial/mocks.md",sourceDirName:"tutorial",slug:"/tutorial/mocks",permalink:"/availity-workflow/tutorial/mocks",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/tutorial/mocks.md",tags:[],version:"current",frontMatter:{title:"Bring on the Mocks"},sidebar:"someSidebar",previous:{title:"Getting Started",permalink:"/availity-workflow/tutorial/"},next:{title:"Creating a Deployment",permalink:"/availity-workflow/tutorial/deploy"}},c={},d=[{value:"Mock Data Structure",id:"mock-data-structure",level:2},{value:"Starting Mock Server",id:"starting-mock-server",level:2},{value:"Example",id:"example",level:2},{value:"Adding API Code Snippet",id:"adding-api-code-snippet",level:3},{value:"Adding a new Route",id:"adding-a-new-route",level:3},{value:"Adding Response Data",id:"adding-response-data",level:3}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"When developing Availity applications there is no use in a UI that doesn't connect to some data source. There are a few ways a developer can get data when developing locally:"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsx)(t.li,{children:"Proxy requests from the local webpack-dev-server to the target API environment and have the proxy handle the authentication."}),"\n",(0,a.jsx)(t.li,{children:"Spin up a local mock server to accept inbound requests and respond with fake data."}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Lucky for you, we have built a local mock server into workflow that will return mock data for most of the APIs that we support."}),"\n",(0,a.jsx)(t.h2,{id:"mock-data-structure",children:"Mock Data Structure"}),"\n",(0,a.jsx)("img",{width:"100%",src:(0,i.Ay)("img/mock-data.png"),alt:"Mock Data Structure"}),"\n",(0,a.jsxs)(t.p,{children:["Inside of the ",(0,a.jsx)(t.code,{children:"config"})," folder is a file titled ",(0,a.jsx)(t.code,{children:"routes.json"}),". This contains an object ",(0,a.jsx)(t.code,{children:"key/value"})," pair of all the API routes you override from your UI."]}),"\n",(0,a.jsxs)(t.p,{children:["In our case, we have an API call being made that requests data from ",(0,a.jsx)(t.code,{children:"/ms/api/availity/internal/spc/slotmachine/graphql"}),"."]}),"\n",(0,a.jsxs)(t.p,{children:["The key of the nested object is a ",(0,a.jsx)(t.code,{children:"file"})," type, thus we specify its a ",(0,a.jsx)(t.code,{children:"file"})," and the value is the path to the data file we want returned."]}),"\n",(0,a.jsxs)(t.p,{children:['The above pictured scenario can be explained by saying "the specified path will return JSON containing the data from the file ',(0,a.jsx)(t.code,{children:"data/slotmachine.data"}),". Note that the JSON will be returned for any type of request method, and parameters passed in. See the full list of ",(0,a.jsx)(t.a,{href:"/reference/mock-server/#route-configuration-examples",children:"examples"})," for more advanced configurations."]}),"\n",(0,a.jsx)(t.h2,{id:"starting-mock-server",children:"Starting Mock Server"}),"\n",(0,a.jsxs)(t.p,{children:["By default, if you have not modified your ",(0,a.jsx)(t.code,{children:"workflow.js"})," file the mock server will automatically start up and be running. This can be disabled by setting ",(0,a.jsx)(t.code,{children:"development.mock.enabled"})," to ",(0,a.jsx)(t.code,{children:"false"})," in the configuration file."]}),"\n",(0,a.jsxs)(t.p,{children:["The easiest way to know if the server is running is you should see a message saying ",(0,a.jsx)(t.code,{children:"Ekko server started at..."}),"."]}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-shell",metastring:"hideCopy=true",children:"Workspaces/workflow-app is \ud83d\udce6 v0.1.0 via \u2b22 v12.14.0 took 11s 487ms yarn start\nyarn run v1.21.1\n$ av start\n\u203a REACT\n\u203a Using project/config/workflow.js\n\u203a Using @availity/workflow/public/index.html\n\u203a Using @availity/workflow/public/favicon.ico\n\u203a Webpack 0% compiling\n\u203a Webpack 10% building\n\u203a Proxy created: [ '/api', '/ms' ] -> http://localhost:51484\n\u203a Proxy rewrite rule created: \"^/api\" ~> \"\"\n\u2139 \uff62wds\uff63: Project is running at http://localhost:3000/\n\u2139 \uff62wds\uff63: webpack output is served from undefined\n\u2139 \uff62wds\uff63: Content not from webpack is served from /Users/kgray/Workspaces/proving-grounds/workflow-app/build\n\u2139 \uff62wds\uff63: 404s will fallback to /index.html\n\u203a Started development server\n\u203a Loading plugin @availity/mock-data\n\u203a Ekko server started at http://localhost:51484\n"})}),"\n",(0,a.jsx)(t.h2,{id:"example",children:"Example"}),"\n",(0,a.jsx)(t.p,{children:"The best way to learn is by examples and that is what we are going to do here."}),"\n",(0,a.jsxs)(t.p,{children:["We are going to clear out the ",(0,a.jsx)(t.code,{children:"App.js"})," file for testing purposes and instead paste the below code snippet."]}),"\n",(0,a.jsx)(t.h3,{id:"adding-api-code-snippet",children:"Adding API Code Snippet"}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-jsx",metastring:"header=App.js",children:"import React, { useEffect, useState } from 'react';\nimport { avUserApi } from '@availity/api-axios';\n\nconst App = () => {\n const [name, setName] = useState(''); // initialize state\n\n // Fetch the user on component mount\n useEffect(() => {\n const fetchData = async () => {\n const user = await avUserApi.me(); // Request current user\n\n setName(user.firstName); // set the name to state\n };\n\n fetchData();\n }, []);\n\n return
\n'})}),"\n",(0,i.jsxs)(n.p,{children:["If we enable ",(0,i.jsx)(n.code,{children:"recursive"})," in the react props, then with the above example we would get the JSON request as seen below"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",metastring:"hideCopy=true",children:'{\n "level": "info",\n "entries": {\n "section": "links",\n "label": "Link One",\n "action": "click",\n "event": "click",\n "value": "http://google.com",\n "url": "http://localhost:3000\n }\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"summary--references",children:"Summary & References"}),"\n",(0,i.jsxs)(n.p,{children:["The above examples show example what log calls would look like hitting our ",(0,i.jsx)(n.code,{children:"splunk"})," analytics service. However, if you want to implement your own ",(0,i.jsx)(n.code,{children:"analytics"})," plugin then the ",(0,i.jsx)(n.code,{children:"JSON"})," payload may differ."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://availity.github.io/availity-react/components/analytics/analytics",children:"Analytics React Component"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://availity.github.io/sdk-js/resources/analytics/",children:"Analytics Core SDK"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},3023:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>l});var i=t(3696);const a={},o=i.createContext(a);function s(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/ecd580dd.2232252a.js b/assets/js/ecd580dd.2232252a.js
new file mode 100644
index 00000000..14bccd12
--- /dev/null
+++ b/assets/js/ecd580dd.2232252a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[666],{6007:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var t=i(2540),r=i(3023);const s={title:"Reference: CLI Commands"},l=void 0,o={id:"reference/commands",title:"Reference: CLI Commands",description:"Full list of Workflow Commands",source:"@site/docs/reference/commands.mdx",sourceDirName:"reference",slug:"/reference/commands",permalink:"/availity-workflow/reference/commands",draft:!1,unlisted:!1,editUrl:"https://github.com/availity/availity-workflow/edit/master/docusaurus/docs/reference/commands.mdx",tags:[],version:"current",frontMatter:{title:"Reference: CLI Commands"},sidebar:"someSidebar",previous:{title:"Reference: Workflow Configuration",permalink:"/availity-workflow/reference/workflow-config"},next:{title:"Reference: Mock Server",permalink:"/availity-workflow/reference/mock-server"}},a={},c=[{value:"help",id:"help",level:2},{value:"init",id:"init",level:2},{value:"Options",id:"options",level:4},{value:"Availity Templates",id:"availity-templates",level:4},{value:"start",id:"start",level:2},{value:"options",id:"options-1",level:4},{value:"lint",id:"lint",level:2},{value:"options",id:"options-2",level:4},{value:"build",id:"build",level:2},{value:"release",id:"release",level:2},{value:"options",id:"options-3",level:4},{value:"profile",id:"profile",level:2},{value:"test",id:"test",level:2},{value:"options",id:"options-4",level:4},{value:"--coverage",id:"--coverage",level:4},{value:"upgrade",id:"upgrade",level:2}];function d(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Full list of Workflow Commands"}),"\n",(0,t.jsx)(n.p,{children:"When inside of the current working directory of your application, you can run any of the below commands by running:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"yarn \n"})}),"\n",(0,t.jsx)(n.h2,{id:"help",children:(0,t.jsx)(n.code,{children:"help"})}),"\n",(0,t.jsx)(n.p,{children:"Show help menu for all CLI options."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",metastring:"hideCopy=true",children:"> yarn run help\n\nUsage: av [options]\n\nCommands:\n av init [options] Initialize your project from scratch.\n av release Bundle project for distribution (production\n or staging) and create a git tag\n av start Start the development server\n av lint Lint source files using ESLint\n av test Run your tests\n av profile Analyze Webpack bundles and find what is\n contributing their sizes\n av build Bundle project for distribution (production\n or staging)\n av about About @availity/workflow\n\nOptions:\n --help, -h Show help [boolean]\n --version, -v Show version number [boolean]\n\nExamples:\n av init my-app-name\n av start\n av lint\n\nView documentation at https://github.com/availity/workflow\n"})}),"\n",(0,t.jsx)(n.h2,{id:"init",children:(0,t.jsx)(n.code,{children:"init"})}),"\n",(0,t.jsxs)(n.p,{children:["Initializes a new project. Typically this is used in unison with ",(0,t.jsx)(n.code,{children:"npx"})," for kickstarting a new project. See the ",(0,t.jsx)(n.a,{href:"/quick-start/",children:"Quick Start"})," guide more information about creating a new project."]}),"\n",(0,t.jsx)(n.h4,{id:"options",children:"Options"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--version"}),", ",(0,t.jsx)(n.code,{children:"-v"}),': Specify which version of the project you want. [default: "latest"]']}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--current-dir"}),", ",(0,t.jsx)(n.code,{children:"-c"}),": If you want the project to be created in the current directory"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--template"}),", ",(0,t.jsx)(n.code,{children:"-t"}),": The template you want to initialize the project with"]}),"\n"]}),"\n",(0,t.jsx)(n.h4,{id:"availity-templates",children:"Availity Templates"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://github.com/Availity/availity-starter-react",children:"React Starter (Default)"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://github.com/Availity/availity-starter-wizard",children:"Wizard Starter (React)"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://github.com/Availity/availity-starter-typescript",children:"Typescript Starter"})}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"npx @availity/workflow init my-package-name --template https://github.com/Availity/availity-starter-typescript\n"})}),"\n",(0,t.jsx)(n.h2,{id:"start",children:(0,t.jsx)(n.code,{children:"start"})}),"\n",(0,t.jsx)(n.p,{children:"Start the development server and watches for file changes. Hot-reloading can be toggled via workflow settings."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"yarn start\n"})}),"\n",(0,t.jsx)(n.h4,{id:"options-1",children:"options"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--dry-run"}),": Start the development server using production settings."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"lint",children:(0,t.jsx)(n.code,{children:"lint"})}),"\n",(0,t.jsx)(n.p,{children:"Lint project files using EsLint."}),"\n",(0,t.jsx)(n.h4,{id:"options-2",children:"options"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--include"}),": Include additional glob patterns for linting."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--ignore-git-untracked"}),": Ignore files that are not indexed by git."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--disable-linter"}),": Disable linter when creating bundles for production or staging."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"build",children:(0,t.jsx)(n.code,{children:"build"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Cleans up ",(0,t.jsx)(n.code,{children:"/dist"})," folder"]}),"\n",(0,t.jsxs)(n.li,{children:["Bundles project assets into the ",(0,t.jsx)(n.code,{children:"/dist"})," folder"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"release",children:(0,t.jsx)(n.code,{children:"release"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Prompts the user for a version"}),"\n",(0,t.jsxs)(n.li,{children:["Cleans up ",(0,t.jsx)(n.code,{children:"/dist"})," folder"]}),"\n",(0,t.jsxs)(n.li,{children:["Bundles project assets into the ",(0,t.jsx)(n.code,{children:"/dist"})," folder"]}),"\n",(0,t.jsx)(n.li,{children:"Tags the version in Git"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["There are different forms of releases, ",(0,t.jsx)(n.code,{children:"production"})," and ",(0,t.jsx)(n.code,{children:"staging"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"Production will minify the javascript assets and staging will not."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"yarn production\n"})}),"\n",(0,t.jsx)(n.h4,{id:"options-3",children:"options"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"--dry-run"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Disables committing files to git"}),"\n",(0,t.jsx)(n.li,{children:"Disables creating a git tag"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Skipped tasks will print a message in the console"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:"hideCopy=true",children:"\u2139 [ Dry Run ] Skipping version bump\n"})}),"\n",(0,t.jsx)(n.h2,{id:"profile",children:(0,t.jsx)(n.code,{children:"profile"})}),"\n",(0,t.jsx)(n.p,{children:"Analyze Webpack bundles and find what is contributing their sizes. This command generates an html graphical chart that automatically opens in the browser as well as a text summary report in the console."}),"\n",(0,t.jsx)(n.h2,{id:"test",children:(0,t.jsx)(n.code,{children:"test"})}),"\n",(0,t.jsx)(n.p,{children:"Run the tests for your project. (Jest)"}),"\n",(0,t.jsx)(n.h4,{id:"options-4",children:"options"}),"\n",(0,t.jsx)(n.h4,{id:"--coverage",children:(0,t.jsx)(n.code,{children:"--coverage"})}),"\n",(0,t.jsxs)(n.p,{children:["Indicates that test coverage information should be collected and reported in the output. You can leverage the ",(0,t.jsx)(n.code,{children:"--coverage"})," option from Jest."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",metastring:"hideCopy=true",children:"> yarn test --coverage\n\u203a Started testing\nChrome 59.0.3071 (Mac OS X 10.12.5): Executed 3 of 3 SUCCESS (0.706 secs / 0.082 secs)\n\n=============================== Coverage summary ===============================\nStatements : 27.69% ( 8620/31134 )\nBranches : 9.81% ( 1980/20189 )\nFunctions : 22.15% ( 1381/6235 )\nLines : 27.23% ( 7955/29217 )\n================================================================================\n\u2714 Finished testing\n"})}),"\n",(0,t.jsx)(n.h2,{id:"upgrade",children:(0,t.jsx)(n.code,{children:"upgrade"})}),"\n",(0,t.jsx)(n.p,{children:"Upgrades the workflow dependencies to the latest version and in some cases will attempt to fix the breaking chnages."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"npx @availity/workflow-upgrade\n"})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},3023:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>o});var t=i(3696);const r={},s=t.createContext(r);function l(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/main.6bf9a3c1.js b/assets/js/main.6bf9a3c1.js
new file mode 100644
index 00000000..5464fc12
--- /dev/null
+++ b/assets/js/main.6bf9a3c1.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.6bf9a3c1.js.LICENSE.txt */
+(self.webpackChunk_availity_dinosaurdocs=self.webpackChunk_availity_dinosaurdocs||[]).push([[792],{7848:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(3696);var r=n(7303),a=n.n(r),o=n(4054);const i={"0941ac51":[()=>n.e(197).then(n.t.bind(n,326,19)),"@generated/docusaurus-plugin-content-docs/default/p/availity-workflow-a99.json",326],"0e4ddfbf":[()=>n.e(912).then(n.bind(n,6550)),"@site/docs/recipes/root-imports.md",6550],"1617aa34":[()=>n.e(433).then(n.bind(n,1573)),"@site/docs/reference/mock-server.md",1573],17896441:[()=>Promise.all([n.e(869),n.e(401)]).then(n.bind(n,1138)),"@theme/DocItem",1138],"1c2c1ffb":[()=>n.e(291).then(n.bind(n,7209)),"@site/docs/reference/workflow-config.md",7209],"383d31c1":[()=>n.e(395).then(n.bind(n,9344)),"@site/docs/tutorial/index.md",9344],"56ad79dd":[()=>n.e(489).then(n.bind(n,1731)),"@site/docs/recipes/testing-libraries.md",1731],"5e95c892":[()=>n.e(647).then(n.bind(n,2635)),"@theme/DocsRoot",2635],"72e14192":[()=>n.e(814).then(n.bind(n,5827)),"@site/docs/quick-start.md",5827],"74155a9d":[()=>n.e(317).then(n.bind(n,7451)),"@site/docs/tutorial/mocks.md",7451],"7cbdc6f8":[()=>n.e(314).then(n.bind(n,8787)),"@site/docs/tutorial/dependency-management.md",8787],a5b3bed8:[()=>n.e(967).then(n.bind(n,6629)),"@site/docs/tutorial/deploy.md",6629],a7bd4aaa:[()=>n.e(98).then(n.bind(n,2670)),"@theme/DocVersionRoot",2670],a94703ab:[()=>Promise.all([n.e(869),n.e(48)]).then(n.bind(n,7689)),"@theme/DocRoot",7689],aba21aa0:[()=>n.e(742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],c377a04b:[()=>n.e(361).then(n.bind(n,7445)),"@site/docs/index.md",7445],e075479a:[()=>n.e(321).then(n.bind(n,9582)),"@site/docs/upgrading-workflow.md",9582],e42d00f9:[()=>n.e(773).then(n.bind(n,4226)),"@site/docs/recipes/typescript.md",4226],ead19a12:[()=>n.e(443).then(n.bind(n,9244)),"@site/docs/recipes/logging.md",9244],ecd580dd:[()=>n.e(666).then(n.bind(n,6007)),"@site/docs/reference/commands.mdx",6007]};var l=n(2540);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(2707),c=n(3632);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(35).then(n.bind(n,3035)),modules:["@theme/NotFound"],webpack:()=>[3035],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[e+"-"+t],d={},p=[],f=[],m=(0,u.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const p=[{path:"/availity-workflow/",component:d("/availity-workflow/","15f"),routes:[{path:"/availity-workflow/",component:d("/availity-workflow/","20e"),routes:[{path:"/availity-workflow/",component:d("/availity-workflow/","e85"),routes:[{path:"/availity-workflow/quick-start",component:d("/availity-workflow/quick-start","4c2"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/recipes/logging",component:d("/availity-workflow/recipes/logging","549"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/recipes/root-imports",component:d("/availity-workflow/recipes/root-imports","f38"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/recipes/testing-libraries",component:d("/availity-workflow/recipes/testing-libraries","082"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/recipes/typescript",component:d("/availity-workflow/recipes/typescript","24c"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/reference/commands",component:d("/availity-workflow/reference/commands","204"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/reference/mock-server",component:d("/availity-workflow/reference/mock-server","e7c"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/reference/workflow-config",component:d("/availity-workflow/reference/workflow-config","e59"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/tutorial/",component:d("/availity-workflow/tutorial/","23c"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/tutorial/dependency-management",component:d("/availity-workflow/tutorial/dependency-management","2f1"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/tutorial/deploy",component:d("/availity-workflow/tutorial/deploy","f6d"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/tutorial/mocks",component:d("/availity-workflow/tutorial/mocks","527"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/upgrading-workflow",component:d("/availity-workflow/upgrading-workflow","635"),exact:!0,sidebar:"someSidebar"},{path:"/availity-workflow/",component:d("/availity-workflow/","77e"),exact:!0,sidebar:"someSidebar"}]}]}]},{path:"*",component:d("*")}]},191:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(3696),a=n(2540);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},6846:(e,t,n)=>{"use strict";var r=n(3696),a=n(7470),o=n(9005),i=n(9941),l=n(4784),s=n(7131);const u=[n(3201),n(2172),n(5028),n(7693)];var c=n(7848),d=n(9519),p=n(3971),f=n(2540);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(1186),h=n(2268),y=n(4927),v=n(3432),b=n(113),w=n(9461),k=n(8749),x=n(4205),S=n(6966),E=n(373);function C(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},"meta-og-"+e.htmlLang)))]})}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.applyTrailingSlash)((0,y.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?""+n+t:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function A(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,v.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(b.be,{image:n}),(0,f.jsx)(_,{}),(0,f.jsx)(C,{}),(0,f.jsx)(E.A,{tag:x.Cy,locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;var j=n(191),N=n(5850),L=n(5367);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r,a;const o=null!=(r=null==(a=t.default)?void 0:a[e])?r:t[e];return null==o?void 0:o(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);null==t||t.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),R("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(c.A,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class D extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return"\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '"+M+"';\n var bannerHtml = "+JSON.stringify(function(e){return'\n
There are 2 main ways to get started with Workflow CLI:
+
+
Tutorial: Step-by-Step instructions on how to install and start a project. This also includes details on the project structure as well as what each file/folder is used for.
+
Quick Start: The TLDR guide to kickstarting a project from start to finish.
Workflow will start a development environment avaiable at http://localhost:3000. Any changes inside the project/app directory will hot reload the application.
Analytics allows you to collect data on clicks and different page events across your application. More detailed prop options and examples can be found here.
First we have to create the instance of the logger to use for sending data outbound to an analytics service. In this example we will be using the splunk analytics @availity/api-axios resource as the connection.
+
We want to import AvSplunkAnalytics which is a plugin from the analytics-core package which has custom methods for translating our requests into our splunk analytics service format. Then we import the avLogMessagesApi from our resources sdk which contains the service call to our splunk endpoint.
+
Lastly we initialize the analytics-core plugin with the instance of the log message service and the last flag true, is to enable the plugin by default.
Next we want to render our Analytics component which will allow us to start logging analytics. You want to do this at the root of your App so any child component can gain access to the log service.
+
For this example we will assume we are rendering at the root index.js
Above we passed 4 properties to the component, plugins, attributePrefix, pageTracking and recursive. We will get more into the properties down below but just know that for now we passed the instance to the plugins prop and the service is now enabled.
Now that the component is initialized we can start to add attributes onto our jsx in order for the analytics to pick up the clicks. Let's use the below example
+
<a href="https://google.com" target="_blank" data-av-analytics-label="Google" data-av-analytics-value="google.com" data-av-analytics-action="click" >Go To Google </a>
+
Notice the prefix data-av-analytics. This directly corresponds to the attributePrefix property that we passed into the Analytics component above. Note that this is the default prefix and we can change that if we want to anything else as long as it doesn't conflict with other key properties on JSX components.
+
One of the key's here is the action attribute. These can be of type ['click','blur','focus']. In this case we want to log the event when the user clicks the link. The output of this when sent outbound to our analytics service looks like the below.
If you were able to add this in you should be seeing a similar log when you click! Next we will go over some of the additional attributes provided to help in logging.
In some cases, you may want to log when the page has loaded or the URL hash has changed due to the user navigating to another screen of your application. To simply enable this feature, just pass the pageTracking flag to the react component.
+
Below is an example JSON request that is sent when the user loads the page
This sound confusing, but its fairly simple to follow. In essence, we you click some button or item on the screen, the event object has access to all the elements leading up to the root HTML element.
+
What this means is that we can define our properties early on that are shared in all the clicks and when we enable recursive it will be plucked from the clicked element to the root and sent in the request.
+
<divdata-av-analytics-section="links"> <a href="blah" data-av-analytics-label="Link One" data-av-analytics-value="http://google.com" data-av-analytics-action="click" > Link One </a> <a href="blahblah" data-av-analytics-label="Link Two" data-av-analytics-value="http://google.com" data-av-analytics-action="click" > Link Two </a> </div>
+
If we enable recursive in the react props, then with the above example we would get the JSON request as seen below
The above examples show example what log calls would look like hitting our splunk analytics service. However, if you want to implement your own analytics plugin then the JSON payload may differ.
Note that the below recipe only works in Workflow Versions >=7.0.0
+
+
By default we include babel-plugin-import which allows you to import components using a specific syntax if you have a tree structure that goes past 2 - 3 layers.
+
Using the @/ key we can alias anything from the root of project/app inside of our project. We include the eslint config, and tsconfig so that if you are using vscode you will get all the intellisense for free.
If you want intellisense in vscode to pick up the root imports and allow you to control click into components you will need to make sure your tsconfig.json is updated. We have pasted ours below that we use in our starter projects.
By default @testing-library/react and @testing-library/jest-dom/extend-expect are added to the project. Some of their scripts are also automatically added to the setupFilesAfterEnv param for jest here.
+
+
@testing-library/react/cleanup-after-each - Will clean up the DOM after each test has ran.
+
@testing-library/jest-dom/extend-expect - Custom jest matchers that you can use to extend jest
+
+
If you want to override this you can create a file in the /app directory called jest.init.js and export whichever modules you want.