@bitmagic/cli 0.1.70-dev.0 → 0.1.70-dev.2

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 (155) hide show
  1. package/README.md +47 -1
  2. package/assets/skills/publishing-to-poki/SKILL.md +50 -0
  3. package/dist/bin.js +5 -4
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli.d.ts +8 -0
  6. package/dist/cli.js +6 -5
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/publish.d.ts +11 -0
  9. package/dist/commands/publish.js +18 -0
  10. package/dist/commands/publish.js.map +1 -1
  11. package/dist/commands/trailer.js +6 -10
  12. package/dist/commands/trailer.js.map +1 -1
  13. package/dist/editor/recording-sink.d.ts +2 -9
  14. package/dist/editor/recording-sink.js +3 -15
  15. package/dist/editor/recording-sink.js.map +1 -1
  16. package/dist/editor/recording-stream.d.ts +3 -2
  17. package/dist/editor/recording-stream.js +14 -48
  18. package/dist/editor/recording-stream.js.map +1 -1
  19. package/dist/editor/shell-page.js +1 -1
  20. package/dist/editor/shell-page.js.map +1 -1
  21. package/dist/errors.d.ts +8 -0
  22. package/dist/errors.js +16 -0
  23. package/dist/errors.js.map +1 -1
  24. package/dist/generate/video-review.js +1 -1
  25. package/dist/generate/video-review.js.map +1 -1
  26. package/dist/ios/collect-urls.d.ts +1 -75
  27. package/dist/ios/collect-urls.js +2 -219
  28. package/dist/ios/collect-urls.js.map +1 -1
  29. package/dist/ios/local-server.d.ts +1 -11
  30. package/dist/ios/local-server.js +2 -87
  31. package/dist/ios/local-server.js.map +1 -1
  32. package/dist/ios/transform.d.ts +4 -45
  33. package/dist/ios/transform.js +3 -59
  34. package/dist/ios/transform.js.map +1 -1
  35. package/dist/ios/vendor.d.ts +1 -29
  36. package/dist/ios/vendor.js +2 -112
  37. package/dist/ios/vendor.js.map +1 -1
  38. package/dist/package/collect-urls.d.ts +75 -0
  39. package/dist/package/collect-urls.js +220 -0
  40. package/dist/package/collect-urls.js.map +1 -0
  41. package/dist/package/local-server.d.ts +13 -0
  42. package/dist/package/local-server.js +102 -0
  43. package/dist/package/local-server.js.map +1 -0
  44. package/dist/package/transform.d.ts +47 -0
  45. package/dist/package/transform.js +62 -0
  46. package/dist/package/transform.js.map +1 -0
  47. package/dist/package/vendor.d.ts +33 -0
  48. package/dist/package/vendor.js +114 -0
  49. package/dist/package/vendor.js.map +1 -0
  50. package/dist/poki/assets.d.ts +20 -0
  51. package/dist/poki/assets.js +154 -0
  52. package/dist/poki/assets.js.map +1 -0
  53. package/dist/poki/check.d.ts +21 -0
  54. package/dist/poki/check.js +134 -0
  55. package/dist/poki/check.js.map +1 -0
  56. package/dist/poki/publish.d.ts +22 -0
  57. package/dist/poki/publish.js +207 -0
  58. package/dist/poki/publish.js.map +1 -0
  59. package/dist/poki/transform.d.ts +6 -0
  60. package/dist/poki/transform.js +30 -0
  61. package/dist/poki/transform.js.map +1 -0
  62. package/dist/publish/bundle.d.ts +1 -0
  63. package/dist/publish/bundle.js +2 -2
  64. package/dist/publish/bundle.js.map +1 -1
  65. package/dist/render/qr-png.d.ts +3 -6
  66. package/dist/render/qr-png.js +4 -33
  67. package/dist/render/qr-png.js.map +1 -1
  68. package/dist/scaffold/asset-pipeline-skill-files.d.ts +1 -1
  69. package/dist/scaffold/asset-pipeline-skill-files.js +3 -3
  70. package/dist/scaffold/poki-skill-files.d.ts +2 -0
  71. package/dist/scaffold/poki-skill-files.js +7 -0
  72. package/dist/scaffold/poki-skill-files.js.map +1 -0
  73. package/dist/scaffold/project-files.js +1 -1
  74. package/dist/scaffold/project.js +2 -0
  75. package/dist/scaffold/project.js.map +1 -1
  76. package/dist/scaffold/skill-files.js +6 -4
  77. package/dist/scaffold/skill-files.js.map +1 -1
  78. package/dist/trailer/chrome-rasterizers.d.ts +7 -0
  79. package/dist/trailer/chrome-rasterizers.js +7 -0
  80. package/dist/trailer/chrome-rasterizers.js.map +1 -0
  81. package/dist/trailer/game-name.d.ts +2 -0
  82. package/dist/trailer/game-name.js +20 -0
  83. package/dist/trailer/game-name.js.map +1 -0
  84. package/dist/trailer/hud-raster.d.ts +1 -1
  85. package/dist/trailer/hud-raster.js +1 -1
  86. package/dist/trailer/hud-raster.js.map +1 -1
  87. package/dist/trailer/record-session.js +1 -2
  88. package/dist/trailer/record-session.js.map +1 -1
  89. package/dist/trailer/title-raster.d.ts +9 -2
  90. package/dist/trailer/title-raster.js +17 -3
  91. package/dist/trailer/title-raster.js.map +1 -1
  92. package/dist/verify/browser.d.ts +3 -1
  93. package/dist/verify/browser.js +14 -9
  94. package/dist/verify/browser.js.map +1 -1
  95. package/dist/verify/classify.d.ts +2 -0
  96. package/dist/verify/classify.js +4 -1
  97. package/dist/verify/classify.js.map +1 -1
  98. package/package.json +4 -4
  99. package/dist/editor/capture-file.d.ts +0 -70
  100. package/dist/editor/capture-file.js +0 -204
  101. package/dist/editor/capture-file.js.map +0 -1
  102. package/dist/trailer/analyze.d.ts +0 -23
  103. package/dist/trailer/analyze.js +0 -186
  104. package/dist/trailer/analyze.js.map +0 -1
  105. package/dist/trailer/auto-edl.d.ts +0 -50
  106. package/dist/trailer/auto-edl.js +0 -267
  107. package/dist/trailer/auto-edl.js.map +0 -1
  108. package/dist/trailer/beat-cut.d.ts +0 -57
  109. package/dist/trailer/beat-cut.js +0 -232
  110. package/dist/trailer/beat-cut.js.map +0 -1
  111. package/dist/trailer/edl-time.d.ts +0 -61
  112. package/dist/trailer/edl-time.js +0 -105
  113. package/dist/trailer/edl-time.js.map +0 -1
  114. package/dist/trailer/ffmpeg.d.ts +0 -18
  115. package/dist/trailer/ffmpeg.js +0 -100
  116. package/dist/trailer/ffmpeg.js.map +0 -1
  117. package/dist/trailer/hud-state.d.ts +0 -181
  118. package/dist/trailer/hud-state.js +0 -525
  119. package/dist/trailer/hud-state.js.map +0 -1
  120. package/dist/trailer/io.d.ts +0 -22
  121. package/dist/trailer/io.js +0 -20
  122. package/dist/trailer/io.js.map +0 -1
  123. package/dist/trailer/link.d.ts +0 -1
  124. package/dist/trailer/link.js +0 -15
  125. package/dist/trailer/link.js.map +0 -1
  126. package/dist/trailer/make.d.ts +0 -56
  127. package/dist/trailer/make.js +0 -212
  128. package/dist/trailer/make.js.map +0 -1
  129. package/dist/trailer/merge.d.ts +0 -7
  130. package/dist/trailer/merge.js +0 -165
  131. package/dist/trailer/merge.js.map +0 -1
  132. package/dist/trailer/music-beats.d.ts +0 -123
  133. package/dist/trailer/music-beats.js +0 -672
  134. package/dist/trailer/music-beats.js.map +0 -1
  135. package/dist/trailer/paths.d.ts +0 -28
  136. package/dist/trailer/paths.js +0 -101
  137. package/dist/trailer/paths.js.map +0 -1
  138. package/dist/trailer/render.d.ts +0 -59
  139. package/dist/trailer/render.js +0 -521
  140. package/dist/trailer/render.js.map +0 -1
  141. package/dist/trailer/revision.d.ts +0 -8
  142. package/dist/trailer/revision.js +0 -31
  143. package/dist/trailer/revision.js.map +0 -1
  144. package/dist/trailer/synth.d.ts +0 -9
  145. package/dist/trailer/synth.js +0 -120
  146. package/dist/trailer/synth.js.map +0 -1
  147. package/dist/trailer/timeline-types.d.ts +0 -195
  148. package/dist/trailer/timeline-types.js +0 -419
  149. package/dist/trailer/timeline-types.js.map +0 -1
  150. package/dist/trailer/titles.d.ts +0 -44
  151. package/dist/trailer/titles.js +0 -124
  152. package/dist/trailer/titles.js.map +0 -1
  153. package/dist/trailer/video-chain.d.ts +0 -129
  154. package/dist/trailer/video-chain.js +0 -261
  155. package/dist/trailer/video-chain.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"collect-urls.js","sourceRoot":"","sources":["../../src/ios/collect-urls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-urls.js","sourceRoot":"","sources":["../../src/ios/collect-urls.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,4BAA4B,CAAC"}
@@ -1,11 +1 @@
1
- /** Extension → content type, shared by this server and the generated Swift handler. */
2
- export declare const MIME_TYPES: ReadonlyMap<string, string>;
3
- export declare const FALLBACK_MIME = "application/octet-stream";
4
- export declare function mimeTypeFor(filePath: string): string;
5
- export interface PayloadServer {
6
- port: number;
7
- origin: string;
8
- close: () => Promise<void>;
9
- }
10
- /** Serve `dir` on an ephemeral localhost port. */
11
- export declare function startPayloadServer(dir: string): Promise<PayloadServer>;
1
+ export * from '../package/local-server.js';
@@ -1,88 +1,3 @@
1
- /**
2
- * A minimal static server over the staged payload directory, for the record and offline
3
- * validation passes. GET only, no caching, path-traversal guarded. The MIME table is exported
4
- * because the Swift scheme handler (xcode-template.ts) is generated from the SAME table — the
5
- * validation browser and the shipped app must answer identically or the validation proves
6
- * nothing.
7
- */
8
- import * as fs from 'fs';
9
- import * as http from 'http';
10
- import * as path from 'path';
11
- /** Extension → content type, shared by this server and the generated Swift handler. */
12
- export const MIME_TYPES = new Map([
13
- ['html', 'text/html; charset=utf-8'],
14
- ['js', 'text/javascript; charset=utf-8'],
15
- ['mjs', 'text/javascript; charset=utf-8'],
16
- ['css', 'text/css; charset=utf-8'],
17
- ['json', 'application/json'],
18
- ['wasm', 'application/wasm'],
19
- ['glb', 'model/gltf-binary'],
20
- ['gltf', 'model/gltf+json'],
21
- ['png', 'image/png'],
22
- ['webp', 'image/webp'],
23
- ['jpg', 'image/jpeg'],
24
- ['jpeg', 'image/jpeg'],
25
- ['gif', 'image/gif'],
26
- ['svg', 'image/svg+xml'],
27
- ['ico', 'image/png'],
28
- ['opus', 'audio/ogg'],
29
- ['ogg', 'audio/ogg'],
30
- ['mp3', 'audio/mpeg'],
31
- ['wav', 'audio/wav'],
32
- ['mp4', 'video/mp4'],
33
- ['webm', 'video/webm'],
34
- ['txt', 'text/plain; charset=utf-8'],
35
- ]);
36
- export const FALLBACK_MIME = 'application/octet-stream';
37
- export function mimeTypeFor(filePath) {
38
- const ext = filePath.split('?')[0].split('.').pop()?.toLowerCase() ?? '';
39
- return MIME_TYPES.get(ext) ?? FALLBACK_MIME;
40
- }
41
- /** Serve `dir` on an ephemeral localhost port. */
42
- export function startPayloadServer(dir) {
43
- const rootDir = path.resolve(dir);
44
- const server = http.createServer((req, res) => {
45
- if (req.method !== 'GET' && req.method !== 'HEAD') {
46
- res.writeHead(405).end();
47
- return;
48
- }
49
- const requestPath = decodeURIComponent((req.url ?? '/').split('?')[0]);
50
- const resolved = path.resolve(rootDir, `.${requestPath}`);
51
- if (resolved !== rootDir && !resolved.startsWith(rootDir + path.sep)) {
52
- res.writeHead(403).end();
53
- return;
54
- }
55
- let filePath = resolved;
56
- try {
57
- if (fs.statSync(filePath).isDirectory())
58
- filePath = path.join(filePath, 'index.html');
59
- const bytes = fs.readFileSync(filePath);
60
- res
61
- .writeHead(200, { 'Content-Type': mimeTypeFor(filePath), 'Cache-Control': 'no-store' })
62
- .end(req.method === 'HEAD' ? undefined : bytes);
63
- }
64
- catch {
65
- res.writeHead(404, { 'Content-Type': 'text/plain' }).end('not found');
66
- }
67
- });
68
- return new Promise((resolve, reject) => {
69
- server.once('error', reject);
70
- server.listen(0, '127.0.0.1', () => {
71
- const address = server.address();
72
- if (address === null || typeof address === 'string') {
73
- reject(new Error('The payload server did not report a port.'));
74
- return;
75
- }
76
- resolve({
77
- port: address.port,
78
- origin: `http://127.0.0.1:${address.port}`,
79
- close: () => new Promise((resolveClose) => {
80
- server.close(() => resolveClose());
81
- // Sockets Chrome keeps alive would otherwise hold close() open past the command.
82
- server.closeAllConnections();
83
- }),
84
- });
85
- });
86
- });
87
- }
1
+ // Compatibility entry point for the iOS packager.
2
+ export * from '../package/local-server.js';
88
3
  //# sourceMappingURL=local-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-server.js","sourceRoot":"","sources":["../../src/ios/local-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-server.js","sourceRoot":"","sources":["../../src/ios/local-server.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,4BAA4B,CAAC"}
@@ -1,47 +1,6 @@
1
- /**
2
- * The pure HTML surgery of §4d (docs/ios-export-design.md): given the pro-lane bundle, produce
3
- * the payload page. Two deliberately redundant mechanisms:
4
- *
5
- * - the `bm-bundled-assets` map (original URL → relative vendor path), which the engine's own
6
- * ASSET_MAP mechanism resolves through — every three.js loader plus the explicit
7
- * `ASSET_MAP.get` fetch sites;
8
- * - a literal rewrite of every vendored URL AND the animation base-URL constants, which fixes
9
- * the sites that bypass the map (raw fetch in PlacedObjectSystem/HeightmapSystem/physics2d/
10
- * splat loaders, and the StartScreen/SelectionSteps/AchievementToast DOM urls): the world
11
- * data is inlined in this HTML, so rewriting the literals fixes what those sites read.
12
- *
13
- * No DOM parser — the bundle is one multi-MB HTML string and the three edits are anchored on
14
- * markers the scaffold's own template guarantees (`<head>`, `</head>`).
15
- */
16
- export interface TransformOptions {
17
- html: string;
18
- /** Original absolute URL → document-relative vendor path (`vendor/<host>/<path>`). */
19
- assetMap: ReadonlyMap<string, string>;
20
- /** Base-URL constant → relative base (see vendor.ts vendorBasePathFor). */
21
- baseRewrites: ReadonlyMap<string, string>;
22
- }
23
- export interface TransformResult {
24
- html: string;
25
- /** How many URL literals were rewritten, for the build's notes. */
26
- rewrites: number;
27
- }
1
+ import { type TransformOptions as PackageTransformOptions, type TransformResult } from '../package/transform.js';
2
+ export { BUNDLED_ASSETS_ID, renderAssetMapJson, rewriteUrlLiterals } from '../package/transform.js';
3
+ export type { TransformResult } from '../package/transform.js';
28
4
  export declare const DISTRIBUTION_META = "<meta name=\"bm:distribution\" content=\"ios\">";
29
- export declare const BUNDLED_ASSETS_ID = "bm-bundled-assets";
30
- /**
31
- * Rewrite every occurrence of the given URLs/bases in one pass. Longest key first, so an exact
32
- * asset URL wins over a base that prefixes it — both rewrite into the same vendor layout, but
33
- * the ordering keeps the replacement deterministic.
34
- */
35
- export declare function rewriteUrlLiterals(html: string, replacements: ReadonlyMap<string, string>): {
36
- html: string;
37
- rewrites: number;
38
- };
39
- /** Serialize the asset map for the inline block. `<` is escaped so no URL can ever terminate
40
- * the script element early — standard inline-JSON hygiene, and still valid JSON. */
41
- export declare function renderAssetMapJson(assetMap: ReadonlyMap<string, string>): string;
42
- /**
43
- * The full §4d transform. Throws when the bundle carries no `<head>`/`</head>` markers — that
44
- * is not a page this lane understands, and silently skipping the injection would ship an app
45
- * that fetches from the network.
46
- */
5
+ export type TransformOptions = Omit<PackageTransformOptions, 'distribution'>;
47
6
  export declare function transformBundleHtml(options: TransformOptions): TransformResult;
@@ -1,63 +1,7 @@
1
- /**
2
- * The pure HTML surgery of §4d (docs/ios-export-design.md): given the pro-lane bundle, produce
3
- * the payload page. Two deliberately redundant mechanisms:
4
- *
5
- * - the `bm-bundled-assets` map (original URL → relative vendor path), which the engine's own
6
- * ASSET_MAP mechanism resolves through — every three.js loader plus the explicit
7
- * `ASSET_MAP.get` fetch sites;
8
- * - a literal rewrite of every vendored URL AND the animation base-URL constants, which fixes
9
- * the sites that bypass the map (raw fetch in PlacedObjectSystem/HeightmapSystem/physics2d/
10
- * splat loaders, and the StartScreen/SelectionSteps/AchievementToast DOM urls): the world
11
- * data is inlined in this HTML, so rewriting the literals fixes what those sites read.
12
- *
13
- * No DOM parser — the bundle is one multi-MB HTML string and the three edits are anchored on
14
- * markers the scaffold's own template guarantees (`<head>`, `</head>`).
15
- */
1
+ import { transformBundleHtml as transform } from '../package/transform.js';
2
+ export { BUNDLED_ASSETS_ID, renderAssetMapJson, rewriteUrlLiterals } from '../package/transform.js';
16
3
  export const DISTRIBUTION_META = '<meta name="bm:distribution" content="ios">';
17
- export const BUNDLED_ASSETS_ID = 'bm-bundled-assets';
18
- function escapeRegExp(value) {
19
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
20
- }
21
- /**
22
- * Rewrite every occurrence of the given URLs/bases in one pass. Longest key first, so an exact
23
- * asset URL wins over a base that prefixes it — both rewrite into the same vendor layout, but
24
- * the ordering keeps the replacement deterministic.
25
- */
26
- export function rewriteUrlLiterals(html, replacements) {
27
- if (replacements.size === 0)
28
- return { html, rewrites: 0 };
29
- const keys = [...replacements.keys()].sort((a, b) => b.length - a.length);
30
- const pattern = new RegExp(keys.map(escapeRegExp).join('|'), 'g');
31
- let rewrites = 0;
32
- const rewritten = html.replace(pattern, (match) => {
33
- rewrites += 1;
34
- // The alternation only matches keys of the map, so the lookup cannot miss.
35
- return replacements.get(match) ?? match;
36
- });
37
- return { html: rewritten, rewrites };
38
- }
39
- /** Serialize the asset map for the inline block. `<` is escaped so no URL can ever terminate
40
- * the script element early — standard inline-JSON hygiene, and still valid JSON. */
41
- export function renderAssetMapJson(assetMap) {
42
- return JSON.stringify(Object.fromEntries(assetMap)).replace(/</g, '\\u003c');
43
- }
44
- /**
45
- * The full §4d transform. Throws when the bundle carries no `<head>`/`</head>` markers — that
46
- * is not a page this lane understands, and silently skipping the injection would ship an app
47
- * that fetches from the network.
48
- */
49
4
  export function transformBundleHtml(options) {
50
- const combined = new Map([...options.assetMap, ...options.baseRewrites]);
51
- const { html: rewritten, rewrites } = rewriteUrlLiterals(options.html, combined);
52
- if (!rewritten.includes('<head>') || !rewritten.includes('</head>')) {
53
- throw new Error('The built bundle has no <head> section to inject the asset map into.');
54
- }
55
- const mapBlock = `<script type="application/json" id="${BUNDLED_ASSETS_ID}">`
56
- + renderAssetMapJson(options.assetMap)
57
- + '</script>';
58
- const html = rewritten
59
- .replace('<head>', `<head>\n ${DISTRIBUTION_META}`)
60
- .replace('</head>', ` ${mapBlock}\n</head>`);
61
- return { html, rewrites };
5
+ return transform({ ...options, distribution: 'ios' });
62
6
  }
63
7
  //# sourceMappingURL=transform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/ios/transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,MAAM,CAAC,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,YAAyC;IAEzC,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAChD,QAAQ,IAAI,CAAC,CAAC;QACd,2EAA2E;QAC3E,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED;qFACqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,QAAqC;IACtE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEjF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,QAAQ,GACZ,uCAAuC,iBAAiB,IAAI;UAC1D,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;UACpC,WAAW,CAAC;IAEhB,MAAM,IAAI,GAAG,SAAS;SACnB,OAAO,CAAC,QAAQ,EAAE,eAAe,iBAAiB,EAAE,CAAC;SACrD,OAAO,CAAC,SAAS,EAAE,OAAO,QAAQ,WAAW,CAAC,CAAC;IAElD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/ios/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,IAAI,SAAS,EAA0E,MAAM,yBAAyB,CAAC;AACnJ,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;AAE/E,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IAC3D,OAAO,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -1,29 +1 @@
1
- /**
2
- * The document-relative path a URL is vendored at, or null for a URL this lane cannot mirror
3
- * (unparseable, or a path that escapes the tree). The query string is dropped — asset URLs do
4
- * not carry meaningful queries, and a `?` cannot survive as a same-file request path anyway.
5
- */
6
- export declare function vendorPathFor(url: string): string | null;
7
- /** Where a BASE url's rewrite points: the same mapping, minus the appended 'index'. */
8
- export declare function vendorBasePathFor(baseUrl: string): string | null;
9
- export interface VendorFailure {
10
- url: string;
11
- error: string;
12
- }
13
- export interface VendorResult {
14
- /** URL → document-relative vendor path, for every URL that is now on disk. */
15
- entries: Map<string, string>;
16
- failures: VendorFailure[];
17
- /** How many came from the cache rather than the network. */
18
- cacheHits: number;
19
- }
20
- export interface VendorOptions {
21
- urls: Iterable<string>;
22
- cacheDir: string;
23
- payloadDir: string;
24
- fetchImpl?: typeof globalThis.fetch;
25
- log?: (message: string) => void;
26
- concurrency?: number;
27
- }
28
- /** Download (or copy from cache) every URL into the payload's vendor tree. */
29
- export declare function vendorUrls(options: VendorOptions): Promise<VendorResult>;
1
+ export * from '../package/vendor.js';
@@ -1,113 +1,3 @@
1
- /**
2
- * Mirror remote assets into the payload's `vendor/` tree.
3
- *
4
- * The layout preserves `<host>/<pathname>` so that rewriting a BASE url in the bundle (see
5
- * transform.ts) makes runtime-constructed `${base}/${file}` URLs land on the mirrored file —
6
- * exact-URL map entries alone could never cover those.
7
- *
8
- * Downloads are cached under `.bitmagic/ios/cache` keyed by URL hash: generated-asset URLs are
9
- * immutable in practice (uuid/content-addressed paths), and a rebuild should not re-download a
10
- * hundred GLBs. Bytes are stored post-Content-Encoding (node fetch inflates); the engine's
11
- * gzip-sniffing loaders accept raw bytes unchanged (fetchVwld.ts).
12
- */
13
- import { createHash } from 'crypto';
14
- import * as fs from 'fs';
15
- import * as path from 'path';
16
- /**
17
- * The document-relative path a URL is vendored at, or null for a URL this lane cannot mirror
18
- * (unparseable, or a path that escapes the tree). The query string is dropped — asset URLs do
19
- * not carry meaningful queries, and a `?` cannot survive as a same-file request path anyway.
20
- */
21
- export function vendorPathFor(url) {
22
- let parsed;
23
- try {
24
- parsed = new URL(url);
25
- }
26
- catch {
27
- return null;
28
- }
29
- if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
30
- return null;
31
- let pathname = parsed.pathname;
32
- if (pathname.endsWith('/') || pathname === '')
33
- pathname += 'index';
34
- const segments = [];
35
- for (const rawSegment of pathname.split('/')) {
36
- if (rawSegment === '')
37
- continue;
38
- let segment;
39
- try {
40
- segment = decodeURIComponent(rawSegment);
41
- }
42
- catch {
43
- segment = rawSegment;
44
- }
45
- if (segment === '.' || segment === '..')
46
- return null;
47
- segments.push(segment);
48
- }
49
- if (segments.length === 0)
50
- return null;
51
- return ['vendor', parsed.host, ...segments].join('/');
52
- }
53
- /** Where a BASE url's rewrite points: the same mapping, minus the appended 'index'. */
54
- export function vendorBasePathFor(baseUrl) {
55
- const mapped = vendorPathFor(baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);
56
- if (mapped === null)
57
- return null;
58
- return mapped.replace(/\/index$/, '');
59
- }
60
- function cacheFileFor(cacheDir, url) {
61
- return path.join(cacheDir, createHash('sha256').update(url).digest('hex'));
62
- }
63
- /** Download (or copy from cache) every URL into the payload's vendor tree. */
64
- export async function vendorUrls(options) {
65
- const fetchImpl = options.fetchImpl ?? globalThis.fetch;
66
- const log = options.log ?? (() => { });
67
- const entries = new Map();
68
- const failures = [];
69
- let cacheHits = 0;
70
- fs.mkdirSync(options.cacheDir, { recursive: true });
71
- const queue = [...new Set(options.urls)];
72
- const worker = async () => {
73
- for (;;) {
74
- const url = queue.shift();
75
- if (url === undefined)
76
- return;
77
- const relPath = vendorPathFor(url);
78
- if (relPath === null) {
79
- failures.push({ url, error: 'not a vendorable URL' });
80
- continue;
81
- }
82
- const cacheFile = cacheFileFor(options.cacheDir, url);
83
- try {
84
- if (fs.existsSync(cacheFile)) {
85
- cacheHits += 1;
86
- }
87
- else {
88
- const response = await fetchImpl(url);
89
- if (!response.ok)
90
- throw new Error(`HTTP ${response.status}`);
91
- const bytes = Buffer.from(await response.arrayBuffer());
92
- // Write-then-rename so a crashed download never leaves a truncated cache entry that
93
- // every later build would trust.
94
- const tmp = `${cacheFile}.tmp-${process.pid}`;
95
- fs.writeFileSync(tmp, bytes);
96
- fs.renameSync(tmp, cacheFile);
97
- log(` fetched ${url} (${bytes.byteLength} bytes)`);
98
- }
99
- const target = path.join(options.payloadDir, ...relPath.split('/'));
100
- fs.mkdirSync(path.dirname(target), { recursive: true });
101
- fs.copyFileSync(cacheFile, target);
102
- entries.set(url, relPath);
103
- }
104
- catch (error) {
105
- failures.push({ url, error: error instanceof Error ? error.message : String(error) });
106
- }
107
- }
108
- };
109
- const width = Math.max(1, Math.min(options.concurrency ?? 6, queue.length));
110
- await Promise.all(Array.from({ length: width }, worker));
111
- return { entries, failures, cacheHits };
112
- }
1
+ // Compatibility entry point for the iOS packager.
2
+ export * from '../package/vendor.js';
113
3
  //# sourceMappingURL=vendor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/ios/vendor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/ios/vendor.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,75 @@
1
+ export interface CollectedUrls {
2
+ /** Every absolute URL to vendor. */
3
+ urls: Set<string>;
4
+ /**
5
+ * Base-URL constants the engine concatenates file names onto (`${base}/${file}`). Rewriting
6
+ * these in the bundle makes runtime-constructed URLs resolve into the mirrored vendor tree,
7
+ * which no exact-URL map entry could cover.
8
+ */
9
+ bases: Set<string>;
10
+ /** Creator-facing lines about what was (or could not be) collected. */
11
+ notes: string[];
12
+ }
13
+ /** Walk any JSON value, collecting remote-URL strings outside the deny-listed fields. */
14
+ export declare function deepWalkUrls(value: unknown, out: Set<string>): void;
15
+ /** The same compiled-code .glb scan the standalone lane runs, over the pro project's dist. */
16
+ export declare function scanCompiledCodeUrls(compiledCode: string): Set<string>;
17
+ /** All compiled game JS under dist/src/work, concatenated — for reference scans. */
18
+ export declare function readCompiledGameCode(root: string): string;
19
+ interface AnimationEntry {
20
+ file: string;
21
+ /** Absolute URL overriding `<base>/<file>` — the capture-backed default locomotion uses it. */
22
+ url?: string;
23
+ motionId: string;
24
+ }
25
+ interface WeaponAnimationEntry {
26
+ url: string;
27
+ motionId: string;
28
+ }
29
+ /** The shape of `animationAssets` this collector relies on — structural, checked at runtime. */
30
+ export interface AnimationAssetsData {
31
+ activeLibrary: 'cdn' | 'generated';
32
+ animationBaseUrl: string;
33
+ generatedAnimationBaseUrl: string;
34
+ animalBaseUrl: string;
35
+ voxelAnimalBaseUrl: string;
36
+ voxelFishBaseUrl: string;
37
+ characterUrls: {
38
+ default: string;
39
+ defaultFallback: string;
40
+ };
41
+ coreAnimations: AnimationEntry[];
42
+ generatedAnimations: AnimationEntry[];
43
+ meleeWeaponAnimations: WeaponAnimationEntry[];
44
+ generatedMeleeWeaponAnimations: AnimationEntry[];
45
+ generatedRangedWeaponAnimations: AnimationEntry[];
46
+ generatedDirectionalAnimations: AnimationEntry[];
47
+ generatedPostureAnimations: AnimationEntry[];
48
+ animalSkeletons: Record<string, string>;
49
+ }
50
+ /**
51
+ * Import the vendored engine's compiled AnimationAssets — a pure data module with no imports,
52
+ * which is what makes this safe from plain node. Null (with the caller noting it) when the
53
+ * engine predates the module or the shape moved: the record pass still catches whatever the
54
+ * running game actually fetches.
55
+ */
56
+ export declare function loadAnimationAssets(root: string): Promise<AnimationAssetsData | null>;
57
+ interface WorldDataShape {
58
+ worldProfileData?: {
59
+ hasPlayerCharacter?: unknown;
60
+ animals?: unknown;
61
+ };
62
+ }
63
+ /**
64
+ * The built-in animation URLs this game can load. The ACTIVE library ships whole — its optional
65
+ * packs (melee/ranged/directional/posture) are loaded on demand by engine systems whose names
66
+ * game code never contains, so reference-scanning cannot bound them. The inactive library ships
67
+ * only clips the compiled game code names (`getBuiltinAnimationDef` resolves ids from either).
68
+ */
69
+ export declare function collectAnimationUrls(assets: AnimationAssetsData, worldData: WorldDataShape, compiledCode: string): {
70
+ urls: Set<string>;
71
+ bases: Set<string>;
72
+ };
73
+ /** The full §4b collection: deep walk + compiled-code scan + built-in animation surface. */
74
+ export declare function collectUrls(root: string): Promise<CollectedUrls>;
75
+ export {};