@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.
Files changed (74) hide show
  1. package/package.json +5 -6
  2. package/src/command-line/affected.js +5 -5
  3. package/src/command-line/affected.js.map +1 -1
  4. package/src/command-line/dep-graph.js +1 -2
  5. package/src/command-line/dep-graph.js.map +1 -1
  6. package/src/command-line/format.js +4 -3
  7. package/src/command-line/format.js.map +1 -1
  8. package/src/command-line/reset.d.ts +1 -1
  9. package/src/command-line/reset.js +8 -12
  10. package/src/command-line/reset.js.map +1 -1
  11. package/src/command-line/run-many.js +2 -2
  12. package/src/command-line/run-many.js.map +1 -1
  13. package/src/command-line/run-one.js +2 -2
  14. package/src/command-line/run-one.js.map +1 -1
  15. package/src/core/file-map-utils.d.ts +10 -0
  16. package/src/core/file-map-utils.js +94 -0
  17. package/src/core/file-map-utils.js.map +1 -0
  18. package/src/core/file-utils.d.ts +3 -14
  19. package/src/core/file-utils.js +16 -188
  20. package/src/core/file-utils.js.map +1 -1
  21. package/src/core/hasher/file-hasher-base.d.ts +12 -0
  22. package/src/core/hasher/file-hasher-base.js +66 -0
  23. package/src/core/hasher/file-hasher-base.js.map +1 -0
  24. package/src/core/hasher/file-hasher.d.ts +2 -24
  25. package/src/core/hasher/file-hasher.js +12 -86
  26. package/src/core/hasher/file-hasher.js.map +1 -1
  27. package/src/core/hasher/git-based-file-hasher.d.ts +10 -0
  28. package/src/core/hasher/git-based-file-hasher.js +50 -0
  29. package/src/core/hasher/git-based-file-hasher.js.map +1 -0
  30. package/src/core/hasher/git-hasher.d.ts +6 -24
  31. package/src/core/hasher/git-hasher.js +89 -147
  32. package/src/core/hasher/git-hasher.js.map +1 -1
  33. package/src/core/hasher/hasher.js +1 -0
  34. package/src/core/hasher/hasher.js.map +1 -1
  35. package/src/core/hasher/node-based-file-hasher.d.ts +7 -0
  36. package/src/core/hasher/node-based-file-hasher.js +78 -0
  37. package/src/core/hasher/node-based-file-hasher.js.map +1 -0
  38. package/src/core/nx-deps/nx-deps-cache.d.ts +0 -1
  39. package/src/core/nx-deps/nx-deps-cache.js +6 -8
  40. package/src/core/nx-deps/nx-deps-cache.js.map +1 -1
  41. package/src/core/project-graph/build-project-graph.js +3 -1
  42. package/src/core/project-graph/build-project-graph.js.map +1 -1
  43. package/src/core/project-graph/daemon/client/client.js +3 -0
  44. package/src/core/project-graph/daemon/client/client.js.map +1 -1
  45. package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js +49 -44
  46. package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js.map +1 -1
  47. package/src/core/project-graph/daemon/server/server.js +3 -1
  48. package/src/core/project-graph/daemon/server/server.js.map +1 -1
  49. package/src/core/project-graph/daemon/tmp-dir.d.ts +0 -4
  50. package/src/core/project-graph/daemon/tmp-dir.js +2 -45
  51. package/src/core/project-graph/daemon/tmp-dir.js.map +1 -1
  52. package/src/core/project-graph/project-graph.js +2 -0
  53. package/src/core/project-graph/project-graph.js.map +1 -1
  54. package/src/generators/convert-to-nx-project/convert-to-nx-project.js +3 -1
  55. package/src/generators/convert-to-nx-project/convert-to-nx-project.js.map +1 -1
  56. package/src/generators/convert-to-nx-project/schema.d.ts +1 -0
  57. package/src/generators/convert-to-nx-project/schema.json +5 -0
  58. package/src/generators/workspace/files/__workspaceFile__.json__tmpl__ +0 -5
  59. package/src/generators/workspace/files/package.json__tmpl__ +1 -1
  60. package/src/tasks-runner/cache.js +2 -3
  61. package/src/tasks-runner/cache.js.map +1 -1
  62. package/src/utilities/cache-directory.d.ts +1 -2
  63. package/src/utilities/cache-directory.js +3 -3
  64. package/src/utilities/cache-directory.js.map +1 -1
  65. package/src/utilities/is_ci.js +1 -0
  66. package/src/utilities/is_ci.js.map +1 -1
  67. package/src/utilities/perf-logging.js +1 -1
  68. package/src/utilities/perf-logging.js.map +1 -1
  69. package/src/utils/perf-logging.js +1 -1
  70. package/src/utils/perf-logging.js.map +1 -1
  71. package/src/utils/versions.js +1 -1
  72. package/src/core/hasher/spawn-process.d.ts +0 -6
  73. package/src/core/hasher/spawn-process.js +0 -27
  74. package/src/core/hasher/spawn-process.js.map +0 -1
@@ -1,17 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizedProjectRoot = exports.readEnvironment = exports.updateProjectFileMap = exports.createProjectFileMap = exports.rootWorkspaceFileData = exports.rootWorkspaceFileNames = exports.workspaceLayout = exports.readNxJson = exports.readPackageJson = exports.defaultFileRead = exports.workspaceFileName = exports.readWorkspaceConfig = exports.readWorkspaceJson = exports.readFileIfExisting = exports.TEN_MEGABYTES = exports.calculateFileChanges = exports.isWholeFileChange = exports.WholeFileChange = void 0;
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 calculateFileChanges(files, nxArgs, readFileAtRevision = defaultReadFileAtRevision, ignore = getIgnoredGlobs()) {
27
- if (ignore) {
28
- files = files.filter((f) => !ignore.ignores(f));
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 hash = file_hasher_1.defaultFileHasher.hashFile(f);
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
- // TODO: Make this list extensible
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 { HashingImpl } from './hashing-impl';
2
- export declare class FileHasher {
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 = exports.FileHasher = void 0;
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 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;
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
- 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
- }
14
+ catch (err) {
15
+ return new node_based_file_hasher_1.NodeBasedFileHasher();
89
16
  }
90
17
  }
91
- exports.FileHasher = FileHasher;
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":"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"}
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(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): {
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
- 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>;
7
+ }>;