@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.
- package/REFERENCE.md +1292 -287
- package/dist/authoring/index.d.ts +4 -9
- package/dist/authoring/index.js +11 -547
- package/dist/authoring/index.js.map +1 -1
- package/dist/authoring-compiler.d.ts +27 -0
- package/dist/authoring-compiler.js +12 -0
- package/dist/authoring-compiler.js.map +1 -0
- package/dist/authoring-materialize-cli.d.ts +1 -0
- package/dist/authoring-materialize-cli.js +46 -0
- package/dist/authoring-materialize-cli.js.map +1 -0
- package/dist/browser-interaction.d.ts +1 -1
- package/dist/{chunk-TGMXBRKY.js → chunk-3PFDHTR7.js} +19 -7
- package/dist/chunk-3PFDHTR7.js.map +1 -0
- package/dist/chunk-45P5CEGH.js +176 -0
- package/dist/chunk-45P5CEGH.js.map +1 -0
- package/dist/chunk-5XTAQ4EQ.js +32 -0
- package/dist/chunk-5XTAQ4EQ.js.map +1 -0
- package/dist/chunk-7ADPYKFT.js +532 -0
- package/dist/chunk-7ADPYKFT.js.map +1 -0
- package/dist/{chunk-RKGJ64UN.js → chunk-BUOODBVO.js} +2 -2
- package/dist/{chunk-VLG4YST5.js → chunk-GMOBG7Y7.js} +4 -4
- package/dist/{chunk-Q322XCY2.js → chunk-JRGP6W4V.js} +3 -3
- package/dist/chunk-L3W2FPRQ.js +1793 -0
- package/dist/chunk-L3W2FPRQ.js.map +1 -0
- package/dist/{chunk-3QIZKXJ2.js → chunk-NGYFBNBP.js} +3 -3
- package/dist/chunk-P6IJ5YVY.js +154 -0
- package/dist/chunk-P6IJ5YVY.js.map +1 -0
- package/dist/{chunk-5IHU5CUK.js → chunk-QQNL4WTX.js} +25 -22
- package/dist/chunk-QQNL4WTX.js.map +1 -0
- package/dist/{chunk-52DH7VQF.js → chunk-SACZWUA6.js} +143 -47
- package/dist/chunk-SACZWUA6.js.map +1 -0
- package/dist/{chunk-KYEWGZ2Y.js → chunk-SFOAY5H4.js} +2 -2
- package/dist/{chunk-KYEWGZ2Y.js.map → chunk-SFOAY5H4.js.map} +1 -1
- package/dist/chunk-UNVCT5Z7.js +73 -0
- package/dist/chunk-UNVCT5Z7.js.map +1 -0
- package/dist/{chunk-NO537WSS.js → chunk-WDR7SKBM.js} +2 -2
- package/dist/chunk-XDGRC6OR.js +7039 -0
- package/dist/chunk-XDGRC6OR.js.map +1 -0
- package/dist/chunk-XLHLFTLI.js +399 -0
- package/dist/chunk-XLHLFTLI.js.map +1 -0
- package/dist/{chunk-B2YBS3SG.js → chunk-YNW3KBDE.js} +41 -13
- package/dist/chunk-YNW3KBDE.js.map +1 -0
- package/dist/codegen.js +1 -1
- package/dist/{components-BTwSIjXj.d.ts → components-BPzsSRs8.d.ts} +1 -1
- package/dist/definitions-0kjPV9wh.d.ts +294 -0
- package/dist/{diagnostics-1BWjRo6-.d.ts → diagnostics-DIi3ina7.d.ts} +2 -1
- package/dist/{index-CFTjJIXd.d.ts → index-CWzWpQzM.d.ts} +1 -1
- package/dist/{index.d-DMASeF6M.d.ts → index.d-C7Ztirg6.d.ts} +234 -5
- package/dist/index.js +2 -2
- package/dist/package-set.d.ts +2 -2
- package/dist/package-set.js +2 -2
- package/dist/{protocol-835hEGne.d.ts → protocol-B2LWcqB4.d.ts} +14 -0
- package/dist/reducer/advanced.d.ts +4 -4
- package/dist/reducer/advanced.js +7 -26
- package/dist/reducer/advanced.js.map +1 -1
- package/dist/reducer-contract.d.ts +1 -1
- package/dist/reducer-contract.js +2 -2
- package/dist/reducer.d.ts +37 -28
- package/dist/reducer.js +43 -6018
- package/dist/reducer.js.map +1 -1
- package/dist/reference-game-compiler.d.ts +45 -0
- package/dist/reference-game-compiler.js +25 -0
- package/dist/reference-game-compiler.js.map +1 -0
- package/dist/reference-game-source-manifest-cli.d.ts +1 -0
- package/dist/reference-game-source-manifest-cli.js +84 -0
- package/dist/reference-game-source-manifest-cli.js.map +1 -0
- package/dist/reference-games/index.d.ts +7 -217
- package/dist/reference-games/index.js +28 -208
- package/dist/reference-games/index.js.map +1 -1
- package/dist/runtime/primitives.d.ts +3 -3
- package/dist/runtime/primitives.js +3 -3
- package/dist/runtime/runtime-api.d.ts +1 -1
- package/dist/runtime/workspace-contract.d.ts +4 -4
- package/dist/runtime/workspace-contract.js +4 -4
- package/dist/{runtime-Dkfm1x2r.d.ts → runtime-B_w9AO2n.d.ts} +60 -5
- package/dist/{runtime-api-C6aWo9c0.d.ts → runtime-api-xCWLMQRT.d.ts} +2 -0
- package/dist/runtime.d.ts +7 -7
- package/dist/runtime.js +13 -13
- package/dist/schema-9jZzlEWZ.d.ts +220 -0
- package/dist/{stale-contract-artifact-error-C5AaZPJ8.d.ts → stale-contract-artifact-error-XLaweZtF.d.ts} +1 -1
- package/dist/testing-compiler.d.ts +36 -0
- package/dist/testing-compiler.js +236 -0
- package/dist/testing-compiler.js.map +1 -0
- package/dist/testing-runtime.d.ts +97 -21
- package/dist/testing-runtime.js +154 -95
- package/dist/testing-runtime.js.map +1 -1
- package/dist/testing.d.ts +178 -60
- package/dist/testing.js +641 -26
- package/dist/testing.js.map +1 -1
- package/dist/types-Bvptkukh.d.ts +122 -0
- package/dist/{types-aI4V9CWe.d.ts → types-_zfC_7CD.d.ts} +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/ui/components.d.ts +2 -2
- package/dist/ui/plugin-styles.css +1 -1
- package/dist/{ui-contract-Ue6SywvO.d.ts → ui-contract-CUC7Lyoc.d.ts} +1 -1
- package/dist/ui.d.ts +3 -3
- package/dist/{views-32rSsfeU.d.ts → views-DE2eZxPz.d.ts} +42 -13
- package/package.json +22 -3
- package/dist/chunk-3OZMHZK3.js +0 -40
- package/dist/chunk-3OZMHZK3.js.map +0 -1
- package/dist/chunk-52DH7VQF.js.map +0 -1
- package/dist/chunk-5IHU5CUK.js.map +0 -1
- package/dist/chunk-B2YBS3SG.js.map +0 -1
- package/dist/chunk-IU6KGPY7.js +0 -659
- package/dist/chunk-IU6KGPY7.js.map +0 -1
- package/dist/chunk-TGMXBRKY.js.map +0 -1
- package/dist/types-DcADVHe9.d.ts +0 -192
- /package/dist/{chunk-RKGJ64UN.js.map → chunk-BUOODBVO.js.map} +0 -0
- /package/dist/{chunk-VLG4YST5.js.map → chunk-GMOBG7Y7.js.map} +0 -0
- /package/dist/{chunk-Q322XCY2.js.map → chunk-JRGP6W4V.js.map} +0 -0
- /package/dist/{chunk-3QIZKXJ2.js.map → chunk-NGYFBNBP.js.map} +0 -0
- /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 {
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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,
|