@nrwl/workspace 13.4.4 → 13.4.5-beta.4

Sign up to get free protection for your applications and to get access to all the features.
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":";;;AAAA,8DAIwC;AAMxC,yCAA0E;AAC1E,iDAAyC;AACzC,2BAAqE;AACrE,+BAAoD;AAGpD,2DAA2D;AAE3D,sDAAoD;AACpD,sDAAkD;AAIlD,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,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,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,oBAAoB,CAClC,KAAe,EACf,iBAA6B,EAC7B,MAAe,EACf,qBAGc,yBAAyB,EACvC,MAAM,GAAG,eAAe,EAAE;IAE1B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;QAExB,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,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,SAAgB,eAAe;IAC7B,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;AAJD,0CAIC;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"}
@@ -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
+ }>;