@vitest/browser 2.0.0-beta.1 → 2.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.d.ts +244 -0
- package/context.js +2 -0
- package/dist/client/.vite/manifest.json +24 -0
- package/dist/client/__vitest__/assets/index-BfnqOMHY.js +51 -0
- package/dist/client/__vitest__/assets/index-qZYZB8Y3.css +1 -0
- package/dist/client/__vitest__/index.html +16 -11
- package/dist/client/__vitest_browser__/orchestrator-DQ4hbmZ_.js +338 -0
- package/dist/client/__vitest_browser__/{rpc-By4jD8av.js → rpc-D6HtJ5Rb.js} +310 -399
- package/dist/client/__vitest_browser__/tester-IF8AbWCS.js +837 -0
- package/dist/client/esm-client-injector.js +24 -37
- package/dist/client/{index.html → orchestrator.html} +8 -7
- package/dist/client/{tester.html → tester/tester.html} +13 -3
- package/dist/context.js +175 -0
- package/dist/index.d.ts +103 -4
- package/dist/index.js +1944 -332
- package/dist/providers.js +20 -116
- package/dist/state.js +1 -0
- package/dist/webdriver-BRud6NtS.js +180 -0
- package/package.json +23 -11
- package/providers/playwright.d.ts +36 -2
- package/providers/webdriverio.d.ts +4 -0
- package/providers.d.ts +5 -5
- package/dist/client/__vitest__/assets/index-BMbN3lBu.js +0 -51
- package/dist/client/__vitest__/assets/index-D0Wp7rbG.css +0 -1
- package/dist/client/__vitest_browser__/main-DmAU-Uff.js +0 -102
- package/dist/client/__vitest_browser__/tester-CrKhlp5g.js +0 -473
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.task-error[data-v-ffc45ddf]{--cm-ttc-c-thumb: #CCC}html.dark .task-error[data-v-ffc45ddf]{--cm-ttc-c-thumb: #444}.task-error[data-v-5e7bb715]{--cm-ttc-c-thumb: #CCC}html.dark .task-error[data-v-5e7bb715]{--cm-ttc-c-thumb: #444}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:6;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler,.CodeMirror-overlayscroll .CodeMirror-gutter-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}:root{--color-link-label: var(--color-text);--color-link: #ddd;--color-node-external: #c0ad79;--color-node-inline: #8bc4a0;--color-node-root: #6e9aa5;--color-node-label: var(--color-text);--color-node-stroke: var(--color-text)}html.dark{--color-text: #fff;--color-link: #333;--color-node-external: #857a40;--color-node-inline: #468b60;--color-node-root: #467d8b}.graph{height:calc(100% - 39px)!important}.graph .node{stroke-width:2px;stroke-opacity:.5}.graph .link{stroke-width:2px}.graph .node:hover:not(.focused){filter:none!important}.graph .node__label{transform:translateY(20px);font-weight:100;filter:brightness(.5)}html.dark .graph .node__label{filter:brightness(1.2)}.details-panel{-webkit-user-select:none;user-select:none;width:100%}#vitest-ui-coverage{width:100%;height:calc(100vh - 42px);border:none}.number[data-v-09d153f7]{font-weight:400;text-align:right}.unhandled-errors[data-v-09d153f7]{--cm-ttc-c-thumb: #CCC}html.dark .unhandled-errors[data-v-09d153f7]{--cm-ttc-c-thumb: #444}.in-progress[data-v-f967c1fe]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px;animation:in-progress-stripes-f967c1fe 2s linear infinite}@keyframes in-progress-stripes-f967c1fe{0%{background-position:40px 0}to{background-position:0 0}}.graph,.graph>svg{display:block}.graph{height:100%;touch-action:none;width:100%}.graph *{-webkit-touch-callout:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.link{fill:none;stroke-width:4px}.node{--color-stroke: var(--color-node-stroke, rgba(0, 0, 0, .5));cursor:pointer;stroke:none;stroke-width:2px;transition:filter .25s ease,stroke .25s ease,stroke-dasharray .25s ease}.node:hover:not(.focused){filter:brightness(80%);stroke:var(--color-stroke);stroke-dasharray:4px}.node.focused{stroke:var(--color-stroke)}.link__label,.node__label{pointer-events:none;text-anchor:middle}.grabbed{cursor:grabbing!important}.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}:root{--cm-scheme: light;--cm-foreground: #6e6e6e;--cm-background: #f4f4f4;--cm-comment: #a8a8a8;--cm-string: #555555;--cm-literal: #333333;--cm-keyword: #000000;--cm-function: #4f4f4f;--cm-deleted: #333333;--cm-class: #333333;--cm-builtin: #757575;--cm-property: #333333;--cm-namespace: #4f4f4f;--cm-punctuation: #ababab;--cm-decorator: var(--cm-class);--cm-operator: var(--cm-punctuation);--cm-number: var(--cm-literal);--cm-boolean: var(--cm-literal);--cm-variable: var(--cm-literal);--cm-constant: var(--cm-literal);--cm-symbol: var(--cm-literal);--cm-interpolation: var(--cm-literal);--cm-selector: var(--cm-keyword);--cm-keyword-control: var(--cm-keyword);--cm-regex: var(--cm-string);--cm-json-property: var(--cm-property);--cm-inline-background: var(--cm-background);--cm-comment-style: italic;--cm-url-decoration: underline;--cm-line-number: #a5a5a5;--cm-line-number-gutter: #333333;--cm-line-highlight-background: #eeeeee;--cm-selection-background: #aaaaaa;--cm-marker-color: var(--cm-foreground);--cm-marker-opacity: .4;--cm-marker-font-size: .8em;--cm-font-size: 1em;--cm-line-height: 1.5em;--cm-font-family: monospace;--cm-inline-font-size: var(--cm-font-size);--cm-block-font-size: var(--cm-font-size);--cm-tab-size: 2;--cm-block-padding-x: 1em;--cm-block-padding-y: 1em;--cm-block-margin-x: 0;--cm-block-margin-y: .5em;--cm-block-radius: .3em;--cm-inline-padding-x: .3em;--cm-inline-padding-y: .1em;--cm-inline-radius: .3em}.cm-s-vars.CodeMirror{background-color:var(--cm-background);color:var(--cm-foreground)}.cm-s-vars .CodeMirror-gutters{background:var(--cm-line-number-gutter);color:var(--cm-line-number);border:none}.cm-s-vars .CodeMirror-guttermarker,.cm-s-vars .CodeMirror-guttermarker-subtle,.cm-s-vars .CodeMirror-linenumber{color:var(--cm-line-number)}.cm-s-vars div.CodeMirror-selected,.cm-s-vars.CodeMirror-focused div.CodeMirror-selected{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::selection,.cm-s-vars .CodeMirror-line>span::selection,.cm-s-vars .CodeMirror-line>span>span::selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::-moz-selection,.cm-s-vars .CodeMirror-line>span::-moz-selection,.cm-s-vars .CodeMirror-line>span>span::-moz-selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-activeline-background{background:var(--cm-line-highlight-background)}.cm-s-vars .cm-keyword{color:var(--cm-keyword)}.cm-s-vars .cm-variable,.cm-s-vars .cm-variable-2,.cm-s-vars .cm-variable-3,.cm-s-vars .cm-type{color:var(--cm-variable)}.cm-s-vars .cm-builtin{color:var(--cm-builtin)}.cm-s-vars .cm-atom{color:var(--cm-literal)}.cm-s-vars .cm-number{color:var(--cm-number)}.cm-s-vars .cm-def{color:var(--cm-decorator)}.cm-s-vars .cm-string,.cm-s-vars .cm-string-2{color:var(--cm-string)}.cm-s-vars .cm-comment{color:var(--cm-comment)}.cm-s-vars .cm-tag{color:var(--cm-builtin)}.cm-s-vars .cm-meta{color:var(--cm-namespace)}.cm-s-vars .cm-attribute,.cm-s-vars .cm-property{color:var(--cm-property)}.cm-s-vars .cm-qualifier{color:var(--cm-keyword)}.cm-s-vars .cm-error{color:var(--prism-deleted)}.cm-s-vars .cm-operator,.cm-s-vars .cm-bracket{color:var(--cm-punctuation)}.cm-s-vars .CodeMirror-matchingbracket{text-decoration:underline}.cm-s-vars .CodeMirror-cursor{border-left:1px solid currentColor}html,body{height:100%;font-family:Readex Pro,sans-serif;scroll-behavior:smooth}:root{--color-text-light: #000;--color-text-dark: #ddd;--color-text: var(--color-text-light);--background-color: #e4e4e4}html.dark{--color-text: var(--color-text-dark);--background-color: #141414;color:var(--color-text);background-color:var(--background-color);color-scheme:dark}.CodeMirror{height:100%!important;width:100%!important;font-family:inherit}.cm-s-vars .cm-tag{color:var(--cm-keyword)}:root{--cm-foreground: #393a3480;--cm-background: transparent;--cm-comment: #a0ada0;--cm-string: #b56959;--cm-literal: #2f8a89;--cm-number: #296aa3;--cm-keyword: #1c6b48;--cm-function: #6c7834;--cm-boolean: #1c6b48;--cm-constant: #a65e2b;--cm-deleted: #a14f55;--cm-class: #2993a3;--cm-builtin: #ab5959;--cm-property: #b58451;--cm-namespace: #b05a78;--cm-punctuation: #8e8f8b;--cm-decorator: #bd8f8f;--cm-regex: #ab5e3f;--cm-json-property: #698c96;--cm-line-number-gutter: #f8f8f8;--cm-ttc-c-thumb: #eee;--cm-ttc-c-track: white}html.dark{--cm-scheme: dark;--cm-foreground: #d4cfbf80;--cm-background: transparent;--cm-comment: #758575;--cm-string: #d48372;--cm-literal: #429988;--cm-keyword: #4d9375;--cm-boolean: #1c6b48;--cm-number: #6394bf;--cm-variable: #c2b36e;--cm-function: #a1b567;--cm-deleted: #a14f55;--cm-class: #54b1bf;--cm-builtin: #e0a569;--cm-property: #dd8e6e;--cm-namespace: #db889a;--cm-punctuation: #858585;--cm-decorator: #bd8f8f;--cm-regex: #ab5e3f;--cm-json-property: #6b8b9e;--cm-line-number: #888888;--cm-line-number-gutter: #161616;--cm-line-highlight-background: #444444;--cm-selection-background: #44444450;--cm-ttc-c-thumb: #222;--cm-ttc-c-track: #111}.splitpanes__pane{background-color:unset!important}.splitpanes__splitter{position:relative;background-color:#7d7d7d1a;z-index:10}.splitpanes__splitter:before{content:"";position:absolute;left:0;top:0;transition:opacity .4s;background-color:#7d7d7d1a;opacity:0;z-index:1}.splitpanes__splitter:hover:before{opacity:1}.splitpanes--vertical>.splitpanes__splitter:before{left:0;right:-10px;height:100%}.splitpanes--horizontal>.splitpanes__splitter:before{top:0;bottom:-10px;width:100%}.splitpanes.loading .splitpanes__pane{transition:none!important;height:100%}.CodeMirror-scroll{scrollbar-width:none}.CodeMirror-scroll::-webkit-scrollbar,.codemirror-scrolls::-webkit-scrollbar{display:none}.codemirror-scrolls{overflow:auto!important;scrollbar-width:thin;scrollbar-color:var(--cm-ttc-c-thumb) var(--cm-ttc-c-track)}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{background-color:var(--cm-ttc-c-track)!important;border:none!important}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{background-color:var(--cm-ttc-c-thumb)!important;border:none!important}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:var(--cm-ttc-c-track)!important}.CodeMirror{overflow:unset!important}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar{display:none!important}.CodeMirror-scroll{margin-bottom:unset!important;margin-right:unset!important;padding-bottom:unset!important}.scrolls::-webkit-scrollbar{width:8px;height:8px}.scrolls{overflow:auto!important;scrollbar-width:thin;scrollbar-color:var(--cm-ttc-c-thumb) var(--cm-ttc-c-track)}.scrolls::-webkit-scrollbar-track{background:var(--cm-ttc-c-track)}.scrolls::-webkit-scrollbar-thumb{background-color:var(--cm-ttc-c-thumb);border:2px solid var(--cm-ttc-c-thumb)}.scrolls::-webkit-scrollbar-thumb,.scrolls-rounded::-webkit-scrollbar-track{border-radius:3px}.scrolls::-webkit-scrollbar-corner{background-color:var(--cm-ttc-c-track)}.v-popper__popper .v-popper__inner{font-size:12px;padding:4px 6px;border-radius:4px;background-color:var(--background-color);color:var(--color-text)}.v-popper__popper .v-popper__arrow-outer{border-color:var(--background-color)}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:#000c;color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.i-logos\:typescript-icon,[i-logos\:typescript-icon=""]{background:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='%233178C6' d='M20 0h216c11.046 0 20 8.954 20 20v216c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20V20C0 8.954 8.954 0 20 0'/%3E%3Cpath fill='%23FFF' d='M150.518 200.475v27.62c4.492 2.302 9.805 4.028 15.938 5.179c6.133 1.151 12.597 1.726 19.393 1.726c6.622 0 12.914-.633 18.874-1.899c5.96-1.266 11.187-3.352 15.678-6.257c4.492-2.906 8.048-6.704 10.669-11.394c2.62-4.689 3.93-10.486 3.93-17.391c0-5.006-.749-9.394-2.246-13.163a30.748 30.748 0 0 0-6.479-10.055c-2.821-2.935-6.205-5.567-10.149-7.898c-3.945-2.33-8.394-4.531-13.347-6.602c-3.628-1.497-6.881-2.949-9.761-4.359c-2.879-1.41-5.327-2.848-7.342-4.316c-2.016-1.467-3.571-3.021-4.665-4.661c-1.094-1.64-1.641-3.495-1.641-5.567c0-1.899.489-3.61 1.468-5.135s2.362-2.834 4.147-3.927c1.785-1.094 3.973-1.942 6.565-2.547c2.591-.604 5.471-.906 8.638-.906c2.304 0 4.737.173 7.299.518c2.563.345 5.14.877 7.732 1.597a53.669 53.669 0 0 1 7.558 2.719a41.7 41.7 0 0 1 6.781 3.797v-25.807c-4.204-1.611-8.797-2.805-13.778-3.582c-4.981-.777-10.697-1.165-17.147-1.165c-6.565 0-12.784.705-18.658 2.115c-5.874 1.409-11.043 3.61-15.506 6.602c-4.463 2.993-7.99 6.805-10.582 11.437c-2.591 4.632-3.887 10.17-3.887 16.615c0 8.228 2.375 15.248 7.127 21.06c4.751 5.811 11.963 10.731 21.638 14.759a291.458 291.458 0 0 1 10.625 4.575c3.283 1.496 6.119 3.049 8.509 4.66c2.39 1.611 4.276 3.366 5.658 5.265c1.382 1.899 2.073 4.057 2.073 6.474a9.901 9.901 0 0 1-1.296 4.963c-.863 1.524-2.174 2.848-3.93 3.97c-1.756 1.122-3.945 1.999-6.565 2.632c-2.62.633-5.687.95-9.2.95c-5.989 0-11.92-1.05-17.794-3.151c-5.875-2.1-11.317-5.25-16.327-9.451m-46.036-68.733H140V109H41v22.742h35.345V233h28.137z'/%3E%3C/svg%3E") no-repeat;background-size:100% 100%;background-color:transparent;width:1em;height:1em}.container{width:100%}.tab-button,[tab-button=""]{height:100%;padding-left:1rem;padding-right:1rem;font-weight:300;opacity:.5}.border-base,[border~=base]{border-color:#6b72801a}.bg-active{background-color:#6b728014}.bg-base,[bg-base=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark .bg-base,.dark [bg-base=""]{--un-bg-opacity:1;background-color:rgb(17 17 17 / var(--un-bg-opacity))}.bg-header,[bg-header=""]{background-color:#6b72800d}.bg-overlay,[bg-overlay=""],[bg~=overlay]{background-color:#eeeeee80}.dark .bg-overlay,.dark [bg-overlay=""],.dark [bg~=overlay]{background-color:#22222280}.tab-button-active{background-color:#6b72801a;opacity:1}[hover~=bg-active]:hover{background-color:#6b728014}.tab-button:hover,[tab-button=""]:hover{opacity:.8}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.pointer-events-none,[pointer-events-none=""]{pointer-events:none}.absolute,[absolute=""]{position:absolute}.fixed,[fixed=""]{position:fixed}.relative,[relative=""]{position:relative}.sticky,[sticky=""]{position:sticky}.inset-0,[inset-0=""]{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.right-0,[right~="0"]{right:0}.right-5px,[right-5px=""]{right:5px}.top-0{top:0}.top-5px,[top-5px=""]{top:5px}[top~="-1"]{top:-.25rem}.z-10,[z-10=""]{z-index:10}.z-40{z-index:40}.z-5,[z-5=""]{z-index:5}.grid,[grid~="~"]{display:grid}.auto-cols-max,[grid~=auto-cols-max]{grid-auto-columns:max-content}.cols-\[1\.5em_1fr\],[grid~="cols-[1.5em_1fr]"]{grid-template-columns:1.5em 1fr}.cols-\[min-content_1fr_min-content\],[grid~="cols-[min-content_1fr_min-content]"]{grid-template-columns:min-content 1fr min-content}.rows-\[min-content_auto\],[grid~="rows-[min-content_auto]"]{grid-template-rows:min-content auto}.cols-2,[grid~=cols-2]{grid-template-columns:repeat(2,minmax(0,1fr))}.m-2,[m-2=""]{margin:.5rem}.ma,[ma=""]{margin:auto}.mx-1,[mx-1=""]{margin-left:.25rem;margin-right:.25rem}.my-0,[my-0=""]{margin-top:0;margin-bottom:0}.my-2,[my-2=""]{margin-top:.5rem;margin-bottom:.5rem}[m~=x-2]{margin-left:.5rem;margin-right:.5rem}[m~=y-4]{margin-top:1rem;margin-bottom:1rem}.mb-1,[mb-1=""]{margin-bottom:.25rem}.mb-2,[mb-2=""]{margin-bottom:.5rem}.mr-1,[mr-1=""]{margin-right:.25rem}.mr-2,[mr-2=""]{margin-right:.5rem}.ms,[ms=""]{margin-inline-start:1rem}.mt-2,[m~=t2],[mt-2=""]{margin-top:.5rem}.inline,[inline=""]{display:inline}.hidden{display:none}.h-1\.4em{height:1.4em}.h-1\.5em{height:1.5em}.h-10,[h-10=""]{height:2.5rem}.h-1px,[h-1px=""]{height:1px}.h-3px,[h-3px=""]{height:3px}.h-41px,[h-41px=""]{height:41px}.h-6,[h-6=""]{height:1.5rem}.h-full,[h-full=""],[h~=full]{height:100%}.h-screen,[h-screen=""]{height:100vh}.h3{height:.75rem}.h4{height:1rem}.max-h-full,[max-h-full=""]{max-height:100%}.max-w-screen,[max-w-screen=""]{max-width:100vw}.max-w-xl,[max-w-xl=""]{max-width:36rem}.min-h-1em{min-height:1em}.min-h-75,[min-h-75=""]{min-height:18.75rem}.min-w-1em{min-width:1em}.min-w-2em,[min-w-2em=""]{min-width:2em}.w-1\.4em{width:1.4em}.w-1\.5em{width:1.5em}.w-2px,[w-2px=""]{width:2px}.w-350,[w-350=""]{width:87.5rem}.w-6,[w-6=""]{width:1.5rem}.w-80,[w-80=""]{width:20rem}.w-full,[w-full=""]{width:100%}.w-screen,[w-screen=""]{width:100vw}.open\:max-h-52[open],[open\:max-h-52=""][open]{max-height:13rem}.flex,[flex=""],[flex~="~"]{display:flex}.flex-1,[flex-1=""]{flex:1 1 0%}.flex-auto,[flex-auto=""]{flex:1 1 auto}.flex-shrink-0,[flex-shrink-0=""]{flex-shrink:0}[flex~=row]{flex-direction:row}.flex-col,[flex-col=""],[flex~=col]{flex-direction:column}[flex~=wrap]{flex-wrap:wrap}.origin-center,[origin-center=""]{transform-origin:center}.translate-x-3,[translate-x-3=""]{--un-translate-x:.75rem;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-0,[rotate-0=""]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-90,[rotate-90=""]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:90deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin,[animate-spin=""]{animation:spin 1s linear infinite}.animate-reverse{animation-direction:reverse}.animate-count-1,[animate-count-1=""]{animation-iteration-count:1}.cursor-help{cursor:help}.cursor-pointer,[cursor-pointer=""],.hover\:cursor-pointer:hover{cursor:pointer}.select-none,[select-none=""]{-webkit-user-select:none;user-select:none}.resize{resize:both}.items-end,[items-end=""]{align-items:flex-end}.items-center,[grid~=items-center],[items-center=""]{align-items:center}.justify-center,[justify-center=""]{justify-content:center}.justify-evenly,[justify-evenly=""]{justify-content:space-evenly}.justify-items-center,[justify-items-center=""]{justify-items:center}.gap-0,[gap-0=""]{gap:0}.gap-1,[flex~=gap-1]{gap:.25rem}.gap-2,[flex~=gap-2],[gap-2=""]{gap:.5rem}.gap-4,[flex~=gap-4],[gap-4=""]{gap:1rem}.gap-x-2,[gap~=x-2]{column-gap:.5rem}[gap~=y-3]{row-gap:.75rem}.overflow-auto,[overflow-auto=""]{overflow:auto}.overflow-hidden,[overflow-hidden=""],[overflow~=hidden]{overflow:hidden}.truncate,[truncate=""]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre,[whitespace-pre=""]{white-space:pre}.ws-nowrap,[ws-nowrap=""]{white-space:nowrap}.b,.border,[border~="~"]{border-width:1px}.b-2{border-width:2px}.border-b,[border~=b]{border-bottom-width:1px}.border-b-2,[border-b-2=""],[border~=b-2]{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r,[border~=r]{border-right-width:1px}.border-t,[border~=t]{border-top-width:1px}[border~="gray-400/50"]{border-color:#9ca3af80}.border-rounded,.rounded,[border-rounded=""],[border~=rounded],[rounded=""]{border-radius:.25rem}.rounded-lg,[rounded-lg=""]{border-radius:.5rem}.\!bg-gray-4{--un-bg-opacity:1 !important;background-color:rgb(156 163 175 / var(--un-bg-opacity))!important}.bg-current,[bg-current=""]{background-color:currentColor}.bg-green5,[bg-green5=""]{--un-bg-opacity:1;background-color:rgb(34 197 94 / var(--un-bg-opacity))}.bg-red-500\/10,[bg~="red-500/10"],[bg~="red500/10"]{background-color:#ef44441a}.bg-red5,[bg-red5=""]{--un-bg-opacity:1;background-color:rgb(239 68 68 / var(--un-bg-opacity))}.bg-white,[bg-white=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.bg-yellow5,[bg-yellow5=""]{--un-bg-opacity:1;background-color:rgb(234 179 8 / var(--un-bg-opacity))}.dark .\!dark\:bg-gray-7{--un-bg-opacity:1 !important;background-color:rgb(55 65 81 / var(--un-bg-opacity))!important}[bg~="green-500/10"]{background-color:#22c55e1a}[bg~=transparent]{background-color:transparent}.p-0,[p-0=""]{padding:0}.p-1,[p-1=""]{padding:.25rem}.p-2,.p2,[p-2=""],[p~="2"],[p2=""]{padding:.5rem}.p-4,[p-4=""]{padding:1rem}.p-5,[p-5=""]{padding:1.25rem}.p6,[p6=""]{padding:1.5rem}[p~="3"]{padding:.75rem}.p-y-1,.py-1,[p~=y-1],[p~=y1],[py-1=""]{padding-top:.25rem;padding-bottom:.25rem}.px,[p~=x-4],[p~=x4]{padding-left:1rem;padding-right:1rem}.px-0{padding-left:0;padding-right:0}.px-3,[p~=x3],[px-3=""]{padding-left:.75rem;padding-right:.75rem}.py,[p~=y4]{padding-top:1rem;padding-bottom:1rem}.py-2,[p~=y2],[py-2=""]{padding-top:.5rem;padding-bottom:.5rem}[p~=x-2],[p~=x2]{padding-left:.5rem;padding-right:.5rem}[p~="y0.5"]{padding-top:.125rem;padding-bottom:.125rem}.pb-2,[pb-2=""]{padding-bottom:.5rem}.pe-2\.5,[pe-2\.5=""]{padding-inline-end:.625rem}.pl-1,[pl-1=""]{padding-left:.25rem}.pt{padding-top:1rem}.pt-4px{padding-top:4px}[p~=l3]{padding-left:.75rem}[p~=r2]{padding-right:.5rem}.text-center,[text-center=""],[text~=center]{text-align:center}.indent,[indent=""]{text-indent:1.5rem}[indent~="1"]{text-indent:.25rem}.text-2xl,[text-2xl=""]{font-size:1.5rem;line-height:2rem}.text-4xl,[text-4xl=""]{font-size:2.25rem;line-height:2.5rem}.text-lg,[text-lg=""]{font-size:1.125rem;line-height:1.75rem}.text-sm,[text-sm=""],[text~=sm]{font-size:.875rem;line-height:1.25rem}.text-xs,[text-xs=""],[text~=xs]{font-size:.75rem;line-height:1rem}[text~="5xl"]{font-size:3rem;line-height:1}.dark .dark\:text-red-300{--un-text-opacity:1;color:rgb(252 165 165 / var(--un-text-opacity))}.text-gray-500,[text-gray-500=""]{--un-text-opacity:1;color:rgb(107 114 128 / var(--un-text-opacity))}.text-green-500,.text-green5,[text-green-500=""],[text-green5=""],[text~=green-500]{--un-text-opacity:1;color:rgb(34 197 94 / var(--un-text-opacity))}.text-purple5\:50{color:#a855f780}.color-red5,.text-red-500,.text-red5,[text-red-500=""],[text-red5=""],[text~=red-500],[text~=red500]{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.c-red-600,.text-red-600{--un-text-opacity:1;color:rgb(220 38 38 / var(--un-text-opacity))}.text-yellow-500,.text-yellow5,[text-yellow-500=""],[text-yellow5=""]{--un-text-opacity:1;color:rgb(234 179 8 / var(--un-text-opacity))}[text~="red500/70"]{color:#ef4444b3}.dark .dark\:c-red-400{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity))}.dark .dark\:color-\#f43f5e{--un-text-opacity:1;color:rgb(244 63 94 / var(--un-text-opacity))}.font-bold,[font-bold=""]{font-weight:700}.font-light,[font-light=""],[font~=light]{font-weight:300}.font-thin,[font-thin=""]{font-weight:100}.font-mono,[font-mono=""]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.capitalize,[capitalize=""]{text-transform:capitalize}.op-50,.op50,.opacity-50,[op-50=""],[op~="50"],[op50=""]{opacity:.5}.op100,[op~="100"]{opacity:1}.op20,[op20=""]{opacity:.2}.op30,[op30=""]{opacity:.3}.op80,[op80=""]{opacity:.8}.opacity-0{opacity:0}[opacity~="10"]{opacity:.1}[opacity~="70"]{opacity:.7}[hover~=op100]:hover,[op~="hover:100"]:hover{opacity:1}.outline{outline-style:solid}[outline~=none]{outline:2px solid transparent;outline-offset:2px}.backdrop-blur-sm,[backdrop-blur-sm=""]{--un-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.backdrop-saturate-0,[backdrop-saturate-0=""]{--un-backdrop-saturate:saturate(0);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.filter,[filter=""]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { c as client, g as getConfig, a as getBrowserState, b as channel, r as rpcDone } from "./rpc-By4jD8av.js";
|
|
2
|
-
const url = new URL(location.href);
|
|
3
|
-
const ID_ALL = "__vitest_all__";
|
|
4
|
-
const iframes = /* @__PURE__ */ new Map();
|
|
5
|
-
function debug(...args) {
|
|
6
|
-
const debug2 = getConfig().env.VITEST_BROWSER_DEBUG;
|
|
7
|
-
if (debug2 && debug2 !== "false")
|
|
8
|
-
client.rpc.debug(...args.map(String));
|
|
9
|
-
}
|
|
10
|
-
function createIframe(container, file) {
|
|
11
|
-
if (iframes.has(file)) {
|
|
12
|
-
container.removeChild(iframes.get(file));
|
|
13
|
-
iframes.delete(file);
|
|
14
|
-
}
|
|
15
|
-
const iframe = document.createElement("iframe");
|
|
16
|
-
iframe.setAttribute("loading", "eager");
|
|
17
|
-
iframe.setAttribute("src", `${url.pathname}__vitest_test__/__test__/${encodeURIComponent(file)}`);
|
|
18
|
-
iframes.set(file, iframe);
|
|
19
|
-
container.appendChild(iframe);
|
|
20
|
-
return iframe;
|
|
21
|
-
}
|
|
22
|
-
async function done() {
|
|
23
|
-
await rpcDone();
|
|
24
|
-
await client.rpc.finishBrowserTests();
|
|
25
|
-
}
|
|
26
|
-
client.ws.addEventListener("open", async () => {
|
|
27
|
-
const config = getConfig();
|
|
28
|
-
const container = document.querySelector("#vitest-tester");
|
|
29
|
-
const testFiles = getBrowserState().files;
|
|
30
|
-
debug("test files", testFiles.join(", "));
|
|
31
|
-
if (!testFiles.length) {
|
|
32
|
-
await done();
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const runningFiles = new Set(testFiles);
|
|
36
|
-
channel.addEventListener("message", async (e) => {
|
|
37
|
-
var _a;
|
|
38
|
-
debug("channel event", JSON.stringify(e.data));
|
|
39
|
-
switch (e.data.type) {
|
|
40
|
-
case "done": {
|
|
41
|
-
const filenames = e.data.filenames;
|
|
42
|
-
filenames.forEach((filename) => runningFiles.delete(filename));
|
|
43
|
-
const iframeId = filenames.length > 1 ? ID_ALL : filenames[0];
|
|
44
|
-
(_a = iframes.get(iframeId)) == null ? void 0 : _a.remove();
|
|
45
|
-
iframes.delete(iframeId);
|
|
46
|
-
if (!runningFiles.size)
|
|
47
|
-
await done();
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
case "error": {
|
|
51
|
-
const iframeId = e.data.files.length > 1 ? ID_ALL : e.data.files[0];
|
|
52
|
-
iframes.delete(iframeId);
|
|
53
|
-
await client.rpc.onUnhandledError(e.data.error, e.data.errorType);
|
|
54
|
-
if (iframeId === ID_ALL)
|
|
55
|
-
runningFiles.clear();
|
|
56
|
-
else
|
|
57
|
-
runningFiles.delete(iframeId);
|
|
58
|
-
if (!runningFiles.size)
|
|
59
|
-
await done();
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
default: {
|
|
63
|
-
await client.rpc.onUnhandledError({
|
|
64
|
-
name: "Unexpected Event",
|
|
65
|
-
message: `Unexpected event: ${e.data.type}`
|
|
66
|
-
}, "Unexpected Event");
|
|
67
|
-
await done();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
const fileParallelism = config.browser.fileParallelism ?? config.fileParallelism;
|
|
72
|
-
if (config.isolate === false) {
|
|
73
|
-
createIframe(
|
|
74
|
-
container,
|
|
75
|
-
ID_ALL
|
|
76
|
-
);
|
|
77
|
-
} else {
|
|
78
|
-
if (fileParallelism) {
|
|
79
|
-
for (const file of testFiles) {
|
|
80
|
-
createIframe(
|
|
81
|
-
container,
|
|
82
|
-
file
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
} else {
|
|
86
|
-
for (const file of testFiles) {
|
|
87
|
-
createIframe(
|
|
88
|
-
container,
|
|
89
|
-
file
|
|
90
|
-
);
|
|
91
|
-
await new Promise((resolve) => {
|
|
92
|
-
channel.addEventListener("message", function handler(e) {
|
|
93
|
-
if (e.data.type === "done" || e.data.type === "error") {
|
|
94
|
-
channel.removeEventListener("message", handler);
|
|
95
|
-
resolve();
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
});
|
|
@@ -1,473 +0,0 @@
|
|
|
1
|
-
function __vite__mapDeps(indexes) {
|
|
2
|
-
if (!__vite__mapDeps.viteFileDeps) {
|
|
3
|
-
__vite__mapDeps.viteFileDeps = []
|
|
4
|
-
}
|
|
5
|
-
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
|
|
6
|
-
}
|
|
7
|
-
var __defProp = Object.defineProperty;
|
|
8
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __publicField = (obj, key, value) => {
|
|
10
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11
|
-
return value;
|
|
12
|
-
};
|
|
13
|
-
import { i as importId, d as rpc$1, g as getConfig, _ as __vitePreload, b as channel, a as getBrowserState, c as client, l as loadSafeRpc, o as onCancel } from "./rpc-By4jD8av.js";
|
|
14
|
-
function showPopupWarning(name, value, defaultValue) {
|
|
15
|
-
return (...params) => {
|
|
16
|
-
const formatedParams = params.map((p) => JSON.stringify(p)).join(", ");
|
|
17
|
-
console.warn(`Vitest encountered a \`${name}(${formatedParams})\` call that it cannot handle by default, so it returned \`${value}\`. Read more in https://vitest.dev/guide/browser#thread-blocking-dialogs.
|
|
18
|
-
If needed, mock the \`${name}\` call manually like:
|
|
19
|
-
|
|
20
|
-
\`\`\`
|
|
21
|
-
import { expect, vi } from "vitest"
|
|
22
|
-
|
|
23
|
-
vi.spyOn(window, "${name}")${defaultValue ? `.mockReturnValue(${JSON.stringify(defaultValue)})` : ""}
|
|
24
|
-
${name}(${formatedParams})
|
|
25
|
-
expect(${name}).toHaveBeenCalledWith(${formatedParams})
|
|
26
|
-
\`\`\``);
|
|
27
|
-
return value;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function setupDialogsSpy() {
|
|
31
|
-
globalThis.alert = showPopupWarning("alert", void 0);
|
|
32
|
-
globalThis.confirm = showPopupWarning("confirm", false, true);
|
|
33
|
-
globalThis.prompt = showPopupWarning("prompt", null, "your value");
|
|
34
|
-
}
|
|
35
|
-
const { Date: Date$1, console: console$1 } = globalThis;
|
|
36
|
-
async function setupConsoleLogSpy() {
|
|
37
|
-
const { stringify, format, inspect } = await importId("vitest/utils");
|
|
38
|
-
const { log, info, error, dir, dirxml, trace, time, timeEnd, timeLog, warn, debug: debug2, count, countReset } = console$1;
|
|
39
|
-
const formatInput = (input) => {
|
|
40
|
-
if (input instanceof Node)
|
|
41
|
-
return stringify(input);
|
|
42
|
-
return format(input);
|
|
43
|
-
};
|
|
44
|
-
const processLog = (args) => args.map(formatInput).join(" ");
|
|
45
|
-
const sendLog = (type, content) => {
|
|
46
|
-
var _a, _b;
|
|
47
|
-
if (content.startsWith("[vite]"))
|
|
48
|
-
return;
|
|
49
|
-
const unknownTestId = "__vitest__unknown_test__";
|
|
50
|
-
const taskId = ((_b = (_a = globalThis.__vitest_worker__) == null ? void 0 : _a.current) == null ? void 0 : _b.id) ?? unknownTestId;
|
|
51
|
-
rpc$1().sendLog({
|
|
52
|
-
content,
|
|
53
|
-
time: Date$1.now(),
|
|
54
|
-
taskId,
|
|
55
|
-
type,
|
|
56
|
-
size: content.length
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
const stdout = (base) => (...args) => {
|
|
60
|
-
sendLog("stdout", processLog(args));
|
|
61
|
-
return base(...args);
|
|
62
|
-
};
|
|
63
|
-
const stderr = (base) => (...args) => {
|
|
64
|
-
sendLog("stderr", processLog(args));
|
|
65
|
-
return base(...args);
|
|
66
|
-
};
|
|
67
|
-
console$1.log = stdout(log);
|
|
68
|
-
console$1.debug = stdout(debug2);
|
|
69
|
-
console$1.info = stdout(info);
|
|
70
|
-
console$1.error = stderr(error);
|
|
71
|
-
console$1.warn = stderr(warn);
|
|
72
|
-
console$1.dir = (item, options) => {
|
|
73
|
-
sendLog("stdout", inspect(item, options));
|
|
74
|
-
return dir(item, options);
|
|
75
|
-
};
|
|
76
|
-
console$1.dirxml = (...args) => {
|
|
77
|
-
sendLog("stdout", processLog(args));
|
|
78
|
-
return dirxml(...args);
|
|
79
|
-
};
|
|
80
|
-
console$1.trace = (...args) => {
|
|
81
|
-
const content = processLog(args);
|
|
82
|
-
const error2 = new Error("Trace");
|
|
83
|
-
const stack = (error2.stack || "").split("\n").slice(2).join("\n");
|
|
84
|
-
sendLog("stdout", `${content}
|
|
85
|
-
${stack}`);
|
|
86
|
-
return trace(...args);
|
|
87
|
-
};
|
|
88
|
-
const timeLabels = {};
|
|
89
|
-
console$1.time = (label = "default") => {
|
|
90
|
-
const now = performance.now();
|
|
91
|
-
time(label);
|
|
92
|
-
timeLabels[label] = now;
|
|
93
|
-
};
|
|
94
|
-
console$1.timeLog = (label = "default") => {
|
|
95
|
-
timeLog(label);
|
|
96
|
-
if (!(label in timeLabels))
|
|
97
|
-
sendLog("stderr", `Timer "${label}" does not exist`);
|
|
98
|
-
else
|
|
99
|
-
sendLog("stdout", `${label}: ${timeLabels[label]} ms`);
|
|
100
|
-
};
|
|
101
|
-
console$1.timeEnd = (label = "default") => {
|
|
102
|
-
const end = performance.now();
|
|
103
|
-
timeEnd(label);
|
|
104
|
-
const start = timeLabels[label];
|
|
105
|
-
if (!(label in timeLabels)) {
|
|
106
|
-
sendLog("stderr", `Timer "${label}" does not exist`);
|
|
107
|
-
} else if (start) {
|
|
108
|
-
const duration = end - start;
|
|
109
|
-
sendLog("stdout", `${label}: ${duration} ms`);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
const countLabels = {};
|
|
113
|
-
console$1.count = (label = "default") => {
|
|
114
|
-
const counter = (countLabels[label] ?? 0) + 1;
|
|
115
|
-
countLabels[label] = counter;
|
|
116
|
-
sendLog("stdout", `${label}: ${counter}`);
|
|
117
|
-
return count(label);
|
|
118
|
-
};
|
|
119
|
-
console$1.countReset = (label = "default") => {
|
|
120
|
-
countLabels[label] = 0;
|
|
121
|
-
return countReset(label);
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
class VitestBrowserSnapshotEnvironment {
|
|
125
|
-
getVersion() {
|
|
126
|
-
return "1";
|
|
127
|
-
}
|
|
128
|
-
getHeader() {
|
|
129
|
-
return `// Vitest Snapshot v${this.getVersion()}, https://vitest.dev/guide/snapshot.html`;
|
|
130
|
-
}
|
|
131
|
-
readSnapshotFile(filepath) {
|
|
132
|
-
return rpc().readSnapshotFile(filepath);
|
|
133
|
-
}
|
|
134
|
-
saveSnapshotFile(filepath, snapshot) {
|
|
135
|
-
return rpc().saveSnapshotFile(filepath, snapshot);
|
|
136
|
-
}
|
|
137
|
-
resolvePath(filepath) {
|
|
138
|
-
return rpc().resolveSnapshotPath(filepath);
|
|
139
|
-
}
|
|
140
|
-
resolveRawPath(testPath, rawPath) {
|
|
141
|
-
return rpc().resolveSnapshotRawPath(testPath, rawPath);
|
|
142
|
-
}
|
|
143
|
-
removeSnapshotFile(filepath) {
|
|
144
|
-
return rpc().removeSnapshotFile(filepath);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
function rpc() {
|
|
148
|
-
return globalThis.__vitest_worker__.rpc;
|
|
149
|
-
}
|
|
150
|
-
const browserHashMap = /* @__PURE__ */ new Map();
|
|
151
|
-
function createBrowserRunner(runnerClass, coverageModule) {
|
|
152
|
-
return class BrowserTestRunner extends runnerClass {
|
|
153
|
-
constructor(options) {
|
|
154
|
-
super(options.config);
|
|
155
|
-
__publicField(this, "config");
|
|
156
|
-
__publicField(this, "hashMap", browserHashMap);
|
|
157
|
-
__publicField(this, "onAfterRunTask", async (task) => {
|
|
158
|
-
var _a, _b, _c;
|
|
159
|
-
await ((_a = super.onAfterRunTask) == null ? void 0 : _a.call(this, task));
|
|
160
|
-
if (this.config.bail && ((_b = task.result) == null ? void 0 : _b.state) === "fail") {
|
|
161
|
-
const previousFailures = await rpc$1().getCountOfFailedTests();
|
|
162
|
-
const currentFailures = 1 + previousFailures;
|
|
163
|
-
if (currentFailures >= this.config.bail) {
|
|
164
|
-
rpc$1().onCancel("test-failure");
|
|
165
|
-
(_c = this.onCancel) == null ? void 0 : _c.call(this, "test-failure");
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
__publicField(this, "onAfterRunFiles", async (files) => {
|
|
170
|
-
var _a, _b;
|
|
171
|
-
await ((_a = super.onAfterRunFiles) == null ? void 0 : _a.call(this, files));
|
|
172
|
-
const coverage = await ((_b = coverageModule == null ? void 0 : coverageModule.takeCoverage) == null ? void 0 : _b.call(coverageModule));
|
|
173
|
-
if (coverage) {
|
|
174
|
-
await rpc$1().onAfterSuiteRun({
|
|
175
|
-
coverage,
|
|
176
|
-
transformMode: "web",
|
|
177
|
-
projectName: this.config.name
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
__publicField(this, "onCollected", async (files) => {
|
|
182
|
-
if (this.config.includeTaskLocation) {
|
|
183
|
-
try {
|
|
184
|
-
await updateFilesLocations(files);
|
|
185
|
-
} catch (_) {
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return rpc$1().onCollected(files);
|
|
189
|
-
});
|
|
190
|
-
__publicField(this, "onTaskUpdate", (task) => {
|
|
191
|
-
return rpc$1().onTaskUpdate(task);
|
|
192
|
-
});
|
|
193
|
-
__publicField(this, "importFile", async (filepath) => {
|
|
194
|
-
let [test, hash] = this.hashMap.get(filepath) ?? [false, ""];
|
|
195
|
-
if (hash === "") {
|
|
196
|
-
hash = Date.now().toString();
|
|
197
|
-
this.hashMap.set(filepath, [false, hash]);
|
|
198
|
-
}
|
|
199
|
-
const base = this.config.base || "/";
|
|
200
|
-
const prefix = `${base}${/^\w:/.test(filepath) ? "@fs/" : ""}`;
|
|
201
|
-
const query = `${test ? "browserv" : "v"}=${hash}`;
|
|
202
|
-
const importpath = `${prefix}${filepath}?${query}`.replace(/\/+/g, "/");
|
|
203
|
-
await __vitePreload(() => import(importpath), true ? __vite__mapDeps([]) : void 0);
|
|
204
|
-
});
|
|
205
|
-
this.config = options.config;
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
let cachedRunner = null;
|
|
210
|
-
async function initiateRunner() {
|
|
211
|
-
if (cachedRunner)
|
|
212
|
-
return cachedRunner;
|
|
213
|
-
const config = getConfig();
|
|
214
|
-
const [
|
|
215
|
-
{ VitestTestRunner, NodeBenchmarkRunner },
|
|
216
|
-
{ takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }
|
|
217
|
-
] = await Promise.all([
|
|
218
|
-
importId("vitest/runners"),
|
|
219
|
-
importId("vitest/browser")
|
|
220
|
-
]);
|
|
221
|
-
const runnerClass = config.mode === "test" ? VitestTestRunner : NodeBenchmarkRunner;
|
|
222
|
-
const BrowserRunner = createBrowserRunner(runnerClass, {
|
|
223
|
-
takeCoverage: () => takeCoverageInsideWorker(config.coverage, { executeId: importId })
|
|
224
|
-
});
|
|
225
|
-
if (!config.snapshotOptions.snapshotEnvironment)
|
|
226
|
-
config.snapshotOptions.snapshotEnvironment = new VitestBrowserSnapshotEnvironment();
|
|
227
|
-
const runner = new BrowserRunner({
|
|
228
|
-
config
|
|
229
|
-
});
|
|
230
|
-
const executor = { executeId: importId };
|
|
231
|
-
const [diffOptions] = await Promise.all([
|
|
232
|
-
loadDiffConfig(config, executor),
|
|
233
|
-
loadSnapshotSerializers(config, executor)
|
|
234
|
-
]);
|
|
235
|
-
runner.config.diffOptions = diffOptions;
|
|
236
|
-
cachedRunner = runner;
|
|
237
|
-
return runner;
|
|
238
|
-
}
|
|
239
|
-
async function updateFilesLocations(files) {
|
|
240
|
-
const { loadSourceMapUtils } = await importId("vitest/utils");
|
|
241
|
-
const { TraceMap, originalPositionFor } = await loadSourceMapUtils();
|
|
242
|
-
const promises = files.map(async (file) => {
|
|
243
|
-
const result = await rpc$1().getBrowserFileSourceMap(file.filepath);
|
|
244
|
-
if (!result)
|
|
245
|
-
return null;
|
|
246
|
-
const traceMap = new TraceMap(result);
|
|
247
|
-
function updateLocation(task) {
|
|
248
|
-
if (task.location) {
|
|
249
|
-
const { line, column } = originalPositionFor(traceMap, task.location);
|
|
250
|
-
if (line != null && column != null)
|
|
251
|
-
task.location = { line, column: task.each ? column : column + 1 };
|
|
252
|
-
}
|
|
253
|
-
if ("tasks" in task)
|
|
254
|
-
task.tasks.forEach(updateLocation);
|
|
255
|
-
}
|
|
256
|
-
file.tasks.forEach(updateLocation);
|
|
257
|
-
return null;
|
|
258
|
-
});
|
|
259
|
-
await Promise.all(promises);
|
|
260
|
-
}
|
|
261
|
-
function throwNotImplemented(name) {
|
|
262
|
-
throw new Error(`[vitest] ${name} is not implemented in browser environment yet.`);
|
|
263
|
-
}
|
|
264
|
-
class VitestBrowserClientMocker {
|
|
265
|
-
importActual() {
|
|
266
|
-
throwNotImplemented("importActual");
|
|
267
|
-
}
|
|
268
|
-
importMock() {
|
|
269
|
-
throwNotImplemented("importMock");
|
|
270
|
-
}
|
|
271
|
-
queueMock() {
|
|
272
|
-
throwNotImplemented("queueMock");
|
|
273
|
-
}
|
|
274
|
-
queueUnmock() {
|
|
275
|
-
throwNotImplemented("queueUnmock");
|
|
276
|
-
}
|
|
277
|
-
prepare() {
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
function on(event, listener) {
|
|
281
|
-
window.addEventListener(event, listener);
|
|
282
|
-
return () => window.removeEventListener(event, listener);
|
|
283
|
-
}
|
|
284
|
-
function serializeError(unhandledError) {
|
|
285
|
-
return {
|
|
286
|
-
...unhandledError,
|
|
287
|
-
name: unhandledError.name,
|
|
288
|
-
message: unhandledError.message,
|
|
289
|
-
stack: String(unhandledError.stack)
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
async function defaultErrorReport(type, unhandledError) {
|
|
293
|
-
const error = serializeError(unhandledError);
|
|
294
|
-
channel.postMessage({ type: "error", files: getBrowserState().runningFiles, error, errorType: type });
|
|
295
|
-
}
|
|
296
|
-
function catchWindowErrors(cb) {
|
|
297
|
-
let userErrorListenerCount = 0;
|
|
298
|
-
function throwUnhandlerError(e) {
|
|
299
|
-
if (userErrorListenerCount === 0 && e.error != null)
|
|
300
|
-
cb(e);
|
|
301
|
-
else
|
|
302
|
-
console.error(e.error);
|
|
303
|
-
}
|
|
304
|
-
const addEventListener = window.addEventListener.bind(window);
|
|
305
|
-
const removeEventListener = window.removeEventListener.bind(window);
|
|
306
|
-
window.addEventListener("error", throwUnhandlerError);
|
|
307
|
-
window.addEventListener = function(...args) {
|
|
308
|
-
if (args[0] === "error")
|
|
309
|
-
userErrorListenerCount++;
|
|
310
|
-
return addEventListener.apply(this, args);
|
|
311
|
-
};
|
|
312
|
-
window.removeEventListener = function(...args) {
|
|
313
|
-
if (args[0] === "error" && userErrorListenerCount)
|
|
314
|
-
userErrorListenerCount--;
|
|
315
|
-
return removeEventListener.apply(this, args);
|
|
316
|
-
};
|
|
317
|
-
return function clearErrorHandlers() {
|
|
318
|
-
window.removeEventListener("error", throwUnhandlerError);
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
function registerUnhandledErrors() {
|
|
322
|
-
const stopErrorHandler2 = catchWindowErrors((e) => defaultErrorReport("Error", e.error));
|
|
323
|
-
const stopRejectionHandler = on("unhandledrejection", (e) => defaultErrorReport("Unhandled Rejection", e.reason));
|
|
324
|
-
return () => {
|
|
325
|
-
stopErrorHandler2();
|
|
326
|
-
stopRejectionHandler();
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
function registerUnexpectedErrors(rpc2) {
|
|
330
|
-
catchWindowErrors((event) => reportUnexpectedError(rpc2, "Error", event.error));
|
|
331
|
-
on("unhandledrejection", (event) => reportUnexpectedError(rpc2, "Unhandled Rejection", event.reason));
|
|
332
|
-
}
|
|
333
|
-
async function reportUnexpectedError(rpc2, type, error) {
|
|
334
|
-
const { processError } = await importId("vitest/browser");
|
|
335
|
-
const processedError = processError(error);
|
|
336
|
-
await rpc2.onUnhandledError(processedError, type);
|
|
337
|
-
}
|
|
338
|
-
const stopErrorHandler = registerUnhandledErrors();
|
|
339
|
-
const url = new URL(location.href);
|
|
340
|
-
const reloadStart = url.searchParams.get("__reloadStart");
|
|
341
|
-
function debug(...args) {
|
|
342
|
-
const debug2 = getConfig().env.VITEST_BROWSER_DEBUG;
|
|
343
|
-
if (debug2 && debug2 !== "false")
|
|
344
|
-
client.rpc.debug(...args.map(String));
|
|
345
|
-
}
|
|
346
|
-
async function tryCall(fn) {
|
|
347
|
-
try {
|
|
348
|
-
return await fn();
|
|
349
|
-
} catch (err) {
|
|
350
|
-
const now = Date.now();
|
|
351
|
-
const canTry = !reloadStart || now - Number(reloadStart) < 3e4;
|
|
352
|
-
debug("failed to resolve runner", err == null ? void 0 : err.message, "trying again:", canTry, "time is", now, "reloadStart is", reloadStart);
|
|
353
|
-
if (!canTry) {
|
|
354
|
-
const error = serializeError(new Error("Vitest failed to load its runner after 30 seconds."));
|
|
355
|
-
error.cause = serializeError(err);
|
|
356
|
-
await client.rpc.onUnhandledError(error, "Preload Error");
|
|
357
|
-
return false;
|
|
358
|
-
}
|
|
359
|
-
if (!reloadStart) {
|
|
360
|
-
const newUrl = new URL(location.href);
|
|
361
|
-
newUrl.searchParams.set("__reloadStart", now.toString());
|
|
362
|
-
debug("set the new url because reload start is not set to", newUrl);
|
|
363
|
-
location.href = newUrl.toString();
|
|
364
|
-
} else {
|
|
365
|
-
debug("reload the iframe because reload start is set", location.href);
|
|
366
|
-
location.reload();
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
async function prepareTestEnvironment(files) {
|
|
371
|
-
debug("trying to resolve runner", `${reloadStart}`);
|
|
372
|
-
const config = getConfig();
|
|
373
|
-
const viteClientPath = `${config.base || "/"}@vite/client`;
|
|
374
|
-
await __vitePreload(() => import(viteClientPath), true ? __vite__mapDeps([]) : void 0);
|
|
375
|
-
const rpc2 = await loadSafeRpc(client);
|
|
376
|
-
stopErrorHandler();
|
|
377
|
-
registerUnexpectedErrors(rpc2);
|
|
378
|
-
const providedContext = await client.rpc.getProvidedContext();
|
|
379
|
-
const state = {
|
|
380
|
-
ctx: {
|
|
381
|
-
pool: "browser",
|
|
382
|
-
worker: "./browser.js",
|
|
383
|
-
workerId: 1,
|
|
384
|
-
config,
|
|
385
|
-
projectName: config.name,
|
|
386
|
-
files,
|
|
387
|
-
environment: {
|
|
388
|
-
name: "browser",
|
|
389
|
-
options: null
|
|
390
|
-
},
|
|
391
|
-
providedContext,
|
|
392
|
-
invalidates: []
|
|
393
|
-
},
|
|
394
|
-
onCancel,
|
|
395
|
-
mockMap: /* @__PURE__ */ new Map(),
|
|
396
|
-
config,
|
|
397
|
-
environment: {
|
|
398
|
-
name: "browser",
|
|
399
|
-
transformMode: "web",
|
|
400
|
-
setup() {
|
|
401
|
-
throw new Error("Not called in the browser");
|
|
402
|
-
}
|
|
403
|
-
},
|
|
404
|
-
moduleCache: getBrowserState().moduleCache,
|
|
405
|
-
rpc: rpc2,
|
|
406
|
-
durations: {
|
|
407
|
-
environment: 0,
|
|
408
|
-
prepare: 0
|
|
409
|
-
},
|
|
410
|
-
providedContext
|
|
411
|
-
};
|
|
412
|
-
globalThis.__vitest_browser__ = true;
|
|
413
|
-
globalThis.__vitest_worker__ = state;
|
|
414
|
-
globalThis.__vitest_mocker__ = new VitestBrowserClientMocker();
|
|
415
|
-
await setupConsoleLogSpy();
|
|
416
|
-
setupDialogsSpy();
|
|
417
|
-
const { startTests, setupCommonEnv } = await importId("vitest/browser");
|
|
418
|
-
const version = url.searchParams.get("browserv") || "0";
|
|
419
|
-
files.forEach((filename) => {
|
|
420
|
-
const currentVersion = browserHashMap.get(filename);
|
|
421
|
-
if (!currentVersion || currentVersion[1] !== version)
|
|
422
|
-
browserHashMap.set(filename, [true, version]);
|
|
423
|
-
});
|
|
424
|
-
const runner = await initiateRunner();
|
|
425
|
-
onCancel.then((reason) => {
|
|
426
|
-
var _a;
|
|
427
|
-
(_a = runner.onCancel) == null ? void 0 : _a.call(runner, reason);
|
|
428
|
-
});
|
|
429
|
-
return {
|
|
430
|
-
runner,
|
|
431
|
-
config,
|
|
432
|
-
state,
|
|
433
|
-
setupCommonEnv,
|
|
434
|
-
startTests
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
function done(files) {
|
|
438
|
-
channel.postMessage({ type: "done", filenames: files });
|
|
439
|
-
}
|
|
440
|
-
async function runTests(files) {
|
|
441
|
-
await client.waitForConnection();
|
|
442
|
-
debug("client is connected to ws server");
|
|
443
|
-
let preparedData;
|
|
444
|
-
try {
|
|
445
|
-
preparedData = await tryCall(() => prepareTestEnvironment(files));
|
|
446
|
-
} catch (error) {
|
|
447
|
-
debug("data cannot be loaded because it threw an error");
|
|
448
|
-
await client.rpc.onUnhandledError(serializeError(error), "Preload Error");
|
|
449
|
-
done(files);
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
if (preparedData === false) {
|
|
453
|
-
debug("data cannot be loaded, finishing the test");
|
|
454
|
-
done(files);
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
if (!preparedData) {
|
|
458
|
-
debug("page is reloading, waiting for the next run");
|
|
459
|
-
return;
|
|
460
|
-
}
|
|
461
|
-
debug("runner resolved successfully");
|
|
462
|
-
const { config, runner, state, setupCommonEnv, startTests } = preparedData;
|
|
463
|
-
try {
|
|
464
|
-
await setupCommonEnv(config);
|
|
465
|
-
for (const file of files)
|
|
466
|
-
await startTests([file], runner);
|
|
467
|
-
} finally {
|
|
468
|
-
state.environmentTeardownRun = true;
|
|
469
|
-
debug("finished running tests");
|
|
470
|
-
done(files);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
window.__vitest_browser_runner__.runTests = runTests;
|