@bitmagic/cli 0.1.51-dev.1 → 0.1.51
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.
- package/README.md +9 -3
- package/dist/commands/upgrade.js +28 -1
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/forge/apply-modifications.js +3 -24
- package/dist/forge/apply-modifications.js.map +1 -1
- package/dist/generate/apply-patches.js +4 -27
- package/dist/generate/apply-patches.js.map +1 -1
- package/dist/project/world-json.d.ts +25 -0
- package/dist/project/world-json.js +59 -0
- package/dist/project/world-json.js.map +1 -0
- package/dist/scaffold/legacy-default-assets.d.ts +79 -0
- package/dist/scaffold/legacy-default-assets.js +124 -0
- package/dist/scaffold/legacy-default-assets.js.map +1 -0
- package/dist/scaffold/upgrade-project.d.ts +22 -3
- package/dist/scaffold/upgrade-project.js +19 -3
- package/dist/scaffold/upgrade-project.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -602,8 +602,12 @@ refuses to run against a dirty git working tree unless `--force`, so the upgrade
|
|
|
602
602
|
its own reviewable diff. When the engine version actually moves it also checks npm for a newer CLI —
|
|
603
603
|
see [Staying current](#staying-current).
|
|
604
604
|
|
|
605
|
-
What is yours and never touched: `src/`, `
|
|
606
|
-
|
|
605
|
+
What is yours and never touched: `src/`, `game.json`, `package.json`, `CLAUDE.md`, `GAME-DESIGN.md`,
|
|
606
|
+
`.gitignore`, and any skill you wrote yourself. `world.json` is yours too, with one exception: the
|
|
607
|
+
default trees and rocks the platform itself scaffolded into a project before engine 3.1056 pointed at
|
|
608
|
+
legacy JSON `.vxl` files (converted in memory on every load, warned about on every load, no LOD
|
|
609
|
+
levels), and `upgrade` repoints those nine known URLs at their VXL3 versions and updates their
|
|
610
|
+
`size`. Nothing you added is looked at, and the command lists every record it moved.
|
|
607
611
|
|
|
608
612
|
`.claude/settings.json` is merged rather than rewritten — it is where your permissions and your own
|
|
609
613
|
hooks live. An upgrade adds the `bitmagic reload` Stop hook if it is missing and changes nothing
|
|
@@ -659,7 +663,9 @@ The result shape is per-command — `publish` reports `url`/`visibility`/`publis
|
|
|
659
663
|
reports `gameId`/`root`/`dependenciesInstalled`/`packageManager`, `upgrade` reports `replaced` and any
|
|
660
664
|
`missingDependencies` as structured entries rather than only as a printed install command, plus
|
|
661
665
|
`cliUpdate` (`{ current, latest, updateAvailable }`, or `null` when the engine did not move and so
|
|
662
|
-
no check was made — which is not the same as "no update")
|
|
666
|
+
no check was made — which is not the same as "no update"), and `legacyAssetsRepointed` (the
|
|
667
|
+
`world.json` default-asset records it moved, each `{ id, name, from, to }`) with
|
|
668
|
+
`legacyAssetsSkipped` naming why `world.json` could not be checked, or `null`.
|
|
663
669
|
|
|
664
670
|
## Staying current
|
|
665
671
|
|
package/dist/commands/upgrade.js
CHANGED
|
@@ -9,6 +9,7 @@ import { selectEnvironmentForCommand, resolveAuth0ClientId } from '../config/env
|
|
|
9
9
|
import { getAccessToken } from '../auth/session.js';
|
|
10
10
|
import { fetchEngineManifest, downloadAndVerify, extractEngine } from '../scaffold/engine-download.js';
|
|
11
11
|
import { upgradeProject } from '../scaffold/upgrade-project.js';
|
|
12
|
+
import { WORLDS_ROOT } from '../scaffold/legacy-default-assets.js';
|
|
12
13
|
import { diffDependencies } from '../scaffold/dependency-diff.js';
|
|
13
14
|
import { DEPENDENCIES, DEV_DEPENDENCIES } from '../scaffold/project-files.js';
|
|
14
15
|
import { loadProjectContext } from '../project/context.js';
|
|
@@ -112,6 +113,11 @@ export function printDependencyReport(output, root) {
|
|
|
112
113
|
}
|
|
113
114
|
return mismatches;
|
|
114
115
|
}
|
|
116
|
+
/** An asset URL as the report shows it: the path under the CDN's `worlds/v3/`, host dropped. */
|
|
117
|
+
function cdnPath(url) {
|
|
118
|
+
const at = url.indexOf(WORLDS_ROOT);
|
|
119
|
+
return at < 0 ? url : url.slice(at + WORLDS_ROOT.length);
|
|
120
|
+
}
|
|
115
121
|
/**
|
|
116
122
|
* Say what became of AGENTS.md, and — when it was kept — what the current template has that it
|
|
117
123
|
* does not.
|
|
@@ -226,7 +232,7 @@ fetchLatest = () => fetchTagVersion(tag)) {
|
|
|
226
232
|
export const upgradeCommand = defineCommand({
|
|
227
233
|
meta: {
|
|
228
234
|
name: 'upgrade',
|
|
229
|
-
description: "Refresh this project's vendored engine and platform config files
|
|
235
|
+
description: "Refresh this project's vendored engine and platform config files; your game is left alone except for the platform's own default assets.",
|
|
230
236
|
},
|
|
231
237
|
args: {
|
|
232
238
|
engine: { type: 'string', description: 'Engine version to upgrade to (must be the currently published one).' },
|
|
@@ -298,6 +304,23 @@ export const upgradeCommand = defineCommand({
|
|
|
298
304
|
for (const file of result.replaced) {
|
|
299
305
|
output.info(` ${file}`);
|
|
300
306
|
}
|
|
307
|
+
if (result.legacyAssetsRepointed.length > 0) {
|
|
308
|
+
// The one edit this command makes inside the creator's game, so it is spelled out per
|
|
309
|
+
// asset: which record, from which file, to which. Without this the only sign would be a
|
|
310
|
+
// diff in world.json the creator did not make.
|
|
311
|
+
output.info('');
|
|
312
|
+
output.info(`Repointed ${result.legacyAssetsRepointed.length} default asset(s) in world.json from the legacy .vxl ` +
|
|
313
|
+
'files to their VXL3 versions (same assets, smaller, with LOD levels; the engine no longer ' +
|
|
314
|
+
'converts them on every load):');
|
|
315
|
+
for (const asset of result.legacyAssetsRepointed) {
|
|
316
|
+
output.info(` ${asset.name ?? asset.id ?? '(unnamed asset)'}: ${cdnPath(asset.from)} -> ${cdnPath(asset.to)}`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (result.legacyAssetsSkipped !== undefined) {
|
|
320
|
+
output.info('');
|
|
321
|
+
output.info(`Could not check world.json for legacy default assets: ${result.legacyAssetsSkipped}.`);
|
|
322
|
+
output.info(' Fix the file and run `bitmagic upgrade` again to repoint them.');
|
|
323
|
+
}
|
|
301
324
|
if (result.claudeSettingsSkipped !== undefined) {
|
|
302
325
|
output.info('');
|
|
303
326
|
output.info(`Left ${result.claudeSettingsSkipped} — your settings are untouched.`);
|
|
@@ -319,6 +342,10 @@ export const upgradeCommand = defineCommand({
|
|
|
319
342
|
engineVersion: result.engineVersion,
|
|
320
343
|
previousEngineVersion: result.previousEngineVersion,
|
|
321
344
|
replaced: result.replaced,
|
|
345
|
+
// Per-asset, not a count: an agent that reads world.json next should know exactly which
|
|
346
|
+
// records moved under it and to where.
|
|
347
|
+
legacyAssetsRepointed: result.legacyAssetsRepointed,
|
|
348
|
+
legacyAssetsSkipped: result.legacyAssetsSkipped ?? null,
|
|
322
349
|
// The install command is printed as prose; an agent gets the structured form instead of
|
|
323
350
|
// parsing it back out of a sentence.
|
|
324
351
|
missingDependencies: mismatches,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,13 +25,10 @@
|
|
|
25
25
|
* which both lanes run baseline-diffed so a legacy game's existing violations still accept
|
|
26
26
|
* unrelated writes.
|
|
27
27
|
*/
|
|
28
|
-
import * as fs from 'fs';
|
|
29
28
|
import * as path from 'path';
|
|
30
29
|
import { CliError } from '../errors.js';
|
|
31
30
|
import { validateWorldData } from '@bitmagic/world-forger/world-json-strict-validator.js';
|
|
32
|
-
|
|
33
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
34
|
-
}
|
|
31
|
+
import { isJsonObject, readWorldJson, writeWorldJsonAtomic } from '../project/world-json.js';
|
|
35
32
|
/** Walks `path`, creating intermediate objects, and returns the container of the final key. */
|
|
36
33
|
function getOrCreatePath(root, segments) {
|
|
37
34
|
let current = root;
|
|
@@ -154,23 +151,7 @@ function applyOne(world, modification) {
|
|
|
154
151
|
* expensive enough that "run it again" is not an acceptable recovery.
|
|
155
152
|
*/
|
|
156
153
|
export function applyModificationsToWorld(worldPath, modifications) {
|
|
157
|
-
|
|
158
|
-
try {
|
|
159
|
-
raw = fs.readFileSync(worldPath, 'utf-8');
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
throw new CliError(`Cannot read ${worldPath}. Is this a Bitmagic project?`);
|
|
163
|
-
}
|
|
164
|
-
let world;
|
|
165
|
-
try {
|
|
166
|
-
world = JSON.parse(raw);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
throw new CliError(`${worldPath} is not valid JSON. Nothing has been changed.`);
|
|
170
|
-
}
|
|
171
|
-
if (!isJsonObject(world)) {
|
|
172
|
-
throw new CliError(`${worldPath} does not contain a world object. Nothing has been changed.`);
|
|
173
|
-
}
|
|
154
|
+
const world = readWorldJson(worldPath);
|
|
174
155
|
// Baseline BEFORE applying: a violation already present in a legacy or imported world must not
|
|
175
156
|
// block an unrelated write. Only violations this batch INTRODUCES are refused.
|
|
176
157
|
const preExisting = new Set(validateWorldData(world));
|
|
@@ -188,9 +169,7 @@ export function applyModificationsToWorld(worldPath, modifications) {
|
|
|
188
169
|
throw new CliError(`The forged level would make ${path.basename(worldPath)} invalid against the engine's GameData `
|
|
189
170
|
+ `schema, so nothing was written. Violations: ${introduced.join('; ')}`);
|
|
190
171
|
}
|
|
191
|
-
|
|
192
|
-
fs.writeFileSync(temp, `${JSON.stringify(world, null, 2)}\n`);
|
|
193
|
-
fs.renameSync(temp, worldPath);
|
|
172
|
+
writeWorldJsonAtomic(worldPath, world);
|
|
194
173
|
return { applied: modifications.length, summary };
|
|
195
174
|
}
|
|
196
175
|
//# sourceMappingURL=apply-modifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-modifications.js","sourceRoot":"","sources":["../../src/forge/apply-modifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"apply-modifications.js","sourceRoot":"","sources":["../../src/forge/apply-modifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
1
|
import { buildUpsertPredicate, isUpsertRootPatch, validateWorldPatch, } from '@bitmagic/asset-core';
|
|
4
2
|
import { CliError } from '../errors.js';
|
|
5
|
-
|
|
6
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
7
|
-
}
|
|
3
|
+
import { isJsonObject, readWorldJson, writeWorldJsonAtomic } from '../project/world-json.js';
|
|
8
4
|
/** Walks `path`, creating intermediate objects, and returns the container plus the final key. */
|
|
9
5
|
function resolveContainer(root, segments) {
|
|
10
6
|
let current = root;
|
|
@@ -69,29 +65,10 @@ export function applyPatchesToWorld(worldPath, patches) {
|
|
|
69
65
|
throw new CliError(`The server sent a patch this CLI cannot apply: ${problem}`);
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
raw = fs.readFileSync(worldPath, 'utf-8');
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
throw new CliError(`Cannot read ${worldPath}. Is this a Bitmagic project?`);
|
|
78
|
-
}
|
|
79
|
-
let world;
|
|
80
|
-
try {
|
|
81
|
-
world = JSON.parse(raw);
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
throw new CliError(`${worldPath} is not valid JSON. Nothing has been changed.`);
|
|
85
|
-
}
|
|
86
|
-
if (!isJsonObject(world)) {
|
|
87
|
-
throw new CliError(`${worldPath} does not contain a world object. Nothing has been changed.`);
|
|
88
|
-
}
|
|
68
|
+
const world = readWorldJson(worldPath);
|
|
89
69
|
const summary = patches.map((patch) => applyOne(world, patch));
|
|
90
|
-
// Write once,
|
|
91
|
-
|
|
92
|
-
const temp = path.join(path.dirname(worldPath), `.world.json.${process.pid}.tmp`);
|
|
93
|
-
fs.writeFileSync(temp, `${JSON.stringify(world, null, 2)}\n`);
|
|
94
|
-
fs.renameSync(temp, worldPath);
|
|
70
|
+
// Write once, atomically — see project/world-json.ts for the temp-file contract.
|
|
71
|
+
writeWorldJsonAtomic(worldPath, world);
|
|
95
72
|
return { applied: patches.length, summary };
|
|
96
73
|
}
|
|
97
74
|
//# sourceMappingURL=apply-patches.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-patches.js","sourceRoot":"","sources":["../../src/generate/apply-patches.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"apply-patches.js","sourceRoot":"","sources":["../../src/generate/apply-patches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one way the CLI reads and writes a project's `src/work/world.json`.
|
|
3
|
+
*
|
|
4
|
+
* Three commands rewrite that file — `generate` (apply-patches), `forge` / the dev editor
|
|
5
|
+
* (apply-modifications) and `upgrade` (legacy default-asset repoint) — and each used to carry its
|
|
6
|
+
* own copy of the same read → parse → guard → temp-file → rename block. The temp file's NAME is a
|
|
7
|
+
* contract, not a detail: `editor/watch.ts` ignores `.world.json.*.tmp` so a half-written file
|
|
8
|
+
* never triggers a rebuild, and the two-space + trailing-newline form is what every reader and
|
|
9
|
+
* every reviewable diff expects. One module, so the next change to either lands once.
|
|
10
|
+
*/
|
|
11
|
+
export type JsonObject = Record<string, unknown>;
|
|
12
|
+
export declare function isJsonObject(value: unknown): value is JsonObject;
|
|
13
|
+
/**
|
|
14
|
+
* Read and parse a world.json, throwing a CliError that names the file for every failure mode —
|
|
15
|
+
* missing, unreadable, not JSON, not an object. Every caller today wants exactly that: an
|
|
16
|
+
* operation on a world it cannot read must stop before it changes anything.
|
|
17
|
+
*/
|
|
18
|
+
export declare function readWorldJson(worldPath: string): JsonObject;
|
|
19
|
+
/**
|
|
20
|
+
* Write the whole document, two-space indent, trailing newline, through a temp file in the same
|
|
21
|
+
* directory renamed over the original — so an interrupted write cannot leave a truncated
|
|
22
|
+
* world.json behind. If the write itself fails the temp file is removed rather than left as a
|
|
23
|
+
* stray dot-file the next `bitmagic upgrade`'s clean-tree gate would trip over.
|
|
24
|
+
*/
|
|
25
|
+
export declare function writeWorldJsonAtomic(worldPath: string, world: JsonObject): void;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one way the CLI reads and writes a project's `src/work/world.json`.
|
|
3
|
+
*
|
|
4
|
+
* Three commands rewrite that file — `generate` (apply-patches), `forge` / the dev editor
|
|
5
|
+
* (apply-modifications) and `upgrade` (legacy default-asset repoint) — and each used to carry its
|
|
6
|
+
* own copy of the same read → parse → guard → temp-file → rename block. The temp file's NAME is a
|
|
7
|
+
* contract, not a detail: `editor/watch.ts` ignores `.world.json.*.tmp` so a half-written file
|
|
8
|
+
* never triggers a rebuild, and the two-space + trailing-newline form is what every reader and
|
|
9
|
+
* every reviewable diff expects. One module, so the next change to either lands once.
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import { CliError } from '../errors.js';
|
|
14
|
+
export function isJsonObject(value) {
|
|
15
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Read and parse a world.json, throwing a CliError that names the file for every failure mode —
|
|
19
|
+
* missing, unreadable, not JSON, not an object. Every caller today wants exactly that: an
|
|
20
|
+
* operation on a world it cannot read must stop before it changes anything.
|
|
21
|
+
*/
|
|
22
|
+
export function readWorldJson(worldPath) {
|
|
23
|
+
let raw;
|
|
24
|
+
try {
|
|
25
|
+
raw = fs.readFileSync(worldPath, 'utf-8');
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new CliError(`Cannot read ${worldPath}. Is this a Bitmagic project?`);
|
|
29
|
+
}
|
|
30
|
+
let world;
|
|
31
|
+
try {
|
|
32
|
+
world = JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new CliError(`${worldPath} is not valid JSON. Nothing has been changed.`);
|
|
36
|
+
}
|
|
37
|
+
if (!isJsonObject(world)) {
|
|
38
|
+
throw new CliError(`${worldPath} does not contain a world object. Nothing has been changed.`);
|
|
39
|
+
}
|
|
40
|
+
return world;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Write the whole document, two-space indent, trailing newline, through a temp file in the same
|
|
44
|
+
* directory renamed over the original — so an interrupted write cannot leave a truncated
|
|
45
|
+
* world.json behind. If the write itself fails the temp file is removed rather than left as a
|
|
46
|
+
* stray dot-file the next `bitmagic upgrade`'s clean-tree gate would trip over.
|
|
47
|
+
*/
|
|
48
|
+
export function writeWorldJsonAtomic(worldPath, world) {
|
|
49
|
+
const temp = path.join(path.dirname(worldPath), `.world.json.${process.pid}.tmp`);
|
|
50
|
+
try {
|
|
51
|
+
fs.writeFileSync(temp, `${JSON.stringify(world, null, 2)}\n`);
|
|
52
|
+
fs.renameSync(temp, worldPath);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
fs.rmSync(temp, { force: true });
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=world-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world-json.js","sourceRoot":"","sources":["../../src/project/world-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,eAAe,SAAS,+BAA+B,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,GAAG,SAAS,+CAA+C,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAAC,GAAG,SAAS,6DAA6D,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,KAAiB;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,eAAe,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IAClF,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repoints the platform's OWN default voxel assets from their legacy JSON `.vxl` files to the
|
|
3
|
+
* VXL3 re-encodings under `default-assets/voxel/v2/`.
|
|
4
|
+
*
|
|
5
|
+
* Every project scaffolded before engine 3.1056 got a `src/work/world.json` whose default trees
|
|
6
|
+
* and rocks (six generated variants plus three converted rocks) pointed at the pre-VXL3 files.
|
|
7
|
+
* Those files are still served, deliberately — games in the wild reference them by URL — but
|
|
8
|
+
* they are the legacy JSON layout: the engine converts each one in memory on EVERY load, logs a
|
|
9
|
+
* warning per asset per load, and the file carries no LOD trailer for mobile to drop. Nothing
|
|
10
|
+
* else ever rewrote the URLs: `bitmagic upgrade` replaces `engine/` and leaves the creator's
|
|
11
|
+
* `world.json` alone by contract, so an upgraded project kept warning forever.
|
|
12
|
+
*
|
|
13
|
+
* This is the one exception to that contract, and it is a narrow one. Only the nine URLs the
|
|
14
|
+
* platform itself put into `world.json` at scaffold time are touched — matched by their exact
|
|
15
|
+
* path under `worlds/v3/`, host preserved — and each is swapped for the same asset in the new
|
|
16
|
+
* encoding: the three rocks are literal re-encodings of those files, the six variants are the
|
|
17
|
+
* regenerated defaults every current template ships. Ids, names and every other field stay as
|
|
18
|
+
* they are, except `size`, which follows the bytes (the Assets tab shows it, and the old values
|
|
19
|
+
* overstate the new files by 10-20x). Assets the creator added, generated or forged are never
|
|
20
|
+
* looked at: their legacy files, if any, are unknown to this table and need a real re-save.
|
|
21
|
+
*
|
|
22
|
+
* The table is a snapshot of `templates/standard-3d/source/world.json` before and after the move
|
|
23
|
+
* (repo commit a9618f3c), so it is a fixed migration rather than a live lookup — a project must
|
|
24
|
+
* get the same result from every CLI that carries it. `legacy-default-assets.test.ts` holds each
|
|
25
|
+
* entry's `to` side to the template the repo ships, so a regenerated default cannot drift away
|
|
26
|
+
* from this table unnoticed. See docs/voxel-default-assets.md.
|
|
27
|
+
*/
|
|
28
|
+
/** The URL path under `worlds/v3/` before the move, and the record fields it becomes. */
|
|
29
|
+
export interface LegacyDefaultAssetTarget {
|
|
30
|
+
/** Path under `worlds/v3/` of the VXL3 file. */
|
|
31
|
+
path: string;
|
|
32
|
+
/** Byte size of that file — `size` on the asset record follows it. */
|
|
33
|
+
size: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Keyed by the legacy path under `worlds/v3/`. Six generated variants keep their file name one
|
|
37
|
+
* directory down; the three converted rocks were per-game uploads and now live beside them.
|
|
38
|
+
*/
|
|
39
|
+
export declare const LEGACY_DEFAULT_ASSET_TARGETS: Readonly<Record<string, LegacyDefaultAssetTarget>>;
|
|
40
|
+
/** The marker every asset URL on the CDN carries; the table's keys are the paths after it. */
|
|
41
|
+
export declare const WORLDS_ROOT = "/worlds/v3/";
|
|
42
|
+
/** One asset record that was repointed, for the upgrade report. Absent id/name are left absent. */
|
|
43
|
+
export interface RepointedAsset {
|
|
44
|
+
id?: string;
|
|
45
|
+
name?: string;
|
|
46
|
+
from: string;
|
|
47
|
+
to: string;
|
|
48
|
+
}
|
|
49
|
+
/** What the repoint did to the project, for the upgrade report. */
|
|
50
|
+
export interface RepointOutcome {
|
|
51
|
+
/** The records rewritten, in file order. Empty when there was nothing to rewrite. */
|
|
52
|
+
repointed: RepointedAsset[];
|
|
53
|
+
/**
|
|
54
|
+
* Why `world.json` was left alone when it could not even be inspected — missing, unreadable,
|
|
55
|
+
* not JSON, not a world object. Absent when the file was read; "read and nothing matched" is
|
|
56
|
+
* an empty `repointed`, not a skip. Reported so the creator knows the migration did not run
|
|
57
|
+
* rather than concluding their assets are already current.
|
|
58
|
+
*/
|
|
59
|
+
skipped?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The VXL3 URL a legacy default-asset URL maps to, or null when the URL is not one of the nine.
|
|
63
|
+
* The host is kept — the table matches on the path only, so a project pointed at another
|
|
64
|
+
* environment's CDN keeps pointing at it. Exported for the tests; the migration is the function
|
|
65
|
+
* below.
|
|
66
|
+
*/
|
|
67
|
+
export declare function repointLegacyDefaultAssetUrl(url: string): {
|
|
68
|
+
url: string;
|
|
69
|
+
size: number;
|
|
70
|
+
} | null;
|
|
71
|
+
/**
|
|
72
|
+
* Rewrite the project's `src/work/world.json` in place and report what moved. Never throws for a
|
|
73
|
+
* file it cannot read: upgrading the engine must not be blocked by a world.json the creator is
|
|
74
|
+
* mid-edit on, so an unreadable or unparseable file is left exactly as it was and named in
|
|
75
|
+
* `skipped`. A write that fails DOES throw — by then the file was fine and the failure is the
|
|
76
|
+
* disk's, which the creator has to hear about — but `writeWorldJsonAtomic` leaves no partial
|
|
77
|
+
* file or stray temp behind.
|
|
78
|
+
*/
|
|
79
|
+
export declare function repointLegacyDefaultAssets(root: string): RepointOutcome;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repoints the platform's OWN default voxel assets from their legacy JSON `.vxl` files to the
|
|
3
|
+
* VXL3 re-encodings under `default-assets/voxel/v2/`.
|
|
4
|
+
*
|
|
5
|
+
* Every project scaffolded before engine 3.1056 got a `src/work/world.json` whose default trees
|
|
6
|
+
* and rocks (six generated variants plus three converted rocks) pointed at the pre-VXL3 files.
|
|
7
|
+
* Those files are still served, deliberately — games in the wild reference them by URL — but
|
|
8
|
+
* they are the legacy JSON layout: the engine converts each one in memory on EVERY load, logs a
|
|
9
|
+
* warning per asset per load, and the file carries no LOD trailer for mobile to drop. Nothing
|
|
10
|
+
* else ever rewrote the URLs: `bitmagic upgrade` replaces `engine/` and leaves the creator's
|
|
11
|
+
* `world.json` alone by contract, so an upgraded project kept warning forever.
|
|
12
|
+
*
|
|
13
|
+
* This is the one exception to that contract, and it is a narrow one. Only the nine URLs the
|
|
14
|
+
* platform itself put into `world.json` at scaffold time are touched — matched by their exact
|
|
15
|
+
* path under `worlds/v3/`, host preserved — and each is swapped for the same asset in the new
|
|
16
|
+
* encoding: the three rocks are literal re-encodings of those files, the six variants are the
|
|
17
|
+
* regenerated defaults every current template ships. Ids, names and every other field stay as
|
|
18
|
+
* they are, except `size`, which follows the bytes (the Assets tab shows it, and the old values
|
|
19
|
+
* overstate the new files by 10-20x). Assets the creator added, generated or forged are never
|
|
20
|
+
* looked at: their legacy files, if any, are unknown to this table and need a real re-save.
|
|
21
|
+
*
|
|
22
|
+
* The table is a snapshot of `templates/standard-3d/source/world.json` before and after the move
|
|
23
|
+
* (repo commit a9618f3c), so it is a fixed migration rather than a live lookup — a project must
|
|
24
|
+
* get the same result from every CLI that carries it. `legacy-default-assets.test.ts` holds each
|
|
25
|
+
* entry's `to` side to the template the repo ships, so a regenerated default cannot drift away
|
|
26
|
+
* from this table unnoticed. See docs/voxel-default-assets.md.
|
|
27
|
+
*/
|
|
28
|
+
import * as fs from 'fs';
|
|
29
|
+
import * as path from 'path';
|
|
30
|
+
import { aliasSourceDir } from './aliases.js';
|
|
31
|
+
import { isJsonObject, writeWorldJsonAtomic } from '../project/world-json.js';
|
|
32
|
+
/**
|
|
33
|
+
* Keyed by the legacy path under `worlds/v3/`. Six generated variants keep their file name one
|
|
34
|
+
* directory down; the three converted rocks were per-game uploads and now live beside them.
|
|
35
|
+
*/
|
|
36
|
+
export const LEGACY_DEFAULT_ASSET_TARGETS = {
|
|
37
|
+
'default-assets/voxel/tree-variant-1.vxl': { path: 'default-assets/voxel/v2/tree-variant-1.vxl', size: 249 },
|
|
38
|
+
'default-assets/voxel/tree-variant-2.vxl': { path: 'default-assets/voxel/v2/tree-variant-2.vxl', size: 265 },
|
|
39
|
+
'default-assets/voxel/tree-variant-3.vxl': { path: 'default-assets/voxel/v2/tree-variant-3.vxl', size: 217 },
|
|
40
|
+
'default-assets/voxel/rock-variant-1.vxl': { path: 'default-assets/voxel/v2/rock-variant-1.vxl', size: 103 },
|
|
41
|
+
'default-assets/voxel/rock-variant-2.vxl': { path: 'default-assets/voxel/v2/rock-variant-2.vxl', size: 106 },
|
|
42
|
+
'default-assets/voxel/rock-variant-3.vxl': { path: 'default-assets/voxel/v2/rock-variant-3.vxl', size: 142 },
|
|
43
|
+
'RY4XEVGD22FU/1770810580022-RY4XEVGD22FU-voxelRock1-1770810580858.vxl': {
|
|
44
|
+
path: 'default-assets/voxel/v2/voxel-rock-1.vxl', size: 130,
|
|
45
|
+
},
|
|
46
|
+
'RY4XEVGD22FU/1770810580046-RY4XEVGD22FU-voxelRock2-1770810580863.vxl': {
|
|
47
|
+
path: 'default-assets/voxel/v2/voxel-rock-2.vxl', size: 169,
|
|
48
|
+
},
|
|
49
|
+
'RY4XEVGD22FU/1770810580070-RY4XEVGD22FU-voxelRock3-1770810580870.vxl': {
|
|
50
|
+
path: 'default-assets/voxel/v2/voxel-rock-3.vxl', size: 209,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
/** The marker every asset URL on the CDN carries; the table's keys are the paths after it. */
|
|
54
|
+
export const WORLDS_ROOT = '/worlds/v3/';
|
|
55
|
+
/**
|
|
56
|
+
* The VXL3 URL a legacy default-asset URL maps to, or null when the URL is not one of the nine.
|
|
57
|
+
* The host is kept — the table matches on the path only, so a project pointed at another
|
|
58
|
+
* environment's CDN keeps pointing at it. Exported for the tests; the migration is the function
|
|
59
|
+
* below.
|
|
60
|
+
*/
|
|
61
|
+
export function repointLegacyDefaultAssetUrl(url) {
|
|
62
|
+
const at = url.indexOf(WORLDS_ROOT);
|
|
63
|
+
if (at < 0)
|
|
64
|
+
return null;
|
|
65
|
+
const legacyPath = url.slice(at + WORLDS_ROOT.length);
|
|
66
|
+
// hasOwn, not a bare index: the path comes from the file, and a path spelled like an
|
|
67
|
+
// Object.prototype member ('constructor', '__proto__', …) would otherwise "match".
|
|
68
|
+
if (!Object.hasOwn(LEGACY_DEFAULT_ASSET_TARGETS, legacyPath))
|
|
69
|
+
return null;
|
|
70
|
+
const target = LEGACY_DEFAULT_ASSET_TARGETS[legacyPath];
|
|
71
|
+
return { url: `${url.slice(0, at + WORLDS_ROOT.length)}${target.path}`, size: target.size };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Rewrite the project's `src/work/world.json` in place and report what moved. Never throws for a
|
|
75
|
+
* file it cannot read: upgrading the engine must not be blocked by a world.json the creator is
|
|
76
|
+
* mid-edit on, so an unreadable or unparseable file is left exactly as it was and named in
|
|
77
|
+
* `skipped`. A write that fails DOES throw — by then the file was fine and the failure is the
|
|
78
|
+
* disk's, which the creator has to hear about — but `writeWorldJsonAtomic` leaves no partial
|
|
79
|
+
* file or stray temp behind.
|
|
80
|
+
*/
|
|
81
|
+
export function repointLegacyDefaultAssets(root) {
|
|
82
|
+
const worldRelative = path.join(aliasSourceDir('work'), 'world.json');
|
|
83
|
+
const worldPath = path.join(root, worldRelative);
|
|
84
|
+
if (!fs.existsSync(worldPath)) {
|
|
85
|
+
return { repointed: [], skipped: `${worldRelative} not found` };
|
|
86
|
+
}
|
|
87
|
+
let world;
|
|
88
|
+
try {
|
|
89
|
+
world = JSON.parse(fs.readFileSync(worldPath, 'utf-8'));
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
const reason = error instanceof SyntaxError ? 'is not valid JSON' : 'could not be read';
|
|
93
|
+
return { repointed: [], skipped: `${worldRelative} ${reason}` };
|
|
94
|
+
}
|
|
95
|
+
if (!isJsonObject(world)) {
|
|
96
|
+
return { repointed: [], skipped: `${worldRelative} does not contain a world object` };
|
|
97
|
+
}
|
|
98
|
+
const assets = world.assets;
|
|
99
|
+
if (!Array.isArray(assets))
|
|
100
|
+
return { repointed: [] };
|
|
101
|
+
const repointed = [];
|
|
102
|
+
for (const asset of assets) {
|
|
103
|
+
if (!isJsonObject(asset))
|
|
104
|
+
continue;
|
|
105
|
+
if (typeof asset.url !== 'string')
|
|
106
|
+
continue;
|
|
107
|
+
const target = repointLegacyDefaultAssetUrl(asset.url);
|
|
108
|
+
if (target === null)
|
|
109
|
+
continue;
|
|
110
|
+
repointed.push({
|
|
111
|
+
...(typeof asset.id === 'string' ? { id: asset.id } : {}),
|
|
112
|
+
...(typeof asset.name === 'string' ? { name: asset.name } : {}),
|
|
113
|
+
from: asset.url,
|
|
114
|
+
to: target.url,
|
|
115
|
+
});
|
|
116
|
+
asset.url = target.url;
|
|
117
|
+
asset.size = target.size;
|
|
118
|
+
}
|
|
119
|
+
if (repointed.length === 0)
|
|
120
|
+
return { repointed };
|
|
121
|
+
writeWorldJsonAtomic(worldPath, world);
|
|
122
|
+
return { repointed };
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=legacy-default-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-default-assets.js","sourceRoot":"","sources":["../../src/scaffold/legacy-default-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AgentsMdOutcome } from './agents-md.js';
|
|
2
|
+
import { type RepointedAsset } from './legacy-default-assets.js';
|
|
2
3
|
export interface UpgradeOptions {
|
|
3
4
|
root: string;
|
|
4
5
|
/** Where extractEngine unpacked the new engine tree, same shape scaffoldProject reads from. */
|
|
@@ -32,15 +33,33 @@ export interface UpgradeResult {
|
|
|
32
33
|
* never silent.
|
|
33
34
|
*/
|
|
34
35
|
environmentPinned?: string;
|
|
36
|
+
/**
|
|
37
|
+
* The platform-owned default assets in `src/work/world.json` that were repointed from their
|
|
38
|
+
* legacy JSON files to the VXL3 ones. Empty when there was nothing to repoint. This is the one
|
|
39
|
+
* write this command makes to the creator's game, so it is reported per asset rather than
|
|
40
|
+
* folded into `replaced` — see scaffold/legacy-default-assets.ts.
|
|
41
|
+
*/
|
|
42
|
+
legacyAssetsRepointed: RepointedAsset[];
|
|
43
|
+
/**
|
|
44
|
+
* Why world.json could not even be inspected for that repoint, when it could not be (missing,
|
|
45
|
+
* unreadable, not JSON). Absent when it was read. The creator is told rather than left to
|
|
46
|
+
* conclude their default assets are already current.
|
|
47
|
+
*/
|
|
48
|
+
legacyAssetsSkipped?: string;
|
|
35
49
|
}
|
|
36
50
|
/**
|
|
37
51
|
* Refreshes the platform-owned parts of a scaffolded project in place, and nothing else. This is
|
|
38
52
|
* the file-boundary described in the task brief: `engine/` (every VENDORED_DIRS entry) and
|
|
39
53
|
* sw-cache-buster.js are wholesale-replaced, the config files AND SHIPPED SKILLS in
|
|
40
54
|
* PLATFORM_GENERATED_FILES are re-rendered, and bitmagic.json is read-modified-written so only its
|
|
41
|
-
* engineVersion field changes. Everything else on disk — src
|
|
42
|
-
* package.json, GAME-DESIGN.md, CLAUDE.md, .gitignore, and any skill the creator wrote
|
|
43
|
-
* — is never opened.
|
|
55
|
+
* engineVersion field changes. Everything else on disk — src/ (bar the one world.json case next),
|
|
56
|
+
* game.json, package.json, GAME-DESIGN.md, CLAUDE.md, .gitignore, and any skill the creator wrote
|
|
57
|
+
* themselves — is never opened.
|
|
58
|
+
*
|
|
59
|
+
* `src/work/world.json` is opened for exactly one thing: the platform's own default voxel assets,
|
|
60
|
+
* scaffolded before engine 3.1056 as legacy JSON `.vxl` URLs, are repointed to their VXL3 files
|
|
61
|
+
* (nine known URLs, matched exactly; every other asset and field is left as found — see
|
|
62
|
+
* scaffold/legacy-default-assets.ts). Nothing the creator put there is touched.
|
|
44
63
|
*
|
|
45
64
|
* AGENTS.md is the one conditional case, and never a destructive one: it is refreshed only when it
|
|
46
65
|
* still hashes to what the CLI itself last wrote, and otherwise left untouched with a suggestion.
|
|
@@ -5,14 +5,20 @@ import { VENDORED_DIRS, PLATFORM_GENERATED_FILES, copyOptionalEngineEntries, cop
|
|
|
5
5
|
import { isEnvironmentName } from '../config/environments.js';
|
|
6
6
|
import { reconcileAgentsMd, AGENTS_MD_FILE } from './agents-md.js';
|
|
7
7
|
import { CLAUDE_SETTINGS_FILE, mergeReloadHook } from './claude-settings.js';
|
|
8
|
+
import { repointLegacyDefaultAssets } from './legacy-default-assets.js';
|
|
8
9
|
/**
|
|
9
10
|
* Refreshes the platform-owned parts of a scaffolded project in place, and nothing else. This is
|
|
10
11
|
* the file-boundary described in the task brief: `engine/` (every VENDORED_DIRS entry) and
|
|
11
12
|
* sw-cache-buster.js are wholesale-replaced, the config files AND SHIPPED SKILLS in
|
|
12
13
|
* PLATFORM_GENERATED_FILES are re-rendered, and bitmagic.json is read-modified-written so only its
|
|
13
|
-
* engineVersion field changes. Everything else on disk — src
|
|
14
|
-
* package.json, GAME-DESIGN.md, CLAUDE.md, .gitignore, and any skill the creator wrote
|
|
15
|
-
* — is never opened.
|
|
14
|
+
* engineVersion field changes. Everything else on disk — src/ (bar the one world.json case next),
|
|
15
|
+
* game.json, package.json, GAME-DESIGN.md, CLAUDE.md, .gitignore, and any skill the creator wrote
|
|
16
|
+
* themselves — is never opened.
|
|
17
|
+
*
|
|
18
|
+
* `src/work/world.json` is opened for exactly one thing: the platform's own default voxel assets,
|
|
19
|
+
* scaffolded before engine 3.1056 as legacy JSON `.vxl` URLs, are repointed to their VXL3 files
|
|
20
|
+
* (nine known URLs, matched exactly; every other asset and field is left as found — see
|
|
21
|
+
* scaffold/legacy-default-assets.ts). Nothing the creator put there is touched.
|
|
16
22
|
*
|
|
17
23
|
* AGENTS.md is the one conditional case, and never a destructive one: it is refreshed only when it
|
|
18
24
|
* still hashes to what the CLI itself last wrote, and otherwise left untouched with a suggestion.
|
|
@@ -77,6 +83,14 @@ export function upgradeProject(options) {
|
|
|
77
83
|
writeProjectFile(root, CLAUDE_SETTINGS_FILE, settings.contents);
|
|
78
84
|
replaced.push(CLAUDE_SETTINGS_FILE);
|
|
79
85
|
}
|
|
86
|
+
// The default trees and rocks a pre-3.1056 scaffold pointed at the legacy JSON files: swap the
|
|
87
|
+
// nine known URLs for the VXL3 ones. After the engine copy, since the engine that can now read
|
|
88
|
+
// both forms is what makes a partial swap safe; before bitmagic.json, so a project whose
|
|
89
|
+
// world.json is unreadable still gets its engine bump recorded (the repoint reports nothing).
|
|
90
|
+
const repoint = repointLegacyDefaultAssets(root);
|
|
91
|
+
if (repoint.repointed.length > 0) {
|
|
92
|
+
replaced.push('src/work/world.json');
|
|
93
|
+
}
|
|
80
94
|
// Read-modify-write, not re-rendered from renderBitmagicJson: re-rendering would discard any
|
|
81
95
|
// field a later CLI/engine version adds to the metadata that this version doesn't know about.
|
|
82
96
|
const bitmagicJsonPath = path.join(root, 'bitmagic.json');
|
|
@@ -113,6 +127,8 @@ export function upgradeProject(options) {
|
|
|
113
127
|
agentsMd,
|
|
114
128
|
...(settings.skipped === undefined ? {} : { claudeSettingsSkipped: settings.skipped }),
|
|
115
129
|
...(environmentPinned === undefined ? {} : { environmentPinned }),
|
|
130
|
+
legacyAssetsRepointed: repoint.repointed,
|
|
131
|
+
...(repoint.skipped === undefined ? {} : { legacyAssetsSkipped: repoint.skipped }),
|
|
116
132
|
};
|
|
117
133
|
}
|
|
118
134
|
//# sourceMappingURL=upgrade-project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-project.js","sourceRoot":"","sources":["../../src/scaffold/upgrade-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAwB,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"upgrade-project.js","sourceRoot":"","sources":["../../src/scaffold/upgrade-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAwB,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAuB,MAAM,4BAA4B,CAAC;AAmD7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,cAAc,CAAC,OAAuB;IACpD,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAC9E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAChB,6BAA6B,GAAG,kBAAkB,MAAM,yCAAyC,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,iGAAiG;IACjG,+FAA+F;IAC/F,mFAAmF;IACnF,gGAAgG;IAChG,gFAAgF;IAChF,yBAAyB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACzD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzB,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACtD,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,iGAAiG;IACjG,iGAAiG;IACjG,6FAA6F;IAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1G,MAAM,QAAQ,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC/B,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IAED,+FAA+F;IAC/F,+FAA+F;IAC/F,yFAAyF;IACzF,8FAA8F;IAC9F,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC;IAED,6FAA6F;IAC7F,8FAA8F;IAC9F,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAA4B,CAAC;IAC/F,MAAM,qBAAqB,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IAEnC,gGAAgG;IAChG,6FAA6F;IAC7F,iDAAiD;IACjD,MAAM,iBAAiB,GACrB,gBAAgB,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,IAAI,iBAAiB,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;IAE1E,+FAA+F;IAC/F,8EAA8E;IAC9E,EAAE;IACF,2FAA2F;IAC3F,gGAAgG;IAChG,iGAAiG;IACjG,gGAAgG;IAChG,yEAAyE;IACzE,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7G,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC;IACjF,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEpG,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE/B,OAAO;QACL,aAAa;QACb,qBAAqB;QACrB,QAAQ;QACR,QAAQ;QACR,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtF,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjE,qBAAqB,EAAE,OAAO,CAAC,SAAS;QACxC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitmagic/cli",
|
|
3
|
-
"version": "0.1.51
|
|
3
|
+
"version": "0.1.51",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Bitmagic Oy",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"fflate": "^0.8.2",
|
|
24
24
|
"playwright-core": "^1.59.1",
|
|
25
25
|
"tar": "^7.4.3",
|
|
26
|
-
"@bitmagic/
|
|
27
|
-
"@bitmagic/
|
|
28
|
-
"@bitmagic/world-forger": "0.1.11
|
|
26
|
+
"@bitmagic/animation-forger": "0.1.6",
|
|
27
|
+
"@bitmagic/asset-core": "0.2.6",
|
|
28
|
+
"@bitmagic/world-forger": "0.1.11"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@eslint/js": "^9.38.0",
|