@nrwl/workspace 13.4.5-beta.3 → 13.4.5
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +6 -5
- package/src/command-line/affected.js +4 -4
- package/src/command-line/affected.js.map +1 -1
- package/src/command-line/dep-graph.js +2 -1
- package/src/command-line/dep-graph.js.map +1 -1
- package/src/command-line/reset.d.ts +1 -1
- package/src/command-line/reset.js +12 -8
- package/src/command-line/reset.js.map +1 -1
- package/src/command-line/run-many.js +2 -2
- package/src/command-line/run-many.js.map +1 -1
- package/src/command-line/run-one.js +2 -2
- package/src/command-line/run-one.js.map +1 -1
- package/src/core/file-utils.d.ts +11 -2
- package/src/core/file-utils.js +177 -19
- package/src/core/file-utils.js.map +1 -1
- package/src/core/hasher/file-hasher.d.ts +24 -2
- package/src/core/hasher/file-hasher.js +86 -12
- package/src/core/hasher/file-hasher.js.map +1 -1
- package/src/core/hasher/git-hasher.d.ts +24 -6
- package/src/core/hasher/git-hasher.js +147 -89
- package/src/core/hasher/git-hasher.js.map +1 -1
- package/src/core/hasher/spawn-process.d.ts +6 -0
- package/src/core/hasher/spawn-process.js +27 -0
- package/src/core/hasher/spawn-process.js.map +1 -0
- package/src/core/nx-deps/nx-deps-cache.d.ts +1 -0
- package/src/core/nx-deps/nx-deps-cache.js +8 -6
- package/src/core/nx-deps/nx-deps-cache.js.map +1 -1
- package/src/core/project-graph/build-project-graph.js +1 -3
- package/src/core/project-graph/build-project-graph.js.map +1 -1
- package/src/core/project-graph/daemon/client/client.js +0 -3
- package/src/core/project-graph/daemon/client/client.js.map +1 -1
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js +44 -49
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js.map +1 -1
- package/src/core/project-graph/daemon/server/server.js +1 -3
- package/src/core/project-graph/daemon/server/server.js.map +1 -1
- package/src/core/project-graph/daemon/tmp-dir.d.ts +4 -0
- package/src/core/project-graph/daemon/tmp-dir.js +45 -2
- package/src/core/project-graph/daemon/tmp-dir.js.map +1 -1
- package/src/core/project-graph/project-graph.js +0 -2
- package/src/core/project-graph/project-graph.js.map +1 -1
- package/src/generators/convert-to-nx-project/convert-to-nx-project.js +1 -3
- package/src/generators/convert-to-nx-project/convert-to-nx-project.js.map +1 -1
- package/src/generators/convert-to-nx-project/schema.d.ts +0 -1
- package/src/generators/convert-to-nx-project/schema.json +0 -5
- package/src/generators/workspace/files/package.json__tmpl__ +1 -1
- package/src/tasks-runner/cache.js +3 -2
- package/src/tasks-runner/cache.js.map +1 -1
- package/src/utilities/cache-directory.d.ts +2 -1
- package/src/utilities/cache-directory.js +3 -3
- package/src/utilities/cache-directory.js.map +1 -1
- package/src/utilities/is_ci.js +0 -1
- package/src/utilities/is_ci.js.map +1 -1
- package/src/utilities/perf-logging.js +1 -1
- package/src/utilities/perf-logging.js.map +1 -1
- package/src/utils/perf-logging.js +1 -1
- package/src/utils/perf-logging.js.map +1 -1
- package/src/utils/versions.js +1 -1
- package/src/core/file-map-utils.d.ts +0 -10
- package/src/core/file-map-utils.js +0 -94
- package/src/core/file-map-utils.js.map +0 -1
- package/src/core/hasher/file-hasher-base.d.ts +0 -12
- package/src/core/hasher/file-hasher-base.js +0 -63
- package/src/core/hasher/file-hasher-base.js.map +0 -1
- package/src/core/hasher/git-based-file-hasher.d.ts +0 -10
- package/src/core/hasher/git-based-file-hasher.js +0 -50
- package/src/core/hasher/git-based-file-hasher.js.map +0 -1
- package/src/core/hasher/node-based-file-hasher.d.ts +0 -7
- package/src/core/hasher/node-based-file-hasher.js +0 -78
- package/src/core/hasher/node-based-file-hasher.js.map +0 -1
@@ -1,19 +1,93 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.defaultFileHasher = void 0;
|
4
|
-
const git_based_file_hasher_1 = require("./git-based-file-hasher");
|
5
|
-
const devkit_1 = require("@nrwl/devkit");
|
3
|
+
exports.defaultFileHasher = exports.FileHasher = void 0;
|
6
4
|
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
7
|
-
const
|
8
|
-
const
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
const perf_hooks_1 = require("perf_hooks");
|
6
|
+
const git_hasher_1 = require("./git-hasher");
|
7
|
+
const hashing_impl_1 = require("./hashing-impl");
|
8
|
+
class FileHasher {
|
9
|
+
constructor(hashing) {
|
10
|
+
this.hashing = hashing;
|
11
|
+
this.fileHashes = {};
|
12
|
+
this.workspaceFiles = new Set();
|
13
|
+
this.usesGitForHashing = false;
|
14
|
+
this.isInitialized = false;
|
13
15
|
}
|
14
|
-
|
15
|
-
|
16
|
+
clear() {
|
17
|
+
this.fileHashes = {};
|
18
|
+
this.workspaceFiles = new Set();
|
19
|
+
this.usesGitForHashing = false;
|
20
|
+
this.isInitialized = false;
|
21
|
+
}
|
22
|
+
/**
|
23
|
+
* For the project graph daemon server use-case we can potentially skip expensive work
|
24
|
+
* by leveraging knowledge of the uncommitted and untracked files, so the init() method
|
25
|
+
* returns a Map containing this data.
|
26
|
+
*/
|
27
|
+
init() {
|
28
|
+
perf_hooks_1.performance.mark('init hashing:start');
|
29
|
+
this.clear();
|
30
|
+
const getFileHashesResult = (0, git_hasher_1.getFileHashes)(app_root_1.appRootPath);
|
31
|
+
this.applyFileHashes(getFileHashesResult.allFiles);
|
32
|
+
this.usesGitForHashing = Object.keys(this.fileHashes).length > 0;
|
33
|
+
this.isInitialized = true;
|
34
|
+
perf_hooks_1.performance.mark('init hashing:end');
|
35
|
+
perf_hooks_1.performance.measure('init hashing', 'init hashing:start', 'init hashing:end');
|
36
|
+
return getFileHashesResult.untrackedUncommittedFiles;
|
37
|
+
}
|
38
|
+
incrementalUpdate(updatedFiles, deletedFiles = []) {
|
39
|
+
this.ensureInitialized();
|
40
|
+
perf_hooks_1.performance.mark('incremental hashing:start');
|
41
|
+
updatedFiles.forEach((hash, filename) => {
|
42
|
+
this.fileHashes[filename] = hash;
|
43
|
+
/**
|
44
|
+
* we have to store it separately because fileHashes can be modified
|
45
|
+
* later on and can contain files that do not exist in the workspace
|
46
|
+
*/
|
47
|
+
this.workspaceFiles.add(filename);
|
48
|
+
});
|
49
|
+
for (const deletedFile of deletedFiles) {
|
50
|
+
delete this.fileHashes[deletedFile];
|
51
|
+
this.workspaceFiles.delete(deletedFile);
|
52
|
+
}
|
53
|
+
perf_hooks_1.performance.mark('incremental hashing:end');
|
54
|
+
perf_hooks_1.performance.measure('incremental hashing', 'incremental hashing:start', 'incremental hashing:end');
|
55
|
+
}
|
56
|
+
hashFile(path) {
|
57
|
+
this.ensureInitialized();
|
58
|
+
const relativePath = path.startsWith(app_root_1.appRootPath)
|
59
|
+
? path.substr(app_root_1.appRootPath.length + 1)
|
60
|
+
: path;
|
61
|
+
if (!this.fileHashes[relativePath]) {
|
62
|
+
this.fileHashes[relativePath] = this.processPath(path);
|
63
|
+
}
|
64
|
+
return this.fileHashes[relativePath];
|
65
|
+
}
|
66
|
+
ensureInitialized() {
|
67
|
+
if (!this.isInitialized) {
|
68
|
+
this.init();
|
69
|
+
}
|
70
|
+
}
|
71
|
+
applyFileHashes(allFiles) {
|
72
|
+
const sliceIndex = app_root_1.appRootPath.length + 1;
|
73
|
+
allFiles.forEach((hash, filename) => {
|
74
|
+
this.fileHashes[filename.substr(sliceIndex)] = hash;
|
75
|
+
/**
|
76
|
+
* we have to store it separately because fileHashes can be modified
|
77
|
+
* later on and can contain files that do not exist in the workspace
|
78
|
+
*/
|
79
|
+
this.workspaceFiles.add(filename.substr(sliceIndex));
|
80
|
+
});
|
81
|
+
}
|
82
|
+
processPath(path) {
|
83
|
+
try {
|
84
|
+
return this.hashing.hashFile(path);
|
85
|
+
}
|
86
|
+
catch (_a) {
|
87
|
+
return '';
|
88
|
+
}
|
16
89
|
}
|
17
90
|
}
|
18
|
-
exports.
|
91
|
+
exports.FileHasher = FileHasher;
|
92
|
+
exports.defaultFileHasher = new FileHasher(hashing_impl_1.defaultHashing);
|
19
93
|
//# sourceMappingURL=file-hasher.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"file-hasher.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/file-hasher.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"file-hasher.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/file-hasher.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,25 @@
|
|
1
|
-
export declare function getGitHashForFiles(
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
export declare function getGitHashForFiles(filesToHash: string[], path: string): Map<string, string>;
|
2
|
+
export declare function gitRevParseHead(path: string): string;
|
3
|
+
/**
|
4
|
+
* getFileHashes() figures out both committed changes to the git tree as well as untracked
|
5
|
+
* and uncommitted file changes.
|
6
|
+
*
|
7
|
+
* For some utilities the origin of a file hash (i.e. was it committed or not) is unimportant,
|
8
|
+
* but for other tooling like the project graph daemon server it can leverage this distinction
|
9
|
+
* when figuring out what expensive work to skip during project graph construction.
|
10
|
+
*
|
11
|
+
* We therefore return both a Map of all filenames to their hashes, as well as a Map of just
|
12
|
+
* the uncommitted/untracked filenames to hashes.
|
13
|
+
*/
|
14
|
+
export declare function getFileHashes(path: string): {
|
6
15
|
allFiles: Map<string, string>;
|
7
|
-
|
16
|
+
untrackedUncommittedFiles: Map<string, string>;
|
17
|
+
};
|
18
|
+
/**
|
19
|
+
* This utility is used to return a Map of filenames to hashes, where those filenames come from
|
20
|
+
* git's knowledge of:
|
21
|
+
*
|
22
|
+
* - files which are untracked (newly created)
|
23
|
+
* - files which are modified in some way (but NOT deleted) and either staged or unstaged
|
24
|
+
*/
|
25
|
+
export declare function getUntrackedAndUncommittedFileHashes(path: string): Map<string, string>;
|
@@ -1,110 +1,168 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getFileHashes = exports.getGitHashForFiles = void 0;
|
4
|
-
const
|
5
|
-
const
|
6
|
-
const
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
const
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
3
|
+
exports.getUntrackedAndUncommittedFileHashes = exports.getFileHashes = exports.gitRevParseHead = exports.getGitHashForFiles = void 0;
|
4
|
+
const fs_1 = require("fs");
|
5
|
+
const path_1 = require("path");
|
6
|
+
const spawn_process_1 = require("./spawn-process");
|
7
|
+
function parseGitLsTree(output) {
|
8
|
+
const changes = new Map();
|
9
|
+
if (output) {
|
10
|
+
const gitRegex = /([0-9]{6})\s(blob|commit)\s([a-f0-9]{40})\s*(.*)/;
|
11
|
+
output.split('\0').forEach((line) => {
|
12
|
+
if (line) {
|
13
|
+
const matches = line.match(gitRegex);
|
14
|
+
if (matches && matches[3] && matches[4]) {
|
15
|
+
const hash = matches[3];
|
16
|
+
const filename = matches[4];
|
17
|
+
changes.set(filename, hash);
|
18
|
+
}
|
19
|
+
else {
|
20
|
+
throw new Error(`Cannot parse git ls-tree input: "${line}"`);
|
21
|
+
}
|
15
22
|
}
|
16
|
-
|
17
|
-
|
23
|
+
});
|
24
|
+
}
|
25
|
+
return changes;
|
26
|
+
}
|
27
|
+
function parseGitStatus(path) {
|
28
|
+
const output = (0, spawn_process_1.spawnProcess)('git', ['status', '-s', '-u', '-z', '.'], path);
|
29
|
+
const changes = new Map();
|
30
|
+
if (!output) {
|
31
|
+
return changes;
|
32
|
+
}
|
33
|
+
// Because `-z` doesn't respect the relative paths configuration,
|
34
|
+
// we need to manually strip the root path from the filenames.
|
35
|
+
const prefix = (0, spawn_process_1.spawnProcess)('git', ['rev-parse', '--show-prefix'], path);
|
36
|
+
const chunks = output.split('\0');
|
37
|
+
for (let i = 0; i < chunks.length; i++) {
|
38
|
+
const chunk = chunks[i];
|
39
|
+
if (chunk.length) {
|
40
|
+
// The XY is the two-letter status code.
|
41
|
+
// See: https://git-scm.com/docs/git-status#_short_format
|
42
|
+
const X = chunk[0].trim();
|
43
|
+
const Y = chunk[1].trim();
|
44
|
+
const filename = chunk.substring(3).replace(new RegExp(`^${prefix}`), '');
|
45
|
+
if (X === 'R') {
|
46
|
+
changes.set(chunks[++i], 'D');
|
18
47
|
}
|
48
|
+
// If both present, Y shows the status of the working tree
|
49
|
+
changes.set(filename, Y || X);
|
19
50
|
}
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
res.set(filePath, hash);
|
31
|
-
}
|
51
|
+
}
|
52
|
+
return changes;
|
53
|
+
}
|
54
|
+
function getGitHashForFiles(filesToHash, path) {
|
55
|
+
const changes = new Map();
|
56
|
+
if (filesToHash.length) {
|
57
|
+
const hashStdout = (0, spawn_process_1.spawnProcess)('git', ['hash-object', ...filesToHash], path);
|
58
|
+
const hashes = hashStdout.split('\n');
|
59
|
+
if (hashes.length !== filesToHash.length) {
|
60
|
+
throw new Error(`Passed ${filesToHash.length} file paths to Git to hash, but received ${hashes.length} hashes.`);
|
32
61
|
}
|
33
|
-
|
34
|
-
|
62
|
+
for (let i = 0; i < hashes.length; i++) {
|
63
|
+
const hash = hashes[i];
|
64
|
+
const filePath = filesToHash[i];
|
65
|
+
changes.set(filePath, hash);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
return changes;
|
35
69
|
}
|
36
70
|
exports.getGitHashForFiles = getGitHashForFiles;
|
37
|
-
function
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
}
|
71
|
+
function gitLsTree(path) {
|
72
|
+
return parseGitLsTree((0, spawn_process_1.spawnProcess)('git', ['ls-tree', 'HEAD', '-r', '-z'], path));
|
73
|
+
}
|
74
|
+
function gitRevParseHead(path) {
|
75
|
+
return (0, spawn_process_1.spawnProcess)('git', ['rev-parse', 'HEAD'], path);
|
76
|
+
}
|
77
|
+
exports.gitRevParseHead = gitRevParseHead;
|
78
|
+
function gitStatus(path) {
|
79
|
+
const deletedFiles = [];
|
80
|
+
const filesToHash = [];
|
81
|
+
parseGitStatus(path).forEach((changeType, filename) => {
|
82
|
+
if (changeType !== 'D') {
|
83
|
+
filesToHash.push(filename);
|
51
84
|
}
|
52
|
-
|
53
|
-
|
54
|
-
try {
|
55
|
-
if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
|
56
|
-
}
|
57
|
-
finally { if (e_1) throw e_1.error; }
|
85
|
+
else {
|
86
|
+
deletedFiles.push(filename);
|
58
87
|
}
|
59
|
-
return s;
|
60
88
|
});
|
89
|
+
const updated = checkForDeletedFiles(path, filesToHash, deletedFiles);
|
90
|
+
const status = getGitHashForFiles(updated.filesToHash, path);
|
91
|
+
return { deletedFiles: updated.deletedFiles, status };
|
61
92
|
}
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
93
|
+
/**
|
94
|
+
* This is only needed because of potential issues with interpreting "git status".
|
95
|
+
* We had a few issues where we didn't interpret renames correctly. Even though
|
96
|
+
* doing this somewhat slow, we will keep it for now.
|
97
|
+
*
|
98
|
+
* @vsavkin remove it in nx 10.2
|
99
|
+
*/
|
100
|
+
function checkForDeletedFiles(path, files, deletedFiles) {
|
101
|
+
let filesToHash = [];
|
102
|
+
files.forEach((f) => {
|
103
|
+
try {
|
104
|
+
(0, fs_1.statSync)((0, path_1.join)(path, f)).isFile();
|
105
|
+
filesToHash.push(f);
|
106
|
+
}
|
107
|
+
catch (_a) {
|
108
|
+
throw new Error(`Error: Fell back to using 'fs' to identify ${f} as deleted. Please open an issue at https://github.com/nrwl/nx so we can investigate.`);
|
72
109
|
}
|
73
|
-
return res;
|
74
|
-
});
|
75
|
-
}
|
76
|
-
function getUnstagedFiles(path) {
|
77
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
78
|
-
const unstaged = yield spawnProcess('git', ['ls-files', '-m', '-z', '--exclude-standard', '.'], path);
|
79
|
-
const lines = unstaged.split('\0').filter((f) => !!f);
|
80
|
-
return getGitHashForFiles(lines, path);
|
81
|
-
});
|
82
|
-
}
|
83
|
-
function getUntrackedFiles(path) {
|
84
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
85
|
-
const untracked = yield spawnProcess('git', ['ls-files', '--other', '-z', '--exclude-standard', '.'], path);
|
86
|
-
const lines = untracked.split('\0').filter((f) => !!f);
|
87
|
-
return getGitHashForFiles(lines, path);
|
88
110
|
});
|
111
|
+
return { filesToHash, deletedFiles };
|
89
112
|
}
|
113
|
+
/**
|
114
|
+
* getFileHashes() figures out both committed changes to the git tree as well as untracked
|
115
|
+
* and uncommitted file changes.
|
116
|
+
*
|
117
|
+
* For some utilities the origin of a file hash (i.e. was it committed or not) is unimportant,
|
118
|
+
* but for other tooling like the project graph daemon server it can leverage this distinction
|
119
|
+
* when figuring out what expensive work to skip during project graph construction.
|
120
|
+
*
|
121
|
+
* We therefore return both a Map of all filenames to their hashes, as well as a Map of just
|
122
|
+
* the uncommitted/untracked filenames to hashes.
|
123
|
+
*/
|
90
124
|
function getFileHashes(path) {
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
});
|
100
|
-
unstaged.deleted.forEach((filename) => {
|
101
|
-
staged.delete(filename);
|
125
|
+
const allFiles = new Map();
|
126
|
+
try {
|
127
|
+
const { deletedFiles, status } = gitStatus(path);
|
128
|
+
const m1 = gitLsTree(path);
|
129
|
+
m1.forEach((hash, filename) => {
|
130
|
+
if (deletedFiles.indexOf(filename) === -1) {
|
131
|
+
allFiles.set(`${path}/${filename}`, hash);
|
132
|
+
}
|
102
133
|
});
|
103
|
-
|
104
|
-
|
134
|
+
status.forEach((hash, filename) => {
|
135
|
+
allFiles.set(`${path}/${filename}`, hash);
|
105
136
|
});
|
106
|
-
return {
|
107
|
-
|
137
|
+
return {
|
138
|
+
allFiles,
|
139
|
+
untrackedUncommittedFiles: status,
|
140
|
+
};
|
141
|
+
}
|
142
|
+
catch (e) {
|
143
|
+
// this strategy is only used for speeding things up.
|
144
|
+
// ignoring all the errors
|
145
|
+
if (process.env.NX_GIT_HASHER_LOGGING) {
|
146
|
+
console.error(`Internal error:`);
|
147
|
+
console.error(e);
|
148
|
+
}
|
149
|
+
return {
|
150
|
+
allFiles: new Map(),
|
151
|
+
untrackedUncommittedFiles: new Map(),
|
152
|
+
};
|
153
|
+
}
|
108
154
|
}
|
109
155
|
exports.getFileHashes = getFileHashes;
|
156
|
+
/**
|
157
|
+
* This utility is used to return a Map of filenames to hashes, where those filenames come from
|
158
|
+
* git's knowledge of:
|
159
|
+
*
|
160
|
+
* - files which are untracked (newly created)
|
161
|
+
* - files which are modified in some way (but NOT deleted) and either staged or unstaged
|
162
|
+
*/
|
163
|
+
function getUntrackedAndUncommittedFileHashes(path) {
|
164
|
+
const { status } = gitStatus(path);
|
165
|
+
return status;
|
166
|
+
}
|
167
|
+
exports.getUntrackedAndUncommittedFileHashes = getUntrackedAndUncommittedFileHashes;
|
110
168
|
//# sourceMappingURL=git-hasher.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"git-hasher.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/git-hasher.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"git-hasher.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/git-hasher.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
/**
|
2
|
+
* We separated this out into its own file to make it much easier to unit test
|
3
|
+
* and ensure that ANSI escape codes are appropriately stripped so that utilities
|
4
|
+
* in git-hasher work as intended in all cases.
|
5
|
+
*/
|
6
|
+
export declare function spawnProcess(command: string, args: string[], cwd: string): string;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.spawnProcess = void 0;
|
4
|
+
const child_process_1 = require("child_process");
|
5
|
+
// We can't use an import for this package because of how it is published
|
6
|
+
const stripAnsi = require('strip-ansi');
|
7
|
+
/**
|
8
|
+
* We separated this out into its own file to make it much easier to unit test
|
9
|
+
* and ensure that ANSI escape codes are appropriately stripped so that utilities
|
10
|
+
* in git-hasher work as intended in all cases.
|
11
|
+
*/
|
12
|
+
function spawnProcess(command, args, cwd) {
|
13
|
+
const r = (0, child_process_1.spawnSync)(command, args, {
|
14
|
+
cwd,
|
15
|
+
maxBuffer: 50 * 1024 * 1024,
|
16
|
+
windowsHide: true,
|
17
|
+
shell: false,
|
18
|
+
});
|
19
|
+
if (r.status !== 0) {
|
20
|
+
throw new Error(`Failed to run ${command} ${args.join(' ')}.\n${r.stdout}\n${r.stderr}`);
|
21
|
+
}
|
22
|
+
const output = r.stdout.toString().trimEnd();
|
23
|
+
// We use strip-ansi to prevent issues such as https://github.com/nrwl/nx/issues/7022
|
24
|
+
return stripAnsi(output);
|
25
|
+
}
|
26
|
+
exports.spawnProcess = spawnProcess;
|
27
|
+
//# sourceMappingURL=spawn-process.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"spawn-process.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/spawn-process.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAE1C,yEAAyE;AACzE,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAExC;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,IAAc,EACd,GAAW;IAEX,MAAM,CAAC,GAAG,IAAA,yBAAS,EAAC,OAAO,EAAE,IAAI,EAAE;QACjC,GAAG;QACH,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;QAC3B,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CACb,iBAAiB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CACxE,CAAC;KACH;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7C,qFAAqF;IACrF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AApBD,oCAoBC"}
|
@@ -11,6 +11,7 @@ export interface ProjectGraphCache {
|
|
11
11
|
externalNodes?: Record<string, ProjectGraphExternalNode>;
|
12
12
|
dependencies: Record<string, ProjectGraphDependency[]>;
|
13
13
|
}
|
14
|
+
export declare const nxDepsDir: string;
|
14
15
|
export declare const nxDepsPath: string;
|
15
16
|
export declare function ensureCacheDirectory(): void;
|
16
17
|
export declare function readCache(): null | ProjectGraphCache;
|
@@ -1,18 +1,20 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.extractCachedFileData = exports.shouldRecomputeWholeGraph = exports.writeCache = exports.createCache = exports.readCache = exports.ensureCacheDirectory = exports.nxDepsPath = void 0;
|
3
|
+
exports.extractCachedFileData = exports.shouldRecomputeWholeGraph = exports.writeCache = exports.createCache = exports.readCache = exports.ensureCacheDirectory = exports.nxDepsPath = exports.nxDepsDir = void 0;
|
4
4
|
const devkit_1 = require("@nrwl/devkit");
|
5
5
|
const path_1 = require("path");
|
6
|
+
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
6
7
|
const fs_1 = require("fs");
|
7
8
|
const fs_extra_1 = require("fs-extra");
|
8
9
|
const fileutils_1 = require("../../utilities/fileutils");
|
9
10
|
const perf_hooks_1 = require("perf_hooks");
|
10
11
|
const cache_directory_1 = require("../../utilities/cache-directory");
|
11
|
-
exports.
|
12
|
+
exports.nxDepsDir = (0, cache_directory_1.cacheDirectory)(app_root_1.appRootPath, (0, cache_directory_1.readCacheDirectoryProperty)(app_root_1.appRootPath));
|
13
|
+
exports.nxDepsPath = (0, path_1.join)(exports.nxDepsDir, 'nxdeps.json');
|
12
14
|
function ensureCacheDirectory() {
|
13
15
|
try {
|
14
|
-
if (!(0, fs_1.existsSync)(
|
15
|
-
(0, fs_extra_1.ensureDirSync)(
|
16
|
+
if (!(0, fs_1.existsSync)(exports.nxDepsDir)) {
|
17
|
+
(0, fs_extra_1.ensureDirSync)(exports.nxDepsDir);
|
16
18
|
}
|
17
19
|
}
|
18
20
|
catch (e) {
|
@@ -26,8 +28,8 @@ function ensureCacheDirectory() {
|
|
26
28
|
* In this case, we're creating the directory. If the operation failed, we ensure that the directory
|
27
29
|
* exists before continuing (or raise an exception).
|
28
30
|
*/
|
29
|
-
if (!(0, fileutils_1.directoryExists)(
|
30
|
-
throw new Error(`Failed to create directory: ${
|
31
|
+
if (!(0, fileutils_1.directoryExists)(exports.nxDepsDir)) {
|
32
|
+
throw new Error(`Failed to create directory: ${exports.nxDepsDir}`);
|
31
33
|
}
|
32
34
|
}
|
33
35
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nx-deps-cache.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/nx-deps/nx-deps-cache.ts"],"names":[],"mappings":";;;AAUA,yCAA2D;AAC3D,+BAA4B;AAC5B,2BAAgC;AAChC,uCAAyC;AACzC,yDAAwE;AACxE,2CAAyC;AACzC,
|
1
|
+
{"version":3,"file":"nx-deps-cache.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/nx-deps/nx-deps-cache.ts"],"names":[],"mappings":"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"}
|
@@ -16,12 +16,10 @@ const fs_1 = require("fs");
|
|
16
16
|
const os = require("os");
|
17
17
|
const build_explicit_typescript_and_package_json_dependencies_1 = require("./build-dependencies/build-explicit-typescript-and-package-json-dependencies");
|
18
18
|
const nx_plugin_1 = require("@nrwl/tao/src/shared/nx-plugin");
|
19
|
-
const file_hasher_1 = require("../hasher/file-hasher");
|
20
|
-
const file_map_utils_1 = require("../file-map-utils");
|
21
19
|
function buildProjectGraph() {
|
22
20
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
23
21
|
const workspaceJson = (0, file_utils_1.readWorkspaceJson)();
|
24
|
-
const { projectFileMap, allWorkspaceFiles } = (0,
|
22
|
+
const { projectFileMap, allWorkspaceFiles } = (0, file_utils_1.createProjectFileMap)(workspaceJson);
|
25
23
|
const cacheEnabled = process.env.NX_CACHE_PROJECT_GRAPH !== 'false';
|
26
24
|
let cache = cacheEnabled ? (0, nx_deps_cache_1.readCache)() : null;
|
27
25
|
return (yield buildProjectGraphUsingProjectFileMap(workspaceJson, projectFileMap, allWorkspaceFiles, cache, cacheEnabled)).projectGraph;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"build-project-graph.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/project-graph/build-project-graph.ts"],"names":[],"mappings":";;;;AAAA,yCAasB;AACtB,2DAA2D;AAC3D,+BAA4B;AAC5B,2CAAyC;AACzC,4EAAuE;AACvE,
|
1
|
+
{"version":3,"file":"build-project-graph.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/project-graph/build-project-graph.ts"],"names":[],"mappings":"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"}
|