@aipt/platform-kernel 0.1.5
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 +25 -0
- package/dist/adoption-contracts.d.ts +140 -0
- package/dist/adoption-contracts.d.ts.map +1 -0
- package/dist/adoption-contracts.js +2 -0
- package/dist/adoption-contracts.js.map +1 -0
- package/dist/adoption-metadata.d.ts +72 -0
- package/dist/adoption-metadata.d.ts.map +1 -0
- package/dist/adoption-metadata.js +408 -0
- package/dist/adoption-metadata.js.map +1 -0
- package/dist/adoption-schemas.d.ts +1608 -0
- package/dist/adoption-schemas.d.ts.map +1 -0
- package/dist/adoption-schemas.js +319 -0
- package/dist/adoption-schemas.js.map +1 -0
- package/dist/application-config-binding.d.ts +54 -0
- package/dist/application-config-binding.d.ts.map +1 -0
- package/dist/application-config-binding.js +139 -0
- package/dist/application-config-binding.js.map +1 -0
- package/dist/application-config-contract.d.ts +159 -0
- package/dist/application-config-contract.d.ts.map +1 -0
- package/dist/application-config-contract.js +142 -0
- package/dist/application-config-contract.js.map +1 -0
- package/dist/blank-profile.d.ts +60 -0
- package/dist/blank-profile.d.ts.map +1 -0
- package/dist/blank-profile.js +182 -0
- package/dist/blank-profile.js.map +1 -0
- package/dist/catalog-source.d.ts +167 -0
- package/dist/catalog-source.d.ts.map +1 -0
- package/dist/catalog-source.js +252 -0
- package/dist/catalog-source.js.map +1 -0
- package/dist/code-module-publication.d.ts +113 -0
- package/dist/code-module-publication.d.ts.map +1 -0
- package/dist/code-module-publication.js +71 -0
- package/dist/code-module-publication.js.map +1 -0
- package/dist/contracts.d.ts +150 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +3 -0
- package/dist/contracts.js.map +1 -0
- package/dist/delivery.d.ts +201 -0
- package/dist/delivery.d.ts.map +1 -0
- package/dist/delivery.js +364 -0
- package/dist/delivery.js.map +1 -0
- package/dist/dependency-resolution.d.ts +46 -0
- package/dist/dependency-resolution.d.ts.map +1 -0
- package/dist/dependency-resolution.js +35 -0
- package/dist/dependency-resolution.js.map +1 -0
- package/dist/doctor.d.ts +50 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +62 -0
- package/dist/doctor.js.map +1 -0
- package/dist/durability-trace.d.ts +31 -0
- package/dist/durability-trace.d.ts.map +1 -0
- package/dist/durability-trace.js +45 -0
- package/dist/durability-trace.js.map +1 -0
- package/dist/engineering-operations.d.ts +43 -0
- package/dist/engineering-operations.d.ts.map +1 -0
- package/dist/engineering-operations.js +19 -0
- package/dist/engineering-operations.js.map +1 -0
- package/dist/engineering-product.d.ts +261 -0
- package/dist/engineering-product.d.ts.map +1 -0
- package/dist/engineering-product.js +61 -0
- package/dist/engineering-product.js.map +1 -0
- package/dist/example-recipe.d.ts +147 -0
- package/dist/example-recipe.d.ts.map +1 -0
- package/dist/example-recipe.js +58 -0
- package/dist/example-recipe.js.map +1 -0
- package/dist/feature-planner.d.ts +59 -0
- package/dist/feature-planner.d.ts.map +1 -0
- package/dist/feature-planner.js +160 -0
- package/dist/feature-planner.js.map +1 -0
- package/dist/filesystem-contracts.d.ts +77 -0
- package/dist/filesystem-contracts.d.ts.map +1 -0
- package/dist/filesystem-contracts.js +2 -0
- package/dist/filesystem-contracts.js.map +1 -0
- package/dist/filesystem-transaction.d.ts +52 -0
- package/dist/filesystem-transaction.d.ts.map +1 -0
- package/dist/filesystem-transaction.js +749 -0
- package/dist/filesystem-transaction.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/integrity.d.ts +3 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +17 -0
- package/dist/integrity.js.map +1 -0
- package/dist/local-artifact-registry.d.ts +55 -0
- package/dist/local-artifact-registry.d.ts.map +1 -0
- package/dist/local-artifact-registry.js +87 -0
- package/dist/local-artifact-registry.js.map +1 -0
- package/dist/locked-repository-state.d.ts +21 -0
- package/dist/locked-repository-state.d.ts.map +1 -0
- package/dist/locked-repository-state.js +62 -0
- package/dist/locked-repository-state.js.map +1 -0
- package/dist/managed-region.d.ts +11 -0
- package/dist/managed-region.d.ts.map +1 -0
- package/dist/managed-region.js +45 -0
- package/dist/managed-region.js.map +1 -0
- package/dist/package-adoption.d.ts +179 -0
- package/dist/package-adoption.d.ts.map +1 -0
- package/dist/package-adoption.js +332 -0
- package/dist/package-adoption.js.map +1 -0
- package/dist/package-release.d.ts +42 -0
- package/dist/package-release.d.ts.map +1 -0
- package/dist/package-release.js +85 -0
- package/dist/package-release.js.map +1 -0
- package/dist/plan-state.d.ts +10 -0
- package/dist/plan-state.d.ts.map +1 -0
- package/dist/plan-state.js +33 -0
- package/dist/plan-state.js.map +1 -0
- package/dist/planner.d.ts +19 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +111 -0
- package/dist/planner.js.map +1 -0
- package/dist/platform-package-sources.d.ts +49 -0
- package/dist/platform-package-sources.d.ts.map +1 -0
- package/dist/platform-package-sources.js +98 -0
- package/dist/platform-package-sources.js.map +1 -0
- package/dist/project-bootstrap.d.ts +42 -0
- package/dist/project-bootstrap.d.ts.map +1 -0
- package/dist/project-bootstrap.js +270 -0
- package/dist/project-bootstrap.js.map +1 -0
- package/dist/project-control.d.ts +149 -0
- package/dist/project-control.d.ts.map +1 -0
- package/dist/project-control.js +46 -0
- package/dist/project-control.js.map +1 -0
- package/dist/project-maintenance.d.ts +30 -0
- package/dist/project-maintenance.d.ts.map +1 -0
- package/dist/project-maintenance.js +29 -0
- package/dist/project-maintenance.js.map +1 -0
- package/dist/project-recovery.d.ts +31 -0
- package/dist/project-recovery.d.ts.map +1 -0
- package/dist/project-recovery.js +80 -0
- package/dist/project-recovery.js.map +1 -0
- package/dist/recovery-override.d.ts +20 -0
- package/dist/recovery-override.d.ts.map +1 -0
- package/dist/recovery-override.js +27 -0
- package/dist/recovery-override.js.map +1 -0
- package/dist/release-loader.d.ts +9 -0
- package/dist/release-loader.d.ts.map +1 -0
- package/dist/release-loader.js +86 -0
- package/dist/release-loader.js.map +1 -0
- package/dist/resolution-evidence.d.ts +67 -0
- package/dist/resolution-evidence.d.ts.map +1 -0
- package/dist/resolution-evidence.js +98 -0
- package/dist/resolution-evidence.js.map +1 -0
- package/dist/resolution-worker-build.d.ts +33 -0
- package/dist/resolution-worker-build.d.ts.map +1 -0
- package/dist/resolution-worker-build.js +42 -0
- package/dist/resolution-worker-build.js.map +1 -0
- package/dist/runtime-observability.d.ts +147 -0
- package/dist/runtime-observability.d.ts.map +1 -0
- package/dist/runtime-observability.js +264 -0
- package/dist/runtime-observability.js.map +1 -0
- package/dist/schemas.d.ts +740 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +348 -0
- package/dist/schemas.js.map +1 -0
- package/dist/solution-catalog.d.ts +169 -0
- package/dist/solution-catalog.d.ts.map +1 -0
- package/dist/solution-catalog.js +60 -0
- package/dist/solution-catalog.js.map +1 -0
- package/dist/standalone-npm-profile.d.ts +146 -0
- package/dist/standalone-npm-profile.d.ts.map +1 -0
- package/dist/standalone-npm-profile.js +425 -0
- package/dist/standalone-npm-profile.js.map +1 -0
- package/dist/testing.d.ts +5 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +3 -0
- package/dist/testing.js.map +1 -0
- package/dist/upgrade-planner.d.ts +45 -0
- package/dist/upgrade-planner.d.ts.map +1 -0
- package/dist/upgrade-planner.js +207 -0
- package/dist/upgrade-planner.js.map +1 -0
- package/dist/workspace-publication.d.ts +18 -0
- package/dist/workspace-publication.d.ts.map +1 -0
- package/dist/workspace-publication.js +33 -0
- package/dist/workspace-publication.js.map +1 -0
- package/dist/workspace-topology.d.ts +22 -0
- package/dist/workspace-topology.d.ts.map +1 -0
- package/dist/workspace-topology.js +117 -0
- package/dist/workspace-topology.js.map +1 -0
- package/package.json +46 -0
package/dist/testing.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { LoadedCapabilityRelease, ProjectAdoptionLock } from "./adoption-contracts.js";
|
|
2
|
+
import type { PackageDeliveryReceipt, RegistryConfigRelease, RegistryEndpointBinding } from "./catalog-source.js";
|
|
3
|
+
import { type PackageArtifactInspection, type PackageLockResolution } from "./package-adoption.js";
|
|
4
|
+
import type { PackageAdoptionTopology } from "./workspace-topology.js";
|
|
5
|
+
import type { ResolutionJobEvidence } from "./resolution-evidence.js";
|
|
6
|
+
import type { ProjectManifest } from "./contracts.js";
|
|
7
|
+
export declare function renderUpgradeTargetPackageJson(manifestInput: unknown, targetRelease: LoadedCapabilityRelease): Uint8Array;
|
|
8
|
+
export declare function planCapabilityUpgrade(input: {
|
|
9
|
+
projectRoot: string;
|
|
10
|
+
manifest: unknown;
|
|
11
|
+
currentLock: unknown;
|
|
12
|
+
sourceRelease: LoadedCapabilityRelease;
|
|
13
|
+
targetRelease: LoadedCapabilityRelease;
|
|
14
|
+
generatedAt: string;
|
|
15
|
+
expiresAt: string;
|
|
16
|
+
targetTemplate?: Readonly<{
|
|
17
|
+
id: string;
|
|
18
|
+
version: string;
|
|
19
|
+
}>;
|
|
20
|
+
packageChannel?: "production" | "development";
|
|
21
|
+
packageSource?: {
|
|
22
|
+
registryConfigs: readonly RegistryConfigRelease[];
|
|
23
|
+
endpointBindings: readonly RegistryEndpointBinding[];
|
|
24
|
+
receipts: readonly PackageDeliveryReceipt[];
|
|
25
|
+
inspections: readonly PackageArtifactInspection[];
|
|
26
|
+
lockResolution: PackageLockResolution;
|
|
27
|
+
resolutionEvidence?: ResolutionJobEvidence;
|
|
28
|
+
resolutionWorkerReleaseId?: string;
|
|
29
|
+
topology?: PackageAdoptionTopology;
|
|
30
|
+
currentLockfile?: Uint8Array;
|
|
31
|
+
preservedImporterDigests?: readonly Readonly<{
|
|
32
|
+
importerId: string;
|
|
33
|
+
preimageDigest: string;
|
|
34
|
+
desiredDigest: string;
|
|
35
|
+
}>[];
|
|
36
|
+
};
|
|
37
|
+
}): Promise<{
|
|
38
|
+
sourceLock: ProjectAdoptionLock;
|
|
39
|
+
targetManifest: ProjectManifest;
|
|
40
|
+
release: LoadedCapabilityRelease;
|
|
41
|
+
plan: import("./contracts.js").ChangePlan;
|
|
42
|
+
desiredContents: Map<string, Uint8Array<ArrayBufferLike>>;
|
|
43
|
+
transactionRoot: string;
|
|
44
|
+
}>;
|
|
45
|
+
//# sourceMappingURL=upgrade-planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-planner.d.ts","sourceRoot":"","sources":["../src/upgrade-planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAA8L,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/R,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAoC,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAsCxG,wBAAgB,8BAA8B,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAuB,GAAG,UAAU,CASzH;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,uBAAuB,CAAC;IACvC,aAAa,EAAE,uBAAuB,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,cAAc,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IAC9C,aAAa,CAAC,EAAE;QACd,eAAe,EAAE,SAAS,qBAAqB,EAAE,CAAC;QAClD,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;QACrD,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;QAC5C,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;QAClD,cAAc,EAAE,qBAAqB,CAAC;QACtC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;QAC3C,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACnC,eAAe,CAAC,EAAE,UAAU,CAAC;QAC7B,wBAAwB,CAAC,EAAE,SAAS,QAAQ,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC,EAAE,CAAC;KACvH,CAAC;CACH;;;;;;;GAiJA"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { lstat, readFile, realpath } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { buildDevelopmentPackageAdoptionPlan, buildPackageAdoptionPlan, buildWorkspaceDevelopmentPackageAdoptionPlan, buildWorkspacePackageAdoptionPlan, packageAdoptionFacts, PackageAdoptionError } from "./package-adoption.js";
|
|
4
|
+
import { parseProjectAdoptionLock } from "./adoption-schemas.js";
|
|
5
|
+
import { parseProjectManifest } from "./schemas.js";
|
|
6
|
+
import { BlankProfileError } from "./blank-profile.js";
|
|
7
|
+
import { sha256Digest } from "./integrity.js";
|
|
8
|
+
import { buildChangePlan } from "./planner.js";
|
|
9
|
+
import { parseStandaloneNpmParameters, renderReactComponentPackageJson, renderStandalonePackageJson } from "./standalone-npm-profile.js";
|
|
10
|
+
import { renderApplicationConfigContract } from "./application-config-contract.js";
|
|
11
|
+
import { renderApplicationConfigBinding } from "./application-config-binding.js";
|
|
12
|
+
const manifestPath = "project-capabilities.json";
|
|
13
|
+
const stableSemver = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
|
|
14
|
+
function compareSemver(left, right) {
|
|
15
|
+
if (!stableSemver.test(left) || !stableSemver.test(right)) {
|
|
16
|
+
throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Upgrade requires stable SemVer releases");
|
|
17
|
+
}
|
|
18
|
+
const a = left.split(".").map(Number);
|
|
19
|
+
const b = right.split(".").map(Number);
|
|
20
|
+
for (let index = 0; index < 3; index += 1) {
|
|
21
|
+
if (a[index] !== b[index])
|
|
22
|
+
return a[index] - b[index];
|
|
23
|
+
}
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
async function observe(projectRoot, assetPath) {
|
|
27
|
+
const target = path.join(projectRoot, ...assetPath.split("/"));
|
|
28
|
+
try {
|
|
29
|
+
const info = await lstat(target);
|
|
30
|
+
if (!info.isFile() || info.isSymbolicLink()) {
|
|
31
|
+
throw new BlankProfileError("PROJECT_STATE_INVALID", "Managed upgrade target must be a regular file", assetPath);
|
|
32
|
+
}
|
|
33
|
+
return { path: assetPath, exists: true, digest: sha256Digest(await readFile(target)) };
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error.code === "ENOENT")
|
|
37
|
+
return { path: assetPath, exists: false };
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function renderUpgradeTargetPackageJson(manifestInput, targetRelease) {
|
|
42
|
+
const manifest = parseProjectManifest(manifestInput);
|
|
43
|
+
const target = targetRelease.release;
|
|
44
|
+
const packageAsset = target.assets.find((asset) => asset.path === "package.json");
|
|
45
|
+
if ((target.consumerProfile === "standalone-npm-package" || target.consumerProfile === "workspace-npm-package") && packageAsset?.renderer?.startsWith("npm-package-json-") === true)
|
|
46
|
+
return renderStandalonePackageJson(parseStandaloneNpmParameters(manifest, target.consumerProfile));
|
|
47
|
+
if (target.consumerProfile === "react-component-library" && packageAsset?.renderer === "react-component-package-json-v1")
|
|
48
|
+
return renderReactComponentPackageJson(parseStandaloneNpmParameters(manifest, target.consumerProfile));
|
|
49
|
+
const bytes = targetRelease.contents.get("package.json");
|
|
50
|
+
if (bytes === undefined)
|
|
51
|
+
throw new BlankProfileError("RELEASE_NOT_FOUND", "Transition target package.json is unavailable");
|
|
52
|
+
return bytes;
|
|
53
|
+
}
|
|
54
|
+
export async function planCapabilityUpgrade(input) {
|
|
55
|
+
const manifest = parseProjectManifest(input.manifest);
|
|
56
|
+
const lock = parseProjectAdoptionLock(input.currentLock);
|
|
57
|
+
const source = input.sourceRelease.release;
|
|
58
|
+
const target = input.targetRelease.release;
|
|
59
|
+
const selected = manifest.capabilities.find((item) => item.capabilityId === source.capabilityId);
|
|
60
|
+
const locked = lock.capabilities.find((item) => item.capabilityId === source.capabilityId);
|
|
61
|
+
const profileTransition = target.capabilityId !== source.capabilityId && target.dependencies?.capabilities?.includes(source.capabilityId) === true;
|
|
62
|
+
if (selected === undefined || locked === undefined ||
|
|
63
|
+
selected.capabilityId !== locked.capabilityId || selected.version !== locked.version ||
|
|
64
|
+
source.capabilityId !== locked.capabilityId || source.version !== locked.version || source.integrity !== locked.integrity ||
|
|
65
|
+
(!profileTransition && target.capabilityId !== locked.capabilityId) || target.consumerProfile !== locked.consumerProfile ||
|
|
66
|
+
source.consumerProfile !== target.consumerProfile) {
|
|
67
|
+
throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Upgrade source, target, Manifest, and Lock must describe one compatible capability");
|
|
68
|
+
}
|
|
69
|
+
if (!profileTransition && compareSemver(target.version, source.version) <= 0) {
|
|
70
|
+
throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Upgrade target must be newer than the locked release");
|
|
71
|
+
}
|
|
72
|
+
const projectRoot = await realpath(path.resolve(input.projectRoot));
|
|
73
|
+
const targetManifest = {
|
|
74
|
+
...manifest,
|
|
75
|
+
...(input.targetTemplate === undefined ? {} : { template: input.targetTemplate }),
|
|
76
|
+
capabilities: manifest.capabilities.map((item) => item.capabilityId === source.capabilityId
|
|
77
|
+
? { capabilityId: target.capabilityId, version: target.version }
|
|
78
|
+
: item),
|
|
79
|
+
};
|
|
80
|
+
const availableContents = new Map(input.targetRelease.contents);
|
|
81
|
+
if (target.assets.some((asset) => asset.path === "package.json"))
|
|
82
|
+
availableContents.set("package.json", renderUpgradeTargetPackageJson(targetManifest, input.targetRelease));
|
|
83
|
+
for (const asset of target.assets) {
|
|
84
|
+
if (asset.renderer === "application-config-contract-v1") {
|
|
85
|
+
availableContents.set(asset.path, renderApplicationConfigContract(targetManifest));
|
|
86
|
+
}
|
|
87
|
+
if (asset.renderer === "application-config-binding-v1")
|
|
88
|
+
availableContents.set(asset.path, renderApplicationConfigBinding(targetManifest));
|
|
89
|
+
}
|
|
90
|
+
let packageAdoption;
|
|
91
|
+
let transactionRoot = projectRoot;
|
|
92
|
+
let packageJsonPath = "package.json";
|
|
93
|
+
let lockfilePath;
|
|
94
|
+
if (target.schemaVersion === 2 && target.availability.maturity !== "withdrawn" && (target.packageSources?.length ?? 0) > 0) {
|
|
95
|
+
if (input.packageSource === undefined)
|
|
96
|
+
throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Profile transition requires verified Package Source facts");
|
|
97
|
+
const desiredBasePackageJson = availableContents.get("package.json");
|
|
98
|
+
if (desiredBasePackageJson === undefined)
|
|
99
|
+
throw new BlankProfileError("RELEASE_NOT_FOUND", "Transition target package.json is unavailable");
|
|
100
|
+
const currentPackageJson = await readFile(path.join(projectRoot, "package.json"));
|
|
101
|
+
const topology = input.packageSource.topology ?? { schemaVersion: 1, mode: "standalone", transactionRoot: projectRoot, unitRoot: projectRoot, unitRelativeRoot: ".", unitImporterId: ".", lockfilePath: "pnpm-lock.yaml" };
|
|
102
|
+
transactionRoot = topology.transactionRoot;
|
|
103
|
+
packageJsonPath = topology.mode === "pnpm-shared-lockfile" ? `${topology.unitRelativeRoot}/package.json` : "package.json";
|
|
104
|
+
lockfilePath = topology.lockfilePath;
|
|
105
|
+
const common = { release: target, registryConfigs: input.packageSource.registryConfigs, endpointBindings: input.packageSource.endpointBindings, receipts: input.packageSource.receipts, inspections: input.packageSource.inspections, consumerProfile: target.consumerProfile, packageJson: currentPackageJson, desiredBasePackageJson, ...(input.packageSource.currentLockfile === undefined ? {} : { currentLockfile: input.packageSource.currentLockfile }), generatedAt: input.generatedAt, expiresAt: input.expiresAt };
|
|
106
|
+
try {
|
|
107
|
+
const plan = topology.mode === "pnpm-shared-lockfile"
|
|
108
|
+
? (input.packageChannel === "development" ? buildWorkspaceDevelopmentPackageAdoptionPlan : buildWorkspacePackageAdoptionPlan)({ ...common, topology: { mode: topology.mode, unitRelativeRoot: topology.unitRelativeRoot, unitImporterId: topology.unitImporterId, lockfilePath: topology.lockfilePath, workspaceManifestPath: topology.workspaceManifestPath, workspaceManifestDigest: topology.workspaceManifestDigest }, preservedImporterDigests: input.packageSource.preservedImporterDigests ?? [], resolutionEvidence: input.packageSource.resolutionEvidence, resolutionWorkerReleaseId: input.packageSource.resolutionWorkerReleaseId })
|
|
109
|
+
: (input.packageChannel === "development" ? buildDevelopmentPackageAdoptionPlan : buildPackageAdoptionPlan)({ ...common, lockResolution: input.packageSource.lockResolution });
|
|
110
|
+
packageAdoption = packageAdoptionFacts(plan);
|
|
111
|
+
availableContents.set("package.json", plan.desiredPackageJson);
|
|
112
|
+
availableContents.set(lockfilePath, plan.desiredLockfile);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
if (error instanceof PackageAdoptionError)
|
|
116
|
+
throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", error.code);
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Manifest, Lock, repository state, and Evidence are independent facts. Some
|
|
121
|
+
// historical migration locks recorded the Manifest as a managed asset; never
|
|
122
|
+
// let that compatibility fact enter the ordinary asset diff because the
|
|
123
|
+
// dedicated Manifest operation below is its sole writer.
|
|
124
|
+
const sourceAssets = new Map(locked.assets.filter((asset) => asset.path !== manifestPath).map((asset) => [asset.path, asset.digest]));
|
|
125
|
+
const targetAssets = new Map(target.assets.filter((asset) => asset.path !== manifestPath).map((asset) => { const bytes = availableContents.get(asset.path); if (bytes === undefined)
|
|
126
|
+
throw new BlankProfileError("RELEASE_NOT_FOUND", "Upgrade target asset content is unavailable", asset.path); return [asset.path, sha256Digest(bytes)]; }));
|
|
127
|
+
const paths = [...new Set([...sourceAssets.keys(), ...targetAssets.keys()])].sort();
|
|
128
|
+
const observedAssets = [];
|
|
129
|
+
const changes = [];
|
|
130
|
+
for (const assetPath of paths) {
|
|
131
|
+
const observed = await observe(projectRoot, assetPath);
|
|
132
|
+
observedAssets.push(observed);
|
|
133
|
+
const baseDigest = sourceAssets.get(assetPath);
|
|
134
|
+
const desiredDigest = targetAssets.get(assetPath);
|
|
135
|
+
const targetAsset = target.assets.find((asset) => asset.path === assetPath);
|
|
136
|
+
// Seed files become consumer-owned after first materialization. During an
|
|
137
|
+
// upgrade an existing seed is therefore adopted as the new baseline; it is
|
|
138
|
+
// never compared with or replaced by the historical release bytes.
|
|
139
|
+
if (targetAsset?.ownership === "seed-file" && observed.exists && observed.digest !== undefined) {
|
|
140
|
+
targetAssets.set(assetPath, observed.digest);
|
|
141
|
+
availableContents.set(assetPath, await readFile(path.join(projectRoot, ...assetPath.split("/"))));
|
|
142
|
+
changes.push({ path: assetPath, kind: "replace", ownership: "seed-file", baseDigest: observed.digest, desiredDigest: observed.digest });
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (baseDigest === undefined) {
|
|
146
|
+
if (desiredDigest === undefined)
|
|
147
|
+
throw new BlankProfileError("RELEASE_NOT_FOUND", "Target asset digest is unavailable", assetPath);
|
|
148
|
+
changes.push({ path: assetPath, kind: "create", ownership: targetAsset?.ownership ?? "owned-file", desiredDigest });
|
|
149
|
+
}
|
|
150
|
+
else if (desiredDigest === undefined) {
|
|
151
|
+
changes.push({ path: assetPath, kind: "remove", ownership: "owned-file", baseDigest });
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
changes.push({ path: assetPath, kind: "replace", ownership: targetAsset?.ownership ?? "owned-file", baseDigest, desiredDigest });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (packageAdoption !== undefined && lockfilePath !== undefined) {
|
|
158
|
+
const currentLockfile = input.packageSource?.currentLockfile;
|
|
159
|
+
if (currentLockfile === undefined)
|
|
160
|
+
throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Transition lockfile preimage is unavailable");
|
|
161
|
+
const desiredLockfile = availableContents.get(lockfilePath);
|
|
162
|
+
observedAssets.push({ path: lockfilePath, exists: true, digest: sha256Digest(currentLockfile) });
|
|
163
|
+
changes.push({ path: lockfilePath, kind: "replace", ownership: "owned-file", baseDigest: sha256Digest(currentLockfile), desiredDigest: sha256Digest(desiredLockfile) });
|
|
164
|
+
}
|
|
165
|
+
const currentManifestBytes = await readFile(path.join(projectRoot, manifestPath));
|
|
166
|
+
const targetManifestBytes = Buffer.from(`${JSON.stringify(targetManifest, null, 2)}\n`);
|
|
167
|
+
observedAssets.push({ path: manifestPath, exists: true, digest: sha256Digest(currentManifestBytes) });
|
|
168
|
+
changes.push({
|
|
169
|
+
path: manifestPath,
|
|
170
|
+
kind: "replace",
|
|
171
|
+
ownership: "owned-file",
|
|
172
|
+
baseDigest: sha256Digest(currentManifestBytes),
|
|
173
|
+
desiredDigest: sha256Digest(targetManifestBytes),
|
|
174
|
+
});
|
|
175
|
+
const capability = {
|
|
176
|
+
schemaVersion: 1,
|
|
177
|
+
capabilityId: target.capabilityId,
|
|
178
|
+
version: target.version,
|
|
179
|
+
integrity: target.integrity,
|
|
180
|
+
assets: target.assets.filter((asset) => asset.path !== manifestPath).map((asset) => ({ path: asset.path, ownership: asset.ownership, desiredDigest: targetAssets.get(asset.path) })),
|
|
181
|
+
verifiers: target.verifiers.map(({ id }) => ({ id, kind: "command" })),
|
|
182
|
+
};
|
|
183
|
+
const prefixedChanges = transactionRoot === projectRoot ? changes : changes.map((change) => change.path === lockfilePath ? change : { ...change, path: `${input.packageSource.topology.unitRelativeRoot}/${change.path}` });
|
|
184
|
+
const prefixedObserved = transactionRoot === projectRoot ? observedAssets : observedAssets.map((asset) => asset.path === lockfilePath ? asset : { ...asset, path: `${input.packageSource.topology.unitRelativeRoot}/${asset.path}` });
|
|
185
|
+
const plan = buildChangePlan({ action: "upgrade", capability, changes: prefixedChanges, observedAssets: prefixedObserved, generatedAt: input.generatedAt, expiresAt: input.expiresAt, ...(packageAdoption === undefined ? {} : { packageAdoption }) });
|
|
186
|
+
availableContents.set(manifestPath, targetManifestBytes);
|
|
187
|
+
const desiredContents = new Map();
|
|
188
|
+
for (const operation of plan.operations) {
|
|
189
|
+
if (operation.disposition !== "ready" || operation.kind === "remove")
|
|
190
|
+
continue;
|
|
191
|
+
const unitPrefix = transactionRoot === projectRoot ? "" : `${input.packageSource.topology.unitRelativeRoot}/`;
|
|
192
|
+
const contentPath = operation.path === lockfilePath ? operation.path : operation.path.startsWith(unitPrefix) ? operation.path.slice(unitPrefix.length) : operation.path;
|
|
193
|
+
const bytes = availableContents.get(contentPath);
|
|
194
|
+
if (bytes === undefined)
|
|
195
|
+
throw new BlankProfileError("RELEASE_NOT_FOUND", "Upgrade desired content is unavailable", operation.path);
|
|
196
|
+
desiredContents.set(operation.path, bytes);
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
sourceLock: lock,
|
|
200
|
+
targetManifest,
|
|
201
|
+
release: input.targetRelease,
|
|
202
|
+
plan,
|
|
203
|
+
desiredContents,
|
|
204
|
+
transactionRoot,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=upgrade-planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-planner.js","sourceRoot":"","sources":["../src/upgrade-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type WorkspacePackageNode = Readonly<{
|
|
2
|
+
packageName: string;
|
|
3
|
+
version: string;
|
|
4
|
+
dependencies: readonly string[];
|
|
5
|
+
}>;
|
|
6
|
+
export type WorkspacePublicationGraph = Readonly<{
|
|
7
|
+
schemaVersion: 1;
|
|
8
|
+
nodes: readonly WorkspacePackageNode[];
|
|
9
|
+
order: readonly string[];
|
|
10
|
+
graphDigest: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare class WorkspacePublicationError extends Error {
|
|
13
|
+
readonly code: "WORKSPACE_PACKAGE_DUPLICATE" | "WORKSPACE_DEPENDENCY_MISSING" | "WORKSPACE_DEPENDENCY_CYCLE";
|
|
14
|
+
constructor(code: "WORKSPACE_PACKAGE_DUPLICATE" | "WORKSPACE_DEPENDENCY_MISSING" | "WORKSPACE_DEPENDENCY_CYCLE");
|
|
15
|
+
}
|
|
16
|
+
/** 生成稳定、串行的依赖优先发布顺序;同层以 package name 排序。 */
|
|
17
|
+
export declare function compileWorkspacePublicationGraph(input: readonly WorkspacePackageNode[]): WorkspacePublicationGraph;
|
|
18
|
+
//# sourceMappingURL=workspace-publication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-publication.d.ts","sourceRoot":"","sources":["../src/workspace-publication.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC;AACvH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,aAAa,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE9J,qBAAa,yBAA0B,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,GAAG,8BAA8B,GAAG,4BAA4B;gBAAnG,IAAI,EAAE,6BAA6B,GAAG,8BAA8B,GAAG,4BAA4B;CACzH;AAED,4CAA4C;AAC5C,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,GAAG,yBAAyB,CASlH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { canonicalize, sha256Digest } from "./integrity.js";
|
|
2
|
+
export class WorkspacePublicationError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
constructor(code) {
|
|
5
|
+
super(code);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.name = "WorkspacePublicationError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** 生成稳定、串行的依赖优先发布顺序;同层以 package name 排序。 */
|
|
11
|
+
export function compileWorkspacePublicationGraph(input) {
|
|
12
|
+
const nodes = [...input].map((node) => ({ ...node, dependencies: [...new Set(node.dependencies)].sort() })).sort((a, b) => a.packageName.localeCompare(b.packageName));
|
|
13
|
+
const byName = new Map();
|
|
14
|
+
for (const node of nodes) {
|
|
15
|
+
if (byName.has(node.packageName))
|
|
16
|
+
throw new WorkspacePublicationError("WORKSPACE_PACKAGE_DUPLICATE");
|
|
17
|
+
byName.set(node.packageName, node);
|
|
18
|
+
}
|
|
19
|
+
for (const node of nodes)
|
|
20
|
+
for (const dependency of node.dependencies)
|
|
21
|
+
if (!byName.has(dependency))
|
|
22
|
+
throw new WorkspacePublicationError("WORKSPACE_DEPENDENCY_MISSING");
|
|
23
|
+
const temporary = new Set(), permanent = new Set(), order = [];
|
|
24
|
+
const visit = (name) => { if (permanent.has(name))
|
|
25
|
+
return; if (temporary.has(name))
|
|
26
|
+
throw new WorkspacePublicationError("WORKSPACE_DEPENDENCY_CYCLE"); temporary.add(name); for (const dependency of byName.get(name).dependencies)
|
|
27
|
+
visit(dependency); temporary.delete(name); permanent.add(name); order.push(name); };
|
|
28
|
+
for (const node of nodes)
|
|
29
|
+
visit(node.packageName);
|
|
30
|
+
const body = { schemaVersion: 1, nodes, order };
|
|
31
|
+
return Object.freeze({ ...body, graphDigest: sha256Digest(canonicalize(body)) });
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=workspace-publication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-publication.js","sourceRoot":"","sources":["../src/workspace-publication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK5D,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAC7B;IAArB,YAAqB,IAAmG;QAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAAnH,SAAI,GAAJ,IAAI,CAA+F;QAAiB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAAC,CAAC;CACpL;AAED,4CAA4C;AAC5C,MAAM,UAAU,gCAAgC,CAAC,KAAsC;IACrF,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACvK,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAAC,CAAC;IACvK,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,MAAM,IAAI,yBAAyB,CAAC,8BAA8B,CAAC,CAAC;IACvK,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,EAAE,SAAS,GAAG,IAAI,GAAG,EAAU,EAAE,KAAK,GAAa,EAAE,CAAC;IACzF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,YAAY;QAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjU,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,EAAE,aAAa,EAAE,CAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7I,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type WorkspaceTopologyErrorCode = "WORKSPACE_PATH_UNSAFE" | "WORKSPACE_OWNER_MISSING" | "WORKSPACE_NESTED_UNSUPPORTED" | "WORKSPACE_UNIT_NOT_DECLARED" | "WORKSPACE_MANIFEST_INVALID";
|
|
2
|
+
export declare class WorkspaceTopologyError extends Error {
|
|
3
|
+
readonly code: WorkspaceTopologyErrorCode;
|
|
4
|
+
constructor(code: WorkspaceTopologyErrorCode);
|
|
5
|
+
}
|
|
6
|
+
export type PackageAdoptionTopology = Readonly<{
|
|
7
|
+
schemaVersion: 1;
|
|
8
|
+
mode: "standalone" | "pnpm-shared-lockfile";
|
|
9
|
+
transactionRoot: string;
|
|
10
|
+
unitRoot: string;
|
|
11
|
+
unitRelativeRoot: string;
|
|
12
|
+
unitImporterId: string;
|
|
13
|
+
lockfilePath: "pnpm-lock.yaml";
|
|
14
|
+
workspaceManifestPath?: "pnpm-workspace.yaml";
|
|
15
|
+
workspaceManifestDigest?: `sha256:${string}`;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function listWorkspacePackageManifests(workspaceRootInput: string): Promise<readonly Readonly<{
|
|
18
|
+
relativeRoot: string;
|
|
19
|
+
bytes: Uint8Array;
|
|
20
|
+
}>[]>;
|
|
21
|
+
export declare function discoverPackageAdoptionTopology(projectRootInput: string): Promise<PackageAdoptionTopology>;
|
|
22
|
+
//# sourceMappingURL=workspace-topology.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-topology.d.ts","sourceRoot":"","sources":["../src/workspace-topology.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,0BAA0B,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,8BAA8B,GAAG,6BAA6B,GAAG,4BAA4B,CAAC;AAC7L,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,0BAA0B;gBAAhC,IAAI,EAAE,0BAA0B;CACtD;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,YAAY,GAAG,sBAAsB,CAAC;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,uBAAuB,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC;CAC9C,CAAC,CAAC;AA2CH,wBAAsB,6BAA6B,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,QAAQ,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,CAAC,CAkBzJ;AAED,wBAAsB,+BAA+B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAchH"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { lstat, readFile, readdir, realpath } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { sha256Digest } from "./integrity.js";
|
|
5
|
+
export class WorkspaceTopologyError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
constructor(code) {
|
|
8
|
+
super(code);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.name = "WorkspaceTopologyError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
async function realDirectory(input) {
|
|
14
|
+
const resolved = path.resolve(input);
|
|
15
|
+
const info = await lstat(resolved).catch(() => null);
|
|
16
|
+
if (!info?.isDirectory() || info.isSymbolicLink() || resolved === path.parse(resolved).root || resolved === path.resolve(homedir()))
|
|
17
|
+
throw new WorkspaceTopologyError("WORKSPACE_PATH_UNSAFE");
|
|
18
|
+
const canonical = await realpath(resolved);
|
|
19
|
+
if (canonical !== resolved)
|
|
20
|
+
throw new WorkspaceTopologyError("WORKSPACE_PATH_UNSAFE");
|
|
21
|
+
return canonical;
|
|
22
|
+
}
|
|
23
|
+
async function regularFile(target) {
|
|
24
|
+
const info = await lstat(target).catch(() => null);
|
|
25
|
+
if (info === null)
|
|
26
|
+
return undefined;
|
|
27
|
+
if (!info.isFile() || info.isSymbolicLink())
|
|
28
|
+
throw new WorkspaceTopologyError("WORKSPACE_PATH_UNSAFE");
|
|
29
|
+
return readFile(target);
|
|
30
|
+
}
|
|
31
|
+
function patterns(source) {
|
|
32
|
+
const lines = source.split(/\r?\n/u);
|
|
33
|
+
const result = [];
|
|
34
|
+
let inPackages = false;
|
|
35
|
+
for (const line of lines) {
|
|
36
|
+
if (/^packages:\s*(?:#.*)?$/u.test(line)) {
|
|
37
|
+
inPackages = true;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (!inPackages)
|
|
41
|
+
continue;
|
|
42
|
+
const item = /^\s+-\s+["']?([^"'#]+?)["']?\s*(?:#.*)?$/u.exec(line);
|
|
43
|
+
if (item) {
|
|
44
|
+
result.push(item[1].trim().replace(/^\.\//u, "").replace(/\/$/u, ""));
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (line.trim() && !/^\s/u.test(line))
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
if (result.length === 0)
|
|
51
|
+
throw new WorkspaceTopologyError("WORKSPACE_MANIFEST_INVALID");
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function matches(pattern, relative) {
|
|
55
|
+
if (pattern.includes("**")) {
|
|
56
|
+
const prefix = pattern.split("**", 1)[0].replace(/\/$/u, "");
|
|
57
|
+
return relative === prefix || relative.startsWith(`${prefix}/`);
|
|
58
|
+
}
|
|
59
|
+
if (pattern.endsWith("/*")) {
|
|
60
|
+
const prefix = pattern.slice(0, -2);
|
|
61
|
+
return relative.startsWith(`${prefix}/`) && !relative.slice(prefix.length + 1).includes("/");
|
|
62
|
+
}
|
|
63
|
+
return pattern === relative;
|
|
64
|
+
}
|
|
65
|
+
export async function listWorkspacePackageManifests(workspaceRootInput) {
|
|
66
|
+
const workspaceRoot = await realDirectory(workspaceRootInput);
|
|
67
|
+
const manifest = await regularFile(path.join(workspaceRoot, "pnpm-workspace.yaml"));
|
|
68
|
+
if (!manifest)
|
|
69
|
+
throw new WorkspaceTopologyError("WORKSPACE_OWNER_MISSING");
|
|
70
|
+
const results = new Map();
|
|
71
|
+
for (const pattern of patterns(manifest.toString("utf8"))) {
|
|
72
|
+
const candidates = [];
|
|
73
|
+
if (pattern.endsWith("/*") && !pattern.slice(0, -2).includes("*")) {
|
|
74
|
+
const parent = pattern.slice(0, -2);
|
|
75
|
+
const entries = await readdir(path.join(workspaceRoot, ...parent.split("/")), { withFileTypes: true }).catch(() => []);
|
|
76
|
+
for (const entry of entries)
|
|
77
|
+
if (entry.isDirectory() && !entry.isSymbolicLink())
|
|
78
|
+
candidates.push(`${parent}/${entry.name}`);
|
|
79
|
+
}
|
|
80
|
+
else if (!pattern.includes("*"))
|
|
81
|
+
candidates.push(pattern);
|
|
82
|
+
else
|
|
83
|
+
throw new WorkspaceTopologyError("WORKSPACE_MANIFEST_INVALID");
|
|
84
|
+
for (const relativeRoot of candidates) {
|
|
85
|
+
const bytes = await regularFile(path.join(workspaceRoot, ...relativeRoot.split("/"), "package.json"));
|
|
86
|
+
if (bytes)
|
|
87
|
+
results.set(relativeRoot, bytes);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return Object.freeze([...results].sort(([left], [right]) => left.localeCompare(right)).map(([relativeRoot, bytes]) => Object.freeze({ relativeRoot, bytes })));
|
|
91
|
+
}
|
|
92
|
+
export async function discoverPackageAdoptionTopology(projectRootInput) {
|
|
93
|
+
const unitRoot = await realDirectory(projectRootInput);
|
|
94
|
+
if (await regularFile(path.join(unitRoot, "pnpm-lock.yaml")))
|
|
95
|
+
return Object.freeze({ schemaVersion: 1, mode: "standalone", transactionRoot: unitRoot, unitRoot, unitRelativeRoot: ".", unitImporterId: ".", lockfilePath: "pnpm-lock.yaml" });
|
|
96
|
+
if (await regularFile(path.join(unitRoot, "pnpm-workspace.yaml")))
|
|
97
|
+
throw new WorkspaceTopologyError("WORKSPACE_NESTED_UNSUPPORTED");
|
|
98
|
+
let cursor = path.dirname(unitRoot);
|
|
99
|
+
let owner;
|
|
100
|
+
while (cursor !== path.parse(cursor).root && cursor !== path.resolve(homedir())) {
|
|
101
|
+
const manifest = await regularFile(path.join(cursor, "pnpm-workspace.yaml"));
|
|
102
|
+
if (manifest) {
|
|
103
|
+
if (owner)
|
|
104
|
+
throw new WorkspaceTopologyError("WORKSPACE_NESTED_UNSUPPORTED");
|
|
105
|
+
owner = { root: cursor, manifest };
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
cursor = path.dirname(cursor);
|
|
109
|
+
}
|
|
110
|
+
if (!owner || !(await regularFile(path.join(owner.root, "pnpm-lock.yaml"))) || !(await regularFile(path.join(owner.root, "project-capabilities.json"))))
|
|
111
|
+
throw new WorkspaceTopologyError("WORKSPACE_OWNER_MISSING");
|
|
112
|
+
const relative = path.relative(owner.root, unitRoot).split(path.sep).join("/");
|
|
113
|
+
if (!relative || relative.startsWith("../") || patterns(owner.manifest.toString("utf8")).filter((pattern) => matches(pattern, relative)).length !== 1)
|
|
114
|
+
throw new WorkspaceTopologyError("WORKSPACE_UNIT_NOT_DECLARED");
|
|
115
|
+
return Object.freeze({ schemaVersion: 1, mode: "pnpm-shared-lockfile", transactionRoot: owner.root, unitRoot, unitRelativeRoot: relative, unitImporterId: relative, workspaceManifestPath: "pnpm-workspace.yaml", workspaceManifestDigest: sha256Digest(owner.manifest), lockfilePath: "pnpm-lock.yaml" });
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=workspace-topology.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-topology.js","sourceRoot":"","sources":["../src/workspace-topology.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aipt/platform-kernel",
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "Dyyto 工程能力采用内核与不可变事实契约。",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"type": "module",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./testing": {
|
|
15
|
+
"types": "./dist/testing.d.ts",
|
|
16
|
+
"default": "./dist/testing.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@jridgewell/trace-mapping": "0.3.31",
|
|
24
|
+
"ajv": "8.20.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@aipt/testkit": "0.1.0"
|
|
28
|
+
},
|
|
29
|
+
"idpPackageRelease": {
|
|
30
|
+
"title": "Dyyto 工程能力内核",
|
|
31
|
+
"maturity": "candidate",
|
|
32
|
+
"repository": "urn:idp:repository:dyyto",
|
|
33
|
+
"packageManager": "pnpm@11.21.0",
|
|
34
|
+
"readme": "packages/kernel/README.md",
|
|
35
|
+
"knowledgeRef": "tech://engineering-capabilities/dyyto/kernel",
|
|
36
|
+
"consumerEvidence": [
|
|
37
|
+
"apps/cli/src",
|
|
38
|
+
"fixtures"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc -p tsconfig.build.json",
|
|
43
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
44
|
+
"test": "vitest run --testTimeout 60000 --maxWorkers=1"
|
|
45
|
+
}
|
|
46
|
+
}
|