@forgeax/engine-rhi 0.1.20 → 0.1.23
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/README.md +71 -4
- package/dist/__tests__/r32float-capability.unit.test.d.ts +2 -0
- package/dist/__tests__/r32float-capability.unit.test.d.ts.map +1 -0
- package/dist/capability/texture-format.d.ts +38 -0
- package/dist/capability/texture-format.d.ts.map +1 -0
- package/dist/errors.d.ts +13 -18
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.mjs.map +1 -1
- package/dist/index.d.ts +36 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +76 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/command-encoder-spec-alignment.test-d.ts +9 -12
- package/src/__tests__/errors-instancing.unit.test.ts +2 -0
- package/src/__tests__/errors.test-d.ts +2 -0
- package/src/__tests__/r32float-capability.unit.test.ts +105 -0
- package/src/capability/texture-format.ts +137 -0
- package/src/errors.ts +16 -18
- package/src/index.ts +59 -28
- package/dist/.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ silently promoted from a Dawn or mock result.
|
|
|
30
30
|
| Pass `occlusionQuerySet` + `beginOcclusionQuery` / `endOcclusionQuery` | Query set supplied in [`RenderPassDescriptor`](./src/index.ts#L794); index/range and non-nesting state are validated | Stateful forwarding and validation in [`device.ts`](../rhi-webgpu/src/device.ts#L542); [Dawn state/round-trip tests](../rhi-webgpu/src/__tests__/dawn-real-gpu.dawn.test.ts#L619) | Pass methods return structural `ok`; this is not GPU visibility evidence |
|
|
31
31
|
| `resolveQuerySet` | Destination offset is 256-byte aligned, destination has `QUERY_RESOLVE`, and query range fits the set | Validation/forwarding in [`device.ts`](../rhi-webgpu/src/device.ts#L966); [Dawn validation and round-trip tests](../rhi-webgpu/src/__tests__/dawn-real-gpu.dawn.test.ts#L820) | Returns structural `ok` and never creates timing evidence |
|
|
32
32
|
| Timestamp QuerySet + pass `timestampWrites` | Required feature requested; `caps.timestampQuery === true` and period is positive | Mapping in [`device.ts`](../rhi-webgpu/src/device.ts#L745); [Dawn admission/readback test](../rhi-webgpu/src/__tests__/dawn-real-gpu.dawn.test.ts#L1233) | `timestampQuery=false`, timestamp creation is refused; no synthetic ticks |
|
|
33
|
-
|
|
|
33
|
+
| Pass descriptor `timestampWrites` | Capability-positive devices attach timestamp pairs to real render/compute pass boundaries; unavailable periods remain fail-closed | [`RenderPassDescriptor`](./src/index.ts#L794), [`device.ts`](../rhi-webgpu/src/device.ts#L745); [Dawn admission/readback tests](../rhi-webgpu/src/__tests__/dawn-real-gpu.dawn.test.ts#L1233) | `timestampQuery=false`, timestamp creation is refused; no ticks are fabricated |
|
|
34
34
|
| `executeBundles` | No public `RenderBundle` handle, encoder, or creation path exists in this RHI | [`device.ts`](../rhi-webgpu/src/device.ts#L533) returns `rhi-not-available`; no browser query claim is made | `RhiNull` may return structural `ok` for its empty ledger, which does not close the public GPU surface |
|
|
35
35
|
|
|
36
36
|
> [!IMPORTANT]
|
|
@@ -61,7 +61,7 @@ silently promoted from a Dawn or mock result.
|
|
|
61
61
|
|:--|:--|
|
|
62
62
|
| `RhiDevice` | resource create: `createBuffer` / `createTexture` / `createSampler` / `createBindGroupLayout` / `createPipelineLayout` / `createBindGroup` / `createRenderPipeline` / `createComputePipeline` / `createQuerySet` / `createCommandEncoder`; resource destroy: `destroyBuffer(buf): Result<void, RhiError>` / `destroyQuerySet(querySet): Result<void, RhiError>` / `destroyTexture(tex): Result<void, RhiError>`; readonly: `caps` / `features` / `limits` / `queue` / `lost` |
|
|
63
63
|
| `RhiQueue` | submit: `submit(commandBuffers)`; copy: `writeBuffer(buffer, offset, data, dataOffset?, size?)` (real-path forwarding to `GPUQueue` w/ bounds guard, D-S3 #4) |
|
|
64
|
-
| `RhiCommandEncoder` | pass open: `beginRenderPass` / `beginComputePass`; copy: `copyBufferToBuffer` (3-arg + 5-arg overloads) / `copyBufferToTexture` / `copyTextureToBuffer` / `copyTextureToTexture`; query: `resolveQuerySet` (validated forwarding)
|
|
64
|
+
| `RhiCommandEncoder` | pass open: `beginRenderPass` / `beginComputePass`; copy: `copyBufferToBuffer` (3-arg + 5-arg overloads) / `copyBufferToTexture` / `copyTextureToBuffer` / `copyTextureToTexture`; query: `resolveQuerySet` (validated forwarding); misc: `clearBuffer` / `pushDebugGroup` / `popDebugGroup` / `insertDebugMarker`; lifecycle: `finish() -> Result<CommandBuffer, RhiError>`; plus the ForgeaX compound `encodeEmptyComputePass(desc)` |
|
|
65
65
|
| `RhiRenderPassEncoder` | bind: `setPipeline` / `setBindGroup` / `setVertexBuffer` / `setIndexBuffer`; draw: `draw` / `drawIndexed` / `drawIndirect` / `drawIndexedIndirect`; state: `setViewport` / `setScissorRect` / `setBlendConstant` / `setStencilReference`; query: `beginOcclusionQuery` / `endOcclusionQuery` (stateful forwarding); debug: `pushDebugGroup` / `popDebugGroup` / `insertDebugMarker`; lifecycle: `end()`; `executeBundles` is the only unavailable public entry (return `'rhi-not-available'`) |
|
|
66
66
|
| `RhiComputePassEncoder` | `setPipeline` / `setBindGroup` / direct `dispatchWorkgroups` / buffer-driven `dispatchWorkgroupsIndirect` / `end` |
|
|
67
67
|
| `RhiRenderPipelineOps` | render-pipeline cache + dispatch helpers (op-set scoped to render path) |
|
|
@@ -69,6 +69,12 @@ silently promoted from a Dawn or mock result.
|
|
|
69
69
|
|
|
70
70
|
> 14 opaque handles are no-prefix; 7 main interfaces are `Rhi`-prefixed. AI users grep `Rhi` to enumerate the operation verb set; grep handle name (e.g. `Buffer`) to enumerate handle uses. The two namespaces never overlap (charter proposition 5).
|
|
71
71
|
|
|
72
|
+
`encodeEmptyComputePass(desc)` is an engine compound recording operation: it
|
|
73
|
+
records `beginComputePass(desc)` and immediately ends that pass. It is not a
|
|
74
|
+
native `GPUCommandEncoder` method and must not be described as direct copy
|
|
75
|
+
timestamp writing; timestamp-enabled callers still use two real compute-pass
|
|
76
|
+
markers when they need an encoder-level copy envelope.
|
|
77
|
+
|
|
72
78
|
## Descriptor projections (`Pick<GPUXxxDescriptor, ...>` + `ExplicitUndefined<>`)
|
|
73
79
|
|
|
74
80
|
| Descriptor | spec source |
|
|
@@ -122,7 +128,7 @@ The descriptor projections above are wrapped by an internal `ExplicitUndefined<T
|
|
|
122
128
|
| `'queue-write-buffer-out-of-bounds'` | `writeBuffer(buf, offset, data)` offset alignment or bounds violation; `.hint` carries concrete `got X` / `got Y` / `got Z` numbers | W3C 23.2 writeBuffer |
|
|
123
129
|
| `'render-system-no-camera'` | RenderSystem found 0 entity matching `(Transform + Camera)`; the frame is skipped (no GPU commands recorded). Distinct from `'rhi-not-available'` because the RHI surface itself is functional — it is the ECS world that lacks a Camera entity (engine-internal phase, feat-20260509-ecs-render-bridge-mvp D-S7) | engine-internal RenderSystem |
|
|
124
130
|
| `'render-system-multi-camera'` | RenderSystem found N>1 entities matching `(Transform + Camera)`; the first archetype iteration hit is rendered, subsequent Cameras are ignored (D-S7) | engine-internal RenderSystem |
|
|
125
|
-
| `'render-system-multi-light'` | RenderSystem found N>1
|
|
131
|
+
| `'render-system-multi-light'` | RenderSystem found N>1 `DirectionalLight` entities; PointLight / SpotLight / RectArea lights are admitted through the shared Cluster corpus. 0-light + standard renders black (physically correct). `.detail = { type: 'directional', got: number }` identifies the offending bucket | engine-internal RenderSystem |
|
|
126
132
|
| `'asset-not-registered'` | A `MeshFilter.assetHandle` is not in `engine.assets` (`AssetRegistry.get(handle)` returned undefined); the single entity is skipped (other entities continue rendering — charter proposition 9 graceful degradation). `.detail = { assetHandle: number }` carries the offending handle | engine-internal RenderSystem |
|
|
127
133
|
| `'device-lost'` | `GPUDevice.lost` Promise resolved (spec 22.1 device lost flow); driver crash / power saver / extension swap. `.expected` / `.hint` template guides callers to `renderer.onError(cb)` + page reload (feat-20260511-asset-system-v1 D-P4 + R-02 §2.1) | W3C 22.1 device lost |
|
|
128
134
|
| `'oom'` | `GPUOutOfMemoryError` subtype — buffer / texture allocation exceeded available GPU memory. `.hint` suggests `.destroy()` prior resources / split work across submissions / check `device.limits.maxBufferSize` | W3C 22.2 GPUOutOfMemoryError |
|
|
@@ -177,6 +183,67 @@ Render membership timing consumes only this capability seam. It requests the
|
|
|
177
183
|
timestamp feature for explicit GPU timing, uses the existing opaque timestamp
|
|
178
184
|
operations, and refuses when the boolean or the positive period is absent.
|
|
179
185
|
|
|
186
|
+
Generic GPU pass timing is not an RHI API. RHI exposes only capability data and
|
|
187
|
+
opaque timestamp primitives; Render owns admission, pass identity, receipt
|
|
188
|
+
binding, parsing, retention, four-status facts, and recovery. RHI must not
|
|
189
|
+
return a Render status, a pass catalog, a benchmark verdict, or synthetic ticks.
|
|
190
|
+
`RhiNull` and unsupported backends therefore prove refusal/zero behavior only;
|
|
191
|
+
they are not accepted GPU timing evidence. Use the Render entry point and its
|
|
192
|
+
bounded validator for accepted facts.
|
|
193
|
+
|
|
194
|
+
## r32float-mip-sampled-storage receipt
|
|
195
|
+
|
|
196
|
+
> [!WARNING]
|
|
197
|
+
> `probeTextureFormatCapability()` is a narrow RHI probe, not an SSR policy
|
|
198
|
+
> switch. A `structural-only` or `unavailable` result cannot be promoted to
|
|
199
|
+
> pixel admission, and no backend-kind check, CPU/WebGL2 compute substitute,
|
|
200
|
+
> or hidden copy chain can satisfy this contract.
|
|
201
|
+
|
|
202
|
+
The probe returns one detached receipt bound to the current `deviceGeneration`.
|
|
203
|
+
Its stage evidence must cover the complete path below; a single missing stage
|
|
204
|
+
maps to the closed `rhi-texture-format-capability-unavailable` error.
|
|
205
|
+
|
|
206
|
+
| Stage | Evidence required |
|
|
207
|
+
|:--|:--|
|
|
208
|
+
| `texture-create` | `r32float`, mip count, and sampled/storage/copy usage accepted |
|
|
209
|
+
| `mip-view` | every required mip view is constructible |
|
|
210
|
+
| `sampled-storage-bind-group` | unfilterable sampled binding and storage binding agree |
|
|
211
|
+
| `pipeline-bind` | the real pipeline accepts both bindings |
|
|
212
|
+
| `finish` | command encoding finishes without validation error |
|
|
213
|
+
| `submit` | the command buffer reaches the queue |
|
|
214
|
+
| `completion` | the submitted work completes on this device generation |
|
|
215
|
+
| `readback` | map/readback succeeds and carries the same generation receipt |
|
|
216
|
+
|
|
217
|
+
```mermaid
|
|
218
|
+
sequenceDiagram
|
|
219
|
+
participant D as RhiDevice
|
|
220
|
+
participant G as GPU device
|
|
221
|
+
D->>G: create texture + mip views
|
|
222
|
+
D->>G: bind sampled/storage resources
|
|
223
|
+
D->>G: encode pipeline and finish
|
|
224
|
+
D->>G: submit and await completion
|
|
225
|
+
D->>G: read back probe result
|
|
226
|
+
G-->>D: detached stage receipt + deviceGeneration
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Consumers should switch on the closed error code, then read `expected`,
|
|
230
|
+
`hint`, and narrowed `detail.stage`/`detail.deviceGeneration`. The per-device
|
|
231
|
+
cache may reuse one Promise within a generation; device replacement invalidates
|
|
232
|
+
the old physical verdict and permits one fresh probe for the new generation.
|
|
233
|
+
|
|
234
|
+
### AI-readable format evidence
|
|
235
|
+
|
|
236
|
+
Use the detached receipt as the only public evidence projection. Its `status`,
|
|
237
|
+
`profile`, `deviceGeneration`, and ordered `stages` answer whether the complete
|
|
238
|
+
texture-create through readback path ran. When unavailable, branch on the closed
|
|
239
|
+
`rhi-texture-format-capability-unavailable` error and inspect `expected`, `hint`,
|
|
240
|
+
and `detail.stage`; route recovery to the device owner and retry once for the new
|
|
241
|
+
generation. `structural-only` is an evidence level, not a pixel admission.
|
|
242
|
+
|
|
243
|
+
The SSR consumer reads this receipt but does not own the probe, a cache, or a
|
|
244
|
+
second report. Backend kind, CPU/WebGL2 compute, RhiNull pixels, hidden copies,
|
|
245
|
+
and live GPU handles are not valid substitutes.
|
|
246
|
+
|
|
180
247
|
## Remaining public placeholder: `executeBundles`
|
|
181
248
|
|
|
182
249
|
| Method | Owning future closure |
|
|
@@ -218,7 +285,7 @@ if (!dr.ok) {
|
|
|
218
285
|
case 'queue-write-buffer-out-of-bounds': /* realign offset, re-check buffer.size */ break;
|
|
219
286
|
case 'render-system-no-camera': /* world.spawn(Transform + Camera) before draw([world], { cameraOwner: 0, resourceOwner: 0 }) */ break;
|
|
220
287
|
case 'render-system-multi-camera':/* deduplicate Camera entities or wait for feat-future-multi-viewport */ break;
|
|
221
|
-
case 'render-system-multi-light': /*
|
|
288
|
+
case 'render-system-multi-light': /* keep one DirectionalLight; local lights use Cluster */ break;
|
|
222
289
|
case 'asset-not-registered': /* use HANDLE_CUBE / HANDLE_TRIANGLE imports; or feat-future-asset-system custom register */ break;
|
|
223
290
|
case 'device-lost': /* renderer.onError fan-out + page reload; driver / OS-side recovery */ break;
|
|
224
291
|
case 'oom': /* release prior buffers/textures via .destroy(); shrink descriptor; check device.limits.maxBufferSize */ break;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r32float-capability.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/r32float-capability.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type Result, RhiError } from '../errors';
|
|
2
|
+
/** The only format profile currently admitted by the reflection fallback path. */
|
|
3
|
+
export declare const R32FLOAT_MIP_SAMPLED_STORAGE_PROFILE: "r32float-mip-sampled-storage";
|
|
4
|
+
export type RhiTextureFormatProfile = typeof R32FLOAT_MIP_SAMPLED_STORAGE_PROFILE;
|
|
5
|
+
export type RhiTextureFormatProbeVerdict = 'admitted' | 'unavailable' | 'structural-only';
|
|
6
|
+
export type RhiTextureFormatProbeEvidence = 'real' | 'structural';
|
|
7
|
+
export type RhiTextureFormatProbeStage = 'texture-create' | 'mip-view' | 'sampled-storage-bind-group' | 'pipeline-bind' | 'finish' | 'submit' | 'completion' | 'readback';
|
|
8
|
+
export declare const R32FLOAT_PROBE_STAGES: readonly RhiTextureFormatProbeStage[];
|
|
9
|
+
export interface RhiTextureFormatProbeStageReceipt {
|
|
10
|
+
readonly stage: RhiTextureFormatProbeStage;
|
|
11
|
+
readonly verdict: RhiTextureFormatProbeVerdict;
|
|
12
|
+
readonly evidence: RhiTextureFormatProbeEvidence;
|
|
13
|
+
readonly detail?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
export interface RhiTextureFormatReadback {
|
|
16
|
+
readonly byteLength: number;
|
|
17
|
+
readonly values: readonly number[];
|
|
18
|
+
}
|
|
19
|
+
export interface RhiTextureFormatCapabilityReceipt {
|
|
20
|
+
readonly profile: RhiTextureFormatProfile;
|
|
21
|
+
readonly verdict: RhiTextureFormatProbeVerdict;
|
|
22
|
+
readonly evidence: RhiTextureFormatProbeEvidence;
|
|
23
|
+
readonly deviceGeneration: number;
|
|
24
|
+
readonly stages: readonly RhiTextureFormatProbeStageReceipt[];
|
|
25
|
+
readonly sampleType: 'unfilterable-float';
|
|
26
|
+
readonly usages: readonly ['texture-binding', 'storage-binding', 'copy-src'];
|
|
27
|
+
readonly readback?: RhiTextureFormatReadback | undefined;
|
|
28
|
+
readonly probeExecutions: number;
|
|
29
|
+
}
|
|
30
|
+
export interface CreateUnavailableR32FloatReceiptOptions {
|
|
31
|
+
readonly deviceGeneration: number;
|
|
32
|
+
readonly failedStage: RhiTextureFormatProbeStage;
|
|
33
|
+
readonly detail: string;
|
|
34
|
+
readonly evidence?: RhiTextureFormatProbeEvidence | undefined;
|
|
35
|
+
}
|
|
36
|
+
export declare function createUnavailableR32FloatReceipt(options: CreateUnavailableR32FloatReceiptOptions): RhiTextureFormatCapabilityReceipt;
|
|
37
|
+
export declare function validateR32FloatReceipt(receipt: RhiTextureFormatCapabilityReceipt): Result<RhiTextureFormatCapabilityReceipt, RhiError>;
|
|
38
|
+
//# sourceMappingURL=texture-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format.d.ts","sourceRoot":"","sources":["../../src/capability/texture-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3D,kFAAkF;AAClF,eAAO,MAAM,oCAAoC,EAAG,8BAAuC,CAAC;AAE5F,MAAM,MAAM,uBAAuB,GAAG,OAAO,oCAAoC,CAAC;AAClF,MAAM,MAAM,4BAA4B,GAAG,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAC1F,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,YAAY,CAAC;AAClE,MAAM,MAAM,0BAA0B,GAClC,gBAAgB,GAChB,UAAU,GACV,4BAA4B,GAC5B,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,UAAU,CAAC;AAEf,eAAO,MAAM,qBAAqB,EAAE,SAAS,0BAA0B,EAStE,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,iCAAiC,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;CAC/D;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,iCAAiC,CAkBnC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iCAAiC,GACzC,MAAM,CAAC,iCAAiC,EAAE,QAAQ,CAAC,CAiCrD"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ import { type Result } from '@forgeax/engine-types';
|
|
|
26
26
|
* }
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export type RhiErrorCode = 'adapter-unavailable' | 'feature-not-enabled' | 'limit-exceeded' | 'shader-compile-failed' | 'rhi-not-available' | 'webgpu-runtime-error' | 'command-encoder-finished' | 'render-pass-not-ended' | 'queue-submit-failed' | 'queue-write-buffer-out-of-bounds' | 'render-system-no-camera' | 'render-system-multi-camera' | 'render-system-multi-light' | 'asset-not-registered' | 'device-lost' | 'oom' | 'internal-error' | 'hierarchy-broken' | 'destroy-after-destroy' | 'rhi-descriptor-invalid' | 'instancing-exceeds-uniform-cap' | 'render-system-empty-worlds' | 'render-system-owner-out-of-range';
|
|
29
|
+
export type RhiErrorCode = 'adapter-unavailable' | 'feature-not-enabled' | 'limit-exceeded' | 'shader-compile-failed' | 'rhi-not-available' | 'webgpu-runtime-error' | 'command-encoder-finished' | 'render-pass-not-ended' | 'queue-submit-failed' | 'queue-write-buffer-out-of-bounds' | 'render-system-no-camera' | 'render-system-multi-camera' | 'render-system-multi-light' | 'asset-not-registered' | 'device-lost' | 'oom' | 'internal-error' | 'hierarchy-broken' | 'destroy-after-destroy' | 'rhi-descriptor-invalid' | 'instancing-exceeds-uniform-cap' | 'render-system-empty-worlds' | 'render-system-owner-out-of-range' | 'rhi-texture-format-capability-unavailable';
|
|
30
30
|
/**
|
|
31
31
|
* Detail structure exclusive to the `shader-compile-failed` path.
|
|
32
32
|
*
|
|
@@ -107,24 +107,13 @@ export interface LimitExceededDetail {
|
|
|
107
107
|
readonly requestedBytes: number;
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
|
-
* Detail structure exclusive to the `'render-system-multi-light'` path
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* Emitted by the RenderSystem record stage when first-slice cap exceedance
|
|
115
|
-
* is detected: `type` discriminates the offending bucket
|
|
116
|
-
* (`'directional'` for N>1 / `'point'` or `'spot'` for N>4); `got`
|
|
117
|
-
* carries the observed entity count so AI users can branch via property
|
|
118
|
-
* access (`err.detail.type === 'point' && err.detail.got > 4`) rather
|
|
119
|
-
* than parsing the message string (charter proposition 4 + F-3 contract
|
|
120
|
-
* surface).
|
|
121
|
-
*
|
|
122
|
-
* Single live emit point: the RenderSystem record stage three-bucket
|
|
123
|
-
* fail-fast (`packages/runtime/src/render-system-record.ts`). Minor
|
|
124
|
-
* additive evolution per AGENTS.md error model evolution contract.
|
|
110
|
+
* Detail structure exclusive to the `'render-system-multi-light'` path.
|
|
111
|
+
* The only remaining cardinality rule is one global DirectionalLight; all
|
|
112
|
+
* PointLight, SpotLight, and RectArea lights are admitted through the shared
|
|
113
|
+
* shared Cluster corpus and are admitted by the same local-light contract.
|
|
125
114
|
*/
|
|
126
115
|
export interface RhiMultiLightDetail {
|
|
127
|
-
readonly type: 'directional'
|
|
116
|
+
readonly type: 'directional';
|
|
128
117
|
readonly got: number;
|
|
129
118
|
}
|
|
130
119
|
/**
|
|
@@ -210,6 +199,12 @@ export interface RhiOwnerOutOfRangeDetail {
|
|
|
210
199
|
readonly owner: number;
|
|
211
200
|
readonly worldCount: number;
|
|
212
201
|
}
|
|
202
|
+
/** Detail for an incomplete device-owned texture-format profile probe. */
|
|
203
|
+
export interface RhiTextureFormatCapabilityUnavailableDetail {
|
|
204
|
+
readonly stage: string;
|
|
205
|
+
readonly deviceGeneration: number;
|
|
206
|
+
readonly reason: string;
|
|
207
|
+
}
|
|
213
208
|
/**
|
|
214
209
|
* Tagged union of `.detail` shapes carried by structured errors.
|
|
215
210
|
*
|
|
@@ -232,7 +227,7 @@ export interface RhiOwnerOutOfRangeDetail {
|
|
|
232
227
|
* The other 15 paths leave `.detail = undefined` (charter proposition 4
|
|
233
228
|
* baseline).
|
|
234
229
|
*/
|
|
235
|
-
export type RhiErrorDetail = RhiShaderCompileDetail | RhiAssetNotRegisteredDetail | RhiWebgpuRuntimeDetail | LimitExceededDetail | RhiMultiLightDetail | RhiInstancingExceedsUniformCapDetail | RhiOwnerOutOfRangeDetail;
|
|
230
|
+
export type RhiErrorDetail = RhiShaderCompileDetail | RhiAssetNotRegisteredDetail | RhiWebgpuRuntimeDetail | LimitExceededDetail | RhiMultiLightDetail | RhiInstancingExceedsUniformCapDetail | RhiOwnerOutOfRangeDetail | RhiTextureFormatCapabilityUnavailableDetail;
|
|
236
231
|
/**
|
|
237
232
|
* Structured RHI error.
|
|
238
233
|
*
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA6FA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,GAChB,uBAAuB,GACvB,mBAAmB,GACnB,sBAAsB,GACtB,0BAA0B,GAC1B,uBAAuB,GACvB,qBAAqB,GACrB,kCAAkC,GAClC,yBAAyB,GACzB,4BAA4B,GAC5B,2BAA2B,GAC3B,sBAAsB,GACtB,aAAa,GACb,KAAK,GACL,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,wBAAwB,GACxB,gCAAgC,GAChC,4BAA4B,GAC5B,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA6FA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,GAChB,uBAAuB,GACvB,mBAAmB,GACnB,sBAAsB,GACtB,0BAA0B,GAC1B,uBAAuB,GACvB,qBAAqB,GACrB,kCAAkC,GAClC,yBAAyB,GACzB,4BAA4B,GAC5B,2BAA2B,GAC3B,sBAAsB,GACtB,aAAa,GACb,KAAK,GACL,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,wBAAwB,GACxB,gCAAgC,GAChC,4BAA4B,GAC5B,kCAAkC,GAClC,2CAA2C,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,MAAM,WAAW,2CAA2C;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,cAAc,GACtB,sBAAsB,GACtB,2BAA2B,GAC3B,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,oCAAoC,GACpC,wBAAwB,GACxB,2CAA2C,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;gBAEhC,IAAI,EAAE;QAChB,IAAI,EAAE,YAAY,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;KACrC;CAQF;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,GACpB,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAoCxB;AAOD,OAAO,EACL,GAAG,EACH,EAAE,EACF,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC"}
|
package/dist/errors.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts"],"names":[],"mappings":";;;;AAuYO,IAAM,QAAA,GAAN,cAAuB,KAAA,CAAM;AAAA,EACzB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EAET,YAAY,IAAA,EAKT;AACD,IAAA,KAAA,CAAM,CAAA,UAAA,EAAa,KAAK,IAAI,CAAA,YAAA,EAAe,KAAK,QAAQ,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAC9E,IAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AACZ,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,QAAA;AACrB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AAAA,EACrB;AACF;AAyCO,SAAS,gBAAA,CACd,YACA,KAAA,EACwB;AACxB,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,OAAO,GAAA;AAAA,MACL,IAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,4BAAA;AAAA,QACN,QAAA,EAAU,qCAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP;AAAA,KACH;AAAA,EACF;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAc,GAAI,KAAA;AACvC,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,CAAC,MAAA,CAAO,UAAU,KAAK,CAAA,IAAK,KAAA,GAAQ,CAAA,IAAK,KAAA,IAAS,UAAA;AAGpD,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAA,OAAO,GAAA;AAAA,MACL,IAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,kCAAA;AAAA,QACN,QAAA,EAAU,wEAAA;AAAA,QACV,IAAA,EAAM,gGAAA;AAAA,QACN,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,aAAa,UAAA;AAAW,OAC1D;AAAA,KACH;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,aAAa,CAAA,EAAG;AAC7B,IAAA,OAAO,GAAA;AAAA,MACL,IAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,kCAAA;AAAA,QACN,QAAA,EAAU,4EAAA;AAAA,QACV,IAAA,EAAM,2GAAA;AAAA,QACN,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,eAAe,UAAA;AAAW,OAC9D;AAAA,KACH;AAAA,EACF;AACA,EAAA,OAAO,GAAG,MAAS,CAAA;AACrB","file":"errors.mjs","sourcesContent":["// @forgeax/engine-rhi/src/errors - RhiError + closed RhiErrorCode union + Result<T, E>.\n//\n// Shape:\n// - RhiErrorCode = closed union 23 members (charter P3: closed-union\n// exhaustive switch needs no default fallback; tsc strict mode guards\n// completeness). Extended from 6 to 10 in feat-20260508-rhi-surface-completion\n// w7 (D-S3): added 'command-encoder-finished' / 'render-pass-not-ended' /\n// 'queue-submit-failed' / 'queue-write-buffer-out-of-bounds'.\n// Extended from 10 to 14 in feat-20260509-ecs-render-bridge-mvp w6 (D-S7):\n// added 'render-system-no-camera' / 'render-system-multi-camera' /\n// 'render-system-multi-light' / 'asset-not-registered'.\n// Extended from 14 to 17 in feat-20260511-rhi-spec-realign-aggressive w6\n// (D-P4 + R-02 §2.1 W3C spec 22.2 subtypes): added 'device-lost' / 'oom' /\n// 'internal-error' so the onError fan-out can disambiguate spec error\n// subclasses without falling back to the bucket 'webgpu-runtime-error'.\n// Extended from 17 to 18 in feat-20260511-asset-system-v1 w4\n// (D-P2 + requirements §9 row 8 + AC-04 + AC-21): added\n// 'hierarchy-broken' for `propagateTransforms` stale ChildOf ref fail-fast\n// (ChildOf component references a destroyed entity); same\n// render-system / schedule semantic domain as\n// 'render-system-multi-camera' / 'render-system-no-camera'. Minor add-only\n// per AGENTS.md evolution contract (no reorder / rename / deprecate).\n// Extended from 18 to 19 in feat-20260612-rhi-destroy-renderer-dispose-gpu-\n// lifecycle M1 (D-6 + D-7 + AC-02 / AC-03): added 'destroy-after-destroy'\n// for second `destroyBuffer` / `destroyTexture` on the same handle. The\n// shim layer (rhi-webgpu + rhi-wgpu) tracks per-handle `destroyed: boolean`\n// in WeakMap-backed meta and fail-fasts the second call rather than\n// forwarding it to the underlying GPU (research F-1 wgpu wasm `destroy()`\n// is idempotent void; F-8 WebGPU spec is also idempotent void; D-7 prefers\n// fail-fast over silent idempotency because double-destroy is almost always\n// a lifecycle bug). Minor add-only per AGENTS.md evolution contract.\n// Extended from 19 to 20 in feat-20260619-wasm-fault-isolation M3 w7:\n// added 'rhi-descriptor-invalid' for `createRenderPipeline` (and other\n// create* entries) descriptor parse failures surfaced through the wgpu-wasm\n// backend (Rust `#[wasm_bindgen(catch)]` Err). The prefix-based\n// classification (D-1 / D-2) routes wasm exceptions with the stable marker\n// `[wgpu-wasm] failed to parse` to this code; exceptions without the prefix\n// remain in 'webgpu-runtime-error'. Semantics: descriptor parse failure =\n// caller bug (malformed descriptor data passed from TS), distinct from\n// 'webgpu-runtime-error' = runtime condition (valid descriptor rejected by\n// wgpu backend). Minor add-only per AGENTS.md evolution contract.\n// Extended from 20 to 21 in feat-20260622-chunk-gpu-instancing-sprite-\n// tilemap M2 w10 (D-2 + AC-05 + research N-1): added\n// 'instancing-exceeds-uniform-cap' for the WebGL2 uniform-fallback path\n// when a record-stage fold bucket carries more than 128 instances\n// (128 = MAX_UNIFORM_INSTANCES; 128 * 64B = 8192B comfortably fits the\n// WebGL2 minimum 16384B UBO size, leaving headroom for the per-frame\n// material UBO slice — research N-1 implements the locked value). The\n// record-stage dispatch site fires the error AND falls the offending\n// bucket back to per-entity drawIndexed (the same exit the mode-gate\n// bypass uses — plan-strategy D-9 \"shared fallback exit\"). Semantics:\n// distinct from 'limit-exceeded' (byte-cap against\n// maxStorageBufferBindingSize) — this code targets the per-bucket\n// instance-count cap, which is a backend-capability ceiling rather than\n// an allocation-size ceiling. AI users branch on .code first then read\n// detail.requested / .limit / .scope through property access (charter\n// P3 + plan-strategy 8.3 actionable hint). Minor add-only\n// per AGENTS.md evolution contract.\n// Extended from 21 to 23 in feat-20260708-composited-multi-world-rendering\n// M3 (D-5): added 'render-system-empty-worlds' + 'render-system-owner-out-of-\n// range' for draw(worlds, { cameraOwner, resourceOwner }) entry validation. The\n// owner-out-of-range path exposes .detail = RhiOwnerOutOfRangeDetail\n// ({ role, owner, worldCount } after feat-20260709-editor-world-partition\n// M1 / w7: role ∈ {'camera','resource'} names which of the two split draw\n// owners is out of range); empty-worlds carries no .detail. The pure\n// validateDrawArgs(worldCount, { cameraOwner, resourceOwner })\n// helper (World-free primitives) emits both and is consumed by the runtime\n// createRenderer draw entry (the codes' SSOT stays in rhi). Checks run\n// empty-worlds -> cameraOwner -> resourceOwner; the first out-of-range owner\n// wins (role='camera' when both offend). Add-only (no new code, 0 net Δ per\n// D-3) per AGENTS.md evolution contract.\n// - RhiError class has readonly .code / .expected / .hint three-field surface\n// (AGENTS.md \"Errors are structured\" / D-5); the 'shader-compile-failed' path\n// exposes .detail = RhiShaderCompileDetail (compilerMessages array);\n// the 'asset-not-registered' path exposes .detail = RhiAssetNotRegisteredDetail\n// ({ assetHandle: number }, D-S6); the 'webgpu-runtime-error' path optionally\n// exposes .detail = RhiWebgpuRuntimeDetail ({ error: RhiError | fallback }, D-S8) for\n// RenderSystem internal exception fan-out; the 'limit-exceeded' path\n// exposes .detail = LimitExceededDetail ({ maxStorageBufferBindingSize,\n// requestedBytes }, feat-20260513-instanced-mesh M5 reshape from legacy\n// { renderableCount, limit }); the other 15 paths leave\n// .detail = undefined per charter proposition 4 baseline.\n// - Result<T, E> = binary tag union ('ok' / 'err'), per AGENTS.md \"Errors are\n// structured\" convention.\n//\n// Related: requirements AC AC-10 + MVP-1.7 + AC-RSC-07 + hard-constraint 8 +\n// AI User Affordances; plan-strategy 2 S-6 (types/rhi single source) +\n// 7.3 error-info table; plan-decisions OQ-P2 (forward all 6 fields of\n// GPUCompilationMessage); D-S3 (4 command/queue members) + D-S6 / D-S7\n// / D-S8 (4 RenderSystem / AssetRegistry members + .detail structure).\n\n/// <reference types=\"@webgpu/types\" />\n\nimport { err, ok, type Result } from '@forgeax/engine-types';\n\n/**\n * Closed RhiErrorCode union. `switch` exhaustive checks need no default\n * fallback - tsc strict mode guards union completeness (charter proposition 4\n * + proposition 3: machine-readable union > prose).\n *\n *\n * The executable union below is the machine-readable source of truth for\n * the 23 members. The package README owns the AI-facing trigger and recovery\n * table; keeping that projection in one documentation owner avoids a second\n * member ledger drifting from the union.\n *\n * @example AI-user exhaustive switch on the 4 command/queue members (no default fallback)\n * ```ts\n * import type { RhiError, RhiErrorCode } from '@forgeax/engine-rhi';\n *\n * function recover(code: RhiErrorCode): string {\n * switch (code) {\n * // ... 6 baseline members elided ...\n * case 'command-encoder-finished': return 'recreate encoder via device.createCommandEncoder()';\n * case 'render-pass-not-ended': return 'call pass.end() before next beginRenderPass()';\n * case 'queue-submit-failed': return 'audit buffer/pipeline lifetimes before submit';\n * case 'queue-write-buffer-out-of-bounds': return 'realign offset and re-check buffer.size';\n * default: return 'baseline path';\n * }\n * }\n * ```\n */\nexport type RhiErrorCode =\n | 'adapter-unavailable'\n | 'feature-not-enabled'\n | 'limit-exceeded'\n | 'shader-compile-failed'\n | 'rhi-not-available'\n | 'webgpu-runtime-error'\n | 'command-encoder-finished'\n | 'render-pass-not-ended'\n | 'queue-submit-failed'\n | 'queue-write-buffer-out-of-bounds'\n | 'render-system-no-camera'\n | 'render-system-multi-camera'\n | 'render-system-multi-light'\n | 'asset-not-registered'\n | 'device-lost'\n | 'oom'\n | 'internal-error'\n | 'hierarchy-broken'\n | 'destroy-after-destroy'\n | 'rhi-descriptor-invalid'\n | 'instancing-exceeds-uniform-cap'\n | 'render-system-empty-worlds'\n | 'render-system-owner-out-of-range';\n\n/**\n * Detail structure exclusive to the `shader-compile-failed` path.\n *\n * `compilerMessages` directly forwards the 6 standardized fields of\n * `GPUCompilationMessage` from `@webgpu/types` v0.1.69 (`message` / `type` /\n * `lineNum` / `linePos` / `offset` / `length`); research F-3 finding;\n * plan-decisions OQ-P2 locks full-field forwarding.\n *\n * @see {@link GPUCompilationMessage}\n */\nexport interface RhiShaderCompileDetail {\n readonly compilerMessages: readonly GPUCompilationMessage[];\n}\n\n/**\n * Detail structure exclusive to the `asset-not-registered` path (D-S6).\n *\n * `assetHandle` carries the offending u32 handle the caller passed via\n * `MeshFilter.assetHandle`; AI users access it through property access\n * (`err.detail.assetHandle`) rather than parsing the message string\n * (charter proposition 4 + F-3 contract surface).\n */\nexport interface RhiAssetNotRegisteredDetail {\n readonly assetHandle: number;\n}\n\n/**\n * Detail structure exclusive to the `webgpu-runtime-error` path (D-S8).\n *\n * `error` carries the underlying exception object so AI users can inspect the\n * root cause (`.code` / `.expected` / `.hint` for `RhiError` paths, or\n * `.code` + `.message` for non-RhiError falls) without parsing the\n * RhiError.message field. Optional: the K-9 silent-skip fan-out root path\n * may emit `webgpu-runtime-error` without `.detail` when the underlying\n * exception is unavailable.\n *\n * feat-20260608-mesh-ssbo-dynamic-grow-l1-lift-1024-entity-cap M4 / T-M4-02:\n * `error` field type widened from `string` to `RhiError | { code: string;\n * message: string }` so downstream `switch (err.code)` handlers can narrow\n * the inner error (`.code` / `.expected` / `.hint`) without an `as` cast.\n */\nexport interface RhiWebgpuRuntimeDetail {\n readonly error: RhiError | { code: string; message: string; name?: string };\n}\n\n/**\n * Detail structure exclusive to the `limit-exceeded` path.\n *\n * `maxStorageBufferBindingSize` carries the device-reported storage cap\n * (`device.limits.maxStorageBufferBindingSize`); `requestedBytes`\n * carries the byte count the caller attempted to allocate. AI users\n * access these through typed property access (`err.detail.maxStorageBufferBindingSize`\n * / `err.detail.requestedBytes`) rather than parsing the message string\n * — charter proposition 4 structured-error consumption path; `err.hint`\n * is for human eyeballs only.\n *\n * Single live emit point: the RenderSystem record stage per-entity\n * instance buffer upload path\n * (`packages/runtime/src/render-system-record.ts`). The 18-member\n * `RhiErrorCode` union is unchanged (`'limit-exceeded'` discriminant\n * preserved); evolution major rename + replace of the discriminated\n * `detail` shape per AGENTS.md Change stance + plan-strategy D-3.\n *\n * Migration history:\n * - feat-20260513-instanced-mesh M5: detail reshape from\n * `{ renderableCount, limit }` to `{ maxStorageBufferBindingSize,\n * requestedBytes }`. Emit point at the time was\n * `AssetRegistry.createInstancedBuffer`.\n * - feat-20260514-ecs-children-instances-managed-buffer-array M3 / w15:\n * `AssetRegistry.createInstancedBuffer` deleted alongside the\n * `InstancedBufferAsset` POD; emit point migrated to the record\n * stage upload path (`requestedBytes` now equals\n * `Instances.transforms.byteLength` per Instances-bearing entity).\n */\nexport interface LimitExceededDetail {\n readonly maxStorageBufferBindingSize: number;\n readonly requestedBytes: number;\n}\n\n/**\n * Detail structure exclusive to the `'render-system-multi-light'` path\n * (feat-20260519-light-casters-point-spot-pbr M3 / w20 + plan-strategy\n * section 8 (3) (b)).\n *\n * Emitted by the RenderSystem record stage when first-slice cap exceedance\n * is detected: `type` discriminates the offending bucket\n * (`'directional'` for N>1 / `'point'` or `'spot'` for N>4); `got`\n * carries the observed entity count so AI users can branch via property\n * access (`err.detail.type === 'point' && err.detail.got > 4`) rather\n * than parsing the message string (charter proposition 4 + F-3 contract\n * surface).\n *\n * Single live emit point: the RenderSystem record stage three-bucket\n * fail-fast (`packages/runtime/src/render-system-record.ts`). Minor\n * additive evolution per AGENTS.md error model evolution contract.\n */\nexport interface RhiMultiLightDetail {\n readonly type: 'directional' | 'point' | 'spot';\n readonly got: number;\n}\n\n/**\n * Detail structure exclusive to the `'instancing-exceeds-uniform-cap'` path\n * (feat-20260622-chunk-gpu-instancing-sprite-tilemap M2 / w10 +\n * plan-strategy 2 D-2 + research N-1).\n *\n * Emitted by the record-stage fold dispatch loop\n * (`packages/runtime/src/render-system-record.ts`) when\n * `caps.storageBuffer === false` AND a fold bucket carries more than\n * `limit` instances. The engine fires the error AND falls the offending\n * bucket back to per-entity drawIndexed via the same exit the mode-gate\n * bypass uses (plan-strategy D-9 \"shared fallback exit\"), so the frame\n * is still visually correct (no identity-collapse / black screen) and\n * the cap event surfaces structurally for AI users to observe.\n *\n * Fields:\n * - `requested` — the offending bucket's instance count\n * (`FoldBucket.bucketSize`); always strictly greater than `limit` at\n * emit time (the cap-check helper guards `requested > limit`).\n * - `limit` — the literal 128. The value is locked at the type level\n * because the cap is structurally tied to the WebGL2 minimum 16384 B\n * UBO size (128 * 64 B mat4 stride = 8192 B leaves headroom for the\n * per-frame material UBO slice — research N-1). A future cap change\n * would be a major evolution, not a runtime knob.\n * - `scope` — closed `'sprite' | 'tilemap-chunk'` discriminator that\n * pinpoints the dispatch site (sprite-pass entry that came directly\n * from a user-spawned Sprite vs one derived by\n * `tilemap-chunk-extract-system`). AI users branch on `.scope` to\n * decide whether to shrink the sprite batch size or the tilemap\n * chunk size.\n *\n * AI-user consumption (charter P3 + plan-strategy 8.3):\n * ```ts\n * if (err.code === 'instancing-exceeds-uniform-cap') {\n * const d = err.detail as RhiInstancingExceedsUniformCapDetail;\n * if (d.scope === 'sprite') shrinkSpriteBatchSize(d.requested);\n * else if (d.scope === 'tilemap-chunk') shrinkTileChunkSize(d.requested);\n * }\n * ```\n * — never parse `err.message`. The discriminated `detail` field is the\n * surface; the human-readable `err.message` is for logs only.\n */\nexport interface RhiInstancingExceedsUniformCapDetail {\n readonly requested: number;\n readonly limit: 128;\n readonly scope: 'sprite' | 'tilemap-chunk';\n}\n\n/**\n * Detail structure exclusive to the `'render-system-owner-out-of-range'` path\n * (feat-20260708-composited-multi-world-rendering M3 / D-5).\n *\n * Emitted by `renderer.draw(worlds, { cameraOwner, resourceOwner })` when one\n * owner index is not valid for `worlds` (`owner < 0` or `owner >= worlds.length`).\n * An out-of-range index cannot resolve, so the frame is skipped before extract.\n *\n * Fields:\n * - `role` — WHICH of the two draw-owner indices was out of range\n * (feat-20260709-editor-world-partition M1 / w7). `draw(worlds, {\n * cameraOwner, resourceOwner })` carries two independent indices; `role`\n * tells the AI user whether the camera-source index (`'camera'`) or the\n * singleton-resource index (`'resource'`) is the offender, so the fix is\n * unambiguous from the text channel (no new error code — D-3 keeps 0 net\n * new codes; the discriminator lives in `.detail`). When both indices are\n * out of range the first offender is reported: `cameraOwner` is validated\n * before `resourceOwner`, so `role === 'camera'`.\n * - `owner` — the offending index the caller passed (the `role` index's\n * value).\n * - `worldCount` — `worlds.length` at call time (the valid range is\n * `0 .. worldCount - 1`).\n *\n * AI users branch via property access (`err.detail.role` / `err.detail.owner` /\n * `err.detail.worldCount`) after narrowing on `.code`, rather than parsing the\n * message string (charter P3 structured-failure surface).\n *\n * The sibling `'render-system-empty-worlds'` path carries no `.detail` — an\n * empty array is fully described by `.code`, and the entry check short-circuits\n * to that code before the owner-range check runs (the two codes are\n * non-exclusive).\n */\nexport interface RhiOwnerOutOfRangeDetail {\n readonly role: 'camera' | 'resource';\n readonly owner: number;\n readonly worldCount: number;\n}\n\n/**\n * Tagged union of `.detail` shapes carried by structured errors.\n *\n * Entries:\n * - `RhiShaderCompileDetail` (carries `compilerMessages`) - emitted on the\n * `'shader-compile-failed'` path.\n * - `RhiAssetNotRegisteredDetail` (carries `assetHandle`) - emitted on the\n * `'asset-not-registered'` path (D-S6).\n * - `RhiWebgpuRuntimeDetail` (carries `error: RhiError | { code, message }`) - optionally emitted\n * on the `'webgpu-runtime-error'` path when a captured `Error.message` is\n * available (D-S8).\n * - `LimitExceededDetail` (carries `maxStorageBufferBindingSize` +\n * `requestedBytes`) - emitted on the `'limit-exceeded'` path when\n * the RenderSystem record stage's per-entity Instances upload\n * exceeds `device.limits.maxStorageBufferBindingSize`\n * (feat-20260514-ecs-children-instances-managed-buffer-array M3 / w15;\n * emit point migrated from the deleted\n * `AssetRegistry.createInstancedBuffer` factory).\n *\n * The other 15 paths leave `.detail = undefined` (charter proposition 4\n * baseline).\n */\nexport type RhiErrorDetail =\n | RhiShaderCompileDetail\n | RhiAssetNotRegisteredDetail\n | RhiWebgpuRuntimeDetail\n | LimitExceededDetail\n | RhiMultiLightDetail\n | RhiInstancingExceedsUniformCapDetail\n | RhiOwnerOutOfRangeDetail;\n\n/**\n * Structured RHI error.\n *\n * Three readonly fields aligned with AGENTS.md \"Errors are structured\":\n * - `.code` - closed union member (L1 key signal).\n * - `.expected` - expected-state description (L2 detail).\n * - `.hint` - actionable recovery guidance (L2 detail; charter proposition 3:\n * machine-readable hint > prose).\n *\n * `.detail` is populated on four paths:\n * - `code === 'shader-compile-failed'` -> `RhiShaderCompileDetail`\n * - `code === 'asset-not-registered'` -> `RhiAssetNotRegisteredDetail`\n * - `code === 'webgpu-runtime-error'` -> `RhiWebgpuRuntimeDetail` (optional)\n * - `code === 'limit-exceeded'` -> `LimitExceededDetail`\n * (feat-20260513-instanced-mesh M5 reshape; carries\n * `maxStorageBufferBindingSize` + `requestedBytes`)\n *\n * The other 15 paths leave `.detail = undefined` (charter proposition 4\n * baseline).\n *\n * Note: `RhiErrorDetail` is currently a flat tagged union without a\n * `code` discriminant field on each variant; AI users perform typed\n * narrowing via outer `switch (err.code)` then a one-time `as` cast on\n * `err.detail` per the documented variant. Full discriminated-union\n * refactor (each variant carrying its own `code` literal field) is left\n * to `feat-future-rhi-error-detail-discriminant` spinoff.\n */\nexport class RhiError extends Error {\n readonly code: RhiErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: RhiErrorDetail | undefined;\n\n constructor(args: {\n code: RhiErrorCode;\n expected: string;\n hint: string;\n detail?: RhiErrorDetail | undefined;\n }) {\n super(`[RhiError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'RhiError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n\n/**\n * The two split draw-owner indices carried by\n * `draw(worlds, { cameraOwner, resourceOwner })`\n * (feat-20260709-editor-world-partition M1 / w6). `cameraOwner` selects the\n * world whose cameras are surfaced; `resourceOwner` selects the world whose\n * skylight / skybox / postProcessParams are surfaced. Declared here (World-free\n * primitives) so the validator and the `RhiOwnerOutOfRangeDetail.role`\n * discriminator live in one SSOT package (architecture-principles §1).\n */\nexport interface DrawOwnerSplit {\n readonly cameraOwner: number;\n readonly resourceOwner: number;\n}\n\n/**\n * Validate `renderer.draw(worlds, { cameraOwner, resourceOwner })` arguments at\n * the draw entry (feat-20260708 M3 / D-5, extended by\n * feat-20260709-editor-world-partition M1 / w6-w7).\n *\n * The validator takes primitives (`worldCount = worlds.length`, plus the owner\n * index/indices) — no `World`, no math — so it lives in `@forgeax/engine-rhi`\n * alongside the `RhiErrorCode` members it emits (architecture-principles §1\n * SSOT). The runtime `createRenderer` draw entry calls it before any extract; a\n * non-`ok` result skips the frame with a structured error (charter P3), never a\n * silent no-op.\n *\n * Checks, in order (D-5 + w6):\n * 1. `worldCount === 0` -> `'render-system-empty-worlds'` (no `.detail`).\n * 2. `cameraOwner` is not a valid index -> `'render-system-owner-out-of-range'`\n * with `.detail = { role: 'camera', owner: cameraOwner, worldCount }`.\n * 3. `resourceOwner` is not a valid index -> `'render-system-owner-out-of-range'`\n * with `.detail = { role: 'resource', owner: resourceOwner, worldCount }`.\n * The `Number.isInteger` guard rejects a `NaN` / fractional / undefined-coerced\n * index a JS caller could pass despite the compile-time requirement. When both\n * indices are out of range the FIRST offender wins: `cameraOwner` is checked\n * before `resourceOwner`, so `role === 'camera'` (D-3 / w3 contract).\n *\n * The empty-worlds guard short-circuits before either owner-range check.\n */\nexport function validateDrawArgs(\n worldCount: number,\n owner: DrawOwnerSplit,\n): Result<void, RhiError> {\n if (worldCount === 0) {\n return err(\n new RhiError({\n code: 'render-system-empty-worlds',\n expected: 'worlds array has at least one world',\n hint: 'pass at least one world: draw([world], { cameraOwner: 0, resourceOwner: 0 })',\n }),\n );\n }\n const { cameraOwner, resourceOwner } = owner;\n const outOfRange = (index: number): boolean =>\n !Number.isInteger(index) || index < 0 || index >= worldCount;\n // cameraOwner is validated first: it is the first offender when both indices\n // are out of range (w3 contract). role names which index the AI user fixes.\n if (outOfRange(cameraOwner)) {\n return err(\n new RhiError({\n code: 'render-system-owner-out-of-range',\n expected: 'cameraOwner is an index into worlds (0 <= cameraOwner < worlds.length)',\n hint: 'cameraOwner must be in 0..worlds.length-1; the cameraOwner world supplies the surfaced cameras',\n detail: { role: 'camera', owner: cameraOwner, worldCount },\n }),\n );\n }\n if (outOfRange(resourceOwner)) {\n return err(\n new RhiError({\n code: 'render-system-owner-out-of-range',\n expected: 'resourceOwner is an index into worlds (0 <= resourceOwner < worlds.length)',\n hint: 'resourceOwner must be in 0..worlds.length-1; the resourceOwner world supplies skylight/skybox/postProcess',\n detail: { role: 'resource', owner: resourceOwner, worldCount },\n }),\n );\n }\n return ok(undefined);\n}\n\n// Result<T, E> + ok / err live in `@forgeax/engine-types` (tweak-20260612-result-\n// into-types). They were duplicated here (\"byte-for-byte aligned\" by prose) and\n// in packages/ecs/src/result.ts; SSOT consolidated upstream. The barrel here\n// re-exports them so existing `import { err, ok, Result, ResultOk, ResultErr }\n// from '@forgeax/engine-rhi'` consumers stay unchanged.\nexport {\n err,\n ok,\n type Result,\n type ResultErr,\n type ResultOk,\n} from '@forgeax/engine-types';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts"],"names":[],"mappings":";;;;AAqYO,IAAM,QAAA,GAAN,cAAuB,KAAA,CAAM;AAAA,EACzB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EAET,YAAY,IAAA,EAKT;AACD,IAAA,KAAA,CAAM,CAAA,UAAA,EAAa,KAAK,IAAI,CAAA,YAAA,EAAe,KAAK,QAAQ,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAC9E,IAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AACZ,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,QAAA;AACrB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AAAA,EACrB;AACF;AAyCO,SAAS,gBAAA,CACd,YACA,KAAA,EACwB;AACxB,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,OAAO,GAAA;AAAA,MACL,IAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,4BAAA;AAAA,QACN,QAAA,EAAU,qCAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP;AAAA,KACH;AAAA,EACF;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAc,GAAI,KAAA;AACvC,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,CAAC,MAAA,CAAO,UAAU,KAAK,CAAA,IAAK,KAAA,GAAQ,CAAA,IAAK,KAAA,IAAS,UAAA;AAGpD,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAA,OAAO,GAAA;AAAA,MACL,IAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,kCAAA;AAAA,QACN,QAAA,EAAU,wEAAA;AAAA,QACV,IAAA,EAAM,gGAAA;AAAA,QACN,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,aAAa,UAAA;AAAW,OAC1D;AAAA,KACH;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,aAAa,CAAA,EAAG;AAC7B,IAAA,OAAO,GAAA;AAAA,MACL,IAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,kCAAA;AAAA,QACN,QAAA,EAAU,4EAAA;AAAA,QACV,IAAA,EAAM,2GAAA;AAAA,QACN,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,eAAe,UAAA;AAAW,OAC9D;AAAA,KACH;AAAA,EACF;AACA,EAAA,OAAO,GAAG,MAAS,CAAA;AACrB","file":"errors.mjs","sourcesContent":["// @forgeax/engine-rhi/src/errors - RhiError + closed RhiErrorCode union + Result<T, E>.\n//\n// Shape:\n// - RhiErrorCode = closed union 23 members (charter P3: closed-union\n// exhaustive switch needs no default fallback; tsc strict mode guards\n// completeness). Extended from 6 to 10 in feat-20260508-rhi-surface-completion\n// w7 (D-S3): added 'command-encoder-finished' / 'render-pass-not-ended' /\n// 'queue-submit-failed' / 'queue-write-buffer-out-of-bounds'.\n// Extended from 10 to 14 in feat-20260509-ecs-render-bridge-mvp w6 (D-S7):\n// added 'render-system-no-camera' / 'render-system-multi-camera' /\n// 'render-system-multi-light' / 'asset-not-registered'.\n// Extended from 14 to 17 in feat-20260511-rhi-spec-realign-aggressive w6\n// (D-P4 + R-02 §2.1 W3C spec 22.2 subtypes): added 'device-lost' / 'oom' /\n// 'internal-error' so the onError fan-out can disambiguate spec error\n// subclasses without falling back to the bucket 'webgpu-runtime-error'.\n// Extended from 17 to 18 in feat-20260511-asset-system-v1 w4\n// (D-P2 + requirements §9 row 8 + AC-04 + AC-21): added\n// 'hierarchy-broken' for `propagateTransforms` stale ChildOf ref fail-fast\n// (ChildOf component references a destroyed entity); same\n// render-system / schedule semantic domain as\n// 'render-system-multi-camera' / 'render-system-no-camera'. Minor add-only\n// per AGENTS.md evolution contract (no reorder / rename / deprecate).\n// Extended from 18 to 19 in feat-20260612-rhi-destroy-renderer-dispose-gpu-\n// lifecycle M1 (D-6 + D-7 + AC-02 / AC-03): added 'destroy-after-destroy'\n// for second `destroyBuffer` / `destroyTexture` on the same handle. The\n// shim layer (rhi-webgpu + rhi-wgpu) tracks per-handle `destroyed: boolean`\n// in WeakMap-backed meta and fail-fasts the second call rather than\n// forwarding it to the underlying GPU (research F-1 wgpu wasm `destroy()`\n// is idempotent void; F-8 WebGPU spec is also idempotent void; D-7 prefers\n// fail-fast over silent idempotency because double-destroy is almost always\n// a lifecycle bug). Minor add-only per AGENTS.md evolution contract.\n// Extended from 19 to 20 in feat-20260619-wasm-fault-isolation M3 w7:\n// added 'rhi-descriptor-invalid' for `createRenderPipeline` (and other\n// create* entries) descriptor parse failures surfaced through the wgpu-wasm\n// backend (Rust `#[wasm_bindgen(catch)]` Err). The prefix-based\n// classification (D-1 / D-2) routes wasm exceptions with the stable marker\n// `[wgpu-wasm] failed to parse` to this code; exceptions without the prefix\n// remain in 'webgpu-runtime-error'. Semantics: descriptor parse failure =\n// caller bug (malformed descriptor data passed from TS), distinct from\n// 'webgpu-runtime-error' = runtime condition (valid descriptor rejected by\n// wgpu backend). Minor add-only per AGENTS.md evolution contract.\n// Extended from 20 to 21 in feat-20260622-chunk-gpu-instancing-sprite-\n// tilemap M2 w10 (D-2 + AC-05 + research N-1): added\n// 'instancing-exceeds-uniform-cap' for the WebGL2 uniform-fallback path\n// when a record-stage fold bucket carries more than 128 instances\n// (128 = MAX_UNIFORM_INSTANCES; 128 * 64B = 8192B comfortably fits the\n// WebGL2 minimum 16384B UBO size, leaving headroom for the per-frame\n// material UBO slice — research N-1 implements the locked value). The\n// record-stage dispatch site fires the error AND falls the offending\n// bucket back to per-entity drawIndexed (the same exit the mode-gate\n// bypass uses — plan-strategy D-9 \"shared fallback exit\"). Semantics:\n// distinct from 'limit-exceeded' (byte-cap against\n// maxStorageBufferBindingSize) — this code targets the per-bucket\n// instance-count cap, which is a backend-capability ceiling rather than\n// an allocation-size ceiling. AI users branch on .code first then read\n// detail.requested / .limit / .scope through property access (charter\n// P3 + plan-strategy 8.3 actionable hint). Minor add-only\n// per AGENTS.md evolution contract.\n// Extended from 21 to 23 in feat-20260708-composited-multi-world-rendering\n// M3 (D-5): added 'render-system-empty-worlds' + 'render-system-owner-out-of-\n// range' for draw(worlds, { cameraOwner, resourceOwner }) entry validation. The\n// owner-out-of-range path exposes .detail = RhiOwnerOutOfRangeDetail\n// ({ role, owner, worldCount } after feat-20260709-editor-world-partition\n// M1 / w7: role ∈ {'camera','resource'} names which of the two split draw\n// owners is out of range); empty-worlds carries no .detail. The pure\n// validateDrawArgs(worldCount, { cameraOwner, resourceOwner })\n// helper (World-free primitives) emits both and is consumed by the runtime\n// createRenderer draw entry (the codes' SSOT stays in rhi). Checks run\n// empty-worlds -> cameraOwner -> resourceOwner; the first out-of-range owner\n// wins (role='camera' when both offend). Add-only (no new code, 0 net Δ per\n// D-3) per AGENTS.md evolution contract.\n// - RhiError class has readonly .code / .expected / .hint three-field surface\n// (AGENTS.md \"Errors are structured\" / D-5); the 'shader-compile-failed' path\n// exposes .detail = RhiShaderCompileDetail (compilerMessages array);\n// the 'asset-not-registered' path exposes .detail = RhiAssetNotRegisteredDetail\n// ({ assetHandle: number }, D-S6); the 'webgpu-runtime-error' path optionally\n// exposes .detail = RhiWebgpuRuntimeDetail ({ error: RhiError | fallback }, D-S8) for\n// RenderSystem internal exception fan-out; the 'limit-exceeded' path\n// exposes .detail = LimitExceededDetail ({ maxStorageBufferBindingSize,\n// requestedBytes }, feat-20260513-instanced-mesh M5 reshape from legacy\n// { renderableCount, limit }); the other 15 paths leave\n// .detail = undefined per charter proposition 4 baseline.\n// - Result<T, E> = binary tag union ('ok' / 'err'), per AGENTS.md \"Errors are\n// structured\" convention.\n//\n// Related: requirements AC AC-10 + MVP-1.7 + AC-RSC-07 + hard-constraint 8 +\n// AI User Affordances; plan-strategy 2 S-6 (types/rhi single source) +\n// 7.3 error-info table; plan-decisions OQ-P2 (forward all 6 fields of\n// GPUCompilationMessage); D-S3 (4 command/queue members) + D-S6 / D-S7\n// / D-S8 (4 RenderSystem / AssetRegistry members + .detail structure).\n\n/// <reference types=\"@webgpu/types\" />\n\nimport { err, ok, type Result } from '@forgeax/engine-types';\n\n/**\n * Closed RhiErrorCode union. `switch` exhaustive checks need no default\n * fallback - tsc strict mode guards union completeness (charter proposition 4\n * + proposition 3: machine-readable union > prose).\n *\n *\n * The executable union below is the machine-readable source of truth for\n * the 23 members. The package README owns the AI-facing trigger and recovery\n * table; keeping that projection in one documentation owner avoids a second\n * member ledger drifting from the union.\n *\n * @example AI-user exhaustive switch on the 4 command/queue members (no default fallback)\n * ```ts\n * import type { RhiError, RhiErrorCode } from '@forgeax/engine-rhi';\n *\n * function recover(code: RhiErrorCode): string {\n * switch (code) {\n * // ... 6 baseline members elided ...\n * case 'command-encoder-finished': return 'recreate encoder via device.createCommandEncoder()';\n * case 'render-pass-not-ended': return 'call pass.end() before next beginRenderPass()';\n * case 'queue-submit-failed': return 'audit buffer/pipeline lifetimes before submit';\n * case 'queue-write-buffer-out-of-bounds': return 'realign offset and re-check buffer.size';\n * default: return 'baseline path';\n * }\n * }\n * ```\n */\nexport type RhiErrorCode =\n | 'adapter-unavailable'\n | 'feature-not-enabled'\n | 'limit-exceeded'\n | 'shader-compile-failed'\n | 'rhi-not-available'\n | 'webgpu-runtime-error'\n | 'command-encoder-finished'\n | 'render-pass-not-ended'\n | 'queue-submit-failed'\n | 'queue-write-buffer-out-of-bounds'\n | 'render-system-no-camera'\n | 'render-system-multi-camera'\n | 'render-system-multi-light'\n | 'asset-not-registered'\n | 'device-lost'\n | 'oom'\n | 'internal-error'\n | 'hierarchy-broken'\n | 'destroy-after-destroy'\n | 'rhi-descriptor-invalid'\n | 'instancing-exceeds-uniform-cap'\n | 'render-system-empty-worlds'\n | 'render-system-owner-out-of-range'\n | 'rhi-texture-format-capability-unavailable';\n\n/**\n * Detail structure exclusive to the `shader-compile-failed` path.\n *\n * `compilerMessages` directly forwards the 6 standardized fields of\n * `GPUCompilationMessage` from `@webgpu/types` v0.1.69 (`message` / `type` /\n * `lineNum` / `linePos` / `offset` / `length`); research F-3 finding;\n * plan-decisions OQ-P2 locks full-field forwarding.\n *\n * @see {@link GPUCompilationMessage}\n */\nexport interface RhiShaderCompileDetail {\n readonly compilerMessages: readonly GPUCompilationMessage[];\n}\n\n/**\n * Detail structure exclusive to the `asset-not-registered` path (D-S6).\n *\n * `assetHandle` carries the offending u32 handle the caller passed via\n * `MeshFilter.assetHandle`; AI users access it through property access\n * (`err.detail.assetHandle`) rather than parsing the message string\n * (charter proposition 4 + F-3 contract surface).\n */\nexport interface RhiAssetNotRegisteredDetail {\n readonly assetHandle: number;\n}\n\n/**\n * Detail structure exclusive to the `webgpu-runtime-error` path (D-S8).\n *\n * `error` carries the underlying exception object so AI users can inspect the\n * root cause (`.code` / `.expected` / `.hint` for `RhiError` paths, or\n * `.code` + `.message` for non-RhiError falls) without parsing the\n * RhiError.message field. Optional: the K-9 silent-skip fan-out root path\n * may emit `webgpu-runtime-error` without `.detail` when the underlying\n * exception is unavailable.\n *\n * feat-20260608-mesh-ssbo-dynamic-grow-l1-lift-1024-entity-cap M4 / T-M4-02:\n * `error` field type widened from `string` to `RhiError | { code: string;\n * message: string }` so downstream `switch (err.code)` handlers can narrow\n * the inner error (`.code` / `.expected` / `.hint`) without an `as` cast.\n */\nexport interface RhiWebgpuRuntimeDetail {\n readonly error: RhiError | { code: string; message: string; name?: string };\n}\n\n/**\n * Detail structure exclusive to the `limit-exceeded` path.\n *\n * `maxStorageBufferBindingSize` carries the device-reported storage cap\n * (`device.limits.maxStorageBufferBindingSize`); `requestedBytes`\n * carries the byte count the caller attempted to allocate. AI users\n * access these through typed property access (`err.detail.maxStorageBufferBindingSize`\n * / `err.detail.requestedBytes`) rather than parsing the message string\n * — charter proposition 4 structured-error consumption path; `err.hint`\n * is for human eyeballs only.\n *\n * Single live emit point: the RenderSystem record stage per-entity\n * instance buffer upload path\n * (`packages/runtime/src/render-system-record.ts`). The 18-member\n * `RhiErrorCode` union is unchanged (`'limit-exceeded'` discriminant\n * preserved); evolution major rename + replace of the discriminated\n * `detail` shape per AGENTS.md Change stance + plan-strategy D-3.\n *\n * Migration history:\n * - feat-20260513-instanced-mesh M5: detail reshape from\n * `{ renderableCount, limit }` to `{ maxStorageBufferBindingSize,\n * requestedBytes }`. Emit point at the time was\n * `AssetRegistry.createInstancedBuffer`.\n * - feat-20260514-ecs-children-instances-managed-buffer-array M3 / w15:\n * `AssetRegistry.createInstancedBuffer` deleted alongside the\n * `InstancedBufferAsset` POD; emit point migrated to the record\n * stage upload path (`requestedBytes` now equals\n * `Instances.transforms.byteLength` per Instances-bearing entity).\n */\nexport interface LimitExceededDetail {\n readonly maxStorageBufferBindingSize: number;\n readonly requestedBytes: number;\n}\n\n/**\n * Detail structure exclusive to the `'render-system-multi-light'` path.\n * The only remaining cardinality rule is one global DirectionalLight; all\n * PointLight, SpotLight, and RectArea lights are admitted through the shared\n * shared Cluster corpus and are admitted by the same local-light contract.\n */\nexport interface RhiMultiLightDetail {\n readonly type: 'directional';\n readonly got: number;\n}\n\n/**\n * Detail structure exclusive to the `'instancing-exceeds-uniform-cap'` path\n * (feat-20260622-chunk-gpu-instancing-sprite-tilemap M2 / w10 +\n * plan-strategy 2 D-2 + research N-1).\n *\n * Emitted by the record-stage fold dispatch loop\n * (`packages/runtime/src/render-system-record.ts`) when\n * `caps.storageBuffer === false` AND a fold bucket carries more than\n * `limit` instances. The engine fires the error AND falls the offending\n * bucket back to per-entity drawIndexed via the same exit the mode-gate\n * bypass uses (plan-strategy D-9 \"shared fallback exit\"), so the frame\n * is still visually correct (no identity-collapse / black screen) and\n * the cap event surfaces structurally for AI users to observe.\n *\n * Fields:\n * - `requested` — the offending bucket's instance count\n * (`FoldBucket.bucketSize`); always strictly greater than `limit` at\n * emit time (the cap-check helper guards `requested > limit`).\n * - `limit` — the literal 128. The value is locked at the type level\n * because the cap is structurally tied to the WebGL2 minimum 16384 B\n * UBO size (128 * 64 B mat4 stride = 8192 B leaves headroom for the\n * per-frame material UBO slice — research N-1). A future cap change\n * would be a major evolution, not a runtime knob.\n * - `scope` — closed `'sprite' | 'tilemap-chunk'` discriminator that\n * pinpoints the dispatch site (sprite-pass entry that came directly\n * from a user-spawned Sprite vs one derived by\n * `tilemap-chunk-extract-system`). AI users branch on `.scope` to\n * decide whether to shrink the sprite batch size or the tilemap\n * chunk size.\n *\n * AI-user consumption (charter P3 + plan-strategy 8.3):\n * ```ts\n * if (err.code === 'instancing-exceeds-uniform-cap') {\n * const d = err.detail as RhiInstancingExceedsUniformCapDetail;\n * if (d.scope === 'sprite') shrinkSpriteBatchSize(d.requested);\n * else if (d.scope === 'tilemap-chunk') shrinkTileChunkSize(d.requested);\n * }\n * ```\n * — never parse `err.message`. The discriminated `detail` field is the\n * surface; the human-readable `err.message` is for logs only.\n */\nexport interface RhiInstancingExceedsUniformCapDetail {\n readonly requested: number;\n readonly limit: 128;\n readonly scope: 'sprite' | 'tilemap-chunk';\n}\n\n/**\n * Detail structure exclusive to the `'render-system-owner-out-of-range'` path\n * (feat-20260708-composited-multi-world-rendering M3 / D-5).\n *\n * Emitted by `renderer.draw(worlds, { cameraOwner, resourceOwner })` when one\n * owner index is not valid for `worlds` (`owner < 0` or `owner >= worlds.length`).\n * An out-of-range index cannot resolve, so the frame is skipped before extract.\n *\n * Fields:\n * - `role` — WHICH of the two draw-owner indices was out of range\n * (feat-20260709-editor-world-partition M1 / w7). `draw(worlds, {\n * cameraOwner, resourceOwner })` carries two independent indices; `role`\n * tells the AI user whether the camera-source index (`'camera'`) or the\n * singleton-resource index (`'resource'`) is the offender, so the fix is\n * unambiguous from the text channel (no new error code — D-3 keeps 0 net\n * new codes; the discriminator lives in `.detail`). When both indices are\n * out of range the first offender is reported: `cameraOwner` is validated\n * before `resourceOwner`, so `role === 'camera'`.\n * - `owner` — the offending index the caller passed (the `role` index's\n * value).\n * - `worldCount` — `worlds.length` at call time (the valid range is\n * `0 .. worldCount - 1`).\n *\n * AI users branch via property access (`err.detail.role` / `err.detail.owner` /\n * `err.detail.worldCount`) after narrowing on `.code`, rather than parsing the\n * message string (charter P3 structured-failure surface).\n *\n * The sibling `'render-system-empty-worlds'` path carries no `.detail` — an\n * empty array is fully described by `.code`, and the entry check short-circuits\n * to that code before the owner-range check runs (the two codes are\n * non-exclusive).\n */\nexport interface RhiOwnerOutOfRangeDetail {\n readonly role: 'camera' | 'resource';\n readonly owner: number;\n readonly worldCount: number;\n}\n\n/** Detail for an incomplete device-owned texture-format profile probe. */\nexport interface RhiTextureFormatCapabilityUnavailableDetail {\n readonly stage: string;\n readonly deviceGeneration: number;\n readonly reason: string;\n}\n\n/**\n * Tagged union of `.detail` shapes carried by structured errors.\n *\n * Entries:\n * - `RhiShaderCompileDetail` (carries `compilerMessages`) - emitted on the\n * `'shader-compile-failed'` path.\n * - `RhiAssetNotRegisteredDetail` (carries `assetHandle`) - emitted on the\n * `'asset-not-registered'` path (D-S6).\n * - `RhiWebgpuRuntimeDetail` (carries `error: RhiError | { code, message }`) - optionally emitted\n * on the `'webgpu-runtime-error'` path when a captured `Error.message` is\n * available (D-S8).\n * - `LimitExceededDetail` (carries `maxStorageBufferBindingSize` +\n * `requestedBytes`) - emitted on the `'limit-exceeded'` path when\n * the RenderSystem record stage's per-entity Instances upload\n * exceeds `device.limits.maxStorageBufferBindingSize`\n * (feat-20260514-ecs-children-instances-managed-buffer-array M3 / w15;\n * emit point migrated from the deleted\n * `AssetRegistry.createInstancedBuffer` factory).\n *\n * The other 15 paths leave `.detail = undefined` (charter proposition 4\n * baseline).\n */\nexport type RhiErrorDetail =\n | RhiShaderCompileDetail\n | RhiAssetNotRegisteredDetail\n | RhiWebgpuRuntimeDetail\n | LimitExceededDetail\n | RhiMultiLightDetail\n | RhiInstancingExceedsUniformCapDetail\n | RhiOwnerOutOfRangeDetail\n | RhiTextureFormatCapabilityUnavailableDetail;\n\n/**\n * Structured RHI error.\n *\n * Three readonly fields aligned with AGENTS.md \"Errors are structured\":\n * - `.code` - closed union member (L1 key signal).\n * - `.expected` - expected-state description (L2 detail).\n * - `.hint` - actionable recovery guidance (L2 detail; charter proposition 3:\n * machine-readable hint > prose).\n *\n * `.detail` is populated on four paths:\n * - `code === 'shader-compile-failed'` -> `RhiShaderCompileDetail`\n * - `code === 'asset-not-registered'` -> `RhiAssetNotRegisteredDetail`\n * - `code === 'webgpu-runtime-error'` -> `RhiWebgpuRuntimeDetail` (optional)\n * - `code === 'limit-exceeded'` -> `LimitExceededDetail`\n * (feat-20260513-instanced-mesh M5 reshape; carries\n * `maxStorageBufferBindingSize` + `requestedBytes`)\n *\n * The other 15 paths leave `.detail = undefined` (charter proposition 4\n * baseline).\n *\n * Note: `RhiErrorDetail` is currently a flat tagged union without a\n * `code` discriminant field on each variant; AI users perform typed\n * narrowing via outer `switch (err.code)` then a one-time `as` cast on\n * `err.detail` per the documented variant. Full discriminated-union\n * refactor (each variant carrying its own `code` literal field) is left\n * to `feat-future-rhi-error-detail-discriminant` spinoff.\n */\nexport class RhiError extends Error {\n readonly code: RhiErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: RhiErrorDetail | undefined;\n\n constructor(args: {\n code: RhiErrorCode;\n expected: string;\n hint: string;\n detail?: RhiErrorDetail | undefined;\n }) {\n super(`[RhiError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'RhiError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n\n/**\n * The two split draw-owner indices carried by\n * `draw(worlds, { cameraOwner, resourceOwner })`\n * (feat-20260709-editor-world-partition M1 / w6). `cameraOwner` selects the\n * world whose cameras are surfaced; `resourceOwner` selects the world whose\n * skylight / skybox / postProcessParams are surfaced. Declared here (World-free\n * primitives) so the validator and the `RhiOwnerOutOfRangeDetail.role`\n * discriminator live in one SSOT package (architecture-principles §1).\n */\nexport interface DrawOwnerSplit {\n readonly cameraOwner: number;\n readonly resourceOwner: number;\n}\n\n/**\n * Validate `renderer.draw(worlds, { cameraOwner, resourceOwner })` arguments at\n * the draw entry (feat-20260708 M3 / D-5, extended by\n * feat-20260709-editor-world-partition M1 / w6-w7).\n *\n * The validator takes primitives (`worldCount = worlds.length`, plus the owner\n * index/indices) — no `World`, no math — so it lives in `@forgeax/engine-rhi`\n * alongside the `RhiErrorCode` members it emits (architecture-principles §1\n * SSOT). The runtime `createRenderer` draw entry calls it before any extract; a\n * non-`ok` result skips the frame with a structured error (charter P3), never a\n * silent no-op.\n *\n * Checks, in order (D-5 + w6):\n * 1. `worldCount === 0` -> `'render-system-empty-worlds'` (no `.detail`).\n * 2. `cameraOwner` is not a valid index -> `'render-system-owner-out-of-range'`\n * with `.detail = { role: 'camera', owner: cameraOwner, worldCount }`.\n * 3. `resourceOwner` is not a valid index -> `'render-system-owner-out-of-range'`\n * with `.detail = { role: 'resource', owner: resourceOwner, worldCount }`.\n * The `Number.isInteger` guard rejects a `NaN` / fractional / undefined-coerced\n * index a JS caller could pass despite the compile-time requirement. When both\n * indices are out of range the FIRST offender wins: `cameraOwner` is checked\n * before `resourceOwner`, so `role === 'camera'` (D-3 / w3 contract).\n *\n * The empty-worlds guard short-circuits before either owner-range check.\n */\nexport function validateDrawArgs(\n worldCount: number,\n owner: DrawOwnerSplit,\n): Result<void, RhiError> {\n if (worldCount === 0) {\n return err(\n new RhiError({\n code: 'render-system-empty-worlds',\n expected: 'worlds array has at least one world',\n hint: 'pass at least one world: draw([world], { cameraOwner: 0, resourceOwner: 0 })',\n }),\n );\n }\n const { cameraOwner, resourceOwner } = owner;\n const outOfRange = (index: number): boolean =>\n !Number.isInteger(index) || index < 0 || index >= worldCount;\n // cameraOwner is validated first: it is the first offender when both indices\n // are out of range (w3 contract). role names which index the AI user fixes.\n if (outOfRange(cameraOwner)) {\n return err(\n new RhiError({\n code: 'render-system-owner-out-of-range',\n expected: 'cameraOwner is an index into worlds (0 <= cameraOwner < worlds.length)',\n hint: 'cameraOwner must be in 0..worlds.length-1; the cameraOwner world supplies the surfaced cameras',\n detail: { role: 'camera', owner: cameraOwner, worldCount },\n }),\n );\n }\n if (outOfRange(resourceOwner)) {\n return err(\n new RhiError({\n code: 'render-system-owner-out-of-range',\n expected: 'resourceOwner is an index into worlds (0 <= resourceOwner < worlds.length)',\n hint: 'resourceOwner must be in 0..worlds.length-1; the resourceOwner world supplies skylight/skybox/postProcess',\n detail: { role: 'resource', owner: resourceOwner, worldCount },\n }),\n );\n }\n return ok(undefined);\n}\n\n// Result<T, E> + ok / err live in `@forgeax/engine-types` (tweak-20260612-result-\n// into-types). They were duplicated here (\"byte-for-byte aligned\" by prose) and\n// in packages/ecs/src/result.ts; SSOT consolidated upstream. The barrel here\n// re-exports them so existing `import { err, ok, Result, ResultOk, ResultErr }\n// from '@forgeax/engine-rhi'` consumers stay unchanged.\nexport {\n err,\n ok,\n type Result,\n type ResultErr,\n type ResultOk,\n} from '@forgeax/engine-types';\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AddressMode, CompareFunction, FilterMode, TextureFormat } from '@forgeax/engine-types';
|
|
2
|
+
import type { RhiTextureFormatCapabilityReceipt } from './capability/texture-format';
|
|
2
3
|
import type { Result, RhiError } from './errors';
|
|
3
4
|
declare const RhiBufferBrand: unique symbol;
|
|
4
5
|
declare const RhiMappedBufferBrand: unique symbol;
|
|
@@ -130,6 +131,20 @@ declare const RhiTextureBrand: unique symbol;
|
|
|
130
131
|
export interface Texture {
|
|
131
132
|
readonly [RhiTextureBrand]: void;
|
|
132
133
|
}
|
|
134
|
+
/** RHI-safe source for a texture-to-buffer copy. */
|
|
135
|
+
export interface TextureCopySource {
|
|
136
|
+
readonly texture: Texture;
|
|
137
|
+
readonly mipLevel?: number | undefined;
|
|
138
|
+
readonly origin?: GPUOrigin3D | undefined;
|
|
139
|
+
readonly aspect?: GPUTextureAspect | undefined;
|
|
140
|
+
}
|
|
141
|
+
/** RHI-safe destination for a texture-to-buffer copy. */
|
|
142
|
+
export interface BufferCopyDestination {
|
|
143
|
+
readonly buffer: Buffer;
|
|
144
|
+
readonly offset?: number | undefined;
|
|
145
|
+
readonly bytesPerRow: number;
|
|
146
|
+
readonly rowsPerImage?: number | undefined;
|
|
147
|
+
}
|
|
133
148
|
/** RHI-owned destination for queue.writeTexture. The resource handle remains opaque. */
|
|
134
149
|
export interface TextureWriteDestination {
|
|
135
150
|
readonly texture: Texture;
|
|
@@ -807,7 +822,7 @@ export interface RhiCaps {
|
|
|
807
822
|
* spec minimum = 4, defaults to 8 on mainstream backends.
|
|
808
823
|
* HDRP deferred pipeline requires >= 4 (3 g-buffer RT + 1 depth);
|
|
809
824
|
* installPipeline checks this cap at install time and throws
|
|
810
|
-
*
|
|
825
|
+
* a structured Standard transport refusal on violation (charter P3).
|
|
811
826
|
* @note add-only minor (feat-20260612-hdrp-deferred-shading-learn-render-5-8
|
|
812
827
|
* M1 / w5); no existing field is modified.
|
|
813
828
|
*/
|
|
@@ -1109,6 +1124,8 @@ export interface RhiDevice {
|
|
|
1109
1124
|
readonly features: RhiFeatures;
|
|
1110
1125
|
/** Numeric-limits layer. */
|
|
1111
1126
|
readonly limits: RhiLimits;
|
|
1127
|
+
/** Probe the complete r32float sampled/storage/readback profile once per device generation. */
|
|
1128
|
+
probeTextureFormatCapability(): Promise<Result<RhiTextureFormatCapabilityReceipt, RhiError>>;
|
|
1112
1129
|
/** Create GPU buffer. */
|
|
1113
1130
|
createBuffer(desc: BufferDescriptor): Result<Buffer, RhiError>;
|
|
1114
1131
|
/** Create GPU texture. */
|
|
@@ -1368,7 +1385,8 @@ export interface RhiQueue {
|
|
|
1368
1385
|
/** GPU command encoder - records render / compute passes + resource copies.
|
|
1369
1386
|
*
|
|
1370
1387
|
* Method NAMES align byte-for-byte with `@webgpu/types.GPUCommandEncoder` +
|
|
1371
|
-
* `GPUDebugCommandsMixin` (research F-1 / D-S4). 12 methods
|
|
1388
|
+
* `GPUDebugCommandsMixin` (research F-1 / D-S4). 12 spec methods plus one
|
|
1389
|
+
* ForgeaX compound operation:
|
|
1372
1390
|
* - 9 direct: beginRenderPass / beginComputePass / copyBufferToBuffer /
|
|
1373
1391
|
* copyBufferToTexture / copyTextureToBuffer / copyTextureToTexture /
|
|
1374
1392
|
* clearBuffer / resolveQuerySet / finish
|
|
@@ -1399,6 +1417,17 @@ export interface RhiCommandEncoder {
|
|
|
1399
1417
|
* const pass = encoder.beginComputePass();
|
|
1400
1418
|
*/
|
|
1401
1419
|
beginComputePass(desc?: ComputePassDescriptor | undefined): RhiComputePassEncoder;
|
|
1420
|
+
/**
|
|
1421
|
+
* Record an empty timestamp-enabled compute pass and close it immediately.
|
|
1422
|
+
*
|
|
1423
|
+
* This is a ForgeaX compound recording operation equivalent to
|
|
1424
|
+
* `const pass = encoder.beginComputePass(desc); pass.end()`; it is not a
|
|
1425
|
+
* native `GPUCommandEncoder` method and does not write a timestamp directly.
|
|
1426
|
+
*
|
|
1427
|
+
* @throws RhiError code === 'command-encoder-finished' when invoked on a
|
|
1428
|
+
* finished encoder.
|
|
1429
|
+
*/
|
|
1430
|
+
encodeEmptyComputePass(desc: ComputePassDescriptor): void;
|
|
1402
1431
|
/** Copy a sub-region of a Buffer to another Buffer (5-arg full form).
|
|
1403
1432
|
*
|
|
1404
1433
|
* Spec anchor: [@webgpu/types.GPUCommandEncoder.copyBufferToBuffer].
|
|
@@ -1435,6 +1464,10 @@ export interface RhiCommandEncoder {
|
|
|
1435
1464
|
* encoder.copyTextureToBuffer(srcInfo, dstInfo, [w, h, 1]);
|
|
1436
1465
|
*/
|
|
1437
1466
|
copyTextureToBuffer(source: GPUTexelCopyTextureInfo, destination: GPUTexelCopyBufferInfo, copySize: GPUExtent3DStrict): void;
|
|
1467
|
+
/** Opaque RHI handle form for renderer-owned readback. */
|
|
1468
|
+
copyTextureToBuffer(source: TextureCopySource, destination: BufferCopyDestination, copySize: GPUExtent3DStrict): void;
|
|
1469
|
+
/** Union form for decorators that transparently forward either handle form. */
|
|
1470
|
+
copyTextureToBuffer(source: GPUTexelCopyTextureInfo | TextureCopySource, destination: GPUTexelCopyBufferInfo | BufferCopyDestination, copySize: GPUExtent3DStrict): void;
|
|
1438
1471
|
/** Copy a Texture sub-region to a Texture sub-region.
|
|
1439
1472
|
*
|
|
1440
1473
|
* Spec anchor: [@webgpu/types.GPUCommandEncoder.copyTextureToTexture].
|
|
@@ -1471,32 +1504,6 @@ export interface RhiCommandEncoder {
|
|
|
1471
1504
|
* }
|
|
1472
1505
|
*/
|
|
1473
1506
|
resolveQuerySet(querySet: QuerySet, firstQuery: number, queryCount: number, destination: Buffer, destinationOffset: number): Result<void, RhiError>;
|
|
1474
|
-
/**
|
|
1475
|
-
* Write a u64 GPU timestamp into a timestamp QuerySet at queryIndex.
|
|
1476
|
-
*
|
|
1477
|
-
* Spec anchor: W3C WebGPU §queries / [@webgpu/types.GPUCommandEncoder].
|
|
1478
|
-
* dawn `TimestampOnCommandEncoder` reference (research §2.4): the entry is
|
|
1479
|
-
* gated on the `'timestamp-query'` device feature. K-3 decision
|
|
1480
|
-
* (plan-strategy §2): the forgeax form ships ONLY this CommandEncoder
|
|
1481
|
-
* entry; CPE/RPE inside-pass timestamp writes are deferred to
|
|
1482
|
-
* `feat-future-rhi-perf-timestamp-pass` (additive minor evolution).
|
|
1483
|
-
*
|
|
1484
|
-
* Return shape: `void` per spec literal alignment. When
|
|
1485
|
-
* `caps.timestampQuery === false` the shim fans out a structured
|
|
1486
|
-
* `'feature-not-enabled'` RhiError through the engine `onError` channel
|
|
1487
|
-
* (the forgeax form keeps the spec void return; AI users probe the gate
|
|
1488
|
-
* via `device.caps.timestampQuery` BEFORE calling this entry, charter
|
|
1489
|
-
* proposition 4 explicit failure forward-reachable).
|
|
1490
|
-
*
|
|
1491
|
-
* @throws RhiError code === 'command-encoder-finished' when invoked on a finished encoder (dual-channel; see beginRenderPass JSDoc for the recovery pattern).
|
|
1492
|
-
* @example
|
|
1493
|
-
* if (device.caps.timestampQuery) {
|
|
1494
|
-
* encoder.writeTimestamp(qs, 0);
|
|
1495
|
-
* // ... draw / dispatch ...
|
|
1496
|
-
* encoder.writeTimestamp(qs, 1);
|
|
1497
|
-
* }
|
|
1498
|
-
*/
|
|
1499
|
-
writeTimestamp(querySet: QuerySet, queryIndex: number): void;
|
|
1500
1507
|
/** Push a labelled debug group (GPUDebugCommandsMixin).
|
|
1501
1508
|
*
|
|
1502
1509
|
* Spec anchor: [@webgpu/types.GPUDebugCommandsMixin.pushDebugGroup].
|
|
@@ -1733,6 +1740,7 @@ export interface RhiComputePipelineOps {
|
|
|
1733
1740
|
/** Get bind group layout. */
|
|
1734
1741
|
getBindGroupLayout(index: number): BindGroupLayout;
|
|
1735
1742
|
}
|
|
1743
|
+
export { type CreateUnavailableR32FloatReceiptOptions, createUnavailableR32FloatReceipt, R32FLOAT_MIP_SAMPLED_STORAGE_PROFILE, R32FLOAT_PROBE_STAGES, type RhiTextureFormatCapabilityReceipt, type RhiTextureFormatProbeEvidence, type RhiTextureFormatProbeStage, type RhiTextureFormatProbeStageReceipt, type RhiTextureFormatProbeVerdict, type RhiTextureFormatReadback, validateR32FloatReceipt, } from './capability/texture-format';
|
|
1736
1744
|
export type { DrawOwnerSplit, LimitExceededDetail, Result, ResultErr, ResultOk, RhiAssetNotRegisteredDetail, RhiErrorCode, RhiErrorDetail, RhiOwnerOutOfRangeDetail, RhiShaderCompileDetail, RhiWebgpuRuntimeDetail, } from './errors';
|
|
1737
1745
|
export { err, ok, RhiError, validateDrawArgs } from './errors';
|
|
1738
1746
|
export type { AddressMode, CompareFunction, FilterMode, TextureFormat };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAcjD,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAC5C,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,QAAQ,CACN,IAAI,EAAE,eAAe,EACrB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC;IACtC;;;;;;;;;;OAUG;IACH,cAAc,CACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjC;;;;;;;;;;;;;;;OAeG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAC7C,0DAA0D;AAC1D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC;AAED,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAChD;AAED,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,wFAAwF;AACxF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAChD;AAED,kEAAkE;AAClE,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,IAAI,CACF,4BAA4B,EAC5B,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,oBAAoB,CACnF,EACD,SAAS,CACV,GAAG;IACF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,OAAO,CAAC,MAAM,mBAAmB,EAAE,OAAO,MAAM,CAAC;AACjD,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC;CACtC;AAED,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAC7C,iCAAiC;AACjC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC;AAED,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AAC/C,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;CACpC;AAED,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,MAAM,CAAC;AACrD,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC;CAC1C;AAED,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,MAAM,CAAC;AACpD,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC;CACzC;AAED,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,MAAM,CAAC;AACpD,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC;CACzC;AAED,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,MAAM,CAAC;AACrD,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC;CAC1C;AAED,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAC;AAClD,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC;CACvC;AAED,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAC9C,2DAA2D;AAC3D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACnC;AAED,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,sDAAsD;AACtD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CAChC;AAED,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,MAAM,CAAC;AACpD,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC;CACzC;AAED,OAAO,CAAC,MAAM,qBAAqB,EAAE,OAAO,MAAM,CAAC;AACnD,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;CACxC;AAoBD;;;;;;GAMG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAC;AAEjE;8CAC8C;AAC9C,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAC9C,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,kBAAkB,CAAC,CAC3E,CAAC;AAEF;0CAC0C;AAC1C,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAC/C,IAAI,CACF,oBAAoB,EAClB,OAAO,GACP,MAAM,GACN,eAAe,GACf,aAAa,GACb,WAAW,GACX,QAAQ,GACR,OAAO,GACP,aAAa,GACb,6BAA6B,CAChC,CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAC/C,IAAI,CACF,oBAAoB,EAClB,OAAO,GACP,cAAc,GACd,cAAc,GACd,cAAc,GACd,WAAW,GACX,WAAW,GACX,cAAc,GACd,aAAa,GACb,aAAa,GACb,SAAS,GACT,eAAe,CAClB,CACF,CAAC;AAEF;oCACoC;AACpC,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CACvD,IAAI,CAAC,4BAA4B,EAAE,OAAO,GAAG,SAAS,CAAC,CACxD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CACnD,IAAI,CACF,wBAAwB,EACtB,OAAO,GACP,QAAQ,GACR,WAAW,GACX,OAAO,GACP,QAAQ,GACR,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,iBAAiB,CACpB,CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CACvD,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAC/F,GAAG;IACF;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC;;;;;OAKG;IACH,OAAO,EAAE;QACP,MAAM,EAAE,YAAY,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KAChD,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAChD,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CACxD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG;IAChE,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CACjD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CACzF,GAAG;IACF;;;;;OAKG;IACH,MAAM,EAAE,eAAe,CAAC;IACxB;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CACtD,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAC1F,GAAG;IACF;;;;OAIG;IACH,gBAAgB,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;CAC7C,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CACvD,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,SAAS,CAAC,CAC3C,GAAG;IACF,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;CACjD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,CACzD,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC,CAC7C,GAAG;IACF,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CACtD,IAAI,CACF,IAAI,CACF,2BAA2B,EAC3B,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,CAC1F,EACD,QAAQ,GAAG,QAAQ,GAAG,UAAU,CACjC,CACF,GAAG;IACF,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;CACpD,CAAC;AAwBF;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CACtD,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CACvD,IAAI,CACF,IAAI,CACF,4BAA4B,EAC5B,MAAM,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAC9E,EACD,MAAM,GAAG,eAAe,CACzB,CACF,GAAG;IACF;;;;OAIG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gCAAgC,GAAG,iBAAiB,CAC9D,IAAI,CACF,IAAI,CACF,mCAAmC,EACjC,MAAM,GACN,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,eAAe,GACf,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,CACpB,EACD,MAAM,CACP,CACF,GAAG;IACF;;;OAGG;IACH,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAClD,IAAI,CACF,IAAI,CACF,uBAAuB,EACrB,OAAO,GACP,kBAAkB,GAClB,wBAAwB,GACxB,mBAAmB,GACnB,iBAAiB,GACjB,cAAc,CACjB,EACD,kBAAkB,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,iBAAiB,CACxF,CACF,GAAG;IACF;;;;OAIG;IACH,gBAAgB,EAAE,QAAQ,CAAC,yBAAyB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACzE,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,gCAAgC,GAAG,SAAS,CAAC;IACtE;;;;;;wDAMoD;IACpD,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,sEAAsE;IACtE,eAAe,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,QAAQ,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CACnD,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,GAAG,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,CACrF,GAAG;IACF,eAAe,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;CAC1D,CAAC;AAEF,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAWD,+DAA+D;AAC/D,MAAM,WAAW,OAAO;IACtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAC;IACxE,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW,CAAC,cAAc,CAAC;CAG/D;AAED;8BAC8B;AAC9B,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AA2CrD;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CACnD,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,GAAG,sBAAsB,CAAC,CAC3E,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAClD,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,CAC3E,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CACZ,IAAI,CAAC,EAAE,qBAAqB,GAAG,SAAS,EACxC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAAG,SAAS,GAClE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC/C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC9F;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CACjD,IAAI,CACF,IAAI,CACF,sBAAsB,EACtB,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,CAC3F,EACD,QAAQ,CACT,CACF,GAAG;IACF;;;;OAIG;IACH,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAC7C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,oFAAoF;AACpF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC;IACrD,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC;CACtD;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iCAAiC,CAAC;IAC/D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;;;;;;;OAQG;IACH,gBAAgB,IAAI,mBAAmB,GAAG,SAAS,CAAC;IACpD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAAiB,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;CAChD;AAED,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAE3B,+FAA+F;IAC/F,4BAA4B,IAAI,OAAO,CAAC,MAAM,CAAC,iCAAiC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7F,yBAAyB;IACzB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,0BAA0B;IAC1B,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD;;;;;;;OAOG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChG,8DAA8D;IAC9D,aAAa,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/E,gCAAgC;IAChC,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC1F;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxE;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvF,iDAAiD;IACjD,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC1F;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAErE;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAClB,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,GAC1C,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAWvC,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAEzB;;;;OAIG;IAIH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG;AAED;wDACwD;AACxD,MAAM,WAAW,QAAQ;IACvB,mEAAmE;IACnE,WAAW,CACT,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,eAAe,GAAG,WAAW,EACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,CACV,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAE,eAAe,GAAG,WAAW,EACnC,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,QAAQ,GAAG,aAAa,GAAG,cAAc,CAAC,EACrF,IAAI,EAAE,iBAAiB,GACtB,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1B;;;;;;;;;;;OAWG;IACH,0BAA0B,CACxB,MAAM,EAAE,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,EAC3E,WAAW,EAAE,+BAA+B,EAC5C,QAAQ,EAAE,iBAAiB,GAC1B,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1B,2CAA2C;IAC3C,MAAM,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzE;;;;;;;;;;;;;;;;;;;;OAoBG;IAIH,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,CAAC;IAClE;;;;;;;OAOG;IACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,qBAAqB,CAAC;IAClF;;;;;;;;;OASG;IACH,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1D;;;;;;;OAOG;IACH,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,MAAM,GACX,IAAI,CAAC;IACR;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzF;;;;;;;OAOG;IACH,mBAAmB,CACjB,MAAM,EAAE,sBAAsB,EAC9B,WAAW,EAAE,uBAAuB,EACpC,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CAAC;IACR;;;;;;;OAOG;IACH,mBAAmB,CACjB,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,sBAAsB,EACnC,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CAAC;IACR,0DAA0D;IAC1D,mBAAmB,CACjB,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CAAC;IACR,+EAA+E;IAC/E,mBAAmB,CACjB,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,EACnD,WAAW,EAAE,sBAAsB,GAAG,qBAAqB,EAC3D,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CAAC;IACR;;;;;;;OAOG;IACH,oBAAoB,CAClB,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,uBAAuB,EACpC,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CAAC;IACR;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1F;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1B;;;;;;;OAOG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;;;;;;OAOG;IACH,aAAa,IAAI,IAAI,CAAC;IACtB;;;;;;;OAOG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C;;;;;;;;OAQG;IACH,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,oBAAoB;IAEnC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,IAAI,CAAC;IACR;;;;;OAKG;IACH,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,IAAI,CAAC;IACR;;;;;OAKG;IACH,YAAY,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC7C,IAAI,CAAC;IACR;;;;;;OAMG;IACH,YAAY,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,WAAW,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,MAAM,GAC/B,IAAI,CAAC;IACR;;;;;OAKG;IACH,IAAI,CACF,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,EAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACjC,IAAI,CAAC;IACR;;;;;OAKG;IACH,WAAW,CACT,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GACjC,IAAI,CAAC;IACR;;;;;OAKG;IACH,GAAG,IAAI,IAAI,CAAC;IAGZ;;;;;OAKG;IACH,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAClG;;;;;OAKG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjE;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACnE;;;;;OAKG;IACH,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E;;;;;;OAMG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,aAAa,IAAI,IAAI,CAAC;IACtB;;;;;;OAMG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG7C;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnE;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChE;;;;;;;;;;OAUG;IACH,iBAAiB,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC7C;AAED,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,YAAY,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC7C,IAAI,CAAC;IACR,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACpF,wFAAwF;IACxF,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACjF,GAAG,IAAI,IAAI,CAAC;CACb;AAED,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC;CACpD;AAED,uCAAuC;AACvC,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC;CACpD;AAMD,OAAO,EACL,KAAK,uCAAuC,EAC5C,gCAAgC,EAChC,oCAAoC,EACpC,qBAAqB,EACrB,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,QAAQ,EACR,2BAA2B,EAC3B,YAAY,EACZ,cAAc,EACd,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG/D,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAaxE;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,MAAY,EACtB,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAA4E,GAClF,iBAAiB,CAOnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,IAAI,iBAAiB,CAS/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAUvB"}
|