opengeometry 2.0.17 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/LICENSE.md +373 -0
  2. package/README.md +187 -128
  3. package/body-registry-MbAD6Hyq.js +3159 -0
  4. package/body-registry-MbAD6Hyq.js.map +1 -0
  5. package/index.d.ts +18 -115
  6. package/index.js +1170 -11687
  7. package/index.js.map +1 -1
  8. package/opengeometry/pkg/opengeometry.d.ts +144 -1304
  9. package/opengeometry/pkg/opengeometry.js +1316 -5803
  10. package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
  11. package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +62 -458
  12. package/opengeometry_bg.wasm +0 -0
  13. package/opengeometry_bg.wasm.d.ts +62 -458
  14. package/package.json +54 -34
  15. package/src/bodies/body-factory.d.ts +3 -0
  16. package/src/bodies/body-options.d.ts +19 -0
  17. package/src/bodies/body-placement.d.ts +10 -0
  18. package/src/bodies/body-registry.d.ts +3 -0
  19. package/src/bodies/body.d.ts +71 -0
  20. package/src/bodies/display-clone.d.ts +10 -0
  21. package/src/bodies/node-methods.d.ts +30 -0
  22. package/src/bodies/sheet.d.ts +14 -0
  23. package/src/bodies/solid.d.ts +23 -0
  24. package/src/bodies/system-assembly.d.ts +26 -0
  25. package/src/bodies/wire.d.ts +14 -0
  26. package/src/constants/index.d.ts +4 -0
  27. package/src/constants/operations.d.ts +58 -0
  28. package/src/constants/primitives.d.ts +69 -0
  29. package/src/constants/regions.d.ts +1 -0
  30. package/src/constants/transforms.d.ts +4 -0
  31. package/src/dto/boolean-report.d.ts +24 -0
  32. package/src/dto/bounds.d.ts +1 -0
  33. package/src/dto/brep.d.ts +99 -0
  34. package/src/dto/change-set.d.ts +13 -0
  35. package/src/dto/creation.d.ts +3 -0
  36. package/src/dto/display-buffers.d.ts +14 -0
  37. package/src/dto/events.d.ts +2 -0
  38. package/src/{export/analytic-ifc.d.ts → dto/ifc-body.d.ts} +16 -18
  39. package/src/dto/mark-stats.d.ts +4 -0
  40. package/src/dto/measure.d.ts +16 -0
  41. package/src/dto/mirror.d.ts +4 -0
  42. package/src/dto/node-info.d.ts +11 -0
  43. package/src/dto/pick-result.d.ts +6 -0
  44. package/src/dto/placement.d.ts +6 -0
  45. package/src/dto/primitives.d.ts +77 -0
  46. package/src/dto/regions.d.ts +42 -0
  47. package/src/dto/step-export.d.ts +42 -0
  48. package/src/errors.d.ts +20 -0
  49. package/src/export/export-step.d.ts +10 -0
  50. package/src/export/ifc-body.d.ts +4 -0
  51. package/src/kernel/kernel-errors.d.ts +5 -0
  52. package/src/kernel/kernel-loader.d.ts +5 -0
  53. package/src/kernel/kernel-session.d.ts +2 -0
  54. package/src/limits.d.ts +12 -0
  55. package/src/marks/limbo.d.ts +6 -0
  56. package/src/marks/og-mark.d.ts +10 -0
  57. package/src/marks/transaction.d.ts +3 -0
  58. package/src/opengeometry.d.ts +69 -0
  59. package/src/operations/offsets.d.ts +5 -0
  60. package/src/operations/regions.d.ts +4 -0
  61. package/src/picking/pick-targets.d.ts +6 -0
  62. package/src/picking/resolve-hit.d.ts +3 -0
  63. package/src/rendering/deferred.d.ts +7 -0
  64. package/src/rendering/geometry/geometry-scheduler.d.ts +12 -0
  65. package/src/rendering/geometry/host-group.d.ts +10 -0
  66. package/src/rendering/geometry/render-pass.d.ts +8 -0
  67. package/src/rendering/geometry/settle.d.ts +10 -0
  68. package/src/rendering/inline-backend.d.ts +14 -0
  69. package/src/rendering/lod/body-size.d.ts +11 -0
  70. package/src/rendering/lod/camera-observer.d.ts +2 -0
  71. package/src/rendering/lod/deflection.d.ts +2 -0
  72. package/src/rendering/lod/display-bounds.d.ts +4 -0
  73. package/src/rendering/lod/displayed.d.ts +7 -0
  74. package/src/rendering/lod/host-drawn.d.ts +5 -0
  75. package/src/rendering/lod/host-groups.d.ts +28 -0
  76. package/src/rendering/lod/lod-controller.d.ts +75 -0
  77. package/src/rendering/lod/screen-metrics.d.ts +2 -0
  78. package/src/rendering/materials/material-pool.d.ts +12 -0
  79. package/src/rendering/materials/ref-counted-pool.d.ts +12 -0
  80. package/src/rendering/provider.d.ts +19 -0
  81. package/src/rendering/records/geometry-record.d.ts +21 -0
  82. package/src/rendering/records/record-pool.d.ts +29 -0
  83. package/src/rendering/records/validate-display-buffers.d.ts +2 -0
  84. package/src/rendering/tessellation-worker.d.ts +1 -0
  85. package/src/rendering/worker/job-queue.d.ts +8 -0
  86. package/src/rendering/worker/message-guards.d.ts +9 -0
  87. package/src/rendering/worker/snapshot-cache.d.ts +10 -0
  88. package/src/rendering/worker-backend.d.ts +44 -0
  89. package/src/rendering/worker-protocol.d.ts +52 -0
  90. package/src/runtime/create-runtime.d.ts +7 -0
  91. package/src/runtime/event-bus.d.ts +3 -0
  92. package/src/runtime/reset.d.ts +1 -0
  93. package/src/runtime/runtime-state.d.ts +68 -0
  94. package/src/testing/internals.d.ts +18 -0
  95. package/src/world-graph/codec.d.ts +45 -0
  96. package/src/world-graph/world-graph-client.d.ts +13 -0
  97. package/tessellation-worker.js +634 -0
  98. package/tessellation-worker.js.map +1 -0
  99. package/testing.d.ts +1 -0
  100. package/testing.js +87 -0
  101. package/testing.js.map +1 -0
  102. package/analytic-worker.js +0 -90
  103. package/src/base-types.d.ts +0 -13
  104. package/src/editor/freeform.d.ts +0 -91
  105. package/src/editor/index.d.ts +0 -6
  106. package/src/editor/parametric.d.ts +0 -15
  107. package/src/editor/types.d.ts +0 -223
  108. package/src/examples/booleans.d.ts +0 -24
  109. package/src/examples/editor-modes.d.ts +0 -20
  110. package/src/examples/index.d.ts +0 -11
  111. package/src/examples/offset-ring-variable.d.ts +0 -13
  112. package/src/examples/offset.d.ts +0 -18
  113. package/src/examples/primitives.d.ts +0 -16
  114. package/src/examples/ribbon-from-offsets.d.ts +0 -33
  115. package/src/examples/shapes.d.ts +0 -20
  116. package/src/examples/sweep.d.ts +0 -9
  117. package/src/freeform/geometry.d.ts +0 -82
  118. package/src/freeform/index.d.ts +0 -5
  119. package/src/freeform/types.d.ts +0 -36
  120. package/src/markup/spotMarker.d.ts +0 -4
  121. package/src/operations/analytic-errors.d.ts +0 -8
  122. package/src/operations/boolean-regions.d.ts +0 -20
  123. package/src/operations/boolean.d.ts +0 -16
  124. package/src/operations/editor/freeform.d.ts +0 -1
  125. package/src/operations/editor/index.d.ts +0 -1
  126. package/src/operations/editor/parametric.d.ts +0 -1
  127. package/src/operations/editor/types.d.ts +0 -1
  128. package/src/operations/extrude.d.ts +0 -9
  129. package/src/operations/index.d.ts +0 -9
  130. package/src/operations/loft.d.ts +0 -13
  131. package/src/operations/offset-regions.d.ts +0 -76
  132. package/src/primitives/analytic-curve.d.ts +0 -42
  133. package/src/primitives/arc.d.ts +0 -36
  134. package/src/primitives/curve.d.ts +0 -64
  135. package/src/primitives/elliptical_arc.d.ts +0 -38
  136. package/src/primitives/index.d.ts +0 -9
  137. package/src/primitives/line.d.ts +0 -77
  138. package/src/primitives/polyline.d.ts +0 -78
  139. package/src/primitives/rectangle.d.ts +0 -72
  140. package/src/rendering/analytic-lod.d.ts +0 -32
  141. package/src/rendering/analytic-tessellation.d.ts +0 -32
  142. package/src/shapes/analytic-pattern.d.ts +0 -36
  143. package/src/shapes/analytic-solid.d.ts +0 -304
  144. package/src/shapes/cuboid.d.ts +0 -62
  145. package/src/shapes/cylinder.d.ts +0 -36
  146. package/src/shapes/index.d.ts +0 -11
  147. package/src/shapes/opening.d.ts +0 -31
  148. package/src/shapes/outline-utils.d.ts +0 -35
  149. package/src/shapes/polygon.d.ts +0 -102
  150. package/src/shapes/solid.d.ts +0 -108
  151. package/src/shapes/sphere.d.ts +0 -27
  152. package/src/shapes/sweep.d.ts +0 -76
  153. package/src/shapes/wedge.d.ts +0 -75
  154. package/src/utils/event.d.ts +0 -29
  155. package/src/utils/randomizer.d.ts +0 -1
  156. package/src/world/world-graph.d.ts +0 -112
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-registry-MbAD6Hyq.js","sources":["../opengeometry-three/src/errors.ts","../opengeometry-three/src/runtime/runtime-state.ts","../opengeometry-three/src/runtime/event-bus.ts","../opengeometry-three/src/kernel/kernel-errors.ts","../opengeometry/pkg/opengeometry.js","../opengeometry-three/src/kernel/kernel-loader.ts","../opengeometry-three/src/kernel/kernel-session.ts","../opengeometry-three/src/limits.ts","../opengeometry-three/src/world-graph/codec.ts","../opengeometry-three/src/rendering/lod/host-groups.ts","../opengeometry-three/src/rendering/lod/host-drawn.ts","../opengeometry-three/src/rendering/lod/displayed.ts","../opengeometry-three/src/world-graph/world-graph-client.ts","../opengeometry-three/src/rendering/lod/body-size.ts","../opengeometry-three/src/rendering/lod/deflection.ts","../opengeometry-three/src/rendering/lod/display-bounds.ts","../opengeometry-three/src/rendering/lod/screen-metrics.ts","../opengeometry-three/src/rendering/lod/lod-controller.ts","../opengeometry-three/src/rendering/records/validate-display-buffers.ts","../opengeometry-three/src/rendering/records/geometry-record.ts","../opengeometry-three/src/rendering/geometry/geometry-scheduler.ts","../opengeometry-three/src/rendering/geometry/render-pass.ts","../opengeometry-three/src/rendering/inline-backend.ts","../opengeometry-three/src/rendering/deferred.ts","../opengeometry-three/src/rendering/worker-backend.ts","../opengeometry-three/src/bodies/body-registry.ts"],"sourcesContent":["import type { OperateErrorDetails } from './dto/boolean-report';\n\nexport type ErrorDetails = Partial<OperateErrorDetails> & Record<string, unknown>;\n\nfunction isDetails(value: unknown): value is ErrorDetails {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport class OGError extends Error {\n readonly code: string;\n readonly call: string;\n readonly details: ErrorDetails;\n\n constructor(code: string, call: string, message: string, details: unknown = {}) {\n super(message);\n this.name = 'OGError';\n this.code = code;\n this.call = call;\n this.details = isDetails(details) ? details : {};\n }\n\n toJSON(): { code: string; call: string; message: string; details: unknown } {\n return { code: this.code, call: this.call, message: this.message, details: this.details };\n }\n\n static fromJSON(value: { code: string; call: string; message: string; details?: unknown }): OGError {\n return new OGError(value.code, value.call, value.message, value.details);\n }\n}\n","import type { Body } from '../bodies/body';\nimport type { Bounds } from '../dto/bounds';\nimport type { Events, Listener } from '../dto/events';\nimport { OGError } from '../errors';\nimport type { OGWorldGraph } from '../kernel/kernel-loader';\nimport type { OGMark } from '../marks/og-mark';\nimport type { HostGroups } from '../rendering/lod/host-groups';\nimport type { LodState } from '../rendering/lod/lod-controller';\nimport type { LineEntry, SurfaceEntry } from '../rendering/materials/material-pool';\nimport type { TessellationProvider } from '../rendering/provider';\nimport type { RecordPool } from '../rendering/records/record-pool';\n\nexport type CreateOptions = { workerURL?: string | URL; tessellation?: 'worker' | 'inline' };\n\nexport type LimboEntry = { watermark: number; parent: Body['parent'] };\n\nexport type Runtime = {\n graph: OGWorldGraph;\n provider: TessellationProvider;\n records: RecordPool;\n bodies: Map<string, Body>;\n pickTargets: WeakMap<object, Body>;\n byShape: Map<string, Set<Body>>;\n limbo: Map<Body, LimboEntry>;\n listeners: Map<Events, Set<Listener>>;\n revision: bigint;\n readyShapes: Set<string>;\n renderPassActive: boolean;\n graphMoved: boolean;\n pass: number;\n displayed: Map<Body, number>;\n hostDrawn: WeakMap<Body, boolean>;\n groups: HostGroups;\n pending: Map<string, Promise<void>>;\n generations: Map<string, number>;\n shapeBuckets: Map<string, { revision: number; floor: number; static: number; error?: unknown }>;\n displayBounds: Map<Body, { revision: bigint; bounds: Bounds | null }>;\n lod: LodState;\n module: WebAssembly.Module;\n createOptions: CreateOptions;\n displayDeflection?: number;\n poisoned: boolean;\n flushes: number;\n marks: Map<number, OGMark>;\n flushing: boolean;\n surfacePool: Map<string, SurfaceEntry>;\n linePool: Map<string, LineEntry>;\n epoch: number;\n};\n\nlet state: Runtime | undefined;\nlet creating: Promise<Runtime> | undefined;\nlet epochs = 0;\n\nexport function runtime(): Runtime {\n if (!state) throw new OGError('NotInitialised', 'OpenGeometry', 'call OpenGeometry.create() first');\n return state;\n}\n\nexport function currentRuntime(): Runtime | undefined {\n return state;\n}\n\nexport function setRuntime(value: Runtime | undefined): void {\n state = value;\n}\n\nexport function pendingCreate(): Promise<Runtime> | undefined {\n return creating;\n}\n\nexport function setPendingCreate(value: Promise<Runtime> | undefined): void {\n creating = value;\n}\n\nexport function nextEpoch(): number {\n return ++epochs;\n}\n\nexport function bodyKey(handle: number, generation: number): string {\n return `${String(handle)}:${String(generation)}`;\n}\n\nexport function reindexShape(state: Runtime, body: Body, previousShapeId: string | null): void {\n const shapeId = body.lastInfo.shapeId;\n if (shapeId === previousShapeId) return;\n if (previousShapeId) {\n const previous = state.byShape.get(previousShapeId);\n previous?.delete(body);\n if (previous?.size === 0) {\n state.byShape.delete(previousShapeId);\n forgetShape(state, previousShapeId);\n }\n }\n if (shapeId) state.byShape.set(shapeId, (state.byShape.get(shapeId) ?? new Set<Body>()).add(body));\n}\n\nexport function releaseShapeIfEmpty(state: Runtime, shapeId: string, revision: number): void {\n if (state.byShape.get(shapeId)?.size) return;\n state.byShape.delete(shapeId);\n forgetShape(state, shapeId);\n state.records.purge(shapeId);\n state.provider.drop(shapeId, revision);\n}\n\nfunction forgetShape(state: Runtime, shapeId: string): void {\n state.lod.shapes.delete(shapeId);\n state.shapeBuckets.delete(shapeId);\n}\n","import type { Events, Listener } from '../dto/events';\nimport { currentRuntime, runtime } from './runtime-state';\n\nexport function on(event: Events, handler: Listener): () => boolean {\n const listeners = runtime().listeners;\n const group = listeners.get(event) ?? new Set<Listener>();\n group.add(handler);\n listeners.set(event, group);\n return () => group.delete(handler);\n}\n\nexport function emit(event: Events, detail: unknown): void {\n for (const handler of currentRuntime()?.listeners.get(event) ?? []) handler(detail);\n}\n","export function parseKernelError(text: string): { code: string; message: string; details: unknown } | undefined {\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n return undefined;\n }\n if (typeof value !== 'object' || value === null || !('code' in value) || !('message' in value)) return undefined;\n const { code, message } = value;\n if (typeof code !== 'string' || typeof message !== 'string' || !code || !message) return undefined;\n return { code, message, details: 'details' in value ? value.details : undefined };\n}\n","let wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedFloat64ArrayMemory0 = null;\n\nfunction getFloat64ArrayMemory0() {\n if (cachedFloat64ArrayMemory0 === null || cachedFloat64ArrayMemory0.byteLength === 0) {\n cachedFloat64ArrayMemory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64ArrayMemory0;\n}\n\nfunction passArrayF64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8, 8) >>> 0;\n getFloat64ArrayMemory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nconst OGTessellatorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogtessellator_free(ptr >>> 0, 1));\n\nexport class OGTessellator {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGTessellatorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogtessellator_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogtessellator_new();\n this.__wbg_ptr = ret >>> 0;\n OGTessellatorFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Uint8Array} bytes\n * @returns {number}\n */\n load(bytes) {\n const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogtessellator_load(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n }\n /**\n * @param {number} slot\n * @param {number} bucket\n * @param {number} max_triangles\n * @param {number | null} [smooth_angle]\n * @returns {any}\n */\n buffers(slot, bucket, max_triangles, smooth_angle) {\n const ret = wasm.ogtessellator_buffers(this.__wbg_ptr, slot, bucket, max_triangles, !isLikeNone(smooth_angle), isLikeNone(smooth_angle) ? 0 : smooth_angle);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} slot\n * @returns {boolean}\n */\n drop(slot) {\n const ret = wasm.ogtessellator_drop(this.__wbg_ptr, slot);\n return ret !== 0;\n }\n}\n\nconst OGWorldGraphFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogworldgraph_free(ptr >>> 0, 1));\n\nexport class OGWorldGraph {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGWorldGraphFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogworldgraph_free(ptr, 0);\n }\n /**\n * @param {string} a_json\n * @param {string} b_json\n * @param {string} operation\n * @returns {string}\n */\n booleanRegions2D(a_json, b_json, operation) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(a_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(b_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_booleanRegions2D(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} a_json\n * @param {string} b_json\n * @param {string} operation\n * @returns {string}\n */\n booleanCurvedRegions2D(a_json, b_json, operation) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(a_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(b_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_booleanCurvedRegions2D(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} region_json\n * @param {number} distance\n * @returns {string}\n */\n insetCurvedRegion2D(region_json, distance) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(region_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_insetCurvedRegion2D(this.__wbg_ptr, ptr0, len0, distance);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {Float64Array} ring\n * @param {Float64Array} distances\n * @param {string} holes_json\n * @returns {string}\n */\n offsetRingVariable(ring, distances, holes_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passArrayF64ToWasm0(ring, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(distances, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(holes_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_offsetRingVariable(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} region_json\n * @param {Float64Array} distances\n * @param {string} hole_distances_json\n * @returns {string}\n */\n offsetCurvedRingVariable(region_json, distances, hole_distances_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(region_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(distances, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(hole_distances_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_offsetCurvedRingVariable(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {Float64Array} path\n * @param {number} width\n * @param {boolean} closed\n * @param {number} miter_limit\n * @returns {string}\n */\n offsetPolylineRegions(path, width, closed, miter_limit) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passArrayF64ToWasm0(path, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_offsetPolylineRegions(this.__wbg_ptr, ptr0, len0, width, closed, miter_limit);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {Float64Array} path\n * @param {number} distance\n * @param {boolean | null | undefined} closed\n * @param {boolean} bevel\n * @param {number} acute_threshold_degrees\n * @returns {string}\n */\n offsetPolyline(path, distance, closed, bevel, acute_threshold_degrees) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passArrayF64ToWasm0(path, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_offsetPolyline(this.__wbg_ptr, ptr0, len0, distance, isLikeNone(closed) ? 0xFFFFFF : closed ? 1 : 0, bevel, acute_threshold_degrees);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} primitive_json\n * @param {string} options_json\n * @returns {string}\n */\n createPrimitive(primitive_json, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(primitive_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_createPrimitive(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {Float64Array} points\n * @param {boolean} closed\n * @param {string} options_json\n * @returns {string}\n */\n createPolyline(points, closed, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passArrayF64ToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_createPolyline(this.__wbg_ptr, ptr0, len0, closed, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} operation_json\n * @param {string} options_json\n * @returns {string}\n */\n createOperation(operation_json, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(operation_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_createOperation(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} options_json\n * @returns {string}\n */\n createSystemAssembly(options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_createSystemAssembly(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} nodes_json\n * @param {string} options_json\n * @returns {any}\n */\n exportStep(nodes_json, options_json) {\n const ptr0 = passStringToWasm0(nodes_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_exportStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n node(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_node(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {number} handle\n * @param {number} generation\n * @returns {string}\n */\n nodeByHandle(handle, generation) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogworldgraph_nodeByHandle(this.__wbg_ptr, handle, generation);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n children(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_children(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n parent(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_parent(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} parent\n * @param {string} children_json\n * @param {boolean} keep_world\n * @returns {string}\n */\n addChild(parent, children_json, keep_world) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(parent, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(children_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_addChild(this.__wbg_ptr, ptr0, len0, ptr1, len1, keep_world);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} parent\n * @param {string} child\n * @param {boolean} keep_world\n * @returns {string}\n */\n removeChild(parent, child, keep_world) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(parent, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(child, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_removeChild(this.__wbg_ptr, ptr0, len0, ptr1, len1, keep_world);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} source\n * @param {string} options_json\n * @returns {string}\n */\n instance(source, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_instance(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} source\n * @param {string} options_json\n * @returns {string}\n */\n duplicate(source, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_duplicate(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n makeUnique(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_makeUnique(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {number}\n */\n instanceCount(og_id) {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_instanceCount(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n dispose(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_dispose(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n exportIfcBody(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_exportIfcBody(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n mark() {\n const ret = wasm.ogworldgraph_mark(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n }\n /**\n * @param {number} slot\n * @returns {string}\n */\n rollback(slot) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogworldgraph_rollback(this.__wbg_ptr, slot);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} slot\n */\n release(slot) {\n const ret = wasm.ogworldgraph_release(this.__wbg_ptr, slot);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n markStats() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogworldgraph_markStats(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {bigint} revision\n * @returns {any}\n */\n changesSince(revision) {\n const ret = wasm.ogworldgraph_changesSince(this.__wbg_ptr, revision);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {string} og_id\n * @param {string} operation_json\n * @param {string} tools_json\n * @param {string} scope_json\n * @returns {string}\n */\n operate(og_id, operation_json, tools_json, scope_json) {\n let deferred6_0;\n let deferred6_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(operation_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(tools_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(scope_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_operate(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n var ptr5 = ret[0];\n var len5 = ret[1];\n if (ret[3]) {\n ptr5 = 0; len5 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred6_0 = ptr5;\n deferred6_1 = len5;\n return getStringFromWasm0(ptr5, len5);\n } finally {\n wasm.__wbindgen_free(deferred6_0, deferred6_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {number} thickness\n * @param {string} scope_json\n * @returns {string}\n */\n shell(og_id, thickness, scope_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(scope_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_shell(this.__wbg_ptr, ptr0, len0, thickness, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {string} plane_json\n * @param {string} scope_json\n * @returns {string}\n */\n mirror(og_id, plane_json, scope_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(plane_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(scope_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_mirror(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {string} transform_json\n * @returns {string}\n */\n transform(og_id, transform_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(transform_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_transform(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n placement(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_placement(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n worldPlacement(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_worldPlacement(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {Float64Array}\n */\n worldMatrix(og_id) {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_worldMatrix(this.__wbg_ptr, ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v2;\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n bounds(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_bounds(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n localBounds(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_localBounds(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {string} primitive_json\n * @param {string} scope_json\n * @returns {string}\n */\n rebuildPrimitive(og_id, primitive_json, scope_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(primitive_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(scope_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_rebuildPrimitive(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {Float64Array} points\n * @param {boolean} closed\n * @param {string} scope_json\n * @returns {string}\n */\n rebuildPolyline(og_id, points, closed, scope_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(scope_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_rebuildPolyline(this.__wbg_ptr, ptr0, len0, ptr1, len1, closed, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {string} operation_json\n * @param {string} scope_json\n * @returns {string}\n */\n rebuildOperation(og_id, operation_json, scope_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(operation_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(scope_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_rebuildOperation(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @returns {bigint}\n */\n revision() {\n const ret = wasm.ogworldgraph_revision(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n brep(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_brep(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n worldBrep(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_worldBrep(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {number} face_id\n * @param {Float64Array} point\n * @returns {Float64Array}\n */\n faceNormalAt(og_id, face_id, point) {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(point, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_faceNormalAt(this.__wbg_ptr, ptr0, len0, face_id, ptr1, len1);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v3;\n }\n /**\n * @param {string} og_id\n * @param {Float64Array} point\n * @returns {string}\n */\n classifyPoint(og_id, point) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF64ToWasm0(point, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_classifyPoint(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @param {number | null} [deflection]\n * @returns {Float64Array}\n */\n measure(og_id, deflection) {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_measure(this.__wbg_ptr, ptr0, len0, !isLikeNone(deflection), isLikeNone(deflection) ? 0 : deflection);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v2;\n }\n /**\n * @param {string} og_id\n * @returns {any}\n */\n validity(og_id) {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_validity(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n report(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_report(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n edgeKeys(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_edgeKeys(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} og_id\n * @returns {string}\n */\n displayBuckets(og_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(og_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_displayBuckets(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} shape_id\n * @returns {Uint8Array}\n */\n snapshot(shape_id) {\n const ptr0 = passStringToWasm0(shape_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_snapshot(this.__wbg_ptr, ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v2;\n }\n /**\n * @param {string} shape_id\n * @param {number} bucket\n * @param {number} max_triangles\n * @param {number | null} [smooth_angle]\n * @returns {any}\n */\n buffers(shape_id, bucket, max_triangles, smooth_angle) {\n const ptr0 = passStringToWasm0(shape_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_buffers(this.__wbg_ptr, ptr0, len0, bucket, max_triangles, !isLikeNone(smooth_angle), isLikeNone(smooth_angle) ? 0 : smooth_angle);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {string} accuracy_json\n */\n constructor(accuracy_json) {\n const ptr0 = passStringToWasm0(accuracy_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogworldgraph_new(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGWorldGraphFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_buffer_609cc3eee51ed158 = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_new_405e22f390576ce2 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_780abee5c1739fd7 = function(arg0) {\n const ret = new Float32Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_78c8a92080461d08 = function(arg0) {\n const ret = new Float64Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_8a6f238a6ece86ea = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_new_a12002a7f91c75be = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_e3b321dcfef89fc7 = function(arg0) {\n const ret = new Uint32Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_newnoargs_105ed471475aaf50 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_93c8e0c1a479fa1a = function(arg0, arg1, arg2) {\n const ret = new Float64Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_d97e637ebe145a9a = function(arg0, arg1, arg2) {\n const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354 = function(arg0, arg1, arg2) {\n const ret = new Float32Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212 = function(arg0, arg1, arg2) {\n const ret = new Uint32Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_set_bb8cecf6a62b9f46 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0 = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40 = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat64ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('opengeometry_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import initializeKernel, {\n initSync, OGTessellator, OGWorldGraph, type InitOutput,\n} from '../../../opengeometry/pkg/opengeometry.js';\n\nexport { initializeKernel, initSync, OGTessellator, OGWorldGraph };\n\nexport function compileKernel(wasmURL: string | URL): Promise<WebAssembly.Module> {\n return WebAssembly.compileStreaming(fetch(wasmURL));\n}\n\nexport function initKernel(module: WebAssembly.Module): Promise<InitOutput> {\n return initializeKernel({ module_or_path: module });\n}\n\nexport function takePanicMessage(): string | undefined {\n const message: unknown = Reflect.get(globalThis, '__opengeometryPanic');\n Reflect.deleteProperty(globalThis, '__opengeometryPanic');\n return typeof message === 'string' ? message : undefined;\n}\n","import { OGError } from '../errors';\nimport { emit } from '../runtime/event-bus';\nimport { runtime as runtimeState } from '../runtime/runtime-state';\nimport { parseKernelError } from './kernel-errors';\nimport { takePanicMessage } from './kernel-loader';\n\nexport function kernelCall<T>(call: string, fn: () => T): T {\n try {\n return fn();\n } catch (cause) {\n if (cause instanceof OGError) throw cause;\n if (cause instanceof WebAssembly.RuntimeError) {\n throw new OGError('KernelPanic', call, takePanicMessage() ?? cause.message);\n }\n const value = typeof cause === 'string' ? parseKernelError(cause) : undefined;\n if (value) throw new OGError(value.code, call, value.message, value.details);\n throw new OGError('InvalidGeometry', call, String(cause));\n }\n}\n\nexport function call<T>(name: string, fn: () => T): T {\n const runtime = runtimeState();\n if (runtime.poisoned) throw new OGError('KernelPanic', name, 'kernel runtime is poisoned');\n try {\n return kernelCall(name, fn);\n } catch (error) {\n if (error instanceof OGError && error.code === 'KernelPanic') {\n runtime.poisoned = true;\n emit('fatal', error);\n }\n throw error;\n }\n}\n","export const ACCURACY = { geometric: 1e-8, intersection: 1e-9, tessellation: 0.01, exchange: 1e-6 } as const;\nexport const MAX_TRIANGLES = 2_000_000 as const;\nexport const HYSTERESIS_KEEP = [0.75, 4] as const;\nexport const PIXELS_AT_REST = 0.5 as const;\nexport const PIXELS_MOVING = 2 as const;\nexport const EVALUATION_INTERVAL_MS = 100 as const;\nexport const MOTION_WINDOW_MS = 150 as const;\n","import type { ShapeReport } from '../dto/boolean-report';\nimport type { Bounds } from '../dto/bounds';\nimport type { Brep } from '../dto/brep';\nimport type { ChangeSet } from '../dto/change-set';\nimport type { Creation } from '../dto/creation';\nimport type { AnalyticExchangeBodyV2 } from '../dto/ifc-body';\nimport type { MarkStats } from '../dto/mark-stats';\nimport type { NodeInfo } from '../dto/node-info';\nimport type { Placement } from '../dto/placement';\nimport type { CurvedRegion2D, OffsetPath2D, OffsetRegion, RegionOperation } from '../dto/regions';\nimport type { StepExport, StepExportReport } from '../dto/step-export';\nimport { OGError } from '../errors';\n\ntype Fields = Record<string, unknown>;\ntype Check<T> = (value: unknown) => value is T;\ntype ChangePacket = { changesJson: string; matrices: Float64Array };\ntype StepGlue = { text: string; reportJson: string };\n\nconst BREP_TOPOLOGY = ['vertices', 'edges', 'halfedges', 'loops', 'faces', 'wires', 'shells'] as const;\nconst STEP_COUNTS = ['products', 'solids', 'faces', 'edges', 'pcurvelessEdges', 'entities', 'bytes'] as const;\nconst REGION_OPERATIONS = ['union', 'intersection', 'subtraction'] as const;\n\nexport function encode(value: unknown): string {\n return JSON.stringify(value);\n}\n\nexport function scope(options?: { instances?: 'all' }): string {\n return encode(options?.instances === 'all' ? 'AllInstances' : 'Node');\n}\n\nexport function operationParams(kind: string, params: Record<string, unknown>, call: string): Record<string, unknown> {\n if (kind === 'Extrude') {\n const holes = params['holes'] ?? [];\n if (!Array.isArray(holes)) throw new OGError('InvalidParameter', call, 'holes must be a list of bodies');\n const holeIds = holes.map((hole: unknown) => ogIdOf(hole, call, 'hole'));\n return { kind, profile: ogIdOf(params['profile'], call, 'profile'), holes: holeIds, distance: params['distance'] };\n }\n if (kind === 'Sweep') {\n const profile = ogIdOf(params['profile'], call, 'profile');\n return { kind, profile, path: ogIdOf(params['path'], call, 'path'), caps: params['caps'] };\n }\n if (kind === 'Revolve') return { ...params, kind, profile: ogIdOf(params['profile'], call, 'profile') };\n return { kind, ...params };\n}\n\nexport function polylinePoints(params: Record<string, unknown>, call: string): Float64Array {\n const points = params['points'];\n if (!Array.isArray(points) || !points.every(isPoint)) {\n throw new OGError('InvalidParameter', call, 'points must be a list of [x, y, z] points');\n }\n return new Float64Array(points.flat());\n}\n\nexport function regionsJson(regions: unknown, call: string): string {\n if (!Array.isArray(regions) || !regions.every(isOffsetRegion)) {\n throw new OGError('InvalidParameter', call, 'regions must be a list of { outer, holes } of { x, y, z } rings');\n }\n const ring = (points: OffsetRegion['outer']): number[][] => points.map((point) => [point.x, point.y, point.z]);\n return encode(regions.map((region) => ({ outer: ring(region.outer), holes: region.holes.map(ring) })));\n}\n\nexport function regionOperation(value: unknown, call: string): RegionOperation {\n if (!isRegionOperation(value)) {\n throw new OGError('InvalidParameter', call, \"operation must be 'union', 'intersection' or 'subtraction'\");\n }\n return value;\n}\n\nexport function curvedRegionsJson(regions: unknown, call: string): string {\n if (!Array.isArray(regions)) throw new OGError('InvalidParameter', call, 'curved regions must be a list');\n return encode(regions);\n}\n\nexport function numberList(value: unknown, call: string, label: string): Float64Array {\n if (!isNumberList(value)) throw new OGError('InvalidParameter', call, `${label} must be a list of numbers`);\n return value instanceof Float64Array ? value : new Float64Array(value);\n}\n\nexport function offsetHolesJson(holes: unknown, call: string): string {\n if (!Array.isArray(holes) || !holes.every(isOffsetHole)) {\n throw new OGError('InvalidParameter', call, 'holes must be a list of { ring, distances }');\n }\n return encode(holes.map((hole) => ({ ring: Array.from(hole.ring), distances: Array.from(hole.distances) })));\n}\n\nexport function decodeOffsetPath(text: string, call: string): OffsetPath2D {\n return decode(text, call, 'offset path', (value): value is OffsetPath2D => isFields(value)\n && isList(value['edges'], isCurvedEdge) && isList(value['bevelled'], isNumber)\n && typeof value['closed'] === 'boolean');\n}\n\nexport function decodeRegions(text: string, call: string): OffsetRegion[] {\n return decode(text, call, 'regions', (value): value is OffsetRegion[] => isList(value, isOffsetRegion));\n}\n\nexport function decodeCurvedRegions(text: string, call: string): CurvedRegion2D[] {\n return decode(text, call, 'curved regions', (value): value is CurvedRegion2D[] => isList(value, isCurvedRegion));\n}\n\nfunction decode<T>(text: string, call: string, payload: string, check: Check<T>): T {\n return checked(parsed(text), call, payload, check);\n}\n\nexport function decodeNodeInfo(text: string, call: string): NodeInfo {\n return decode(text, call, 'node info', isNodeInfo);\n}\n\nexport function decodeCreation(text: string, call: string): Creation {\n return decode(text, call, 'creation', (value): value is Creation => isFields(value) && isString(value['ogId']));\n}\n\nexport function decodePlacement(text: string, call: string): Placement {\n return decode(text, call, 'placement', isPlacement);\n}\n\nexport function decodeChildren(text: string, call: string): string[] {\n return decode(text, call, 'children', isStrings);\n}\n\nexport function decodeParent(text: string, call: string): string | null {\n return decode(text, call, 'parent', (value): value is string | null => value === null || isString(value));\n}\n\nexport function decodeBounds(text: string, call: string): Bounds | null {\n return decode(text, call, 'bounds', (value): value is Bounds | null => value === null || isNumbers(value, 6));\n}\n\nexport function decodeIfcBody(text: string, call: string): AnalyticExchangeBodyV2 {\n return decode(text, call, 'IFC body', isIfcBody);\n}\n\nexport function decodeBrep(text: string, call: string): Brep {\n return decode(text, call, 'brep', isBrep);\n}\n\nexport function decodeShapeReport(text: string, call: string): ShapeReport | null {\n return decode(text, call, 'report', (value): value is ShapeReport | null => value === null || isShapeReport(value));\n}\n\nexport function decodeMarkStats(text: string, call: string): MarkStats {\n return decode(text, call, 'mark stats', (value): value is MarkStats => isFields(value)\n && isNumber(value['liveMarks']) && isNumber(value['retainedRevisions']));\n}\n\nexport function decodeDisplayBuckets(text: string, call: string): { floor: number; static: number } {\n return decode(text, call, 'display buckets', (value): value is { floor: number; static: number } => isFields(value)\n && Number.isFinite(value['floor']) && Number.isFinite(value['static']));\n}\n\nexport function decodeChangeSet(packet: unknown, call: string): { changes: ChangeSet; matrices: Float64Array } {\n const glue = checked(packet, call, 'change packet', isChangePacket);\n return { changes: decode(glue.changesJson, call, 'change set', isChangeSet), matrices: glue.matrices };\n}\n\nexport function decodeChanges(text: string, call: string): ChangeSet {\n return decode(text, call, 'change set', isChangeSet);\n}\n\nexport function decodeStepExport(value: unknown, call: string): StepExport {\n const glue = checked(value, call, 'STEP export', isStepGlue);\n return { text: glue.text, report: decode(glue.reportJson, call, 'STEP report', isStepReport) };\n}\n\nfunction checked<T>(value: unknown, call: string, payload: string, check: Check<T>): T {\n if (!check(value)) throw new OGError('InvalidGeometry', call, `malformed ${payload}`);\n return value;\n}\n\nfunction parsed(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return undefined;\n }\n}\n\nfunction ogIdOf(value: unknown, call: string, role: string): string {\n if (isFields(value) && isString(value['ogId'])) return value['ogId'];\n throw new OGError('InvalidParameter', call, `${role} must be a body`);\n}\n\nfunction isFields(value: unknown): value is Fields {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\nfunction isStrings(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(isString);\n}\n\nfunction isNumbers(value: unknown, length: number): boolean {\n return Array.isArray(value) && value.length === length && value.every(isNumber);\n}\n\nfunction isPoint(value: unknown): value is [number, number, number] {\n return isNumbers(value, 3);\n}\n\nfunction isNodeInfo(value: unknown): value is NodeInfo {\n return isFields(value) && isString(value['ogId']) && isNumber(value['handle']) && isNumber(value['generation'])\n && isNullable(value['parent'], isString) && isStrings(value['children']) && isString(value['kind'])\n && isNullable(value['shapeId'], isString) && isNullable(value['shapeRevision'], isNumber)\n && isNullable(value['bodyType'], isString);\n}\n\nfunction isNullable(value: unknown, check: (item: unknown) => boolean): boolean {\n return value === null || check(value);\n}\n\nfunction isPlacement(value: unknown): value is Placement {\n return isFields(value) && isPoint(value['origin']) && isPoint(value['xDirection']) && isPoint(value['normal'])\n && isNumber(value['scale']);\n}\n\nfunction isBrep(value: unknown): value is Brep {\n if (!isFields(value) || !isFields(value['topology'])) return false;\n const topology = value['topology'];\n return isString(value['id']) && isNumber(value['revision']) && isNumber(value['schema_version'])\n && isFields(value['geometry']) && isFields(value['accuracy']) && isFields(value['quality'])\n && Array.isArray(value['solids']) && BREP_TOPOLOGY.every((key) => Array.isArray(topology[key]));\n}\n\nfunction isShapeReport(value: unknown): value is ShapeReport {\n return isFields(value) && isFields(value['report']) && isStrings(value['handlers']) && isNumber(value['revision']);\n}\n\nfunction isChangePacket(value: unknown): value is ChangePacket {\n return isFields(value) && isString(value['changesJson']) && value['matrices'] instanceof Float64Array;\n}\n\nfunction isChangeSet(value: unknown): value is ChangeSet {\n const isChanges = (list: unknown): boolean => Array.isArray(list)\n && list.every((item: unknown) => isFields(item) && isString(item['ogId']) && isNumber(item['handle'])\n && isNumber(item['generation']) && isNullable(item['shapeId'], isString)\n && isNullable(item['shapeRevision'], isNumber));\n return isFields(value) && isNumber(value['revision'])\n && isChanges(value['added']) && isChanges(value['changed']) && isChanges(value['removed']);\n}\n\nfunction isStepGlue(value: unknown): value is StepGlue {\n return isFields(value) && isString(value['text']) && isString(value['reportJson']);\n}\n\nfunction isStepReport(value: unknown): value is StepExportReport {\n return isFields(value) && STEP_COUNTS.every((key) => isNumber(value[key]))\n && Array.isArray(value['bodies']) && Array.isArray(value['skipped']);\n}\n\nfunction isList(value: unknown, check: (item: unknown) => boolean): boolean {\n return Array.isArray(value) && value.every(check);\n}\n\nfunction isRegionOperation(value: unknown): value is RegionOperation {\n return REGION_OPERATIONS.some((operation) => operation === value);\n}\n\nfunction hasOnly(value: Fields, keys: string[]): boolean {\n return Object.keys(value).every((key) => keys.includes(key));\n}\n\nfunction isOffsetRegion(value: unknown): value is OffsetRegion {\n const isRing = (ring: unknown): boolean => isList(ring, (point) => isFields(point) && hasOnly(point, ['x', 'y', 'z'])\n && isNumber(point['x']) && isNumber(point['y']) && isNumber(point['z']));\n return isFields(value) && hasOnly(value, ['outer', 'holes']) && isRing(value['outer'])\n && isList(value['holes'], isRing);\n}\n\nfunction isNumberList(value: unknown): value is ArrayLike<number> {\n return value instanceof Float64Array || isList(value, isNumber);\n}\n\nfunction isOffsetHole(value: unknown): value is { ring: ArrayLike<number>; distances: ArrayLike<number> } {\n return isFields(value) && hasOnly(value, ['ring', 'distances'])\n && isNumberList(value['ring']) && isNumberList(value['distances']);\n}\n\nfunction isCurvedEdge(edge: unknown): boolean {\n return isFields(edge) && (edge['kind'] === 'line' || edge['kind'] === 'arc');\n}\n\nfunction isCurvedRegion(value: unknown): value is CurvedRegion2D {\n const isEdges = (ring: unknown): boolean => isList(ring, isCurvedEdge);\n return isFields(value) && isEdges(value['outer']) && isList(value['holes'], isEdges);\n}\n\nfunction isIfcBody(value: unknown): value is AnalyticExchangeBodyV2 {\n return isFields(value) && value['schema_version'] === 2 && value['length_unit'] === 'metre'\n && value['up_axis'] === 'Z' && value['coordinate_space'] === 'world'\n && (value['representation_type'] === 'AdvancedBrep' || value['representation_type'] === 'CSG')\n && Array.isArray(value['entities']) && Array.isArray(value['solids']) && Array.isArray(value['faces']);\n}\n","import type { Body } from '../../bodies/body';\nimport type { Runtime } from '../../runtime/runtime-state';\n\nexport type GroupState = { pass: number; members: Set<Body> };\n\nexport type HostGroups = {\n live: Set<GroupState>;\n of: WeakMap<Body, GroupState[]>;\n woken: Set<GroupState>;\n pending: Set<Body>;\n drawn: boolean;\n revision: number;\n dropped: FinalizationRegistry<GroupState>;\n};\n\nexport function createHostGroups(release: (group: GroupState) => void): HostGroups {\n return {\n live: new Set(), of: new WeakMap(), woken: new Set(), pending: new Set(), drawn: false, revision: 0,\n dropped: new FinalizationRegistry(release),\n };\n}\n\nexport function groupShown(state: Runtime, group: GroupState): boolean {\n return group.pass >= state.pass - 1;\n}\n\nexport function groupDisplayed(state: Runtime, body: Body): boolean {\n const groups = state.groups.of.get(body);\n if (!groups) return false;\n for (const group of groups) if (groupShown(state, group)) return true;\n return false;\n}\n\nexport function stampGroup(state: Runtime, group: GroupState): void {\n if (!groupShown(state, group)) wake(state, group);\n state.groups.drawn = true;\n group.pass = state.pass;\n}\n\nexport function setMembers(state: Runtime, group: GroupState, members: readonly Body[]): void {\n for (const body of group.members) leave(state, body, group);\n group.members = new Set(members);\n for (const body of group.members) join(state, body, group);\n state.groups.revision++;\n state.lod.stale = true;\n if (groupShown(state, group)) state.groups.woken.add(group);\n}\n\nexport function dropGroup(state: Runtime, group: GroupState): void {\n setMembers(state, group, []);\n group.pass = -Infinity;\n state.groups.live.delete(group);\n state.groups.woken.delete(group);\n}\n\nexport function dropMember(state: Runtime, body: Body): void {\n for (const group of state.groups.of.get(body) ?? []) group.members.delete(body);\n state.groups.of.delete(body);\n state.groups.pending.delete(body);\n state.groups.revision++;\n}\n\nexport function groupedBodies(state: Runtime): Body[] {\n const bodies: Body[] = [];\n for (const group of state.groups.live) {\n if (groupShown(state, group)) for (const body of group.members) bodies.push(body);\n }\n return bodies;\n}\n\nexport function groupsKey(state: Runtime): number {\n let members = 0;\n for (const group of state.groups.live) if (groupShown(state, group)) members += group.members.size + 1;\n return members;\n}\n\nexport function queueGrouped(state: Runtime, body: Body): void {\n if (state.groups.of.get(body)?.length) state.groups.pending.add(body);\n}\n\nexport function shownChanged(state: Runtime, body: Body): void {\n if (!state.groups.of.get(body)?.length) return;\n state.groups.pending.add(body);\n state.groups.revision++;\n state.lod.stale = true;\n}\n\nexport function queueShapes(state: Runtime, shapeId?: string): void {\n if (shapeId === undefined) {\n for (const group of state.groups.live) if (groupShown(state, group)) state.groups.woken.add(group);\n return;\n }\n for (const body of state.byShape.get(shapeId) ?? []) queueGrouped(state, body);\n}\n\nexport function takeWaiting(state: Runtime): Set<Body> {\n const groups = state.groups;\n const waiting = new Set(groups.pending);\n for (const group of groups.woken) for (const body of group.members) waiting.add(body);\n groups.pending.clear();\n groups.woken.clear();\n groups.drawn = false;\n return waiting;\n}\n\nfunction wake(state: Runtime, group: GroupState): void {\n state.lod.stale = true;\n state.groups.revision++;\n state.groups.woken.add(group);\n}\n\nfunction join(state: Runtime, body: Body, group: GroupState): void {\n const groups = state.groups.of.get(body);\n if (groups) groups.push(group);\n else state.groups.of.set(body, [group]);\n}\n\nfunction leave(state: Runtime, body: Body, group: GroupState): void {\n const groups = state.groups.of.get(body) ?? [];\n const index = groups.indexOf(group);\n if (index >= 0) groups.splice(index, 1);\n}\n","import type { Body } from '../../bodies/body';\nimport type { Runtime } from '../../runtime/runtime-state';\nimport { shownChanged } from './host-groups';\n\nexport function shown(state: Runtime, body: Body): boolean {\n return body.visible || state.hostDrawn.get(body) === true;\n}\n\nexport function setShown(state: Runtime, body: Body, value: boolean): void {\n const before = shown(state, body);\n if (state.hostDrawn.has(body)) state.hostDrawn.set(body, value);\n else body.visible = value;\n if (shown(state, body) !== before) shownChanged(state, body);\n}\n\nexport function handToHost(state: Runtime, body: Body, hostDrawn: boolean): void {\n const handed = hostDrawn && !state.hostDrawn.has(body);\n const before = shown(state, body);\n shareDrawing(state, body, hostDrawn);\n if (handed ? shown(state, body) : shown(state, body) !== before) shownChanged(state, body);\n}\n\nfunction shareDrawing(state: Runtime, body: Body, hostDrawn: boolean): void {\n const logical = state.hostDrawn.get(body);\n if (hostDrawn && logical === undefined) {\n state.hostDrawn.set(body, body.visible);\n body.visible = false;\n } else if (!hostDrawn && logical !== undefined) {\n state.hostDrawn.delete(body);\n body.visible = logical;\n }\n}\n","import type { Body } from '../../bodies/body';\nimport type { Runtime } from '../../runtime/runtime-state';\nimport { shown } from './host-drawn';\nimport { groupDisplayed, groupedBodies } from './host-groups';\n\nexport function isDisplayed(state: Runtime, body: Body): boolean {\n if (!shown(state, body)) return false;\n return (state.displayed.get(body) ?? -Infinity) >= state.pass - 1 || groupDisplayed(state, body);\n}\n\nexport function displayedBodies(state: Runtime): Body[] {\n return [...new Set([...state.displayed.keys(), ...groupedBodies(state)])].filter((body) => isDisplayed(state, body));\n}\n\nexport function stampedCount(state: Runtime): number {\n let count = 0;\n for (const body of state.displayed.keys()) if (isDisplayed(state, body)) count++;\n return count;\n}\n\nexport function stampDisplayed(state: Runtime, body: Body): void {\n if (!isDisplayed(state, body)) wakeDisplayed(state, body);\n state.displayed.set(body, state.pass);\n}\n\nexport function wakeDisplayed(state: Runtime, body: Body): void {\n const shapeId = body.lastInfo.shapeId;\n state.lod.stale = true;\n if (shapeId) delete state.lod.shapes.get(shapeId)?.overrides;\n}\n","import type { NodeInfo } from '../dto/node-info';\nimport type { OGWorldGraph } from '../kernel/kernel-loader';\nimport { call } from '../kernel/kernel-session';\nimport { runtime } from '../runtime/runtime-state';\nimport { decodeCreation, decodeDisplayBuckets, decodeNodeInfo } from './codec';\n\nexport function worldGraph(): OGWorldGraph {\n return runtime().graph;\n}\n\nexport function node(ogId: string, label: string): NodeInfo {\n return decodeNodeInfo(call(label, () => worldGraph().node(ogId)), label);\n}\n\nexport function checkHandle(label: string, target: { handle: number; generation: number }): void {\n call(label, () => worldGraph().nodeByHandle(target.handle, target.generation));\n}\n\nexport function creation(value: string, label: string): string {\n return decodeCreation(value, label).ogId;\n}\n\nexport function displayBuckets(ogId: string, label: string): { floor: number; static: number } {\n return decodeDisplayBuckets(call(label, () => worldGraph().displayBuckets(ogId)), label);\n}\n","import type { Body } from '../../bodies/body';\nimport { OGError } from '../../errors';\nimport type { Runtime } from '../../runtime/runtime-state';\nimport { displayBuckets } from '../../world-graph/world-graph-client';\n\nexport type ShapeBuckets = { revision: number; floor: number; static: number; error?: unknown };\n\nexport function shapeBuckets(state: Runtime, body: Body): ShapeBuckets | undefined {\n const { shapeId, shapeRevision } = body.lastInfo;\n if (!shapeId || shapeRevision === null) return undefined;\n let entry = state.shapeBuckets.get(shapeId);\n if (entry?.revision !== shapeRevision) {\n entry = readBuckets(body.ogId, shapeRevision);\n state.shapeBuckets.set(shapeId, entry);\n }\n return entry.error === undefined ? entry : undefined;\n}\n\nfunction readBuckets(ogId: string, revision: number): ShapeBuckets {\n try {\n return { revision, ...displayBuckets(ogId, 'OpenGeometry.flush') };\n } catch (error) {\n if (!(error instanceof OGError) || error.code === 'KernelPanic') throw error;\n return { revision, floor: 0, static: 0, error };\n }\n}\n\nexport function localTarget(world: number, body: Body): number | undefined {\n const scale = worldScale(body);\n return scale > 0 && Number.isFinite(scale) ? world / scale : undefined;\n}\n\nfunction worldScale(body: Body): number {\n return Math.cbrt(Math.abs(body.matrixWorld.determinant()));\n}\n\nexport function finestLocal(bodies: Iterable<Body>, valueOf: (body: Body) => number | undefined): number | undefined {\n let finest: number | undefined;\n for (const body of bodies) {\n const value = valueOf(body);\n const target = value === undefined ? undefined : localTarget(value, body);\n if (target !== undefined) finest = finest === undefined ? target : Math.min(finest, target);\n }\n return finest;\n}\n","import { OGError } from '../../errors';\nimport { HYSTERESIS_KEEP } from '../../limits';\n\nexport function deflectionBucket(target: number): number {\n if (!Number.isFinite(target) || target <= 0) {\n throw new OGError('InvalidParameter', 'deflection', 'invalid display deflection');\n }\n return 2 ** Math.floor(Math.log2(target));\n}\n\nexport function wantedBucket(target: number, floor: number, previous?: number, moving = false): number {\n const value = Math.max(floor, deflectionBucket(target));\n if (previous === undefined) return value;\n const [low, high] = HYSTERESIS_KEEP;\n const kept = moving ? target >= low * previous : target >= low * previous && target <= high * previous;\n if (kept) return previous;\n return value;\n}\n","import type { Body } from '../../bodies/body';\nimport type { Bounds } from '../../dto/bounds';\nimport { call } from '../../kernel/kernel-session';\nimport type { Runtime } from '../../runtime/runtime-state';\nimport { decodeBounds } from '../../world-graph/codec';\n\nexport function displayBounds(state: Runtime, body: Body, revision: bigint): Bounds | null {\n const cached = state.displayBounds.get(body);\n if (cached?.revision === revision) return cached.bounds;\n const label = `${body.bodyType}.getBounds`;\n const bounds = decodeBounds(call(label, () => state.graph.bounds(body.ogId)), label);\n state.displayBounds.set(body, { revision, bounds });\n return bounds;\n}\n","import * as THREE from 'three';\n\nexport function worldUnitsPerPixel(\n camera: THREE.Camera,\n bounds: [number, number, number, number, number, number],\n height: number,\n): number {\n if (camera instanceof THREE.OrthographicCamera) return (camera.top - camera.bottom) / (camera.zoom * height);\n if (!(camera instanceof THREE.PerspectiveCamera)) return 1 / height;\n const centre = new THREE.Vector3(\n (bounds[0] + bounds[3]) / 2, (bounds[1] + bounds[4]) / 2, (bounds[2] + bounds[5]) / 2,\n );\n centre.applyMatrix4(camera.matrixWorldInverse);\n const extent = Math.hypot(bounds[3] - bounds[0], bounds[4] - bounds[1], bounds[5] - bounds[2]) / 2;\n const depth = Math.max(camera.near, -centre.z - extent);\n return 2 * depth * Math.tan(THREE.MathUtils.degToRad(camera.getEffectiveFOV()) / 2) / height;\n}\n","import * as THREE from 'three';\nimport type { Body } from '../../bodies/body';\nimport { call } from '../../kernel/kernel-session';\nimport { EVALUATION_INTERVAL_MS, MOTION_WINDOW_MS, PIXELS_AT_REST, PIXELS_MOVING } from '../../limits';\nimport { currentRuntime, type Runtime } from '../../runtime/runtime-state';\nimport { finestLocal, localTarget, shapeBuckets, type ShapeBuckets } from './body-size';\nimport { deflectionBucket, wantedBucket } from './deflection';\nimport { displayBounds } from './display-bounds';\nimport { displayedBodies, isDisplayed, stampedCount } from './displayed';\nimport { groupsKey, queueShapes } from './host-groups';\nimport { worldUnitsPerPixel } from './screen-metrics';\n\ntype Tiers = { temporary: number | undefined; own: number | undefined; global: number | undefined };\ntype SeenCamera = { camera: THREE.Camera; height: number };\ntype ShapeTarget = { target: number; body: Body };\ntype TemporaryTarget = { deflection: number };\ntype PassInputs = { revision: bigint; flushed: bigint; moving: boolean; displayed: number; groups: number[] };\n\ntype ShapeLod = {\n shapeId: string;\n target?: number;\n previous?: number;\n failed: Set<string>;\n pinned?: { revision: number; bucket: number };\n forced?: number;\n error?: { revision: number; error: unknown };\n overrides?: { pass: number; tiers: Tiers };\n};\n\nexport type LodState = {\n shapes: Map<string, ShapeLod>;\n camera: Float64Array;\n frames: WeakMap<THREE.WebGLRenderer, number>;\n bufferSize: THREE.Vector2;\n initialised: boolean;\n lastMotion: number;\n lastSchedule: number;\n settleTimer?: ReturnType<typeof setTimeout>;\n lastSeen?: SeenCamera;\n temporaries: TemporaryTarget[];\n stale: boolean;\n evaluated?: PassInputs;\n drawn: Set<Body>;\n walked: WeakMap<Body, number>;\n refresh: () => void;\n};\n\nexport function createLodState(refresh: () => void): LodState {\n return {\n shapes: new Map(), camera: new Float64Array(33), frames: new WeakMap(), bufferSize: new THREE.Vector2(),\n initialised: false, lastMotion: -Infinity, lastSchedule: -Infinity, temporaries: [], stale: true, drawn: new Set(),\n walked: new WeakMap(), refresh,\n };\n}\n\nexport function observe(state: Runtime, camera: THREE.Camera, height: number, now: number): void {\n const lod = state.lod;\n const moved = storeChanged(lod.camera, camera.matrixWorld.elements, 0);\n const projected = storeChanged(lod.camera, camera.projectionMatrix.elements, 16);\n const resized = lod.camera[32] !== height;\n lod.camera[32] = height;\n if (lod.initialised && (moved || projected || resized)) motionHint(state, now);\n lod.initialised = true;\n lod.lastSeen = { camera, height };\n}\n\nfunction storeChanged(target: Float64Array, values: readonly number[], offset: number): boolean {\n const same = values.every((value, index) => target[offset + index] === value);\n if (!same) target.set(values, offset);\n return !same;\n}\n\nexport function motionHint(state: Runtime, now: number): void {\n const lod = state.lod;\n lod.lastMotion = now;\n lod.stale = true;\n clearTimeout(lod.settleTimer);\n lod.settleTimer = setTimeout(() => { fireSettle(state); }, MOTION_WINDOW_MS);\n}\n\nfunction fireSettle(state: Runtime): void {\n delete state.lod.settleTimer;\n if (currentRuntime() !== state || state.poisoned) return;\n if (evaluatePass(state, Date.now(), true)) state.lod.refresh();\n}\n\nexport function settleNow(state: Runtime): void {\n clearTimeout(state.lod.settleTimer);\n delete state.lod.settleTimer;\n evaluatePass(state, Date.now(), true);\n}\n\nexport function evaluatePass(state: Runtime, now: number, forced: boolean): boolean {\n const lod = state.lod;\n const seen = lod.lastSeen;\n if (!seen || state.poisoned || (!forced && now - lod.lastSchedule < EVALUATION_INTERVAL_MS)) return false;\n lod.lastSchedule = now;\n const moving = !forced && now - lod.lastMotion < MOTION_WINDOW_MS;\n const revision = call('OpenGeometry.flush', () => state.graph.revision());\n const groups = [state.groups.revision, groupsKey(state)];\n const inputs = { revision, flushed: state.revision, moving, displayed: stampedCount(state), groups };\n if (!forced && !stalePass(lod, inputs)) return false;\n const bodies = displayedBodies(state);\n lod.stale = false;\n lod.evaluated = inputs;\n let changed = false;\n const pixels = moving ? PIXELS_MOVING : PIXELS_AT_REST;\n for (const [shapeId, { target, body }] of shapeTargets(state, seen, bodies, inputs.revision, pixels)) {\n const buckets = shapeBuckets(state, body);\n if (!buckets) continue;\n const entry = shapeLod(state, shapeId);\n const previous = entry.previous;\n entry.target = target;\n entry.previous = wantedBucket(target, buckets.floor, previous, moving);\n changed ||= entry.previous !== previous;\n }\n return changed;\n}\n\nfunction stalePass(lod: LodState, inputs: PassInputs): boolean {\n const last = lod.evaluated;\n return lod.stale || !last || last.revision !== inputs.revision || last.flushed !== inputs.flushed\n || last.moving !== inputs.moving || last.displayed !== inputs.displayed\n || last.groups.some((value, index) => value !== inputs.groups[index]);\n}\n\nfunction shapeTargets(\n state: Runtime, seen: SeenCamera, bodies: Body[], revision: bigint, pixels: number,\n): Map<string, ShapeTarget> {\n const targets = new Map<string, ShapeTarget>();\n for (const body of bodies) {\n const shapeId = body.lastInfo.shapeId;\n const bounds = shapeId ? displayBounds(state, body, revision) : null;\n const world = bounds ? worldUnitsPerPixel(seen.camera, bounds, seen.height) * pixels : undefined;\n const target = world === undefined ? undefined : localTarget(world, body);\n if (!shapeId || target === undefined || !Number.isFinite(target) || target <= 0) continue;\n const best = targets.get(shapeId);\n if (!best || target < best.target) targets.set(shapeId, { target, body });\n }\n return targets;\n}\n\nexport function wantedKey(state: Runtime, body: Body): number | undefined {\n const { shapeId, shapeRevision: revision } = body.lastInfo;\n if (!shapeId || revision === null) return undefined;\n const buckets = shapeBuckets(state, body);\n if (!buckets) return undefined;\n const entry = shapeLod(state, shapeId);\n const forced = entry.forced;\n if (forced !== undefined) {\n delete entry.forced;\n return forced;\n }\n if (entry.pinned?.revision === revision) return entry.pinned.bucket;\n let bucket = chosenBucket(state, body, entry, buckets);\n while (entry.failed.has(failedKey(revision, bucket))) bucket *= 2;\n return bucket;\n}\n\nfunction chosenBucket(state: Runtime, body: Body, entry: ShapeLod, buckets: ShapeBuckets): number {\n const override = overrideTarget(state, body, entry);\n if (override !== undefined) return Math.max(buckets.floor, deflectionBucket(override));\n if (entry.previous !== undefined) return Math.max(buckets.floor, entry.previous);\n return buckets.static;\n}\n\nfunction overrideTarget(state: Runtime, body: Body, entry: ShapeLod): number | undefined {\n if (entry.overrides?.pass !== state.pass) {\n const members = [...(state.byShape.get(entry.shapeId) ?? [])].filter((member) => isDisplayed(state, member));\n entry.overrides = { pass: state.pass, tiers: tiers(state, members) };\n }\n const shape = entry.overrides.tiers;\n const own = tiers(state, [body]);\n return finer(shape.temporary, own.temporary) ?? finer(shape.own, own.own) ?? finer(shape.global, own.global);\n}\n\nfunction tiers(state: Runtime, bodies: Body[]): Tiers {\n return {\n temporary: finestLocal(bodies, () => state.lod.temporaries.at(-1)?.deflection),\n own: finestLocal(bodies, (body) => body.appearance.deflection),\n global: finestLocal(bodies, () => state.displayDeflection),\n };\n}\n\nfunction finer(first: number | undefined, second: number | undefined): number | undefined {\n if (first === undefined) return second;\n return second === undefined ? first : Math.min(first, second);\n}\n\nfunction shapeLod(state: Runtime, shapeId: string): ShapeLod {\n let entry = state.lod.shapes.get(shapeId);\n if (!entry) {\n entry = { shapeId, failed: new Set() };\n state.lod.shapes.set(shapeId, entry);\n }\n return entry;\n}\n\nfunction failedKey(revision: number, bucket: number): string {\n return `${String(revision)}#${String(bucket)}`;\n}\n\nexport function overrideChanged(state: Runtime, shapeId?: string): void {\n state.lod.stale = true;\n queueShapes(state, shapeId);\n const entries = shapeId === undefined ? [...state.lod.shapes.values()] : [state.lod.shapes.get(shapeId)];\n for (const entry of entries) {\n if (!entry) continue;\n clearMarks(entry);\n delete entry.previous;\n }\n}\n\nexport function pushTemporaryTarget(state: Runtime, deflection: number): TemporaryTarget {\n const token = { deflection };\n state.lod.temporaries.push(token);\n clearAllMarks(state);\n return token;\n}\n\nexport function popTemporaryTarget(state: Runtime, token: TemporaryTarget): void {\n const temporaries = state.lod.temporaries;\n temporaries.splice(temporaries.indexOf(token), 1);\n clearAllMarks(state);\n}\n\nfunction clearAllMarks(state: Runtime): void {\n state.lod.stale = true;\n queueShapes(state);\n for (const entry of state.lod.shapes.values()) clearMarks(entry);\n}\n\nfunction clearMarks(entry: ShapeLod): void {\n entry.failed.clear();\n delete entry.pinned;\n delete entry.overrides;\n}\n\nexport function markFailed(state: Runtime, shapeId: string, revision: number, bucket: number): boolean {\n const entry = shapeLod(state, shapeId);\n const key = failedKey(revision, bucket);\n if (entry.failed.has(key)) return false;\n entry.failed.add(key);\n entry.pinned = { revision, bucket: bucket * 2 };\n state.lod.stale = true;\n return true;\n}\n\nexport function retryBucket(state: Runtime, shapeId: string, revision: number): number | undefined {\n const pinned = state.lod.shapes.get(shapeId)?.pinned;\n return pinned?.revision === revision ? pinned.bucket : undefined;\n}\n\nexport function shapePriority(state: Runtime, shapeId: string): number {\n return state.lod.shapes.get(shapeId)?.target ?? 0;\n}\n\nexport function recordError(state: Runtime, shapeId: string, revision: number, error: unknown): void {\n shapeLod(state, shapeId).error = { revision, error };\n}\n\nexport function clearError(state: Runtime, shapeId: string, revision: number): void {\n const entry = state.lod.shapes.get(shapeId);\n if (entry?.error?.revision === revision) delete entry.error;\n}\n\nexport function capturedError(state: Runtime, body: Body): unknown {\n const { shapeId, shapeRevision } = body.lastInfo;\n const failure = shapeId ? state.lod.shapes.get(shapeId)?.error : undefined;\n if (failure?.revision === shapeRevision) return failure.error;\n const buckets = shapeId ? state.shapeBuckets.get(shapeId) : undefined;\n return buckets?.revision === shapeRevision ? buckets.error : undefined;\n}\n\nexport function forceNextBucket(state: Runtime, shapeId: string, bucket: number): void {\n shapeLod(state, shapeId).forced = bucket;\n state.lod.stale = true;\n queueShapes(state, shapeId);\n}\n","import type { DisplayBuffers } from '../../dto/display-buffers';\nimport { OGError } from '../../errors';\n\nconst SCALARS = ['revision', 'bucket', 'achievedDeflection', 'triangles'] as const;\n\nexport function validateDisplayBuffers(value: unknown): DisplayBuffers {\n if (!isDisplayBuffers(value) || !hasConsistentLengths(value)) {\n throw new OGError('WorkerFailure', 'tessellation', 'invalid display buffer structure');\n }\n return value;\n}\n\nfunction isDisplayBuffers(value: unknown): value is DisplayBuffers {\n if (typeof value !== 'object' || value === null) return false;\n const field = (key: string): unknown => Reflect.get(value, key);\n return field('positions') instanceof Float32Array && field('normals') instanceof Float32Array\n && field('indices') instanceof Uint32Array && field('faceRanges') instanceof Uint32Array\n && field('outline') instanceof Float32Array && field('edgeIds') instanceof Uint32Array\n && field('smoothEdges') instanceof Uint8Array\n && field('origin') instanceof Float64Array && SCALARS.every((key) => typeof field(key) === 'number');\n}\n\nfunction hasConsistentLengths(buffers: DisplayBuffers): boolean {\n return buffers.origin.length === 3 && buffers.positions.length % 3 === 0\n && buffers.normals.length === buffers.positions.length\n && buffers.indices.length % 3 === 0 && buffers.indices.length <= 6_000_000\n && buffers.outline.length % 6 === 0 && buffers.outline.length <= 12_000_000\n && buffers.edgeIds.length === buffers.outline.length / 6 && buffers.faceRanges.length % 3 === 0;\n}\n","import * as THREE from 'three';\nimport type { DisplayBuffers } from '../../dto/display-buffers';\nimport { validateDisplayBuffers } from './validate-display-buffers';\n\nexport function recordKey(shapeId: string, revision: number, bucket: number, smoothAngle?: number): string {\n return `${shapeId}@${String(revision)}#${String(Math.log2(bucket))}~${String(smoothAngle)}`;\n}\n\nexport class GeometryRecord {\n readonly key: string;\n readonly surface: THREE.BufferGeometry | null;\n readonly outline: THREE.BufferGeometry;\n readonly origin: THREE.Vector3;\n readonly faceRanges: Uint32Array;\n readonly edgeIds: Uint32Array;\n readonly smoothEdges: Uint8Array;\n readonly revision: number;\n readonly bucket: number;\n readonly triangles: number;\n readonly bytes: number;\n refs = 0;\n lastUse = 0;\n\n constructor(readonly shapeId: string, buffers: DisplayBuffers, smoothAngle?: number) {\n validateDisplayBuffers(buffers);\n this.key = recordKey(shapeId, buffers.revision, buffers.bucket, smoothAngle);\n this.revision = buffers.revision;\n this.bucket = buffers.bucket;\n this.triangles = buffers.triangles;\n this.origin = new THREE.Vector3(buffers.origin[0], buffers.origin[1], buffers.origin[2]);\n this.faceRanges = buffers.faceRanges;\n this.edgeIds = buffers.edgeIds;\n this.smoothEdges = buffers.smoothEdges;\n this.bytes = buffers.positions.byteLength + buffers.normals.byteLength + buffers.indices.byteLength\n + buffers.faceRanges.byteLength + buffers.outline.byteLength + buffers.edgeIds.byteLength\n + buffers.smoothEdges.byteLength;\n this.surface = buffers.indices.length ? new THREE.BufferGeometry() : null;\n if (this.surface) {\n this.surface.setAttribute('position', new THREE.BufferAttribute(buffers.positions, 3));\n this.surface.setAttribute('normal', new THREE.BufferAttribute(buffers.normals, 3));\n this.surface.setIndex(new THREE.BufferAttribute(buffers.indices, 1));\n this.surface.computeBoundingBox();\n this.surface.computeBoundingSphere();\n }\n this.outline = new THREE.BufferGeometry();\n this.outline.setAttribute('position', new THREE.BufferAttribute(buffers.outline, 3));\n if (buffers.outline.length) {\n this.outline.computeBoundingBox();\n this.outline.computeBoundingSphere();\n }\n }\n\n dispose(): void {\n this.surface?.dispose();\n this.outline.dispose();\n }\n}\n","import * as THREE from 'three';\nimport type { ChangeSet } from '../../dto/change-set';\nimport type { DisplayBuffers } from '../../dto/display-buffers';\nimport { OGError } from '../../errors';\nimport { MAX_TRIANGLES } from '../../limits';\nimport { call } from '../../kernel/kernel-session';\nimport type { Body } from '../../bodies/body';\nimport { emit } from '../../runtime/event-bus';\nimport { bodyKey, currentRuntime, reindexShape, runtime, type Runtime } from '../../runtime/runtime-state';\nimport { decodeChangeSet } from '../../world-graph/codec';\nimport { displayedBodies, isDisplayed, stampDisplayed } from '../lod/displayed';\nimport { shown } from '../lod/host-drawn';\nimport { queueGrouped } from '../lod/host-groups';\nimport { clearError, markFailed, recordError, retryBucket, shapePriority, wantedKey } from '../lod/lod-controller';\nimport type { TessellationRequest } from '../provider';\nimport { GeometryRecord } from '../records/geometry-record';\nimport { validateDisplayBuffers } from '../records/validate-display-buffers';\n\ntype GeometryTarget = {\n body: Body; shapeId: string; revision: number; bucket: number; smoothAngle: number | undefined; key: string;\n};\n\nexport type FlushOptions = { geometry?: 'sync'; bodies?: readonly Body[] };\n\nexport function flush(options: FlushOptions = {}): void {\n const state = runtime();\n const given = options.bodies && liveBodies(state, options.bodies, options.geometry);\n applyFlush(state);\n if (options.geometry !== 'sync') return;\n for (const body of given ?? displayedBodies(state)) {\n if (given && (!shown(state, body) || !body.lastInfo.shapeId || body.lastInfo.shapeRevision === null)) continue;\n if (given) stampDisplayed(state, body);\n ensureGeometry(body, true);\n }\n if (state.readyShapes.size > 0) applyFlush(state);\n}\n\nfunction liveBodies(state: Runtime, bodies: readonly Body[], geometry: FlushOptions['geometry']): readonly Body[] {\n const label = 'OpenGeometry.flush';\n if (geometry !== 'sync') throw new OGError('InvalidParameter', label, \"bodies needs geometry: 'sync'\");\n return checkedBodies(state, bodies, label);\n}\n\nexport function checkedBodies(\n state: Runtime, bodies: readonly Body[], label: string, skipDisposed = false,\n): readonly Body[] {\n const list: unknown = bodies;\n if (!Array.isArray(list)) throw new OGError('InvalidParameter', label, 'bodies must be an array of bodies');\n const live: Body[] = [];\n for (const body of bodies) {\n const item: unknown = body;\n if (!(item instanceof THREE.Object3D) || !('swapReadyRecord' in item)) {\n throw new OGError('InvalidParameter', label, 'bodies must hold only Wire, Sheet or Solid bodies');\n }\n if (state.bodies.get(bodyKey(body.handle, body.generation)) === body) live.push(body);\n else if (!skipDisposed) throw new OGError('Disposed', label, `${body.ogId} is disposed`);\n }\n return live;\n}\n\nexport function flushForDispose(): void {\n applyFlush(runtime());\n}\n\nexport function notifyBody(body: Body, type: 'geometrychanged' | 'placementchanged'): void {\n try {\n body.dispatchEvent({ type });\n } catch (error) {\n emit('error', error);\n }\n}\n\nfunction applyFlush(state: Runtime): void {\n const revision = call('OpenGeometry.flush', () => state.graph.revision());\n state.graphMoved = false;\n if (!state.flushing && (revision !== state.revision || (!state.renderPassActive && state.readyShapes.size > 0))) {\n state.flushing = true;\n const moved: Body[] = [];\n try {\n const packet = call('OpenGeometry.flush', (): unknown => state.graph.changesSince(state.revision));\n const { changes, matrices } = decodeChangeSet(packet, 'OpenGeometry.flush');\n state.revision = revision;\n moved.push(...applyChanges(state, changes, matrices));\n for (const body of swapTargets(state, changes)) body.swapReadyRecord();\n purgeChanged(state, changes);\n state.flushes++;\n } finally {\n state.flushing = false;\n }\n for (const body of moved) notifyBody(body, 'placementchanged');\n }\n}\n\nfunction swapTargets(state: Runtime, changes: ChangeSet): Body[] {\n const targets = new Set<Body>();\n for (const change of [...changes.added, ...changes.changed]) {\n const body = state.bodies.get(bodyKey(change.handle, change.generation));\n if (body) targets.add(body);\n }\n for (const shapeId of state.readyShapes) for (const body of state.byShape.get(shapeId) ?? []) targets.add(body);\n state.readyShapes.clear();\n return [...targets].filter((body) => isDisplayed(state, body));\n}\n\nfunction applyChanges(state: Runtime, changes: ChangeSet, matrices: Float64Array): Body[] {\n const moved: Body[] = [];\n let offset = 0;\n for (const change of [...changes.added, ...changes.changed]) {\n const body = state.bodies.get(bodyKey(change.handle, change.generation));\n if (body) {\n const previous = body.lastInfo.shapeId;\n body.lastInfo = { ...body.lastInfo, shapeId: change.shapeId, shapeRevision: change.shapeRevision };\n reindexShape(state, body, previous);\n const matrix = matrices.subarray(offset, offset + 16);\n if (body.matrixWorld.elements.some((value, index) => value !== matrix[index])) moved.push(body);\n body.applyWorldMatrix(matrix);\n queueGrouped(state, body);\n }\n offset += 16;\n }\n for (const change of changes.removed) state.bodies.get(bodyKey(change.handle, change.generation))?.hideForDispose();\n return moved;\n}\n\nfunction purgeChanged(state: Runtime, changes: ChangeSet): void {\n const shapes = new Map<string, { shapeId: string; revision: number }>();\n for (const { shapeId, shapeRevision } of [...changes.added, ...changes.changed]) {\n if (shapeId !== null && shapeRevision !== null) {\n shapes.set(`${shapeId}@${String(shapeRevision)}`, { shapeId, revision: shapeRevision });\n }\n }\n for (const { shapeId, revision } of shapes.values()) state.records.purge(shapeId, revision);\n}\n\nexport function wanted(body: Body): number | undefined {\n return wantedKey(runtime(), body);\n}\n\nexport function ensureGeometry(body: Body, sync = false): void {\n const state = runtime();\n const target = geometryTarget(state, body);\n if (!target) return;\n const record = state.records.get(target.shapeId, target.revision, target.bucket, target.smoothAngle);\n if (record) {\n body.install(record);\n return;\n }\n if (sync || state.provider.compute) {\n computeNow(state, target, sync);\n return;\n }\n if (state.pending.has(target.key)) return;\n requestLater(state, target);\n}\n\nfunction geometryTarget(state: Runtime, body: Body): GeometryTarget | undefined {\n const { shapeId, shapeRevision: revision } = body.lastInfo;\n if (!shapeId || revision === null || !shown(state, body)) return undefined;\n const bucket = wantedKey(state, body);\n if (bucket === undefined) return undefined;\n const { smoothAngle } = body.appearance;\n return { body, shapeId, revision, bucket, smoothAngle, key: pendingKey(shapeId, revision, bucket, smoothAngle) };\n}\n\nfunction pendingKey(shapeId: string, revision: number, bucket: number, smoothAngle?: number): string {\n return `${shapeId}@${String(revision)}#${String(bucket)}~${String(smoothAngle)}`;\n}\n\nfunction computeNow(state: Runtime, target: GeometryTarget, sync: boolean): void {\n const first = computeFailure(state, target, sync);\n if (!first) return;\n const retry = coarserRetry(state, target, first.error);\n const failure = retry ? computeFailure(state, retry, false) : first;\n if (failure) reportFailure(state, target, failure.error);\n}\n\nfunction computeFailure(state: Runtime, target: GeometryTarget, sync: boolean): { error: unknown } | undefined {\n try {\n const request = requestFor(state, target);\n if (sync) state.provider.cancelShape(target.shapeId, request.generation);\n receive(state, target, computed(state, request));\n return undefined;\n } catch (error) {\n if (fatal(state, error)) throw error;\n return { error };\n }\n}\n\nfunction coarserRetry(state: Runtime, target: GeometryTarget, error: unknown): GeometryTarget | undefined {\n const { shapeId, revision, bucket, smoothAngle } = target;\n if (!(error instanceof OGError && error.code === 'LimitExceeded') || !markFailed(state, shapeId, revision, bucket)) {\n return undefined;\n }\n emit('warning', { code: 'LimitExceeded', shapeId, revision, bucket, retryBucket: bucket * 2 });\n return { ...target, bucket: bucket * 2, key: pendingKey(shapeId, revision, bucket * 2, smoothAngle) };\n}\n\nfunction reportFailure(state: Runtime, target: GeometryTarget, error: unknown): void {\n recordError(state, target.shapeId, target.revision, error);\n emit('error', error);\n}\n\nfunction computed(state: Runtime, request: TessellationRequest): DisplayBuffers {\n if (state.provider.compute) return state.provider.compute(request);\n return validateDisplayBuffers(call('OpenGeometry.flush', (): unknown =>\n state.graph.buffers(request.shapeId, request.bucket, request.maxTriangles, request.smoothAngle)));\n}\n\nfunction fatal(state: Runtime, error: unknown): boolean {\n return state.poisoned && error instanceof OGError && error.code === 'KernelPanic';\n}\n\nfunction requestLater(state: Runtime, target: GeometryTarget): void {\n let request = requestFor(state, target);\n const promise = state.provider.request(request).catch(async (error: unknown) => {\n const retry = currentRuntime() === state ? coarserRetry(state, target, error) : undefined;\n if (!retry) throw error;\n request = requestFor(state, retry);\n return state.provider.request(request);\n }).then((buffers) => {\n if (currentRuntime() === state && accepted(state, target, buffers, request.generation)) {\n receive(state, target, buffers);\n }\n }).catch((error: unknown) => {\n if (currentRuntime() !== state || fatal(state, error)) return;\n if (!(error instanceof OGError && error.code === 'Cancelled')) reportFailure(state, target, error);\n }).finally(() => { state.pending.delete(target.key); });\n state.pending.set(target.key, promise);\n}\n\nfunction accepted(state: Runtime, target: GeometryTarget, buffers: DisplayBuffers, generation: number): boolean {\n const { body, shapeId, revision } = target;\n if (generation === (state.generations.get(shapeId) ?? 0)) return true;\n if (buffers.bucket === retryBucket(state, shapeId, revision)) return true;\n const wanted = isDisplayed(state, body) ? wantedKey(state, body) : undefined;\n if (wanted === undefined) return false;\n const shown = body.record?.shapeId === shapeId && body.record.revision === revision ? body.record.bucket : undefined;\n return shown === undefined || Math.abs(Math.log2(buffers.bucket / wanted)) < Math.abs(Math.log2(shown / wanted));\n}\n\nfunction requestFor(state: Runtime, target: GeometryTarget): TessellationRequest {\n const { shapeId, revision, bucket, smoothAngle } = target;\n const generation = (state.generations.get(shapeId) ?? 0) + 1;\n state.generations.set(shapeId, generation);\n const priority = shapePriority(state, shapeId);\n return { shapeId, revision, bucket, priority, maxTriangles: MAX_TRIANGLES, smoothAngle, generation };\n}\n\nfunction receive(state: Runtime, target: GeometryTarget, buffers: DisplayBuffers): void {\n const { shapeId, revision } = target;\n const holders = [...(state.byShape.get(shapeId) ?? [])];\n const current = holders.filter((body) => body.lastInfo.shapeRevision === revision);\n if (current.length === 0) return;\n const record = state.records.put(new GeometryRecord(shapeId, buffers, target.smoothAngle));\n state.readyShapes.add(shapeId);\n clearError(state, shapeId, revision);\n if (state.renderPassActive) {\n for (const body of current) if (isDisplayed(state, body)) body.install(record);\n } else if (shown(state, target.body) && current.includes(target.body)) target.body.install(record);\n const ogIds = holders.map((body) => body.ogId);\n emit('geometry', { shapeId, revision, bucket: buffers.bucket, ogIds, stats: { triangles: record.triangles } });\n if (!state.renderPassActive) flush();\n state.records.purge(shapeId, revision);\n}\n","import type { Body } from '../../bodies/body';\nimport { OGError } from '../../errors';\nimport { currentRuntime, runtime, type Runtime } from '../../runtime/runtime-state';\nimport { handToHost, shown } from '../lod/host-drawn';\nimport { displayedBodies, isDisplayed, stampDisplayed, wakeDisplayed } from '../lod/displayed';\nimport { takeWaiting } from '../lod/host-groups';\nimport { evaluatePass } from '../lod/lod-controller';\nimport { checkedBodies, ensureGeometry, flush } from './geometry-scheduler';\n\nexport function noteDisplayed(body: Body): void {\n const state = runtime();\n const starting = beginPass(state);\n stampDisplayed(state, body);\n state.lod.walked.set(body, state.pass);\n state.lod.drawn.delete(body);\n if (starting || state.graphMoved) flush();\n ensureGeometry(body);\n}\n\nexport function noteDrawn(body: Body): void {\n const state = runtime();\n if (!shown(state, body) || (state.renderPassActive && state.lod.walked.get(body) === state.pass)) return;\n beginPass(state);\n stampDisplayed(state, body);\n state.lod.drawn.add(body);\n}\n\nexport function markDisplayed(bodies: readonly Body[]): void {\n const state = runtime();\n for (const body of checkedBodies(state, bodies, 'OpenGeometry.markDisplayed')) noteDrawn(body);\n}\n\nexport function setHostDrawn(bodies: readonly Body[], hostDrawn: boolean): void {\n const state = runtime();\n const label = 'OpenGeometry.setHostDrawn';\n const flag: unknown = hostDrawn;\n if (typeof flag !== 'boolean') throw new OGError('InvalidParameter', label, 'hostDrawn must be a boolean');\n for (const body of checkedBodies(state, bodies, label, !hostDrawn)) handToHost(state, body, hostDrawn);\n}\n\nexport function beginPass(state: Runtime): boolean {\n if (state.renderPassActive) return false;\n state.renderPassActive = true;\n queueMicrotask(() => { endPass(state); });\n return true;\n}\n\nfunction endPass(state: Runtime): void {\n if (currentRuntime() !== state) return;\n const drawn = new Set(state.lod.drawn);\n state.lod.drawn.clear();\n try {\n installDrawn(state, drawn);\n } finally {\n state.renderPassActive = false;\n state.pass++;\n }\n if (state.readyShapes.size > 0) flush();\n if (evaluatePass(state, Date.now(), false)) refreshDisplayed(state);\n}\n\nfunction installDrawn(state: Runtime, drawn: ReadonlySet<Body>): void {\n const groups = state.groups;\n if (drawn.size === 0 && !groups.drawn && groups.pending.size === 0 && groups.woken.size === 0) return;\n flush();\n for (const body of takeWaiting(state)) {\n if (drawn.has(body) || !isDisplayed(state, body)) continue;\n wakeDisplayed(state, body);\n ensureGeometry(body);\n }\n for (const body of drawn) if (isDisplayed(state, body)) ensureGeometry(body);\n}\n\nexport function refreshDisplayed(state: Runtime): void {\n for (const body of displayedBodies(state)) ensureGeometry(body);\n}\n","import type { DisplayBuffers } from '../dto/display-buffers';\nimport type { OGWorldGraph } from '../kernel/kernel-loader';\nimport { call } from '../kernel/kernel-session';\nimport type { TessellationProvider, TessellationRequest } from './provider';\nimport { validateDisplayBuffers } from './records/validate-display-buffers';\n\nexport class InlineBackend implements TessellationProvider {\n readonly activeBackend = 'inline' as const;\n\n constructor(private graph: OGWorldGraph) {}\n\n ensureSnapshot(): Promise<void> {\n return Promise.resolve();\n }\n\n compute(value: TessellationRequest): DisplayBuffers {\n const { shapeId, bucket, maxTriangles, smoothAngle } = value;\n const buffers = call('tessellation', (): unknown => this.graph.buffers(shapeId, bucket, maxTriangles, smoothAngle));\n return validateDisplayBuffers(buffers);\n }\n\n request(value: TessellationRequest): Promise<DisplayBuffers> {\n return new Promise((resolve) => { resolve(this.compute(value)); });\n }\n\n cancelShape(): void {}\n drop(): void {}\n dispose(): void {}\n}\n","import type { OGError } from '../errors';\n\nexport class Deferred<T> {\n resolve!: (value: T) => void;\n reject!: (reason: OGError) => void;\n readonly promise: Promise<T>;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n this.promise.catch(() => undefined);\n }\n}\n","import type { DisplayBuffers } from '../dto/display-buffers';\nimport { OGError } from '../errors';\nimport type { OGWorldGraph } from '../kernel/kernel-loader';\nimport { call } from '../kernel/kernel-session';\nimport { Deferred } from './deferred';\nimport { InlineBackend } from './inline-backend';\nimport type { TessellationProvider, TessellationRequest } from './provider';\nimport type { SnapshotMessage, TessellateMessage, WorkerMessage, WorkerReply } from './worker-protocol';\n\nexport type WorkerSend = { kind: 'tessellate'; shapeId: string; bucket: number; priority: number; generation: number };\n\ntype SendBody = Omit<SnapshotMessage, 'request'> | Omit<TessellateMessage, 'request'>;\ntype PendingSend = {\n value: TessellationRequest | undefined;\n resolve: (reply: WorkerReply | undefined) => void;\n reject: (error: unknown) => void;\n};\n\nconst SEND_LOG_LIMIT = 1_000;\n\nexport class WorkerBackend implements TessellationProvider {\n readonly activeBackend = 'worker' as const;\n readonly sendLog: WorkerSend[] = [];\n private live: Worker | undefined;\n private nextRequest = 1;\n private pending = new Map<number, PendingSend>();\n private snapshots = new Set<string>();\n private latestGenerations = new Map<string, number>();\n private readonly ready = new Deferred<void>();\n private restarts = 0;\n private failed = false;\n private disposed = false;\n private fallback: InlineBackend;\n\n constructor(\n private graph: OGWorldGraph,\n private module: WebAssembly.Module,\n private workerURL: string | URL,\n private onFailure: (error: OGError) => void,\n ) {\n this.fallback = new InlineBackend(graph);\n this.boot();\n }\n\n get worker(): Worker | undefined {\n return this.live;\n }\n\n private boot(): void {\n try {\n const worker = new Worker(this.workerURL, { type: 'module' });\n this.live = worker;\n worker.onmessage = (event: MessageEvent<WorkerReply>) => { this.receive(event.data); };\n worker.onerror = () => { this.crash(); };\n worker.onmessageerror = () => { this.crash(); };\n worker.postMessage({ kind: 'init', request: 0, module: this.module } satisfies WorkerMessage);\n } catch {\n this.crash();\n }\n }\n\n private crash(): void {\n if (this.disposed || this.failed) return;\n this.live?.terminate();\n this.live = undefined;\n this.snapshots.clear();\n if (this.restarts > 0) {\n this.fail();\n return;\n }\n this.restarts++;\n this.drain();\n this.boot();\n }\n\n private fail(): void {\n this.failed = true;\n const error = new OGError('WorkerFailure', 'tessellation', 'tessellation worker failed');\n this.ready.reject(error);\n this.drain();\n queueMicrotask(() => { if (!this.disposed) this.onFailure(error); });\n }\n\n private drain(): void {\n const entries = [...this.pending.entries()];\n this.pending.clear();\n for (const [request, { value, resolve, reject }] of entries) {\n try {\n resolve(value ? { request, ok: true, buffers: this.fallback.compute(value) } : undefined);\n } catch (error) {\n reject(error);\n }\n }\n }\n\n private receive(reply: WorkerReply): void {\n if ('kind' in reply) {\n this.snapshots.delete(`${reply.shapeId}@${String(reply.revision)}`);\n return;\n }\n if (reply.request === 0) {\n if ('ok' in reply) this.ready.resolve();\n else this.crash();\n return;\n }\n if (reply.request === undefined) return;\n const pending = this.pending.get(reply.request);\n if (!pending) return;\n this.pending.delete(reply.request);\n if ('error' in reply) {\n pending.reject(new OGError(reply.error.code, 'tessellation', reply.error.message, reply.error.details));\n if (reply.error.code === 'KernelPanic') this.crash();\n } else pending.resolve(reply);\n }\n\n private async send(message: SendBody, transfer: Transferable[] = []): Promise<WorkerReply | undefined> {\n try {\n await this.ready.promise;\n } catch {\n return undefined;\n }\n const worker = this.live;\n if (this.failed || this.disposed || !worker) return undefined;\n const request = this.nextRequest++;\n const value = message.kind === 'tessellate' ? message : undefined;\n if (value) this.recordSend(value);\n return new Promise((resolve, reject) => {\n this.pending.set(request, { value, resolve, reject });\n worker.postMessage({ ...message, request }, transfer);\n });\n }\n\n private recordSend(value: TessellationRequest): void {\n const { shapeId, bucket, priority, generation } = value;\n this.sendLog.push({ kind: 'tessellate', shapeId, bucket, priority, generation });\n if (this.sendLog.length > SEND_LOG_LIMIT) this.sendLog.shift();\n }\n\n async ensureSnapshot(shapeId: string, revision: number): Promise<void> {\n const key = `${shapeId}@${String(revision)}`;\n if (this.failed || this.snapshots.has(key)) return;\n const bytes = call('tessellation', () => this.graph.snapshot(shapeId));\n const reply = await this.send({ kind: 'snapshot', shapeId, revision, bytes }, [bytes.buffer]);\n if (!reply) {\n if (this.live) await this.ensureSnapshot(shapeId, revision);\n return;\n }\n if (!('ok' in reply)) throw new OGError('WorkerFailure', 'snapshot', 'worker rejected snapshot');\n this.snapshots.add(key);\n }\n\n async request(value: TessellationRequest): Promise<DisplayBuffers> {\n if (this.failed) return this.fallback.compute(value);\n this.latestGenerations.set(value.shapeId, value.generation);\n await Promise.resolve();\n if (this.latestGenerations.get(value.shapeId) !== value.generation) {\n throw new OGError('Cancelled', 'tessellation', 'tessellation request superseded');\n }\n await this.ensureSnapshot(value.shapeId, value.revision);\n if (this.latestGenerations.get(value.shapeId) !== value.generation) {\n throw new OGError('Cancelled', 'tessellation', 'tessellation request superseded');\n }\n let reply = await this.send(tessellate(value));\n if (reply && 'missingSnapshot' in reply) {\n this.snapshots.delete(`${value.shapeId}@${String(value.revision)}`);\n await this.ensureSnapshot(value.shapeId, value.revision);\n reply = await this.send(tessellate(value));\n }\n return this.buffersFrom(value, reply);\n }\n\n private buffersFrom(value: TessellationRequest, reply: WorkerReply | undefined): DisplayBuffers {\n if (!reply) {\n if (this.failed) return this.fallback.compute(value);\n throw new OGError('WorkerFailure', 'tessellation', 'runtime disposed');\n }\n if ('superseded' in reply) throw new OGError('Cancelled', 'tessellation', 'tessellation request superseded');\n if ('buffers' in reply) return reply.buffers;\n throw new OGError('WorkerFailure', 'tessellation', 'worker returned no buffers');\n }\n\n cancelShape(shapeId: string, generation: number): void {\n this.live?.postMessage({ kind: 'cancel', shapeId, generation } satisfies WorkerMessage);\n }\n\n drop(shapeId: string, revision: number): void {\n this.snapshots.delete(`${shapeId}@${String(revision)}`);\n this.live?.postMessage({ kind: 'drop', shapeId, revision } satisfies WorkerMessage);\n }\n\n dispose(): void {\n this.disposed = true;\n this.live?.terminate();\n this.live = undefined;\n const error = new OGError('WorkerFailure', 'tessellation', 'runtime disposed');\n for (const pending of this.pending.values()) pending.reject(error);\n this.pending.clear();\n this.snapshots.clear();\n this.ready.reject(error);\n }\n}\n\nfunction tessellate(value: TessellationRequest): Omit<TessellateMessage, 'request'> {\n const { shapeId, revision, bucket, priority, maxTriangles, smoothAngle, generation } = value;\n return { kind: 'tessellate', shapeId, revision, bucket, priority, maxTriangles, smoothAngle, generation };\n}\n","import { dropMember } from '../rendering/lod/host-groups';\nimport { bodyKey, reindexShape, releaseShapeIfEmpty, runtime } from '../runtime/runtime-state';\nimport type { Body } from './body';\n\nexport function register(body: Body): void {\n const state = runtime();\n state.bodies.set(bodyKey(body.handle, body.generation), body);\n state.pickTargets.set(body.surface, body).set(body.outline, body);\n reindexShape(state, body, null);\n}\n\nexport function unregister(body: Body): void {\n const state = runtime();\n state.displayed.delete(body);\n dropMember(state, body);\n state.displayBounds.delete(body);\n state.lod.stale = true;\n state.limbo.delete(body);\n state.bodies.delete(bodyKey(body.handle, body.generation));\n state.pickTargets.delete(body.surface);\n state.pickTargets.delete(body.outline);\n if (body.record) state.records.release(body.record);\n const info = body.lastInfo;\n if (!info.shapeId) return;\n state.byShape.get(info.shapeId)?.delete(body);\n releaseShapeIfEmpty(state, info.shapeId, info.shapeRevision ?? 0);\n}\n"],"names":["initializeKernel","runtime","runtimeState"],"mappings":"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"}