workspace-tools 0.41.1 → 0.41.3

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 (59) hide show
  1. package/lib/dependencies/index.js +7 -0
  2. package/lib/dependencies/index.js.map +1 -1
  3. package/lib/dependencies/transitiveDeps.js +5 -0
  4. package/lib/dependencies/transitiveDeps.js.map +1 -1
  5. package/lib/getPackageInfo.js +4 -0
  6. package/lib/getPackageInfo.js.map +1 -1
  7. package/lib/getPackageInfos.js +4 -0
  8. package/lib/getPackageInfos.js.map +1 -1
  9. package/lib/git/getDefaultRemote.js +1 -1
  10. package/lib/git/getDefaultRemote.js.map +1 -1
  11. package/lib/git/getRepositoryName.js +1 -1
  12. package/lib/git/getRepositoryName.js.map +1 -1
  13. package/lib/git/git.js +8 -0
  14. package/lib/git/git.js.map +1 -1
  15. package/lib/git/gitUtilities.js +27 -0
  16. package/lib/git/gitUtilities.js.map +1 -1
  17. package/lib/git/index.js +10 -0
  18. package/lib/git/index.js.map +1 -1
  19. package/lib/graph/index.js +1 -0
  20. package/lib/graph/index.js.map +1 -1
  21. package/lib/index.js +39 -0
  22. package/lib/index.js.map +1 -1
  23. package/lib/isCachingEnabled.js +4 -0
  24. package/lib/isCachingEnabled.js.map +1 -1
  25. package/lib/lockfile/parseLockFile.js +1 -1
  26. package/lib/lockfile/parseLockFile.js.map +1 -1
  27. package/lib/lockfile/readYaml.js +1 -1
  28. package/lib/lockfile/readYaml.js.map +1 -1
  29. package/lib/paths.js +9 -2
  30. package/lib/paths.js.map +1 -1
  31. package/lib/workspaces/getAllPackageJsonFiles.js +5 -0
  32. package/lib/workspaces/getAllPackageJsonFiles.js.map +1 -1
  33. package/lib/workspaces/getCatalogVersion.js +4 -0
  34. package/lib/workspaces/getCatalogVersion.js.map +1 -1
  35. package/lib/workspaces/getCatalogs.js +2 -2
  36. package/lib/workspaces/getCatalogs.js.map +1 -1
  37. package/lib/workspaces/getChangedPackages.js +10 -6
  38. package/lib/workspaces/getChangedPackages.js.map +1 -1
  39. package/lib/workspaces/getWorkspaceInfos.js +4 -0
  40. package/lib/workspaces/getWorkspaceInfos.js.map +1 -1
  41. package/lib/workspaces/getWorkspaceManagerRoot.js +2 -2
  42. package/lib/workspaces/getWorkspaceManagerRoot.js.map +1 -1
  43. package/lib/workspaces/getWorkspacePackagePaths.js +6 -2
  44. package/lib/workspaces/getWorkspacePackagePaths.js.map +1 -1
  45. package/lib/workspaces/getWorkspacePatterns.js +2 -2
  46. package/lib/workspaces/getWorkspacePatterns.js.map +1 -1
  47. package/lib/workspaces/implementations/getWorkspaceManagerAndRoot.js +5 -0
  48. package/lib/workspaces/implementations/getWorkspaceManagerAndRoot.js.map +1 -1
  49. package/lib/workspaces/implementations/getWorkspaceUtilities.js +5 -5
  50. package/lib/workspaces/implementations/getWorkspaceUtilities.js.map +1 -1
  51. package/lib/workspaces/implementations/index.js +4 -0
  52. package/lib/workspaces/implementations/index.js.map +1 -1
  53. package/lib/workspaces/implementations/lerna.js +3 -3
  54. package/lib/workspaces/implementations/lerna.js.map +1 -1
  55. package/lib/workspaces/wrapWorkspaceUtility.d.ts +1 -1
  56. package/lib/workspaces/wrapWorkspaceUtility.js +7 -3
  57. package/lib/workspaces/wrapWorkspaceUtility.js.map +1 -1
  58. package/package.json +2 -2
  59. package/lib/tsdoc-metadata.json +0 -11
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n getTransitiveDependencies,\n getTransitiveDependents,\n getInternalDeps,\n getTransitiveConsumers,\n getTransitiveProviders,\n} from \"./dependencies/index.js\";\nexport { getPackageInfos, getPackageInfosAsync } from \"./getPackageInfos.js\";\nexport * from \"./git/index.js\";\nexport * from \"./graph/index.js\";\nexport { setCachingEnabled } from \"./isCachingEnabled.js\";\nexport { nameAtVersion } from \"./lockfile/nameAtVersion.js\";\nexport { parseLockFile } from \"./lockfile/parseLockFile.js\";\nexport { queryLockFile } from \"./lockfile/queryLockFile.js\";\nexport type {\n BerryLockFile,\n Dependencies,\n LockDependency,\n NpmLockFile,\n NpmSymlinkInfo,\n NpmWorkspacesInfo,\n ParsedLock,\n PnpmLockFile,\n} from \"./lockfile/types.js\";\nexport { findGitRoot, findPackageRoot, findProjectRoot, isChildOf, searchUp } from \"./paths.js\";\nexport { getScopedPackages } from \"./scope.js\";\nexport type { Catalog, Catalogs, NamedCatalogs } from \"./types/Catalogs.js\";\nexport type { PackageDependency, PackageGraph } from \"./types/PackageGraph.js\";\nexport type { PackageInfo, PackageInfos } from \"./types/PackageInfo.js\";\nexport type { WorkspacePackageInfo, WorkspaceInfos } from \"./types/WorkspaceInfo.js\";\nexport { findWorkspacePath } from \"./workspaces/findWorkspacePath.js\";\nexport { getWorkspaceInfos, getWorkspaceInfosAsync } from \"./workspaces/getWorkspaceInfos.js\";\nexport { getWorkspacePackagePaths, getWorkspacePackagePathsAsync } from \"./workspaces/getWorkspacePackagePaths.js\";\nexport { getWorkspacePatterns } from \"./workspaces/getWorkspacePatterns.js\";\nexport { getWorkspaceManagerAndRoot } from \"./workspaces/implementations/getWorkspaceManagerAndRoot.js\";\nexport { getWorkspaceManagerRoot } from \"./workspaces/getWorkspaceManagerRoot.js\";\nexport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\nexport { getPackageInfo, getPackageInfoAsync } from \"./getPackageInfo.js\";\nexport { getChangedPackages, getChangedPackagesBetweenRefs } from \"./workspaces/getChangedPackages.js\";\nexport { getPackagesByFiles } from \"./workspaces/getPackagesByFiles.js\";\nexport { getAllPackageJsonFiles, getAllPackageJsonFilesAsync } from \"./workspaces/getAllPackageJsonFiles.js\";\nexport { catalogsToYaml } from \"./workspaces/catalogsToYaml.js\";\nexport { getCatalogVersion, isCatalogVersion } from \"./workspaces/getCatalogVersion.js\";\nexport { getCatalogs } from \"./workspaces/getCatalogs.js\";\n"],"names":["catalogsToYaml","findGitRoot","findPackageRoot","findProjectRoot","findWorkspacePath","getAllPackageJsonFiles","getAllPackageJsonFilesAsync","getCatalogVersion","getCatalogs","getChangedPackages","getChangedPackagesBetweenRefs","getInternalDeps","getPackageInfo","getPackageInfoAsync","getPackageInfos","getPackageInfosAsync","getPackagesByFiles","getScopedPackages","getTransitiveConsumers","getTransitiveDependencies","getTransitiveDependents","getTransitiveProviders","getWorkspaceInfos","getWorkspaceInfosAsync","getWorkspaceManagerAndRoot","getWorkspaceManagerRoot","getWorkspacePackagePaths","getWorkspacePackagePathsAsync","getWorkspacePatterns","isCatalogVersion","isChildOf","nameAtVersion","parseLockFile","queryLockFile","searchUp","setCachingEnabled"],"mappings":";;;;;;;;;;;QAyCSA;eAAAA,8BAAc;;QAjBdC;eAAAA,kBAAW;;QAAEC;eAAAA,sBAAe;;QAAEC;eAAAA,sBAAe;;QAM7CC;eAAAA,oCAAiB;;QAUjBC;eAAAA,8CAAsB;;QAAEC;eAAAA,mDAA2B;;QAEnDC;eAAAA,oCAAiB;;QACjBC;eAAAA,wBAAW;;QALXC;eAAAA,sCAAkB;;QAAEC;eAAAA,iDAA6B;;QAnCxDC;eAAAA,sBAAe;;QAkCRC;eAAAA,8BAAc;;QAAEC;eAAAA,mCAAmB;;QA9BnCC;eAAAA,gCAAe;;QAAEC;eAAAA,qCAAoB;;QAgCrCC;eAAAA,sCAAkB;;QAdlBC;eAAAA,wBAAiB;;QArBxBC;eAAAA,6BAAsB;;QAHtBC;eAAAA,gCAAyB;;QACzBC;eAAAA,8BAAuB;;QAGvBC;eAAAA,6BAAsB;;QA0BfC;eAAAA,oCAAiB;;QAAEC;eAAAA,yCAAsB;;QAGzCC;eAAAA,sDAA0B;;QAC1BC;eAAAA,gDAAuB;;QAHvBC;eAAAA,kDAAwB;;QAAEC;eAAAA,uDAA6B;;QACvDC;eAAAA,0CAAoB;;QASDC;eAAAA,mCAAgB;;QAlBYC;eAAAA,gBAAS;;QAbxDC;eAAAA,4BAAa;;QACbC;eAAAA,4BAAa;;QACbC;eAAAA,4BAAa;;QAW6CC;eAAAA,eAAQ;;QAdlEC;eAAAA,mCAAiB;;;uBAJnB;iCAC+C;qBACxC;qBACA;kCACoB;+BACJ;+BACA;+BACA;uBAWqD;uBACjD;mCAKA;mCACwB;0CACc;sCACnC;4CACM;yCACH;gCAEY;oCACc;oCAC/B;wCACiC;gCACrC;mCACqB;6BACxB"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n getTransitiveDependencies,\n getTransitiveDependents,\n getInternalDeps,\n getTransitiveConsumers,\n getTransitiveProviders,\n} from \"./dependencies/index.js\";\nexport { getPackageInfos, getPackageInfosAsync } from \"./getPackageInfos.js\";\nexport * from \"./git/index.js\";\nexport * from \"./graph/index.js\";\nexport { setCachingEnabled } from \"./isCachingEnabled.js\";\nexport { nameAtVersion } from \"./lockfile/nameAtVersion.js\";\nexport { parseLockFile } from \"./lockfile/parseLockFile.js\";\nexport { queryLockFile } from \"./lockfile/queryLockFile.js\";\nexport type {\n BerryLockFile,\n Dependencies,\n LockDependency,\n NpmLockFile,\n NpmSymlinkInfo,\n NpmWorkspacesInfo,\n ParsedLock,\n PnpmLockFile,\n} from \"./lockfile/types.js\";\nexport { findGitRoot, findPackageRoot, findProjectRoot, isChildOf, searchUp } from \"./paths.js\";\nexport { getScopedPackages } from \"./scope.js\";\nexport type { Catalog, Catalogs, NamedCatalogs } from \"./types/Catalogs.js\";\nexport type { PackageDependency, PackageGraph } from \"./types/PackageGraph.js\";\nexport type { PackageInfo, PackageInfos } from \"./types/PackageInfo.js\";\nexport type { WorkspacePackageInfo, WorkspaceInfos } from \"./types/WorkspaceInfo.js\";\nexport { findWorkspacePath } from \"./workspaces/findWorkspacePath.js\";\nexport { getWorkspaceInfos, getWorkspaceInfosAsync } from \"./workspaces/getWorkspaceInfos.js\";\nexport { getWorkspacePackagePaths, getWorkspacePackagePathsAsync } from \"./workspaces/getWorkspacePackagePaths.js\";\nexport { getWorkspacePatterns } from \"./workspaces/getWorkspacePatterns.js\";\nexport { getWorkspaceManagerAndRoot } from \"./workspaces/implementations/getWorkspaceManagerAndRoot.js\";\nexport { getWorkspaceManagerRoot } from \"./workspaces/getWorkspaceManagerRoot.js\";\nexport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\nexport { getPackageInfo, getPackageInfoAsync } from \"./getPackageInfo.js\";\nexport { getChangedPackages, getChangedPackagesBetweenRefs } from \"./workspaces/getChangedPackages.js\";\nexport { getPackagesByFiles } from \"./workspaces/getPackagesByFiles.js\";\nexport { getAllPackageJsonFiles, getAllPackageJsonFilesAsync } from \"./workspaces/getAllPackageJsonFiles.js\";\nexport { catalogsToYaml } from \"./workspaces/catalogsToYaml.js\";\nexport { getCatalogVersion, isCatalogVersion } from \"./workspaces/getCatalogVersion.js\";\nexport { getCatalogs } from \"./workspaces/getCatalogs.js\";\n"],"names":["catalogsToYaml","findGitRoot","findPackageRoot","findProjectRoot","findWorkspacePath","getAllPackageJsonFiles","getAllPackageJsonFilesAsync","getCatalogVersion","getCatalogs","getChangedPackages","getChangedPackagesBetweenRefs","getInternalDeps","getPackageInfo","getPackageInfoAsync","getPackageInfos","getPackageInfosAsync","getPackagesByFiles","getScopedPackages","getTransitiveConsumers","getTransitiveDependencies","getTransitiveDependents","getTransitiveProviders","getWorkspaceInfos","getWorkspaceInfosAsync","getWorkspaceManagerAndRoot","getWorkspaceManagerRoot","getWorkspacePackagePaths","getWorkspacePackagePathsAsync","getWorkspacePatterns","isCatalogVersion","isChildOf","nameAtVersion","parseLockFile","queryLockFile","searchUp","setCachingEnabled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyCSA;eAAAA,8BAAc;;QAjBdC;eAAAA,kBAAW;;QAAEC;eAAAA,sBAAe;;QAAEC;eAAAA,sBAAe;;QAM7CC;eAAAA,oCAAiB;;QAUjBC;eAAAA,8CAAsB;;QAAEC;eAAAA,mDAA2B;;QAEnDC;eAAAA,oCAAiB;;QACjBC;eAAAA,wBAAW;;QALXC;eAAAA,sCAAkB;;QAAEC;eAAAA,iDAA6B;;QAnCxDC;eAAAA,sBAAe;;QAkCRC;eAAAA,8BAAc;;QAAEC;eAAAA,mCAAmB;;QA9BnCC;eAAAA,gCAAe;;QAAEC;eAAAA,qCAAoB;;QAgCrCC;eAAAA,sCAAkB;;QAdlBC;eAAAA,wBAAiB;;QArBxBC;eAAAA,6BAAsB;;QAHtBC;eAAAA,gCAAyB;;QACzBC;eAAAA,8BAAuB;;QAGvBC;eAAAA,6BAAsB;;QA0BfC;eAAAA,oCAAiB;;QAAEC;eAAAA,yCAAsB;;QAGzCC;eAAAA,sDAA0B;;QAC1BC;eAAAA,gDAAuB;;QAHvBC;eAAAA,kDAAwB;;QAAEC;eAAAA,uDAA6B;;QACvDC;eAAAA,0CAAoB;;QASDC;eAAAA,mCAAgB;;QAlBYC;eAAAA,gBAAS;;QAbxDC;eAAAA,4BAAa;;QACbC;eAAAA,4BAAa;;QACbC;eAAAA,4BAAa;;QAW6CC;eAAAA,eAAQ;;QAdlEC;eAAAA,mCAAiB;;;;uBAJnB;iCAC+C;qBACxC;qBACA;kCACoB;+BACJ;+BACA;+BACA;uBAWqD;uBACjD;mCAKA;mCACwB;0CACc;sCACnC;4CACM;yCACH;gCAEY;oCACc;oCAC/B;wCACiC;gCACrC;mCACqB;6BACxB"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ isCachingEnabled: null,
7
+ setCachingEnabled: null
8
+ });
5
9
  function _export(target, all) {
6
10
  for(var name in all)Object.defineProperty(target, name, {
7
11
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/isCachingEnabled.ts"],"sourcesContent":["let cachingEnabled = true;\n\n/** Enable or disable caching for all utilities that support caching */\nexport function setCachingEnabled(enabled: boolean): void {\n cachingEnabled = enabled;\n}\n\nexport function isCachingEnabled(): boolean {\n return cachingEnabled;\n}\n"],"names":["isCachingEnabled","setCachingEnabled","cachingEnabled","enabled"],"mappings":";;;;;;;;;;;QAOgBA;eAAAA;;QAJAC;eAAAA;;;AAHhB,IAAIC,iBAAiB;AAGd,SAASD,kBAAkBE,OAAgB;IAChDD,iBAAiBC;AACnB;AAEO,SAASH;IACd,OAAOE;AACT"}
1
+ {"version":3,"sources":["../src/isCachingEnabled.ts"],"sourcesContent":["let cachingEnabled = true;\n\n/** Enable or disable caching for all utilities that support caching */\nexport function setCachingEnabled(enabled: boolean): void {\n cachingEnabled = enabled;\n}\n\nexport function isCachingEnabled(): boolean {\n return cachingEnabled;\n}\n"],"names":["isCachingEnabled","setCachingEnabled","cachingEnabled","enabled"],"mappings":";;;;;;;;;;;;;;;QAOgBA;eAAAA;;QAJAC;eAAAA;;;AAHhB,IAAIC,iBAAiB;AAGd,SAASD,kBAAkBE,OAAgB;IAChDD,iBAAiBC;AACnB;AAEO,SAASH;IACd,OAAOE;AACT"}
@@ -43,7 +43,7 @@ async function parseLockFile(packageRoot) {
43
43
  parsed = (0, _parseBerryLock.parseBerryLock)(yaml);
44
44
  } else {
45
45
  // TODO: this should be an async import in the future (currently causes issues with jest setup)
46
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
46
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
47
47
  const parseYarnLock = require("@yarnpkg/lockfile").parse;
48
48
  parsed = parseYarnLock(yarnLock);
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lockfile/parseLockFile.ts"],"sourcesContent":["// NOTE: never place the import of lockfile implementation here, as it slows down the library as a whole\nimport fs from \"fs\";\nimport path from \"path\";\nimport { type ParsedLock, type PnpmLockFile, type NpmLockFile, type BerryLockFile } from \"./types.js\";\nimport { searchUp } from \"../paths.js\";\nimport { parsePnpmLock } from \"./parsePnpmLock.js\";\nimport { parseNpmLock } from \"./parseNpmLock.js\";\nimport { readYaml } from \"./readYaml.js\";\nimport { parseBerryLock } from \"./parseBerryLock.js\";\n\nconst memoization: { [path: string]: ParsedLock } = {};\n\n// eslint-disable-next-line @typescript-eslint/require-await -- was async due to async imports, and will be again in future\nexport async function parseLockFile(packageRoot: string): Promise<ParsedLock> {\n const yarnLockPath = searchUp([\"yarn.lock\", \"common/config/rush/yarn.lock\"], packageRoot);\n\n // First, test out whether this works for yarn\n if (yarnLockPath) {\n if (memoization[yarnLockPath]) {\n return memoization[yarnLockPath];\n }\n\n const yarnLock = fs.readFileSync(yarnLockPath, \"utf-8\");\n\n const isBerry =\n yarnLock.includes(\"__metadata\") || fs.existsSync(path.resolve(yarnLock.replace(\"yarn.lock\", \".yarnrc.yml\")));\n\n let parsed: {\n type: \"success\" | \"merge\" | \"conflict\";\n object: any;\n } = {\n type: \"success\",\n object: {},\n };\n\n if (isBerry) {\n const yaml = readYaml<BerryLockFile>(yarnLockPath);\n parsed = parseBerryLock(yaml);\n } else {\n // TODO: this should be an async import in the future (currently causes issues with jest setup)\n // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n const parseYarnLock = require(\"@yarnpkg/lockfile\").parse;\n parsed = parseYarnLock(yarnLock);\n }\n\n memoization[yarnLockPath] = parsed;\n\n return parsed;\n }\n\n // Second, test out whether this works for pnpm\n const pnpmLockPath = searchUp([\"pnpm-lock.yaml\", \"common/config/rush/pnpm-lock.yaml\"], packageRoot);\n\n if (pnpmLockPath) {\n if (memoization[pnpmLockPath]) {\n return memoization[pnpmLockPath];\n }\n\n const yaml = readYaml<PnpmLockFile>(pnpmLockPath);\n const parsed = parsePnpmLock(yaml);\n memoization[pnpmLockPath] = parsed;\n\n return memoization[pnpmLockPath];\n }\n\n // Third, try for npm workspaces\n const npmLockPath = searchUp(\"package-lock.json\", packageRoot);\n\n if (npmLockPath) {\n if (memoization[npmLockPath]) {\n return memoization[npmLockPath];\n }\n\n let npmLockJson;\n try {\n npmLockJson = fs.readFileSync(npmLockPath, \"utf-8\");\n } catch {\n throw new Error(\"Couldn't read package-lock.json\");\n }\n\n const npmLock: NpmLockFile = JSON.parse(npmLockJson.toString());\n\n if (!npmLock?.lockfileVersion || npmLock.lockfileVersion < 2) {\n throw new Error(\n `Your package-lock.json version is not supported: lockfileVersion is ${npmLock.lockfileVersion}. You need npm version 7 or above and package-lock version 2 or above. Please, upgrade npm or choose a different package manager.`\n );\n }\n\n memoization[npmLockPath] = parseNpmLock(npmLock);\n return memoization[npmLockPath];\n }\n\n throw new Error(\n \"You do not have yarn.lock, pnpm-lock.yaml or package-lock.json. Please use one of these package managers.\"\n );\n}\n"],"names":["parseLockFile","memoization","packageRoot","yarnLockPath","searchUp","yarnLock","fs","readFileSync","isBerry","includes","existsSync","path","resolve","replace","parsed","type","object","yaml","readYaml","parseBerryLock","parseYarnLock","require","parse","pnpmLockPath","parsePnpmLock","npmLockPath","npmLockJson","Error","npmLock","JSON","toString","lockfileVersion","parseNpmLock"],"mappings":"AAAA,wGAAwG;;;;;+BAalFA;;;eAAAA;;;2DAZP;6DACE;uBAEQ;+BACK;8BACD;0BACJ;gCACM;;;;;;AAE/B,MAAMC,cAA8C,CAAC;AAG9C,eAAeD,cAAcE,WAAmB;IACrD,MAAMC,eAAeC,IAAAA,eAAQ,EAAC;QAAC;QAAa;KAA+B,EAAEF;IAE7E,8CAA8C;IAC9C,IAAIC,cAAc;QAChB,IAAIF,WAAW,CAACE,aAAa,EAAE;YAC7B,OAAOF,WAAW,CAACE,aAAa;QAClC;QAEA,MAAME,WAAWC,WAAE,CAACC,YAAY,CAACJ,cAAc;QAE/C,MAAMK,UACJH,SAASI,QAAQ,CAAC,iBAAiBH,WAAE,CAACI,UAAU,CAACC,aAAI,CAACC,OAAO,CAACP,SAASQ,OAAO,CAAC,aAAa;QAE9F,IAAIC,SAGA;YACFC,MAAM;YACNC,QAAQ,CAAC;QACX;QAEA,IAAIR,SAAS;YACX,MAAMS,OAAOC,IAAAA,kBAAQ,EAAgBf;YACrCW,SAASK,IAAAA,8BAAc,EAACF;QAC1B,OAAO;YACL,+FAA+F;YAC/F,qGAAqG;YACrG,MAAMG,gBAAgBC,QAAQ,qBAAqBC,KAAK;YACxDR,SAASM,cAAcf;QACzB;QAEAJ,WAAW,CAACE,aAAa,GAAGW;QAE5B,OAAOA;IACT;IAEA,+CAA+C;IAC/C,MAAMS,eAAenB,IAAAA,eAAQ,EAAC;QAAC;QAAkB;KAAoC,EAAEF;IAEvF,IAAIqB,cAAc;QAChB,IAAItB,WAAW,CAACsB,aAAa,EAAE;YAC7B,OAAOtB,WAAW,CAACsB,aAAa;QAClC;QAEA,MAAMN,OAAOC,IAAAA,kBAAQ,EAAeK;QACpC,MAAMT,SAASU,IAAAA,4BAAa,EAACP;QAC7BhB,WAAW,CAACsB,aAAa,GAAGT;QAE5B,OAAOb,WAAW,CAACsB,aAAa;IAClC;IAEA,gCAAgC;IAChC,MAAME,cAAcrB,IAAAA,eAAQ,EAAC,qBAAqBF;IAElD,IAAIuB,aAAa;QACf,IAAIxB,WAAW,CAACwB,YAAY,EAAE;YAC5B,OAAOxB,WAAW,CAACwB,YAAY;QACjC;QAEA,IAAIC;QACJ,IAAI;YACFA,cAAcpB,WAAE,CAACC,YAAY,CAACkB,aAAa;QAC7C,EAAE,OAAM;YACN,MAAM,IAAIE,MAAM;QAClB;QAEA,MAAMC,UAAuBC,KAAKP,KAAK,CAACI,YAAYI,QAAQ;QAE5D,IAAI,CAACF,SAASG,mBAAmBH,QAAQG,eAAe,GAAG,GAAG;YAC5D,MAAM,IAAIJ,MACR,CAAC,oEAAoE,EAAEC,QAAQG,eAAe,CAAC,iIAAiI,CAAC;QAErO;QAEA9B,WAAW,CAACwB,YAAY,GAAGO,IAAAA,0BAAY,EAACJ;QACxC,OAAO3B,WAAW,CAACwB,YAAY;IACjC;IAEA,MAAM,IAAIE,MACR;AAEJ"}
1
+ {"version":3,"sources":["../../src/lockfile/parseLockFile.ts"],"sourcesContent":["// NOTE: never place the import of lockfile implementation here, as it slows down the library as a whole\nimport fs from \"fs\";\nimport path from \"path\";\nimport { type ParsedLock, type PnpmLockFile, type NpmLockFile, type BerryLockFile } from \"./types.js\";\nimport { searchUp } from \"../paths.js\";\nimport { parsePnpmLock } from \"./parsePnpmLock.js\";\nimport { parseNpmLock } from \"./parseNpmLock.js\";\nimport { readYaml } from \"./readYaml.js\";\nimport { parseBerryLock } from \"./parseBerryLock.js\";\n\nconst memoization: { [path: string]: ParsedLock } = {};\n\n// eslint-disable-next-line @typescript-eslint/require-await -- was async due to async imports, and will be again in future\nexport async function parseLockFile(packageRoot: string): Promise<ParsedLock> {\n const yarnLockPath = searchUp([\"yarn.lock\", \"common/config/rush/yarn.lock\"], packageRoot);\n\n // First, test out whether this works for yarn\n if (yarnLockPath) {\n if (memoization[yarnLockPath]) {\n return memoization[yarnLockPath];\n }\n\n const yarnLock = fs.readFileSync(yarnLockPath, \"utf-8\");\n\n const isBerry =\n yarnLock.includes(\"__metadata\") || fs.existsSync(path.resolve(yarnLock.replace(\"yarn.lock\", \".yarnrc.yml\")));\n\n let parsed: {\n type: \"success\" | \"merge\" | \"conflict\";\n object: any;\n } = {\n type: \"success\",\n object: {},\n };\n\n if (isBerry) {\n const yaml = readYaml<BerryLockFile>(yarnLockPath);\n parsed = parseBerryLock(yaml);\n } else {\n // TODO: this should be an async import in the future (currently causes issues with jest setup)\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const parseYarnLock = require(\"@yarnpkg/lockfile\").parse;\n parsed = parseYarnLock(yarnLock);\n }\n\n memoization[yarnLockPath] = parsed;\n\n return parsed;\n }\n\n // Second, test out whether this works for pnpm\n const pnpmLockPath = searchUp([\"pnpm-lock.yaml\", \"common/config/rush/pnpm-lock.yaml\"], packageRoot);\n\n if (pnpmLockPath) {\n if (memoization[pnpmLockPath]) {\n return memoization[pnpmLockPath];\n }\n\n const yaml = readYaml<PnpmLockFile>(pnpmLockPath);\n const parsed = parsePnpmLock(yaml);\n memoization[pnpmLockPath] = parsed;\n\n return memoization[pnpmLockPath];\n }\n\n // Third, try for npm workspaces\n const npmLockPath = searchUp(\"package-lock.json\", packageRoot);\n\n if (npmLockPath) {\n if (memoization[npmLockPath]) {\n return memoization[npmLockPath];\n }\n\n let npmLockJson;\n try {\n npmLockJson = fs.readFileSync(npmLockPath, \"utf-8\");\n } catch {\n throw new Error(\"Couldn't read package-lock.json\");\n }\n\n const npmLock: NpmLockFile = JSON.parse(npmLockJson.toString());\n\n if (!npmLock?.lockfileVersion || npmLock.lockfileVersion < 2) {\n throw new Error(\n `Your package-lock.json version is not supported: lockfileVersion is ${npmLock.lockfileVersion}. You need npm version 7 or above and package-lock version 2 or above. Please, upgrade npm or choose a different package manager.`\n );\n }\n\n memoization[npmLockPath] = parseNpmLock(npmLock);\n return memoization[npmLockPath];\n }\n\n throw new Error(\n \"You do not have yarn.lock, pnpm-lock.yaml or package-lock.json. Please use one of these package managers.\"\n );\n}\n"],"names":["parseLockFile","memoization","packageRoot","yarnLockPath","searchUp","yarnLock","fs","readFileSync","isBerry","includes","existsSync","path","resolve","replace","parsed","type","object","yaml","readYaml","parseBerryLock","parseYarnLock","require","parse","pnpmLockPath","parsePnpmLock","npmLockPath","npmLockJson","Error","npmLock","JSON","toString","lockfileVersion","parseNpmLock"],"mappings":"AAAA,wGAAwG;;;;;+BAalFA;;;eAAAA;;;2DAZP;6DACE;uBAEQ;+BACK;8BACD;0BACJ;gCACM;;;;;;AAE/B,MAAMC,cAA8C,CAAC;AAG9C,eAAeD,cAAcE,WAAmB;IACrD,MAAMC,eAAeC,IAAAA,eAAQ,EAAC;QAAC;QAAa;KAA+B,EAAEF;IAE7E,8CAA8C;IAC9C,IAAIC,cAAc;QAChB,IAAIF,WAAW,CAACE,aAAa,EAAE;YAC7B,OAAOF,WAAW,CAACE,aAAa;QAClC;QAEA,MAAME,WAAWC,WAAE,CAACC,YAAY,CAACJ,cAAc;QAE/C,MAAMK,UACJH,SAASI,QAAQ,CAAC,iBAAiBH,WAAE,CAACI,UAAU,CAACC,aAAI,CAACC,OAAO,CAACP,SAASQ,OAAO,CAAC,aAAa;QAE9F,IAAIC,SAGA;YACFC,MAAM;YACNC,QAAQ,CAAC;QACX;QAEA,IAAIR,SAAS;YACX,MAAMS,OAAOC,IAAAA,kBAAQ,EAAgBf;YACrCW,SAASK,IAAAA,8BAAc,EAACF;QAC1B,OAAO;YACL,+FAA+F;YAC/F,iEAAiE;YACjE,MAAMG,gBAAgBC,QAAQ,qBAAqBC,KAAK;YACxDR,SAASM,cAAcf;QACzB;QAEAJ,WAAW,CAACE,aAAa,GAAGW;QAE5B,OAAOA;IACT;IAEA,+CAA+C;IAC/C,MAAMS,eAAenB,IAAAA,eAAQ,EAAC;QAAC;QAAkB;KAAoC,EAAEF;IAEvF,IAAIqB,cAAc;QAChB,IAAItB,WAAW,CAACsB,aAAa,EAAE;YAC7B,OAAOtB,WAAW,CAACsB,aAAa;QAClC;QAEA,MAAMN,OAAOC,IAAAA,kBAAQ,EAAeK;QACpC,MAAMT,SAASU,IAAAA,4BAAa,EAACP;QAC7BhB,WAAW,CAACsB,aAAa,GAAGT;QAE5B,OAAOb,WAAW,CAACsB,aAAa;IAClC;IAEA,gCAAgC;IAChC,MAAME,cAAcrB,IAAAA,eAAQ,EAAC,qBAAqBF;IAElD,IAAIuB,aAAa;QACf,IAAIxB,WAAW,CAACwB,YAAY,EAAE;YAC5B,OAAOxB,WAAW,CAACwB,YAAY;QACjC;QAEA,IAAIC;QACJ,IAAI;YACFA,cAAcpB,WAAE,CAACC,YAAY,CAACkB,aAAa;QAC7C,EAAE,OAAM;YACN,MAAM,IAAIE,MAAM;QAClB;QAEA,MAAMC,UAAuBC,KAAKP,KAAK,CAACI,YAAYI,QAAQ;QAE5D,IAAI,CAACF,SAASG,mBAAmBH,QAAQG,eAAe,GAAG,GAAG;YAC5D,MAAM,IAAIJ,MACR,CAAC,oEAAoE,EAAEC,QAAQG,eAAe,CAAC,iIAAiI,CAAC;QAErO;QAEA9B,WAAW,CAACwB,YAAY,GAAGO,IAAAA,0BAAY,EAACJ;QACxC,OAAO3B,WAAW,CAACwB,YAAY;IACjC;IAEA,MAAM,IAAIE,MACR;AAEJ"}
@@ -17,7 +17,7 @@ function _interop_require_default(obj) {
17
17
  function readYaml(file) {
18
18
  // This is delay loaded to avoid the perf penalty of parsing YAML utilities any time the package
19
19
  // is used (since usage of the YAML utilities is less common).
20
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
20
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
21
21
  const jsYaml = require("js-yaml");
22
22
  const content = _fs.default.readFileSync(file, "utf8");
23
23
  return jsYaml.load(content);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lockfile/readYaml.ts"],"sourcesContent":["import fs from \"fs\";\nimport type jsYamlType from \"js-yaml\";\n\nexport function readYaml<TReturn>(file: string): TReturn {\n // This is delay loaded to avoid the perf penalty of parsing YAML utilities any time the package\n // is used (since usage of the YAML utilities is less common).\n // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n const jsYaml: typeof jsYamlType = require(\"js-yaml\");\n\n const content = fs.readFileSync(file, \"utf8\");\n return jsYaml.load(content) as TReturn;\n}\n"],"names":["readYaml","file","jsYaml","require","content","fs","readFileSync","load"],"mappings":";;;;+BAGgBA;;;eAAAA;;;2DAHD;;;;;;AAGR,SAASA,SAAkBC,IAAY;IAC5C,gGAAgG;IAChG,8DAA8D;IAC9D,qGAAqG;IACrG,MAAMC,SAA4BC,QAAQ;IAE1C,MAAMC,UAAUC,WAAE,CAACC,YAAY,CAACL,MAAM;IACtC,OAAOC,OAAOK,IAAI,CAACH;AACrB"}
1
+ {"version":3,"sources":["../../src/lockfile/readYaml.ts"],"sourcesContent":["import fs from \"fs\";\nimport type jsYamlType from \"js-yaml\";\n\nexport function readYaml<TReturn>(file: string): TReturn {\n // This is delay loaded to avoid the perf penalty of parsing YAML utilities any time the package\n // is used (since usage of the YAML utilities is less common).\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const jsYaml: typeof jsYamlType = require(\"js-yaml\");\n\n const content = fs.readFileSync(file, \"utf8\");\n return jsYaml.load(content) as TReturn;\n}\n"],"names":["readYaml","file","jsYaml","require","content","fs","readFileSync","load"],"mappings":";;;;+BAGgBA;;;eAAAA;;;2DAHD;;;;;;AAGR,SAASA,SAAkBC,IAAY;IAC5C,gGAAgG;IAChG,8DAA8D;IAC9D,iEAAiE;IACjE,MAAMC,SAA4BC,QAAQ;IAE1C,MAAMC,UAAUC,WAAE,CAACC,YAAY,CAACL,MAAM;IACtC,OAAOC,OAAOK,IAAI,CAACH;AACrB"}
package/lib/paths.js CHANGED
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ findGitRoot: null,
7
+ findPackageRoot: null,
8
+ findProjectRoot: null,
9
+ isChildOf: null,
10
+ searchUp: null
11
+ });
5
12
  function _export(target, all) {
6
13
  for(var name in all)Object.defineProperty(target, name, {
7
14
  enumerable: true,
@@ -28,7 +35,7 @@ _export(exports, {
28
35
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
29
36
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
30
37
  const _getWorkspaceManagerRoot = require("./workspaces/getWorkspaceManagerRoot.js");
31
- const _git = require("./git");
38
+ const _index = require("./git/index.js");
32
39
  const _logging = require("./logging.js");
33
40
  function _interop_require_default(obj) {
34
41
  return obj && obj.__esModule ? obj : {
@@ -53,7 +60,7 @@ function searchUp(filePath, cwd) {
53
60
  return foundPath ? _path.default.join(cwd, foundPath) : undefined;
54
61
  }
55
62
  function findGitRoot(cwd) {
56
- const output = (0, _git.git)([
63
+ const output = (0, _index.git)([
57
64
  "rev-parse",
58
65
  "--show-toplevel"
59
66
  ], {
package/lib/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport { getWorkspaceManagerRoot } from \"./workspaces/getWorkspaceManagerRoot.js\";\nimport { git } from \"./git\";\nimport { logVerboseWarning } from \"./logging.js\";\nimport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `filePath`.\n * If multiple strings are given, searches each directory level for any of them.\n * @returns Full path to the item found, or undefined if not found.\n */\nexport function searchUp(filePath: string | string[], cwd: string): string | undefined {\n const paths = typeof filePath === \"string\" ? [filePath] : filePath;\n // convert to an absolute path if needed\n cwd = path.resolve(cwd);\n const root = path.parse(cwd).root;\n\n let foundPath: string | undefined;\n\n while (!foundPath && cwd !== root) {\n foundPath = paths.find((p) => fs.existsSync(path.join(cwd, p)));\n if (foundPath) {\n break;\n }\n\n cwd = path.dirname(cwd);\n }\n\n return foundPath ? path.join(cwd, foundPath) : undefined;\n}\n\n/**\n * Starting from `cwd`, uses `git rev-parse --show-toplevel` to find the root of the git repo.\n * Throws if `cwd` is not in a Git repository.\n */\nexport function findGitRoot(cwd: string): string {\n const output = git([\"rev-parse\", \"--show-toplevel\"], { cwd });\n if (!output.success) {\n throw new Error(`Directory \"${cwd}\" is not in a git repository`);\n }\n\n return path.normalize(output.stdout);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `package.json`.\n */\nexport function findPackageRoot(cwd: string): string | undefined {\n const jsonPath = searchUp(\"package.json\", cwd);\n return jsonPath && path.dirname(jsonPath);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for the project root (workspace/monorepo\n * manager root), falling back to the git root if no manager root is detected. Results are cached by\n * `cwd`, and an error is thrown if no project root is found and it's not a git repo.\n *\n * To skip the git root fallback, use `getWorkspaceManagerRoot`. Usually the monorepo manager root\n * is the same as the git root, but this may not be the case with multiple \"monorepos\" in a single\n * git repo, or in project structures with multiple languages where the JS is not at the root.\n *\n * @param manager Optional workspace/monorepo manager to look for specifically\n */\nexport function findProjectRoot(cwd: string, manager?: WorkspaceManager): string {\n let workspaceRoot: string | undefined;\n try {\n workspaceRoot = getWorkspaceManagerRoot(cwd, manager);\n if (!workspaceRoot) {\n logVerboseWarning(`Could not find workspace manager root for ${cwd}. Falling back to git root.`);\n }\n } catch (err) {\n logVerboseWarning(`Error getting workspace manager root for ${cwd} (will fall back to git root)`, err);\n }\n\n return workspaceRoot || findGitRoot(cwd);\n}\n\n/**\n * Determines if `child` path is a subdirectory of `parent` path.\n */\nexport function isChildOf(child: string, parent: string): boolean {\n const relativePath = path.relative(child, parent);\n return /^[./\\\\]+$/.test(relativePath);\n}\n"],"names":["findGitRoot","findPackageRoot","findProjectRoot","isChildOf","searchUp","filePath","cwd","paths","path","resolve","root","parse","foundPath","find","p","fs","existsSync","join","dirname","undefined","output","git","success","Error","normalize","stdout","jsonPath","manager","workspaceRoot","getWorkspaceManagerRoot","logVerboseWarning","err","child","parent","relativePath","relative","test"],"mappings":";;;;;;;;;;;QAoCgBA;eAAAA;;QAYAC;eAAAA;;QAgBAC;eAAAA;;QAiBAC;eAAAA;;QArEAC;eAAAA;;;6DAZC;2DACF;yCACyB;qBACpB;yBACc;;;;;;AAQ3B,SAASA,SAASC,QAA2B,EAAEC,GAAW;IAC/D,MAAMC,QAAQ,OAAOF,aAAa,WAAW;QAACA;KAAS,GAAGA;IAC1D,wCAAwC;IACxCC,MAAME,aAAI,CAACC,OAAO,CAACH;IACnB,MAAMI,OAAOF,aAAI,CAACG,KAAK,CAACL,KAAKI,IAAI;IAEjC,IAAIE;IAEJ,MAAO,CAACA,aAAaN,QAAQI,KAAM;QACjCE,YAAYL,MAAMM,IAAI,CAAC,CAACC,IAAMC,WAAE,CAACC,UAAU,CAACR,aAAI,CAACS,IAAI,CAACX,KAAKQ;QAC3D,IAAIF,WAAW;YACb;QACF;QAEAN,MAAME,aAAI,CAACU,OAAO,CAACZ;IACrB;IAEA,OAAOM,YAAYJ,aAAI,CAACS,IAAI,CAACX,KAAKM,aAAaO;AACjD;AAMO,SAASnB,YAAYM,GAAW;IACrC,MAAMc,SAASC,IAAAA,QAAG,EAAC;QAAC;QAAa;KAAkB,EAAE;QAAEf;IAAI;IAC3D,IAAI,CAACc,OAAOE,OAAO,EAAE;QACnB,MAAM,IAAIC,MAAM,CAAC,WAAW,EAAEjB,IAAI,4BAA4B,CAAC;IACjE;IAEA,OAAOE,aAAI,CAACgB,SAAS,CAACJ,OAAOK,MAAM;AACrC;AAKO,SAASxB,gBAAgBK,GAAW;IACzC,MAAMoB,WAAWtB,SAAS,gBAAgBE;IAC1C,OAAOoB,YAAYlB,aAAI,CAACU,OAAO,CAACQ;AAClC;AAaO,SAASxB,gBAAgBI,GAAW,EAAEqB,OAA0B;IACrE,IAAIC;IACJ,IAAI;QACFA,gBAAgBC,IAAAA,gDAAuB,EAACvB,KAAKqB;QAC7C,IAAI,CAACC,eAAe;YAClBE,IAAAA,0BAAiB,EAAC,CAAC,0CAA0C,EAAExB,IAAI,2BAA2B,CAAC;QACjG;IACF,EAAE,OAAOyB,KAAK;QACZD,IAAAA,0BAAiB,EAAC,CAAC,yCAAyC,EAAExB,IAAI,6BAA6B,CAAC,EAAEyB;IACpG;IAEA,OAAOH,iBAAiB5B,YAAYM;AACtC;AAKO,SAASH,UAAU6B,KAAa,EAAEC,MAAc;IACrD,MAAMC,eAAe1B,aAAI,CAAC2B,QAAQ,CAACH,OAAOC;IAC1C,OAAO,YAAYG,IAAI,CAACF;AAC1B"}
1
+ {"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport { getWorkspaceManagerRoot } from \"./workspaces/getWorkspaceManagerRoot.js\";\nimport { git } from \"./git/index.js\";\nimport { logVerboseWarning } from \"./logging.js\";\nimport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `filePath`.\n * If multiple strings are given, searches each directory level for any of them.\n * @returns Full path to the item found, or undefined if not found.\n */\nexport function searchUp(filePath: string | string[], cwd: string): string | undefined {\n const paths = typeof filePath === \"string\" ? [filePath] : filePath;\n // convert to an absolute path if needed\n cwd = path.resolve(cwd);\n const root = path.parse(cwd).root;\n\n let foundPath: string | undefined;\n\n while (!foundPath && cwd !== root) {\n foundPath = paths.find((p) => fs.existsSync(path.join(cwd, p)));\n if (foundPath) {\n break;\n }\n\n cwd = path.dirname(cwd);\n }\n\n return foundPath ? path.join(cwd, foundPath) : undefined;\n}\n\n/**\n * Starting from `cwd`, uses `git rev-parse --show-toplevel` to find the root of the git repo.\n * Throws if `cwd` is not in a Git repository.\n */\nexport function findGitRoot(cwd: string): string {\n const output = git([\"rev-parse\", \"--show-toplevel\"], { cwd });\n if (!output.success) {\n throw new Error(`Directory \"${cwd}\" is not in a git repository`);\n }\n\n return path.normalize(output.stdout);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `package.json`.\n */\nexport function findPackageRoot(cwd: string): string | undefined {\n const jsonPath = searchUp(\"package.json\", cwd);\n return jsonPath && path.dirname(jsonPath);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for the project root (workspace/monorepo\n * manager root), falling back to the git root if no manager root is detected. Results are cached by\n * `cwd`, and an error is thrown if no project root is found and it's not a git repo.\n *\n * To skip the git root fallback, use `getWorkspaceManagerRoot`. Usually the monorepo manager root\n * is the same as the git root, but this may not be the case with multiple \"monorepos\" in a single\n * git repo, or in project structures with multiple languages where the JS is not at the root.\n *\n * @param manager Optional workspace/monorepo manager to look for specifically\n */\nexport function findProjectRoot(cwd: string, manager?: WorkspaceManager): string {\n let workspaceRoot: string | undefined;\n try {\n workspaceRoot = getWorkspaceManagerRoot(cwd, manager);\n if (!workspaceRoot) {\n logVerboseWarning(`Could not find workspace manager root for ${cwd}. Falling back to git root.`);\n }\n } catch (err) {\n logVerboseWarning(`Error getting workspace manager root for ${cwd} (will fall back to git root)`, err);\n }\n\n return workspaceRoot || findGitRoot(cwd);\n}\n\n/**\n * Determines if `child` path is a subdirectory of `parent` path.\n */\nexport function isChildOf(child: string, parent: string): boolean {\n const relativePath = path.relative(child, parent);\n return /^[./\\\\]+$/.test(relativePath);\n}\n"],"names":["findGitRoot","findPackageRoot","findProjectRoot","isChildOf","searchUp","filePath","cwd","paths","path","resolve","root","parse","foundPath","find","p","fs","existsSync","join","dirname","undefined","output","git","success","Error","normalize","stdout","jsonPath","manager","workspaceRoot","getWorkspaceManagerRoot","logVerboseWarning","err","child","parent","relativePath","relative","test"],"mappings":";;;;;;;;;;;;;;;;;;QAoCgBA;eAAAA;;QAYAC;eAAAA;;QAgBAC;eAAAA;;QAiBAC;eAAAA;;QArEAC;eAAAA;;;6DAZC;2DACF;yCACyB;uBACpB;yBACc;;;;;;AAQ3B,SAASA,SAASC,QAA2B,EAAEC,GAAW;IAC/D,MAAMC,QAAQ,OAAOF,aAAa,WAAW;QAACA;KAAS,GAAGA;IAC1D,wCAAwC;IACxCC,MAAME,aAAI,CAACC,OAAO,CAACH;IACnB,MAAMI,OAAOF,aAAI,CAACG,KAAK,CAACL,KAAKI,IAAI;IAEjC,IAAIE;IAEJ,MAAO,CAACA,aAAaN,QAAQI,KAAM;QACjCE,YAAYL,MAAMM,IAAI,CAAC,CAACC,IAAMC,WAAE,CAACC,UAAU,CAACR,aAAI,CAACS,IAAI,CAACX,KAAKQ;QAC3D,IAAIF,WAAW;YACb;QACF;QAEAN,MAAME,aAAI,CAACU,OAAO,CAACZ;IACrB;IAEA,OAAOM,YAAYJ,aAAI,CAACS,IAAI,CAACX,KAAKM,aAAaO;AACjD;AAMO,SAASnB,YAAYM,GAAW;IACrC,MAAMc,SAASC,IAAAA,UAAG,EAAC;QAAC;QAAa;KAAkB,EAAE;QAAEf;IAAI;IAC3D,IAAI,CAACc,OAAOE,OAAO,EAAE;QACnB,MAAM,IAAIC,MAAM,CAAC,WAAW,EAAEjB,IAAI,4BAA4B,CAAC;IACjE;IAEA,OAAOE,aAAI,CAACgB,SAAS,CAACJ,OAAOK,MAAM;AACrC;AAKO,SAASxB,gBAAgBK,GAAW;IACzC,MAAMoB,WAAWtB,SAAS,gBAAgBE;IAC1C,OAAOoB,YAAYlB,aAAI,CAACU,OAAO,CAACQ;AAClC;AAaO,SAASxB,gBAAgBI,GAAW,EAAEqB,OAA0B;IACrE,IAAIC;IACJ,IAAI;QACFA,gBAAgBC,IAAAA,gDAAuB,EAACvB,KAAKqB;QAC7C,IAAI,CAACC,eAAe;YAClBE,IAAAA,0BAAiB,EAAC,CAAC,0CAA0C,EAAExB,IAAI,2BAA2B,CAAC;QACjG;IACF,EAAE,OAAOyB,KAAK;QACZD,IAAAA,0BAAiB,EAAC,CAAC,yCAAyC,EAAExB,IAAI,6BAA6B,CAAC,EAAEyB;IACpG;IAEA,OAAOH,iBAAiB5B,YAAYM;AACtC;AAKO,SAASH,UAAU6B,KAAa,EAAEC,MAAc;IACrD,MAAMC,eAAe1B,aAAI,CAAC2B,QAAQ,CAACH,OAAOC;IAC1C,OAAO,YAAYG,IAAI,CAACF;AAC1B"}
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ _resetPackageJsonFilesCache: null,
7
+ getAllPackageJsonFiles: null,
8
+ getAllPackageJsonFilesAsync: null
9
+ });
5
10
  function _export(target, all) {
6
11
  for(var name in all)Object.defineProperty(target, name, {
7
12
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getAllPackageJsonFiles.ts"],"sourcesContent":["import path from \"path\";\nimport { getWorkspacePackagePaths, getWorkspacePackagePathsAsync } from \"./getWorkspacePackagePaths.js\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\n\nconst cache = new Map<string, string[] | undefined>();\n\n/**\n * Get paths to every package.json in the monorepo, given a cwd, with caching.\n *\n * @returns Array of package.json paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getAllPackageJsonFiles(cwd: string): string[] | undefined {\n if (isCachingEnabled() && cache.has(cwd)) {\n return cache.get(cwd)!;\n }\n\n const packageJsonFiles = getWorkspacePackagePaths(cwd)?.map((packagePath) => path.join(packagePath, \"package.json\"));\n\n cache.set(cwd, packageJsonFiles);\n\n return packageJsonFiles;\n}\n\nexport function _resetPackageJsonFilesCache(): void {\n cache.clear();\n}\n\n/**\n * Get paths to every package.json in the monorepo, given a cwd, with caching.\n *\n * @returns Array of package.json paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport async function getAllPackageJsonFilesAsync(cwd: string): Promise<string[] | undefined> {\n if (isCachingEnabled() && cache.has(cwd)) {\n return cache.get(cwd)!;\n }\n\n const packageJsonFiles = (await getWorkspacePackagePathsAsync(cwd))?.map((packagePath) =>\n path.join(packagePath, \"package.json\")\n );\n\n cache.set(cwd, packageJsonFiles);\n\n return packageJsonFiles;\n}\n"],"names":["_resetPackageJsonFilesCache","getAllPackageJsonFiles","getAllPackageJsonFilesAsync","cache","Map","cwd","isCachingEnabled","has","get","packageJsonFiles","getWorkspacePackagePaths","map","packagePath","path","join","set","clear","getWorkspacePackagePathsAsync"],"mappings":";;;;;;;;;;;QAwBgBA;eAAAA;;QAZAC;eAAAA;;QAsBMC;eAAAA;;;6DAlCL;0CACuD;kCACvC;;;;;;AAEjC,MAAMC,QAAQ,IAAIC;AAQX,SAASH,uBAAuBI,GAAW;IAChD,IAAIC,IAAAA,kCAAgB,OAAMH,MAAMI,GAAG,CAACF,MAAM;QACxC,OAAOF,MAAMK,GAAG,CAACH;IACnB;IAEA,MAAMI,mBAAmBC,IAAAA,kDAAwB,EAACL,MAAMM,IAAI,CAACC,cAAgBC,aAAI,CAACC,IAAI,CAACF,aAAa;IAEpGT,MAAMY,GAAG,CAACV,KAAKI;IAEf,OAAOA;AACT;AAEO,SAAST;IACdG,MAAMa,KAAK;AACb;AAQO,eAAed,4BAA4BG,GAAW;IAC3D,IAAIC,IAAAA,kCAAgB,OAAMH,MAAMI,GAAG,CAACF,MAAM;QACxC,OAAOF,MAAMK,GAAG,CAACH;IACnB;IAEA,MAAMI,mBAAoB,CAAA,MAAMQ,IAAAA,uDAA6B,EAACZ,IAAG,GAAIM,IAAI,CAACC,cACxEC,aAAI,CAACC,IAAI,CAACF,aAAa;IAGzBT,MAAMY,GAAG,CAACV,KAAKI;IAEf,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/getAllPackageJsonFiles.ts"],"sourcesContent":["import path from \"path\";\nimport { getWorkspacePackagePaths, getWorkspacePackagePathsAsync } from \"./getWorkspacePackagePaths.js\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\n\nconst cache = new Map<string, string[] | undefined>();\n\n/**\n * Get paths to every package.json in the monorepo, given a cwd, with caching.\n *\n * @returns Array of package.json paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getAllPackageJsonFiles(cwd: string): string[] | undefined {\n if (isCachingEnabled() && cache.has(cwd)) {\n return cache.get(cwd)!;\n }\n\n const packageJsonFiles = getWorkspacePackagePaths(cwd)?.map((packagePath) => path.join(packagePath, \"package.json\"));\n\n cache.set(cwd, packageJsonFiles);\n\n return packageJsonFiles;\n}\n\nexport function _resetPackageJsonFilesCache(): void {\n cache.clear();\n}\n\n/**\n * Get paths to every package.json in the monorepo, given a cwd, with caching.\n *\n * @returns Array of package.json paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport async function getAllPackageJsonFilesAsync(cwd: string): Promise<string[] | undefined> {\n if (isCachingEnabled() && cache.has(cwd)) {\n return cache.get(cwd)!;\n }\n\n const packageJsonFiles = (await getWorkspacePackagePathsAsync(cwd))?.map((packagePath) =>\n path.join(packagePath, \"package.json\")\n );\n\n cache.set(cwd, packageJsonFiles);\n\n return packageJsonFiles;\n}\n"],"names":["_resetPackageJsonFilesCache","getAllPackageJsonFiles","getAllPackageJsonFilesAsync","cache","Map","cwd","isCachingEnabled","has","get","packageJsonFiles","getWorkspacePackagePaths","map","packagePath","path","join","set","clear","getWorkspacePackagePathsAsync"],"mappings":";;;;;;;;;;;;;;;;QAwBgBA;eAAAA;;QAZAC;eAAAA;;QAsBMC;eAAAA;;;6DAlCL;0CACuD;kCACvC;;;;;;AAEjC,MAAMC,QAAQ,IAAIC;AAQX,SAASH,uBAAuBI,GAAW;IAChD,IAAIC,IAAAA,kCAAgB,OAAMH,MAAMI,GAAG,CAACF,MAAM;QACxC,OAAOF,MAAMK,GAAG,CAACH;IACnB;IAEA,MAAMI,mBAAmBC,IAAAA,kDAAwB,EAACL,MAAMM,IAAI,CAACC,cAAgBC,aAAI,CAACC,IAAI,CAACF,aAAa;IAEpGT,MAAMY,GAAG,CAACV,KAAKI;IAEf,OAAOA;AACT;AAEO,SAAST;IACdG,MAAMa,KAAK;AACb;AAQO,eAAed,4BAA4BG,GAAW;IAC3D,IAAIC,IAAAA,kCAAgB,OAAMH,MAAMI,GAAG,CAACF,MAAM;QACxC,OAAOF,MAAMK,GAAG,CAACH;IACnB;IAEA,MAAMI,mBAAoB,CAAA,MAAMQ,IAAAA,uDAA6B,EAACZ,IAAG,GAAIM,IAAI,CAACC,cACxEC,aAAI,CAACC,IAAI,CAACF,aAAa;IAGzBT,MAAMY,GAAG,CAACV,KAAKI;IAEf,OAAOA;AACT"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getCatalogVersion: null,
7
+ isCatalogVersion: null
8
+ });
5
9
  function _export(target, all) {
6
10
  for(var name in all)Object.defineProperty(target, name, {
7
11
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getCatalogVersion.ts"],"sourcesContent":["import type { Catalogs } from \"../types/Catalogs.js\";\n\nconst catalogPrefix = \"catalog:\";\n\n/**\n * Returns true if the version starts with `catalog:`.\n */\nexport function isCatalogVersion(version: string): boolean {\n return version.startsWith(catalogPrefix);\n}\n\n/**\n * Given a dependency package name and a version spec string, if the version starts with `catalog:`,\n * look up the actual version spec (not the final resolved version) from the given catalogs.\n *\n * Throws an error if there's anything invalid about the catalog spec (no catalogs defined,\n * no matching catalog, catalog doesn't contain `name`, recursive catalog version).\n *\n * Returns undefined if the version doesn't start with `catalog:`.\n * @see https://pnpm.io/catalogs\n * @see https://yarnpkg.com/features/catalogs\n *\n * @param name - Dependency package name\n * @param version - Dependency version spec, e.g. `catalog:my-catalog` or `catalog:`,\n * or some non-catalog spec like `^1.2.3`\n * @returns Actual version spec from the catalog, or undefined if not a catalog version\n */\nexport function getCatalogVersion(params: {\n name: string;\n version: string;\n catalogs: Catalogs | undefined;\n}): string | undefined {\n const { name, version, catalogs } = params;\n\n if (!isCatalogVersion(version)) {\n return undefined;\n }\n\n if (!catalogs) {\n throw new Error(`Dependency \"${name}\" uses a catalog version \"${version}\" but no catalogs are defined.`);\n }\n\n const catalogName = version.slice(catalogPrefix.length);\n const checkCatalog =\n // Explicit catalog:default refers to the default catalog in pnpm, or a catalog named \"default\"\n // in yarn... Check for the yarn case first or fall back to .default. (getCatalogs should have\n // removed the named \"default\" catalog from namedCatalogs in managers where they're the same,\n // and yarn install would have errored if a named catalog \"default\" was referenced but not defined.)\n catalogName === \"default\"\n ? catalogs.named?.default || catalogs.default\n : // Otherwise use either the given named catalog, or the default if no name was specified\n catalogName\n ? catalogs.named?.[catalogName]\n : catalogs.default;\n const catalogNameStr = catalogName ? `catalogs.${catalogName}` : \"the default catalog\";\n\n if (!checkCatalog) {\n throw new Error(`Dependency \"${name}\" uses a catalog version \"${version}\" but ${catalogNameStr} is not defined.`);\n }\n\n const actualSpec = checkCatalog[name];\n if (!actualSpec) {\n throw new Error(\n `Dependency \"${name}\" uses a catalog version \"${version}\", but ${catalogNameStr} doesn't define a version for \"${name}\".`\n );\n }\n\n if (isCatalogVersion(actualSpec)) {\n throw new Error(\n `Dependency \"${name}\" resolves to a recursive catalog version \"${actualSpec}\", which is not supported.`\n );\n }\n\n return actualSpec;\n}\n"],"names":["getCatalogVersion","isCatalogVersion","catalogPrefix","version","startsWith","params","name","catalogs","undefined","Error","catalogName","slice","length","checkCatalog","named","default","catalogNameStr","actualSpec"],"mappings":";;;;;;;;;;;QA2BgBA;eAAAA;;QApBAC;eAAAA;;;AALhB,MAAMC,gBAAgB;AAKf,SAASD,iBAAiBE,OAAe;IAC9C,OAAOA,QAAQC,UAAU,CAACF;AAC5B;AAkBO,SAASF,kBAAkBK,MAIjC;IACC,MAAM,EAAEC,IAAI,EAAEH,OAAO,EAAEI,QAAQ,EAAE,GAAGF;IAEpC,IAAI,CAACJ,iBAAiBE,UAAU;QAC9B,OAAOK;IACT;IAEA,IAAI,CAACD,UAAU;QACb,MAAM,IAAIE,MAAM,CAAC,YAAY,EAAEH,KAAK,0BAA0B,EAAEH,QAAQ,8BAA8B,CAAC;IACzG;IAEA,MAAMO,cAAcP,QAAQQ,KAAK,CAACT,cAAcU,MAAM;IACtD,MAAMC,eACJ,+FAA+F;IAC/F,8FAA8F;IAC9F,6FAA6F;IAC7F,oGAAoG;IACpGH,gBAAgB,YACZH,SAASO,KAAK,EAAEC,WAAWR,SAASQ,OAAO,GAE3CL,cACEH,SAASO,KAAK,EAAE,CAACJ,YAAY,GAC7BH,SAASQ,OAAO;IACxB,MAAMC,iBAAiBN,cAAc,CAAC,SAAS,EAAEA,aAAa,GAAG;IAEjE,IAAI,CAACG,cAAc;QACjB,MAAM,IAAIJ,MAAM,CAAC,YAAY,EAAEH,KAAK,0BAA0B,EAAEH,QAAQ,MAAM,EAAEa,eAAe,gBAAgB,CAAC;IAClH;IAEA,MAAMC,aAAaJ,YAAY,CAACP,KAAK;IACrC,IAAI,CAACW,YAAY;QACf,MAAM,IAAIR,MACR,CAAC,YAAY,EAAEH,KAAK,0BAA0B,EAAEH,QAAQ,OAAO,EAAEa,eAAe,+BAA+B,EAAEV,KAAK,EAAE,CAAC;IAE7H;IAEA,IAAIL,iBAAiBgB,aAAa;QAChC,MAAM,IAAIR,MACR,CAAC,YAAY,EAAEH,KAAK,2CAA2C,EAAEW,WAAW,0BAA0B,CAAC;IAE3G;IAEA,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/getCatalogVersion.ts"],"sourcesContent":["import type { Catalogs } from \"../types/Catalogs.js\";\n\nconst catalogPrefix = \"catalog:\";\n\n/**\n * Returns true if the version starts with `catalog:`.\n */\nexport function isCatalogVersion(version: string): boolean {\n return version.startsWith(catalogPrefix);\n}\n\n/**\n * Given a dependency package name and a version spec string, if the version starts with `catalog:`,\n * look up the actual version spec (not the final resolved version) from the given catalogs.\n *\n * Throws an error if there's anything invalid about the catalog spec (no catalogs defined,\n * no matching catalog, catalog doesn't contain `name`, recursive catalog version).\n *\n * Returns undefined if the version doesn't start with `catalog:`.\n * @see https://pnpm.io/catalogs\n * @see https://yarnpkg.com/features/catalogs\n *\n * @param name - Dependency package name\n * @param version - Dependency version spec, e.g. `catalog:my-catalog` or `catalog:`,\n * or some non-catalog spec like `^1.2.3`\n * @returns Actual version spec from the catalog, or undefined if not a catalog version\n */\nexport function getCatalogVersion(params: {\n name: string;\n version: string;\n catalogs: Catalogs | undefined;\n}): string | undefined {\n const { name, version, catalogs } = params;\n\n if (!isCatalogVersion(version)) {\n return undefined;\n }\n\n if (!catalogs) {\n throw new Error(`Dependency \"${name}\" uses a catalog version \"${version}\" but no catalogs are defined.`);\n }\n\n const catalogName = version.slice(catalogPrefix.length);\n const checkCatalog =\n // Explicit catalog:default refers to the default catalog in pnpm, or a catalog named \"default\"\n // in yarn... Check for the yarn case first or fall back to .default. (getCatalogs should have\n // removed the named \"default\" catalog from namedCatalogs in managers where they're the same,\n // and yarn install would have errored if a named catalog \"default\" was referenced but not defined.)\n catalogName === \"default\"\n ? catalogs.named?.default || catalogs.default\n : // Otherwise use either the given named catalog, or the default if no name was specified\n catalogName\n ? catalogs.named?.[catalogName]\n : catalogs.default;\n const catalogNameStr = catalogName ? `catalogs.${catalogName}` : \"the default catalog\";\n\n if (!checkCatalog) {\n throw new Error(`Dependency \"${name}\" uses a catalog version \"${version}\" but ${catalogNameStr} is not defined.`);\n }\n\n const actualSpec = checkCatalog[name];\n if (!actualSpec) {\n throw new Error(\n `Dependency \"${name}\" uses a catalog version \"${version}\", but ${catalogNameStr} doesn't define a version for \"${name}\".`\n );\n }\n\n if (isCatalogVersion(actualSpec)) {\n throw new Error(\n `Dependency \"${name}\" resolves to a recursive catalog version \"${actualSpec}\", which is not supported.`\n );\n }\n\n return actualSpec;\n}\n"],"names":["getCatalogVersion","isCatalogVersion","catalogPrefix","version","startsWith","params","name","catalogs","undefined","Error","catalogName","slice","length","checkCatalog","named","default","catalogNameStr","actualSpec"],"mappings":";;;;;;;;;;;;;;;QA2BgBA;eAAAA;;QApBAC;eAAAA;;;AALhB,MAAMC,gBAAgB;AAKf,SAASD,iBAAiBE,OAAe;IAC9C,OAAOA,QAAQC,UAAU,CAACF;AAC5B;AAkBO,SAASF,kBAAkBK,MAIjC;IACC,MAAM,EAAEC,IAAI,EAAEH,OAAO,EAAEI,QAAQ,EAAE,GAAGF;IAEpC,IAAI,CAACJ,iBAAiBE,UAAU;QAC9B,OAAOK;IACT;IAEA,IAAI,CAACD,UAAU;QACb,MAAM,IAAIE,MAAM,CAAC,YAAY,EAAEH,KAAK,0BAA0B,EAAEH,QAAQ,8BAA8B,CAAC;IACzG;IAEA,MAAMO,cAAcP,QAAQQ,KAAK,CAACT,cAAcU,MAAM;IACtD,MAAMC,eACJ,+FAA+F;IAC/F,8FAA8F;IAC9F,6FAA6F;IAC7F,oGAAoG;IACpGH,gBAAgB,YACZH,SAASO,KAAK,EAAEC,WAAWR,SAASQ,OAAO,GAE3CL,cACEH,SAASO,KAAK,EAAE,CAACJ,YAAY,GAC7BH,SAASQ,OAAO;IACxB,MAAMC,iBAAiBN,cAAc,CAAC,SAAS,EAAEA,aAAa,GAAG;IAEjE,IAAI,CAACG,cAAc;QACjB,MAAM,IAAIJ,MAAM,CAAC,YAAY,EAAEH,KAAK,0BAA0B,EAAEH,QAAQ,MAAM,EAAEa,eAAe,gBAAgB,CAAC;IAClH;IAEA,MAAMC,aAAaJ,YAAY,CAACP,KAAK;IACrC,IAAI,CAACW,YAAY;QACf,MAAM,IAAIR,MACR,CAAC,YAAY,EAAEH,KAAK,0BAA0B,EAAEH,QAAQ,OAAO,EAAEa,eAAe,+BAA+B,EAAEV,KAAK,EAAE,CAAC;IAE7H;IAEA,IAAIL,iBAAiBgB,aAAa;QAChC,MAAM,IAAIR,MACR,CAAC,YAAY,EAAEH,KAAK,2CAA2C,EAAEW,WAAW,0BAA0B,CAAC;IAE3G;IAEA,OAAOA;AACT"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "getCatalogs", {
8
8
  return getCatalogs;
9
9
  }
10
10
  });
11
- const _implementations = require("./implementations");
11
+ const _index = require("./implementations/index.js");
12
12
  const _wrapWorkspaceUtility = require("./wrapWorkspaceUtility.js");
13
13
  function getCatalogs(cwd, managerOverride) {
14
14
  return (0, _wrapWorkspaceUtility.wrapWorkspaceUtility)({
@@ -17,7 +17,7 @@ function getCatalogs(cwd, managerOverride) {
17
17
  description: "catalogs",
18
18
  impl: ({ manager, root })=>{
19
19
  // There is no default implementation for catalogs, since not all managers support it
20
- return (0, _implementations.getWorkspaceUtilities)(manager).getCatalogs?.({
20
+ return (0, _index.getWorkspaceUtilities)(manager).getCatalogs?.({
21
21
  root
22
22
  });
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getCatalogs.ts"],"sourcesContent":["import type { Catalogs } from \"../types/Catalogs.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get version catalogs, if supported by the manager (only pnpm and yarn v4 as of writing).\n * Returns undefined if no catalogs are present or the manager doesn't support them.\n * @see https://pnpm.io/catalogs\n * @see https://yarnpkg.com/features/catalogs\n *\n * @param cwd - Current working directory. It will search up from here to find the root, with caching.\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Catalogs if defined, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getCatalogs(cwd: string, managerOverride?: WorkspaceManager): Catalogs | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"catalogs\",\n impl: ({ manager, root }) => {\n // There is no default implementation for catalogs, since not all managers support it\n return getWorkspaceUtilities(manager).getCatalogs?.({ root });\n },\n });\n}\n"],"names":["getCatalogs","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","getWorkspaceUtilities"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;iCAfsB;sCACD;AAc9B,SAASA,YAAYC,GAAW,EAAEC,eAAkC;IACzE,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,qFAAqF;YACrF,OAAOC,IAAAA,sCAAqB,EAACF,SAASN,WAAW,GAAG;gBAAEO;YAAK;QAC7D;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getCatalogs.ts"],"sourcesContent":["import type { Catalogs } from \"../types/Catalogs.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations/index.js\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get version catalogs, if supported by the manager (only pnpm and yarn v4 as of writing).\n * Returns undefined if no catalogs are present or the manager doesn't support them.\n * @see https://pnpm.io/catalogs\n * @see https://yarnpkg.com/features/catalogs\n *\n * @param cwd - Current working directory. It will search up from here to find the root, with caching.\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Catalogs if defined, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getCatalogs(cwd: string, managerOverride?: WorkspaceManager): Catalogs | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"catalogs\",\n impl: ({ manager, root }) => {\n // There is no default implementation for catalogs, since not all managers support it\n return getWorkspaceUtilities(manager).getCatalogs?.({ root });\n },\n });\n}\n"],"names":["getCatalogs","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","getWorkspaceUtilities"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;uBAfsB;sCACD;AAc9B,SAASA,YAAYC,GAAW,EAAEC,eAAkC;IACzE,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,qFAAqF;YACrF,OAAOC,IAAAA,4BAAqB,EAACF,SAASN,WAAW,GAAG;gBAAEO;YAAK;QAC7D;IACF;AACF"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getChangedPackages: null,
7
+ getChangedPackagesBetweenRefs: null
8
+ });
5
9
  function _export(target, all) {
6
10
  for(var name in all)Object.defineProperty(target, name, {
7
11
  enumerable: true,
@@ -16,7 +20,7 @@ _export(exports, {
16
20
  return getChangedPackagesBetweenRefs;
17
21
  }
18
22
  });
19
- const _git = require("../git");
23
+ const _index = require("../git/index.js");
20
24
  const _getPackagesByFiles = require("./getPackagesByFiles.js");
21
25
  function getChangedPackagesBetweenRefs(paramsOrCwd, _fromRef, _toRef, _ignoreGlobs, _returnAllPackagesOnNoMatch) {
22
26
  var _gitOptions;
@@ -31,14 +35,14 @@ function getChangedPackagesBetweenRefs(paramsOrCwd, _fromRef, _toRef, _ignoreGlo
31
35
  (_gitOptions = gitOptions).throwOnError ?? (_gitOptions.throwOnError = true);
32
36
  const changes = [
33
37
  ...new Set([
34
- ...(0, _git.getUntrackedChanges)(gitOptions),
35
- ...(0, _git.getUnstagedChanges)(gitOptions),
36
- ...(0, _git.getChangesBetweenRefs)({
38
+ ...(0, _index.getUntrackedChanges)(gitOptions),
39
+ ...(0, _index.getUnstagedChanges)(gitOptions),
40
+ ...(0, _index.getChangesBetweenRefs)({
37
41
  fromRef,
38
42
  toRef,
39
43
  ...gitOptions
40
44
  }),
41
- ...(0, _git.getStagedChanges)(gitOptions)
45
+ ...(0, _index.getStagedChanges)(gitOptions)
42
46
  ])
43
47
  ];
44
48
  return (0, _getPackagesByFiles.getPackagesByFiles)({
@@ -59,7 +63,7 @@ function getChangedPackages(cwdOrOptions, target, ignoreGlobs, returnAllPackages
59
63
  ({ target, ignoreGlobs, returnAllPackagesOnNoMatch, ...gitOptions } = cwdOrOptions);
60
64
  }
61
65
  (_gitOptions = gitOptions).throwOnError ?? (_gitOptions.throwOnError = true);
62
- const targetBranch = target || (0, _git.getDefaultRemoteBranch)(gitOptions);
66
+ const targetBranch = target || (0, _index.getDefaultRemoteBranch)(gitOptions);
63
67
  return getChangedPackagesBetweenRefs({
64
68
  fromRef: targetBranch,
65
69
  ...gitOptions,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getChangedPackages.ts"],"sourcesContent":["import {\n getChangesBetweenRefs,\n getDefaultRemoteBranch,\n getStagedChanges,\n getUnstagedChanges,\n getUntrackedChanges,\n} from \"../git\";\nimport { type GitCommonOptions, type GetChangesBetweenRefsOptions } from \"../git/types.js\";\nimport { getPackagesByFiles } from \"./getPackagesByFiles.js\";\n\ntype GetChangedPackagesOptions = GitCommonOptions & {\n /** The `merge-base` branch (must have been fetched locally) */\n target?: string;\n /** Glob patterns to ignore */\n ignoreGlobs?: string[];\n /** If true (the default), return all packages if no matches are found for any file. */\n returnAllPackagesOnNoMatch?: boolean;\n};\n\ntype GetChangedPackagesBetweenRefsOptions = Omit<GetChangedPackagesOptions, \"target\"> &\n Pick<GetChangesBetweenRefsOptions, \"fromRef\" | \"toRef\">;\n\n/**\n * Finds all packages that had been changed between two refs in the repo under cwd,\n * by executing `git diff $fromRef...$toRef`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackagesBetweenRefs(params: GetChangedPackagesBetweenRefsOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackagesBetweenRefs(\n cwd: string,\n fromRef: string,\n toRef?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackagesBetweenRefs(\n paramsOrCwd: GetChangedPackagesBetweenRefsOptions | string,\n _fromRef?: string,\n _toRef?: string,\n _ignoreGlobs?: string[],\n _returnAllPackagesOnNoMatch?: boolean\n): string[] {\n const params: GetChangedPackagesBetweenRefsOptions =\n typeof paramsOrCwd === \"string\"\n ? {\n cwd: paramsOrCwd,\n fromRef: _fromRef!,\n toRef: _toRef,\n ignoreGlobs: _ignoreGlobs,\n returnAllPackagesOnNoMatch: _returnAllPackagesOnNoMatch,\n }\n : paramsOrCwd;\n const { fromRef, toRef, ignoreGlobs, returnAllPackagesOnNoMatch = true, ...gitOptions } = params;\n gitOptions.throwOnError ??= true;\n\n const changes = [\n ...new Set([\n ...getUntrackedChanges(gitOptions),\n ...getUnstagedChanges(gitOptions),\n ...getChangesBetweenRefs({ fromRef, toRef, ...gitOptions }),\n ...getStagedChanges(gitOptions),\n ]),\n ];\n\n return getPackagesByFiles({\n root: gitOptions.cwd,\n files: changes,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n\n/**\n * Finds all packages that had been changed in the repo under cwd, by executing\n * `git diff $target...`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackages(params: GetChangedPackagesOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackages(\n cwd: string,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackages(\n cwdOrOptions: string | GetChangedPackagesOptions,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[] {\n let gitOptions: GitCommonOptions;\n if (typeof cwdOrOptions === \"string\") {\n gitOptions = { cwd: cwdOrOptions };\n } else {\n ({ target, ignoreGlobs, returnAllPackagesOnNoMatch, ...gitOptions } = cwdOrOptions);\n }\n gitOptions.throwOnError ??= true;\n\n const targetBranch = target || getDefaultRemoteBranch(gitOptions);\n\n return getChangedPackagesBetweenRefs({\n fromRef: targetBranch,\n ...gitOptions,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n"],"names":["getChangedPackages","getChangedPackagesBetweenRefs","paramsOrCwd","_fromRef","_toRef","_ignoreGlobs","_returnAllPackagesOnNoMatch","gitOptions","params","cwd","fromRef","toRef","ignoreGlobs","returnAllPackagesOnNoMatch","throwOnError","changes","Set","getUntrackedChanges","getUnstagedChanges","getChangesBetweenRefs","getStagedChanges","getPackagesByFiles","root","files","cwdOrOptions","target","targetBranch","getDefaultRemoteBranch"],"mappings":";;;;;;;;;;;QAgIgBA;eAAAA;;QAvEAC;eAAAA;;;qBAnDT;oCAE4B;AAiD5B,SAASA,8BACdC,WAA0D,EAC1DC,QAAiB,EACjBC,MAAe,EACfC,YAAuB,EACvBC,2BAAqC;QAarCC;IAXA,MAAMC,SACJ,OAAON,gBAAgB,WACnB;QACEO,KAAKP;QACLQ,SAASP;QACTQ,OAAOP;QACPQ,aAAaP;QACbQ,4BAA4BP;IAC9B,IACAJ;IACN,MAAM,EAAEQ,OAAO,EAAEC,KAAK,EAAEC,WAAW,EAAEC,6BAA6B,IAAI,EAAE,GAAGN,YAAY,GAAGC;IAC1FD,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMC,UAAU;WACX,IAAIC,IAAI;eACNC,IAAAA,wBAAmB,EAACV;eACpBW,IAAAA,uBAAkB,EAACX;eACnBY,IAAAA,0BAAqB,EAAC;gBAAET;gBAASC;gBAAO,GAAGJ,UAAU;YAAC;eACtDa,IAAAA,qBAAgB,EAACb;SACrB;KACF;IAED,OAAOc,IAAAA,sCAAkB,EAAC;QACxBC,MAAMf,WAAWE,GAAG;QACpBc,OAAOR;QACPH;QACAC;IACF;AACF;AAoCO,SAASb,mBACdwB,YAAgD,EAChDC,MAAe,EACfb,WAAsB,EACtBC,0BAAoC;QAQpCN;IANA,IAAIA;IACJ,IAAI,OAAOiB,iBAAiB,UAAU;QACpCjB,aAAa;YAAEE,KAAKe;QAAa;IACnC,OAAO;QACJ,CAAA,EAAEC,MAAM,EAAEb,WAAW,EAAEC,0BAA0B,EAAE,GAAGN,YAAY,GAAGiB,YAAW;IACnF;IACAjB,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMY,eAAeD,UAAUE,IAAAA,2BAAsB,EAACpB;IAEtD,OAAON,8BAA8B;QACnCS,SAASgB;QACT,GAAGnB,UAAU;QACbK;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getChangedPackages.ts"],"sourcesContent":["import {\n getChangesBetweenRefs,\n getDefaultRemoteBranch,\n getStagedChanges,\n getUnstagedChanges,\n getUntrackedChanges,\n} from \"../git/index.js\";\nimport { type GitCommonOptions, type GetChangesBetweenRefsOptions } from \"../git/types.js\";\nimport { getPackagesByFiles } from \"./getPackagesByFiles.js\";\n\ntype GetChangedPackagesOptions = GitCommonOptions & {\n /** The `merge-base` branch (must have been fetched locally) */\n target?: string;\n /** Glob patterns to ignore */\n ignoreGlobs?: string[];\n /** If true (the default), return all packages if no matches are found for any file. */\n returnAllPackagesOnNoMatch?: boolean;\n};\n\ntype GetChangedPackagesBetweenRefsOptions = Omit<GetChangedPackagesOptions, \"target\"> &\n Pick<GetChangesBetweenRefsOptions, \"fromRef\" | \"toRef\">;\n\n/**\n * Finds all packages that had been changed between two refs in the repo under cwd,\n * by executing `git diff $fromRef...$toRef`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackagesBetweenRefs(params: GetChangedPackagesBetweenRefsOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackagesBetweenRefs(\n cwd: string,\n fromRef: string,\n toRef?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackagesBetweenRefs(\n paramsOrCwd: GetChangedPackagesBetweenRefsOptions | string,\n _fromRef?: string,\n _toRef?: string,\n _ignoreGlobs?: string[],\n _returnAllPackagesOnNoMatch?: boolean\n): string[] {\n const params: GetChangedPackagesBetweenRefsOptions =\n typeof paramsOrCwd === \"string\"\n ? {\n cwd: paramsOrCwd,\n fromRef: _fromRef!,\n toRef: _toRef,\n ignoreGlobs: _ignoreGlobs,\n returnAllPackagesOnNoMatch: _returnAllPackagesOnNoMatch,\n }\n : paramsOrCwd;\n const { fromRef, toRef, ignoreGlobs, returnAllPackagesOnNoMatch = true, ...gitOptions } = params;\n gitOptions.throwOnError ??= true;\n\n const changes = [\n ...new Set([\n ...getUntrackedChanges(gitOptions),\n ...getUnstagedChanges(gitOptions),\n ...getChangesBetweenRefs({ fromRef, toRef, ...gitOptions }),\n ...getStagedChanges(gitOptions),\n ]),\n ];\n\n return getPackagesByFiles({\n root: gitOptions.cwd,\n files: changes,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n\n/**\n * Finds all packages that had been changed in the repo under cwd, by executing\n * `git diff $target...`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackages(params: GetChangedPackagesOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackages(\n cwd: string,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackages(\n cwdOrOptions: string | GetChangedPackagesOptions,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[] {\n let gitOptions: GitCommonOptions;\n if (typeof cwdOrOptions === \"string\") {\n gitOptions = { cwd: cwdOrOptions };\n } else {\n ({ target, ignoreGlobs, returnAllPackagesOnNoMatch, ...gitOptions } = cwdOrOptions);\n }\n gitOptions.throwOnError ??= true;\n\n const targetBranch = target || getDefaultRemoteBranch(gitOptions);\n\n return getChangedPackagesBetweenRefs({\n fromRef: targetBranch,\n ...gitOptions,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n"],"names":["getChangedPackages","getChangedPackagesBetweenRefs","paramsOrCwd","_fromRef","_toRef","_ignoreGlobs","_returnAllPackagesOnNoMatch","gitOptions","params","cwd","fromRef","toRef","ignoreGlobs","returnAllPackagesOnNoMatch","throwOnError","changes","Set","getUntrackedChanges","getUnstagedChanges","getChangesBetweenRefs","getStagedChanges","getPackagesByFiles","root","files","cwdOrOptions","target","targetBranch","getDefaultRemoteBranch"],"mappings":";;;;;;;;;;;;;;;QAgIgBA;eAAAA;;QAvEAC;eAAAA;;;uBAnDT;oCAE4B;AAiD5B,SAASA,8BACdC,WAA0D,EAC1DC,QAAiB,EACjBC,MAAe,EACfC,YAAuB,EACvBC,2BAAqC;QAarCC;IAXA,MAAMC,SACJ,OAAON,gBAAgB,WACnB;QACEO,KAAKP;QACLQ,SAASP;QACTQ,OAAOP;QACPQ,aAAaP;QACbQ,4BAA4BP;IAC9B,IACAJ;IACN,MAAM,EAAEQ,OAAO,EAAEC,KAAK,EAAEC,WAAW,EAAEC,6BAA6B,IAAI,EAAE,GAAGN,YAAY,GAAGC;IAC1FD,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMC,UAAU;WACX,IAAIC,IAAI;eACNC,IAAAA,0BAAmB,EAACV;eACpBW,IAAAA,yBAAkB,EAACX;eACnBY,IAAAA,4BAAqB,EAAC;gBAAET;gBAASC;gBAAO,GAAGJ,UAAU;YAAC;eACtDa,IAAAA,uBAAgB,EAACb;SACrB;KACF;IAED,OAAOc,IAAAA,sCAAkB,EAAC;QACxBC,MAAMf,WAAWE,GAAG;QACpBc,OAAOR;QACPH;QACAC;IACF;AACF;AAoCO,SAASb,mBACdwB,YAAgD,EAChDC,MAAe,EACfb,WAAsB,EACtBC,0BAAoC;QAQpCN;IANA,IAAIA;IACJ,IAAI,OAAOiB,iBAAiB,UAAU;QACpCjB,aAAa;YAAEE,KAAKe;QAAa;IACnC,OAAO;QACJ,CAAA,EAAEC,MAAM,EAAEb,WAAW,EAAEC,0BAA0B,EAAE,GAAGN,YAAY,GAAGiB,YAAW;IACnF;IACAjB,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMY,eAAeD,UAAUE,IAAAA,6BAAsB,EAACpB;IAEtD,OAAON,8BAA8B;QACnCS,SAASgB;QACT,GAAGnB,UAAU;QACbK;QACAC;IACF;AACF"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getWorkspaceInfos: null,
7
+ getWorkspaceInfosAsync: null
8
+ });
5
9
  function _export(target, all) {
6
10
  for(var name in all)Object.defineProperty(target, name, {
7
11
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspaceInfos.ts"],"sourcesContent":["import { getPackageInfo, getPackageInfoAsync } from \"../getPackageInfo.js\";\nimport type { WorkspaceInfos, WorkspacePackageInfo } from \"../types/WorkspaceInfo.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspacePackagePaths, getWorkspacePackagePathsAsync } from \"./getWorkspacePackagePaths.js\";\nimport { wrapAsyncWorkspaceUtility, wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get an array with names, paths, and package.json contents for each package (\"workspace\" in\n * npm/yarn/pnpm terms) within a monorepo. The list of included packages is based on the\n * workspace/monorepo manager's config file.\n *\n * Notes:\n * - The workspace manager, root, and list of package paths for `cwd` are cached internally,\n * but the package contents are not.\n * - To get an object with package names as keys, use `getPackageInfos` instead.\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of workspace package infos, or undefined if not found (not a monorepo)\n * or there's any issue. (Logs verbose warnings instead of throwing on error.)\n */\nexport function getWorkspaceInfos(cwd: string, managerOverride?: WorkspaceManager): WorkspaceInfos | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package infos\",\n impl: ({ manager }) => {\n return getWorkspacePackagePaths(cwd, manager)\n ?.map<WorkspacePackageInfo | undefined>((packagePath) => {\n // getPackageInfo logs a warning if it can't be read\n const packageJson = getPackageInfo(packagePath);\n return packageJson && { name: packageJson.name, path: packagePath, packageJson };\n })\n .filter(Boolean) as WorkspaceInfos | undefined;\n },\n });\n}\n\n/**\n * Get an array with names, paths, and package.json contents for each package (\"workspace\" in\n * npm/yarn/pnpm terms) within a monorepo. The list of included packages is based on the\n * workspace/monorepo manager's config file.\n *\n * Notes:\n * - **WARNING**: As of writing, this will start promises to read all package.json files in\n * parallel, without direct concurrency control.\n * - The workspace manager, root, and list of package paths for `cwd` are cached internally,\n * but the package contents are not.\n * - To get an object with package names as keys, use `getPackageInfosAsync` instead.\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of workspace package infos, or undefined if not found (not a monorepo)\n * or there's any issue. (Logs verbose warnings instead of throwing on error.)\n */\nexport async function getWorkspaceInfosAsync(\n cwd: string,\n managerOverride?: WorkspaceManager\n): Promise<WorkspaceInfos | undefined> {\n return wrapAsyncWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package infos\",\n impl: async ({ manager }) => {\n const packagePaths = await getWorkspacePackagePathsAsync(cwd, manager);\n if (!packagePaths) return undefined;\n\n const workspacePkgPromises = packagePaths.map<Promise<WorkspacePackageInfo | undefined>>(async (packagePath) => {\n // getPackageInfoAsync logs a warning if it can't be read\n const packageJson = await getPackageInfoAsync(packagePath);\n return packageJson && { name: packageJson.name, path: packagePath, packageJson };\n });\n\n return (await Promise.all(workspacePkgPromises)).filter(Boolean) as WorkspaceInfos;\n },\n });\n}\n"],"names":["getWorkspaceInfos","getWorkspaceInfosAsync","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","getWorkspacePackagePaths","map","packagePath","packageJson","getPackageInfo","name","path","filter","Boolean","wrapAsyncWorkspaceUtility","packagePaths","getWorkspacePackagePathsAsync","undefined","workspacePkgPromises","getPackageInfoAsync","Promise","all"],"mappings":";;;;;;;;;;;QAqBgBA;eAAAA;;QAkCMC;eAAAA;;;gCAvD8B;0CAGoB;sCACR;AAiBzD,SAASD,kBAAkBE,GAAW,EAAEC,eAAkC;IAC/E,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAE;YAChB,OAAOC,IAAAA,kDAAwB,EAACN,KAAKK,UACjCE,IAAsC,CAACC;gBACvC,oDAAoD;gBACpD,MAAMC,cAAcC,IAAAA,8BAAc,EAACF;gBACnC,OAAOC,eAAe;oBAAEE,MAAMF,YAAYE,IAAI;oBAAEC,MAAMJ;oBAAaC;gBAAY;YACjF,GACCI,OAAOC;QACZ;IACF;AACF;AAmBO,eAAef,uBACpBC,GAAW,EACXC,eAAkC;IAElC,OAAOc,IAAAA,+CAAyB,EAAC;QAC/Bf;QACAC;QACAE,aAAa;QACbC,MAAM,OAAO,EAAEC,OAAO,EAAE;YACtB,MAAMW,eAAe,MAAMC,IAAAA,uDAA6B,EAACjB,KAAKK;YAC9D,IAAI,CAACW,cAAc,OAAOE;YAE1B,MAAMC,uBAAuBH,aAAaT,GAAG,CAA4C,OAAOC;gBAC9F,yDAAyD;gBACzD,MAAMC,cAAc,MAAMW,IAAAA,mCAAmB,EAACZ;gBAC9C,OAAOC,eAAe;oBAAEE,MAAMF,YAAYE,IAAI;oBAAEC,MAAMJ;oBAAaC;gBAAY;YACjF;YAEA,OAAO,AAAC,CAAA,MAAMY,QAAQC,GAAG,CAACH,qBAAoB,EAAGN,MAAM,CAACC;QAC1D;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspaceInfos.ts"],"sourcesContent":["import { getPackageInfo, getPackageInfoAsync } from \"../getPackageInfo.js\";\nimport type { WorkspaceInfos, WorkspacePackageInfo } from \"../types/WorkspaceInfo.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspacePackagePaths, getWorkspacePackagePathsAsync } from \"./getWorkspacePackagePaths.js\";\nimport { wrapAsyncWorkspaceUtility, wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get an array with names, paths, and package.json contents for each package (\"workspace\" in\n * npm/yarn/pnpm terms) within a monorepo. The list of included packages is based on the\n * workspace/monorepo manager's config file.\n *\n * Notes:\n * - The workspace manager, root, and list of package paths for `cwd` are cached internally,\n * but the package contents are not.\n * - To get an object with package names as keys, use `getPackageInfos` instead.\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of workspace package infos, or undefined if not found (not a monorepo)\n * or there's any issue. (Logs verbose warnings instead of throwing on error.)\n */\nexport function getWorkspaceInfos(cwd: string, managerOverride?: WorkspaceManager): WorkspaceInfos | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package infos\",\n impl: ({ manager }) => {\n return getWorkspacePackagePaths(cwd, manager)\n ?.map<WorkspacePackageInfo | undefined>((packagePath) => {\n // getPackageInfo logs a warning if it can't be read\n const packageJson = getPackageInfo(packagePath);\n return packageJson && { name: packageJson.name, path: packagePath, packageJson };\n })\n .filter(Boolean) as WorkspaceInfos | undefined;\n },\n });\n}\n\n/**\n * Get an array with names, paths, and package.json contents for each package (\"workspace\" in\n * npm/yarn/pnpm terms) within a monorepo. The list of included packages is based on the\n * workspace/monorepo manager's config file.\n *\n * Notes:\n * - **WARNING**: As of writing, this will start promises to read all package.json files in\n * parallel, without direct concurrency control.\n * - The workspace manager, root, and list of package paths for `cwd` are cached internally,\n * but the package contents are not.\n * - To get an object with package names as keys, use `getPackageInfosAsync` instead.\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of workspace package infos, or undefined if not found (not a monorepo)\n * or there's any issue. (Logs verbose warnings instead of throwing on error.)\n */\nexport async function getWorkspaceInfosAsync(\n cwd: string,\n managerOverride?: WorkspaceManager\n): Promise<WorkspaceInfos | undefined> {\n return wrapAsyncWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package infos\",\n impl: async ({ manager }) => {\n const packagePaths = await getWorkspacePackagePathsAsync(cwd, manager);\n if (!packagePaths) return undefined;\n\n const workspacePkgPromises = packagePaths.map<Promise<WorkspacePackageInfo | undefined>>(async (packagePath) => {\n // getPackageInfoAsync logs a warning if it can't be read\n const packageJson = await getPackageInfoAsync(packagePath);\n return packageJson && { name: packageJson.name, path: packagePath, packageJson };\n });\n\n return (await Promise.all(workspacePkgPromises)).filter(Boolean) as WorkspaceInfos;\n },\n });\n}\n"],"names":["getWorkspaceInfos","getWorkspaceInfosAsync","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","getWorkspacePackagePaths","map","packagePath","packageJson","getPackageInfo","name","path","filter","Boolean","wrapAsyncWorkspaceUtility","packagePaths","getWorkspacePackagePathsAsync","undefined","workspacePkgPromises","getPackageInfoAsync","Promise","all"],"mappings":";;;;;;;;;;;;;;;QAqBgBA;eAAAA;;QAkCMC;eAAAA;;;gCAvD8B;0CAGoB;sCACR;AAiBzD,SAASD,kBAAkBE,GAAW,EAAEC,eAAkC;IAC/E,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAE;YAChB,OAAOC,IAAAA,kDAAwB,EAACN,KAAKK,UACjCE,IAAsC,CAACC;gBACvC,oDAAoD;gBACpD,MAAMC,cAAcC,IAAAA,8BAAc,EAACF;gBACnC,OAAOC,eAAe;oBAAEE,MAAMF,YAAYE,IAAI;oBAAEC,MAAMJ;oBAAaC;gBAAY;YACjF,GACCI,OAAOC;QACZ;IACF;AACF;AAmBO,eAAef,uBACpBC,GAAW,EACXC,eAAkC;IAElC,OAAOc,IAAAA,+CAAyB,EAAC;QAC/Bf;QACAC;QACAE,aAAa;QACbC,MAAM,OAAO,EAAEC,OAAO,EAAE;YACtB,MAAMW,eAAe,MAAMC,IAAAA,uDAA6B,EAACjB,KAAKK;YAC9D,IAAI,CAACW,cAAc,OAAOE;YAE1B,MAAMC,uBAAuBH,aAAaT,GAAG,CAA4C,OAAOC;gBAC9F,yDAAyD;gBACzD,MAAMC,cAAc,MAAMW,IAAAA,mCAAmB,EAACZ;gBAC9C,OAAOC,eAAe;oBAAEE,MAAMF,YAAYE,IAAI;oBAAEC,MAAMJ;oBAAaC;gBAAY;YACjF;YAEA,OAAO,AAAC,CAAA,MAAMY,QAAQC,GAAG,CAACH,qBAAoB,EAAGN,MAAM,CAACC;QAC1D;IACF;AACF"}
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "getWorkspaceManagerRoot", {
9
9
  }
10
10
  });
11
11
  const _logging = require("../logging.js");
12
- const _implementations = require("./implementations");
12
+ const _index = require("./implementations/index.js");
13
13
  function getWorkspaceManagerRoot(cwd, managerOverride, options) {
14
14
  const logOrThrow = (message)=>{
15
15
  if (options?.throwOnError) {
@@ -20,7 +20,7 @@ function getWorkspaceManagerRoot(cwd, managerOverride, options) {
20
20
  };
21
21
  let root;
22
22
  try {
23
- root = (0, _implementations.getWorkspaceManagerAndRoot)(cwd, undefined, managerOverride)?.root;
23
+ root = (0, _index.getWorkspaceManagerAndRoot)(cwd, undefined, managerOverride)?.root;
24
24
  } catch (err) {
25
25
  logOrThrow(`Error getting ${managerOverride || "workspace/monorepo manager"} root from ${cwd}: ${err}`);
26
26
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspaceManagerRoot.ts"],"sourcesContent":["import { logVerboseWarning } from \"../logging.js\";\nimport { getWorkspaceManagerAndRoot } from \"./implementations\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\n\n/**\n * Get the root directory of a monorepo, defined as the directory where the workspace/monorepo manager\n * config file is located. (Does not rely in any way on git, and the result is cached by `cwd`.)\n *\n * @param cwd Start searching from here\n * @param managerOverride Search for only this manager's config file\n *\n * @returns Workspace manager root directory. Returns undefined (and verbose logs) on error or if\n * not found, unless `throwOnError` is set.\n */\nexport function getWorkspaceManagerRoot(cwd: string, managerOverride?: WorkspaceManager): string | undefined;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride: WorkspaceManager | undefined,\n options?: {\n /** Throw if there's an error or if the root is not found */\n throwOnError: true;\n }\n): string;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride?: WorkspaceManager,\n options?: { throwOnError: true }\n): string | undefined {\n const logOrThrow = (message: string) => {\n if (options?.throwOnError) {\n throw new Error(message);\n } else {\n logVerboseWarning(message);\n }\n };\n\n let root: string | undefined;\n try {\n root = getWorkspaceManagerAndRoot(cwd, undefined, managerOverride)?.root;\n } catch (err) {\n logOrThrow(`Error getting ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}: ${err}`);\n return;\n }\n\n if (!root) {\n logOrThrow(`Could not find ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}`);\n }\n return root;\n}\n"],"names":["getWorkspaceManagerRoot","cwd","managerOverride","options","logOrThrow","message","throwOnError","Error","logVerboseWarning","root","getWorkspaceManagerAndRoot","undefined","err"],"mappings":";;;;+BAuBgBA;;;eAAAA;;;yBAvBkB;iCACS;AAsBpC,SAASA,wBACdC,GAAW,EACXC,eAAkC,EAClCC,OAAgC;IAEhC,MAAMC,aAAa,CAACC;QAClB,IAAIF,SAASG,cAAc;YACzB,MAAM,IAAIC,MAAMF;QAClB,OAAO;YACLG,IAAAA,0BAAiB,EAACH;QACpB;IACF;IAEA,IAAII;IACJ,IAAI;QACFA,OAAOC,IAAAA,2CAA0B,EAACT,KAAKU,WAAWT,kBAAkBO;IACtE,EAAE,OAAOG,KAAK;QACZR,WAAW,CAAC,cAAc,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,IAAI,EAAE,EAAEW,KAAK;QACtG;IACF;IAEA,IAAI,CAACH,MAAM;QACTL,WAAW,CAAC,eAAe,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,KAAK;IACjG;IACA,OAAOQ;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspaceManagerRoot.ts"],"sourcesContent":["import { logVerboseWarning } from \"../logging.js\";\nimport { getWorkspaceManagerAndRoot } from \"./implementations/index.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\n\n/**\n * Get the root directory of a monorepo, defined as the directory where the workspace/monorepo manager\n * config file is located. (Does not rely in any way on git, and the result is cached by `cwd`.)\n *\n * @param cwd Start searching from here\n * @param managerOverride Search for only this manager's config file\n *\n * @returns Workspace manager root directory. Returns undefined (and verbose logs) on error or if\n * not found, unless `throwOnError` is set.\n */\nexport function getWorkspaceManagerRoot(cwd: string, managerOverride?: WorkspaceManager): string | undefined;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride: WorkspaceManager | undefined,\n options?: {\n /** Throw if there's an error or if the root is not found */\n throwOnError: true;\n }\n): string;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride?: WorkspaceManager,\n options?: { throwOnError: true }\n): string | undefined {\n const logOrThrow = (message: string) => {\n if (options?.throwOnError) {\n throw new Error(message);\n } else {\n logVerboseWarning(message);\n }\n };\n\n let root: string | undefined;\n try {\n root = getWorkspaceManagerAndRoot(cwd, undefined, managerOverride)?.root;\n } catch (err) {\n logOrThrow(`Error getting ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}: ${err}`);\n return;\n }\n\n if (!root) {\n logOrThrow(`Could not find ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}`);\n }\n return root;\n}\n"],"names":["getWorkspaceManagerRoot","cwd","managerOverride","options","logOrThrow","message","throwOnError","Error","logVerboseWarning","root","getWorkspaceManagerAndRoot","undefined","err"],"mappings":";;;;+BAuBgBA;;;eAAAA;;;yBAvBkB;uBACS;AAsBpC,SAASA,wBACdC,GAAW,EACXC,eAAkC,EAClCC,OAAgC;IAEhC,MAAMC,aAAa,CAACC;QAClB,IAAIF,SAASG,cAAc;YACzB,MAAM,IAAIC,MAAMF;QAClB,OAAO;YACLG,IAAAA,0BAAiB,EAACH;QACpB;IACF;IAEA,IAAII;IACJ,IAAI;QACFA,OAAOC,IAAAA,iCAA0B,EAACT,KAAKU,WAAWT,kBAAkBO;IACtE,EAAE,OAAOG,KAAK;QACZR,WAAW,CAAC,cAAc,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,IAAI,EAAE,EAAEW,KAAK;QACtG;IACF;IAEA,IAAI,CAACH,MAAM;QACTL,WAAW,CAAC,eAAe,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,KAAK;IACjG;IACA,OAAOQ;AACT"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getWorkspacePackagePaths: null,
7
+ getWorkspacePackagePathsAsync: null
8
+ });
5
9
  function _export(target, all) {
6
10
  for(var name in all)Object.defineProperty(target, name, {
7
11
  enumerable: true,
@@ -18,7 +22,7 @@ _export(exports, {
18
22
  });
19
23
  const _fastglob = /*#__PURE__*/ _interop_require_default(require("fast-glob"));
20
24
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
21
- const _implementations = require("./implementations");
25
+ const _index = require("./implementations/index.js");
22
26
  const _isCachingEnabled = require("../isCachingEnabled.js");
23
27
  const _wrapWorkspaceUtility = require("./wrapWorkspaceUtility.js");
24
28
  function _interop_require_default(obj) {
@@ -108,7 +112,7 @@ async function getWorkspacePackagePathsAsync(cwd, managerOverride) {
108
112
  resolvedPaths: cachedPaths
109
113
  };
110
114
  }
111
- const managerUtilities = (0, _implementations.getWorkspaceUtilities)(params.manager);
115
+ const managerUtilities = (0, _index.getWorkspaceUtilities)(params.manager);
112
116
  const managerSetting = managerUtilities.getWorkspacePatterns({
113
117
  root: params.root
114
118
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspacePackagePaths.ts"],"sourcesContent":["import glob, { type Options as GlobOptions } from \"fast-glob\";\nimport path from \"path\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities, type WorkspaceManagerAndRoot } from \"./implementations\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\nimport { wrapWorkspaceUtility, wrapAsyncWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/** Mapping from root path to resolved package paths, or undefined if there was an error */\nconst packagePathsCache = new Map<string, string[] | undefined>();\n\nconst globOptions: GlobOptions = {\n absolute: true,\n ignore: [\"**/node_modules/**\", \"**/__fixtures__/**\"],\n stats: false,\n};\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePackagePaths(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = glob.sync(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport async function getWorkspacePackagePathsAsync(\n cwd: string,\n managerOverride?: WorkspaceManager\n): Promise<string[] | undefined> {\n return wrapAsyncWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: async ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = await glob(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Handles the shared synchronous initial logic:\n * - Used the cached result if available\n * - Else, call `getWorkspacePackagePatterns`\n * - If the results are relative paths (not patterns), resolve, cache, and return them\n * - Else, return the prepared globs for sync or async resolution as appropriate.\n */\nfunction getInitialPathsOrGlobs(\n params: WorkspaceManagerAndRoot\n): { globs: string[] } | { resolvedPaths: string[] } | undefined {\n const canCache = isCachingEnabled();\n if (canCache && packagePathsCache.has(params.root)) {\n // Return the cached result, even if it was a failure\n const cachedPaths = packagePathsCache.get(params.root);\n return cachedPaths && { resolvedPaths: cachedPaths };\n }\n\n const managerUtilities = getWorkspaceUtilities(params.manager);\n const managerSetting = managerUtilities.getWorkspacePatterns({ root: params.root });\n\n if (managerSetting?.type === \"pattern\") {\n return {\n globs: managerSetting.patterns.map((p) => path.join(p, \"package.json\").replace(/\\\\/g, \"/\")),\n };\n }\n\n if (managerSetting?.type === \"path\") {\n const resolvedPaths = managerSetting.patterns.map((p) => path.resolve(params.root, p));\n if (canCache) {\n packagePathsCache.set(params.root, resolvedPaths);\n }\n return { resolvedPaths };\n }\n\n return undefined;\n}\n\n/**\n * Given the results from globbing package.json files, resolve to package folder paths\n * and cache the results.\n */\nfunction resolveAndCacheGlobResults(params: { root: string; globResults: string[] }) {\n const { root, globResults } = params;\n const resolvedPaths = globResults.map((packageJsonPath) => {\n const packagePath = path.dirname(packageJsonPath);\n return path.sep === \"/\" ? packagePath : packagePath.replace(/\\//g, path.sep);\n });\n if (isCachingEnabled()) {\n packagePathsCache.set(root, resolvedPaths);\n }\n return resolvedPaths;\n}\n"],"names":["getWorkspacePackagePaths","getWorkspacePackagePathsAsync","packagePathsCache","Map","globOptions","absolute","ignore","stats","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","initialResult","getInitialPathsOrGlobs","resolvedPaths","globResults","glob","sync","globs","resolveAndCacheGlobResults","err","isCachingEnabled","set","undefined","wrapAsyncWorkspaceUtility","params","canCache","has","cachedPaths","get","managerUtilities","getWorkspaceUtilities","managerSetting","getWorkspacePatterns","type","patterns","map","p","path","join","replace","resolve","packageJsonPath","packagePath","dirname","sep"],"mappings":";;;;;;;;;;;QA2BgBA;eAAAA;;QAiCMC;eAAAA;;;iEA5D4B;6DACjC;iCAEmD;kCACnC;sCAC+B;;;;;;AAEhE,yFAAyF,GACzF,MAAMC,oBAAoB,IAAIC;AAE9B,MAAMC,cAA2B;IAC/BC,UAAU;IACVC,QAAQ;QAAC;QAAsB;KAAqB;IACpDC,OAAO;AACT;AAaO,SAASP,yBAAyBQ,GAAW,EAAEC,eAAkC;IACtF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAcC,iBAAI,CAACC,IAAI,CAACL,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAC/E,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAaO,eAAetB,8BACpBO,GAAW,EACXC,eAAkC;IAElC,OAAOkB,IAAAA,+CAAyB,EAAC;QAC/BnB;QACAC;QACAE,aAAa;QACbC,MAAM,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAE;YAC5B,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAc,MAAMC,IAAAA,iBAAI,EAACJ,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAChF,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAEA;;;;;;CAMC,GACD,SAASP,uBACPY,MAA+B;IAE/B,MAAMC,WAAWL,IAAAA,kCAAgB;IACjC,IAAIK,YAAY3B,kBAAkB4B,GAAG,CAACF,OAAOd,IAAI,GAAG;QAClD,qDAAqD;QACrD,MAAMiB,cAAc7B,kBAAkB8B,GAAG,CAACJ,OAAOd,IAAI;QACrD,OAAOiB,eAAe;YAAEd,eAAec;QAAY;IACrD;IAEA,MAAME,mBAAmBC,IAAAA,sCAAqB,EAACN,OAAOf,OAAO;IAC7D,MAAMsB,iBAAiBF,iBAAiBG,oBAAoB,CAAC;QAAEtB,MAAMc,OAAOd,IAAI;IAAC;IAEjF,IAAIqB,gBAAgBE,SAAS,WAAW;QACtC,OAAO;YACLhB,OAAOc,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACC,IAAI,CAACF,GAAG,gBAAgBG,OAAO,CAAC,OAAO;QACxF;IACF;IAEA,IAAIR,gBAAgBE,SAAS,QAAQ;QACnC,MAAMpB,gBAAgBkB,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACG,OAAO,CAAChB,OAAOd,IAAI,EAAE0B;QACnF,IAAIX,UAAU;YACZ3B,kBAAkBuB,GAAG,CAACG,OAAOd,IAAI,EAAEG;QACrC;QACA,OAAO;YAAEA;QAAc;IACzB;IAEA,OAAOS;AACT;AAEA;;;CAGC,GACD,SAASJ,2BAA2BM,MAA+C;IACjF,MAAM,EAAEd,IAAI,EAAEI,WAAW,EAAE,GAAGU;IAC9B,MAAMX,gBAAgBC,YAAYqB,GAAG,CAAC,CAACM;QACrC,MAAMC,cAAcL,aAAI,CAACM,OAAO,CAACF;QACjC,OAAOJ,aAAI,CAACO,GAAG,KAAK,MAAMF,cAAcA,YAAYH,OAAO,CAAC,OAAOF,aAAI,CAACO,GAAG;IAC7E;IACA,IAAIxB,IAAAA,kCAAgB,KAAI;QACtBtB,kBAAkBuB,GAAG,CAACX,MAAMG;IAC9B;IACA,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspacePackagePaths.ts"],"sourcesContent":["import glob, { type Options as GlobOptions } from \"fast-glob\";\nimport path from \"path\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities, type WorkspaceManagerAndRoot } from \"./implementations/index.js\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\nimport { wrapWorkspaceUtility, wrapAsyncWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/** Mapping from root path to resolved package paths, or undefined if there was an error */\nconst packagePathsCache = new Map<string, string[] | undefined>();\n\nconst globOptions: GlobOptions = {\n absolute: true,\n ignore: [\"**/node_modules/**\", \"**/__fixtures__/**\"],\n stats: false,\n};\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePackagePaths(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = glob.sync(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport async function getWorkspacePackagePathsAsync(\n cwd: string,\n managerOverride?: WorkspaceManager\n): Promise<string[] | undefined> {\n return wrapAsyncWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: async ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = await glob(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Handles the shared synchronous initial logic:\n * - Used the cached result if available\n * - Else, call `getWorkspacePackagePatterns`\n * - If the results are relative paths (not patterns), resolve, cache, and return them\n * - Else, return the prepared globs for sync or async resolution as appropriate.\n */\nfunction getInitialPathsOrGlobs(\n params: WorkspaceManagerAndRoot\n): { globs: string[] } | { resolvedPaths: string[] } | undefined {\n const canCache = isCachingEnabled();\n if (canCache && packagePathsCache.has(params.root)) {\n // Return the cached result, even if it was a failure\n const cachedPaths = packagePathsCache.get(params.root);\n return cachedPaths && { resolvedPaths: cachedPaths };\n }\n\n const managerUtilities = getWorkspaceUtilities(params.manager);\n const managerSetting = managerUtilities.getWorkspacePatterns({ root: params.root });\n\n if (managerSetting?.type === \"pattern\") {\n return {\n globs: managerSetting.patterns.map((p) => path.join(p, \"package.json\").replace(/\\\\/g, \"/\")),\n };\n }\n\n if (managerSetting?.type === \"path\") {\n const resolvedPaths = managerSetting.patterns.map((p) => path.resolve(params.root, p));\n if (canCache) {\n packagePathsCache.set(params.root, resolvedPaths);\n }\n return { resolvedPaths };\n }\n\n return undefined;\n}\n\n/**\n * Given the results from globbing package.json files, resolve to package folder paths\n * and cache the results.\n */\nfunction resolveAndCacheGlobResults(params: { root: string; globResults: string[] }) {\n const { root, globResults } = params;\n const resolvedPaths = globResults.map((packageJsonPath) => {\n const packagePath = path.dirname(packageJsonPath);\n return path.sep === \"/\" ? packagePath : packagePath.replace(/\\//g, path.sep);\n });\n if (isCachingEnabled()) {\n packagePathsCache.set(root, resolvedPaths);\n }\n return resolvedPaths;\n}\n"],"names":["getWorkspacePackagePaths","getWorkspacePackagePathsAsync","packagePathsCache","Map","globOptions","absolute","ignore","stats","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","initialResult","getInitialPathsOrGlobs","resolvedPaths","globResults","glob","sync","globs","resolveAndCacheGlobResults","err","isCachingEnabled","set","undefined","wrapAsyncWorkspaceUtility","params","canCache","has","cachedPaths","get","managerUtilities","getWorkspaceUtilities","managerSetting","getWorkspacePatterns","type","patterns","map","p","path","join","replace","resolve","packageJsonPath","packagePath","dirname","sep"],"mappings":";;;;;;;;;;;;;;;QA2BgBA;eAAAA;;QAiCMC;eAAAA;;;iEA5D4B;6DACjC;uBAEmD;kCACnC;sCAC+B;;;;;;AAEhE,yFAAyF,GACzF,MAAMC,oBAAoB,IAAIC;AAE9B,MAAMC,cAA2B;IAC/BC,UAAU;IACVC,QAAQ;QAAC;QAAsB;KAAqB;IACpDC,OAAO;AACT;AAaO,SAASP,yBAAyBQ,GAAW,EAAEC,eAAkC;IACtF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAcC,iBAAI,CAACC,IAAI,CAACL,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAC/E,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAaO,eAAetB,8BACpBO,GAAW,EACXC,eAAkC;IAElC,OAAOkB,IAAAA,+CAAyB,EAAC;QAC/BnB;QACAC;QACAE,aAAa;QACbC,MAAM,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAE;YAC5B,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAc,MAAMC,IAAAA,iBAAI,EAACJ,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAChF,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAEA;;;;;;CAMC,GACD,SAASP,uBACPY,MAA+B;IAE/B,MAAMC,WAAWL,IAAAA,kCAAgB;IACjC,IAAIK,YAAY3B,kBAAkB4B,GAAG,CAACF,OAAOd,IAAI,GAAG;QAClD,qDAAqD;QACrD,MAAMiB,cAAc7B,kBAAkB8B,GAAG,CAACJ,OAAOd,IAAI;QACrD,OAAOiB,eAAe;YAAEd,eAAec;QAAY;IACrD;IAEA,MAAME,mBAAmBC,IAAAA,4BAAqB,EAACN,OAAOf,OAAO;IAC7D,MAAMsB,iBAAiBF,iBAAiBG,oBAAoB,CAAC;QAAEtB,MAAMc,OAAOd,IAAI;IAAC;IAEjF,IAAIqB,gBAAgBE,SAAS,WAAW;QACtC,OAAO;YACLhB,OAAOc,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACC,IAAI,CAACF,GAAG,gBAAgBG,OAAO,CAAC,OAAO;QACxF;IACF;IAEA,IAAIR,gBAAgBE,SAAS,QAAQ;QACnC,MAAMpB,gBAAgBkB,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACG,OAAO,CAAChB,OAAOd,IAAI,EAAE0B;QACnF,IAAIX,UAAU;YACZ3B,kBAAkBuB,GAAG,CAACG,OAAOd,IAAI,EAAEG;QACrC;QACA,OAAO;YAAEA;QAAc;IACzB;IAEA,OAAOS;AACT;AAEA;;;CAGC,GACD,SAASJ,2BAA2BM,MAA+C;IACjF,MAAM,EAAEd,IAAI,EAAEI,WAAW,EAAE,GAAGU;IAC9B,MAAMX,gBAAgBC,YAAYqB,GAAG,CAAC,CAACM;QACrC,MAAMC,cAAcL,aAAI,CAACM,OAAO,CAACF;QACjC,OAAOJ,aAAI,CAACO,GAAG,KAAK,MAAMF,cAAcA,YAAYH,OAAO,CAAC,OAAOF,aAAI,CAACO,GAAG;IAC7E;IACA,IAAIxB,IAAAA,kCAAgB,KAAI;QACtBtB,kBAAkBuB,GAAG,CAACX,MAAMG;IAC9B;IACA,OAAOA;AACT"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "getWorkspacePatterns", {
8
8
  return getWorkspacePatterns;
9
9
  }
10
10
  });
11
- const _implementations = require("./implementations");
11
+ const _index = require("./implementations/index.js");
12
12
  const _wrapWorkspaceUtility = require("./wrapWorkspaceUtility.js");
13
13
  function getWorkspacePatterns(cwd, managerOverride) {
14
14
  return (0, _wrapWorkspaceUtility.wrapWorkspaceUtility)({
@@ -16,7 +16,7 @@ function getWorkspacePatterns(cwd, managerOverride) {
16
16
  managerOverride,
17
17
  description: "workspace patterns",
18
18
  impl: ({ manager, root })=>{
19
- const managerUtilities = (0, _implementations.getWorkspaceUtilities)(manager);
19
+ const managerUtilities = (0, _index.getWorkspaceUtilities)(manager);
20
20
  return managerUtilities.getWorkspacePatterns({
21
21
  root
22
22
  })?.patterns;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspacePatterns.ts"],"sourcesContent":["import type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get the original glob patterns from the manager's workspaces config.\n * (Calculation of the workspace manager and root for `cwd` is cached internally.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of patterns, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePatterns(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace patterns\",\n impl: ({ manager, root }) => {\n const managerUtilities = getWorkspaceUtilities(manager);\n return managerUtilities.getWorkspacePatterns({ root })?.patterns;\n },\n });\n}\n"],"names":["getWorkspacePatterns","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","managerUtilities","getWorkspaceUtilities","patterns"],"mappings":";;;;+BAagBA;;;eAAAA;;;iCAZsB;sCACD;AAW9B,SAASA,qBAAqBC,GAAW,EAAEC,eAAkC;IAClF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,mBAAmBC,IAAAA,sCAAqB,EAACH;YAC/C,OAAOE,iBAAiBR,oBAAoB,CAAC;gBAAEO;YAAK,IAAIG;QAC1D;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspacePatterns.ts"],"sourcesContent":["import type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations/index.js\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get the original glob patterns from the manager's workspaces config.\n * (Calculation of the workspace manager and root for `cwd` is cached internally.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of patterns, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePatterns(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace patterns\",\n impl: ({ manager, root }) => {\n const managerUtilities = getWorkspaceUtilities(manager);\n return managerUtilities.getWorkspacePatterns({ root })?.patterns;\n },\n });\n}\n"],"names":["getWorkspacePatterns","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","managerUtilities","getWorkspaceUtilities","patterns"],"mappings":";;;;+BAagBA;;;eAAAA;;;uBAZsB;sCACD;AAW9B,SAASA,qBAAqBC,GAAW,EAAEC,eAAkC;IAClF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,mBAAmBC,IAAAA,4BAAqB,EAACH;YAC/C,OAAOE,iBAAiBR,oBAAoB,CAAC;gBAAEO;YAAK,IAAIG;QAC1D;IACF;AACF"}
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getPreferredWorkspaceManager: null,
7
+ getWorkspaceManagerAndRoot: null,
8
+ managerFiles: null
9
+ });
5
10
  function _export(target, all) {
6
11
  for(var name in all)Object.defineProperty(target, name, {
7
12
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workspaces/implementations/getWorkspaceManagerAndRoot.ts"],"sourcesContent":["import path from \"path\";\nimport { isCachingEnabled } from \"../../isCachingEnabled.js\";\nimport { searchUp } from \"../../paths.js\";\nimport { type WorkspaceManager } from \"../../types/WorkspaceManager.js\";\n\nexport interface WorkspaceManagerAndRoot {\n /** Workspace/monorepo manager name */\n manager: WorkspaceManager;\n /** Monorepo root, where the manager configuration file is located */\n root: string;\n}\n\nconst workspaceCache = new Map<string, WorkspaceManagerAndRoot | undefined>();\n\n/**\n * Files indicating the monorepo root for each manager.\n *\n * DO NOT REORDER! The order of keys determines the precedence of the files, which is\n * important for cases like lerna where lerna.json and e.g. yarn.lock may both exist.\n */\nexport const managerFiles = {\n // DO NOT REORDER! (see above)\n lerna: \"lerna.json\",\n rush: \"rush.json\",\n yarn: \"yarn.lock\",\n pnpm: \"pnpm-workspace.yaml\",\n npm: \"package-lock.json\",\n} as const;\n\n/**\n * Get the preferred workspace/monorepo manager based on `process.env.PREFERRED_WORKSPACE_MANAGER`\n * (if valid).\n */\nexport function getPreferredWorkspaceManager(): WorkspaceManager | undefined {\n const preferred = process.env.PREFERRED_WORKSPACE_MANAGER as WorkspaceManager | undefined;\n return preferred && managerFiles[preferred] ? preferred : undefined;\n}\n\n/**\n * Get the workspace/monorepo manager name and root directory for `cwd`, with caching.\n *\n * @param cwd Directory to search up from\n * @param cache Optional override cache for testing\n * @param managerOverride Optional override manager (if provided, only searches for this manager's file).\n * Also respects `process.env.PREFERRED_WORKSPACE_MANAGER`.\n *\n * @returns Workspace/monorepo manager and root, or undefined if it can't be determined\n */\nexport function getWorkspaceManagerAndRoot(\n cwd: string,\n cache?: Map<string, WorkspaceManagerAndRoot | undefined>,\n managerOverride?: WorkspaceManager\n): WorkspaceManagerAndRoot | undefined {\n cache = cache || workspaceCache;\n if (isCachingEnabled() && cache.has(cwd)) {\n return cache.get(cwd);\n }\n\n managerOverride ??= getPreferredWorkspaceManager();\n const filesToSearch = managerOverride ? managerFiles[managerOverride] : Object.values(managerFiles);\n const managerFile = searchUp(filesToSearch, cwd);\n\n if (managerFile) {\n const managerFileName = path.basename(managerFile);\n cache.set(cwd, {\n manager:\n managerOverride ||\n (Object.keys(managerFiles) as WorkspaceManager[]).find((name) => managerFiles[name] === managerFileName)!,\n root: path.dirname(managerFile),\n });\n } else {\n // Avoid searching again if no file was found\n cache.set(cwd, undefined);\n }\n\n return cache.get(cwd);\n}\n"],"names":["getPreferredWorkspaceManager","getWorkspaceManagerAndRoot","managerFiles","workspaceCache","Map","lerna","rush","yarn","pnpm","npm","preferred","process","env","PREFERRED_WORKSPACE_MANAGER","undefined","cwd","cache","managerOverride","isCachingEnabled","has","get","filesToSearch","Object","values","managerFile","searchUp","managerFileName","path","basename","set","manager","keys","find","name","root","dirname"],"mappings":";;;;;;;;;;;QAiCgBA;eAAAA;;QAeAC;eAAAA;;QA5BHC;eAAAA;;;6DApBI;kCACgB;uBACR;;;;;;AAUzB,MAAMC,iBAAiB,IAAIC;AAQpB,MAAMF,eAAe;IAC1B,8BAA8B;IAC9BG,OAAO;IACPC,MAAM;IACNC,MAAM;IACNC,MAAM;IACNC,KAAK;AACP;AAMO,SAAST;IACd,MAAMU,YAAYC,QAAQC,GAAG,CAACC,2BAA2B;IACzD,OAAOH,aAAaR,YAAY,CAACQ,UAAU,GAAGA,YAAYI;AAC5D;AAYO,SAASb,2BACdc,GAAW,EACXC,KAAwD,EACxDC,eAAkC;IAElCD,QAAQA,SAASb;IACjB,IAAIe,IAAAA,kCAAgB,OAAMF,MAAMG,GAAG,CAACJ,MAAM;QACxC,OAAOC,MAAMI,GAAG,CAACL;IACnB;IAEAE,oBAAAA,kBAAoBjB;IACpB,MAAMqB,gBAAgBJ,kBAAkBf,YAAY,CAACe,gBAAgB,GAAGK,OAAOC,MAAM,CAACrB;IACtF,MAAMsB,cAAcC,IAAAA,eAAQ,EAACJ,eAAeN;IAE5C,IAAIS,aAAa;QACf,MAAME,kBAAkBC,aAAI,CAACC,QAAQ,CAACJ;QACtCR,MAAMa,GAAG,CAACd,KAAK;YACbe,SACEb,mBACA,AAACK,OAAOS,IAAI,CAAC7B,cAAqC8B,IAAI,CAAC,CAACC,OAAS/B,YAAY,CAAC+B,KAAK,KAAKP;YAC1FQ,MAAMP,aAAI,CAACQ,OAAO,CAACX;QACrB;IACF,OAAO;QACL,6CAA6C;QAC7CR,MAAMa,GAAG,CAACd,KAAKD;IACjB;IAEA,OAAOE,MAAMI,GAAG,CAACL;AACnB"}
1
+ {"version":3,"sources":["../../../src/workspaces/implementations/getWorkspaceManagerAndRoot.ts"],"sourcesContent":["import path from \"path\";\nimport { isCachingEnabled } from \"../../isCachingEnabled.js\";\nimport { searchUp } from \"../../paths.js\";\nimport { type WorkspaceManager } from \"../../types/WorkspaceManager.js\";\n\nexport interface WorkspaceManagerAndRoot {\n /** Workspace/monorepo manager name */\n manager: WorkspaceManager;\n /** Monorepo root, where the manager configuration file is located */\n root: string;\n}\n\nconst workspaceCache = new Map<string, WorkspaceManagerAndRoot | undefined>();\n\n/**\n * Files indicating the monorepo root for each manager.\n *\n * DO NOT REORDER! The order of keys determines the precedence of the files, which is\n * important for cases like lerna where lerna.json and e.g. yarn.lock may both exist.\n */\nexport const managerFiles = {\n // DO NOT REORDER! (see above)\n lerna: \"lerna.json\",\n rush: \"rush.json\",\n yarn: \"yarn.lock\",\n pnpm: \"pnpm-workspace.yaml\",\n npm: \"package-lock.json\",\n} as const;\n\n/**\n * Get the preferred workspace/monorepo manager based on `process.env.PREFERRED_WORKSPACE_MANAGER`\n * (if valid).\n */\nexport function getPreferredWorkspaceManager(): WorkspaceManager | undefined {\n const preferred = process.env.PREFERRED_WORKSPACE_MANAGER as WorkspaceManager | undefined;\n return preferred && managerFiles[preferred] ? preferred : undefined;\n}\n\n/**\n * Get the workspace/monorepo manager name and root directory for `cwd`, with caching.\n *\n * @param cwd Directory to search up from\n * @param cache Optional override cache for testing\n * @param managerOverride Optional override manager (if provided, only searches for this manager's file).\n * Also respects `process.env.PREFERRED_WORKSPACE_MANAGER`.\n *\n * @returns Workspace/monorepo manager and root, or undefined if it can't be determined\n */\nexport function getWorkspaceManagerAndRoot(\n cwd: string,\n cache?: Map<string, WorkspaceManagerAndRoot | undefined>,\n managerOverride?: WorkspaceManager\n): WorkspaceManagerAndRoot | undefined {\n cache = cache || workspaceCache;\n if (isCachingEnabled() && cache.has(cwd)) {\n return cache.get(cwd);\n }\n\n managerOverride ??= getPreferredWorkspaceManager();\n const filesToSearch = managerOverride ? managerFiles[managerOverride] : Object.values(managerFiles);\n const managerFile = searchUp(filesToSearch, cwd);\n\n if (managerFile) {\n const managerFileName = path.basename(managerFile);\n cache.set(cwd, {\n manager:\n managerOverride ||\n (Object.keys(managerFiles) as WorkspaceManager[]).find((name) => managerFiles[name] === managerFileName)!,\n root: path.dirname(managerFile),\n });\n } else {\n // Avoid searching again if no file was found\n cache.set(cwd, undefined);\n }\n\n return cache.get(cwd);\n}\n"],"names":["getPreferredWorkspaceManager","getWorkspaceManagerAndRoot","managerFiles","workspaceCache","Map","lerna","rush","yarn","pnpm","npm","preferred","process","env","PREFERRED_WORKSPACE_MANAGER","undefined","cwd","cache","managerOverride","isCachingEnabled","has","get","filesToSearch","Object","values","managerFile","searchUp","managerFileName","path","basename","set","manager","keys","find","name","root","dirname"],"mappings":";;;;;;;;;;;;;;;;QAiCgBA;eAAAA;;QAeAC;eAAAA;;QA5BHC;eAAAA;;;6DApBI;kCACgB;uBACR;;;;;;AAUzB,MAAMC,iBAAiB,IAAIC;AAQpB,MAAMF,eAAe;IAC1B,8BAA8B;IAC9BG,OAAO;IACPC,MAAM;IACNC,MAAM;IACNC,MAAM;IACNC,KAAK;AACP;AAMO,SAAST;IACd,MAAMU,YAAYC,QAAQC,GAAG,CAACC,2BAA2B;IACzD,OAAOH,aAAaR,YAAY,CAACQ,UAAU,GAAGA,YAAYI;AAC5D;AAYO,SAASb,2BACdc,GAAW,EACXC,KAAwD,EACxDC,eAAkC;IAElCD,QAAQA,SAASb;IACjB,IAAIe,IAAAA,kCAAgB,OAAMF,MAAMG,GAAG,CAACJ,MAAM;QACxC,OAAOC,MAAMI,GAAG,CAACL;IACnB;IAEAE,oBAAAA,kBAAoBjB;IACpB,MAAMqB,gBAAgBJ,kBAAkBf,YAAY,CAACe,gBAAgB,GAAGK,OAAOC,MAAM,CAACrB;IACtF,MAAMsB,cAAcC,IAAAA,eAAQ,EAACJ,eAAeN;IAE5C,IAAIS,aAAa;QACf,MAAME,kBAAkBC,aAAI,CAACC,QAAQ,CAACJ;QACtCR,MAAMa,GAAG,CAACd,KAAK;YACbe,SACEb,mBACA,AAACK,OAAOS,IAAI,CAAC7B,cAAqC8B,IAAI,CAAC,CAACC,OAAS/B,YAAY,CAAC+B,KAAK,KAAKP;YAC1FQ,MAAMP,aAAI,CAACQ,OAAO,CAACX;QACrB;IACF,OAAO;QACL,6CAA6C;QAC7CR,MAAMa,GAAG,CAACd,KAAKD;IACjB;IAEA,OAAOE,MAAMI,GAAG,CAACL;AACnB"}