@forgeax/engine-import 0.1.23 → 0.1.24
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 +5 -5
- package/dist/__tests__/scriptable-pack-build.unit.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-build.unit.test.d.ts.map +1 -0
- package/dist/build-production.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +230 -56
- package/dist/index.mjs.map +1 -1
- package/dist/{parameterized-scriptable-pack.d.ts → scriptable-pack-build.d.ts} +15 -15
- package/dist/scriptable-pack-build.d.ts.map +1 -0
- package/dist/scriptable-pack-host.d.ts +13 -13
- package/dist/scriptable-pack-host.d.ts.map +1 -1
- package/dist/scriptable-pack.d.ts +2 -1
- package/dist/scriptable-pack.d.ts.map +1 -1
- package/dist/source-package-publication.d.ts +7 -0
- package/dist/source-package-publication.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/__tests__/{parameterized-scriptable-pack.unit.test.ts → scriptable-pack-build.unit.test.ts} +11 -14
- package/src/__tests__/scriptable-pack-host.unit.test.ts +5 -5
- package/src/__tests__/source-package-publication.integration.test.ts +141 -0
- package/src/build-production.ts +44 -50
- package/src/index.ts +17 -16
- package/src/{parameterized-scriptable-pack.ts → scriptable-pack-build.ts} +24 -24
- package/src/scriptable-pack-host.ts +38 -40
- package/src/scriptable-pack.ts +2 -1
- package/src/source-package-publication.ts +242 -10
- package/dist/__tests__/parameterized-scriptable-pack.unit.test.d.ts +0 -2
- package/dist/__tests__/parameterized-scriptable-pack.unit.test.d.ts.map +0 -1
- package/dist/parameterized-scriptable-pack.d.ts.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type AnyScriptablePackDefinition, type PackAuthoringError, PackageId, type PackParameterValue } from '@forgeax/engine-pack/source';
|
|
2
2
|
import type { AssetPublicationEnvelope, Result } from '@forgeax/engine-types';
|
|
3
3
|
import { AssetError, ImportError } from '@forgeax/engine-types';
|
|
4
4
|
import { type TerminalImportProduct } from './import-product.js';
|
|
5
|
-
import type { AssetOutputProducerRegistry,
|
|
6
|
-
export interface
|
|
7
|
-
readonly definition:
|
|
5
|
+
import type { AssetOutputProducerRegistry, PackBuildProduct, ScriptablePackAssetSnapshotSource, ScriptablePackDomainError, ScriptablePackSourceClosureEntry, ScriptablePackStagedOutput } from './scriptable-pack.js';
|
|
6
|
+
export interface ScriptablePackBuildOptions {
|
|
7
|
+
readonly definition: AnyScriptablePackDefinition;
|
|
8
8
|
readonly sourcePath: string;
|
|
9
9
|
/** Instance identity. Omitted for a root source and defaults to definition.packageId. */
|
|
10
10
|
readonly subjectPackageId?: PackageId;
|
|
@@ -22,10 +22,10 @@ export interface ParameterizedScriptablePackBuildOptions {
|
|
|
22
22
|
readonly deferReferenceValidation?: boolean;
|
|
23
23
|
readonly publication?: AssetPublicationEnvelope;
|
|
24
24
|
}
|
|
25
|
-
export interface
|
|
25
|
+
export interface ScriptablePackBuildProduct extends PackBuildProduct {
|
|
26
26
|
readonly publication?: AssetPublicationEnvelope;
|
|
27
27
|
}
|
|
28
|
-
export type
|
|
28
|
+
export type ScriptablePackBuildResult = Result<ScriptablePackBuildProduct, PackAuthoringError | ScriptablePackDomainError | AssetError | ImportError | {
|
|
29
29
|
readonly code: string;
|
|
30
30
|
readonly expected: string;
|
|
31
31
|
readonly hint: string;
|
|
@@ -35,34 +35,34 @@ export type ParameterizedScriptablePackBuildResult = Result<ParameterizedScripta
|
|
|
35
35
|
* Execute a v2 Pack source and project its dynamic output map through the
|
|
36
36
|
* existing importer producers. No output GUID or output manifest is read.
|
|
37
37
|
*/
|
|
38
|
-
export declare function
|
|
39
|
-
export interface
|
|
40
|
-
readonly definition:
|
|
38
|
+
export declare function buildScriptablePack(options: ScriptablePackBuildOptions): Promise<ScriptablePackBuildResult>;
|
|
39
|
+
export interface ScriptablePackBuildWorkItem {
|
|
40
|
+
readonly definition: AnyScriptablePackDefinition;
|
|
41
41
|
readonly sourcePath: string;
|
|
42
42
|
readonly subjectPackageId?: PackageId;
|
|
43
43
|
readonly values?: Readonly<Record<string, unknown>>;
|
|
44
44
|
readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;
|
|
45
45
|
readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];
|
|
46
46
|
}
|
|
47
|
-
export interface
|
|
48
|
-
readonly subjects: readonly
|
|
47
|
+
export interface ScriptablePackBuildWorklistOptions {
|
|
48
|
+
readonly subjects: readonly ScriptablePackBuildWorkItem[];
|
|
49
49
|
readonly outputs: AssetOutputProducerRegistry;
|
|
50
50
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
51
51
|
readonly availableGuids?: ReadonlySet<string>;
|
|
52
52
|
readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;
|
|
53
53
|
readonly maxPasses?: number;
|
|
54
54
|
}
|
|
55
|
-
export interface
|
|
55
|
+
export interface ScriptablePackBuildWorklistProduct {
|
|
56
56
|
readonly products: readonly TerminalImportProduct<unknown>[];
|
|
57
|
-
readonly buildProducts: readonly
|
|
57
|
+
readonly buildProducts: readonly ScriptablePackBuildProduct[];
|
|
58
58
|
readonly stagedOutputs: readonly ScriptablePackStagedOutput[];
|
|
59
59
|
readonly iterations: number;
|
|
60
60
|
}
|
|
61
61
|
/** Build subjects in stable passes; content reads may wait for a later subject. */
|
|
62
|
-
export declare function
|
|
62
|
+
export declare function buildScriptablePackWorklist(options: ScriptablePackBuildWorklistOptions): Promise<Result<ScriptablePackBuildWorklistProduct, PackAuthoringError | ScriptablePackDomainError | AssetError | ImportError | {
|
|
63
63
|
readonly code: string;
|
|
64
64
|
readonly expected: string;
|
|
65
65
|
readonly hint: string;
|
|
66
66
|
readonly detail?: unknown;
|
|
67
67
|
}>>;
|
|
68
|
-
//# sourceMappingURL=
|
|
68
|
+
//# sourceMappingURL=scriptable-pack-build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptable-pack-build.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-build.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,33 +2,33 @@ import { finalizePackageTransportSource, type PackageFinalizePolicy } from '@for
|
|
|
2
2
|
import { type PackageId as PackageIdType } from '@forgeax/engine-pack/guid';
|
|
3
3
|
import { type NativeCooker } from '@forgeax/engine-pack/native-cooker';
|
|
4
4
|
import type { LegacyPackInventoryDocument, ScanSourceDeclaration } from '@forgeax/engine-pack/scanner';
|
|
5
|
-
import { type
|
|
5
|
+
import { type AnyScriptablePackDefinition, type DirectPackAssetProjection, type ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';
|
|
6
6
|
import type { AssetGuid as AssetGuidType, AssetPublicationEnvelope, AssetPublicationOutput, ResourceRevision, Result } from '@forgeax/engine-types';
|
|
7
7
|
import type { DdcPack, ImportRunnerFs } from './import-runner.js';
|
|
8
8
|
import type { ImporterRegistry } from './importer-registry.js';
|
|
9
|
-
import { type ParameterizedScriptablePackBuildProduct } from './parameterized-scriptable-pack.js';
|
|
10
9
|
import type { ScriptablePackAssetSnapshotSource, ScriptablePackStagedOutput } from './scriptable-pack.js';
|
|
10
|
+
import { type ScriptablePackBuildProduct } from './scriptable-pack-build.js';
|
|
11
11
|
type FinalizedPackageTransport = Awaited<ReturnType<typeof finalizePackageTransportSource>>;
|
|
12
|
-
export interface
|
|
12
|
+
export interface ScriptablePackInput {
|
|
13
13
|
readonly sourcePath: string;
|
|
14
14
|
readonly displaySourcePath: string;
|
|
15
|
-
readonly definition:
|
|
15
|
+
readonly definition: AnyScriptablePackDefinition;
|
|
16
16
|
readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];
|
|
17
17
|
readonly publicationGeneration: number;
|
|
18
|
-
readonly policy: PackageFinalizePolicy | ((product:
|
|
18
|
+
readonly policy: PackageFinalizePolicy | ((product: ScriptablePackBuildProduct) => PackageFinalizePolicy);
|
|
19
19
|
readonly subjectPackageId?: PackageIdType;
|
|
20
20
|
readonly values?: Readonly<Record<string, unknown>>;
|
|
21
21
|
readonly inheritedValues?: Readonly<Record<string, import('@forgeax/engine-pack/source').PackParameterValue>>;
|
|
22
22
|
}
|
|
23
|
-
export interface
|
|
24
|
-
readonly product:
|
|
23
|
+
export interface PreparedScriptablePack {
|
|
24
|
+
readonly product: ScriptablePackBuildProduct;
|
|
25
25
|
readonly finalized: FinalizedPackageTransport;
|
|
26
26
|
readonly facts: ScriptablePackPublicationFacts;
|
|
27
27
|
readonly revision: ResourceRevision;
|
|
28
28
|
readonly publication: AssetPublicationEnvelope;
|
|
29
29
|
}
|
|
30
|
-
export interface
|
|
31
|
-
readonly sources: readonly
|
|
30
|
+
export interface ScriptablePackProductionOptions {
|
|
31
|
+
readonly sources: readonly ScriptablePackInput[];
|
|
32
32
|
readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];
|
|
33
33
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
34
34
|
readonly availableGuids?: ReadonlySet<string>;
|
|
@@ -73,7 +73,7 @@ export interface DirectPackTransport {
|
|
|
73
73
|
readonly packageId: string;
|
|
74
74
|
readonly assets: readonly DirectPackAssetProjection[];
|
|
75
75
|
};
|
|
76
|
-
readonly product:
|
|
76
|
+
readonly product: ScriptablePackBuildProduct;
|
|
77
77
|
readonly finalized: FinalizedPackageTransport;
|
|
78
78
|
readonly facts: ScriptablePackPublicationFacts;
|
|
79
79
|
readonly revision: ResourceRevision;
|
|
@@ -92,12 +92,12 @@ export declare function prepareDirectPackTransport(input: DirectPackTransportInp
|
|
|
92
92
|
/** Normalize one explicit Pack v2 transport and invoke its registered cookers once. */
|
|
93
93
|
export declare function prepareLegacyPackTransport(authoredPack: LegacyPackInventoryDocument, cookers: readonly NativeCooker[] | undefined, policyFor: (guid: string) => PackageFinalizePolicy, sourcePath?: string): Promise<LegacyPackTransport>;
|
|
94
94
|
/** Materialize a dynamic Pack product through the same dev transport seam. */
|
|
95
|
-
export declare function
|
|
95
|
+
export declare function materializePreparedScriptablePack(prepared: PreparedScriptablePack, paths: ScriptablePackTransportPaths, sink: ScriptablePackTransportSink): Promise<ReadonlyMap<string, string>>;
|
|
96
96
|
/**
|
|
97
|
-
* Build
|
|
97
|
+
* Build ScriptablePack sources in one generation and hand their terminal
|
|
98
98
|
* products to the ordinary Pack v2 finalizer. The worklist is deliberately
|
|
99
99
|
* below publication: it only decides which current-generation products exist.
|
|
100
100
|
*/
|
|
101
|
-
export declare function
|
|
101
|
+
export declare function produceScriptablePackProducts(options: ScriptablePackProductionOptions): Promise<Result<ReadonlyMap<string, PreparedScriptablePack>, unknown>>;
|
|
102
102
|
export {};
|
|
103
103
|
//# sourceMappingURL=scriptable-pack-host.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scriptable-pack-host.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-host.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,8BAA8B,EAC9B,KAAK,qBAAqB,EAI3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAwB,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"scriptable-pack-host.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,7 +108,8 @@ export interface ScriptablePackExternalEvidence {
|
|
|
108
108
|
readonly generation?: number;
|
|
109
109
|
readonly digest?: string;
|
|
110
110
|
}
|
|
111
|
-
|
|
111
|
+
/** Shared terminal product envelope for every Pack source form. */
|
|
112
|
+
export interface PackBuildProduct {
|
|
112
113
|
readonly product: TerminalImportProduct<unknown>;
|
|
113
114
|
readonly stagedOutputs: readonly ScriptablePackStagedOutput[];
|
|
114
115
|
readonly externalEvidence: readonly ScriptablePackExternalEvidence[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scriptable-pack.d.ts","sourceRoot":"","sources":["../src/scriptable-pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,SAAS,IAAI,aAAa,EAC1B,wBAAwB,EACxB,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAErF,YAAY,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAEpF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iCAAiC;IAChD,UAAU,CACR,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,uBAAuB,CAAC,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAAG;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD,CAAC;AAEF,KAAK,gBAAgB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEpF,KAAK,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAElG,KAAK,yBAAyB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,CACrB,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACnE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,MAAM,CAAC,GAAG;QACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC,CACL,EAAE,CAAC;CACL,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IAC/E,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CACL,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;CAC/F;AAED,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IAEpE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAU7C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIlD,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAO7C;AAED,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"scriptable-pack.d.ts","sourceRoot":"","sources":["../src/scriptable-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,15 @@ export interface ImportPublicationInput {
|
|
|
17
17
|
readonly transport?: {
|
|
18
18
|
readonly path: string;
|
|
19
19
|
readonly body: string;
|
|
20
|
+
/** Complete package-relative artifact closure for the published Pack. */
|
|
21
|
+
readonly artifacts?: readonly ImportPublicationArtifact[];
|
|
20
22
|
};
|
|
21
23
|
}
|
|
24
|
+
export interface ImportPublicationArtifact {
|
|
25
|
+
readonly path: string;
|
|
26
|
+
readonly mediaType: string;
|
|
27
|
+
readonly bytes: Uint8Array;
|
|
28
|
+
}
|
|
22
29
|
export interface ImportPublicationError {
|
|
23
30
|
readonly code: SourcePackageError['code'];
|
|
24
31
|
readonly expected: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-package-publication.d.ts","sourceRoot":"","sources":["../src/source-package-publication.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"source-package-publication.d.ts","sourceRoot":"","sources":["../src/source-package-publication.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgeax/engine-import",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.24",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
"LICENSE"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@forgeax/engine-ddc": "0.1.
|
|
31
|
-
"@forgeax/engine-ecs": "0.1.
|
|
32
|
-
"@forgeax/engine-geometry": "0.1.
|
|
33
|
-
"@forgeax/engine-pack": "0.1.
|
|
34
|
-
"@forgeax/engine-scene": "0.1.
|
|
35
|
-
"@forgeax/engine-shader": "0.1.
|
|
36
|
-
"@forgeax/engine-types": "0.1.
|
|
30
|
+
"@forgeax/engine-ddc": "0.1.24",
|
|
31
|
+
"@forgeax/engine-ecs": "0.1.24",
|
|
32
|
+
"@forgeax/engine-geometry": "0.1.24",
|
|
33
|
+
"@forgeax/engine-pack": "0.1.24",
|
|
34
|
+
"@forgeax/engine-scene": "0.1.24",
|
|
35
|
+
"@forgeax/engine-shader": "0.1.24",
|
|
36
|
+
"@forgeax/engine-types": "0.1.24",
|
|
37
37
|
"@noble/hashes": "^2.2.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { AssetGuid, definePack, definePackageId, PackageId } from '@forgeax/engine-pack/source';
|
|
2
2
|
import { err, ok } from '@forgeax/engine-types';
|
|
3
3
|
import { describe, expect, it } from 'vitest';
|
|
4
|
-
import {
|
|
5
|
-
buildParameterizedScriptablePack,
|
|
6
|
-
buildParameterizedScriptablePackWorklist,
|
|
7
|
-
} from '../parameterized-scriptable-pack.js';
|
|
8
4
|
import type { ScriptablePackAssetSnapshotSource } from '../scriptable-pack.js';
|
|
9
5
|
import { AssetOutputProducerRegistry } from '../scriptable-pack.js';
|
|
10
|
-
import {
|
|
6
|
+
import { buildScriptablePack, buildScriptablePackWorklist } from '../scriptable-pack-build.js';
|
|
7
|
+
import { produceScriptablePackProducts } from '../scriptable-pack-host.js';
|
|
11
8
|
|
|
12
9
|
function id(value: string) {
|
|
13
10
|
const result = PackageId.parse(value);
|
|
@@ -29,7 +26,7 @@ function producers() {
|
|
|
29
26
|
return registry;
|
|
30
27
|
}
|
|
31
28
|
|
|
32
|
-
describe('
|
|
29
|
+
describe('ScriptablePack import bridge with optional parameters', () => {
|
|
33
30
|
it('uses the subject packageId and dynamic sourceKey output map', async () => {
|
|
34
31
|
const packageId = definePackageId('01900000-0000-7000-8000-000000000040');
|
|
35
32
|
const definition = definePack({
|
|
@@ -43,7 +40,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
43
40
|
),
|
|
44
41
|
),
|
|
45
42
|
});
|
|
46
|
-
const result = await
|
|
43
|
+
const result = await buildScriptablePack({
|
|
47
44
|
definition,
|
|
48
45
|
sourcePath: 'assets/param.pack.ts',
|
|
49
46
|
values: { count: 2 },
|
|
@@ -79,7 +76,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
79
76
|
return ok({ 'scene/second': scene() });
|
|
80
77
|
},
|
|
81
78
|
});
|
|
82
|
-
const result = await
|
|
79
|
+
const result = await buildScriptablePackWorklist({
|
|
83
80
|
subjects: [
|
|
84
81
|
// Keep the dependency consumer first even after the worklist applies
|
|
85
82
|
// its stable source-path ordering, so this proves a real retry pass.
|
|
@@ -103,7 +100,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
103
100
|
return ok({ 'scene/main': scene() });
|
|
104
101
|
},
|
|
105
102
|
});
|
|
106
|
-
const result = await
|
|
103
|
+
const result = await buildScriptablePackWorklist({
|
|
107
104
|
subjects: [{ definition, sourcePath: 'assets/missing.pack.ts' }],
|
|
108
105
|
outputs: producers(),
|
|
109
106
|
});
|
|
@@ -143,7 +140,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
143
140
|
return ok({ 'scene/main': scene() });
|
|
144
141
|
},
|
|
145
142
|
});
|
|
146
|
-
const result = await
|
|
143
|
+
const result = await produceScriptablePackProducts({
|
|
147
144
|
sources: [
|
|
148
145
|
{
|
|
149
146
|
sourcePath: 'assets/consumer.pack.ts',
|
|
@@ -195,7 +192,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
195
192
|
return ok({ 'scene/main': scene() });
|
|
196
193
|
},
|
|
197
194
|
});
|
|
198
|
-
const result = await
|
|
195
|
+
const result = await produceScriptablePackProducts({
|
|
199
196
|
sources: [
|
|
200
197
|
{
|
|
201
198
|
sourcePath: 'assets/failing-consumer.pack.ts',
|
|
@@ -224,7 +221,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
224
221
|
throw new Error('producer exploded');
|
|
225
222
|
},
|
|
226
223
|
});
|
|
227
|
-
const result = await
|
|
224
|
+
const result = await buildScriptablePack({
|
|
228
225
|
definition: definePack({
|
|
229
226
|
schemaVersion: '2.0.0',
|
|
230
227
|
packageId: id('01900000-0000-7000-8000-000000000065'),
|
|
@@ -243,7 +240,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
243
240
|
version: 'test',
|
|
244
241
|
produce: () => ({ ok: true, value: null }) as never,
|
|
245
242
|
});
|
|
246
|
-
const result = await
|
|
243
|
+
const result = await buildScriptablePack({
|
|
247
244
|
definition: definePack({
|
|
248
245
|
schemaVersion: '2.0.0',
|
|
249
246
|
packageId: id('01900000-0000-7000-8000-000000000066'),
|
|
@@ -256,7 +253,7 @@ describe('parameterized ScriptablePack import bridge', () => {
|
|
|
256
253
|
});
|
|
257
254
|
|
|
258
255
|
it('converts a malformed Pack build result into a structured import failure', async () => {
|
|
259
|
-
const result = await
|
|
256
|
+
const result = await buildScriptablePack({
|
|
260
257
|
definition: definePack({
|
|
261
258
|
schemaVersion: '2.0.0',
|
|
262
259
|
packageId: id('01900000-0000-7000-8000-000000000067'),
|
|
@@ -2,10 +2,10 @@ import { resolve } from 'node:path';
|
|
|
2
2
|
import { AssetGuid, PackageId } from '@forgeax/engine-pack/guid';
|
|
3
3
|
import type { NativeCooker } from '@forgeax/engine-pack/native-cooker';
|
|
4
4
|
import type {
|
|
5
|
-
|
|
5
|
+
PackSourceInventoryDocument,
|
|
6
6
|
ScanSourceDeclaration,
|
|
7
7
|
} from '@forgeax/engine-pack/scanner';
|
|
8
|
-
import {
|
|
8
|
+
import { parsePackSourceJson, projectDirectPackJson } from '@forgeax/engine-pack/source';
|
|
9
9
|
import type {
|
|
10
10
|
Asset,
|
|
11
11
|
AssetGuid as AssetGuidType,
|
|
@@ -97,7 +97,7 @@ describe('ScriptablePack external Meta staging', () => {
|
|
|
97
97
|
if (!packageId.ok) throw packageId.error;
|
|
98
98
|
const outputGuid = AssetGuid.format(AssetGuid.derive(packageId.value, 'vfx/main'));
|
|
99
99
|
const materialGuid = '019ffa97-0000-7000-8000-000000000099';
|
|
100
|
-
const value:
|
|
100
|
+
const value: PackSourceInventoryDocument = {
|
|
101
101
|
schemaVersion: '3.0.0',
|
|
102
102
|
packageId: PackageId.format(packageId.value),
|
|
103
103
|
assets: {
|
|
@@ -177,7 +177,7 @@ describe('ScriptablePack external Meta staging', () => {
|
|
|
177
177
|
const packageId = PackageId.parse('019ffa97-0000-0000-8000-000000000010');
|
|
178
178
|
if (!packageId.ok) throw packageId.error;
|
|
179
179
|
const outputGuid = AssetGuid.format(AssetGuid.derive(packageId.value, 'ui/main'));
|
|
180
|
-
const value:
|
|
180
|
+
const value: PackSourceInventoryDocument = {
|
|
181
181
|
schemaVersion: '3.0.0',
|
|
182
182
|
packageId: PackageId.format(packageId.value),
|
|
183
183
|
assets: {
|
|
@@ -231,7 +231,7 @@ describe('ScriptablePack external Meta staging', () => {
|
|
|
231
231
|
},
|
|
232
232
|
},
|
|
233
233
|
};
|
|
234
|
-
const parsed =
|
|
234
|
+
const parsed = parsePackSourceJson(value);
|
|
235
235
|
expect(parsed.ok).toBe(true);
|
|
236
236
|
if (!parsed.ok || parsed.value.format !== 'direct') return;
|
|
237
237
|
const projected = projectDirectPackJson(parsed.value);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
1
2
|
import { mkdtemp, readdir, readFile, rm } from 'node:fs/promises';
|
|
2
3
|
import { tmpdir } from 'node:os';
|
|
3
4
|
import { join } from 'node:path';
|
|
5
|
+
import { DdcEntryStore } from '@forgeax/engine-ddc';
|
|
4
6
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
5
7
|
import {
|
|
6
8
|
commitImportPublication,
|
|
@@ -11,6 +13,40 @@ import {
|
|
|
11
13
|
|
|
12
14
|
const GUID = '019e3969-1d48-7c3b-ac24-6d68f457065f';
|
|
13
15
|
const KEY = 'a'.repeat(64);
|
|
16
|
+
const ARTIFACT_PATH = `${GUID}/body.bin`;
|
|
17
|
+
const ARTIFACT_BYTES = new Uint8Array([9, 8, 7]);
|
|
18
|
+
const ARTIFACT_DIGEST = `sha256:${createHash('sha256').update(ARTIFACT_BYTES).digest('hex')}`;
|
|
19
|
+
|
|
20
|
+
const validArtifact = {
|
|
21
|
+
path: ARTIFACT_PATH,
|
|
22
|
+
mediaType: 'application/octet-stream',
|
|
23
|
+
bytes: ARTIFACT_BYTES,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const validDescriptor = {
|
|
27
|
+
path: ARTIFACT_PATH,
|
|
28
|
+
mediaType: validArtifact.mediaType,
|
|
29
|
+
byteLength: ARTIFACT_BYTES.byteLength,
|
|
30
|
+
integrity: { algorithm: 'sha256' as const, digest: ARTIFACT_DIGEST },
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
function closurePack(
|
|
34
|
+
artifacts: Readonly<Record<string, unknown>> = { body: validDescriptor },
|
|
35
|
+
): Record<string, unknown> {
|
|
36
|
+
return {
|
|
37
|
+
schemaVersion: '2.0.0',
|
|
38
|
+
kind: 'internal-text-package',
|
|
39
|
+
assets: [
|
|
40
|
+
{
|
|
41
|
+
guid: GUID,
|
|
42
|
+
kind: 'fixture',
|
|
43
|
+
payload: { value: 'same' },
|
|
44
|
+
refs: [],
|
|
45
|
+
artifacts,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
14
50
|
|
|
15
51
|
function input(root: string, desiredKey = KEY): ImportPublicationInput {
|
|
16
52
|
return {
|
|
@@ -97,4 +133,109 @@ describe('source package publication concurrency', () => {
|
|
|
97
133
|
false,
|
|
98
134
|
);
|
|
99
135
|
});
|
|
136
|
+
|
|
137
|
+
it('publishes the complete transport artifact closure into the DDC entry', async () => {
|
|
138
|
+
const root = await mkdtemp(join(tmpdir(), 'forgeax-source-publication-'));
|
|
139
|
+
roots.push(root);
|
|
140
|
+
const pack = closurePack();
|
|
141
|
+
const publicationInput = {
|
|
142
|
+
...input(root),
|
|
143
|
+
pack,
|
|
144
|
+
transport: {
|
|
145
|
+
path: join(root, 'runtime', `${GUID}.pack.json`),
|
|
146
|
+
body: JSON.stringify(pack),
|
|
147
|
+
artifacts: [validArtifact],
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const staged = await stageImportPublication(publicationInput);
|
|
152
|
+
expect(staged.ok).toBe(true);
|
|
153
|
+
if (!staged.ok) return;
|
|
154
|
+
await expect(commitImportPublication(staged.candidate)).resolves.toMatchObject({ ok: true });
|
|
155
|
+
|
|
156
|
+
const entry = await new DdcEntryStore(root).read(KEY);
|
|
157
|
+
expect(entry?.artifacts[ARTIFACT_PATH]).toMatchObject({
|
|
158
|
+
mediaType: validArtifact.mediaType,
|
|
159
|
+
bytes: validArtifact.bytes,
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it.each([
|
|
164
|
+
{
|
|
165
|
+
label: 'missing body',
|
|
166
|
+
pack: closurePack(),
|
|
167
|
+
artifacts: [],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
label: 'media type mismatch',
|
|
171
|
+
pack: closurePack(),
|
|
172
|
+
artifacts: [{ ...validArtifact, mediaType: 'application/x-wrong' }],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
label: 'byte length mismatch',
|
|
176
|
+
pack: closurePack(),
|
|
177
|
+
artifacts: [{ ...validArtifact, bytes: new Uint8Array([9, 8]) }],
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
label: 'sha256 mismatch',
|
|
181
|
+
pack: closurePack({
|
|
182
|
+
body: {
|
|
183
|
+
...validDescriptor,
|
|
184
|
+
integrity: { algorithm: 'sha256' as const, digest: 'sha256:bad' },
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
187
|
+
artifacts: [validArtifact],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
label: 'duplicate transport path',
|
|
191
|
+
pack: closurePack(),
|
|
192
|
+
artifacts: [validArtifact, validArtifact],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
label: 'duplicate descriptor path',
|
|
196
|
+
pack: closurePack({ body: validDescriptor, alias: { ...validDescriptor } }),
|
|
197
|
+
artifacts: [validArtifact],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
label: 'unexpected transport body',
|
|
201
|
+
pack: closurePack(),
|
|
202
|
+
artifacts: [
|
|
203
|
+
validArtifact,
|
|
204
|
+
{
|
|
205
|
+
path: `${GUID}/extra.bin`,
|
|
206
|
+
mediaType: 'application/octet-stream',
|
|
207
|
+
bytes: new Uint8Array([1]),
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
label: 'transport body mismatch',
|
|
213
|
+
pack: closurePack(),
|
|
214
|
+
body: JSON.stringify({ schemaVersion: '2.0.0', kind: 'internal-text-package', assets: [] }),
|
|
215
|
+
artifacts: [validArtifact],
|
|
216
|
+
},
|
|
217
|
+
] as const)('rejects $label before advancing the DDC head', async ({ pack, artifacts, body }) => {
|
|
218
|
+
const root = await mkdtemp(join(tmpdir(), 'forgeax-source-publication-'));
|
|
219
|
+
roots.push(root);
|
|
220
|
+
const publicationInput: ImportPublicationInput = {
|
|
221
|
+
...input(root),
|
|
222
|
+
pack,
|
|
223
|
+
transport: {
|
|
224
|
+
path: join(root, 'runtime', `${GUID}.pack.json`),
|
|
225
|
+
body: body ?? JSON.stringify(pack),
|
|
226
|
+
artifacts,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const staged = await stageImportPublication(publicationInput);
|
|
231
|
+
|
|
232
|
+
expect(staged).toMatchObject({
|
|
233
|
+
ok: false,
|
|
234
|
+
error: {
|
|
235
|
+
code: 'source-package-publication-invalid',
|
|
236
|
+
},
|
|
237
|
+
head: { state: 'missing' },
|
|
238
|
+
});
|
|
239
|
+
expect(await new DdcEntryStore(root).listKeys()).toEqual([]);
|
|
240
|
+
});
|
|
100
241
|
});
|