nucleation 0.10.22 → 0.10.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/Schematic.d.mts +23 -0
- package/Schematic.d.ts +23 -0
- package/Schematic.mjs +70 -0
- package/nucleation.wasm +0 -0
- package/package.json +7 -2
- package/renderer/AnimationEffect.d.mts +44 -0
- package/renderer/AnimationEffect.d.ts +44 -0
- package/renderer/AnimationEffect.mjs +204 -0
- package/renderer/Autostack.d.mts +43 -0
- package/renderer/Autostack.d.ts +43 -0
- package/renderer/Autostack.mjs +134 -0
- package/renderer/BlockPos.d.mts +28 -0
- package/renderer/BlockPos.d.ts +28 -0
- package/renderer/BlockPos.mjs +130 -0
- package/renderer/BlockState.d.mts +39 -0
- package/renderer/BlockState.d.ts +39 -0
- package/renderer/BlockState.mjs +134 -0
- package/renderer/Blocks.d.mts +91 -0
- package/renderer/Blocks.d.ts +91 -0
- package/renderer/Blocks.mjs +308 -0
- package/renderer/Brush.d.mts +99 -0
- package/renderer/Brush.d.ts +99 -0
- package/renderer/Brush.mjs +335 -0
- package/renderer/BuildAnimation.d.mts +179 -0
- package/renderer/BuildAnimation.d.ts +179 -0
- package/renderer/BuildAnimation.mjs +1148 -0
- package/renderer/BuildingTool.d.mts +46 -0
- package/renderer/BuildingTool.d.ts +46 -0
- package/renderer/BuildingTool.mjs +121 -0
- package/renderer/CellExecutor.d.mts +51 -0
- package/renderer/CellExecutor.d.ts +51 -0
- package/renderer/CellExecutor.mjs +171 -0
- package/renderer/CellularSdfConfig.d.mts +22 -0
- package/renderer/CellularSdfConfig.d.ts +22 -0
- package/renderer/CellularSdfConfig.mjs +69 -0
- package/renderer/ChunkMeshResult.d.mts +75 -0
- package/renderer/ChunkMeshResult.d.ts +75 -0
- package/renderer/ChunkMeshResult.mjs +253 -0
- package/renderer/CircuitBuilder.d.mts +118 -0
- package/renderer/CircuitBuilder.d.ts +118 -0
- package/renderer/CircuitBuilder.mjs +516 -0
- package/renderer/Curve3D.d.mts +27 -0
- package/renderer/Curve3D.d.ts +27 -0
- package/renderer/Curve3D.mjs +101 -0
- package/renderer/DefinitionRegion.d.mts +274 -0
- package/renderer/DefinitionRegion.d.ts +274 -0
- package/renderer/DefinitionRegion.mjs +973 -0
- package/renderer/Design.d.mts +348 -0
- package/renderer/Design.d.ts +348 -0
- package/renderer/Design.mjs +1334 -0
- package/renderer/Diff.d.mts +88 -0
- package/renderer/Diff.d.ts +88 -0
- package/renderer/Diff.mjs +316 -0
- package/renderer/Dimensions.d.mts +28 -0
- package/renderer/Dimensions.d.ts +28 -0
- package/renderer/Dimensions.mjs +130 -0
- package/renderer/DistanceField.d.mts +39 -0
- package/renderer/DistanceField.d.ts +39 -0
- package/renderer/DistanceField.mjs +114 -0
- package/renderer/ExecutionMode.d.mts +42 -0
- package/renderer/ExecutionMode.d.ts +42 -0
- package/renderer/ExecutionMode.mjs +127 -0
- package/renderer/Field3.d.mts +40 -0
- package/renderer/Field3.d.ts +40 -0
- package/renderer/Field3.mjs +160 -0
- package/renderer/FieldProgram.d.mts +40 -0
- package/renderer/FieldProgram.d.ts +40 -0
- package/renderer/FieldProgram.mjs +167 -0
- package/renderer/FieldProgramBinaryOp.d.mts +42 -0
- package/renderer/FieldProgramBinaryOp.d.ts +42 -0
- package/renderer/FieldProgramBinaryOp.mjs +118 -0
- package/renderer/FieldProgramBuilder.d.mts +104 -0
- package/renderer/FieldProgramBuilder.d.ts +104 -0
- package/renderer/FieldProgramBuilder.mjs +486 -0
- package/renderer/FieldProgramDistanceKind.d.mts +26 -0
- package/renderer/FieldProgramDistanceKind.d.ts +26 -0
- package/renderer/FieldProgramDistanceKind.mjs +78 -0
- package/renderer/FieldProgramUnaryOp.d.mts +34 -0
- package/renderer/FieldProgramUnaryOp.d.ts +34 -0
- package/renderer/FieldProgramUnaryOp.mjs +102 -0
- package/renderer/FieldProgramValueType.d.mts +25 -0
- package/renderer/FieldProgramValueType.d.ts +25 -0
- package/renderer/FieldProgramValueType.mjs +75 -0
- package/renderer/FieldRange.d.mts +15 -0
- package/renderer/FieldRange.d.ts +15 -0
- package/renderer/FieldRange.mjs +109 -0
- package/renderer/Fingerprint.d.mts +44 -0
- package/renderer/Fingerprint.d.ts +44 -0
- package/renderer/Fingerprint.mjs +197 -0
- package/renderer/GeneratedChunk.d.mts +35 -0
- package/renderer/GeneratedChunk.d.ts +35 -0
- package/renderer/GeneratedChunk.mjs +178 -0
- package/renderer/GeneratedChunkCoverage.d.mts +25 -0
- package/renderer/GeneratedChunkCoverage.d.ts +25 -0
- package/renderer/GeneratedChunkCoverage.mjs +75 -0
- package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
- package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
- package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
- package/renderer/GeneratedWorldStream.d.mts +28 -0
- package/renderer/GeneratedWorldStream.d.ts +28 -0
- package/renderer/GeneratedWorldStream.mjs +86 -0
- package/renderer/Geo.d.mts +41 -0
- package/renderer/Geo.d.ts +41 -0
- package/renderer/Geo.mjs +121 -0
- package/renderer/Hdl.d.mts +56 -0
- package/renderer/Hdl.d.ts +56 -0
- package/renderer/Hdl.mjs +163 -0
- package/renderer/InterpolationSpace.d.mts +25 -0
- package/renderer/InterpolationSpace.d.ts +25 -0
- package/renderer/InterpolationSpace.mjs +73 -0
- package/renderer/IoLayout.d.mts +26 -0
- package/renderer/IoLayout.d.ts +26 -0
- package/renderer/IoLayout.mjs +81 -0
- package/renderer/IoLayoutBuilder.d.mts +73 -0
- package/renderer/IoLayoutBuilder.d.ts +73 -0
- package/renderer/IoLayoutBuilder.mjs +315 -0
- package/renderer/IoType.d.mts +41 -0
- package/renderer/IoType.d.ts +41 -0
- package/renderer/IoType.mjs +125 -0
- package/renderer/ItemModelConfig.d.mts +65 -0
- package/renderer/ItemModelConfig.d.ts +65 -0
- package/renderer/ItemModelConfig.mjs +223 -0
- package/renderer/ItemModelPackBuilder.d.mts +32 -0
- package/renderer/ItemModelPackBuilder.d.ts +32 -0
- package/renderer/ItemModelPackBuilder.mjs +104 -0
- package/renderer/ItemModelResult.d.mts +72 -0
- package/renderer/ItemModelResult.d.ts +72 -0
- package/renderer/ItemModelResult.mjs +268 -0
- package/renderer/ItemScale.d.mts +31 -0
- package/renderer/ItemScale.d.ts +31 -0
- package/renderer/ItemScale.mjs +133 -0
- package/renderer/LayoutFunction.d.mts +52 -0
- package/renderer/LayoutFunction.d.ts +52 -0
- package/renderer/LayoutFunction.mjs +159 -0
- package/renderer/MchprsWorld.d.mts +131 -0
- package/renderer/MchprsWorld.d.ts +131 -0
- package/renderer/MchprsWorld.mjs +423 -0
- package/renderer/MeshBounds.d.mts +40 -0
- package/renderer/MeshBounds.d.ts +40 -0
- package/renderer/MeshBounds.mjs +181 -0
- package/renderer/MeshConfig.d.mts +101 -0
- package/renderer/MeshConfig.d.ts +101 -0
- package/renderer/MeshConfig.mjs +306 -0
- package/renderer/MeshJob.d.mts +44 -0
- package/renderer/MeshJob.d.ts +44 -0
- package/renderer/MeshJob.mjs +116 -0
- package/renderer/MeshPhase.d.mts +38 -0
- package/renderer/MeshPhase.d.ts +38 -0
- package/renderer/MeshPhase.mjs +90 -0
- package/renderer/MeshProgress.d.mts +32 -0
- package/renderer/MeshProgress.d.ts +32 -0
- package/renderer/MeshProgress.mjs +134 -0
- package/renderer/MeshResult.d.mts +76 -0
- package/renderer/MeshResult.d.ts +76 -0
- package/renderer/MeshResult.mjs +269 -0
- package/renderer/MultiMeshResult.d.mts +50 -0
- package/renderer/MultiMeshResult.d.ts +50 -0
- package/renderer/MultiMeshResult.mjs +166 -0
- package/renderer/Nbt.d.mts +50 -0
- package/renderer/Nbt.d.ts +50 -0
- package/renderer/Nbt.mjs +161 -0
- package/renderer/NucleationError.d.mts +53 -0
- package/renderer/NucleationError.d.ts +53 -0
- package/renderer/NucleationError.mjs +136 -0
- package/renderer/OutputCondition.d.mts +45 -0
- package/renderer/OutputCondition.d.ts +45 -0
- package/renderer/OutputCondition.mjs +129 -0
- package/renderer/Palette.d.mts +157 -0
- package/renderer/Palette.d.ts +157 -0
- package/renderer/Palette.mjs +487 -0
- package/renderer/PaletteBuilder.d.mts +119 -0
- package/renderer/PaletteBuilder.d.ts +119 -0
- package/renderer/PaletteBuilder.mjs +457 -0
- package/renderer/README.md +67 -0
- package/renderer/RawMeshExport.d.mts +74 -0
- package/renderer/RawMeshExport.d.ts +74 -0
- package/renderer/RawMeshExport.mjs +243 -0
- package/renderer/RedstoneGraph.d.mts +58 -0
- package/renderer/RedstoneGraph.d.ts +58 -0
- package/renderer/RedstoneGraph.mjs +242 -0
- package/renderer/RegionBounds.d.mts +41 -0
- package/renderer/RegionBounds.d.ts +41 -0
- package/renderer/RegionBounds.mjs +182 -0
- package/renderer/RenderConfig.d.mts +101 -0
- package/renderer/RenderConfig.d.ts +101 -0
- package/renderer/RenderConfig.mjs +271 -0
- package/renderer/Renderer.d.mts +51 -0
- package/renderer/Renderer.d.ts +51 -0
- package/renderer/Renderer.mjs +219 -0
- package/renderer/ResourcePack.d.mts +105 -0
- package/renderer/ResourcePack.d.ts +105 -0
- package/renderer/ResourcePack.mjs +447 -0
- package/renderer/ResourcePackList.d.mts +32 -0
- package/renderer/ResourcePackList.d.ts +32 -0
- package/renderer/ResourcePackList.mjs +96 -0
- package/renderer/Routing.d.mts +66 -0
- package/renderer/Routing.d.ts +66 -0
- package/renderer/Routing.mjs +220 -0
- package/renderer/Schematic.d.mts +977 -0
- package/renderer/Schematic.d.ts +977 -0
- package/renderer/Schematic.mjs +3820 -0
- package/renderer/SchematicBuilder.d.mts +103 -0
- package/renderer/SchematicBuilder.d.ts +103 -0
- package/renderer/SchematicBuilder.mjs +401 -0
- package/renderer/SchematicRegions.d.mts +93 -0
- package/renderer/SchematicRegions.d.ts +93 -0
- package/renderer/SchematicRegions.mjs +411 -0
- package/renderer/SchematicSplitResult.d.mts +26 -0
- package/renderer/SchematicSplitResult.d.ts +26 -0
- package/renderer/SchematicSplitResult.mjs +84 -0
- package/renderer/Scripting.d.mts +40 -0
- package/renderer/Scripting.d.ts +40 -0
- package/renderer/Scripting.mjs +138 -0
- package/renderer/Sdf.d.mts +234 -0
- package/renderer/Sdf.d.ts +234 -0
- package/renderer/Sdf.mjs +1234 -0
- package/renderer/SdfAxis.d.mts +25 -0
- package/renderer/SdfAxis.d.ts +25 -0
- package/renderer/SdfAxis.mjs +75 -0
- package/renderer/SdfBounds.d.mts +19 -0
- package/renderer/SdfBounds.d.ts +19 -0
- package/renderer/SdfBounds.mjs +161 -0
- package/renderer/SdfCellMode.d.mts +26 -0
- package/renderer/SdfCellMode.d.ts +26 -0
- package/renderer/SdfCellMode.mjs +78 -0
- package/renderer/SdfNormal.d.mts +16 -0
- package/renderer/SdfNormal.d.ts +16 -0
- package/renderer/SdfNormal.mjs +122 -0
- package/renderer/Shape.d.mts +143 -0
- package/renderer/Shape.d.ts +143 -0
- package/renderer/Shape.mjs +458 -0
- package/renderer/SortStrategy.d.mts +86 -0
- package/renderer/SortStrategy.d.ts +86 -0
- package/renderer/SortStrategy.mjs +272 -0
- package/renderer/Store.d.mts +83 -0
- package/renderer/Store.d.ts +83 -0
- package/renderer/Store.mjs +369 -0
- package/renderer/StoreIo.d.mts +71 -0
- package/renderer/StoreIo.d.ts +71 -0
- package/renderer/StoreIo.mjs +292 -0
- package/renderer/TextureAtlas.d.mts +40 -0
- package/renderer/TextureAtlas.d.ts +40 -0
- package/renderer/TextureAtlas.mjs +122 -0
- package/renderer/TextureInfo.d.mts +34 -0
- package/renderer/TextureInfo.d.ts +34 -0
- package/renderer/TextureInfo.mjs +149 -0
- package/renderer/TickSettleMode.d.mts +34 -0
- package/renderer/TickSettleMode.d.ts +34 -0
- package/renderer/TickSettleMode.mjs +84 -0
- package/renderer/TickSimulation.d.mts +572 -0
- package/renderer/TickSimulation.d.ts +572 -0
- package/renderer/TickSimulation.mjs +1299 -0
- package/renderer/TypedCircuitExecutor.d.mts +101 -0
- package/renderer/TypedCircuitExecutor.d.ts +101 -0
- package/renderer/TypedCircuitExecutor.mjs +378 -0
- package/renderer/Value.d.mts +73 -0
- package/renderer/Value.d.ts +73 -0
- package/renderer/Value.mjs +275 -0
- package/renderer/VideoConfig.d.mts +15 -0
- package/renderer/VideoConfig.d.ts +15 -0
- package/renderer/VideoConfig.mjs +44 -0
- package/renderer/VoxelModel.d.mts +34 -0
- package/renderer/VoxelModel.d.ts +34 -0
- package/renderer/VoxelModel.mjs +113 -0
- package/renderer/Voxelizer.d.mts +80 -0
- package/renderer/Voxelizer.d.ts +80 -0
- package/renderer/Voxelizer.mjs +261 -0
- package/renderer/WorldChunkView.d.mts +75 -0
- package/renderer/WorldChunkView.d.ts +75 -0
- package/renderer/WorldChunkView.mjs +224 -0
- package/renderer/WorldGenerator.d.mts +75 -0
- package/renderer/WorldGenerator.d.ts +75 -0
- package/renderer/WorldGenerator.mjs +255 -0
- package/renderer/WorldSink.d.mts +50 -0
- package/renderer/WorldSink.d.ts +50 -0
- package/renderer/WorldSink.mjs +177 -0
- package/renderer/WorldStream.d.mts +45 -0
- package/renderer/WorldStream.d.ts +45 -0
- package/renderer/WorldStream.mjs +184 -0
- package/renderer/WsPartitionHints.d.mts +29 -0
- package/renderer/WsPartitionHints.d.ts +29 -0
- package/renderer/WsPartitionHints.mjs +102 -0
- package/renderer/WsProfile.d.mts +46 -0
- package/renderer/WsProfile.d.ts +46 -0
- package/renderer/WsProfile.mjs +152 -0
- package/renderer/WsRunResult.d.mts +83 -0
- package/renderer/WsRunResult.d.ts +83 -0
- package/renderer/WsRunResult.mjs +326 -0
- package/renderer/WsSegmentJob.d.mts +28 -0
- package/renderer/WsSegmentJob.d.ts +28 -0
- package/renderer/WsSegmentJob.mjs +81 -0
- package/renderer/diplomat-runtime.d.mts +15 -0
- package/renderer/diplomat-runtime.d.ts +15 -0
- package/renderer/diplomat-runtime.mjs +779 -0
- package/renderer/diplomat-wasm.mjs +52 -0
- package/renderer/diplomat.config.mjs +5 -0
- package/renderer/index.d.mts +193 -0
- package/renderer/index.d.ts +193 -0
- package/renderer/index.mjs +196 -0
- package/renderer/nucleation.wasm +0 -0
- package/renderer/veneer/design.d.ts +167 -0
- package/renderer/veneer/design.mjs +480 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { WorldChunkView } from "./WorldChunkView.mjs"
|
|
4
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A world writer. `finish` is consuming (PORTING rule 11): the inner sink is
|
|
10
|
+
* held in an `Option` and taken on `finish`; every method afterwards returns
|
|
11
|
+
* `AlreadyConsumed`. Dropping the handle without `finish` abandons the sink.
|
|
12
|
+
*/
|
|
13
|
+
export class WorldSink {
|
|
14
|
+
/** @internal */
|
|
15
|
+
get ffiValue(): pointer;
|
|
16
|
+
/** @internal */
|
|
17
|
+
constructor();
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Create a new world sink that writes fresh chunk data to `dir`.
|
|
22
|
+
* `options_json` is a serialized `WorldExportOptions` (empty string =
|
|
23
|
+
* defaults).
|
|
24
|
+
*/
|
|
25
|
+
static create(dir: string, optionsJson: string): WorldSink;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Open an existing world directory for patching via `put_chunk`.
|
|
29
|
+
*/
|
|
30
|
+
static openExisting(dir: string): WorldSink;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Write (append) a chunk view into the sink. The view is not consumed.
|
|
34
|
+
*/
|
|
35
|
+
writeChunk(view: WorldChunkView): void;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Overwrite the chunk at (`view.cx`, `view.cz`) of the sink's world with
|
|
39
|
+
* the supplied view's block data. Only valid on sinks opened with
|
|
40
|
+
* `open_existing`; errors with `Io` on a create-mode sink. The view is
|
|
41
|
+
* not consumed.
|
|
42
|
+
*/
|
|
43
|
+
putChunk(view: WorldChunkView): void;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Finalise and flush all pending writes. Consuming (PORTING rule 11):
|
|
47
|
+
* afterwards every method on this sink returns `AlreadyConsumed`.
|
|
48
|
+
*/
|
|
49
|
+
finish(): void;
|
|
50
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import { WorldChunkView } from "./WorldChunkView.mjs"
|
|
4
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
5
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
6
|
+
|
|
7
|
+
const WorldSink_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
8
|
+
wasm.WorldSink_destroy(ptr);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A world writer. `finish` is consuming (PORTING rule 11): the inner sink is
|
|
13
|
+
* held in an `Option` and taken on `finish`; every method afterwards returns
|
|
14
|
+
* `AlreadyConsumed`. Dropping the handle without `finish` abandons the sink.
|
|
15
|
+
*/
|
|
16
|
+
export class WorldSink {
|
|
17
|
+
// Internal ptr reference:
|
|
18
|
+
#ptr = null;
|
|
19
|
+
|
|
20
|
+
// Lifetimes are only to keep dependencies alive.
|
|
21
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
22
|
+
#selfEdge = [];
|
|
23
|
+
|
|
24
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
25
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
26
|
+
console.error("WorldSink is an Opaque type. You cannot call its constructor.");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.#ptr = ptr;
|
|
30
|
+
this.#selfEdge = selfEdge;
|
|
31
|
+
|
|
32
|
+
// Are we being borrowed? If not, we can register.
|
|
33
|
+
if (this.#selfEdge.length === 0) {
|
|
34
|
+
WorldSink_box_destroy_registry.register(this, this.#ptr);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
/** @internal */
|
|
40
|
+
get ffiValue() {
|
|
41
|
+
return this.#ptr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Create a new world sink that writes fresh chunk data to `dir`.
|
|
47
|
+
* `options_json` is a serialized `WorldExportOptions` (empty string =
|
|
48
|
+
* defaults).
|
|
49
|
+
*/
|
|
50
|
+
static create(dir, optionsJson) {
|
|
51
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
52
|
+
|
|
53
|
+
const dirSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, dir)));
|
|
54
|
+
const optionsJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, optionsJson)));
|
|
55
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
const result = wasm.WorldSink_create(diplomatReceive.buffer, dirSlice.ptr, optionsJsonSlice.ptr);
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
if (!diplomatReceive.resultFlag) {
|
|
62
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
63
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
64
|
+
}
|
|
65
|
+
return new WorldSink(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
finally {
|
|
69
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
70
|
+
functionCleanupArena.free();
|
|
71
|
+
|
|
72
|
+
diplomatReceive.free();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Open an existing world directory for patching via `put_chunk`.
|
|
78
|
+
*/
|
|
79
|
+
static openExisting(dir) {
|
|
80
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
81
|
+
|
|
82
|
+
const dirSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, dir)));
|
|
83
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
const result = wasm.WorldSink_open_existing(diplomatReceive.buffer, dirSlice.ptr);
|
|
87
|
+
|
|
88
|
+
try {
|
|
89
|
+
if (!diplomatReceive.resultFlag) {
|
|
90
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
91
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
92
|
+
}
|
|
93
|
+
return new WorldSink(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
finally {
|
|
97
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
98
|
+
functionCleanupArena.free();
|
|
99
|
+
|
|
100
|
+
diplomatReceive.free();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Write (append) a chunk view into the sink. The view is not consumed.
|
|
106
|
+
*/
|
|
107
|
+
writeChunk(view) {
|
|
108
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
const result = wasm.WorldSink_write_chunk(diplomatReceive.buffer, this.ffiValue, view.ffiValue);
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
if (!diplomatReceive.resultFlag) {
|
|
115
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
116
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
finally {
|
|
121
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
122
|
+
diplomatReceive.free();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Overwrite the chunk at (`view.cx`, `view.cz`) of the sink's world with
|
|
128
|
+
* the supplied view's block data. Only valid on sinks opened with
|
|
129
|
+
* `open_existing`; errors with `Io` on a create-mode sink. The view is
|
|
130
|
+
* not consumed.
|
|
131
|
+
*/
|
|
132
|
+
putChunk(view) {
|
|
133
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
const result = wasm.WorldSink_put_chunk(diplomatReceive.buffer, this.ffiValue, view.ffiValue);
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
if (!diplomatReceive.resultFlag) {
|
|
140
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
141
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
finally {
|
|
146
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
147
|
+
diplomatReceive.free();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Finalise and flush all pending writes. Consuming (PORTING rule 11):
|
|
153
|
+
* afterwards every method on this sink returns `AlreadyConsumed`.
|
|
154
|
+
*/
|
|
155
|
+
finish() {
|
|
156
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
const result = wasm.WorldSink_finish(diplomatReceive.buffer, this.ffiValue);
|
|
160
|
+
|
|
161
|
+
try {
|
|
162
|
+
if (!diplomatReceive.resultFlag) {
|
|
163
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
164
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
finally {
|
|
169
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
170
|
+
diplomatReceive.free();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
constructor(symbol, ptr, selfEdge) {
|
|
175
|
+
return this.#internalConstructor(...arguments)
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { WorldChunkView } from "./WorldChunkView.mjs"
|
|
4
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A streaming iterator over the chunks of a world.
|
|
10
|
+
*/
|
|
11
|
+
export class WorldStream {
|
|
12
|
+
/** @internal */
|
|
13
|
+
get ffiValue(): pointer;
|
|
14
|
+
/** @internal */
|
|
15
|
+
constructor();
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Open a streaming iterator over a world directory.
|
|
20
|
+
*/
|
|
21
|
+
static openDir(path: string): WorldStream;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Open a streaming iterator over a world directory, bounded to the given
|
|
25
|
+
* block-coordinate box `[min_x..max_x, min_y..max_y, min_z..max_z]`.
|
|
26
|
+
*/
|
|
27
|
+
static openDirBounded(path: string, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): WorldStream;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Open a streaming iterator from a zip archive in memory.
|
|
31
|
+
*/
|
|
32
|
+
static fromZip(data: Array<number>): WorldStream;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Open a bounded streaming iterator from a zip archive in memory.
|
|
36
|
+
*/
|
|
37
|
+
static fromZipBounded(data: Array<number>, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): WorldStream;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Advance the iterator and return the next chunk view. Errors with
|
|
41
|
+
* `NotFound` at end-of-stream (the old ABI returned NULL). Corrupt
|
|
42
|
+
* chunks are silently skipped, matching the old ABI.
|
|
43
|
+
*/
|
|
44
|
+
next(): WorldChunkView;
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { WorldChunkView } from "./WorldChunkView.mjs"
|
|
4
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A streaming iterator over the chunks of a world.
|
|
10
|
+
*/
|
|
11
|
+
export class WorldStream {
|
|
12
|
+
/** @internal */
|
|
13
|
+
get ffiValue(): pointer;
|
|
14
|
+
/** @internal */
|
|
15
|
+
constructor();
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Open a streaming iterator over a world directory.
|
|
20
|
+
*/
|
|
21
|
+
static openDir(path: string): WorldStream;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Open a streaming iterator over a world directory, bounded to the given
|
|
25
|
+
* block-coordinate box `[min_x..max_x, min_y..max_y, min_z..max_z]`.
|
|
26
|
+
*/
|
|
27
|
+
static openDirBounded(path: string, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): WorldStream;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Open a streaming iterator from a zip archive in memory.
|
|
31
|
+
*/
|
|
32
|
+
static fromZip(data: Array<number>): WorldStream;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Open a bounded streaming iterator from a zip archive in memory.
|
|
36
|
+
*/
|
|
37
|
+
static fromZipBounded(data: Array<number>, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): WorldStream;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Advance the iterator and return the next chunk view. Errors with
|
|
41
|
+
* `NotFound` at end-of-stream (the old ABI returned NULL). Corrupt
|
|
42
|
+
* chunks are silently skipped, matching the old ABI.
|
|
43
|
+
*/
|
|
44
|
+
next(): WorldChunkView;
|
|
45
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import { WorldChunkView } from "./WorldChunkView.mjs"
|
|
4
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
5
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
6
|
+
|
|
7
|
+
const WorldStream_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
8
|
+
wasm.WorldStream_destroy(ptr);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A streaming iterator over the chunks of a world.
|
|
13
|
+
*/
|
|
14
|
+
export class WorldStream {
|
|
15
|
+
// Internal ptr reference:
|
|
16
|
+
#ptr = null;
|
|
17
|
+
|
|
18
|
+
// Lifetimes are only to keep dependencies alive.
|
|
19
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
20
|
+
#selfEdge = [];
|
|
21
|
+
|
|
22
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
23
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
24
|
+
console.error("WorldStream is an Opaque type. You cannot call its constructor.");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.#ptr = ptr;
|
|
28
|
+
this.#selfEdge = selfEdge;
|
|
29
|
+
|
|
30
|
+
// Are we being borrowed? If not, we can register.
|
|
31
|
+
if (this.#selfEdge.length === 0) {
|
|
32
|
+
WorldStream_box_destroy_registry.register(this, this.#ptr);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
/** @internal */
|
|
38
|
+
get ffiValue() {
|
|
39
|
+
return this.#ptr;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Open a streaming iterator over a world directory.
|
|
45
|
+
*/
|
|
46
|
+
static openDir(path) {
|
|
47
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
48
|
+
|
|
49
|
+
const pathSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, path)));
|
|
50
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
const result = wasm.WorldStream_open_dir(diplomatReceive.buffer, pathSlice.ptr);
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
if (!diplomatReceive.resultFlag) {
|
|
57
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
58
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
59
|
+
}
|
|
60
|
+
return new WorldStream(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
finally {
|
|
64
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
65
|
+
functionCleanupArena.free();
|
|
66
|
+
|
|
67
|
+
diplomatReceive.free();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Open a streaming iterator over a world directory, bounded to the given
|
|
73
|
+
* block-coordinate box `[min_x..max_x, min_y..max_y, min_z..max_z]`.
|
|
74
|
+
*/
|
|
75
|
+
static openDirBounded(path, minX, minY, minZ, maxX, maxY, maxZ) {
|
|
76
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
77
|
+
|
|
78
|
+
const pathSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, path)));
|
|
79
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
const result = wasm.WorldStream_open_dir_bounded(diplomatReceive.buffer, pathSlice.ptr, minX, minY, minZ, maxX, maxY, maxZ);
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
if (!diplomatReceive.resultFlag) {
|
|
86
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
87
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
88
|
+
}
|
|
89
|
+
return new WorldStream(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
finally {
|
|
93
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
94
|
+
functionCleanupArena.free();
|
|
95
|
+
|
|
96
|
+
diplomatReceive.free();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Open a streaming iterator from a zip archive in memory.
|
|
102
|
+
*/
|
|
103
|
+
static fromZip(data) {
|
|
104
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
105
|
+
|
|
106
|
+
const dataSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, data, "u8")));
|
|
107
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
const result = wasm.WorldStream_from_zip(diplomatReceive.buffer, dataSlice.ptr);
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
if (!diplomatReceive.resultFlag) {
|
|
114
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
115
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
116
|
+
}
|
|
117
|
+
return new WorldStream(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
finally {
|
|
121
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
122
|
+
functionCleanupArena.free();
|
|
123
|
+
|
|
124
|
+
diplomatReceive.free();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Open a bounded streaming iterator from a zip archive in memory.
|
|
130
|
+
*/
|
|
131
|
+
static fromZipBounded(data, minX, minY, minZ, maxX, maxY, maxZ) {
|
|
132
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
133
|
+
|
|
134
|
+
const dataSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, data, "u8")));
|
|
135
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
const result = wasm.WorldStream_from_zip_bounded(diplomatReceive.buffer, dataSlice.ptr, minX, minY, minZ, maxX, maxY, maxZ);
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
if (!diplomatReceive.resultFlag) {
|
|
142
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
143
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
144
|
+
}
|
|
145
|
+
return new WorldStream(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
finally {
|
|
149
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
150
|
+
functionCleanupArena.free();
|
|
151
|
+
|
|
152
|
+
diplomatReceive.free();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Advance the iterator and return the next chunk view. Errors with
|
|
158
|
+
* `NotFound` at end-of-stream (the old ABI returned NULL). Corrupt
|
|
159
|
+
* chunks are silently skipped, matching the old ABI.
|
|
160
|
+
*/
|
|
161
|
+
next() {
|
|
162
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
const result = wasm.WorldStream_next(diplomatReceive.buffer, this.ffiValue);
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
if (!diplomatReceive.resultFlag) {
|
|
169
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
170
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
171
|
+
}
|
|
172
|
+
return new WorldChunkView(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
finally {
|
|
176
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
177
|
+
diplomatReceive.free();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
constructor(symbol, ptr, selfEdge) {
|
|
182
|
+
return this.#internalConstructor(...arguments)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Caller-supplied partition hints (full-column boxes a cluster may never
|
|
9
|
+
* span under {@link PartitionPolicy::HardCut}). Order does not matter:
|
|
10
|
+
* {@link PartitionIndex::new}(crate::world_segment::partition::PartitionIndex)
|
|
11
|
+
* sorts hints by full content at construction time.
|
|
12
|
+
*/
|
|
13
|
+
export class WsPartitionHints {
|
|
14
|
+
/** @internal */
|
|
15
|
+
get ffiValue(): pointer;
|
|
16
|
+
/** @internal */
|
|
17
|
+
constructor();
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
static create(): WsPartitionHints;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Add a full-column hint (`y_range: None`) covering inclusive
|
|
24
|
+
* `x0..=x1, z0..=z1`.
|
|
25
|
+
*/
|
|
26
|
+
add(id: string, x0: number, x1: number, z0: number, z1: number): void;
|
|
27
|
+
|
|
28
|
+
len(): number;
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Caller-supplied partition hints (full-column boxes a cluster may never
|
|
9
|
+
* span under {@link PartitionPolicy::HardCut}). Order does not matter:
|
|
10
|
+
* {@link PartitionIndex::new}(crate::world_segment::partition::PartitionIndex)
|
|
11
|
+
* sorts hints by full content at construction time.
|
|
12
|
+
*/
|
|
13
|
+
export class WsPartitionHints {
|
|
14
|
+
/** @internal */
|
|
15
|
+
get ffiValue(): pointer;
|
|
16
|
+
/** @internal */
|
|
17
|
+
constructor();
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
static create(): WsPartitionHints;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Add a full-column hint (`y_range: None`) covering inclusive
|
|
24
|
+
* `x0..=x1, z0..=z1`.
|
|
25
|
+
*/
|
|
26
|
+
add(id: string, x0: number, x1: number, z0: number, z1: number): void;
|
|
27
|
+
|
|
28
|
+
len(): number;
|
|
29
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
4
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
5
|
+
|
|
6
|
+
const WsPartitionHints_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
7
|
+
wasm.WsPartitionHints_destroy(ptr);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Caller-supplied partition hints (full-column boxes a cluster may never
|
|
12
|
+
* span under {@link PartitionPolicy::HardCut}). Order does not matter:
|
|
13
|
+
* {@link PartitionIndex::new}(crate::world_segment::partition::PartitionIndex)
|
|
14
|
+
* sorts hints by full content at construction time.
|
|
15
|
+
*/
|
|
16
|
+
export class WsPartitionHints {
|
|
17
|
+
// Internal ptr reference:
|
|
18
|
+
#ptr = null;
|
|
19
|
+
|
|
20
|
+
// Lifetimes are only to keep dependencies alive.
|
|
21
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
22
|
+
#selfEdge = [];
|
|
23
|
+
|
|
24
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
25
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
26
|
+
console.error("WsPartitionHints is an Opaque type. You cannot call its constructor.");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.#ptr = ptr;
|
|
30
|
+
this.#selfEdge = selfEdge;
|
|
31
|
+
|
|
32
|
+
// Are we being borrowed? If not, we can register.
|
|
33
|
+
if (this.#selfEdge.length === 0) {
|
|
34
|
+
WsPartitionHints_box_destroy_registry.register(this, this.#ptr);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
/** @internal */
|
|
40
|
+
get ffiValue() {
|
|
41
|
+
return this.#ptr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
static create() {
|
|
46
|
+
|
|
47
|
+
const result = wasm.WsPartitionHints_create();
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
return new WsPartitionHints(diplomatRuntime.internalConstructor, result, []);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
finally {
|
|
54
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Add a full-column hint (`y_range: None`) covering inclusive
|
|
60
|
+
* `x0..=x1, z0..=z1`.
|
|
61
|
+
*/
|
|
62
|
+
add(id, x0, x1, z0, z1) {
|
|
63
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
64
|
+
|
|
65
|
+
const idSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, id)));
|
|
66
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
const result = wasm.WsPartitionHints_add(diplomatReceive.buffer, this.ffiValue, idSlice.ptr, x0, x1, z0, z1);
|
|
70
|
+
|
|
71
|
+
try {
|
|
72
|
+
if (!diplomatReceive.resultFlag) {
|
|
73
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
74
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
finally {
|
|
79
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
80
|
+
functionCleanupArena.free();
|
|
81
|
+
|
|
82
|
+
diplomatReceive.free();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
len() {
|
|
87
|
+
|
|
88
|
+
const result = wasm.WsPartitionHints_len(this.ffiValue);
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
finally {
|
|
95
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
constructor(symbol, ptr, selfEdge) {
|
|
100
|
+
return this.#internalConstructor(...arguments)
|
|
101
|
+
}
|
|
102
|
+
}
|