@forgeax/engine-pack 0.1.3 → 0.1.6
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 +52 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/owner-chain.integration.test.d.ts +2 -0
- package/dist/__tests__/owner-chain.integration.test.d.ts.map +1 -0
- package/dist/__tests__/package-finalizer.contract.test.d.ts +2 -0
- package/dist/__tests__/package-finalizer.contract.test.d.ts.map +1 -0
- package/dist/__tests__/runtime.browser.test.d.ts +2 -0
- package/dist/__tests__/runtime.browser.test.d.ts.map +1 -0
- package/dist/__tests__/scanner-inventory.contract.test.d.ts +2 -0
- package/dist/__tests__/scanner-inventory.contract.test.d.ts.map +1 -0
- package/dist/artifact-path.mjs +53 -0
- package/dist/artifact-path.mjs.map +1 -0
- package/dist/atlas/shelf-pack.d.ts.map +1 -1
- package/dist/build.d.ts +19 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.mjs +10168 -0
- package/dist/build.mjs.map +1 -0
- package/dist/builtin.d.ts +20 -0
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.mjs +141 -0
- package/dist/builtin.mjs.map +1 -0
- package/dist/catalog-builder.d.ts +43 -0
- package/dist/catalog-builder.d.ts.map +1 -0
- package/dist/catalog-delta.d.ts +11 -0
- package/dist/catalog-delta.d.ts.map +1 -0
- package/dist/catalog-projection.d.ts +91 -0
- package/dist/catalog-projection.d.ts.map +1 -0
- package/dist/cli-asset.mjs +231 -484
- package/dist/cli-asset.mjs.map +1 -1
- package/dist/index.mjs +83 -1
- package/dist/index.mjs.map +1 -1
- package/dist/material-cook.d.ts +2 -0
- package/dist/material-cook.d.ts.map +1 -0
- package/dist/material-cook.mjs +193 -0
- package/dist/material-cook.mjs.map +1 -0
- package/dist/mesh-bin-contract.mjs +96 -0
- package/dist/mesh-bin-contract.mjs.map +1 -0
- package/dist/native-cooker-registry.d.ts +19 -0
- package/dist/native-cooker-registry.d.ts.map +1 -1
- package/dist/native-cooker.mjs +37 -0
- package/dist/native-cooker.mjs.map +1 -1
- package/dist/package-finalizer.d.ts +121 -0
- package/dist/package-finalizer.d.ts.map +1 -0
- package/dist/resolve-asset-source.d.ts.map +1 -1
- package/dist/resolve-asset-source.mjs +16 -6
- package/dist/resolve-asset-source.mjs.map +1 -1
- package/dist/runtime-publication.d.ts +44 -0
- package/dist/runtime-publication.d.ts.map +1 -0
- package/dist/runtime.d.ts +8 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.mjs +7261 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/scanner.d.ts +87 -54
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.mjs +258 -454
- package/dist/scanner.mjs.map +1 -1
- package/dist/scriptable-pack-node.d.ts +3 -8
- package/dist/scriptable-pack-node.d.ts.map +1 -1
- package/dist/scriptable-pack-node.mjs +93 -9
- package/dist/scriptable-pack-node.mjs.map +1 -1
- package/dist/scriptable-pack-worker.mjs +1 -0
- package/dist/scriptable-pack-worker.mjs.map +1 -1
- package/dist/scriptable-pack.d.ts +33 -0
- package/dist/scriptable-pack.d.ts.map +1 -1
- package/dist/scriptable-pack.mjs +91 -2
- package/dist/scriptable-pack.mjs.map +1 -1
- package/dist/topology.d.ts +1 -1
- package/dist/topology.d.ts.map +1 -1
- package/package.json +27 -2
- package/src/__tests__/mesh-bin-consumer-surface.unit.test.ts +2 -1
- package/src/__tests__/owner-chain.integration.test.ts +78 -0
- package/src/__tests__/package-finalizer.contract.test.ts +105 -0
- package/src/__tests__/runtime.browser.test.ts +15 -0
- package/src/__tests__/scanner-inventory.contract.test.ts +167 -0
- package/src/__tests__/scanner-inventory.test.ts +16 -12
- package/src/__tests__/scriptable-pack.unit.test.ts +42 -0
- package/src/atlas/shelf-pack.ts +20 -24
- package/src/build.ts +139 -0
- package/src/builtin.ts +38 -0
- package/src/catalog-builder.ts +313 -0
- package/src/catalog-delta.ts +189 -0
- package/src/catalog-projection.ts +344 -0
- package/src/cli-asset.ts +1 -5
- package/src/index.ts +2 -2
- package/src/material-cook.ts +13 -0
- package/src/native-cooker-registry.ts +72 -0
- package/src/package-finalizer.ts +394 -0
- package/src/resolve-asset-source.ts +2 -7
- package/src/runtime-publication.ts +190 -0
- package/src/runtime.ts +23 -0
- package/src/scanner.ts +289 -290
- package/src/scriptable-pack-node.ts +27 -23
- package/src/scriptable-pack-worker.ts +2 -0
- package/src/scriptable-pack.ts +123 -1
- package/src/topology.ts +2 -1
package/dist/scanner.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { CatalogDiagnostic, ProviderProvenance, ResourceRevision, SourceOverrideDescriptor } from '@forgeax/engine-types';
|
|
1
2
|
import { PackError } from './errors.js';
|
|
2
|
-
import { type ScriptablePackMetaJson } from './scriptable-pack.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type ScriptablePackDefinition, type ScriptablePackMetaJson, type ScriptablePackSourceClosureEntry } from './scriptable-pack.js';
|
|
4
|
+
import { type ScriptablePackModuleExecutor } from './scriptable-pack-node.js';
|
|
4
5
|
export type ScanResult<T, E> = {
|
|
5
6
|
readonly ok: true;
|
|
6
7
|
readonly value: T;
|
|
@@ -11,70 +12,102 @@ export type ScanResult<T, E> = {
|
|
|
11
12
|
/** Host-owned source paths that should not enter the Pack catalog. */
|
|
12
13
|
export interface ScanOptions {
|
|
13
14
|
readonly ignorePath?: (path: string) => boolean;
|
|
14
|
-
|
|
15
|
-
readonly scriptablePackLoad?: LoadScriptablePackOptions;
|
|
15
|
+
readonly scriptablePack?: ScriptablePackScanOptions;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
export interface
|
|
17
|
+
/** One bounded executor policy shared by ScriptablePack inventory and production. */
|
|
18
|
+
export interface ScriptablePackScanOptions {
|
|
19
|
+
readonly timeoutMs?: number;
|
|
20
|
+
readonly buildTimeoutMs?: number;
|
|
21
|
+
readonly executor?: ScriptablePackModuleExecutor;
|
|
22
|
+
/** Path-only scans must release the isolated loader before returning. */
|
|
23
|
+
readonly metadataOnly?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** Stable default policy shared by inventory and production owners. */
|
|
26
|
+
export declare const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS: Readonly<{}>;
|
|
27
|
+
export interface InventoryDeclaration {
|
|
19
28
|
readonly guid: string;
|
|
29
|
+
readonly kind: string;
|
|
30
|
+
readonly sourcePath: string;
|
|
31
|
+
readonly sourceRevision: string;
|
|
20
32
|
readonly sourceKey?: string;
|
|
21
33
|
readonly sourceIndex?: number;
|
|
22
|
-
readonly kind: string;
|
|
23
|
-
readonly name?: string;
|
|
24
|
-
readonly execution?: 'direct' | 'cooked';
|
|
25
|
-
readonly refs: readonly string[];
|
|
26
34
|
}
|
|
27
|
-
export interface
|
|
28
|
-
readonly
|
|
35
|
+
export interface ScanInventory {
|
|
36
|
+
readonly paths: readonly string[];
|
|
37
|
+
readonly inventory: readonly InventoryDeclaration[];
|
|
38
|
+
/** Complete parsed source declarations captured by the validated scan pass. */
|
|
39
|
+
readonly declarations: ReadonlyMap<string, ScanSourceDeclaration>;
|
|
40
|
+
}
|
|
41
|
+
export interface ScriptablePackInventoryDeclaration {
|
|
42
|
+
readonly sourcePath: string;
|
|
43
|
+
readonly sourceRevision: string;
|
|
44
|
+
readonly meta: ScriptablePackMetaJson;
|
|
45
|
+
readonly definition: Readonly<ScriptablePackDefinition>;
|
|
46
|
+
readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];
|
|
47
|
+
}
|
|
48
|
+
export interface MetaInventoryDocument {
|
|
49
|
+
readonly schemaVersion: string | number;
|
|
50
|
+
readonly kind: 'external-asset-package';
|
|
29
51
|
readonly packageId?: string;
|
|
30
|
-
readonly importer?: string;
|
|
31
|
-
readonly source?: string;
|
|
32
52
|
readonly name?: string;
|
|
33
|
-
readonly
|
|
34
|
-
readonly
|
|
53
|
+
readonly provenance?: ProviderProvenance;
|
|
54
|
+
readonly revision?: ResourceRevision;
|
|
55
|
+
readonly diagnostics?: readonly CatalogDiagnostic[];
|
|
56
|
+
readonly importer: string;
|
|
57
|
+
readonly source?: string;
|
|
58
|
+
readonly importSettings: Readonly<Record<string, unknown>>;
|
|
59
|
+
readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
|
|
60
|
+
readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];
|
|
61
|
+
readonly paramSchema?: readonly Readonly<Record<string, unknown>>[];
|
|
62
|
+
readonly subAssets: readonly MetaInventorySubAsset[];
|
|
35
63
|
}
|
|
36
|
-
export interface
|
|
37
|
-
readonly
|
|
38
|
-
readonly
|
|
64
|
+
export interface MetaInventorySubAsset {
|
|
65
|
+
readonly guid: string;
|
|
66
|
+
readonly sourceIndex: number;
|
|
67
|
+
readonly sourceKey?: string;
|
|
68
|
+
readonly name?: string;
|
|
69
|
+
readonly kind: string;
|
|
39
70
|
}
|
|
40
|
-
export interface
|
|
41
|
-
readonly
|
|
42
|
-
readonly
|
|
43
|
-
readonly producer: AssetInventoryProducerKind;
|
|
71
|
+
export interface PackInventoryDocument {
|
|
72
|
+
readonly schemaVersion: '1.0.0' | '2.0.0';
|
|
73
|
+
readonly kind: 'internal-text-package';
|
|
44
74
|
readonly packageId?: string;
|
|
45
|
-
readonly
|
|
46
|
-
readonly
|
|
47
|
-
readonly
|
|
48
|
-
readonly
|
|
49
|
-
readonly diagnostics: readonly AssetInventoryDiagnostic[];
|
|
75
|
+
readonly provenance?: ProviderProvenance;
|
|
76
|
+
readonly revision?: ResourceRevision;
|
|
77
|
+
readonly diagnostics?: readonly CatalogDiagnostic[];
|
|
78
|
+
readonly assets: readonly PackInventoryAsset[];
|
|
50
79
|
}
|
|
51
|
-
export interface
|
|
52
|
-
readonly
|
|
53
|
-
readonly
|
|
54
|
-
|
|
55
|
-
readonly
|
|
56
|
-
readonly
|
|
57
|
-
|
|
58
|
-
readonly
|
|
59
|
-
readonly
|
|
80
|
+
export interface PackInventoryAsset {
|
|
81
|
+
readonly guid: string;
|
|
82
|
+
readonly kind: string;
|
|
83
|
+
readonly name?: string;
|
|
84
|
+
readonly execution?: 'direct' | 'cooked';
|
|
85
|
+
readonly sourceKey?: string;
|
|
86
|
+
readonly sourceIndex?: number;
|
|
87
|
+
readonly payload: Readonly<Record<string, unknown>>;
|
|
88
|
+
readonly refs: readonly string[];
|
|
89
|
+
readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
|
|
60
90
|
}
|
|
91
|
+
export type ScanSourceDeclaration = {
|
|
92
|
+
readonly format: 'meta.json';
|
|
93
|
+
readonly sourcePath: string;
|
|
94
|
+
readonly sourceRevision: string;
|
|
95
|
+
readonly value: MetaInventoryDocument;
|
|
96
|
+
} | {
|
|
97
|
+
readonly format: 'pack.json';
|
|
98
|
+
readonly sourcePath: string;
|
|
99
|
+
readonly sourceRevision: string;
|
|
100
|
+
readonly sourceText: string;
|
|
101
|
+
readonly value: PackInventoryDocument;
|
|
102
|
+
} | ({
|
|
103
|
+
readonly format: 'pack.ts';
|
|
104
|
+
readonly sourcePath: string;
|
|
105
|
+
readonly sourceRevision: string;
|
|
106
|
+
readonly value: ScriptablePackMetaJson;
|
|
107
|
+
} & ScriptablePackInventoryDeclaration);
|
|
61
108
|
export declare const SCANNER_BLACKLIST: ReadonlySet<string>;
|
|
62
|
-
/**
|
|
63
|
-
* Scan one or more root directories for `.meta.json`, `.pack.json`, and `.pack.ts` files.
|
|
64
|
-
* Runs a 7-step fail-fast validation chain (w17 + M7-T01):
|
|
65
|
-
* Step 1 - collect all .meta.json + .pack.json + .pack.ts paths (blacklist skipped)
|
|
66
|
-
* Step 2 - schema validation (ajv strict)
|
|
67
|
-
* Step 3 - GUID string format validation
|
|
68
|
-
* Step 4 - GUID collision detection
|
|
69
|
-
* Step 5 - orphan .meta.json detection
|
|
70
|
-
* Step 6 - cyclic reference detection (hand-written DFS)
|
|
71
|
-
* Step 7 - complete pack and source closure validation
|
|
72
|
-
*
|
|
73
|
-
* Returns one reusable `AssetInventory` or `Err(PackError)` on the first violation.
|
|
74
|
-
*
|
|
75
|
-
* NOTE: source files without a .meta.json are logged but not fatal (requirements §5).
|
|
76
|
-
*/
|
|
77
|
-
export declare function scanInventory(roots: readonly string[], opts?: ScanOptions): Promise<ScanResult<AssetInventory, PackError>>;
|
|
78
|
-
/** Compatibility projection for callers that only need discovered paths. */
|
|
109
|
+
/** Scan one complete Pack inventory while preserving the public path-only API. */
|
|
79
110
|
export declare function scan(roots: readonly string[], opts?: ScanOptions): Promise<ScanResult<string[], PackError>>;
|
|
111
|
+
/** Return the validated source inventory without interpreting producer output kinds. */
|
|
112
|
+
export declare function scanInventory(roots: readonly string[], opts?: ScanOptions): Promise<ScanResult<ScanInventory, PackError>>;
|
|
80
113
|
//# sourceMappingURL=scanner.d.ts.map
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
|