@dreamboard-games/sdk 0.4.0-alpha.7 → 0.4.0-alpha.9

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 (112) hide show
  1. package/REFERENCE.md +1292 -287
  2. package/dist/authoring/index.d.ts +4 -9
  3. package/dist/authoring/index.js +11 -547
  4. package/dist/authoring/index.js.map +1 -1
  5. package/dist/authoring-compiler.d.ts +27 -0
  6. package/dist/authoring-compiler.js +12 -0
  7. package/dist/authoring-compiler.js.map +1 -0
  8. package/dist/authoring-materialize-cli.d.ts +1 -0
  9. package/dist/authoring-materialize-cli.js +46 -0
  10. package/dist/authoring-materialize-cli.js.map +1 -0
  11. package/dist/browser-interaction.d.ts +1 -1
  12. package/dist/{chunk-TGMXBRKY.js → chunk-3PFDHTR7.js} +19 -7
  13. package/dist/chunk-3PFDHTR7.js.map +1 -0
  14. package/dist/chunk-45P5CEGH.js +176 -0
  15. package/dist/chunk-45P5CEGH.js.map +1 -0
  16. package/dist/chunk-5XTAQ4EQ.js +32 -0
  17. package/dist/chunk-5XTAQ4EQ.js.map +1 -0
  18. package/dist/chunk-7ADPYKFT.js +532 -0
  19. package/dist/chunk-7ADPYKFT.js.map +1 -0
  20. package/dist/{chunk-RKGJ64UN.js → chunk-BUOODBVO.js} +2 -2
  21. package/dist/{chunk-VLG4YST5.js → chunk-GMOBG7Y7.js} +4 -4
  22. package/dist/{chunk-Q322XCY2.js → chunk-JRGP6W4V.js} +3 -3
  23. package/dist/chunk-L3W2FPRQ.js +1793 -0
  24. package/dist/chunk-L3W2FPRQ.js.map +1 -0
  25. package/dist/{chunk-3QIZKXJ2.js → chunk-NGYFBNBP.js} +3 -3
  26. package/dist/chunk-P6IJ5YVY.js +154 -0
  27. package/dist/chunk-P6IJ5YVY.js.map +1 -0
  28. package/dist/{chunk-5IHU5CUK.js → chunk-QQNL4WTX.js} +25 -22
  29. package/dist/chunk-QQNL4WTX.js.map +1 -0
  30. package/dist/{chunk-52DH7VQF.js → chunk-SACZWUA6.js} +143 -47
  31. package/dist/chunk-SACZWUA6.js.map +1 -0
  32. package/dist/{chunk-KYEWGZ2Y.js → chunk-SFOAY5H4.js} +2 -2
  33. package/dist/{chunk-KYEWGZ2Y.js.map → chunk-SFOAY5H4.js.map} +1 -1
  34. package/dist/chunk-UNVCT5Z7.js +73 -0
  35. package/dist/chunk-UNVCT5Z7.js.map +1 -0
  36. package/dist/{chunk-NO537WSS.js → chunk-WDR7SKBM.js} +2 -2
  37. package/dist/chunk-XDGRC6OR.js +7039 -0
  38. package/dist/chunk-XDGRC6OR.js.map +1 -0
  39. package/dist/chunk-XLHLFTLI.js +399 -0
  40. package/dist/chunk-XLHLFTLI.js.map +1 -0
  41. package/dist/{chunk-B2YBS3SG.js → chunk-YNW3KBDE.js} +41 -13
  42. package/dist/chunk-YNW3KBDE.js.map +1 -0
  43. package/dist/codegen.js +1 -1
  44. package/dist/{components-BTwSIjXj.d.ts → components-BPzsSRs8.d.ts} +1 -1
  45. package/dist/definitions-0kjPV9wh.d.ts +294 -0
  46. package/dist/{diagnostics-1BWjRo6-.d.ts → diagnostics-DIi3ina7.d.ts} +2 -1
  47. package/dist/{index-CFTjJIXd.d.ts → index-CWzWpQzM.d.ts} +1 -1
  48. package/dist/{index.d-DMASeF6M.d.ts → index.d-C7Ztirg6.d.ts} +234 -5
  49. package/dist/index.js +2 -2
  50. package/dist/package-set.d.ts +2 -2
  51. package/dist/package-set.js +2 -2
  52. package/dist/{protocol-835hEGne.d.ts → protocol-B2LWcqB4.d.ts} +14 -0
  53. package/dist/reducer/advanced.d.ts +4 -4
  54. package/dist/reducer/advanced.js +7 -26
  55. package/dist/reducer/advanced.js.map +1 -1
  56. package/dist/reducer-contract.d.ts +1 -1
  57. package/dist/reducer-contract.js +2 -2
  58. package/dist/reducer.d.ts +37 -28
  59. package/dist/reducer.js +43 -6018
  60. package/dist/reducer.js.map +1 -1
  61. package/dist/reference-game-compiler.d.ts +45 -0
  62. package/dist/reference-game-compiler.js +25 -0
  63. package/dist/reference-game-compiler.js.map +1 -0
  64. package/dist/reference-game-source-manifest-cli.d.ts +1 -0
  65. package/dist/reference-game-source-manifest-cli.js +84 -0
  66. package/dist/reference-game-source-manifest-cli.js.map +1 -0
  67. package/dist/reference-games/index.d.ts +7 -217
  68. package/dist/reference-games/index.js +28 -208
  69. package/dist/reference-games/index.js.map +1 -1
  70. package/dist/runtime/primitives.d.ts +3 -3
  71. package/dist/runtime/primitives.js +3 -3
  72. package/dist/runtime/runtime-api.d.ts +1 -1
  73. package/dist/runtime/workspace-contract.d.ts +4 -4
  74. package/dist/runtime/workspace-contract.js +4 -4
  75. package/dist/{runtime-Dkfm1x2r.d.ts → runtime-B_w9AO2n.d.ts} +60 -5
  76. package/dist/{runtime-api-C6aWo9c0.d.ts → runtime-api-xCWLMQRT.d.ts} +2 -0
  77. package/dist/runtime.d.ts +7 -7
  78. package/dist/runtime.js +13 -13
  79. package/dist/schema-9jZzlEWZ.d.ts +220 -0
  80. package/dist/{stale-contract-artifact-error-C5AaZPJ8.d.ts → stale-contract-artifact-error-XLaweZtF.d.ts} +1 -1
  81. package/dist/testing-compiler.d.ts +36 -0
  82. package/dist/testing-compiler.js +236 -0
  83. package/dist/testing-compiler.js.map +1 -0
  84. package/dist/testing-runtime.d.ts +97 -21
  85. package/dist/testing-runtime.js +154 -95
  86. package/dist/testing-runtime.js.map +1 -1
  87. package/dist/testing.d.ts +178 -60
  88. package/dist/testing.js +641 -26
  89. package/dist/testing.js.map +1 -1
  90. package/dist/types-Bvptkukh.d.ts +122 -0
  91. package/dist/{types-aI4V9CWe.d.ts → types-_zfC_7CD.d.ts} +1 -1
  92. package/dist/types.d.ts +4 -0
  93. package/dist/ui/components.d.ts +2 -2
  94. package/dist/ui/plugin-styles.css +1 -1
  95. package/dist/{ui-contract-Ue6SywvO.d.ts → ui-contract-CUC7Lyoc.d.ts} +1 -1
  96. package/dist/ui.d.ts +3 -3
  97. package/dist/{views-32rSsfeU.d.ts → views-DE2eZxPz.d.ts} +42 -13
  98. package/package.json +22 -3
  99. package/dist/chunk-3OZMHZK3.js +0 -40
  100. package/dist/chunk-3OZMHZK3.js.map +0 -1
  101. package/dist/chunk-52DH7VQF.js.map +0 -1
  102. package/dist/chunk-5IHU5CUK.js.map +0 -1
  103. package/dist/chunk-B2YBS3SG.js.map +0 -1
  104. package/dist/chunk-IU6KGPY7.js +0 -659
  105. package/dist/chunk-IU6KGPY7.js.map +0 -1
  106. package/dist/chunk-TGMXBRKY.js.map +0 -1
  107. package/dist/types-DcADVHe9.d.ts +0 -192
  108. /package/dist/{chunk-RKGJ64UN.js.map → chunk-BUOODBVO.js.map} +0 -0
  109. /package/dist/{chunk-VLG4YST5.js.map → chunk-GMOBG7Y7.js.map} +0 -0
  110. /package/dist/{chunk-Q322XCY2.js.map → chunk-JRGP6W4V.js.map} +0 -0
  111. /package/dist/{chunk-3QIZKXJ2.js.map → chunk-NGYFBNBP.js.map} +0 -0
  112. /package/dist/{chunk-NO537WSS.js.map → chunk-WDR7SKBM.js.map} +0 -0
@@ -0,0 +1,45 @@
1
+ import { k as ReferenceGameSourceProvenance, h as ReferenceGameSourceManifest } from './schema-9jZzlEWZ.js';
2
+ import 'zod';
3
+
4
+ declare const CANONICAL_REFERENCE_GAME_IDS: readonly string[];
5
+
6
+ type ReferenceGameSourceInventoryPolicy = {
7
+ readonly schemaVersion: 1;
8
+ readonly workspaceOwnershipVersion: number;
9
+ readonly excludedGameRelativePaths: readonly string[];
10
+ readonly excludedGameRelativePrefixes: readonly string[];
11
+ };
12
+
13
+ type ReferenceGameSourcePathClass =
14
+ | "included"
15
+ | "workspace-generated"
16
+ | "test-generated"
17
+ | "test-base"
18
+ | "obsolete-screenshot"
19
+ | "derived-output";
20
+
21
+ declare function referenceGamePathIdentity(repositoryPath: string): {
22
+ readonly gameId: string;
23
+ readonly relativePath: string;
24
+ } | null;
25
+
26
+ declare const REFERENCE_GAME_SOURCE_INVENTORY_POLICY: ReferenceGameSourceInventoryPolicy;
27
+
28
+ declare function classifyReferenceGameSourcePath(repositoryPath: string): ReferenceGameSourcePathClass;
29
+ declare function isReferenceGameSourceObject(repositoryPath: string): boolean;
30
+ declare function shouldDescendIntoReferenceGameDirectory(repositoryPath: string): boolean;
31
+
32
+ declare function collectReferenceGameSourceManifest(options: {
33
+ readonly sourceRoot: string;
34
+ readonly provenance: ReferenceGameSourceProvenance;
35
+ }): Promise<ReferenceGameSourceManifest>;
36
+ declare function collectReferenceGameSourceObjects(options: {
37
+ readonly referenceGamesRoot: string;
38
+ readonly sourceRoot: string;
39
+ }): Promise<Array<{
40
+ readonly path: string;
41
+ readonly sha256: string;
42
+ readonly byteLength: number;
43
+ }>>;
44
+
45
+ export { CANONICAL_REFERENCE_GAME_IDS, REFERENCE_GAME_SOURCE_INVENTORY_POLICY, type ReferenceGameSourcePathClass, classifyReferenceGameSourcePath, collectReferenceGameSourceManifest, collectReferenceGameSourceObjects, isReferenceGameSourceObject, referenceGamePathIdentity, shouldDescendIntoReferenceGameDirectory };
@@ -0,0 +1,25 @@
1
+ import {
2
+ CANONICAL_REFERENCE_GAME_IDS,
3
+ REFERENCE_GAME_SOURCE_INVENTORY_POLICY,
4
+ classifyReferenceGameSourcePath,
5
+ collectReferenceGameSourceManifest,
6
+ collectReferenceGameSourceObjects,
7
+ isReferenceGameSourceObject,
8
+ referenceGamePathIdentity,
9
+ shouldDescendIntoReferenceGameDirectory
10
+ } from "./chunk-XLHLFTLI.js";
11
+ import "./chunk-45P5CEGH.js";
12
+ import "./chunk-UNVCT5Z7.js";
13
+ import "./chunk-SACZWUA6.js";
14
+ import "./chunk-PZ5AY32C.js";
15
+ export {
16
+ CANONICAL_REFERENCE_GAME_IDS,
17
+ REFERENCE_GAME_SOURCE_INVENTORY_POLICY,
18
+ classifyReferenceGameSourcePath,
19
+ collectReferenceGameSourceManifest,
20
+ collectReferenceGameSourceObjects,
21
+ isReferenceGameSourceObject,
22
+ referenceGamePathIdentity,
23
+ shouldDescendIntoReferenceGameDirectory
24
+ };
25
+ //# sourceMappingURL=reference-game-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ collectReferenceGameSourceManifest
4
+ } from "./chunk-XLHLFTLI.js";
5
+ import "./chunk-45P5CEGH.js";
6
+ import "./chunk-UNVCT5Z7.js";
7
+ import "./chunk-SACZWUA6.js";
8
+ import "./chunk-PZ5AY32C.js";
9
+
10
+ // src/reference-game-source-manifest-cli.ts
11
+ import { writeFile } from "fs/promises";
12
+ import path from "path";
13
+ var options = parseArgs(process.argv.slice(2));
14
+ var manifest = await collectReferenceGameSourceManifest(options);
15
+ var serialized = `${JSON.stringify(manifest, null, 2)}
16
+ `;
17
+ if (options.out) {
18
+ await writeFile(path.resolve(options.out), serialized);
19
+ } else {
20
+ process.stdout.write(serialized);
21
+ }
22
+ function parseArgs(argv) {
23
+ let sourceRoot;
24
+ let out;
25
+ let revision;
26
+ let repository;
27
+ let worktree = false;
28
+ for (let index = 0; index < argv.length; index += 1) {
29
+ const arg = argv[index];
30
+ if (arg === "--source-root") {
31
+ sourceRoot = argv[index + 1];
32
+ index += 1;
33
+ continue;
34
+ }
35
+ if (arg === "--out") {
36
+ out = argv[index + 1];
37
+ index += 1;
38
+ continue;
39
+ }
40
+ if (arg === "--revision") {
41
+ revision = argv[index + 1];
42
+ index += 1;
43
+ continue;
44
+ }
45
+ if (arg === "--repository") {
46
+ repository = argv[index + 1];
47
+ index += 1;
48
+ continue;
49
+ }
50
+ if (arg === "--worktree") {
51
+ worktree = true;
52
+ continue;
53
+ }
54
+ throw new Error(`Unknown argument '${arg}'.`);
55
+ }
56
+ if (!sourceRoot) throw new Error("--source-root is required.");
57
+ if (worktree && (revision || repository)) {
58
+ throw new Error("--worktree cannot be combined with Git provenance.");
59
+ }
60
+ let provenance;
61
+ if (worktree) {
62
+ provenance = { kind: "worktree" };
63
+ } else {
64
+ if (!revision || !repository) {
65
+ throw new Error(
66
+ "Provide --worktree or both --repository and --revision."
67
+ );
68
+ }
69
+ if (repository !== "dreamboard-games/dreamboard-sdk") {
70
+ throw new Error("--repository must be dreamboard-games/dreamboard-sdk.");
71
+ }
72
+ provenance = {
73
+ kind: "git",
74
+ repository: "dreamboard-games/dreamboard-sdk",
75
+ revision
76
+ };
77
+ }
78
+ return {
79
+ sourceRoot,
80
+ provenance,
81
+ ...out === void 0 ? {} : { out }
82
+ };
83
+ }
84
+ //# sourceMappingURL=reference-game-source-manifest-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/reference-game-source-manifest-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { collectReferenceGameSourceManifest } from \"./reference-games/source-collector.js\";\nimport type { ReferenceGameSourceProvenance } from \"./reference-games/schema.js\";\n\nconst options = parseArgs(process.argv.slice(2));\nconst manifest = await collectReferenceGameSourceManifest(options);\nconst serialized = `${JSON.stringify(manifest, null, 2)}\\n`;\nif (options.out) {\n await writeFile(path.resolve(options.out), serialized);\n} else {\n process.stdout.write(serialized);\n}\n\nfunction parseArgs(argv: readonly string[]): {\n readonly sourceRoot: string;\n readonly provenance: ReferenceGameSourceProvenance;\n readonly out?: string;\n} {\n let sourceRoot: string | undefined;\n let out: string | undefined;\n let revision: string | undefined;\n let repository: string | undefined;\n let worktree = false;\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n if (arg === \"--source-root\") {\n sourceRoot = argv[index + 1];\n index += 1;\n continue;\n }\n if (arg === \"--out\") {\n out = argv[index + 1];\n index += 1;\n continue;\n }\n if (arg === \"--revision\") {\n revision = argv[index + 1];\n index += 1;\n continue;\n }\n if (arg === \"--repository\") {\n repository = argv[index + 1];\n index += 1;\n continue;\n }\n if (arg === \"--worktree\") {\n worktree = true;\n continue;\n }\n throw new Error(`Unknown argument '${arg}'.`);\n }\n if (!sourceRoot) throw new Error(\"--source-root is required.\");\n if (worktree && (revision || repository)) {\n throw new Error(\"--worktree cannot be combined with Git provenance.\");\n }\n let provenance: ReferenceGameSourceProvenance;\n if (worktree) {\n provenance = { kind: \"worktree\" };\n } else {\n if (!revision || !repository) {\n throw new Error(\n \"Provide --worktree or both --repository and --revision.\",\n );\n }\n if (repository !== \"dreamboard-games/dreamboard-sdk\") {\n throw new Error(\"--repository must be dreamboard-games/dreamboard-sdk.\");\n }\n provenance = {\n kind: \"git\",\n repository: \"dreamboard-games/dreamboard-sdk\",\n revision,\n };\n }\n return {\n sourceRoot,\n provenance,\n ...(out === undefined ? {} : { out }),\n };\n}\n"],"mappings":";;;;;;;;;;AACA,SAAS,iBAAiB;AAC1B,OAAO,UAAU;AAKjB,IAAM,UAAU,UAAU,QAAQ,KAAK,MAAM,CAAC,CAAC;AAC/C,IAAM,WAAW,MAAM,mCAAmC,OAAO;AACjE,IAAM,aAAa,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA;AACvD,IAAI,QAAQ,KAAK;AACf,QAAM,UAAU,KAAK,QAAQ,QAAQ,GAAG,GAAG,UAAU;AACvD,OAAO;AACL,UAAQ,OAAO,MAAM,UAAU;AACjC;AAEA,SAAS,UAAU,MAIjB;AACA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW;AACf,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,MAAM,KAAK,KAAK;AACtB,QAAI,QAAQ,iBAAiB;AAC3B,mBAAa,KAAK,QAAQ,CAAC;AAC3B,eAAS;AACT;AAAA,IACF;AACA,QAAI,QAAQ,SAAS;AACnB,YAAM,KAAK,QAAQ,CAAC;AACpB,eAAS;AACT;AAAA,IACF;AACA,QAAI,QAAQ,cAAc;AACxB,iBAAW,KAAK,QAAQ,CAAC;AACzB,eAAS;AACT;AAAA,IACF;AACA,QAAI,QAAQ,gBAAgB;AAC1B,mBAAa,KAAK,QAAQ,CAAC;AAC3B,eAAS;AACT;AAAA,IACF;AACA,QAAI,QAAQ,cAAc;AACxB,iBAAW;AACX;AAAA,IACF;AACA,UAAM,IAAI,MAAM,qBAAqB,GAAG,IAAI;AAAA,EAC9C;AACA,MAAI,CAAC,WAAY,OAAM,IAAI,MAAM,4BAA4B;AAC7D,MAAI,aAAa,YAAY,aAAa;AACxC,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,MAAI;AACJ,MAAI,UAAU;AACZ,iBAAa,EAAE,MAAM,WAAW;AAAA,EAClC,OAAO;AACL,QAAI,CAAC,YAAY,CAAC,YAAY;AAC5B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,QAAI,eAAe,mCAAmC;AACpD,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AACA,iBAAa;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAI,QAAQ,SAAY,CAAC,IAAI,EAAE,IAAI;AAAA,EACrC;AACF;","names":[]}
@@ -1,223 +1,13 @@
1
- import { z } from 'zod';
2
-
3
- declare const REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION = 2;
4
- declare const REFERENCE_GAME_MANIFEST_SCHEMA_VERSION = 3;
5
- declare const referenceGameSha256DigestSchema: z.ZodString;
6
- declare const referenceGameSourceObjectSchema: z.ZodObject<{
7
- path: z.ZodString;
8
- sha256: z.ZodString;
9
- byteLength: z.ZodNumber;
10
- }, z.core.$strict>;
11
- declare const referenceGameSourceEntrySchema: z.ZodObject<{
12
- id: z.ZodString;
13
- root: z.ZodString;
14
- sourceSha256: z.ZodString;
15
- packageJsonSha256: z.ZodString;
16
- lockfileSha256: z.ZodString;
17
- sdkSpecifier: z.ZodString;
18
- manifest: z.ZodString;
19
- reducer: z.ZodString;
20
- ui: z.ZodString;
21
- behaviorScenarios: z.ZodArray<z.ZodString>;
22
- uiScenarios: z.ZodArray<z.ZodString>;
23
- mechanics: z.ZodArray<z.ZodString>;
24
- readFirst: z.ZodArray<z.ZodString>;
25
- }, z.core.$strict>;
26
- declare const referenceGameSourceManifestPayloadSchema: z.ZodObject<{
27
- games: z.ZodArray<z.ZodObject<{
28
- id: z.ZodString;
29
- root: z.ZodString;
30
- sourceSha256: z.ZodString;
31
- packageJsonSha256: z.ZodString;
32
- lockfileSha256: z.ZodString;
33
- sdkSpecifier: z.ZodString;
34
- manifest: z.ZodString;
35
- reducer: z.ZodString;
36
- ui: z.ZodString;
37
- behaviorScenarios: z.ZodArray<z.ZodString>;
38
- uiScenarios: z.ZodArray<z.ZodString>;
39
- mechanics: z.ZodArray<z.ZodString>;
40
- readFirst: z.ZodArray<z.ZodString>;
41
- }, z.core.$strict>>;
42
- objects: z.ZodArray<z.ZodObject<{
43
- path: z.ZodString;
44
- sha256: z.ZodString;
45
- byteLength: z.ZodNumber;
46
- }, z.core.$strict>>;
47
- }, z.core.$strict>;
48
- declare const referenceGameSourceProvenanceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
49
- kind: z.ZodLiteral<"worktree">;
50
- }, z.core.$strict>, z.ZodObject<{
51
- kind: z.ZodLiteral<"git">;
52
- repository: z.ZodLiteral<"dreamboard-games/dreamboard-sdk">;
53
- revision: z.ZodString;
54
- }, z.core.$strict>], "kind">;
55
- declare const referenceGameSourceManifestSchema: z.ZodObject<{
56
- schemaVersion: z.ZodLiteral<2>;
57
- manifestType: z.ZodLiteral<"dreamboard.reference-game-source">;
58
- bundleDigest: z.ZodString;
59
- payload: z.ZodObject<{
60
- games: z.ZodArray<z.ZodObject<{
61
- id: z.ZodString;
62
- root: z.ZodString;
63
- sourceSha256: z.ZodString;
64
- packageJsonSha256: z.ZodString;
65
- lockfileSha256: z.ZodString;
66
- sdkSpecifier: z.ZodString;
67
- manifest: z.ZodString;
68
- reducer: z.ZodString;
69
- ui: z.ZodString;
70
- behaviorScenarios: z.ZodArray<z.ZodString>;
71
- uiScenarios: z.ZodArray<z.ZodString>;
72
- mechanics: z.ZodArray<z.ZodString>;
73
- readFirst: z.ZodArray<z.ZodString>;
74
- }, z.core.$strict>>;
75
- objects: z.ZodArray<z.ZodObject<{
76
- path: z.ZodString;
77
- sha256: z.ZodString;
78
- byteLength: z.ZodNumber;
79
- }, z.core.$strict>>;
80
- }, z.core.$strict>;
81
- provenance: z.ZodDiscriminatedUnion<[z.ZodObject<{
82
- kind: z.ZodLiteral<"worktree">;
83
- }, z.core.$strict>, z.ZodObject<{
84
- kind: z.ZodLiteral<"git">;
85
- repository: z.ZodLiteral<"dreamboard-games/dreamboard-sdk">;
86
- revision: z.ZodString;
87
- }, z.core.$strict>], "kind">;
88
- }, z.core.$strict>;
89
- declare const referenceGameWorkspaceSchema: z.ZodObject<{
90
- manifest: z.ZodString;
91
- reducer: z.ZodString;
92
- ui: z.ZodString;
93
- behaviorScenarios: z.ZodArray<z.ZodString>;
94
- uiScenarios: z.ZodArray<z.ZodString>;
95
- }, z.core.$strict>;
96
- declare const referenceGameTeachingSchema: z.ZodObject<{
97
- whatThisTeaches: z.ZodArray<z.ZodString>;
98
- whenToCopyThisPattern: z.ZodArray<z.ZodString>;
99
- readFirst: z.ZodArray<z.ZodString>;
100
- }, z.core.$strict>;
101
- declare const referenceGameDemoReleaseSchema: z.ZodObject<{
102
- slug: z.ZodString;
103
- name: z.ZodString;
104
- description: z.ZodString;
105
- overview: z.ZodString;
106
- creator: z.ZodString;
107
- minPlayers: z.ZodNumber;
108
- maxPlayers: z.ZodNumber;
109
- playTimeMinMinutes: z.ZodNumber;
110
- playTimeMaxMinutes: z.ZodNumber;
111
- difficulty: z.ZodNumber;
112
- mechanics: z.ZodArray<z.ZodString>;
113
- categories: z.ZodArray<z.ZodString>;
114
- heroImageUrl: z.ZodString;
115
- estimatedMinutes: z.ZodNumber;
116
- demoPlayerCount: z.ZodNumber;
117
- screenshot: z.ZodObject<{
118
- presets: z.ZodRecord<z.ZodString, z.ZodObject<{
119
- viewport: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
120
- theme: z.ZodString;
121
- stagePadding: z.ZodNumber;
122
- frame: z.ZodString;
123
- }, z.core.$strict>>;
124
- }, z.core.$strict>;
125
- }, z.core.$strict>;
126
- declare const referenceGameRightsSchema: z.ZodObject<{
127
- mechanicsProvenance: z.ZodString;
128
- sourceCode: z.ZodString;
129
- codeLicense: z.ZodString;
130
- ruleText: z.ZodString;
131
- artwork: z.ZodString;
132
- assetLicenseManifest: z.ZodString;
133
- thirdPartyMarks: z.ZodArray<z.ZodString>;
134
- reviewStatus: z.ZodLiteral<"approved">;
135
- reviewedBy: z.ZodString;
136
- reviewedAt: z.ZodString;
137
- }, z.core.$strict>;
138
- declare const referenceGameSdkPolicySchema: z.ZodObject<{
139
- dependency: z.ZodLiteral<"@dreamboard-games/sdk">;
140
- versionPolicy: z.ZodLiteral<"exact">;
141
- }, z.core.$strict>;
142
- declare const referenceGameManifestV3Schema: z.ZodObject<{
143
- schemaVersion: z.ZodLiteral<3>;
144
- id: z.ZodString;
145
- displayName: z.ZodString;
146
- workspace: z.ZodObject<{
147
- manifest: z.ZodString;
148
- reducer: z.ZodString;
149
- ui: z.ZodString;
150
- behaviorScenarios: z.ZodArray<z.ZodString>;
151
- uiScenarios: z.ZodArray<z.ZodString>;
152
- }, z.core.$strict>;
153
- teaching: z.ZodObject<{
154
- whatThisTeaches: z.ZodArray<z.ZodString>;
155
- whenToCopyThisPattern: z.ZodArray<z.ZodString>;
156
- readFirst: z.ZodArray<z.ZodString>;
157
- }, z.core.$strict>;
158
- demoRelease: z.ZodOptional<z.ZodObject<{
159
- slug: z.ZodString;
160
- name: z.ZodString;
161
- description: z.ZodString;
162
- overview: z.ZodString;
163
- creator: z.ZodString;
164
- minPlayers: z.ZodNumber;
165
- maxPlayers: z.ZodNumber;
166
- playTimeMinMinutes: z.ZodNumber;
167
- playTimeMaxMinutes: z.ZodNumber;
168
- difficulty: z.ZodNumber;
169
- mechanics: z.ZodArray<z.ZodString>;
170
- categories: z.ZodArray<z.ZodString>;
171
- heroImageUrl: z.ZodString;
172
- estimatedMinutes: z.ZodNumber;
173
- demoPlayerCount: z.ZodNumber;
174
- screenshot: z.ZodObject<{
175
- presets: z.ZodRecord<z.ZodString, z.ZodObject<{
176
- viewport: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
177
- theme: z.ZodString;
178
- stagePadding: z.ZodNumber;
179
- frame: z.ZodString;
180
- }, z.core.$strict>>;
181
- }, z.core.$strict>;
182
- }, z.core.$strict>>;
183
- mechanics: z.ZodArray<z.ZodString>;
184
- uiPatterns: z.ZodArray<z.ZodString>;
185
- rights: z.ZodObject<{
186
- mechanicsProvenance: z.ZodString;
187
- sourceCode: z.ZodString;
188
- codeLicense: z.ZodString;
189
- ruleText: z.ZodString;
190
- artwork: z.ZodString;
191
- assetLicenseManifest: z.ZodString;
192
- thirdPartyMarks: z.ZodArray<z.ZodString>;
193
- reviewStatus: z.ZodLiteral<"approved">;
194
- reviewedBy: z.ZodString;
195
- reviewedAt: z.ZodString;
196
- }, z.core.$strict>;
197
- sdk: z.ZodObject<{
198
- dependency: z.ZodLiteral<"@dreamboard-games/sdk">;
199
- versionPolicy: z.ZodLiteral<"exact">;
200
- }, z.core.$strict>;
201
- }, z.core.$strict>;
202
- type ReferenceGameSourceObject = z.infer<typeof referenceGameSourceObjectSchema>;
203
- type ReferenceGameSourceEntry = z.infer<typeof referenceGameSourceEntrySchema>;
204
- type ReferenceGameSourceManifestPayload = z.infer<typeof referenceGameSourceManifestPayloadSchema>;
205
- type ReferenceGameSourceProvenance = z.infer<typeof referenceGameSourceProvenanceSchema>;
206
- type ReferenceGameSourceManifest = z.infer<typeof referenceGameSourceManifestSchema>;
207
- type ReferenceGameWorkspace = z.infer<typeof referenceGameWorkspaceSchema>;
208
- type ReferenceGameTeaching = z.infer<typeof referenceGameTeachingSchema>;
209
- type ReferenceGameDemoRelease = z.infer<typeof referenceGameDemoReleaseSchema>;
210
- type ReferenceGameRights = z.infer<typeof referenceGameRightsSchema>;
211
- type ReferenceGameSdkPolicy = z.infer<typeof referenceGameSdkPolicySchema>;
212
- type ReferenceGameManifestV3 = z.infer<typeof referenceGameManifestV3Schema>;
213
- declare function parseReferenceGameSourceManifest(value: unknown): ReferenceGameSourceManifest;
214
- declare function parseReferenceGameManifestV3(value: unknown): ReferenceGameManifestV3;
215
- declare function isPackageableReferenceGame(game: ReferenceGameManifestV3): boolean;
1
+ import { i as ReferenceGameSourceManifestPayload } from '../schema-9jZzlEWZ.js';
2
+ export { R as REFERENCE_GAME_MANIFEST_SCHEMA_VERSION, a as REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION, b as ReferenceGameDemoRelease, c as ReferenceGameManifestV3, d as ReferenceGameRights, e as ReferenceGameSdkPolicy, f as ReferenceGameSourceEntry, g as ReferenceGameSourceInventoryPolicy, h as ReferenceGameSourceManifest, j as ReferenceGameSourceObject, k as ReferenceGameSourceProvenance, l as ReferenceGameTeaching, m as ReferenceGameWorkspace, n as isPackageableReferenceGame, p as parseReferenceGameManifestV3, o as parseReferenceGameSourceManifest, r as referenceGameDemoReleaseSchema, q as referenceGameManifestV3Schema, s as referenceGameRightsSchema, t as referenceGameSdkPolicySchema, u as referenceGameSha256DigestSchema, v as referenceGameSourceEntrySchema, w as referenceGameSourceInventoryPolicySchema, x as referenceGameSourceManifestPayloadSchema, y as referenceGameSourceManifestSchema, z as referenceGameSourceObjectSchema, A as referenceGameSourceProvenanceSchema, B as referenceGameTeachingSchema, C as referenceGameWorkspaceSchema } from '../schema-9jZzlEWZ.js';
3
+ import 'zod';
216
4
 
217
5
  type CanonicalReferenceGameJson = null | boolean | number | string | CanonicalReferenceGameJson[] | {
218
6
  [key: string]: CanonicalReferenceGameJson;
219
7
  };
220
- declare function computeReferenceGameSourceDigest(payload: ReferenceGameSourceManifestPayload): `sha256:${string}`;
8
+ declare function computeReferenceGameSourceFingerprint(payload: ReferenceGameSourceManifestPayload): `sha256:${string}`;
221
9
  declare function canonicalizeReferenceGameSourcePayload(payload: ReferenceGameSourceManifestPayload): CanonicalReferenceGameJson;
10
+ /** Locale-independent UTF-16 code-unit order, equivalent to Java String.compareTo. */
11
+ declare function compareReferenceGameCanonicalStrings(left: string, right: string): number;
222
12
 
223
- export { REFERENCE_GAME_MANIFEST_SCHEMA_VERSION, REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION, type ReferenceGameDemoRelease, type ReferenceGameManifestV3, type ReferenceGameRights, type ReferenceGameSdkPolicy, type ReferenceGameSourceEntry, type ReferenceGameSourceManifest, type ReferenceGameSourceManifestPayload, type ReferenceGameSourceObject, type ReferenceGameSourceProvenance, type ReferenceGameTeaching, type ReferenceGameWorkspace, canonicalizeReferenceGameSourcePayload, computeReferenceGameSourceDigest, isPackageableReferenceGame, parseReferenceGameManifestV3, parseReferenceGameSourceManifest, referenceGameDemoReleaseSchema, referenceGameManifestV3Schema, referenceGameRightsSchema, referenceGameSdkPolicySchema, referenceGameSha256DigestSchema, referenceGameSourceEntrySchema, referenceGameSourceManifestPayloadSchema, referenceGameSourceManifestSchema, referenceGameSourceObjectSchema, referenceGameSourceProvenanceSchema, referenceGameTeachingSchema, referenceGameWorkspaceSchema };
13
+ export { ReferenceGameSourceManifestPayload, canonicalizeReferenceGameSourcePayload, compareReferenceGameCanonicalStrings, computeReferenceGameSourceFingerprint };
@@ -1,216 +1,35 @@
1
+ import {
2
+ REFERENCE_GAME_MANIFEST_SCHEMA_VERSION,
3
+ REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION,
4
+ isPackageableReferenceGame,
5
+ parseReferenceGameManifestV3,
6
+ parseReferenceGameSourceManifest,
7
+ referenceGameDemoReleaseSchema,
8
+ referenceGameManifestV3Schema,
9
+ referenceGameRightsSchema,
10
+ referenceGameSdkPolicySchema,
11
+ referenceGameSha256DigestSchema,
12
+ referenceGameSourceEntrySchema,
13
+ referenceGameSourceInventoryPolicySchema,
14
+ referenceGameSourceManifestPayloadSchema,
15
+ referenceGameSourceManifestSchema,
16
+ referenceGameSourceObjectSchema,
17
+ referenceGameSourceProvenanceSchema,
18
+ referenceGameTeachingSchema,
19
+ referenceGameWorkspaceSchema
20
+ } from "../chunk-45P5CEGH.js";
21
+ import {
22
+ canonicalizeReferenceGameSourcePayload,
23
+ compareReferenceGameCanonicalStrings,
24
+ computeReferenceGameSourceFingerprint
25
+ } from "../chunk-UNVCT5Z7.js";
1
26
  import "../chunk-PZ5AY32C.js";
2
-
3
- // src/reference-games/canonical.ts
4
- import { sha256 } from "@noble/hashes/sha2.js";
5
- import { bytesToHex, utf8ToBytes } from "@noble/hashes/utils.js";
6
- function computeReferenceGameSourceDigest(payload) {
7
- const canonical = canonicalizeReferenceGameSourcePayload(payload);
8
- const encoded = JSON.stringify(canonical);
9
- return `sha256:${bytesToHex(sha256(utf8ToBytes(encoded)))}`;
10
- }
11
- function canonicalizeReferenceGameSourcePayload(payload) {
12
- return canonicalizeJson({
13
- ...payload,
14
- games: [...payload.games].sort(
15
- (left, right) => left.id.localeCompare(right.id)
16
- ),
17
- objects: [...payload.objects].sort(
18
- (left, right) => left.path.localeCompare(right.path)
19
- )
20
- });
21
- }
22
- function canonicalizeJson(value) {
23
- if (value === null || typeof value === "boolean") {
24
- return value;
25
- }
26
- if (typeof value === "string") {
27
- return value.normalize("NFC");
28
- }
29
- if (typeof value === "number") {
30
- if (!Number.isFinite(value)) {
31
- throw new Error(
32
- "reference game source JSON contains a non-finite number"
33
- );
34
- }
35
- return value;
36
- }
37
- if (Array.isArray(value)) {
38
- return value.map((item) => canonicalizeJson(item));
39
- }
40
- if (typeof value === "object") {
41
- const entries = Object.entries(value);
42
- for (const [, item] of entries) {
43
- if (item === void 0) {
44
- throw new Error("reference game source JSON contains undefined");
45
- }
46
- }
47
- return Object.fromEntries(
48
- entries.map(([key, item]) => [key.normalize("NFC"), item]).sort(([left], [right]) => left.localeCompare(right)).map(([key, item]) => [key, canonicalizeJson(item)])
49
- );
50
- }
51
- throw new Error(
52
- `reference game source JSON contains unsupported ${typeof value} value`
53
- );
54
- }
55
-
56
- // src/reference-games/schema.ts
57
- import { z } from "zod";
58
- var REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION = 2;
59
- var REFERENCE_GAME_MANIFEST_SCHEMA_VERSION = 3;
60
- var referenceGameSha256DigestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
61
- var referenceGameSourceObjectSchema = z.object({
62
- path: z.string().min(1),
63
- sha256: referenceGameSha256DigestSchema,
64
- byteLength: z.number().int().nonnegative()
65
- }).strict();
66
- var referenceGameSourceEntrySchema = z.object({
67
- id: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
68
- root: z.string().regex(/^examples\/reference-games\/[a-z0-9-]+$/),
69
- sourceSha256: referenceGameSha256DigestSchema,
70
- packageJsonSha256: referenceGameSha256DigestSchema,
71
- lockfileSha256: referenceGameSha256DigestSchema,
72
- sdkSpecifier: z.string().min(1),
73
- manifest: z.string().min(1),
74
- reducer: z.string().min(1),
75
- ui: z.string().min(1),
76
- behaviorScenarios: z.array(z.string().min(1)).min(1),
77
- uiScenarios: z.array(z.string().min(1)).min(1),
78
- mechanics: z.array(z.string().min(1)).min(1),
79
- readFirst: z.array(z.string().min(1)).min(1)
80
- }).strict();
81
- var referenceGameSourceManifestPayloadSchema = z.object({
82
- games: z.array(referenceGameSourceEntrySchema).min(1),
83
- objects: z.array(referenceGameSourceObjectSchema).min(1)
84
- }).strict();
85
- var referenceGameSourceProvenanceSchema = z.discriminatedUnion(
86
- "kind",
87
- [
88
- z.object({ kind: z.literal("worktree") }).strict(),
89
- z.object({
90
- kind: z.literal("git"),
91
- repository: z.literal("dreamboard-games/dreamboard-sdk"),
92
- revision: z.string().regex(/^[a-f0-9]{40}$/)
93
- }).strict()
94
- ]
95
- );
96
- var referenceGameSourceManifestSchema = z.object({
97
- schemaVersion: z.literal(REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION),
98
- manifestType: z.literal("dreamboard.reference-game-source"),
99
- bundleDigest: referenceGameSha256DigestSchema,
100
- payload: referenceGameSourceManifestPayloadSchema,
101
- provenance: referenceGameSourceProvenanceSchema
102
- }).strict().superRefine((value, context) => {
103
- const digest = computeReferenceGameSourceDigest(value.payload);
104
- if (value.bundleDigest !== digest) {
105
- context.addIssue({
106
- code: "custom",
107
- path: ["bundleDigest"],
108
- message: "bundleDigest must match the canonical payload digest"
109
- });
110
- }
111
- });
112
- var referenceGameIdSchema = z.string().regex(/^[a-z0-9][a-z0-9-]*$/);
113
- var referenceGameWorkspacePathSchema = z.string().min(1);
114
- var referenceGameWorkspaceSchema = z.object({
115
- manifest: referenceGameWorkspacePathSchema,
116
- reducer: referenceGameWorkspacePathSchema,
117
- ui: referenceGameWorkspacePathSchema,
118
- behaviorScenarios: z.array(referenceGameWorkspacePathSchema).min(1),
119
- uiScenarios: z.array(referenceGameWorkspacePathSchema).min(1)
120
- }).strict();
121
- var referenceGameTeachingSchema = z.object({
122
- whatThisTeaches: z.array(z.string().min(1)).min(1),
123
- whenToCopyThisPattern: z.array(z.string().min(1)).min(1),
124
- readFirst: z.array(referenceGameWorkspacePathSchema).min(1)
125
- }).strict();
126
- var referenceGameDemoScreenshotPresetSchema = z.object({
127
- viewport: z.tuple([
128
- z.number().int().positive(),
129
- z.number().int().positive()
130
- ]),
131
- theme: z.string().min(1),
132
- stagePadding: z.number().int().nonnegative(),
133
- frame: z.string().min(1)
134
- }).strict();
135
- var referenceGameDemoReleaseSchema = z.object({
136
- slug: referenceGameIdSchema,
137
- name: z.string().min(1),
138
- description: z.string().min(1),
139
- overview: z.string().min(1),
140
- creator: z.string().min(1),
141
- minPlayers: z.number().int().positive(),
142
- maxPlayers: z.number().int().positive(),
143
- playTimeMinMinutes: z.number().int().positive(),
144
- playTimeMaxMinutes: z.number().int().positive(),
145
- difficulty: z.number().int().min(1).max(5),
146
- mechanics: z.array(z.string().min(1)).min(1),
147
- categories: z.array(z.string().min(1)).min(1),
148
- heroImageUrl: z.string().min(1),
149
- estimatedMinutes: z.number().int().positive(),
150
- demoPlayerCount: z.number().int().positive(),
151
- screenshot: z.object({
152
- presets: z.record(z.string().min(1), referenceGameDemoScreenshotPresetSchema).refine((value) => Object.keys(value).length > 0, {
153
- message: "screenshot.presets must include at least one preset"
154
- })
155
- }).strict()
156
- }).strict().superRefine((value, context) => {
157
- if (value.maxPlayers < value.minPlayers) {
158
- context.addIssue({
159
- code: "custom",
160
- path: ["maxPlayers"],
161
- message: "maxPlayers must be greater than or equal to minPlayers"
162
- });
163
- }
164
- if (value.playTimeMaxMinutes < value.playTimeMinMinutes) {
165
- context.addIssue({
166
- code: "custom",
167
- path: ["playTimeMaxMinutes"],
168
- message: "playTimeMaxMinutes must be greater than or equal to playTimeMinMinutes"
169
- });
170
- }
171
- });
172
- var referenceGameRightsSchema = z.object({
173
- mechanicsProvenance: z.string().min(1),
174
- sourceCode: z.string().min(1),
175
- codeLicense: z.string().min(1),
176
- ruleText: z.string().min(1),
177
- artwork: z.string().min(1),
178
- assetLicenseManifest: z.string().min(1),
179
- thirdPartyMarks: z.array(z.string()),
180
- reviewStatus: z.literal("approved"),
181
- reviewedBy: z.string().min(1),
182
- reviewedAt: z.string().min(1)
183
- }).strict();
184
- var referenceGameSdkPolicySchema = z.object({
185
- dependency: z.literal("@dreamboard-games/sdk"),
186
- versionPolicy: z.literal("exact")
187
- }).strict();
188
- var referenceGameManifestV3Schema = z.object({
189
- schemaVersion: z.literal(REFERENCE_GAME_MANIFEST_SCHEMA_VERSION),
190
- id: referenceGameIdSchema,
191
- displayName: z.string().min(1),
192
- workspace: referenceGameWorkspaceSchema,
193
- teaching: referenceGameTeachingSchema,
194
- demoRelease: referenceGameDemoReleaseSchema.optional(),
195
- mechanics: z.array(z.string().min(1)).min(1),
196
- uiPatterns: z.array(z.string().min(1)).min(1),
197
- rights: referenceGameRightsSchema,
198
- sdk: referenceGameSdkPolicySchema
199
- }).strict();
200
- function parseReferenceGameSourceManifest(value) {
201
- return referenceGameSourceManifestSchema.parse(value);
202
- }
203
- function parseReferenceGameManifestV3(value) {
204
- return referenceGameManifestV3Schema.parse(value);
205
- }
206
- function isPackageableReferenceGame(game) {
207
- return game.demoRelease !== void 0;
208
- }
209
27
  export {
210
28
  REFERENCE_GAME_MANIFEST_SCHEMA_VERSION,
211
29
  REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION,
212
30
  canonicalizeReferenceGameSourcePayload,
213
- computeReferenceGameSourceDigest,
31
+ compareReferenceGameCanonicalStrings,
32
+ computeReferenceGameSourceFingerprint,
214
33
  isPackageableReferenceGame,
215
34
  parseReferenceGameManifestV3,
216
35
  parseReferenceGameSourceManifest,
@@ -220,6 +39,7 @@ export {
220
39
  referenceGameSdkPolicySchema,
221
40
  referenceGameSha256DigestSchema,
222
41
  referenceGameSourceEntrySchema,
42
+ referenceGameSourceInventoryPolicySchema,
223
43
  referenceGameSourceManifestPayloadSchema,
224
44
  referenceGameSourceManifestSchema,
225
45
  referenceGameSourceObjectSchema,