@vgai/engine 0.5.11 → 0.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/adapter/authoring.d.ts +51 -28
- package/dist/adapter/authoring.d.ts.map +1 -1
- package/dist/adapter/body-marks.d.ts +59 -0
- package/dist/adapter/body-marks.d.ts.map +1 -0
- package/dist/adapter/body-marks.js +62 -0
- package/dist/adapter/constraint.d.ts +41 -0
- package/dist/adapter/constraint.d.ts.map +1 -0
- package/dist/adapter/constraint.js +27 -0
- package/dist/adapter/hierarchy-marks.d.ts +138 -0
- package/dist/adapter/hierarchy-marks.d.ts.map +1 -0
- package/dist/adapter/hierarchy-marks.js +148 -0
- package/dist/adapter/index.d.ts +1 -1
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/adapter/ingest/contract-system-adapters.d.ts +64 -0
- package/dist/adapter/ingest/contract-system-adapters.d.ts.map +1 -0
- package/dist/adapter/ingest/contract-system-adapters.js +134 -0
- package/dist/adapter/ingest/game-contract.d.ts +87 -9
- package/dist/adapter/ingest/game-contract.d.ts.map +1 -1
- package/dist/adapter/ingest/game-contract.js +7 -6
- package/dist/adapter/ingest/scene-capture.d.ts +31 -4
- package/dist/adapter/ingest/scene-capture.d.ts.map +1 -1
- package/dist/adapter/ingest/scene-capture.js +29 -7
- package/dist/adapter/ingest/structural-ids.d.ts +1 -1
- package/dist/adapter/ingest/structural-ids.js +2 -2
- package/dist/adapter/reflection-probe.d.ts +53 -0
- package/dist/adapter/reflection-probe.d.ts.map +1 -0
- package/dist/adapter/reflection-probe.js +18 -0
- package/dist/asset-formats/index.d.ts +4 -10
- package/dist/asset-formats/index.d.ts.map +1 -1
- package/dist/asset-formats/index.js +3 -8
- package/dist/asset-formats/material.d.ts +0 -66
- package/dist/asset-formats/material.d.ts.map +1 -1
- package/dist/asset-formats/material.js +0 -8
- package/dist/asset-formats/mesh.d.ts +1 -2
- package/dist/asset-formats/mesh.d.ts.map +1 -1
- package/dist/asset-formats/mesh.js +3 -13
- package/dist/asset-formats/render-env.d.ts +2 -2
- package/dist/asset-parse-error.d.ts +4 -5
- package/dist/asset-parse-error.d.ts.map +1 -1
- package/dist/asset-parse-error.js +4 -5
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/data/curve.d.ts +116 -0
- package/dist/data/curve.d.ts.map +1 -0
- package/dist/data/curve.js +230 -0
- package/dist/data/vite-plugin-data.d.ts +2 -2
- package/dist/data/vite-plugin-data.d.ts.map +1 -1
- package/dist/data/vite-plugin-data.js +24 -15
- package/dist/dev/performance-profiler.d.ts +1 -0
- package/dist/dev/performance-profiler.d.ts.map +1 -1
- package/dist/dev/performance-profiler.js +25 -2
- package/dist/ecs/user-data.d.ts +49 -1
- package/dist/ecs/user-data.d.ts.map +1 -1
- package/dist/ecs/user-data.js +34 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/manifest/index.d.ts +3 -3
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +2 -2
- package/dist/manifest/load.d.ts +15 -67
- package/dist/manifest/load.d.ts.map +1 -1
- package/dist/manifest/load.js +11 -103
- package/dist/manifest/schema.d.ts +18 -103
- package/dist/manifest/schema.d.ts.map +1 -1
- package/dist/manifest/schema.js +59 -179
- package/dist/pixi/index.d.ts +2 -3
- package/dist/pixi/index.d.ts.map +1 -1
- package/dist/pixi/index.js +2 -3
- package/dist/pixi/ingest.d.ts +7 -75
- package/dist/pixi/ingest.d.ts.map +1 -1
- package/dist/pixi/ingest.js +6 -14
- package/dist/pixi/scene-capture.d.ts +2 -2
- package/dist/pixi/scene-capture.js +2 -2
- package/dist/react/use-data.d.ts +10 -5
- package/dist/react/use-data.d.ts.map +1 -1
- package/dist/react/use-data.js +15 -15
- package/dist/render/viewport-shading.d.ts +1 -1
- package/dist/render/viewport-shading.d.ts.map +1 -1
- package/dist/render/viewport-shading.js +14 -0
- package/dist/runtime/create-runtime.d.ts +12 -0
- package/dist/runtime/create-runtime.d.ts.map +1 -1
- package/dist/runtime/create-runtime.js +7 -2
- package/dist/runtime/mount-game.d.ts +1 -1
- package/dist/runtime/mount-game.d.ts.map +1 -1
- package/dist/runtime/mount-manifest.d.ts.map +1 -1
- package/dist/runtime/mount-manifest.js +5 -1
- package/dist/world3d-react/r3f-adapter.d.ts.map +1 -1
- package/dist/world3d-react/r3f-adapter.js +69 -39
- package/dist/world3d-react/renderer-config.d.ts +15 -0
- package/dist/world3d-react/renderer-config.d.ts.map +1 -1
- package/dist/world3d-react/renderer-config.js +15 -0
- package/dist/world3d-react/world-context.d.ts +2 -1
- package/dist/world3d-react/world-context.d.ts.map +1 -1
- package/dist-config/config.js +140 -20
- package/dist-config/config.js.map +4 -4
- package/package.json +1 -1
- package/schemas/engine-capabilities.json +10 -10
- package/schemas/vgai-project.schema.json +21 -76
- package/src/adapter/authoring.ts +54 -31
- package/src/adapter/body-marks.ts +69 -0
- package/src/adapter/constraint.ts +71 -0
- package/src/adapter/hierarchy-marks.ts +155 -0
- package/src/adapter/index.ts +2 -3
- package/src/adapter/ingest/contract-system-adapters.ts +174 -0
- package/src/adapter/ingest/game-contract.ts +98 -9
- package/src/adapter/ingest/scene-capture.ts +61 -11
- package/src/adapter/ingest/structural-ids.ts +2 -2
- package/src/adapter/reflection-probe.ts +75 -0
- package/src/asset-formats/index.ts +4 -10
- package/src/asset-formats/material.ts +0 -11
- package/src/asset-formats/mesh.ts +3 -16
- package/src/asset-parse-error.ts +4 -5
- package/src/config.ts +13 -0
- package/src/data/curve.ts +263 -0
- package/src/data/vite-plugin-data.ts +48 -14
- package/src/dev/performance-profiler.ts +21 -2
- package/src/ecs/user-data.ts +50 -0
- package/src/index.ts +2 -3
- package/src/manifest/index.ts +3 -15
- package/src/manifest/load.ts +27 -143
- package/src/manifest/schema.ts +65 -223
- package/src/pixi/index.ts +2 -15
- package/src/pixi/ingest.ts +13 -87
- package/src/pixi/scene-capture.ts +2 -2
- package/src/react/use-data.ts +15 -20
- package/src/render/viewport-shading.ts +16 -1
- package/src/runtime/create-runtime.ts +30 -5
- package/src/runtime/mount-game.ts +1 -1
- package/src/runtime/mount-manifest.ts +5 -1
- package/src/world3d-react/r3f-adapter.tsx +73 -39
- package/src/world3d-react/renderer-config.ts +31 -0
- package/src/world3d-react/world-context.ts +2 -1
- package/dist/asset-formats/instances.d.ts +0 -17
- package/dist/asset-formats/instances.d.ts.map +0 -1
- package/dist/asset-formats/instances.js +0 -31
- package/dist/asset-formats/parse.d.ts +0 -20
- package/dist/asset-formats/parse.d.ts.map +0 -1
- package/dist/asset-formats/parse.js +0 -34
- package/dist/pixi/ingest-iframe.d.ts +0 -82
- package/dist/pixi/ingest-iframe.d.ts.map +0 -1
- package/dist/pixi/ingest-iframe.js +0 -166
- package/dist/render/instance-mesh.d.ts +0 -5
- package/dist/render/instance-mesh.d.ts.map +0 -1
- package/dist/render/instance-mesh.js +0 -19
- package/schemas/mat.schema.json +0 -255
- package/src/asset-formats/instances.ts +0 -38
- package/src/asset-formats/parse.ts +0 -39
- package/src/pixi/ingest-iframe.ts +0 -255
- package/src/render/instance-mesh.ts +0 -25
package/dist/manifest/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Game manifest (vgai.project.json) — schema + loader (T3.1 slice
|
|
2
2
|
// 1)..
|
|
3
3
|
export { isManifestFilename, MANIFEST_FILENAME, REMOVED_MANIFEST_FILENAME, removedManifestFilenameMessage, } from './filename';
|
|
4
|
-
export {
|
|
5
|
-
export { AdapterRootSchema, GameManifestSchema,
|
|
4
|
+
export { DEFAULT_SERVER_MODULE, loadGameManifest } from './load';
|
|
5
|
+
export { AdapterRootSchema, GameManifestSchema, RootAdapterSchema } from './schema';
|
|
6
6
|
// `loadGameManifestFile` (Node-only, reads `path` via `node:fs`) is
|
|
7
7
|
// deliberately NOT re-exported here — this barrel must stay import-safe for
|
|
8
8
|
// browser bundles. Import it directly from `@engine/manifest/load-file` in
|
package/dist/manifest/load.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type LearnMetadata } from './schema';
|
|
2
2
|
/** D6's resolved adapter identities. */
|
|
3
3
|
export type ResolvedAdapter = {
|
|
4
4
|
readonly type: 'builtin';
|
|
@@ -13,27 +13,24 @@ export type ResolvedAdapter = {
|
|
|
13
13
|
readonly type: 'ingest';
|
|
14
14
|
readonly identity: 'ingest-three' | 'ingest-pixi' | 'ingest-react';
|
|
15
15
|
readonly surface: 'three' | 'canvas' | 'dom';
|
|
16
|
-
readonly strategy: IngestStrategy;
|
|
17
|
-
readonly entryHtml: string | undefined;
|
|
18
16
|
/**
|
|
19
17
|
* Project-relative ES module declaring `window.vgaiGame` beside a
|
|
20
18
|
* pristine copy. OPTIONAL rather than required-and-possibly-undefined
|
|
21
|
-
* (the shape its siblings above use) because
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* requiring the key would only make them all say `undefined`.
|
|
19
|
+
* (the shape its siblings above use) because most ingested games have
|
|
20
|
+
* nothing to say about it, and requiring the key would only make every
|
|
21
|
+
* construction site say `undefined`.
|
|
25
22
|
*/
|
|
26
23
|
readonly contractShim?: string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Project-relative ES module that writes this game'''s own DATA file back
|
|
26
|
+
* (see the field'''s schema description). Same OPTIONAL shape and same
|
|
27
|
+
* reason as {@link contractShim}: a game whose truth is entirely source
|
|
28
|
+
* declares nothing here.
|
|
29
|
+
*/
|
|
30
|
+
readonly dataWriter?: string | undefined;
|
|
27
31
|
readonly assets: Record<string, string> | undefined;
|
|
28
32
|
readonly domStubs: string[] | undefined;
|
|
29
33
|
readonly captureTimeoutMs: number | undefined;
|
|
30
|
-
/** Iframe-reachable-multi mount fields. */
|
|
31
|
-
readonly bundleUrl: string | undefined;
|
|
32
|
-
readonly baseHref: string | undefined;
|
|
33
|
-
readonly assetBaseUrl: string | undefined;
|
|
34
|
-
readonly extraDeps: string[] | undefined;
|
|
35
|
-
readonly pixiModuleUrl: string | undefined;
|
|
36
|
-
readonly bodyHtml: string | undefined;
|
|
37
34
|
};
|
|
38
35
|
export interface ResolvedAdapterRoot {
|
|
39
36
|
readonly id: string;
|
|
@@ -47,11 +44,6 @@ export interface ResolvedAdapterRoot {
|
|
|
47
44
|
* `manifest/schema.ts`'s `dev` field for the four readers. */
|
|
48
45
|
readonly dev: boolean;
|
|
49
46
|
readonly loop: 'gated' | 'self-driven';
|
|
50
|
-
/** Every optional resolved: both contexts always present (§4/§5). */
|
|
51
|
-
readonly capabilities: {
|
|
52
|
-
readonly local: Tier;
|
|
53
|
-
readonly hosted: Tier;
|
|
54
|
-
};
|
|
55
47
|
}
|
|
56
48
|
export interface ResolvedGameManifest {
|
|
57
49
|
readonly manifestVersion: 2;
|
|
@@ -71,6 +63,10 @@ export interface ResolvedGameManifest {
|
|
|
71
63
|
readonly width: number;
|
|
72
64
|
readonly height: number;
|
|
73
65
|
} | undefined;
|
|
66
|
+
/** Construction-time renderer properties no world can declare for itself — see the schema. */
|
|
67
|
+
readonly rendering: {
|
|
68
|
+
readonly antialias: boolean;
|
|
69
|
+
} | undefined;
|
|
74
70
|
readonly authoring: {
|
|
75
71
|
readonly hierarchy?: {
|
|
76
72
|
readonly rootLabels?: Readonly<Record<string, string>> | undefined;
|
|
@@ -110,54 +106,6 @@ export interface ResolvedGameManifest {
|
|
|
110
106
|
* gallery/wizard/Learn-catalog registries. */
|
|
111
107
|
readonly learn: LearnMetadata | undefined;
|
|
112
108
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Ceiling (maximum legal declared `Tier`) per adapter type and delivery
|
|
115
|
-
* context. `default` roots are always first-party in both contexts (D6/§2 —
|
|
116
|
-
* a first-party root is fully vgai-native everywhere). `ingest` roots are
|
|
117
|
-
* ceilinged by their own capture `strategy`: locally the local CLI's Vite
|
|
118
|
-
* pipeline gives bundler dedupe, so every strategy reaches its own natural
|
|
119
|
-
* rung; hosted has no bundler (esbuild-wasm + externals only), and a
|
|
120
|
-
* `deduped` root is DEFINED by being source built through our pipeline — no
|
|
121
|
-
* prebuilt bundle exists to fall back to an iframe rung, and nothing
|
|
122
|
-
* implements a hosted build for it, so hosted is `unsupported` (honesty over
|
|
123
|
-
* optimism; if the hosted esbuild-wasm path ever proves capable, raising
|
|
124
|
-
* this ceiling is a non-breaking widening). `shared`/`iframe-reachable`/
|
|
125
|
-
* `opaque-embed` don't depend on a bundler either way, so they carry through
|
|
126
|
-
* unchanged. `module` adapters have no derivable ceiling ("a custom
|
|
127
|
-
* adapter's reach is not derivable", §4) — modeled here as `first-party`
|
|
128
|
-
* (the top rank), i.e. no ceiling actually constrains a module adapter's
|
|
129
|
-
* declared tier; the loader instead requires the tier to be declared
|
|
130
|
-
* explicitly for module roots (see `resolveCapabilities`), since there is no
|
|
131
|
-
* default to derive.
|
|
132
|
-
*/
|
|
133
|
-
export declare const CAPABILITY_CEILINGS: {
|
|
134
|
-
readonly builtin: {
|
|
135
|
-
readonly local: "first-party";
|
|
136
|
-
readonly hosted: "first-party";
|
|
137
|
-
};
|
|
138
|
-
readonly ingest: {
|
|
139
|
-
readonly shared: {
|
|
140
|
-
readonly local: "shared";
|
|
141
|
-
readonly hosted: "shared";
|
|
142
|
-
};
|
|
143
|
-
readonly deduped: {
|
|
144
|
-
readonly local: "deduped";
|
|
145
|
-
readonly hosted: "unsupported";
|
|
146
|
-
};
|
|
147
|
-
readonly 'iframe-reachable': {
|
|
148
|
-
readonly local: "iframe-reachable";
|
|
149
|
-
readonly hosted: "iframe-reachable";
|
|
150
|
-
};
|
|
151
|
-
readonly 'opaque-embed': {
|
|
152
|
-
readonly local: "opaque-embed";
|
|
153
|
-
readonly hosted: "opaque-embed";
|
|
154
|
-
};
|
|
155
|
-
};
|
|
156
|
-
readonly module: {
|
|
157
|
-
readonly local: "first-party";
|
|
158
|
-
readonly hosted: "first-party";
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
109
|
/** Default relative path for `server.module` when omitted (§3) — the scaffolded Colyseus bootstrap. */
|
|
162
110
|
export declare const DEFAULT_SERVER_MODULE = "server/colyseus-setup.ts";
|
|
163
111
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/manifest/load.ts"],"names":[],"mappings":"AAeA,OAAO,EAIL,KAAK,
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/manifest/load.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest/load.js
CHANGED
|
@@ -13,49 +13,6 @@
|
|
|
13
13
|
// wrapper that reads a path and calls this function, so browser bundles that
|
|
14
14
|
// only need `loadGameManifest` never pull in `node:fs`.
|
|
15
15
|
import { GameManifestSchema, } from './schema';
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
// §4 — the per-context ceiling table (named + exported so the tier-table test
|
|
18
|
-
// can pin its rows against this).
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
/**
|
|
21
|
-
* Ceiling (maximum legal declared `Tier`) per adapter type and delivery
|
|
22
|
-
* context. `default` roots are always first-party in both contexts (D6/§2 —
|
|
23
|
-
* a first-party root is fully vgai-native everywhere). `ingest` roots are
|
|
24
|
-
* ceilinged by their own capture `strategy`: locally the local CLI's Vite
|
|
25
|
-
* pipeline gives bundler dedupe, so every strategy reaches its own natural
|
|
26
|
-
* rung; hosted has no bundler (esbuild-wasm + externals only), and a
|
|
27
|
-
* `deduped` root is DEFINED by being source built through our pipeline — no
|
|
28
|
-
* prebuilt bundle exists to fall back to an iframe rung, and nothing
|
|
29
|
-
* implements a hosted build for it, so hosted is `unsupported` (honesty over
|
|
30
|
-
* optimism; if the hosted esbuild-wasm path ever proves capable, raising
|
|
31
|
-
* this ceiling is a non-breaking widening). `shared`/`iframe-reachable`/
|
|
32
|
-
* `opaque-embed` don't depend on a bundler either way, so they carry through
|
|
33
|
-
* unchanged. `module` adapters have no derivable ceiling ("a custom
|
|
34
|
-
* adapter's reach is not derivable", §4) — modeled here as `first-party`
|
|
35
|
-
* (the top rank), i.e. no ceiling actually constrains a module adapter's
|
|
36
|
-
* declared tier; the loader instead requires the tier to be declared
|
|
37
|
-
* explicitly for module roots (see `resolveCapabilities`), since there is no
|
|
38
|
-
* default to derive.
|
|
39
|
-
*/
|
|
40
|
-
export const CAPABILITY_CEILINGS = {
|
|
41
|
-
builtin: { local: 'first-party', hosted: 'first-party' },
|
|
42
|
-
ingest: {
|
|
43
|
-
shared: { local: 'shared', hosted: 'shared' },
|
|
44
|
-
deduped: { local: 'deduped', hosted: 'unsupported' },
|
|
45
|
-
'iframe-reachable': { local: 'iframe-reachable', hosted: 'iframe-reachable' },
|
|
46
|
-
'opaque-embed': { local: 'opaque-embed', hosted: 'opaque-embed' },
|
|
47
|
-
},
|
|
48
|
-
module: { local: 'first-party', hosted: 'first-party' },
|
|
49
|
-
};
|
|
50
|
-
/** Total order over `Tier` (§4: `first-party > shared ≈ deduped > iframe-reachable > opaque-embed > unsupported`). */
|
|
51
|
-
const TIER_RANK = {
|
|
52
|
-
'first-party': 5,
|
|
53
|
-
shared: 4,
|
|
54
|
-
deduped: 4,
|
|
55
|
-
'iframe-reachable': 3,
|
|
56
|
-
'opaque-embed': 2,
|
|
57
|
-
unsupported: 1,
|
|
58
|
-
};
|
|
59
16
|
/** Default relative path for `server.module` when omitted (§3) — the scaffolded Colyseus bootstrap. */
|
|
60
17
|
export const DEFAULT_SERVER_MODULE = 'server/colyseus-setup.ts';
|
|
61
18
|
const SEMVER_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/;
|
|
@@ -84,16 +41,11 @@ function checkAdapterEntryRules(root) {
|
|
|
84
41
|
throw new Error(`Game manifest: root "${root.id}" uses the '${adapter}' adapter but declares no ` +
|
|
85
42
|
'`entry` — a built-in adapter root is authored as an entry module.');
|
|
86
43
|
}
|
|
44
|
+
if (typeof adapter === 'object' && 'ingest' in adapter && !root.entry) {
|
|
45
|
+
throw new Error(`Game manifest: root "${root.id}" is an { ingest } root but declares no \`entry\` — the ` +
|
|
46
|
+
"game's own entry module is what the host imports.");
|
|
47
|
+
}
|
|
87
48
|
}
|
|
88
|
-
// Historical note (Track N, N1): this file used to reject EVERY `kind:
|
|
89
|
-
// 'react'` + `{ ingest }` root outright here (`checkReactAdapterRestriction`,
|
|
90
|
-
// citing "no react ingest program is un-parked"). Track N un-parks exactly
|
|
91
|
-
// that program — react+ingest is now a structurally legal combination,
|
|
92
|
-
// resolved to the `'ingest-react'` identity by `resolveAdapter` below like
|
|
93
|
-
// any other ingest root. There is nothing left to reject at THIS layer: the
|
|
94
|
-
// v1 "deduped strategy only" restriction is an editor-resolver concern (D-N3),
|
|
95
|
-
// not a manifest-shape concern — see the `ResolvedAdapter` type's comment
|
|
96
|
-
// above.
|
|
97
49
|
// ---------------------------------------------------------------------------
|
|
98
50
|
// Resolution (§5)
|
|
99
51
|
// ---------------------------------------------------------------------------
|
|
@@ -111,8 +63,7 @@ function resolveAdapter(root) {
|
|
|
111
63
|
};
|
|
112
64
|
}
|
|
113
65
|
// isIngestAdapter (Track N, N1: 'ingest-react' joins 'ingest-three'/
|
|
114
|
-
// 'ingest-pixi'
|
|
115
|
-
// this stays strategy-agnostic here).
|
|
66
|
+
// 'ingest-pixi').
|
|
116
67
|
const identity = adapter.surface === 'three'
|
|
117
68
|
? 'ingest-three'
|
|
118
69
|
: adapter.surface === 'canvas'
|
|
@@ -123,56 +74,13 @@ function resolveAdapter(root) {
|
|
|
123
74
|
type: 'ingest',
|
|
124
75
|
identity,
|
|
125
76
|
surface: adapter.surface,
|
|
126
|
-
strategy: ingest.strategy,
|
|
127
|
-
entryHtml: ingest.entryHtml,
|
|
128
77
|
contractShim: ingest.contractShim,
|
|
78
|
+
dataWriter: ingest.dataWriter,
|
|
129
79
|
assets: ingest.assets,
|
|
130
80
|
domStubs: ingest.domStubs,
|
|
131
81
|
captureTimeoutMs: ingest.captureTimeoutMs,
|
|
132
|
-
bundleUrl: ingest.bundleUrl,
|
|
133
|
-
baseHref: ingest.baseHref,
|
|
134
|
-
assetBaseUrl: ingest.assetBaseUrl,
|
|
135
|
-
extraDeps: ingest.extraDeps,
|
|
136
|
-
pixiModuleUrl: ingest.pixiModuleUrl,
|
|
137
|
-
bodyHtml: ingest.bodyHtml,
|
|
138
82
|
};
|
|
139
83
|
}
|
|
140
|
-
function ceilingFor(adapter, context) {
|
|
141
|
-
if (typeof adapter === 'string')
|
|
142
|
-
return CAPABILITY_CEILINGS.builtin[context];
|
|
143
|
-
if (isModuleAdapter(adapter))
|
|
144
|
-
return CAPABILITY_CEILINGS.module[context];
|
|
145
|
-
return CAPABILITY_CEILINGS.ingest[adapter.ingest.strategy][context];
|
|
146
|
-
}
|
|
147
|
-
function resolveCapabilities(root) {
|
|
148
|
-
const contexts = ['local', 'hosted'];
|
|
149
|
-
const result = {};
|
|
150
|
-
for (const context of contexts) {
|
|
151
|
-
const declared = root.capabilities?.[context];
|
|
152
|
-
if (declared !== undefined) {
|
|
153
|
-
const ceiling = ceilingFor(root.adapter, context);
|
|
154
|
-
if (TIER_RANK[declared] > TIER_RANK[ceiling]) {
|
|
155
|
-
throw new Error(`Game manifest: root "${root.id}": declared capabilities.${context} tier "${declared}" ` +
|
|
156
|
-
`exceeds the "${ceiling}" ceiling for this adapter in the ${context} context (§4). ` +
|
|
157
|
-
'Under-claiming (including `unsupported`) is legal; over-claiming is not.');
|
|
158
|
-
}
|
|
159
|
-
result[context] = declared;
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
// Omitted -> derive.
|
|
163
|
-
if (typeof root.adapter === 'string') {
|
|
164
|
-
result[context] = 'first-party';
|
|
165
|
-
}
|
|
166
|
-
else if (isModuleAdapter(root.adapter)) {
|
|
167
|
-
throw new Error(`Game manifest: root "${root.id}": { module } adapter requires an explicit ` +
|
|
168
|
-
`capabilities.${context} declaration — a custom adapter's reach is not derivable (§4).`);
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
result[context] = CAPABILITY_CEILINGS.ingest[root.adapter.ingest.strategy][context];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return result;
|
|
175
|
-
}
|
|
176
84
|
function checkEngineVersionPin(version) {
|
|
177
85
|
if (!SEMVER_RE.test(version)) {
|
|
178
86
|
throw new Error(`Game manifest: engine.version "${version}" is not a valid exact semver string (e.g. ` +
|
|
@@ -181,17 +89,17 @@ function checkEngineVersionPin(version) {
|
|
|
181
89
|
}
|
|
182
90
|
/**
|
|
183
91
|
* Resolve one already-Zod-validated root entry into its `ResolvedAdapterRoot`
|
|
184
|
-
* (adapter identity,
|
|
92
|
+
* (adapter identity, and a pass-through of every other field).
|
|
185
93
|
* Every `AdapterRoot` field participates here or in a check above:
|
|
186
94
|
* `id` drives uniqueness; `adapter` (incl. its surface and
|
|
187
|
-
* `module`/`ingest.*` sub-fields) drives identity
|
|
95
|
+
* `module`/`ingest.*` sub-fields) drives adapter identity
|
|
188
96
|
* resolution; `entry` drives the entry cross-field rule and is
|
|
189
97
|
* carried through; `zOrder` drives the final sort; `pausable`/`loop` are
|
|
190
98
|
* carried through as-is (their consumers are the runtime/CLI, T3.2/T3.3);
|
|
191
99
|
* `dev` is carried through for the four dev-layer readers (`mountManifestRoots`'s
|
|
192
100
|
* ship gate, the host's topmost stacking pass, the play compositor's capture
|
|
193
101
|
* exclusion, and the editor's chrome-not-content seam);
|
|
194
|
-
* `
|
|
102
|
+
* `description` (T3.3
|
|
195
103
|
* slice 3) is carried through as-is — its consumer today is
|
|
196
104
|
* `resolveIngestDescriptor` (packages/editor/src/adapter-resolver.ts), which
|
|
197
105
|
* threads an ingest-three root's description into `IngestGame.description`.
|
|
@@ -209,7 +117,6 @@ function resolveRoot(root) {
|
|
|
209
117
|
pausable: root.pausable,
|
|
210
118
|
dev: root.dev,
|
|
211
119
|
loop: root.loop,
|
|
212
|
-
capabilities: resolveCapabilities(root),
|
|
213
120
|
};
|
|
214
121
|
}
|
|
215
122
|
// ---------------------------------------------------------------------------
|
|
@@ -234,7 +141,7 @@ export function loadGameManifest(raw) {
|
|
|
234
141
|
// raw multi-issue dump, because each one already reads as a finished
|
|
235
142
|
// sentence naming the offending ids. Every other schema violation keeps
|
|
236
143
|
// propagating as the raw `ZodError` it always has (unchanged behavior,
|
|
237
|
-
// e.g.
|
|
144
|
+
// e.g. an unrecognized key or a bad `manifestVersion`).
|
|
238
145
|
const compositionIssue = parsed.error.issues.find((issue) => issue.message.startsWith('Game manifest: duplicate root id') ||
|
|
239
146
|
issue.message.startsWith('Game manifest: a project has at most one'));
|
|
240
147
|
if (compositionIssue)
|
|
@@ -261,6 +168,7 @@ export function loadGameManifest(raw) {
|
|
|
261
168
|
roots,
|
|
262
169
|
server,
|
|
263
170
|
resolution: manifest.resolution,
|
|
171
|
+
rendering: manifest.rendering,
|
|
264
172
|
authoring: manifest.authoring,
|
|
265
173
|
debug: manifest.debug,
|
|
266
174
|
determinism: manifest.determinism,
|
|
@@ -4,99 +4,59 @@ import { z } from 'zod';
|
|
|
4
4
|
* compatibility checks do not duplicate the schema's literal value.
|
|
5
5
|
*/
|
|
6
6
|
export declare const GAME_MANIFEST_VERSION: 2;
|
|
7
|
-
export declare const IngestStrategySchema: z.ZodEnum<{
|
|
8
|
-
shared: "shared";
|
|
9
|
-
deduped: "deduped";
|
|
10
|
-
"iframe-reachable": "iframe-reachable";
|
|
11
|
-
"opaque-embed": "opaque-embed";
|
|
12
|
-
}>;
|
|
13
|
-
export type IngestStrategy = z.infer<typeof IngestStrategySchema>;
|
|
14
|
-
export declare const TierSchema: z.ZodEnum<{
|
|
15
|
-
shared: "shared";
|
|
16
|
-
deduped: "deduped";
|
|
17
|
-
"iframe-reachable": "iframe-reachable";
|
|
18
|
-
"opaque-embed": "opaque-embed";
|
|
19
|
-
"first-party": "first-party";
|
|
20
|
-
unsupported: "unsupported";
|
|
21
|
-
}>;
|
|
22
|
-
export type Tier = z.infer<typeof TierSchema>;
|
|
23
7
|
export declare const RootAdapterSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodEnum<{
|
|
24
|
-
three: "three";
|
|
25
8
|
canvas: "canvas";
|
|
9
|
+
three: "three";
|
|
26
10
|
dom: "dom";
|
|
27
11
|
}>, z.ZodObject<{
|
|
28
12
|
module: z.ZodString;
|
|
29
13
|
surface: z.ZodEnum<{
|
|
30
|
-
three: "three";
|
|
31
14
|
canvas: "canvas";
|
|
15
|
+
three: "three";
|
|
32
16
|
dom: "dom";
|
|
33
17
|
}>;
|
|
34
18
|
}, z.core.$strict>, z.ZodObject<{
|
|
35
19
|
surface: z.ZodEnum<{
|
|
36
|
-
three: "three";
|
|
37
20
|
canvas: "canvas";
|
|
21
|
+
three: "three";
|
|
38
22
|
dom: "dom";
|
|
39
23
|
}>;
|
|
40
24
|
ingest: z.ZodObject<{
|
|
41
|
-
strategy: z.ZodEnum<{
|
|
42
|
-
shared: "shared";
|
|
43
|
-
deduped: "deduped";
|
|
44
|
-
"iframe-reachable": "iframe-reachable";
|
|
45
|
-
"opaque-embed": "opaque-embed";
|
|
46
|
-
}>;
|
|
47
|
-
entryHtml: z.ZodOptional<z.ZodString>;
|
|
48
25
|
contractShim: z.ZodOptional<z.ZodString>;
|
|
26
|
+
dataWriter: z.ZodOptional<z.ZodString>;
|
|
49
27
|
assets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
50
28
|
domStubs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
51
29
|
captureTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
52
|
-
|
|
53
|
-
baseHref: z.ZodOptional<z.ZodString>;
|
|
54
|
-
assetBaseUrl: z.ZodOptional<z.ZodString>;
|
|
55
|
-
extraDeps: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
56
|
-
pixiModuleUrl: z.ZodOptional<z.ZodString>;
|
|
57
|
-
bodyHtml: z.ZodOptional<z.ZodString>;
|
|
58
|
-
}, z.core.$strip>;
|
|
30
|
+
}, z.core.$strict>;
|
|
59
31
|
}, z.core.$strict>]>>;
|
|
60
32
|
export type RootAdapter = z.infer<typeof RootAdapterSchema>;
|
|
61
33
|
export declare const AdapterRootSchema: z.ZodObject<{
|
|
62
34
|
id: z.ZodString;
|
|
63
35
|
description: z.ZodOptional<z.ZodString>;
|
|
64
36
|
adapter: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodEnum<{
|
|
65
|
-
three: "three";
|
|
66
37
|
canvas: "canvas";
|
|
38
|
+
three: "three";
|
|
67
39
|
dom: "dom";
|
|
68
40
|
}>, z.ZodObject<{
|
|
69
41
|
module: z.ZodString;
|
|
70
42
|
surface: z.ZodEnum<{
|
|
71
|
-
three: "three";
|
|
72
43
|
canvas: "canvas";
|
|
44
|
+
three: "three";
|
|
73
45
|
dom: "dom";
|
|
74
46
|
}>;
|
|
75
47
|
}, z.core.$strict>, z.ZodObject<{
|
|
76
48
|
surface: z.ZodEnum<{
|
|
77
|
-
three: "three";
|
|
78
49
|
canvas: "canvas";
|
|
50
|
+
three: "three";
|
|
79
51
|
dom: "dom";
|
|
80
52
|
}>;
|
|
81
53
|
ingest: z.ZodObject<{
|
|
82
|
-
strategy: z.ZodEnum<{
|
|
83
|
-
shared: "shared";
|
|
84
|
-
deduped: "deduped";
|
|
85
|
-
"iframe-reachable": "iframe-reachable";
|
|
86
|
-
"opaque-embed": "opaque-embed";
|
|
87
|
-
}>;
|
|
88
|
-
entryHtml: z.ZodOptional<z.ZodString>;
|
|
89
54
|
contractShim: z.ZodOptional<z.ZodString>;
|
|
55
|
+
dataWriter: z.ZodOptional<z.ZodString>;
|
|
90
56
|
assets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
91
57
|
domStubs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
92
58
|
captureTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
93
|
-
|
|
94
|
-
baseHref: z.ZodOptional<z.ZodString>;
|
|
95
|
-
assetBaseUrl: z.ZodOptional<z.ZodString>;
|
|
96
|
-
extraDeps: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
97
|
-
pixiModuleUrl: z.ZodOptional<z.ZodString>;
|
|
98
|
-
bodyHtml: z.ZodOptional<z.ZodString>;
|
|
99
|
-
}, z.core.$strip>;
|
|
59
|
+
}, z.core.$strict>;
|
|
100
60
|
}, z.core.$strict>]>>;
|
|
101
61
|
entry: z.ZodOptional<z.ZodString>;
|
|
102
62
|
zOrder: z.ZodDefault<z.ZodNumber>;
|
|
@@ -106,24 +66,6 @@ export declare const AdapterRootSchema: z.ZodObject<{
|
|
|
106
66
|
gated: "gated";
|
|
107
67
|
"self-driven": "self-driven";
|
|
108
68
|
}>>;
|
|
109
|
-
capabilities: z.ZodOptional<z.ZodObject<{
|
|
110
|
-
local: z.ZodOptional<z.ZodEnum<{
|
|
111
|
-
shared: "shared";
|
|
112
|
-
deduped: "deduped";
|
|
113
|
-
"iframe-reachable": "iframe-reachable";
|
|
114
|
-
"opaque-embed": "opaque-embed";
|
|
115
|
-
"first-party": "first-party";
|
|
116
|
-
unsupported: "unsupported";
|
|
117
|
-
}>>;
|
|
118
|
-
hosted: z.ZodOptional<z.ZodEnum<{
|
|
119
|
-
shared: "shared";
|
|
120
|
-
deduped: "deduped";
|
|
121
|
-
"iframe-reachable": "iframe-reachable";
|
|
122
|
-
"opaque-embed": "opaque-embed";
|
|
123
|
-
"first-party": "first-party";
|
|
124
|
-
unsupported: "unsupported";
|
|
125
|
-
}>>;
|
|
126
|
-
}, z.core.$strip>>;
|
|
127
69
|
}, z.core.$strict>;
|
|
128
70
|
export type AdapterRoot = z.infer<typeof AdapterRootSchema>;
|
|
129
71
|
export declare const LearnKindSchema: z.ZodEnum<{
|
|
@@ -172,41 +114,29 @@ export declare const GameManifestSchema: z.ZodObject<{
|
|
|
172
114
|
id: z.ZodString;
|
|
173
115
|
description: z.ZodOptional<z.ZodString>;
|
|
174
116
|
adapter: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodEnum<{
|
|
175
|
-
three: "three";
|
|
176
117
|
canvas: "canvas";
|
|
118
|
+
three: "three";
|
|
177
119
|
dom: "dom";
|
|
178
120
|
}>, z.ZodObject<{
|
|
179
121
|
module: z.ZodString;
|
|
180
122
|
surface: z.ZodEnum<{
|
|
181
|
-
three: "three";
|
|
182
123
|
canvas: "canvas";
|
|
124
|
+
three: "three";
|
|
183
125
|
dom: "dom";
|
|
184
126
|
}>;
|
|
185
127
|
}, z.core.$strict>, z.ZodObject<{
|
|
186
128
|
surface: z.ZodEnum<{
|
|
187
|
-
three: "three";
|
|
188
129
|
canvas: "canvas";
|
|
130
|
+
three: "three";
|
|
189
131
|
dom: "dom";
|
|
190
132
|
}>;
|
|
191
133
|
ingest: z.ZodObject<{
|
|
192
|
-
strategy: z.ZodEnum<{
|
|
193
|
-
shared: "shared";
|
|
194
|
-
deduped: "deduped";
|
|
195
|
-
"iframe-reachable": "iframe-reachable";
|
|
196
|
-
"opaque-embed": "opaque-embed";
|
|
197
|
-
}>;
|
|
198
|
-
entryHtml: z.ZodOptional<z.ZodString>;
|
|
199
134
|
contractShim: z.ZodOptional<z.ZodString>;
|
|
135
|
+
dataWriter: z.ZodOptional<z.ZodString>;
|
|
200
136
|
assets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
201
137
|
domStubs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
202
138
|
captureTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
203
|
-
|
|
204
|
-
baseHref: z.ZodOptional<z.ZodString>;
|
|
205
|
-
assetBaseUrl: z.ZodOptional<z.ZodString>;
|
|
206
|
-
extraDeps: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
207
|
-
pixiModuleUrl: z.ZodOptional<z.ZodString>;
|
|
208
|
-
bodyHtml: z.ZodOptional<z.ZodString>;
|
|
209
|
-
}, z.core.$strip>;
|
|
139
|
+
}, z.core.$strict>;
|
|
210
140
|
}, z.core.$strict>]>>;
|
|
211
141
|
entry: z.ZodOptional<z.ZodString>;
|
|
212
142
|
zOrder: z.ZodDefault<z.ZodNumber>;
|
|
@@ -216,24 +146,6 @@ export declare const GameManifestSchema: z.ZodObject<{
|
|
|
216
146
|
gated: "gated";
|
|
217
147
|
"self-driven": "self-driven";
|
|
218
148
|
}>>;
|
|
219
|
-
capabilities: z.ZodOptional<z.ZodObject<{
|
|
220
|
-
local: z.ZodOptional<z.ZodEnum<{
|
|
221
|
-
shared: "shared";
|
|
222
|
-
deduped: "deduped";
|
|
223
|
-
"iframe-reachable": "iframe-reachable";
|
|
224
|
-
"opaque-embed": "opaque-embed";
|
|
225
|
-
"first-party": "first-party";
|
|
226
|
-
unsupported: "unsupported";
|
|
227
|
-
}>>;
|
|
228
|
-
hosted: z.ZodOptional<z.ZodEnum<{
|
|
229
|
-
shared: "shared";
|
|
230
|
-
deduped: "deduped";
|
|
231
|
-
"iframe-reachable": "iframe-reachable";
|
|
232
|
-
"opaque-embed": "opaque-embed";
|
|
233
|
-
"first-party": "first-party";
|
|
234
|
-
unsupported: "unsupported";
|
|
235
|
-
}>>;
|
|
236
|
-
}, z.core.$strip>>;
|
|
237
149
|
}, z.core.$strict>>;
|
|
238
150
|
authoring: z.ZodOptional<z.ZodObject<{
|
|
239
151
|
hierarchy: z.ZodOptional<z.ZodObject<{
|
|
@@ -258,6 +170,9 @@ export declare const GameManifestSchema: z.ZodObject<{
|
|
|
258
170
|
width: z.ZodNumber;
|
|
259
171
|
height: z.ZodNumber;
|
|
260
172
|
}, z.core.$strip>>;
|
|
173
|
+
rendering: z.ZodOptional<z.ZodObject<{
|
|
174
|
+
antialias: z.ZodBoolean;
|
|
175
|
+
}, z.core.$strict>>;
|
|
261
176
|
debug: z.ZodOptional<z.ZodObject<{
|
|
262
177
|
allowInProduction: z.ZodBoolean;
|
|
263
178
|
}, z.core.$strip>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAsFhD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;qBAuG3B,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsDnB,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAkB5D,eAAO,MAAM,eAAe;;;;;EAMzB,CAAC;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,qBAAqB;;;;EAEa,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;kBAqC7B,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqTyD,CAAC;AAEzF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|