@vltpkg/graph 1.0.0-rc.3 → 1.0.0-rc.30
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 +101 -22
- package/dist/{esm/actual → actual}/load.d.ts +8 -1
- package/dist/{esm/actual → actual}/load.js +57 -22
- package/dist/{esm/browser.d.ts → browser.d.ts} +0 -1
- package/dist/{esm/browser.js → browser.js} +0 -1
- package/dist/{esm/build.d.ts → build.d.ts} +0 -1
- package/dist/{esm/build.js → build.js} +0 -1
- package/dist/{esm/dependencies.d.ts → dependencies.d.ts} +0 -1
- package/dist/{esm/dependencies.js → dependencies.js} +0 -1
- package/dist/{esm/diff.d.ts → diff.d.ts} +4 -1
- package/dist/{esm/diff.js → diff.js} +5 -2
- package/dist/{esm/edge.d.ts → edge.d.ts} +1 -1
- package/dist/{esm/edge.js → edge.js} +4 -1
- package/dist/fixup-added-names.d.ts +18 -0
- package/dist/fixup-added-names.js +46 -0
- package/dist/{esm/graph.d.ts → graph.d.ts} +25 -5
- package/dist/{esm/graph.js → graph.js} +92 -43
- package/dist/ideal/append-nodes.d.ts +31 -0
- package/dist/ideal/append-nodes.js +560 -0
- package/dist/{esm/ideal → ideal}/build-ideal-from-starting-graph.d.ts +4 -5
- package/dist/ideal/build-ideal-from-starting-graph.js +69 -0
- package/dist/{esm/ideal → ideal}/build.d.ts +0 -1
- package/dist/ideal/build.js +84 -0
- package/dist/{esm/ideal → ideal}/get-importer-specs.d.ts +9 -3
- package/dist/{esm/ideal → ideal}/get-importer-specs.js +80 -6
- package/dist/ideal/peers.d.ts +160 -0
- package/dist/ideal/peers.js +696 -0
- package/dist/ideal/refresh-ideal-graph.d.ts +43 -0
- package/dist/ideal/refresh-ideal-graph.js +62 -0
- package/dist/{esm/ideal → ideal}/remove-satisfied-specs.d.ts +0 -1
- package/dist/{esm/ideal → ideal}/remove-satisfied-specs.js +8 -1
- package/dist/ideal/sorting.d.ts +45 -0
- package/dist/ideal/sorting.js +70 -0
- package/dist/ideal/types.d.ts +107 -0
- package/dist/ideal/types.js +1 -0
- package/dist/{esm/index.d.ts → index.d.ts} +1 -1
- package/dist/{esm/index.js → index.js} +1 -1
- package/dist/{esm/install.d.ts → install.d.ts} +3 -3
- package/dist/{esm/install.js → install.js} +49 -9
- package/dist/{esm/lockfile → lockfile}/load-edges.d.ts +0 -1
- package/dist/{esm/lockfile → lockfile}/load-edges.js +7 -4
- package/dist/{esm/lockfile → lockfile}/load-nodes.d.ts +0 -1
- package/dist/{esm/lockfile → lockfile}/load-nodes.js +10 -4
- package/dist/{esm/lockfile → lockfile}/load.d.ts +0 -5
- package/dist/{esm/lockfile → lockfile}/load.js +31 -33
- package/dist/{esm/lockfile → lockfile}/save.d.ts +1 -2
- package/dist/{esm/lockfile → lockfile}/save.js +8 -7
- package/dist/{esm/lockfile → lockfile}/types.d.ts +7 -1
- package/dist/{esm/lockfile → lockfile}/types.js +6 -1
- package/dist/{esm/modifiers.d.ts → modifiers.d.ts} +0 -1
- package/dist/{esm/modifiers.js → modifiers.js} +0 -1
- package/dist/{esm/node.d.ts → node.d.ts} +16 -1
- package/dist/{esm/node.js → node.js} +21 -1
- package/dist/{esm/non-empty-list.d.ts → non-empty-list.d.ts} +0 -1
- package/dist/{esm/non-empty-list.js → non-empty-list.js} +0 -1
- package/dist/{esm/reify → reify}/add-edge.d.ts +0 -1
- package/dist/{esm/reify → reify}/add-edge.js +10 -4
- package/dist/{esm/reify → reify}/add-edges.d.ts +1 -2
- package/dist/{esm/reify → reify}/add-edges.js +2 -2
- package/dist/{esm/reify → reify}/add-nodes.d.ts +0 -1
- package/dist/{esm/reify → reify}/add-nodes.js +0 -1
- package/dist/{esm/reify → reify}/bin-chmod.d.ts +0 -1
- package/dist/{esm/reify → reify}/bin-chmod.js +0 -1
- package/dist/{esm/reify → reify}/build.d.ts +0 -1
- package/dist/{esm/reify → reify}/build.js +12 -4
- package/dist/{esm/reify → reify}/calculate-save-value.d.ts +0 -1
- package/dist/{esm/reify → reify}/calculate-save-value.js +6 -1
- package/dist/{esm/reify → reify}/check-needed-build.d.ts +10 -1
- package/dist/reify/check-needed-build.js +71 -0
- package/dist/{esm/reify → reify}/delete-edge.d.ts +0 -1
- package/dist/{esm/reify → reify}/delete-edge.js +0 -1
- package/dist/{esm/reify → reify}/delete-edges.d.ts +0 -1
- package/dist/{esm/reify → reify}/delete-edges.js +0 -1
- package/dist/{esm/reify → reify}/delete-nodes.d.ts +0 -1
- package/dist/{esm/reify → reify}/delete-nodes.js +0 -1
- package/dist/{esm/reify → reify}/extract-node.d.ts +0 -1
- package/dist/{esm/reify → reify}/extract-node.js +10 -3
- package/dist/{esm/reify → reify}/index.d.ts +1 -1
- package/dist/{esm/reify → reify}/index.js +4 -4
- package/dist/{esm/reify → reify}/internal-hoist.d.ts +0 -1
- package/dist/{esm/reify → reify}/internal-hoist.js +0 -1
- package/dist/{esm/reify → reify}/optional-fail.d.ts +0 -1
- package/dist/{esm/reify → reify}/optional-fail.js +0 -1
- package/dist/{esm/reify → reify}/rollback.d.ts +0 -1
- package/dist/{esm/reify → reify}/rollback.js +0 -1
- package/dist/{esm/reify → reify}/update-importers-package-json.d.ts +1 -2
- package/dist/{esm/reify → reify}/update-importers-package-json.js +19 -17
- package/dist/{esm/remove-optional-subgraph.d.ts → remove-optional-subgraph.d.ts} +0 -1
- package/dist/{esm/remove-optional-subgraph.js → remove-optional-subgraph.js} +0 -1
- package/dist/{esm/resolve-save-type.d.ts → resolve-save-type.d.ts} +0 -1
- package/dist/{esm/resolve-save-type.js → resolve-save-type.js} +0 -1
- package/dist/{esm/stringify-node.d.ts → stringify-node.d.ts} +0 -1
- package/dist/{esm/stringify-node.js → stringify-node.js} +10 -2
- package/dist/{esm/transfer-data → transfer-data}/load.d.ts +0 -1
- package/dist/{esm/transfer-data → transfer-data}/load.js +5 -3
- package/dist/{esm/uninstall.d.ts → uninstall.d.ts} +0 -1
- package/dist/{esm/uninstall.js → uninstall.js} +27 -7
- package/dist/{esm/update.d.ts → update.d.ts} +0 -1
- package/dist/{esm/update.js → update.js} +11 -1
- package/dist/{esm/virtual-root.d.ts → virtual-root.d.ts} +0 -1
- package/dist/{esm/virtual-root.js → virtual-root.js} +0 -1
- package/dist/{esm/visualization → visualization}/human-readable-output.d.ts +0 -1
- package/dist/{esm/visualization → visualization}/human-readable-output.js +7 -3
- package/dist/{esm/visualization → visualization}/json-output.d.ts +2 -2
- package/dist/{esm/visualization → visualization}/json-output.js +2 -3
- package/dist/{esm/visualization → visualization}/mermaid-output.d.ts +2 -2
- package/dist/visualization/mermaid-output.js +170 -0
- package/dist/{esm/visualization → visualization}/object-like-output.d.ts +0 -1
- package/dist/{esm/visualization → visualization}/object-like-output.js +0 -1
- package/package.json +51 -63
- package/dist/esm/actual/load.d.ts.map +0 -1
- package/dist/esm/actual/load.js.map +0 -1
- package/dist/esm/browser.d.ts.map +0 -1
- package/dist/esm/browser.js.map +0 -1
- package/dist/esm/build.d.ts.map +0 -1
- package/dist/esm/build.js.map +0 -1
- package/dist/esm/dependencies.d.ts.map +0 -1
- package/dist/esm/dependencies.js.map +0 -1
- package/dist/esm/diff.d.ts.map +0 -1
- package/dist/esm/diff.js.map +0 -1
- package/dist/esm/edge.d.ts.map +0 -1
- package/dist/esm/edge.js.map +0 -1
- package/dist/esm/graph.d.ts.map +0 -1
- package/dist/esm/graph.js.map +0 -1
- package/dist/esm/ideal/add-nodes.d.ts +0 -34
- package/dist/esm/ideal/add-nodes.d.ts.map +0 -1
- package/dist/esm/ideal/add-nodes.js +0 -39
- package/dist/esm/ideal/add-nodes.js.map +0 -1
- package/dist/esm/ideal/append-nodes.d.ts +0 -19
- package/dist/esm/ideal/append-nodes.d.ts.map +0 -1
- package/dist/esm/ideal/append-nodes.js +0 -289
- package/dist/esm/ideal/append-nodes.js.map +0 -1
- package/dist/esm/ideal/build-ideal-from-starting-graph.d.ts.map +0 -1
- package/dist/esm/ideal/build-ideal-from-starting-graph.js +0 -55
- package/dist/esm/ideal/build-ideal-from-starting-graph.js.map +0 -1
- package/dist/esm/ideal/build.d.ts.map +0 -1
- package/dist/esm/ideal/build.js +0 -48
- package/dist/esm/ideal/build.js.map +0 -1
- package/dist/esm/ideal/get-importer-specs.d.ts.map +0 -1
- package/dist/esm/ideal/get-importer-specs.js.map +0 -1
- package/dist/esm/ideal/remove-nodes.d.ts +0 -7
- package/dist/esm/ideal/remove-nodes.d.ts.map +0 -1
- package/dist/esm/ideal/remove-nodes.js +0 -19
- package/dist/esm/ideal/remove-nodes.js.map +0 -1
- package/dist/esm/ideal/remove-satisfied-specs.d.ts.map +0 -1
- package/dist/esm/ideal/remove-satisfied-specs.js.map +0 -1
- package/dist/esm/ideal/types.d.ts +0 -35
- package/dist/esm/ideal/types.d.ts.map +0 -1
- package/dist/esm/ideal/types.js +0 -2
- package/dist/esm/ideal/types.js.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/install.d.ts.map +0 -1
- package/dist/esm/install.js.map +0 -1
- package/dist/esm/lockfile/load-edges.d.ts.map +0 -1
- package/dist/esm/lockfile/load-edges.js.map +0 -1
- package/dist/esm/lockfile/load-nodes.d.ts.map +0 -1
- package/dist/esm/lockfile/load-nodes.js.map +0 -1
- package/dist/esm/lockfile/load.d.ts.map +0 -1
- package/dist/esm/lockfile/load.js.map +0 -1
- package/dist/esm/lockfile/save.d.ts.map +0 -1
- package/dist/esm/lockfile/save.js.map +0 -1
- package/dist/esm/lockfile/types.d.ts.map +0 -1
- package/dist/esm/lockfile/types.js.map +0 -1
- package/dist/esm/modifiers.d.ts.map +0 -1
- package/dist/esm/modifiers.js.map +0 -1
- package/dist/esm/node.d.ts.map +0 -1
- package/dist/esm/node.js.map +0 -1
- package/dist/esm/non-empty-list.d.ts.map +0 -1
- package/dist/esm/non-empty-list.js.map +0 -1
- package/dist/esm/package.json +0 -3
- package/dist/esm/reify/add-edge.d.ts.map +0 -1
- package/dist/esm/reify/add-edge.js.map +0 -1
- package/dist/esm/reify/add-edges.d.ts.map +0 -1
- package/dist/esm/reify/add-edges.js.map +0 -1
- package/dist/esm/reify/add-nodes.d.ts.map +0 -1
- package/dist/esm/reify/add-nodes.js.map +0 -1
- package/dist/esm/reify/bin-chmod.d.ts.map +0 -1
- package/dist/esm/reify/bin-chmod.js.map +0 -1
- package/dist/esm/reify/build.d.ts.map +0 -1
- package/dist/esm/reify/build.js.map +0 -1
- package/dist/esm/reify/calculate-save-value.d.ts.map +0 -1
- package/dist/esm/reify/calculate-save-value.js.map +0 -1
- package/dist/esm/reify/check-needed-build.d.ts.map +0 -1
- package/dist/esm/reify/check-needed-build.js +0 -50
- package/dist/esm/reify/check-needed-build.js.map +0 -1
- package/dist/esm/reify/delete-edge.d.ts.map +0 -1
- package/dist/esm/reify/delete-edge.js.map +0 -1
- package/dist/esm/reify/delete-edges.d.ts.map +0 -1
- package/dist/esm/reify/delete-edges.js.map +0 -1
- package/dist/esm/reify/delete-nodes.d.ts.map +0 -1
- package/dist/esm/reify/delete-nodes.js.map +0 -1
- package/dist/esm/reify/extract-node.d.ts.map +0 -1
- package/dist/esm/reify/extract-node.js.map +0 -1
- package/dist/esm/reify/index.d.ts.map +0 -1
- package/dist/esm/reify/index.js.map +0 -1
- package/dist/esm/reify/internal-hoist.d.ts.map +0 -1
- package/dist/esm/reify/internal-hoist.js.map +0 -1
- package/dist/esm/reify/optional-fail.d.ts.map +0 -1
- package/dist/esm/reify/optional-fail.js.map +0 -1
- package/dist/esm/reify/rollback.d.ts.map +0 -1
- package/dist/esm/reify/rollback.js.map +0 -1
- package/dist/esm/reify/update-importers-package-json.d.ts.map +0 -1
- package/dist/esm/reify/update-importers-package-json.js.map +0 -1
- package/dist/esm/remove-optional-subgraph.d.ts.map +0 -1
- package/dist/esm/remove-optional-subgraph.js.map +0 -1
- package/dist/esm/resolve-save-type.d.ts.map +0 -1
- package/dist/esm/resolve-save-type.js.map +0 -1
- package/dist/esm/stringify-node.d.ts.map +0 -1
- package/dist/esm/stringify-node.js.map +0 -1
- package/dist/esm/transfer-data/load.d.ts.map +0 -1
- package/dist/esm/transfer-data/load.js.map +0 -1
- package/dist/esm/uninstall.d.ts.map +0 -1
- package/dist/esm/uninstall.js.map +0 -1
- package/dist/esm/update.d.ts.map +0 -1
- package/dist/esm/update.js.map +0 -1
- package/dist/esm/virtual-root.d.ts.map +0 -1
- package/dist/esm/virtual-root.js.map +0 -1
- package/dist/esm/visualization/human-readable-output.d.ts.map +0 -1
- package/dist/esm/visualization/human-readable-output.js.map +0 -1
- package/dist/esm/visualization/json-output.d.ts.map +0 -1
- package/dist/esm/visualization/json-output.js.map +0 -1
- package/dist/esm/visualization/mermaid-output.d.ts.map +0 -1
- package/dist/esm/visualization/mermaid-output.js +0 -123
- package/dist/esm/visualization/mermaid-output.js.map +0 -1
- package/dist/esm/visualization/object-like-output.d.ts.map +0 -1
- package/dist/esm/visualization/object-like-output.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { error } from '@vltpkg/error-cause';
|
|
1
2
|
import { PackageJson } from '@vltpkg/package-json';
|
|
2
3
|
import { Monorepo } from '@vltpkg/workspaces';
|
|
3
4
|
import { readFileSync } from 'node:fs';
|
|
@@ -5,6 +6,7 @@ import { resolve } from 'node:path';
|
|
|
5
6
|
import { loadEdges } from "./load-edges.js";
|
|
6
7
|
import { loadNodes } from "./load-nodes.js";
|
|
7
8
|
import { Graph } from "../graph.js";
|
|
9
|
+
import { LOCKFILE_VERSION } from "./types.js";
|
|
8
10
|
const loadLockfile = (projectRoot, lockfilePath) => JSON.parse(readFileSync(resolve(projectRoot, lockfilePath), {
|
|
9
11
|
encoding: 'utf8',
|
|
10
12
|
}));
|
|
@@ -19,21 +21,43 @@ export const loadHidden = (options) => {
|
|
|
19
21
|
return loadObject(options, loadLockfile(projectRoot, 'node_modules/.vlt-lock.json'));
|
|
20
22
|
};
|
|
21
23
|
export const loadObject = (options, lockfileData) => {
|
|
22
|
-
const
|
|
24
|
+
const version = lockfileData.lockfileVersion;
|
|
25
|
+
// Lockfile version is required, likely a corrupted lockfile if missing
|
|
26
|
+
if (version == null) {
|
|
27
|
+
throw error('Missing lockfile version', {
|
|
28
|
+
code: 'ELOCKFILEVERSION',
|
|
29
|
+
found: version,
|
|
30
|
+
wanted: LOCKFILE_VERSION,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Lockfile version must match current version
|
|
34
|
+
if (version !== LOCKFILE_VERSION) {
|
|
35
|
+
throw error(`Unsupported lockfile version.
|
|
36
|
+
|
|
37
|
+
Run: \`vlt update\` to start a new, supported lockfile.`, {
|
|
38
|
+
code: 'ELOCKFILEVERSION',
|
|
39
|
+
found: version,
|
|
40
|
+
wanted: LOCKFILE_VERSION,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const { mainManifest, scurry } = options;
|
|
23
44
|
const packageJson = options.packageJson ?? new PackageJson();
|
|
24
45
|
const monorepo = options.monorepo ??
|
|
25
46
|
Monorepo.maybeLoad(options.projectRoot, { packageJson, scurry });
|
|
26
|
-
const { catalog = {}, catalogs = {},
|
|
47
|
+
const { catalog = {}, catalogs = {}, 'scoped-registries': scopedRegistriesOption, registry, registries, 'git-hosts': gitHosts, 'git-host-archives': gitHostArchives,
|
|
27
48
|
/* c8 ignore next */
|
|
28
49
|
} = lockfileData.options ?? {};
|
|
50
|
+
// backwards-compat: legacy lockfiles wrote this field as `scope-registries`
|
|
51
|
+
const scopeRegistries = scopedRegistriesOption ??
|
|
52
|
+
lockfileData.options['scope-registries'];
|
|
29
53
|
// Optimize options merging - only create new objects when needed
|
|
30
54
|
const mergedOptions = {
|
|
31
55
|
...options,
|
|
32
56
|
catalog,
|
|
33
57
|
catalogs,
|
|
34
|
-
'
|
|
35
|
-
{ ...options['
|
|
36
|
-
: options['
|
|
58
|
+
'scoped-registries': scopeRegistries ?
|
|
59
|
+
{ ...options['scoped-registries'], ...scopeRegistries }
|
|
60
|
+
: options['scoped-registries'],
|
|
37
61
|
registry: registry ?? options.registry,
|
|
38
62
|
registries: registries ?
|
|
39
63
|
{ ...options.registries, ...registries }
|
|
@@ -50,33 +74,8 @@ export const loadObject = (options, lockfileData) => {
|
|
|
50
74
|
mainManifest,
|
|
51
75
|
monorepo,
|
|
52
76
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// recalculate the graph - useful for refreshing an ideal graph when
|
|
56
|
-
// modifiers are swapped.
|
|
57
|
-
// Optimize modifier comparison - avoid JSON.stringify for simple cases
|
|
58
|
-
let modifiersChanged = false;
|
|
59
|
-
if (skipLoadingNodesOnModifiersChange) {
|
|
60
|
-
const lockfileConfig = modifiersLockfileConfig ?? {};
|
|
61
|
-
const optionsConfig = modifiers?.config ?? {};
|
|
62
|
-
// Quick check for obvious differences
|
|
63
|
-
const lockfileKeys = Object.keys(lockfileConfig);
|
|
64
|
-
const optionsKeys = Object.keys(optionsConfig);
|
|
65
|
-
if (lockfileKeys.length !== optionsKeys.length) {
|
|
66
|
-
modifiersChanged = true;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
// Only use JSON.stringify if we need deep comparison
|
|
70
|
-
const lockfileModifiers = JSON.stringify(lockfileConfig);
|
|
71
|
-
const optionsModifiers = JSON.stringify(optionsConfig);
|
|
72
|
-
modifiersChanged = lockfileModifiers !== optionsModifiers;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const shouldLoadDependencies = !(skipLoadingNodesOnModifiersChange && modifiersChanged);
|
|
76
|
-
if (shouldLoadDependencies) {
|
|
77
|
-
loadNodes(graph, lockfileData.nodes, mergedOptions, options.actual, options.throwOnMissingManifest);
|
|
78
|
-
loadEdges(graph, lockfileData.edges, mergedOptions);
|
|
79
|
-
}
|
|
77
|
+
loadNodes(graph, lockfileData.nodes, mergedOptions, options.actual, options.throwOnMissingManifest);
|
|
78
|
+
loadEdges(graph, lockfileData.edges, mergedOptions);
|
|
80
79
|
// hydrate missing node-level registry data
|
|
81
80
|
for (const node of graph.nodes.values()) {
|
|
82
81
|
const [firstEdge] = node.edgesIn;
|
|
@@ -86,4 +85,3 @@ export const loadObject = (options, lockfileData) => {
|
|
|
86
85
|
}
|
|
87
86
|
return graph;
|
|
88
87
|
};
|
|
89
|
-
//# sourceMappingURL=load.js.map
|
|
@@ -24,8 +24,7 @@ export type SaveOptions = SpecOptions & {
|
|
|
24
24
|
*/
|
|
25
25
|
throwOnMissingManifest?: boolean;
|
|
26
26
|
};
|
|
27
|
-
export declare const lockfileData: ({ graph, catalog, catalogs, "git-hosts": gitHosts, "git-host-archives": gitHostArchives, modifiers, registry, registries, saveManifests, saveBuildData, "
|
|
27
|
+
export declare const lockfileData: ({ graph, catalog, catalogs, "git-hosts": gitHosts, "git-host-archives": gitHostArchives, modifiers, registry, registries, saveManifests, saveBuildData, "scoped-registries": scopeRegistries, "jsr-registries": jsrRegistries, throwOnMissingManifest, }: SaveOptions) => LockfileData;
|
|
28
28
|
export declare const saveData: (data: LockfileData, fileName: string, saveManifests?: boolean) => void;
|
|
29
29
|
export declare const save: (options: Omit<SaveOptions, "saveManifests">) => void;
|
|
30
30
|
export declare const saveHidden: (options: Omit<SaveOptions, "saveManifests" | "saveBuildData">) => void;
|
|
31
|
-
//# sourceMappingURL=save.d.ts.map
|
|
@@ -2,7 +2,7 @@ import { expandNormalizedManifestSymbols, isRecordStringString, } from '@vltpkg/
|
|
|
2
2
|
import { defaultGitHostArchives, defaultGitHosts, defaultJsrRegistries, defaultRegistries, defaultRegistry, defaultScopeRegistries, } from '@vltpkg/spec';
|
|
3
3
|
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
4
4
|
import { dirname, resolve } from 'node:path';
|
|
5
|
-
import { getFlagNumFromNode, getBuildStateFromNode } from "./types.js";
|
|
5
|
+
import { getFlagNumFromNode, getBuildStateFromNode, LOCKFILE_VERSION, } from "./types.js";
|
|
6
6
|
import { error } from '@vltpkg/error-cause';
|
|
7
7
|
const formatNodes = (nodes, saveManifests, saveBuildData, registry, throwOnMissingManifest) => {
|
|
8
8
|
// we do not store importers in the lockfile, though we do store
|
|
@@ -23,7 +23,9 @@ const formatNodes = (nodes, saveManifests, saveBuildData, registry, throwOnMissi
|
|
|
23
23
|
if (node.integrity) {
|
|
24
24
|
lockfileNode[2] = node.integrity;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
// skip resolved for remote nodes since
|
|
27
|
+
// these are already part of the dep id
|
|
28
|
+
if (resolved && !node.id.startsWith('remote')) {
|
|
27
29
|
lockfileNode[3] = resolved;
|
|
28
30
|
}
|
|
29
31
|
if (location) {
|
|
@@ -80,7 +82,7 @@ const removeDefaultItems = (defaultItems, items) => {
|
|
|
80
82
|
}
|
|
81
83
|
return res;
|
|
82
84
|
};
|
|
83
|
-
export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts, 'git-host-archives': gitHostArchives, modifiers, registry, registries, saveManifests, saveBuildData, '
|
|
85
|
+
export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts, 'git-host-archives': gitHostArchives, modifiers, registry, registries, saveManifests, saveBuildData, 'scoped-registries': scopeRegistries, 'jsr-registries': jsrRegistries, throwOnMissingManifest, }) => {
|
|
84
86
|
const cleanGitHosts = isRecordStringString(gitHosts) ?
|
|
85
87
|
removeDefaultItems(defaultGitHosts, gitHosts)
|
|
86
88
|
: undefined;
|
|
@@ -101,7 +103,7 @@ export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts,
|
|
|
101
103
|
: undefined;
|
|
102
104
|
const hasItems = (clean) => clean && Object.keys(clean).length;
|
|
103
105
|
return {
|
|
104
|
-
lockfileVersion:
|
|
106
|
+
lockfileVersion: LOCKFILE_VERSION,
|
|
105
107
|
options: {
|
|
106
108
|
...(hasItems(cleanModifiers) ?
|
|
107
109
|
{ modifiers: cleanModifiers }
|
|
@@ -109,7 +111,7 @@ export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts,
|
|
|
109
111
|
...(hasItems(catalog) ? { catalog } : {}),
|
|
110
112
|
...(hasItems(catalogs) ? { catalogs } : {}),
|
|
111
113
|
...(hasItems(cleanScopeRegistries) ?
|
|
112
|
-
{ '
|
|
114
|
+
{ 'scoped-registries': cleanScopeRegistries }
|
|
113
115
|
: undefined),
|
|
114
116
|
...(hasItems(cleanJsrRegistries) ?
|
|
115
117
|
{ 'jsr-registries': cleanJsrRegistries }
|
|
@@ -117,7 +119,7 @@ export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts,
|
|
|
117
119
|
...(registry !== undefined && registry !== defaultRegistry ?
|
|
118
120
|
{ registry }
|
|
119
121
|
: undefined),
|
|
120
|
-
...(hasItems(
|
|
122
|
+
...(hasItems(cleanRegistries) ?
|
|
121
123
|
{ registries: cleanRegistries }
|
|
122
124
|
: undefined),
|
|
123
125
|
...(hasItems(cleanGitHosts) ?
|
|
@@ -170,4 +172,3 @@ export const saveHidden = (options) => {
|
|
|
170
172
|
mkdirSync(dirname(fileName), { recursive: true });
|
|
171
173
|
saveData(data, fileName, true);
|
|
172
174
|
};
|
|
173
|
-
//# sourceMappingURL=save.js.map
|
|
@@ -8,6 +8,7 @@ export type LockfilePlatform = {
|
|
|
8
8
|
engines?: Record<string, string>;
|
|
9
9
|
os?: string[] | string;
|
|
10
10
|
cpu?: string[] | string;
|
|
11
|
+
libc?: string[] | string;
|
|
11
12
|
};
|
|
12
13
|
/**
|
|
13
14
|
* This is the main type definition for the contents of the
|
|
@@ -24,6 +25,12 @@ export type LockfileData = {
|
|
|
24
25
|
nodes: Record<DepID, LockfileNode>;
|
|
25
26
|
edges: LockfileEdges;
|
|
26
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Current lockfile format version.
|
|
30
|
+
* Only lockfiles with matching version are considered valid.
|
|
31
|
+
* Bump when making breaking format changes.
|
|
32
|
+
*/
|
|
33
|
+
export declare const LOCKFILE_VERSION = 1;
|
|
27
34
|
export declare const getFlagNumFromNode: (node: {
|
|
28
35
|
optional?: boolean;
|
|
29
36
|
dev?: boolean;
|
|
@@ -86,4 +93,3 @@ export type LockfileEdges = {
|
|
|
86
93
|
export type LockfileEdgeKey = `${DepID} ${string}`;
|
|
87
94
|
/** `${type} ${spec} ${to}` */
|
|
88
95
|
export type LockfileEdgeValue = `${DependencyTypeShort} ${Spec['bareSpec']} ${DepID | 'MISSING'}`;
|
|
89
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Current lockfile format version.
|
|
3
|
+
* Only lockfiles with matching version are considered valid.
|
|
4
|
+
* Bump when making breaking format changes.
|
|
5
|
+
*/
|
|
6
|
+
export const LOCKFILE_VERSION = 1;
|
|
1
7
|
export const getFlagNumFromNode = (node) => node.optional && node.dev ? LockfileNodeFlagDevOptional
|
|
2
8
|
: node.optional ? LockfileNodeFlagOptional
|
|
3
9
|
: node.dev ? LockfileNodeFlagDev
|
|
@@ -41,4 +47,3 @@ export const getBuildStateFromNum = (state) => {
|
|
|
41
47
|
return 'none';
|
|
42
48
|
}
|
|
43
49
|
};
|
|
44
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -117,6 +117,7 @@ export declare class Node implements NodeLike {
|
|
|
117
117
|
engines?: Record<string, string>;
|
|
118
118
|
os?: string[] | string;
|
|
119
119
|
cpu?: string[] | string;
|
|
120
|
+
libc?: string[] | string;
|
|
120
121
|
};
|
|
121
122
|
/**
|
|
122
123
|
* Record of binary names to their paths in the package, if any.
|
|
@@ -134,6 +135,19 @@ export declare class Node implements NodeLike {
|
|
|
134
135
|
* - 'failed': Node build has failed
|
|
135
136
|
*/
|
|
136
137
|
buildState: 'none' | 'needed' | 'built' | 'failed';
|
|
138
|
+
/**
|
|
139
|
+
* Deterministic unique string used to identify (and ultimately duplicate)
|
|
140
|
+
* nodes that are affected by a peer context set modified resolution.
|
|
141
|
+
* These are appended to the node {@link DepID} as the `extra` suffix.
|
|
142
|
+
*/
|
|
143
|
+
peerSetHash?: string;
|
|
144
|
+
/**
|
|
145
|
+
* True if this node is detached from the graph.
|
|
146
|
+
* This is used to indicate that the node is not part of the graph
|
|
147
|
+
* although the node is still available as part of the resolution process.
|
|
148
|
+
* Allows for skipping fetching manifests for detached nodes.
|
|
149
|
+
*/
|
|
150
|
+
detached: boolean;
|
|
137
151
|
/**
|
|
138
152
|
* The file system location for this node.
|
|
139
153
|
*/
|
|
@@ -192,6 +206,7 @@ export declare class Node implements NodeLike {
|
|
|
192
206
|
maybeSetConfusedManifest(spec: Spec, confused?: NormalizedManifest): void;
|
|
193
207
|
toJSON(): {
|
|
194
208
|
rawManifest?: import("@vltpkg/types").Override<import("@vltpkg/types").Manifest, import("@vltpkg/types").NormalizedFields> | undefined;
|
|
209
|
+
peerSetHash?: string | undefined;
|
|
195
210
|
id: DepID;
|
|
196
211
|
name: string;
|
|
197
212
|
version: string | undefined;
|
|
@@ -209,6 +224,7 @@ export declare class Node implements NodeLike {
|
|
|
209
224
|
engines?: Record<string, string>;
|
|
210
225
|
os?: string[] | string;
|
|
211
226
|
cpu?: string[] | string;
|
|
227
|
+
libc?: string[] | string;
|
|
212
228
|
} | undefined;
|
|
213
229
|
buildState: "none" | "needed" | "built" | "failed";
|
|
214
230
|
};
|
|
@@ -216,4 +232,3 @@ export declare class Node implements NodeLike {
|
|
|
216
232
|
}
|
|
217
233
|
export declare const isNode: (value: unknown) => value is Node;
|
|
218
234
|
export declare const asNode: (value: unknown) => Node;
|
|
219
|
-
//# sourceMappingURL=node.d.ts.map
|
|
@@ -167,6 +167,19 @@ export class Node {
|
|
|
167
167
|
* - 'failed': Node build has failed
|
|
168
168
|
*/
|
|
169
169
|
buildState = 'none';
|
|
170
|
+
/**
|
|
171
|
+
* Deterministic unique string used to identify (and ultimately duplicate)
|
|
172
|
+
* nodes that are affected by a peer context set modified resolution.
|
|
173
|
+
* These are appended to the node {@link DepID} as the `extra` suffix.
|
|
174
|
+
*/
|
|
175
|
+
peerSetHash;
|
|
176
|
+
/**
|
|
177
|
+
* True if this node is detached from the graph.
|
|
178
|
+
* This is used to indicate that the node is not part of the graph
|
|
179
|
+
* although the node is still available as part of the resolution process.
|
|
180
|
+
* Allows for skipping fetching manifests for detached nodes.
|
|
181
|
+
*/
|
|
182
|
+
detached = false;
|
|
170
183
|
/**
|
|
171
184
|
* The file system location for this node.
|
|
172
185
|
*/
|
|
@@ -271,6 +284,11 @@ export class Node {
|
|
|
271
284
|
const tuple = splitDepID(this.id);
|
|
272
285
|
const [type, resolved] = tuple;
|
|
273
286
|
switch (type) {
|
|
287
|
+
case 'remote': {
|
|
288
|
+
this.resolved = resolved;
|
|
289
|
+
this.integrity ??= this.manifest?.dist?.integrity;
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
274
292
|
case 'registry':
|
|
275
293
|
this.#registryNodeResolved(tuple);
|
|
276
294
|
break;
|
|
@@ -343,6 +361,9 @@ export class Node {
|
|
|
343
361
|
modifier: this.modifier,
|
|
344
362
|
platform: this.platform,
|
|
345
363
|
buildState: this.buildState,
|
|
364
|
+
...(this.peerSetHash ?
|
|
365
|
+
{ peerSetHash: this.peerSetHash }
|
|
366
|
+
: undefined),
|
|
346
367
|
...(this.confused ?
|
|
347
368
|
{ rawManifest: this.#rawManifest }
|
|
348
369
|
: undefined),
|
|
@@ -365,4 +386,3 @@ export const asNode = (value) => {
|
|
|
365
386
|
}
|
|
366
387
|
return value;
|
|
367
388
|
};
|
|
368
|
-
//# sourceMappingURL=node.js.map
|
|
@@ -7,4 +7,3 @@ import type { Edge } from '../edge.ts';
|
|
|
7
7
|
* until scripts are run, in the case of non-store deps like workspaces
|
|
8
8
|
*/
|
|
9
9
|
export declare const addEdge: (edge: Edge, scurry: PathScurry, remover: RollbackRemove, bins?: Record<string, string>) => Promise<void>;
|
|
10
|
-
//# sourceMappingURL=add-edge.d.ts.map
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { cmdShimIfExists } from '@vltpkg/cmd-shim';
|
|
2
2
|
import { mkdir, symlink } from 'node:fs/promises';
|
|
3
|
-
import { dirname, relative } from 'node:path';
|
|
3
|
+
import { dirname, relative, resolve } from 'node:path';
|
|
4
4
|
const clobberSymlink = async (target, link, remover, type = 'file') => {
|
|
5
|
+
// On Windows, directory symlinks require elevated privileges.
|
|
6
|
+
// Use junctions instead, which work without special permissions.
|
|
7
|
+
// Junctions require absolute target paths, so resolve relative targets.
|
|
8
|
+
const symlinkType = type === 'dir' && process.platform === 'win32' ? 'junction' : type;
|
|
9
|
+
const symlinkTarget = symlinkType === 'junction' ?
|
|
10
|
+
resolve(dirname(link), target)
|
|
11
|
+
: target;
|
|
5
12
|
await mkdir(dirname(link), { recursive: true });
|
|
6
13
|
try {
|
|
7
|
-
await symlink(
|
|
14
|
+
await symlink(symlinkTarget, link, symlinkType);
|
|
8
15
|
}
|
|
9
16
|
catch (er) {
|
|
10
17
|
/* c8 ignore start */
|
|
@@ -16,7 +23,7 @@ const clobberSymlink = async (target, link, remover, type = 'file') => {
|
|
|
16
23
|
await remover.rm(link);
|
|
17
24
|
try {
|
|
18
25
|
// then try to create it again
|
|
19
|
-
await symlink(
|
|
26
|
+
await symlink(symlinkTarget, link, symlinkType);
|
|
20
27
|
/* c8 ignore start */
|
|
21
28
|
}
|
|
22
29
|
catch (er) {
|
|
@@ -62,4 +69,3 @@ export const addEdge = async (edge, scurry, remover, bins) => {
|
|
|
62
69
|
if (promises.length)
|
|
63
70
|
await Promise.all(promises);
|
|
64
71
|
};
|
|
65
|
-
//# sourceMappingURL=add-edge.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { RollbackRemove } from '@vltpkg/rollback-remove';
|
|
2
2
|
import type { PathScurry } from 'path-scurry';
|
|
3
3
|
import type { Diff } from '../diff.ts';
|
|
4
|
-
export declare const addEdges: (diff: Diff, scurry: PathScurry, remover: RollbackRemove) => Promise<unknown>[];
|
|
5
|
-
//# sourceMappingURL=add-edges.d.ts.map
|
|
4
|
+
export declare const addEdges: (diff: Diff, scurry: PathScurry, remover: RollbackRemove) => (() => Promise<unknown>)[];
|
|
@@ -5,8 +5,8 @@ export const addEdges = (diff, scurry, remover) => {
|
|
|
5
5
|
const { to } = edge;
|
|
6
6
|
if (!to)
|
|
7
7
|
continue;
|
|
8
|
-
|
|
8
|
+
const bins = to.bins;
|
|
9
|
+
actions.push(() => addEdge(edge, scurry, remover, bins));
|
|
9
10
|
}
|
|
10
11
|
return actions;
|
|
11
12
|
};
|
|
12
|
-
//# sourceMappingURL=add-edges.js.map
|
|
@@ -4,4 +4,3 @@ import type { SpecOptions } from '@vltpkg/spec';
|
|
|
4
4
|
import type { PathScurry } from 'path-scurry';
|
|
5
5
|
import type { Diff } from '../diff.ts';
|
|
6
6
|
export declare const addNodes: (diff: Diff, scurry: PathScurry, remover: RollbackRemove, options: SpecOptions, packageInfo: PackageInfoClient) => (() => Promise<unknown>)[];
|
|
7
|
-
//# sourceMappingURL=add-nodes.d.ts.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// walk the graph of added nodes, building and chmoding their bins
|
|
2
2
|
// at the end, we get back to the importers, and run their prepare
|
|
3
3
|
// script as well as install script.
|
|
4
|
+
import { join } from 'node:path';
|
|
4
5
|
import { run } from '@vltpkg/run';
|
|
5
|
-
import { graphRun } from 'graph-run';
|
|
6
|
+
import { graphRun } from '@vltpkg/graph-run';
|
|
6
7
|
import { nonEmptyList } from "../non-empty-list.js";
|
|
7
8
|
import { optionalFail } from "./optional-fail.js";
|
|
8
9
|
import { binChmod } from "./bin-chmod.js";
|
|
@@ -71,8 +72,16 @@ const visit = async (packageJson, scurry, node, signal, _path) => {
|
|
|
71
72
|
const { manifest } = node;
|
|
72
73
|
const { scripts = {} } = manifest;
|
|
73
74
|
const { install, preinstall, postinstall, prepare, preprepare, postprepare, } = scripts;
|
|
74
|
-
//
|
|
75
|
-
|
|
75
|
+
// Check for binding.gyp file (npm's implicit install detection)
|
|
76
|
+
// "If there is a binding.gyp file in the root of your package and you
|
|
77
|
+
// haven't defined your own install or preinstall scripts, npm will default
|
|
78
|
+
// the install command to compile using node-gyp via node-gyp rebuild"
|
|
79
|
+
const hasBindingGyp = scurry
|
|
80
|
+
.lstatSync(join(node.resolvedLocation(scurry), 'binding.gyp'))
|
|
81
|
+
?.isFile() ?? false;
|
|
82
|
+
const hasImplicitInstall = hasBindingGyp && !install && !preinstall;
|
|
83
|
+
// if it has install script or binding.gyp (implicit install), run it
|
|
84
|
+
const runInstall = !!(install || preinstall || postinstall) || hasImplicitInstall;
|
|
76
85
|
if (runInstall) {
|
|
77
86
|
await run({
|
|
78
87
|
signal,
|
|
@@ -100,4 +109,3 @@ const visit = async (packageJson, scurry, node, signal, _path) => {
|
|
|
100
109
|
}
|
|
101
110
|
await binChmod(node, scurry);
|
|
102
111
|
};
|
|
103
|
-
//# sourceMappingURL=build.js.map
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
const SAVE_PREFIX = '^';
|
|
2
2
|
export const calculateSaveValue = (nodeType, spec, existing, nodeVersion) => {
|
|
3
|
+
// Catalog specs should always be preserved as-is in package.json.
|
|
4
|
+
// The catalog reference (e.g. "catalog:dev") is the user's intent;
|
|
5
|
+
// the resolved version is tracked in the lockfile.
|
|
6
|
+
if (spec.type === 'catalog') {
|
|
7
|
+
return spec.bareSpec;
|
|
8
|
+
}
|
|
3
9
|
if (
|
|
4
10
|
// if not from the registry, save whatever we requested
|
|
5
11
|
nodeType === 'registry' &&
|
|
@@ -42,4 +48,3 @@ export const calculateSaveValue = (nodeType, spec, existing, nodeVersion) => {
|
|
|
42
48
|
}
|
|
43
49
|
return spec.bareSpec;
|
|
44
50
|
};
|
|
45
|
-
//# sourceMappingURL=calculate-save-value.js.map
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { PathScurry } from 'path-scurry';
|
|
2
|
+
import type { PackageJson } from '@vltpkg/package-json';
|
|
1
3
|
import type { Diff } from '../diff.ts';
|
|
2
4
|
import type { Node } from '../node.ts';
|
|
3
5
|
/**
|
|
@@ -14,6 +16,14 @@ export type CheckNeededBuildOptions = {
|
|
|
14
16
|
* The diff object containing nodes to process
|
|
15
17
|
*/
|
|
16
18
|
diff: Diff;
|
|
19
|
+
/**
|
|
20
|
+
* PathScurry instance for filesystem access
|
|
21
|
+
*/
|
|
22
|
+
scurry: PathScurry;
|
|
23
|
+
/**
|
|
24
|
+
* PackageJson instance for reading manifests from disk
|
|
25
|
+
*/
|
|
26
|
+
packageJson: PackageJson;
|
|
17
27
|
};
|
|
18
28
|
/**
|
|
19
29
|
* Check which nodes need to be built and set buildState accordingly
|
|
@@ -22,4 +32,3 @@ export type CheckNeededBuildOptions = {
|
|
|
22
32
|
* @returns {BuildData} The BuildData object containing Node objects that need building
|
|
23
33
|
*/
|
|
24
34
|
export declare const checkNeededBuild: (options: CheckNeededBuildOptions) => BuildData;
|
|
25
|
-
//# sourceMappingURL=check-needed-build.d.ts.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a node needs to be built based on the conditions from build.ts:
|
|
4
|
+
* 1. Has install lifecycle scripts (install, preinstall, postinstall)
|
|
5
|
+
* 2. Has binding.gyp file with no install/preinstall scripts (implicit install)
|
|
6
|
+
* 3. Is an importer or git dependency with prepare scripts (prepare, preprepare, postprepare)
|
|
7
|
+
* 4. Has binary files that need to be linked
|
|
8
|
+
*/
|
|
9
|
+
const nodeNeedsBuild = (node, scurry, packageJson) => {
|
|
10
|
+
// If the node has already been built during reify, no need to build again
|
|
11
|
+
if (node.built)
|
|
12
|
+
return false;
|
|
13
|
+
// If the manifest is not available on the node, read it from disk.
|
|
14
|
+
// This can happen when the ideal graph is loaded from a lockfile
|
|
15
|
+
// and there's no actual graph available to hydrate the manifest data from.
|
|
16
|
+
let manifest = node.manifest;
|
|
17
|
+
if (!manifest) {
|
|
18
|
+
try {
|
|
19
|
+
manifest = packageJson.read(node.resolvedLocation(scurry));
|
|
20
|
+
node.manifest = manifest;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// If the manifest cannot be read (missing/corrupted), treat as
|
|
24
|
+
// "no build needed" to avoid failing the entire reification.
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const { scripts = {} } = manifest;
|
|
29
|
+
// Check for install lifecycle scripts
|
|
30
|
+
const runInstall = !!(scripts.install ||
|
|
31
|
+
scripts.preinstall ||
|
|
32
|
+
scripts.postinstall);
|
|
33
|
+
if (runInstall)
|
|
34
|
+
return true;
|
|
35
|
+
// Check for binding.gyp file (npm's implicit install detection)
|
|
36
|
+
// "If there is a binding.gyp file in the root of your package and you
|
|
37
|
+
// haven't defined your own install or preinstall scripts, npm will default
|
|
38
|
+
// the install command to compile using node-gyp via node-gyp rebuild"
|
|
39
|
+
const hasBindingGyp = scurry
|
|
40
|
+
.lstatSync(join(node.resolvedLocation(scurry), 'binding.gyp'))
|
|
41
|
+
?.isFile() ?? false;
|
|
42
|
+
if (hasBindingGyp && !scripts.install && !scripts.preinstall)
|
|
43
|
+
return true;
|
|
44
|
+
// Check for prepare scripts on importers or git dependencies
|
|
45
|
+
const prepable = node.id.startsWith('git') || node.importer || !node.inVltStore();
|
|
46
|
+
const runPrepare = !!((scripts.prepare || scripts.preprepare || scripts.postprepare)
|
|
47
|
+
/* c8 ignore next 2 */
|
|
48
|
+
) && prepable;
|
|
49
|
+
if (runPrepare)
|
|
50
|
+
return true;
|
|
51
|
+
return false;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Check which nodes need to be built and set buildState accordingly
|
|
55
|
+
* Marks nodes with buildState = 'needed' for those that require
|
|
56
|
+
* install lifecycle scripts as part of `vlt build`
|
|
57
|
+
* @returns {BuildData} The BuildData object containing Node objects that need building
|
|
58
|
+
*/
|
|
59
|
+
export const checkNeededBuild = (options) => {
|
|
60
|
+
const { diff, scurry, packageJson } = options;
|
|
61
|
+
// Filter nodes to only include those that actually need to be built
|
|
62
|
+
const nodesToBuild = [...diff.nodes.add].filter(node => nodeNeedsBuild(node, scurry, packageJson));
|
|
63
|
+
// Set buildState = 'needed' on all nodes that require building
|
|
64
|
+
for (const node of nodesToBuild) {
|
|
65
|
+
node.buildState = 'needed';
|
|
66
|
+
}
|
|
67
|
+
const buildData = {
|
|
68
|
+
needsBuildNodes: nodesToBuild,
|
|
69
|
+
};
|
|
70
|
+
return buildData;
|
|
71
|
+
};
|
|
@@ -2,4 +2,3 @@ import type { RollbackRemove } from '@vltpkg/rollback-remove';
|
|
|
2
2
|
import type { PathScurry } from 'path-scurry';
|
|
3
3
|
import type { Edge } from '../edge.ts';
|
|
4
4
|
export declare const deleteEdge: (edge: Edge, scurry: PathScurry, remover: RollbackRemove) => Promise<void>;
|
|
5
|
-
//# sourceMappingURL=delete-edge.d.ts.map
|
|
@@ -2,4 +2,3 @@ import type { RollbackRemove } from '@vltpkg/rollback-remove';
|
|
|
2
2
|
import type { PathScurry } from 'path-scurry';
|
|
3
3
|
import type { Diff } from '../diff.ts';
|
|
4
4
|
export declare const deleteEdges: (diff: Diff, scurry: PathScurry, remover: RollbackRemove) => (() => Promise<unknown>)[];
|
|
5
|
-
//# sourceMappingURL=delete-edges.d.ts.map
|
|
@@ -2,4 +2,3 @@ import type { RollbackRemove } from '@vltpkg/rollback-remove';
|
|
|
2
2
|
import type { PathScurry } from 'path-scurry';
|
|
3
3
|
import type { Diff } from '../diff.ts';
|
|
4
4
|
export declare const deleteNodes: (diff: Diff, remover: RollbackRemove, scurry: PathScurry) => Promise<unknown>[];
|
|
5
|
-
//# sourceMappingURL=delete-nodes.d.ts.map
|
|
@@ -21,4 +21,3 @@ export type ExtractResult = {
|
|
|
21
21
|
* Returns a promise that resolves when the extraction is complete.
|
|
22
22
|
*/
|
|
23
23
|
export declare const extractNode: (node: Node, scurry: PathScurry, remover: RollbackRemove, options: SpecOptions, packageInfo: PackageInfoClient, diff?: Diff) => Promise<ExtractResult>;
|
|
24
|
-
//# sourceMappingURL=extract-node.d.ts.map
|