nucleation 0.1.128__tar.gz → 0.1.129__tar.gz

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 (441) hide show
  1. {nucleation-0.1.128 → nucleation-0.1.129}/Cargo.lock +1 -1
  2. {nucleation-0.1.128 → nucleation-0.1.129}/Cargo.toml +1 -1
  3. {nucleation-0.1.128 → nucleation-0.1.129}/PKG-INFO +1 -1
  4. {nucleation-0.1.128 → nucleation-0.1.129}/docs/README.md +1 -0
  5. {nucleation-0.1.128 → nucleation-0.1.129}/docs/insign-io-integration.md +21 -0
  6. {nucleation-0.1.128 → nucleation-0.1.129}/docs/shared/guide/definition-region.md +50 -7
  7. {nucleation-0.1.128 → nucleation-0.1.129}/pyproject.toml +1 -1
  8. nucleation-0.1.129/release-artifacts/libnucleation-macos-arm64.dylib +0 -0
  9. nucleation-0.1.129/release-artifacts/libnucleation-macos-x64.dylib +0 -0
  10. nucleation-0.1.129/release-artifacts/libnucleation.rlib +0 -0
  11. nucleation-0.1.129/release-artifacts/nucleation_bg.wasm +0 -0
  12. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/package.json +1 -1
  13. nucleation-0.1.129/simple_cube.litematic +0 -0
  14. {nucleation-0.1.128 → nucleation-0.1.129}/src/formats/litematic.rs +14 -0
  15. {nucleation-0.1.128 → nucleation-0.1.129}/src/formats/schematic.rs +28 -2
  16. {nucleation-0.1.128 → nucleation-0.1.129}/src/universal_schematic.rs +87 -5
  17. nucleation-0.1.129/test_schematic.schem +0 -0
  18. nucleation-0.1.129/tests/definition_regions_test.rs +187 -0
  19. nucleation-0.1.129/tests/reproduce_bug.rs +153 -0
  20. nucleation-0.1.128/release-artifacts/libnucleation-macos-arm64.dylib +0 -0
  21. nucleation-0.1.128/release-artifacts/libnucleation-macos-x64.dylib +0 -0
  22. nucleation-0.1.128/release-artifacts/libnucleation.rlib +0 -0
  23. nucleation-0.1.128/release-artifacts/nucleation_bg.wasm +0 -0
  24. nucleation-0.1.128/simple_cube.litematic +0 -0
  25. nucleation-0.1.128/test_schematic.schem +0 -0
  26. {nucleation-0.1.128 → nucleation-0.1.129}/.DS_Store +0 -0
  27. {nucleation-0.1.128 → nucleation-0.1.129}/.cargo/config.toml +0 -0
  28. {nucleation-0.1.128 → nucleation-0.1.129}/.github/workflows/ci.yml +0 -0
  29. {nucleation-0.1.128 → nucleation-0.1.129}/.gitignore +0 -0
  30. {nucleation-0.1.128 → nucleation-0.1.129}/.idea/.gitignore +0 -0
  31. {nucleation-0.1.128 → nucleation-0.1.129}/.idea/minecraft_schematic_utils.iml +0 -0
  32. {nucleation-0.1.128 → nucleation-0.1.129}/.idea/misc.xml +0 -0
  33. {nucleation-0.1.128 → nucleation-0.1.129}/.idea/modules.xml +0 -0
  34. {nucleation-0.1.128 → nucleation-0.1.129}/.idea/vcs.xml +0 -0
  35. {nucleation-0.1.128 → nucleation-0.1.129}/4bit_adder.litematic +0 -0
  36. {nucleation-0.1.128 → nucleation-0.1.129}/CUSTOM_IO_INTEGRATION_CHECKLIST.md +0 -0
  37. {nucleation-0.1.128 → nucleation-0.1.129}/Dockerfile +0 -0
  38. {nucleation-0.1.128 → nucleation-0.1.129}/LICENSE +0 -0
  39. {nucleation-0.1.128 → nucleation-0.1.129}/README.md +0 -0
  40. {nucleation-0.1.128 → nucleation-0.1.129}/benches/performance_test.rs +0 -0
  41. {nucleation-0.1.128 → nucleation-0.1.129}/benches/schematic_bench.rs +0 -0
  42. {nucleation-0.1.128 → nucleation-0.1.129}/build-ffi.sh +0 -0
  43. {nucleation-0.1.128 → nucleation-0.1.129}/build-wasm.sh +0 -0
  44. {nucleation-0.1.128 → nucleation-0.1.129}/docs/javascript/README.md +0 -0
  45. {nucleation-0.1.128 → nucleation-0.1.129}/docs/python/README.md +0 -0
  46. {nucleation-0.1.128 → nucleation-0.1.129}/docs/rust/README.md +0 -0
  47. {nucleation-0.1.128 → nucleation-0.1.129}/docs/shared/guide/circuit-api.md +0 -0
  48. {nucleation-0.1.128 → nucleation-0.1.129}/docs/shared/guide/schematic-builder.md +0 -0
  49. {nucleation-0.1.128 → nucleation-0.1.129}/docs/shared/guide/typed-executor.md +0 -0
  50. {nucleation-0.1.128 → nucleation-0.1.129}/docs/shared/unicode-palette.md +0 -0
  51. {nucleation-0.1.128 → nucleation-0.1.129}/examples/bracket_notation.rs +0 -0
  52. {nucleation-0.1.128 → nucleation-0.1.129}/examples/build_adder.rs +0 -0
  53. {nucleation-0.1.128 → nucleation-0.1.129}/examples/build_test_adder.rs +0 -0
  54. {nucleation-0.1.128 → nucleation-0.1.129}/examples/check_adder_dims.rs +0 -0
  55. {nucleation-0.1.128 → nucleation-0.1.129}/examples/connect4_battle_setup.rs +0 -0
  56. {nucleation-0.1.128 → nucleation-0.1.129}/examples/create_simple_litematic.rs +0 -0
  57. {nucleation-0.1.128 → nucleation-0.1.129}/examples/custom_io_signals.rs +0 -0
  58. {nucleation-0.1.128 → nucleation-0.1.129}/examples/ffi.md +0 -0
  59. {nucleation-0.1.128 → nucleation-0.1.129}/examples/python.md +0 -0
  60. {nucleation-0.1.128 → nucleation-0.1.129}/examples/python_simulation.py +0 -0
  61. {nucleation-0.1.128 → nucleation-0.1.129}/examples/rust.md +0 -0
  62. {nucleation-0.1.128 → nucleation-0.1.129}/examples/test_asymmetric_cubes.rs +0 -0
  63. {nucleation-0.1.128 → nucleation-0.1.129}/examples/test_checkerboard.rs +0 -0
  64. {nucleation-0.1.128 → nucleation-0.1.129}/examples/test_unicode_circuit.rs +0 -0
  65. {nucleation-0.1.128 → nucleation-0.1.129}/examples/universal_schematic_overhead.rs +0 -0
  66. {nucleation-0.1.128 → nucleation-0.1.129}/examples/wasm.md +0 -0
  67. {nucleation-0.1.128 → nucleation-0.1.129}/helf_adder.litematic +0 -0
  68. {nucleation-0.1.128 → nucleation-0.1.129}/insign.d.ts +0 -0
  69. {nucleation-0.1.128 → nucleation-0.1.129}/nucleation-stubs.php +0 -0
  70. {nucleation-0.1.128 → nucleation-0.1.129}/nucleation.pyi +0 -0
  71. {nucleation-0.1.128 → nucleation-0.1.129}/output/.DS_Store +0 -0
  72. {nucleation-0.1.128 → nucleation-0.1.129}/output/full_adder.litematic +0 -0
  73. {nucleation-0.1.128 → nucleation-0.1.129}/pre-push.sh +0 -0
  74. {nucleation-0.1.128 → nucleation-0.1.129}/py.typed +0 -0
  75. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/LICENSE +0 -0
  76. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/README.md +0 -0
  77. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/libnucleation.d +0 -0
  78. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/nucleation-cdn-loader.js +0 -0
  79. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/nucleation-original.js +4 -4
  80. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/nucleation.d.ts +1 -1
  81. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/nucleation.js +0 -0
  82. {nucleation-0.1.128 → nucleation-0.1.129}/release-artifacts/nucleation_bg.wasm.d.ts +0 -0
  83. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/generated/d_latch.litematic +0 -0
  84. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/generated/xor.schem +0 -0
  85. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/comparator_subtract_bug1.txt +0 -0
  86. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/comparator_subtract_bug2.txt +0 -0
  87. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/comparator_subtract_simple.txt +0 -0
  88. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/comparator_subtract_with_signs.txt +0 -0
  89. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/d_latch.txt +0 -0
  90. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/failing_case.txt +0 -0
  91. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/full_adder.txt +0 -0
  92. {nucleation-0.1.128 → nucleation-0.1.129}/schematic_builder/templates/xor.txt +0 -0
  93. {nucleation-0.1.128 → nucleation-0.1.129}/scripts/update-stubs.sh +0 -0
  94. {nucleation-0.1.128 → nucleation-0.1.129}/src/bin/schematic-builder.rs +0 -0
  95. {nucleation-0.1.128 → nucleation-0.1.129}/src/block_entity/generic.rs +0 -0
  96. {nucleation-0.1.128 → nucleation-0.1.129}/src/block_entity/mod.rs +0 -0
  97. {nucleation-0.1.128 → nucleation-0.1.129}/src/block_position.rs +0 -0
  98. {nucleation-0.1.128 → nucleation-0.1.129}/src/block_state.rs +0 -0
  99. {nucleation-0.1.128 → nucleation-0.1.129}/src/bounding_box.rs +0 -0
  100. {nucleation-0.1.128 → nucleation-0.1.129}/src/chunk.rs +0 -0
  101. {nucleation-0.1.128 → nucleation-0.1.129}/src/definition_region.rs +0 -0
  102. {nucleation-0.1.128 → nucleation-0.1.129}/src/entity.rs +0 -0
  103. {nucleation-0.1.128 → nucleation-0.1.129}/src/ffi.rs +0 -0
  104. {nucleation-0.1.128 → nucleation-0.1.129}/src/formats/mod.rs +0 -0
  105. {nucleation-0.1.128 → nucleation-0.1.129}/src/formats/sponge_schematic_v3.md +0 -0
  106. {nucleation-0.1.128 → nucleation-0.1.129}/src/insign.rs +0 -0
  107. {nucleation-0.1.128 → nucleation-0.1.129}/src/item/mod.rs +0 -0
  108. {nucleation-0.1.128 → nucleation-0.1.129}/src/item/stack.rs +0 -0
  109. {nucleation-0.1.128 → nucleation-0.1.129}/src/lib.rs +0 -0
  110. {nucleation-0.1.128 → nucleation-0.1.129}/src/metadata.rs +0 -0
  111. {nucleation-0.1.128 → nucleation-0.1.129}/src/php.rs +0 -0
  112. {nucleation-0.1.128 → nucleation-0.1.129}/src/print_utils.rs +0 -0
  113. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/circuit_builder.rs +0 -0
  114. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/definition_region.rs +0 -0
  115. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/mod.rs +0 -0
  116. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/schematic.rs +0 -0
  117. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/schematic_builder.rs +0 -0
  118. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/simulation.rs +0 -0
  119. {nucleation-0.1.128 → nucleation-0.1.129}/src/python/typed_executor.rs +0 -0
  120. {nucleation-0.1.128 → nucleation-0.1.129}/src/region.rs +0 -0
  121. {nucleation-0.1.128 → nucleation-0.1.129}/src/schematic_builder/palettes.rs +0 -0
  122. {nucleation-0.1.128 → nucleation-0.1.129}/src/schematic_builder.rs +0 -0
  123. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/circuit_builder.rs +0 -0
  124. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/mchprs_world.rs +0 -0
  125. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/mod.rs +0 -0
  126. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/tests.rs +0 -0
  127. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/truth_table.rs +0 -0
  128. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/executor.rs +0 -0
  129. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/insign_io.rs +0 -0
  130. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/integration_tests.rs +0 -0
  131. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/io_layout_builder.rs +0 -0
  132. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/io_mapping.rs +0 -0
  133. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/io_type.rs +0 -0
  134. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/layout_function.rs +0 -0
  135. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/mod.rs +0 -0
  136. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/sort_strategy.rs +0 -0
  137. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/tests.rs +0 -0
  138. {nucleation-0.1.128 → nucleation-0.1.129}/src/simulation/typed_executor/value.rs +0 -0
  139. {nucleation-0.1.128 → nucleation-0.1.129}/src/transforms.rs +0 -0
  140. {nucleation-0.1.128 → nucleation-0.1.129}/src/utils/block_string.rs +0 -0
  141. {nucleation-0.1.128 → nucleation-0.1.129}/src/utils/container_spec.rs +0 -0
  142. {nucleation-0.1.128 → nucleation-0.1.129}/src/utils/enhanced_nbt_parser.rs +0 -0
  143. {nucleation-0.1.128 → nucleation-0.1.129}/src/utils/mod.rs +0 -0
  144. {nucleation-0.1.128 → nucleation-0.1.129}/src/utils/nbt.rs +0 -0
  145. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/circuit_builder.rs +0 -0
  146. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/definition_region.rs +0 -0
  147. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/mod.rs +0 -0
  148. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/schematic.rs +0 -0
  149. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/schematic_builder.rs +0 -0
  150. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/simulation.rs +0 -0
  151. {nucleation-0.1.128 → nucleation-0.1.129}/src/wasm/typed_executor.rs +0 -0
  152. {nucleation-0.1.128 → nucleation-0.1.129}/test-wasm.sh +0 -0
  153. {nucleation-0.1.128 → nucleation-0.1.129}/test_adder.litematic +0 -0
  154. {nucleation-0.1.128 → nucleation-0.1.129}/test_circuit.txt +0 -0
  155. {nucleation-0.1.128 → nucleation-0.1.129}/test_cli_output.litematic +0 -0
  156. {nucleation-0.1.128 → nucleation-0.1.129}/test_count_format.schem +0 -0
  157. {nucleation-0.1.128 → nucleation-0.1.129}/test_enhanced.schem +0 -0
  158. {nucleation-0.1.128 → nucleation-0.1.129}/test_fixed.schem +0 -0
  159. {nucleation-0.1.128 → nucleation-0.1.129}/tests/.DS_Store +0 -0
  160. {nucleation-0.1.128 → nucleation-0.1.129}/tests/barrel_nbt_test.rs +0 -0
  161. {nucleation-0.1.128 → nucleation-0.1.129}/tests/debug_flip.rs +0 -0
  162. {nucleation-0.1.128 → nucleation-0.1.129}/tests/integration_tests.rs +0 -0
  163. {nucleation-0.1.128 → nucleation-0.1.129}/tests/mchprs_state_test.rs +0 -0
  164. {nucleation-0.1.128 → nucleation-0.1.129}/tests/nbt_parsing_test.rs +0 -0
  165. {nucleation-0.1.128 → nucleation-0.1.129}/tests/node_wasm_test.js +0 -0
  166. {nucleation-0.1.128 → nucleation-0.1.129}/tests/package.json +0 -0
  167. {nucleation-0.1.128 → nucleation-0.1.129}/tests/php-stubs-test.php +0 -0
  168. {nucleation-0.1.128 → nucleation-0.1.129}/tests/property_transformation_demo.rs +0 -0
  169. {nucleation-0.1.128 → nucleation-0.1.129}/tests/python_test.py +0 -0
  170. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/1x1.litematic +0 -0
  171. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/3x2x3.litematic +0 -0
  172. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/3x3.litematic +0 -0
  173. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/4x2x4.litematic +0 -0
  174. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/4x4x4+1.litematic +0 -0
  175. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/Evaluator.schem +0 -0
  176. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/all_items.litematic +0 -0
  177. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/and.schem +0 -0
  178. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/brewer.litematic +0 -0
  179. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/cutecounter.schem +0 -0
  180. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/door_plot.litematic +0 -0
  181. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/file.litematic.l +0 -0
  182. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/gol.litematic +0 -0
  183. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/large_schematic.schem +0 -0
  184. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/linear_plotter.litematic +0 -0
  185. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/litematic-rose-farm.litematic +0 -0
  186. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/new_chest_test.schem +0 -0
  187. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/quarry.litematic +0 -0
  188. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/sample.litematic +0 -0
  189. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/sample.schem +0 -0
  190. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/spinny.litematic +0 -0
  191. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/ss-sorter.litematic +0 -0
  192. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/storage_thingy.litematic +0 -0
  193. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/test_coordinate_thingy.litematic +0 -0
  194. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/test_cube.schem +0 -0
  195. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/trencher.litematic +0 -0
  196. {nucleation-0.1.128 → nucleation-0.1.129}/tests/samples/wool_palette.litematic +0 -0
  197. {nucleation-0.1.128 → nucleation-0.1.129}/tests/simple_wasm_test.rs +0 -0
  198. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_barrel_hopper_simulation.rs +0 -0
  199. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_chunk_bounds_bug.rs +0 -0
  200. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_comparator_diagonal_bug.rs +0 -0
  201. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_comparator_subtract_bug.rs +0 -0
  202. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_comparator_subtract_executor.rs +0 -0
  203. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_custom_io_adjacent_bug.rs +0 -0
  204. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_custom_io_no_power_bug.rs +0 -0
  205. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_intermediate_wire_sync.rs +0 -0
  206. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_long_wire.rs +0 -0
  207. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_nibble_signal_strength.rs +0 -0
  208. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_region_expansion_bugs.rs +0 -0
  209. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_repeater_chain_sync.rs +0 -0
  210. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_repeater_custom_io_bug.rs +0 -0
  211. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_simulation_with_tight_bounds.rs +0 -0
  212. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_two_inputs_exact_topology.rs +0 -0
  213. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_two_inputs_no_output_bug.rs +0 -0
  214. {nucleation-0.1.128 → nucleation-0.1.129}/tests/test_typed_executor_sync_output_bug.rs +0 -0
  215. {nucleation-0.1.128 → nucleation-0.1.129}/tests/transformation_tests.rs +0 -0
  216. {nucleation-0.1.128 → nucleation-0.1.129}/tests/wasm_node_tests.rs +0 -0
  217. {nucleation-0.1.128 → nucleation-0.1.129}/tests/wasm_tests.rs +0 -0
  218. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/bun.lockb +0 -0
  219. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/index.html +0 -0
  220. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/index.js +0 -0
  221. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/minecraft_schematic_utils.js +0 -0
  222. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/minecraft_schematic_utils_bg.wasm +0 -0
  223. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/LICENSE +0 -0
  224. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/README.md +0 -0
  225. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/assert/strict.d.ts +0 -0
  226. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/assert.d.ts +0 -0
  227. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/async_hooks.d.ts +0 -0
  228. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/buffer.d.ts +0 -0
  229. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/child_process.d.ts +0 -0
  230. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/cluster.d.ts +0 -0
  231. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/console.d.ts +0 -0
  232. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/constants.d.ts +0 -0
  233. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/crypto.d.ts +0 -0
  234. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/dgram.d.ts +0 -0
  235. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/diagnostics_channel.d.ts +0 -0
  236. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/dns/promises.d.ts +0 -0
  237. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/dns.d.ts +0 -0
  238. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/dom-events.d.ts +0 -0
  239. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/domain.d.ts +0 -0
  240. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/events.d.ts +0 -0
  241. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/fs/promises.d.ts +0 -0
  242. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/fs.d.ts +0 -0
  243. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/globals.d.ts +0 -0
  244. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/globals.global.d.ts +0 -0
  245. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/http.d.ts +0 -0
  246. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/http2.d.ts +0 -0
  247. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/https.d.ts +0 -0
  248. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/index.d.ts +0 -0
  249. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/inspector.d.ts +0 -0
  250. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/module.d.ts +0 -0
  251. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/net.d.ts +0 -0
  252. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/os.d.ts +0 -0
  253. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/package.json +0 -0
  254. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/path.d.ts +0 -0
  255. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/perf_hooks.d.ts +0 -0
  256. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/process.d.ts +0 -0
  257. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/punycode.d.ts +0 -0
  258. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/querystring.d.ts +0 -0
  259. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/readline/promises.d.ts +0 -0
  260. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/readline.d.ts +0 -0
  261. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/repl.d.ts +0 -0
  262. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/sea.d.ts +0 -0
  263. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/stream/consumers.d.ts +0 -0
  264. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/stream/promises.d.ts +0 -0
  265. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/stream/web.d.ts +0 -0
  266. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/stream.d.ts +0 -0
  267. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/string_decoder.d.ts +0 -0
  268. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/test.d.ts +0 -0
  269. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/timers/promises.d.ts +0 -0
  270. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/timers.d.ts +0 -0
  271. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/tls.d.ts +0 -0
  272. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/trace_events.d.ts +0 -0
  273. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/tty.d.ts +0 -0
  274. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/url.d.ts +0 -0
  275. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/util.d.ts +0 -0
  276. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/v8.d.ts +0 -0
  277. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/vm.d.ts +0 -0
  278. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/wasi.d.ts +0 -0
  279. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/worker_threads.d.ts +0 -0
  280. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/node/zlib.d.ts +0 -0
  281. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/LICENSE +0 -0
  282. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/README.md +0 -0
  283. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/index.d.mts +0 -0
  284. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/index.d.ts +0 -0
  285. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/LICENSE +0 -0
  286. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/README.md +0 -0
  287. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/assert/strict.d.ts +0 -0
  288. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/assert.d.ts +0 -0
  289. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/async_hooks.d.ts +0 -0
  290. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/buffer.d.ts +0 -0
  291. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/child_process.d.ts +0 -0
  292. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/cluster.d.ts +0 -0
  293. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/console.d.ts +0 -0
  294. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/constants.d.ts +0 -0
  295. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/crypto.d.ts +0 -0
  296. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dgram.d.ts +0 -0
  297. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/diagnostics_channel.d.ts +0 -0
  298. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dns/promises.d.ts +0 -0
  299. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dns.d.ts +0 -0
  300. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dom-events.d.ts +0 -0
  301. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/domain.d.ts +0 -0
  302. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/events.d.ts +0 -0
  303. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/fs/promises.d.ts +0 -0
  304. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/fs.d.ts +0 -0
  305. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/globals.d.ts +0 -0
  306. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/globals.global.d.ts +0 -0
  307. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/http.d.ts +0 -0
  308. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/http2.d.ts +0 -0
  309. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/https.d.ts +0 -0
  310. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/index.d.ts +0 -0
  311. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/inspector.d.ts +0 -0
  312. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/module.d.ts +0 -0
  313. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/net.d.ts +0 -0
  314. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/LICENSE +0 -0
  315. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/README.md +0 -0
  316. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/agent.d.ts +0 -0
  317. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/api.d.ts +0 -0
  318. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/balanced-pool.d.ts +0 -0
  319. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/cache.d.ts +0 -0
  320. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/client.d.ts +0 -0
  321. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/connector.d.ts +0 -0
  322. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/content-type.d.ts +0 -0
  323. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/cookies.d.ts +0 -0
  324. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/diagnostics-channel.d.ts +0 -0
  325. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/dispatcher.d.ts +0 -0
  326. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -0
  327. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/errors.d.ts +0 -0
  328. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/eventsource.d.ts +0 -0
  329. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/fetch.d.ts +0 -0
  330. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/file.d.ts +0 -0
  331. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/filereader.d.ts +0 -0
  332. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/formdata.d.ts +0 -0
  333. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/global-dispatcher.d.ts +0 -0
  334. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/global-origin.d.ts +0 -0
  335. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/handlers.d.ts +0 -0
  336. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/header.d.ts +0 -0
  337. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/index.d.ts +0 -0
  338. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/interceptors.d.ts +0 -0
  339. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-agent.d.ts +0 -0
  340. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-client.d.ts +0 -0
  341. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-errors.d.ts +0 -0
  342. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-interceptor.d.ts +0 -0
  343. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-pool.d.ts +0 -0
  344. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/package.json +0 -0
  345. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/patch.d.ts +0 -0
  346. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/pool-stats.d.ts +0 -0
  347. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/pool.d.ts +0 -0
  348. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/proxy-agent.d.ts +0 -0
  349. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/readable.d.ts +0 -0
  350. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/retry-agent.d.ts +0 -0
  351. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/retry-handler.d.ts +0 -0
  352. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/util.d.ts +0 -0
  353. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/webidl.d.ts +0 -0
  354. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/websocket.d.ts +0 -0
  355. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/os.d.ts +0 -0
  356. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/package.json +0 -0
  357. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/path.d.ts +0 -0
  358. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/perf_hooks.d.ts +0 -0
  359. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/process.d.ts +0 -0
  360. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/punycode.d.ts +0 -0
  361. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/querystring.d.ts +0 -0
  362. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/readline/promises.d.ts +0 -0
  363. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/readline.d.ts +0 -0
  364. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/repl.d.ts +0 -0
  365. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/sea.d.ts +0 -0
  366. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/sqlite.d.ts +0 -0
  367. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream/consumers.d.ts +0 -0
  368. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream/promises.d.ts +0 -0
  369. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream/web.d.ts +0 -0
  370. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream.d.ts +0 -0
  371. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/string_decoder.d.ts +0 -0
  372. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/test.d.ts +0 -0
  373. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/timers/promises.d.ts +0 -0
  374. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/timers.d.ts +0 -0
  375. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/tls.d.ts +0 -0
  376. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/trace_events.d.ts +0 -0
  377. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/tty.d.ts +0 -0
  378. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/url.d.ts +0 -0
  379. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/util.d.ts +0 -0
  380. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/v8.d.ts +0 -0
  381. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/vm.d.ts +0 -0
  382. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/wasi.d.ts +0 -0
  383. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/worker_threads.d.ts +0 -0
  384. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/node_modules/@types/node/zlib.d.ts +0 -0
  385. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/@types/ws/package.json +0 -0
  386. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/README.md +0 -0
  387. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/bun.d.ts +0 -0
  388. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/deprecated.d.ts +0 -0
  389. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/fetch.d.ts +0 -0
  390. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/ffi.d.ts +0 -0
  391. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/globals.d.ts +0 -0
  392. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/html-rewriter.d.ts +0 -0
  393. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/index.d.ts +0 -0
  394. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/jsc.d.ts +0 -0
  395. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/overrides.d.ts +0 -0
  396. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/package.json +0 -0
  397. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/sqlite.d.ts +0 -0
  398. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/test.d.ts +0 -0
  399. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/bun-types/wasm.d.ts +0 -0
  400. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/README.md +0 -0
  401. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/agent.d.ts +0 -0
  402. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/api.d.ts +0 -0
  403. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/balanced-pool.d.ts +0 -0
  404. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/cache.d.ts +0 -0
  405. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/client.d.ts +0 -0
  406. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/connector.d.ts +0 -0
  407. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/content-type.d.ts +0 -0
  408. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/cookies.d.ts +0 -0
  409. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/diagnostics-channel.d.ts +0 -0
  410. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/dispatcher.d.ts +0 -0
  411. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/errors.d.ts +0 -0
  412. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/fetch.d.ts +0 -0
  413. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/file.d.ts +0 -0
  414. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/filereader.d.ts +0 -0
  415. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/formdata.d.ts +0 -0
  416. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/global-dispatcher.d.ts +0 -0
  417. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/global-origin.d.ts +0 -0
  418. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/handlers.d.ts +0 -0
  419. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/header.d.ts +0 -0
  420. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/index.d.ts +0 -0
  421. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/interceptors.d.ts +0 -0
  422. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/mock-agent.d.ts +0 -0
  423. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/mock-client.d.ts +0 -0
  424. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/mock-errors.d.ts +0 -0
  425. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/mock-interceptor.d.ts +0 -0
  426. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/mock-pool.d.ts +0 -0
  427. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/package.json +0 -0
  428. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/patch.d.ts +0 -0
  429. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/pool-stats.d.ts +0 -0
  430. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/pool.d.ts +0 -0
  431. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/proxy-agent.d.ts +0 -0
  432. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/readable.d.ts +0 -0
  433. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/webidl.d.ts +0 -0
  434. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/node_modules/undici-types/websocket.d.ts +0 -0
  435. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/nucleation-web.js +0 -0
  436. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/nucleation-web_bg.wasm +0 -0
  437. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/nucleation.js +0 -0
  438. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/nucleation_bg.js +0 -0
  439. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/nucleation_bg.wasm +0 -0
  440. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/package.json +0 -0
  441. {nucleation-0.1.128 → nucleation-0.1.129}/wasm-test/server.js +0 -0
@@ -1687,7 +1687,7 @@ dependencies = [
1687
1687
 
1688
1688
  [[package]]
1689
1689
  name = "nucleation"
1690
- version = "0.1.128"
1690
+ version = "0.1.129"
1691
1691
  dependencies = [
1692
1692
  "base64",
1693
1693
  "bytemuck",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "nucleation"
3
- version = "0.1.128"
3
+ version = "0.1.129"
4
4
  edition = "2021"
5
5
  description = "A high-performance Minecraft schematic parser and utility library"
6
6
  authors = ["Nano nano@schem.at"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nucleation
3
- Version: 0.1.128
3
+ Version: 0.1.129
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: GNU Affero General Public License v3
@@ -70,6 +70,7 @@ These guides apply to all languages:
70
70
  | TypedCircuitExecutor | ✅ | ✅ | ⚠️ |
71
71
  | CircuitBuilder | ✅ | ✅ | ⚠️ |
72
72
  | DefinitionRegion | ✅ | ✅ | ⚠️ |
73
+ | Insign DSL Support | ✅ | ✅ | ⚠️ |
73
74
  | Custom IO Signals | ✅ | ✅ | ⚠️ |
74
75
 
75
76
  **Legend:**
@@ -12,6 +12,8 @@ Instead of manually defining IO layouts in code, you can annotate your Minecraft
12
12
  4. Sort positions using distance-based or custom sorting strategies
13
13
  5. Create a fully configured `TypedCircuitExecutor`
14
14
 
15
+ You can also use `import_insign_regions()` to simply extract regions into the schematic's metadata without creating an executor.
16
+
15
17
  ## Basic Usage
16
18
 
17
19
  ### 1. Annotate Your Schematic with Signs
@@ -45,6 +47,25 @@ let result = executor.execute(
45
47
  )?;
46
48
  ```
47
49
 
50
+ ### 3. Direct Region Import (Advanced)
51
+
52
+ If you just want to populate the schematic's `definition_regions` from signs (e.g., for later use or serialization), use `import_insign_regions()`:
53
+
54
+ ```rust
55
+ let mut schematic = /* load schematic */;
56
+
57
+ // Extracts all Insign regions and stores them in schematic.definition_regions
58
+ schematic.import_insign_regions()?;
59
+
60
+ // Now you can access them directly
61
+ if let Some(region) = schematic.definition_regions.get("io.counter") {
62
+ println!("Counter region volume: {}", region.volume());
63
+ }
64
+
65
+ // When you save the schematic, these regions will be persisted!
66
+ let bytes = schematic.to_schematic()?;
67
+ ```
68
+
48
69
  ## Insign Syntax for IO
49
70
 
50
71
  ### Region Definition
@@ -8,12 +8,13 @@
8
8
  2. [Accessing Region Data](#accessing-region-data)
9
9
  3. [Geometric Transformations](#geometric-transformations)
10
10
  4. [Boolean Operations](#boolean-operations)
11
- 5. [Metadata](#metadata)
12
- 6. [Connectivity Analysis](#connectivity-analysis)
13
- 7. [Filtering with Schematics](#filtering-with-schematics)
14
- 8. [Sort Strategies for Circuit Execution](#sort-strategies-for-circuit-execution)
15
- 9. [Renderer Integration](#renderer-integration)
16
- 10. [Best Practices](#best-practices)
11
+ 11. [Serialization & Persistence](#serialization--persistence)
12
+ 12. [Metadata](#metadata)
13
+ 13. [Connectivity Analysis](#connectivity-analysis)
14
+ 14. [Filtering with Schematics](#filtering-with-schematics)
15
+ 15. [Sort Strategies for Circuit Execution](#sort-strategies-for-circuit-execution)
16
+ 16. [Renderer Integration](#renderer-integration)
17
+ 17. [Best Practices](#best-practices)
17
18
 
18
19
  ---
19
20
 
@@ -240,7 +241,49 @@ combined = region_a.union(region_b);
240
241
 
241
242
  ---
242
243
 
243
- ## Metadata
244
+ ## Serialization & Persistence
245
+
246
+ Definition Regions can be serialized and embedded directly into schematic files. This allows you to define logical regions (like inputs, outputs, or documentation zones) that persist when the schematic is saved and loaded.
247
+
248
+ ### Supported Formats
249
+
250
+ - **.litematic**: Stored in the `Metadata` compound tag.
251
+ - **.schem (V3)**: Stored in the `Metadata` compound tag.
252
+ - **.schem (V2)**: Legacy support via `Metadata` tag injection.
253
+
254
+ ### How it Works
255
+
256
+ When you save a `UniversalSchematic`, its `definition_regions` map is serialized to JSON and stored in the schematic's metadata under the key `NucleationDefinitions`. When loading, this JSON is parsed back into full `DefinitionRegion` objects.
257
+
258
+ ### Example
259
+
260
+ ```rust
261
+ // Rust
262
+ let mut schematic = UniversalSchematic::new("MyCircuit".to_string());
263
+
264
+ // Create a region
265
+ let mut region = DefinitionRegion::new();
266
+ region.add_bounds((0, 0, 0), (5, 5, 5));
267
+ region.set_metadata("type", "input");
268
+
269
+ // Add to schematic
270
+ schematic.definition_regions.insert("MainInput".to_string(), region);
271
+
272
+ // Save to file (region data is embedded)
273
+ let data = schematic.to_schematic().unwrap();
274
+ std::fs::write("circuit.schem", data).unwrap();
275
+
276
+ // ... later ...
277
+
278
+ // Load from file (region data is restored)
279
+ let loaded = UniversalSchematic::from_schematic(&data).unwrap();
280
+ let loaded_region = loaded.definition_regions.get("MainInput").unwrap();
281
+ assert_eq!(loaded_region.get_metadata("type"), Some(&"input".to_string()));
282
+ ```
283
+
284
+ This works seamlessly across all language bindings (Rust, JavaScript/WASM, Python).
285
+
286
+ ---
244
287
 
245
288
  Store arbitrary key-value data with regions:
246
289
 
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "nucleation"
7
- version = "0.1.128"
7
+ version = "0.1.129"
8
8
  description = "A high-performance Minecraft schematic parser and utility library"
9
9
  authors = [{ name = "Nano", email = "nano@schem.at" }]
10
10
  license = { text = "AGPL-3.0-only" }
@@ -5,7 +5,7 @@
5
5
  "Nano nano@schem.at"
6
6
  ],
7
7
  "description": "A high-performance Minecraft schematic parser and utility library",
8
- "version": "0.1.128",
8
+ "version": "0.1.129",
9
9
  "license": "AGPL-3.0-only",
10
10
  "repository": {
11
11
  "type": "git",
Binary file
@@ -146,6 +146,13 @@ fn create_metadata(schematic: &UniversalSchematic) -> NbtCompound {
146
146
 
147
147
  metadata.insert("Software", NbtTag::String("UniversalSchematic".to_string()));
148
148
 
149
+ // Add NucleationDefinitions if present
150
+ if !schematic.definition_regions.is_empty() {
151
+ if let Ok(json) = serde_json::to_string(&schematic.definition_regions) {
152
+ metadata.insert("NucleationDefinitions", NbtTag::String(json));
153
+ }
154
+ }
155
+
149
156
  metadata
150
157
  }
151
158
  fn create_regions(schematic: &UniversalSchematic) -> NbtCompound {
@@ -303,6 +310,13 @@ fn parse_metadata(
303
310
 
304
311
  // We don't need to parse EnclosingSize, TotalVolume, TotalBlocks as they will be recalculated
305
312
 
313
+ // Parse NucleationDefinitions
314
+ if let Ok(json) = metadata.get::<_, &str>("NucleationDefinitions") {
315
+ if let Ok(regions) = serde_json::from_str(json) {
316
+ schematic.definition_regions = regions;
317
+ }
318
+ }
319
+
306
320
  Ok(())
307
321
  }
308
322
 
@@ -1,3 +1,4 @@
1
+ use std::collections::HashMap;
1
2
  use std::fmt;
2
3
  use std::io::{BufReader, Cursor, Read};
3
4
 
@@ -208,7 +209,15 @@ pub fn to_schematic_v3(
208
209
  schematic_data.insert("Entities", NbtTag::List(entities));
209
210
 
210
211
  // Add metadata
211
- schematic_data.insert("Metadata", schematic.metadata.to_nbt());
212
+ let mut metadata_tag = schematic.metadata.to_nbt();
213
+ if !schematic.definition_regions.is_empty() {
214
+ if let NbtTag::Compound(ref mut metadata_compound) = metadata_tag {
215
+ if let Ok(json) = serde_json::to_string(&schematic.definition_regions) {
216
+ metadata_compound.insert("NucleationDefinitions", NbtTag::String(json));
217
+ }
218
+ }
219
+ }
220
+ schematic_data.insert("Metadata", metadata_tag);
212
221
 
213
222
  // Create the proper root structure with "Schematic" tag
214
223
  let mut root = NbtCompound::new();
@@ -281,7 +290,16 @@ pub fn to_schematic_v2(
281
290
  schematic_data.insert("BlockEntities", NbtTag::List(block_entities));
282
291
  schematic_data.insert("Entities", NbtTag::List(entities));
283
292
 
284
- schematic_data.insert("Metadata", schematic.metadata.to_nbt());
293
+ // Add metadata
294
+ let mut metadata_tag = schematic.metadata.to_nbt();
295
+ if !schematic.definition_regions.is_empty() {
296
+ if let NbtTag::Compound(ref mut metadata_compound) = metadata_tag {
297
+ if let Ok(json) = serde_json::to_string(&schematic.definition_regions) {
298
+ metadata_compound.insert("NucleationDefinitions", NbtTag::String(json));
299
+ }
300
+ }
301
+ }
302
+ schematic_data.insert("Metadata", metadata_tag);
285
303
 
286
304
  // Create the proper root structure with "Schematic" tag
287
305
  let mut root = NbtCompound::new();
@@ -412,7 +430,14 @@ pub fn from_schematic(data: &[u8]) -> Result<UniversalSchematic, Box<dyn std::er
412
430
  let schem = root.get::<_, &NbtCompound>("Schematic").unwrap_or(&root);
413
431
  let schem_version = schem.get::<_, i32>("Version")?;
414
432
 
433
+ let mut definition_regions = HashMap::new();
434
+
415
435
  let name = if let Some(metadata) = schem.get::<_, &NbtCompound>("Metadata").ok() {
436
+ if let Ok(json) = metadata.get::<_, &str>("NucleationDefinitions") {
437
+ if let Ok(regions) = serde_json::from_str(json) {
438
+ definition_regions = regions;
439
+ }
440
+ }
416
441
  metadata.get::<_, &str>("Name").ok().map(|s| s.to_string())
417
442
  } else {
418
443
  None
@@ -422,6 +447,7 @@ pub fn from_schematic(data: &[u8]) -> Result<UniversalSchematic, Box<dyn std::er
422
447
  let mc_version = schem.get::<_, i32>("DataVersion").ok();
423
448
 
424
449
  let mut schematic = UniversalSchematic::new(name);
450
+ schematic.definition_regions = definition_regions;
425
451
  schematic.metadata.mc_version = mc_version;
426
452
 
427
453
  let width = schem.get::<_, i16>("Width")? as u32;
@@ -2,6 +2,7 @@ use crate::block_entity::BlockEntity;
2
2
  use crate::block_position::BlockPosition;
3
3
  use crate::bounding_box::BoundingBox;
4
4
  use crate::chunk::Chunk;
5
+ use crate::definition_region::DefinitionRegion;
5
6
  use crate::entity::Entity;
6
7
  use crate::metadata::Metadata;
7
8
  use crate::region::Region;
@@ -19,6 +20,8 @@ pub struct UniversalSchematic {
19
20
  pub default_region: Region,
20
21
  pub other_regions: HashMap<String, Region>,
21
22
  pub default_region_name: String,
23
+ #[serde(default = "HashMap::new")]
24
+ pub definition_regions: HashMap<String, DefinitionRegion>,
22
25
  #[serde(skip, default = "HashMap::new")]
23
26
  block_state_cache: HashMap<String, BlockState>,
24
27
  }
@@ -58,6 +61,7 @@ impl UniversalSchematic {
58
61
  default_region: Region::new(default_region_name.clone(), (0, 0, 0), (1, 1, 1)),
59
62
  other_regions: HashMap::new(),
60
63
  default_region_name,
64
+ definition_regions: HashMap::new(),
61
65
  block_state_cache: HashMap::new(),
62
66
  }
63
67
  }
@@ -641,7 +645,18 @@ impl UniversalSchematic {
641
645
  pub fn to_nbt(&self) -> NbtCompound {
642
646
  let mut root = NbtCompound::new();
643
647
 
644
- root.insert("Metadata", self.metadata.to_nbt());
648
+ let mut metadata_tag = self.metadata.to_nbt();
649
+
650
+ // Serialize definition regions to JSON string and store in Metadata
651
+ if !self.definition_regions.is_empty() {
652
+ if let NbtTag::Compound(ref mut metadata_compound) = metadata_tag {
653
+ if let Ok(json) = serde_json::to_string(&self.definition_regions) {
654
+ metadata_compound.insert("NucleationDefinitions", NbtTag::String(json));
655
+ }
656
+ }
657
+ }
658
+
659
+ root.insert("Metadata", metadata_tag);
645
660
 
646
661
  // Create combined regions for NBT
647
662
  let mut regions_tag = NbtCompound::new();
@@ -660,10 +675,19 @@ impl UniversalSchematic {
660
675
  }
661
676
 
662
677
  pub fn from_nbt(nbt: NbtCompound) -> Result<Self, String> {
663
- let metadata = Metadata::from_nbt(
664
- nbt.get::<_, &NbtCompound>("Metadata")
665
- .map_err(|e| format!("Failed to get Metadata: {}", e))?,
666
- )?;
678
+ let metadata_tag = nbt
679
+ .get::<_, &NbtCompound>("Metadata")
680
+ .map_err(|e| format!("Failed to get Metadata: {}", e))?;
681
+
682
+ let metadata = Metadata::from_nbt(metadata_tag)?;
683
+
684
+ // Try to parse definition regions from Metadata
685
+ let mut definition_regions = HashMap::new();
686
+ if let Ok(json) = metadata_tag.get::<_, &str>("NucleationDefinitions") {
687
+ if let Ok(regions) = serde_json::from_str(json) {
688
+ definition_regions = regions;
689
+ }
690
+ }
667
691
 
668
692
  let regions_tag = nbt
669
693
  .get::<_, &NbtCompound>("Regions")
@@ -695,10 +719,68 @@ impl UniversalSchematic {
695
719
  default_region,
696
720
  other_regions,
697
721
  default_region_name,
722
+ definition_regions,
698
723
  block_state_cache: HashMap::new(),
699
724
  })
700
725
  }
701
726
 
727
+ pub fn import_insign_regions(&mut self) -> Result<(), String> {
728
+ let json_value = crate::insign::compile_schematic_insign(self)
729
+ .map_err(|e| format!("Insign compilation error: {}", e))?;
730
+
731
+ if let Some(regions_map) = json_value.as_object() {
732
+ for (name, data) in regions_map {
733
+ let mut def_region = DefinitionRegion::new();
734
+
735
+ // Parse bounding boxes
736
+ if let Some(boxes) = data.get("bounding_boxes").and_then(|v| v.as_array()) {
737
+ for bbox_json in boxes {
738
+ if let Some(coords) = bbox_json.as_array() {
739
+ if coords.len() >= 2 {
740
+ let min_arr = coords[0].as_array();
741
+ let max_arr = coords[1].as_array();
742
+
743
+ if let (Some(min), Some(max)) = (min_arr, max_arr) {
744
+ if min.len() == 3 && max.len() == 3 {
745
+ let min_tuple = (
746
+ min[0].as_i64().unwrap_or(0) as i32,
747
+ min[1].as_i64().unwrap_or(0) as i32,
748
+ min[2].as_i64().unwrap_or(0) as i32,
749
+ );
750
+ let max_tuple = (
751
+ max[0].as_i64().unwrap_or(0) as i32,
752
+ max[1].as_i64().unwrap_or(0) as i32,
753
+ max[2].as_i64().unwrap_or(0) as i32,
754
+ );
755
+ def_region.add_bounds(min_tuple, max_tuple);
756
+ }
757
+ }
758
+ }
759
+ }
760
+ }
761
+ }
762
+
763
+ // Parse metadata
764
+ if let Some(meta) = data.get("metadata").and_then(|v| v.as_object()) {
765
+ for (key, value) in meta {
766
+ // Convert value to string
767
+ let val_str = match value {
768
+ serde_json::Value::String(s) => s.clone(),
769
+ serde_json::Value::Number(n) => n.to_string(),
770
+ serde_json::Value::Bool(b) => b.to_string(),
771
+ _ => value.to_string(),
772
+ };
773
+ def_region.set_metadata(key, val_str);
774
+ }
775
+ }
776
+
777
+ self.definition_regions.insert(name.clone(), def_region);
778
+ }
779
+ }
780
+
781
+ Ok(())
782
+ }
783
+
702
784
  pub fn get_default_region_mut(&mut self) -> &mut Region {
703
785
  &mut self.default_region
704
786
  }
Binary file
@@ -0,0 +1,187 @@
1
+ use nucleation::block_entity::BlockEntity;
2
+ use nucleation::definition_region::DefinitionRegion;
3
+ use nucleation::utils::NbtValue;
4
+ use nucleation::{BlockState, UniversalSchematic};
5
+ use std::collections::HashMap;
6
+
7
+ #[test]
8
+ fn test_definition_regions_roundtrip_chain() {
9
+ // 1. Forge a Universal Schematic
10
+ let mut original = UniversalSchematic::new("Roundtrip Test".to_string());
11
+
12
+ // Add some blocks
13
+ original.set_block(0, 0, 0, BlockState::new("minecraft:stone".to_string()));
14
+ original.set_block(1, 1, 1, BlockState::new("minecraft:dirt".to_string()));
15
+
16
+ // Add Definition Regions
17
+ let mut def_region_a = DefinitionRegion::new();
18
+ def_region_a.add_bounds((0, 0, 0), (5, 5, 5));
19
+ def_region_a.set_metadata("type", "input");
20
+ def_region_a.set_metadata("signal", "redstone");
21
+
22
+ let mut def_region_b = DefinitionRegion::new();
23
+ def_region_b.add_bounds((10, 10, 10), (15, 15, 15));
24
+ def_region_b.set_metadata("type", "output");
25
+
26
+ original
27
+ .definition_regions
28
+ .insert("InputA".to_string(), def_region_a);
29
+ original
30
+ .definition_regions
31
+ .insert("OutputB".to_string(), def_region_b);
32
+
33
+ // 2. Roundtrip to .schem (V3)
34
+ let schem_data = original
35
+ .to_schematic()
36
+ .expect("Failed to serialize to .schem");
37
+ let from_schem =
38
+ UniversalSchematic::from_schematic(&schem_data).expect("Failed to deserialize from .schem");
39
+
40
+ // Verify consistency
41
+ verify_consistency(&original, &from_schem, "Original -> Schem");
42
+
43
+ // 3. Roundtrip from the loaded schematic to .litematic
44
+ let litematic_data = nucleation::litematic::to_litematic(&from_schem)
45
+ .expect("Failed to serialize to .litematic");
46
+ let from_litematic = nucleation::litematic::from_litematic(&litematic_data)
47
+ .expect("Failed to deserialize from .litematic");
48
+
49
+ // Verify consistency
50
+ verify_consistency(&from_schem, &from_litematic, "Schem -> Litematic");
51
+
52
+ // 4. Verify original vs final
53
+ verify_consistency(&original, &from_litematic, "Original -> Final");
54
+ }
55
+
56
+ #[test]
57
+ fn test_schematic_v2_definition_regions() {
58
+ let mut original = UniversalSchematic::new("V2 Test".to_string());
59
+ original.set_block(0, 0, 0, BlockState::new("minecraft:stone".to_string()));
60
+
61
+ let mut def_region = DefinitionRegion::new();
62
+ def_region.add_bounds((0, 0, 0), (1, 1, 1));
63
+ def_region.set_metadata("test", "v2");
64
+ original
65
+ .definition_regions
66
+ .insert("TestV2".to_string(), def_region);
67
+
68
+ // Explicitly use V2
69
+ let schem_data = nucleation::schematic::to_schematic_version(
70
+ &original,
71
+ nucleation::schematic::SchematicVersion::V2,
72
+ )
73
+ .expect("Failed to serialize to .schem v2");
74
+
75
+ let from_schem = UniversalSchematic::from_schematic(&schem_data)
76
+ .expect("Failed to deserialize from .schem v2");
77
+
78
+ verify_consistency(&original, &from_schem, "Original -> Schem V2");
79
+ }
80
+
81
+ #[test]
82
+ fn test_insign_integration() {
83
+ let mut schematic = UniversalSchematic::new("Insign Test".to_string());
84
+
85
+ // Create a sign that defines a region via Insign syntax
86
+ // @region_name=rc([min],[max])
87
+ // #region_name:key=value
88
+ let mut sign = BlockEntity::new("minecraft:sign".to_string(), (0, 0, 0));
89
+ sign.nbt.insert(
90
+ "Text1".to_string(),
91
+ NbtValue::String(r##"{"text":"@my_region"}"##.to_string()),
92
+ );
93
+ sign.nbt.insert(
94
+ "Text2".to_string(),
95
+ NbtValue::String(r##"{"text":"=rc([0,0,0],"}"##.to_string()),
96
+ );
97
+ sign.nbt.insert(
98
+ "Text3".to_string(),
99
+ NbtValue::String(r##"{"text":"[5,5,5])"}"##.to_string()),
100
+ );
101
+ sign.nbt.insert(
102
+ "Text4".to_string(),
103
+ NbtValue::String(r##"{"text":"#my_region:k=\"v\""}"##.to_string()),
104
+ );
105
+
106
+ schematic.add_block_entity(sign);
107
+
108
+ // Run import
109
+ schematic
110
+ .import_insign_regions()
111
+ .expect("Failed to import insign regions");
112
+
113
+ // Verify
114
+ assert!(schematic.definition_regions.contains_key("my_region"));
115
+ let region = schematic.definition_regions.get("my_region").unwrap();
116
+
117
+ // Check bounds (should be 0,0,0 to 5,5,5)
118
+ let bounds = region.get_bounds().unwrap();
119
+ assert_eq!(bounds.min, (0, 0, 0));
120
+ assert_eq!(bounds.max, (5, 5, 5));
121
+
122
+ // Check metadata
123
+ assert_eq!(region.get_metadata("k"), Some(&"v".to_string()));
124
+ }
125
+
126
+ fn verify_consistency(expected: &UniversalSchematic, actual: &UniversalSchematic, stage: &str) {
127
+ assert_eq!(
128
+ expected.definition_regions.len(),
129
+ actual.definition_regions.len(),
130
+ "{}: Region count mismatch",
131
+ stage
132
+ );
133
+
134
+ for (name, exp_region) in &expected.definition_regions {
135
+ assert!(
136
+ actual.definition_regions.contains_key(name),
137
+ "{}: Missing region '{}'",
138
+ stage,
139
+ name
140
+ );
141
+ let act_region = actual.definition_regions.get(name).unwrap();
142
+
143
+ // Compare metadata
144
+ assert_eq!(
145
+ exp_region.metadata, act_region.metadata,
146
+ "{}: Metadata mismatch for region '{}'",
147
+ stage, name
148
+ );
149
+
150
+ // Compare boxes count
151
+ assert_eq!(
152
+ exp_region.boxes.len(),
153
+ act_region.boxes.len(),
154
+ "{}: Box count mismatch for region '{}'",
155
+ stage,
156
+ name
157
+ );
158
+
159
+ // Compare total volume as a proxy for box geometry (exact box order might vary depending on impl details, though here it should be exact)
160
+ assert_eq!(
161
+ exp_region.volume(),
162
+ act_region.volume(),
163
+ "{}: Volume mismatch for region '{}'",
164
+ stage,
165
+ name
166
+ );
167
+
168
+ // Compare exact boxes (assuming order is preserved by serialization which it should be for Vec)
169
+ for (i, (exp_box, act_box)) in exp_region
170
+ .boxes
171
+ .iter()
172
+ .zip(act_region.boxes.iter())
173
+ .enumerate()
174
+ {
175
+ assert_eq!(
176
+ exp_box.min, act_box.min,
177
+ "{}: Box {} min mismatch for region '{}'",
178
+ stage, i, name
179
+ );
180
+ assert_eq!(
181
+ exp_box.max, act_box.max,
182
+ "{}: Box {} max mismatch for region '{}'",
183
+ stage, i, name
184
+ );
185
+ }
186
+ }
187
+ }