nucleation 0.10.22 → 0.10.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +12 -0
  2. package/Schematic.d.mts +23 -0
  3. package/Schematic.d.ts +23 -0
  4. package/Schematic.mjs +70 -0
  5. package/nucleation.wasm +0 -0
  6. package/package.json +7 -2
  7. package/renderer/AnimationEffect.d.mts +44 -0
  8. package/renderer/AnimationEffect.d.ts +44 -0
  9. package/renderer/AnimationEffect.mjs +204 -0
  10. package/renderer/Autostack.d.mts +43 -0
  11. package/renderer/Autostack.d.ts +43 -0
  12. package/renderer/Autostack.mjs +134 -0
  13. package/renderer/BlockPos.d.mts +28 -0
  14. package/renderer/BlockPos.d.ts +28 -0
  15. package/renderer/BlockPos.mjs +130 -0
  16. package/renderer/BlockState.d.mts +39 -0
  17. package/renderer/BlockState.d.ts +39 -0
  18. package/renderer/BlockState.mjs +134 -0
  19. package/renderer/Blocks.d.mts +91 -0
  20. package/renderer/Blocks.d.ts +91 -0
  21. package/renderer/Blocks.mjs +308 -0
  22. package/renderer/Brush.d.mts +99 -0
  23. package/renderer/Brush.d.ts +99 -0
  24. package/renderer/Brush.mjs +335 -0
  25. package/renderer/BuildAnimation.d.mts +179 -0
  26. package/renderer/BuildAnimation.d.ts +179 -0
  27. package/renderer/BuildAnimation.mjs +1148 -0
  28. package/renderer/BuildingTool.d.mts +46 -0
  29. package/renderer/BuildingTool.d.ts +46 -0
  30. package/renderer/BuildingTool.mjs +121 -0
  31. package/renderer/CellExecutor.d.mts +51 -0
  32. package/renderer/CellExecutor.d.ts +51 -0
  33. package/renderer/CellExecutor.mjs +171 -0
  34. package/renderer/CellularSdfConfig.d.mts +22 -0
  35. package/renderer/CellularSdfConfig.d.ts +22 -0
  36. package/renderer/CellularSdfConfig.mjs +69 -0
  37. package/renderer/ChunkMeshResult.d.mts +75 -0
  38. package/renderer/ChunkMeshResult.d.ts +75 -0
  39. package/renderer/ChunkMeshResult.mjs +253 -0
  40. package/renderer/CircuitBuilder.d.mts +118 -0
  41. package/renderer/CircuitBuilder.d.ts +118 -0
  42. package/renderer/CircuitBuilder.mjs +516 -0
  43. package/renderer/Curve3D.d.mts +27 -0
  44. package/renderer/Curve3D.d.ts +27 -0
  45. package/renderer/Curve3D.mjs +101 -0
  46. package/renderer/DefinitionRegion.d.mts +274 -0
  47. package/renderer/DefinitionRegion.d.ts +274 -0
  48. package/renderer/DefinitionRegion.mjs +973 -0
  49. package/renderer/Design.d.mts +348 -0
  50. package/renderer/Design.d.ts +348 -0
  51. package/renderer/Design.mjs +1334 -0
  52. package/renderer/Diff.d.mts +88 -0
  53. package/renderer/Diff.d.ts +88 -0
  54. package/renderer/Diff.mjs +316 -0
  55. package/renderer/Dimensions.d.mts +28 -0
  56. package/renderer/Dimensions.d.ts +28 -0
  57. package/renderer/Dimensions.mjs +130 -0
  58. package/renderer/DistanceField.d.mts +39 -0
  59. package/renderer/DistanceField.d.ts +39 -0
  60. package/renderer/DistanceField.mjs +114 -0
  61. package/renderer/ExecutionMode.d.mts +42 -0
  62. package/renderer/ExecutionMode.d.ts +42 -0
  63. package/renderer/ExecutionMode.mjs +127 -0
  64. package/renderer/Field3.d.mts +40 -0
  65. package/renderer/Field3.d.ts +40 -0
  66. package/renderer/Field3.mjs +160 -0
  67. package/renderer/FieldProgram.d.mts +40 -0
  68. package/renderer/FieldProgram.d.ts +40 -0
  69. package/renderer/FieldProgram.mjs +167 -0
  70. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  71. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  72. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  73. package/renderer/FieldProgramBuilder.d.mts +104 -0
  74. package/renderer/FieldProgramBuilder.d.ts +104 -0
  75. package/renderer/FieldProgramBuilder.mjs +486 -0
  76. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  77. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  78. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  79. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  80. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  81. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  82. package/renderer/FieldProgramValueType.d.mts +25 -0
  83. package/renderer/FieldProgramValueType.d.ts +25 -0
  84. package/renderer/FieldProgramValueType.mjs +75 -0
  85. package/renderer/FieldRange.d.mts +15 -0
  86. package/renderer/FieldRange.d.ts +15 -0
  87. package/renderer/FieldRange.mjs +109 -0
  88. package/renderer/Fingerprint.d.mts +44 -0
  89. package/renderer/Fingerprint.d.ts +44 -0
  90. package/renderer/Fingerprint.mjs +197 -0
  91. package/renderer/GeneratedChunk.d.mts +35 -0
  92. package/renderer/GeneratedChunk.d.ts +35 -0
  93. package/renderer/GeneratedChunk.mjs +178 -0
  94. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  95. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  96. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  97. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  98. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  99. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  100. package/renderer/GeneratedWorldStream.d.mts +28 -0
  101. package/renderer/GeneratedWorldStream.d.ts +28 -0
  102. package/renderer/GeneratedWorldStream.mjs +86 -0
  103. package/renderer/Geo.d.mts +41 -0
  104. package/renderer/Geo.d.ts +41 -0
  105. package/renderer/Geo.mjs +121 -0
  106. package/renderer/Hdl.d.mts +56 -0
  107. package/renderer/Hdl.d.ts +56 -0
  108. package/renderer/Hdl.mjs +163 -0
  109. package/renderer/InterpolationSpace.d.mts +25 -0
  110. package/renderer/InterpolationSpace.d.ts +25 -0
  111. package/renderer/InterpolationSpace.mjs +73 -0
  112. package/renderer/IoLayout.d.mts +26 -0
  113. package/renderer/IoLayout.d.ts +26 -0
  114. package/renderer/IoLayout.mjs +81 -0
  115. package/renderer/IoLayoutBuilder.d.mts +73 -0
  116. package/renderer/IoLayoutBuilder.d.ts +73 -0
  117. package/renderer/IoLayoutBuilder.mjs +315 -0
  118. package/renderer/IoType.d.mts +41 -0
  119. package/renderer/IoType.d.ts +41 -0
  120. package/renderer/IoType.mjs +125 -0
  121. package/renderer/ItemModelConfig.d.mts +65 -0
  122. package/renderer/ItemModelConfig.d.ts +65 -0
  123. package/renderer/ItemModelConfig.mjs +223 -0
  124. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  125. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  126. package/renderer/ItemModelPackBuilder.mjs +104 -0
  127. package/renderer/ItemModelResult.d.mts +72 -0
  128. package/renderer/ItemModelResult.d.ts +72 -0
  129. package/renderer/ItemModelResult.mjs +268 -0
  130. package/renderer/ItemScale.d.mts +31 -0
  131. package/renderer/ItemScale.d.ts +31 -0
  132. package/renderer/ItemScale.mjs +133 -0
  133. package/renderer/LayoutFunction.d.mts +52 -0
  134. package/renderer/LayoutFunction.d.ts +52 -0
  135. package/renderer/LayoutFunction.mjs +159 -0
  136. package/renderer/MchprsWorld.d.mts +131 -0
  137. package/renderer/MchprsWorld.d.ts +131 -0
  138. package/renderer/MchprsWorld.mjs +423 -0
  139. package/renderer/MeshBounds.d.mts +40 -0
  140. package/renderer/MeshBounds.d.ts +40 -0
  141. package/renderer/MeshBounds.mjs +181 -0
  142. package/renderer/MeshConfig.d.mts +101 -0
  143. package/renderer/MeshConfig.d.ts +101 -0
  144. package/renderer/MeshConfig.mjs +306 -0
  145. package/renderer/MeshJob.d.mts +44 -0
  146. package/renderer/MeshJob.d.ts +44 -0
  147. package/renderer/MeshJob.mjs +116 -0
  148. package/renderer/MeshPhase.d.mts +38 -0
  149. package/renderer/MeshPhase.d.ts +38 -0
  150. package/renderer/MeshPhase.mjs +90 -0
  151. package/renderer/MeshProgress.d.mts +32 -0
  152. package/renderer/MeshProgress.d.ts +32 -0
  153. package/renderer/MeshProgress.mjs +134 -0
  154. package/renderer/MeshResult.d.mts +76 -0
  155. package/renderer/MeshResult.d.ts +76 -0
  156. package/renderer/MeshResult.mjs +269 -0
  157. package/renderer/MultiMeshResult.d.mts +50 -0
  158. package/renderer/MultiMeshResult.d.ts +50 -0
  159. package/renderer/MultiMeshResult.mjs +166 -0
  160. package/renderer/Nbt.d.mts +50 -0
  161. package/renderer/Nbt.d.ts +50 -0
  162. package/renderer/Nbt.mjs +161 -0
  163. package/renderer/NucleationError.d.mts +53 -0
  164. package/renderer/NucleationError.d.ts +53 -0
  165. package/renderer/NucleationError.mjs +136 -0
  166. package/renderer/OutputCondition.d.mts +45 -0
  167. package/renderer/OutputCondition.d.ts +45 -0
  168. package/renderer/OutputCondition.mjs +129 -0
  169. package/renderer/Palette.d.mts +157 -0
  170. package/renderer/Palette.d.ts +157 -0
  171. package/renderer/Palette.mjs +487 -0
  172. package/renderer/PaletteBuilder.d.mts +119 -0
  173. package/renderer/PaletteBuilder.d.ts +119 -0
  174. package/renderer/PaletteBuilder.mjs +457 -0
  175. package/renderer/README.md +67 -0
  176. package/renderer/RawMeshExport.d.mts +74 -0
  177. package/renderer/RawMeshExport.d.ts +74 -0
  178. package/renderer/RawMeshExport.mjs +243 -0
  179. package/renderer/RedstoneGraph.d.mts +58 -0
  180. package/renderer/RedstoneGraph.d.ts +58 -0
  181. package/renderer/RedstoneGraph.mjs +242 -0
  182. package/renderer/RegionBounds.d.mts +41 -0
  183. package/renderer/RegionBounds.d.ts +41 -0
  184. package/renderer/RegionBounds.mjs +182 -0
  185. package/renderer/RenderConfig.d.mts +101 -0
  186. package/renderer/RenderConfig.d.ts +101 -0
  187. package/renderer/RenderConfig.mjs +271 -0
  188. package/renderer/Renderer.d.mts +51 -0
  189. package/renderer/Renderer.d.ts +51 -0
  190. package/renderer/Renderer.mjs +219 -0
  191. package/renderer/ResourcePack.d.mts +105 -0
  192. package/renderer/ResourcePack.d.ts +105 -0
  193. package/renderer/ResourcePack.mjs +447 -0
  194. package/renderer/ResourcePackList.d.mts +32 -0
  195. package/renderer/ResourcePackList.d.ts +32 -0
  196. package/renderer/ResourcePackList.mjs +96 -0
  197. package/renderer/Routing.d.mts +66 -0
  198. package/renderer/Routing.d.ts +66 -0
  199. package/renderer/Routing.mjs +220 -0
  200. package/renderer/Schematic.d.mts +977 -0
  201. package/renderer/Schematic.d.ts +977 -0
  202. package/renderer/Schematic.mjs +3820 -0
  203. package/renderer/SchematicBuilder.d.mts +103 -0
  204. package/renderer/SchematicBuilder.d.ts +103 -0
  205. package/renderer/SchematicBuilder.mjs +401 -0
  206. package/renderer/SchematicRegions.d.mts +93 -0
  207. package/renderer/SchematicRegions.d.ts +93 -0
  208. package/renderer/SchematicRegions.mjs +411 -0
  209. package/renderer/SchematicSplitResult.d.mts +26 -0
  210. package/renderer/SchematicSplitResult.d.ts +26 -0
  211. package/renderer/SchematicSplitResult.mjs +84 -0
  212. package/renderer/Scripting.d.mts +40 -0
  213. package/renderer/Scripting.d.ts +40 -0
  214. package/renderer/Scripting.mjs +138 -0
  215. package/renderer/Sdf.d.mts +234 -0
  216. package/renderer/Sdf.d.ts +234 -0
  217. package/renderer/Sdf.mjs +1234 -0
  218. package/renderer/SdfAxis.d.mts +25 -0
  219. package/renderer/SdfAxis.d.ts +25 -0
  220. package/renderer/SdfAxis.mjs +75 -0
  221. package/renderer/SdfBounds.d.mts +19 -0
  222. package/renderer/SdfBounds.d.ts +19 -0
  223. package/renderer/SdfBounds.mjs +161 -0
  224. package/renderer/SdfCellMode.d.mts +26 -0
  225. package/renderer/SdfCellMode.d.ts +26 -0
  226. package/renderer/SdfCellMode.mjs +78 -0
  227. package/renderer/SdfNormal.d.mts +16 -0
  228. package/renderer/SdfNormal.d.ts +16 -0
  229. package/renderer/SdfNormal.mjs +122 -0
  230. package/renderer/Shape.d.mts +143 -0
  231. package/renderer/Shape.d.ts +143 -0
  232. package/renderer/Shape.mjs +458 -0
  233. package/renderer/SortStrategy.d.mts +86 -0
  234. package/renderer/SortStrategy.d.ts +86 -0
  235. package/renderer/SortStrategy.mjs +272 -0
  236. package/renderer/Store.d.mts +83 -0
  237. package/renderer/Store.d.ts +83 -0
  238. package/renderer/Store.mjs +369 -0
  239. package/renderer/StoreIo.d.mts +71 -0
  240. package/renderer/StoreIo.d.ts +71 -0
  241. package/renderer/StoreIo.mjs +292 -0
  242. package/renderer/TextureAtlas.d.mts +40 -0
  243. package/renderer/TextureAtlas.d.ts +40 -0
  244. package/renderer/TextureAtlas.mjs +122 -0
  245. package/renderer/TextureInfo.d.mts +34 -0
  246. package/renderer/TextureInfo.d.ts +34 -0
  247. package/renderer/TextureInfo.mjs +149 -0
  248. package/renderer/TickSettleMode.d.mts +34 -0
  249. package/renderer/TickSettleMode.d.ts +34 -0
  250. package/renderer/TickSettleMode.mjs +84 -0
  251. package/renderer/TickSimulation.d.mts +572 -0
  252. package/renderer/TickSimulation.d.ts +572 -0
  253. package/renderer/TickSimulation.mjs +1299 -0
  254. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  255. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  256. package/renderer/TypedCircuitExecutor.mjs +378 -0
  257. package/renderer/Value.d.mts +73 -0
  258. package/renderer/Value.d.ts +73 -0
  259. package/renderer/Value.mjs +275 -0
  260. package/renderer/VideoConfig.d.mts +15 -0
  261. package/renderer/VideoConfig.d.ts +15 -0
  262. package/renderer/VideoConfig.mjs +44 -0
  263. package/renderer/VoxelModel.d.mts +34 -0
  264. package/renderer/VoxelModel.d.ts +34 -0
  265. package/renderer/VoxelModel.mjs +113 -0
  266. package/renderer/Voxelizer.d.mts +80 -0
  267. package/renderer/Voxelizer.d.ts +80 -0
  268. package/renderer/Voxelizer.mjs +261 -0
  269. package/renderer/WorldChunkView.d.mts +75 -0
  270. package/renderer/WorldChunkView.d.ts +75 -0
  271. package/renderer/WorldChunkView.mjs +224 -0
  272. package/renderer/WorldGenerator.d.mts +75 -0
  273. package/renderer/WorldGenerator.d.ts +75 -0
  274. package/renderer/WorldGenerator.mjs +255 -0
  275. package/renderer/WorldSink.d.mts +50 -0
  276. package/renderer/WorldSink.d.ts +50 -0
  277. package/renderer/WorldSink.mjs +177 -0
  278. package/renderer/WorldStream.d.mts +45 -0
  279. package/renderer/WorldStream.d.ts +45 -0
  280. package/renderer/WorldStream.mjs +184 -0
  281. package/renderer/WsPartitionHints.d.mts +29 -0
  282. package/renderer/WsPartitionHints.d.ts +29 -0
  283. package/renderer/WsPartitionHints.mjs +102 -0
  284. package/renderer/WsProfile.d.mts +46 -0
  285. package/renderer/WsProfile.d.ts +46 -0
  286. package/renderer/WsProfile.mjs +152 -0
  287. package/renderer/WsRunResult.d.mts +83 -0
  288. package/renderer/WsRunResult.d.ts +83 -0
  289. package/renderer/WsRunResult.mjs +326 -0
  290. package/renderer/WsSegmentJob.d.mts +28 -0
  291. package/renderer/WsSegmentJob.d.ts +28 -0
  292. package/renderer/WsSegmentJob.mjs +81 -0
  293. package/renderer/diplomat-runtime.d.mts +15 -0
  294. package/renderer/diplomat-runtime.d.ts +15 -0
  295. package/renderer/diplomat-runtime.mjs +779 -0
  296. package/renderer/diplomat-wasm.mjs +52 -0
  297. package/renderer/diplomat.config.mjs +5 -0
  298. package/renderer/index.d.mts +193 -0
  299. package/renderer/index.d.ts +193 -0
  300. package/renderer/index.mjs +196 -0
  301. package/renderer/nucleation.wasm +0 -0
  302. package/renderer/veneer/design.d.ts +167 -0
  303. package/renderer/veneer/design.mjs +480 -0
package/README.md CHANGED
@@ -53,3 +53,15 @@ embedded scripting are native-only.
53
53
  ## License
54
54
 
55
55
  MIT
56
+
57
+ ### Renderer-only WebAssembly
58
+
59
+ `import { Schematic } from "nucleation/renderer"` loads the bridge-only WASM build
60
+ for schematic viewing and editing. Simulation, meshing and voxelization remain
61
+ available from the main `nucleation` entry point. Each entry owns a separate WASM
62
+ instance; import only the entry needed by a worker.
63
+
64
+ Use `renderRegionsJson()` for region bounds and palettes, then
65
+ `regionBlockIndices(name, start, count)` for owned `Uint32Array` windows of at most
66
+ 65,536 cells. Indices use x-fastest, then z, then y order. Call `clearContents()`
67
+ when done to release schematic storage immediately.
package/Schematic.d.mts CHANGED
@@ -20,6 +20,13 @@ export class Schematic {
20
20
  */
21
21
  static create(name: string): Schematic;
22
22
 
23
+ /**
24
+ * Release all block/entity storage immediately, keeping an empty valid
25
+ * schematic handle. JS consumers should call this when a parsed world or
26
+ * editing session is no longer needed instead of waiting for finalizers.
27
+ */
28
+ clearContents(): void;
29
+
23
30
  /**
24
31
  * Return an independent deep copy. Subsequent block, region, entity,
25
32
  * metadata, or transform changes do not affect the original.
@@ -501,6 +508,22 @@ export class Schematic {
501
508
  */
502
509
  getChunkNonAirBlocksJson(offsetX: number, offsetY: number, offsetZ: number, width: number, height: number, length: number): string;
503
510
 
511
+ /**
512
+ * Storage metadata and full block states for palette-index streaming. Region order
513
+ * is default first, then sorted names (highest precedence first); indices are LOCAL to each region. Bounds
514
+ * describe allocated storage, never tight bounds. x is fastest, then z, then y.
515
+ * No block buffer is cloned or serialized here.
516
+ */
517
+ renderRegionsJson(): string;
518
+
519
+ /**
520
+ * A bounded window of a region's dense palette indices (including air).
521
+ * At most 65,536 cells per call; no full-world scan, coordinate tuples, or
522
+ * intermediate Rust allocation. JS bindings copy the borrowed slice before
523
+ * returning, so callers may mutate the schematic or grow WASM memory safely.
524
+ */
525
+ regionBlockIndices(regionName: string, start: number, count: number): Uint32Array;
526
+
504
527
  /**
505
528
  * Split the schematic into chunks (default bottom-up strategy). Writes a
506
529
  * JSON array of `{"chunk_x", "chunk_y", "chunk_z", "blocks": [...]}` where
package/Schematic.d.ts CHANGED
@@ -20,6 +20,13 @@ export class Schematic {
20
20
  */
21
21
  static create(name: string): Schematic;
22
22
 
23
+ /**
24
+ * Release all block/entity storage immediately, keeping an empty valid
25
+ * schematic handle. JS consumers should call this when a parsed world or
26
+ * editing session is no longer needed instead of waiting for finalizers.
27
+ */
28
+ clearContents(): void;
29
+
23
30
  /**
24
31
  * Return an independent deep copy. Subsequent block, region, entity,
25
32
  * metadata, or transform changes do not affect the original.
@@ -501,6 +508,22 @@ export class Schematic {
501
508
  */
502
509
  getChunkNonAirBlocksJson(offsetX: number, offsetY: number, offsetZ: number, width: number, height: number, length: number): string;
503
510
 
511
+ /**
512
+ * Storage metadata and full block states for palette-index streaming. Region order
513
+ * is default first, then sorted names (highest precedence first); indices are LOCAL to each region. Bounds
514
+ * describe allocated storage, never tight bounds. x is fastest, then z, then y.
515
+ * No block buffer is cloned or serialized here.
516
+ */
517
+ renderRegionsJson(): string;
518
+
519
+ /**
520
+ * A bounded window of a region's dense palette indices (including air).
521
+ * At most 65,536 cells per call; no full-world scan, coordinate tuples, or
522
+ * intermediate Rust allocation. JS bindings copy the borrowed slice before
523
+ * returning, so callers may mutate the schematic or grow WASM memory safely.
524
+ */
525
+ regionBlockIndices(regionName: string, start: number, count: number): Uint32Array;
526
+
504
527
  /**
505
528
  * Split the schematic into chunks (default bottom-up strategy). Writes a
506
529
  * JSON array of `{"chunk_x", "chunk_y", "chunk_z", "blocks": [...]}` where
package/Schematic.mjs CHANGED
@@ -61,6 +61,21 @@ export class Schematic {
61
61
  }
62
62
  }
63
63
 
64
+ /**
65
+ * Release all block/entity storage immediately, keeping an empty valid
66
+ * schematic handle. JS consumers should call this when a parsed world or
67
+ * editing session is no longer needed instead of waiting for finalizers.
68
+ */
69
+ clearContents() {
70
+ wasm.Schematic_clear_contents(this.ffiValue);
71
+
72
+ try {}
73
+
74
+ finally {
75
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
76
+ }
77
+ }
78
+
64
79
  /**
65
80
  * Return an independent deep copy. Subsequent block, region, entity,
66
81
  * metadata, or transform changes do not affect the original.
@@ -1959,6 +1974,61 @@ export class Schematic {
1959
1974
  }
1960
1975
  }
1961
1976
 
1977
+ /**
1978
+ * Storage metadata and full block states for palette-index streaming. Region order
1979
+ * is default first, then sorted names (highest precedence first); indices are LOCAL to each region. Bounds
1980
+ * describe allocated storage, never tight bounds. x is fastest, then z, then y.
1981
+ * No block buffer is cloned or serialized here.
1982
+ */
1983
+ renderRegionsJson() {
1984
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
1985
+
1986
+ wasm.Schematic_render_regions_json(this.ffiValue, write.buffer);
1987
+
1988
+ try {
1989
+ return write.readString8();
1990
+ }
1991
+
1992
+ finally {
1993
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
1994
+ write.free();
1995
+ }
1996
+ }
1997
+
1998
+ /**
1999
+ * A bounded window of a region's dense palette indices (including air).
2000
+ * At most 65,536 cells per call; no full-world scan, coordinate tuples, or
2001
+ * intermediate Rust allocation. JS bindings copy the borrowed slice before
2002
+ * returning, so callers may mutate the schematic or grow WASM memory safely.
2003
+ */
2004
+ regionBlockIndices(regionName, start, count) {
2005
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
2006
+
2007
+ const regionNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, regionName)));
2008
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 9, 4, true);
2009
+
2010
+ // This lifetime edge depends on lifetimes 'a
2011
+ let aEdges = [this];
2012
+
2013
+
2014
+ const result = wasm.Schematic_region_block_indices(diplomatReceive.buffer, this.ffiValue, regionNameSlice.ptr, start, count);
2015
+
2016
+ try {
2017
+ if (!diplomatReceive.resultFlag) {
2018
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
2019
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
2020
+ }
2021
+ return new diplomatRuntime.DiplomatSlicePrimitive(wasm, diplomatReceive.buffer, "u32", aEdges).getValue().slice();
2022
+ }
2023
+
2024
+ finally {
2025
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
2026
+ functionCleanupArena.free();
2027
+
2028
+ diplomatReceive.free();
2029
+ }
2030
+ }
2031
+
1962
2032
  /**
1963
2033
  * Split the schematic into chunks (default bottom-up strategy). Writes a
1964
2034
  * JSON array of `{"chunk_x", "chunk_y", "chunk_z", "blocks": [...]}` where
package/nucleation.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nucleation",
3
- "version": "0.10.22",
3
+ "version": "0.10.23",
4
4
  "description": "A high-performance Minecraft schematic parser and utility library",
5
5
  "type": "module",
6
6
  "main": "index.mjs",
@@ -12,6 +12,10 @@
12
12
  "./design": {
13
13
  "types": "./veneer/design.d.ts",
14
14
  "default": "./veneer/design.mjs"
15
+ },
16
+ "./renderer": {
17
+ "types": "./renderer/index.d.ts",
18
+ "default": "./renderer/index.mjs"
15
19
  }
16
20
  },
17
21
  "files": [
@@ -20,7 +24,8 @@
20
24
  "*.d.mts",
21
25
  "veneer/",
22
26
  "nucleation.wasm",
23
- "diplomat.config.mjs"
27
+ "diplomat.config.mjs",
28
+ "renderer/"
24
29
  ],
25
30
  "engines": {
26
31
  "node": ">=18"
@@ -0,0 +1,44 @@
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
+ * A reusable set of property tracks, modelled after Anime.js object animations.
9
+ */
10
+ export class AnimationEffect {
11
+ /** @internal */
12
+ get ffiValue(): pointer;
13
+ /** @internal */
14
+ constructor();
15
+
16
+
17
+ static create(durationMs: number): AnimationEffect;
18
+
19
+ static instant(): AnimationEffect;
20
+
21
+ static popIn(durationMs: number): AnimationEffect;
22
+
23
+ static dropIn(durationMs: number, height: number): AnimationEffect;
24
+
25
+ static dropAndPop(durationMs: number, height: number): AnimationEffect;
26
+
27
+ static spinIn(durationMs: number, turns: number): AnimationEffect;
28
+
29
+ static turntable(durationMs: number): AnimationEffect;
30
+
31
+ /**
32
+ * Add a two-key property tween. Property names follow Anime.js/Three.js:
33
+ * `x`, `y`, `z`, `rotateX`, `rotateY`, `rotateZ`, `scale`, `opacity`,
34
+ * `tintR/G/B/A`, and `emissiveR/G/B`.
35
+ */
36
+ addTween(propertyName: string, start: number, end: number, easingName: string): void;
37
+
38
+ /**
39
+ * Add a normalised keyframe (`at` in `0..=1`) to a property track.
40
+ */
41
+ addKeyframe(propertyName: string, at: number, value: number, easingName: string): void;
42
+
43
+ setRepeatForever(): void;
44
+ }
@@ -0,0 +1,44 @@
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
+ * A reusable set of property tracks, modelled after Anime.js object animations.
9
+ */
10
+ export class AnimationEffect {
11
+ /** @internal */
12
+ get ffiValue(): pointer;
13
+ /** @internal */
14
+ constructor();
15
+
16
+
17
+ static create(durationMs: number): AnimationEffect;
18
+
19
+ static instant(): AnimationEffect;
20
+
21
+ static popIn(durationMs: number): AnimationEffect;
22
+
23
+ static dropIn(durationMs: number, height: number): AnimationEffect;
24
+
25
+ static dropAndPop(durationMs: number, height: number): AnimationEffect;
26
+
27
+ static spinIn(durationMs: number, turns: number): AnimationEffect;
28
+
29
+ static turntable(durationMs: number): AnimationEffect;
30
+
31
+ /**
32
+ * Add a two-key property tween. Property names follow Anime.js/Three.js:
33
+ * `x`, `y`, `z`, `rotateX`, `rotateY`, `rotateZ`, `scale`, `opacity`,
34
+ * `tintR/G/B/A`, and `emissiveR/G/B`.
35
+ */
36
+ addTween(propertyName: string, start: number, end: number, easingName: string): void;
37
+
38
+ /**
39
+ * Add a normalised keyframe (`at` in `0..=1`) to a property track.
40
+ */
41
+ addKeyframe(propertyName: string, at: number, value: number, easingName: string): void;
42
+
43
+ setRepeatForever(): void;
44
+ }
@@ -0,0 +1,204 @@
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 AnimationEffect_box_destroy_registry = new FinalizationRegistry((ptr) => {
7
+ wasm.AnimationEffect_destroy(ptr);
8
+ });
9
+
10
+ /**
11
+ * A reusable set of property tracks, modelled after Anime.js object animations.
12
+ */
13
+ export class AnimationEffect {
14
+ // Internal ptr reference:
15
+ #ptr = null;
16
+
17
+ // Lifetimes are only to keep dependencies alive.
18
+ // Since JS won't garbage collect until there are no incoming edges.
19
+ #selfEdge = [];
20
+
21
+ #internalConstructor(symbol, ptr, selfEdge) {
22
+ if (symbol !== diplomatRuntime.internalConstructor) {
23
+ console.error("AnimationEffect is an Opaque type. You cannot call its constructor.");
24
+ return;
25
+ }
26
+ this.#ptr = ptr;
27
+ this.#selfEdge = selfEdge;
28
+
29
+ // Are we being borrowed? If not, we can register.
30
+ if (this.#selfEdge.length === 0) {
31
+ AnimationEffect_box_destroy_registry.register(this, this.#ptr);
32
+ }
33
+
34
+ return this;
35
+ }
36
+ /** @internal */
37
+ get ffiValue() {
38
+ return this.#ptr;
39
+ }
40
+
41
+
42
+ static create(durationMs) {
43
+
44
+ const result = wasm.AnimationEffect_create(durationMs);
45
+
46
+ try {
47
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
48
+ }
49
+
50
+ finally {
51
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
52
+ }
53
+ }
54
+
55
+ static instant() {
56
+
57
+ const result = wasm.AnimationEffect_instant();
58
+
59
+ try {
60
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
61
+ }
62
+
63
+ finally {
64
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
65
+ }
66
+ }
67
+
68
+ static popIn(durationMs) {
69
+
70
+ const result = wasm.AnimationEffect_pop_in(durationMs);
71
+
72
+ try {
73
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
74
+ }
75
+
76
+ finally {
77
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
78
+ }
79
+ }
80
+
81
+ static dropIn(durationMs, height) {
82
+
83
+ const result = wasm.AnimationEffect_drop_in(durationMs, height);
84
+
85
+ try {
86
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
87
+ }
88
+
89
+ finally {
90
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
91
+ }
92
+ }
93
+
94
+ static dropAndPop(durationMs, height) {
95
+
96
+ const result = wasm.AnimationEffect_drop_and_pop(durationMs, height);
97
+
98
+ try {
99
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
100
+ }
101
+
102
+ finally {
103
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
104
+ }
105
+ }
106
+
107
+ static spinIn(durationMs, turns) {
108
+
109
+ const result = wasm.AnimationEffect_spin_in(durationMs, turns);
110
+
111
+ try {
112
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
113
+ }
114
+
115
+ finally {
116
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
117
+ }
118
+ }
119
+
120
+ static turntable(durationMs) {
121
+
122
+ const result = wasm.AnimationEffect_turntable(durationMs);
123
+
124
+ try {
125
+ return new AnimationEffect(diplomatRuntime.internalConstructor, result, []);
126
+ }
127
+
128
+ finally {
129
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
130
+ }
131
+ }
132
+
133
+ /**
134
+ * Add a two-key property tween. Property names follow Anime.js/Three.js:
135
+ * `x`, `y`, `z`, `rotateX`, `rotateY`, `rotateZ`, `scale`, `opacity`,
136
+ * `tintR/G/B/A`, and `emissiveR/G/B`.
137
+ */
138
+ addTween(propertyName, start, end, easingName) {
139
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
140
+
141
+ const propertyNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, propertyName)));
142
+ const easingNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, easingName)));
143
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
144
+
145
+
146
+ const result = wasm.AnimationEffect_add_tween(diplomatReceive.buffer, this.ffiValue, propertyNameSlice.ptr, start, end, easingNameSlice.ptr);
147
+
148
+ try {
149
+ if (!diplomatReceive.resultFlag) {
150
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
151
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
152
+ }
153
+ }
154
+
155
+ finally {
156
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
157
+ functionCleanupArena.free();
158
+
159
+ diplomatReceive.free();
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Add a normalised keyframe (`at` in `0..=1`) to a property track.
165
+ */
166
+ addKeyframe(propertyName, at, value, easingName) {
167
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
168
+
169
+ const propertyNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, propertyName)));
170
+ const easingNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, easingName)));
171
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
172
+
173
+
174
+ const result = wasm.AnimationEffect_add_keyframe(diplomatReceive.buffer, this.ffiValue, propertyNameSlice.ptr, at, value, easingNameSlice.ptr);
175
+
176
+ try {
177
+ if (!diplomatReceive.resultFlag) {
178
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
179
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
180
+ }
181
+ }
182
+
183
+ finally {
184
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
185
+ functionCleanupArena.free();
186
+
187
+ diplomatReceive.free();
188
+ }
189
+ }
190
+
191
+ setRepeatForever() {
192
+ wasm.AnimationEffect_set_repeat_forever(this.ffiValue);
193
+
194
+ try {}
195
+
196
+ finally {
197
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
198
+ }
199
+ }
200
+
201
+ constructor(symbol, ptr, selfEdge) {
202
+ return this.#internalConstructor(...arguments)
203
+ }
204
+ }
@@ -0,0 +1,43 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { Schematic } from "./Schematic.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * Free functions in the old ABI hung directly off `schematic_*`; here they get a
10
+ * namespacing opaque-less home via static methods on a zero-size type is not
11
+ * supported, so they live as static methods taking `&Schematic` explicitly.
12
+ */
13
+ export class Autostack {
14
+ /** @internal */
15
+ get ffiValue(): pointer;
16
+ /** @internal */
17
+ constructor();
18
+
19
+
20
+ /**
21
+ * Detect repeating structures (region coverage). Writes a JSON array string;
22
+ * each element has `mode`, `vectors`, `coverage`, `region_min`/`region_max`,
23
+ * `cell_min`/`cell_max`, `label`.
24
+ */
25
+ static detectStructures(schematic: Schematic): string;
26
+
27
+ /**
28
+ * Graph-based detection: recovers diagonal lattice periods via the redstone
29
+ * logic graph. Writes `"[]"` for non-redstone builds. Requires the
30
+ * `simulation` feature; writes `"[]"` when compiled without it.
31
+ */
32
+ static detectStructuresGraph(schematic: Schematic): string;
33
+
34
+ /**
35
+ * Resize a 1D / diagonal structure along its period vector.
36
+ */
37
+ static resize1d(schematic: Schematic, vx: number, vy: number, vz: number, units: number): Schematic;
38
+
39
+ /**
40
+ * Resize a 2D structure to `n1`×`n2` cells along the two period vectors.
41
+ */
42
+ static resize2d(schematic: Schematic, v1x: number, v1y: number, v1z: number, v2x: number, v2y: number, v2z: number, n1: number, n2: number): Schematic;
43
+ }
@@ -0,0 +1,43 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { Schematic } from "./Schematic.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * Free functions in the old ABI hung directly off `schematic_*`; here they get a
10
+ * namespacing opaque-less home via static methods on a zero-size type is not
11
+ * supported, so they live as static methods taking `&Schematic` explicitly.
12
+ */
13
+ export class Autostack {
14
+ /** @internal */
15
+ get ffiValue(): pointer;
16
+ /** @internal */
17
+ constructor();
18
+
19
+
20
+ /**
21
+ * Detect repeating structures (region coverage). Writes a JSON array string;
22
+ * each element has `mode`, `vectors`, `coverage`, `region_min`/`region_max`,
23
+ * `cell_min`/`cell_max`, `label`.
24
+ */
25
+ static detectStructures(schematic: Schematic): string;
26
+
27
+ /**
28
+ * Graph-based detection: recovers diagonal lattice periods via the redstone
29
+ * logic graph. Writes `"[]"` for non-redstone builds. Requires the
30
+ * `simulation` feature; writes `"[]"` when compiled without it.
31
+ */
32
+ static detectStructuresGraph(schematic: Schematic): string;
33
+
34
+ /**
35
+ * Resize a 1D / diagonal structure along its period vector.
36
+ */
37
+ static resize1d(schematic: Schematic, vx: number, vy: number, vz: number, units: number): Schematic;
38
+
39
+ /**
40
+ * Resize a 2D structure to `n1`×`n2` cells along the two period vectors.
41
+ */
42
+ static resize2d(schematic: Schematic, v1x: number, v1y: number, v1z: number, v2x: number, v2y: number, v2z: number, n1: number, n2: number): Schematic;
43
+ }