nx 21.6.0-canary.20250908-95e7b49 → 21.6.0-canary.20250915-98c47f0
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/package.json +11 -11
- package/schemas/nx-schema.json +14 -0
- package/src/command-line/migrate/command-object.js +1 -1
- package/src/command-line/migrate/migrate.d.ts +2 -2
- package/src/command-line/migrate/migrate.d.ts.map +1 -1
- package/src/command-line/migrate/migrate.js +15 -6
- package/src/command-line/release/config/config.d.ts.map +1 -1
- package/src/command-line/release/config/config.js +3 -0
- package/src/command-line/release/version/release-group-processor.d.ts +1 -2
- package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
- package/src/command-line/release/version/release-group-processor.js +5 -47
- package/src/config/nx-json.d.ts +9 -0
- package/src/config/nx-json.d.ts.map +1 -1
- package/src/core/graph/main.js +1 -1
- package/src/daemon/client/client.d.ts.map +1 -1
- package/src/daemon/client/client.js +6 -4
- package/src/native/nx.wasi-browser.js +42 -39
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/tasks-runner/fork.js +31 -5
- package/src/utils/nx-console-prompt.d.ts.map +1 -1
- package/src/utils/nx-console-prompt.js +8 -0
- package/src/utils/package-manager.d.ts +1 -0
- package/src/utils/package-manager.d.ts.map +1 -1
- package/src/utils/package-manager.js +6 -1
- package/src/utils/provenance.d.ts +48 -0
- package/src/utils/provenance.d.ts.map +1 -0
- package/src/utils/provenance.js +85 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/client/client.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/client/client.ts"],"names":[],"mappings":"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"}
|
@@ -525,10 +525,12 @@ class DaemonClient {
|
|
525
525
|
}
|
526
526
|
}
|
527
527
|
catch (err) {
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
528
|
+
if (err.code !== 'ESRCH') {
|
529
|
+
output_1.output.error({
|
530
|
+
title: err?.message ||
|
531
|
+
'Something unexpected went wrong when stopping the daemon server',
|
532
|
+
});
|
533
|
+
}
|
532
534
|
}
|
533
535
|
(0, tmp_dir_1.removeSocketDir)();
|
534
536
|
}
|
@@ -64,46 +64,49 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
|
64
64
|
__napiInstance.exports['__napi_register__NxConsolePreferences_struct_10']?.()
|
65
65
|
__napiInstance.exports['__napi_register__NxConsolePreferences_impl_14']?.()
|
66
66
|
__napiInstance.exports['__napi_register__log_debug_15']?.()
|
67
|
-
__napiInstance.exports['
|
68
|
-
__napiInstance.exports['
|
69
|
-
__napiInstance.exports['
|
70
|
-
__napiInstance.exports['
|
71
|
-
__napiInstance.exports['
|
72
|
-
__napiInstance.exports['
|
73
|
-
__napiInstance.exports['
|
74
|
-
__napiInstance.exports['
|
75
|
-
__napiInstance.exports['
|
76
|
-
__napiInstance.exports['
|
77
|
-
__napiInstance.exports['
|
78
|
-
__napiInstance.exports['
|
79
|
-
__napiInstance.exports['
|
80
|
-
__napiInstance.exports['
|
81
|
-
__napiInstance.exports['
|
82
|
-
__napiInstance.exports['
|
83
|
-
__napiInstance.exports['
|
84
|
-
__napiInstance.exports['
|
85
|
-
__napiInstance.exports['
|
86
|
-
__napiInstance.exports['
|
87
|
-
__napiInstance.exports['
|
88
|
-
__napiInstance.exports['
|
89
|
-
__napiInstance.exports['
|
90
|
-
__napiInstance.exports['
|
91
|
-
__napiInstance.exports['
|
92
|
-
__napiInstance.exports['
|
93
|
-
__napiInstance.exports['
|
94
|
-
__napiInstance.exports['
|
95
|
-
__napiInstance.exports['
|
96
|
-
__napiInstance.exports['
|
97
|
-
__napiInstance.exports['
|
98
|
-
__napiInstance.exports['
|
99
|
-
__napiInstance.exports['
|
100
|
-
__napiInstance.exports['
|
101
|
-
__napiInstance.exports['
|
102
|
-
__napiInstance.exports['
|
103
|
-
__napiInstance.exports['
|
104
|
-
__napiInstance.exports['
|
67
|
+
__napiInstance.exports['__napi_register__IS_WASM_16']?.()
|
68
|
+
__napiInstance.exports['__napi_register__get_binary_target_17']?.()
|
69
|
+
__napiInstance.exports['__napi_register__ImportResult_struct_18']?.()
|
70
|
+
__napiInstance.exports['__napi_register__find_imports_19']?.()
|
71
|
+
__napiInstance.exports['__napi_register__transfer_project_graph_20']?.()
|
72
|
+
__napiInstance.exports['__napi_register__ExternalNode_struct_21']?.()
|
73
|
+
__napiInstance.exports['__napi_register__Target_struct_22']?.()
|
74
|
+
__napiInstance.exports['__napi_register__Project_struct_23']?.()
|
75
|
+
__napiInstance.exports['__napi_register__ProjectGraph_struct_24']?.()
|
76
|
+
__napiInstance.exports['__napi_register__HashPlanInspector_struct_25']?.()
|
77
|
+
__napiInstance.exports['__napi_register__HashPlanInspector_impl_28']?.()
|
78
|
+
__napiInstance.exports['__napi_register__HashPlanner_struct_29']?.()
|
79
|
+
__napiInstance.exports['__napi_register__HashPlanner_impl_33']?.()
|
80
|
+
__napiInstance.exports['__napi_register__HashDetails_struct_34']?.()
|
81
|
+
__napiInstance.exports['__napi_register__HasherOptions_struct_35']?.()
|
82
|
+
__napiInstance.exports['__napi_register__TaskHasher_struct_36']?.()
|
83
|
+
__napiInstance.exports['__napi_register__TaskHasher_impl_39']?.()
|
84
|
+
__napiInstance.exports['__napi_register__Task_struct_40']?.()
|
85
|
+
__napiInstance.exports['__napi_register__TaskTarget_struct_41']?.()
|
86
|
+
__napiInstance.exports['__napi_register__TaskResult_struct_42']?.()
|
87
|
+
__napiInstance.exports['__napi_register__TaskGraph_struct_43']?.()
|
88
|
+
__napiInstance.exports['__napi_register__FileData_struct_44']?.()
|
89
|
+
__napiInstance.exports['__napi_register__InputsInput_struct_45']?.()
|
90
|
+
__napiInstance.exports['__napi_register__FileSetInput_struct_46']?.()
|
91
|
+
__napiInstance.exports['__napi_register__RuntimeInput_struct_47']?.()
|
92
|
+
__napiInstance.exports['__napi_register__EnvironmentInput_struct_48']?.()
|
93
|
+
__napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_49']?.()
|
94
|
+
__napiInstance.exports['__napi_register__DepsOutputsInput_struct_50']?.()
|
95
|
+
__napiInstance.exports['__napi_register__NxJson_struct_51']?.()
|
96
|
+
__napiInstance.exports['__napi_register__is_ai_agent_52']?.()
|
97
|
+
__napiInstance.exports['__napi_register__FileLock_struct_53']?.()
|
98
|
+
__napiInstance.exports['__napi_register__FileLock_impl_55']?.()
|
99
|
+
__napiInstance.exports['__napi_register__WorkspaceContext_struct_56']?.()
|
100
|
+
__napiInstance.exports['__napi_register__WorkspaceContext_impl_67']?.()
|
101
|
+
__napiInstance.exports['__napi_register__WorkspaceErrors_68']?.()
|
102
|
+
__napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_69']?.()
|
103
|
+
__napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_70']?.()
|
104
|
+
__napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_71']?.()
|
105
|
+
__napiInstance.exports['__napi_register__FileMap_struct_72']?.()
|
106
|
+
__napiInstance.exports['__napi_register____test_only_transfer_file_map_73']?.()
|
105
107
|
}
|
106
108
|
export const FileLock = __napiModule.exports.FileLock
|
109
|
+
export const HashPlanInspector = __napiModule.exports.HashPlanInspector
|
107
110
|
export const HashPlanner = __napiModule.exports.HashPlanner
|
108
111
|
export const ImportResult = __napiModule.exports.ImportResult
|
109
112
|
export const NxConsolePreferences = __napiModule.exports.NxConsolePreferences
|
@@ -120,8 +123,8 @@ export const hashArray = __napiModule.exports.hashArray
|
|
120
123
|
export const hashFile = __napiModule.exports.hashFile
|
121
124
|
export const installNxConsole = __napiModule.exports.installNxConsole
|
122
125
|
export const IS_WASM = __napiModule.exports.IS_WASM
|
126
|
+
export const isAiAgent = __napiModule.exports.isAiAgent
|
123
127
|
export const logDebug = __napiModule.exports.logDebug
|
124
|
-
export const logError = __napiModule.exports.logError
|
125
128
|
export const remove = __napiModule.exports.remove
|
126
129
|
export const testOnlyTransferFileMap = __napiModule.exports.testOnlyTransferFileMap
|
127
130
|
export const transferProjectGraph = __napiModule.exports.transferProjectGraph
|
Binary file
|
package/src/tasks-runner/fork.js
CHANGED
@@ -20,26 +20,52 @@ const childProcess = (0, child_process_1.fork)(script, {
|
|
20
20
|
const pseudoIPC = new pseudo_ipc_1.PseudoIPCClient(pseudoIPCPath);
|
21
21
|
pseudoIPC.onMessageFromParent(forkId, (message) => {
|
22
22
|
childProcess.send(message);
|
23
|
+
}, () => {
|
24
|
+
// IPC connection closed
|
25
|
+
cleanup();
|
26
|
+
process.exit(0);
|
27
|
+
}, () => {
|
28
|
+
// IPC connection error
|
29
|
+
cleanup();
|
30
|
+
process.exit(0);
|
23
31
|
});
|
24
32
|
pseudoIPC.notifyChildIsReady(forkId);
|
25
33
|
process.on('message', (message) => {
|
26
34
|
pseudoIPC.sendMessageToParent(message);
|
27
35
|
});
|
28
36
|
childProcess.on('exit', (code) => {
|
29
|
-
|
37
|
+
cleanup();
|
30
38
|
process.exit(code);
|
31
39
|
});
|
40
|
+
let isCleaningUp = false;
|
41
|
+
function cleanup() {
|
42
|
+
if (isCleaningUp) {
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
isCleaningUp = true;
|
46
|
+
// Kill child process if still running
|
47
|
+
if (childProcess && !childProcess.killed) {
|
48
|
+
childProcess.kill('SIGTERM');
|
49
|
+
}
|
50
|
+
// Close IPC connection
|
51
|
+
try {
|
52
|
+
pseudoIPC.close();
|
53
|
+
}
|
54
|
+
catch {
|
55
|
+
// Ignore errors when closing, connection might already be broken
|
56
|
+
}
|
57
|
+
}
|
32
58
|
// Terminate the child process when exiting
|
33
59
|
process.on('exit', () => {
|
34
|
-
|
60
|
+
cleanup();
|
35
61
|
});
|
36
62
|
process.on('SIGINT', () => {
|
37
|
-
|
63
|
+
cleanup();
|
38
64
|
process.exit((0, exit_codes_1.signalToCode)('SIGINT'));
|
39
65
|
});
|
40
66
|
process.on('SIGTERM', () => {
|
41
|
-
|
67
|
+
cleanup();
|
42
68
|
});
|
43
69
|
process.on('SIGHUP', () => {
|
44
|
-
|
70
|
+
cleanup();
|
45
71
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nx-console-prompt.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/nx-console-prompt.ts"],"names":[],"mappings":"AASA,wBAAsB,wBAAwB,
|
1
|
+
{"version":3,"file":"nx-console-prompt.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/nx-console-prompt.ts"],"names":[],"mappings":"AASA,wBAAsB,wBAAwB,kBA4B7C"}
|
@@ -9,6 +9,14 @@ async function ensureNxConsoleInstalled() {
|
|
9
9
|
const preferences = new native_1.NxConsolePreferences((0, os_1.homedir)());
|
10
10
|
let setting = preferences.getAutoInstallPreference();
|
11
11
|
const canInstallConsole = (0, native_1.canInstallNxConsole)();
|
12
|
+
// If user previously opted in but extension is not installed,
|
13
|
+
// they must have manually uninstalled it - respect that choice
|
14
|
+
if (setting === true && canInstallConsole) {
|
15
|
+
// User had auto-install enabled but extension is missing
|
16
|
+
// This means they manually uninstalled it
|
17
|
+
preferences.setAutoInstallPreference(false);
|
18
|
+
return;
|
19
|
+
}
|
12
20
|
// Noop
|
13
21
|
if (!canInstallConsole) {
|
14
22
|
return;
|
@@ -13,6 +13,7 @@ export interface PackageManagerCommands {
|
|
13
13
|
run: (script: string, args?: string) => string;
|
14
14
|
getRegistryUrl?: string;
|
15
15
|
publish: (packageRoot: string, registry: string, registryConfigKey: string, tag: string) => string;
|
16
|
+
ignoreScriptsFlag?: string;
|
16
17
|
}
|
17
18
|
/**
|
18
19
|
* Detects which package manager is used in the workspace based on the lock file.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-manager.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAE/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,CACP,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,MAAM,KACR,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-manager.ts"],"names":[],"mappings":"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"}
|
@@ -95,6 +95,7 @@ function getPackageManagerCommand(packageManager = detectPackageManager(), root
|
|
95
95
|
yarnVersion = 'latest';
|
96
96
|
useBerry = true;
|
97
97
|
}
|
98
|
+
// new versions of yarn only support ignoring scripts via .yarnrc.yml
|
98
99
|
return {
|
99
100
|
preInstall: `yarn set version ${yarnVersion}`,
|
100
101
|
install: 'yarn',
|
@@ -108,13 +109,14 @@ function getPackageManagerCommand(packageManager = detectPackageManager(), root
|
|
108
109
|
addDev: useBerry ? 'yarn add -D' : 'yarn add -D -W',
|
109
110
|
rm: 'yarn remove',
|
110
111
|
exec: 'yarn',
|
111
|
-
dlx: useBerry ? 'yarn dlx' : '
|
112
|
+
dlx: useBerry ? 'yarn dlx' : 'npx',
|
112
113
|
run: (script, args) => `yarn ${script}${args ? ` ${args}` : ''}`,
|
113
114
|
list: useBerry ? 'yarn info --name-only' : 'yarn list',
|
114
115
|
getRegistryUrl: useBerry
|
115
116
|
? 'yarn config get npmRegistryServer'
|
116
117
|
: 'yarn config get registry',
|
117
118
|
publish: (packageRoot, registry, registryConfigKey, tag) => `npm publish "${packageRoot}" --json --"${registryConfigKey}=${registry}" --tag=${tag}`,
|
119
|
+
ignoreScriptsFlag: useBerry ? undefined : `--ignore-scripts`,
|
118
120
|
};
|
119
121
|
},
|
120
122
|
pnpm: () => {
|
@@ -150,6 +152,7 @@ function getPackageManagerCommand(packageManager = detectPackageManager(), root
|
|
150
152
|
list: 'pnpm ls --depth 100',
|
151
153
|
getRegistryUrl: 'pnpm config get registry',
|
152
154
|
publish: (packageRoot, registry, registryConfigKey, tag) => `pnpm publish "${packageRoot}" --json --"${allowRegistryConfigKey ? registryConfigKey : 'registry'}=${registry}" --tag=${tag} --no-git-checks`,
|
155
|
+
ignoreScriptsFlag: '--ignore-scripts',
|
153
156
|
};
|
154
157
|
},
|
155
158
|
npm: () => {
|
@@ -168,6 +171,7 @@ function getPackageManagerCommand(packageManager = detectPackageManager(), root
|
|
168
171
|
list: 'npm ls',
|
169
172
|
getRegistryUrl: 'npm config get registry',
|
170
173
|
publish: (packageRoot, registry, registryConfigKey, tag) => `npm publish "${packageRoot}" --json --"${registryConfigKey}=${registry}" --tag=${tag}`,
|
174
|
+
ignoreScriptsFlag: '--ignore-scripts',
|
171
175
|
};
|
172
176
|
},
|
173
177
|
bun: () => {
|
@@ -185,6 +189,7 @@ function getPackageManagerCommand(packageManager = detectPackageManager(), root
|
|
185
189
|
list: 'bun pm ls',
|
186
190
|
// Unlike npm, bun publish does not support a custom registryConfigKey option
|
187
191
|
publish: (packageRoot, registry, registryConfigKey, tag) => `bun publish --cwd="${packageRoot}" --json --registry="${registry}" --tag=${tag}`,
|
192
|
+
ignoreScriptsFlag: '--ignore-scripts',
|
188
193
|
};
|
189
194
|
},
|
190
195
|
};
|
@@ -0,0 +1,48 @@
|
|
1
|
+
export declare function ensurePackageHasProvenance(packageName: string, packageVersion: string): Promise<void>;
|
2
|
+
export declare class ProvenanceError extends Error {
|
3
|
+
constructor(packageName: string, packageVersion: string, error?: string);
|
4
|
+
}
|
5
|
+
export declare function getNxPackageGroup(): string[];
|
6
|
+
export type DecodedAttestationPayload = {
|
7
|
+
_type: 'https://in-toto.io/Statement/v1';
|
8
|
+
subject: unknown[];
|
9
|
+
predicateType: 'https://slsa.dev/provenance/v1';
|
10
|
+
predicate: {
|
11
|
+
buildDefinition: {
|
12
|
+
buildType: string;
|
13
|
+
externalParameters: Record<string, any>;
|
14
|
+
internalParameters?: Record<string, any>;
|
15
|
+
resolvedDependencies?: ResourceDescriptor[];
|
16
|
+
};
|
17
|
+
runDetails: {
|
18
|
+
builder: {
|
19
|
+
id: string;
|
20
|
+
builderDependencies?: ResourceDescriptor[];
|
21
|
+
version?: Record<string, string>;
|
22
|
+
};
|
23
|
+
metadata?: {
|
24
|
+
invocationId?: string;
|
25
|
+
startedOn?: string;
|
26
|
+
finishedOn?: string;
|
27
|
+
};
|
28
|
+
byproducts?: ResourceDescriptor[];
|
29
|
+
};
|
30
|
+
};
|
31
|
+
};
|
32
|
+
export interface ResourceDescriptor {
|
33
|
+
uri?: string;
|
34
|
+
digest?: {
|
35
|
+
sha256?: string;
|
36
|
+
sha512?: string;
|
37
|
+
gitCommit?: string;
|
38
|
+
[key: string]: string | undefined;
|
39
|
+
};
|
40
|
+
name?: string;
|
41
|
+
downloadLocation?: string;
|
42
|
+
mediaType?: string;
|
43
|
+
content?: string;
|
44
|
+
annotations?: {
|
45
|
+
[key: string]: any;
|
46
|
+
};
|
47
|
+
}
|
48
|
+
//# sourceMappingURL=provenance.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/provenance.ts"],"names":[],"mappings":"AAaA,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Gf;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAOxE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAa5C;AAoBD,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,iCAAiC,CAAC;IACzC,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,aAAa,EAAE,gCAAgC,CAAC;IAChD,SAAS,EAAE;QACT,eAAe,EAAE;YACf,SAAS,EAAE,MAAM,CAAC;YAClB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzC,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;SAC7C,CAAC;QACF,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,EAAE,EAAE,MAAM,CAAC;gBACX,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;gBAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAClC,CAAC;YACF,QAAQ,CAAC,EAAE;gBACT,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,UAAU,CAAC,EAAE,MAAM,CAAC;aACrB,CAAC;YACF,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;SACnC,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH"}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ProvenanceError = void 0;
|
4
|
+
exports.ensurePackageHasProvenance = ensurePackageHasProvenance;
|
5
|
+
exports.getNxPackageGroup = getNxPackageGroup;
|
6
|
+
const child_process_1 = require("child_process");
|
7
|
+
const path_1 = require("path");
|
8
|
+
const util_1 = require("util");
|
9
|
+
const fileutils_1 = require("./fileutils");
|
10
|
+
const os_1 = require("os");
|
11
|
+
/*
|
12
|
+
* Verifies that the given npm package has provenance attestations
|
13
|
+
* generated by the GitHub Actions workflow at .github/workflows/publish.yml
|
14
|
+
* in the nrwl/nx repository.
|
15
|
+
*
|
16
|
+
* Will throw if the package does not have valid provenance.
|
17
|
+
*/
|
18
|
+
async function ensurePackageHasProvenance(packageName, packageVersion) {
|
19
|
+
// this is used for locally released versions without provenance
|
20
|
+
// do not set this for other reasons or you might be exposed to security risks
|
21
|
+
if (process.env.NX_SKIP_PROVENANCE_CHECK) {
|
22
|
+
return;
|
23
|
+
}
|
24
|
+
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
25
|
+
try {
|
26
|
+
const result = await execFileAsync((0, os_1.platform)() === 'win32' ? 'npm.cmd' : 'npm', ['view', `${packageName}@${packageVersion}`, '--json', '--silent'], {
|
27
|
+
timeout: 20000,
|
28
|
+
});
|
29
|
+
const npmViewResult = JSON.parse(result.stdout.trim());
|
30
|
+
const attURL = npmViewResult.dist?.attestations?.url;
|
31
|
+
if (!attURL)
|
32
|
+
throw new ProvenanceError(packageName, packageVersion, 'No attestation URL found');
|
33
|
+
const response = await fetch(attURL);
|
34
|
+
if (!response.ok) {
|
35
|
+
throw new ProvenanceError(packageName, packageVersion, `HTTP ${response.status}: ${response.statusText}`);
|
36
|
+
}
|
37
|
+
const attestations = (await response.json());
|
38
|
+
const provenanceAttestation = attestations?.attestations?.find((a) => a.predicateType === 'https://slsa.dev/provenance/v1');
|
39
|
+
const dsseEnvelopePayload = JSON.parse(Buffer.from(provenanceAttestation.bundle.dsseEnvelope.payload, 'base64').toString());
|
40
|
+
const workflowParameters = dsseEnvelopePayload?.predicate?.buildDefinition?.externalParameters
|
41
|
+
?.workflow;
|
42
|
+
// verify that provenance was actually generated from the right publishing workflow
|
43
|
+
if (!workflowParameters) {
|
44
|
+
throw new ProvenanceError(packageName, packageVersion, 'Missing workflow parameters in attestation');
|
45
|
+
}
|
46
|
+
if (workflowParameters.repository !== 'https://github.com/nrwl/nx') {
|
47
|
+
throw new ProvenanceError(packageName, packageVersion, 'Repository does not match nrwl/nx');
|
48
|
+
}
|
49
|
+
if (workflowParameters.path !== '.github/workflows/publish.yml') {
|
50
|
+
throw new ProvenanceError(packageName, packageVersion, 'Publishing workflow does not match .github/workflows/publish.yml');
|
51
|
+
}
|
52
|
+
if (workflowParameters.ref !== `refs/tags/${npmViewResult.version}`) {
|
53
|
+
throw new ProvenanceError(packageName, packageVersion, `Version ref does not match refs/tags/${npmViewResult.version}`);
|
54
|
+
}
|
55
|
+
// verify that provenance was generated from the exact same artifact as the one we are installing
|
56
|
+
const distSha = Buffer.from(npmViewResult.dist.integrity.replace('sha512-', ''), 'base64').toString('hex');
|
57
|
+
const attestationSha = dsseEnvelopePayload.subject[0].digest.sha512;
|
58
|
+
if (distSha !== attestationSha) {
|
59
|
+
throw new ProvenanceError(packageName, packageVersion, 'Integrity hash does not match attestation hash');
|
60
|
+
}
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
catch (error) {
|
64
|
+
if (error instanceof ProvenanceError) {
|
65
|
+
throw error;
|
66
|
+
}
|
67
|
+
throw new ProvenanceError(packageName, packageVersion, error.message || error);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
class ProvenanceError extends Error {
|
71
|
+
constructor(packageName, packageVersion, error) {
|
72
|
+
super(`An error occurred while checking the provenance of ${packageName}@${packageVersion}. This could indicate a security risk. Please double check https://www.npmjs.com/package/${packageName} to see if the package is published correctly or file an issue at https://github.com/nrwl/nx/issues. To disable this check at your own risk, you can set the NX_SKIP_PROVENANCE_CHECK environment variable to true. \n Error: ${error ?? ''}`);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
exports.ProvenanceError = ProvenanceError;
|
76
|
+
function getNxPackageGroup() {
|
77
|
+
const packageJsonPath = (0, path_1.join)(__dirname, '../../package.json');
|
78
|
+
const packageJson = (0, fileutils_1.readJsonFile)(packageJsonPath);
|
79
|
+
if (!packageJson['nx-migrations']?.packageGroup) {
|
80
|
+
return ['nx'];
|
81
|
+
}
|
82
|
+
const packages = packageJson['nx-migrations'].packageGroup.filter((dep) => typeof dep === 'string' && dep.startsWith('@nx/'));
|
83
|
+
packages.push('nx');
|
84
|
+
return packages;
|
85
|
+
}
|