@nrwl/workspace 13.4.4 → 13.4.5-beta.4
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 +5 -6
- package/src/command-line/affected.js +5 -5
- package/src/command-line/affected.js.map +1 -1
- package/src/command-line/dep-graph.js +1 -2
- package/src/command-line/dep-graph.js.map +1 -1
- package/src/command-line/format.js +4 -3
- package/src/command-line/format.js.map +1 -1
- package/src/command-line/reset.d.ts +1 -1
- package/src/command-line/reset.js +8 -12
- 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-map-utils.d.ts +10 -0
- package/src/core/file-map-utils.js +94 -0
- package/src/core/file-map-utils.js.map +1 -0
- package/src/core/file-utils.d.ts +3 -14
- package/src/core/file-utils.js +16 -188
- package/src/core/file-utils.js.map +1 -1
- package/src/core/hasher/file-hasher-base.d.ts +12 -0
- package/src/core/hasher/file-hasher-base.js +66 -0
- package/src/core/hasher/file-hasher-base.js.map +1 -0
- package/src/core/hasher/file-hasher.d.ts +2 -24
- package/src/core/hasher/file-hasher.js +12 -86
- package/src/core/hasher/file-hasher.js.map +1 -1
- package/src/core/hasher/git-based-file-hasher.d.ts +10 -0
- package/src/core/hasher/git-based-file-hasher.js +50 -0
- package/src/core/hasher/git-based-file-hasher.js.map +1 -0
- package/src/core/hasher/git-hasher.d.ts +6 -24
- package/src/core/hasher/git-hasher.js +89 -147
- package/src/core/hasher/git-hasher.js.map +1 -1
- package/src/core/hasher/hasher.js +1 -0
- package/src/core/hasher/hasher.js.map +1 -1
- package/src/core/hasher/node-based-file-hasher.d.ts +7 -0
- package/src/core/hasher/node-based-file-hasher.js +78 -0
- package/src/core/hasher/node-based-file-hasher.js.map +1 -0
- package/src/core/nx-deps/nx-deps-cache.d.ts +0 -1
- package/src/core/nx-deps/nx-deps-cache.js +6 -8
- package/src/core/nx-deps/nx-deps-cache.js.map +1 -1
- package/src/core/project-graph/build-project-graph.js +3 -1
- package/src/core/project-graph/build-project-graph.js.map +1 -1
- package/src/core/project-graph/daemon/client/client.js +3 -0
- package/src/core/project-graph/daemon/client/client.js.map +1 -1
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js +49 -44
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js.map +1 -1
- package/src/core/project-graph/daemon/server/server.js +3 -1
- package/src/core/project-graph/daemon/server/server.js.map +1 -1
- package/src/core/project-graph/daemon/tmp-dir.d.ts +0 -4
- package/src/core/project-graph/daemon/tmp-dir.js +2 -45
- package/src/core/project-graph/daemon/tmp-dir.js.map +1 -1
- package/src/core/project-graph/project-graph.js +2 -0
- package/src/core/project-graph/project-graph.js.map +1 -1
- package/src/generators/convert-to-nx-project/convert-to-nx-project.js +3 -1
- 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 +1 -0
- package/src/generators/convert-to-nx-project/schema.json +5 -0
- package/src/generators/workspace/files/__workspaceFile__.json__tmpl__ +0 -5
- package/src/generators/workspace/files/package.json__tmpl__ +1 -1
- package/src/tasks-runner/cache.js +2 -3
- package/src/tasks-runner/cache.js.map +1 -1
- package/src/utilities/cache-directory.d.ts +1 -2
- package/src/utilities/cache-directory.js +3 -3
- package/src/utilities/cache-directory.js.map +1 -1
- package/src/utilities/is_ci.js +1 -0
- 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/hasher/spawn-process.d.ts +0 -6
- package/src/core/hasher/spawn-process.js +0 -27
- package/src/core/hasher/spawn-process.js.map +0 -1
package/src/core/file-utils.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.normalizedProjectRoot = exports.readEnvironment = exports.
|
|
3
|
+
exports.normalizedProjectRoot = exports.readEnvironment = exports.workspaceLayout = exports.readNxJson = exports.readPackageJson = exports.defaultFileRead = exports.workspaceFileName = exports.readWorkspaceConfig = exports.readWorkspaceJson = exports.TEN_MEGABYTES = exports.calculateFileChanges = exports.readFileIfExisting = exports.isWholeFileChange = exports.WholeFileChange = void 0;
|
|
4
4
|
const workspace_1 = require("@nrwl/tao/src/shared/workspace");
|
|
5
5
|
const devkit_1 = require("@nrwl/devkit");
|
|
6
6
|
const child_process_1 = require("child_process");
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = require("path");
|
|
9
|
-
const perf_hooks_1 = require("perf_hooks");
|
|
10
9
|
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
|
11
|
-
const array_1 = require("../utilities/array");
|
|
12
10
|
const fileutils_1 = require("../utilities/fileutils");
|
|
13
11
|
const json_diff_1 = require("../utilities/json-diff");
|
|
14
|
-
const file_hasher_1 = require("./hasher/file-hasher");
|
|
15
12
|
const ignore = require('ignore');
|
|
16
13
|
class WholeFileChange {
|
|
17
14
|
constructor() {
|
|
@@ -23,13 +20,22 @@ function isWholeFileChange(change) {
|
|
|
23
20
|
return change.type === 'WholeFileChange';
|
|
24
21
|
}
|
|
25
22
|
exports.isWholeFileChange = isWholeFileChange;
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
function readFileIfExisting(path) {
|
|
24
|
+
return (0, fs_1.existsSync)(path) ? (0, fs_1.readFileSync)(path, 'utf-8') : '';
|
|
25
|
+
}
|
|
26
|
+
exports.readFileIfExisting = readFileIfExisting;
|
|
27
|
+
function getIgnoredGlobs() {
|
|
28
|
+
const ig = ignore();
|
|
29
|
+
ig.add(readFileIfExisting(`${app_root_1.appRootPath}/.gitignore`));
|
|
30
|
+
ig.add(readFileIfExisting(`${app_root_1.appRootPath}/.nxignore`));
|
|
31
|
+
return ig;
|
|
32
|
+
}
|
|
33
|
+
function calculateFileChanges(files, allWorkspaceFiles, nxArgs, readFileAtRevision = defaultReadFileAtRevision, ignore = getIgnoredGlobs()) {
|
|
34
|
+
files = files.filter((f) => !ignore.ignores(f));
|
|
30
35
|
return files.map((f) => {
|
|
31
36
|
const ext = (0, path_1.extname)(f);
|
|
32
|
-
const
|
|
37
|
+
const file = allWorkspaceFiles.find((fileData) => fileData.file == f);
|
|
38
|
+
const hash = file === null || file === void 0 ? void 0 : file.hash;
|
|
33
39
|
return {
|
|
34
40
|
file: f,
|
|
35
41
|
ext,
|
|
@@ -81,51 +87,6 @@ function defaultReadFileAtRevision(file, revision) {
|
|
|
81
87
|
return '';
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
|
-
function getFileData(filePath) {
|
|
85
|
-
const file = (0, path_1.relative)(app_root_1.appRootPath, filePath).split(path_1.sep).join('/');
|
|
86
|
-
return {
|
|
87
|
-
file,
|
|
88
|
-
hash: file_hasher_1.defaultFileHasher.hashFile(filePath),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function allFilesInDir(dirName, recurse = true, ignoredGlobs) {
|
|
92
|
-
const relDirName = (0, path_1.relative)(app_root_1.appRootPath, dirName);
|
|
93
|
-
if (relDirName && ignoredGlobs.ignores(relDirName)) {
|
|
94
|
-
return [];
|
|
95
|
-
}
|
|
96
|
-
let res = [];
|
|
97
|
-
try {
|
|
98
|
-
(0, fs_1.readdirSync)(dirName).forEach((c) => {
|
|
99
|
-
const child = (0, path_1.join)(dirName, c);
|
|
100
|
-
if (ignoredGlobs.ignores((0, path_1.relative)(app_root_1.appRootPath, child))) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
try {
|
|
104
|
-
const s = (0, fs_1.statSync)(child);
|
|
105
|
-
if (!s.isDirectory()) {
|
|
106
|
-
// add starting with "apps/myapp/..." or "libs/mylib/..."
|
|
107
|
-
res.push(getFileData(child));
|
|
108
|
-
}
|
|
109
|
-
else if (s.isDirectory() && recurse) {
|
|
110
|
-
res = [...res, ...allFilesInDir(child, true, ignoredGlobs)];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (e) { }
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
catch (e) { }
|
|
117
|
-
return res;
|
|
118
|
-
}
|
|
119
|
-
function getIgnoredGlobs() {
|
|
120
|
-
const ig = ignore();
|
|
121
|
-
ig.add(readFileIfExisting(`${app_root_1.appRootPath}/.gitignore`));
|
|
122
|
-
ig.add(readFileIfExisting(`${app_root_1.appRootPath}/.nxignore`));
|
|
123
|
-
return ig;
|
|
124
|
-
}
|
|
125
|
-
function readFileIfExisting(path) {
|
|
126
|
-
return (0, fs_1.existsSync)(path) ? (0, fs_1.readFileSync)(path, 'utf-8') : '';
|
|
127
|
-
}
|
|
128
|
-
exports.readFileIfExisting = readFileIfExisting;
|
|
129
90
|
function readWorkspaceJson() {
|
|
130
91
|
return readWorkspaceConfig({
|
|
131
92
|
format: 'nx',
|
|
@@ -199,140 +160,7 @@ function workspaceLayout() {
|
|
|
199
160
|
};
|
|
200
161
|
}
|
|
201
162
|
exports.workspaceLayout = workspaceLayout;
|
|
202
|
-
|
|
203
|
-
function rootWorkspaceFileNames() {
|
|
204
|
-
return [`package.json`, workspaceFileName(), `nx.json`, `tsconfig.base.json`];
|
|
205
|
-
}
|
|
206
|
-
exports.rootWorkspaceFileNames = rootWorkspaceFileNames;
|
|
207
|
-
function rootWorkspaceFileData() {
|
|
208
|
-
return rootWorkspaceFileNames().map((f) => getFileData(`${app_root_1.appRootPath}/${f}`));
|
|
209
|
-
}
|
|
210
|
-
exports.rootWorkspaceFileData = rootWorkspaceFileData;
|
|
211
|
-
function readWorkspaceFiles() {
|
|
212
|
-
file_hasher_1.defaultFileHasher.ensureInitialized();
|
|
213
|
-
perf_hooks_1.performance.mark('read workspace files:start');
|
|
214
|
-
if (file_hasher_1.defaultFileHasher.usesGitForHashing) {
|
|
215
|
-
const ignoredGlobs = getIgnoredGlobs();
|
|
216
|
-
const r = Array.from(file_hasher_1.defaultFileHasher.workspaceFiles)
|
|
217
|
-
.filter((f) => !ignoredGlobs.ignores(f))
|
|
218
|
-
.map((f) => getFileData(`${app_root_1.appRootPath}/${f}`));
|
|
219
|
-
perf_hooks_1.performance.mark('read workspace files:end');
|
|
220
|
-
perf_hooks_1.performance.measure('read workspace files', 'read workspace files:start', 'read workspace files:end');
|
|
221
|
-
r.sort((x, y) => x.file.localeCompare(y.file));
|
|
222
|
-
return r;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
const r = [];
|
|
226
|
-
const ignoredGlobs = getIgnoredGlobs();
|
|
227
|
-
ignoredGlobs.add((0, devkit_1.stripIndents) `
|
|
228
|
-
node_modules
|
|
229
|
-
tmp
|
|
230
|
-
dist
|
|
231
|
-
build
|
|
232
|
-
`);
|
|
233
|
-
(0, array_1.appendArray)(r, allFilesInDir(app_root_1.appRootPath, true, ignoredGlobs));
|
|
234
|
-
perf_hooks_1.performance.mark('read workspace files:end');
|
|
235
|
-
perf_hooks_1.performance.measure('read workspace files', 'read workspace files:start', 'read workspace files:end');
|
|
236
|
-
r.sort((x, y) => x.file.localeCompare(y.file));
|
|
237
|
-
return r;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
function sortProjects(workspaceJson) {
|
|
241
|
-
// Sorting here so `apps/client-e2e` comes before `apps/client` and has
|
|
242
|
-
// a chance to match prefix first.
|
|
243
|
-
return Object.keys(workspaceJson.projects).sort((a, b) => {
|
|
244
|
-
const projectA = workspaceJson.projects[a];
|
|
245
|
-
const projectB = workspaceJson.projects[b];
|
|
246
|
-
if (!projectA.root)
|
|
247
|
-
return -1;
|
|
248
|
-
if (!projectB.root)
|
|
249
|
-
return -1;
|
|
250
|
-
return projectA.root.length > projectB.root.length ? -1 : 1;
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
function createProjectFileMap(workspaceJson, allWorkspaceFiles) {
|
|
254
|
-
allWorkspaceFiles = allWorkspaceFiles || readWorkspaceFiles();
|
|
255
|
-
const projectFileMap = {};
|
|
256
|
-
const sortedProjects = sortProjects(workspaceJson);
|
|
257
|
-
const seen = new Set();
|
|
258
|
-
for (const projectName of sortedProjects) {
|
|
259
|
-
projectFileMap[projectName] = [];
|
|
260
|
-
}
|
|
261
|
-
for (const f of allWorkspaceFiles) {
|
|
262
|
-
if (seen.has(f.file))
|
|
263
|
-
continue;
|
|
264
|
-
seen.add(f.file);
|
|
265
|
-
for (const projectName of sortedProjects) {
|
|
266
|
-
const p = workspaceJson.projects[projectName];
|
|
267
|
-
if (f.file.startsWith(p.root || p.sourceRoot)) {
|
|
268
|
-
projectFileMap[projectName].push(f);
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return { projectFileMap, allWorkspaceFiles };
|
|
274
|
-
}
|
|
275
|
-
exports.createProjectFileMap = createProjectFileMap;
|
|
276
|
-
function updateProjectFileMap(workspaceJson, projectFileMap, allWorkspaceFiles, updatedFiles, deletedFiles) {
|
|
277
|
-
const ignore = getIgnoredGlobs();
|
|
278
|
-
const sortedProjects = sortProjects(workspaceJson);
|
|
279
|
-
for (let projectName of sortedProjects) {
|
|
280
|
-
if (!projectFileMap[projectName]) {
|
|
281
|
-
projectFileMap[projectName] = [];
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
for (const f of updatedFiles.keys()) {
|
|
285
|
-
if (ignore.ignores(f))
|
|
286
|
-
continue;
|
|
287
|
-
for (const projectName of sortedProjects) {
|
|
288
|
-
const p = workspaceJson.projects[projectName];
|
|
289
|
-
if (f.startsWith(p.root || p.sourceRoot)) {
|
|
290
|
-
const fileData = projectFileMap[projectName].find((t) => t.file === f);
|
|
291
|
-
if (fileData) {
|
|
292
|
-
fileData.hash = updatedFiles.get(f);
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
projectFileMap[projectName].push({
|
|
296
|
-
file: f,
|
|
297
|
-
hash: updatedFiles.get(f),
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
break;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
const fileData = allWorkspaceFiles.find((t) => t.file === f);
|
|
304
|
-
if (fileData) {
|
|
305
|
-
fileData.hash = updatedFiles.get(f);
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
allWorkspaceFiles.push({
|
|
309
|
-
file: f,
|
|
310
|
-
hash: updatedFiles.get(f),
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
for (const f of deletedFiles) {
|
|
315
|
-
if (ignore.ignores(f))
|
|
316
|
-
continue;
|
|
317
|
-
for (const projectName of sortedProjects) {
|
|
318
|
-
const p = workspaceJson.projects[projectName];
|
|
319
|
-
if (f.startsWith(p.root || p.sourceRoot)) {
|
|
320
|
-
const index = projectFileMap[projectName].findIndex((t) => t.file === f);
|
|
321
|
-
if (index > -1) {
|
|
322
|
-
projectFileMap[projectName].splice(index, 1);
|
|
323
|
-
}
|
|
324
|
-
break;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
const index = allWorkspaceFiles.findIndex((t) => t.file === f);
|
|
328
|
-
if (index > -1) {
|
|
329
|
-
allWorkspaceFiles.splice(index, 1);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
return { projectFileMap, allWorkspaceFiles };
|
|
333
|
-
}
|
|
334
|
-
exports.updateProjectFileMap = updateProjectFileMap;
|
|
335
|
-
function readEnvironment(target, projects) {
|
|
163
|
+
function readEnvironment() {
|
|
336
164
|
const nxJson = readNxJson();
|
|
337
165
|
const workspaceJson = readWorkspaceJson();
|
|
338
166
|
return { nxJson, workspaceJson, workspaceResults: null };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/core/file-utils.ts"],"names":[],"mappings":";;;AAAA,8DAIwC;AAMxC,yCAA0E;AAC1E,iDAAyC;AACzC,2BAAqE;AACrE,+BAAoD;AACpD,2CAAyC;AAEzC,2DAA2D;AAC3D,8CAAiD;AACjD,sDAAoD;AACpD,sDAAkD;AAClD,sDAAyD;AAGzD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAUjC,MAAa,eAAe;IAA5B;QACE,SAAI,GAAG,iBAAiB,CAAC;IAC3B,CAAC;CAAA;AAFD,0CAEC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC;AAC3C,CAAC;AAFD,8CAEC;AAED,SAAgB,oBAAoB,CAClC,KAAe,EACf,MAAe,EACf,qBAGc,yBAAyB,EACvC,MAAM,GAAG,eAAe,EAAE;IAE1B,IAAI,MAAM,EAAE;QACV,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACjD;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,+BAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,CAAC;YACP,GAAG;YACH,IAAI;YACJ,UAAU,EAAE,GAAa,EAAE;gBACzB,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;iBAChC;gBAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC5C,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;iBAChC;gBACD,QAAQ,GAAG,EAAE;oBACX,KAAK,OAAO;wBACV,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAElD,IAAI;4BACF,OAAO,IAAA,oBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;yBACzD;wBAAC,OAAO,CAAC,EAAE;4BACV,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;yBAChC;oBACH;wBACE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;iBAClC;YACH,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AA7CD,oDA6CC;AAEY,QAAA,aAAa,GAAG,IAAI,GAAG,KAAK,CAAC;AAE1C,SAAS,yBAAyB,CAChC,IAAY,EACZ,QAAuB;IAEvB,IAAI;QACF,MAAM,YAAY,GAAG,GAAG,sBAAW,GAAG,UAAG,GAAG,IAAI,EAAE,CAAC;QACnD,MAAM,iBAAiB,GAAG,IAAA,wBAAQ,EAAC,+BAA+B,CAAC;aAChE,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;QACV,MAAM,uBAAuB,GAAG,IAAA,eAAQ,EAAC,iBAAiB,EAAE,YAAY,CAAC;aACtE,KAAK,CAAC,UAAG,CAAC;aACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,CAAC,QAAQ;YACd,CAAC,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC;YAC7B,CAAC,CAAC,IAAA,wBAAQ,EAAC,YAAY,QAAQ,IAAI,uBAAuB,EAAE,EAAE;gBAC1D,SAAS,EAAE,qBAAa;aACzB,CAAC;iBACC,QAAQ,EAAE;iBACV,IAAI,EAAE,CAAC;KACf;IAAC,WAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,IAAI,GAAG,IAAA,eAAQ,EAAC,sBAAW,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,+BAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,UAAmB,IAAI,EACvB,YAAiB;IAEjB,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,sBAAW,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,UAAU,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAClD,OAAO,EAAE,CAAC;KACX;IAED,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI;QACF,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAI,YAAY,CAAC,OAAO,CAAC,IAAA,eAAQ,EAAC,sBAAW,EAAE,KAAK,CAAC,CAAC,EAAE;gBACtD,OAAO;aACR;YACD,IAAI;gBACF,MAAM,CAAC,GAAG,IAAA,aAAQ,EAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;oBACpB,yDAAyD;oBACzD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC9B;qBAAM,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;oBACrC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;iBAC7D;aACF;YAAC,OAAO,CAAC,EAAE,GAAE;QAChB,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE,GAAE;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,sBAAW,aAAa,CAAC,CAAC,CAAC;IACxD,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,sBAAW,YAAY,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAFD,gDAEC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,mBAAmB,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,sBAAW;KAClB,CAAC,CAAC;AACL,CAAC;AALD,8CAKC;AAED,SAAgB,mBAAmB,CAAC,IAGnC;IACC,MAAM,EAAE,GAAG,IAAI,sBAAU,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,EAAE,CAAC,0BAA0B,EAAE,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE;QAChC,MAAM,SAAS,GAAG,IAAA,6BAAiB,EAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC;KAC1B;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAZD,kDAYC;AAED,SAAgB,iBAAiB;IAC/B,IAAI,IAAA,sBAAU,EAAC,GAAG,sBAAW,eAAe,CAAC,EAAE;QAC7C,OAAO,cAAc,CAAC;KACvB;SAAM;QACL,OAAO,gBAAgB,CAAC;KACzB;AACH,CAAC;AAND,8CAMC;AAED,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,sBAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe;IAC7B,OAAO,IAAA,qBAAY,EAAC,GAAG,sBAAW,eAAe,CAAC,CAAC;AACrD,CAAC;AAFD,0CAEC;AAED,SAAgB,UAAU,CACxB,OAAe,GAAG,sBAAW,UAAU;IAEvC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAsB,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAa,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE;QACjB,uCAAY,aAAa,GAAK,MAAM,EAAG;KACxC;SAAM;QACL,OAAO,MAAM,CAAC;KACf;AACH,CAAC;AAdD,gCAcC;AAED,SAAS,iBAAiB,CAAC,MAA4B;IACrD,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI;YACF,OAAO,IAAA,qBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;SACnD;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3E;KACF;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,SAAgB,eAAe;;IAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO;QACL,OAAO,EAAE,MAAA,MAAA,MAAM,CAAC,eAAe,0CAAE,OAAO,mCAAI,MAAM;QAClD,OAAO,EAAE,MAAA,MAAA,MAAM,CAAC,eAAe,0CAAE,OAAO,mCAAI,MAAM;KACnD,CAAC;AACJ,CAAC;AAND,0CAMC;AAED,kCAAkC;AAClC,SAAgB,sBAAsB;IACpC,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAChF,CAAC;AAFD,wDAEC;AAED,SAAgB,qBAAqB;IACnC,OAAO,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,WAAW,CAAC,GAAG,sBAAW,IAAI,CAAC,EAAE,CAAC,CACnC,CAAC;AACJ,CAAC;AAJD,sDAIC;AAED,SAAS,kBAAkB;IACzB,+BAAiB,CAAC,iBAAiB,EAAE,CAAC;IACtC,wBAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAE/C,IAAI,+BAAiB,CAAC,iBAAiB,EAAE;QACvC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,+BAAiB,CAAC,cAAc,CAAC;aACnD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,sBAAW,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,wBAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,wBAAW,CAAC,OAAO,CACjB,sBAAsB,EACtB,4BAA4B,EAC5B,0BAA0B,CAC3B,CAAC;QACF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;KACV;SAAM;QACL,MAAM,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,YAAY,CAAC,GAAG,CAAC,IAAA,qBAAY,EAAA;;;;;KAK5B,CAAC,CAAC;QACH,IAAA,mBAAW,EAAC,CAAC,EAAE,aAAa,CAAC,sBAAW,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC/D,wBAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,wBAAW,CAAC,OAAO,CACjB,sBAAsB,EACtB,4BAA4B,EAC5B,0BAA0B,CAC3B,CAAC;QACF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;KACV;AACH,CAAC;AAED,SAAS,YAAY,CAAC,aAAkB;IACtC,uEAAuE;IACvE,kCAAkC;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9B,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,oBAAoB,CAClC,aAAkB,EAClB,iBAA8B;IAE9B,iBAAiB,GAAG,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;IAC9D,MAAM,cAAc,GAAmB,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;QACxC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;KAClC;IACD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE;QACjC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;YACxC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE;gBAC7C,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM;aACP;SACF;KACF;IACD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAC/C,CAAC;AAxBD,oDAwBC;AAED,SAAgB,oBAAoB,CAClC,aAAkB,EAClB,cAA8B,EAC9B,iBAA6B,EAC7B,YAAiC,EACjC,YAAsB;IAEtB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IACnD,KAAK,IAAI,WAAW,IAAI,cAAc,EAAE;QACtC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;YAChC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;SAClC;KACF;IAED,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,SAAS;QAChC,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;YACxC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE;gBACxC,MAAM,QAAQ,GAAa,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CACpB,CAAC;gBACF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACrC;qBAAM;oBACL,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;wBAC/B,IAAI,EAAE,CAAC;wBACP,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBACJ;gBACD,MAAM;aACP;SACF;QAED,MAAM,QAAQ,GAAa,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACvE,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACrC;aAAM;YACL,iBAAiB,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1B,CAAC,CAAC;SACJ;KACF;IAED,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;QAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,SAAS;QAChC,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;YACxC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE;gBACxC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CACpB,CAAC;gBACF,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;oBACd,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9C;gBACD,MAAM;aACP;SACF;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACpC;KACF;IACD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAC/C,CAAC;AAlED,oDAkEC;AAED,SAAgB,eAAe,CAC7B,MAAc,EACd,QAA0C;IAE1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,IAAI,EAAS,CAAC;AAClE,CAAC;AAPD,0CAOC;AAED,SAAgB,qBAAqB,CAAC,CAAmB;IACvD,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;QACD,oDAAoD;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAChC;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAXD,sDAWC"}
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../../packages/workspace/src/core/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FileData } from '@nrwl/tao/src/shared/project-graph';
|
|
2
|
+
export declare abstract class FileHasherBase {
|
|
3
|
+
protected fileHashes: Map<string, string>;
|
|
4
|
+
protected isInitialized: boolean;
|
|
5
|
+
clear(): void;
|
|
6
|
+
abstract init(): Promise<void>;
|
|
7
|
+
abstract hashFiles(files: string[]): Promise<Map<string, string>>;
|
|
8
|
+
ensureInitialized(): Promise<void>;
|
|
9
|
+
allFileData(): FileData[];
|
|
10
|
+
incrementalUpdate(updatedFiles: Map<string, string>, deletedFiles?: string[]): void;
|
|
11
|
+
hashFile(path: string): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileHasherBase = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
|
6
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
7
|
+
const hashing_impl_1 = require("./hashing-impl");
|
|
8
|
+
class FileHasherBase {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.isInitialized = false;
|
|
11
|
+
}
|
|
12
|
+
clear() {
|
|
13
|
+
this.fileHashes = new Map();
|
|
14
|
+
this.isInitialized = false;
|
|
15
|
+
}
|
|
16
|
+
ensureInitialized() {
|
|
17
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
18
|
+
if (!this.isInitialized) {
|
|
19
|
+
yield this.init();
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
allFileData() {
|
|
24
|
+
const res = [];
|
|
25
|
+
this.fileHashes.forEach((hash, file) => {
|
|
26
|
+
res.push({
|
|
27
|
+
file,
|
|
28
|
+
hash,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
res.sort((x, y) => x.file.localeCompare(y.file));
|
|
32
|
+
return res;
|
|
33
|
+
}
|
|
34
|
+
incrementalUpdate(updatedFiles, deletedFiles = []) {
|
|
35
|
+
perf_hooks_1.performance.mark('incremental hashing:start');
|
|
36
|
+
updatedFiles.forEach((hash, filename) => {
|
|
37
|
+
this.fileHashes.set(filename, hash);
|
|
38
|
+
});
|
|
39
|
+
for (const deletedFile of deletedFiles) {
|
|
40
|
+
this.fileHashes.delete(deletedFile);
|
|
41
|
+
}
|
|
42
|
+
perf_hooks_1.performance.mark('incremental hashing:end');
|
|
43
|
+
perf_hooks_1.performance.measure('incremental hashing', 'incremental hashing:start', 'incremental hashing:end');
|
|
44
|
+
}
|
|
45
|
+
hashFile(path) {
|
|
46
|
+
if (!this.fileHashes) {
|
|
47
|
+
throw new Error('FileHasher is invoked before being initialized');
|
|
48
|
+
}
|
|
49
|
+
const relativePath = path.startsWith(app_root_1.appRootPath)
|
|
50
|
+
? path.substr(app_root_1.appRootPath.length + 1)
|
|
51
|
+
: path;
|
|
52
|
+
if (this.fileHashes[relativePath]) {
|
|
53
|
+
return this.fileHashes[relativePath];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
try {
|
|
57
|
+
return hashing_impl_1.defaultHashing.hashFile(path);
|
|
58
|
+
}
|
|
59
|
+
catch (_a) {
|
|
60
|
+
return '';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.FileHasherBase = FileHasherBase;
|
|
66
|
+
//# sourceMappingURL=file-hasher-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-hasher-base.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/file-hasher-base.ts"],"names":[],"mappings":";;;;AAAA,2DAA2D;AAC3D,2CAAyC;AAEzC,iDAAgD;AAIhD,MAAsB,cAAc;IAApC;QAEY,kBAAa,GAAG,KAAK,CAAC;IAoElC,CAAC;IAlEC,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMK,iBAAiB;;YACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;aACnB;QACH,CAAC;KAAA;IAED,WAAW;QACT,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACrC,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,iBAAiB,CACf,YAAiC,EACjC,eAAyB,EAAE;QAE3B,wBAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE9C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;YACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACrC;QAED,wBAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC5C,wBAAW,CAAC,OAAO,CACjB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAW,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACjC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;SACtC;aAAM;YACL,IAAI;gBACF,OAAO,6BAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACtC;YAAC,WAAM;gBACN,OAAO,EAAE,CAAC;aACX;SACF;IACH,CAAC;CACF;AAtED,wCAsEC"}
|
|
@@ -1,24 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare
|
|
3
|
-
private readonly hashing;
|
|
4
|
-
fileHashes: {
|
|
5
|
-
[path: string]: string;
|
|
6
|
-
};
|
|
7
|
-
workspaceFiles: Set<string>;
|
|
8
|
-
usesGitForHashing: boolean;
|
|
9
|
-
private isInitialized;
|
|
10
|
-
constructor(hashing: HashingImpl);
|
|
11
|
-
clear(): void;
|
|
12
|
-
/**
|
|
13
|
-
* For the project graph daemon server use-case we can potentially skip expensive work
|
|
14
|
-
* by leveraging knowledge of the uncommitted and untracked files, so the init() method
|
|
15
|
-
* returns a Map containing this data.
|
|
16
|
-
*/
|
|
17
|
-
init(): Map<string, string>;
|
|
18
|
-
incrementalUpdate(updatedFiles: Map<string, string>, deletedFiles?: string[]): void;
|
|
19
|
-
hashFile(path: string): string;
|
|
20
|
-
ensureInitialized(): void;
|
|
21
|
-
private applyFileHashes;
|
|
22
|
-
private processPath;
|
|
23
|
-
}
|
|
24
|
-
export declare const defaultFileHasher: FileHasher;
|
|
1
|
+
import { FileHasherBase } from './file-hasher-base';
|
|
2
|
+
export declare const defaultFileHasher: FileHasherBase;
|
|
@@ -1,93 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultFileHasher =
|
|
3
|
+
exports.defaultFileHasher = void 0;
|
|
4
|
+
const git_based_file_hasher_1 = require("./git-based-file-hasher");
|
|
5
|
+
const devkit_1 = require("@nrwl/devkit");
|
|
4
6
|
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.fileHashes = {};
|
|
12
|
-
this.workspaceFiles = new Set();
|
|
13
|
-
this.usesGitForHashing = false;
|
|
14
|
-
this.isInitialized = false;
|
|
7
|
+
const node_based_file_hasher_1 = require("./node-based-file-hasher");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
function createFileHasher() {
|
|
10
|
+
try {
|
|
11
|
+
(0, fs_1.statSync)((0, devkit_1.joinPathFragments)(app_root_1.appRootPath, '.git')).isDirectory();
|
|
12
|
+
return new git_based_file_hasher_1.GitBasedFileHasher();
|
|
15
13
|
}
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
return new node_based_file_hasher_1.NodeBasedFileHasher();
|
|
89
16
|
}
|
|
90
17
|
}
|
|
91
|
-
exports.
|
|
92
|
-
exports.defaultFileHasher = new FileHasher(hashing_impl_1.defaultHashing);
|
|
18
|
+
exports.defaultFileHasher = createFileHasher();
|
|
93
19
|
//# 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":";;;AAAA,mEAA6D;AAC7D,yCAAiD;AACjD,2DAA2D;AAC3D,qEAA+D;AAE/D,2BAA8B;AAE9B,SAAS,gBAAgB;IACvB,IAAI;QACF,IAAA,aAAQ,EAAC,IAAA,0BAAiB,EAAC,sBAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/D,OAAO,IAAI,0CAAkB,EAAE,CAAC;KACjC;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,IAAI,4CAAmB,EAAE,CAAC;KAClC;AACH,CAAC;AAEY,QAAA,iBAAiB,GAAG,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FileHasherBase } from './file-hasher-base';
|
|
2
|
+
export declare class GitBasedFileHasher extends FileHasherBase {
|
|
3
|
+
/**
|
|
4
|
+
* For the project graph daemon server use-case we can potentially skip expensive work
|
|
5
|
+
* by leveraging knowledge of the uncommitted and untracked files, so the init() method
|
|
6
|
+
* returns a Map containing this data.
|
|
7
|
+
*/
|
|
8
|
+
init(): Promise<void>;
|
|
9
|
+
hashFiles(files: string[]): Promise<Map<string, string>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GitBasedFileHasher = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const app_root_1 = require("@nrwl/tao/src/utils/app-root");
|
|
6
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
7
|
+
const git_hasher_1 = require("./git-hasher");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const file_hasher_base_1 = require("./file-hasher-base");
|
|
10
|
+
const ignore = require('ignore');
|
|
11
|
+
class GitBasedFileHasher extends file_hasher_base_1.FileHasherBase {
|
|
12
|
+
/**
|
|
13
|
+
* For the project graph daemon server use-case we can potentially skip expensive work
|
|
14
|
+
* by leveraging knowledge of the uncommitted and untracked files, so the init() method
|
|
15
|
+
* returns a Map containing this data.
|
|
16
|
+
*/
|
|
17
|
+
init() {
|
|
18
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
19
|
+
perf_hooks_1.performance.mark('init hashing:start');
|
|
20
|
+
this.clear();
|
|
21
|
+
const gitResult = yield (0, git_hasher_1.getFileHashes)(app_root_1.appRootPath);
|
|
22
|
+
const ignore = getIgnoredGlobs();
|
|
23
|
+
gitResult.allFiles.forEach((hash, filename) => {
|
|
24
|
+
if (!ignore.ignores(filename)) {
|
|
25
|
+
this.fileHashes.set(filename, hash);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
this.isInitialized = true;
|
|
29
|
+
perf_hooks_1.performance.mark('init hashing:end');
|
|
30
|
+
perf_hooks_1.performance.measure('init hashing', 'init hashing:start', 'init hashing:end');
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
hashFiles(files) {
|
|
34
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
35
|
+
return (yield (0, git_hasher_1.getGitHashForFiles)(files, app_root_1.appRootPath)).hashes;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.GitBasedFileHasher = GitBasedFileHasher;
|
|
40
|
+
function getIgnoredGlobs() {
|
|
41
|
+
if ((0, fs_1.existsSync)(`${app_root_1.appRootPath}/.nxignore`)) {
|
|
42
|
+
const ig = ignore();
|
|
43
|
+
ig.add((0, fs_1.readFileSync)(`${app_root_1.appRootPath}/.nxignore`, 'utf-8'));
|
|
44
|
+
return ig;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return { ignores: (file) => false };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=git-based-file-hasher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-based-file-hasher.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/core/hasher/git-based-file-hasher.ts"],"names":[],"mappings":";;;;AAAA,2DAA2D;AAC3D,2CAAyC;AACzC,6CAAiE;AACjE,2BAA8C;AAC9C,yDAAoD;AAEpD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAa,kBAAmB,SAAQ,iCAAc;IACpD;;;;OAIG;IACG,IAAI;;YACR,wBAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAa,EAAC,sBAAW,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;YACjC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;iBACrC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,wBAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACrC,wBAAW,CAAC,OAAO,CACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,CACnB,CAAC;QACJ,CAAC;KAAA;IAEK,SAAS,CAAC,KAAe;;YAC7B,OAAO,CAAC,MAAM,IAAA,+BAAkB,EAAC,KAAK,EAAE,sBAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,CAAC;KAAA;CACF;AA7BD,gDA6BC;AAED,SAAS,eAAe;IACtB,IAAI,IAAA,eAAU,EAAC,GAAG,sBAAW,YAAY,CAAC,EAAE;QAC1C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,EAAE,CAAC,GAAG,CAAC,IAAA,iBAAY,EAAC,GAAG,sBAAW,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;KACX;SAAM;QACL,OAAO,EAAE,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;KAC7C;AACH,CAAC"}
|
|
@@ -1,25 +1,7 @@
|
|
|
1
|
-
export declare function getGitHashForFiles(
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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): {
|
|
1
|
+
export declare function getGitHashForFiles(potentialFilesToHash: string[], path: string): Promise<{
|
|
2
|
+
hashes: Map<string, string>;
|
|
3
|
+
deleted: string[];
|
|
4
|
+
}>;
|
|
5
|
+
export declare function getFileHashes(path: string): Promise<{
|
|
15
6
|
allFiles: Map<string, string>;
|
|
16
|
-
|
|
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>;
|
|
7
|
+
}>;
|