nucleation 0.10.21 → 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 (314) hide show
  1. package/BlockPos.mjs +1 -0
  2. package/Dimensions.mjs +1 -0
  3. package/FieldRange.mjs +1 -0
  4. package/ItemScale.mjs +1 -0
  5. package/MeshBounds.mjs +1 -0
  6. package/MeshProgress.mjs +1 -0
  7. package/README.md +12 -0
  8. package/RegionBounds.mjs +1 -0
  9. package/Schematic.d.mts +32 -0
  10. package/Schematic.d.ts +32 -0
  11. package/Schematic.mjs +100 -0
  12. package/SdfBounds.mjs +1 -0
  13. package/SdfNormal.mjs +1 -0
  14. package/TextureInfo.mjs +1 -0
  15. package/diplomat-runtime.mjs +19 -14
  16. package/nucleation.wasm +0 -0
  17. package/package.json +7 -2
  18. package/renderer/AnimationEffect.d.mts +44 -0
  19. package/renderer/AnimationEffect.d.ts +44 -0
  20. package/renderer/AnimationEffect.mjs +204 -0
  21. package/renderer/Autostack.d.mts +43 -0
  22. package/renderer/Autostack.d.ts +43 -0
  23. package/renderer/Autostack.mjs +134 -0
  24. package/renderer/BlockPos.d.mts +28 -0
  25. package/renderer/BlockPos.d.ts +28 -0
  26. package/renderer/BlockPos.mjs +130 -0
  27. package/renderer/BlockState.d.mts +39 -0
  28. package/renderer/BlockState.d.ts +39 -0
  29. package/renderer/BlockState.mjs +134 -0
  30. package/renderer/Blocks.d.mts +91 -0
  31. package/renderer/Blocks.d.ts +91 -0
  32. package/renderer/Blocks.mjs +308 -0
  33. package/renderer/Brush.d.mts +99 -0
  34. package/renderer/Brush.d.ts +99 -0
  35. package/renderer/Brush.mjs +335 -0
  36. package/renderer/BuildAnimation.d.mts +179 -0
  37. package/renderer/BuildAnimation.d.ts +179 -0
  38. package/renderer/BuildAnimation.mjs +1148 -0
  39. package/renderer/BuildingTool.d.mts +46 -0
  40. package/renderer/BuildingTool.d.ts +46 -0
  41. package/renderer/BuildingTool.mjs +121 -0
  42. package/renderer/CellExecutor.d.mts +51 -0
  43. package/renderer/CellExecutor.d.ts +51 -0
  44. package/renderer/CellExecutor.mjs +171 -0
  45. package/renderer/CellularSdfConfig.d.mts +22 -0
  46. package/renderer/CellularSdfConfig.d.ts +22 -0
  47. package/renderer/CellularSdfConfig.mjs +69 -0
  48. package/renderer/ChunkMeshResult.d.mts +75 -0
  49. package/renderer/ChunkMeshResult.d.ts +75 -0
  50. package/renderer/ChunkMeshResult.mjs +253 -0
  51. package/renderer/CircuitBuilder.d.mts +118 -0
  52. package/renderer/CircuitBuilder.d.ts +118 -0
  53. package/renderer/CircuitBuilder.mjs +516 -0
  54. package/renderer/Curve3D.d.mts +27 -0
  55. package/renderer/Curve3D.d.ts +27 -0
  56. package/renderer/Curve3D.mjs +101 -0
  57. package/renderer/DefinitionRegion.d.mts +274 -0
  58. package/renderer/DefinitionRegion.d.ts +274 -0
  59. package/renderer/DefinitionRegion.mjs +973 -0
  60. package/renderer/Design.d.mts +348 -0
  61. package/renderer/Design.d.ts +348 -0
  62. package/renderer/Design.mjs +1334 -0
  63. package/renderer/Diff.d.mts +88 -0
  64. package/renderer/Diff.d.ts +88 -0
  65. package/renderer/Diff.mjs +316 -0
  66. package/renderer/Dimensions.d.mts +28 -0
  67. package/renderer/Dimensions.d.ts +28 -0
  68. package/renderer/Dimensions.mjs +130 -0
  69. package/renderer/DistanceField.d.mts +39 -0
  70. package/renderer/DistanceField.d.ts +39 -0
  71. package/renderer/DistanceField.mjs +114 -0
  72. package/renderer/ExecutionMode.d.mts +42 -0
  73. package/renderer/ExecutionMode.d.ts +42 -0
  74. package/renderer/ExecutionMode.mjs +127 -0
  75. package/renderer/Field3.d.mts +40 -0
  76. package/renderer/Field3.d.ts +40 -0
  77. package/renderer/Field3.mjs +160 -0
  78. package/renderer/FieldProgram.d.mts +40 -0
  79. package/renderer/FieldProgram.d.ts +40 -0
  80. package/renderer/FieldProgram.mjs +167 -0
  81. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  82. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  83. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  84. package/renderer/FieldProgramBuilder.d.mts +104 -0
  85. package/renderer/FieldProgramBuilder.d.ts +104 -0
  86. package/renderer/FieldProgramBuilder.mjs +486 -0
  87. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  88. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  89. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  90. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  91. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  92. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  93. package/renderer/FieldProgramValueType.d.mts +25 -0
  94. package/renderer/FieldProgramValueType.d.ts +25 -0
  95. package/renderer/FieldProgramValueType.mjs +75 -0
  96. package/renderer/FieldRange.d.mts +15 -0
  97. package/renderer/FieldRange.d.ts +15 -0
  98. package/renderer/FieldRange.mjs +109 -0
  99. package/renderer/Fingerprint.d.mts +44 -0
  100. package/renderer/Fingerprint.d.ts +44 -0
  101. package/renderer/Fingerprint.mjs +197 -0
  102. package/renderer/GeneratedChunk.d.mts +35 -0
  103. package/renderer/GeneratedChunk.d.ts +35 -0
  104. package/renderer/GeneratedChunk.mjs +178 -0
  105. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  106. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  107. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  108. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  109. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  110. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  111. package/renderer/GeneratedWorldStream.d.mts +28 -0
  112. package/renderer/GeneratedWorldStream.d.ts +28 -0
  113. package/renderer/GeneratedWorldStream.mjs +86 -0
  114. package/renderer/Geo.d.mts +41 -0
  115. package/renderer/Geo.d.ts +41 -0
  116. package/renderer/Geo.mjs +121 -0
  117. package/renderer/Hdl.d.mts +56 -0
  118. package/renderer/Hdl.d.ts +56 -0
  119. package/renderer/Hdl.mjs +163 -0
  120. package/renderer/InterpolationSpace.d.mts +25 -0
  121. package/renderer/InterpolationSpace.d.ts +25 -0
  122. package/renderer/InterpolationSpace.mjs +73 -0
  123. package/renderer/IoLayout.d.mts +26 -0
  124. package/renderer/IoLayout.d.ts +26 -0
  125. package/renderer/IoLayout.mjs +81 -0
  126. package/renderer/IoLayoutBuilder.d.mts +73 -0
  127. package/renderer/IoLayoutBuilder.d.ts +73 -0
  128. package/renderer/IoLayoutBuilder.mjs +315 -0
  129. package/renderer/IoType.d.mts +41 -0
  130. package/renderer/IoType.d.ts +41 -0
  131. package/renderer/IoType.mjs +125 -0
  132. package/renderer/ItemModelConfig.d.mts +65 -0
  133. package/renderer/ItemModelConfig.d.ts +65 -0
  134. package/renderer/ItemModelConfig.mjs +223 -0
  135. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  136. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  137. package/renderer/ItemModelPackBuilder.mjs +104 -0
  138. package/renderer/ItemModelResult.d.mts +72 -0
  139. package/renderer/ItemModelResult.d.ts +72 -0
  140. package/renderer/ItemModelResult.mjs +268 -0
  141. package/renderer/ItemScale.d.mts +31 -0
  142. package/renderer/ItemScale.d.ts +31 -0
  143. package/renderer/ItemScale.mjs +133 -0
  144. package/renderer/LayoutFunction.d.mts +52 -0
  145. package/renderer/LayoutFunction.d.ts +52 -0
  146. package/renderer/LayoutFunction.mjs +159 -0
  147. package/renderer/MchprsWorld.d.mts +131 -0
  148. package/renderer/MchprsWorld.d.ts +131 -0
  149. package/renderer/MchprsWorld.mjs +423 -0
  150. package/renderer/MeshBounds.d.mts +40 -0
  151. package/renderer/MeshBounds.d.ts +40 -0
  152. package/renderer/MeshBounds.mjs +181 -0
  153. package/renderer/MeshConfig.d.mts +101 -0
  154. package/renderer/MeshConfig.d.ts +101 -0
  155. package/renderer/MeshConfig.mjs +306 -0
  156. package/renderer/MeshJob.d.mts +44 -0
  157. package/renderer/MeshJob.d.ts +44 -0
  158. package/renderer/MeshJob.mjs +116 -0
  159. package/renderer/MeshPhase.d.mts +38 -0
  160. package/renderer/MeshPhase.d.ts +38 -0
  161. package/renderer/MeshPhase.mjs +90 -0
  162. package/renderer/MeshProgress.d.mts +32 -0
  163. package/renderer/MeshProgress.d.ts +32 -0
  164. package/renderer/MeshProgress.mjs +134 -0
  165. package/renderer/MeshResult.d.mts +76 -0
  166. package/renderer/MeshResult.d.ts +76 -0
  167. package/renderer/MeshResult.mjs +269 -0
  168. package/renderer/MultiMeshResult.d.mts +50 -0
  169. package/renderer/MultiMeshResult.d.ts +50 -0
  170. package/renderer/MultiMeshResult.mjs +166 -0
  171. package/renderer/Nbt.d.mts +50 -0
  172. package/renderer/Nbt.d.ts +50 -0
  173. package/renderer/Nbt.mjs +161 -0
  174. package/renderer/NucleationError.d.mts +53 -0
  175. package/renderer/NucleationError.d.ts +53 -0
  176. package/renderer/NucleationError.mjs +136 -0
  177. package/renderer/OutputCondition.d.mts +45 -0
  178. package/renderer/OutputCondition.d.ts +45 -0
  179. package/renderer/OutputCondition.mjs +129 -0
  180. package/renderer/Palette.d.mts +157 -0
  181. package/renderer/Palette.d.ts +157 -0
  182. package/renderer/Palette.mjs +487 -0
  183. package/renderer/PaletteBuilder.d.mts +119 -0
  184. package/renderer/PaletteBuilder.d.ts +119 -0
  185. package/renderer/PaletteBuilder.mjs +457 -0
  186. package/renderer/README.md +67 -0
  187. package/renderer/RawMeshExport.d.mts +74 -0
  188. package/renderer/RawMeshExport.d.ts +74 -0
  189. package/renderer/RawMeshExport.mjs +243 -0
  190. package/renderer/RedstoneGraph.d.mts +58 -0
  191. package/renderer/RedstoneGraph.d.ts +58 -0
  192. package/renderer/RedstoneGraph.mjs +242 -0
  193. package/renderer/RegionBounds.d.mts +41 -0
  194. package/renderer/RegionBounds.d.ts +41 -0
  195. package/renderer/RegionBounds.mjs +182 -0
  196. package/renderer/RenderConfig.d.mts +101 -0
  197. package/renderer/RenderConfig.d.ts +101 -0
  198. package/renderer/RenderConfig.mjs +271 -0
  199. package/renderer/Renderer.d.mts +51 -0
  200. package/renderer/Renderer.d.ts +51 -0
  201. package/renderer/Renderer.mjs +219 -0
  202. package/renderer/ResourcePack.d.mts +105 -0
  203. package/renderer/ResourcePack.d.ts +105 -0
  204. package/renderer/ResourcePack.mjs +447 -0
  205. package/renderer/ResourcePackList.d.mts +32 -0
  206. package/renderer/ResourcePackList.d.ts +32 -0
  207. package/renderer/ResourcePackList.mjs +96 -0
  208. package/renderer/Routing.d.mts +66 -0
  209. package/renderer/Routing.d.ts +66 -0
  210. package/renderer/Routing.mjs +220 -0
  211. package/renderer/Schematic.d.mts +977 -0
  212. package/renderer/Schematic.d.ts +977 -0
  213. package/renderer/Schematic.mjs +3820 -0
  214. package/renderer/SchematicBuilder.d.mts +103 -0
  215. package/renderer/SchematicBuilder.d.ts +103 -0
  216. package/renderer/SchematicBuilder.mjs +401 -0
  217. package/renderer/SchematicRegions.d.mts +93 -0
  218. package/renderer/SchematicRegions.d.ts +93 -0
  219. package/renderer/SchematicRegions.mjs +411 -0
  220. package/renderer/SchematicSplitResult.d.mts +26 -0
  221. package/renderer/SchematicSplitResult.d.ts +26 -0
  222. package/renderer/SchematicSplitResult.mjs +84 -0
  223. package/renderer/Scripting.d.mts +40 -0
  224. package/renderer/Scripting.d.ts +40 -0
  225. package/renderer/Scripting.mjs +138 -0
  226. package/renderer/Sdf.d.mts +234 -0
  227. package/renderer/Sdf.d.ts +234 -0
  228. package/renderer/Sdf.mjs +1234 -0
  229. package/renderer/SdfAxis.d.mts +25 -0
  230. package/renderer/SdfAxis.d.ts +25 -0
  231. package/renderer/SdfAxis.mjs +75 -0
  232. package/renderer/SdfBounds.d.mts +19 -0
  233. package/renderer/SdfBounds.d.ts +19 -0
  234. package/renderer/SdfBounds.mjs +161 -0
  235. package/renderer/SdfCellMode.d.mts +26 -0
  236. package/renderer/SdfCellMode.d.ts +26 -0
  237. package/renderer/SdfCellMode.mjs +78 -0
  238. package/renderer/SdfNormal.d.mts +16 -0
  239. package/renderer/SdfNormal.d.ts +16 -0
  240. package/renderer/SdfNormal.mjs +122 -0
  241. package/renderer/Shape.d.mts +143 -0
  242. package/renderer/Shape.d.ts +143 -0
  243. package/renderer/Shape.mjs +458 -0
  244. package/renderer/SortStrategy.d.mts +86 -0
  245. package/renderer/SortStrategy.d.ts +86 -0
  246. package/renderer/SortStrategy.mjs +272 -0
  247. package/renderer/Store.d.mts +83 -0
  248. package/renderer/Store.d.ts +83 -0
  249. package/renderer/Store.mjs +369 -0
  250. package/renderer/StoreIo.d.mts +71 -0
  251. package/renderer/StoreIo.d.ts +71 -0
  252. package/renderer/StoreIo.mjs +292 -0
  253. package/renderer/TextureAtlas.d.mts +40 -0
  254. package/renderer/TextureAtlas.d.ts +40 -0
  255. package/renderer/TextureAtlas.mjs +122 -0
  256. package/renderer/TextureInfo.d.mts +34 -0
  257. package/renderer/TextureInfo.d.ts +34 -0
  258. package/renderer/TextureInfo.mjs +149 -0
  259. package/renderer/TickSettleMode.d.mts +34 -0
  260. package/renderer/TickSettleMode.d.ts +34 -0
  261. package/renderer/TickSettleMode.mjs +84 -0
  262. package/renderer/TickSimulation.d.mts +572 -0
  263. package/renderer/TickSimulation.d.ts +572 -0
  264. package/renderer/TickSimulation.mjs +1299 -0
  265. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  266. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  267. package/renderer/TypedCircuitExecutor.mjs +378 -0
  268. package/renderer/Value.d.mts +73 -0
  269. package/renderer/Value.d.ts +73 -0
  270. package/renderer/Value.mjs +275 -0
  271. package/renderer/VideoConfig.d.mts +15 -0
  272. package/renderer/VideoConfig.d.ts +15 -0
  273. package/renderer/VideoConfig.mjs +44 -0
  274. package/renderer/VoxelModel.d.mts +34 -0
  275. package/renderer/VoxelModel.d.ts +34 -0
  276. package/renderer/VoxelModel.mjs +113 -0
  277. package/renderer/Voxelizer.d.mts +80 -0
  278. package/renderer/Voxelizer.d.ts +80 -0
  279. package/renderer/Voxelizer.mjs +261 -0
  280. package/renderer/WorldChunkView.d.mts +75 -0
  281. package/renderer/WorldChunkView.d.ts +75 -0
  282. package/renderer/WorldChunkView.mjs +224 -0
  283. package/renderer/WorldGenerator.d.mts +75 -0
  284. package/renderer/WorldGenerator.d.ts +75 -0
  285. package/renderer/WorldGenerator.mjs +255 -0
  286. package/renderer/WorldSink.d.mts +50 -0
  287. package/renderer/WorldSink.d.ts +50 -0
  288. package/renderer/WorldSink.mjs +177 -0
  289. package/renderer/WorldStream.d.mts +45 -0
  290. package/renderer/WorldStream.d.ts +45 -0
  291. package/renderer/WorldStream.mjs +184 -0
  292. package/renderer/WsPartitionHints.d.mts +29 -0
  293. package/renderer/WsPartitionHints.d.ts +29 -0
  294. package/renderer/WsPartitionHints.mjs +102 -0
  295. package/renderer/WsProfile.d.mts +46 -0
  296. package/renderer/WsProfile.d.ts +46 -0
  297. package/renderer/WsProfile.mjs +152 -0
  298. package/renderer/WsRunResult.d.mts +83 -0
  299. package/renderer/WsRunResult.d.ts +83 -0
  300. package/renderer/WsRunResult.mjs +326 -0
  301. package/renderer/WsSegmentJob.d.mts +28 -0
  302. package/renderer/WsSegmentJob.d.ts +28 -0
  303. package/renderer/WsSegmentJob.mjs +81 -0
  304. package/renderer/diplomat-runtime.d.mts +15 -0
  305. package/renderer/diplomat-runtime.d.ts +15 -0
  306. package/renderer/diplomat-runtime.mjs +779 -0
  307. package/renderer/diplomat-wasm.mjs +52 -0
  308. package/renderer/diplomat.config.mjs +5 -0
  309. package/renderer/index.d.mts +193 -0
  310. package/renderer/index.d.ts +193 -0
  311. package/renderer/index.mjs +196 -0
  312. package/renderer/nucleation.wasm +0 -0
  313. package/renderer/veneer/design.d.ts +167 -0
  314. package/renderer/veneer/design.mjs +480 -0
package/BlockPos.mjs CHANGED
@@ -108,6 +108,7 @@ export class BlockPos {
108
108
  // This method does not attempt to handle any dependencies between lifetimes, the caller
109
109
  // should handle this when constructing edge arrays.
110
110
  static _fromFFI(internalConstructor, ptr) {
111
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
111
112
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
112
113
  throw new Error("BlockPos._fromFFI is not meant to be called externally. Please use the default constructor.");
113
114
  }
package/Dimensions.mjs CHANGED
@@ -108,6 +108,7 @@ export class Dimensions {
108
108
  // This method does not attempt to handle any dependencies between lifetimes, the caller
109
109
  // should handle this when constructing edge arrays.
110
110
  static _fromFFI(internalConstructor, ptr) {
111
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
111
112
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
112
113
  throw new Error("Dimensions._fromFFI is not meant to be called externally. Please use the default constructor.");
113
114
  }
package/FieldRange.mjs CHANGED
@@ -89,6 +89,7 @@ export class FieldRange {
89
89
  // This method does not attempt to handle any dependencies between lifetimes, the caller
90
90
  // should handle this when constructing edge arrays.
91
91
  static _fromFFI(internalConstructor, ptr) {
92
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
92
93
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
93
94
  throw new Error("FieldRange._fromFFI is not meant to be called externally. Please use the default constructor.");
94
95
  }
package/ItemScale.mjs CHANGED
@@ -111,6 +111,7 @@ export class ItemScale {
111
111
  // This method does not attempt to handle any dependencies between lifetimes, the caller
112
112
  // should handle this when constructing edge arrays.
113
113
  static _fromFFI(internalConstructor, ptr) {
114
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
114
115
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
115
116
  throw new Error("ItemScale._fromFFI is not meant to be called externally. Please use the default constructor.");
116
117
  }
package/MeshBounds.mjs CHANGED
@@ -153,6 +153,7 @@ export class MeshBounds {
153
153
  // This method does not attempt to handle any dependencies between lifetimes, the caller
154
154
  // should handle this when constructing edge arrays.
155
155
  static _fromFFI(internalConstructor, ptr) {
156
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
156
157
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
157
158
  throw new Error("MeshBounds._fromFFI is not meant to be called externally. Please use the default constructor.");
158
159
  }
package/MeshProgress.mjs CHANGED
@@ -112,6 +112,7 @@ export class MeshProgress {
112
112
  // This method does not attempt to handle any dependencies between lifetimes, the caller
113
113
  // should handle this when constructing edge arrays.
114
114
  static _fromFFI(internalConstructor, ptr) {
115
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
115
116
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
116
117
  throw new Error("MeshProgress._fromFFI is not meant to be called externally. Please use the default constructor.");
117
118
  }
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/RegionBounds.mjs CHANGED
@@ -154,6 +154,7 @@ export class RegionBounds {
154
154
  // This method does not attempt to handle any dependencies between lifetimes, the caller
155
155
  // should handle this when constructing edge arrays.
156
156
  static _fromFFI(internalConstructor, ptr) {
157
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
157
158
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
158
159
  throw new Error("RegionBounds._fromFFI is not meant to be called externally. Please use the default constructor.");
159
160
  }
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.
@@ -492,6 +499,31 @@ export class Schematic {
492
499
  */
493
500
  getChunkBlocksJson(offsetX: number, offsetY: number, offsetZ: number, width: number, height: number, length: number): string;
494
501
 
502
+ /**
503
+ * Non-air blocks inside a bounded box, retaining block-state properties.
504
+ * Visits only intersecting region cells, not the whole schematic. Bounds
505
+ * and arithmetic are checked; queries may scan at most 1,048,576 cells
506
+ * (including region overlaps) and emit at most 32 MiB of JSON. Renderers
507
+ * should request 16³ sections. Coordinates may be negative.
508
+ */
509
+ getChunkNonAirBlocksJson(offsetX: number, offsetY: number, offsetZ: number, width: number, height: number, length: number): string;
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
+
495
527
  /**
496
528
  * Split the schematic into chunks (default bottom-up strategy). Writes a
497
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.
@@ -492,6 +499,31 @@ export class Schematic {
492
499
  */
493
500
  getChunkBlocksJson(offsetX: number, offsetY: number, offsetZ: number, width: number, height: number, length: number): string;
494
501
 
502
+ /**
503
+ * Non-air blocks inside a bounded box, retaining block-state properties.
504
+ * Visits only intersecting region cells, not the whole schematic. Bounds
505
+ * and arithmetic are checked; queries may scan at most 1,048,576 cells
506
+ * (including region overlaps) and emit at most 32 MiB of JSON. Renderers
507
+ * should request 16³ sections. Coordinates may be negative.
508
+ */
509
+ getChunkNonAirBlocksJson(offsetX: number, offsetY: number, offsetZ: number, width: number, height: number, length: number): string;
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
+
495
527
  /**
496
528
  * Split the schematic into chunks (default bottom-up strategy). Writes a
497
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.
@@ -1929,6 +1944,91 @@ export class Schematic {
1929
1944
  }
1930
1945
  }
1931
1946
 
1947
+ /**
1948
+ * Non-air blocks inside a bounded box, retaining block-state properties.
1949
+ * Visits only intersecting region cells, not the whole schematic. Bounds
1950
+ * and arithmetic are checked; queries may scan at most 1,048,576 cells
1951
+ * (including region overlaps) and emit at most 32 MiB of JSON. Renderers
1952
+ * should request 16³ sections. Coordinates may be negative.
1953
+ */
1954
+ getChunkNonAirBlocksJson(offsetX, offsetY, offsetZ, width, height, length) {
1955
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
1956
+
1957
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
1958
+
1959
+
1960
+ const result = wasm.Schematic_get_chunk_non_air_blocks_json(diplomatReceive.buffer, this.ffiValue, offsetX, offsetY, offsetZ, width, height, length, write.buffer);
1961
+
1962
+ try {
1963
+ if (!diplomatReceive.resultFlag) {
1964
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
1965
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
1966
+ }
1967
+ return write.readString8();
1968
+ }
1969
+
1970
+ finally {
1971
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
1972
+ diplomatReceive.free();
1973
+ write.free();
1974
+ }
1975
+ }
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
+
1932
2032
  /**
1933
2033
  * Split the schematic into chunks (default bottom-up strategy). Writes a
1934
2034
  * JSON array of `{"chunk_x", "chunk_y", "chunk_z", "blocks": [...]}` where
package/SdfBounds.mjs CHANGED
@@ -133,6 +133,7 @@ export class SdfBounds {
133
133
  // This method does not attempt to handle any dependencies between lifetimes, the caller
134
134
  // should handle this when constructing edge arrays.
135
135
  static _fromFFI(internalConstructor, ptr) {
136
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
136
137
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
137
138
  throw new Error("SdfBounds._fromFFI is not meant to be called externally. Please use the default constructor.");
138
139
  }
package/SdfNormal.mjs CHANGED
@@ -100,6 +100,7 @@ export class SdfNormal {
100
100
  // This method does not attempt to handle any dependencies between lifetimes, the caller
101
101
  // should handle this when constructing edge arrays.
102
102
  static _fromFFI(internalConstructor, ptr) {
103
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
103
104
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
104
105
  throw new Error("SdfNormal._fromFFI is not meant to be called externally. Please use the default constructor.");
105
106
  }
package/TextureInfo.mjs CHANGED
@@ -125,6 +125,7 @@ export class TextureInfo {
125
125
  // This method does not attempt to handle any dependencies between lifetimes, the caller
126
126
  // should handle this when constructing edge arrays.
127
127
  static _fromFFI(internalConstructor, ptr) {
128
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
128
129
  if (internalConstructor !== diplomatRuntime.internalConstructor) {
129
130
  throw new Error("TextureInfo._fromFFI is not meant to be called externally. Please use the default constructor.");
130
131
  }
@@ -8,11 +8,13 @@ export const internalConstructor = Symbol("constructor");
8
8
  export const exposeConstructor = Symbol("exposeConstructor");
9
9
 
10
10
  export function readString8(wasm, ptr, len) {
11
+ ptr >>>= 0; // wasm32 addresses are unsigned, including above 2 GiB.
11
12
  const buf = new Uint8Array(wasm.memory.buffer, ptr, len);
12
13
  return (new TextDecoder("utf-8")).decode(buf)
13
14
  }
14
15
 
15
16
  export function readString16(wasm, ptr, len) {
17
+ ptr >>>= 0; // wasm32 addresses are unsigned, including above 2 GiB.
16
18
  const buf = new Uint16Array(wasm.memory.buffer, ptr, len);
17
19
  return String.fromCharCode.apply(null, buf)
18
20
  }
@@ -48,6 +50,7 @@ export function withDiplomatWrite(wasm, callback) {
48
50
  * @returns {number} The underlying pointer.
49
51
  */
50
52
  export function ptrRead(wasm, ptr) {
53
+ ptr >>>= 0; // wasm32 addresses are unsigned, including above 2 GiB.
51
54
  return (new Uint32Array(wasm.memory.buffer, ptr, 1))[0];
52
55
  }
53
56
 
@@ -55,6 +58,7 @@ export function ptrRead(wasm, ptr) {
55
58
  * Get the flag of a result type.
56
59
  */
57
60
  export function resultFlag(wasm, ptr, offset) {
61
+ ptr >>>= 0; // wasm32 addresses are unsigned, including above 2 GiB.
58
62
  return (new Uint8Array(wasm.memory.buffer, ptr + offset, 1))[0];
59
63
  }
60
64
 
@@ -62,6 +66,7 @@ export function resultFlag(wasm, ptr, offset) {
62
66
  * Get the discriminant of a Rust enum.
63
67
  */
64
68
  export function enumDiscriminant(wasm, ptr) {
69
+ ptr >>>= 0; // wasm32 addresses are unsigned, including above 2 GiB.
65
70
  return (new Int32Array(wasm.memory.buffer, ptr, 1))[0]
66
71
  }
67
72
 
@@ -83,7 +88,7 @@ export function maybePaddingFields(needsPaddingFields, paddingCount) {
83
88
  * (which is a `TypedArray` variant like `Uint8Array` or `Int16Array`)
84
89
  */
85
90
  export function writeToArrayBuffer(arrayBuffer, offset, value, typedArrayKind) {
86
- let buffer = new typedArrayKind(arrayBuffer, offset);
91
+ let buffer = new typedArrayKind(arrayBuffer, offset < 0 ? offset >>> 0 : offset);
87
92
  buffer[0] = value;
88
93
  }
89
94
 
@@ -223,7 +228,7 @@ export class DiplomatBuf {
223
228
  }
224
229
  }
225
230
 
226
- const ptr = wasm.diplomat_alloc(utf8Length, 1);
231
+ const ptr = wasm.diplomat_alloc(utf8Length, 1) >>> 0;
227
232
 
228
233
  const result = (new TextEncoder()).encodeInto(string, new Uint8Array(wasm.memory.buffer, ptr, utf8Length));
229
234
  console.assert(string.length === result.read && utf8Length === result.written, "UTF-8 write error");
@@ -233,7 +238,7 @@ export class DiplomatBuf {
233
238
 
234
239
  static str16 = (wasm, string) => {
235
240
  const byteLength = string.length * 2;
236
- const ptr = wasm.diplomat_alloc(byteLength, 2);
241
+ const ptr = wasm.diplomat_alloc(byteLength, 2) >>> 0;
237
242
 
238
243
  const destination = new Uint16Array(wasm.memory.buffer, ptr, string.length);
239
244
  for (let i = 0; i < string.length; i++) {
@@ -244,7 +249,7 @@ export class DiplomatBuf {
244
249
  }
245
250
 
246
251
  static sliceWrapper = (wasm, buf) => {
247
- const ptr = wasm.diplomat_alloc(8, 4);
252
+ const ptr = wasm.diplomat_alloc(8, 4) >>> 0;
248
253
  let dst = new Uint32Array(wasm.memory.buffer, ptr, 2);
249
254
 
250
255
  dst[0] = buf.ptr;
@@ -262,7 +267,7 @@ export class DiplomatBuf {
262
267
  4;
263
268
 
264
269
  const byteLength = list.length * elementSize;
265
- const ptr = wasm.diplomat_alloc(byteLength, elementSize);
270
+ const ptr = wasm.diplomat_alloc(byteLength, elementSize) >>> 0;
266
271
 
267
272
  /**
268
273
  * Create an array view of the buffer. This gives us the `set` method which correctly handles untyped values
@@ -288,15 +293,15 @@ export class DiplomatBuf {
288
293
 
289
294
  const byteLength = strings.length * 4 * 2;
290
295
 
291
- const ptr = wasm.diplomat_alloc(byteLength, 4);
296
+ const ptr = wasm.diplomat_alloc(byteLength, 4) >>> 0;
292
297
 
293
- const destination = new Uint32Array(wasm.memory.buffer, ptr, byteLength);
294
298
 
295
299
  const stringsAlloc = [];
296
300
 
297
301
  for (let i = 0; i < strings.length; i++) {
298
302
  stringsAlloc.push(encodeStr(wasm, strings[i]));
299
303
 
304
+ const destination = new Uint32Array(wasm.memory.buffer, ptr, strings.length * 2);
300
305
  destination[2 * i] = stringsAlloc[i].ptr;
301
306
  destination[(2 * i) + 1] = stringsAlloc[i].size;
302
307
  }
@@ -310,7 +315,7 @@ export class DiplomatBuf {
310
315
  }
311
316
 
312
317
  static struct = (wasm, size, align) => {
313
- const ptr = wasm.diplomat_alloc(size, align);
318
+ const ptr = wasm.diplomat_alloc(size, align) >>> 0;
314
319
 
315
320
  return new DiplomatBuf(ptr, size, () => {
316
321
  wasm.diplomat_free(ptr, size, align);
@@ -325,7 +330,7 @@ export class DiplomatBuf {
325
330
  free;
326
331
 
327
332
  constructor(ptr, size, free) {
328
- this.ptr = ptr;
333
+ this.ptr = ptr >>> 0;
329
334
  this.size = size;
330
335
  this.free = free;
331
336
  this.leak = () => { };
@@ -357,7 +362,7 @@ export class DiplomatWriteBuf {
357
362
 
358
363
  constructor(wasm) {
359
364
  this.#wasm = wasm;
360
- this.#buffer = this.#wasm.diplomat_buffer_write_create(0);
365
+ this.#buffer = this.#wasm.diplomat_buffer_write_create(0) >>> 0;
361
366
 
362
367
  this.leak = () => { };
363
368
  }
@@ -409,7 +414,7 @@ export class DiplomatSlice {
409
414
  constructor(wasm, buffer, bufferType, lifetimeEdges) {
410
415
  this.#wasm = wasm;
411
416
 
412
- const [ptr, size] = new Uint32Array(this.#wasm.memory.buffer, buffer, 2);
417
+ const [ptr, size] = new Uint32Array(this.#wasm.memory.buffer, buffer >>> 0, 2);
413
418
 
414
419
  this.#buffer = new bufferType(this.#wasm.memory.buffer, ptr, size);
415
420
  this.#bufferType = bufferType;
@@ -432,7 +437,7 @@ export class DiplomatSlice {
432
437
 
433
438
  export class DiplomatSlicePrimitive extends DiplomatSlice {
434
439
  constructor(wasm, buffer, sliceType, lifetimeEdges) {
435
- const [ptr, size] = new Uint32Array(wasm.memory.buffer, buffer, 2);
440
+ const [ptr, size] = new Uint32Array(wasm.memory.buffer, buffer >>> 0, 2);
436
441
 
437
442
  let arrayType;
438
443
  switch (sliceType) {
@@ -552,7 +557,7 @@ export class DiplomatReceiveBuf {
552
557
 
553
558
  this.#hasResult = hasResult;
554
559
 
555
- this.#buffer = this.#wasm.diplomat_alloc(this.#size, this.#align);
560
+ this.#buffer = this.#wasm.diplomat_alloc(this.#size, this.#align) >>> 0;
556
561
 
557
562
  this.leak = () => { };
558
563
  }
@@ -736,7 +741,7 @@ export class FunctionParamAllocator {
736
741
 
737
742
  this.#capacity = capacity;
738
743
  // FunctionParamAllocator is global, so this will be freed when the webpage closes:
739
- this.#ptr = wasm.diplomat_alloc(this.#capacity, 1);
744
+ this.#ptr = wasm.diplomat_alloc(this.#capacity, 1) >>> 0;
740
745
  }
741
746
 
742
747
  /**
package/nucleation.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nucleation",
3
- "version": "0.10.21",
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
+ }