@fairfox/polly 0.91.0 → 0.92.1

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 (110) hide show
  1. package/dist/cli/polly.js +3 -3
  2. package/dist/cli/polly.js.map +3 -3
  3. package/dist/gallery/gallery.css +2 -2
  4. package/dist/gallery/gallery.js +248 -241
  5. package/dist/src/background/index.js +27 -11
  6. package/dist/src/background/index.js.map +2 -2
  7. package/dist/src/background/message-router.js +27 -11
  8. package/dist/src/background/message-router.js.map +2 -2
  9. package/dist/src/client/index.js +56 -56
  10. package/dist/src/client/index.js.map +4 -4
  11. package/dist/src/elysia/index.js +16 -7
  12. package/dist/src/elysia/index.js.map +4 -4
  13. package/dist/src/elysia/plugin.d.ts +4 -4
  14. package/dist/src/index.js +27 -11
  15. package/dist/src/index.js.map +2 -2
  16. package/dist/src/mesh.js +2 -2
  17. package/dist/src/mesh.js.map +3 -3
  18. package/dist/src/peer.js +6 -6
  19. package/dist/src/peer.js.map +3 -3
  20. package/dist/src/polly-ui/index.css +2 -2
  21. package/dist/src/polly-ui/markdown.js +1844 -1010
  22. package/dist/src/polly-ui/markdown.js.map +5 -5
  23. package/dist/src/polly-ui/styles.css +2 -2
  24. package/dist/src/shared/adapters/index.js +27 -11
  25. package/dist/src/shared/adapters/index.js.map +2 -2
  26. package/dist/src/shared/lib/context-helpers.js +27 -11
  27. package/dist/src/shared/lib/context-helpers.js.map +2 -2
  28. package/dist/src/shared/lib/message-bus.js +27 -11
  29. package/dist/src/shared/lib/message-bus.js.map +2 -2
  30. package/dist/src/shared/lib/resource.js +17 -1
  31. package/dist/src/shared/lib/resource.js.map +2 -2
  32. package/dist/src/shared/lib/state.js +17 -1
  33. package/dist/src/shared/lib/state.js.map +2 -2
  34. package/dist/src/shared/state/app-state.js +17 -1
  35. package/dist/src/shared/state/app-state.js.map +2 -2
  36. package/dist/tools/bdd/src/cli.js +20 -2
  37. package/dist/tools/bdd/src/cli.js.map +4 -4
  38. package/dist/tools/bdd/src/index.js +20 -2
  39. package/dist/tools/bdd/src/index.js.map +3 -3
  40. package/dist/tools/init/templates/pwa/package.json.template +2 -3
  41. package/dist/tools/mutate/src/args.d.ts +25 -3
  42. package/dist/tools/mutate/src/cli.js +3238 -312
  43. package/dist/tools/mutate/src/cli.js.map +32 -12
  44. package/dist/tools/mutate/src/config.d.ts +13 -2
  45. package/dist/tools/mutate/src/define.d.ts +76 -0
  46. package/dist/tools/mutate/src/engine/ast.d.ts +13 -0
  47. package/dist/tools/mutate/src/engine/baseline.d.ts +20 -0
  48. package/dist/tools/mutate/src/engine/cache.d.ts +32 -0
  49. package/dist/tools/mutate/src/engine/coverage.d.ts +60 -0
  50. package/dist/tools/mutate/src/engine/generate.d.ts +23 -0
  51. package/dist/tools/mutate/src/engine/graph.d.ts +11 -0
  52. package/dist/tools/mutate/src/engine/index.d.ts +16 -0
  53. package/dist/tools/mutate/src/engine/junit.d.ts +38 -0
  54. package/dist/tools/mutate/src/engine/operators.d.ts +14 -0
  55. package/dist/tools/mutate/src/engine/preload.d.ts +10 -0
  56. package/dist/tools/mutate/src/engine/preload.js +180 -0
  57. package/dist/tools/mutate/src/engine/preload.js.map +10 -0
  58. package/dist/tools/mutate/src/engine/probes.d.ts +12 -0
  59. package/dist/tools/mutate/src/engine/report-writer.d.ts +44 -0
  60. package/dist/tools/mutate/src/engine/runner.d.ts +31 -0
  61. package/dist/tools/mutate/src/engine/stray-writes.d.ts +25 -0
  62. package/dist/tools/mutate/src/engine/typecheck.d.ts +37 -0
  63. package/dist/tools/mutate/src/engine/types.d.ts +191 -0
  64. package/dist/tools/mutate/src/engine/verify-callsites.d.ts +9 -0
  65. package/dist/tools/mutate/src/engine/workdir.d.ts +16 -0
  66. package/dist/tools/mutate/src/engine-config.d.ts +7 -0
  67. package/dist/tools/mutate/src/index.d.ts +7 -3
  68. package/dist/tools/mutate/src/index.js +2821 -193
  69. package/dist/tools/mutate/src/index.js.map +26 -7
  70. package/dist/tools/mutate/src/ingest.d.ts +30 -1
  71. package/dist/tools/mutate/src/init.d.ts +2 -1
  72. package/dist/tools/mutate/src/migrate.d.ts +32 -0
  73. package/dist/tools/mutate/src/report.d.ts +3 -0
  74. package/dist/tools/mutate/src/run.d.ts +17 -8
  75. package/dist/tools/mutate/src/verify-matrix.d.ts +12 -15
  76. package/dist/tools/quality/src/cli.js +9 -9
  77. package/dist/tools/quality/src/cli.js.map +4 -4
  78. package/dist/tools/quality/src/index.js +9 -9
  79. package/dist/tools/quality/src/index.js.map +4 -4
  80. package/dist/tools/quality/src/no-tautology-ensures.d.ts +2 -2
  81. package/dist/tools/quality/src/plugins/import-checks.d.ts +1 -1
  82. package/dist/tools/test/src/adapters/index.js +3 -2
  83. package/dist/tools/test/src/adapters/index.js.map +3 -3
  84. package/dist/tools/test/src/coverage-policy/cli.d.ts +2 -2
  85. package/dist/tools/test/src/coverage-policy/cli.js +217 -17
  86. package/dist/tools/test/src/coverage-policy/cli.js.map +7 -5
  87. package/dist/tools/test/src/coverage-policy/index.d.ts +1 -1
  88. package/dist/tools/test/src/coverage-policy/index.js +213 -12
  89. package/dist/tools/test/src/coverage-policy/index.js.map +7 -5
  90. package/dist/tools/test/src/coverage-policy/mutate-targets.d.ts +29 -12
  91. package/dist/tools/test/src/e2e-mesh/index.js +6 -6
  92. package/dist/tools/test/src/e2e-mesh/index.js.map +4 -4
  93. package/dist/tools/test/src/e2e-relay/index.js +230 -226
  94. package/dist/tools/test/src/e2e-relay/index.js.map +7 -7
  95. package/dist/tools/test/src/index.js +3 -2
  96. package/dist/tools/test/src/index.js.map +3 -3
  97. package/dist/tools/test/src/visual/index.js +684 -511
  98. package/dist/tools/test/src/visual/index.js.map +11 -11
  99. package/dist/tools/verify/src/cli.js +17 -2
  100. package/dist/tools/verify/src/cli.js.map +4 -4
  101. package/dist/tools/verify/src/config.d.ts +1 -1
  102. package/dist/tools/verify/src/config.js +68 -3
  103. package/dist/tools/verify/src/config.js.map +4 -4
  104. package/dist/tools/verify/src/primitives/index.d.ts +34 -0
  105. package/dist/tools/visualize/src/cli.js +16 -1
  106. package/dist/tools/visualize/src/cli.js.map +3 -3
  107. package/package.json +29 -39
  108. package/dist/tools/verify/src/stryker/index.d.ts +0 -32
  109. package/dist/tools/verify/src/stryker/index.js +0 -86
  110. package/dist/tools/verify/src/stryker/index.js.map +0 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fairfox/polly",
3
- "version": "0.91.0",
3
+ "version": "0.92.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Multi-execution-context framework with reactive state and cross-context messaging for Chrome extensions, PWAs, and worker-based applications",
@@ -58,10 +58,6 @@
58
58
  "import": "./dist/tools/verify/src/config.js",
59
59
  "types": "./dist/tools/verify/src/config.d.ts"
60
60
  },
61
- "./stryker": {
62
- "import": "./dist/tools/verify/src/stryker/index.js",
63
- "types": "./dist/tools/verify/src/stryker/index.d.ts"
64
- },
65
61
  "./mutate": {
66
62
  "import": "./dist/tools/mutate/src/index.js",
67
63
  "types": "./dist/tools/mutate/src/index.d.ts"
@@ -155,7 +151,7 @@
155
151
  "build:registry": "bun scripts/build-polly-ui-registry.ts",
156
152
  "build:full-featured": "bun run scripts/build-user-extension.ts ../../examples/full-featured",
157
153
  "build:full-featured:prod": "bun run scripts/build-user-extension.ts ../../examples/full-featured --prod",
158
- "typecheck": "bunx tsc --noEmit && bun run --cwd tests typecheck",
154
+ "typecheck": "bun --check && bun run --cwd tests typecheck",
159
155
  "typecheck:tests": "bun run --cwd tests typecheck",
160
156
  "lint": "biome check .",
161
157
  "lint:fix": "biome check --write .",
@@ -172,43 +168,41 @@
172
168
  "publish:public": "bun run scripts/publish.ts"
173
169
  },
174
170
  "devDependencies": {
175
- "@automerge/automerge-repo": "2.5.5",
176
- "@automerge/automerge-repo-network-websocket": "2.5.5",
177
- "@automerge/automerge-repo-storage-indexeddb": "2.5.5",
178
- "@automerge/automerge-repo-storage-nodefs": "2.5.5",
179
- "@babel/parser": "7.29.3",
180
- "@babel/traverse": "7.29.0",
181
- "@biomejs/biome": "2.4.14",
182
- "@stryker-mutator/api": "9.6.1",
171
+ "@automerge/automerge-repo": "2.5.6",
172
+ "@automerge/automerge-repo-network-websocket": "2.5.6",
173
+ "@automerge/automerge-repo-storage-indexeddb": "2.5.6",
174
+ "@automerge/automerge-repo-storage-nodefs": "2.5.6",
175
+ "@biomejs/biome": "2.5.15",
183
176
  "@elysiajs/eden": "1.4.9",
184
- "@preact/signals": "2.9.0",
185
- "@preact/signals-core": "1.14.2",
186
- "@types/bun": "1.3.13",
187
- "@types/chrome": "0.1.40",
188
- "@types/pixelmatch": "5.2.6",
177
+ "@preact/signals": "2.11.3",
178
+ "@preact/signals-core": "1.14.4",
179
+ "@types/bun": "1.4.3",
180
+ "@types/chrome": "0.3.5",
181
+ "@types/pixelmatch": "7.1.0",
189
182
  "@types/pngjs": "6.0.5",
190
- "@types/ws": "8.18.1",
191
- "dompurify": "3.4.14",
192
- "elysia": "1.4.28",
193
- "fast-check": "4.7.0",
194
- "marked": "18.0.3",
195
- "pixelmatch": "7.2.0",
183
+ "@types/ws": "8.18.2",
184
+ "dompurify": "3.4.17",
185
+ "elysia": "1.4.30",
186
+ "fast-check": "4.10.2",
187
+ "marked": "18.1.1",
188
+ "pixelmatch": "8.0.0",
196
189
  "pngjs": "7.0.0",
197
- "preact": "10.29.1",
198
- "puppeteer": "24.42.0",
199
- "tweetnacl": "1.0.3",
200
- "typescript": "6.0.3"
190
+ "preact": "10.29.8",
191
+ "puppeteer": "25.14.0",
192
+ "tweetnacl": "1.0.3"
201
193
  },
202
194
  "engines": {
203
- "bun": ">=1.2.0"
195
+ "bun": ">=1.4.3"
204
196
  },
205
197
  "dependencies": {
206
- "@cucumber/gherkin": "40.0.0",
207
- "@cucumber/messages": "33.0.2",
208
- "ts-morph": "28.0.0"
198
+ "@cucumber/gherkin": "42.0.1",
199
+ "@cucumber/messages": "34.2.1",
200
+ "oxc-parser": "0.137.0",
201
+ "typescript-7": "npm:typescript@7.0.2",
202
+ "ts-morph": "28.0.0",
203
+ "weapon-regex": "1.3.6"
209
204
  },
210
205
  "peerDependencies": {
211
- "typescript": ">= 5.9.3",
212
206
  "preact": "^10.28.1",
213
207
  "@preact/signals": "^2.5.1",
214
208
  "@preact/signals-core": "^1.14.0",
@@ -224,13 +218,9 @@
224
218
  "werift": ">= 0.19.0",
225
219
  "@roamhq/wrtc": ">= 0.8.0",
226
220
  "marked": ">= 12.0.0",
227
- "dompurify": ">= 3.0.0",
228
- "@stryker-mutator/api": ">= 9.0.0"
221
+ "dompurify": ">= 3.0.0"
229
222
  },
230
223
  "peerDependenciesMeta": {
231
- "@stryker-mutator/api": {
232
- "optional": true
233
- },
234
224
  "elysia": {
235
225
  "optional": true
236
226
  },
@@ -1,32 +0,0 @@
1
- import type { Ignorer, NodePath } from "@stryker-mutator/api/ignore";
2
- import { PluginKind } from "@stryker-mutator/api/plugin";
3
- /**
4
- * The polly verify primitives whose argument expressions are runtime no-ops.
5
- * A mutation anywhere inside a call to one of these cannot be killed by a test,
6
- * so its mutants are excluded from scoring.
7
- */
8
- export declare const VERIFY_PRIMITIVES: ReadonlySet<string>;
9
- /** The Stryker plugin name consumers reference in `ignorers`. */
10
- export declare const POLLY_VERIFY_IGNORER_NAME = "polly-verify";
11
- /**
12
- * A Stryker `Ignore` plugin. Stryker calls `shouldIgnore` on entering each AST
13
- * node; returning a message marks that node — and every descendant, until the
14
- * node is left — as ignored. So matching the verify `CallExpression` itself
15
- * covers its condition and message arguments in one shot.
16
- */
17
- export declare class PollyVerifyIgnorer implements Ignorer {
18
- private readonly primitives;
19
- constructor(primitives?: ReadonlySet<string>);
20
- shouldIgnore(path: NodePath): string | undefined;
21
- }
22
- /** The plugin array Stryker reads when this module is listed in `plugins`. */
23
- export declare const strykerPlugins: import("@stryker-mutator/api/plugin").FactoryPlugin<PluginKind.Ignore, ["options"]>[];
24
- /**
25
- * A partial Stryker config that wires up the ignorer. Spread it into a
26
- * `stryker.conf.mjs` default export, or replicate its two keys in JSON.
27
- */
28
- export declare const pollyStrykerPreset: {
29
- readonly plugins: readonly ["@fairfox/polly/stryker"];
30
- readonly ignorers: readonly ["polly-verify"];
31
- };
32
- export default pollyStrykerPreset;
@@ -1,86 +0,0 @@
1
- // tools/verify/src/stryker/index.ts
2
- import {
3
- commonTokens,
4
- declareFactoryPlugin,
5
- PluginKind,
6
- tokens
7
- } from "@stryker-mutator/api/plugin";
8
- var VERIFY_PRIMITIVES = new Set([
9
- "requires",
10
- "ensures",
11
- "invariant",
12
- "stateConstraint",
13
- "forAllPeers",
14
- "somePeer"
15
- ]);
16
- var POLLY_VERIFY_IGNORER_NAME = "polly-verify";
17
- function isCallExpressionPath(path) {
18
- return "isCallExpression" in path && typeof path.isCallExpression === "function";
19
- }
20
- function isBabelIdentifier(callee) {
21
- return callee.type === "Identifier";
22
- }
23
- function isBabelMemberExpression(callee) {
24
- return callee.type === "MemberExpression";
25
- }
26
- function calleeName(callee) {
27
- if (!callee)
28
- return;
29
- if (isBabelIdentifier(callee)) {
30
- return callee.name;
31
- }
32
- if (isBabelMemberExpression(callee)) {
33
- if (!callee.computed && callee.property.type === "Identifier") {
34
- return callee.property.name;
35
- }
36
- }
37
- return;
38
- }
39
-
40
- class PollyVerifyIgnorer {
41
- primitives;
42
- constructor(primitives = VERIFY_PRIMITIVES) {
43
- this.primitives = primitives;
44
- }
45
- shouldIgnore(path) {
46
- if (!isCallExpressionPath(path) || !path.isCallExpression()) {
47
- return;
48
- }
49
- const name = calleeName(path.node.callee);
50
- if (name && this.primitives.has(name)) {
51
- return `Inside polly's ${name}(...) — a runtime no-op (compiled away in production, ` + `translated to a TLA+ assertion in verification). No test can observe or kill ` + `mutations here, so they are excluded from the score (polly#143).`;
52
- }
53
- return;
54
- }
55
- }
56
- function isEnabled(options) {
57
- const polly = options["polly"];
58
- if (typeof polly !== "object" || polly === null)
59
- return true;
60
- return !("excludeVerifyCallsites" in polly) || polly.excludeVerifyCallsites !== false;
61
- }
62
- var NOOP_IGNORER = { shouldIgnore: () => {
63
- return;
64
- } };
65
- function pollyVerifyIgnorerFactory(options) {
66
- return isEnabled(options) ? new PollyVerifyIgnorer : NOOP_IGNORER;
67
- }
68
- pollyVerifyIgnorerFactory.inject = tokens(commonTokens.options);
69
- var strykerPlugins = [
70
- declareFactoryPlugin(PluginKind.Ignore, POLLY_VERIFY_IGNORER_NAME, pollyVerifyIgnorerFactory)
71
- ];
72
- var pollyStrykerPreset = {
73
- plugins: ["@fairfox/polly/stryker"],
74
- ignorers: [POLLY_VERIFY_IGNORER_NAME]
75
- };
76
- var stryker_default = pollyStrykerPreset;
77
- export {
78
- POLLY_VERIFY_IGNORER_NAME,
79
- PollyVerifyIgnorer,
80
- VERIFY_PRIMITIVES,
81
- stryker_default as default,
82
- pollyStrykerPreset,
83
- strykerPlugins
84
- };
85
-
86
- //# debugId=E1FCF7B89389BBE564756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../tools/verify/src/stryker/index.ts"],
4
- "sourcesContent": [
5
- "// Stryker mutation-testing ignorer for polly's verify primitives (polly#143).\n//\n// `requires`, `ensures`, `invariant`, `stateConstraint`, `forAllPeers`, and\n// `somePeer` are runtime no-ops: in production they compile away, in\n// verification they translate to TLA+ assertions. Nothing observes their\n// condition or message argument at test runtime, so EVERY mutation inside one\n// of these callsites is guaranteed to survive — a string-literal flip in an\n// `ensures(...)` message, an `===` → equality mutation in a `requires(...)`\n// condition. On a downstream project mutating six state-machine specs this\n// dragged the mutation score down to 21%, all of it noise rather than real\n// test-coverage gaps.\n//\n// Polly is the right place to ship this knowledge: it knows which of its\n// primitives are no-ops. This module is a Stryker `Ignore` plugin that marks\n// every mutant inside a verify callsite as ignored, plus a small config preset\n// consumers can spread into their `stryker.conf.*`.\n//\n// Usage (stryker.conf.json):\n//\n// {\n// \"plugins\": [\"@fairfox/polly/stryker\"],\n// \"ignorers\": [\"polly-verify\"]\n// }\n//\n// Or, in stryker.conf.mjs:\n//\n// import pollyStrykerPreset from \"@fairfox/polly/stryker\";\n// export default { ...pollyStrykerPreset, mutate: [\"src/**/*.ts\"] };\n//\n// Set `\"polly\": { \"excludeVerifyCallsites\": false }` to keep the plugin listed\n// but disable the ignoring (e.g. in a shared base config).\n\nimport type { StrykerOptions } from \"@stryker-mutator/api/core\";\nimport type { Ignorer, NodePath } from \"@stryker-mutator/api/ignore\";\nimport {\n commonTokens,\n declareFactoryPlugin,\n PluginKind,\n tokens,\n} from \"@stryker-mutator/api/plugin\";\n\n/**\n * The polly verify primitives whose argument expressions are runtime no-ops.\n * A mutation anywhere inside a call to one of these cannot be killed by a test,\n * so its mutants are excluded from scoring.\n */\nexport const VERIFY_PRIMITIVES: ReadonlySet<string> = new Set([\n \"requires\",\n \"ensures\",\n \"invariant\",\n \"stateConstraint\",\n \"forAllPeers\",\n \"somePeer\",\n]);\n\n/** The Stryker plugin name consumers reference in `ignorers`. */\nexport const POLLY_VERIFY_IGNORER_NAME = \"polly-verify\";\n\n// The Stryker API types `NodePath` as an empty interface; at runtime it is a\n// Babel NodePath. We narrow only the surface we touch — `isCallExpression()`\n// and `node.callee` — without pulling in @babel/types as a dependency.\ninterface BabelIdentifier {\n type: \"Identifier\";\n name: string;\n}\ninterface BabelMemberExpression {\n type: \"MemberExpression\";\n computed: boolean;\n property: { type: string; name?: string };\n}\ntype BabelCallee = BabelIdentifier | BabelMemberExpression | { type: string };\ninterface CallExpressionPath extends NodePath {\n isCallExpression(): boolean;\n node: { callee?: BabelCallee };\n}\n\n/** Narrow the opaque `NodePath` to the Babel surface we touch. */\nfunction isCallExpressionPath(path: NodePath): path is CallExpressionPath {\n return \"isCallExpression\" in path && typeof path.isCallExpression === \"function\";\n}\n\n/**\n * Resolve the simple name of a call's callee, covering both a bare call\n * (`ensures(...)`) and a member call (`verify.ensures(...)` / `polly.ensures(...)`).\n * Computed member access (`obj[\"ensures\"](...)`) is intentionally not matched —\n * it cannot be resolved statically and is not a pattern polly emits.\n */\nfunction isBabelIdentifier(callee: BabelCallee): callee is BabelIdentifier {\n return callee.type === \"Identifier\";\n}\n\nfunction isBabelMemberExpression(callee: BabelCallee): callee is BabelMemberExpression {\n return callee.type === \"MemberExpression\";\n}\n\nfunction calleeName(callee: BabelCallee | undefined): string | undefined {\n if (!callee) return undefined;\n if (isBabelIdentifier(callee)) {\n return callee.name;\n }\n if (isBabelMemberExpression(callee)) {\n if (!callee.computed && callee.property.type === \"Identifier\") {\n return callee.property.name;\n }\n }\n return undefined;\n}\n\n/**\n * A Stryker `Ignore` plugin. Stryker calls `shouldIgnore` on entering each AST\n * node; returning a message marks that node — and every descendant, until the\n * node is left — as ignored. So matching the verify `CallExpression` itself\n * covers its condition and message arguments in one shot.\n */\nexport class PollyVerifyIgnorer implements Ignorer {\n constructor(private readonly primitives: ReadonlySet<string> = VERIFY_PRIMITIVES) {}\n\n shouldIgnore(path: NodePath): string | undefined {\n if (!isCallExpressionPath(path) || !path.isCallExpression()) {\n return undefined;\n }\n const name = calleeName(path.node.callee);\n if (name && this.primitives.has(name)) {\n return (\n `Inside polly's ${name}(...) — a runtime no-op (compiled away in production, ` +\n `translated to a TLA+ assertion in verification). No test can observe or kill ` +\n `mutations here, so they are excluded from the score (polly#143).`\n );\n }\n return undefined;\n }\n}\n\n/** Reads `polly.excludeVerifyCallsites` (default: enabled) off Stryker options. */\nfunction isEnabled(options: StrykerOptions): boolean {\n const polly = options[\"polly\"];\n if (typeof polly !== \"object\" || polly === null) return true;\n return !(\"excludeVerifyCallsites\" in polly) || polly.excludeVerifyCallsites !== false;\n}\n\n// When disabled the plugin still loads but ignores nothing, so a shared config\n// can list it unconditionally and individual projects opt out via options.\nconst NOOP_IGNORER: Ignorer = { shouldIgnore: () => undefined };\n\nfunction pollyVerifyIgnorerFactory(options: StrykerOptions): Ignorer {\n return isEnabled(options) ? new PollyVerifyIgnorer() : NOOP_IGNORER;\n}\npollyVerifyIgnorerFactory.inject = tokens(commonTokens.options);\n\n/** The plugin array Stryker reads when this module is listed in `plugins`. */\nexport const strykerPlugins = [\n declareFactoryPlugin(PluginKind.Ignore, POLLY_VERIFY_IGNORER_NAME, pollyVerifyIgnorerFactory),\n];\n\n/**\n * A partial Stryker config that wires up the ignorer. Spread it into a\n * `stryker.conf.mjs` default export, or replicate its two keys in JSON.\n */\nexport const pollyStrykerPreset = {\n plugins: [\"@fairfox/polly/stryker\"],\n ignorers: [POLLY_VERIFY_IGNORER_NAME],\n} as const;\n\n// biome-ignore lint/style/noDefaultExport: ergonomic `import preset from \"@fairfox/polly/stryker\"`\nexport default pollyStrykerPreset;\n"
6
- ],
7
- "mappings": ";AAkCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYO,IAAM,oBAAyC,IAAI,IAAI;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,4BAA4B;AAqBzC,SAAS,oBAAoB,CAAC,MAA4C;AAAA,EACxE,OAAO,sBAAsB,QAAQ,OAAO,KAAK,qBAAqB;AAAA;AASxE,SAAS,iBAAiB,CAAC,QAAgD;AAAA,EACzE,OAAO,OAAO,SAAS;AAAA;AAGzB,SAAS,uBAAuB,CAAC,QAAsD;AAAA,EACrF,OAAO,OAAO,SAAS;AAAA;AAGzB,SAAS,UAAU,CAAC,QAAqD;AAAA,EACvE,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,IAAI,kBAAkB,MAAM,GAAG;AAAA,IAC7B,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,wBAAwB,MAAM,GAAG;AAAA,IACnC,IAAI,CAAC,OAAO,YAAY,OAAO,SAAS,SAAS,cAAc;AAAA,MAC7D,OAAO,OAAO,SAAS;AAAA,IACzB;AAAA,EACF;AAAA,EACA;AAAA;AAAA;AASK,MAAM,mBAAsC;AAAA,EACpB;AAAA,EAA7B,WAAW,CAAkB,aAAkC,mBAAmB;AAAA,IAArD;AAAA;AAAA,EAE7B,YAAY,CAAC,MAAoC;AAAA,IAC/C,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,iBAAiB,GAAG;AAAA,MAC3D;AAAA,IACF;AAAA,IACA,MAAM,OAAO,WAAW,KAAK,KAAK,MAAM;AAAA,IACxC,IAAI,QAAQ,KAAK,WAAW,IAAI,IAAI,GAAG;AAAA,MACrC,OACE,kBAAkB,+DAClB,kFACA;AAAA,IAEJ;AAAA,IACA;AAAA;AAEJ;AAGA,SAAS,SAAS,CAAC,SAAkC;AAAA,EACnD,MAAM,QAAQ,QAAQ;AAAA,EACtB,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAAM,OAAO;AAAA,EACxD,OAAO,EAAE,4BAA4B,UAAU,MAAM,2BAA2B;AAAA;AAKlF,IAAM,eAAwB,EAAE,cAAc,MAAG;AAAA,EAAG;AAAA,EAAU;AAE9D,SAAS,yBAAyB,CAAC,SAAkC;AAAA,EACnE,OAAO,UAAU,OAAO,IAAI,IAAI,qBAAuB;AAAA;AAEzD,0BAA0B,SAAS,OAAO,aAAa,OAAO;AAGvD,IAAM,iBAAiB;AAAA,EAC5B,qBAAqB,WAAW,QAAQ,2BAA2B,yBAAyB;AAC9F;AAMO,IAAM,qBAAqB;AAAA,EAChC,SAAS,CAAC,wBAAwB;AAAA,EAClC,UAAU,CAAC,yBAAyB;AACtC;AAGA,IAAe;",
8
- "debugId": "E1FCF7B89389BBE564756E2164756E21",
9
- "names": []
10
- }