@mutineerjs/mutineer 0.1.0

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.
Files changed (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/admin/assets/index-B7nXq-e7.js +32 -0
  4. package/dist/admin/assets/index-B7nXq-e7.js.map +1 -0
  5. package/dist/admin/assets/index-BDQLkBUE.js +32 -0
  6. package/dist/admin/assets/index-BDQLkBUE.js.map +1 -0
  7. package/dist/admin/assets/index-DVkP-Tc7.css +1 -0
  8. package/dist/admin/index.html +13 -0
  9. package/dist/admin/server/admin.d.ts +6 -0
  10. package/dist/admin/server/admin.js +234 -0
  11. package/dist/bin/mutate-vitest.d.ts +2 -0
  12. package/dist/bin/mutate-vitest.js +90 -0
  13. package/dist/bin/mutineer.d.ts +2 -0
  14. package/dist/bin/mutineer.js +46 -0
  15. package/dist/core/__tests__/module.spec.d.ts +1 -0
  16. package/dist/core/__tests__/module.spec.js +6 -0
  17. package/dist/core/module.d.ts +11 -0
  18. package/dist/core/module.js +14 -0
  19. package/dist/core/sfc.d.ts +12 -0
  20. package/dist/core/sfc.js +54 -0
  21. package/dist/core/types.d.ts +6 -0
  22. package/dist/core/types.js +1 -0
  23. package/dist/core/variant-utils.d.ts +30 -0
  24. package/dist/core/variant-utils.js +54 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.js +3 -0
  27. package/dist/mutators/__tests__/registry.spec.d.ts +1 -0
  28. package/dist/mutators/__tests__/registry.spec.js +43 -0
  29. package/dist/mutators/__tests__/utils.spec.d.ts +1 -0
  30. package/dist/mutators/__tests__/utils.spec.js +15 -0
  31. package/dist/mutators/registry.d.ts +37 -0
  32. package/dist/mutators/registry.js +101 -0
  33. package/dist/mutators/types.d.ts +39 -0
  34. package/dist/mutators/types.js +7 -0
  35. package/dist/mutators/utils.d.ts +37 -0
  36. package/dist/mutators/utils.js +151 -0
  37. package/dist/plugin/viteMutate.d.ts +15 -0
  38. package/dist/plugin/viteMutate.js +52 -0
  39. package/dist/plugin/vitest.setup.d.ts +47 -0
  40. package/dist/plugin/vitest.setup.js +118 -0
  41. package/dist/plugin/withVitest.d.ts +13 -0
  42. package/dist/plugin/withVitest.js +30 -0
  43. package/dist/runner/__tests__/discover.spec.d.ts +1 -0
  44. package/dist/runner/__tests__/discover.spec.js +59 -0
  45. package/dist/runner/__tests__/orchestrator.spec.d.ts +1 -0
  46. package/dist/runner/__tests__/orchestrator.spec.js +55 -0
  47. package/dist/runner/adapters/__tests__/jest.spec.d.ts +1 -0
  48. package/dist/runner/adapters/__tests__/jest.spec.js +88 -0
  49. package/dist/runner/adapters/__tests__/vitest-worker-runtime.spec.d.ts +1 -0
  50. package/dist/runner/adapters/__tests__/vitest-worker-runtime.spec.js +59 -0
  51. package/dist/runner/adapters/__tests__/vitest.spec.d.ts +1 -0
  52. package/dist/runner/adapters/__tests__/vitest.spec.js +118 -0
  53. package/dist/runner/adapters/index.d.ts +10 -0
  54. package/dist/runner/adapters/index.js +9 -0
  55. package/dist/runner/adapters/jest/__tests__/index.spec.d.ts +1 -0
  56. package/dist/runner/adapters/jest/__tests__/index.spec.js +88 -0
  57. package/dist/runner/adapters/jest/index.d.ts +24 -0
  58. package/dist/runner/adapters/jest/index.js +216 -0
  59. package/dist/runner/adapters/jest/worker-runtime.d.ts +37 -0
  60. package/dist/runner/adapters/jest/worker-runtime.js +171 -0
  61. package/dist/runner/adapters/jest-worker-runtime.d.ts +37 -0
  62. package/dist/runner/adapters/jest-worker-runtime.js +171 -0
  63. package/dist/runner/adapters/jest.d.ts +24 -0
  64. package/dist/runner/adapters/jest.js +216 -0
  65. package/dist/runner/adapters/types.d.ts +89 -0
  66. package/dist/runner/adapters/types.js +8 -0
  67. package/dist/runner/adapters/vitest/__tests__/index.spec.d.ts +1 -0
  68. package/dist/runner/adapters/vitest/__tests__/index.spec.js +118 -0
  69. package/dist/runner/adapters/vitest/__tests__/worker-runtime.spec.d.ts +1 -0
  70. package/dist/runner/adapters/vitest/__tests__/worker-runtime.spec.js +59 -0
  71. package/dist/runner/adapters/vitest/index.d.ts +33 -0
  72. package/dist/runner/adapters/vitest/index.js +267 -0
  73. package/dist/runner/adapters/vitest/worker-runtime.d.ts +25 -0
  74. package/dist/runner/adapters/vitest/worker-runtime.js +118 -0
  75. package/dist/runner/adapters/vitest-worker-runtime.d.ts +25 -0
  76. package/dist/runner/adapters/vitest-worker-runtime.js +118 -0
  77. package/dist/runner/adapters/vitest.d.ts +33 -0
  78. package/dist/runner/adapters/vitest.js +267 -0
  79. package/dist/runner/args.d.ts +50 -0
  80. package/dist/runner/args.js +123 -0
  81. package/dist/runner/cache.d.ts +38 -0
  82. package/dist/runner/cache.js +118 -0
  83. package/dist/runner/changed.d.ts +22 -0
  84. package/dist/runner/changed.js +210 -0
  85. package/dist/runner/cleanup.d.ts +4 -0
  86. package/dist/runner/cleanup.js +21 -0
  87. package/dist/runner/config.d.ts +13 -0
  88. package/dist/runner/config.js +94 -0
  89. package/dist/runner/discover.d.ts +7 -0
  90. package/dist/runner/discover.js +258 -0
  91. package/dist/runner/jest/__tests__/adapter.spec.d.ts +1 -0
  92. package/dist/runner/jest/__tests__/adapter.spec.js +110 -0
  93. package/dist/runner/jest/adapter.d.ts +24 -0
  94. package/dist/runner/jest/adapter.js +191 -0
  95. package/dist/runner/jest/index.d.ts +8 -0
  96. package/dist/runner/jest/index.js +7 -0
  97. package/dist/runner/jest/pool.d.ts +47 -0
  98. package/dist/runner/jest/pool.js +307 -0
  99. package/dist/runner/jest/resolver.cjs +61 -0
  100. package/dist/runner/jest/resolver.d.cts +11 -0
  101. package/dist/runner/jest/worker-runtime.d.ts +30 -0
  102. package/dist/runner/jest/worker-runtime.js +98 -0
  103. package/dist/runner/jest/worker.d.mts +1 -0
  104. package/dist/runner/jest/worker.mjs +55 -0
  105. package/dist/runner/orchestrator.d.ts +13 -0
  106. package/dist/runner/orchestrator.js +387 -0
  107. package/dist/runner/pool/__tests__/index.spec.d.ts +1 -0
  108. package/dist/runner/pool/__tests__/index.spec.js +83 -0
  109. package/dist/runner/pool/__tests__/pool-plugin.spec.d.ts +1 -0
  110. package/dist/runner/pool/__tests__/pool-plugin.spec.js +59 -0
  111. package/dist/runner/pool/__tests__/pool-redirect-loader.spec.d.ts +1 -0
  112. package/dist/runner/pool/__tests__/pool-redirect-loader.spec.js +78 -0
  113. package/dist/runner/pool/index.d.ts +8 -0
  114. package/dist/runner/pool/index.js +9 -0
  115. package/dist/runner/pool/jest/pool.d.ts +52 -0
  116. package/dist/runner/pool/jest/pool.js +309 -0
  117. package/dist/runner/pool/jest/worker.d.mts +1 -0
  118. package/dist/runner/pool/jest/worker.mjs +60 -0
  119. package/dist/runner/pool/jest-pool.d.ts +52 -0
  120. package/dist/runner/pool/jest-pool.js +309 -0
  121. package/dist/runner/pool/jest-worker.d.mts +1 -0
  122. package/dist/runner/pool/jest-worker.mjs +60 -0
  123. package/dist/runner/pool/plugin.d.ts +18 -0
  124. package/dist/runner/pool/plugin.js +60 -0
  125. package/dist/runner/pool/pool-plugin.d.ts +18 -0
  126. package/dist/runner/pool/pool-plugin.js +60 -0
  127. package/dist/runner/pool/pool-redirect-loader.d.ts +19 -0
  128. package/dist/runner/pool/pool-redirect-loader.js +116 -0
  129. package/dist/runner/pool/pool-redirect-loader.mjs +146 -0
  130. package/dist/runner/pool/redirect-loader.d.ts +19 -0
  131. package/dist/runner/pool/redirect-loader.js +116 -0
  132. package/dist/runner/pool/vitest/pool.d.ts +70 -0
  133. package/dist/runner/pool/vitest/pool.js +376 -0
  134. package/dist/runner/pool/vitest/worker.d.mts +15 -0
  135. package/dist/runner/pool/vitest/worker.mjs +96 -0
  136. package/dist/runner/pool/vitest-worker.d.mts +15 -0
  137. package/dist/runner/pool/vitest-worker.mjs +96 -0
  138. package/dist/runner/shared/index.d.ts +9 -0
  139. package/dist/runner/shared/index.js +8 -0
  140. package/dist/runner/shared/mutant-paths.d.ts +15 -0
  141. package/dist/runner/shared/mutant-paths.js +30 -0
  142. package/dist/runner/shared/redirect-state.d.ts +45 -0
  143. package/dist/runner/shared/redirect-state.js +50 -0
  144. package/dist/runner/shared-module-redirect.d.ts +56 -0
  145. package/dist/runner/shared-module-redirect.js +84 -0
  146. package/dist/runner/types.d.ts +88 -0
  147. package/dist/runner/types.js +8 -0
  148. package/dist/runner/variants.d.ts +21 -0
  149. package/dist/runner/variants.js +66 -0
  150. package/dist/runner/vitest/__tests__/adapter.spec.d.ts +1 -0
  151. package/dist/runner/vitest/__tests__/adapter.spec.js +131 -0
  152. package/dist/runner/vitest/__tests__/plugin.spec.d.ts +1 -0
  153. package/dist/runner/vitest/__tests__/plugin.spec.js +65 -0
  154. package/dist/runner/vitest/__tests__/pool.spec.d.ts +1 -0
  155. package/dist/runner/vitest/__tests__/pool.spec.js +106 -0
  156. package/dist/runner/vitest/__tests__/redirect-loader.spec.d.ts +1 -0
  157. package/dist/runner/vitest/__tests__/redirect-loader.spec.js +87 -0
  158. package/dist/runner/vitest/__tests__/worker-runtime.spec.d.ts +1 -0
  159. package/dist/runner/vitest/__tests__/worker-runtime.spec.js +75 -0
  160. package/dist/runner/vitest/adapter.d.ts +33 -0
  161. package/dist/runner/vitest/adapter.js +277 -0
  162. package/dist/runner/vitest/index.d.ts +11 -0
  163. package/dist/runner/vitest/index.js +10 -0
  164. package/dist/runner/vitest/plugin.d.ts +12 -0
  165. package/dist/runner/vitest/plugin.js +49 -0
  166. package/dist/runner/vitest/pool.d.ts +65 -0
  167. package/dist/runner/vitest/pool.js +376 -0
  168. package/dist/runner/vitest/redirect-loader.d.ts +30 -0
  169. package/dist/runner/vitest/redirect-loader.js +123 -0
  170. package/dist/runner/vitest/worker-runtime.d.ts +16 -0
  171. package/dist/runner/vitest/worker-runtime.js +105 -0
  172. package/dist/runner/vitest/worker.d.mts +15 -0
  173. package/dist/runner/vitest/worker.mjs +92 -0
  174. package/dist/types/api.d.ts +20 -0
  175. package/dist/types/api.js +1 -0
  176. package/dist/types/config.d.ts +48 -0
  177. package/dist/types/config.js +1 -0
  178. package/dist/types/index.d.ts +13 -0
  179. package/dist/types/index.js +11 -0
  180. package/dist/types/mutant.d.ts +44 -0
  181. package/dist/types/mutant.js +7 -0
  182. package/dist/utils/PoolSpinner.d.ts +5 -0
  183. package/dist/utils/PoolSpinner.js +6 -0
  184. package/dist/utils/ProgressBar.d.ts +11 -0
  185. package/dist/utils/ProgressBar.js +9 -0
  186. package/dist/utils/__tests__/coverage.spec.d.ts +1 -0
  187. package/dist/utils/__tests__/coverage.spec.js +91 -0
  188. package/dist/utils/__tests__/progress.spec.d.ts +1 -0
  189. package/dist/utils/__tests__/progress.spec.js +50 -0
  190. package/dist/utils/__tests__/summary.spec.d.ts +1 -0
  191. package/dist/utils/__tests__/summary.spec.js +54 -0
  192. package/dist/utils/coverage.d.ts +57 -0
  193. package/dist/utils/coverage.js +204 -0
  194. package/dist/utils/logger.d.ts +8 -0
  195. package/dist/utils/logger.js +18 -0
  196. package/dist/utils/progress.d.ts +25 -0
  197. package/dist/utils/progress.js +90 -0
  198. package/dist/utils/summary.d.ts +12 -0
  199. package/dist/utils/summary.js +107 -0
  200. package/package.json +59 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Billy Jones
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,218 @@
1
+ ```
2
+ _ _
3
+ | | (_)
4
+ _ __ ___ _ _| |_ _ _ __ ___ ___ _ __
5
+ | '_ ` _ \| | | | __| | '_ \ / _ \/ _ \ '__|
6
+ | | | | | | |_| | |_| | | | | __/ __/ |
7
+ |_| |_| |_|\__,_|\__|_|_| |_|\___|\___|_|
8
+
9
+ === ~> !== · && ~> || · + ~> -
10
+ ```
11
+
12
+ Mutineer is a fast, targeted mutation testing framework for JavaScript and TypeScript. Mutineer introduces small code changes (mutations) into your source files and runs your existing tests to see if they catch the defect. If a test fails, the mutant is "killed" -- meaning your tests are doing their job. If all tests pass, the mutant "escaped" -- revealing a gap in your test coverage.
13
+
14
+ Built for **Vitest** with first-class **Jest** support. Other test runners can be added via the adapter interface.
15
+
16
+ **Author**: [Billy Jones](https://www.linkedin.com/in/billyjonesy/)
17
+
18
+ ## How It Works
19
+
20
+ 1. **Baseline** -- runs your test suite to make sure everything passes before mutating
21
+ 2. **Mutate** -- applies AST-safe operator replacements to your source files (not your tests)
22
+ 3. **Test** -- re-runs only the tests that import the mutated file, using a fast file-swap mechanism
23
+ 4. **Report** -- prints a summary with kill rate, escaped mutants, and per-file breakdowns
24
+
25
+ Mutations are applied using Babel AST analysis, so operators inside strings and comments are never touched. Mutated code is injected at runtime via Vite plugins (Vitest) or custom resolvers (Jest) -- no files on disk are modified.
26
+
27
+ ## Supported Mutations (WIP)
28
+
29
+ | Category | Mutator | Transformation |
30
+ | ---------- | --------------- | ------------------ |
31
+ | Equality | `flipStrictEQ` | `===` → `!==` |
32
+ | | `flipStrictNEQ` | `!==` → `===` |
33
+ | | `flipEQ` | `==` → `!=` |
34
+ | | `flipNEQ` | `!=` → `==` |
35
+ | Boundary | `relaxLE` | `<=` &rarr; `<` |
36
+ | | `relaxGE` | `>=` &rarr; `>` |
37
+ | | `tightenLT` | `<` &rarr; `<=` |
38
+ | | `tightenGT` | `>` &rarr; `>=` |
39
+ | Logical | `andToOr` | `&&` &rarr; `\|\|` |
40
+ | | `orToAnd` | `\|\|` &rarr; `&&` |
41
+ | | `nullishToOr` | `??` &rarr; `\|\|` |
42
+ | Arithmetic | `addToSub` | `+` &rarr; `-` |
43
+ | | `subToAdd` | `-` &rarr; `+` |
44
+ | | `mulToDiv` | `*` &rarr; `/` |
45
+ | | `divToMul` | `/` &rarr; `*` |
46
+ | | `modToMul` | `%` &rarr; `*` |
47
+ | | `powerToMul` | `**` &rarr; `*` |
48
+
49
+ ## Installation
50
+
51
+ Mutineer is not yet published to npm. Install it locally by linking:
52
+
53
+ ```bash
54
+ # Clone and build
55
+ git clone <repo-url> mutineer
56
+ cd mutineer
57
+ npm install
58
+ npm run build
59
+
60
+ # Link globally
61
+ npm link
62
+
63
+ # In your project directory
64
+ npm link mutineer
65
+ ```
66
+
67
+ ## Usage
68
+
69
+ ### Commands
70
+
71
+ | Command | Description |
72
+ | ---------------- | ---------------------------------------------------- |
73
+ | `mutineer init` | Create a `mutineer.config.ts` with minimal defaults |
74
+ | `mutineer run` | Run mutation testing |
75
+ | `mutineer clean` | Remove leftover `__mutineer__` temp directories |
76
+
77
+ ### Quick Start
78
+
79
+ ```bash
80
+ # Scaffold a config file
81
+ mutineer init
82
+
83
+ # Run mutation testing
84
+ mutineer run
85
+ ```
86
+
87
+ ### CLI Options (for `mutineer run`)
88
+
89
+ | Flag | Description | Default |
90
+ | ------------------------ | ------------------------------------------ | ------------- |
91
+ | `--runner <type>` | Test runner: `vitest` or `jest` | `vitest` |
92
+ | `--config`, `-c` | Path to config file | auto-detected |
93
+ | `--concurrency <n>` | Parallel workers (1-4) | CPUs - 1 |
94
+ | `--changed` | Only mutate files changed vs base branch | -- |
95
+ | `--changed-with-deps` | Include dependents of changed files | -- |
96
+ | `--only-covered-lines` | Skip mutations on uncovered lines | -- |
97
+ | `--per-test-coverage` | Run only tests that cover the mutated line | -- |
98
+ | `--coverage-file <path>` | Path to Istanbul coverage JSON | auto-detected |
99
+ | `--min-kill-percent <n>` | Fail if kill rate is below threshold | -- |
100
+ | `--progress <mode>` | Display mode: `bar`, `list`, or `quiet` | `bar` |
101
+
102
+ ### Examples
103
+
104
+ Run mutations on only the files you changed:
105
+
106
+ ```bash
107
+ mutineer run --changed
108
+ ```
109
+
110
+ Run with Jest and a minimum kill rate:
111
+
112
+ ```bash
113
+ mutineer run --runner jest --min-kill-percent 80
114
+ ```
115
+
116
+ Focus on covered code with 2 parallel workers:
117
+
118
+ ```bash
119
+ mutineer run --only-covered-lines --concurrency 2
120
+ ```
121
+
122
+ ## Configuration
123
+
124
+ Create a `mutineer.config.ts` (or `.js` / `.mjs`) in your project root with `mutineer init`, or manually:
125
+
126
+ ```typescript
127
+ import { defineMutineerConfig } from 'mutineer'
128
+
129
+ export default defineMutineerConfig({
130
+ source: 'src',
131
+ runner: 'vitest',
132
+ vitestConfig: 'vitest.config.ts',
133
+ minKillPercent: 80,
134
+ onlyCoveredLines: true,
135
+ })
136
+ ```
137
+
138
+ ### Config Options
139
+
140
+ | Option | Type | Description |
141
+ | ------------------- | ---------------------------------- | ------------------------------------------------ |
142
+ | `source` | `string \| string[]` | Glob patterns for source files to mutate |
143
+ | `targets` | `MutateTarget[]` | Explicit list of files to mutate |
144
+ | `runner` | `'vitest' \| 'jest'` | Test runner to use |
145
+ | `vitestConfig` | `string` | Path to vitest config |
146
+ | `jestConfig` | `string` | Path to jest config |
147
+ | `include` | `string[]` | Only run these mutators |
148
+ | `exclude` | `string[]` | Skip these mutators |
149
+ | `excludePaths` | `string[]` | Glob patterns for paths to skip |
150
+ | `maxMutantsPerFile` | `number` | Cap mutations per file |
151
+ | `minKillPercent` | `number` | Fail if kill rate is below this |
152
+ | `onlyCoveredLines` | `boolean` | Only mutate lines covered by tests |
153
+ | `perTestCoverage` | `boolean` | Use per-test coverage to select tests |
154
+ | `baseRef` | `string` | Git ref for `--changed` (default: `origin/main`) |
155
+ | `testPatterns` | `string[]` | Globs for test file discovery |
156
+ | `extensions` | `string[]` | File extensions to consider |
157
+
158
+ ## File Support
159
+
160
+ - TypeScript and JavaScript modules (`.ts`, `.js`, `.tsx`, `.jsx`)
161
+ - Vue Single File Components (`.vue` with `<script setup>`)
162
+
163
+ ## Extending: Adding a New Test Runner
164
+
165
+ Mutineer uses an adapter pattern to support different test runners. To add a new one, implement the `TestRunnerAdapter` interface:
166
+
167
+ ```typescript
168
+ import type {
169
+ TestRunnerAdapter,
170
+ TestRunnerAdapterOptions,
171
+ BaselineOptions,
172
+ MutantPayload,
173
+ MutantRunResult,
174
+ } from 'mutineer'
175
+
176
+ export function createMyRunnerAdapter(
177
+ options: TestRunnerAdapterOptions,
178
+ ): TestRunnerAdapter {
179
+ return {
180
+ name: 'my-runner',
181
+
182
+ async init(concurrencyOverride?: number) {
183
+ // Start worker pool, set up file-swap mechanism, etc.
184
+ },
185
+
186
+ async runBaseline(tests: readonly string[], opts: BaselineOptions) {
187
+ // Run all tests without mutations.
188
+ // Return true if they pass, false otherwise.
189
+ // If opts.collectCoverage is true, write Istanbul-format JSON.
190
+ },
191
+
192
+ async runMutant(mutant: MutantPayload, tests: readonly string[]) {
193
+ // Swap in the mutated code and run the relevant tests.
194
+ // Return { status: 'killed' | 'escaped' | 'timeout' | 'error', durationMs }
195
+ },
196
+
197
+ async shutdown() {
198
+ // Tear down workers and clean up resources.
199
+ },
200
+
201
+ hasCoverageProvider() {
202
+ // Return true if the runner has coverage support available.
203
+ return false
204
+ },
205
+
206
+ async detectCoverageConfig() {
207
+ // Return { perTestEnabled, coverageEnabled } from runner config.
208
+ return { perTestEnabled: false, coverageEnabled: false }
209
+ },
210
+ }
211
+ }
212
+ ```
213
+
214
+ The key requirement is the **file-swap mechanism** -- the adapter needs a way to intercept module resolution so the mutated source code is loaded instead of the original file on disk. See the Vitest adapter (Vite plugin + ESM loader) and Jest adapter (custom resolver) for working reference implementations in `src/runner/vitest/` and `src/runner/jest/`.
215
+
216
+ ## License
217
+
218
+ MIT
@@ -0,0 +1,32 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/**
2
+ * @vue/shared v3.5.25
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/function Fs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const G={},ot=[],Fe=()=>{},In=()=>!1,Xt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),$s=e=>e.startsWith("onUpdate:"),re=Object.assign,Ls=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Ur=Object.prototype.hasOwnProperty,N=(e,t)=>Ur.call(e,t),R=Array.isArray,ct=e=>Zt(e)==="[object Map]",Fn=e=>Zt(e)==="[object Set]",I=e=>typeof e=="function",ee=e=>typeof e=="string",Ye=e=>typeof e=="symbol",z=e=>e!==null&&typeof e=="object",$n=e=>(z(e)||I(e))&&I(e.then)&&I(e.catch),Ln=Object.prototype.toString,Zt=e=>Ln.call(e),Kr=e=>Zt(e).slice(8,-1),Dn=e=>Zt(e)==="[object Object]",Ds=e=>ee(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,xt=Fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qt=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},kr=/-\w/g,Ge=Qt(e=>e.replace(kr,t=>t.slice(1).toUpperCase())),Br=/\B([A-Z])/g,rt=Qt(e=>e.replace(Br,"-$1").toLowerCase()),jn=Qt(e=>e.charAt(0).toUpperCase()+e.slice(1)),us=Qt(e=>e?`on${jn(e)}`:""),qe=(e,t)=>!Object.is(e,t),as=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Hn=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Vr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let nn;const es=()=>nn||(nn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ts(e){if(R(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=ee(n)?Jr(n):ts(n);if(r)for(const i in r)t[i]=r[i]}return t}else if(ee(e)||z(e))return e}const Wr=/;(?![^(]*\))/g,qr=/:([^]+)/,Gr=/\/\*[^]*?\*\//g;function Jr(e){const t={};return e.replace(Gr,"").split(Wr).forEach(s=>{if(s){const n=s.split(qr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ss(e){let t="";if(ee(e))t=e;else if(R(e))for(let s=0;s<e.length;s++){const n=ss(e[s]);n&&(t+=n+" ")}else if(z(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Yr="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",zr=Fs(Yr);function Nn(e){return!!e||e===""}const Un=e=>!!(e&&e.__v_isRef===!0),Q=e=>ee(e)?e:e==null?"":R(e)||z(e)&&(e.toString===Ln||!I(e.toString))?Un(e)?Q(e.value):JSON.stringify(e,Kn,2):String(e),Kn=(e,t)=>Un(t)?Kn(e,t.value):ct(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[ds(n,i)+" =>"]=r,s),{})}:Fn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>ds(s))}:Ye(t)?ds(t):z(t)&&!R(t)&&!Dn(t)?String(t):t,ds=(e,t="")=>{var s;return Ye(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
6
+ * @vue/reactivity v3.5.25
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let he;class Xr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=he,!t&&he&&(this.index=(he.scopes||(he.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=he;try{return he=this,t()}finally{he=s}}}on(){++this._on===1&&(this.prevScope=he,he=this)}off(){this._on>0&&--this._on===0&&(he=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Zr(){return he}let q;const hs=new WeakSet;class kn{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,he&&he.active&&he.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,hs.has(this)&&(hs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Vn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,rn(this),Wn(this);const t=q,s=we;q=this,we=!0;try{return this.fn()}finally{qn(this),q=t,we=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ns(t);this.deps=this.depsTail=void 0,rn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?hs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){ws(this)&&this.run()}get dirty(){return ws(this)}}let Bn=0,vt,yt;function Vn(e,t=!1){if(e.flags|=8,t){e.next=yt,yt=e;return}e.next=vt,vt=e}function js(){Bn++}function Hs(){if(--Bn>0)return;if(yt){let t=yt;for(yt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;vt;){let t=vt;for(vt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Wn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function qn(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Ns(n),Qr(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function ws(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Gn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Gn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ot)||(e.globalVersion=Ot,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ws(e))))return;e.flags|=2;const t=e.dep,s=q,n=we;q=e,we=!0;try{Wn(e);const r=e.fn(e._value);(t.version===0||qe(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{q=s,we=n,qn(e),e.flags&=-3}}function Ns(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Ns(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Qr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let we=!0;const Jn=[];function He(){Jn.push(we),we=!1}function Ne(){const e=Jn.pop();we=e===void 0?!0:e}function rn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=q;q=void 0;try{t()}finally{q=s}}}let Ot=0;class ei{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Us{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!q||!we||q===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==q)s=this.activeLink=new ei(q,this),q.deps?(s.prevDep=q.depsTail,q.depsTail.nextDep=s,q.depsTail=s):q.deps=q.depsTail=s,Yn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=q.depsTail,s.nextDep=void 0,q.depsTail.nextDep=s,q.depsTail=s,q.deps===s&&(q.deps=n)}return s}trigger(t){this.version++,Ot++,this.notify(t)}notify(t){js();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Hs()}}}function Yn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Yn(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ss=new WeakMap,st=Symbol(""),Cs=Symbol(""),At=Symbol("");function se(e,t,s){if(we&&q){let n=Ss.get(e);n||Ss.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Us),r.map=n,r.key=s),r.track()}}function je(e,t,s,n,r,i){const l=Ss.get(e);if(!l){Ot++;return}const o=f=>{f&&f.trigger()};if(js(),t==="clear")l.forEach(o);else{const f=R(e),d=f&&Ds(s);if(f&&s==="length"){const a=Number(n);l.forEach((p,w)=>{(w==="length"||w===At||!Ye(w)&&w>=a)&&o(p)})}else switch((s!==void 0||l.has(void 0))&&o(l.get(s)),d&&o(l.get(At)),t){case"add":f?d&&o(l.get("length")):(o(l.get(st)),ct(e)&&o(l.get(Cs)));break;case"delete":f||(o(l.get(st)),ct(e)&&o(l.get(Cs)));break;case"set":ct(e)&&o(l.get(st));break}}Hs()}function it(e){const t=H(e);return t===e?t:(se(t,"iterate",At),ye(e)?t:t.map(Se))}function ns(e){return se(e=H(e),"iterate",At),e}function ke(e,t){return Ue(e)?nt(e)?at(Se(t)):at(t):Se(t)}const ti={__proto__:null,[Symbol.iterator](){return ps(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return it(this).concat(...e.map(t=>R(t)?it(t):t))},entries(){return ps(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return Le(this,"every",e,t,void 0,arguments)},filter(e,t){return Le(this,"filter",e,t,s=>s.map(n=>ke(this,n)),arguments)},find(e,t){return Le(this,"find",e,t,s=>ke(this,s),arguments)},findIndex(e,t){return Le(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Le(this,"findLast",e,t,s=>ke(this,s),arguments)},findLastIndex(e,t){return Le(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Le(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return Le(this,"map",e,t,void 0,arguments)},pop(){return mt(this,"pop")},push(...e){return mt(this,"push",e)},reduce(e,...t){return ln(this,"reduce",e,t)},reduceRight(e,...t){return ln(this,"reduceRight",e,t)},shift(){return mt(this,"shift")},some(e,t){return Le(this,"some",e,t,void 0,arguments)},splice(...e){return mt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return mt(this,"unshift",e)},values(){return ps(this,"values",e=>ke(this,e))}};function ps(e,t,s){const n=ns(e),r=n[t]();return n!==e&&!ye(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=s(i.value)),i}),r}const si=Array.prototype;function Le(e,t,s,n,r,i){const l=ns(e),o=l!==e&&!ye(e),f=l[t];if(f!==si[t]){const p=f.apply(e,i);return o?Se(p):p}let d=s;l!==e&&(o?d=function(p,w){return s.call(this,ke(e,p),w,e)}:s.length>2&&(d=function(p,w){return s.call(this,p,w,e)}));const a=f.call(l,d,n);return o&&r?r(a):a}function ln(e,t,s,n){const r=ns(e);let i=s;return r!==e&&(ye(e)?s.length>3&&(i=function(l,o,f){return s.call(this,l,o,f,e)}):i=function(l,o,f){return s.call(this,l,ke(e,o),f,e)}),r[t](i,...n)}function gs(e,t,s){const n=H(e);se(n,"iterate",At);const r=n[t](...s);return(r===-1||r===!1)&&Vs(s[0])?(s[0]=H(s[0]),n[t](...s)):r}function mt(e,t,s=[]){He(),js();const n=H(e)[t].apply(e,s);return Hs(),Ne(),n}const ni=Fs("__proto__,__v_isRef,__isVue"),zn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ye));function ri(e){Ye(e)||(e=String(e));const t=H(this);return se(t,"has",e),t.hasOwnProperty(e)}class Xn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?pi:tr:i?er:Qn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=R(t);if(!r){let f;if(l&&(f=ti[s]))return f;if(s==="hasOwnProperty")return ri}const o=Reflect.get(t,s,ne(t)?t:n);if((Ye(s)?zn.has(s):ni(s))||(r||se(t,"get",s),i))return o;if(ne(o)){const f=l&&Ds(s)?o:o.value;return r&&z(f)?Ts(f):f}return z(o)?r?Ts(o):ks(o):o}}class Zn extends Xn{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];const l=R(t)&&Ds(s);if(!this._isShallow){const d=Ue(i);if(!ye(n)&&!Ue(n)&&(i=H(i),n=H(n)),!l&&ne(i)&&!ne(n))return d||(i.value=n),!0}const o=l?Number(s)<t.length:N(t,s),f=Reflect.set(t,s,n,ne(t)?t:r);return t===H(r)&&(o?qe(n,i)&&je(t,"set",s,n):je(t,"add",s,n)),f}deleteProperty(t,s){const n=N(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&je(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!Ye(s)||!zn.has(s))&&se(t,"has",s),n}ownKeys(t){return se(t,"iterate",R(t)?"length":st),Reflect.ownKeys(t)}}class ii extends Xn{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const li=new Zn,oi=new ii,ci=new Zn(!0);const Es=e=>e,Nt=e=>Reflect.getPrototypeOf(e);function fi(e,t,s){return function(...n){const r=this.__v_raw,i=H(r),l=ct(i),o=e==="entries"||e===Symbol.iterator&&l,f=e==="keys"&&l,d=r[e](...n),a=s?Es:t?at:Se;return!t&&se(i,"iterate",f?Cs:st),{next(){const{value:p,done:w}=d.next();return w?{value:p,done:w}:{value:o?[a(p[0]),a(p[1])]:a(p),done:w}},[Symbol.iterator](){return this}}}}function Ut(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ui(e,t){const s={get(r){const i=this.__v_raw,l=H(i),o=H(r);e||(qe(r,o)&&se(l,"get",r),se(l,"get",o));const{has:f}=Nt(l),d=t?Es:e?at:Se;if(f.call(l,r))return d(i.get(r));if(f.call(l,o))return d(i.get(o));i!==l&&i.get(r)},get size(){const r=this.__v_raw;return!e&&se(H(r),"iterate",st),r.size},has(r){const i=this.__v_raw,l=H(i),o=H(r);return e||(qe(r,o)&&se(l,"has",r),se(l,"has",o)),r===o?i.has(r):i.has(r)||i.has(o)},forEach(r,i){const l=this,o=l.__v_raw,f=H(o),d=t?Es:e?at:Se;return!e&&se(f,"iterate",st),o.forEach((a,p)=>r.call(i,d(a),d(p),l))}};return re(s,e?{add:Ut("add"),set:Ut("set"),delete:Ut("delete"),clear:Ut("clear")}:{add(r){!t&&!ye(r)&&!Ue(r)&&(r=H(r));const i=H(this);return Nt(i).has.call(i,r)||(i.add(r),je(i,"add",r,r)),this},set(r,i){!t&&!ye(i)&&!Ue(i)&&(i=H(i));const l=H(this),{has:o,get:f}=Nt(l);let d=o.call(l,r);d||(r=H(r),d=o.call(l,r));const a=f.call(l,r);return l.set(r,i),d?qe(i,a)&&je(l,"set",r,i):je(l,"add",r,i),this},delete(r){const i=H(this),{has:l,get:o}=Nt(i);let f=l.call(i,r);f||(r=H(r),f=l.call(i,r)),o&&o.call(i,r);const d=i.delete(r);return f&&je(i,"delete",r,void 0),d},clear(){const r=H(this),i=r.size!==0,l=r.clear();return i&&je(r,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=fi(r,e,t)}),s}function Ks(e,t){const s=ui(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(N(s,r)&&r in n?s:n,r,i)}const ai={get:Ks(!1,!1)},di={get:Ks(!1,!0)},hi={get:Ks(!0,!1)};const Qn=new WeakMap,er=new WeakMap,tr=new WeakMap,pi=new WeakMap;function gi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function mi(e){return e.__v_skip||!Object.isExtensible(e)?0:gi(Kr(e))}function ks(e){return Ue(e)?e:Bs(e,!1,li,ai,Qn)}function bi(e){return Bs(e,!1,ci,di,er)}function Ts(e){return Bs(e,!0,oi,hi,tr)}function Bs(e,t,s,n,r){if(!z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=mi(e);if(i===0)return e;const l=r.get(e);if(l)return l;const o=new Proxy(e,i===2?n:s);return r.set(e,o),o}function nt(e){return Ue(e)?nt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ue(e){return!!(e&&e.__v_isReadonly)}function ye(e){return!!(e&&e.__v_isShallow)}function Vs(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function _i(e){return!N(e,"__v_skip")&&Object.isExtensible(e)&&Hn(e,"__v_skip",!0),e}const Se=e=>z(e)?ks(e):e,at=e=>z(e)?Ts(e):e;function ne(e){return e?e.__v_isRef===!0:!1}function ve(e){return xi(e,!1)}function xi(e,t){return ne(e)?e:new vi(e,t)}class vi{constructor(t,s){this.dep=new Us,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:H(t),this._value=s?t:Se(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||ye(t)||Ue(t);t=n?t:H(t),qe(t,s)&&(this._rawValue=t,this._value=n?t:Se(t),this.dep.trigger())}}function yi(e){return ne(e)?e.value:e}const wi={get:(e,t,s)=>t==="__v_raw"?e:yi(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return ne(r)&&!ne(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function sr(e){return nt(e)?e:new Proxy(e,wi)}class Si{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Us(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ot-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&q!==this)return Vn(this,!0),!0}get value(){const t=this.dep.track();return Gn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ci(e,t,s=!1){let n,r;return I(e)?n=e:(n=e.get,r=e.set),new Si(n,r,s)}const Kt={},Wt=new WeakMap;let tt;function Ei(e,t=!1,s=tt){if(s){let n=Wt.get(s);n||Wt.set(s,n=[]),n.push(e)}}function Ti(e,t,s=G){const{immediate:n,deep:r,once:i,scheduler:l,augmentJob:o,call:f}=s,d=P=>r?P:ye(P)||r===!1||r===0?We(P,1):We(P);let a,p,w,E,F=!1,$=!1;if(ne(e)?(p=()=>e.value,F=ye(e)):nt(e)?(p=()=>d(e),F=!0):R(e)?($=!0,F=e.some(P=>nt(P)||ye(P)),p=()=>e.map(P=>{if(ne(P))return P.value;if(nt(P))return d(P);if(I(P))return f?f(P,2):P()})):I(e)?t?p=f?()=>f(e,2):e:p=()=>{if(w){He();try{w()}finally{Ne()}}const P=tt;tt=a;try{return f?f(e,3,[E]):e(E)}finally{tt=P}}:p=Fe,t&&r){const P=p,T=r===!0?1/0:r;p=()=>We(P(),T)}const te=Zr(),D=()=>{a.stop(),te&&te.active&&Ls(te.effects,a)};if(i&&t){const P=t;t=(...T)=>{P(...T),D()}}let k=$?new Array(e.length).fill(Kt):Kt;const Y=P=>{if(!(!(a.flags&1)||!a.dirty&&!P))if(t){const T=a.run();if(r||F||($?T.some((j,J)=>qe(j,k[J])):qe(T,k))){w&&w();const j=tt;tt=a;try{const J=[T,k===Kt?void 0:$&&k[0]===Kt?[]:k,E];k=T,f?f(t,3,J):t(...J)}finally{tt=j}}}else a.run()};return o&&o(Y),a=new kn(p),a.scheduler=l?()=>l(Y,!1):Y,E=P=>Ei(P,!1,a),w=a.onStop=()=>{const P=Wt.get(a);if(P){if(f)f(P,4);else for(const T of P)T();Wt.delete(a)}},t?n?Y(!0):k=a.run():l?l(Y.bind(null,!0),!0):a.run(),D.pause=a.pause.bind(a),D.resume=a.resume.bind(a),D.stop=D,D}function We(e,t=1/0,s){if(t<=0||!z(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ne(e))We(e.value,t,s);else if(R(e))for(let n=0;n<e.length;n++)We(e[n],t,s);else if(Fn(e)||ct(e))e.forEach(n=>{We(n,t,s)});else if(Dn(e)){for(const n in e)We(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&We(e[n],t,s)}return e}/**
10
+ * @vue/runtime-core v3.5.25
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/function Ft(e,t,s,n){try{return n?e(...n):e()}catch(r){rs(r,t,s)}}function $e(e,t,s,n){if(I(e)){const r=Ft(e,t,s,n);return r&&$n(r)&&r.catch(i=>{rs(i,t,s)}),r}if(R(e)){const r=[];for(let i=0;i<e.length;i++)r.push($e(e[i],t,s,n));return r}}function rs(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||G;if(t){let o=t.parent;const f=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${s}`;for(;o;){const a=o.ec;if(a){for(let p=0;p<a.length;p++)if(a[p](e,f,d)===!1)return}o=o.parent}if(i){He(),Ft(i,null,10,[e,f,d]),Ne();return}}Oi(e,s,r,n,l)}function Oi(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const oe=[];let Me=-1;const ft=[];let Be=null,lt=0;const nr=Promise.resolve();let qt=null;function Ai(e){const t=qt||nr;return e?t.then(this?e.bind(this):e):t}function Pi(e){let t=Me+1,s=oe.length;for(;t<s;){const n=t+s>>>1,r=oe[n],i=Pt(r);i<e||i===e&&r.flags&2?t=n+1:s=n}return t}function Ws(e){if(!(e.flags&1)){const t=Pt(e),s=oe[oe.length-1];!s||!(e.flags&2)&&t>=Pt(s)?oe.push(e):oe.splice(Pi(t),0,e),e.flags|=1,rr()}}function rr(){qt||(qt=nr.then(lr))}function Mi(e){R(e)?ft.push(...e):Be&&e.id===-1?Be.splice(lt+1,0,e):e.flags&1||(ft.push(e),e.flags|=1),rr()}function on(e,t,s=Me+1){for(;s<oe.length;s++){const n=oe[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;oe.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function ir(e){if(ft.length){const t=[...new Set(ft)].sort((s,n)=>Pt(s)-Pt(n));if(ft.length=0,Be){Be.push(...t);return}for(Be=t,lt=0;lt<Be.length;lt++){const s=Be[lt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Be=null,lt=0}}const Pt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function lr(e){try{for(Me=0;Me<oe.length;Me++){const t=oe[Me];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Ft(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Me<oe.length;Me++){const t=oe[Me];t&&(t.flags&=-2)}Me=-1,oe.length=0,ir(),qt=null,(oe.length||ft.length)&&lr()}}let Ie=null,or=null;function Gt(e){const t=Ie;return Ie=e,or=e&&e.type.__scopeId||null,t}function Ri(e,t=Ie,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&bn(-1);const i=Gt(t);let l;try{l=e(...r)}finally{Gt(i),n._d&&bn(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function Qe(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let l=0;l<r.length;l++){const o=r[l];i&&(o.oldValue=i[l].value);let f=o.dir[n];f&&(He(),$e(f,s,8,[e.el,o,e,t]),Ne())}}const Ii=Symbol("_vte"),Fi=e=>e.__isTeleport,$i=Symbol("_leaveCb");function qs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,qs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function $t(e,t){return I(e)?re({name:e.name},t,{setup:e}):e}function cr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Jt=new WeakMap;function wt(e,t,s,n,r=!1){if(R(e)){e.forEach((F,$)=>wt(F,t&&(R(t)?t[$]:t),s,n,r));return}if(St(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&wt(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?zs(n.component):n.el,l=r?null:i,{i:o,r:f}=e,d=t&&t.r,a=o.refs===G?o.refs={}:o.refs,p=o.setupState,w=H(p),E=p===G?In:F=>N(w,F);if(d!=null&&d!==f){if(cn(t),ee(d))a[d]=null,E(d)&&(p[d]=null);else if(ne(d)){d.value=null;const F=t;F.k&&(a[F.k]=null)}}if(I(f))Ft(f,o,12,[l,a]);else{const F=ee(f),$=ne(f);if(F||$){const te=()=>{if(e.f){const D=F?E(f)?p[f]:a[f]:f.value;if(r)R(D)&&Ls(D,i);else if(R(D))D.includes(i)||D.push(i);else if(F)a[f]=[i],E(f)&&(p[f]=a[f]);else{const k=[i];f.value=k,e.k&&(a[e.k]=k)}}else F?(a[f]=l,E(f)&&(p[f]=l)):$&&(f.value=l,e.k&&(a[e.k]=l))};if(l){const D=()=>{te(),Jt.delete(e)};D.id=-1,Jt.set(e,D),me(D,s)}else cn(e),te()}}}function cn(e){const t=Jt.get(e);t&&(t.flags|=8,Jt.delete(e))}es().requestIdleCallback;es().cancelIdleCallback;const St=e=>!!e.type.__asyncLoader,fr=e=>e.type.__isKeepAlive;function Li(e,t){ur(e,"a",t)}function Di(e,t){ur(e,"da",t)}function ur(e,t,s=fe){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(is(t,n,s),s){let r=s.parent;for(;r&&r.parent;)fr(r.parent.vnode)&&ji(n,t,s,r),r=r.parent}}function ji(e,t,s,n){const r=is(t,e,n,!0);dr(()=>{Ls(n[t],r)},s)}function is(e,t,s=fe,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...l)=>{He();const o=Lt(s),f=$e(t,s,e,l);return o(),Ne(),f});return n?r.unshift(i):r.push(i),i}}const Ke=e=>(t,s=fe)=>{(!It||e==="sp")&&is(e,(...n)=>t(...n),s)},Hi=Ke("bm"),ar=Ke("m"),Ni=Ke("bu"),Ui=Ke("u"),Ki=Ke("bum"),dr=Ke("um"),ki=Ke("sp"),Bi=Ke("rtg"),Vi=Ke("rtc");function Wi(e,t=fe){is("ec",e,t)}const qi=Symbol.for("v-ndc");function Mt(e,t,s,n){let r;const i=s,l=R(e);if(l||ee(e)){const o=l&&nt(e);let f=!1,d=!1;o&&(f=!ye(e),d=Ue(e),e=ns(e)),r=new Array(e.length);for(let a=0,p=e.length;a<p;a++)r[a]=t(f?d?at(Se(e[a])):Se(e[a]):e[a],a,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let o=0;o<e;o++)r[o]=t(o+1,o,void 0,i)}else if(z(e))if(e[Symbol.iterator])r=Array.from(e,(o,f)=>t(o,f,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let f=0,d=o.length;f<d;f++){const a=o[f];r[f]=t(e[a],a,f,i)}}else r=[];return r}const Os=e=>e?Lr(e)?zs(e):Os(e.parent):null,Ct=re(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Os(e.parent),$root:e=>Os(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>pr(e),$forceUpdate:e=>e.f||(e.f=()=>{Ws(e.update)}),$nextTick:e=>e.n||(e.n=Ai.bind(e.proxy)),$watch:e=>rl.bind(e)}),ms=(e,t)=>e!==G&&!e.__isScriptSetup&&N(e,t),Gi={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:l,type:o,appContext:f}=e;if(t[0]!=="$"){const w=l[t];if(w!==void 0)switch(w){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(ms(n,t))return l[t]=1,n[t];if(r!==G&&N(r,t))return l[t]=2,r[t];if(N(i,t))return l[t]=3,i[t];if(s!==G&&N(s,t))return l[t]=4,s[t];As&&(l[t]=0)}}const d=Ct[t];let a,p;if(d)return t==="$attrs"&&se(e.attrs,"get",""),d(e);if((a=o.__cssModules)&&(a=a[t]))return a;if(s!==G&&N(s,t))return l[t]=4,s[t];if(p=f.config.globalProperties,N(p,t))return p[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return ms(r,t)?(r[t]=s,!0):n!==G&&N(n,t)?(n[t]=s,!0):N(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:i,type:l}},o){let f;return!!(s[o]||e!==G&&o[0]!=="$"&&N(e,o)||ms(t,o)||N(i,o)||N(n,o)||N(Ct,o)||N(r.config.globalProperties,o)||(f=l.__cssModules)&&f[o])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:N(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function fn(e){return R(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let As=!0;function Ji(e){const t=pr(e),s=e.proxy,n=e.ctx;As=!1,t.beforeCreate&&un(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:l,watch:o,provide:f,inject:d,created:a,beforeMount:p,mounted:w,beforeUpdate:E,updated:F,activated:$,deactivated:te,beforeDestroy:D,beforeUnmount:k,destroyed:Y,unmounted:P,render:T,renderTracked:j,renderTriggered:J,errorCaptured:Z,serverPrefetch:xe,expose:Ce,inheritAttrs:ze,components:ue,directives:Dt,filters:cs}=t;if(d&&Yi(d,n,null),l)for(const X in l){const V=l[X];I(V)&&(n[X]=V.bind(s))}if(r){const X=r.call(s,s);z(X)&&(e.data=ks(X))}if(As=!0,i)for(const X in i){const V=i[X],Xe=I(V)?V.bind(s,s):I(V.get)?V.get.bind(s,s):Fe,jt=!I(V)&&I(V.set)?V.set.bind(s):Fe,Ze=Tt({get:Xe,set:jt});Object.defineProperty(n,X,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:Ee=>Ze.value=Ee})}if(o)for(const X in o)hr(o[X],n,s,X);if(f){const X=I(f)?f.call(s):f;Reflect.ownKeys(X).forEach(V=>{tl(V,X[V])})}a&&un(a,e,"c");function ie(X,V){R(V)?V.forEach(Xe=>X(Xe.bind(s))):V&&X(V.bind(s))}if(ie(Hi,p),ie(ar,w),ie(Ni,E),ie(Ui,F),ie(Li,$),ie(Di,te),ie(Wi,Z),ie(Vi,j),ie(Bi,J),ie(Ki,k),ie(dr,P),ie(ki,xe),R(Ce))if(Ce.length){const X=e.exposed||(e.exposed={});Ce.forEach(V=>{Object.defineProperty(X,V,{get:()=>s[V],set:Xe=>s[V]=Xe,enumerable:!0})})}else e.exposed||(e.exposed={});T&&e.render===Fe&&(e.render=T),ze!=null&&(e.inheritAttrs=ze),ue&&(e.components=ue),Dt&&(e.directives=Dt),xe&&cr(e)}function Yi(e,t,s=Fe){R(e)&&(e=Ps(e));for(const n in e){const r=e[n];let i;z(r)?"default"in r?i=kt(r.from||n,r.default,!0):i=kt(r.from||n):i=kt(r),ne(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[n]=i}}function un(e,t,s){$e(R(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function hr(e,t,s,n){let r=n.includes(".")?br(s,n):()=>s[n];if(ee(e)){const i=t[e];I(i)&&bs(r,i)}else if(I(e))bs(r,e.bind(s));else if(z(e))if(R(e))e.forEach(i=>hr(i,t,s,n));else{const i=I(e.handler)?e.handler.bind(s):t[e.handler];I(i)&&bs(r,i,e)}}function pr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,o=i.get(t);let f;return o?f=o:!r.length&&!s&&!n?f=t:(f={},r.length&&r.forEach(d=>Yt(f,d,l,!0)),Yt(f,t,l)),z(t)&&i.set(t,f),f}function Yt(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&Yt(e,i,s,!0),r&&r.forEach(l=>Yt(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const o=zi[l]||s&&s[l];e[l]=o?o(e[l],t[l]):t[l]}return e}const zi={data:an,props:dn,emits:dn,methods:_t,computed:_t,beforeCreate:le,created:le,beforeMount:le,mounted:le,beforeUpdate:le,updated:le,beforeDestroy:le,beforeUnmount:le,destroyed:le,unmounted:le,activated:le,deactivated:le,errorCaptured:le,serverPrefetch:le,components:_t,directives:_t,watch:Zi,provide:an,inject:Xi};function an(e,t){return t?e?function(){return re(I(e)?e.call(this,this):e,I(t)?t.call(this,this):t)}:t:e}function Xi(e,t){return _t(Ps(e),Ps(t))}function Ps(e){if(R(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function le(e,t){return e?[...new Set([].concat(e,t))]:t}function _t(e,t){return e?re(Object.create(null),e,t):t}function dn(e,t){return e?R(e)&&R(t)?[...new Set([...e,...t])]:re(Object.create(null),fn(e),fn(t??{})):t}function Zi(e,t){if(!e)return t;if(!t)return e;const s=re(Object.create(null),e);for(const n in t)s[n]=le(e[n],t[n]);return s}function gr(){return{app:null,config:{isNativeTag:In,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Qi=0;function el(e,t){return function(n,r=null){I(n)||(n=re({},n)),r!=null&&!z(r)&&(r=null);const i=gr(),l=new WeakSet,o=[];let f=!1;const d=i.app={_uid:Qi++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:Dl,get config(){return i.config},set config(a){},use(a,...p){return l.has(a)||(a&&I(a.install)?(l.add(a),a.install(d,...p)):I(a)&&(l.add(a),a(d,...p))),d},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),d},component(a,p){return p?(i.components[a]=p,d):i.components[a]},directive(a,p){return p?(i.directives[a]=p,d):i.directives[a]},mount(a,p,w){if(!f){const E=d._ceVNode||_e(n,r);return E.appContext=i,w===!0?w="svg":w===!1&&(w=void 0),e(E,a,w),f=!0,d._container=a,a.__vue_app__=d,zs(E.component)}},onUnmount(a){o.push(a)},unmount(){f&&($e(o,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(a,p){return i.provides[a]=p,d},runWithContext(a){const p=ut;ut=d;try{return a()}finally{ut=p}}};return d}}let ut=null;function tl(e,t){if(fe){let s=fe.provides;const n=fe.parent&&fe.parent.provides;n===s&&(s=fe.provides=Object.create(n)),s[e]=t}}function kt(e,t,s=!1){const n=Ml();if(n||ut){let r=ut?ut._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&I(t)?t.call(n&&n.proxy):t}}const sl=Symbol.for("v-scx"),nl=()=>kt(sl);function bs(e,t,s){return mr(e,t,s)}function mr(e,t,s=G){const{immediate:n,deep:r,flush:i,once:l}=s,o=re({},s),f=t&&n||!t&&i!=="post";let d;if(It){if(i==="sync"){const E=nl();d=E.__watcherHandles||(E.__watcherHandles=[])}else if(!f){const E=()=>{};return E.stop=Fe,E.resume=Fe,E.pause=Fe,E}}const a=fe;o.call=(E,F,$)=>$e(E,a,F,$);let p=!1;i==="post"?o.scheduler=E=>{me(E,a&&a.suspense)}:i!=="sync"&&(p=!0,o.scheduler=(E,F)=>{F?E():Ws(E)}),o.augmentJob=E=>{t&&(E.flags|=4),p&&(E.flags|=2,a&&(E.id=a.uid,E.i=a))};const w=Ti(e,t,o);return It&&(d?d.push(w):f&&w()),w}function rl(e,t,s){const n=this.proxy,r=ee(e)?e.includes(".")?br(n,e):()=>n[e]:e.bind(n,n);let i;I(t)?i=t:(i=t.handler,s=t);const l=Lt(this),o=mr(r,i.bind(n),s);return l(),o}function br(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const il=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ge(t)}Modifiers`]||e[`${rt(t)}Modifiers`];function ll(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||G;let r=s;const i=t.startsWith("update:"),l=i&&il(n,t.slice(7));l&&(l.trim&&(r=s.map(a=>ee(a)?a.trim():a)),l.number&&(r=s.map(Vr)));let o,f=n[o=us(t)]||n[o=us(Ge(t))];!f&&i&&(f=n[o=us(rt(t))]),f&&$e(f,e,6,r);const d=n[o+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,$e(d,e,6,r)}}const ol=new WeakMap;function _r(e,t,s=!1){const n=s?ol:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let l={},o=!1;if(!I(e)){const f=d=>{const a=_r(d,t,!0);a&&(o=!0,re(l,a))};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!i&&!o?(z(e)&&n.set(e,null),null):(R(i)?i.forEach(f=>l[f]=null):re(l,i),z(e)&&n.set(e,l),l)}function ls(e,t){return!e||!Xt(t)?!1:(t=t.slice(2).replace(/Once$/,""),N(e,t[0].toLowerCase()+t.slice(1))||N(e,rt(t))||N(e,t))}function hn(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:l,attrs:o,emit:f,render:d,renderCache:a,props:p,data:w,setupState:E,ctx:F,inheritAttrs:$}=e,te=Gt(e);let D,k;try{if(s.shapeFlag&4){const P=r||n,T=P;D=Re(d.call(T,P,a,p,E,w,F)),k=o}else{const P=t;D=Re(P.length>1?P(p,{attrs:o,slots:l,emit:f}):P(p,null)),k=t.props?o:cl(o)}}catch(P){Et.length=0,rs(P,e,1),D=_e(Je)}let Y=D;if(k&&$!==!1){const P=Object.keys(k),{shapeFlag:T}=Y;P.length&&T&7&&(i&&P.some($s)&&(k=fl(k,i)),Y=dt(Y,k,!1,!0))}return s.dirs&&(Y=dt(Y,null,!1,!0),Y.dirs=Y.dirs?Y.dirs.concat(s.dirs):s.dirs),s.transition&&qs(Y,s.transition),D=Y,Gt(te),D}const cl=e=>{let t;for(const s in e)(s==="class"||s==="style"||Xt(s))&&((t||(t={}))[s]=e[s]);return t},fl=(e,t)=>{const s={};for(const n in e)(!$s(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function ul(e,t,s){const{props:n,children:r,component:i}=e,{props:l,children:o,patchFlag:f}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&f>=0){if(f&1024)return!0;if(f&16)return n?pn(n,l,d):!!l;if(f&8){const a=t.dynamicProps;for(let p=0;p<a.length;p++){const w=a[p];if(l[w]!==n[w]&&!ls(d,w))return!0}}}else return(r||o)&&(!o||!o.$stable)?!0:n===l?!1:n?l?pn(n,l,d):!0:!!l;return!1}function pn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const i=n[r];if(t[i]!==e[i]&&!ls(s,i))return!0}return!1}function al({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const xr={},vr=()=>Object.create(xr),yr=e=>Object.getPrototypeOf(e)===xr;function dl(e,t,s,n=!1){const r={},i=vr();e.propsDefaults=Object.create(null),wr(e,t,r,i);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);s?e.props=n?r:bi(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function hl(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:l}}=e,o=H(r),[f]=e.propsOptions;let d=!1;if((n||l>0)&&!(l&16)){if(l&8){const a=e.vnode.dynamicProps;for(let p=0;p<a.length;p++){let w=a[p];if(ls(e.emitsOptions,w))continue;const E=t[w];if(f)if(N(i,w))E!==i[w]&&(i[w]=E,d=!0);else{const F=Ge(w);r[F]=Ms(f,o,F,E,e,!1)}else E!==i[w]&&(i[w]=E,d=!0)}}}else{wr(e,t,r,i)&&(d=!0);let a;for(const p in o)(!t||!N(t,p)&&((a=rt(p))===p||!N(t,a)))&&(f?s&&(s[p]!==void 0||s[a]!==void 0)&&(r[p]=Ms(f,o,p,void 0,e,!0)):delete r[p]);if(i!==o)for(const p in i)(!t||!N(t,p))&&(delete i[p],d=!0)}d&&je(e.attrs,"set","")}function wr(e,t,s,n){const[r,i]=e.propsOptions;let l=!1,o;if(t)for(let f in t){if(xt(f))continue;const d=t[f];let a;r&&N(r,a=Ge(f))?!i||!i.includes(a)?s[a]=d:(o||(o={}))[a]=d:ls(e.emitsOptions,f)||(!(f in n)||d!==n[f])&&(n[f]=d,l=!0)}if(i){const f=H(s),d=o||G;for(let a=0;a<i.length;a++){const p=i[a];s[p]=Ms(r,f,p,d[p],e,!N(d,p))}}return l}function Ms(e,t,s,n,r,i){const l=e[s];if(l!=null){const o=N(l,"default");if(o&&n===void 0){const f=l.default;if(l.type!==Function&&!l.skipFactory&&I(f)){const{propsDefaults:d}=r;if(s in d)n=d[s];else{const a=Lt(r);n=d[s]=f.call(null,t),a()}}else n=f;r.ce&&r.ce._setProp(s,n)}l[0]&&(i&&!o?n=!1:l[1]&&(n===""||n===rt(s))&&(n=!0))}return n}const pl=new WeakMap;function Sr(e,t,s=!1){const n=s?pl:t.propsCache,r=n.get(e);if(r)return r;const i=e.props,l={},o=[];let f=!1;if(!I(e)){const a=p=>{f=!0;const[w,E]=Sr(p,t,!0);re(l,w),E&&o.push(...E)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!f)return z(e)&&n.set(e,ot),ot;if(R(i))for(let a=0;a<i.length;a++){const p=Ge(i[a]);gn(p)&&(l[p]=G)}else if(i)for(const a in i){const p=Ge(a);if(gn(p)){const w=i[a],E=l[p]=R(w)||I(w)?{type:w}:re({},w),F=E.type;let $=!1,te=!0;if(R(F))for(let D=0;D<F.length;++D){const k=F[D],Y=I(k)&&k.name;if(Y==="Boolean"){$=!0;break}else Y==="String"&&(te=!1)}else $=I(F)&&F.name==="Boolean";E[0]=$,E[1]=te,($||N(E,"default"))&&o.push(p)}}const d=[l,o];return z(e)&&n.set(e,d),d}function gn(e){return e[0]!=="$"&&!xt(e)}const Gs=e=>e==="_"||e==="_ctx"||e==="$stable",Js=e=>R(e)?e.map(Re):[Re(e)],gl=(e,t,s)=>{if(t._n)return t;const n=Ri((...r)=>Js(t(...r)),s);return n._c=!1,n},Cr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Gs(r))continue;const i=e[r];if(I(i))t[r]=gl(r,i,n);else if(i!=null){const l=Js(i);t[r]=()=>l}}},Er=(e,t)=>{const s=Js(t);e.slots.default=()=>s},Tr=(e,t,s)=>{for(const n in t)(s||!Gs(n))&&(e[n]=t[n])},ml=(e,t,s)=>{const n=e.slots=vr();if(e.vnode.shapeFlag&32){const r=t._;r?(Tr(n,t,s),s&&Hn(n,"_",r,!0)):Cr(t,n)}else t&&Er(e,t)},bl=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,l=G;if(n.shapeFlag&32){const o=t._;o?s&&o===1?i=!1:Tr(r,t,s):(i=!t.$stable,Cr(t,r)),l=t}else t&&(Er(e,t),l={default:1});if(i)for(const o in r)!Gs(o)&&l[o]==null&&delete r[o]},me=wl;function _l(e){return xl(e)}function xl(e,t){const s=es();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:l,createText:o,createComment:f,setText:d,setElementText:a,parentNode:p,nextSibling:w,setScopeId:E=Fe,insertStaticContent:F}=e,$=(c,u,h,_=null,g=null,m=null,y=void 0,v=null,x=!!u.dynamicChildren)=>{if(c===u)return;c&&!bt(c,u)&&(_=Ht(c),Ee(c,g,m,!0),c=null),u.patchFlag===-2&&(x=!1,u.dynamicChildren=null);const{type:b,ref:A,shapeFlag:S}=u;switch(b){case os:te(c,u,h,_);break;case Je:D(c,u,h,_);break;case xs:c==null&&k(u,h,_,y);break;case ce:ue(c,u,h,_,g,m,y,v,x);break;default:S&1?T(c,u,h,_,g,m,y,v,x):S&6?Dt(c,u,h,_,g,m,y,v,x):(S&64||S&128)&&b.process(c,u,h,_,g,m,y,v,x,pt)}A!=null&&g?wt(A,c&&c.ref,m,u||c,!u):A==null&&c&&c.ref!=null&&wt(c.ref,null,m,c,!0)},te=(c,u,h,_)=>{if(c==null)n(u.el=o(u.children),h,_);else{const g=u.el=c.el;u.children!==c.children&&d(g,u.children)}},D=(c,u,h,_)=>{c==null?n(u.el=f(u.children||""),h,_):u.el=c.el},k=(c,u,h,_)=>{[c.el,c.anchor]=F(c.children,u,h,_,c.el,c.anchor)},Y=({el:c,anchor:u},h,_)=>{let g;for(;c&&c!==u;)g=w(c),n(c,h,_),c=g;n(u,h,_)},P=({el:c,anchor:u})=>{let h;for(;c&&c!==u;)h=w(c),r(c),c=h;r(u)},T=(c,u,h,_,g,m,y,v,x)=>{if(u.type==="svg"?y="svg":u.type==="math"&&(y="mathml"),c==null)j(u,h,_,g,m,y,v,x);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),xe(c,u,g,m,y,v,x)}finally{b&&b._endPatch()}}},j=(c,u,h,_,g,m,y,v)=>{let x,b;const{props:A,shapeFlag:S,transition:O,dirs:M}=c;if(x=c.el=l(c.type,m,A&&A.is,A),S&8?a(x,c.children):S&16&&Z(c.children,x,null,_,g,_s(c,m),y,v),M&&Qe(c,null,_,"created"),J(x,c,c.scopeId,y,_),A){for(const W in A)W!=="value"&&!xt(W)&&i(x,W,null,A[W],m,_);"value"in A&&i(x,"value",null,A.value,m),(b=A.onVnodeBeforeMount)&&Pe(b,_,c)}M&&Qe(c,null,_,"beforeMount");const L=vl(g,O);L&&O.beforeEnter(x),n(x,u,h),((b=A&&A.onVnodeMounted)||L||M)&&me(()=>{b&&Pe(b,_,c),L&&O.enter(x),M&&Qe(c,null,_,"mounted")},g)},J=(c,u,h,_,g)=>{if(h&&E(c,h),_)for(let m=0;m<_.length;m++)E(c,_[m]);if(g){let m=g.subTree;if(u===m||Pr(m.type)&&(m.ssContent===u||m.ssFallback===u)){const y=g.vnode;J(c,y,y.scopeId,y.slotScopeIds,g.parent)}}},Z=(c,u,h,_,g,m,y,v,x=0)=>{for(let b=x;b<c.length;b++){const A=c[b]=v?Ve(c[b]):Re(c[b]);$(null,A,u,h,_,g,m,y,v)}},xe=(c,u,h,_,g,m,y)=>{const v=u.el=c.el;let{patchFlag:x,dynamicChildren:b,dirs:A}=u;x|=c.patchFlag&16;const S=c.props||G,O=u.props||G;let M;if(h&&et(h,!1),(M=O.onVnodeBeforeUpdate)&&Pe(M,h,u,c),A&&Qe(u,c,h,"beforeUpdate"),h&&et(h,!0),(S.innerHTML&&O.innerHTML==null||S.textContent&&O.textContent==null)&&a(v,""),b?Ce(c.dynamicChildren,b,v,h,_,_s(u,g),m):y||V(c,u,v,null,h,_,_s(u,g),m,!1),x>0){if(x&16)ze(v,S,O,h,g);else if(x&2&&S.class!==O.class&&i(v,"class",null,O.class,g),x&4&&i(v,"style",S.style,O.style,g),x&8){const L=u.dynamicProps;for(let W=0;W<L.length;W++){const U=L[W],ae=S[U],de=O[U];(de!==ae||U==="value")&&i(v,U,ae,de,g,h)}}x&1&&c.children!==u.children&&a(v,u.children)}else!y&&b==null&&ze(v,S,O,h,g);((M=O.onVnodeUpdated)||A)&&me(()=>{M&&Pe(M,h,u,c),A&&Qe(u,c,h,"updated")},_)},Ce=(c,u,h,_,g,m,y)=>{for(let v=0;v<u.length;v++){const x=c[v],b=u[v],A=x.el&&(x.type===ce||!bt(x,b)||x.shapeFlag&198)?p(x.el):h;$(x,b,A,null,_,g,m,y,!0)}},ze=(c,u,h,_,g)=>{if(u!==h){if(u!==G)for(const m in u)!xt(m)&&!(m in h)&&i(c,m,u[m],null,g,_);for(const m in h){if(xt(m))continue;const y=h[m],v=u[m];y!==v&&m!=="value"&&i(c,m,v,y,g,_)}"value"in h&&i(c,"value",u.value,h.value,g)}},ue=(c,u,h,_,g,m,y,v,x)=>{const b=u.el=c?c.el:o(""),A=u.anchor=c?c.anchor:o("");let{patchFlag:S,dynamicChildren:O,slotScopeIds:M}=u;M&&(v=v?v.concat(M):M),c==null?(n(b,h,_),n(A,h,_),Z(u.children||[],h,A,g,m,y,v,x)):S>0&&S&64&&O&&c.dynamicChildren?(Ce(c.dynamicChildren,O,h,g,m,y,v),(u.key!=null||g&&u===g.subTree)&&Or(c,u,!0)):V(c,u,h,A,g,m,y,v,x)},Dt=(c,u,h,_,g,m,y,v,x)=>{u.slotScopeIds=v,c==null?u.shapeFlag&512?g.ctx.activate(u,h,_,y,x):cs(u,h,_,g,m,y,x):Xs(c,u,x)},cs=(c,u,h,_,g,m,y)=>{const v=c.component=Pl(c,_,g);if(fr(c)&&(v.ctx.renderer=pt),Rl(v,!1,y),v.asyncDep){if(g&&g.registerDep(v,ie,y),!c.el){const x=v.subTree=_e(Je);D(null,x,u,h),c.placeholder=x.el}}else ie(v,c,u,h,g,m,y)},Xs=(c,u,h)=>{const _=u.component=c.component;if(ul(c,u,h))if(_.asyncDep&&!_.asyncResolved){X(_,u,h);return}else _.next=u,_.update();else u.el=c.el,_.vnode=u},ie=(c,u,h,_,g,m,y)=>{const v=()=>{if(c.isMounted){let{next:S,bu:O,u:M,parent:L,vnode:W}=c;{const Oe=Ar(c);if(Oe){S&&(S.el=W.el,X(c,S,y)),Oe.asyncDep.then(()=>{c.isUnmounted||v()});return}}let U=S,ae;et(c,!1),S?(S.el=W.el,X(c,S,y)):S=W,O&&as(O),(ae=S.props&&S.props.onVnodeBeforeUpdate)&&Pe(ae,L,S,W),et(c,!0);const de=hn(c),Te=c.subTree;c.subTree=de,$(Te,de,p(Te.el),Ht(Te),c,g,m),S.el=de.el,U===null&&al(c,de.el),M&&me(M,g),(ae=S.props&&S.props.onVnodeUpdated)&&me(()=>Pe(ae,L,S,W),g)}else{let S;const{el:O,props:M}=u,{bm:L,m:W,parent:U,root:ae,type:de}=c,Te=St(u);et(c,!1),L&&as(L),!Te&&(S=M&&M.onVnodeBeforeMount)&&Pe(S,U,u),et(c,!0);{ae.ce&&ae.ce._def.shadowRoot!==!1&&ae.ce._injectChildStyle(de);const Oe=c.subTree=hn(c);$(null,Oe,h,_,c,g,m),u.el=Oe.el}if(W&&me(W,g),!Te&&(S=M&&M.onVnodeMounted)){const Oe=u;me(()=>Pe(S,U,Oe),g)}(u.shapeFlag&256||U&&St(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&me(c.a,g),c.isMounted=!0,u=h=_=null}};c.scope.on();const x=c.effect=new kn(v);c.scope.off();const b=c.update=x.run.bind(x),A=c.job=x.runIfDirty.bind(x);A.i=c,A.id=c.uid,x.scheduler=()=>Ws(A),et(c,!0),b()},X=(c,u,h)=>{u.component=c;const _=c.vnode.props;c.vnode=u,c.next=null,hl(c,u.props,_,h),bl(c,u.children,h),He(),on(c),Ne()},V=(c,u,h,_,g,m,y,v,x=!1)=>{const b=c&&c.children,A=c?c.shapeFlag:0,S=u.children,{patchFlag:O,shapeFlag:M}=u;if(O>0){if(O&128){jt(b,S,h,_,g,m,y,v,x);return}else if(O&256){Xe(b,S,h,_,g,m,y,v,x);return}}M&8?(A&16&&ht(b,g,m),S!==b&&a(h,S)):A&16?M&16?jt(b,S,h,_,g,m,y,v,x):ht(b,g,m,!0):(A&8&&a(h,""),M&16&&Z(S,h,_,g,m,y,v,x))},Xe=(c,u,h,_,g,m,y,v,x)=>{c=c||ot,u=u||ot;const b=c.length,A=u.length,S=Math.min(b,A);let O;for(O=0;O<S;O++){const M=u[O]=x?Ve(u[O]):Re(u[O]);$(c[O],M,h,null,g,m,y,v,x)}b>A?ht(c,g,m,!0,!1,S):Z(u,h,_,g,m,y,v,x,S)},jt=(c,u,h,_,g,m,y,v,x)=>{let b=0;const A=u.length;let S=c.length-1,O=A-1;for(;b<=S&&b<=O;){const M=c[b],L=u[b]=x?Ve(u[b]):Re(u[b]);if(bt(M,L))$(M,L,h,null,g,m,y,v,x);else break;b++}for(;b<=S&&b<=O;){const M=c[S],L=u[O]=x?Ve(u[O]):Re(u[O]);if(bt(M,L))$(M,L,h,null,g,m,y,v,x);else break;S--,O--}if(b>S){if(b<=O){const M=O+1,L=M<A?u[M].el:_;for(;b<=O;)$(null,u[b]=x?Ve(u[b]):Re(u[b]),h,L,g,m,y,v,x),b++}}else if(b>O)for(;b<=S;)Ee(c[b],g,m,!0),b++;else{const M=b,L=b,W=new Map;for(b=L;b<=O;b++){const ge=u[b]=x?Ve(u[b]):Re(u[b]);ge.key!=null&&W.set(ge.key,b)}let U,ae=0;const de=O-L+1;let Te=!1,Oe=0;const gt=new Array(de);for(b=0;b<de;b++)gt[b]=0;for(b=M;b<=S;b++){const ge=c[b];if(ae>=de){Ee(ge,g,m,!0);continue}let Ae;if(ge.key!=null)Ae=W.get(ge.key);else for(U=L;U<=O;U++)if(gt[U-L]===0&&bt(ge,u[U])){Ae=U;break}Ae===void 0?Ee(ge,g,m,!0):(gt[Ae-L]=b+1,Ae>=Oe?Oe=Ae:Te=!0,$(ge,u[Ae],h,null,g,m,y,v,x),ae++)}const en=Te?yl(gt):ot;for(U=en.length-1,b=de-1;b>=0;b--){const ge=L+b,Ae=u[ge],tn=u[ge+1],sn=ge+1<A?tn.el||tn.placeholder:_;gt[b]===0?$(null,Ae,h,sn,g,m,y,v,x):Te&&(U<0||b!==en[U]?Ze(Ae,h,sn,2):U--)}}},Ze=(c,u,h,_,g=null)=>{const{el:m,type:y,transition:v,children:x,shapeFlag:b}=c;if(b&6){Ze(c.component.subTree,u,h,_);return}if(b&128){c.suspense.move(u,h,_);return}if(b&64){y.move(c,u,h,pt);return}if(y===ce){n(m,u,h);for(let S=0;S<x.length;S++)Ze(x[S],u,h,_);n(c.anchor,u,h);return}if(y===xs){Y(c,u,h);return}if(_!==2&&b&1&&v)if(_===0)v.beforeEnter(m),n(m,u,h),me(()=>v.enter(m),g);else{const{leave:S,delayLeave:O,afterLeave:M}=v,L=()=>{c.ctx.isUnmounted?r(m):n(m,u,h)},W=()=>{m._isLeaving&&m[$i](!0),S(m,()=>{L(),M&&M()})};O?O(m,L,W):W()}else n(m,u,h)},Ee=(c,u,h,_=!1,g=!1)=>{const{type:m,props:y,ref:v,children:x,dynamicChildren:b,shapeFlag:A,patchFlag:S,dirs:O,cacheIndex:M}=c;if(S===-2&&(g=!1),v!=null&&(He(),wt(v,null,h,c,!0),Ne()),M!=null&&(u.renderCache[M]=void 0),A&256){u.ctx.deactivate(c);return}const L=A&1&&O,W=!St(c);let U;if(W&&(U=y&&y.onVnodeBeforeUnmount)&&Pe(U,u,c),A&6)Nr(c.component,h,_);else{if(A&128){c.suspense.unmount(h,_);return}L&&Qe(c,null,u,"beforeUnmount"),A&64?c.type.remove(c,u,h,pt,_):b&&!b.hasOnce&&(m!==ce||S>0&&S&64)?ht(b,u,h,!1,!0):(m===ce&&S&384||!g&&A&16)&&ht(x,u,h),_&&Zs(c)}(W&&(U=y&&y.onVnodeUnmounted)||L)&&me(()=>{U&&Pe(U,u,c),L&&Qe(c,null,u,"unmounted")},h)},Zs=c=>{const{type:u,el:h,anchor:_,transition:g}=c;if(u===ce){Hr(h,_);return}if(u===xs){P(c);return}const m=()=>{r(h),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(c.shapeFlag&1&&g&&!g.persisted){const{leave:y,delayLeave:v}=g,x=()=>y(h,m);v?v(c.el,m,x):x()}else m()},Hr=(c,u)=>{let h;for(;c!==u;)h=w(c),r(c),c=h;r(u)},Nr=(c,u,h)=>{const{bum:_,scope:g,job:m,subTree:y,um:v,m:x,a:b}=c;mn(x),mn(b),_&&as(_),g.stop(),m&&(m.flags|=8,Ee(y,c,u,h)),v&&me(v,u),me(()=>{c.isUnmounted=!0},u)},ht=(c,u,h,_=!1,g=!1,m=0)=>{for(let y=m;y<c.length;y++)Ee(c[y],u,h,_,g)},Ht=c=>{if(c.shapeFlag&6)return Ht(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=w(c.anchor||c.el),h=u&&u[Ii];return h?w(h):u};let fs=!1;const Qs=(c,u,h)=>{c==null?u._vnode&&Ee(u._vnode,null,null,!0):$(u._vnode||null,c,u,null,null,null,h),u._vnode=c,fs||(fs=!0,on(),ir(),fs=!1)},pt={p:$,um:Ee,m:Ze,r:Zs,mt:cs,mc:Z,pc:V,pbc:Ce,n:Ht,o:e};return{render:Qs,hydrate:void 0,createApp:el(Qs)}}function _s({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function et({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function vl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Or(e,t,s=!1){const n=e.children,r=t.children;if(R(n)&&R(r))for(let i=0;i<n.length;i++){const l=n[i];let o=r[i];o.shapeFlag&1&&!o.dynamicChildren&&((o.patchFlag<=0||o.patchFlag===32)&&(o=r[i]=Ve(r[i]),o.el=l.el),!s&&o.patchFlag!==-2&&Or(l,o)),o.type===os&&o.patchFlag!==-1&&(o.el=l.el),o.type===Je&&!o.el&&(o.el=l.el)}}function yl(e){const t=e.slice(),s=[0];let n,r,i,l,o;const f=e.length;for(n=0;n<f;n++){const d=e[n];if(d!==0){if(r=s[s.length-1],e[r]<d){t[n]=r,s.push(n);continue}for(i=0,l=s.length-1;i<l;)o=i+l>>1,e[s[o]]<d?i=o+1:l=o;d<e[s[i]]&&(i>0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,l=s[i-1];i-- >0;)s[i]=l,l=t[l];return s}function Ar(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ar(t)}function mn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Pr=e=>e.__isSuspense;function wl(e,t){t&&t.pendingBranch?R(e)?t.effects.push(...e):t.effects.push(e):Mi(e)}const ce=Symbol.for("v-fgt"),os=Symbol.for("v-txt"),Je=Symbol.for("v-cmt"),xs=Symbol.for("v-stc"),Et=[];let be=null;function K(e=!1){Et.push(be=e?null:[])}function Sl(){Et.pop(),be=Et[Et.length-1]||null}let Rt=1;function bn(e,t=!1){Rt+=e,e<0&&be&&t&&(be.hasOnce=!0)}function Mr(e){return e.dynamicChildren=Rt>0?be||ot:null,Sl(),Rt>0&&be&&be.push(e),e}function B(e,t,s,n,r,i){return Mr(C(e,t,s,n,r,i,!0))}function Rr(e,t,s,n,r){return Mr(_e(e,t,s,n,r,!0))}function Ir(e){return e?e.__v_isVNode===!0:!1}function bt(e,t){return e.type===t.type&&e.key===t.key}const Fr=({key:e})=>e??null,Bt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ee(e)||ne(e)||I(e)?{i:Ie,r:e,k:t,f:!!s}:e:null);function C(e,t=null,s=null,n=0,r=null,i=e===ce?0:1,l=!1,o=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fr(t),ref:t&&Bt(t),scopeId:or,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ie};return o?(Ys(f,s),i&128&&e.normalize(f)):s&&(f.shapeFlag|=ee(s)?8:16),Rt>0&&!l&&be&&(f.patchFlag>0||i&6)&&f.patchFlag!==32&&be.push(f),f}const _e=Cl;function Cl(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===qi)&&(e=Je),Ir(e)){const o=dt(e,t,!0);return s&&Ys(o,s),Rt>0&&!i&&be&&(o.shapeFlag&6?be[be.indexOf(e)]=o:be.push(o)),o.patchFlag=-2,o}if(Ll(e)&&(e=e.__vccOpts),t){t=El(t);let{class:o,style:f}=t;o&&!ee(o)&&(t.class=ss(o)),z(f)&&(Vs(f)&&!R(f)&&(f=re({},f)),t.style=ts(f))}const l=ee(e)?1:Pr(e)?128:Fi(e)?64:z(e)?4:I(e)?2:0;return C(e,t,s,n,r,l,i,!0)}function El(e){return e?Vs(e)||yr(e)?re({},e):e:null}function dt(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:l,children:o,transition:f}=e,d=t?Tl(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Fr(d),ref:t&&t.ref?s&&i?R(i)?i.concat(Bt(t)):[i,Bt(t)]:Bt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ce?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&dt(e.ssContent),ssFallback:e.ssFallback&&dt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&n&&qs(a,f.clone(a)),a}function pe(e=" ",t=0){return _e(os,null,e,t)}function $r(e="",t=!1){return t?(K(),Rr(Je,null,e)):_e(Je,null,e)}function Re(e){return e==null||typeof e=="boolean"?_e(Je):R(e)?_e(ce,null,e.slice()):Ir(e)?Ve(e):_e(os,null,String(e))}function Ve(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:dt(e)}function Ys(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(R(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Ys(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!yr(t)?t._ctx=Ie:r===3&&Ie&&(Ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else I(t)?(t={default:t,_ctx:Ie},s=32):(t=String(t),n&64?(s=16,t=[pe(t)]):s=8);e.children=t,e.shapeFlag|=s}function Tl(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=ss([t.class,n.class]));else if(r==="style")t.style=ts([t.style,n.style]);else if(Xt(r)){const i=t[r],l=n[r];l&&i!==l&&!(R(i)&&i.includes(l))&&(t[r]=i?[].concat(i,l):l)}else r!==""&&(t[r]=n[r])}return t}function Pe(e,t,s,n=null){$e(e,t,7,[s,n])}const Ol=gr();let Al=0;function Pl(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||Ol,i={uid:Al++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Xr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Sr(n,r),emitsOptions:_r(n,r),emit:null,emitted:null,propsDefaults:G,inheritAttrs:n.inheritAttrs,ctx:G,data:G,props:G,attrs:G,slots:G,refs:G,setupState:G,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=ll.bind(null,i),e.ce&&e.ce(i),i}let fe=null;const Ml=()=>fe||Ie;let zt,Rs;{const e=es(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(l=>l(i)):r[0](i)}};zt=t("__VUE_INSTANCE_SETTERS__",s=>fe=s),Rs=t("__VUE_SSR_SETTERS__",s=>It=s)}const Lt=e=>{const t=fe;return zt(e),e.scope.on(),()=>{e.scope.off(),zt(t)}},_n=()=>{fe&&fe.scope.off(),zt(null)};function Lr(e){return e.vnode.shapeFlag&4}let It=!1;function Rl(e,t=!1,s=!1){t&&Rs(t);const{props:n,children:r}=e.vnode,i=Lr(e);dl(e,n,i,t),ml(e,r,s||t);const l=i?Il(e,t):void 0;return t&&Rs(!1),l}function Il(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Gi);const{setup:n}=s;if(n){He();const r=e.setupContext=n.length>1?$l(e):null,i=Lt(e),l=Ft(n,e,0,[e.props,r]),o=$n(l);if(Ne(),i(),(o||e.sp)&&!St(e)&&cr(e),o){if(l.then(_n,_n),t)return l.then(f=>{xn(e,f)}).catch(f=>{rs(f,e,0)});e.asyncDep=l}else xn(e,l)}else Dr(e)}function xn(e,t,s){I(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:z(t)&&(e.setupState=sr(t)),Dr(e)}function Dr(e,t,s){const n=e.type;e.render||(e.render=n.render||Fe);{const r=Lt(e);He();try{Ji(e)}finally{Ne(),r()}}}const Fl={get(e,t){return se(e,"get",""),e[t]}};function $l(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Fl),slots:e.slots,emit:e.emit,expose:t}}function zs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(sr(_i(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Ct)return Ct[s](e)},has(t,s){return s in t||s in Ct}})):e.proxy}function Ll(e){return I(e)&&"__vccOpts"in e}const Tt=(e,t)=>Ci(e,t,It),Dl="3.5.25";/**
14
+ * @vue/runtime-dom v3.5.25
15
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
16
+ * @license MIT
17
+ **/let Is;const vn=typeof window<"u"&&window.trustedTypes;if(vn)try{Is=vn.createPolicy("vue",{createHTML:e=>e})}catch{}const jr=Is?e=>Is.createHTML(e):e=>e,jl="http://www.w3.org/2000/svg",Hl="http://www.w3.org/1998/Math/MathML",De=typeof document<"u"?document:null,yn=De&&De.createElement("template"),Nl={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?De.createElementNS(jl,e):t==="mathml"?De.createElementNS(Hl,e):s?De.createElement(e,{is:s}):De.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>De.createTextNode(e),createComment:e=>De.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>De.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const l=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{yn.innerHTML=jr(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const o=yn.content;if(n==="svg"||n==="mathml"){const f=o.firstChild;for(;f.firstChild;)o.appendChild(f.firstChild);o.removeChild(f)}t.insertBefore(o,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Ul=Symbol("_vtc");function Kl(e,t,s){const n=e[Ul];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const wn=Symbol("_vod"),kl=Symbol("_vsh"),Bl=Symbol(""),Vl=/(?:^|;)\s*display\s*:/;function Wl(e,t,s){const n=e.style,r=ee(s);let i=!1;if(s&&!r){if(t)if(ee(t))for(const l of t.split(";")){const o=l.slice(0,l.indexOf(":")).trim();s[o]==null&&Vt(n,o,"")}else for(const l in t)s[l]==null&&Vt(n,l,"");for(const l in s)l==="display"&&(i=!0),Vt(n,l,s[l])}else if(r){if(t!==s){const l=n[Bl];l&&(s+=";"+l),n.cssText=s,i=Vl.test(s)}}else t&&e.removeAttribute("style");wn in e&&(e[wn]=i?n.display:"",e[kl]&&(n.display="none"))}const Sn=/\s*!important$/;function Vt(e,t,s){if(R(s))s.forEach(n=>Vt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=ql(e,t);Sn.test(s)?e.setProperty(rt(n),s.replace(Sn,""),"important"):e[n]=s}}const Cn=["Webkit","Moz","ms"],vs={};function ql(e,t){const s=vs[t];if(s)return s;let n=Ge(t);if(n!=="filter"&&n in e)return vs[t]=n;n=jn(n);for(let r=0;r<Cn.length;r++){const i=Cn[r]+n;if(i in e)return vs[t]=i}return t}const En="http://www.w3.org/1999/xlink";function Tn(e,t,s,n,r,i=zr(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(En,t.slice(6,t.length)):e.setAttributeNS(En,t,s):s==null||i&&!Nn(s)?e.removeAttribute(t):e.setAttribute(t,i?"":Ye(s)?String(s):s)}function On(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?jr(s):s);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const o=i==="OPTION"?e.getAttribute("value")||"":e.value,f=s==null?e.type==="checkbox"?"on":"":String(s);(o!==f||!("_value"in e))&&(e.value=f),s==null&&e.removeAttribute(t),e._value=s;return}let l=!1;if(s===""||s==null){const o=typeof e[t];o==="boolean"?s=Nn(s):s==null&&o==="string"?(s="",l=!0):o==="number"&&(s=0,l=!0)}try{e[t]=s}catch{}l&&e.removeAttribute(r||t)}function Gl(e,t,s,n){e.addEventListener(t,s,n)}function Jl(e,t,s,n){e.removeEventListener(t,s,n)}const An=Symbol("_vei");function Yl(e,t,s,n,r=null){const i=e[An]||(e[An]={}),l=i[t];if(n&&l)l.value=n;else{const[o,f]=zl(t);if(n){const d=i[t]=Ql(n,r);Gl(e,o,d,f)}else l&&(Jl(e,o,l,f),i[t]=void 0)}}const Pn=/(?:Once|Passive|Capture)$/;function zl(e){let t;if(Pn.test(e)){t={};let n;for(;n=e.match(Pn);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):rt(e.slice(2)),t]}let ys=0;const Xl=Promise.resolve(),Zl=()=>ys||(Xl.then(()=>ys=0),ys=Date.now());function Ql(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;$e(eo(n,s.value),t,5,[n])};return s.value=e,s.attached=Zl(),s}function eo(e,t){if(R(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const Mn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,to=(e,t,s,n,r,i)=>{const l=r==="svg";t==="class"?Kl(e,n,l):t==="style"?Wl(e,s,n):Xt(t)?$s(t)||Yl(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):so(e,t,n,l))?(On(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Tn(e,t,n,l,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ee(n))?On(e,Ge(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Tn(e,t,n,l))};function so(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Mn(t)&&I(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Mn(t)&&ee(s)?!1:t in e}const no=re({patchProp:to},Nl);let Rn;function ro(){return Rn||(Rn=_l(no))}const io=((...e)=>{const t=ro().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=oo(n);if(!r)return;const i=t._component;!I(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const l=s(r,!1,lo(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t});function lo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function oo(e){return ee(e)?document.querySelector(e):e}const co=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},fo={},uo={class:"flex flex-wrap justify-between gap-6"};function ao(e,t){return K(),B("header",uo,[...t[0]||(t[0]=[C("div",{class:"space-y-2"},[C("p",{class:"text-xs uppercase tracking-[0.2em] text-slate-400"},"Mutineer Admin"),C("h1",{class:"text-3xl font-semibold text-white"},"Mutation test results"),C("p",{class:"text-slate-400"},[pe(" Review the final state of every mutant captured in "),C("code",null,".mutate-cache.json"),pe(". ")])],-1)])])}const ho=co(fo,[["render",ao]]),po={class:"rounded-2xl border border-slate-800 bg-slate-900/60 p-6"},go={class:"mb-6 flex items-start justify-between gap-4"},mo=["disabled"],bo={key:0,class:"space-y-2 rounded-xl border border-slate-800 bg-slate-950/60 p-6 text-center text-slate-300"},_o={class:"text-sm text-red-400"},xo={key:1,class:"space-y-2 rounded-xl border border-slate-800 bg-slate-950/60 p-6 text-center text-slate-300"},vo={key:0,class:"grid gap-4 sm:grid-cols-2 md:grid-cols-3"},yo={class:"mb-1 text-xs uppercase tracking-[0.08em] text-slate-400"},wo={class:"text-lg font-semibold text-slate-100"},So={key:1,class:"space-y-2 rounded-xl border border-slate-800 bg-slate-950/60 p-6 text-center text-slate-300"},Co=$t({__name:"ConfigPanel",props:{config:{},loading:{type:Boolean},error:{}},emits:["reload"],setup(e,{emit:t}){const s=e,n=t;function r(l){return!l||Array.isArray(l)&&!l.length?"—":Array.isArray(l)?l.join(", "):l}const i=Tt(()=>{var l;return s.config?[{label:"Targets",value:((l=s.config.targets)==null?void 0:l.length)??"—"},{label:"Include",value:r(s.config.include??null)},{label:"Exclude",value:r(s.config.exclude??null)},{label:"Source",value:r(s.config.source??null)},{label:"Base ref",value:s.config.baseRef??"—"},{label:"Max mutants / file",value:s.config.maxMutantsPerFile??"—"},{label:"Auto discover",value:s.config.autoDiscover===!1?"Disabled":"Enabled"},{label:"Mutant output",value:s.config.mutantOutput??"mute"},{label:"Min kill %",value:s.config.minKillPercent??"—"}]:[]});return(l,o)=>(K(),B("section",po,[C("header",go,[o[1]||(o[1]=C("div",null,[C("p",{class:"text-xs uppercase tracking-[0.2em] text-slate-400"},"Project settings"),C("h2",{class:"mt-1 text-2xl font-semibold text-white"},"mutineer.config")],-1)),C("button",{class:"inline-flex items-center justify-center rounded-lg bg-gradient-to-r from-sky-500 to-indigo-500 px-4 py-2 text-sm font-semibold text-slate-950 shadow-sm transition hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-sky-400 disabled:cursor-progress disabled:opacity-70",disabled:e.loading,onClick:o[0]||(o[0]=f=>n("reload"))},Q(e.loading?"Loading…":"Reload config"),9,mo)]),e.error?(K(),B("div",bo,[o[2]||(o[2]=C("p",null,"Unable to load configuration.",-1)),C("p",_o,Q(e.error),1)])):e.loading?(K(),B("div",xo,[...o[3]||(o[3]=[C("p",null,"Loading configuration…",-1)])])):(K(),B(ce,{key:2},[e.config?(K(),B("dl",vo,[(K(!0),B(ce,null,Mt(i.value,f=>(K(),B("div",{key:f.label,class:"rounded-xl border border-slate-800 bg-slate-950/70 p-3"},[C("dt",yo,Q(f.label),1),C("dd",wo,Q(f.value),1)]))),128))])):(K(),B("div",So,[...o[4]||(o[4]=[C("p",null,"No mutineer.config found.",-1)])]))],64))]))}}),Eo={class:"grid grid-cols-2 gap-4 sm:grid-cols-3 lg:grid-cols-5"},To={class:"block text-sm text-slate-400"},Oo={class:"text-2xl font-semibold text-white"},Ao=$t({__name:"StatsGrid",props:{overview:{}},setup(e){const t=e,s=[{label:"Total mutants",value:()=>t.overview.total},{label:"Kill rate",value:()=>`${t.overview.killRate.toFixed(2)}%`},{label:"Killed",value:()=>t.overview.killed},{label:"Escaped",value:()=>t.overview.escaped},{label:"Errors",value:()=>t.overview.errors},{label:"Timeouts",value:()=>t.overview.timeouts},{label:"Skipped",value:()=>t.overview.skipped}];return(n,r)=>(K(),B("section",Eo,[(K(),B(ce,null,Mt(s,i=>C("article",{key:i.label,class:"space-y-2 rounded-xl border border-slate-800 bg-slate-900/60 p-4"},[C("span",To,Q(i.label),1),C("strong",Oo,Q(i.value()),1)])),64))]))}}),Po={class:"rounded-2xl border border-slate-800 bg-slate-900/60 p-6"},Mo={class:"grid items-end gap-3 sm:grid-cols-2 lg:grid-cols-4"},Ro={class:"flex flex-col gap-2 text-sm text-slate-300"},Io=["value"],Fo=["value"],$o={class:"flex flex-col gap-2 text-sm text-slate-300"},Lo=["value"],Do=["disabled"],jo={key:0,class:"text-sm text-slate-400 sm:text-right"},Ho=$t({__name:"FiltersBar",props:{status:{},search:{},statusOptions:{},loading:{type:Boolean},lastUpdatedLabel:{}},emits:["update:status","update:search","refresh"],setup(e,{emit:t}){const s=t;function n(i){const l=i.target.value;s("update:status",l)}function r(i){s("update:search",i.target.value)}return(i,l)=>(K(),B("section",Po,[C("div",Mo,[C("label",Ro,[l[1]||(l[1]=pe(" Status ",-1)),C("select",{value:e.status,class:"w-full rounded-lg border border-slate-700 bg-slate-900 px-3 py-2 text-slate-100 focus:border-sky-400 focus:outline-none focus:ring-2 focus:ring-sky-400/60",onChange:n},[(K(!0),B(ce,null,Mt(e.statusOptions,o=>(K(),B("option",{key:o.value,value:o.value},Q(o.label),9,Fo))),128))],40,Io)]),C("label",$o,[l[2]||(l[2]=pe(" Search ",-1)),C("input",{value:e.search,type:"search",placeholder:"File or mutator name",autocomplete:"off",class:"w-full rounded-lg border border-slate-700 bg-slate-900 px-3 py-2 text-slate-100 placeholder:text-slate-500 focus:border-sky-400 focus:outline-none focus:ring-2 focus:ring-sky-400/60",onInput:r},null,40,Lo)]),C("button",{class:"inline-flex items-center justify-center rounded-lg bg-gradient-to-r from-sky-500 to-indigo-500 px-4 py-2 text-sm font-semibold text-slate-950 shadow-sm transition hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-sky-400 disabled:cursor-progress disabled:opacity-70",disabled:e.loading,onClick:l[0]||(l[0]=o=>s("refresh"))},Q(e.loading?"Loading…":"Refresh results"),9,Do),e.lastUpdatedLabel?(K(),B("p",jo," Last updated "+Q(e.lastUpdatedLabel),1)):$r("",!0)])]))}}),No={class:"overflow-hidden rounded-2xl border border-slate-800 bg-slate-900/60"},Uo={key:0,class:"space-y-2 p-12 text-center text-slate-300"},Ko={key:1,class:"min-w-full border-collapse text-left"},ko={class:"text-sm"},Bo={class:"px-4 py-3 align-top"},Vo=["onToggle"],Wo={class:"flex cursor-pointer list-none items-start justify-between gap-3 rounded-md px-1 py-0.5 text-left text-slate-200 hover:bg-slate-800/40 [&::-webkit-details-marker]:hidden"},qo={class:"block font-semibold text-white"},Go={class:"block text-xs text-slate-400",title:"Absolute path"},Jo={class:"mt-3"},Yo={key:0,class:"text-sm text-slate-400"},zo={key:1,class:"text-sm font-medium text-red-400"},Xo={key:2,class:"mt-2 overflow-x-auto rounded-xl border border-slate-800 bg-slate-950 p-3 whitespace-normal"},Zo={class:"inline-block w-12 text-right text-slate-500"},Qo={class:"inline-block w-12 text-right text-slate-500"},ec={class:"w-4 text-center font-semibold text-slate-400"},tc=["innerHTML"],sc={class:"px-4 py-3 align-top"},nc={class:"px-4 py-3 align-top"},rc={class:"px-4 py-3 align-top"},ic={class:"px-4 py-3 align-top"},lc=$t({__name:"ResultsTable",props:{results:{},statusMeta:{},diffs:{},diffLoading:{},diffErrors:{}},emits:["ensure-diff"],setup(e,{emit:t}){const s=t,n={context:" ",add:"+",remove:"-"};function r(f){return f===void 0?"":f.toString().padStart(4," ")}function i(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function l(f){return f.length?i(f.replace(/\t/g," ")):"&nbsp;"}function o(f,d){const a=d.target;a!=null&&a.open&&s("ensure-diff",f)}return(f,d)=>(K(),B("section",No,[e.results.length?(K(),B("table",Ko,[d[11]||(d[11]=C("thead",{class:"bg-slate-950/70 text-xs font-semibold uppercase tracking-[0.1em] text-slate-400"},[C("tr",null,[C("th",{scope:"col",class:"px-4 py-3"},"File"),C("th",{scope:"col",class:"px-4 py-3"},"Line"),C("th",{scope:"col",class:"px-4 py-3"},"Column"),C("th",{scope:"col",class:"px-4 py-3"},"Mutator"),C("th",{scope:"col",class:"px-4 py-3"},"Status")])],-1)),C("tbody",ko,[(K(!0),B(ce,null,Mt(e.results,a=>(K(),B("tr",{key:a.id,class:"even:bg-slate-800/30"},[C("td",Bo,[C("details",{class:"rounded-lg p-1 pl-0 text-left",onToggle:p=>o(a,p)},[C("summary",Wo,[C("div",null,[C("span",qo,Q(a.relativePath),1),C("span",Go,Q(a.file),1)]),d[1]||(d[1]=C("span",{class:"whitespace-nowrap text-xs font-medium text-sky-400"},"Click to view code",-1))]),C("div",Jo,[e.diffLoading[a.id]?(K(),B("p",Yo,"Building mutation diff…")):e.diffErrors[a.id]?(K(),B("p",zo,Q(e.diffErrors[a.id]),1)):e.diffs[a.id]?(K(),B("pre",Xo,[d[9]||(d[9]=pe(" ",-1)),C("code",null,[d[7]||(d[7]=pe(`
18
+ `,-1)),(K(!0),B(ce,null,Mt(e.diffs[a.id].lines,(p,w)=>(K(),B("span",{key:w,class:ss(["flex gap-2 whitespace-pre rounded font-mono text-sm leading-6",{"bg-green-500/10":p.type==="add","bg-red-500/10":p.type==="remove"}])},[d[2]||(d[2]=pe(`
19
+ `,-1)),C("span",Zo,`
20
+ `+Q(r(p.leftNumber))+`
21
+ `,1),d[3]||(d[3]=pe(`
22
+ `,-1)),C("span",Qo,`
23
+ `+Q(r(p.rightNumber))+`
24
+ `,1),d[4]||(d[4]=pe(`
25
+ `,-1)),C("span",ec,`
26
+ `+Q(n[p.type])+`
27
+ `,1),d[5]||(d[5]=pe(`
28
+ `,-1)),C("span",{class:"flex-1 text-slate-100",innerHTML:l(p.text)},null,8,tc),d[6]||(d[6]=pe(`
29
+ `,-1))],2))),128)),d[8]||(d[8]=pe(`
30
+ `,-1))]),d[10]||(d[10]=pe(`
31
+ `,-1))])):$r("",!0)])],40,Vo)]),C("td",sc,Q(a.line),1),C("td",nc,Q(a.col),1),C("td",rc,Q(a.mutator),1),C("td",ic,[C("span",{class:"inline-block rounded-full px-2.5 py-1 text-xs font-semibold text-slate-950",style:ts({backgroundColor:e.statusMeta[a.status].color})},Q(e.statusMeta[a.status].label),5)])]))),128))])])):(K(),B("div",Uo,[...d[0]||(d[0]=[C("p",null,"No results match your filters.",-1),C("p",{class:"text-sm text-slate-400"},' Try clearing the search box or switching back to "All results" above. ',-1)])]))]))}}),oc={class:"mx-auto max-w-6xl space-y-8 text-slate-200"},cc={class:"overflow-hidden rounded-2xl border border-slate-800 bg-slate-900/60"},fc={key:0,class:"space-y-2 p-12 text-center text-slate-300"},uc={class:"text-sm text-red-400"},ac=$t({__name:"App",setup(e){const t=ve([]),s=ve(!0),n=ve(null),r=ve("all"),i=ve(""),l=ve(null),o=ve({}),f=ve({}),d=ve({}),a=ve(null),p=ve(!0),w=ve(null),E={killed:{label:"Killed",color:"#22c55e"},escaped:{label:"Escaped",color:"#ef4444"},error:{label:"Error",color:"#f97316"},timeout:{label:"Timeout",color:"#a855f7"},skipped:{label:"Skipped",color:"#facc15"}},F=[{label:"All results",value:"all"},{label:"Killed",value:"killed"},{label:"Escaped",value:"escaped"},{label:"Errors",value:"error"},{label:"Timeouts",value:"timeout"},{label:"Skipped",value:"skipped"}];async function $(){s.value=!0,n.value=null;try{const T=await fetch("/api/results");if(!T.ok)throw new Error(`Server responded with ${T.status}`);const J=[...(await T.json()).mutants].sort((Z,xe)=>Z.relativePath===xe.relativePath?Z.line===xe.line?Z.col-xe.col:Z.line-xe.line:Z.relativePath.localeCompare(xe.relativePath));t.value=J,l.value=new Date}catch(T){n.value=T instanceof Error?T.message:"Failed to load results"}finally{s.value=!1}}ar(()=>{te(),$()});async function te(){p.value=!0,w.value=null;try{const T=await fetch("/api/config"),j=await T.json();if(!T.ok||j.error)throw new Error(j.error??`Server responded with ${T.status}`);a.value=j.config??null}catch(T){w.value=T instanceof Error?T.message:"Unable to load config"}finally{p.value=!1}}async function D(T){if(!(o.value[T.id]||f.value[T.id])){f.value={...f.value,[T.id]:!0},d.value={...d.value,[T.id]:""};try{const j=new URLSearchParams({file:T.file,mutator:T.mutator,line:String(T.line??1),col:String(T.col??1)}),J=await fetch(`/api/diff?${j.toString()}`),Z=await J.json();if(!J.ok)throw new Error((Z==null?void 0:Z.error)??`Server responded with ${J.status}`);o.value={...o.value,[T.id]:Z}}catch(j){d.value={...d.value,[T.id]:j instanceof Error?j.message:"Failed to load diff"}}finally{f.value={...f.value,[T.id]:!1}}}}const k=Tt(()=>{const T=t.value.filter(ue=>ue.status==="killed").length,j=t.value.filter(ue=>ue.status==="escaped").length,J=t.value.filter(ue=>ue.status==="error").length,Z=t.value.filter(ue=>ue.status==="timeout").length,xe=t.value.filter(ue=>ue.status==="skipped").length,Ce=T+j,ze=Ce===0?0:T/Ce*100;return{total:t.value.length,killed:T,escaped:j,errors:J,timeouts:Z,skipped:xe,killRate:ze}}),Y=Tt(()=>{let T=[...t.value];if(r.value!=="all"&&(T=T.filter(j=>j.status===r.value)),i.value.trim()){const j=i.value.trim().toLowerCase();T=T.filter(J=>J.relativePath.toLowerCase().includes(j)||J.mutator.toLowerCase().includes(j))}return T}),P=Tt(()=>l.value?l.value.toLocaleTimeString():"");return(T,j)=>(K(),B("main",oc,[_e(ho),_e(Co,{config:a.value,loading:p.value,error:w.value,onReload:te},null,8,["config","loading","error"]),_e(Ao,{overview:k.value},null,8,["overview"]),_e(Ho,{"status-options":F,status:r.value,"onUpdate:status":j[0]||(j[0]=J=>r.value=J),search:i.value,"onUpdate:search":j[1]||(j[1]=J=>i.value=J),loading:s.value,"last-updated-label":P.value,onRefresh:$},null,8,["status","search","loading","last-updated-label"]),C("section",cc,[n.value?(K(),B("div",fc,[j[2]||(j[2]=C("p",null,"Unable to load results.",-1)),C("p",uc,Q(n.value),1)])):(K(),Rr(lc,{key:1,results:Y.value,"status-meta":E,diffs:o.value,"diff-loading":f.value,"diff-errors":d.value,onEnsureDiff:D},null,8,["results","diffs","diff-loading","diff-errors"]))])]))}});io(ac).mount("#app");
32
+ //# sourceMappingURL=index-B7nXq-e7.js.map