@lage-run/hasher 0.1.1 → 0.1.2

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 (47) hide show
  1. package/CHANGELOG.json +16 -1
  2. package/CHANGELOG.md +10 -2
  3. package/lib/__tests__/createPackageHashes.test.js +13 -12
  4. package/lib/__tests__/getPackageDeps.test.js +149 -131
  5. package/lib/__tests__/getRepoDeps.test.js +106 -91
  6. package/lib/__tests__/getRepoState.test.js +70 -33
  7. package/lib/__tests__/hashOfFiles.test.js +71 -68
  8. package/lib/__tests__/helpers.test.js +12 -11
  9. package/lib/__tests__/index.test.js +50 -39
  10. package/lib/__tests__/resolveDependenciesHelper.js +44 -25
  11. package/lib/__tests__/resolveExternalDependencies.test.js +114 -68
  12. package/lib/__tests__/resolveInternalDependencies.test.js +98 -67
  13. package/lib/createPackageHashes.js +27 -20
  14. package/lib/getPackageDeps.js +118 -125
  15. package/lib/getRepoState.js +86 -101
  16. package/lib/hashOfFiles.js +59 -53
  17. package/lib/hashOfPackage.js +41 -28
  18. package/lib/helpers.js +35 -19
  19. package/lib/index.js +50 -41
  20. package/lib/repoInfo.js +26 -29
  21. package/lib/resolveExternalDependencies.js +32 -22
  22. package/lib/resolveInternalDependencies.js +16 -8
  23. package/package.json +2 -2
  24. package/lib/__fixtures__/config/backfill.config.js +0 -5
  25. package/lib/__fixtures__/config/backfill.config.js.map +0 -1
  26. package/lib/__fixtures__/config/packages/package-1/backfill.config.js +0 -2
  27. package/lib/__fixtures__/config/packages/package-1/backfill.config.js.map +0 -1
  28. package/lib/__tests__/createPackageHashes.test.js.map +0 -1
  29. package/lib/__tests__/getPackageDeps.test.js.map +0 -1
  30. package/lib/__tests__/getRepoDeps.test.js.map +0 -1
  31. package/lib/__tests__/getRepoState.test.js.map +0 -1
  32. package/lib/__tests__/hashOfFiles.test.js.map +0 -1
  33. package/lib/__tests__/helpers.test.js.map +0 -1
  34. package/lib/__tests__/index.test.js.map +0 -1
  35. package/lib/__tests__/resolveDependenciesHelper.js.map +0 -1
  36. package/lib/__tests__/resolveExternalDependencies.test.js.map +0 -1
  37. package/lib/__tests__/resolveInternalDependencies.test.js.map +0 -1
  38. package/lib/createPackageHashes.js.map +0 -1
  39. package/lib/getPackageDeps.js.map +0 -1
  40. package/lib/getRepoState.js.map +0 -1
  41. package/lib/hashOfFiles.js.map +0 -1
  42. package/lib/hashOfPackage.js.map +0 -1
  43. package/lib/helpers.js.map +0 -1
  44. package/lib/index.js.map +0 -1
  45. package/lib/repoInfo.js.map +0 -1
  46. package/lib/resolveExternalDependencies.js.map +0 -1
  47. package/lib/resolveInternalDependencies.js.map +0 -1
@@ -1,65 +1,71 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "generateHashOfFiles", {
6
+ enumerable: true,
7
+ get: ()=>generateHashOfFiles
17
8
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.generateHashOfFiles = void 0;
27
- const path_1 = __importStar(require("path"));
28
- const helpers_js_1 = require("./helpers.js");
29
- /**
30
- * Generates a hash string based on files in a package
31
- *
32
- * This implementation relies on `git hash-object` to quickly calculate all files
33
- * in the repo, caching this result so repeated calls to this function will be
34
- * a simple lookup.
35
- *
36
- * Note: We have to force the types because globby types are wrong
37
- *
38
- * @param packageRoot The root of the package
39
- * @param repoInfo The repoInfo that carries information about repo-wide hashes
40
- */
9
+ const _path = /*#__PURE__*/ _interopRequireWildcard(require("path"));
10
+ const _helpersJs = require("./helpers.js");
11
+ function _getRequireWildcardCache(nodeInterop) {
12
+ if (typeof WeakMap !== "function") return null;
13
+ var cacheBabelInterop = new WeakMap();
14
+ var cacheNodeInterop = new WeakMap();
15
+ return (_getRequireWildcardCache = function(nodeInterop) {
16
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
17
+ })(nodeInterop);
18
+ }
19
+ function _interopRequireWildcard(obj, nodeInterop) {
20
+ if (!nodeInterop && obj && obj.__esModule) {
21
+ return obj;
22
+ }
23
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
24
+ return {
25
+ default: obj
26
+ };
27
+ }
28
+ var cache = _getRequireWildcardCache(nodeInterop);
29
+ if (cache && cache.has(obj)) {
30
+ return cache.get(obj);
31
+ }
32
+ var newObj = {};
33
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
34
+ for(var key in obj){
35
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
36
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
37
+ if (desc && (desc.get || desc.set)) {
38
+ Object.defineProperty(newObj, key, desc);
39
+ } else {
40
+ newObj[key] = obj[key];
41
+ }
42
+ }
43
+ }
44
+ newObj.default = obj;
45
+ if (cache) {
46
+ cache.set(obj, newObj);
47
+ }
48
+ return newObj;
49
+ }
41
50
  async function generateHashOfFiles(packageRoot, repoInfo) {
42
- const { repoHashes, root, packageHashes } = repoInfo;
51
+ const { repoHashes , root , packageHashes } = repoInfo;
43
52
  const hashes = [];
44
- const packageRelativeRoot = path_1.default.relative(root, packageRoot).replace(/\\/g, "/");
53
+ const packageRelativeRoot = _path.default.relative(root, packageRoot).replace(/\\/g, "/");
45
54
  if (packageHashes[packageRelativeRoot]) {
46
55
  // Fast path: if files are clearly inside a package as per the packageHashes cache
47
- for (const hash of packageHashes[packageRelativeRoot]) {
56
+ for (const hash of packageHashes[packageRelativeRoot]){
48
57
  hashes.push(hash[0], hash[1]);
49
58
  }
50
- return (0, helpers_js_1.hashStrings)(hashes);
51
- }
52
- else {
59
+ return (0, _helpersJs.hashStrings)(hashes);
60
+ } else {
53
61
  // Slow old path: if files are not clearly inside a package (mostly the case for malformed monorepos, like tests)
54
- const normalized = path_1.default.normalize(packageRoot) + path_1.sep;
55
- const files = Object.keys(repoHashes).filter((f) => path_1.default.join(root, f).includes(normalized));
56
- files.sort((a, b) => a.localeCompare(b));
57
- const hashes = [];
58
- for (const file of files) {
59
- hashes.push(file, repoHashes[file]);
62
+ const normalized = _path.default.normalize(packageRoot) + _path.sep;
63
+ const files = Object.keys(repoHashes).filter((f)=>_path.default.join(root, f).includes(normalized));
64
+ files.sort((a, b)=>a.localeCompare(b));
65
+ const hashes1 = [];
66
+ for (const file of files){
67
+ hashes1.push(file, repoHashes[file]);
60
68
  }
61
- return (0, helpers_js_1.hashStrings)(hashes);
69
+ return (0, _helpersJs.hashStrings)(hashes1);
62
70
  }
63
71
  }
64
- exports.generateHashOfFiles = generateHashOfFiles;
65
- //# sourceMappingURL=hashOfFiles.js.map
@@ -1,52 +1,65 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPackageHash = exports.generateHashOfInternalPackages = void 0;
7
- const crypto_1 = __importDefault(require("crypto"));
8
- const path_1 = __importDefault(require("path"));
9
- const fs_1 = __importDefault(require("fs"));
10
- const resolveInternalDependencies_js_1 = require("./resolveInternalDependencies.js");
11
- const resolveExternalDependencies_js_1 = require("./resolveExternalDependencies.js");
12
- const hashOfFiles_js_1 = require("./hashOfFiles.js");
13
- const helpers_js_1 = require("./helpers.js");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ generateHashOfInternalPackages: ()=>generateHashOfInternalPackages,
13
+ getPackageHash: ()=>getPackageHash
14
+ });
15
+ const _crypto = /*#__PURE__*/ _interopRequireDefault(require("crypto"));
16
+ const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
17
+ const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
18
+ const _resolveInternalDependenciesJs = require("./resolveInternalDependencies.js");
19
+ const _resolveExternalDependenciesJs = require("./resolveExternalDependencies.js");
20
+ const _hashOfFilesJs = require("./hashOfFiles.js");
21
+ const _helpersJs = require("./helpers.js");
22
+ function _interopRequireDefault(obj) {
23
+ return obj && obj.__esModule ? obj : {
24
+ default: obj
25
+ };
26
+ }
14
27
  function generateHashOfInternalPackages(internalPackages) {
15
- internalPackages.sort((a, b) => a.name.localeCompare(b.name));
16
- const hasher = crypto_1.default.createHash("sha1");
17
- internalPackages.forEach((pkg) => {
28
+ internalPackages.sort((a, b)=>a.name.localeCompare(b.name));
29
+ const hasher = _crypto.default.createHash("sha1");
30
+ internalPackages.forEach((pkg)=>{
18
31
  hasher.update(pkg.name);
19
32
  hasher.update(pkg.filesHash);
20
33
  hasher.update(pkg.dependenciesHash);
21
34
  });
22
35
  return hasher.digest("hex");
23
36
  }
24
- exports.generateHashOfInternalPackages = generateHashOfInternalPackages;
25
37
  const memoization = {};
26
38
  async function getPackageHash(packageRoot, repoInfo) {
27
- const { workspaceInfo, parsedLock } = repoInfo;
28
- const memoizationKey = path_1.default.resolve(packageRoot);
39
+ const { workspaceInfo , parsedLock } = repoInfo;
40
+ const memoizationKey = _path.default.resolve(packageRoot);
29
41
  if (memoization[memoizationKey]) {
30
42
  return memoization[memoizationKey];
31
43
  }
32
- const { name, dependencies, devDependencies } = JSON.parse(fs_1.default.readFileSync(path_1.default.join(packageRoot, "package.json"), "utf-8"));
44
+ const { name , dependencies , devDependencies } = JSON.parse(_fs.default.readFileSync(_path.default.join(packageRoot, "package.json"), "utf-8"));
33
45
  const allDependencies = {
34
46
  ...dependencies,
35
- ...devDependencies,
47
+ ...devDependencies
36
48
  };
37
- const internalDependencies = (0, resolveInternalDependencies_js_1.resolveInternalDependencies)(allDependencies, workspaceInfo);
38
- const externalDeoendencies = (0, resolveExternalDependencies_js_1.resolveExternalDependencies)(allDependencies, workspaceInfo, parsedLock);
39
- const resolvedDependencies = [...internalDependencies, ...externalDeoendencies];
40
- const filesHash = await (0, hashOfFiles_js_1.generateHashOfFiles)(packageRoot, repoInfo);
41
- const dependenciesHash = (0, helpers_js_1.hashStrings)(resolvedDependencies);
49
+ const internalDependencies = (0, _resolveInternalDependenciesJs.resolveInternalDependencies)(allDependencies, workspaceInfo);
50
+ const externalDeoendencies = (0, _resolveExternalDependenciesJs.resolveExternalDependencies)(allDependencies, workspaceInfo, parsedLock);
51
+ const resolvedDependencies = [
52
+ ...internalDependencies,
53
+ ...externalDeoendencies
54
+ ];
55
+ const filesHash = await (0, _hashOfFilesJs.generateHashOfFiles)(packageRoot, repoInfo);
56
+ const dependenciesHash = (0, _helpersJs.hashStrings)(resolvedDependencies);
42
57
  const packageHash = {
43
58
  name,
44
59
  filesHash,
45
60
  dependenciesHash,
46
- internalDependencies,
61
+ internalDependencies
47
62
  };
48
63
  memoization[memoizationKey] = packageHash;
49
64
  return packageHash;
50
65
  }
51
- exports.getPackageHash = getPackageHash;
52
- //# sourceMappingURL=hashOfPackage.js.map
package/lib/helpers.js CHANGED
@@ -1,31 +1,47 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.nameAtVersion = exports.getPackageRoot = exports.hashStrings = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const crypto_1 = __importDefault(require("crypto"));
9
- const find_up_1 = __importDefault(require("find-up"));
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ hashStrings: ()=>hashStrings,
13
+ getPackageRoot: ()=>getPackageRoot,
14
+ nameAtVersion: ()=>nameAtVersion
15
+ });
16
+ const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
17
+ const _crypto = /*#__PURE__*/ _interopRequireDefault(require("crypto"));
18
+ const _findUp = /*#__PURE__*/ _interopRequireDefault(require("find-up"));
19
+ function _interopRequireDefault(obj) {
20
+ return obj && obj.__esModule ? obj : {
21
+ default: obj
22
+ };
23
+ }
10
24
  function hashStrings(strings) {
11
- const hasher = crypto_1.default.createHash("sha1");
12
- const anArray = typeof strings === "string" ? [strings] : strings;
13
- const elements = [...anArray];
14
- elements.sort((a, b) => a.localeCompare(b));
15
- elements.forEach((element) => hasher.update(element));
25
+ const hasher = _crypto.default.createHash("sha1");
26
+ const anArray = typeof strings === "string" ? [
27
+ strings
28
+ ] : strings;
29
+ const elements = [
30
+ ...anArray
31
+ ];
32
+ elements.sort((a, b)=>a.localeCompare(b));
33
+ elements.forEach((element)=>hasher.update(element));
16
34
  return hasher.digest("hex");
17
35
  }
18
- exports.hashStrings = hashStrings;
19
36
  async function getPackageRoot(cwd) {
20
- const packageRoot = await (0, find_up_1.default)("package.json", { cwd });
37
+ const packageRoot = await (0, _findUp.default)("package.json", {
38
+ cwd
39
+ });
21
40
  if (!packageRoot) {
22
41
  throw new Error(`Could not find package.json inside ${cwd}.`);
23
42
  }
24
- return path_1.default.dirname(packageRoot);
43
+ return _path.default.dirname(packageRoot);
25
44
  }
26
- exports.getPackageRoot = getPackageRoot;
27
45
  function nameAtVersion(name, version) {
28
46
  return `${name}@${version}`;
29
47
  }
30
- exports.nameAtVersion = nameAtVersion;
31
- //# sourceMappingURL=helpers.js.map
package/lib/index.js CHANGED
@@ -1,33 +1,41 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Hasher = exports.addToQueue = void 0;
18
- const workspace_tools_1 = require("workspace-tools");
19
- const hashOfPackage_js_1 = require("./hashOfPackage.js");
20
- const helpers_js_1 = require("./helpers.js");
21
- const repoInfo_js_1 = require("./repoInfo.js");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ addToQueue: ()=>addToQueue,
13
+ Hasher: ()=>Hasher
14
+ });
15
+ const _workspaceTools = require("workspace-tools");
16
+ const _hashOfPackageJs = require("./hashOfPackage.js");
17
+ const _helpersJs = require("./helpers.js");
18
+ const _repoInfoJs = _exportStar(require("./repoInfo.js"), exports);
19
+ function _exportStar(from, to) {
20
+ Object.keys(from).forEach(function(k) {
21
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
22
+ enumerable: true,
23
+ get: function() {
24
+ return from[k];
25
+ }
26
+ });
27
+ });
28
+ return from;
29
+ }
22
30
  function isDone(done, packageName) {
23
- return Boolean(done.find(({ name }) => name === packageName));
31
+ return Boolean(done.find(({ name })=>name === packageName));
24
32
  }
25
33
  function isInQueue(queue, packagePath) {
26
34
  return queue.indexOf(packagePath) >= 0;
27
35
  }
28
36
  function addToQueue(dependencyNames, queue, done, workspaces) {
29
- dependencyNames.forEach((name) => {
30
- const dependencyPath = (0, workspace_tools_1.findWorkspacePath)(workspaces, name);
37
+ dependencyNames.forEach((name)=>{
38
+ const dependencyPath = (0, _workspaceTools.findWorkspacePath)(workspaces, name);
31
39
  if (dependencyPath) {
32
40
  if (!isDone(done, name) && !isInQueue(queue, dependencyPath)) {
33
41
  queue.push(dependencyPath);
@@ -35,32 +43,33 @@ function addToQueue(dependencyNames, queue, done, workspaces) {
35
43
  }
36
44
  });
37
45
  }
38
- exports.addToQueue = addToQueue;
39
46
  class Hasher {
40
- constructor(packageRoot) {
41
- this.packageRoot = packageRoot;
42
- }
43
47
  async createPackageHash(salt) {
44
- const packageRoot = await (0, helpers_js_1.getPackageRoot)(this.packageRoot);
45
- this.repoInfo = await (0, repoInfo_js_1.getRepoInfo)(packageRoot);
46
- const { workspaceInfo } = this.repoInfo;
47
- const queue = [packageRoot];
48
+ const packageRoot = await (0, _helpersJs.getPackageRoot)(this.packageRoot);
49
+ this.repoInfo = await (0, _repoInfoJs.getRepoInfo)(packageRoot);
50
+ const { workspaceInfo } = this.repoInfo;
51
+ const queue = [
52
+ packageRoot
53
+ ];
48
54
  const done = [];
49
- while (queue.length > 0) {
50
- const packageRoot = queue.shift();
51
- if (!packageRoot) {
55
+ while(queue.length > 0){
56
+ const packageRoot1 = queue.shift();
57
+ if (!packageRoot1) {
52
58
  continue;
53
59
  }
54
- const packageHash = await (0, hashOfPackage_js_1.getPackageHash)(packageRoot, this.repoInfo);
60
+ const packageHash = await (0, _hashOfPackageJs.getPackageHash)(packageRoot1, this.repoInfo);
55
61
  addToQueue(packageHash.internalDependencies, queue, done, workspaceInfo);
56
62
  done.push(packageHash);
57
63
  }
58
- const internalPackagesHash = (0, hashOfPackage_js_1.generateHashOfInternalPackages)(done);
59
- const buildCommandHash = (0, helpers_js_1.hashStrings)(salt);
60
- const combinedHash = (0, helpers_js_1.hashStrings)([internalPackagesHash, buildCommandHash]);
64
+ const internalPackagesHash = (0, _hashOfPackageJs.generateHashOfInternalPackages)(done);
65
+ const buildCommandHash = (0, _helpersJs.hashStrings)(salt);
66
+ const combinedHash = (0, _helpersJs.hashStrings)([
67
+ internalPackagesHash,
68
+ buildCommandHash
69
+ ]);
61
70
  return combinedHash;
62
71
  }
72
+ constructor(packageRoot){
73
+ this.packageRoot = packageRoot;
74
+ }
63
75
  }
64
- exports.Hasher = Hasher;
65
- __exportStar(require("./repoInfo.js"), exports);
66
- //# sourceMappingURL=index.js.map
package/lib/repoInfo.js CHANGED
@@ -1,61 +1,60 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRepoInfo = exports.getRepoInfoNoCache = void 0;
4
- const workspace_tools_1 = require("workspace-tools");
5
- const getPackageDeps_js_1 = require("./getPackageDeps.js");
6
- const createPackageHashes_js_1 = require("./createPackageHashes.js");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getRepoInfoNoCache: ()=>getRepoInfoNoCache,
13
+ getRepoInfo: ()=>getRepoInfo
14
+ });
15
+ const _workspaceTools = require("workspace-tools");
16
+ const _getPackageDepsJs = require("./getPackageDeps.js");
17
+ const _createPackageHashesJs = require("./createPackageHashes.js");
7
18
  const repoInfoCache = [];
8
19
  /**
9
20
  * repoInfo cache lookup - it is specialized to be using a substring match to make it run as fast as possible
10
21
  * @param packageRoot
11
- */
12
- function searchRepoInfoCache(packageRoot) {
13
- for (const repoInfo of repoInfoCache) {
22
+ */ function searchRepoInfoCache(packageRoot) {
23
+ for (const repoInfo of repoInfoCache){
14
24
  if (repoInfo.workspaceInfo && packageRoot.startsWith(repoInfo.root)) {
15
25
  return repoInfo;
16
26
  }
17
27
  }
18
28
  }
19
29
  async function getRepoInfoNoCache(cwd) {
20
- const root = (0, workspace_tools_1.getWorkspaceRoot)(cwd);
30
+ const root = (0, _workspaceTools.getWorkspaceRoot)(cwd);
21
31
  if (!root) {
22
32
  throw new Error("Cannot initialize Repo class without a workspace root");
23
33
  }
24
34
  // Assuming the package-deps-hash package returns a map of files to hashes that are unordered
25
- const unorderedRepoHashes = Object.fromEntries((0, getPackageDeps_js_1.getPackageDeps)(root));
35
+ const unorderedRepoHashes = Object.fromEntries((0, _getPackageDepsJs.getPackageDeps)(root));
26
36
  // Sorting repoHash by key because we want to consistent hashing based on the order of the files
27
- const repoHashes = Object.keys(unorderedRepoHashes)
28
- .sort((a, b) => a.localeCompare(b))
29
- .reduce((obj, key) => {
37
+ const repoHashes = Object.keys(unorderedRepoHashes).sort((a, b)=>a.localeCompare(b)).reduce((obj, key)=>{
30
38
  obj[key] = unorderedRepoHashes[key];
31
39
  return obj;
32
40
  }, {});
33
- const workspaceInfo = (0, workspace_tools_1.getWorkspaces)(root);
34
- const parsedLock = await (0, workspace_tools_1.parseLockFile)(root);
35
- const packageHashes = (0, createPackageHashes_js_1.createPackageHashes)(root, workspaceInfo, repoHashes);
41
+ const workspaceInfo = (0, _workspaceTools.getWorkspaces)(root);
42
+ const parsedLock = await (0, _workspaceTools.parseLockFile)(root);
43
+ const packageHashes = (0, _createPackageHashesJs.createPackageHashes)(root, workspaceInfo, repoHashes);
36
44
  const repoInfo = {
37
45
  root,
38
46
  workspaceInfo,
39
47
  parsedLock,
40
48
  repoHashes,
41
- packageHashes,
49
+ packageHashes
42
50
  };
43
51
  repoInfoCache.push(repoInfo);
44
52
  return repoInfo;
45
53
  }
46
- exports.getRepoInfoNoCache = getRepoInfoNoCache;
47
54
  // A promise to guarantee the getRepoInfo is done one at a time
48
55
  let oneAtATime = Promise.resolve();
49
- /**
50
- * Retrieves the repoInfo, one at a time
51
- *
52
- * No parallel of this function is allowed; this maximizes the cache hit even
53
- * though the getWorkspaces and parseLockFile are async functions from workspace-tools
54
- *
55
- * @param cwd
56
- */
57
56
  async function getRepoInfo(cwd) {
58
- oneAtATime = oneAtATime.then(async () => {
57
+ oneAtATime = oneAtATime.then(async ()=>{
59
58
  const searchResult = searchRepoInfoCache(cwd);
60
59
  if (searchResult) {
61
60
  return searchResult;
@@ -64,5 +63,3 @@ async function getRepoInfo(cwd) {
64
63
  });
65
64
  return oneAtATime;
66
65
  }
67
- exports.getRepoInfo = getRepoInfo;
68
- //# sourceMappingURL=repoInfo.js.map
@@ -1,59 +1,69 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveExternalDependencies = exports.addToQueue = exports.filterExternalDependencies = void 0;
4
- const workspace_tools_1 = require("workspace-tools");
5
- const helpers_js_1 = require("./helpers.js");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ filterExternalDependencies: ()=>filterExternalDependencies,
13
+ addToQueue: ()=>addToQueue,
14
+ resolveExternalDependencies: ()=>resolveExternalDependencies
15
+ });
16
+ const _workspaceTools = require("workspace-tools");
17
+ const _helpersJs = require("./helpers.js");
6
18
  function filterExternalDependencies(dependencies, workspaces) {
7
- const workspacePackageNames = (0, workspace_tools_1.listOfWorkspacePackageNames)(workspaces);
19
+ const workspacePackageNames = (0, _workspaceTools.listOfWorkspacePackageNames)(workspaces);
8
20
  const externalDependencies = {};
9
- Object.entries(dependencies).forEach(([name, versionRange]) => {
21
+ Object.entries(dependencies).forEach(([name, versionRange])=>{
10
22
  if (workspacePackageNames.indexOf(name) < 0) {
11
23
  externalDependencies[name] = versionRange;
12
24
  }
13
25
  });
14
26
  return externalDependencies;
15
27
  }
16
- exports.filterExternalDependencies = filterExternalDependencies;
17
28
  function isDone(done, key) {
18
29
  return done.indexOf(key) >= 0;
19
30
  }
20
31
  function isInQueue(queue, key) {
21
- return Boolean(queue.find(([name, versionRange]) => (0, helpers_js_1.nameAtVersion)(name, versionRange) === key));
32
+ return Boolean(queue.find(([name, versionRange])=>(0, _helpersJs.nameAtVersion)(name, versionRange) === key));
22
33
  }
23
34
  function addToQueue(dependencies, done, queue) {
24
35
  if (dependencies) {
25
- Object.entries(dependencies).forEach(([name, versionRange]) => {
26
- const versionRangeSignature = (0, helpers_js_1.nameAtVersion)(name, versionRange);
36
+ Object.entries(dependencies).forEach(([name, versionRange])=>{
37
+ const versionRangeSignature = (0, _helpersJs.nameAtVersion)(name, versionRange);
27
38
  if (!isDone(done, versionRangeSignature) && !isInQueue(queue, versionRangeSignature)) {
28
- queue.push([name, versionRange]);
39
+ queue.push([
40
+ name,
41
+ versionRange
42
+ ]);
29
43
  }
30
44
  });
31
45
  }
32
46
  }
33
- exports.addToQueue = addToQueue;
34
47
  function resolveExternalDependencies(allDependencies, workspaces, lockInfo) {
35
48
  const externalDependencies = filterExternalDependencies(allDependencies, workspaces);
36
49
  const done = [];
37
50
  const doneRange = [];
38
51
  const queue = Object.entries(externalDependencies);
39
- while (queue.length > 0) {
52
+ while(queue.length > 0){
40
53
  const next = queue.shift();
41
54
  if (!next) {
42
55
  continue;
43
56
  }
44
57
  const [name, versionRange] = next;
45
- doneRange.push((0, helpers_js_1.nameAtVersion)(name, versionRange));
46
- const lockFileResult = (0, workspace_tools_1.queryLockFile)(name, versionRange, lockInfo);
58
+ doneRange.push((0, _helpersJs.nameAtVersion)(name, versionRange));
59
+ const lockFileResult = (0, _workspaceTools.queryLockFile)(name, versionRange, lockInfo);
47
60
  if (lockFileResult) {
48
- const { version, dependencies } = lockFileResult;
61
+ const { version , dependencies } = lockFileResult;
49
62
  addToQueue(dependencies, doneRange, queue);
50
- done.push((0, helpers_js_1.nameAtVersion)(name, version));
51
- }
52
- else {
53
- done.push((0, helpers_js_1.nameAtVersion)(name, versionRange));
63
+ done.push((0, _helpersJs.nameAtVersion)(name, version));
64
+ } else {
65
+ done.push((0, _helpersJs.nameAtVersion)(name, versionRange));
54
66
  }
55
67
  }
56
68
  return done;
57
69
  }
58
- exports.resolveExternalDependencies = resolveExternalDependencies;
59
- //# sourceMappingURL=resolveExternalDependencies.js.map
@@ -1,15 +1,23 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveInternalDependencies = exports.filterInternalDependencies = void 0;
4
- const workspace_tools_1 = require("workspace-tools");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ filterInternalDependencies: ()=>filterInternalDependencies,
13
+ resolveInternalDependencies: ()=>resolveInternalDependencies
14
+ });
15
+ const _workspaceTools = require("workspace-tools");
5
16
  function filterInternalDependencies(dependencies, workspaces) {
6
- const workspacePackageNames = (0, workspace_tools_1.listOfWorkspacePackageNames)(workspaces);
7
- return Object.keys(dependencies).filter((dependency) => workspacePackageNames.indexOf(dependency) >= 0);
17
+ const workspacePackageNames = (0, _workspaceTools.listOfWorkspacePackageNames)(workspaces);
18
+ return Object.keys(dependencies).filter((dependency)=>workspacePackageNames.indexOf(dependency) >= 0);
8
19
  }
9
- exports.filterInternalDependencies = filterInternalDependencies;
10
20
  function resolveInternalDependencies(allDependencies, workspaces) {
11
21
  const dependencyNames = filterInternalDependencies(allDependencies, workspaces);
12
22
  return dependencyNames;
13
23
  }
14
- exports.resolveInternalDependencies = resolveInternalDependencies;
15
- //# sourceMappingURL=resolveInternalDependencies.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lage-run/hasher",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Hasher for Lage Targets",
5
5
  "repository": {
6
6
  "url": "https://github.com/microsoft/lage"
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "execa": "5.1.1",
19
- "workspace-tools": "0.29.0",
19
+ "workspace-tools": "0.29.1",
20
20
  "find-up": "^5.0.0"
21
21
  },
22
22
  "devDependencies": {
@@ -1,5 +0,0 @@
1
- "use strict";
2
- module.exports = {
3
- internalCacheFolder: "foo",
4
- };
5
- //# sourceMappingURL=backfill.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backfill.config.js","sourceRoot":"","sources":["../../../src/__fixtures__/config/backfill.config.js"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,mBAAmB,EAAE,KAAK;CAC3B,CAAC"}