@forgeax/engine-rhi-debug 0.0.0-dev.8d955ade1c79
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/LICENSE +202 -0
- package/README.md +178 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/bootstrap-integration.test.d.ts +2 -0
- package/dist/__tests__/bootstrap-integration.test.d.ts.map +1 -0
- package/dist/__tests__/consumer-inventory.unit.test.d.ts +2 -0
- package/dist/__tests__/consumer-inventory.unit.test.d.ts.map +1 -0
- package/dist/__tests__/copy-src-usage-validity.dawn.test.d.ts +15 -0
- package/dist/__tests__/copy-src-usage-validity.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/coverage-invariant.test-d.d.ts +2 -0
- package/dist/__tests__/coverage-invariant.test-d.d.ts.map +1 -0
- package/dist/__tests__/coverage-invariant.unit.test.d.ts +2 -0
- package/dist/__tests__/coverage-invariant.unit.test.d.ts.map +1 -0
- package/dist/__tests__/e2e.browser.test.d.ts +2 -0
- package/dist/__tests__/e2e.browser.test.d.ts.map +1 -0
- package/dist/__tests__/error-code-narrowing.test-d.d.ts +2 -0
- package/dist/__tests__/error-code-narrowing.test-d.d.ts.map +1 -0
- package/dist/__tests__/errors-v7.test-d.d.ts +2 -0
- package/dist/__tests__/errors-v7.test-d.d.ts.map +1 -0
- package/dist/__tests__/errors-v7.unit.test.d.ts +2 -0
- package/dist/__tests__/errors-v7.unit.test.d.ts.map +1 -0
- package/dist/__tests__/errors.unit.test.d.ts +2 -0
- package/dist/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/event-semantics-coverage.unit.test.d.ts +2 -0
- package/dist/__tests__/event-semantics-coverage.unit.test.d.ts.map +1 -0
- package/dist/__tests__/format-info.unit.test.d.ts +2 -0
- package/dist/__tests__/format-info.unit.test.d.ts.map +1 -0
- package/dist/__tests__/frame-model-parity.test-d.d.ts +2 -0
- package/dist/__tests__/frame-model-parity.test-d.d.ts.map +1 -0
- package/dist/__tests__/frame-model-parity.unit.test.d.ts +2 -0
- package/dist/__tests__/frame-model-parity.unit.test.d.ts.map +1 -0
- package/dist/__tests__/guard-gates.test.d.ts +2 -0
- package/dist/__tests__/guard-gates.test.d.ts.map +1 -0
- package/dist/__tests__/public-surface.integration.test.d.ts +2 -0
- package/dist/__tests__/public-surface.integration.test.d.ts.map +1 -0
- package/dist/__tests__/readback-fault-cleanup.unit.test.d.ts +2 -0
- package/dist/__tests__/readback-fault-cleanup.unit.test.d.ts.map +1 -0
- package/dist/__tests__/readback-format-matrix.dawn.test.d.ts +2 -0
- package/dist/__tests__/readback-format-matrix.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/readback-format-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/readback-format-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/readback-matrix-fixture.d.ts +32 -0
- package/dist/__tests__/readback-matrix-fixture.d.ts.map +1 -0
- package/dist/__tests__/recorder-bootstrap.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-bootstrap.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-budget.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-budget.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-fail-fast.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-fail-fast.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-push-event.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-push-event.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-session.integration.test.d.ts +2 -0
- package/dist/__tests__/recorder-session.integration.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-session.unit.test.d.ts +2 -0
- package/dist/__tests__/recorder-session.unit.test.d.ts.map +1 -0
- package/dist/__tests__/recorder-steady-frame.dawn.test.d.ts +2 -0
- package/dist/__tests__/recorder-steady-frame.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/replay-fail-fast.unit.test.d.ts +2 -0
- package/dist/__tests__/replay-fail-fast.unit.test.d.ts.map +1 -0
- package/dist/__tests__/replay-session.dawn.test.d.ts +2 -0
- package/dist/__tests__/replay-session.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/replay-session.test-d.d.ts +2 -0
- package/dist/__tests__/replay-session.test-d.d.ts.map +1 -0
- package/dist/__tests__/replay-session.unit.test.d.ts +2 -0
- package/dist/__tests__/replay-session.unit.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-texture-descriptor.unit.test.d.ts +2 -0
- package/dist/__tests__/resolve-texture-descriptor.unit.test.d.ts.map +1 -0
- package/dist/__tests__/resource-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/resource-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-debug-fresh-replay.dawn.test.d.ts +2 -0
- package/dist/__tests__/rhi-debug-fresh-replay.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/tape-index.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-index.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tape-v7-invalid.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-v7-invalid.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tape-v7-roundtrip.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-v7-roundtrip.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tape-v7-version.unit.test.d.ts +2 -0
- package/dist/__tests__/tape-v7-version.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tree-shake.unit.test.d.ts +2 -0
- package/dist/__tests__/tree-shake.unit.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/browser.d.ts +45 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.mjs +83 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/errors.d.ts +85 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/frame-model.d.ts +158 -0
- package/dist/frame-model.d.ts.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +10415 -0
- package/dist/index.mjs.map +1 -0
- package/dist/protocol/codec.d.ts +6 -0
- package/dist/protocol/codec.d.ts.map +1 -0
- package/dist/protocol/event-semantics.d.ts +15 -0
- package/dist/protocol/event-semantics.d.ts.map +1 -0
- package/dist/protocol/tape-index.d.ts +30 -0
- package/dist/protocol/tape-index.d.ts.map +1 -0
- package/dist/protocol/types.d.ts +44 -0
- package/dist/protocol/types.d.ts.map +1 -0
- package/dist/protocol/validation.d.ts +7 -0
- package/dist/protocol/validation.d.ts.map +1 -0
- package/dist/readback.d.ts +156 -0
- package/dist/readback.d.ts.map +1 -0
- package/dist/recorder/assemble.d.ts +11 -0
- package/dist/recorder/assemble.d.ts.map +1 -0
- package/dist/recorder/closure.d.ts +39 -0
- package/dist/recorder/closure.d.ts.map +1 -0
- package/dist/recorder/core.d.ts +296 -0
- package/dist/recorder/core.d.ts.map +1 -0
- package/dist/recorder/device.d.ts +4 -0
- package/dist/recorder/device.d.ts.map +1 -0
- package/dist/recorder/encoder.d.ts +5 -0
- package/dist/recorder/encoder.d.ts.map +1 -0
- package/dist/recorder/lifecycle.d.ts +20 -0
- package/dist/recorder/lifecycle.d.ts.map +1 -0
- package/dist/recorder/pass.d.ts +6 -0
- package/dist/recorder/pass.d.ts.map +1 -0
- package/dist/recorder/proxy.d.ts +19 -0
- package/dist/recorder/proxy.d.ts.map +1 -0
- package/dist/recorder/queue.d.ts +4 -0
- package/dist/recorder/queue.d.ts.map +1 -0
- package/dist/recorder/resource-registry.d.ts +15 -0
- package/dist/recorder/resource-registry.d.ts.map +1 -0
- package/dist/recorder/session.d.ts +25 -0
- package/dist/recorder/session.d.ts.map +1 -0
- package/dist/recorder/shader.d.ts +3 -0
- package/dist/recorder/shader.d.ts.map +1 -0
- package/dist/recorder/snapshot.d.ts +10 -0
- package/dist/recorder/snapshot.d.ts.map +1 -0
- package/dist/recorder/wrap.d.ts +4 -0
- package/dist/recorder/wrap.d.ts.map +1 -0
- package/dist/recorder.d.ts +7 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/replay/device-request.d.ts +8 -0
- package/dist/replay/device-request.d.ts.map +1 -0
- package/dist/replay/execute-support.d.ts +33 -0
- package/dist/replay/execute-support.d.ts.map +1 -0
- package/dist/replay/execute.d.ts +18 -0
- package/dist/replay/execute.d.ts.map +1 -0
- package/dist/replay/readback.d.ts +32 -0
- package/dist/replay/readback.d.ts.map +1 -0
- package/dist/replay/resources.d.ts +57 -0
- package/dist/replay/resources.d.ts.map +1 -0
- package/dist/replay/session.d.ts +49 -0
- package/dist/replay/session.d.ts.map +1 -0
- package/dist/replay/texture-format.d.ts +21 -0
- package/dist/replay/texture-format.d.ts.map +1 -0
- package/dist/texel-decode.d.ts +35 -0
- package/dist/texel-decode.d.ts.map +1 -0
- package/dist/texel-layout.d.ts +76 -0
- package/dist/texel-layout.d.ts.map +1 -0
- package/dist/types.d.ts +722 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +72 -0
- package/src/__tests__/bootstrap-integration.test.ts +268 -0
- package/src/__tests__/consumer-inventory.unit.test.ts +154 -0
- package/src/__tests__/copy-src-usage-validity.dawn.test.ts +117 -0
- package/src/__tests__/coverage-invariant.test-d.ts +115 -0
- package/src/__tests__/coverage-invariant.unit.test.ts +45 -0
- package/src/__tests__/e2e.browser.test.ts +239 -0
- package/src/__tests__/error-code-narrowing.test-d.ts +32 -0
- package/src/__tests__/errors-v7.test-d.ts +19 -0
- package/src/__tests__/errors-v7.unit.test.ts +15 -0
- package/src/__tests__/errors.unit.test.ts +83 -0
- package/src/__tests__/event-semantics-coverage.unit.test.ts +22 -0
- package/src/__tests__/format-info.unit.test.ts +85 -0
- package/src/__tests__/frame-model-parity.test-d.ts +20 -0
- package/src/__tests__/frame-model-parity.unit.test.ts +285 -0
- package/src/__tests__/guard-gates.test.ts +317 -0
- package/src/__tests__/public-surface.integration.test.ts +38 -0
- package/src/__tests__/readback-fault-cleanup.unit.test.ts +66 -0
- package/src/__tests__/readback-format-matrix.dawn.test.ts +378 -0
- package/src/__tests__/readback-format-matrix.unit.test.ts +120 -0
- package/src/__tests__/readback-matrix-fixture.ts +20 -0
- package/src/__tests__/recorder-bootstrap.unit.test.ts +302 -0
- package/src/__tests__/recorder-budget.unit.test.ts +42 -0
- package/src/__tests__/recorder-fail-fast.unit.test.ts +434 -0
- package/src/__tests__/recorder-lifecycle.unit.test.ts +42 -0
- package/src/__tests__/recorder-push-event.unit.test.ts +573 -0
- package/src/__tests__/recorder-session.integration.test.ts +32 -0
- package/src/__tests__/recorder-session.unit.test.ts +63 -0
- package/src/__tests__/recorder-steady-frame.dawn.test.ts +52 -0
- package/src/__tests__/replay-fail-fast.unit.test.ts +155 -0
- package/src/__tests__/replay-session.dawn.test.ts +220 -0
- package/src/__tests__/replay-session.test-d.ts +27 -0
- package/src/__tests__/replay-session.unit.test.ts +171 -0
- package/src/__tests__/resolve-texture-descriptor.unit.test.ts +144 -0
- package/src/__tests__/resource-lifecycle.unit.test.ts +114 -0
- package/src/__tests__/rhi-debug-fresh-replay.dawn.test.ts +178 -0
- package/src/__tests__/tape-index.unit.test.ts +56 -0
- package/src/__tests__/tape-v7-invalid.unit.test.ts +45 -0
- package/src/__tests__/tape-v7-roundtrip.unit.test.ts +66 -0
- package/src/__tests__/tape-v7-version.unit.test.ts +13 -0
- package/src/__tests__/tree-shake.unit.test.ts +151 -0
- package/src/__tests__/types.test.ts +257 -0
- package/src/browser.ts +146 -0
- package/src/errors.ts +173 -0
- package/src/frame-model.ts +753 -0
- package/src/index.ts +92 -0
- package/src/pako.d.ts +8 -0
- package/src/protocol/codec.ts +220 -0
- package/src/protocol/event-semantics.ts +180 -0
- package/src/protocol/tape-index.ts +120 -0
- package/src/protocol/types.ts +60 -0
- package/src/protocol/validation.ts +173 -0
- package/src/readback.ts +804 -0
- package/src/recorder/assemble.ts +192 -0
- package/src/recorder/closure.ts +408 -0
- package/src/recorder/core.ts +587 -0
- package/src/recorder/device.ts +474 -0
- package/src/recorder/encoder.ts +251 -0
- package/src/recorder/lifecycle.ts +847 -0
- package/src/recorder/pass.ts +241 -0
- package/src/recorder/proxy.ts +59 -0
- package/src/recorder/queue.ts +109 -0
- package/src/recorder/resource-registry.ts +53 -0
- package/src/recorder/session.ts +152 -0
- package/src/recorder/shader.ts +47 -0
- package/src/recorder/snapshot.ts +38 -0
- package/src/recorder/wrap.ts +157 -0
- package/src/recorder.ts +15 -0
- package/src/replay/device-request.ts +38 -0
- package/src/replay/execute-support.ts +243 -0
- package/src/replay/execute.ts +870 -0
- package/src/replay/readback.ts +671 -0
- package/src/replay/resources.ts +154 -0
- package/src/replay/session.ts +509 -0
- package/src/replay/texture-format.ts +99 -0
- package/src/texel-decode.ts +289 -0
- package/src/texel-layout.ts +324 -0
- package/src/types.ts +888 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage-invariant.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/coverage-invariant.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage-invariant.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/coverage-invariant.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e.browser.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/e2e.browser.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-code-narrowing.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/error-code-narrowing.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-v7.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/errors-v7.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-v7.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/errors-v7.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/errors.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-semantics-coverage.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/event-semantics-coverage.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-info.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/format-info.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-model-parity.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/frame-model-parity.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-model-parity.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/frame-model-parity.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-gates.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/guard-gates.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-surface.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/public-surface.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readback-fault-cleanup.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/readback-fault-cleanup.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readback-format-matrix.dawn.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/readback-format-matrix.dawn.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readback-format-matrix.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/readback-format-matrix.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BootstrapResource, Tape } from '../protocol/types';
|
|
2
|
+
export declare const READBACK_MATRIX_CASES: readonly [{
|
|
3
|
+
readonly format: "rgba8unorm";
|
|
4
|
+
readonly dimension: "2d";
|
|
5
|
+
readonly aspect: "all";
|
|
6
|
+
}, {
|
|
7
|
+
readonly format: "depth32float";
|
|
8
|
+
readonly dimension: "2d";
|
|
9
|
+
readonly aspect: "depth-only";
|
|
10
|
+
}, {
|
|
11
|
+
readonly format: "depth24plus";
|
|
12
|
+
readonly dimension: "2d";
|
|
13
|
+
readonly aspect: "depth-only";
|
|
14
|
+
}, {
|
|
15
|
+
readonly format: "depth24plus-stencil8";
|
|
16
|
+
readonly dimension: "2d";
|
|
17
|
+
readonly aspect: "stencil-only";
|
|
18
|
+
}, {
|
|
19
|
+
readonly format: "rgba8unorm";
|
|
20
|
+
readonly dimension: "2d-array";
|
|
21
|
+
readonly aspect: "all";
|
|
22
|
+
}, {
|
|
23
|
+
readonly format: "rgba8unorm";
|
|
24
|
+
readonly dimension: "cube";
|
|
25
|
+
readonly aspect: "all";
|
|
26
|
+
}, {
|
|
27
|
+
readonly format: "rgba8unorm";
|
|
28
|
+
readonly dimension: "cube-array";
|
|
29
|
+
readonly aspect: "all";
|
|
30
|
+
}];
|
|
31
|
+
export declare function makeReadbackMatrixTape(resources: readonly BootstrapResource[]): Tape;
|
|
32
|
+
//# sourceMappingURL=readback-matrix-fixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readback-matrix-fixture.d.ts","sourceRoot":"","sources":["../../src/__tests__/readback-matrix-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQxB,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,GAAG,IAAI,CAOpF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-bootstrap.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-bootstrap.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-budget.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-budget.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-fail-fast.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-fail-fast.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-lifecycle.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-lifecycle.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-push-event.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-push-event.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-session.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-session.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-session.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-session.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder-steady-frame.dawn.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/recorder-steady-frame.dawn.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-fail-fast.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/replay-fail-fast.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-session.dawn.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/replay-session.dawn.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-session.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/replay-session.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-session.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/replay-session.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-texture-descriptor.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/resolve-texture-descriptor.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-lifecycle.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/resource-lifecycle.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rhi-debug-fresh-replay.dawn.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rhi-debug-fresh-replay.dawn.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tape-index.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tape-index.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tape-v7-invalid.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tape-v7-invalid.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tape-v7-roundtrip.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tape-v7-roundtrip.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tape-v7-version.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tape-v7-version.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-shake.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tree-shake.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Result } from '@forgeax/engine-types';
|
|
2
|
+
import type { RhiDebugError } from './errors';
|
|
3
|
+
import type { CaptureFrameOptions, EncodedTape, RecorderAttachment } from './recorder/session';
|
|
4
|
+
export interface BrowserCaptureProvider {
|
|
5
|
+
captureFrame(options?: CaptureFrameOptions): Promise<Result<EncodedTape, RhiDebugError>>;
|
|
6
|
+
}
|
|
7
|
+
export interface BrowserCaptureOptions {
|
|
8
|
+
readonly endpoint?: string;
|
|
9
|
+
readonly runId?: string;
|
|
10
|
+
readonly capture?: CaptureFrameOptions;
|
|
11
|
+
readonly signal?: AbortSignal;
|
|
12
|
+
}
|
|
13
|
+
export interface BrowserArtifactRef {
|
|
14
|
+
readonly kind: 'rhi-tape';
|
|
15
|
+
readonly digest: string;
|
|
16
|
+
readonly path?: string;
|
|
17
|
+
}
|
|
18
|
+
export type BrowserCaptureError = {
|
|
19
|
+
readonly code: 'browser-capture-transport-unavailable';
|
|
20
|
+
readonly expected: string;
|
|
21
|
+
readonly hint: string;
|
|
22
|
+
readonly detail: {
|
|
23
|
+
readonly endpoint: string;
|
|
24
|
+
};
|
|
25
|
+
} | {
|
|
26
|
+
readonly code: 'browser-capture-upload-failed';
|
|
27
|
+
readonly expected: string;
|
|
28
|
+
readonly hint: string;
|
|
29
|
+
readonly detail: {
|
|
30
|
+
readonly endpoint: string;
|
|
31
|
+
readonly status: number;
|
|
32
|
+
};
|
|
33
|
+
} | {
|
|
34
|
+
readonly code: 'browser-capture-response-invalid';
|
|
35
|
+
readonly expected: string;
|
|
36
|
+
readonly hint: string;
|
|
37
|
+
readonly detail: {
|
|
38
|
+
readonly endpoint: string;
|
|
39
|
+
readonly cause: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export declare function browserCaptureProvider(attachment: RecorderAttachment): BrowserCaptureProvider;
|
|
43
|
+
export declare function captureAndUpload(provider: BrowserCaptureProvider, options?: BrowserCaptureOptions): Promise<Result<BrowserArtifactRef, RhiDebugError | BrowserCaptureError>>;
|
|
44
|
+
export declare function uploadTape(tape: Pick<EncodedTape, 'bytes' | 'digest'>, options?: BrowserCaptureOptions): Promise<Result<BrowserArtifactRef, BrowserCaptureError>>;
|
|
45
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/F,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,uCAAuC,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,kCAAkC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEN,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,GAAG,sBAAsB,CAE7F;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAK1E;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC,EAC3C,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAkD1D"}
|
package/dist/browser.mjs
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { err, ok } from '@forgeax/engine-types';
|
|
2
|
+
|
|
3
|
+
// src/browser.ts
|
|
4
|
+
function browserCaptureProvider(attachment) {
|
|
5
|
+
return attachment;
|
|
6
|
+
}
|
|
7
|
+
async function captureAndUpload(provider, options = {}) {
|
|
8
|
+
const captureOptions = mergeCaptureOptions(options.capture, options.signal);
|
|
9
|
+
const captured = await provider.captureFrame(captureOptions);
|
|
10
|
+
if (!captured.ok) return captured;
|
|
11
|
+
return uploadTape(captured.value, options);
|
|
12
|
+
}
|
|
13
|
+
async function uploadTape(tape, options = {}) {
|
|
14
|
+
const endpoint = options.endpoint ?? "/__forgeax-debug/tape";
|
|
15
|
+
const runId = options.runId ?? createRunId();
|
|
16
|
+
const url = `${endpoint}?runId=${encodeURIComponent(runId)}`;
|
|
17
|
+
let response;
|
|
18
|
+
try {
|
|
19
|
+
response = await fetch(url, {
|
|
20
|
+
method: "POST",
|
|
21
|
+
headers: { "content-type": "application/x-forgeax-rhitape" },
|
|
22
|
+
body: copyBytes(tape.bytes),
|
|
23
|
+
...options.signal === void 0 ? {} : { signal: options.signal }
|
|
24
|
+
});
|
|
25
|
+
} catch {
|
|
26
|
+
return err({
|
|
27
|
+
code: "browser-capture-transport-unavailable",
|
|
28
|
+
expected: "the configured RHI tape endpoint to accept a browser upload",
|
|
29
|
+
hint: "start the Vite RHI-debug transport or provide a reachable endpoint",
|
|
30
|
+
detail: { endpoint }
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
return err({
|
|
35
|
+
code: "browser-capture-upload-failed",
|
|
36
|
+
expected: "the RHI tape endpoint to accept the validated artifact",
|
|
37
|
+
hint: "inspect the endpoint response and retry one capture",
|
|
38
|
+
detail: { endpoint, status: response.status }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
let value;
|
|
42
|
+
try {
|
|
43
|
+
value = await response.json();
|
|
44
|
+
} catch (cause) {
|
|
45
|
+
return err({
|
|
46
|
+
code: "browser-capture-response-invalid",
|
|
47
|
+
expected: "the RHI tape endpoint to return a JSON artifact reference",
|
|
48
|
+
hint: "check the dev transport response body before retrying",
|
|
49
|
+
detail: { endpoint, cause: String(cause) }
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (!isArtifactRef(value)) {
|
|
53
|
+
return err({
|
|
54
|
+
code: "browser-capture-response-invalid",
|
|
55
|
+
expected: "the RHI tape endpoint to return a rhi-tape artifact reference",
|
|
56
|
+
hint: "check the endpoint contract and capture again",
|
|
57
|
+
detail: { endpoint, cause: "response is not a rhi-tape artifact reference" }
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return ok(value);
|
|
61
|
+
}
|
|
62
|
+
function mergeCaptureOptions(capture, signal) {
|
|
63
|
+
if (capture === void 0 && signal === void 0) return void 0;
|
|
64
|
+
return { ...capture, ...signal === void 0 ? {} : { signal } };
|
|
65
|
+
}
|
|
66
|
+
function createRunId() {
|
|
67
|
+
const randomUUID = globalThis.crypto?.randomUUID;
|
|
68
|
+
return randomUUID === void 0 ? `rhi-capture-${Date.now().toString(36)}` : `rhi-capture-${randomUUID()}`;
|
|
69
|
+
}
|
|
70
|
+
function copyBytes(bytes) {
|
|
71
|
+
const copy = new ArrayBuffer(bytes.byteLength);
|
|
72
|
+
new Uint8Array(copy).set(bytes);
|
|
73
|
+
return copy;
|
|
74
|
+
}
|
|
75
|
+
function isArtifactRef(value) {
|
|
76
|
+
if (value === null || typeof value !== "object") return false;
|
|
77
|
+
const candidate = value;
|
|
78
|
+
return candidate.kind === "rhi-tape" && typeof candidate.digest === "string" && (candidate.path === void 0 || typeof candidate.path === "string");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { browserCaptureProvider, captureAndUpload, uploadTape };
|
|
82
|
+
//# sourceMappingURL=browser.mjs.map
|
|
83
|
+
//# sourceMappingURL=browser.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/browser.ts"],"names":[],"mappings":"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","file":"browser.mjs","sourcesContent":["// @forgeax/engine-rhi-debug/browser -- browser-only capture transport.\n\nimport { err, ok, type Result } from '@forgeax/engine-types';\nimport type { RhiDebugError } from './errors';\nimport type { CaptureFrameOptions, EncodedTape, RecorderAttachment } from './recorder/session';\n\nexport interface BrowserCaptureProvider {\n captureFrame(options?: CaptureFrameOptions): Promise<Result<EncodedTape, RhiDebugError>>;\n}\n\nexport interface BrowserCaptureOptions {\n readonly endpoint?: string;\n readonly runId?: string;\n readonly capture?: CaptureFrameOptions;\n readonly signal?: AbortSignal;\n}\n\nexport interface BrowserArtifactRef {\n readonly kind: 'rhi-tape';\n readonly digest: string;\n readonly path?: string;\n}\n\nexport type BrowserCaptureError =\n | {\n readonly code: 'browser-capture-transport-unavailable';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly endpoint: string };\n }\n | {\n readonly code: 'browser-capture-upload-failed';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly endpoint: string; readonly status: number };\n }\n | {\n readonly code: 'browser-capture-response-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly endpoint: string; readonly cause: string };\n };\n\nexport function browserCaptureProvider(attachment: RecorderAttachment): BrowserCaptureProvider {\n return attachment;\n}\n\nexport async function captureAndUpload(\n provider: BrowserCaptureProvider,\n options: BrowserCaptureOptions = {},\n): Promise<Result<BrowserArtifactRef, RhiDebugError | BrowserCaptureError>> {\n const captureOptions = mergeCaptureOptions(options.capture, options.signal);\n const captured = await provider.captureFrame(captureOptions);\n if (!captured.ok) return captured;\n return uploadTape(captured.value, options);\n}\n\nexport async function uploadTape(\n tape: Pick<EncodedTape, 'bytes' | 'digest'>,\n options: BrowserCaptureOptions = {},\n): Promise<Result<BrowserArtifactRef, BrowserCaptureError>> {\n const endpoint = options.endpoint ?? '/__forgeax-debug/tape';\n const runId = options.runId ?? createRunId();\n const url = `${endpoint}?runId=${encodeURIComponent(runId)}`;\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers: { 'content-type': 'application/x-forgeax-rhitape' },\n body: copyBytes(tape.bytes),\n ...(options.signal === undefined ? {} : { signal: options.signal }),\n });\n } catch {\n return err({\n code: 'browser-capture-transport-unavailable',\n expected: 'the configured RHI tape endpoint to accept a browser upload',\n hint: 'start the Vite RHI-debug transport or provide a reachable endpoint',\n detail: { endpoint },\n });\n }\n\n if (!response.ok) {\n return err({\n code: 'browser-capture-upload-failed',\n expected: 'the RHI tape endpoint to accept the validated artifact',\n hint: 'inspect the endpoint response and retry one capture',\n detail: { endpoint, status: response.status },\n });\n }\n\n let value: unknown;\n try {\n value = await response.json();\n } catch (cause) {\n return err({\n code: 'browser-capture-response-invalid',\n expected: 'the RHI tape endpoint to return a JSON artifact reference',\n hint: 'check the dev transport response body before retrying',\n detail: { endpoint, cause: String(cause) },\n });\n }\n if (!isArtifactRef(value)) {\n return err({\n code: 'browser-capture-response-invalid',\n expected: 'the RHI tape endpoint to return a rhi-tape artifact reference',\n hint: 'check the endpoint contract and capture again',\n detail: { endpoint, cause: 'response is not a rhi-tape artifact reference' },\n });\n }\n return ok(value);\n}\n\nfunction mergeCaptureOptions(\n capture: CaptureFrameOptions | undefined,\n signal: AbortSignal | undefined,\n): CaptureFrameOptions | undefined {\n if (capture === undefined && signal === undefined) return undefined;\n return { ...capture, ...(signal === undefined ? {} : { signal }) };\n}\n\nfunction createRunId(): string {\n const randomUUID = globalThis.crypto?.randomUUID;\n return randomUUID === undefined\n ? `rhi-capture-${Date.now().toString(36)}`\n : `rhi-capture-${randomUUID()}`;\n}\n\nfunction copyBytes(bytes: Uint8Array): ArrayBuffer {\n const copy = new ArrayBuffer(bytes.byteLength);\n new Uint8Array(copy).set(bytes);\n return copy;\n}\n\nfunction isArtifactRef(value: unknown): value is BrowserArtifactRef {\n if (value === null || typeof value !== 'object') return false;\n const candidate = value as {\n readonly kind?: unknown;\n readonly digest?: unknown;\n readonly path?: unknown;\n };\n return (\n candidate.kind === 'rhi-tape' &&\n typeof candidate.digest === 'string' &&\n (candidate.path === undefined || typeof candidate.path === 'string')\n );\n}\n"]}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** The only error vocabulary crossing the RHI-debug core boundary. */
|
|
2
|
+
export type RhiDebugErrorCode = 'capture-unavailable' | 'capture-busy' | 'capture-snapshot-failed' | 'capture-timeout' | 'tape-invalid' | 'tape-version-unsupported' | 'replay-capability-mismatch' | 'replay-event-failed' | 'replay-position-invalid' | 'readback-failed' | 'readback-unsupported';
|
|
3
|
+
export type CaptureStage = 'capture' | 'snapshot';
|
|
4
|
+
export interface CaptureFailureDetail {
|
|
5
|
+
readonly stage: CaptureStage;
|
|
6
|
+
readonly cause: string;
|
|
7
|
+
readonly handleId?: string;
|
|
8
|
+
readonly resourceKind?: 'buffer' | 'texture';
|
|
9
|
+
}
|
|
10
|
+
export interface CaptureTimeoutDetail {
|
|
11
|
+
readonly stage: 'snapshot';
|
|
12
|
+
readonly cause: string;
|
|
13
|
+
readonly timeoutMs: number;
|
|
14
|
+
readonly progress?: {
|
|
15
|
+
readonly snapshotStage: 'queue-drain' | 'resource-readback';
|
|
16
|
+
readonly totalResources: number;
|
|
17
|
+
readonly completedResources: number;
|
|
18
|
+
readonly skippedResources: number;
|
|
19
|
+
readonly currentHandleId: string | null;
|
|
20
|
+
readonly currentKind: 'buffer' | 'texture' | null;
|
|
21
|
+
readonly currentSizeBytes: number | null;
|
|
22
|
+
readonly elapsedMs: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface TapeFailureDetail {
|
|
26
|
+
readonly stage: 'decode' | 'validate';
|
|
27
|
+
readonly cause: string;
|
|
28
|
+
readonly handleId?: string;
|
|
29
|
+
readonly eventIndex?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface TapeVersionDetail {
|
|
32
|
+
readonly foundVersion: number;
|
|
33
|
+
readonly expectedVersion: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ReplayCapabilityFailureDetail {
|
|
36
|
+
readonly stage: 'replay';
|
|
37
|
+
readonly cause: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ReplayEventFailureDetail {
|
|
40
|
+
readonly eventIndex: number;
|
|
41
|
+
readonly kind: string;
|
|
42
|
+
readonly stage: string;
|
|
43
|
+
readonly cause: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ReplayPositionDetail {
|
|
46
|
+
readonly requested: number;
|
|
47
|
+
readonly available: number;
|
|
48
|
+
}
|
|
49
|
+
export interface ReadbackFailureDetail {
|
|
50
|
+
readonly stage: 'readback';
|
|
51
|
+
readonly cause: string;
|
|
52
|
+
readonly phase?: 'copy' | 'map';
|
|
53
|
+
}
|
|
54
|
+
export interface ReadbackUnsupportedDetail {
|
|
55
|
+
readonly stage: 'readback';
|
|
56
|
+
readonly resourceId?: string;
|
|
57
|
+
readonly format?: string;
|
|
58
|
+
readonly reason: string;
|
|
59
|
+
}
|
|
60
|
+
type RhiDebugDetailByCode = {
|
|
61
|
+
'capture-unavailable': CaptureFailureDetail;
|
|
62
|
+
'capture-busy': CaptureFailureDetail;
|
|
63
|
+
'capture-snapshot-failed': CaptureFailureDetail;
|
|
64
|
+
'capture-timeout': CaptureTimeoutDetail;
|
|
65
|
+
'tape-invalid': TapeFailureDetail;
|
|
66
|
+
'tape-version-unsupported': TapeVersionDetail;
|
|
67
|
+
'replay-capability-mismatch': ReplayCapabilityFailureDetail;
|
|
68
|
+
'replay-event-failed': ReplayEventFailureDetail;
|
|
69
|
+
'replay-position-invalid': ReplayPositionDetail;
|
|
70
|
+
'readback-failed': ReadbackFailureDetail;
|
|
71
|
+
'readback-unsupported': ReadbackUnsupportedDetail;
|
|
72
|
+
};
|
|
73
|
+
export type RhiDebugErrorDetail = RhiDebugDetailByCode[RhiDebugErrorCode];
|
|
74
|
+
export type RhiDebugErrorFor<C extends RhiDebugErrorCode> = {
|
|
75
|
+
readonly code: C;
|
|
76
|
+
readonly expected: string;
|
|
77
|
+
readonly hint: string;
|
|
78
|
+
readonly detail: RhiDebugDetailByCode[C];
|
|
79
|
+
};
|
|
80
|
+
export type RhiDebugError = {
|
|
81
|
+
[C in RhiDebugErrorCode]: RhiDebugErrorFor<C>;
|
|
82
|
+
}[RhiDebugErrorCode];
|
|
83
|
+
export declare function createRhiDebugError<C extends RhiDebugErrorCode>(code: C, detail: RhiDebugDetailByCode[C]): RhiDebugErrorFor<C>;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|