niceeval 0.13.2 → 0.13.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.
- package/dist/agents/bub.cjs +4 -4
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +2 -2
- package/dist/agents/bub.d.mts +2 -2
- package/dist/agents/bub.d.ts +2 -2
- package/dist/agents/claude-code-native.cjs +213 -0
- package/dist/agents/claude-code-native.cjs.map +1 -0
- package/dist/agents/claude-code-native.d.cts +5 -0
- package/dist/agents/claude-code-native.d.mts +5 -0
- package/dist/agents/claude-code-native.d.ts +5 -0
- package/dist/agents/claude-code-native.js +6 -0
- package/dist/agents/claude-code-native.js.map +1 -0
- package/dist/agents/claude-code.cjs +26 -80
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex-app-server.cjs +314 -0
- package/dist/agents/codex-app-server.cjs.map +1 -0
- package/dist/agents/codex-app-server.d.cts +9 -0
- package/dist/agents/codex-app-server.d.mts +9 -0
- package/dist/agents/codex-app-server.d.ts +9 -0
- package/dist/agents/codex-app-server.js +6 -0
- package/dist/agents/codex-app-server.js.map +1 -0
- package/dist/agents/codex.cjs +19 -68
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +3 -3
- package/dist/agents/codex.d.mts +3 -3
- package/dist/agents/codex.d.ts +3 -3
- package/dist/agents/index.cjs +3 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +1 -0
- package/dist/agents/index.d.mts +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.js +84 -82
- package/dist/agents/index.mjs +84 -82
- package/dist/agents/managed-jsonl.cjs +207 -0
- package/dist/agents/managed-jsonl.cjs.map +1 -0
- package/dist/agents/managed-jsonl.d.cts +39 -0
- package/dist/agents/managed-jsonl.d.mts +39 -0
- package/dist/agents/managed-jsonl.d.ts +39 -0
- package/dist/agents/managed-jsonl.js +6 -0
- package/dist/agents/managed-jsonl.js.map +1 -0
- package/dist/agents/managed-process.cjs +31 -0
- package/dist/agents/managed-process.cjs.map +1 -0
- package/dist/agents/managed-process.d.cts +3 -0
- package/dist/agents/managed-process.d.mts +3 -0
- package/dist/agents/managed-process.d.ts +3 -0
- package/dist/agents/managed-process.js +6 -0
- package/dist/agents/managed-process.js.map +1 -0
- package/dist/agents/omp.cjs +18 -1
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +11 -4
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +8 -0
- package/dist/agents/types.d.mts +8 -0
- package/dist/agents/types.d.ts +8 -0
- package/dist/analysis/bindings.cjs +74 -19
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +534 -156
- package/dist/analysis/bindings.d.mts +534 -156
- package/dist/analysis/bindings.d.ts +534 -156
- package/dist/analysis/domain-view.cjs.map +1 -1
- package/dist/analysis/domain-view.d.cts +137 -8
- package/dist/analysis/domain-view.d.mts +137 -8
- package/dist/analysis/domain-view.d.ts +137 -8
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +1 -1
- package/dist/analysis/index.d.mts +1 -1
- package/dist/analysis/index.d.ts +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +62 -0
- package/dist/assertions/api.d.mts +62 -0
- package/dist/assertions/api.d.ts +62 -0
- package/dist/assertions/judge.cjs +56 -5
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +66 -42
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +13 -0
- package/dist/assertions/match.d.mts +13 -0
- package/dist/assertions/match.d.ts +13 -0
- package/dist/assertions/record/attachment.cjs +104 -33
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/attachment.d.cts +294 -57
- package/dist/assertions/record/attachment.d.mts +294 -57
- package/dist/assertions/record/attachment.d.ts +294 -57
- package/dist/assertions/record/codec.cjs +91 -17
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/codec.d.cts +280 -52
- package/dist/assertions/record/codec.d.mts +280 -52
- package/dist/assertions/record/codec.d.ts +280 -52
- package/dist/assertions/record/index.js +2 -0
- package/dist/assertions/record/model.cjs +16 -0
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +120 -13
- package/dist/assertions/record/model.d.mts +120 -13
- package/dist/assertions/record/model.d.ts +120 -13
- package/dist/assertions/record/model.js +2 -0
- package/dist/assertions/record/producer.cjs +70 -50
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +8 -7
- package/dist/assertions/record/producer.d.mts +8 -7
- package/dist/assertions/record/producer.d.ts +8 -7
- package/dist/assertions/runtime.cjs +49 -7
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/application.cjs +40 -0
- package/dist/cli/application.cjs.map +1 -0
- package/dist/cli/application.d.cts +129 -0
- package/dist/cli/application.d.mts +129 -0
- package/dist/cli/application.d.ts +129 -0
- package/dist/cli/application.js +24 -0
- package/dist/cli/application.js.map +1 -0
- package/dist/cli/bootstrap.cjs +10 -4
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/node-application.cjs +123 -0
- package/dist/cli/node-application.cjs.map +1 -0
- package/dist/cli/node-application.d.cts +14 -0
- package/dist/cli/node-application.d.mts +14 -0
- package/dist/cli/node-application.d.ts +14 -0
- package/dist/cli/node-application.js +26 -0
- package/dist/cli/node-application.js.map +1 -0
- package/dist/cli/program.cjs +2807 -0
- package/dist/cli/program.cjs.map +1 -0
- package/dist/cli/program.d.cts +352 -0
- package/dist/cli/program.d.mts +352 -0
- package/dist/cli/program.d.ts +352 -0
- package/dist/cli/program.js +36 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/project-configuration.cjs +134 -0
- package/dist/cli/project-configuration.cjs.map +1 -0
- package/dist/cli/project-configuration.d.cts +64 -0
- package/dist/cli/project-configuration.d.mts +64 -0
- package/dist/cli/project-configuration.d.ts +64 -0
- package/dist/cli/project-configuration.js +22 -0
- package/dist/cli/project-configuration.js.map +1 -0
- package/dist/cli/record.cjs +20 -4
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +3 -3
- package/dist/cli/record.d.mts +3 -3
- package/dist/cli/record.d.ts +3 -3
- package/dist/cli.cjs +19 -3130
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +2 -148
- package/dist/cli.d.mts +2 -148
- package/dist/cli.d.ts +2 -148
- package/dist/cli.js +22 -30
- package/dist/context/assert-first.cjs +21 -15
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +1 -0
- package/dist/context/assert-first.d.mts +1 -0
- package/dist/context/assert-first.d.ts +1 -0
- package/dist/context/attempt-resources.cjs +13 -0
- package/dist/context/attempt-resources.cjs.map +1 -0
- package/dist/context/attempt-resources.d.cts +3 -0
- package/dist/context/attempt-resources.d.mts +3 -0
- package/dist/context/attempt-resources.d.ts +3 -0
- package/dist/context/attempt-resources.js +8 -0
- package/dist/context/attempt-resources.js.map +1 -0
- package/dist/context/session.cjs +4 -3
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +1 -0
- package/dist/context/session.d.mts +1 -0
- package/dist/context/session.d.ts +1 -0
- package/dist/eval/record/verdict.cjs +3 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -6
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +1 -0
- package/dist/experiment/host/index.d.mts +1 -0
- package/dist/experiment/host/index.d.ts +1 -0
- package/dist/load-config.cjs +13 -4
- package/dist/load-config.cjs.map +1 -1
- package/dist/load-config.d.cts +4 -3
- package/dist/load-config.d.mts +4 -3
- package/dist/load-config.d.ts +4 -3
- package/dist/load-config.js +4 -2
- package/dist/o11y/parsers/codex.cjs +29 -7
- package/dist/o11y/parsers/codex.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +0 -2
- package/dist/record/codec/core.d.mts +0 -2
- package/dist/record/codec/core.d.ts +0 -2
- package/dist/record/codec/identifiers.cjs +2 -3
- package/dist/record/codec/identifiers.cjs.map +1 -1
- package/dist/record/codec/identifiers.d.cts +1 -2
- package/dist/record/codec/identifiers.d.mts +1 -2
- package/dist/record/codec/identifiers.d.ts +1 -2
- package/dist/record/codec/identifiers.js +10 -12
- package/dist/record/codec/index.js +42 -44
- package/dist/record/definition/attachment.cjs +1 -0
- package/dist/record/definition/attachment.cjs.map +1 -1
- package/dist/record/definition/attachment.d.cts +14 -0
- package/dist/record/definition/attachment.d.mts +14 -0
- package/dist/record/definition/attachment.d.ts +14 -0
- package/dist/record/family/assertions-v1.cjs +104 -0
- package/dist/record/family/assertions-v1.cjs.map +1 -0
- package/dist/record/family/assertions-v1.d.cts +2 -0
- package/dist/record/family/assertions-v1.d.mts +2 -0
- package/dist/record/family/assertions-v1.d.ts +2 -0
- package/dist/record/family/assertions-v1.js +6 -0
- package/dist/record/family/assertions-v1.js.map +1 -0
- package/dist/record/family/assertions.cjs +16 -5
- package/dist/record/family/assertions.cjs.map +1 -1
- package/dist/record/family/assertions.d.cts +510 -56
- package/dist/record/family/assertions.d.mts +510 -56
- package/dist/record/family/assertions.d.ts +510 -56
- package/dist/record/family/assertions.js +14 -10
- package/dist/record/family/catalog.cjs +17 -1
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +1292 -104
- package/dist/record/family/catalog.d.mts +1292 -104
- package/dist/record/family/catalog.d.ts +1292 -104
- package/dist/record/family/catalog.js +22 -20
- package/dist/record/family/index.js +144 -138
- package/dist/record/family/observability-v1.cjs +5 -0
- package/dist/record/family/observability-v1.cjs.map +1 -1
- package/dist/record/family/observability.cjs +1 -1
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/host/runtime.cjs +323 -173
- package/dist/record/host/runtime.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +9 -7
- package/dist/record/host/types.d.mts +9 -7
- package/dist/record/host/types.d.ts +9 -7
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -2
- package/dist/record/model/core.d.mts +1 -2
- package/dist/record/model/core.d.ts +1 -2
- package/dist/record/model/definition.cjs +1 -2
- package/dist/record/model/definition.cjs.map +1 -1
- package/dist/record/model/definition.d.cts +1 -7
- package/dist/record/model/definition.d.mts +1 -7
- package/dist/record/model/definition.d.ts +1 -7
- package/dist/record/model/identifiers.cjs +2 -3
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -3
- package/dist/record/model/identifiers.d.mts +1 -3
- package/dist/record/model/identifiers.d.ts +1 -3
- package/dist/record/model/identifiers.js +36 -38
- package/dist/record/model/index.js +60 -62
- package/dist/record/platform/node.cjs +17 -7
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +8 -3
- package/dist/record/platform/services.d.mts +8 -3
- package/dist/record/platform/services.d.ts +8 -3
- package/dist/record/reader/format.cjs +16 -65
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +5 -9
- package/dist/record/reader/format.d.mts +5 -9
- package/dist/record/reader/format.d.ts +5 -9
- package/dist/record/reader/index.js +10 -8
- package/dist/record/reader/runtime.cjs +63 -32
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +40 -4
- package/dist/record/reader/runtime.d.mts +40 -4
- package/dist/record/reader/runtime.d.ts +40 -4
- package/dist/record/reader/runtime.js +6 -4
- package/dist/report/assets/enhance.js +5 -5
- package/dist/report/assets/styles.css +190 -24
- package/dist/report/built-in/result-components.cjs +8 -5
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/standard.cjs +3 -0
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +2 -0
- package/dist/report/built-in/standard.d.mts +2 -0
- package/dist/report/built-in/standard.d.ts +2 -0
- package/dist/report/client-dist/app.js +53 -0
- package/dist/report/components/attempt-detail/compute.cjs +108 -231
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +11 -45
- package/dist/report/components/attempt-detail/compute.d.mts +11 -45
- package/dist/report/components/attempt-detail/compute.d.ts +11 -45
- package/dist/report/components/attempt-detail/compute.js +2 -4
- package/dist/report/components/attempt-detail/content.cjs +4 -4
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/attempt-detail/validate.cjs +47 -4
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +9 -15
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/content.cjs +53 -40
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +1 -3
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/experiment-detail/compute.cjs +4 -6
- package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
- package/dist/report/components/summaries/index.cjs +5 -1
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/definition/cell.cjs +14 -7
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +4 -0
- package/dist/report/definition/cell.d.mts +4 -0
- package/dist/report/definition/cell.d.ts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
- package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.js +6 -0
- package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
- package/dist/report/definition/primitives/conversation.cjs +7 -0
- package/dist/report/definition/primitives/conversation.cjs.map +1 -1
- package/dist/report/definition/primitives/conversation.d.cts +2 -0
- package/dist/report/definition/primitives/conversation.d.mts +2 -0
- package/dist/report/definition/primitives/conversation.d.ts +2 -0
- package/dist/report/definition/primitives/turn-trace.cjs +53 -3
- package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +14 -1
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +16 -8
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +6 -0
- package/dist/report/definition/report.d.mts +6 -0
- package/dist/report/definition/report.d.ts +6 -0
- package/dist/report/definition/table-text.cjs +12 -3
- package/dist/report/definition/table-text.cjs.map +1 -1
- package/dist/report/definition/table-text.d.cts +6 -1
- package/dist/report/definition/table-text.d.mts +6 -1
- package/dist/report/definition/table-text.d.ts +6 -1
- package/dist/report/execution/model.cjs +6 -14
- package/dist/report/execution/model.cjs.map +1 -1
- package/dist/report/execution/model.d.cts +5 -10
- package/dist/report/execution/model.d.mts +5 -10
- package/dist/report/execution/model.d.ts +5 -10
- package/dist/report/execution/model.js +6 -6
- package/dist/report/execution/paths.cjs +0 -11
- package/dist/report/execution/paths.cjs.map +1 -1
- package/dist/report/execution/paths.d.cts +0 -1
- package/dist/report/execution/paths.d.mts +0 -1
- package/dist/report/execution/paths.d.ts +0 -1
- package/dist/report/execution/paths.js +6 -8
- package/dist/report/host/execute.cjs +13 -22
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +1 -4
- package/dist/report/host/execute.d.mts +1 -4
- package/dist/report/host/execute.d.ts +1 -4
- package/dist/report/host/from-record.cjs +3 -0
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/from-record.d.cts +4 -1
- package/dist/report/host/from-record.d.mts +4 -1
- package/dist/report/host/from-record.d.ts +4 -1
- package/dist/report/host/site-assets.cjs +1 -2
- package/dist/report/host/site-assets.cjs.map +1 -1
- package/dist/report/host/site-assets.d.cts +0 -1
- package/dist/report/host/site-assets.d.mts +0 -1
- package/dist/report/host/site-assets.d.ts +0 -1
- package/dist/report/host/site-assets.js +2 -4
- package/dist/report/host/static.cjs +71 -346
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/host/static.d.cts +1 -3
- package/dist/report/host/static.d.mts +1 -3
- package/dist/report/host/static.d.ts +1 -3
- package/dist/report/host/static.js +2 -2
- package/dist/report/host/view-session.cjs.map +1 -1
- package/dist/report/host/view-session.d.cts +1 -1
- package/dist/report/host/view-session.d.mts +1 -1
- package/dist/report/host/view-session.d.ts +1 -1
- package/dist/report/model/locale.cjs +1 -1
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -1
- package/dist/report/model/locale.d.mts +1 -1
- package/dist/report/model/locale.d.ts +1 -1
- package/dist/report/model/pricing.cjs +2 -2
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/enhance.js +5 -5
- package/dist/report/react/styles.css +190 -24
- package/dist/runner/adoption.cjs +4 -7
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-resources.cjs +60 -0
- package/dist/runner/attempt-resources.cjs.map +1 -0
- package/dist/runner/attempt-resources.d.cts +13 -0
- package/dist/runner/attempt-resources.d.mts +13 -0
- package/dist/runner/attempt-resources.d.ts +13 -0
- package/dist/runner/attempt-resources.js +6 -0
- package/dist/runner/attempt-resources.js.map +1 -0
- package/dist/runner/attempt.cjs +37 -3
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/feedback/failure.cjs +77 -2
- package/dist/runner/feedback/failure.cjs.map +1 -1
- package/dist/runner/feedback/failure.d.cts +2 -1
- package/dist/runner/feedback/failure.d.mts +2 -1
- package/dist/runner/feedback/failure.d.ts +2 -1
- package/dist/runner/project-current.cjs +2 -13
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/project-current.d.cts +4 -2
- package/dist/runner/project-current.d.mts +4 -2
- package/dist/runner/project-current.d.ts +4 -2
- package/dist/runner/reporters/braintrust.cjs +7 -7
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-readback.cjs +3 -4
- package/dist/runner/reuse-readback.cjs.map +1 -1
- package/dist/runner/run.cjs +5 -2
- package/dist/runner/run.cjs.map +1 -1
- package/dist/sandbox/backend.cjs +32 -2
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +12 -1
- package/dist/sandbox/backend.d.mts +12 -1
- package/dist/sandbox/backend.d.ts +12 -1
- package/dist/sandbox/backend.js +28 -22
- package/dist/sandbox/docker.cjs +140 -0
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +3 -1
- package/dist/sandbox/docker.d.mts +3 -1
- package/dist/sandbox/docker.d.ts +3 -1
- package/dist/sandbox/e2b.cjs +42 -0
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/e2b.d.cts +2 -0
- package/dist/sandbox/e2b.d.mts +2 -0
- package/dist/sandbox/e2b.d.ts +2 -0
- package/dist/sandbox/local.cjs +64 -0
- package/dist/sandbox/local.cjs.map +1 -1
- package/dist/sandbox/local.d.cts +3 -1
- package/dist/sandbox/local.d.mts +3 -1
- package/dist/sandbox/local.d.ts +3 -1
- package/dist/sandbox/managed-process.cjs +49 -0
- package/dist/sandbox/managed-process.cjs.map +1 -0
- package/dist/sandbox/managed-process.d.cts +11 -0
- package/dist/sandbox/managed-process.d.mts +11 -0
- package/dist/sandbox/managed-process.d.ts +11 -0
- package/dist/sandbox/managed-process.js +6 -0
- package/dist/sandbox/managed-process.js.map +1 -0
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +24 -0
- package/dist/sandbox/types.d.mts +24 -0
- package/dist/sandbox/types.d.ts +24 -0
- package/dist/sandbox/vercel.cjs +1 -0
- package/dist/sandbox/vercel.cjs.map +1 -1
- package/dist/sandbox/vercel.d.cts +1 -0
- package/dist/sandbox/vercel.d.mts +1 -0
- package/dist/sandbox/vercel.d.ts +1 -0
- package/dist/view/server.cjs +2 -37
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +0 -3
- package/dist/view/server.d.mts +0 -3
- package/dist/view/server.d.ts +0 -3
- package/docs-site/zh/reference/builtin-agents.mdx +7 -7
- package/docs-site/zh/reference/official-adapters.mdx +4 -4
- package/docs-site/zh/reference/report-components.mdx +2 -2
- package/docs-site/zh/tutorials/configuration.mdx +2 -2
- package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
- package/docs-site/zh/tutorials/publish-report.mdx +4 -4
- package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
- package/docs-site/zh/tutorials/theming.mdx +2 -2
- package/package.json +4 -6
- package/dist/record/migration/index.cjs +0 -5
- package/dist/record/migration/index.cjs.map +0 -1
- package/dist/record/migration/index.d.cts +0 -11
- package/dist/record/migration/index.d.mts +0 -11
- package/dist/record/migration/index.d.ts +0 -11
- package/dist/record/migration/index.js +0 -6
- package/dist/record/migration/index.js.map +0 -1
- package/dist/report/host/site-runtime.cjs +0 -92
- package/dist/report/host/site-runtime.cjs.map +0 -1
- package/dist/report/host/site-runtime.d.cts +0 -9
- package/dist/report/host/site-runtime.d.mts +0 -9
- package/dist/report/host/site-runtime.d.ts +0 -9
- package/dist/report/host/site-runtime.js +0 -10
- package/dist/report/host/site-runtime.js.map +0 -1
- package/dist/view/client-dist/app.css +0 -2
- package/dist/view/client-dist/app.js +0 -49
- package/dist/view/data.cjs +0 -3
- package/dist/view/data.cjs.map +0 -1
- package/dist/view/data.d.cts +0 -9
- package/dist/view/data.d.mts +0 -9
- package/dist/view/data.d.ts +0 -9
- package/dist/view/data.js +0 -4
- package/dist/view/data.js.map +0 -1
- package/dist/view/index.cjs +0 -24
- package/dist/view/index.cjs.map +0 -1
- package/dist/view/index.d.cts +0 -9
- package/dist/view/index.d.mts +0 -9
- package/dist/view/index.d.ts +0 -9
- package/dist/view/index.js +0 -28
- package/dist/view/index.js.map +0 -1
- package/dist/view/report-view-cache.cjs +0 -200
- package/dist/view/report-view-cache.cjs.map +0 -1
- package/dist/view/report-view-cache.d.cts +0 -67
- package/dist/view/report-view-cache.d.mts +0 -67
- package/dist/view/report-view-cache.d.ts +0 -67
- package/dist/view/report-view-cache.js +0 -8
- package/dist/view/report-view-cache.js.map +0 -1
- package/dist/view/shared/types.cjs +0 -3
- package/dist/view/shared/types.cjs.map +0 -1
- package/dist/view/shared/types.d.cts +0 -51
- package/dist/view/shared/types.d.mts +0 -51
- package/dist/view/shared/types.d.ts +0 -51
- package/dist/view/shared/types.js +0 -4
- package/dist/view/shared/types.js.map +0 -1
- package/dist/view/site.cjs +0 -32
- package/dist/view/site.cjs.map +0 -1
- package/dist/view/site.d.cts +0 -24
- package/dist/view/site.d.mts +0 -24
- package/dist/view/site.d.ts +0 -24
- package/dist/view/site.js +0 -8
- package/dist/view/site.js.map +0 -1
- package/dist/view/styles.css +0 -170
- package/dist/view/template.html +0 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["report.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The Report author declaration. This module deliberately knows how to\n * validate and normalize author data, but never how to open a Record, run an\n * Effect, or publish a site. Those are Host responsibilities.\n */\nimport type { AttemptEvidenceDomainView, JsonValue, PricingProfile, Sample as AnalysisSample, } from \"../../analysis/index.ts\";\nimport { builtInPricingProfile, isPricingProfile } from \"../../analysis/cost.ts\";\nimport type { AttemptLocator } from \"../../attempt-locator.ts\";\nimport type { LocalizedText } from \"../model/locale.ts\";\nimport { isThemeDefinition, type ThemeDefinition, } from \"../theme.ts\";\nimport { assertDimensionPins, type DimensionPins, } from \"../presentation.ts\";\nimport type { ReportNode } from \"./tree.ts\";\nexport type { DimensionPins } from \"../presentation.ts\";\nexport type { PricingProfile } from \"../../analysis/index.ts\";\n/**\n * A Host-issued Analysis capability at the Report boundary. It is an alias,\n * rather than a wrapper, so the Analysis facade can consume it without a\n * second capability registry. Its public shape exposes no reader, path, or\n * Effect Scope.\n */\nexport type ReportSample = AnalysisSample;\n/** Author-facing Sample alias for Report imports. */\nexport type Sample = ReportSample;\nexport const DEFAULT_PAGE_ID = \"report\";\nexport const DEFAULT_PAGE_TITLE: LocalizedText = Object.freeze({ en: \"Report\", \"zh-CN\": \"报告\" });\nexport type HeadAttributeValue = string | true;\nexport type HeadAttributes = Readonly<Record<string, HeadAttributeValue>>;\nexport type ScriptCrossOrigin = \"anonymous\" | \"use-credentials\";\nexport type ScriptReferrerPolicy = \"no-referrer\" | \"no-referrer-when-downgrade\" | \"origin\" | \"origin-when-cross-origin\" | \"same-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | \"unsafe-url\";\n/** The normalized script attributes retained after Host validation. */\nexport type ScriptHeadAttributes = Readonly<{\n readonly src?: string;\n readonly type?: string;\n readonly async?: true;\n readonly defer?: true;\n readonly integrity?: string;\n readonly crossorigin?: ScriptCrossOrigin;\n readonly referrerpolicy?: ScriptReferrerPolicy;\n}> & Readonly<Partial<Record<`data-${string}`, string>>>;\n/**\n * The author shape: a closed tag-name union with ordinary string/boolean\n * attributes. The Host still applies tag-specific validation before any value\n * enters a revision, so this preserves author inference without opening raw\n * HTML or bypassing the script/style safety boundary.\n */\nexport type HeadTag = Readonly<{\n readonly tag: \"meta\" | \"link\";\n readonly attrs: HeadAttributes;\n readonly children?: never;\n}> | Readonly<{\n readonly tag: \"script\" | \"style\";\n readonly attrs?: HeadAttributes;\n readonly children?: string;\n}>;\nexport type StyleDeclaration = Readonly<{\n readonly tag: \"style\";\n readonly attrs?: HeadAttributes;\n readonly children: string;\n}>;\n/** Declarative asset value; materialization remains Host-owned. */\nexport type ReportAsset = Readonly<{\n readonly src: string;\n readonly inline?: never;\n}> | Readonly<{\n readonly inline: string;\n readonly src?: never;\n}>;\nexport interface ReportShell {\n readonly title?: LocalizedText;\n readonly theme?: ThemeDefinition;\n readonly dimensionPins?: DimensionPins;\n readonly head?: readonly HeadTag[];\n /**\n * The one pricing source for this Report's cost projections. It must be a\n * pricing-profile/v1 value created by Analysis `definePricingProfile`.\n * Report validates it through Analysis and retains the same frozen object.\n */\n readonly pricing?: PricingProfile;\n}\n/** The page identity made available to callbacks while the ReportSample lives. */\nexport interface PageContext {\n readonly id: string;\n readonly path: string;\n readonly title: LocalizedText;\n /** Present only for one already-enumerated parameterized Page instance. */\n readonly params?: JsonValue;\n}\n/** A canonical locator selects one Host-provided closed Evidence view. */\nexport type EvidenceLocator = AttemptLocator;\nexport type PageEvidence = AttemptEvidenceDomainView;\n/**\n * The deliberately narrow Page data access surface. Evidence is already a\n * closed domain view; no Record reader, source root, filesystem path, or\n * arbitrary lookup enters author callbacks.\n */\nexport interface PageLoadContext {\n readonly page: PageContext;\n readonly evidence: (locator: EvidenceLocator) => Promise<PageEvidence>;\n}\nexport type PageLoad<Params, Input> = (sample: ReportSample, params: Params, context: PageLoadContext) => Input | Promise<Input>;\nexport type PageRender<Input> = (input: Input, context: PageContext) => ReportNode | Promise<ReportNode>;\n/** A parameter codec and the finite set of instances belonging to one build. */\nexport interface PageParams<Params extends JsonValue> {\n readonly encode: (params: Params) => string;\n readonly decode: (key: string) => Params;\n readonly enumerate: (sample: ReportSample) => Iterable<Params> | Promise<Iterable<Params>>;\n}\n/** A typed target for a Report-owned route. */\nexport interface ReportTarget<Params extends JsonValue = JsonValue> {\n readonly page: string;\n readonly params?: Params;\n}\n/** A normal Page. Without load(), its render input is the fixed ReportSample. */\nexport interface PlainPage<Input = ReportSample> {\n readonly id: string;\n readonly path?: string;\n readonly title: LocalizedText;\n readonly navigation?: boolean;\n readonly params?: never;\n readonly load?: PageLoad<void, Input>;\n readonly render: PageRender<Input>;\n}\n/** A parameterized page has no navigation entry until a Host enumerates it. */\nexport interface ParameterizedPage<Params extends JsonValue, Input> {\n readonly id: string;\n readonly path?: string;\n readonly title: LocalizedText;\n readonly navigation: false;\n readonly role?: {\n readonly kind: \"experiment-group\";\n readonly groupKind: \"named\" | \"singleton\";\n };\n readonly params: PageParams<Params>;\n readonly load: PageLoad<Params, Input>;\n readonly render: PageRender<Input>;\n}\nexport type Page<Params extends JsonValue | void = void, Input = ReportSample> = [\n Params\n] extends [\n void\n] ? PlainPage<Input> : ParameterizedPage<Extract<Params, JsonValue>, Input>;\ntype AnyPage = PlainPage<any> | ParameterizedPage<any, any>;\ninterface NormalizedPlainPage<Input = unknown> {\n readonly id: string;\n readonly path: string;\n readonly title: LocalizedText;\n readonly navigation: boolean;\n readonly params?: never;\n readonly load?: PageLoad<void, Input>;\n readonly render: PageRender<Input>;\n}\ninterface NormalizedParameterizedPage<Params extends JsonValue = JsonValue, Input = unknown> {\n readonly id: string;\n readonly path: string;\n readonly title: LocalizedText;\n readonly navigation: false;\n readonly role?: {\n readonly kind: \"experiment-group\";\n readonly groupKind: \"named\" | \"singleton\";\n };\n readonly params: PageParams<Params>;\n readonly load: PageLoad<Params, Input>;\n readonly render: PageRender<Input>;\n}\ntype NormalizedPage = NormalizedPlainPage | NormalizedParameterizedPage;\n/** Internal product-list helper also used by the built-in declaration factory. */\nexport type NonEmptyArray<Value> = readonly [\n Value,\n ...Value[]\n];\ninterface ReportInput<Pages extends NonEmptyArray<AnyPage> = NonEmptyArray<AnyPage>> extends ReportShell {\n readonly pages: Pages;\n}\n/** Internal input shape for package-built Report factories; not a public manifest alias. */\nexport interface ReportOptions<Pages extends NonEmptyArray<AnyPage> = NonEmptyArray<AnyPage>> extends ReportInput<Pages> {\n}\n/**\n * A frozen Report definition. Callback-bearing pages stay here only while a\n * Host resolves them; a finished Site revision must never retain this value.\n */\nexport interface ReportDefinition extends Omit<ReportShell, \"pricing\"> {\n readonly kind: \"report\";\n /** Structural-only declaration marker that survives independently emitted declarations. */\n readonly __niceevalReportDefinition: never;\n readonly head: readonly HeadTag[];\n readonly pages: NonEmptyArray<NormalizedPage>;\n /** The exact Analysis-created Profile, or the explicit no-Profile state. */\n readonly pricing: PricingProfile | null;\n}\nexport interface ReportMetaPage {\n readonly id: string;\n readonly title: LocalizedText;\n readonly navigation: boolean;\n}\n/** Closed declaration metadata available as ctx.report during one resolve. */\nexport interface ReportMeta {\n readonly title: LocalizedText;\n readonly pages: readonly ReportMetaPage[];\n /**\n * The exact same frozen value as the owning ReportDefinition's `pricing`.\n * `ctx.report.pricing === report.pricing` holds by construction; consumers\n * pass it to the profile-taking `costUSD(profile)` / `totalCostUSD(profile)`.\n */\n readonly pricing: PricingProfile | null;\n}\nconst REPORT_DESCRIPTOR: unique symbol = Symbol.for(\"niceeval.report.definition/v2\");\nconst REPORT_DESCRIPTOR_VERSION = 2;\n// This exact pair is shared with execution/machine.ts. The Report module\n// does not import that Host module: it only recognizes and copies this\n// data-only descriptor while normalizing an input definition.\nconst BUILT_IN_MACHINE_DESCRIPTOR = Symbol.for(\"niceeval.report.built-in-machine-descriptor/v2\");\nconst BUILT_IN_MACHINE_REPORT_DESCRIPTOR = Symbol.for(\"niceeval.report.built-in-machine-report-descriptor/v2\");\nconst BUILT_IN_MACHINE_DESCRIPTOR_BRAND = \"niceeval.report.built-in-machine-descriptor/v2\";\ninterface ReportDescriptor {\n readonly version: 2;\n readonly kind: \"report\";\n}\ninterface BuiltInMachineDescriptorCopy {\n readonly producerId: string;\n}\n/**\n * Defines a Report with a non-empty Page list. A separate overload accepts a\n * single-page shorthand and normalizes it to /.\n */\nexport function defineReport<const Pages extends NonEmptyArray<AnyPage>>(definition: ReportInput<Pages>): ReportDefinition;\nexport function defineReport(render: (sample: ReportSample) => ReportNode | Promise<ReportNode>): ReportDefinition;\nexport function defineReport(input: unknown): ReportDefinition {\n const source = typeof input === \"function\"\n ? {\n pages: [{ id: DEFAULT_PAGE_ID, title: DEFAULT_PAGE_TITLE, render: input }],\n }\n : input;\n const builtInMachine = readBuiltInMachineDescriptor(source);\n const fields = ownFields(source, \"defineReport\", [BUILT_IN_MACHINE_REPORT_DESCRIPTOR]);\n assertOnlyFields(fields, [\"title\", \"theme\", \"dimensionPins\", \"head\", \"pages\", \"pricing\"], \"defineReport\", [\"title\", \"theme\", \"dimensionPins\", \"head\", \"pricing\"]);\n const title = fields.has(\"title\") ? normalizeLocalizedText(fields.get(\"title\"), \"Report title\") : undefined;\n const theme = fields.has(\"theme\") ? normalizeTheme(fields.get(\"theme\")) : undefined;\n const dimensionPins = fields.has(\"dimensionPins\")\n ? normalizeDimensionPins(fields.get(\"dimensionPins\"))\n : undefined;\n const head = fields.has(\"head\") ? normalizeHead(fields.get(\"head\")) : Object.freeze([]) as readonly HeadTag[];\n const pages = normalizePages(fields.get(\"pages\"));\n const pricing = fields.has(\"pricing\") ? normalizePricingProfile(fields.get(\"pricing\")) : builtInPricingProfile;\n const report: Record<string | symbol, unknown> = {\n kind: \"report\",\n ...(title === undefined ? {} : { title }),\n ...(theme === undefined ? {} : { theme }),\n ...(dimensionPins === undefined ? {} : { dimensionPins }),\n pricing,\n head,\n pages,\n };\n Object.defineProperty(report, REPORT_DESCRIPTOR, {\n value: Object.freeze({ version: REPORT_DESCRIPTOR_VERSION, kind: \"report\" } satisfies ReportDescriptor),\n enumerable: false,\n writable: false,\n configurable: false,\n });\n if (builtInMachine !== undefined) {\n Object.defineProperty(report, BUILT_IN_MACHINE_REPORT_DESCRIPTOR, {\n value: builtInMachine,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n return Object.freeze(report) as unknown as ReportDefinition;\n}\n/** Recognizes a Report from another installed copy of niceeval as well. */\nexport function isReport(value: unknown): value is ReportDefinition {\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n if (!hasExactReportFields(value))\n return false;\n if (value.kind !== \"report\" || !Object.hasOwn(value, \"pricing\") ||\n (value.pricing !== null && !isPricingProfile(value.pricing)))\n return false;\n const descriptor = Object.getOwnPropertyDescriptor(value, REPORT_DESCRIPTOR);\n if (!isFrozenHiddenDataDescriptor(descriptor) || !isReportDescriptor(descriptor.value))\n return false;\n if (!isFrozenHead(value.head) || !isFrozenPages(value.pages))\n return false;\n return isOptionalFrozenLocalizedText(value.title) &&\n isOptionalThemeDefinition(value.theme) && isOptionalFrozenDimensionPins(value.dimensionPins) &&\n isValidBuiltInMachineReportDescriptor(value);\n}\n/** Internal Host boundary: validates the Symbol.for descriptor before use. */\nfunction reportDefinition(value: ReportDefinition): ReportDefinition {\n if (!isReport(value))\n throw new TypeError(\"a Report must be created by defineReport\");\n return value;\n}\n/** The declaration title is stable without opening a Sample. */\nexport function resolveReportTitle(value: ReportDefinition): LocalizedText {\n const report = reportDefinition(value);\n return report.title ?? report.pages[0].title ?? DEFAULT_PAGE_TITLE;\n}\n/** Produces declaration-only metadata for ctx.report; it never opens a Sample. */\nexport function buildReportMeta(value: ReportDefinition): ReportMeta {\n const report = reportDefinition(value);\n const meta: Record<string, unknown> = {\n title: resolveReportTitle(report),\n pages: Object.freeze(report.pages.map((page) => Object.freeze({\n id: page.id,\n title: page.title,\n navigation: page.navigation,\n }))),\n pricing: report.pricing,\n };\n return Object.freeze(meta) as unknown as ReportMeta;\n}\nfunction isReportDescriptor(value: unknown): value is ReportDescriptor {\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n if (!hasExactOwnDataFields(value, [\"version\", \"kind\"]))\n return false;\n return value.version === REPORT_DESCRIPTOR_VERSION && value.kind === \"report\";\n}\n/**\n * A global Symbol alone is not provenance. A duplicate package can recognize\n * a frozen Report, but a hand-written lookalike must still satisfy the exact\n * normalized representation `defineReport` emits: no hidden fields,\n * accessors, mutable arrays, or raw Page/Head shapes survive this boundary.\n */\nfunction hasExactReportFields(value: Record<string, unknown>): boolean {\n const names = Object.getOwnPropertyNames(value);\n const allowed = new Set([\"kind\", \"title\", \"theme\", \"dimensionPins\", \"pricing\", \"head\", \"pages\"]);\n if (!names.includes(\"kind\") || !names.includes(\"pricing\") || !names.includes(\"head\") || !names.includes(\"pages\") ||\n names.some((name) => !allowed.has(name)))\n return false;\n for (const name of names) {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n if (!isEnumerableDataDescriptor(descriptor))\n return false;\n }\n const symbols = Object.getOwnPropertySymbols(value);\n if (symbols.some((symbol) => symbol !== REPORT_DESCRIPTOR && symbol !== BUILT_IN_MACHINE_REPORT_DESCRIPTOR)) {\n return false;\n }\n return symbols.includes(REPORT_DESCRIPTOR) &&\n [\"title\", \"theme\", \"dimensionPins\"].every((name) => !Object.hasOwn(value, name) || value[name] !== undefined);\n}\nfunction isValidBuiltInMachineReportDescriptor(value: Record<string, unknown>): boolean {\n const descriptor = Object.getOwnPropertyDescriptor(value, BUILT_IN_MACHINE_REPORT_DESCRIPTOR);\n if (descriptor === undefined)\n return true;\n return isFrozenHiddenDataDescriptor(descriptor) && isBuiltInMachineDescriptor(descriptor.value);\n}\nfunction isFrozenHiddenDataDescriptor(descriptor: PropertyDescriptor | undefined): descriptor is PropertyDescriptor & {\n readonly value: unknown;\n} {\n return descriptor !== undefined && \"value\" in descriptor &&\n descriptor.enumerable === false && descriptor.writable === false && descriptor.configurable === false &&\n typeof descriptor.get === \"undefined\" && typeof descriptor.set === \"undefined\" &&\n typeof descriptor.value === \"object\" && descriptor.value !== null && Object.isFrozen(descriptor.value);\n}\nfunction isEnumerableDataDescriptor(descriptor: PropertyDescriptor | undefined): descriptor is PropertyDescriptor & {\n readonly value: unknown;\n} {\n return descriptor !== undefined && \"value\" in descriptor && descriptor.enumerable === true &&\n typeof descriptor.get === \"undefined\" && typeof descriptor.set === \"undefined\";\n}\nfunction hasExactOwnDataFields(value: Record<string, unknown>, expected: readonly string[]): boolean {\n const names = Object.getOwnPropertyNames(value);\n if (names.length !== expected.length || expected.some((name) => !names.includes(name)) ||\n Object.getOwnPropertySymbols(value).length !== 0)\n return false;\n return names.every((name) => isEnumerableDataDescriptor(Object.getOwnPropertyDescriptor(value, name)));\n}\nfunction isOptionalThemeDefinition(value: unknown): boolean {\n return value === undefined || isThemeDefinition(value);\n}\nfunction isOptionalFrozenLocalizedText(value: unknown): boolean {\n return value === undefined || isFrozenLocalizedText(value);\n}\nfunction isOptionalFrozenDimensionPins(value: unknown): boolean {\n return value === undefined || isFrozenDimensionPins(value);\n}\nfunction isFrozenLocalizedText(value: unknown): value is LocalizedText {\n if (typeof value === \"string\")\n return value.length > 0;\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n const names = Object.getOwnPropertyNames(value);\n return names.length > 0 && Object.getOwnPropertySymbols(value).length === 0 && names.every((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n return name.length > 0 && isEnumerableDataDescriptor(descriptor) && typeof descriptor.value === \"string\";\n }) && names.some((name) => (value as Readonly<Record<string, unknown>>)[name] !== \"\");\n}\nfunction isFrozenHead(value: unknown): value is readonly HeadTag[] {\n if (!Array.isArray(value) || !Object.isFrozen(value) || !isClosedArray(value))\n return false;\n return value.every(isFrozenHeadTag);\n}\nfunction isFrozenHeadTag(value: unknown): value is HeadTag {\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n try {\n normalizeHeadTag(value, \"Report head\");\n }\n catch {\n return false;\n }\n const tag = value.tag;\n if (tag === \"meta\" || tag === \"link\") {\n return hasExactOwnDataFields(value, [\"tag\", \"attrs\"]) && isFrozenHeadAttributes(value.attrs);\n }\n if (tag === \"style\") {\n const valid = hasExactOwnDataFields(value, [\"tag\", \"children\"]) ||\n hasExactOwnDataFields(value, [\"tag\", \"attrs\", \"children\"]);\n return valid && typeof value.children === \"string\" &&\n (value.attrs === undefined || isFrozenHeadAttributes(value.attrs));\n }\n if (tag !== \"script\")\n return false;\n const valid = hasExactOwnDataFields(value, [\"tag\", \"attrs\"]) ||\n hasExactOwnDataFields(value, [\"tag\", \"children\"]) ||\n hasExactOwnDataFields(value, [\"tag\", \"attrs\", \"children\"]);\n if (!valid || (value.attrs !== undefined && !isFrozenHeadAttributes(value.attrs)) ||\n (value.children !== undefined && typeof value.children !== \"string\"))\n return false;\n const attrs = value.attrs as Readonly<Record<string, unknown>> | undefined;\n const hasSource = attrs !== undefined && typeof attrs.src === \"string\";\n return hasSource !== Object.hasOwn(value, \"children\");\n}\nfunction isFrozenHeadAttributes(value: unknown): value is HeadAttributes {\n if (!isPlainObject(value) || !Object.isFrozen(value) || Object.getOwnPropertySymbols(value).length !== 0)\n return false;\n return Object.getOwnPropertyNames(value).every((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n return isEnumerableDataDescriptor(descriptor) && (descriptor.value === true || typeof descriptor.value === \"string\");\n });\n}\nfunction isFrozenPages(value: unknown): value is NonEmptyArray<NormalizedPage> {\n if (!Array.isArray(value) || value.length === 0 || !Object.isFrozen(value) || !isClosedArray(value))\n return false;\n const ids = new Set<string>();\n const plainPaths = new Set<string>();\n for (const page of value) {\n if (!isFrozenNormalizedPage(page) || ids.has(page.id))\n return false;\n ids.add(page.id);\n if (page.params === undefined) {\n if (plainPaths.has(page.path))\n return false;\n plainPaths.add(page.path);\n }\n }\n return true;\n}\nfunction isFrozenNormalizedPage(value: unknown): value is NormalizedPage {\n if (!isPlainObject(value) || !Object.isFrozen(value) || !isFrozenLocalizedText(value.title) ||\n typeof value.id !== \"string\" || typeof value.path !== \"string\" || typeof value.navigation !== \"boolean\" ||\n typeof value.render !== \"function\")\n return false;\n try {\n normalizePageId(value.id, \"Report page\");\n normalizePath(value.path, \"Report page\");\n }\n catch {\n return false;\n }\n if (Object.hasOwn(value, \"params\")) {\n return value.navigation === false && typeof value.load === \"function\" &&\n (hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"params\", \"load\", \"render\"]) ||\n hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"role\", \"params\", \"load\", \"render\"])) &&\n (!Object.hasOwn(value, \"role\") || isExperimentGroupRole(value.role)) &&\n isFrozenPageParams(value.params);\n }\n const valid = hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"render\"]) ||\n hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"load\", \"render\"]);\n return valid && (!Object.hasOwn(value, \"load\") || typeof value.load === \"function\");\n}\nfunction isFrozenDimensionPins(value: unknown): value is DimensionPins {\n if (!isPlainObject(value) || !Object.isFrozen(value) || Object.getOwnPropertySymbols(value).length !== 0)\n return false;\n try {\n assertDimensionPins(value);\n }\n catch {\n return false;\n }\n return Object.getOwnPropertyNames(value).every((dimension) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, dimension);\n if (!isEnumerableDataDescriptor(descriptor) || !isPlainObject(descriptor.value) ||\n !Object.isFrozen(descriptor.value) || Object.getOwnPropertySymbols(descriptor.value).length !== 0) {\n return false;\n }\n return Object.getOwnPropertyNames(descriptor.value).every((entry) => isEnumerableDataDescriptor(Object.getOwnPropertyDescriptor(descriptor.value, entry)));\n });\n}\nfunction isFrozenPageParams(value: unknown): value is PageParams<JsonValue> {\n return isPlainObject(value) && Object.isFrozen(value) &&\n hasExactOwnDataFields(value, [\"encode\", \"decode\", \"enumerate\"]) &&\n typeof value.encode === \"function\" && typeof value.decode === \"function\" && typeof value.enumerate === \"function\";\n}\nfunction isClosedArray(value: readonly unknown[]): boolean {\n for (let index = 0; index < value.length; index += 1) {\n if (!isEnumerableDataDescriptor(Object.getOwnPropertyDescriptor(value, String(index))))\n return false;\n }\n const names = Object.getOwnPropertyNames(value);\n return names.length === value.length + 1 && names.includes(\"length\") &&\n names.every((name) => name === \"length\" || isArrayIndex(name)) && Object.getOwnPropertySymbols(value).length === 0;\n}\n/**\n * Copies the versioned identifier only. The Host owns the producer registry;\n * no executable field can pass from an input definition to its frozen Report.\n */\nfunction readBuiltInMachineDescriptor(value: unknown): BuiltInMachineDescriptorCopy | undefined {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null)\n return undefined;\n const property = Object.getOwnPropertyDescriptor(value, BUILT_IN_MACHINE_REPORT_DESCRIPTOR);\n if (property === undefined)\n return undefined;\n if (!(\"value\" in property) || property.enumerable || !isBuiltInMachineDescriptor(property.value)) {\n throw new TypeError(\"defineReport received an invalid built-in machine descriptor\");\n }\n const copy: Record<string | symbol, unknown> = { producerId: property.value.producerId };\n Object.defineProperty(copy, BUILT_IN_MACHINE_DESCRIPTOR, {\n value: BUILT_IN_MACHINE_DESCRIPTOR_BRAND,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return Object.freeze(copy) as unknown as BuiltInMachineDescriptorCopy;\n}\nfunction isBuiltInMachineDescriptor(value: unknown): value is BuiltInMachineDescriptorCopy {\n if (!isPlainObject(value) || !hasOnlyStringFields(value, [\"producerId\"]) || !isVersionedProducerId(value.producerId)) {\n return false;\n }\n const brand = Object.getOwnPropertyDescriptor(value, BUILT_IN_MACHINE_DESCRIPTOR);\n return brand !== undefined && \"value\" in brand && brand.value === BUILT_IN_MACHINE_DESCRIPTOR_BRAND;\n}\nfunction hasOnlyStringFields(value: Record<string, unknown>, expected: readonly string[]): boolean {\n const keys = Object.keys(value);\n return keys.length === expected.length && expected.every((key) => Object.hasOwn(value, key));\n}\nfunction isVersionedProducerId(value: unknown): value is string {\n return typeof value === \"string\" && /^[^\\s@][^\\s]*@v[1-9][0-9]*$/u.test(value);\n}\nfunction normalizePages(value: unknown): NonEmptyArray<NormalizedPage> {\n if (!Array.isArray(value) || value.length === 0) {\n throw new TypeError(\"defineReport requires a non-empty pages array\");\n }\n assertArray(value, \"Report pages\");\n const pages = value.map((page, index) => normalizePage(page, index));\n const ids = new Set<string>();\n const plainPaths = new Set<string>();\n for (const page of pages) {\n if (ids.has(page.id))\n throw new TypeError(`Report page id ${JSON.stringify(page.id)} is duplicated`);\n ids.add(page.id);\n if (page.params === undefined) {\n if (plainPaths.has(page.path)) {\n throw new TypeError(`ordinary Report page path ${JSON.stringify(page.path)} is duplicated`);\n }\n plainPaths.add(page.path);\n }\n }\n return Object.freeze(pages) as NonEmptyArray<NormalizedPage>;\n}\nfunction normalizePage(value: unknown, index: number): NormalizedPage {\n const label = `Report page at pages[${index}]`;\n const fields = ownFields(value, label);\n const parameterized = fields.has(\"params\");\n assertOnlyFields(fields, parameterized\n ? [\"id\", \"path\", \"title\", \"navigation\", \"role\", \"params\", \"load\", \"render\"]\n : [\"id\", \"path\", \"title\", \"navigation\", \"load\", \"render\"], label, parameterized ? [\"path\", \"role\"] : [\"path\", \"navigation\", \"load\"]);\n const id = normalizePageId(fields.get(\"id\"), label);\n const path = fields.has(\"path\") && fields.get(\"path\") !== undefined\n ? normalizePath(fields.get(\"path\"), label)\n : derivePagePath(id);\n const title = normalizeLocalizedText(fields.get(\"title\"), `${label} title`);\n const render = requireFunction(fields.get(\"render\"), `${label}.render`);\n if (parameterized) {\n if (fields.get(\"navigation\") !== false) {\n throw new TypeError(`${label} declares params and must set navigation: false`);\n }\n const params = normalizePageParams(fields.get(\"params\"), `${label}.params`);\n const load = requireFunction(fields.get(\"load\"), `${label}.load`);\n const role = fields.has(\"role\") ? normalizeExperimentGroupRole(fields.get(\"role\"), `${label}.role`) : undefined;\n return Object.freeze({\n id,\n path,\n title,\n navigation: false as const,\n ...(role === undefined ? {} : { role }),\n params,\n load: load as PageLoad<JsonValue, unknown>,\n render: render as PageRender<unknown>,\n }) as NormalizedParameterizedPage<JsonValue, unknown>;\n }\n const navigation = fields.get(\"navigation\");\n if (navigation !== undefined && typeof navigation !== \"boolean\") {\n throw new TypeError(`${label}.navigation must be a boolean when supplied`);\n }\n const load = fields.get(\"load\");\n if (load !== undefined && typeof load !== \"function\") {\n throw new TypeError(`${label}.load must be a function when supplied`);\n }\n return Object.freeze({\n id,\n path,\n title,\n navigation: navigation !== false,\n ...(load === undefined ? {} : { load: load as PageLoad<void, unknown> }),\n render: render as PageRender<unknown>,\n }) as NormalizedPlainPage<unknown>;\n}\nfunction normalizeExperimentGroupRole(value: unknown, label: string): NonNullable<NormalizedParameterizedPage[\"role\"]> {\n const fields = ownFields(value, label);\n assertOnlyFields(fields, [\"kind\", \"groupKind\"], label);\n if (fields.get(\"kind\") !== \"experiment-group\" ||\n (fields.get(\"groupKind\") !== \"named\" && fields.get(\"groupKind\") !== \"singleton\")) {\n throw new TypeError(`${label} must declare experiment-group and named/singleton`);\n }\n return Object.freeze({\n kind: \"experiment-group\" as const,\n groupKind: fields.get(\"groupKind\") as \"named\" | \"singleton\",\n });\n}\nfunction isExperimentGroupRole(value: unknown): value is NonNullable<NormalizedParameterizedPage[\"role\"]> {\n try {\n return normalizeExperimentGroupRole(value, \"Report page role\") !== undefined;\n }\n catch {\n return false;\n }\n}\nfunction derivePagePath(id: string): string {\n return id === DEFAULT_PAGE_ID ? \"/\" : `/${id}`;\n}\nfunction normalizePageParams(value: unknown, label: string): PageParams<JsonValue> {\n const fields = ownFields(value, label);\n assertOnlyFields(fields, [\"encode\", \"decode\", \"enumerate\"], label);\n const encode = requireFunction(fields.get(\"encode\"), `${label}.encode`);\n const decode = requireFunction(fields.get(\"decode\"), `${label}.decode`);\n const enumerate = requireFunction(fields.get(\"enumerate\"), `${label}.enumerate`);\n return Object.freeze({\n encode: encode as PageParams<JsonValue>[\"encode\"],\n decode: decode as PageParams<JsonValue>[\"decode\"],\n enumerate: enumerate as PageParams<JsonValue>[\"enumerate\"],\n });\n}\nconst PAGE_ID_PATTERN = /^[a-z][a-z0-9_-]*$/;\nconst PATH_SEGMENT_PATTERN = /^[a-z0-9][a-z0-9._~-]*$/;\nconst WINDOWS_DEVICE_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\..*)?$/i;\nconst MAX_PAGE_ID_BYTES = 128;\nconst MAX_PATH_SEGMENT_BYTES = 128;\nconst MAX_PATH_BYTES = 1024;\nconst MAX_PATH_SEGMENTS = 32;\nconst encoder = new TextEncoder();\nfunction normalizePageId(value: unknown, label: string): string {\n if (typeof value !== \"string\" || !PAGE_ID_PATTERN.test(value) || /^[0-9]+$/.test(value)) {\n throw new TypeError(`${label}.id must match [a-z][a-z0-9_-]* and cannot be an ordinal`);\n }\n if (encoder.encode(value).byteLength > MAX_PAGE_ID_BYTES) {\n throw new TypeError(`${label}.id may contain at most ${MAX_PAGE_ID_BYTES} UTF-8 bytes`);\n }\n return value;\n}\nfunction normalizePath(value: unknown, label: string): string {\n if (typeof value !== \"string\")\n throw new TypeError(`${label}.path must be a string`);\n if (value === \"/\")\n return value;\n if (!value.startsWith(\"/\") || value.endsWith(\"/\") || value.includes(\"%\") ||\n value.includes(\"?\") || value.includes(\"#\") || value.includes(\"\\\\\")) {\n throw new TypeError(`${label}.path must be a normalized absolute Report route`);\n }\n if (encoder.encode(value).byteLength > MAX_PATH_BYTES) {\n throw new TypeError(`${label}.path may contain at most ${MAX_PATH_BYTES} UTF-8 bytes`);\n }\n const segments = value.slice(1).split(\"/\");\n if (segments.length === 0 || segments.length > MAX_PATH_SEGMENTS) {\n throw new TypeError(`${label}.path must contain between 1 and ${MAX_PATH_SEGMENTS} segments`);\n }\n for (const segment of segments) {\n if (!PATH_SEGMENT_PATTERN.test(segment) || segment === \".\" || segment === \"..\" ||\n segment.endsWith(\".\") || segment.endsWith(\" \") || WINDOWS_DEVICE_PATTERN.test(segment)) {\n throw new TypeError(`${label}.path contains an invalid route segment`);\n }\n if (encoder.encode(segment).byteLength > MAX_PATH_SEGMENT_BYTES) {\n throw new TypeError(`${label}.path has a segment longer than ${MAX_PATH_SEGMENT_BYTES} UTF-8 bytes`);\n }\n }\n return value;\n}\nfunction normalizeTheme(value: unknown): ThemeDefinition {\n if (!isThemeDefinition(value)) {\n throw new TypeError(\"Report theme must be a ThemeDefinition created by defineTheme\");\n }\n return value;\n}\n// PricingProfile normalization and cross-package validation have exactly one\n// owner: `niceeval/analysis`. Preserve the validated frozen reference so\n// `ctx.report.pricing === ReportDefinition.pricing` remains true.\nfunction normalizePricingProfile(value: unknown): PricingProfile {\n if (!isPricingProfile(value)) {\n throw new TypeError(\"Report pricing must be a PricingProfile created by definePricingProfile\");\n }\n return value;\n}\nfunction normalizeDimensionPins(value: unknown): DimensionPins {\n assertDimensionPins(value);\n const dimensions = ownFields(value, \"Report dimensionPins\");\n const copy: Record<string, Readonly<Record<string, number>>> = Object.create(null) as Record<string, Readonly<Record<string, number>>>;\n for (const [dimension, rawValues] of dimensions) {\n const values = ownFields(rawValues, `Report dimensionPins.${dimension}`);\n const pinned: Record<string, number> = Object.create(null) as Record<string, number>;\n for (const [valueName, slot] of values) {\n if (typeof slot !== \"number\") {\n throw new TypeError(`Report dimensionPins.${dimension}.${valueName} must be a seriesSlot number`);\n }\n pinned[valueName] = slot;\n }\n copy[dimension] = Object.freeze(pinned);\n }\n return Object.freeze(copy);\n}\nconst HEAD_ATTRIBUTE_NAME = /^[A-Za-z_:][A-Za-z0-9:._-]*$/;\nconst SAFE_LINK_RELATIONS = new Set([\"alternate\", \"author\", \"canonical\", \"license\"]);\nconst SCRIPT_DATA_ATTRIBUTE_NAME = /^data-[a-z][a-z0-9_.:-]*$/;\nconst SCRIPT_REFERRER_POLICIES = new Set<ScriptReferrerPolicy>([\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"origin\",\n \"origin-when-cross-origin\",\n \"same-origin\",\n \"strict-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\",\n]);\nconst SCRIPT_INTEGRITY_TOKEN = /^(?:sha256|sha384|sha512)-[A-Za-z0-9+/_-]+={0,2}(?:\\?[A-Za-z0-9_-]+)?$/;\nconst SCRIPT_TYPE = /^(?:module|importmap|speculationrules|[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+(?:\\s*;\\s*[A-Za-z0-9!#$&^_.+-]+=[A-Za-z0-9!#$&^_.+-]+)*)$/;\nconst INLINE_SCRIPT_BYTES_MAX = 65536;\nfunction normalizeHead(value: unknown): readonly HeadTag[] {\n if (!Array.isArray(value))\n throw new TypeError(\"Report head must be an array of structured meta, link, style, or script declarations\");\n assertArray(value, \"Report head\");\n return Object.freeze(value.map((entry, index) => normalizeHeadTag(entry, `Report head[${index}]`)));\n}\nfunction normalizeHeadTag(value: unknown, label: string): HeadTag {\n const fields = ownFields(value, label);\n const tag = fields.get(\"tag\");\n if (tag === \"script\") {\n assertOnlyFields(fields, [\"tag\", \"attrs\", \"children\"], label, [\"attrs\", \"children\"]);\n const attrs = fields.has(\"attrs\") ? normalizeScriptAttributes(fields.get(\"attrs\"), `${label}.attrs`) : undefined;\n const source = attrs?.src;\n const hasInline = fields.has(\"children\");\n if ((source === undefined) === !hasInline) {\n throw new TypeError(`${label} script must declare exactly one of attrs.src or inline children`);\n }\n if (hasInline) {\n const children = fields.get(\"children\");\n if (typeof children !== \"string\")\n throw new TypeError(`${label}.children must be inline script text`);\n assertInlineScript(children, `${label}.children`);\n return Object.freeze({\n tag,\n ...(attrs === undefined ? {} : { attrs: withoutScriptSource(attrs) }),\n children,\n }) as HeadTag;\n }\n return Object.freeze({\n tag,\n attrs: attrs as ScriptHeadAttributes & Readonly<{\n readonly src: string;\n }>,\n }) as HeadTag;\n }\n if (tag !== \"meta\" && tag !== \"link\" && tag !== \"style\") {\n throw new TypeError(`${label}.tag must be \\\"meta\\\", \\\"link\\\", \\\"style\\\", or \\\"script\\\"`);\n }\n if (tag === \"style\") {\n assertOnlyFields(fields, [\"tag\", \"attrs\", \"children\"], label, [\"attrs\"]);\n const children = fields.get(\"children\");\n if (typeof children !== \"string\")\n throw new TypeError(`${label}.children must be CSS text`);\n assertSafeStyle(children, `${label}.children`);\n const attrs = fields.has(\"attrs\")\n ? normalizeHeadAttributes(fields.get(\"attrs\"), `${label}.attrs`, [\"media\", \"type\"])\n : undefined;\n if (attrs?.type !== undefined && attrs.type !== \"text/css\") {\n throw new TypeError(`${label}.attrs.type must be \\\"text/css\\\" when supplied`);\n }\n return Object.freeze({ tag, ...(attrs === undefined ? {} : { attrs }), children });\n }\n assertOnlyFields(fields, [\"tag\", \"attrs\"], label);\n const attrs = normalizeHeadAttributes(fields.get(\"attrs\"), `${label}.attrs`, tag === \"meta\" ? [\"content\", \"itemprop\", \"name\", \"property\"] : [\"href\", \"hreflang\", \"rel\", \"title\", \"type\"]);\n if (tag === \"link\") {\n const rel = attrs.rel;\n const href = attrs.href;\n if (typeof rel !== \"string\" || !SAFE_LINK_RELATIONS.has(rel.toLowerCase()) || typeof href !== \"string\") {\n throw new TypeError(`${label} only permits inert link metadata (rel: alternate, author, canonical, or license) with a local href`);\n }\n assertLocalHeadReference(href, `${label}.attrs.href`);\n }\n return Object.freeze({ tag, attrs });\n}\nfunction normalizeScriptAttributes(value: unknown, label: string): ScriptHeadAttributes {\n const fields = ownFields(value, label);\n const copy: Record<string, string | true> = Object.create(null) as Record<string, string | true>;\n for (const [name, attribute] of fields) {\n const lower = name.toLowerCase();\n if (lower.startsWith(\"on\") || lower === \"nonce\") {\n throw new TypeError(`${label}.${name} is not permitted on a Report script`);\n }\n if (SCRIPT_DATA_ATTRIBUTE_NAME.test(name)) {\n if (typeof attribute !== \"string\")\n throw new TypeError(`${label}.${name} must be a string data-* value`);\n copy[name] = attribute;\n continue;\n }\n switch (name) {\n case \"src\":\n if (typeof attribute !== \"string\")\n throw new TypeError(`${label}.src must be a string`);\n assertScriptSource(attribute, `${label}.src`);\n copy.src = attribute;\n break;\n case \"type\":\n if (typeof attribute !== \"string\" || !SCRIPT_TYPE.test(attribute)) {\n throw new TypeError(`${label}.type must be a supported script type or MIME type`);\n }\n copy.type = attribute;\n break;\n case \"async\":\n case \"defer\":\n if (attribute !== true)\n throw new TypeError(`${label}.${name} must be true when supplied`);\n copy[name] = true;\n break;\n case \"integrity\":\n if (typeof attribute !== \"string\" || attribute.length === 0 ||\n !attribute.split(/\\s+/u).every((token) => SCRIPT_INTEGRITY_TOKEN.test(token))) {\n throw new TypeError(`${label}.integrity must contain one or more sha256/384/512 SRI tokens`);\n }\n copy.integrity = attribute;\n break;\n case \"crossorigin\":\n if (attribute !== \"anonymous\" && attribute !== \"use-credentials\") {\n throw new TypeError(`${label}.crossorigin must be \\\"anonymous\\\" or \\\"use-credentials\\\"`);\n }\n copy.crossorigin = attribute;\n break;\n case \"referrerpolicy\":\n if (typeof attribute !== \"string\" || !SCRIPT_REFERRER_POLICIES.has(attribute as ScriptReferrerPolicy)) {\n throw new TypeError(`${label}.referrerpolicy must be a recognized referrer policy`);\n }\n copy.referrerpolicy = attribute;\n break;\n default:\n throw new TypeError(`${label}.${name} is not a supported Report script attribute`);\n }\n }\n return Object.freeze(copy) as ScriptHeadAttributes;\n}\nfunction withoutScriptSource(value: ScriptHeadAttributes): Omit<ScriptHeadAttributes, \"src\"> {\n const { src: _source, ...attrs } = value;\n return Object.freeze(attrs);\n}\nfunction assertScriptSource(value: string, label: string): void {\n if (value.length === 0 || value.startsWith(\"//\") || value.includes(\"\\\\\") || /[\\u0000-\\u001F\\u007F]/u.test(value)) {\n throw new TypeError(`${label} must be a revision-local path, HTTPS URL, or loopback HTTP URL`);\n }\n if (!/^[A-Za-z][A-Za-z0-9+.-]*:/.test(value)) {\n const pathname = value.split(/[?#]/, 1)[0] ?? \"\";\n if (pathname.length === 0 || pathname.split(\"/\").some((segment) => segment === \"..\")) {\n throw new TypeError(`${label} must stay within the closed site revision`);\n }\n return;\n }\n let parsed: URL;\n try {\n parsed = new URL(value);\n }\n catch {\n throw new TypeError(`${label} must be a valid HTTPS or loopback HTTP URL`);\n }\n if (parsed.username.length > 0 || parsed.password.length > 0) {\n throw new TypeError(`${label} cannot contain URL credentials`);\n }\n if (parsed.protocol === \"https:\")\n return;\n if (parsed.protocol === \"http:\" && isLoopbackHostname(parsed.hostname))\n return;\n throw new TypeError(`${label} must use HTTPS or HTTP only for a loopback hostname`);\n}\nfunction isLoopbackHostname(value: string): boolean {\n const hostname = value.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\nfunction assertInlineScript(value: string, label: string): void {\n if (encoder.encode(value).byteLength > INLINE_SCRIPT_BYTES_MAX) {\n throw new TypeError(`${label} may contain at most ${INLINE_SCRIPT_BYTES_MAX} UTF-8 bytes`);\n }\n if (/<\\/script\\b/i.test(value))\n throw new TypeError(`${label} cannot contain </script`);\n}\nfunction normalizeHeadAttributes(value: unknown, label: string, allowed: readonly string[]): HeadAttributes {\n const fields = ownFields(value, label);\n const allowedNames = new Set(allowed);\n const copy: Record<string, HeadAttributeValue> = Object.create(null) as Record<string, HeadAttributeValue>;\n for (const [name, attribute] of fields) {\n if (!HEAD_ATTRIBUTE_NAME.test(name) || name.toLowerCase().startsWith(\"on\") || !allowedNames.has(name)) {\n throw new TypeError(`${label}.${name} is not a safe ${allowed.join(\", \")} attribute`);\n }\n if (attribute !== true && typeof attribute !== \"string\") {\n throw new TypeError(`${label}.${name} must be a string or true`);\n }\n copy[name] = attribute;\n }\n return Object.freeze(copy);\n}\nfunction assertLocalHeadReference(value: string, label: string): void {\n if (value.length === 0 || value.startsWith(\"//\") || /^[A-Za-z][A-Za-z0-9+.-]*:/.test(value)) {\n throw new TypeError(`${label} must be a local metadata reference; network URLs and URL schemes are forbidden`);\n }\n}\nfunction assertSafeStyle(value: string, label: string): void {\n if (/<\\/style/i.test(value))\n throw new TypeError(`${label} cannot contain </style>`);\n if (/@import\\b|url\\s*\\(|expression\\s*\\(|-moz-binding\\b|\\bbehavior\\s*:/i.test(value)) {\n throw new TypeError(`${label} cannot import, fetch, or execute external resources`);\n }\n}\nfunction normalizeLocalizedText(value: unknown, label: string): LocalizedText {\n if (typeof value === \"string\") {\n if (value.length === 0)\n throw new TypeError(`${label} must not be an empty string`);\n return value;\n }\n const fields = ownFields(value, label);\n if (fields.size === 0)\n throw new TypeError(`${label} must be a string or a non-empty locale map`);\n const copy: Record<string, string> = Object.create(null) as Record<string, string>;\n let hasNonEmptyText = false;\n for (const [locale, text] of fields) {\n if (locale.length === 0 || typeof text !== \"string\") {\n throw new TypeError(`${label} locale entries must use non-empty string keys and values`);\n }\n copy[locale] = text;\n hasNonEmptyText ||= text.length > 0;\n }\n if (!hasNonEmptyText) {\n throw new TypeError(`${label} locale map must contain at least one non-empty text value`);\n }\n return Object.freeze(copy);\n}\nfunction requireFunction(value: unknown, label: string): (...arguments_: never[]) => unknown {\n if (typeof value !== \"function\")\n throw new TypeError(`${label} must be a function`);\n return value as (...arguments_: never[]) => unknown;\n}\nfunction ownFields(value: unknown, label: string, allowedHiddenSymbols: readonly symbol[] = []): ReadonlyMap<string, unknown> {\n if (!isPlainObject(value))\n throw new TypeError(`${label} must be a direct plain object`);\n const fields: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!allowedHiddenSymbols.includes(key) || descriptor === undefined || descriptor.enumerable || !(\"value\" in descriptor)) {\n throw new TypeError(`${label} cannot contain symbol fields`);\n }\n continue;\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !descriptor.enumerable || !(\"value\" in descriptor)) {\n throw new TypeError(`${label} cannot contain accessors or hidden fields`);\n }\n fields.push([key, descriptor.value]);\n }\n return new Map(fields);\n}\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\nfunction assertOnlyFields(fields: ReadonlyMap<string, unknown>, allowed: readonly string[], label: string, optional: readonly string[] = []): void {\n const allowedFields = new Set(allowed);\n for (const key of fields.keys()) {\n if (!allowedFields.has(key))\n throw new TypeError(`${label} has an unknown field: ${key}`);\n }\n for (const key of allowed) {\n if (!fields.has(key) && !optional.includes(key)) {\n throw new TypeError(`${label} is missing required field: ${key}`);\n }\n }\n}\nfunction assertArray(value: readonly unknown[], label: string): void {\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor)) {\n throw new TypeError(`${label} cannot contain holes or accessors`);\n }\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === \"symbol\" || (key !== \"length\" && !isArrayIndex(key))) {\n throw new TypeError(`${label} cannot contain custom fields`);\n }\n }\n}\nfunction isArrayIndex(value: string): boolean {\n if (!/^(?:0|[1-9][0-9]*)$/.test(value))\n return false;\n const index = Number(value);\n return Number.isSafeInteger(index) && index >= 0 && index < 2 ** 32 - 1;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["report.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The Report author declaration. This module deliberately knows how to\n * validate and normalize author data, but never how to open a Record, run an\n * Effect, or publish a site. Those are Host responsibilities.\n */\nimport type { AttemptEvidenceDomainView, JsonValue, PricingProfile, Sample as AnalysisSample, } from \"../../analysis/index.ts\";\nimport { builtInPricingProfile, isPricingProfile } from \"../../analysis/cost.ts\";\nimport type { AttemptLocator } from \"../../attempt-locator.ts\";\nimport type { LocalizedText } from \"../model/locale.ts\";\nimport { isThemeDefinition, type ThemeDefinition, } from \"../theme.ts\";\nimport { assertDimensionPins, type DimensionPins, } from \"../presentation.ts\";\nimport type { ReportNode } from \"./tree.ts\";\nexport type { DimensionPins } from \"../presentation.ts\";\nexport type { PricingProfile } from \"../../analysis/index.ts\";\n/**\n * A Host-issued Analysis capability at the Report boundary. It is an alias,\n * rather than a wrapper, so the Analysis facade can consume it without a\n * second capability registry. Its public shape exposes no reader, path, or\n * Effect Scope.\n */\nexport type ReportSample = AnalysisSample;\n/** Author-facing Sample alias for Report imports. */\nexport type Sample = ReportSample;\nexport const DEFAULT_PAGE_ID = \"report\";\nexport const DEFAULT_PAGE_TITLE: LocalizedText = Object.freeze({ en: \"Report\", \"zh-CN\": \"报告\" });\nexport type HeadAttributeValue = string | true;\nexport type HeadAttributes = Readonly<Record<string, HeadAttributeValue>>;\nexport type ScriptCrossOrigin = \"anonymous\" | \"use-credentials\";\nexport type ScriptReferrerPolicy = \"no-referrer\" | \"no-referrer-when-downgrade\" | \"origin\" | \"origin-when-cross-origin\" | \"same-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | \"unsafe-url\";\n/** The normalized script attributes retained after Host validation. */\nexport type ScriptHeadAttributes = Readonly<{\n readonly src?: string;\n readonly type?: string;\n readonly async?: true;\n readonly defer?: true;\n readonly integrity?: string;\n readonly crossorigin?: ScriptCrossOrigin;\n readonly referrerpolicy?: ScriptReferrerPolicy;\n}> & Readonly<Partial<Record<`data-${string}`, string>>>;\n/**\n * The author shape: a closed tag-name union with ordinary string/boolean\n * attributes. The Host still applies tag-specific validation before any value\n * enters a revision, so this preserves author inference without opening raw\n * HTML or bypassing the script/style safety boundary.\n */\nexport type HeadTag = Readonly<{\n readonly tag: \"meta\" | \"link\";\n readonly attrs: HeadAttributes;\n readonly children?: never;\n}> | Readonly<{\n readonly tag: \"script\" | \"style\";\n readonly attrs?: HeadAttributes;\n readonly children?: string;\n}>;\nexport type StyleDeclaration = Readonly<{\n readonly tag: \"style\";\n readonly attrs?: HeadAttributes;\n readonly children: string;\n}>;\n/** Declarative asset value; materialization remains Host-owned. */\nexport type ReportAsset = Readonly<{\n readonly src: string;\n readonly inline?: never;\n}> | Readonly<{\n readonly inline: string;\n readonly src?: never;\n}>;\nexport interface ReportShell {\n readonly title?: LocalizedText;\n readonly theme?: ThemeDefinition;\n readonly dimensionPins?: DimensionPins;\n readonly head?: readonly HeadTag[];\n /**\n * The one pricing source for this Report's cost projections. It must be a\n * pricing-profile/v1 value created by Analysis `definePricingProfile`.\n * Report validates it through Analysis and retains the same frozen object.\n */\n readonly pricing?: PricingProfile;\n}\n/** The page identity made available to callbacks while the ReportSample lives. */\nexport interface PageContext {\n readonly id: string;\n readonly path: string;\n readonly title: LocalizedText;\n /** Present only for one already-enumerated parameterized Page instance. */\n readonly params?: JsonValue;\n}\n/** A canonical locator selects one Host-provided closed Evidence view. */\nexport type EvidenceLocator = AttemptLocator;\nexport type PageEvidence = AttemptEvidenceDomainView;\n/**\n * The deliberately narrow Page data access surface. Evidence is already a\n * closed domain view; no Record reader, source root, filesystem path, or\n * arbitrary lookup enters author callbacks.\n */\nexport interface PageLoadContext {\n readonly page: PageContext;\n readonly evidence: (locator: EvidenceLocator) => Promise<PageEvidence>;\n}\nexport type PageLoad<Params, Input> = (sample: ReportSample, params: Params, context: PageLoadContext) => Input | Promise<Input>;\nexport type PageRender<Input> = (input: Input, context: PageContext) => ReportNode | Promise<ReportNode>;\n/** A parameter codec and the finite set of instances belonging to one build. */\nexport interface PageParams<Params extends JsonValue> {\n readonly encode: (params: Params) => string;\n readonly decode: (key: string) => Params;\n readonly enumerate: (sample: ReportSample) => Iterable<Params> | Promise<Iterable<Params>>;\n}\n/** A typed target for a Report-owned route. */\nexport interface ReportTarget<Params extends JsonValue = JsonValue> {\n readonly page: string;\n readonly params?: Params;\n}\n/** A normal Page. Without load(), its render input is the fixed ReportSample. */\nexport interface PlainPage<Input = ReportSample> {\n readonly id: string;\n readonly path?: string;\n readonly title: LocalizedText;\n readonly navigation?: boolean;\n readonly params?: never;\n readonly presentation?: \"page\";\n readonly load?: PageLoad<void, Input>;\n readonly render: PageRender<Input>;\n}\n/** A parameterized page has no navigation entry until a Host enumerates it. */\nexport interface ParameterizedPage<Params extends JsonValue, Input> {\n readonly id: string;\n readonly path?: string;\n readonly title: LocalizedText;\n readonly navigation: false;\n /** Whether each closed instance replaces the main Page or opens over it. */\n readonly presentation: \"page\" | \"overlay\";\n readonly role?: {\n readonly kind: \"experiment-group\";\n readonly groupKind: \"named\" | \"singleton\";\n };\n readonly params: PageParams<Params>;\n readonly load: PageLoad<Params, Input>;\n readonly render: PageRender<Input>;\n}\nexport type Page<Params extends JsonValue | void = void, Input = ReportSample> = [\n Params\n] extends [\n void\n] ? PlainPage<Input> : ParameterizedPage<Extract<Params, JsonValue>, Input>;\ntype AnyPage = PlainPage<any> | ParameterizedPage<any, any>;\ninterface NormalizedPlainPage<Input = unknown> {\n readonly id: string;\n readonly path: string;\n readonly title: LocalizedText;\n readonly navigation: boolean;\n readonly params?: never;\n readonly presentation: \"page\";\n readonly load?: PageLoad<void, Input>;\n readonly render: PageRender<Input>;\n}\ninterface NormalizedParameterizedPage<Params extends JsonValue = JsonValue, Input = unknown> {\n readonly id: string;\n readonly path: string;\n readonly title: LocalizedText;\n readonly navigation: false;\n readonly presentation: \"page\" | \"overlay\";\n readonly role?: {\n readonly kind: \"experiment-group\";\n readonly groupKind: \"named\" | \"singleton\";\n };\n readonly params: PageParams<Params>;\n readonly load: PageLoad<Params, Input>;\n readonly render: PageRender<Input>;\n}\ntype NormalizedPage = NormalizedPlainPage | NormalizedParameterizedPage;\n/** Internal product-list helper also used by the built-in declaration factory. */\nexport type NonEmptyArray<Value> = readonly [\n Value,\n ...Value[]\n];\ninterface ReportInput<Pages extends NonEmptyArray<AnyPage> = NonEmptyArray<AnyPage>> extends ReportShell {\n readonly pages: Pages;\n}\n/** Internal input shape for package-built Report factories; not a public manifest alias. */\nexport interface ReportOptions<Pages extends NonEmptyArray<AnyPage> = NonEmptyArray<AnyPage>> extends ReportInput<Pages> {\n}\n/**\n * A frozen Report definition. Callback-bearing pages stay here only while a\n * Host resolves them; a finished Site revision must never retain this value.\n */\nexport interface ReportDefinition extends Omit<ReportShell, \"pricing\"> {\n readonly kind: \"report\";\n /** Structural-only declaration marker that survives independently emitted declarations. */\n readonly __niceevalReportDefinition: never;\n readonly head: readonly HeadTag[];\n readonly pages: NonEmptyArray<NormalizedPage>;\n /** The exact Analysis-created Profile, or the explicit no-Profile state. */\n readonly pricing: PricingProfile | null;\n}\nexport interface ReportMetaPage {\n readonly id: string;\n readonly title: LocalizedText;\n readonly navigation: boolean;\n readonly presentation: \"page\" | \"overlay\";\n}\n/** Closed declaration metadata available as ctx.report during one resolve. */\nexport interface ReportMeta {\n readonly title: LocalizedText;\n readonly pages: readonly ReportMetaPage[];\n /**\n * The exact same frozen value as the owning ReportDefinition's `pricing`.\n * `ctx.report.pricing === report.pricing` holds by construction; consumers\n * pass it to the profile-taking `costUSD(profile)` / `totalCostUSD(profile)`.\n */\n readonly pricing: PricingProfile | null;\n}\nconst REPORT_DESCRIPTOR: unique symbol = Symbol.for(\"niceeval.report.definition/v2\");\nconst REPORT_DESCRIPTOR_VERSION = 2;\n// This exact pair is shared with execution/machine.ts. The Report module\n// does not import that Host module: it only recognizes and copies this\n// data-only descriptor while normalizing an input definition.\nconst BUILT_IN_MACHINE_DESCRIPTOR = Symbol.for(\"niceeval.report.built-in-machine-descriptor/v2\");\nconst BUILT_IN_MACHINE_REPORT_DESCRIPTOR = Symbol.for(\"niceeval.report.built-in-machine-report-descriptor/v2\");\nconst BUILT_IN_MACHINE_DESCRIPTOR_BRAND = \"niceeval.report.built-in-machine-descriptor/v2\";\ninterface ReportDescriptor {\n readonly version: 2;\n readonly kind: \"report\";\n}\ninterface BuiltInMachineDescriptorCopy {\n readonly producerId: string;\n}\n/**\n * Defines a Report with a non-empty Page list. A separate overload accepts a\n * single-page shorthand and normalizes it to /.\n */\nexport function defineReport<const Pages extends NonEmptyArray<AnyPage>>(definition: ReportInput<Pages>): ReportDefinition;\nexport function defineReport(render: (sample: ReportSample) => ReportNode | Promise<ReportNode>): ReportDefinition;\nexport function defineReport(input: unknown): ReportDefinition {\n const source = typeof input === \"function\"\n ? {\n pages: [{ id: DEFAULT_PAGE_ID, title: DEFAULT_PAGE_TITLE, render: input }],\n }\n : input;\n const builtInMachine = readBuiltInMachineDescriptor(source);\n const fields = ownFields(source, \"defineReport\", [BUILT_IN_MACHINE_REPORT_DESCRIPTOR]);\n assertOnlyFields(fields, [\"title\", \"theme\", \"dimensionPins\", \"head\", \"pages\", \"pricing\"], \"defineReport\", [\"title\", \"theme\", \"dimensionPins\", \"head\", \"pricing\"]);\n const title = fields.has(\"title\") ? normalizeLocalizedText(fields.get(\"title\"), \"Report title\") : undefined;\n const theme = fields.has(\"theme\") ? normalizeTheme(fields.get(\"theme\")) : undefined;\n const dimensionPins = fields.has(\"dimensionPins\")\n ? normalizeDimensionPins(fields.get(\"dimensionPins\"))\n : undefined;\n const head = fields.has(\"head\") ? normalizeHead(fields.get(\"head\")) : Object.freeze([]) as readonly HeadTag[];\n const pages = normalizePages(fields.get(\"pages\"));\n const pricing = fields.has(\"pricing\") ? normalizePricingProfile(fields.get(\"pricing\")) : builtInPricingProfile;\n const report: Record<string | symbol, unknown> = {\n kind: \"report\",\n ...(title === undefined ? {} : { title }),\n ...(theme === undefined ? {} : { theme }),\n ...(dimensionPins === undefined ? {} : { dimensionPins }),\n pricing,\n head,\n pages,\n };\n Object.defineProperty(report, REPORT_DESCRIPTOR, {\n value: Object.freeze({ version: REPORT_DESCRIPTOR_VERSION, kind: \"report\" } satisfies ReportDescriptor),\n enumerable: false,\n writable: false,\n configurable: false,\n });\n if (builtInMachine !== undefined) {\n Object.defineProperty(report, BUILT_IN_MACHINE_REPORT_DESCRIPTOR, {\n value: builtInMachine,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n return Object.freeze(report) as unknown as ReportDefinition;\n}\n/** Recognizes a Report from another installed copy of niceeval as well. */\nexport function isReport(value: unknown): value is ReportDefinition {\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n if (!hasExactReportFields(value))\n return false;\n if (value.kind !== \"report\" || !Object.hasOwn(value, \"pricing\") ||\n (value.pricing !== null && !isPricingProfile(value.pricing)))\n return false;\n const descriptor = Object.getOwnPropertyDescriptor(value, REPORT_DESCRIPTOR);\n if (!isFrozenHiddenDataDescriptor(descriptor) || !isReportDescriptor(descriptor.value))\n return false;\n if (!isFrozenHead(value.head) || !isFrozenPages(value.pages))\n return false;\n return isOptionalFrozenLocalizedText(value.title) &&\n isOptionalThemeDefinition(value.theme) && isOptionalFrozenDimensionPins(value.dimensionPins) &&\n isValidBuiltInMachineReportDescriptor(value);\n}\n/** Internal Host boundary: validates the Symbol.for descriptor before use. */\nfunction reportDefinition(value: ReportDefinition): ReportDefinition {\n if (!isReport(value))\n throw new TypeError(\"a Report must be created by defineReport\");\n return value;\n}\n/** The declaration title is stable without opening a Sample. */\nexport function resolveReportTitle(value: ReportDefinition): LocalizedText {\n const report = reportDefinition(value);\n return report.title ?? report.pages[0].title ?? DEFAULT_PAGE_TITLE;\n}\n/** Produces declaration-only metadata for ctx.report; it never opens a Sample. */\nexport function buildReportMeta(value: ReportDefinition): ReportMeta {\n const report = reportDefinition(value);\n const meta: Record<string, unknown> = {\n title: resolveReportTitle(report),\n pages: Object.freeze(report.pages.map((page) => Object.freeze({\n id: page.id,\n title: page.title,\n navigation: page.navigation,\n presentation: page.presentation,\n }))),\n pricing: report.pricing,\n };\n return Object.freeze(meta) as unknown as ReportMeta;\n}\nfunction isReportDescriptor(value: unknown): value is ReportDescriptor {\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n if (!hasExactOwnDataFields(value, [\"version\", \"kind\"]))\n return false;\n return value.version === REPORT_DESCRIPTOR_VERSION && value.kind === \"report\";\n}\n/**\n * A global Symbol alone is not provenance. A duplicate package can recognize\n * a frozen Report, but a hand-written lookalike must still satisfy the exact\n * normalized representation `defineReport` emits: no hidden fields,\n * accessors, mutable arrays, or raw Page/Head shapes survive this boundary.\n */\nfunction hasExactReportFields(value: Record<string, unknown>): boolean {\n const names = Object.getOwnPropertyNames(value);\n const allowed = new Set([\"kind\", \"title\", \"theme\", \"dimensionPins\", \"pricing\", \"head\", \"pages\"]);\n if (!names.includes(\"kind\") || !names.includes(\"pricing\") || !names.includes(\"head\") || !names.includes(\"pages\") ||\n names.some((name) => !allowed.has(name)))\n return false;\n for (const name of names) {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n if (!isEnumerableDataDescriptor(descriptor))\n return false;\n }\n const symbols = Object.getOwnPropertySymbols(value);\n if (symbols.some((symbol) => symbol !== REPORT_DESCRIPTOR && symbol !== BUILT_IN_MACHINE_REPORT_DESCRIPTOR)) {\n return false;\n }\n return symbols.includes(REPORT_DESCRIPTOR) &&\n [\"title\", \"theme\", \"dimensionPins\"].every((name) => !Object.hasOwn(value, name) || value[name] !== undefined);\n}\nfunction isValidBuiltInMachineReportDescriptor(value: Record<string, unknown>): boolean {\n const descriptor = Object.getOwnPropertyDescriptor(value, BUILT_IN_MACHINE_REPORT_DESCRIPTOR);\n if (descriptor === undefined)\n return true;\n return isFrozenHiddenDataDescriptor(descriptor) && isBuiltInMachineDescriptor(descriptor.value);\n}\nfunction isFrozenHiddenDataDescriptor(descriptor: PropertyDescriptor | undefined): descriptor is PropertyDescriptor & {\n readonly value: unknown;\n} {\n return descriptor !== undefined && \"value\" in descriptor &&\n descriptor.enumerable === false && descriptor.writable === false && descriptor.configurable === false &&\n typeof descriptor.get === \"undefined\" && typeof descriptor.set === \"undefined\" &&\n typeof descriptor.value === \"object\" && descriptor.value !== null && Object.isFrozen(descriptor.value);\n}\nfunction isEnumerableDataDescriptor(descriptor: PropertyDescriptor | undefined): descriptor is PropertyDescriptor & {\n readonly value: unknown;\n} {\n return descriptor !== undefined && \"value\" in descriptor && descriptor.enumerable === true &&\n typeof descriptor.get === \"undefined\" && typeof descriptor.set === \"undefined\";\n}\nfunction hasExactOwnDataFields(value: Record<string, unknown>, expected: readonly string[]): boolean {\n const names = Object.getOwnPropertyNames(value);\n if (names.length !== expected.length || expected.some((name) => !names.includes(name)) ||\n Object.getOwnPropertySymbols(value).length !== 0)\n return false;\n return names.every((name) => isEnumerableDataDescriptor(Object.getOwnPropertyDescriptor(value, name)));\n}\nfunction isOptionalThemeDefinition(value: unknown): boolean {\n return value === undefined || isThemeDefinition(value);\n}\nfunction isOptionalFrozenLocalizedText(value: unknown): boolean {\n return value === undefined || isFrozenLocalizedText(value);\n}\nfunction isOptionalFrozenDimensionPins(value: unknown): boolean {\n return value === undefined || isFrozenDimensionPins(value);\n}\nfunction isFrozenLocalizedText(value: unknown): value is LocalizedText {\n if (typeof value === \"string\")\n return value.length > 0;\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n const names = Object.getOwnPropertyNames(value);\n return names.length > 0 && Object.getOwnPropertySymbols(value).length === 0 && names.every((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n return name.length > 0 && isEnumerableDataDescriptor(descriptor) && typeof descriptor.value === \"string\";\n }) && names.some((name) => (value as Readonly<Record<string, unknown>>)[name] !== \"\");\n}\nfunction isFrozenHead(value: unknown): value is readonly HeadTag[] {\n if (!Array.isArray(value) || !Object.isFrozen(value) || !isClosedArray(value))\n return false;\n return value.every(isFrozenHeadTag);\n}\nfunction isFrozenHeadTag(value: unknown): value is HeadTag {\n if (!isPlainObject(value) || !Object.isFrozen(value))\n return false;\n try {\n normalizeHeadTag(value, \"Report head\");\n }\n catch {\n return false;\n }\n const tag = value.tag;\n if (tag === \"meta\" || tag === \"link\") {\n return hasExactOwnDataFields(value, [\"tag\", \"attrs\"]) && isFrozenHeadAttributes(value.attrs);\n }\n if (tag === \"style\") {\n const valid = hasExactOwnDataFields(value, [\"tag\", \"children\"]) ||\n hasExactOwnDataFields(value, [\"tag\", \"attrs\", \"children\"]);\n return valid && typeof value.children === \"string\" &&\n (value.attrs === undefined || isFrozenHeadAttributes(value.attrs));\n }\n if (tag !== \"script\")\n return false;\n const valid = hasExactOwnDataFields(value, [\"tag\", \"attrs\"]) ||\n hasExactOwnDataFields(value, [\"tag\", \"children\"]) ||\n hasExactOwnDataFields(value, [\"tag\", \"attrs\", \"children\"]);\n if (!valid || (value.attrs !== undefined && !isFrozenHeadAttributes(value.attrs)) ||\n (value.children !== undefined && typeof value.children !== \"string\"))\n return false;\n const attrs = value.attrs as Readonly<Record<string, unknown>> | undefined;\n const hasSource = attrs !== undefined && typeof attrs.src === \"string\";\n return hasSource !== Object.hasOwn(value, \"children\");\n}\nfunction isFrozenHeadAttributes(value: unknown): value is HeadAttributes {\n if (!isPlainObject(value) || !Object.isFrozen(value) || Object.getOwnPropertySymbols(value).length !== 0)\n return false;\n return Object.getOwnPropertyNames(value).every((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n return isEnumerableDataDescriptor(descriptor) && (descriptor.value === true || typeof descriptor.value === \"string\");\n });\n}\nfunction isFrozenPages(value: unknown): value is NonEmptyArray<NormalizedPage> {\n if (!Array.isArray(value) || value.length === 0 || !Object.isFrozen(value) || !isClosedArray(value))\n return false;\n const ids = new Set<string>();\n const plainPaths = new Set<string>();\n for (const page of value) {\n if (!isFrozenNormalizedPage(page) || ids.has(page.id))\n return false;\n ids.add(page.id);\n if (page.params === undefined) {\n if (plainPaths.has(page.path))\n return false;\n plainPaths.add(page.path);\n }\n }\n return true;\n}\nfunction isFrozenNormalizedPage(value: unknown): value is NormalizedPage {\n if (!isPlainObject(value) || !Object.isFrozen(value) || !isFrozenLocalizedText(value.title) ||\n typeof value.id !== \"string\" || typeof value.path !== \"string\" || typeof value.navigation !== \"boolean\" ||\n typeof value.render !== \"function\")\n return false;\n try {\n normalizePageId(value.id, \"Report page\");\n normalizePath(value.path, \"Report page\");\n }\n catch {\n return false;\n }\n if (Object.hasOwn(value, \"params\")) {\n return value.navigation === false && (value.presentation === \"page\" || value.presentation === \"overlay\") &&\n typeof value.load === \"function\" &&\n (hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"presentation\", \"params\", \"load\", \"render\"]) ||\n hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"presentation\", \"role\", \"params\", \"load\", \"render\"])) &&\n (!Object.hasOwn(value, \"role\") || isExperimentGroupRole(value.role)) &&\n isFrozenPageParams(value.params);\n }\n const valid = hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"presentation\", \"render\"]) ||\n hasExactOwnDataFields(value, [\"id\", \"path\", \"title\", \"navigation\", \"presentation\", \"load\", \"render\"]);\n return valid && value.presentation === \"page\" && (!Object.hasOwn(value, \"load\") || typeof value.load === \"function\");\n}\nfunction isFrozenDimensionPins(value: unknown): value is DimensionPins {\n if (!isPlainObject(value) || !Object.isFrozen(value) || Object.getOwnPropertySymbols(value).length !== 0)\n return false;\n try {\n assertDimensionPins(value);\n }\n catch {\n return false;\n }\n return Object.getOwnPropertyNames(value).every((dimension) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, dimension);\n if (!isEnumerableDataDescriptor(descriptor) || !isPlainObject(descriptor.value) ||\n !Object.isFrozen(descriptor.value) || Object.getOwnPropertySymbols(descriptor.value).length !== 0) {\n return false;\n }\n return Object.getOwnPropertyNames(descriptor.value).every((entry) => isEnumerableDataDescriptor(Object.getOwnPropertyDescriptor(descriptor.value, entry)));\n });\n}\nfunction isFrozenPageParams(value: unknown): value is PageParams<JsonValue> {\n return isPlainObject(value) && Object.isFrozen(value) &&\n hasExactOwnDataFields(value, [\"encode\", \"decode\", \"enumerate\"]) &&\n typeof value.encode === \"function\" && typeof value.decode === \"function\" && typeof value.enumerate === \"function\";\n}\nfunction isClosedArray(value: readonly unknown[]): boolean {\n for (let index = 0; index < value.length; index += 1) {\n if (!isEnumerableDataDescriptor(Object.getOwnPropertyDescriptor(value, String(index))))\n return false;\n }\n const names = Object.getOwnPropertyNames(value);\n return names.length === value.length + 1 && names.includes(\"length\") &&\n names.every((name) => name === \"length\" || isArrayIndex(name)) && Object.getOwnPropertySymbols(value).length === 0;\n}\n/**\n * Copies the versioned identifier only. The Host owns the producer registry;\n * no executable field can pass from an input definition to its frozen Report.\n */\nfunction readBuiltInMachineDescriptor(value: unknown): BuiltInMachineDescriptorCopy | undefined {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null)\n return undefined;\n const property = Object.getOwnPropertyDescriptor(value, BUILT_IN_MACHINE_REPORT_DESCRIPTOR);\n if (property === undefined)\n return undefined;\n if (!(\"value\" in property) || property.enumerable || !isBuiltInMachineDescriptor(property.value)) {\n throw new TypeError(\"defineReport received an invalid built-in machine descriptor\");\n }\n const copy: Record<string | symbol, unknown> = { producerId: property.value.producerId };\n Object.defineProperty(copy, BUILT_IN_MACHINE_DESCRIPTOR, {\n value: BUILT_IN_MACHINE_DESCRIPTOR_BRAND,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return Object.freeze(copy) as unknown as BuiltInMachineDescriptorCopy;\n}\nfunction isBuiltInMachineDescriptor(value: unknown): value is BuiltInMachineDescriptorCopy {\n if (!isPlainObject(value) || !hasOnlyStringFields(value, [\"producerId\"]) || !isVersionedProducerId(value.producerId)) {\n return false;\n }\n const brand = Object.getOwnPropertyDescriptor(value, BUILT_IN_MACHINE_DESCRIPTOR);\n return brand !== undefined && \"value\" in brand && brand.value === BUILT_IN_MACHINE_DESCRIPTOR_BRAND;\n}\nfunction hasOnlyStringFields(value: Record<string, unknown>, expected: readonly string[]): boolean {\n const keys = Object.keys(value);\n return keys.length === expected.length && expected.every((key) => Object.hasOwn(value, key));\n}\nfunction isVersionedProducerId(value: unknown): value is string {\n return typeof value === \"string\" && /^[^\\s@][^\\s]*@v[1-9][0-9]*$/u.test(value);\n}\nfunction normalizePages(value: unknown): NonEmptyArray<NormalizedPage> {\n if (!Array.isArray(value) || value.length === 0) {\n throw new TypeError(\"defineReport requires a non-empty pages array\");\n }\n assertArray(value, \"Report pages\");\n const pages = value.map((page, index) => normalizePage(page, index));\n const ids = new Set<string>();\n const plainPaths = new Set<string>();\n for (const page of pages) {\n if (ids.has(page.id))\n throw new TypeError(`Report page id ${JSON.stringify(page.id)} is duplicated`);\n ids.add(page.id);\n if (page.params === undefined) {\n if (plainPaths.has(page.path)) {\n throw new TypeError(`ordinary Report page path ${JSON.stringify(page.path)} is duplicated`);\n }\n plainPaths.add(page.path);\n }\n }\n return Object.freeze(pages) as NonEmptyArray<NormalizedPage>;\n}\nfunction normalizePage(value: unknown, index: number): NormalizedPage {\n const label = `Report page at pages[${index}]`;\n const fields = ownFields(value, label);\n const parameterized = fields.has(\"params\");\n assertOnlyFields(fields, parameterized\n ? [\"id\", \"path\", \"title\", \"navigation\", \"presentation\", \"role\", \"params\", \"load\", \"render\"]\n : [\"id\", \"path\", \"title\", \"navigation\", \"presentation\", \"load\", \"render\"], label, parameterized ? [\"path\", \"role\"] : [\"path\", \"navigation\", \"presentation\", \"load\"]);\n const id = normalizePageId(fields.get(\"id\"), label);\n const path = fields.has(\"path\") && fields.get(\"path\") !== undefined\n ? normalizePath(fields.get(\"path\"), label)\n : derivePagePath(id);\n const title = normalizeLocalizedText(fields.get(\"title\"), `${label} title`);\n const render = requireFunction(fields.get(\"render\"), `${label}.render`);\n if (parameterized) {\n if (fields.get(\"navigation\") !== false) {\n throw new TypeError(`${label} declares params and must set navigation: false`);\n }\n const params = normalizePageParams(fields.get(\"params\"), `${label}.params`);\n const presentation = fields.get(\"presentation\");\n if (presentation !== \"page\" && presentation !== \"overlay\") {\n throw new TypeError(`${label}.presentation must be \\\"page\\\" or \\\"overlay\\\"`);\n }\n const load = requireFunction(fields.get(\"load\"), `${label}.load`);\n const role = fields.has(\"role\") ? normalizeExperimentGroupRole(fields.get(\"role\"), `${label}.role`) : undefined;\n return Object.freeze({\n id,\n path,\n title,\n navigation: false as const,\n presentation,\n ...(role === undefined ? {} : { role }),\n params,\n load: load as PageLoad<JsonValue, unknown>,\n render: render as PageRender<unknown>,\n }) as NormalizedParameterizedPage<JsonValue, unknown>;\n }\n const navigation = fields.get(\"navigation\");\n if (navigation !== undefined && typeof navigation !== \"boolean\") {\n throw new TypeError(`${label}.navigation must be a boolean when supplied`);\n }\n const load = fields.get(\"load\");\n if (load !== undefined && typeof load !== \"function\") {\n throw new TypeError(`${label}.load must be a function when supplied`);\n }\n return Object.freeze({\n id,\n path,\n title,\n navigation: navigation !== false,\n presentation: \"page\" as const,\n ...(load === undefined ? {} : { load: load as PageLoad<void, unknown> }),\n render: render as PageRender<unknown>,\n }) as NormalizedPlainPage<unknown>;\n}\nfunction normalizeExperimentGroupRole(value: unknown, label: string): NonNullable<NormalizedParameterizedPage[\"role\"]> {\n const fields = ownFields(value, label);\n assertOnlyFields(fields, [\"kind\", \"groupKind\"], label);\n if (fields.get(\"kind\") !== \"experiment-group\" ||\n (fields.get(\"groupKind\") !== \"named\" && fields.get(\"groupKind\") !== \"singleton\")) {\n throw new TypeError(`${label} must declare experiment-group and named/singleton`);\n }\n return Object.freeze({\n kind: \"experiment-group\" as const,\n groupKind: fields.get(\"groupKind\") as \"named\" | \"singleton\",\n });\n}\nfunction isExperimentGroupRole(value: unknown): value is NonNullable<NormalizedParameterizedPage[\"role\"]> {\n try {\n return normalizeExperimentGroupRole(value, \"Report page role\") !== undefined;\n }\n catch {\n return false;\n }\n}\nfunction derivePagePath(id: string): string {\n return id === DEFAULT_PAGE_ID ? \"/\" : `/${id}`;\n}\nfunction normalizePageParams(value: unknown, label: string): PageParams<JsonValue> {\n const fields = ownFields(value, label);\n assertOnlyFields(fields, [\"encode\", \"decode\", \"enumerate\"], label);\n const encode = requireFunction(fields.get(\"encode\"), `${label}.encode`);\n const decode = requireFunction(fields.get(\"decode\"), `${label}.decode`);\n const enumerate = requireFunction(fields.get(\"enumerate\"), `${label}.enumerate`);\n return Object.freeze({\n encode: encode as PageParams<JsonValue>[\"encode\"],\n decode: decode as PageParams<JsonValue>[\"decode\"],\n enumerate: enumerate as PageParams<JsonValue>[\"enumerate\"],\n });\n}\nconst PAGE_ID_PATTERN = /^[a-z][a-z0-9_-]*$/;\nconst PATH_SEGMENT_PATTERN = /^[a-z0-9][a-z0-9._~-]*$/;\nconst WINDOWS_DEVICE_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\..*)?$/i;\nconst MAX_PAGE_ID_BYTES = 128;\nconst MAX_PATH_SEGMENT_BYTES = 128;\nconst MAX_PATH_BYTES = 1024;\nconst MAX_PATH_SEGMENTS = 32;\nconst encoder = new TextEncoder();\nfunction normalizePageId(value: unknown, label: string): string {\n if (typeof value !== \"string\" || !PAGE_ID_PATTERN.test(value) || /^[0-9]+$/.test(value)) {\n throw new TypeError(`${label}.id must match [a-z][a-z0-9_-]* and cannot be an ordinal`);\n }\n if (encoder.encode(value).byteLength > MAX_PAGE_ID_BYTES) {\n throw new TypeError(`${label}.id may contain at most ${MAX_PAGE_ID_BYTES} UTF-8 bytes`);\n }\n return value;\n}\nfunction normalizePath(value: unknown, label: string): string {\n if (typeof value !== \"string\")\n throw new TypeError(`${label}.path must be a string`);\n if (value === \"/\")\n return value;\n if (!value.startsWith(\"/\") || value.endsWith(\"/\") || value.includes(\"%\") ||\n value.includes(\"?\") || value.includes(\"#\") || value.includes(\"\\\\\")) {\n throw new TypeError(`${label}.path must be a normalized absolute Report route`);\n }\n if (encoder.encode(value).byteLength > MAX_PATH_BYTES) {\n throw new TypeError(`${label}.path may contain at most ${MAX_PATH_BYTES} UTF-8 bytes`);\n }\n const segments = value.slice(1).split(\"/\");\n if (segments.length === 0 || segments.length > MAX_PATH_SEGMENTS) {\n throw new TypeError(`${label}.path must contain between 1 and ${MAX_PATH_SEGMENTS} segments`);\n }\n for (const segment of segments) {\n if (!PATH_SEGMENT_PATTERN.test(segment) || segment === \".\" || segment === \"..\" ||\n segment.endsWith(\".\") || segment.endsWith(\" \") || WINDOWS_DEVICE_PATTERN.test(segment)) {\n throw new TypeError(`${label}.path contains an invalid route segment`);\n }\n if (encoder.encode(segment).byteLength > MAX_PATH_SEGMENT_BYTES) {\n throw new TypeError(`${label}.path has a segment longer than ${MAX_PATH_SEGMENT_BYTES} UTF-8 bytes`);\n }\n }\n return value;\n}\nfunction normalizeTheme(value: unknown): ThemeDefinition {\n if (!isThemeDefinition(value)) {\n throw new TypeError(\"Report theme must be a ThemeDefinition created by defineTheme\");\n }\n return value;\n}\n// PricingProfile normalization and cross-package validation have exactly one\n// owner: `niceeval/analysis`. Preserve the validated frozen reference so\n// `ctx.report.pricing === ReportDefinition.pricing` remains true.\nfunction normalizePricingProfile(value: unknown): PricingProfile {\n if (!isPricingProfile(value)) {\n throw new TypeError(\"Report pricing must be a PricingProfile created by definePricingProfile\");\n }\n return value;\n}\nfunction normalizeDimensionPins(value: unknown): DimensionPins {\n assertDimensionPins(value);\n const dimensions = ownFields(value, \"Report dimensionPins\");\n const copy: Record<string, Readonly<Record<string, number>>> = Object.create(null) as Record<string, Readonly<Record<string, number>>>;\n for (const [dimension, rawValues] of dimensions) {\n const values = ownFields(rawValues, `Report dimensionPins.${dimension}`);\n const pinned: Record<string, number> = Object.create(null) as Record<string, number>;\n for (const [valueName, slot] of values) {\n if (typeof slot !== \"number\") {\n throw new TypeError(`Report dimensionPins.${dimension}.${valueName} must be a seriesSlot number`);\n }\n pinned[valueName] = slot;\n }\n copy[dimension] = Object.freeze(pinned);\n }\n return Object.freeze(copy);\n}\nconst HEAD_ATTRIBUTE_NAME = /^[A-Za-z_:][A-Za-z0-9:._-]*$/;\nconst SAFE_LINK_RELATIONS = new Set([\"alternate\", \"author\", \"canonical\", \"license\"]);\nconst SCRIPT_DATA_ATTRIBUTE_NAME = /^data-[a-z][a-z0-9_.:-]*$/;\nconst SCRIPT_REFERRER_POLICIES = new Set<ScriptReferrerPolicy>([\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"origin\",\n \"origin-when-cross-origin\",\n \"same-origin\",\n \"strict-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\",\n]);\nconst SCRIPT_INTEGRITY_TOKEN = /^(?:sha256|sha384|sha512)-[A-Za-z0-9+/_-]+={0,2}(?:\\?[A-Za-z0-9_-]+)?$/;\nconst SCRIPT_TYPE = /^(?:module|importmap|speculationrules|[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+(?:\\s*;\\s*[A-Za-z0-9!#$&^_.+-]+=[A-Za-z0-9!#$&^_.+-]+)*)$/;\nconst INLINE_SCRIPT_BYTES_MAX = 65536;\nfunction normalizeHead(value: unknown): readonly HeadTag[] {\n if (!Array.isArray(value))\n throw new TypeError(\"Report head must be an array of structured meta, link, style, or script declarations\");\n assertArray(value, \"Report head\");\n return Object.freeze(value.map((entry, index) => normalizeHeadTag(entry, `Report head[${index}]`)));\n}\nfunction normalizeHeadTag(value: unknown, label: string): HeadTag {\n const fields = ownFields(value, label);\n const tag = fields.get(\"tag\");\n if (tag === \"script\") {\n assertOnlyFields(fields, [\"tag\", \"attrs\", \"children\"], label, [\"attrs\", \"children\"]);\n const attrs = fields.has(\"attrs\") ? normalizeScriptAttributes(fields.get(\"attrs\"), `${label}.attrs`) : undefined;\n const source = attrs?.src;\n const hasInline = fields.has(\"children\");\n if ((source === undefined) === !hasInline) {\n throw new TypeError(`${label} script must declare exactly one of attrs.src or inline children`);\n }\n if (hasInline) {\n const children = fields.get(\"children\");\n if (typeof children !== \"string\")\n throw new TypeError(`${label}.children must be inline script text`);\n assertInlineScript(children, `${label}.children`);\n return Object.freeze({\n tag,\n ...(attrs === undefined ? {} : { attrs: withoutScriptSource(attrs) }),\n children,\n }) as HeadTag;\n }\n return Object.freeze({\n tag,\n attrs: attrs as ScriptHeadAttributes & Readonly<{\n readonly src: string;\n }>,\n }) as HeadTag;\n }\n if (tag !== \"meta\" && tag !== \"link\" && tag !== \"style\") {\n throw new TypeError(`${label}.tag must be \\\"meta\\\", \\\"link\\\", \\\"style\\\", or \\\"script\\\"`);\n }\n if (tag === \"style\") {\n assertOnlyFields(fields, [\"tag\", \"attrs\", \"children\"], label, [\"attrs\"]);\n const children = fields.get(\"children\");\n if (typeof children !== \"string\")\n throw new TypeError(`${label}.children must be CSS text`);\n assertSafeStyle(children, `${label}.children`);\n const attrs = fields.has(\"attrs\")\n ? normalizeHeadAttributes(fields.get(\"attrs\"), `${label}.attrs`, [\"media\", \"type\"])\n : undefined;\n if (attrs?.type !== undefined && attrs.type !== \"text/css\") {\n throw new TypeError(`${label}.attrs.type must be \\\"text/css\\\" when supplied`);\n }\n return Object.freeze({ tag, ...(attrs === undefined ? {} : { attrs }), children });\n }\n assertOnlyFields(fields, [\"tag\", \"attrs\"], label);\n const attrs = normalizeHeadAttributes(fields.get(\"attrs\"), `${label}.attrs`, tag === \"meta\" ? [\"content\", \"itemprop\", \"name\", \"property\"] : [\"href\", \"hreflang\", \"rel\", \"title\", \"type\"]);\n if (tag === \"link\") {\n const rel = attrs.rel;\n const href = attrs.href;\n if (typeof rel !== \"string\" || !SAFE_LINK_RELATIONS.has(rel.toLowerCase()) || typeof href !== \"string\") {\n throw new TypeError(`${label} only permits inert link metadata (rel: alternate, author, canonical, or license) with a local href`);\n }\n assertLocalHeadReference(href, `${label}.attrs.href`);\n }\n return Object.freeze({ tag, attrs });\n}\nfunction normalizeScriptAttributes(value: unknown, label: string): ScriptHeadAttributes {\n const fields = ownFields(value, label);\n const copy: Record<string, string | true> = Object.create(null) as Record<string, string | true>;\n for (const [name, attribute] of fields) {\n const lower = name.toLowerCase();\n if (lower.startsWith(\"on\") || lower === \"nonce\") {\n throw new TypeError(`${label}.${name} is not permitted on a Report script`);\n }\n if (SCRIPT_DATA_ATTRIBUTE_NAME.test(name)) {\n if (typeof attribute !== \"string\")\n throw new TypeError(`${label}.${name} must be a string data-* value`);\n copy[name] = attribute;\n continue;\n }\n switch (name) {\n case \"src\":\n if (typeof attribute !== \"string\")\n throw new TypeError(`${label}.src must be a string`);\n assertScriptSource(attribute, `${label}.src`);\n copy.src = attribute;\n break;\n case \"type\":\n if (typeof attribute !== \"string\" || !SCRIPT_TYPE.test(attribute)) {\n throw new TypeError(`${label}.type must be a supported script type or MIME type`);\n }\n copy.type = attribute;\n break;\n case \"async\":\n case \"defer\":\n if (attribute !== true)\n throw new TypeError(`${label}.${name} must be true when supplied`);\n copy[name] = true;\n break;\n case \"integrity\":\n if (typeof attribute !== \"string\" || attribute.length === 0 ||\n !attribute.split(/\\s+/u).every((token) => SCRIPT_INTEGRITY_TOKEN.test(token))) {\n throw new TypeError(`${label}.integrity must contain one or more sha256/384/512 SRI tokens`);\n }\n copy.integrity = attribute;\n break;\n case \"crossorigin\":\n if (attribute !== \"anonymous\" && attribute !== \"use-credentials\") {\n throw new TypeError(`${label}.crossorigin must be \\\"anonymous\\\" or \\\"use-credentials\\\"`);\n }\n copy.crossorigin = attribute;\n break;\n case \"referrerpolicy\":\n if (typeof attribute !== \"string\" || !SCRIPT_REFERRER_POLICIES.has(attribute as ScriptReferrerPolicy)) {\n throw new TypeError(`${label}.referrerpolicy must be a recognized referrer policy`);\n }\n copy.referrerpolicy = attribute;\n break;\n default:\n throw new TypeError(`${label}.${name} is not a supported Report script attribute`);\n }\n }\n return Object.freeze(copy) as ScriptHeadAttributes;\n}\nfunction withoutScriptSource(value: ScriptHeadAttributes): Omit<ScriptHeadAttributes, \"src\"> {\n const { src: _source, ...attrs } = value;\n return Object.freeze(attrs);\n}\nfunction assertScriptSource(value: string, label: string): void {\n if (value.length === 0 || value.startsWith(\"//\") || value.includes(\"\\\\\") || /[\\u0000-\\u001F\\u007F]/u.test(value)) {\n throw new TypeError(`${label} must be a revision-local path, HTTPS URL, or loopback HTTP URL`);\n }\n if (!/^[A-Za-z][A-Za-z0-9+.-]*:/.test(value)) {\n const pathname = value.split(/[?#]/, 1)[0] ?? \"\";\n if (pathname.length === 0 || pathname.split(\"/\").some((segment) => segment === \"..\")) {\n throw new TypeError(`${label} must stay within the closed site revision`);\n }\n return;\n }\n let parsed: URL;\n try {\n parsed = new URL(value);\n }\n catch {\n throw new TypeError(`${label} must be a valid HTTPS or loopback HTTP URL`);\n }\n if (parsed.username.length > 0 || parsed.password.length > 0) {\n throw new TypeError(`${label} cannot contain URL credentials`);\n }\n if (parsed.protocol === \"https:\")\n return;\n if (parsed.protocol === \"http:\" && isLoopbackHostname(parsed.hostname))\n return;\n throw new TypeError(`${label} must use HTTPS or HTTP only for a loopback hostname`);\n}\nfunction isLoopbackHostname(value: string): boolean {\n const hostname = value.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\nfunction assertInlineScript(value: string, label: string): void {\n if (encoder.encode(value).byteLength > INLINE_SCRIPT_BYTES_MAX) {\n throw new TypeError(`${label} may contain at most ${INLINE_SCRIPT_BYTES_MAX} UTF-8 bytes`);\n }\n if (/<\\/script\\b/i.test(value))\n throw new TypeError(`${label} cannot contain </script`);\n}\nfunction normalizeHeadAttributes(value: unknown, label: string, allowed: readonly string[]): HeadAttributes {\n const fields = ownFields(value, label);\n const allowedNames = new Set(allowed);\n const copy: Record<string, HeadAttributeValue> = Object.create(null) as Record<string, HeadAttributeValue>;\n for (const [name, attribute] of fields) {\n if (!HEAD_ATTRIBUTE_NAME.test(name) || name.toLowerCase().startsWith(\"on\") || !allowedNames.has(name)) {\n throw new TypeError(`${label}.${name} is not a safe ${allowed.join(\", \")} attribute`);\n }\n if (attribute !== true && typeof attribute !== \"string\") {\n throw new TypeError(`${label}.${name} must be a string or true`);\n }\n copy[name] = attribute;\n }\n return Object.freeze(copy);\n}\nfunction assertLocalHeadReference(value: string, label: string): void {\n if (value.length === 0 || value.startsWith(\"//\") || /^[A-Za-z][A-Za-z0-9+.-]*:/.test(value)) {\n throw new TypeError(`${label} must be a local metadata reference; network URLs and URL schemes are forbidden`);\n }\n}\nfunction assertSafeStyle(value: string, label: string): void {\n if (/<\\/style/i.test(value))\n throw new TypeError(`${label} cannot contain </style>`);\n if (/@import\\b|url\\s*\\(|expression\\s*\\(|-moz-binding\\b|\\bbehavior\\s*:/i.test(value)) {\n throw new TypeError(`${label} cannot import, fetch, or execute external resources`);\n }\n}\nfunction normalizeLocalizedText(value: unknown, label: string): LocalizedText {\n if (typeof value === \"string\") {\n if (value.length === 0)\n throw new TypeError(`${label} must not be an empty string`);\n return value;\n }\n const fields = ownFields(value, label);\n if (fields.size === 0)\n throw new TypeError(`${label} must be a string or a non-empty locale map`);\n const copy: Record<string, string> = Object.create(null) as Record<string, string>;\n let hasNonEmptyText = false;\n for (const [locale, text] of fields) {\n if (locale.length === 0 || typeof text !== \"string\") {\n throw new TypeError(`${label} locale entries must use non-empty string keys and values`);\n }\n copy[locale] = text;\n hasNonEmptyText ||= text.length > 0;\n }\n if (!hasNonEmptyText) {\n throw new TypeError(`${label} locale map must contain at least one non-empty text value`);\n }\n return Object.freeze(copy);\n}\nfunction requireFunction(value: unknown, label: string): (...arguments_: never[]) => unknown {\n if (typeof value !== \"function\")\n throw new TypeError(`${label} must be a function`);\n return value as (...arguments_: never[]) => unknown;\n}\nfunction ownFields(value: unknown, label: string, allowedHiddenSymbols: readonly symbol[] = []): ReadonlyMap<string, unknown> {\n if (!isPlainObject(value))\n throw new TypeError(`${label} must be a direct plain object`);\n const fields: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!allowedHiddenSymbols.includes(key) || descriptor === undefined || descriptor.enumerable || !(\"value\" in descriptor)) {\n throw new TypeError(`${label} cannot contain symbol fields`);\n }\n continue;\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !descriptor.enumerable || !(\"value\" in descriptor)) {\n throw new TypeError(`${label} cannot contain accessors or hidden fields`);\n }\n fields.push([key, descriptor.value]);\n }\n return new Map(fields);\n}\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\nfunction assertOnlyFields(fields: ReadonlyMap<string, unknown>, allowed: readonly string[], label: string, optional: readonly string[] = []): void {\n const allowedFields = new Set(allowed);\n for (const key of fields.keys()) {\n if (!allowedFields.has(key))\n throw new TypeError(`${label} has an unknown field: ${key}`);\n }\n for (const key of allowed) {\n if (!fields.has(key) && !optional.includes(key)) {\n throw new TypeError(`${label} is missing required field: ${key}`);\n }\n }\n}\nfunction assertArray(value: readonly unknown[], label: string): void {\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor)) {\n throw new TypeError(`${label} cannot contain holes or accessors`);\n }\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === \"symbol\" || (key !== \"length\" && !isArrayIndex(key))) {\n throw new TypeError(`${label} cannot contain custom fields`);\n }\n }\n}\nfunction isArrayIndex(value: string): boolean {\n if (!/^(?:0|[1-9][0-9]*)$/.test(value))\n return false;\n const index = Number(value);\n return Number.isSafeInteger(index) && index >= 0 && index < 2 ** 32 - 1;\n}\n"]}
|
|
@@ -116,6 +116,7 @@ export interface PlainPage<Input = ReportSample> {
|
|
|
116
116
|
readonly title: LocalizedText;
|
|
117
117
|
readonly navigation?: boolean;
|
|
118
118
|
readonly params?: never;
|
|
119
|
+
readonly presentation?: "page";
|
|
119
120
|
readonly load?: PageLoad<void, Input>;
|
|
120
121
|
readonly render: PageRender<Input>;
|
|
121
122
|
}
|
|
@@ -125,6 +126,8 @@ export interface ParameterizedPage<Params extends JsonValue, Input> {
|
|
|
125
126
|
readonly path?: string;
|
|
126
127
|
readonly title: LocalizedText;
|
|
127
128
|
readonly navigation: false;
|
|
129
|
+
/** Whether each closed instance replaces the main Page or opens over it. */
|
|
130
|
+
readonly presentation: "page" | "overlay";
|
|
128
131
|
readonly role?: {
|
|
129
132
|
readonly kind: "experiment-group";
|
|
130
133
|
readonly groupKind: "named" | "singleton";
|
|
@@ -143,6 +146,7 @@ interface NormalizedPlainPage<Input = unknown> {
|
|
|
143
146
|
readonly title: LocalizedText;
|
|
144
147
|
readonly navigation: boolean;
|
|
145
148
|
readonly params?: never;
|
|
149
|
+
readonly presentation: "page";
|
|
146
150
|
readonly load?: PageLoad<void, Input>;
|
|
147
151
|
readonly render: PageRender<Input>;
|
|
148
152
|
}
|
|
@@ -151,6 +155,7 @@ interface NormalizedParameterizedPage<Params extends JsonValue = JsonValue, Inpu
|
|
|
151
155
|
readonly path: string;
|
|
152
156
|
readonly title: LocalizedText;
|
|
153
157
|
readonly navigation: false;
|
|
158
|
+
readonly presentation: "page" | "overlay";
|
|
154
159
|
readonly role?: {
|
|
155
160
|
readonly kind: "experiment-group";
|
|
156
161
|
readonly groupKind: "named" | "singleton";
|
|
@@ -185,6 +190,7 @@ export interface ReportMetaPage {
|
|
|
185
190
|
readonly id: string;
|
|
186
191
|
readonly title: LocalizedText;
|
|
187
192
|
readonly navigation: boolean;
|
|
193
|
+
readonly presentation: "page" | "overlay";
|
|
188
194
|
}
|
|
189
195
|
/** Closed declaration metadata available as ctx.report during one resolve. */
|
|
190
196
|
export interface ReportMeta {
|
|
@@ -116,6 +116,7 @@ export interface PlainPage<Input = ReportSample> {
|
|
|
116
116
|
readonly title: LocalizedText;
|
|
117
117
|
readonly navigation?: boolean;
|
|
118
118
|
readonly params?: never;
|
|
119
|
+
readonly presentation?: "page";
|
|
119
120
|
readonly load?: PageLoad<void, Input>;
|
|
120
121
|
readonly render: PageRender<Input>;
|
|
121
122
|
}
|
|
@@ -125,6 +126,8 @@ export interface ParameterizedPage<Params extends JsonValue, Input> {
|
|
|
125
126
|
readonly path?: string;
|
|
126
127
|
readonly title: LocalizedText;
|
|
127
128
|
readonly navigation: false;
|
|
129
|
+
/** Whether each closed instance replaces the main Page or opens over it. */
|
|
130
|
+
readonly presentation: "page" | "overlay";
|
|
128
131
|
readonly role?: {
|
|
129
132
|
readonly kind: "experiment-group";
|
|
130
133
|
readonly groupKind: "named" | "singleton";
|
|
@@ -143,6 +146,7 @@ interface NormalizedPlainPage<Input = unknown> {
|
|
|
143
146
|
readonly title: LocalizedText;
|
|
144
147
|
readonly navigation: boolean;
|
|
145
148
|
readonly params?: never;
|
|
149
|
+
readonly presentation: "page";
|
|
146
150
|
readonly load?: PageLoad<void, Input>;
|
|
147
151
|
readonly render: PageRender<Input>;
|
|
148
152
|
}
|
|
@@ -151,6 +155,7 @@ interface NormalizedParameterizedPage<Params extends JsonValue = JsonValue, Inpu
|
|
|
151
155
|
readonly path: string;
|
|
152
156
|
readonly title: LocalizedText;
|
|
153
157
|
readonly navigation: false;
|
|
158
|
+
readonly presentation: "page" | "overlay";
|
|
154
159
|
readonly role?: {
|
|
155
160
|
readonly kind: "experiment-group";
|
|
156
161
|
readonly groupKind: "named" | "singleton";
|
|
@@ -185,6 +190,7 @@ export interface ReportMetaPage {
|
|
|
185
190
|
readonly id: string;
|
|
186
191
|
readonly title: LocalizedText;
|
|
187
192
|
readonly navigation: boolean;
|
|
193
|
+
readonly presentation: "page" | "overlay";
|
|
188
194
|
}
|
|
189
195
|
/** Closed declaration metadata available as ctx.report during one resolve. */
|
|
190
196
|
export interface ReportMeta {
|
|
@@ -116,6 +116,7 @@ export interface PlainPage<Input = ReportSample> {
|
|
|
116
116
|
readonly title: LocalizedText;
|
|
117
117
|
readonly navigation?: boolean;
|
|
118
118
|
readonly params?: never;
|
|
119
|
+
readonly presentation?: "page";
|
|
119
120
|
readonly load?: PageLoad<void, Input>;
|
|
120
121
|
readonly render: PageRender<Input>;
|
|
121
122
|
}
|
|
@@ -125,6 +126,8 @@ export interface ParameterizedPage<Params extends JsonValue, Input> {
|
|
|
125
126
|
readonly path?: string;
|
|
126
127
|
readonly title: LocalizedText;
|
|
127
128
|
readonly navigation: false;
|
|
129
|
+
/** Whether each closed instance replaces the main Page or opens over it. */
|
|
130
|
+
readonly presentation: "page" | "overlay";
|
|
128
131
|
readonly role?: {
|
|
129
132
|
readonly kind: "experiment-group";
|
|
130
133
|
readonly groupKind: "named" | "singleton";
|
|
@@ -143,6 +146,7 @@ interface NormalizedPlainPage<Input = unknown> {
|
|
|
143
146
|
readonly title: LocalizedText;
|
|
144
147
|
readonly navigation: boolean;
|
|
145
148
|
readonly params?: never;
|
|
149
|
+
readonly presentation: "page";
|
|
146
150
|
readonly load?: PageLoad<void, Input>;
|
|
147
151
|
readonly render: PageRender<Input>;
|
|
148
152
|
}
|
|
@@ -151,6 +155,7 @@ interface NormalizedParameterizedPage<Params extends JsonValue = JsonValue, Inpu
|
|
|
151
155
|
readonly path: string;
|
|
152
156
|
readonly title: LocalizedText;
|
|
153
157
|
readonly navigation: false;
|
|
158
|
+
readonly presentation: "page" | "overlay";
|
|
154
159
|
readonly role?: {
|
|
155
160
|
readonly kind: "experiment-group";
|
|
156
161
|
readonly groupKind: "named" | "singleton";
|
|
@@ -185,6 +190,7 @@ export interface ReportMetaPage {
|
|
|
185
190
|
readonly id: string;
|
|
186
191
|
readonly title: LocalizedText;
|
|
187
192
|
readonly navigation: boolean;
|
|
193
|
+
readonly presentation: "page" | "overlay";
|
|
188
194
|
}
|
|
189
195
|
/** Closed declaration metadata available as ctx.report during one resolve. */
|
|
190
196
|
export interface ReportMeta {
|
|
@@ -129,6 +129,13 @@ function renderTableText(props, ctx) {
|
|
|
129
129
|
const natural = header.map((_, c) => Math.max(...matrix.map((row) => (0, text_layout_ts_1.stringWidth)(row[c] ?? ""))));
|
|
130
130
|
// 画线时列间距与不画线时相同(` │ ` 与 ` ` 都是 3 列),所以只有外框那 4 列要先让出来。
|
|
131
131
|
const lines = (0, panel_ts_1.dataBoxMode)(ctx.panelMode, ctx.width) === "boxed";
|
|
132
|
+
if (!lines) {
|
|
133
|
+
for (const row of body) {
|
|
134
|
+
if (row[0] !== undefined) {
|
|
135
|
+
row[0] = row[0].replaceAll("│", "|").replaceAll("├", "+").replaceAll("└", "`");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
132
139
|
// 嵌在画框的 Section 里:边界已由面板的框给出,自己只留列边界与表头横线,不套二层框。
|
|
133
140
|
const outerFrame = lines && (0, text_panel_state_ts_1.panelSectionDepth)() === 0;
|
|
134
141
|
const available = outerFrame ? ctx.width - panel_ts_1.DATA_BOX_FRAME_OVERHEAD : ctx.width;
|
|
@@ -140,6 +147,7 @@ function renderTableText(props, ctx) {
|
|
|
140
147
|
const headerPhysical = toPhysicalRows(header.slice(0, widths.length), widths, widths.map(() => undefined));
|
|
141
148
|
const bodyBlocks = body.map((row, i) => ({
|
|
142
149
|
depth: props.rows[i]?.depth ?? 0,
|
|
150
|
+
ruleBefore: props.rows[i]?.ruleBefore ?? false,
|
|
143
151
|
physical: toPhysicalRows(row.slice(0, widths.length), widths, maxLines),
|
|
144
152
|
}));
|
|
145
153
|
const bodyPhysical = bodyBlocks.flatMap((block) => block.physical);
|
|
@@ -150,8 +158,8 @@ function renderTableText(props, ctx) {
|
|
|
150
158
|
}
|
|
151
159
|
/**
|
|
152
160
|
* 数据格框形态:列边界贯穿全表,横线画在行树自己的边界上——表头与正文之间一条,行树有
|
|
153
|
-
*
|
|
154
|
-
*
|
|
161
|
+
* 嵌套时每个顶层行之前再一条,Content 也可用中立的 `ruleBefore` 标出组边界。平表默认只有
|
|
162
|
+
* 表头那一条:逐行切割读起来是一堆独立小框,层级与分组反而看不出来。`Table` 不认识具体实体。
|
|
155
163
|
*
|
|
156
164
|
* 框宽跟随表自己的内容宽度(`fitWidths` 已经把它压进可用列数),不硬拉满终端——
|
|
157
165
|
* 窄表拉满只会让同一行的读数彼此远离。
|
|
@@ -172,8 +180,9 @@ function renderFramedTable(header, body, widths, align, outerFrame) {
|
|
|
172
180
|
out.push(line(row));
|
|
173
181
|
out.push((0, panel_ts_1.dataBoxBorder)("rule", actual, outerFrame));
|
|
174
182
|
body.forEach((block, i) => {
|
|
175
|
-
if (
|
|
183
|
+
if (i > 0 && (block.ruleBefore || (nested && block.depth === 0))) {
|
|
176
184
|
out.push((0, panel_ts_1.dataBoxBorder)("rule", actual, outerFrame));
|
|
185
|
+
}
|
|
177
186
|
for (const row of block.physical)
|
|
178
187
|
out.push(line(row));
|
|
179
188
|
});
|