@vltpkg/graph 1.0.0-rc.9 → 1.0.2
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 +29 -6
- 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} +3 -2
- package/dist/{esm/diff.d.ts → diff.d.ts} +2 -1
- package/dist/{esm/diff.js → diff.js} +5 -2
- package/dist/{esm/edge.d.ts → edge.d.ts} +0 -1
- package/dist/{esm/edge.js → edge.js} +0 -1
- package/dist/{esm/fixup-added-names.d.ts → fixup-added-names.d.ts} +4 -2
- package/dist/{esm/fixup-added-names.js → fixup-added-names.js} +16 -1
- package/dist/{esm/graph.d.ts → graph.d.ts} +13 -1
- package/dist/{esm/graph.js → graph.js} +49 -12
- package/dist/{esm/ideal → ideal}/append-nodes.d.ts +14 -3
- package/dist/{esm/ideal → ideal}/append-nodes.js +252 -64
- package/dist/{esm/ideal → ideal}/build-ideal-from-starting-graph.d.ts +0 -1
- package/dist/{esm/ideal → ideal}/build-ideal-from-starting-graph.js +0 -1
- package/dist/{esm/ideal → ideal}/build.d.ts +0 -1
- package/dist/{esm/ideal → ideal}/build.js +15 -2
- package/dist/{esm/ideal → ideal}/get-importer-specs.d.ts +0 -1
- package/dist/{esm/ideal → ideal}/get-importer-specs.js +13 -2
- package/dist/ideal/peers.d.ts +160 -0
- package/dist/ideal/peers.js +696 -0
- package/dist/{esm/ideal → ideal}/refresh-ideal-graph.d.ts +0 -5
- package/dist/{esm/ideal → ideal}/refresh-ideal-graph.js +11 -26
- 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/{esm/ideal → ideal}/types.d.ts +1 -6
- package/dist/ideal/types.js +1 -0
- package/dist/{esm/index.d.ts → index.d.ts} +0 -1
- package/dist/{esm/index.js → index.js} +0 -1
- package/dist/{esm/install.d.ts → install.d.ts} +2 -1
- package/dist/{esm/install.js → install.js} +24 -4
- package/dist/{esm/lockfile → lockfile}/load-edges.d.ts +0 -1
- package/dist/{esm/lockfile → lockfile}/load-edges.js +16 -6
- package/dist/{esm/lockfile → lockfile}/load-nodes.d.ts +0 -1
- package/dist/{esm/lockfile → lockfile}/load-nodes.js +6 -3
- package/dist/{esm/lockfile → lockfile}/load.d.ts +0 -1
- package/dist/lockfile/load.js +171 -0
- package/dist/{esm/lockfile → lockfile}/save.d.ts +1 -2
- package/dist/{esm/lockfile → lockfile}/save.js +17 -11
- 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} +2 -1
- package/dist/{esm/node.js → node.js} +5 -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/path-security-error.d.ts +5 -0
- package/dist/path-security-error.js +13 -0
- 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 +0 -1
- package/dist/{esm/reify → reify}/add-edges.js +0 -1
- 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 +1 -2
- package/dist/{esm/reify → reify}/calculate-save-value.js +11 -5
- 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 +3 -1
- package/dist/{esm/reify → reify}/index.js +25 -5
- 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 +11 -2
- package/dist/{esm/reify → reify}/update-importers-package-json.js +4 -5
- 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} +0 -1
- package/dist/{esm/transfer-data → transfer-data}/load.d.ts +0 -1
- package/dist/{esm/transfer-data → transfer-data}/load.js +8 -5
- package/dist/{esm/uninstall.d.ts → uninstall.d.ts} +0 -1
- package/dist/{esm/uninstall.js → uninstall.js} +17 -7
- package/dist/{esm/update.d.ts → update.d.ts} +0 -1
- package/dist/{esm/update.js → update.js} +1 -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 +0 -1
- package/dist/{esm/visualization → visualization}/json-output.d.ts +0 -1
- package/dist/{esm/visualization → visualization}/json-output.js +0 -1
- package/dist/{esm/visualization → visualization}/mermaid-output.d.ts +2 -2
- package/dist/{esm/visualization → visualization}/mermaid-output.js +27 -21
- 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 +57 -62
- 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/fixup-added-names.d.ts.map +0 -1
- package/dist/esm/fixup-added-names.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/append-nodes.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/esm/ideal/build.d.ts.map +0 -1
- 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/get-ordered-dependencies.d.ts +0 -10
- package/dist/esm/ideal/get-ordered-dependencies.d.ts.map +0 -1
- package/dist/esm/ideal/get-ordered-dependencies.js +0 -42
- package/dist/esm/ideal/get-ordered-dependencies.js.map +0 -1
- package/dist/esm/ideal/peers.d.ts +0 -71
- package/dist/esm/ideal/peers.d.ts.map +0 -1
- package/dist/esm/ideal/peers.js +0 -318
- package/dist/esm/ideal/peers.js.map +0 -1
- package/dist/esm/ideal/refresh-ideal-graph.d.ts.map +0 -1
- package/dist/esm/ideal/refresh-ideal-graph.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.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 +0 -64
- 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.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,8 +1,8 @@
|
|
|
1
1
|
import { expandNormalizedManifestSymbols, isRecordStringString, } from '@vltpkg/types';
|
|
2
|
-
import { defaultGitHostArchives, defaultGitHosts, defaultJsrRegistries, defaultRegistries,
|
|
2
|
+
import { defaultGitHostArchives, defaultGitHosts, defaultJsrRegistries, defaultRegistries, defaultRegistryName, 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
|
|
@@ -12,7 +12,10 @@ const formatNodes = (nodes, saveManifests, saveBuildData, registry, throwOnMissi
|
|
|
12
12
|
const orderedNodes = arr.sort((a, b) => a.id.localeCompare(b.id, 'en'));
|
|
13
13
|
const res = {};
|
|
14
14
|
for (const node of orderedNodes) {
|
|
15
|
-
|
|
15
|
+
// when no registry is configured, nothing can be reconstructed on
|
|
16
|
+
// load, so every resolved value has to be persisted
|
|
17
|
+
const customRegistry = node.resolved &&
|
|
18
|
+
(!registry || !node.resolved.startsWith(registry));
|
|
16
19
|
const resolved = customRegistry ? node.resolved : undefined;
|
|
17
20
|
// if it's in a location other than the default, stash that
|
|
18
21
|
const location = node.id.startsWith('file') || node.inVltStore() ?
|
|
@@ -23,7 +26,9 @@ const formatNodes = (nodes, saveManifests, saveBuildData, registry, throwOnMissi
|
|
|
23
26
|
if (node.integrity) {
|
|
24
27
|
lockfileNode[2] = node.integrity;
|
|
25
28
|
}
|
|
26
|
-
|
|
29
|
+
// skip resolved for remote nodes since
|
|
30
|
+
// these are already part of the dep id
|
|
31
|
+
if (resolved && !node.id.startsWith('remote')) {
|
|
27
32
|
lockfileNode[3] = resolved;
|
|
28
33
|
}
|
|
29
34
|
if (location) {
|
|
@@ -80,7 +85,7 @@ const removeDefaultItems = (defaultItems, items) => {
|
|
|
80
85
|
}
|
|
81
86
|
return res;
|
|
82
87
|
};
|
|
83
|
-
export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts, 'git-host-archives': gitHostArchives, modifiers, registry, registries, saveManifests, saveBuildData, '
|
|
88
|
+
export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts, 'git-host-archives': gitHostArchives, modifiers, registry, registries, 'default-registry-alias': defaultRegistryAlias, saveManifests, saveBuildData, 'scoped-registries': scopeRegistries, 'jsr-registries': jsrRegistries, throwOnMissingManifest, }) => {
|
|
84
89
|
const cleanGitHosts = isRecordStringString(gitHosts) ?
|
|
85
90
|
removeDefaultItems(defaultGitHosts, gitHosts)
|
|
86
91
|
: undefined;
|
|
@@ -101,7 +106,7 @@ export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts,
|
|
|
101
106
|
: undefined;
|
|
102
107
|
const hasItems = (clean) => clean && Object.keys(clean).length;
|
|
103
108
|
return {
|
|
104
|
-
lockfileVersion:
|
|
109
|
+
lockfileVersion: LOCKFILE_VERSION,
|
|
105
110
|
options: {
|
|
106
111
|
...(hasItems(cleanModifiers) ?
|
|
107
112
|
{ modifiers: cleanModifiers }
|
|
@@ -109,15 +114,17 @@ export const lockfileData = ({ graph, catalog, catalogs, 'git-hosts': gitHosts,
|
|
|
109
114
|
...(hasItems(catalog) ? { catalog } : {}),
|
|
110
115
|
...(hasItems(catalogs) ? { catalogs } : {}),
|
|
111
116
|
...(hasItems(cleanScopeRegistries) ?
|
|
112
|
-
{ '
|
|
117
|
+
{ 'scoped-registries': cleanScopeRegistries }
|
|
113
118
|
: undefined),
|
|
114
119
|
...(hasItems(cleanJsrRegistries) ?
|
|
115
120
|
{ 'jsr-registries': cleanJsrRegistries }
|
|
116
121
|
: undefined),
|
|
117
|
-
...(registry !== undefined
|
|
118
|
-
|
|
122
|
+
...(registry !== undefined ? { registry } : undefined),
|
|
123
|
+
...((defaultRegistryAlias !== undefined &&
|
|
124
|
+
defaultRegistryAlias !== defaultRegistryName) ?
|
|
125
|
+
{ 'default-registry-alias': defaultRegistryAlias }
|
|
119
126
|
: undefined),
|
|
120
|
-
...(hasItems(
|
|
127
|
+
...(hasItems(cleanRegistries) ?
|
|
121
128
|
{ registries: cleanRegistries }
|
|
122
129
|
: undefined),
|
|
123
130
|
...(hasItems(cleanGitHosts) ?
|
|
@@ -170,4 +177,3 @@ export const saveHidden = (options) => {
|
|
|
170
177
|
mkdirSync(dirname(fileName), { recursive: true });
|
|
171
178
|
saveData(data, fileName, true);
|
|
172
179
|
};
|
|
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.
|
|
@@ -223,6 +224,7 @@ export declare class Node implements NodeLike {
|
|
|
223
224
|
engines?: Record<string, string>;
|
|
224
225
|
os?: string[] | string;
|
|
225
226
|
cpu?: string[] | string;
|
|
227
|
+
libc?: string[] | string;
|
|
226
228
|
} | undefined;
|
|
227
229
|
buildState: "none" | "needed" | "built" | "failed";
|
|
228
230
|
};
|
|
@@ -230,4 +232,3 @@ export declare class Node implements NodeLike {
|
|
|
230
232
|
}
|
|
231
233
|
export declare const isNode: (value: unknown) => value is Node;
|
|
232
234
|
export declare const asNode: (value: unknown) => Node;
|
|
233
|
-
//# sourceMappingURL=node.d.ts.map
|
|
@@ -284,6 +284,11 @@ export class Node {
|
|
|
284
284
|
const tuple = splitDepID(this.id);
|
|
285
285
|
const [type, resolved] = tuple;
|
|
286
286
|
switch (type) {
|
|
287
|
+
case 'remote': {
|
|
288
|
+
this.resolved = resolved;
|
|
289
|
+
this.integrity ??= this.manifest?.dist?.integrity;
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
287
292
|
case 'registry':
|
|
288
293
|
this.#registryNodeResolved(tuple);
|
|
289
294
|
break;
|
|
@@ -381,4 +386,3 @@ export const asNode = (value) => {
|
|
|
381
386
|
}
|
|
382
387
|
return value;
|
|
383
388
|
};
|
|
384
|
-
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const codes = new Set(['EINVALIDNAME']);
|
|
2
|
+
/**
|
|
3
|
+
* Is this error a path-safety verdict? Walks the cause chain, because
|
|
4
|
+
* lower layers (eg `PackageJson.read`) re-wrap what they throw.
|
|
5
|
+
*/
|
|
6
|
+
export const isPathSecurityError = (er) => {
|
|
7
|
+
for (let e = er; e && typeof e === 'object'; e = e.cause) {
|
|
8
|
+
const { code } = e;
|
|
9
|
+
if (typeof code === 'string' && codes.has(code))
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
@@ -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
|
|
@@ -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 addEdges: (diff: Diff, scurry: PathScurry, remover: RollbackRemove) => (() => Promise<unknown>)[];
|
|
5
|
-
//# sourceMappingURL=add-edges.d.ts.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,3 +1,2 @@
|
|
|
1
1
|
import type { Spec } from '@vltpkg/spec';
|
|
2
|
-
export declare const calculateSaveValue: (nodeType: string, spec: Spec, existing: string | undefined, nodeVersion: string | undefined) => string;
|
|
3
|
-
//# sourceMappingURL=calculate-save-value.d.ts.map
|
|
2
|
+
export declare const calculateSaveValue: (nodeType: string, spec: Spec, existing: string | undefined, nodeVersion: string | undefined, saveExact?: boolean, savePrefix?: string) => string;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
const
|
|
2
|
-
export const calculateSaveValue = (nodeType, spec, existing, nodeVersion) => {
|
|
1
|
+
const DEFAULT_SAVE_PREFIX = '^';
|
|
2
|
+
export const calculateSaveValue = (nodeType, spec, existing, nodeVersion, saveExact, savePrefix) => {
|
|
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' &&
|
|
@@ -19,8 +25,9 @@ export const calculateSaveValue = (nodeType, spec, existing, nodeVersion) => {
|
|
|
19
25
|
return existing;
|
|
20
26
|
}
|
|
21
27
|
else {
|
|
22
|
-
const
|
|
23
|
-
|
|
28
|
+
const prefix = saveExact ? '' : (savePrefix ?? DEFAULT_SAVE_PREFIX);
|
|
29
|
+
const finalRange = (spec.final.semver && !saveExact && spec.final.bareSpec) ||
|
|
30
|
+
`${prefix}${nodeVersion}`;
|
|
24
31
|
// didn't have dep previously, or depended on a different thing
|
|
25
32
|
// than what was requested. Update with the ^ range based on
|
|
26
33
|
// the node that landed in the graph, but preserve alias prefix
|
|
@@ -42,4 +49,3 @@ export const calculateSaveValue = (nodeType, spec, existing, nodeVersion) => {
|
|
|
42
49
|
}
|
|
43
50
|
return spec.bareSpec;
|
|
44
51
|
};
|
|
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
|
|
@@ -42,11 +42,15 @@ export const extractNode = async (node, scurry, remover, options, packageInfo, d
|
|
|
42
42
|
await remover.rm(target);
|
|
43
43
|
if (removeOptionalFailedNode) {
|
|
44
44
|
try {
|
|
45
|
-
await packageInfo.extract(spec, target, {
|
|
45
|
+
const result = await packageInfo.extract(spec, target, {
|
|
46
46
|
from,
|
|
47
47
|
integrity,
|
|
48
48
|
resolved,
|
|
49
49
|
});
|
|
50
|
+
// Store computed integrity for git/remote deps
|
|
51
|
+
if (result.integrity && !node.integrity) {
|
|
52
|
+
node.integrity = result.integrity;
|
|
53
|
+
}
|
|
50
54
|
return { success: true, node };
|
|
51
55
|
}
|
|
52
56
|
catch (error) {
|
|
@@ -55,11 +59,15 @@ export const extractNode = async (node, scurry, remover, options, packageInfo, d
|
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
61
|
else {
|
|
58
|
-
await packageInfo.extract(spec, target, {
|
|
62
|
+
const result = await packageInfo.extract(spec, target, {
|
|
59
63
|
from,
|
|
60
64
|
integrity,
|
|
61
65
|
resolved,
|
|
62
66
|
});
|
|
67
|
+
// Store computed integrity for git/remote deps
|
|
68
|
+
if (result.integrity && !node.integrity) {
|
|
69
|
+
node.integrity = result.integrity;
|
|
70
|
+
}
|
|
63
71
|
return { success: true, node };
|
|
64
72
|
}
|
|
65
73
|
}
|
|
@@ -73,4 +81,3 @@ export const extractNode = async (node, scurry, remover, options, packageInfo, d
|
|
|
73
81
|
throw error;
|
|
74
82
|
}
|
|
75
83
|
};
|
|
76
|
-
//# sourceMappingURL=extract-node.js.map
|
|
@@ -15,6 +15,9 @@ export type ReifyOptions = LoadOptions & {
|
|
|
15
15
|
packageInfo: PackageInfoClient;
|
|
16
16
|
modifiers?: GraphModifier;
|
|
17
17
|
remover: RollbackRemove;
|
|
18
|
+
update?: boolean;
|
|
19
|
+
saveExact?: boolean;
|
|
20
|
+
savePrefix?: string;
|
|
18
21
|
};
|
|
19
22
|
export type ReifyResult = {
|
|
20
23
|
/**
|
|
@@ -31,4 +34,3 @@ export type ReifyResult = {
|
|
|
31
34
|
* Make the current project match the supplied graph.
|
|
32
35
|
*/
|
|
33
36
|
export declare const reify: (options: ReifyOptions) => Promise<ReifyResult>;
|
|
34
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -67,9 +67,28 @@ export const reify = async (options) => {
|
|
|
67
67
|
const noModifiedDependencies = !options.add?.modifiedDependencies &&
|
|
68
68
|
!options.remove?.modifiedDependencies;
|
|
69
69
|
const skipOptionalOnly = noModifiedDependencies && diff.optionalOnly;
|
|
70
|
+
const skippable = skipOptionalOnly && !options.update;
|
|
70
71
|
const res = { diff };
|
|
71
|
-
if (!diff.hasChanges() ||
|
|
72
|
-
//
|
|
72
|
+
if (!diff.hasChanges() || skippable) {
|
|
73
|
+
// Even when there are no changes to reify, ensure lockfiles
|
|
74
|
+
// exist on disk. This handles the case where a project has no
|
|
75
|
+
// dependencies (or only workspace importers) but still needs
|
|
76
|
+
// lockfiles written on the first install.
|
|
77
|
+
if (!scurry.lstatSync('vlt-lock.json') ||
|
|
78
|
+
!scurry.lstatSync('node_modules/.vlt-lock.json')) {
|
|
79
|
+
saveHidden(options);
|
|
80
|
+
const lfData = lockfileData(options);
|
|
81
|
+
saveData(lfData, scurry.resolve('vlt-lock.json'), false);
|
|
82
|
+
}
|
|
83
|
+
// Even with no reify changes, report nodes that still need building.
|
|
84
|
+
// Build state is persisted in the hidden lockfile and loaded into the
|
|
85
|
+
// actual graph, so check there for pending builds.
|
|
86
|
+
const pending = [...actual.nodes.values()]
|
|
87
|
+
.filter(n => n.buildState === 'needed')
|
|
88
|
+
.map(n => n.id);
|
|
89
|
+
if (pending.length) {
|
|
90
|
+
res.buildQueue = pending;
|
|
91
|
+
}
|
|
73
92
|
done();
|
|
74
93
|
return res;
|
|
75
94
|
}
|
|
@@ -92,7 +111,7 @@ export const reify = async (options) => {
|
|
|
92
111
|
};
|
|
93
112
|
const reify_ = async (options, diff, remover) => {
|
|
94
113
|
const res = {};
|
|
95
|
-
const { add, remove, packageInfo, packageJson, scurry, allowScripts, } = options;
|
|
114
|
+
const { add, remove, packageInfo, packageJson, scurry, allowScripts, saveExact, savePrefix, } = options;
|
|
96
115
|
const saveImportersPackageJson =
|
|
97
116
|
/* c8 ignore next */
|
|
98
117
|
add?.modifiedDependencies || remove?.modifiedDependencies ?
|
|
@@ -101,6 +120,8 @@ const reify_ = async (options, diff, remover) => {
|
|
|
101
120
|
remove,
|
|
102
121
|
graph: options.graph,
|
|
103
122
|
packageJson,
|
|
123
|
+
saveExact,
|
|
124
|
+
savePrefix,
|
|
104
125
|
})
|
|
105
126
|
: undefined;
|
|
106
127
|
// before anything else happens, grab the ideal tree as it was resolved
|
|
@@ -119,7 +140,7 @@ const reify_ = async (options, diff, remover) => {
|
|
|
119
140
|
await internalHoist(diff.to, options, remover);
|
|
120
141
|
// looks up all nodes setting buildState = 'needed'
|
|
121
142
|
// on nodes that require building
|
|
122
|
-
checkNeededBuild({ diff });
|
|
143
|
+
checkNeededBuild({ diff, scurry, packageJson });
|
|
123
144
|
// Filter nodes allowed to run scripts if allowScripts query is provided
|
|
124
145
|
const allowScriptsNodes = await filterNodesByQuery(diff.to, allowScripts);
|
|
125
146
|
// ensure that all added bins are chmod +x
|
|
@@ -158,4 +179,3 @@ const reify_ = async (options, diff, remover) => {
|
|
|
158
179
|
// returns the result object
|
|
159
180
|
return res;
|
|
160
181
|
};
|
|
161
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -6,4 +6,3 @@ type InternalHoistOptions = Pick<ReifyOptions, 'projectRoot' | 'scurry'>;
|
|
|
6
6
|
export declare const pickNodeToHoist: (nodes: Set<Node>) => Node | undefined;
|
|
7
7
|
export declare const internalHoist: (graph: Graph, options: InternalHoistOptions, remover: RollbackRemove) => Promise<void>;
|
|
8
8
|
export {};
|
|
9
|
-
//# sourceMappingURL=internal-hoist.d.ts.map
|