@nodetool-ai/game-renderer 0.8.1 → 0.8.3

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 (277) hide show
  1. package/README.md +46 -0
  2. package/dist/.nodetool-build-stamp +1 -1
  3. package/dist/audio/mixer.d.ts +75 -0
  4. package/dist/audio/mixer.d.ts.map +1 -0
  5. package/dist/audio/mixer.js +345 -0
  6. package/dist/audio/mixer.js.map +1 -0
  7. package/dist/audio/player.d.ts +67 -0
  8. package/dist/audio/player.d.ts.map +1 -0
  9. package/dist/audio/player.js +337 -0
  10. package/dist/audio/player.js.map +1 -0
  11. package/dist/audio/spatial.d.ts +50 -0
  12. package/dist/audio/spatial.d.ts.map +1 -0
  13. package/dist/audio/spatial.js +166 -0
  14. package/dist/audio/spatial.js.map +1 -0
  15. package/dist/audio/voices.d.ts +11 -0
  16. package/dist/audio/voices.d.ts.map +1 -0
  17. package/dist/audio/voices.js +22 -0
  18. package/dist/audio/voices.js.map +1 -0
  19. package/dist/audio.d.ts +6 -38
  20. package/dist/audio.d.ts.map +1 -1
  21. package/dist/audio.js +3 -226
  22. package/dist/audio.js.map +1 -1
  23. package/dist/browser.d.ts +2 -1
  24. package/dist/browser.d.ts.map +1 -1
  25. package/dist/browser.js +5 -5
  26. package/dist/browser.js.map +1 -1
  27. package/dist/browser3d.d.ts +2 -0
  28. package/dist/browser3d.d.ts.map +1 -0
  29. package/dist/browser3d.js +2 -0
  30. package/dist/browser3d.js.map +1 -0
  31. package/dist/build-tauri.d.ts +69 -0
  32. package/dist/build-tauri.d.ts.map +1 -0
  33. package/dist/build-tauri.js +406 -0
  34. package/dist/build-tauri.js.map +1 -0
  35. package/dist/build.d.ts.map +1 -1
  36. package/dist/build.js +29 -19
  37. package/dist/build.js.map +1 -1
  38. package/dist/build3d.d.ts +11 -0
  39. package/dist/build3d.d.ts.map +1 -0
  40. package/dist/build3d.js +126 -0
  41. package/dist/build3d.js.map +1 -0
  42. package/dist/canvas2d.d.ts +12 -3
  43. package/dist/canvas2d.d.ts.map +1 -1
  44. package/dist/canvas2d.js +59 -12
  45. package/dist/canvas2d.js.map +1 -1
  46. package/dist/fixed-tick-host.d.ts +10 -0
  47. package/dist/fixed-tick-host.d.ts.map +1 -0
  48. package/dist/fixed-tick-host.js +29 -0
  49. package/dist/fixed-tick-host.js.map +1 -0
  50. package/dist/frame-budget.d.ts +34 -0
  51. package/dist/frame-budget.d.ts.map +1 -0
  52. package/dist/frame-budget.js +52 -0
  53. package/dist/frame-budget.js.map +1 -0
  54. package/dist/frame.d.ts +20 -1
  55. package/dist/frame.d.ts.map +1 -1
  56. package/dist/frame.js +69 -1
  57. package/dist/frame.js.map +1 -1
  58. package/dist/game3d-capture-page.js +5834 -0
  59. package/dist/game3d-player.js +6001 -0
  60. package/dist/imageDiff.d.ts +9 -0
  61. package/dist/imageDiff.d.ts.map +1 -0
  62. package/dist/imageDiff.js +30 -0
  63. package/dist/imageDiff.js.map +1 -0
  64. package/dist/index.d.ts +12 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +9 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/input-bindings.d.ts +76 -0
  69. package/dist/input-bindings.d.ts.map +1 -0
  70. package/dist/input-bindings.js +377 -0
  71. package/dist/input-bindings.js.map +1 -0
  72. package/dist/input.d.ts +1 -1
  73. package/dist/input.d.ts.map +1 -1
  74. package/dist/input.js +1 -14
  75. package/dist/input.js.map +1 -1
  76. package/dist/input3d.d.ts +3 -0
  77. package/dist/input3d.d.ts.map +1 -0
  78. package/dist/input3d.js +3 -0
  79. package/dist/input3d.js.map +1 -0
  80. package/dist/node.d.ts +5 -0
  81. package/dist/node.d.ts.map +1 -1
  82. package/dist/node.js +28 -11
  83. package/dist/node.js.map +1 -1
  84. package/dist/node3d.d.ts +29 -0
  85. package/dist/node3d.d.ts.map +1 -0
  86. package/dist/node3d.js +160 -0
  87. package/dist/node3d.js.map +1 -0
  88. package/dist/particles/curves.d.ts +16 -0
  89. package/dist/particles/curves.d.ts.map +1 -0
  90. package/dist/particles/curves.js +49 -0
  91. package/dist/particles/curves.js.map +1 -0
  92. package/dist/particles/index.d.ts +6 -0
  93. package/dist/particles/index.d.ts.map +1 -0
  94. package/dist/particles/index.js +6 -0
  95. package/dist/particles/index.js.map +1 -0
  96. package/dist/particles/random.d.ts +10 -0
  97. package/dist/particles/random.d.ts.map +1 -0
  98. package/dist/particles/random.js +26 -0
  99. package/dist/particles/random.js.map +1 -0
  100. package/dist/particles/render2d.d.ts +40 -0
  101. package/dist/particles/render2d.d.ts.map +1 -0
  102. package/dist/particles/render2d.js +70 -0
  103. package/dist/particles/render2d.js.map +1 -0
  104. package/dist/particles/shapes.d.ts +18 -0
  105. package/dist/particles/shapes.d.ts.map +1 -0
  106. package/dist/particles/shapes.js +92 -0
  107. package/dist/particles/shapes.js.map +1 -0
  108. package/dist/particles/simulator.d.ts +88 -0
  109. package/dist/particles/simulator.d.ts.map +1 -0
  110. package/dist/particles/simulator.js +371 -0
  111. package/dist/particles/simulator.js.map +1 -0
  112. package/dist/player-v1.js +2502 -0
  113. package/dist/preparation3d.d.ts +3 -0
  114. package/dist/preparation3d.d.ts.map +1 -0
  115. package/dist/preparation3d.js +3 -0
  116. package/dist/preparation3d.js.map +1 -0
  117. package/dist/renderPipeline.d.ts +12 -0
  118. package/dist/renderPipeline.d.ts.map +1 -0
  119. package/dist/renderPipeline.js +17 -0
  120. package/dist/renderPipeline.js.map +1 -0
  121. package/dist/renderer3d/animation/index.d.ts +11 -0
  122. package/dist/renderer3d/animation/index.d.ts.map +1 -0
  123. package/dist/renderer3d/animation/index.js +212 -0
  124. package/dist/renderer3d/animation/index.js.map +1 -0
  125. package/dist/renderer3d/assets/cache.d.ts +14 -0
  126. package/dist/renderer3d/assets/cache.d.ts.map +1 -0
  127. package/dist/renderer3d/assets/cache.js +74 -0
  128. package/dist/renderer3d/assets/cache.js.map +1 -0
  129. package/dist/renderer3d/assets/dispose.d.ts +4 -0
  130. package/dist/renderer3d/assets/dispose.d.ts.map +1 -0
  131. package/dist/renderer3d/assets/dispose.js +41 -0
  132. package/dist/renderer3d/assets/dispose.js.map +1 -0
  133. package/dist/renderer3d/assets/hdri-contract.d.ts +23 -0
  134. package/dist/renderer3d/assets/hdri-contract.d.ts.map +1 -0
  135. package/dist/renderer3d/assets/hdri-contract.js +2 -0
  136. package/dist/renderer3d/assets/hdri-contract.js.map +1 -0
  137. package/dist/renderer3d/assets/instances.d.ts +5 -0
  138. package/dist/renderer3d/assets/instances.d.ts.map +1 -0
  139. package/dist/renderer3d/assets/instances.js +86 -0
  140. package/dist/renderer3d/assets/instances.js.map +1 -0
  141. package/dist/renderer3d/capture-driver-types.d.ts +42 -0
  142. package/dist/renderer3d/capture-driver-types.d.ts.map +1 -0
  143. package/dist/renderer3d/capture-driver-types.js +2 -0
  144. package/dist/renderer3d/capture-driver-types.js.map +1 -0
  145. package/dist/renderer3d/capture-page.d.ts +36 -0
  146. package/dist/renderer3d/capture-page.d.ts.map +1 -0
  147. package/dist/renderer3d/capture-page.js +68 -0
  148. package/dist/renderer3d/capture-page.js.map +1 -0
  149. package/dist/renderer3d/culling.d.ts +10 -0
  150. package/dist/renderer3d/culling.d.ts.map +1 -0
  151. package/dist/renderer3d/culling.js +27 -0
  152. package/dist/renderer3d/culling.js.map +1 -0
  153. package/dist/renderer3d/environment/index.d.ts +4 -0
  154. package/dist/renderer3d/environment/index.d.ts.map +1 -0
  155. package/dist/renderer3d/environment/index.js +9 -0
  156. package/dist/renderer3d/environment/index.js.map +1 -0
  157. package/dist/renderer3d/environment/sky.d.ts +45 -0
  158. package/dist/renderer3d/environment/sky.d.ts.map +1 -0
  159. package/dist/renderer3d/environment/sky.js +221 -0
  160. package/dist/renderer3d/environment/sky.js.map +1 -0
  161. package/dist/renderer3d/hud/fonts.d.ts +13 -0
  162. package/dist/renderer3d/hud/fonts.d.ts.map +1 -0
  163. package/dist/renderer3d/hud/fonts.js +69 -0
  164. package/dist/renderer3d/hud/fonts.js.map +1 -0
  165. package/dist/renderer3d/hud/paint.d.ts +4 -0
  166. package/dist/renderer3d/hud/paint.d.ts.map +1 -0
  167. package/dist/renderer3d/hud/paint.js +22 -0
  168. package/dist/renderer3d/hud/paint.js.map +1 -0
  169. package/dist/renderer3d/import.d.ts +34 -0
  170. package/dist/renderer3d/import.d.ts.map +1 -0
  171. package/dist/renderer3d/import.js +408 -0
  172. package/dist/renderer3d/import.js.map +1 -0
  173. package/dist/renderer3d/index.d.ts +74 -0
  174. package/dist/renderer3d/index.d.ts.map +1 -0
  175. package/dist/renderer3d/index.js +338 -0
  176. package/dist/renderer3d/index.js.map +1 -0
  177. package/dist/renderer3d/lights/index.d.ts +7 -0
  178. package/dist/renderer3d/lights/index.d.ts.map +1 -0
  179. package/dist/renderer3d/lights/index.js +67 -0
  180. package/dist/renderer3d/lights/index.js.map +1 -0
  181. package/dist/renderer3d/materials/index.d.ts +4 -0
  182. package/dist/renderer3d/materials/index.d.ts.map +1 -0
  183. package/dist/renderer3d/materials/index.js +8 -0
  184. package/dist/renderer3d/materials/index.js.map +1 -0
  185. package/dist/renderer3d/passes/post-processing.d.ts +44 -0
  186. package/dist/renderer3d/passes/post-processing.d.ts.map +1 -0
  187. package/dist/renderer3d/passes/post-processing.js +213 -0
  188. package/dist/renderer3d/passes/post-processing.js.map +1 -0
  189. package/dist/renderer3d/pipeline.d.ts +15 -0
  190. package/dist/renderer3d/pipeline.d.ts.map +1 -0
  191. package/dist/renderer3d/pipeline.js +10 -0
  192. package/dist/renderer3d/pipeline.js.map +1 -0
  193. package/dist/renderer3d/playwright-contract.d.ts +3 -0
  194. package/dist/renderer3d/playwright-contract.d.ts.map +1 -0
  195. package/dist/renderer3d/playwright-contract.js +4 -0
  196. package/dist/renderer3d/playwright-contract.js.map +1 -0
  197. package/dist/renderer3d/preparation.d.ts +79 -0
  198. package/dist/renderer3d/preparation.d.ts.map +1 -0
  199. package/dist/renderer3d/preparation.js +458 -0
  200. package/dist/renderer3d/preparation.js.map +1 -0
  201. package/dist/renderer3d/scene-sync.d.ts +8 -0
  202. package/dist/renderer3d/scene-sync.d.ts.map +1 -0
  203. package/dist/renderer3d/scene-sync.js +96 -0
  204. package/dist/renderer3d/scene-sync.js.map +1 -0
  205. package/dist/renderer3d/shadows/cascades.d.ts +40 -0
  206. package/dist/renderer3d/shadows/cascades.d.ts.map +1 -0
  207. package/dist/renderer3d/shadows/cascades.js +244 -0
  208. package/dist/renderer3d/shadows/cascades.js.map +1 -0
  209. package/dist/renderer3d/shadows/index.d.ts +44 -0
  210. package/dist/renderer3d/shadows/index.d.ts.map +1 -0
  211. package/dist/renderer3d/shadows/index.js +129 -0
  212. package/dist/renderer3d/shadows/index.js.map +1 -0
  213. package/dist/renderer3d/types.d.ts +18 -0
  214. package/dist/renderer3d/types.d.ts.map +1 -0
  215. package/dist/renderer3d/types.js +2 -0
  216. package/dist/renderer3d/types.js.map +1 -0
  217. package/dist/smoke.d.ts +15 -0
  218. package/dist/smoke.d.ts.map +1 -0
  219. package/dist/smoke.js +138 -0
  220. package/dist/smoke.js.map +1 -0
  221. package/dist/standalone-player.d.ts +11 -1
  222. package/dist/standalone-player.d.ts.map +1 -1
  223. package/dist/standalone-player.js +67 -41
  224. package/dist/standalone-player.js.map +1 -1
  225. package/dist/standalone-player3d.d.ts +14 -0
  226. package/dist/standalone-player3d.d.ts.map +1 -0
  227. package/dist/standalone-player3d.js +255 -0
  228. package/dist/standalone-player3d.js.map +1 -0
  229. package/dist/touch-controls.d.ts +22 -8
  230. package/dist/touch-controls.d.ts.map +1 -1
  231. package/dist/touch-controls.js +88 -21
  232. package/dist/touch-controls.js.map +1 -1
  233. package/dist/ui/controller.d.ts +59 -0
  234. package/dist/ui/controller.d.ts.map +1 -0
  235. package/dist/ui/controller.js +201 -0
  236. package/dist/ui/controller.js.map +1 -0
  237. package/dist/ui/hud2d.d.ts +11 -0
  238. package/dist/ui/hud2d.d.ts.map +1 -0
  239. package/dist/ui/hud2d.js +25 -0
  240. package/dist/ui/hud2d.js.map +1 -0
  241. package/dist/ui/layout.d.ts +42 -0
  242. package/dist/ui/layout.d.ts.map +1 -0
  243. package/dist/ui/layout.js +182 -0
  244. package/dist/ui/layout.js.map +1 -0
  245. package/dist/ui/paint.d.ts +45 -0
  246. package/dist/ui/paint.d.ts.map +1 -0
  247. package/dist/ui/paint.js +121 -0
  248. package/dist/ui/paint.js.map +1 -0
  249. package/dist/webgpu/effects.d.ts +22 -0
  250. package/dist/webgpu/effects.d.ts.map +1 -0
  251. package/dist/webgpu/effects.js +69 -0
  252. package/dist/webgpu/effects.js.map +1 -0
  253. package/dist/webgpu/hud.d.ts +4 -0
  254. package/dist/webgpu/hud.d.ts.map +1 -0
  255. package/dist/webgpu/hud.js +27 -0
  256. package/dist/webgpu/hud.js.map +1 -0
  257. package/dist/webgpu/lighting.d.ts +4 -0
  258. package/dist/webgpu/lighting.d.ts.map +1 -0
  259. package/dist/webgpu/lighting.js +47 -0
  260. package/dist/webgpu/lighting.js.map +1 -0
  261. package/dist/webgpu/pipeline.d.ts +11 -0
  262. package/dist/webgpu/pipeline.d.ts.map +1 -0
  263. package/dist/webgpu/pipeline.js +11 -0
  264. package/dist/webgpu/pipeline.js.map +1 -0
  265. package/dist/webgpu/sprites.d.ts +6 -0
  266. package/dist/webgpu/sprites.d.ts.map +1 -0
  267. package/dist/webgpu/sprites.js +74 -0
  268. package/dist/webgpu/sprites.js.map +1 -0
  269. package/dist/webgpu/types.d.ts +14 -0
  270. package/dist/webgpu/types.d.ts.map +1 -0
  271. package/dist/webgpu/types.js +2 -0
  272. package/dist/webgpu/types.js.map +1 -0
  273. package/dist/webgpu.d.ts +4 -3
  274. package/dist/webgpu.d.ts.map +1 -1
  275. package/dist/webgpu.js +119 -279
  276. package/dist/webgpu.js.map +1 -1
  277. package/package.json +52 -10
@@ -0,0 +1,406 @@
1
+ import { spawn } from "node:child_process";
2
+ import { access, constants, mkdir, mkdtemp, readdir, rename, rm, rmdir, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { delimiter, dirname, join, resolve } from "node:path";
5
+ import { createCanvas, loadImage } from "@napi-rs/canvas";
6
+ import { MissingRuntimePackageError } from "@nodetool-ai/protocol/missing-runtime-package";
7
+ /** Tauri releases the generated project pins. Bump the three together. */
8
+ export const TAURI_VERSIONS = { tauri: "2.12.1", tauriBuild: "2.7.1", cli: "2.12.1" };
9
+ const DEFAULT_PRODUCT_NAME = "NodeTool Game";
10
+ const DEFAULT_VERSION = "1.0.0";
11
+ const DEFAULT_WIDTH = 1280;
12
+ const DEFAULT_HEIGHT_2D = 800;
13
+ const MIN_WINDOW = { width: 480, height: 320 };
14
+ const MAX_WINDOW = 7680;
15
+ function slug(value) {
16
+ return value.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 48).replace(/-+$/, "");
17
+ }
18
+ function productName(value) {
19
+ // Installers use the name as a file name, so drop characters no platform allows there.
20
+ const cleaned = Array.from(value ?? "", (char) => {
21
+ const code = char.charCodeAt(0);
22
+ return code < 32 || code === 127 || '/\\:*?"<>|'.includes(char) ? " " : char;
23
+ }).join("").replace(/\s+/g, " ").trim().slice(0, 64).trim();
24
+ return cleaned || DEFAULT_PRODUCT_NAME;
25
+ }
26
+ function windowSize(value, fallback, minimum, label) {
27
+ if (value === undefined) {
28
+ return fallback;
29
+ }
30
+ if (!Number.isInteger(value) || value < minimum || value > MAX_WINDOW) {
31
+ throw new Error(`Window ${label} must be an integer from ${minimum} to ${MAX_WINDOW}`);
32
+ }
33
+ return value;
34
+ }
35
+ /** Resolves and validates the names, version and window size of an exported desktop app. */
36
+ export function tauriAppMetadata(document, app = {}) {
37
+ const name = productName(app.name);
38
+ const nameSlug = slug(name) || "game";
39
+ const identifier = app.identifier ?? `ai.nodetool.game.${/^[a-z]/.test(nameSlug) ? nameSlug : `game-${nameSlug}`}`;
40
+ if (!/^[A-Za-z][A-Za-z0-9-]*(\.[A-Za-z0-9-]+)+$/.test(identifier) || identifier.length > 128 || /\.app$/i.test(identifier)) {
41
+ throw new Error("App identifier must be reverse-DNS, such as com.example.mygame, and must not end in .app");
42
+ }
43
+ const version = app.version ?? DEFAULT_VERSION;
44
+ const parts = /^(\d+)\.(\d+)\.(\d+)$/.exec(version);
45
+ // Windows MSI packages limit major and minor to 255 and patch to 65535.
46
+ if (!parts || Number(parts[1]) > 255 || Number(parts[2]) > 255 || Number(parts[3]) > 65535) {
47
+ throw new Error("App version must be MAJOR.MINOR.PATCH with major and minor at most 255 and patch at most 65535");
48
+ }
49
+ const width = windowSize(app.width, DEFAULT_WIDTH, MIN_WINDOW.width, "width");
50
+ const fallbackHeight = document.schemaVersion === 3
51
+ ? Math.min(MAX_WINDOW, Math.max(MIN_WINDOW.height, Math.round(width / document.presentation.aspectRatio)))
52
+ : DEFAULT_HEIGHT_2D;
53
+ const height = windowSize(app.height, fallbackHeight, MIN_WINDOW.height, "height");
54
+ const crateName = /^[a-z]/.test(nameSlug) ? nameSlug : `game-${nameSlug}`;
55
+ return { productName: name, identifier, version, crateName, width, height, sourceRevision: document.revision,
56
+ dimension: document.schemaVersion === 3 ? "3d" : "2d" };
57
+ }
58
+ function drawDefaultIcon(context, size) {
59
+ const radius = size * 0.22;
60
+ const gradient = context.createLinearGradient(0, 0, size, size);
61
+ gradient.addColorStop(0, "#5b8cff");
62
+ gradient.addColorStop(1, "#7a3cff");
63
+ context.fillStyle = gradient;
64
+ context.beginPath();
65
+ context.roundRect(0, 0, size, size, radius);
66
+ context.fill();
67
+ context.fillStyle = "#ffffff";
68
+ context.beginPath();
69
+ context.moveTo(size * 0.38, size * 0.28);
70
+ context.lineTo(size * 0.76, size * 0.5);
71
+ context.lineTo(size * 0.38, size * 0.72);
72
+ context.closePath();
73
+ context.fill();
74
+ }
75
+ async function renderIcons(sizes, source) {
76
+ const image = source ? await loadImage(Buffer.from(source)) : null;
77
+ if (image && (image.width < 1 || image.height < 1)) {
78
+ throw new Error("App icon image is empty");
79
+ }
80
+ const icons = new Map();
81
+ for (const size of sizes) {
82
+ const canvas = createCanvas(size, size);
83
+ const context = canvas.getContext("2d");
84
+ if (image) {
85
+ // Cover the square so a non-square icon is cropped rather than letterboxed.
86
+ const scale = Math.max(size / image.width, size / image.height);
87
+ const width = image.width * scale;
88
+ const height = image.height * scale;
89
+ context.imageSmoothingQuality = "high";
90
+ context.drawImage(image, (size - width) / 2, (size - height) / 2, width, height);
91
+ }
92
+ else {
93
+ drawDefaultIcon(context, size);
94
+ }
95
+ icons.set(size, { size, png: new Uint8Array(await canvas.encode("png")), rgba: context.getImageData(0, 0, size, size).data });
96
+ }
97
+ return icons;
98
+ }
99
+ /** Windows icon: 32-bit BMP entries for small sizes, PNG for 256. */
100
+ function encodeIco(icons) {
101
+ const images = icons.map((icon) => {
102
+ if (icon.size >= 256) {
103
+ return icon.png;
104
+ }
105
+ const { size, rgba } = icon;
106
+ const maskStride = Math.ceil(size / 32) * 4;
107
+ const bytes = new Uint8Array(40 + size * size * 4 + maskStride * size);
108
+ const view = new DataView(bytes.buffer);
109
+ view.setUint32(0, 40, true);
110
+ view.setInt32(4, size, true);
111
+ view.setInt32(8, size * 2, true);
112
+ view.setUint16(12, 1, true);
113
+ view.setUint16(14, 32, true);
114
+ view.setUint32(20, size * size * 4 + maskStride * size, true);
115
+ for (let y = 0; y < size; y += 1) {
116
+ const row = size - 1 - y;
117
+ for (let x = 0; x < size; x += 1) {
118
+ const from = (row * size + x) * 4;
119
+ const to = 40 + (y * size + x) * 4;
120
+ bytes[to] = rgba[from + 2] ?? 0;
121
+ bytes[to + 1] = rgba[from + 1] ?? 0;
122
+ bytes[to + 2] = rgba[from] ?? 0;
123
+ bytes[to + 3] = rgba[from + 3] ?? 0;
124
+ }
125
+ }
126
+ // The AND mask stays zero: the alpha channel carries transparency.
127
+ return bytes;
128
+ });
129
+ const header = new Uint8Array(6 + 16 * icons.length);
130
+ const view = new DataView(header.buffer);
131
+ view.setUint16(2, 1, true);
132
+ view.setUint16(4, icons.length, true);
133
+ let offset = header.length;
134
+ icons.forEach((icon, index) => {
135
+ const entry = 6 + index * 16;
136
+ header[entry] = icon.size >= 256 ? 0 : icon.size;
137
+ header[entry + 1] = icon.size >= 256 ? 0 : icon.size;
138
+ view.setUint16(entry + 4, 1, true);
139
+ view.setUint16(entry + 6, 32, true);
140
+ view.setUint32(entry + 8, images[index]?.length ?? 0, true);
141
+ view.setUint32(entry + 12, offset, true);
142
+ offset += images[index]?.length ?? 0;
143
+ });
144
+ return Buffer.concat([header, ...images]);
145
+ }
146
+ /** macOS icon: PNG payloads under the ic07 to ic10 element types. */
147
+ function encodeIcns(entries) {
148
+ const chunks = entries.map(([type, png]) => {
149
+ const head = Buffer.alloc(8);
150
+ head.write(type, 0, "ascii");
151
+ head.writeUInt32BE(png.length + 8, 4);
152
+ return Buffer.concat([head, png]);
153
+ });
154
+ const head = Buffer.alloc(8);
155
+ head.write("icns", 0, "ascii");
156
+ head.writeUInt32BE(8 + chunks.reduce((total, chunk) => total + chunk.length, 0), 4);
157
+ return Buffer.concat([head, ...chunks]);
158
+ }
159
+ const ICON_FILES = ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.png", "icons/icon.icns", "icons/icon.ico"];
160
+ /** Every icon file the Tauri bundler and window need, keyed by path under `src-tauri/`. */
161
+ export async function tauriIconFiles(source) {
162
+ const icons = await renderIcons([16, 32, 48, 128, 256, 512, 1024], source);
163
+ const icon = (size) => {
164
+ const rendered = icons.get(size);
165
+ if (!rendered) {
166
+ throw new Error(`Icon size ${size} was not rendered`);
167
+ }
168
+ return rendered;
169
+ };
170
+ return {
171
+ "icons/32x32.png": icon(32).png,
172
+ "icons/128x128.png": icon(128).png,
173
+ "icons/128x128@2x.png": icon(256).png,
174
+ "icons/icon.png": icon(512).png,
175
+ "icons/icon.icns": encodeIcns([["ic07", icon(128).png], ["ic08", icon(256).png], ["ic09", icon(512).png], ["ic10", icon(1024).png]]),
176
+ "icons/icon.ico": encodeIco([icon(16), icon(32), icon(48), icon(256)])
177
+ };
178
+ }
179
+ /** The text files of the Tauri project, keyed by path relative to the project root. */
180
+ export function tauriProjectFiles(metadata) {
181
+ const config = {
182
+ $schema: "https://schema.tauri.app/config/2",
183
+ productName: metadata.productName,
184
+ version: metadata.version,
185
+ identifier: metadata.identifier,
186
+ build: { frontendDist: "../dist" },
187
+ app: {
188
+ withGlobalTauri: false,
189
+ windows: [{
190
+ label: "main", title: metadata.productName, width: metadata.width, height: metadata.height,
191
+ minWidth: MIN_WINDOW.width, minHeight: MIN_WINDOW.height, center: true, resizable: true, focus: true,
192
+ // The player handles its own pointer and keyboard input, so file drops stay with the page.
193
+ dragDropEnabled: false
194
+ }],
195
+ // The player's index.html carries its own Content-Security-Policy meta tag.
196
+ security: { csp: null }
197
+ },
198
+ bundle: {
199
+ active: true,
200
+ targets: "all",
201
+ category: "Game",
202
+ shortDescription: metadata.productName,
203
+ icon: [...ICON_FILES]
204
+ }
205
+ };
206
+ const cargo = `[package]
207
+ name = ${JSON.stringify(metadata.crateName)}
208
+ version = ${JSON.stringify(metadata.version)}
209
+ description = ${JSON.stringify(`${metadata.productName}, exported from NodeTool`)}
210
+ edition = "2021"
211
+ publish = false
212
+
213
+ # Keeps the project standalone when it is unpacked inside another Cargo workspace.
214
+ [workspace]
215
+
216
+ [build-dependencies]
217
+ tauri-build = { version = "=${TAURI_VERSIONS.tauriBuild}", features = [] }
218
+
219
+ [dependencies]
220
+ tauri = { version = "=${TAURI_VERSIONS.tauri}", features = [] }
221
+
222
+ [features]
223
+ # Serve the bundled game from the app itself, so a plain \`cargo build --release\` runs standalone.
224
+ default = ["custom-protocol"]
225
+ custom-protocol = ["tauri/custom-protocol"]
226
+
227
+ [profile.release]
228
+ codegen-units = 1
229
+ lto = true
230
+ opt-level = "s"
231
+ panic = "abort"
232
+ strip = true
233
+ `;
234
+ const main = `// Hides the console window of a release build on Windows.
235
+ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
236
+
237
+ fn main() {
238
+ tauri::Builder::default()
239
+ .run(tauri::generate_context!())
240
+ .expect("error while running the game");
241
+ }
242
+ `;
243
+ const packageJson = {
244
+ name: metadata.crateName,
245
+ version: metadata.version,
246
+ private: true,
247
+ scripts: { tauri: "tauri", dev: "tauri dev", build: "tauri build" },
248
+ devDependencies: { "@tauri-apps/cli": TAURI_VERSIONS.cli }
249
+ };
250
+ const readme = `# ${metadata.productName}
251
+
252
+ A desktop build of a NodeTool ${metadata.dimension.toUpperCase()} game (revision \`${metadata.sourceRevision}\`), packaged with [Tauri](https://tauri.app) ${TAURI_VERSIONS.tauri}.
253
+
254
+ \`dist/\` holds the exported web player and its assets. \`src-tauri/\` is the native shell that opens it in a window.
255
+
256
+ ## Build
257
+
258
+ Install Rust and the Tauri system dependencies for your platform: https://v2.tauri.app/start/prerequisites/
259
+
260
+ Installers (\`.msi\`/\`.exe\` on Windows, \`.app\`/\`.dmg\` on macOS, \`.deb\`/\`.rpm\`/\`.AppImage\` on Linux):
261
+
262
+ \`\`\`sh
263
+ npm install
264
+ npm run build
265
+ \`\`\`
266
+
267
+ They are written to \`src-tauri/target/release/bundle/\`.
268
+
269
+ A single executable without an installer:
270
+
271
+ \`\`\`sh
272
+ cd src-tauri
273
+ cargo build --release
274
+ \`\`\`
275
+
276
+ It is written to \`src-tauri/target/release/${metadata.crateName}\` (\`.exe\` on Windows).
277
+
278
+ ## Change the app
279
+
280
+ The window size, title and identifier (\`${metadata.identifier}\`) are in \`src-tauri/tauri.conf.json\`. Replace the files in \`src-tauri/icons/\` to change the icon, or export again from NodeTool with a new icon.
281
+ `;
282
+ return {
283
+ "package.json": `${JSON.stringify(packageJson, null, 2)}\n`,
284
+ "README.md": readme,
285
+ ".gitignore": "node_modules/\n",
286
+ "src-tauri/Cargo.toml": cargo,
287
+ "src-tauri/build.rs": "fn main() {\n tauri_build::build()\n}\n",
288
+ "src-tauri/src/main.rs": main,
289
+ "src-tauri/tauri.conf.json": `${JSON.stringify(config, null, 2)}\n`,
290
+ "src-tauri/.gitignore": "/target/\n/gen/schemas\n"
291
+ };
292
+ }
293
+ /** Exports a game as a Tauri desktop project: the standalone web player plus a native shell around it. */
294
+ export async function buildTauriGameProject(options) {
295
+ options.signal?.throwIfAborted();
296
+ const metadata = tauriAppMetadata(options.document, options.app);
297
+ const icons = await tauriIconFiles(options.app?.icon);
298
+ const outputDir = resolve(options.outputDir);
299
+ await mkdir(dirname(outputDir), { recursive: true });
300
+ const staging = await mkdtemp(join(dirname(outputDir), ".nodetool-game-tauri-"));
301
+ try {
302
+ const webDir = join(staging, "dist");
303
+ if (options.document.schemaVersion === 3) {
304
+ const { buildStandaloneGame3D } = await import("./build3d.js");
305
+ await buildStandaloneGame3D({ document: options.document, outputDir: webDir, resolveAsset: options.resolveAsset, signal: options.signal });
306
+ }
307
+ else {
308
+ const { buildStandaloneGame } = await import("./build.js");
309
+ await buildStandaloneGame({ document: options.document, outputDir: webDir, resolveAsset: (assetId) => options.resolveAsset(assetId, options.signal) });
310
+ }
311
+ options.signal?.throwIfAborted();
312
+ const files = { ...tauriProjectFiles(metadata) };
313
+ for (const [path, bytes] of Object.entries(icons)) {
314
+ files[`src-tauri/${path}`] = bytes;
315
+ }
316
+ for (const [path, content] of Object.entries(files)) {
317
+ await mkdir(dirname(join(staging, path)), { recursive: true });
318
+ await writeFile(join(staging, path), content);
319
+ }
320
+ options.signal?.throwIfAborted();
321
+ let existing;
322
+ try {
323
+ existing = await readdir(outputDir);
324
+ }
325
+ catch (error) {
326
+ if (!(error instanceof Error) || !("code" in error) || error.code !== "ENOENT") {
327
+ throw error;
328
+ }
329
+ }
330
+ if (existing && existing.length > 0) {
331
+ throw new Error(`Output directory is not empty: ${outputDir}`);
332
+ }
333
+ if (existing) {
334
+ await rmdir(outputDir);
335
+ }
336
+ await rename(staging, outputDir);
337
+ return { outputDir, webDir: join(outputDir, "dist"), tauriDir: join(outputDir, "src-tauri"), metadata };
338
+ }
339
+ catch (error) {
340
+ await rm(staging, { recursive: true, force: true });
341
+ throw error;
342
+ }
343
+ }
344
+ async function executable(path) {
345
+ try {
346
+ await access(path, constants.X_OK);
347
+ return true;
348
+ }
349
+ catch {
350
+ return false;
351
+ }
352
+ }
353
+ /**
354
+ * The cargo to run: the first on PATH, else rustup's. An app started from the
355
+ * macOS Finder or a Windows shortcut has no shell profile, so rustup's
356
+ * `~/.cargo/bin` is often installed but missing from PATH.
357
+ */
358
+ export async function findCargo(env = process.env, platform = process.platform) {
359
+ const name = platform === "win32" ? "cargo.exe" : "cargo";
360
+ const pathKey = Object.keys(env).find((key) => key.toUpperCase() === "PATH");
361
+ const directories = (pathKey ? env[pathKey] ?? "" : "").split(platform === "win32" ? ";" : delimiter).filter(Boolean);
362
+ const cargoHome = env["CARGO_HOME"] || join(env["HOME"] || env["USERPROFILE"] || homedir(), ".cargo");
363
+ for (const directory of [...directories, join(cargoHome, "bin")]) {
364
+ const candidate = join(directory, name);
365
+ if (await executable(candidate)) {
366
+ return candidate;
367
+ }
368
+ }
369
+ return null;
370
+ }
371
+ const MISSING_CARGO = "cargo was not found. Install Rust from the Package Manager, or from https://rustup.rs, to compile the desktop app.";
372
+ /** Compiles an exported project into a release executable with `cargo build --release`. */
373
+ export async function compileTauriGameProject(project, options = {}) {
374
+ const env = options.env ?? process.env;
375
+ const cargo = options.cargo ?? await findCargo(env);
376
+ if (!cargo) {
377
+ throw new MissingRuntimePackageError(MISSING_CARGO, "rust");
378
+ }
379
+ await new Promise((resolvePromise, reject) => {
380
+ const child = spawn(cargo, ["build", "--release"], { cwd: project.tauriDir, env, signal: options.signal,
381
+ stdio: ["ignore", "pipe", "pipe"] });
382
+ let tail = "";
383
+ const collect = (chunk) => {
384
+ const text = chunk.toString("utf8");
385
+ tail = (tail + text).slice(-4000);
386
+ options.onOutput?.(text);
387
+ };
388
+ child.stdout.on("data", collect);
389
+ child.stderr.on("data", collect);
390
+ child.on("error", (error) => {
391
+ reject("code" in error && error.code === "ENOENT" ? new MissingRuntimePackageError(MISSING_CARGO, "rust", { cause: error }) : error);
392
+ });
393
+ child.on("close", (code) => {
394
+ if (code === 0) {
395
+ resolvePromise();
396
+ }
397
+ else {
398
+ reject(new Error(`cargo build failed with exit code ${code}\n${tail}`));
399
+ }
400
+ });
401
+ });
402
+ const targetDir = env["CARGO_TARGET_DIR"] ? resolve(project.tauriDir, env["CARGO_TARGET_DIR"]) : join(project.tauriDir, "target");
403
+ const binaryName = process.platform === "win32" ? `${project.metadata.crateName}.exe` : project.metadata.crateName;
404
+ return { binaryPath: join(targetDir, "release", binaryName) };
405
+ }
406
+ //# sourceMappingURL=build-tauri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-tauri.js","sourceRoot":"","sources":["../src/build-tauri.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAiGD,6EAA6E;AAC7E,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA+H3G"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AA4HD,6EAA6E;AAC7E,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA8G3G"}
package/dist/build.js CHANGED
@@ -4,6 +4,7 @@ import { mkdir, mkdtemp, readFile, readdir, rename, rm, rmdir, writeFile } from
4
4
  import { dirname, join, resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { build } from "esbuild";
7
+ import { resolvePackageAssetPath } from "@nodetool-ai/config";
7
8
  import { GlobalFonts } from "@napi-rs/canvas";
8
9
  import { createCanvas, loadImage } from "@napi-rs/canvas";
9
10
  import { validateGame } from "@nodetool-ai/game-runtime";
@@ -100,7 +101,33 @@ body.touch .touch-layer{display:block;position:fixed;inset:0;z-index:2;pointer-e
100
101
  .touch-buttons{position:absolute;right:max(1.25rem,env(safe-area-inset-right));bottom:max(1.25rem,env(safe-area-inset-bottom));display:flex;flex-direction:column-reverse;gap:1rem;pointer-events:auto}
101
102
  .touch-button{width:5.25rem;height:5.25rem;border-radius:50%;border:2px solid #fff6;background:#ffffff1f;color:#fff;font:600 .8rem system-ui,sans-serif;letter-spacing:.05em;touch-action:none;box-shadow:0 0 1.25rem #0008}
102
103
  .touch-button.active{background:#ffffff59;transform:scale(.94)}
104
+ .touch-layer[data-pointer=mouse] *{pointer-events:none}
103
105
  @media (orientation:portrait){body.touch.landscape-game .rotate{display:flex;position:fixed;inset:0;z-index:4;align-items:center;justify-content:center;padding:2rem;text-align:center;font-size:1.25rem;background:#000e}}`;
106
+ async function playerBundle() {
107
+ const sourceEntry = fileURLToPath(new URL("./standalone-player.ts", import.meta.url));
108
+ const compiledEntry = fileURLToPath(new URL("./standalone-player.js", import.meta.url));
109
+ if (!existsSync(sourceEntry) && !existsSync(compiledEntry)) {
110
+ return readFile(resolvePackageAssetPath({ pkg: "@nodetool-ai/game-renderer", path: PLAYER_FILE }, import.meta.url));
111
+ }
112
+ const entry = existsSync(sourceEntry) ? sourceEntry : compiledEntry;
113
+ const bundled = await build({
114
+ entryPoints: [entry],
115
+ outfile: PLAYER_FILE,
116
+ bundle: true,
117
+ platform: "browser",
118
+ format: "esm",
119
+ target: "es2022",
120
+ minify: true,
121
+ write: false,
122
+ conditions: ["nodetool-dev"],
123
+ logLevel: "silent",
124
+ });
125
+ const player = bundled.outputFiles?.[0];
126
+ if (!player) {
127
+ throw new Error("Standalone player bundle was empty");
128
+ }
129
+ return player.contents;
130
+ }
104
131
  /** Builds a self-contained web player with local content-addressed media. */
105
132
  export async function buildStandaloneGame(options) {
106
133
  const validation = validateGame(options.document);
@@ -112,24 +139,7 @@ export async function buildStandaloneGame(options) {
112
139
  await mkdir(dirname(outputDir), { recursive: true });
113
140
  const staging = await mkdtemp(join(dirname(outputDir), ".nodetool-game-build-"));
114
141
  try {
115
- const sourceEntry = fileURLToPath(new URL("./standalone-player.ts", import.meta.url));
116
- const entry = existsSync(sourceEntry) ? sourceEntry : fileURLToPath(new URL("./standalone-player.js", import.meta.url));
117
- const bundled = await build({
118
- entryPoints: [entry],
119
- outfile: PLAYER_FILE,
120
- bundle: true,
121
- platform: "browser",
122
- format: "esm",
123
- target: "es2022",
124
- minify: true,
125
- write: false,
126
- conditions: ["nodetool-dev"],
127
- logLevel: "silent",
128
- });
129
- const player = bundled.outputFiles?.[0];
130
- if (!player) {
131
- throw new Error("Standalone player bundle was empty");
132
- }
142
+ const player = await playerBundle();
133
143
  const wasmPath = fileURLToPath(import.meta.resolve("@jitl/quickjs-ng-wasmfile-release-sync/wasm"));
134
144
  const scriptRuntime = await readFile(wasmPath);
135
145
  const exportedAssets = {};
@@ -207,7 +217,7 @@ export async function buildStandaloneGame(options) {
207
217
  writeFile(join(staging, "index.html"), html()),
208
218
  writeFile(join(staging, "style.css"), CSS),
209
219
  writeFile(join(staging, "game.json"), JSON.stringify(exportedDocument)),
210
- writeFile(join(staging, PLAYER_FILE), player.contents),
220
+ writeFile(join(staging, PLAYER_FILE), player),
211
221
  writeFile(join(staging, "emscripten-module.wasm"), scriptRuntime),
212
222
  ]);
213
223
  let existing;
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,WAAW,GAAG,WAAW,cAAc,KAAK,CAAC;AAoBnD,SAAS,cAAc,CAAC,KAAiB,EAAE,QAAgB;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3H,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3G,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QACrL,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QACpL,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QAChH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QAClK,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,wBAAwB,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5J,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,6BAA6B,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QAC3J,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,QAAQ,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,IAAI;IACX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4BwB,WAAW;;;CAG3C,CAAC;AACF,CAAC;AAED,yFAAyF;AACzF,0GAA0G;AAC1G,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;4NA2BgN,CAAC;AAE7N,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAmC;IAC3E,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC;YAC1B,WAAW,EAAE,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,CAAC,cAAc,CAAC;YAC5B,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACnG,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,eAAe,GAAmC;gBACtD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC;YACF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,cAAc,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;gBAC5C,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO;gBACvF,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAClE,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,oBAAoB,SAAS,EAAE,CAAC,CAAC;gBAC5F,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;gBACjE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;YAC5G,IAAI,GAAG,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxD,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;oBACrE,MAAM,IAAI,KAAK,CAAC,OAAO,SAAS,iCAAiC,CAAC,CAAC;gBACrE,CAAC;gBACD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC1E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;oBACtD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,SAAS,iBAAiB,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,YAAY,GAAG,YAAY,MAAM,IAAI,SAAS,EAAE,CAAC;YACvD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAChF,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;YAClF,UAAU,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;QACvC,CAAC;QACD,MAAM,gBAAgB,GAAiB,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAC/E,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACvE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;YACtD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAAE,aAAa,CAAC;SAClE,CAAC,CAAC;QACH,IAAI,QAA8B,CAAC;QACnC,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/E,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IACrH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type GameDocument3D } from "@nodetool-ai/protocol";
2
+ import type { StandaloneAsset, StandaloneGameBuild } from "./build.js";
3
+ export interface BuildStandaloneGame3DOptions {
4
+ readonly document: GameDocument3D;
5
+ readonly outputDir: string;
6
+ readonly resolveAsset: (sourceAssetId: string, signal?: AbortSignal) => Promise<StandaloneAsset | null>;
7
+ readonly signal?: AbortSignal;
8
+ }
9
+ /** Atomically exports verified model/collider content and all runtime code for static HTTP serving. */
10
+ export declare function buildStandaloneGame3D(options: BuildStandaloneGame3DOptions): Promise<StandaloneGameBuild>;
11
+ //# sourceMappingURL=build3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build3d.d.ts","sourceRoot":"","sources":["../src/build3d.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGvE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACxG,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAoBD,uGAAuG;AACvG,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA8D/G"}