cdk-serverless 3.3.2 → 3.3.3

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 (97) hide show
  1. package/.agents/tasks/task-dependency-cve-upgrade/2026-10-12-233633-review.md +98 -0
  2. package/.agents/tasks/task-dependency-cve-upgrade/2026-10-12-234937-review.md +86 -0
  3. package/.agents/tasks/task-dependency-cve-upgrade/context.json +24 -0
  4. package/.agents/tasks/task-dependency-cve-upgrade/features/FEAT-001.json +28 -0
  5. package/.agents/tasks/task-dependency-cve-upgrade/features/FEAT-002.json +33 -0
  6. package/.agents/tasks/task-dependency-cve-upgrade/task.json +7 -0
  7. package/docs/constructs/assets/hierarchy.js +1 -1
  8. package/docs/constructs/assets/highlight.css +1 -1
  9. package/docs/constructs/assets/main.js +1 -1
  10. package/docs/constructs/assets/style.css +18 -3
  11. package/docs/constructs/classes/AssetCdn.html +161 -20
  12. package/docs/constructs/classes/BaseApi.html +153 -13
  13. package/docs/constructs/classes/CognitoAuthentication.html +188 -22
  14. package/docs/constructs/classes/GraphQlApi.html +349 -23
  15. package/docs/constructs/classes/LambdaFunction.html +1074 -106
  16. package/docs/constructs/classes/McpAuth.html +152 -16
  17. package/docs/constructs/classes/McpCognitoAuth.html +152 -16
  18. package/docs/constructs/classes/RestApi.html +344 -37
  19. package/docs/constructs/classes/SingleTableDatastore.html +173 -19
  20. package/docs/constructs/classes/Workflow.html +170 -21
  21. package/docs/constructs/hierarchy.html +47 -1
  22. package/docs/constructs/index.html +75 -2
  23. package/docs/constructs/interfaces/AssetCdnProps.html +61 -5
  24. package/docs/constructs/interfaces/BaseApiProps.html +141 -20
  25. package/docs/constructs/interfaces/CognitoAuthenticationProps.html +135 -20
  26. package/docs/constructs/interfaces/GraphQlApiProps.html +164 -22
  27. package/docs/constructs/interfaces/ICognitoAuthentication.html +57 -3
  28. package/docs/constructs/interfaces/IJwtAuthentication.html +63 -5
  29. package/docs/constructs/interfaces/ISingleTableDatastore.html +57 -3
  30. package/docs/constructs/interfaces/JsResolverOptions.html +66 -6
  31. package/docs/constructs/interfaces/LambdaFunctionProps.html +126 -18
  32. package/docs/constructs/interfaces/LambdaTracingOptions.html +57 -4
  33. package/docs/constructs/interfaces/McpAuthCognitoOptions.html +75 -8
  34. package/docs/constructs/interfaces/McpAuthFunctions.html +76 -8
  35. package/docs/constructs/interfaces/McpAuthGenericOptions.html +66 -6
  36. package/docs/constructs/interfaces/McpAuthOptions.html +107 -15
  37. package/docs/constructs/interfaces/McpAuthProps.html +123 -18
  38. package/docs/constructs/interfaces/McpCognitoAuthProps.html +127 -19
  39. package/docs/constructs/interfaces/RestApiProps.html +237 -37
  40. package/docs/constructs/interfaces/SingleTableDatastoreProps.html +77 -9
  41. package/docs/constructs/interfaces/SingleTableDesign.html +72 -7
  42. package/docs/constructs/interfaces/VtlResolverOptions.html +62 -5
  43. package/docs/constructs/interfaces/WorkflowProps.html +63 -2
  44. package/docs/constructs/modules.html +44 -1
  45. package/docs/constructs/types/LambdaOptions.html +31 -1
  46. package/docs/lambda/assets/highlight.css +1 -1
  47. package/docs/lambda/assets/main.js +1 -1
  48. package/docs/lambda/assets/style.css +18 -3
  49. package/docs/lambda/classes/auth.ApiGatewayv1CognitoAuthorizer.html +248 -21
  50. package/docs/lambda/classes/auth.ApiGatewayv1JwtAuthorizer.html +247 -20
  51. package/docs/lambda/classes/auth.ApiGatewayv2CognitoAuthorizer.html +248 -21
  52. package/docs/lambda/classes/auth.ApiGatewayv2JwtAuthorizer.html +246 -20
  53. package/docs/lambda/classes/auth.AppSyncCognitoAuthorizer.html +242 -21
  54. package/docs/lambda/classes/auth.CognitoAuthorizer.html +235 -20
  55. package/docs/lambda/classes/auth.JwtAuthorizer.html +225 -20
  56. package/docs/lambda/classes/errors.BadRequestError.html +147 -11
  57. package/docs/lambda/classes/errors.ForbiddenError.html +147 -11
  58. package/docs/lambda/classes/errors.HttpError.html +154 -12
  59. package/docs/lambda/classes/errors.NotFoundError.html +147 -11
  60. package/docs/lambda/classes/errors.UnauthenticatedError.html +147 -11
  61. package/docs/lambda/functions/api.createAppSyncHandler.html +50 -3
  62. package/docs/lambda/functions/api.createHttpHandler.html +48 -2
  63. package/docs/lambda/functions/api.createOpenApiHandler.html +48 -2
  64. package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBody.html +48 -2
  65. package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBodyNoResponse.html +47 -2
  66. package/docs/lambda/hierarchy.html +52 -1
  67. package/docs/lambda/index.html +75 -2
  68. package/docs/lambda/interfaces/api.AppSyncHandlerContext.html +68 -3
  69. package/docs/lambda/interfaces/api.HttpHandlerContext.html +67 -3
  70. package/docs/lambda/interfaces/api.HttpResponseContext.html +61 -3
  71. package/docs/lambda/interfaces/api.Operation.html +61 -3
  72. package/docs/lambda/interfaces/api.OperationWithRequestBody.html +65 -3
  73. package/docs/lambda/modules/api.html +45 -1
  74. package/docs/lambda/modules/auth.html +37 -1
  75. package/docs/lambda/modules/errors.html +37 -1
  76. package/docs/lambda/modules.html +36 -1
  77. package/docs/lambda/types/api.APIGatewayv1Handler.html +34 -2
  78. package/docs/lambda/types/api.AppSyncHandler.html +51 -2
  79. package/docs/lambda/types/api.HttpHandler.html +52 -2
  80. package/docs/projen/assets/highlight.css +5 -12
  81. package/docs/projen/assets/main.js +1 -1
  82. package/docs/projen/assets/style.css +18 -3
  83. package/docs/projen/classes/Datastore.html +254 -18
  84. package/docs/projen/classes/GraphQlApi.html +238 -18
  85. package/docs/projen/classes/RestApi.html +325 -40
  86. package/docs/projen/classes/ServerlessProject.html +1021 -159
  87. package/docs/projen/classes/Workflow.html +288 -31
  88. package/docs/projen/hierarchy.html +29 -1
  89. package/docs/projen/index.html +75 -2
  90. package/docs/projen/interfaces/DatastoreOptions.html +54 -2
  91. package/docs/projen/interfaces/GraphQlApiOptions.html +54 -2
  92. package/docs/projen/interfaces/RestApiOptions.html +54 -2
  93. package/docs/projen/interfaces/ServerlessProjectOptions.html +2089 -692
  94. package/docs/projen/interfaces/WorkflowOptions.html +54 -2
  95. package/docs/projen/modules.html +44 -1
  96. package/docs/projen/variables/PACKAGE_NAME.html +31 -1
  97. package/package.json +26 -24
@@ -0,0 +1,98 @@
1
+ # Dependency and CVE upgrade for cdk-serverless (v1)
2
+
3
+ Projen-first dependency upgrade to clear npm audit advisories on the `cdk-serverless` construct library. The change bumps projen 0.99.47 -> 0.104.5 and jest 29 -> 30 (via `jestOptions.jestVersion='^30'`), raises the `aws-cdk-lib` peer lower bound 2.248.0 -> 2.273.0, and pins eight patched transitive deps through npm overrides added in `.projenrc.ts` via `project.package.addPackageResolutions`. All version levers live in `.projenrc.ts`; no generated file was hand-edited and `npx projen` leaves a clean tree. npm audit drops from 53 (1 critical, 40 high, 9 moderate, 3 low) to 26 (0 critical, 4 high, 20 moderate, 2 low). Build is green, 12 suites / 122 tests pass under jest 30.
4
+
5
+ Watch for: the `brace-expansion@^5.0.12` override is forced into `minimatch@3.1.5` consumers (eslint-plugin-import, eslint's config loaders, commit-and-tag-version's dotgitignore) that declare `brace-expansion@^1.1.7`. brace-expansion 5.x dropped the callable default export; minimatch 3.x calls `require('brace-expansion')(pattern)` and throws `expand is not a function` on any brace pattern (**confirmed**, reproduced below). The build passes only because no linted glob in this repo hits that path. This is latent breakage in dev tooling, not a runtime regression (confirmed: it does not reach the library's published `dependencies`).
6
+
7
+ **Verdict**: NEEDS_CHANGES
8
+
9
+ ## High-level view
10
+
11
+ The upgrade is structured correctly for a projen repo. Everything that controls versions is in `.projenrc.ts`, two consecutive `npx projen` runs are byte-identical, and the only working-tree churn beyond generated output is the orchestrator's own `task.json`. No source file changed, so the library's exported type surface is identical to `main`.
12
+
13
+ The eight overrides split cleanly by blast radius. Seven are either runtime-unreachable (they sit under devDeps and build tooling only) or stay within the major the consumer already expects. `fast-xml-parser@^5.7.0` resolves to 5.11.2 and is forced into `@aws-sdk/xml-builder@3.972.17`, which already declares `fast-xml-parser 5.5.8` — a within-major patch raise, safe. `handlebars@^4.7.10` clears the sole CRITICAL and comes via ts-jest, not typedoc as the plan assumed.
14
+
15
+ The outlier is `brace-expansion@^5.0.12`. It is forced across four different minimatch major lines (3.x, 5.x, 9.x, 10.x). minimatch 5.x and up declare `brace-expansion@^5.x` and are fine. minimatch 3.1.5 declares `^1.1.7` and uses the old callable export; under the forced 5.x it throws when expanding a brace pattern. The affected consumers are all dev/build tooling, so the published package is unaffected, but the override makes a lint or release tool fail the moment it processes a `{a,b}` glob.
16
+
17
+ The remaining-CVE accounting is accurate. Every leftover advisory offers only a major downgrade (`projen@0.92.10` for the braces/micromatch/fast-glob HIGH cluster, `jest@25` for the istanbul/js-yaml moderate cluster) or has no published fix (elliptic, jwk-to-pem). `npm audit fix --dry-run` confirms no non-breaking fix is being left on the table.
18
+
19
+ <details>
20
+ <summary>Issues (2)</summary>
21
+
22
+ 1. **brace-expansion 5.x breaks minimatch 3.x consumers** — the override forces `brace-expansion@5.0.12` into `minimatch@3.1.5` (eslint-plugin-import, eslint config loaders, commit-and-tag-version/dotgitignore), which calls the removed callable export and throws `expand is not a function` on any brace pattern. Narrow the override to the minimatch-5+ consumers, or confirm none of these tools ever processes a brace glob and record that as an accepted risk. The advisory it clears (brace-expansion DoS) is a HIGH, so dropping the override is not free — scope it instead.
23
+ 2. **Override comments overstate safety** — the `.projenrc.ts` comment on `brace-expansion` says "5.x ships dual CJS/ESM so forcing all three major lines is runtime-safe". It is forced into four major lines (not three) and is not safe for the 3.x line. Correct the comment so the next maintainer does not trust it.
24
+
25
+ </details>
26
+
27
+ <details>
28
+ <summary>Details</summary>
29
+
30
+ ### brace-expansion@5 forced into minimatch 3.x
31
+
32
+ The override resolves to a single `brace-expansion@5.0.12` across the whole tree, deduped under every minimatch instance:
33
+
34
+ ```
35
+ aws-cdk-lib -> minimatch@10.2.5 -> brace-expansion@5.0.12 (declares ^5.0.5, OK)
36
+ typedoc -> minimatch@10.2.5 -> brace-expansion@5.0.12 (OK)
37
+ openapi-typescript -> minimatch@5.1.9 -> brace-expansion@5.0.12 (OK)
38
+ ts-jest/jest -> minimatch@9.0.9 -> brace-expansion@5.0.12 (OK)
39
+ eslint -> minimatch@3.1.5 -> brace-expansion@5.0.12 (declares ^1.1.7, BREAKS)
40
+ eslint-plugin-import -> minimatch@3.1.5 -> brace-expansion@5.0.12 (BREAKS)
41
+ commit-and-tag-version -> dotgitignore -> minimatch@3.1.5 -> ... (BREAKS)
42
+ ```
43
+
44
+ brace-expansion 5.x changed the module shape. 1.x and 2.x did `module.exports = expand` (a callable). 5.x exports a namespace object `{ expand, EXPANSION_MAX, ... }`. minimatch 3.1.5 line 10 is `var expand = require('brace-expansion')` and line 271 is `return expand(pattern)`. Reproduced against the installed tree:
45
+
46
+ ```
47
+ $ node -e "const mm=require('./node_modules/eslint-plugin-import/node_modules/minimatch'); mm.braceExpand('{a,b}.js')"
48
+ THREW: expand is not a function
49
+ ```
50
+
51
+ The build and `npm run test` pass because the eslint config and import resolver in this repo never feed a brace pattern through `braceExpand`. That is incidental. A `.eslintrc` ignore pattern or a release-tool glob containing `{...}` would throw. Because the breakage is confined to build/dev tooling and the library's own `dependencies` (date-fns, js-yaml, jsonwebtoken, jwk-to-pem, lambda-log, @types/aws-lambda, constructs) pull no brace-expansion at all (`npm ls brace-expansion --omit=dev` is empty), consumers of the published package are not affected.
52
+
53
+ The fix is to scope the override to the consumers that actually need the 5.x patch rather than forcing it globally. npm nested overrides (`"minimatch": { "brace-expansion": "^5" }` under the specific parents, or targeting only minimatch ranges >=5) keep the 3.x consumers on their expected 1.x API while still clearing the DoS advisory on the modern minimatch instances. If scoping is impractical and the brace-pattern path is provably unused by every minimatch-3.x tool here, that is a defensible accepted risk, but it has to be stated, not left implicit behind a comment claiming blanket safety.
54
+
55
+ ### Overrides that are safe
56
+
57
+ The other seven overrides check out. `handlebars@^4.7.10` (resolved 4.7.10) clears the sole CRITICAL and arrives through ts-jest, correcting the plan's typedoc assumption. `fast-xml-parser@^5.7.0` resolves to 5.11.2 and is forced into `@aws-sdk/xml-builder@3.972.17`, which already declares `fast-xml-parser 5.5.8`; this is a within-5.x raise, not a major jump against the SDK's expectation, and it is reachable only through the `@aws-sdk/*` peerDeps a consumer supplies. `browserslist`, `fast-uri`, `baseline-browser-mapping`, `@babel/core`, and `@humanfs/node` all sit under devDeps/build tooling and resolve to a single version each.
58
+
59
+ ### jest 29 -> 30 genuinely exercises the suite
60
+
61
+ `npx jest --version` reports 30.5.2 and ts-jest stays at 29.4.14 (compatible with jest 30). The run reports `Test Suites: 12 passed, 12 total / Tests: 122 passed, 122 total` with a populated coverage table (per-file line/branch numbers across src/constructs, src/mcp-auth, src/projen, src/shared). Coverage output rules out silent skipping — skipped suites produce no coverage rows.
62
+
63
+ ### Remaining advisories require a downgrade or have no fix
64
+
65
+ `npm audit` after install reports exactly `{low:2, moderate:20, high:4, critical:0, total:26}`, matching the claim. Querying `fixAvailable` per advisory:
66
+
67
+ - braces, micromatch, fast-glob, projen (4 HIGH): only fix is `projen@0.92.10`, `isSemVerMajor: true` — a downgrade from 0.104.5 that reintroduces the cleared advisories. braces 3.0.3 is the latest published; no forward fix exists.
68
+ - The istanbul/js-yaml-3.x cluster (argparse, babel-plugin-istanbul, @istanbuljs/load-nyc-config, @jest/*, js-yaml, sprintf-js, ts-jest, etc.): only fix is `jest@25.0.0`, `isSemVerMajor: true` — again a downgrade. The chain is ts-jest -> @jest/transform -> babel-plugin-istanbul@8 (latest) -> @istanbuljs/load-nyc-config@1.1.0 (latest, hard-requires js-yaml@^3).
69
+ - elliptic, jwk-to-pem (2 LOW): `fixAvailable: false`.
70
+
71
+ `npm audit fix --dry-run` confirms no non-breaking advisory fix is being skipped: the only advisory-clearing changes it proposes are "install projen@0.92.10, which is a breaking change" and "install jest@25.0.0, which is a breaking change". The lone `change babel-plugin-istanbul 8.0.0 => 8.0.2` it lists is a within-major patch that does not reduce the count. The justification stands.
72
+
73
+ ### No synth drift, no hand-edited generated files
74
+
75
+ After a fresh `npm ci` and `npm run build`, running `npx projen` and `git status --porcelain` shows only `.agents/tasks/.../task.json` dirty, which is the orchestrator's task-state file (status flip to `completed` plus the verification block), not projen synth output. No projen-owned file (package.json, lockfile, tsconfig*, .eslintrc.json, .github/workflows/*, .projen/*, .mergify.yml) drifts. The generated-file changes in the diff (new `projenrc/tsconfig.json`, `test/tsconfig.json`, removed `tsconfig.dev.json`, `bump:releasable-commits` task, `stability: experimental` surfacing in package.json, workflow pin refreshes) are all consistent with the projen 0.104.5 bump and reproducible from `.projenrc.ts`.
76
+
77
+ ### Public API surface unchanged
78
+
79
+ `git diff main...HEAD --name-only -- 'src/**'` is empty — zero source changes, so the library's exported jsii/TypeScript types are byte-identical to `main`. The only API-facing changes are intended peer-range raises: `projen >=0.104.5 <1.0.0`, `aws-cdk-lib >=2.273.0 <3.0.0`, and `@aws-sdk/* ^3.1150.0` (raised by projen's upgrade task from the unversioned `.projenrc.ts` entries). All are forward lower-bound raises inside the existing major, matching the task's intent; none narrows the major range or removes an export.
80
+
81
+ ### Commit hygiene
82
+
83
+ Commit `79beb3a` uses a Conventional Commit subject (`fix: upgrade dependencies to resolve security advisories`) with a plain descriptive body and no `Co-authored-by` or tool-attribution trailer. The git author is the agent identity (`Kiro Agent <...@users.noreply.github.com>`), which is the committer identity, not a body trailer — compliant with the no-co-authorship rule.
84
+
85
+ </details>
86
+
87
+ <details>
88
+ <summary>File map</summary>
89
+
90
+ - `.projenrc.ts` — jest 30 opt-in, projen/aws-cdk-lib peer range raises, eight `addPackageResolutions` overrides. The only hand-edited file.
91
+ - `package.json`, `package-lock.json` — projen-generated: new overrides block, bumped devDeps, jest 30, raised peers.
92
+ - `.projen/*`, `tsconfig.json`, `projenrc/tsconfig.json`, `test/tsconfig.json`, `.eslintrc.json`, `.github/workflows/*`, `.mergify.yml`, `.gitattributes`, `.npmignore` — projen 0.104.5 synth output.
93
+ - `docs/**/*.html` — typedoc post-compile regeneration (generated).
94
+ - `.agents/tasks/task-dependency-cve-upgrade/*` — task state and per-feature findings (not shipped).
95
+
96
+ Full diff: `git diff main...HEAD`.
97
+
98
+ </details>
@@ -0,0 +1,86 @@
1
+ # Scoped brace-expansion override for minimatch 3.x consumers (v2)
2
+
3
+ Follow-up pass on the one blocking issue from v1. The coder split the `brace-expansion` resolution by minimatch major instead of forcing a single version tree-wide. The global `brace-expansion@^5.0.12` resolution stays (it satisfies minimatch 5.x/9.x/10.x, which declare `^5`), and a nested `overrides.minimatch@3 -> { "brace-expansion": "^1.1.21" }` entry pins the minimatch 3.1.5 subtree to the latest 1.x. 1.1.21 is past the 1.1.12 ReDoS fix (GHSA-v6h2-p8h4-qcjw) and keeps the callable default export that minimatch 3.1.5 calls. The misleading `.projenrc.ts` comment was rewritten to describe the actual split. The nested key is written through `project.package.file.addOverride` because `addPackageResolutions` only renders flat string overrides.
4
+
5
+ Watch for: nothing blocking. The v1 breakage is gone (**confirmed**, reproduced below). The 4 remaining HIGH advisories (braces, fast-glob, micromatch, projen) are the same accepted no-forward-fix cluster from v1, unchanged by this commit.
6
+
7
+ **Verdict**: APPROVED
8
+
9
+ ## High-level view
10
+
11
+ The fix resolves the v1 blocker. `require('.../eslint-plugin-import/node_modules/minimatch').braceExpand('{a,b}.js')` now returns `["a.js","b.js"]` instead of throwing `expand is not a function`. All four minimatch 3.x subtrees (eslint, @eslint/eslintrc, @eslint/config-array, dotgitignore) resolve `brace-expansion@1.1.21` with a callable export, while aws-cdk-lib, typedoc, openapi-typescript and ts-jest keep `brace-expansion@5.0.12` on their modern minimatch.
12
+
13
+ The HIGH ReDoS advisory stays cleared on both lines. `npm audit` is unchanged at 26 total (0 critical, 4 high, 20 moderate, 2 low), and `brace-expansion` does not appear in the advisory set — the only `brace`-prefixed entry is `braces`, the pre-existing accepted HIGH. 1.1.21 is past the 1.1.12 patch, so the 1.x subtree is not reintroducing the DoS.
14
+
15
+ The approach is projen-clean. The entire change lives in `.projenrc.ts`; `npx projen` leaves a clean tree (only the untracked v1 review artifact remains), and `package.json` renders the two overrides exactly as described. The lockfile churn is the expected materialization of `brace-expansion@1.1.21` plus its `balanced-match`/`concat-map` deps under each minimatch 3.x parent.
16
+
17
+ No regression elsewhere. `npm run build` exits 0, 12 suites / 122 tests pass, and the fix commit touches only `.projenrc.ts`, `package.json`, `package-lock.json` and the task-state JSON — no source, no hand-edited generated file.
18
+
19
+ <details>
20
+ <summary>Issues (0)</summary>
21
+
22
+ No blocking or new concerns. The single v1 blocker is resolved and the comment-accuracy nit is corrected.
23
+
24
+ </details>
25
+
26
+ <details>
27
+ <summary>Details</summary>
28
+
29
+ ### The scoped override clears the callable-export breakage
30
+
31
+ v1 threw because the global `brace-expansion@^5.0.12` deduped a namespace-object 5.x into minimatch 3.1.5, which does `require('brace-expansion')(pattern)`. The nested `minimatch@3` override now pins those subtrees to 1.1.21, which still ships `module.exports = expand`. Reproduced against the installed tree:
32
+
33
+ ```
34
+ $ node -e "require('./node_modules/eslint-plugin-import/node_modules/minimatch').braceExpand('{a,b}.js')"
35
+ RESULT: ["a.js","b.js"] isArray: true
36
+ typeof brace-expansion (3.x subtree): function
37
+ brace-expansion version (3.x subtree): 1.1.21
38
+ ```
39
+
40
+ Same result for the other three 3.x consumers:
41
+
42
+ ```
43
+ eslint -> ["x.ts","y.ts"]
44
+ @eslint/eslintrc -> ["x.ts","y.ts"]
45
+ @eslint/config-array -> ["x.ts","y.ts"]
46
+ dotgitignore -> ["x.ts","y.ts"]
47
+ ```
48
+
49
+ `npm ls brace-expansion --all` splits cleanly: 5 instances of 1.1.21 (all under minimatch 3.1.5) and 4 of 5.0.12 (under minimatch 5.1.9 / 9.0.9 / 10.2.5). No minimatch 3.x instance resolves 5.x anymore.
50
+
51
+ ### Advisory count holds, ReDoS does not return
52
+
53
+ `npm audit` after install: `{low:2, moderate:20, high:4, critical:0, total:26}` — identical to v1. The HIGH set is `["braces","fast-glob","micromatch","projen"]`, the same cluster v1 accepted as fixable only by a disallowed projen major downgrade. `brace-expansion` is absent from the advisory set; 1.1.21 is past the GHSA-v6h2-p8h4-qcjw fix, so pinning the 1.x subtree does not reopen the ReDoS. Both minimatch lines are patched.
54
+
55
+ ### Projen-clean, no hand-edited generated file
56
+
57
+ `npx projen` exits 0 and `git status --short` reports only the untracked `2026-10-12-233633-review.md` (the v1 artifact), which is not synth output. The rendered `package.json` overrides are exactly:
58
+
59
+ ```json
60
+ "brace-expansion": "^5.0.12",
61
+ "minimatch@3": { "brace-expansion": "^1.1.21" }
62
+ ```
63
+
64
+ The lockfile adds `brace-expansion@1.1.21` plus its `balanced-match@1.0.2` and `concat-map@0.0.1` deps nested under each minimatch 3.x parent (eslint, @eslint/eslintrc, @eslint/config-array, dotgitignore, eslint-plugin-import) — the correct materialization of the nested override, not a hand edit. `project.package.file.addOverride` is the right lever here, since `addPackageResolutions` cannot express a nested key.
65
+
66
+ ### Corrected comment is accurate
67
+
68
+ The old comment claimed "5.x ships dual CJS/ESM so forcing all three major lines is runtime-safe" — wrong on the count and on safety. The replacement states that the ReDoS spans the 1.x/2.x/5.x lines, that a single global 5.x override is not safe because 5.x dropped the callable default that minimatch 3.1.5 relies on, and that the override is therefore scoped by minimatch major with 3.x kept on a patched 1.1.21. That matches the rendered overrides and the observed resolution.
69
+
70
+ ### No regression
71
+
72
+ `npm run build` exits 0 and reports `Test Suites: 12 passed, 12 total` / `Tests: 122 passed, 122 total`, same as v1. The fix commit (`bffd6f3`) changes only `.projenrc.ts`, `package.json`, `package-lock.json` and `features/FEAT-002.json`; no file under `src/` is touched, so the published API surface is unchanged from v1.
73
+
74
+ </details>
75
+
76
+ <details>
77
+ <summary>File map</summary>
78
+
79
+ - `.projenrc.ts` — replaced the single `brace-expansion@^5.0.12` resolution with a scoped pair: global `addPackageResolutions('brace-expansion@^5.0.12')` plus `file.addOverride('overrides.minimatch@3', { 'brace-expansion': '^1.1.21' })`; rewrote the comment.
80
+ - `package.json` — projen-generated: `overrides` now carries the nested `minimatch@3` key.
81
+ - `package-lock.json` — projen-generated: `brace-expansion@1.1.21` + `balanced-match`/`concat-map` nested under each minimatch 3.x parent.
82
+ - `.agents/tasks/task-dependency-cve-upgrade/features/FEAT-002.json` — task-state findings update (not shipped).
83
+
84
+ Fix commit: `bffd6f3`. Full diff: `git diff main...HEAD`.
85
+
86
+ </details>
@@ -0,0 +1,24 @@
1
+ {
2
+ "project_type": "projen-managed TypeScript library (AWS CDK construct library, published to npm as cdk-serverless)",
3
+ "language": "TypeScript",
4
+ "build_system": "projen. Source of truth is .projenrc.ts at repo root. Generated files (package.json, tsconfig.json, .eslintrc.json, .github/workflows/*, .projen/*) must NOT be hand-edited; change .projenrc.ts then run 'npx projen'. jest/eslint/projen versions are controlled by projen's TypeScriptProject, not declared directly in deps.",
5
+ "package_manager": "npm (package-lock.json present; .projenrc.ts sets packageManager NPM). NOT pnpm.",
6
+ "node_setup": "npm is NOT on PATH by default. Source nvm first in EVERY shell: export NVM_DIR=\"$HOME/.nvm\"; . \"$NVM_DIR/nvm.sh\"; nvm use 22. Node v22.23.3, npm 11.4.2.",
7
+ "test_framework": "jest (bundled/configured by projen TypeScriptProject). Currently jest 29.7.0.",
8
+ "build_command": "npm run build (runs default projen build: pre-compile, compile, post-compile incl. docgen via typedoc, test, package)",
9
+ "test_command": "npm run test",
10
+ "verification_instructions": "1) source nvm, nvm use 22. 2) npm run build must exit 0. 3) npx projen must leave zero git diff (no synth drift). 4) npm audit must show reduced/zero fixable CVEs. Compare /tmp/audit-before.json metadata.vulnerabilities against after.",
11
+ "snapshot_or_generated_files": "All projen-owned files are generated by 'npx projen': package.json, package-lock.json (via install), tsconfig.json, tsconfig.dev.json, .eslintrc.json, .github/workflows/*.yml, .projen/deps.json, .projen/tasks.json, .projen/files.json, .mergify.yml, .gitattributes, .npmignore. Regenerate with 'npx projen'. docs/ is generated by typedoc during post-compile.",
12
+ "setup_instructions": "Source nvm (nvm use 22), then 'npm ci' to install from lockfile. node_modules is NOT present initially.",
13
+ "environment_constraints": "Network mode OPEN_INTERNET (npm registry reachable). npm must be loaded via nvm in every shell. Do not push or open PR (orchestrator handles publishing).",
14
+ "contribution_requirements": "Conventional Commits only (feat|fix|chore|docs|ci|style|refactor|test|revert). No agent co-authorship trailers. PR title must be semantic.",
15
+ "key_patterns": "Baseline: 53 CVEs (1 critical, 40 high, 9 moderate, 3 low) at projen 0.99.47 / jest 29 / aws-cdk-lib 2.248.0. Bulk of advisories are transitive devDeps controlled by projen: jest 29 chain (~25 high advisories, fixed by jest 30 which newer projen ships), projen's own tooling (fast-glob/micromatch/braces/shelljs/shx), handlebars (critical, via typedoc), markdown-it/linkify-it, js-yaml, @aws-sdk/* (fast-xml-parser/xml-builder), browserslist/@babel. npm audit's own 'fix: projen@0.92.10' hint is a DOWNGRADE and WRONG; the real fix is upgrading projen FORWARD. projen latest 0.x is 0.104.5 and satisfies the pinned peer range '>=0.99.47 <1.0.0'. Strategy: projen-first upgrade (bump projen within range, re-synth, build) then projen upgrade task for the rest, then raise pinned ranges in .projenrc.ts (aws-cdk-lib fix is 2.273.0 non-breaking) as needed, then re-synth. elliptic (low) and jwk-to-pem (low) report NO FIX without a major and may remain.",
16
+ "relevant_files": [
17
+ ".projenrc.ts",
18
+ "package.json",
19
+ "package-lock.json",
20
+ ".projen/deps.json",
21
+ ".projen/tasks.json"
22
+ ],
23
+ "directory_structure": "Repo root at /projects/sandbox/cdk-serverless. src/ (constructs, projen, lambda, shared, tests), test/, docs/ (generated), .projen/ (generated metadata), .github/workflows/ (generated)."
24
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "FEAT-001",
3
+ "type": "fix",
4
+ "description": "Projen-first upgrade. Bump projen to the latest compatible version within the pinned peer range '>=0.99.47 <1.0.0' (latest 0.x is 0.104.5), re-synthesize, and confirm the build stays green. A newer projen ships jest 30 and newer internal tooling (fast-glob/micromatch/braces/shelljs/shx), which clears the largest cluster of advisories. Projen must be settled and green BEFORE any other dependency moves, because a projen bump can reshape generated files (workflows, tasks, tsconfig, package.json).",
5
+ "status": "completed",
6
+ "steps": [
7
+ "In EVERY shell, source nvm first: export NVM_DIR=\"$HOME/.nvm\"; . \"$NVM_DIR/nvm.sh\"; nvm use 22. npm is not on PATH otherwise.",
8
+ "Confirm node_modules installed (npm ci if missing) and baseline build is green (already verified: it is).",
9
+ "Capture baseline audit if not already present: npm audit --json > /tmp/audit-before.json. Record metadata.vulnerabilities counts.",
10
+ "Edit .projenrc.ts peerDeps: change 'projen@>=0.99.47 <1.0.0' to raise the lower bound to the chosen compatible version, e.g. 'projen@>=0.104.5 <1.0.0' (pick the actual latest 0.x from 'npm view projen version'). Keep the '<1.0.0' upper bound so consumers are not forced across a major.",
11
+ "projen is a devDep via projenVersion / bootstrap too. Install the new projen so the local toolchain uses it: 'npm i -D projen@<version>' OR run the projen-managed path. Then re-synthesize with 'npx projen'.",
12
+ "Run 'npx projen' and confirm it exits 0. Inspect 'git diff' on generated files (package.json, .github/workflows/*, .projen/*, tsconfig*, .eslintrc.json). Sanity-check the diff looks like a projen version bump (e.g. jest 29 -> 30, updated action pins), not accidental config loss.",
13
+ "Run 'npm run build' and confirm exit 0. If projen API changes break .projenrc.ts synthesis or the build, fix .projenrc.ts accordingly, re-synth, re-build.",
14
+ "Record the projen old->new version and the jest version shift in findings."
15
+ ],
16
+ "acceptance_criteria": [
17
+ "projen peerDep lower bound in .projenrc.ts raised to the latest compatible 0.x version, upper bound still '<1.0.0'.",
18
+ "'npx projen' exits 0 with a diff consistent with a projen version bump.",
19
+ "'npm run build' exits 0 after the projen bump.",
20
+ "git diff after a final 'npx projen' shows no additional synth drift (tree settled)."
21
+ ],
22
+ "verification": [
23
+ "export NVM_DIR=\"$HOME/.nvm\"; . \"$NVM_DIR/nvm.sh\"; nvm use 22; npm run build (exit 0)",
24
+ "npx projen && git status --porcelain (no unexpected drift beyond the committed synth output)"
25
+ ],
26
+ "blocked_reason": null,
27
+ "findings": "projen bumped 0.99.47 -> 0.104.5 (latest 0.x, satisfies pinned peer '<1.0.0'). .projenrc.ts peerDep lower bound raised 'projen@>=0.99.47 <1.0.0' -> 'projen@>=0.104.5 <1.0.0', upper bound kept. 'npm i -D projen@0.104.5' then 'npx projen' exit 0; re-synth removed 114 pkgs / added 17. 'npm run build' exit 0 (compile, docgen, test, package). Final 'npx projen' settled: config tree byte-identical across two consecutive synths (only docs/*.html drift comes from typedoc post-compile, not synth). JEST SHIFT: NOT as the plan predicted. projen 0.104.5 still pins jest@^29.7.0 and ts-jest@^29.4.9 (both resolve to 29.x), so jest did NOT move to 30. jest-junit bumped ^16 -> ^17.0.0. Observed projen-driven generated changes: new projenrc/ dir (projenrc/tsconfig.json for the projenrc compile), tsconfig.dev.json removed, new test/tsconfig.json, updated workflow/action pins, .eslintrc/.mergify/.gitattributes/.npmignore refreshed, bump:releasable-commits task added. AUDIT (isolated projen bump only, before FEAT-002): /tmp/audit-before.json = 53 total (1 critical, 40 high, 9 moderate, 3 low); after projen bump = 48 total (1 critical, 37 high, 7 moderate, 3 low). Net -5 so far; the critical (handlebars via typedoc) and most high advisories remain for FEAT-002. NOTE: did NOT commit (per briefing, commit happens in FEAT-002)."
28
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "FEAT-002",
3
+ "type": "fix",
4
+ "description": "Upgrade the remaining dependencies to the latest compatible versions and clear the rest of the CVEs. Drive projen's own 'upgrade' task (which runs npm-check-updates with a compatible/peer-respecting target, installs, and re-synthesizes). Then raise any pinned ranges in .projenrc.ts whose fix did not stick because projen overwrites them from source (notably aws-cdk-lib: audit reports non-breaking fix at 2.273.0; current pin is '>=2.248.0 <3.0.0' so a plain install should pull it, but verify). Re-synth, keep the build green, and compare before/after npm audit.",
5
+ "status": "completed",
6
+ "steps": [
7
+ "Source nvm in every shell (export NVM_DIR=\"$HOME/.nvm\"; . \"$NVM_DIR/nvm.sh\"; nvm use 22).",
8
+ "IMPORTANT (jest cluster): projen 0.104.5 still pins jest 29, which leaves ~25 high advisories (@jest/*, jest-*, babel-jest, create-jest, expect, braces via jest). projen's TypeScriptProject accepts jestOptions.jestVersion (confirmed present in node_modules/projen/lib/javascript/jest.d.ts; projen handles ts-jest compatibility for jest 30). Set jestOptions: { jestVersion: '^30' } in .projenrc.ts and re-synth to move jest 29 -> 30. This is the projen-native fix for the jest advisories. After re-synth, verify jest and ts-jest resolve to 30.x / compatible and that 'npm run test' still passes (jest 30 has minor behavior changes).",
9
+ "Confirm the projen 'upgrade' task exists: inspect .projen/tasks.json or run 'npx projen --help'. Run 'npx projen upgrade' to bump compatible deps + install + re-synth as one unit.",
10
+ "If 'npx projen upgrade' is unavailable or incomplete, fall back to: 'npx npm-check-updates -u --target minor --peer' to raise ranges in generated package.json, then 'npm install', then 'npx projen'. Note that projen re-synth will REVERT bumps for any dep whose range is pinned in .projenrc.ts (peerDeps: dynamodb-onetable@2.7.7 is a hard pin; aws-cdk-lib and projen are ranged). For those, edit .projenrc.ts ranges directly then re-synth.",
11
+ "After upgrading, run 'npm audit --json > /tmp/audit-after.json'. Diff the metadata.vulnerabilities counts against /tmp/audit-before.json.",
12
+ "For any remaining advisories, determine whether the only fix requires a major/breaking bump (audit field fixAvailable.isSemVerMajor true) or has NO FIX (e.g. elliptic low, jwk-to-pem low). Record each remaining CVE with the reason it was not fixed (needs major bump of X, or no fix published, or pinned peer dep). Do NOT cross a major for a direct dep unless it is the only way to clear a HIGH/CRITICAL and it does not break the public API; if a major is needed, record it as a documented exception rather than forcing it.",
13
+ "If a transitive advisory needs a forced resolution and no compatible dependency bump fixes it, add an 'overrides' entry via .projenrc.ts (project.package.addPackageResolutions or the overrides field) and re-synth. Do NOT hand-edit package.json or the lockfile.",
14
+ "Run a final 'npx projen' to settle the tree, then 'npm run build' (compile + test + eslint + package) and confirm exit 0.",
15
+ "Confirm 'git status' shows a clean diff after the final 'npx projen' (no synth drift), so CI synth checks pass.",
16
+ "Stage and commit all changes with a Conventional Commit (e.g. 'fix: upgrade dependencies to resolve security advisories' or 'chore(deps): upgrade dependencies and clear CVEs'). No agent co-authorship trailers. Do NOT push or open a PR."
17
+ ],
18
+ "acceptance_criteria": [
19
+ "npm audit after the upgrade shows zero fixable CVEs; the only remaining advisories (if any) are those that require a major/breaking bump or have no published fix, each documented with its reason.",
20
+ "'npm run build' exits 0 (compile, test, eslint, package all pass).",
21
+ "'npx projen' leaves no git drift (CI synth check would pass).",
22
+ "All version-spec changes live in .projenrc.ts (and overrides there if used), never hand-edited generated files.",
23
+ "Changes committed with a Conventional Commit and no co-authorship trailer; not pushed."
24
+ ],
25
+ "verification": [
26
+ "export NVM_DIR=\"$HOME/.nvm\"; . \"$NVM_DIR/nvm.sh\"; nvm use 22; npm run build (exit 0)",
27
+ "npm audit --json > /tmp/audit-after.json; compare metadata.vulnerabilities to /tmp/audit-before.json (expect large reduction toward 0)",
28
+ "npx projen && git status --porcelain (clean, no synth drift)",
29
+ "git log --oneline -1 (conventional commit present)"
30
+ ],
31
+ "blocked_reason": null,
32
+ "findings": "AUDIT: before (post FEAT-001 projen bump) = 48 total (1 critical, 37 high, 7 moderate, 3 low). after FEAT-002 = 26 total (0 critical, 4 high, 20 moderate, 2 low). Net -22; CRITICAL cleared, highs 37->4, moderates 7->20 (the moderate rise is because jest 30 split the old jest-29 HIGH advisories into finer-grained MODERATE entries while removing the HIGH ones; raw severity counts dropped overall). vs original baseline (53) that is -27.\n\nDEPENDENCY BUMPS APPLIED (all via .projenrc.ts, no hand-edited generated files):\n1. jest 29.7.0 -> 30.5.2 via jestOptions.jestVersion='^30' (projen-native; cleared the ~25 jest-29 HIGH advisories). ts-jest stayed 29.4.14 (projen controls it; compatible with jest 30).\n2. aws-cdk-lib peerDep lower bound raised '>=2.248.0' -> '>=2.273.0' (projen pins the devDep to the lower bound, so a plain install kept 2.248.0; raising the bound pulled 2.273.0). Cleared the aws-cdk-lib HIGH (OS command injection in NodejsFunction bundling + CDK code advisories). Still <3.0.0, non-breaking.\n3. projen upgrade task ('npx projen upgrade') ran and bumped remaining compatible deps + reinstalled + re-synthed.\n4. npm overrides added via project.package.addPackageResolutions in .projenrc.ts: handlebars@^4.7.10 (CRITICAL, via ts-jest), browserslist@^4.29.3 (HIGH), fast-uri@^3.1.8 (HIGH), fast-xml-parser@^5.7.0 (MODERATE, via @aws-sdk; resolved 5.11.2), baseline-browser-mapping@^2.11.0 (MODERATE), @babel/core@^7.29.7 (LOW), @humanfs/node@^0.16.8 (MODERATE). NOTE: handlebars came via ts-jest, not typedoc as the plan assumed (typedoc 0.28.20 is already latest and clean).\n\nREVIEW-FIX (iteration 1, review 2026-10-12-233633, verdict NEEDS_CHANGES): the brace-expansion override was being forced globally as ^5.0.12 across every minimatch major line (3.x/5.x/9.x/10.x). brace-expansion 5.x removed the callable default export (1.x/2.x did `module.exports = expand`; 5.x exports a namespace object), so minimatch 3.1.5 consumers (eslint, eslint-plugin-import, commit-and-tag-version's dotgitignore) that do `require('brace-expansion')(pattern)` threw \"expand is not a function\" on any brace pattern. Confirmed before fix: `node -e \"require('./node_modules/eslint-plugin-import/node_modules/minimatch').braceExpand('{a,b}.js')\"` THREW. Build passed only because no glob processed in this repo hit that path (latent dev/build-tooling breakage; does not reach the library's published dependencies). FIX: scoped the override by minimatch major instead of forcing one version tree-wide. Kept the global `brace-expansion@^5.0.12` (satisfies minimatch 5.x/9.x/10.x which declare ^5) via addPackageResolutions, and added a nested override `overrides.minimatch@3 -> { \"brace-expansion\": \"^1.1.21\" }` via project.package.file.addOverride (addPackageResolutions only renders flat string overrides, so the nested key is written through the package.json ObjectFile API). brace-expansion 1.1.21 is the latest 1.x release, past the 1.1.12 ReDoS fix for GHSA-v6h2-p8h4-qcjw, and preserves the callable export (`typeof require('brace-expansion') === 'function'`). Result: minimatch 3.x consumers resolve brace-expansion@1.1.21; minimatch 5.x/9.x/10.x resolve 5.0.12 (verified via `npm ls brace-expansion --all`). The HIGH brace-expansion advisory stays cleared on both lines. Repro after fix returns `[ 'a.js', 'b.js' ]`, does not throw. Also corrected the misleading .projenrc.ts comment (it previously claimed \"5.x ships dual CJS/ESM so forcing all three major lines is runtime-safe\" - wrong on both counts: four minimatch lines, and not safe for the 3.x line). npm audit after fix is unchanged at 26 total (0 critical, 4 high, 20 moderate, 2 low). `npm run build` exits 0; 12 suites / 122 tests pass. Two consecutive `npx projen` runs leave no synth drift.\n\nVERIFICATION: 'npm run build' exit 0 (compile + docgen + test + eslint + package); 12 suites / 122 tests pass; eslint 0 errors (2 typedoc warnings only). Two consecutive 'npx projen' runs are byte-identical (no synth drift) so CI synth check passes. docs/*.html churn is typedoc post-compile output (generated), not synth drift.\n\nREMAINING 26 ADVISORIES - all unfixable without a disallowed downgrade or have no published fix, each documented:\nA) jest/istanbul/js-yaml-3.x cluster (18 MODERATE: @jest/*, jest-*, babel-jest, babel-plugin-istanbul, @istanbuljs/load-nyc-config, js-yaml, argparse, sprintf-js, ts-jest). Root cause: ts-jest -> @jest/transform -> babel-plugin-istanbul@8 (latest) -> @istanbuljs/load-nyc-config@1.1.0 (latest) -> js-yaml@3.15.2. load-nyc-config@1.1.0 hard-requires js-yaml@^3 (uses the removed safeLoad API). An override to js-yaml@4 is REJECTED by npm with EOVERRIDE because js-yaml is also a direct dependency, and would break istanbul coverage anyway. npm's only offered fix is jest@25 (a MAJOR DOWNGRADE that reintroduces the jest-29 highs just cleared). No forward fix published -> accepted.\nB) braces/micromatch/fast-glob/projen (4 HIGH). Root cause: projen@0.104.5 -> fast-glob@3.3.3 -> micromatch@4.0.8 -> braces@3.0.3. braces advisory GHSA-vfj7-8cjw-p6xm covers '<=3.0.3' and 3.0.3 is the LATEST published braces (no 3.0.4+/4.x exists); fast-glob 3.3.3 and micromatch 4.0.8 are also latest. npm's only suggestion is downgrading projen to 0.92.10 (a MAJOR DOWNGRADE, bogus, reintroduces cleared CVEs). No forward fix published -> accepted.\nC) elliptic (LOW) and jwk-to-pem (LOW): NO FIX published by upstream -> accepted (jwk-to-pem depends on elliptic; both low severity).\n\nNo remaining advisory has a non-breaking, non-downgrade fix available. All fixable CVEs cleared, including the sole CRITICAL. Committed with Conventional Commit; not pushed, no PR (orchestrator handles publishing)."
33
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "task_id": "task-dependency-cve-upgrade",
3
+ "task_description": "Upgrade all dependencies of the projen-managed cdk-serverless library to the latest compatible versions to clear the CVEs reported by npm audit. Projen-first: bump projen within its pinned peer range and re-synth, then upgrade the rest via projen's upgrade task, raising pinned ranges in .projenrc.ts where needed. Keep npm run build green and leave no projen synth drift. Report before/after audit counts, the dependency bumps, any CVEs that cannot be fixed without a major/breaking bump, and final build/test results. Branch left committed locally; orchestrator opens the PR.",
4
+ "status": "in_progress",
5
+ "feature_order": ["FEAT-001", "FEAT-002"],
6
+ "blocked_reason": null
7
+ }
@@ -1 +1 @@
1
- window.hierarchyData = "eJyVk0tzwiAUhf/LXWNVEglhZ9uZTnd97RwXNF4NUwQHcOXkv3ewtqU1k8eGBZx7z/ngcgJnbfAgVrwkRUYoJUWWrwk43GqsgrLGgzgBpXE1co8g4PHO7owKdnkMNZqgKhl1QOBDmQ0IumAEjk6DAGUCuq2s0E/bi27qsNdAoNLSexAQ/GYSu0x+KuNhrfTGoQGxyst1QyAvkzTdYeaUf4c5e6CfjgvytdEQKLLE9FZ6XB7Uk7MH3wOeSsfiZgtG2GwemXl5bd9FeZH0cP1144wwyqNbtmCJ3YOTh/pZDwT+px7AHA15u2EX4q+q//XYbJ70f0EfBtKk0mEojPJrqy6Oi2TICObpN3xVZqfxTb5rvJdB+mAd9v3CtpqxU1nk5xkp8pSzM0wL9Kgglxtomk+59IzW"
1
+ window.hierarchyData = "eJyVk8tuwyAQRf9l1qRJjG1sdmkrVd31tYuyoPYkRiUQAVlF/veKNG1pY/mxYQF35t4DwwmsMd4BXxclYZQkCWGUbQhY3CqsvDTaAT9BkoRViz0Ch8c7s9PSm9XRN6i9rETQAYEPqWvgSZYTOFoFHKT2aLeiQjfvLrpp/F4BgUoJ54CDd/UsdJn9VIbDRqraoga+TstNSyAtozT9YZZJ8R3m7IFuPi3I10ZLgNHI9FY4XB3kkzUHNwAeS6fi0qwk+SINzEV5bd9HeZEMcP11K0qS02Vwo1ls92DFoXlWI4H/qUcwB8Oi27AP8Vc1/Hr5Io36v6DzI2li6TiUnC6vrfo4LpIxI8jib/gq9U7hm3hXeC+8cN5YHPqFXTVTp5Jl5xlhWczZG6YDelKQyw207SfbLozW"
@@ -96,4 +96,4 @@
96
96
  .hl-8 { color: var(--hl-8); }
97
97
  .hl-9 { color: var(--hl-9); }
98
98
  .hl-10 { color: var(--hl-10); }
99
- pre, code { background: var(--code-background); }
99
+ pre, code, math[display='block'] { background: var(--code-background); }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse","folder":"Folder","search_index_not_available":"The search index is not available","search_no_results_found_for_0":"No results found for {0}","kind_1":"Project","kind_2":"Module","kind_4":"Namespace","kind_8":"Enumeration","kind_16":"Enumeration Member","kind_32":"Variable","kind_64":"Function","kind_128":"Class","kind_256":"Interface","kind_512":"Constructor","kind_1024":"Property","kind_2048":"Method","kind_4096":"Call Signature","kind_8192":"Index Signature","kind_16384":"Constructor Signature","kind_32768":"Parameter","kind_65536":"Type Literal","kind_131072":"Type Parameter","kind_262144":"Accessor","kind_524288":"Get Signature","kind_1048576":"Set Signature","kind_2097152":"Type Alias","kind_4194304":"Reference","kind_8388608":"Document"};
3
- "use strict";(()=>{var Ke=Object.create;var he=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var et=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ze(e))!Ye.call(t,i)&&i!==n&&he(t,i,{get:()=>e[i],enumerable:!(r=Ge(e,i))||r.enumerable});return t};var nt=(t,e,n)=>(n=t!=null?Ke(Xe(t)):{},tt(e||!t||!t.__esModule?he(n,"default",{value:t,enumerable:!0}):n,t));var ye=et((me,ge)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=(function(e){return function(n){e.console&&console.warn&&console.warn(n)}})(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var s=r[i],o=e[s];if(Array.isArray(o)){n[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){n[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return n},t.FieldRef=function(e,n,r){this.docRef=e,this.fieldName=n,this._stringValue=r},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var n=e.indexOf(t.FieldRef.joiner);if(n===-1)throw"malformed field ref string";var r=e.slice(0,n),i=e.slice(n+1);return new t.FieldRef(i,r,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var n=0;n<this.length;n++)this.elements[e[n]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var n,r,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(n=this,r=e):(n=e,r=this),i=Object.keys(n.elements);for(var o=0;o<i.length;o++){var a=i[o];a in r.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,n){var r=0;for(var i in e)i!="_index"&&(r+=Object.keys(e[i]).length);var s=(n-r+.5)/(r+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,n){this.str=e||"",this.metadata=n||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(n){return n},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,n){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(f){return new t.Token(t.utils.asString(f).toLowerCase(),t.utils.clone(n))});for(var r=e.toString().toLowerCase(),i=r.length,s=[],o=0,a=0;o<=i;o++){var c=r.charAt(o),l=o-a;if(c.match(t.tokenizer.separator)||o==i){if(l>0){var d=t.utils.clone(n)||{};d.position=[a,l],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
3
+ (()=>{var Ke=Object.create;var he=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var et=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}};var tt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ze(e))!Ye.call(t,i)&&i!==n&&he(t,i,{get:()=>e[i],enumerable:!(r=Ge(e,i))||r.enumerable});return t};var nt=(t,e,n)=>(n=t!=null?Ke(Xe(t)):{},tt(e||!t||!t.__esModule?he(n,"default",{value:t,enumerable:!0}):n,t));var ye=et((me,ge)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=(function(e){return function(n){e.console&&console.warn&&console.warn(n)}})(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var s=r[i],o=e[s];if(Array.isArray(o)){n[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){n[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return n},t.FieldRef=function(e,n,r){this.docRef=e,this.fieldName=n,this._stringValue=r},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var n=e.indexOf(t.FieldRef.joiner);if(n===-1)throw"malformed field ref string";var r=e.slice(0,n),i=e.slice(n+1);return new t.FieldRef(i,r,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var n=0;n<this.length;n++)this.elements[e[n]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var n,r,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(n=this,r=e):(n=e,r=this),i=Object.keys(n.elements);for(var o=0;o<i.length;o++){var a=i[o];a in r.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,n){var r=0;for(var i in e)i!="_index"&&(r+=Object.keys(e[i]).length);var s=(n-r+.5)/(r+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,n){this.str=e||"",this.metadata=n||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(n){return n},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,n){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(f){return new t.Token(t.utils.asString(f).toLowerCase(),t.utils.clone(n))});for(var r=e.toString().toLowerCase(),i=r.length,s=[],o=0,a=0;o<=i;o++){var c=r.charAt(o),l=o-a;if(c.match(t.tokenizer.separator)||o==i){if(l>0){var d=t.utils.clone(n)||{};d.position=[a,l],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
4
4
  `,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r<n;r++){for(var i=this._stack[r],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var c=0;c<a.length;c++)s.push(a[c]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,n){var r=new t.Token(e,n);return this.run([r]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var n=0,r=this.elements.length/2,i=r-n,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(n=s),o>e&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,n){this.upsert(e,n,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,n,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],n):this.elements.splice(i,0,e,n)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,n=this.elements.length,r=1;r<n;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var n=0,r=this.elements,i=e.elements,s=r.length,o=i.length,a=0,c=0,l=0,d=0;l<s&&d<o;)a=r[l],c=i[d],a<c?l+=2:a>c?d+=2:a==c&&(n+=r[l+1]*i[d+1],l+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n<this.elements.length;n+=2,r++)e[r]=this.elements[n];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=(function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},n={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},r="[^aeiou]",i="[aeiouy]",s=r+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,c="^("+s+")?"+o+s+"("+o+")?$",l="^("+s+")?"+o+s+o+s,d="^("+s+")?"+i,f=new RegExp(a),p=new RegExp(l),v=new RegExp(c),E=new RegExp(d),L=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,T=/^(.+?)(ed|ing)$/,w=/.$/,C=/(at|bl|iz)$/,O=new RegExp("([^aeiouylsz])\\1$"),j=new RegExp("^"+s+i+"[^aeiouwxy]$"),N=/^(.+?[^aeiou])y$/,q=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,W=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,V=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,z=/^(.+?)(s|t)(ion)$/,_=/^(.+?)e$/,U=/ll$/,J=new RegExp("^"+s+i+"[^aeiouwxy]$"),B=function(u){var y,P,k,h,x,Q,H;if(u.length<3)return u;if(k=u.substr(0,1),k=="y"&&(u=k.toUpperCase()+u.substr(1)),h=L,x=m,h.test(u)?u=u.replace(h,"$1$2"):x.test(u)&&(u=u.replace(x,"$1$2")),h=g,x=T,h.test(u)){var b=h.exec(u);h=f,h.test(b[1])&&(h=w,u=u.replace(h,""))}else if(x.test(u)){var b=x.exec(u);y=b[1],x=E,x.test(y)&&(u=y,x=C,Q=O,H=j,x.test(u)?u=u+"e":Q.test(u)?(h=w,u=u.replace(h,"")):H.test(u)&&(u=u+"e"))}if(h=N,h.test(u)){var b=h.exec(u);y=b[1],u=y+"i"}if(h=q,h.test(u)){var b=h.exec(u);y=b[1],P=b[2],h=f,h.test(y)&&(u=y+e[P])}if(h=W,h.test(u)){var b=h.exec(u);y=b[1],P=b[2],h=f,h.test(y)&&(u=y+n[P])}if(h=V,x=z,h.test(u)){var b=h.exec(u);y=b[1],h=p,h.test(y)&&(u=y)}else if(x.test(u)){var b=x.exec(u);y=b[1]+b[2],x=p,x.test(y)&&(u=y)}if(h=_,h.test(u)){var b=h.exec(u);y=b[1],h=p,x=v,Q=J,(h.test(y)||x.test(y)&&!Q.test(y))&&(u=y)}return h=U,x=p,h.test(u)&&x.test(u)&&(h=w,u=u.replace(h,"")),k=="y"&&(u=k.toLowerCase()+u.substr(1)),u};return function(A){return A.update(B)}})(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var n=e.reduce(function(r,i){return r[i]=i,r},{});return function(r){if(r&&n[r.toString()]!==r.toString())return r}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(n){return n.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var n=new t.TokenSet.Builder,r=0,i=e.length;r<i;r++)n.insert(e[r]);return n.finish(),n.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,n){for(var r=new t.TokenSet,i=[{node:r,editsRemaining:n,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}if(s.str.length==0&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")n.edges[o]=n,n.final=a;else{var c=new t.TokenSet;c.final=a,n.edges[o]=c,n=c}}return r},t.TokenSet.prototype.toArray=function(){for(var e=[],n=[{prefix:"",node:this}];n.length;){var r=n.pop(),i=Object.keys(r.node.edges),s=i.length;r.node.final&&(r.prefix.charAt(0),e.push(r.prefix));for(var o=0;o<s;o++){var a=i[o];n.push({prefix:r.prefix.concat(a),node:r.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",n=Object.keys(this.edges).sort(),r=n.length,i=0;i<r;i++){var s=n[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var n=new t.TokenSet,r=void 0,i=[{qNode:e,output:n,node:this}];i.length;){r=i.pop();for(var s=Object.keys(r.qNode.edges),o=s.length,a=Object.keys(r.node.edges),c=a.length,l=0;l<o;l++)for(var d=s[l],f=0;f<c;f++){var p=a[f];if(p==d||d=="*"){var v=r.node.edges[p],E=r.qNode.edges[d],L=v.final&&E.final,m=void 0;p in r.output.edges?(m=r.output.edges[p],m.final=m.final||L):(m=new t.TokenSet,m.final=L,r.output.edges[p]=m),i.push({qNode:E,output:m,node:v})}}}return n},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var n,r=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)r++;this.minimize(r),this.uncheckedNodes.length==0?n=this.root:n=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=r;i<e.length;i++){var s=new t.TokenSet,o=e[i];n.edges[o]=s,this.uncheckedNodes.push({parent:n,char:o,child:s}),n=s}n.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var n=this.uncheckedNodes.length-1;n>=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),c=0;c<this.fields.length;c++)i[this.fields[c]]=new t.Vector;e.call(n,n);for(var c=0;c<n.clauses.length;c++){var l=n.clauses[c],d=null,f=t.Set.empty;l.usePipeline?d=this.pipeline.runString(l.term,{fields:l.fields}):d=[l.term];for(var p=0;p<d.length;p++){var v=d[p];l.term=v;var E=t.TokenSet.fromClause(l),L=this.tokenSet.intersect(E).toArray();if(L.length===0&&l.presence===t.Query.presence.REQUIRED){for(var m=0;m<l.fields.length;m++){var g=l.fields[m];o[g]=t.Set.empty}break}for(var T=0;T<L.length;T++)for(var w=L[T],C=this.invertedIndex[w],O=C._index,m=0;m<l.fields.length;m++){var g=l.fields[m],j=C[g],N=Object.keys(j),q=w+"/"+g,W=new t.Set(N);if(l.presence==t.Query.presence.REQUIRED&&(f=f.union(W),o[g]===void 0&&(o[g]=t.Set.complete)),l.presence==t.Query.presence.PROHIBITED){a[g]===void 0&&(a[g]=t.Set.empty),a[g]=a[g].union(W);continue}if(i[g].upsert(O,l.boost,function(Ue,Je){return Ue+Je}),!s[q]){for(var V=0;V<N.length;V++){var z=N[V],_=new t.FieldRef(z,g),U=j[z],J;(J=r[_])===void 0?r[_]=new t.MatchData(w,g,U):J.add(w,g,U)}s[q]=!0}}}if(l.presence===t.Query.presence.REQUIRED)for(var m=0;m<l.fields.length;m++){var g=l.fields[m];o[g]=o[g].intersect(f)}}for(var B=t.Set.complete,A=t.Set.empty,c=0;c<this.fields.length;c++){var g=this.fields[c];o[g]&&(B=B.intersect(o[g])),a[g]&&(A=A.union(a[g]))}var u=Object.keys(r),y=[],P=Object.create(null);if(n.isNegated()){u=Object.keys(this.fieldVectors);for(var c=0;c<u.length;c++){var _=u[c],k=t.FieldRef.fromString(_);r[_]=new t.MatchData}}for(var c=0;c<u.length;c++){var k=t.FieldRef.fromString(u[c]),h=k.docRef;if(B.contains(h)&&!A.contains(h)){var x=this.fieldVectors[k],Q=i[k.fieldName].similarity(x),H;if((H=P[h])!==void 0)H.score+=Q,H.matchData.combine(r[k]);else{var b={ref:h,score:Q,matchData:r[k]};P[h]=b,y.push(b)}}}return y.sort(function(We,ze){return ze.score-We.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(r){return[r,this.invertedIndex[r]]},this),n=Object.keys(this.fieldVectors).map(function(r){return[r,this.fieldVectors[r].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:n,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var n={},r={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,c=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var l=0;l<i.length;l++){var d=i[l],f=d[0],p=d[1];r[f]=new t.Vector(p)}for(var l=0;l<o.length;l++){var d=o[l],v=d[0],E=d[1];a.insert(v),s[v]=E}return a.finish(),n.fields=e.fields,n.fieldVectors=r,n.invertedIndex=s,n.tokenSet=a.root,n.pipeline=c,new t.Index(n)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,n){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=n||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,c=a?a(e):e[o],l=this.tokenizer(c,{fields:[o]}),d=this.pipeline.run(l),f=new t.FieldRef(r,o),p=Object.create(null);this.fieldTermFrequencies[f]=p,this.fieldLengths[f]=0,this.fieldLengths[f]+=d.length;for(var v=0;v<d.length;v++){var E=d[v];if(p[E]==null&&(p[E]=0),p[E]+=1,this.invertedIndex[E]==null){var L=Object.create(null);L._index=this.termIndex,this.termIndex+=1;for(var m=0;m<i.length;m++)L[i[m]]=Object.create(null);this.invertedIndex[E]=L}this.invertedIndex[E][o][r]==null&&(this.invertedIndex[E][o][r]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var T=this.metadataWhitelist[g],w=E.metadata[T];this.invertedIndex[E][o][r][T]==null&&(this.invertedIndex[E][o][r][T]=[]),this.invertedIndex[E][o][r][T].push(w)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),n=e.length,r={},i={},s=0;s<n;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,r[a]||(r[a]=0),r[a]+=this.fieldLengths[o]}for(var c=Object.keys(this._fields),s=0;s<c.length;s++){var l=c[s];r[l]=r[l]/i[l]}this.averageFieldLength=r},t.Builder.prototype.createFieldVectors=function(){for(var e={},n=Object.keys(this.fieldTermFrequencies),r=n.length,i=Object.create(null),s=0;s<r;s++){for(var o=t.FieldRef.fromString(n[s]),a=o.fieldName,c=this.fieldLengths[o],l=new t.Vector,d=this.fieldTermFrequencies[o],f=Object.keys(d),p=f.length,v=this._fields[a].boost||1,E=this._documents[o.docRef].boost||1,L=0;L<p;L++){var m=f[L],g=d[m],T=this.invertedIndex[m]._index,w,C,O;i[m]===void 0?(w=t.idf(this.invertedIndex[m],this.documentCount),i[m]=w):w=i[m],C=w*((this._k1+1)*g)/(this._k1*(1-this._b+this._b*(c/this.averageFieldLength[a]))+g),C*=v,C*=E,O=Math.round(C*1e3)/1e3,l.insert(T,O)}e[o]=l}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var n=Array.prototype.slice.call(arguments,1);n.unshift(this),e.apply(this,n)},t.MatchData=function(e,n,r){for(var i=Object.create(null),s=Object.keys(r||{}),o=0;o<s.length;o++){var a=s[o];i[a]=r[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][n]=i)},t.MatchData.prototype.combine=function(e){for(var n=Object.keys(e.metadata),r=0;r<n.length;r++){var i=n[r],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],c=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var l=0;l<c.length;l++){var d=c[l];this.metadata[i][a][d]==null?this.metadata[i][a][d]=e.metadata[i][a][d]:this.metadata[i][a][d]=this.metadata[i][a][d].concat(e.metadata[i][a][d])}}}},t.MatchData.prototype.add=function(e,n,r){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][n]=r;return}if(!(n in this.metadata[e])){this.metadata[e][n]=r;return}for(var i=Object.keys(r),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][n]?this.metadata[e][n][o]=this.metadata[e][n][o].concat(r[o]):this.metadata[e][n][o]=r[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,n){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(n))},this),this;var r=n||{};return r.term=e.toString(),this.clause(r),this},t.QueryParseError=function(e,n,r){this.name="QueryParseError",this.message=e,this.start=n,this.end=r},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],n=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(n,r)),n=r+1;return e.push(this.str.slice(n,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}if(s.type===t.QueryLexer.TERM)return t.QueryParser.parseTerm;var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},(function(e,n){typeof define=="function"&&define.amd?define(n):typeof me=="object"?ge.exports=n():e.lunr=n()})(this,function(){return t})})()});var M,G={getItem(){return null},setItem(){}},K;try{K=localStorage,M=K}catch{K=G,M=G}var S={getItem:t=>M.getItem(t),setItem:(t,e)=>M.setItem(t,e),disableWritingLocalStorage(){M=G},disable(){localStorage.clear(),M=G},enable(){M=K}};window.TypeDoc||={disableWritingLocalStorage(){S.disableWritingLocalStorage()},disableLocalStorage:()=>{S.disable()},enableLocalStorage:()=>{S.enable()}};window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse",search_index_not_available:"The search index is not available",search_no_results_found_for_0:"No results found for {0}",folder:"Folder",kind_1:"Project",kind_2:"Module",kind_4:"Namespace",kind_8:"Enumeration",kind_16:"Enumeration Member",kind_32:"Variable",kind_64:"Function",kind_128:"Class",kind_256:"Interface",kind_512:"Constructor",kind_1024:"Property",kind_2048:"Method",kind_4096:"Call Signature",kind_8192:"Index Signature",kind_16384:"Constructor Signature",kind_32768:"Parameter",kind_65536:"Type Literal",kind_131072:"Type Parameter",kind_262144:"Accessor",kind_524288:"Get Signature",kind_1048576:"Set Signature",kind_2097152:"Type Alias",kind_4194304:"Reference",kind_8388608:"Document"};var pe=[];function X(t,e){pe.push({selector:e,constructor:t})}var Z=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){pe.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!rt(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function rt(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var fe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var Ie=nt(ye(),1);async function R(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}var Y="closing",ae="tsd-overlay";function it(){let t=Math.abs(window.innerWidth-document.documentElement.clientWidth);document.body.style.overflow="hidden",document.body.style.paddingRight=`${t}px`}function st(){document.body.style.removeProperty("overflow"),document.body.style.removeProperty("padding-right")}function Ee(t,e){t.addEventListener("animationend",()=>{t.classList.contains(Y)&&(t.classList.remove(Y),document.getElementById(ae)?.remove(),t.close(),st())}),t.addEventListener("cancel",n=>{n.preventDefault(),ve(t)}),e?.closeOnClick&&document.addEventListener("click",n=>{t.open&&!t.contains(n.target)&&ve(t)},!0)}function xe(t){if(t.open)return;let e=document.createElement("div");e.id=ae,document.body.appendChild(e),t.showModal(),it()}function ve(t){if(!t.open)return;document.getElementById(ae)?.classList.add(Y),t.classList.add(Y)}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var be=document.head.appendChild(document.createElement("style"));be.dataset.for="filters";var le={};function Le(t){for(let e of t.split(/\s+/))if(le.hasOwnProperty(e)&&!le[e])return!0;return!1}var ee=class extends I{key;value;constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),be.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; }
5
5
  `,this.app.updateIndexVisibility()}fromLocalStorage(){let e=S.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){S.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),le[`tsd-is-${this.el.name}`]=this.value,this.app.filterChanged(),this.app.updateIndexVisibility()}};var we=0;async function Se(t,e){if(!window.searchData)return;let n=await R(window.searchData);t.data=n,t.index=Ie.Index.load(n.index),e.innerHTML=""}function _e(){let t=document.getElementById("tsd-search-trigger"),e=document.getElementById("tsd-search"),n=document.getElementById("tsd-search-input"),r=document.getElementById("tsd-search-results"),i=document.getElementById("tsd-search-script"),s=document.getElementById("tsd-search-status");if(!(t&&e&&n&&r&&i&&s))throw new Error("Search controls missing");let o={base:document.documentElement.dataset.base};o.base.endsWith("/")||(o.base+="/"),i.addEventListener("error",()=>{let a=window.translations.search_index_not_available;Pe(s,a)}),i.addEventListener("load",()=>{Se(o,s)}),Se(o,s),ot({trigger:t,searchEl:e,results:r,field:n,status:s},o)}function ot(t,e){let{field:n,results:r,searchEl:i,status:s,trigger:o}=t;Ee(i,{closeOnClick:!0});function a(){xe(i),n.setSelectionRange(0,n.value.length)}o.addEventListener("click",a),n.addEventListener("input",fe(()=>{at(r,n,s,e)},200)),n.addEventListener("keydown",l=>{if(r.childElementCount===0||l.ctrlKey||l.metaKey||l.altKey)return;let d=n.getAttribute("aria-activedescendant"),f=d?document.getElementById(d):null;if(f){let p=!1,v=!1;switch(l.key){case"Home":case"End":case"ArrowLeft":case"ArrowRight":v=!0;break;case"ArrowDown":case"ArrowUp":p=l.shiftKey;break}(p||v)&&ke(n)}if(!l.shiftKey)switch(l.key){case"Enter":f?.querySelector("a")?.click();break;case"ArrowUp":Te(r,n,f,-1),l.preventDefault();break;case"ArrowDown":Te(r,n,f,1),l.preventDefault();break}});function c(){ke(n)}n.addEventListener("change",c),n.addEventListener("blur",c),n.addEventListener("click",c),document.body.addEventListener("keydown",l=>{if(l.altKey||l.metaKey||l.shiftKey)return;let d=l.ctrlKey&&l.key==="k",f=!l.ctrlKey&&!ut()&&l.key==="/";(d||f)&&(l.preventDefault(),a())})}function at(t,e,n,r){if(!r.index||!r.data)return;t.innerHTML="",n.innerHTML="",we+=1;let i=e.value.trim(),s;if(i){let a=i.split(" ").map(c=>c.length?`*${c}*`:"").join(" ");s=r.index.search(a).filter(({ref:c})=>{let l=r.data.rows[Number(c)].classes;return!l||!Le(l)})}else s=[];if(s.length===0&&i){let a=window.translations.search_no_results_found_for_0.replace("{0}",` "<strong>${te(i)}</strong>" `);Pe(n,a);return}for(let a=0;a<s.length;a++){let c=s[a],l=r.data.rows[Number(c.ref)],d=1;l.name.toLowerCase().startsWith(i.toLowerCase())&&(d*=10/(1+Math.abs(l.name.length-i.length))),c.score*=d}s.sort((a,c)=>c.score-a.score);let o=Math.min(10,s.length);for(let a=0;a<o;a++){let c=r.data.rows[Number(s[a].ref)],d=`<svg width="20" height="20" class="tsd-kind-icon" aria-label="${window.translations[`kind_${c.kind}`].replaceAll('"',"&quot;")}"><use href="#icon-${c.icon||c.kind}"></use></svg>`,f=Ce(c.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(f+=` (score: ${s[a].score.toFixed(2)})`),c.parent&&(f=`<span class="parent">
6
6
  ${Ce(c.parent,i)}.</span>${f}`);let p=document.createElement("li");p.id=`tsd-search:${we}-${a}`,p.role="option",p.ariaSelected="false",p.classList.value=c.classes??"";let v=document.createElement("a");v.tabIndex=-1,v.href=r.base+c.url,v.innerHTML=d+`<span class="text">${f}</span>`,p.append(v),t.appendChild(p)}}function Te(t,e,n,r){let i;if(r===1?i=n?.nextElementSibling||t.firstElementChild:i=n?.previousElementSibling||t.lastElementChild,i!==n){if(!i||i.role!=="option"){console.error("Option missing");return}i.ariaSelected="true",i.scrollIntoView({behavior:"smooth",block:"nearest"}),e.setAttribute("aria-activedescendant",i.id),n?.setAttribute("aria-selected","false")}}function ke(t){let e=t.getAttribute("aria-activedescendant");(e?document.getElementById(e):null)?.setAttribute("aria-selected","false"),t.setAttribute("aria-activedescendant","")}function Ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(te(t.substring(s,o)),`<mark>${te(t.substring(o,o+r.length))}</mark>`),s=o+r.length,o=n.indexOf(r,s);return i.push(te(t.substring(s))),i.join("")}var lt={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#039;",'"':"&quot;"};function te(t){return t.replace(/[&<>"'"]/g,e=>lt[e])}function Pe(t,e){t.innerHTML=e?`<div>${e}</div>`:""}var ct=["button","checkbox","file","hidden","image","radio","range","reset","submit"];function ut(){let t=document.activeElement;return t?t.isContentEditable||t.tagName==="TEXTAREA"||t.tagName==="SEARCH"?!0:t.tagName==="INPUT"&&!ct.includes(t.type):!1}var D="mousedown",Me="mousemove",$="mouseup",ne={x:0,y:0},Qe=!1,ce=!1,dt=!1,F=!1,Oe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Oe?"is-mobile":"not-mobile");Oe&&"ontouchstart"in document.documentElement&&(dt=!0,D="touchstart",Me="touchmove",$="touchend");document.addEventListener(D,t=>{ce=!0,F=!1;let e=D=="touchstart"?t.targetTouches[0]:t;ne.y=e.pageY||0,ne.x=e.pageX||0});document.addEventListener(Me,t=>{if(ce&&!F){let e=D=="touchstart"?t.targetTouches[0]:t,n=ne.x-(e.pageX||0),r=ne.y-(e.pageY||0);F=Math.sqrt(n*n+r*r)>10}});document.addEventListener($,()=>{ce=!1});document.addEventListener("click",t=>{Qe&&(t.preventDefault(),t.stopImmediatePropagation(),Qe=!1)});var re=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener($,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(D,n=>this.onDocumentPointerDown(n)),document.addEventListener($,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){F||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!F&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var ue=new Map,de=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;S.setItem(this.key,e.toString())}},ie=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(ue.has(i))s=ue.get(i);else{let o=S.getItem(i),a=o?o==="true":this.el.open;s=new de(i,a),ue.set(i,s)}s.add(this.el)}};function He(t){let e=S.getItem("tsd-theme")||"os";t.value=e,Ae(e),t.addEventListener("change",()=>{S.setItem("tsd-theme",t.value),Ae(t.value)})}function Ae(t){document.documentElement.dataset.theme=t}var se;function Ne(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Re),Re())}async function Re(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await R(window.navigationData);se=document.documentElement.dataset.base,se.endsWith("/")||(se+="/"),t.innerHTML="";for(let n of e)Ve(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Ve(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='<svg width="20" height="20"><use href="#icon-chevronDown"></use></svg>',De(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let c=a.appendChild(document.createElement("ul"));c.className="tsd-nested-navigation";for(let l of t.children)Ve(l,c,i)}else De(t,r,t.class)}function De(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));if(r.href=se+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&(r.classList.add("current"),r.ariaCurrent="page"),t.kind){let i=window.translations[`kind_${t.kind}`].replaceAll('"',"&quot;");r.innerHTML=`<svg width="20" height="20" class="tsd-kind-icon" aria-label="${i}"><use href="#icon-${t.icon||t.kind}"></use></svg>`}r.appendChild(Fe(t.text,document.createElement("span")))}else{let r=e.appendChild(document.createElement("span")),i=window.translations.folder.replaceAll('"',"&quot;");r.innerHTML=`<svg width="20" height="20" class="tsd-kind-icon" aria-label="${i}"><use href="#icon-folder"></use></svg>`,r.appendChild(Fe(t.text,document.createElement("span")))}}function Fe(t,e){let n=t.split(/(?<=[^A-Z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[_-])(?=[^_-])/);for(let r=0;r<n.length;++r)r!==0&&e.appendChild(document.createElement("wbr")),e.appendChild(document.createTextNode(n[r]));return e}var oe=document.documentElement.dataset.base;oe.endsWith("/")||(oe+="/");function $e(){document.querySelector(".tsd-full-hierarchy")?ht():document.querySelector(".tsd-hierarchy")&&pt()}function ht(){document.addEventListener("click",r=>{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=gt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function pt(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Be),Be())}async function Be(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await R(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),ft(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function ft(t,e,n){let r=e.roots.filter(i=>mt(e,i,n));for(let i of r)t.appendChild(je(e,i,n))}function je(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let c=t.reflections[a],l=s.appendChild(document.createElement("a"));l.textContent=c.name,l.href=oe+c.url,l.className=c.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=oe+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let c=je(t,a,n,r);c&&o.appendChild(c)}}return r.delete(e),s}function mt(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function gt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.innerHTML='<use href="#icon-chevronDown"></use>',t}X(re,"a[data-toggle]");X(ie,".tsd-accordion");X(ee,".tsd-filter-item input[type=checkbox]");var qe=document.getElementById("tsd-theme");qe&&He(qe);var yt=new Z;Object.defineProperty(window,"app",{value:yt});_e();Ne();$e();"virtualKeyboard"in navigator&&(navigator.virtualKeyboard.overlaysContent=!0);})();
@@ -504,8 +504,15 @@
504
504
  body {
505
505
  background: var(--color-background);
506
506
  font-family:
507
- -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans",
508
- Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
507
+ -apple-system,
508
+ BlinkMacSystemFont,
509
+ "Segoe UI",
510
+ "Noto Sans",
511
+ Helvetica,
512
+ Arial,
513
+ sans-serif,
514
+ "Apple Color Emoji",
515
+ "Segoe UI Emoji";
509
516
  font-size: 16px;
510
517
  color: var(--color-text);
511
518
  margin: 0;
@@ -531,6 +538,14 @@
531
538
  scroll-margin-block: calc(var(--dim-header-height) + 0.5rem);
532
539
  }
533
540
 
541
+ math[display="block"] {
542
+ position: relative;
543
+ padding: 10px;
544
+ border: 1px solid var(--color-accent);
545
+ border-radius: 0.8em;
546
+ margin-bottom: 8px;
547
+ }
548
+
534
549
  code,
535
550
  pre {
536
551
  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
@@ -1047,7 +1062,7 @@
1047
1062
 
1048
1063
  cursor: pointer;
1049
1064
  }
1050
- .tsd-accordion-summary a {
1065
+ .tsd-accordion-summary > a {
1051
1066
  width: calc(100% - 1.5rem);
1052
1067
  }
1053
1068
  .tsd-accordion-summary > * {