@bitmagic/cli 0.1.56-dev.0 → 0.1.56-dev.1

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 (51) hide show
  1. package/dist/cli.js +15 -27
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/generate.d.ts +6 -9
  4. package/dist/commands/generate.js +31 -26
  5. package/dist/commands/generate.js.map +1 -1
  6. package/dist/commands/ios.js +25 -28
  7. package/dist/commands/ios.js.map +1 -1
  8. package/dist/commands/judge.d.ts +0 -2
  9. package/dist/commands/judge.js +6 -6
  10. package/dist/commands/judge.js.map +1 -1
  11. package/dist/commands/publish.js +6 -0
  12. package/dist/commands/publish.js.map +1 -1
  13. package/dist/commands/verify.js +11 -23
  14. package/dist/commands/verify.js.map +1 -1
  15. package/dist/generate/model.d.ts +2 -2
  16. package/dist/generate/model.js +19 -62
  17. package/dist/generate/model.js.map +1 -1
  18. package/dist/generate/prop.d.ts +37 -11
  19. package/dist/generate/prop.js +97 -105
  20. package/dist/generate/prop.js.map +1 -1
  21. package/dist/ios/app-config.js +4 -3
  22. package/dist/ios/app-config.js.map +1 -1
  23. package/dist/ios/collect-urls.js +25 -35
  24. package/dist/ios/collect-urls.js.map +1 -1
  25. package/dist/ios/icon.js +2 -5
  26. package/dist/ios/icon.js.map +1 -1
  27. package/dist/ios/local-server.d.ts +1 -1
  28. package/dist/ios/local-server.js +3 -3
  29. package/dist/ios/local-server.js.map +1 -1
  30. package/dist/ios/transform.js +1 -5
  31. package/dist/ios/transform.js.map +1 -1
  32. package/dist/ios/xcode-template.js +1 -1
  33. package/dist/ios/xcode-template.js.map +1 -1
  34. package/dist/publish/categories.d.ts +20 -0
  35. package/dist/publish/categories.js +50 -0
  36. package/dist/publish/categories.js.map +1 -0
  37. package/dist/publish/client.d.ts +7 -0
  38. package/dist/publish/client.js.map +1 -1
  39. package/dist/scaffold/project-files.js +6 -0
  40. package/dist/scaffold/project-files.js.map +1 -1
  41. package/dist/verify/browser.js +147 -168
  42. package/dist/verify/browser.js.map +1 -1
  43. package/dist/verify/check-options.d.ts +32 -0
  44. package/dist/verify/check-options.js +23 -0
  45. package/dist/verify/check-options.js.map +1 -0
  46. package/dist/verify/classify.js +2 -2
  47. package/dist/verify/classify.js.map +1 -1
  48. package/dist/verify/iterate.d.ts +2 -21
  49. package/dist/verify/iterate.js +3 -14
  50. package/dist/verify/iterate.js.map +1 -1
  51. package/package.json +4 -4
@@ -482,7 +482,7 @@ class GameViewController: UIViewController, WKNavigationDelegate {
482
482
  `;
483
483
  /** The Swift MIME dictionary, generated from the SAME table the validation server uses. */
484
484
  function swiftMimeEntries() {
485
- return MIME_TYPES
485
+ return [...MIME_TYPES]
486
486
  .map(([ext, mime]) => ` "${ext}": "${mime}",`)
487
487
  .join('\n');
488
488
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xcode-template.js","sourceRoot":"","sources":["../../src/ios/xcode-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xcode-template.js","sourceRoot":"","sources":["../../src/ios/xcode-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC,4CAA4C;AAC5C,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,EAAE,GAAG;IACT,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACd,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;IACxB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;IACrB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;IACrB,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;IACnB,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC;IACvB,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC;IAC1B,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;IACzB,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;IACzB,mBAAmB,EAAE,GAAG,CAAC,EAAE,CAAC;IAC5B,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;CACb,CAAC;AAEX,SAAS,OAAO,CAAC,MAAoB;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,MAAM,cAAc,GAAG;;oCAEW,MAAM,CAAC,WAAW,IAAI,IAAI;;;;;;;;8BAQhC,MAAM,CAAC,OAAO;uCACL,MAAM,CAAC,QAAQ;0BAC5B,MAAM,CAAC,WAAW;;;wCAGJ,CAAC;IAEvC,OAAO;;;;;;;;;MASH,EAAE,CAAC,gBAAgB,wEAAwE,EAAE,CAAC,cAAc;MAC5G,EAAE,CAAC,mBAAmB,+EAA+E,EAAE,CAAC,iBAAiB;MACzH,EAAE,CAAC,kBAAkB,iFAAiF,EAAE,CAAC,gBAAgB;MACzH,EAAE,CAAC,WAAW,wEAAwE,EAAE,CAAC,SAAS;MAClG,EAAE,CAAC,YAAY,OAAO,gBAAgB,qDAAqD,EAAE,CAAC,UAAU;;;;MAIxG,EAAE,CAAC,UAAU,6GAA6G,MAAM,CAAC,WAAW;MAC5I,EAAE,CAAC,cAAc;MACjB,EAAE,CAAC,iBAAiB;MACpB,EAAE,CAAC,gBAAgB;MACnB,EAAE,CAAC,YAAY;MACf,EAAE,CAAC,SAAS;MACZ,EAAE,CAAC,UAAU,OAAO,gBAAgB,qEAAqE,gBAAgB;;;;MAIzH,EAAE,CAAC,eAAe;;;;;;;;;;MAUlB,EAAE,CAAC,SAAS;;;UAGR,EAAE,CAAC,YAAY;UACf,EAAE,CAAC,YAAY;UACf,EAAE,CAAC,SAAS;UACZ,EAAE,CAAC,UAAU,OAAO,gBAAgB;UACpC,EAAE,CAAC,aAAa;;;;MAIpB,EAAE,CAAC,YAAY;;;UAGX,EAAE,CAAC,cAAc;UACjB,EAAE,CAAC,iBAAiB;UACpB,EAAE,CAAC,gBAAgB;;;;;MAKvB,EAAE,CAAC,aAAa;;;UAGZ,EAAE,CAAC,UAAU;;;;;;;;MAQjB,EAAE,CAAC,MAAM,OAAO,WAAW;;iCAEA,EAAE,CAAC,gBAAgB;;UAE1C,EAAE,CAAC,YAAY;UACf,EAAE,CAAC,eAAe;UAClB,EAAE,CAAC,cAAc;;;;;;eAMZ,WAAW;sBACJ,WAAW;2BACN,EAAE,CAAC,UAAU;;;;;;MAMlC,EAAE,CAAC,OAAO;;;;;;iCAMiB,EAAE,CAAC,iBAAiB;;;;;;;;oBAQjC,EAAE,CAAC,SAAS;0BACN,EAAE,CAAC,aAAa;;;;UAIhC,EAAE,CAAC,MAAM,OAAO,WAAW;;;;;;MAM/B,EAAE,CAAC,cAAc;;;;UAIb,EAAE,CAAC,WAAW;UACd,EAAE,CAAC,YAAY,OAAO,gBAAgB;;;;;;;MAO1C,EAAE,CAAC,YAAY;;;;UAIX,EAAE,CAAC,gBAAgB;UACnB,EAAE,CAAC,mBAAmB;UACtB,EAAE,CAAC,kBAAkB;;;;;;;MAOzB,EAAE,CAAC,YAAY;;;;;;;;;;;;;;;;;;;MAmBf,EAAE,CAAC,cAAc;;;;;;;;;;;;;;;;;;MAkBjB,EAAE,CAAC,WAAW;;;EAGlB,cAAc;;;;MAIV,EAAE,CAAC,aAAa;;;EAGpB,cAAc;;;;;;;MAOV,EAAE,CAAC,iBAAiB;;;UAGhB,EAAE,CAAC,YAAY;UACf,EAAE,CAAC,cAAc;;;;;MAKrB,EAAE,CAAC,gBAAgB;;;UAGf,EAAE,CAAC,WAAW;UACd,EAAE,CAAC,aAAa;;;;;;;iBAOT,EAAE,CAAC,OAAO;;CAE1B,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB;IACpC,OAAO;;;;;;;sCAO6B,EAAE,CAAC,MAAM;gCACf,MAAM,CAAC,WAAW;gCAClB,WAAW;;;;;;;;;;mCAUR,EAAE,CAAC,MAAM;6BACf,MAAM,CAAC,WAAW;6BAClB,WAAW;;;;;;;;CAQvC,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,WAAiD;IACjF,IAAI,WAAW,KAAK,UAAU;QAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC1E,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,qCAAqC,EAAE,sCAAsC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO;QACL,gCAAgC;QAChC,qCAAqC;QACrC,sCAAsC;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB;IACrC,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC;SACvD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,KAAK,WAAW,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;;;;YAOG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BvC,YAAY;;;;EAIZ,YAAY;;;;;;CAMb,CAAC;AACF,CAAC;AAED,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;CAoB1B,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsElC,CAAC;AAEF,2FAA2F;AAC3F,SAAS,gBAAgB;IACvB,OAAO,CAAC,GAAG,UAAU,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,GAAG,OAAO,IAAI,IAAI,CAAC;SACpD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;;;;;;;2BAOkB,UAAU;;;EAGnC,gBAAgB,EAAE;;;;;;;;;;;;;;;;;gEAiB4C,gBAAgB;;;;;;;;;;6CAUnC,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAuBzD,CAAC;AACF,CAAC;AAED,MAAM,sBAAsB,GAAG;;;;;;CAM9B,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;CAcxB,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;CAoBlC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAoB;IACxE,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,OAAe,EAAQ,EAAE;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,wCAAwC,WAAW,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACxF,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC;IACvD,KAAK,CAAC,kCAAkC,EAAE,0BAA0B,CAAC,CAAC;IACtE,KAAK,CAAC,oCAAoC,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACzE,KAAK,CAAC,+BAA+B,EAAE,sBAAsB,CAAC,CAAC;IAC/D,KAAK,CAAC,kDAAkD,EAAE,gBAAgB,CAAC,CAAC;IAC5E,KAAK,CAAC,yDAAyD,EAAE,0BAA0B,CAAC,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The creator's category tags for the game's portal listing, read out of the project's work
3
+ * copy (`worldProfileData.categories`) — the CLI lane's equivalent of the Creator publish
4
+ * dialog's category chips.
5
+ *
6
+ * Three distinct messages, mirroring the web lane's precedence exactly:
7
+ * - `undefined` (key not declared): the server decides — a game with no tags yet is
8
+ * AI-classified at publish; a game that already has tags keeps them.
9
+ * - a non-empty array: this exact set wins, replacing whatever is stored.
10
+ * - an empty array: an explicit "no tags" — clears stored tags AND suppresses the
11
+ * auto-classification a missing key would trigger.
12
+ *
13
+ * game.json wins over world.json for the same key, matching `readFaviconOverride` — the
14
+ * split-format rule means `worldProfileData` may live in either file.
15
+ *
16
+ * Best effort, like the favicon override: a missing, unreadable or malformed file means
17
+ * "not declared", never an error. Non-string and blank entries are dropped; the server caps
18
+ * the count and canonicalizes against the live taxonomy.
19
+ */
20
+ export declare function readCategories(root: string): string[] | undefined;
@@ -0,0 +1,50 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ /**
4
+ * The creator's category tags for the game's portal listing, read out of the project's work
5
+ * copy (`worldProfileData.categories`) — the CLI lane's equivalent of the Creator publish
6
+ * dialog's category chips.
7
+ *
8
+ * Three distinct messages, mirroring the web lane's precedence exactly:
9
+ * - `undefined` (key not declared): the server decides — a game with no tags yet is
10
+ * AI-classified at publish; a game that already has tags keeps them.
11
+ * - a non-empty array: this exact set wins, replacing whatever is stored.
12
+ * - an empty array: an explicit "no tags" — clears stored tags AND suppresses the
13
+ * auto-classification a missing key would trigger.
14
+ *
15
+ * game.json wins over world.json for the same key, matching `readFaviconOverride` — the
16
+ * split-format rule means `worldProfileData` may live in either file.
17
+ *
18
+ * Best effort, like the favicon override: a missing, unreadable or malformed file means
19
+ * "not declared", never an error. Non-string and blank entries are dropped; the server caps
20
+ * the count and canonicalizes against the live taxonomy.
21
+ */
22
+ export function readCategories(root) {
23
+ for (const file of ['game.json', 'world.json']) {
24
+ const declared = readDeclared(path.join(root, 'src', 'work', file));
25
+ if (declared !== undefined)
26
+ return declared;
27
+ }
28
+ return undefined;
29
+ }
30
+ function readDeclared(filePath) {
31
+ let parsed;
32
+ try {
33
+ if (!fs.existsSync(filePath))
34
+ return undefined;
35
+ parsed = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ const profile = parsed?.worldProfileData;
41
+ if (!profile || typeof profile !== 'object')
42
+ return undefined;
43
+ const value = profile.categories;
44
+ if (!Array.isArray(value))
45
+ return undefined;
46
+ return value
47
+ .filter((item) => typeof item === 'string' && item.trim().length > 0)
48
+ .map((item) => item.trim());
49
+ }
50
+ //# sourceMappingURL=categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/publish/categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAI,MAAgD,EAAE,gBAAgB,CAAC;IACpF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE9D,MAAM,KAAK,GAAI,OAAoC,CAAC,UAAU,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACpF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -136,6 +136,13 @@ export interface CompletePublishRequest {
136
136
  primaryPlatform?: 'desktop' | 'mobile';
137
137
  /** `null` clears the stored orientation — the project no longer declares one. */
138
138
  mobileOrientation?: 'portrait' | 'landscape' | null;
139
+ /**
140
+ * Category tags declared in the project's `worldProfileData.categories` — see
141
+ * `publish/categories.ts` for the three messages (absent / non-empty / explicit empty).
142
+ * Forward-compatible in the same sense as the platform fields: an absent key lets the
143
+ * server keep or auto-classify, and an older server ignores the unknown key.
144
+ */
145
+ categories?: string[];
139
146
  }
140
147
  /** Per-check outcome from the server's source audit. Advisory: none of it changes the exit code. */
141
148
  export interface SourceCheckResult {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/publish/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/publish/client.ts"],"names":[],"mappings":"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"}
@@ -986,6 +986,12 @@ have produced one at least once before \`--force\` has anything to work with.
986
986
  \`src/work/game.json\` (doing so by hand would change the fingerprint and invalidate the verify
987
987
  you just checked).
988
988
 
989
+ **Category tags are part of every publish.** bitmagic.ai files the game under content categories
990
+ ("Racing", "Puzzle", …); publish auto-classifies an untagged game from its name and description.
991
+ To choose them yourself, declare \`"categories": ["Racing", "Arcade"]\` in \`worldProfileData\` —
992
+ a declared set wins on every publish, and an explicit \`[]\` means "no tags" and suppresses the
993
+ auto-classify. A tracked-file edit: declare them BEFORE \`bitmagic verify\`, not after.
994
+
989
995
  If \`bitmagic publish\` exits non-zero, branch on the exit code rather than parsing the message:
990
996
 
991
997
  | Code | Meaning | Fix |
@@ -1 +1 @@
1
- {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AAKjC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;IAkBnC,CAAC;AAEL;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,kBAAkB,EAAE,QAAQ;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,kCAAkC,EAAE,QAAQ;IAC5C,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,4FAA4F;IAC5F,6FAA6F;IAC7F,4CAA4C;CACZ,CAAC;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,UAAU;IAC1B,8FAA8F;IAC9F,cAAc,EAAE,QAAQ;IACxB,4FAA4F;IAC5F,mFAAmF;IACnF,eAAe,EAAE,SAAS;IAC1B,UAAU,EAAE,QAAQ;IACpB,IAAI,EAAE,QAAQ;IACd,wBAAwB,EAAE,QAAQ;CACnC,CAAC;AAEF,qEAAqE;AACrE,SAAS,aAAa,CAAC,IAA+B;IACpD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,IAA+B;IAC7C,OAAO,kBAAkB,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAElC;;;GAGG;AACH,MAAM,kBAAkB,GAAG,yBAAyB,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;AAE7E;;;;GAIG;AACH,MAAM,YAAY,GAAG,GAAG,SAAS,SAAS,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG;IACjB,uBAAuB;IACvB,eAAe,YAAY,IAAI;IAC/B,6BAA6B,SAAS,2CAA2C;IACjF,yBAAyB,SAAS,uCAAuC;IACzE,2BAA2B,SAAS,wCAAwC;CAC7E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,2FAA2F;IAC3F,4FAA4F;IAC5F,4FAA4F;IAC5F,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,YAAY;IAC5B,WAAW,EAAE,GAAG,SAAS,MAAM;IAC/B,2FAA2F;IAC3F,6FAA6F;IAC7F,+FAA+F;IAC/F,4FAA4F;IAC5F,6FAA6F;IAC7F,6FAA6F;IAC7F,eAAe,EAAE,GAAG,kBAAkB,UAAU;IAChD,qBAAqB,EAAE,GAAG,kBAAkB,gBAAgB;IAC5D,QAAQ,EAAE,GAAG,SAAS,GAAG;IACzB,2BAA2B,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAChE,2BAA2B,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,kCAAkC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC9E,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;CACzB,CAAC;AAEF,sFAAsF;AACtF,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,UAAU,CAAC;QAChB,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,MAAM;SACZ;QACD,YAAY,EAAE,YAAY;QAC1B,eAAe,EAAE,gBAAgB;QACjC,2FAA2F;QAC3F,8FAA8F;QAC9F,6FAA6F;QAC7F,qFAAqF;QACrF,EAAE;QACF,8EAA8E;QAC9E,2FAA2F;QAC3F,yFAAyF;QACzF,IAAI,EAAE,EAAE,wBAAwB,EAAE,CAAC,SAAS,CAAC,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC;QAChB,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YACtB,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,aAAa,EAAE;YACtB,gBAAgB,EAAE,SAAS;YAC3B,MAAM,EAAE,IAAI;YACZ,wBAAwB,EAAE,IAAI;YAC9B,0BAA0B,EAAE,KAAK;YACjC,oBAAoB,EAAE,IAAI;YAC1B,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,OAAO;YACxB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,4BAA4B,EAAE,IAAI;YAClC,gCAAgC,EAAE,IAAI;YACtC,aAAa,EAAE,IAAI;YACnB,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,IAAI;YACf,wFAAwF;YACxF,yFAAyF;YACzF,wFAAwF;YACxF,0FAA0F;YAC1F,sFAAsF;YACtF,yFAAyF;YACzF,gFAAgF;YAChF,KAAK,EAAE,CAAC,eAAe,CAAC;YACxB,SAAS,EAAE,CAAC,cAAc,EAAE,qBAAqB,EAAE,wCAAwC,CAAC;SAC7F;QACD,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;QACpC,uFAAuF;QACvF,uFAAuF;QACvF,oFAAoF;QACpF,wFAAwF;QACxF,wDAAwD;QACxD,OAAO,EAAE;YACP,cAAc;YACd,MAAM;YACN,qBAAqB;YACrB,0BAA0B;YAC1B,kBAAkB;YAClB,uBAAuB;YACvB,oBAAoB;YACpB,2FAA2F;YAC3F,6FAA6F;YAC7F,2FAA2F;YAC3F,2FAA2F;YAC3F,gEAAgE;YAChE,wBAAwB;SACzB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,gBAAgB,GACpB,iGAAiG;IACjG,+FAA+F;IAC/F,+FAA+F;IAC/F,gGAAgG;IAChG,gGAAgG;IAChG,gGAAgG;IAChG,gGAAgG;IAChG,uEAAuE,CAAC;AAE1E,MAAM,UAAU,eAAe;IAC7B,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,YAAY,EAAE,CAAC;IACpD,6FAA6F;IAC7F,yFAAyF;IACzF,MAAM,gBAAgB,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACrE,0FAA0F;IAC1F,0FAA0F;IAC1F,wFAAwF;IACxF,2FAA2F;IAC3F,mDAAmD;IACnD,OAAO;;;;;;gBAMO,eAAe,uCAAuC,gBAAgB;;;;;;;;;;;;;;;;;;;;;EAqBpF,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;iCAG5B,gBAAgB;;;CAGhD,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB;IACzB,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,MAAM,GAAG,CAAC;SACrD,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;EAWP,kBAAkB,EAAE;;;;;;;CAOrB,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CACvC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAClF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,sBAAsB,EAAE;SACrC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;SAC1E,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;;;;;;;;;;;;;;;;EAmBP,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAC;AACF,CAAC;AAED,iGAAiG;AACjG,MAAM,6BAA6B,GAAG;;;kDAGY,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,+BAA+B,GAAG;;;;;2EAKmC,CAAC;AAE5E,oFAAoF;AACpF,MAAM,0BAA0B,GAAG;;;CAGlC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,mBAAmB,CAAC,IAA0B;IACrD,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK,CAAC;IAC3B,OAAO;;;;;;;;;;;;;EAaP,GAAG,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,wBAAwB,EAAE;;;;;;;;;;;;;;;;;EAiB9D,kBAAkB,EAAE;;;;;iGAK2E,GAAG,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,EAAE;;;;EAI1K,GAAG,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,+BAA+B;;;EAGrE,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE;iCACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAAwC;;;kBAGlE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;;;;;;CAMxD,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC;IAC/C,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AA6BD,MAAM,UAAU,kBAAkB,CAAC,QAAyB;IAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,sBAAsB,CAAC,WAAwC;IACtE,MAAM,IAAI,GACR,WAAW,KAAK,SAAS;QACvB,CAAC,CAAC;;;YAGI;QACN,CAAC,CAAC,4BAA4B,WAAW,+FAA+F,CAAC;IAE7I,OAAO;;;;;;EAMP,IAAI;;;;;;;;;wCASkC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAwC;IACrE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiLP,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwS3B,sBAAsB,CAAC,WAAW,CAAC;CACpC,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;EAoBP,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkH9B,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C/B,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2JR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+EP,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjC,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DR,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkER,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3B,OAAO;;EAEP,KAAK;QACH,CAAC,CAAC,8GAA8G;QAChH,CAAC,CAAC,0KAA0K;;;;EAI9K,KAAK,IAAI,iEAAiE;;;;;;;;;;EAU1E,0BAA0B;;;;;;;;;;;;CAY3B,CAAC;AACF,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;CAwBR,CAAC;AACF,CAAC"}
@@ -153,9 +153,7 @@ export class VerifyBrowserSession {
153
153
  (flag) => window[flag] === true, CONTEXT_LOST_FLAG);
154
154
  const renderer = options.requestedRenderer === undefined
155
155
  ? undefined
156
- : target === null
157
- ? { requested: options.requestedRenderer, rendererType: null, backend: null }
158
- : await probeRenderer(target, options.requestedRenderer);
156
+ : await probeRenderer(target, options.requestedRenderer);
159
157
  // The engine probes below belong to verify's questions only, and need something to probe:
160
158
  // no start interaction (publish's smoke check) or no frame leaves them unobserved.
161
159
  const engineTarget = options.startInteraction === undefined ? null : target;
@@ -279,43 +277,38 @@ const UNOBSERVED_PROBE = {
279
277
  */
280
278
  async function takeSettleSample(page, atMs, consoleLines) {
281
279
  const errorEventCount = consoleLines.filter((line) => line.startsWith('error:') || line.includes(RESPAWN_LINE)).length;
282
- try {
283
- const probed = await page.evaluate((flag) => {
284
- /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
285
- try {
286
- const w = window;
287
- const frameCount = typeof w[flag] === 'number' ? w[flag] : null;
288
- const template = w.gameTemplate;
289
- const engine = template?.getGameEngine?.();
290
- let gameState = null;
291
- let hasStarted = null;
292
- let playerY = null;
293
- if (engine) {
294
- const state = engine.gameStateManager?.getCurrentState?.();
295
- gameState = typeof state === 'string' ? state : null;
296
- const started = engine.gameStateManager?.hasStarted?.();
297
- hasStarted = typeof started === 'boolean' ? started : null;
298
- const player = typeof engine.getCurrentPlayer === 'function'
299
- ? engine.getCurrentPlayer()
300
- : null;
301
- const position = typeof player?.getPosition === 'function'
302
- ? player.getPosition()
303
- : player?.player?.position;
304
- const y = position?.y;
305
- playerY = typeof y === 'number' && Number.isFinite(y) ? y : null;
306
- }
307
- return { frameCount, gameState, hasStarted, playerY };
308
- }
309
- catch {
310
- return null;
280
+ const probed = await page.evaluate((flag) => {
281
+ /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
282
+ try {
283
+ const w = window;
284
+ const frameCount = typeof w[flag] === 'number' ? w[flag] : null;
285
+ const template = w.gameTemplate;
286
+ const engine = template?.getGameEngine?.();
287
+ let gameState = null;
288
+ let hasStarted = null;
289
+ let playerY = null;
290
+ if (engine) {
291
+ const state = engine.gameStateManager?.getCurrentState?.();
292
+ gameState = typeof state === 'string' ? state : null;
293
+ const started = engine.gameStateManager?.hasStarted?.();
294
+ hasStarted = typeof started === 'boolean' ? started : null;
295
+ const player = typeof engine.getCurrentPlayer === 'function'
296
+ ? engine.getCurrentPlayer()
297
+ : null;
298
+ const position = typeof player?.getPosition === 'function'
299
+ ? player.getPosition()
300
+ : player?.player?.position;
301
+ const y = position?.y;
302
+ playerY = typeof y === 'number' && Number.isFinite(y) ? y : null;
311
303
  }
312
- /* eslint-enable no-undef */
313
- }, FRAME_COUNT_FLAG);
314
- return { atMs, errorEventCount, ...(probed ?? UNOBSERVED_PROBE) };
315
- }
316
- catch {
317
- return { atMs, errorEventCount, ...UNOBSERVED_PROBE };
318
- }
304
+ return { frameCount, gameState, hasStarted, playerY };
305
+ }
306
+ catch {
307
+ return null;
308
+ }
309
+ /* eslint-enable no-undef */
310
+ }, FRAME_COUNT_FLAG).catch(() => null);
311
+ return { atMs, errorEventCount, ...(probed ?? UNOBSERVED_PROBE) };
319
312
  }
320
313
  /**
321
314
  * End-of-run engine state, read through the same debug handle as `probeRenderer` and under the
@@ -325,71 +318,65 @@ async function takeSettleSample(page, atMs, consoleLines) {
325
318
  * single evaluate cannot see time.
326
319
  */
327
320
  async function captureStateSnapshot(target, samples) {
328
- let probed;
329
- try {
330
- probed = await target.evaluate(() => {
331
- /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
332
- try {
333
- const w = window;
334
- const template = w.gameTemplate;
335
- const engine = template?.getGameEngine?.();
336
- if (!engine)
337
- return null;
338
- const state = engine.gameStateManager?.getCurrentState?.();
339
- const started = engine.gameStateManager?.hasStarted?.();
340
- const elapsed = typeof engine.getElapsedTime === 'function' ? engine.getElapsedTime() : null;
341
- const playerHandle = typeof engine.getCurrentPlayer === 'function'
342
- ? engine.getCurrentPlayer()
343
- : null;
344
- const position = typeof playerHandle?.getPosition === 'function'
345
- ? playerHandle.getPosition()
346
- : playerHandle?.player?.position;
347
- const p = position;
348
- const player = typeof p?.x === 'number' && typeof p?.y === 'number' && typeof p?.z === 'number'
349
- ? { x: p.x, y: p.y, z: p.z }
350
- : null;
351
- const stats = engine.physicsWorld?.getStats?.();
352
- const physics = typeof stats?.rigidBodyCount === 'number' && typeof stats?.colliderCount === 'number'
353
- ? { rigidBodyCount: stats.rigidBodyCount, colliderCount: stats.colliderCount }
354
- : null;
355
- let scene = null;
356
- if (engine.scene && typeof engine.scene.traverse === 'function') {
357
- let objects = 0;
358
- let meshes = 0;
359
- let lights = 0;
360
- engine.scene.traverse((object) => {
361
- objects++;
362
- const o = object;
363
- if (o.isMesh === true)
364
- meshes++;
365
- if (o.isLight === true)
366
- lights++;
367
- });
368
- scene = { objects, meshes, lights };
369
- }
370
- const registry = typeof engine.getNpcRegistry === 'function'
371
- ? engine.getNpcRegistry()
372
- : null;
373
- const count = registry?.getCount?.();
374
- return {
375
- gameState: typeof state === 'string' ? state : null,
376
- hasStarted: typeof started === 'boolean' ? started : null,
377
- elapsedTimeSeconds: typeof elapsed === 'number' && Number.isFinite(elapsed) ? elapsed : null,
378
- player,
379
- physics,
380
- scene,
381
- npcCount: typeof count === 'number' ? count : null,
382
- };
383
- }
384
- catch {
321
+ const probed = await target.evaluate(() => {
322
+ /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
323
+ try {
324
+ const w = window;
325
+ const template = w.gameTemplate;
326
+ const engine = template?.getGameEngine?.();
327
+ if (!engine)
385
328
  return null;
329
+ const state = engine.gameStateManager?.getCurrentState?.();
330
+ const started = engine.gameStateManager?.hasStarted?.();
331
+ const elapsed = typeof engine.getElapsedTime === 'function' ? engine.getElapsedTime() : null;
332
+ const playerHandle = typeof engine.getCurrentPlayer === 'function'
333
+ ? engine.getCurrentPlayer()
334
+ : null;
335
+ const position = typeof playerHandle?.getPosition === 'function'
336
+ ? playerHandle.getPosition()
337
+ : playerHandle?.player?.position;
338
+ const p = position;
339
+ const player = typeof p?.x === 'number' && typeof p?.y === 'number' && typeof p?.z === 'number'
340
+ ? { x: p.x, y: p.y, z: p.z }
341
+ : null;
342
+ const stats = engine.physicsWorld?.getStats?.();
343
+ const physics = typeof stats?.rigidBodyCount === 'number' && typeof stats?.colliderCount === 'number'
344
+ ? { rigidBodyCount: stats.rigidBodyCount, colliderCount: stats.colliderCount }
345
+ : null;
346
+ let scene = null;
347
+ if (engine.scene && typeof engine.scene.traverse === 'function') {
348
+ let objects = 0;
349
+ let meshes = 0;
350
+ let lights = 0;
351
+ engine.scene.traverse((object) => {
352
+ objects++;
353
+ const o = object;
354
+ if (o.isMesh === true)
355
+ meshes++;
356
+ if (o.isLight === true)
357
+ lights++;
358
+ });
359
+ scene = { objects, meshes, lights };
386
360
  }
387
- /* eslint-enable no-undef */
388
- });
389
- }
390
- catch {
391
- return null;
392
- }
361
+ const registry = typeof engine.getNpcRegistry === 'function'
362
+ ? engine.getNpcRegistry()
363
+ : null;
364
+ const count = registry?.getCount?.();
365
+ return {
366
+ gameState: typeof state === 'string' ? state : null,
367
+ hasStarted: typeof started === 'boolean' ? started : null,
368
+ elapsedTimeSeconds: typeof elapsed === 'number' && Number.isFinite(elapsed) ? elapsed : null,
369
+ player,
370
+ physics,
371
+ scene,
372
+ npcCount: typeof count === 'number' ? count : null,
373
+ };
374
+ }
375
+ catch {
376
+ return null;
377
+ }
378
+ /* eslint-enable no-undef */
379
+ }).catch(() => null);
393
380
  if (probed === null)
394
381
  return null;
395
382
  return {
@@ -405,7 +392,9 @@ async function captureStateSnapshot(target, samples) {
405
392
  * and 0 is reserved for a loop that is actually stalled — any observed frame reports at least 1.
406
393
  */
407
394
  function measureFps(samples) {
408
- const counted = samples.filter((sample) => sample.frameCount !== null).slice(-4);
395
+ const counted = samples
396
+ .filter((sample) => sample.frameCount !== null)
397
+ .slice(-4);
409
398
  if (counted.length < 2)
410
399
  return null;
411
400
  const last = counted[counted.length - 1];
@@ -425,60 +414,55 @@ function measureFps(samples) {
425
414
  * without the namespace, or a page too broken to answer) — never a failure by itself.
426
415
  */
427
416
  async function captureEventTrace(target) {
428
- try {
429
- return await target.evaluate(() => {
430
- /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
431
- try {
432
- const w = window;
433
- const debug = w.__bmDebug;
434
- return debug?.getEvents?.() ?? null;
435
- }
436
- catch {
437
- return null;
438
- }
439
- /* eslint-enable no-undef */
440
- });
441
- }
442
- catch {
443
- return null;
444
- }
417
+ return target.evaluate(() => {
418
+ /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
419
+ try {
420
+ const w = window;
421
+ const debug = w.__bmDebug;
422
+ return debug?.getEvents?.() ?? null;
423
+ }
424
+ catch {
425
+ return null;
426
+ }
427
+ /* eslint-enable no-undef */
428
+ }).catch(() => null);
445
429
  }
446
430
  /**
447
431
  * What renderer class the engine constructed and what backend is actually driving the canvas,
448
432
  * read from the live engine through the debug handle `GameTemplate` installs on `window`.
449
433
  *
450
- * Everything is feature-detected and the whole probe returns nulls on any throw: an older engine
451
- * without these getters, or a page too broken to answer, classifies as "not observed" — never as
452
- * a failure of the game. The one distinction that matters is `backend === 'webgl2'` when WebGPU
453
- * was requested: three's WebGPURenderer runs a WebGL2 fallback backend without erroring, and this
454
- * getter is the only place that state is visible.
434
+ * Everything is feature-detected and the whole probe returns nulls on any throw and on a null
435
+ * target, the missing-child-frame case: an older engine without these getters, or a page too
436
+ * broken to answer, classifies as "not observed", never as a failure of the game. The one
437
+ * distinction that matters is `backend === 'webgl2'` when WebGPU was requested: three's
438
+ * WebGPURenderer runs a WebGL2 fallback backend without erroring, and this getter is the only
439
+ * place that state is visible.
455
440
  */
456
441
  async function probeRenderer(target, requested) {
457
- try {
458
- const observed = await target.evaluate(() => {
459
- /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
460
- try {
461
- const template = window.gameTemplate;
462
- const engine = template?.getGameEngine?.();
463
- if (!engine)
464
- return { rendererType: null, backend: null };
465
- const rendererType = typeof engine.getRendererType === 'function' ? engine.getRendererType() : null;
466
- const backend = typeof engine.getActiveBackend === 'function' ? engine.getActiveBackend() : null;
467
- return {
468
- rendererType: typeof rendererType === 'string' ? rendererType : null,
469
- backend: typeof backend === 'string' ? backend : null,
470
- };
471
- }
472
- catch {
473
- return { rendererType: null, backend: null };
474
- }
475
- /* eslint-enable no-undef */
476
- });
477
- return { requested, ...observed };
478
- }
479
- catch {
480
- return { requested, rendererType: null, backend: null };
481
- }
442
+ const observed = target === null ? null : await target.evaluate(() => {
443
+ /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
444
+ try {
445
+ const template = window.gameTemplate;
446
+ const engine = template?.getGameEngine?.();
447
+ if (!engine)
448
+ return null;
449
+ const rendererType = typeof engine.getRendererType === 'function' ? engine.getRendererType() : null;
450
+ const backend = typeof engine.getActiveBackend === 'function' ? engine.getActiveBackend() : null;
451
+ return {
452
+ rendererType: typeof rendererType === 'string' ? rendererType : null,
453
+ backend: typeof backend === 'string' ? backend : null,
454
+ };
455
+ }
456
+ catch {
457
+ return null;
458
+ }
459
+ /* eslint-enable no-undef */
460
+ }).catch(() => null);
461
+ return {
462
+ requested,
463
+ rendererType: observed?.rendererType ?? null,
464
+ backend: observed?.backend ?? null,
465
+ };
482
466
  }
483
467
  /** Window flag the init script below sets when the page loses its WebGL context. */
484
468
  const CONTEXT_LOST_FLAG = '__bitmagicWebglContextLost';
@@ -689,24 +673,19 @@ tap) {
689
673
  * probe here.
690
674
  */
691
675
  async function countTouchAffordances(page) {
692
- try {
693
- return await page.evaluate(() => {
694
- /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
695
- try {
696
- return {
697
- joysticks: document.querySelectorAll('.hud-mobile-joystick-outer').length,
698
- buttons: document.querySelectorAll('.hud-mobile-button').length,
699
- };
700
- }
701
- catch {
702
- return null;
703
- }
704
- /* eslint-enable no-undef */
705
- });
706
- }
707
- catch {
708
- return null;
709
- }
676
+ return page.evaluate(() => {
677
+ /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
678
+ try {
679
+ return {
680
+ joysticks: document.querySelectorAll('.hud-mobile-joystick-outer').length,
681
+ buttons: document.querySelectorAll('.hud-mobile-button').length,
682
+ };
683
+ }
684
+ catch {
685
+ return null;
686
+ }
687
+ /* eslint-enable no-undef */
688
+ }).catch(() => null);
710
689
  }
711
690
  /**
712
691
  * Whether the engine's start menu overlay is still displayed. After a successful start the