workspace-tools 0.41.2 → 0.41.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) 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/git.js +8 -0
  10. package/lib/git/git.js.map +1 -1
  11. package/lib/git/gitUtilities.js +27 -0
  12. package/lib/git/gitUtilities.js.map +1 -1
  13. package/lib/git/index.js +10 -0
  14. package/lib/git/index.js.map +1 -1
  15. package/lib/graph/index.js +1 -0
  16. package/lib/graph/index.js.map +1 -1
  17. package/lib/index.js +39 -0
  18. package/lib/index.js.map +1 -1
  19. package/lib/isCachingEnabled.js +4 -0
  20. package/lib/isCachingEnabled.js.map +1 -1
  21. package/lib/paths.js +7 -0
  22. package/lib/paths.js.map +1 -1
  23. package/lib/workspaces/getAllPackageJsonFiles.js +5 -0
  24. package/lib/workspaces/getAllPackageJsonFiles.js.map +1 -1
  25. package/lib/workspaces/getCatalogVersion.js +4 -0
  26. package/lib/workspaces/getCatalogVersion.js.map +1 -1
  27. package/lib/workspaces/getChangedPackages.js +4 -0
  28. package/lib/workspaces/getChangedPackages.js.map +1 -1
  29. package/lib/workspaces/getWorkspaceInfos.js +4 -0
  30. package/lib/workspaces/getWorkspaceInfos.js.map +1 -1
  31. package/lib/workspaces/getWorkspacePackagePaths.js +4 -0
  32. package/lib/workspaces/getWorkspacePackagePaths.js.map +1 -1
  33. package/lib/workspaces/implementations/getWorkspaceManagerAndRoot.js +5 -0
  34. package/lib/workspaces/implementations/getWorkspaceManagerAndRoot.js.map +1 -1
  35. package/lib/workspaces/implementations/index.js +4 -0
  36. package/lib/workspaces/implementations/index.js.map +1 -1
  37. package/lib/workspaces/wrapWorkspaceUtility.js +4 -0
  38. package/lib/workspaces/wrapWorkspaceUtility.js.map +1 -1
  39. package/package.json +2 -2
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getInternalDeps: null,
7
+ getTransitiveConsumers: null,
8
+ getTransitiveDependencies: null,
9
+ getTransitiveDependents: null,
10
+ getTransitiveProviders: null
11
+ });
5
12
  function _export(target, all) {
6
13
  for(var name in all)Object.defineProperty(target, name, {
7
14
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/dependencies/index.ts"],"sourcesContent":["import { getTransitiveConsumers, getTransitiveProviders } from \"./transitiveDeps.js\";\nimport { getPackageDependencies } from \"../graph/getPackageDependencies.js\";\n\n// Some deprecated functions below for backwards compatibility\n\nexport const getTransitiveDependencies = getTransitiveProviders;\n\nexport { getTransitiveProviders };\n\nexport const getTransitiveDependents = getTransitiveConsumers;\n\nexport { getTransitiveConsumers };\n\n/** @deprecated Do not use */\nexport const getInternalDeps = getPackageDependencies;\n"],"names":["getInternalDeps","getTransitiveConsumers","getTransitiveDependencies","getTransitiveDependents","getTransitiveProviders","getPackageDependencies"],"mappings":";;;;;;;;;;;QAcaA;eAAAA;;QAHJC;eAAAA,sCAAsB;;QANlBC;eAAAA;;QAIAC;eAAAA;;QAFJC;eAAAA,sCAAsB;;;gCAPgC;wCACxB;AAIhC,MAAMF,4BAA4BE,sCAAsB;AAIxD,MAAMD,0BAA0BF,sCAAsB;AAKtD,MAAMD,kBAAkBK,8CAAsB"}
1
+ {"version":3,"sources":["../../src/dependencies/index.ts"],"sourcesContent":["import { getTransitiveConsumers, getTransitiveProviders } from \"./transitiveDeps.js\";\nimport { getPackageDependencies } from \"../graph/getPackageDependencies.js\";\n\n// Some deprecated functions below for backwards compatibility\n\nexport const getTransitiveDependencies = getTransitiveProviders;\n\nexport { getTransitiveProviders };\n\nexport const getTransitiveDependents = getTransitiveConsumers;\n\nexport { getTransitiveConsumers };\n\n/** @deprecated Do not use */\nexport const getInternalDeps = getPackageDependencies;\n"],"names":["getInternalDeps","getTransitiveConsumers","getTransitiveDependencies","getTransitiveDependents","getTransitiveProviders","getPackageDependencies"],"mappings":";;;;;;;;;;;;;;;;;;QAcaA;eAAAA;;QAHJC;eAAAA,sCAAsB;;QANlBC;eAAAA;;QAIAC;eAAAA;;QAFJC;eAAAA,sCAAsB;;;gCAPgC;wCACxB;AAIhC,MAAMF,4BAA4BE,sCAAsB;AAIxD,MAAMD,0BAA0BF,sCAAsB;AAKtD,MAAMD,kBAAkBK,8CAAsB"}
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getDependentMap: null,
7
+ getTransitiveConsumers: null,
8
+ getTransitiveProviders: 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/dependencies/transitiveDeps.ts"],"sourcesContent":["import { type PackageInfos } from \"../types/PackageInfo.js\";\nimport { getPackageDependencies } from \"../graph/getPackageDependencies.js\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\n\nconst graphCache = new Map<string, [string | null, string][]>();\n\nfunction memoizedKey(packages: PackageInfos, scope: string[] = []) {\n return JSON.stringify({ packages, scope });\n}\n\nfunction getPackageGraph(packages: PackageInfos, scope: string[] = []) {\n const internalPackages = new Set(Object.keys(packages));\n const key = memoizedKey(packages, scope);\n\n if (isCachingEnabled() && graphCache.has(key)) {\n return graphCache.get(key)!;\n }\n\n const edges: [string | null, string][] = [];\n\n const visited = new Set<string>();\n const stack: string[] = scope.length > 0 ? [...scope] : Object.keys(packages);\n\n while (stack.length > 0) {\n const pkg = stack.pop()!;\n\n if (visited.has(pkg)) {\n continue;\n }\n\n visited.add(pkg);\n\n const info = packages[pkg];\n const deps = getPackageDependencies(info, internalPackages);\n\n if (deps.length > 0) {\n for (const dep of deps) {\n stack.push(dep);\n edges.push([dep, pkg]);\n }\n } else {\n edges.push([null, pkg]);\n }\n }\n\n graphCache.set(key, edges);\n\n return edges;\n}\n\nexport function getDependentMap(packages: PackageInfos): Map<string, Set<string>> {\n const graph = getPackageGraph(packages);\n const map = new Map<string, Set<string>>();\n for (const [from, to] of graph) {\n if (!map.has(to)) {\n map.set(to, new Set());\n }\n\n if (from) {\n map.get(to)!.add(from);\n }\n }\n\n return map;\n}\n\n/**\n * For a package graph of `a->b->c` (where `b` depends on `a`), transitive consumers of `a` are `b` & `c`\n * and their consumers (or what are the consequences of `a`)\n * @deprecated Do not use\n */\nexport function getTransitiveConsumers(targets: string[], packages: PackageInfos, scope: string[] = []): string[] {\n const graph = getPackageGraph(packages, scope);\n const pkgQueue: string[] = [...targets];\n const visited = new Set<string>();\n\n while (pkgQueue.length > 0) {\n const pkg = pkgQueue.shift()!;\n\n if (!visited.has(pkg)) {\n visited.add(pkg);\n\n for (const [from, to] of graph) {\n if (from === pkg) {\n pkgQueue.push(to);\n }\n }\n }\n }\n\n return [...visited].filter((pkg) => !targets.includes(pkg));\n}\n\n/**\n * For a package graph of `a->b->c` (where `b` depends on `a`), transitive providers of `c` are `a` & `b`\n * and their providers (or what is needed to satisfy `c`)\n *\n * @deprecated Do not use\n */\nexport function getTransitiveProviders(targets: string[], packages: PackageInfos): string[] {\n const graph = getPackageGraph(packages);\n const pkgQueue: string[] = [...targets];\n const visited = new Set<string>();\n\n while (pkgQueue.length > 0) {\n const pkg = pkgQueue.shift()!;\n\n if (!visited.has(pkg)) {\n visited.add(pkg);\n\n for (const [from, to] of graph) {\n if (to === pkg && from) {\n pkgQueue.push(from);\n }\n }\n }\n }\n\n return [...visited].filter((pkg) => !targets.includes(pkg));\n}\n"],"names":["getDependentMap","getTransitiveConsumers","getTransitiveProviders","graphCache","Map","memoizedKey","packages","scope","JSON","stringify","getPackageGraph","internalPackages","Set","Object","keys","key","isCachingEnabled","has","get","edges","visited","stack","length","pkg","pop","add","info","deps","getPackageDependencies","dep","push","set","graph","map","from","to","targets","pkgQueue","shift","filter","includes"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/dependencies/transitiveDeps.ts"],"sourcesContent":["import { type PackageInfos } from \"../types/PackageInfo.js\";\nimport { getPackageDependencies } from \"../graph/getPackageDependencies.js\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\n\nconst graphCache = new Map<string, [string | null, string][]>();\n\nfunction memoizedKey(packages: PackageInfos, scope: string[] = []) {\n return JSON.stringify({ packages, scope });\n}\n\nfunction getPackageGraph(packages: PackageInfos, scope: string[] = []) {\n const internalPackages = new Set(Object.keys(packages));\n const key = memoizedKey(packages, scope);\n\n if (isCachingEnabled() && graphCache.has(key)) {\n return graphCache.get(key)!;\n }\n\n const edges: [string | null, string][] = [];\n\n const visited = new Set<string>();\n const stack: string[] = scope.length > 0 ? [...scope] : Object.keys(packages);\n\n while (stack.length > 0) {\n const pkg = stack.pop()!;\n\n if (visited.has(pkg)) {\n continue;\n }\n\n visited.add(pkg);\n\n const info = packages[pkg];\n const deps = getPackageDependencies(info, internalPackages);\n\n if (deps.length > 0) {\n for (const dep of deps) {\n stack.push(dep);\n edges.push([dep, pkg]);\n }\n } else {\n edges.push([null, pkg]);\n }\n }\n\n graphCache.set(key, edges);\n\n return edges;\n}\n\nexport function getDependentMap(packages: PackageInfos): Map<string, Set<string>> {\n const graph = getPackageGraph(packages);\n const map = new Map<string, Set<string>>();\n for (const [from, to] of graph) {\n if (!map.has(to)) {\n map.set(to, new Set());\n }\n\n if (from) {\n map.get(to)!.add(from);\n }\n }\n\n return map;\n}\n\n/**\n * For a package graph of `a->b->c` (where `b` depends on `a`), transitive consumers of `a` are `b` & `c`\n * and their consumers (or what are the consequences of `a`)\n * @deprecated Do not use\n */\nexport function getTransitiveConsumers(targets: string[], packages: PackageInfos, scope: string[] = []): string[] {\n const graph = getPackageGraph(packages, scope);\n const pkgQueue: string[] = [...targets];\n const visited = new Set<string>();\n\n while (pkgQueue.length > 0) {\n const pkg = pkgQueue.shift()!;\n\n if (!visited.has(pkg)) {\n visited.add(pkg);\n\n for (const [from, to] of graph) {\n if (from === pkg) {\n pkgQueue.push(to);\n }\n }\n }\n }\n\n return [...visited].filter((pkg) => !targets.includes(pkg));\n}\n\n/**\n * For a package graph of `a->b->c` (where `b` depends on `a`), transitive providers of `c` are `a` & `b`\n * and their providers (or what is needed to satisfy `c`)\n *\n * @deprecated Do not use\n */\nexport function getTransitiveProviders(targets: string[], packages: PackageInfos): string[] {\n const graph = getPackageGraph(packages);\n const pkgQueue: string[] = [...targets];\n const visited = new Set<string>();\n\n while (pkgQueue.length > 0) {\n const pkg = pkgQueue.shift()!;\n\n if (!visited.has(pkg)) {\n visited.add(pkg);\n\n for (const [from, to] of graph) {\n if (to === pkg && from) {\n pkgQueue.push(from);\n }\n }\n }\n }\n\n return [...visited].filter((pkg) => !targets.includes(pkg));\n}\n"],"names":["getDependentMap","getTransitiveConsumers","getTransitiveProviders","graphCache","Map","memoizedKey","packages","scope","JSON","stringify","getPackageGraph","internalPackages","Set","Object","keys","key","isCachingEnabled","has","get","edges","visited","stack","length","pkg","pop","add","info","deps","getPackageDependencies","dep","push","set","graph","map","from","to","targets","pkgQueue","shift","filter","includes"],"mappings":"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"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getPackageInfo: null,
7
+ getPackageInfoAsync: 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/getPackageInfo.ts"],"sourcesContent":["import fs from \"fs\";\nimport fsPromises from \"fs/promises\";\nimport path from \"path\";\nimport type { PackageInfo } from \"./types/PackageInfo.js\";\nimport { logVerboseWarning } from \"./logging.js\";\n\n/**\n * Read package.json from the given path if it exists.\n *\n * @returns The package info, or undefined if it doesn't exist or can't be read.\n * (Logs verbose warnings instead of throwing on error.)\n */\nexport function getPackageInfo(cwd: string): PackageInfo | undefined {\n const packageJsonPath = path.join(cwd, \"package.json\");\n try {\n if (!fs.existsSync(packageJsonPath)) {\n logVerboseWarning(`File does not exist: ${packageJsonPath}`);\n return undefined;\n }\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n return { ...packageJson, packageJsonPath };\n } catch (e) {\n logVerboseWarning(`Error reading or parsing ${packageJsonPath}: ${(e as Error)?.message || e}`);\n }\n}\n\n/**\n * Read package.json from the given path if it exists.\n *\n * @returns The package info, or undefined if it doesn't exist or can't be read.\n * (Logs verbose warnings instead of throwing on error.)\n */\nexport async function getPackageInfoAsync(cwd: string): Promise<PackageInfo | undefined> {\n const packageJsonPath = path.join(cwd, \"package.json\");\n try {\n if (!fs.existsSync(packageJsonPath)) {\n logVerboseWarning(`File does not exist: ${packageJsonPath}`);\n return undefined;\n }\n\n const packageJson = JSON.parse(await fsPromises.readFile(packageJsonPath, \"utf-8\"));\n return { ...packageJson, packageJsonPath };\n } catch (e) {\n logVerboseWarning(`Error reading or parsing ${packageJsonPath}: ${(e as Error)?.message || e}`);\n }\n}\n"],"names":["getPackageInfo","getPackageInfoAsync","cwd","packageJsonPath","path","join","fs","existsSync","logVerboseWarning","undefined","packageJson","JSON","parse","readFileSync","e","message","fsPromises","readFile"],"mappings":";;;;;;;;;;;QAYgBA;eAAAA;;QAqBMC;eAAAA;;;2DAjCP;iEACQ;6DACN;yBAEiB;;;;;;AAQ3B,SAASD,eAAeE,GAAW;IACxC,MAAMC,kBAAkBC,aAAI,CAACC,IAAI,CAACH,KAAK;IACvC,IAAI;QACF,IAAI,CAACI,WAAE,CAACC,UAAU,CAACJ,kBAAkB;YACnCK,IAAAA,0BAAiB,EAAC,CAAC,qBAAqB,EAAEL,iBAAiB;YAC3D,OAAOM;QACT;QAEA,MAAMC,cAAcC,KAAKC,KAAK,CAACN,WAAE,CAACO,YAAY,CAACV,iBAAiB;QAChE,OAAO;YAAE,GAAGO,WAAW;YAAEP;QAAgB;IAC3C,EAAE,OAAOW,GAAG;QACVN,IAAAA,0BAAiB,EAAC,CAAC,yBAAyB,EAAEL,gBAAgB,EAAE,EAAE,AAACW,GAAaC,WAAWD,GAAG;IAChG;AACF;AAQO,eAAeb,oBAAoBC,GAAW;IACnD,MAAMC,kBAAkBC,aAAI,CAACC,IAAI,CAACH,KAAK;IACvC,IAAI;QACF,IAAI,CAACI,WAAE,CAACC,UAAU,CAACJ,kBAAkB;YACnCK,IAAAA,0BAAiB,EAAC,CAAC,qBAAqB,EAAEL,iBAAiB;YAC3D,OAAOM;QACT;QAEA,MAAMC,cAAcC,KAAKC,KAAK,CAAC,MAAMI,iBAAU,CAACC,QAAQ,CAACd,iBAAiB;QAC1E,OAAO;YAAE,GAAGO,WAAW;YAAEP;QAAgB;IAC3C,EAAE,OAAOW,GAAG;QACVN,IAAAA,0BAAiB,EAAC,CAAC,yBAAyB,EAAEL,gBAAgB,EAAE,EAAE,AAACW,GAAaC,WAAWD,GAAG;IAChG;AACF"}
1
+ {"version":3,"sources":["../src/getPackageInfo.ts"],"sourcesContent":["import fs from \"fs\";\nimport fsPromises from \"fs/promises\";\nimport path from \"path\";\nimport type { PackageInfo } from \"./types/PackageInfo.js\";\nimport { logVerboseWarning } from \"./logging.js\";\n\n/**\n * Read package.json from the given path if it exists.\n *\n * @returns The package info, or undefined if it doesn't exist or can't be read.\n * (Logs verbose warnings instead of throwing on error.)\n */\nexport function getPackageInfo(cwd: string): PackageInfo | undefined {\n const packageJsonPath = path.join(cwd, \"package.json\");\n try {\n if (!fs.existsSync(packageJsonPath)) {\n logVerboseWarning(`File does not exist: ${packageJsonPath}`);\n return undefined;\n }\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n return { ...packageJson, packageJsonPath };\n } catch (e) {\n logVerboseWarning(`Error reading or parsing ${packageJsonPath}: ${(e as Error)?.message || e}`);\n }\n}\n\n/**\n * Read package.json from the given path if it exists.\n *\n * @returns The package info, or undefined if it doesn't exist or can't be read.\n * (Logs verbose warnings instead of throwing on error.)\n */\nexport async function getPackageInfoAsync(cwd: string): Promise<PackageInfo | undefined> {\n const packageJsonPath = path.join(cwd, \"package.json\");\n try {\n if (!fs.existsSync(packageJsonPath)) {\n logVerboseWarning(`File does not exist: ${packageJsonPath}`);\n return undefined;\n }\n\n const packageJson = JSON.parse(await fsPromises.readFile(packageJsonPath, \"utf-8\"));\n return { ...packageJson, packageJsonPath };\n } catch (e) {\n logVerboseWarning(`Error reading or parsing ${packageJsonPath}: ${(e as Error)?.message || e}`);\n }\n}\n"],"names":["getPackageInfo","getPackageInfoAsync","cwd","packageJsonPath","path","join","fs","existsSync","logVerboseWarning","undefined","packageJson","JSON","parse","readFileSync","e","message","fsPromises","readFile"],"mappings":";;;;;;;;;;;;;;;QAYgBA;eAAAA;;QAqBMC;eAAAA;;;2DAjCP;iEACQ;6DACN;yBAEiB;;;;;;AAQ3B,SAASD,eAAeE,GAAW;IACxC,MAAMC,kBAAkBC,aAAI,CAACC,IAAI,CAACH,KAAK;IACvC,IAAI;QACF,IAAI,CAACI,WAAE,CAACC,UAAU,CAACJ,kBAAkB;YACnCK,IAAAA,0BAAiB,EAAC,CAAC,qBAAqB,EAAEL,iBAAiB;YAC3D,OAAOM;QACT;QAEA,MAAMC,cAAcC,KAAKC,KAAK,CAACN,WAAE,CAACO,YAAY,CAACV,iBAAiB;QAChE,OAAO;YAAE,GAAGO,WAAW;YAAEP;QAAgB;IAC3C,EAAE,OAAOW,GAAG;QACVN,IAAAA,0BAAiB,EAAC,CAAC,yBAAyB,EAAEL,gBAAgB,EAAE,EAAE,AAACW,GAAaC,WAAWD,GAAG;IAChG;AACF;AAQO,eAAeb,oBAAoBC,GAAW;IACnD,MAAMC,kBAAkBC,aAAI,CAACC,IAAI,CAACH,KAAK;IACvC,IAAI;QACF,IAAI,CAACI,WAAE,CAACC,UAAU,CAACJ,kBAAkB;YACnCK,IAAAA,0BAAiB,EAAC,CAAC,qBAAqB,EAAEL,iBAAiB;YAC3D,OAAOM;QACT;QAEA,MAAMC,cAAcC,KAAKC,KAAK,CAAC,MAAMI,iBAAU,CAACC,QAAQ,CAACd,iBAAiB;QAC1E,OAAO;YAAE,GAAGO,WAAW;YAAEP;QAAgB;IAC3C,EAAE,OAAOW,GAAG;QACVN,IAAAA,0BAAiB,EAAC,CAAC,yBAAyB,EAAEL,gBAAgB,EAAE,EAAE,AAACW,GAAaC,WAAWD,GAAG;IAChG;AACF"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getPackageInfos: null,
7
+ getPackageInfosAsync: 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/getPackageInfos.ts"],"sourcesContent":["import { type PackageInfos } from \"./types/PackageInfo.js\";\nimport { getWorkspaceInfos, getWorkspaceInfosAsync } from \"./workspaces/getWorkspaceInfos.js\";\nimport { getPackageInfo } from \"./getPackageInfo.js\";\nimport type { WorkspacePackageInfo } from \"./types/WorkspaceInfo.js\";\nimport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\nimport { findPackageRoot } from \"./paths.js\";\n\n/**\n * Read all the package.json files in a monorepo and return a mapping from package name to info.\n * Only works for monorepos which use a supported workspace/monorepo manager.\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 array listing package names, paths, and contents, use `getWorkspaceInfos` instead.\n * - If no workspace config is found, it will return info for the root package.json if one exists.\n * (This is different than `getWorkspaceInfos`.)\n *\n * @param cwd Start looking for the manager config from here\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Mapping from package name to package info.\n * If no workspace config is found, it will return info for the root package.json if one exists.\n * Will be empty on error (it logs verbose warnings instead of throwing).\n */\nexport function getPackageInfos(cwd: string, managerOverride?: WorkspaceManager): PackageInfos {\n const workspacePackages = getWorkspaceInfos(cwd, managerOverride);\n return buildPackageInfos({ cwd, workspacePackages });\n}\n\n/**\n * Read all the package.json files in a monorepo and return a mapping from package name to info.\n * Only works for monorepos which use a supported workspace/monorepo manager.\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 array listing package names, paths, and contents, use `getWorkspaceInfos` instead.\n *\n * @param cwd Start looking for the manager config from here\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Mapping from package name to package info.\n * If no workspace config is found, it will return info for the root package.json if one exists.\n * Will be empty on error (it logs verbose warnings instead of throwing).\n */\nexport async function getPackageInfosAsync(cwd: string, managerOverride?: WorkspaceManager): Promise<PackageInfos> {\n const workspacePackages = await getWorkspaceInfosAsync(cwd, managerOverride);\n return buildPackageInfos({ cwd, workspacePackages });\n}\n\n/**\n * Convert an array of workspace package infos into a name-to-packageInfo map.\n * If there are no workspace packages, reads the root package.json instead.\n */\nfunction buildPackageInfos(params: {\n cwd: string;\n workspacePackages: WorkspacePackageInfo[] | undefined;\n}): PackageInfos {\n const { cwd, workspacePackages } = params;\n const packageInfos: PackageInfos = {};\n\n if (workspacePackages?.length) {\n for (const pkg of workspacePackages) {\n packageInfos[pkg.name] = pkg.packageJson;\n }\n } else {\n const packageRoot = findPackageRoot(cwd);\n const rootInfo = packageRoot && getPackageInfo(packageRoot);\n if (rootInfo) {\n packageInfos[rootInfo.name] = rootInfo;\n }\n }\n\n return packageInfos;\n}\n"],"names":["getPackageInfos","getPackageInfosAsync","cwd","managerOverride","workspacePackages","getWorkspaceInfos","buildPackageInfos","getWorkspaceInfosAsync","params","packageInfos","length","pkg","name","packageJson","packageRoot","findPackageRoot","rootInfo","getPackageInfo"],"mappings":";;;;;;;;;;;QAyBgBA;eAAAA;;QAuBMC;eAAAA;;;mCA/CoC;gCAC3B;uBAGC;AAoBzB,SAASD,gBAAgBE,GAAW,EAAEC,eAAkC;IAC7E,MAAMC,oBAAoBC,IAAAA,oCAAiB,EAACH,KAAKC;IACjD,OAAOG,kBAAkB;QAAEJ;QAAKE;IAAkB;AACpD;AAoBO,eAAeH,qBAAqBC,GAAW,EAAEC,eAAkC;IACxF,MAAMC,oBAAoB,MAAMG,IAAAA,yCAAsB,EAACL,KAAKC;IAC5D,OAAOG,kBAAkB;QAAEJ;QAAKE;IAAkB;AACpD;AAEA;;;CAGC,GACD,SAASE,kBAAkBE,MAG1B;IACC,MAAM,EAAEN,GAAG,EAAEE,iBAAiB,EAAE,GAAGI;IACnC,MAAMC,eAA6B,CAAC;IAEpC,IAAIL,mBAAmBM,QAAQ;QAC7B,KAAK,MAAMC,OAAOP,kBAAmB;YACnCK,YAAY,CAACE,IAAIC,IAAI,CAAC,GAAGD,IAAIE,WAAW;QAC1C;IACF,OAAO;QACL,MAAMC,cAAcC,IAAAA,sBAAe,EAACb;QACpC,MAAMc,WAAWF,eAAeG,IAAAA,8BAAc,EAACH;QAC/C,IAAIE,UAAU;YACZP,YAAY,CAACO,SAASJ,IAAI,CAAC,GAAGI;QAChC;IACF;IAEA,OAAOP;AACT"}
1
+ {"version":3,"sources":["../src/getPackageInfos.ts"],"sourcesContent":["import { type PackageInfos } from \"./types/PackageInfo.js\";\nimport { getWorkspaceInfos, getWorkspaceInfosAsync } from \"./workspaces/getWorkspaceInfos.js\";\nimport { getPackageInfo } from \"./getPackageInfo.js\";\nimport type { WorkspacePackageInfo } from \"./types/WorkspaceInfo.js\";\nimport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\nimport { findPackageRoot } from \"./paths.js\";\n\n/**\n * Read all the package.json files in a monorepo and return a mapping from package name to info.\n * Only works for monorepos which use a supported workspace/monorepo manager.\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 array listing package names, paths, and contents, use `getWorkspaceInfos` instead.\n * - If no workspace config is found, it will return info for the root package.json if one exists.\n * (This is different than `getWorkspaceInfos`.)\n *\n * @param cwd Start looking for the manager config from here\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Mapping from package name to package info.\n * If no workspace config is found, it will return info for the root package.json if one exists.\n * Will be empty on error (it logs verbose warnings instead of throwing).\n */\nexport function getPackageInfos(cwd: string, managerOverride?: WorkspaceManager): PackageInfos {\n const workspacePackages = getWorkspaceInfos(cwd, managerOverride);\n return buildPackageInfos({ cwd, workspacePackages });\n}\n\n/**\n * Read all the package.json files in a monorepo and return a mapping from package name to info.\n * Only works for monorepos which use a supported workspace/monorepo manager.\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 array listing package names, paths, and contents, use `getWorkspaceInfos` instead.\n *\n * @param cwd Start looking for the manager config from here\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Mapping from package name to package info.\n * If no workspace config is found, it will return info for the root package.json if one exists.\n * Will be empty on error (it logs verbose warnings instead of throwing).\n */\nexport async function getPackageInfosAsync(cwd: string, managerOverride?: WorkspaceManager): Promise<PackageInfos> {\n const workspacePackages = await getWorkspaceInfosAsync(cwd, managerOverride);\n return buildPackageInfos({ cwd, workspacePackages });\n}\n\n/**\n * Convert an array of workspace package infos into a name-to-packageInfo map.\n * If there are no workspace packages, reads the root package.json instead.\n */\nfunction buildPackageInfos(params: {\n cwd: string;\n workspacePackages: WorkspacePackageInfo[] | undefined;\n}): PackageInfos {\n const { cwd, workspacePackages } = params;\n const packageInfos: PackageInfos = {};\n\n if (workspacePackages?.length) {\n for (const pkg of workspacePackages) {\n packageInfos[pkg.name] = pkg.packageJson;\n }\n } else {\n const packageRoot = findPackageRoot(cwd);\n const rootInfo = packageRoot && getPackageInfo(packageRoot);\n if (rootInfo) {\n packageInfos[rootInfo.name] = rootInfo;\n }\n }\n\n return packageInfos;\n}\n"],"names":["getPackageInfos","getPackageInfosAsync","cwd","managerOverride","workspacePackages","getWorkspaceInfos","buildPackageInfos","getWorkspaceInfosAsync","params","packageInfos","length","pkg","name","packageJson","packageRoot","findPackageRoot","rootInfo","getPackageInfo"],"mappings":";;;;;;;;;;;;;;;QAyBgBA;eAAAA;;QAuBMC;eAAAA;;;mCA/CoC;gCAC3B;uBAGC;AAoBzB,SAASD,gBAAgBE,GAAW,EAAEC,eAAkC;IAC7E,MAAMC,oBAAoBC,IAAAA,oCAAiB,EAACH,KAAKC;IACjD,OAAOG,kBAAkB;QAAEJ;QAAKE;IAAkB;AACpD;AAoBO,eAAeH,qBAAqBC,GAAW,EAAEC,eAAkC;IACxF,MAAMC,oBAAoB,MAAMG,IAAAA,yCAAsB,EAACL,KAAKC;IAC5D,OAAOG,kBAAkB;QAAEJ;QAAKE;IAAkB;AACpD;AAEA;;;CAGC,GACD,SAASE,kBAAkBE,MAG1B;IACC,MAAM,EAAEN,GAAG,EAAEE,iBAAiB,EAAE,GAAGI;IACnC,MAAMC,eAA6B,CAAC;IAEpC,IAAIL,mBAAmBM,QAAQ;QAC7B,KAAK,MAAMC,OAAOP,kBAAmB;YACnCK,YAAY,CAACE,IAAIC,IAAI,CAAC,GAAGD,IAAIE,WAAW;QAC1C;IACF,OAAO;QACL,MAAMC,cAAcC,IAAAA,sBAAe,EAACb;QACpC,MAAMc,WAAWF,eAAeG,IAAAA,8BAAc,EAACH;QAC/C,IAAIE,UAAU;YACZP,YAAY,CAACO,SAASJ,IAAI,CAAC,GAAGI;QAChC;IACF;IAEA,OAAOP;AACT"}
package/lib/git/git.js CHANGED
@@ -5,6 +5,14 @@
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ 0 && (module.exports = {
9
+ GitError: null,
10
+ addGitObserver: null,
11
+ clearGitObservers: null,
12
+ git: null,
13
+ gitFailFast: null,
14
+ processGitOutput: null
15
+ });
8
16
  function _export(target, all) {
9
17
  for(var name in all)Object.defineProperty(target, name, {
10
18
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/git/git.ts"],"sourcesContent":["//\n// Basic git wrappers\n//\n\nimport { spawnSync, type SpawnSyncOptions, type SpawnSyncReturns } from \"child_process\";\nimport { type GitCommonOptions } from \"./types.js\";\n\nexport type GitOptions = Omit<SpawnSyncOptions, \"cwd\"> &\n GitCommonOptions & {\n /** Operation description to be used in error message (formatted as start of sentence) */\n description?: string;\n debug?: boolean;\n };\n\nexport class GitError extends Error {\n public readonly originalError: unknown;\n public readonly gitOutput?: GitProcessOutput;\n\n constructor(message: string, originalError?: unknown, gitOutput?: GitProcessOutput) {\n if (originalError instanceof Error) {\n super(`${message}: ${originalError.message}`);\n } else if (gitOutput?.stderr) {\n super(`${message} -- stderr:\\n${gitOutput.stderr}`);\n } else {\n super(message);\n }\n this.originalError = originalError;\n this.gitOutput = gitOutput;\n }\n}\n\n/**\n * A global maxBuffer override for all git operations.\n * Bumps up the default to 500MB instead of 1MB.\n * Override this value with the `GIT_MAX_BUFFER` environment variable.\n */\nconst defaultMaxBuffer = process.env.GIT_MAX_BUFFER ? parseInt(process.env.GIT_MAX_BUFFER) : 500 * 1024 * 1024;\n\nconst isDebug = !!process.env.GIT_DEBUG;\n\nexport type GitProcessOutput = {\n stderr: string;\n stdout: string;\n success: boolean;\n} & Omit<SpawnSyncReturns<string | Buffer>, \"stdout\" | \"stderr\">;\n\n/** Observes the git operations called from `git()` or `gitFailFast()` */\nexport type GitObserver = (args: string[], output: GitProcessOutput) => void;\nconst observers: GitObserver[] = [];\nlet observing: boolean;\n\n/**\n * Adds an observer for the git operations, e.g. for testing\n * @returns a function to remove the observer\n */\nexport function addGitObserver(observer: GitObserver): () => void {\n observers.push(observer);\n return () => removeGitObserver(observer);\n}\n\n/** Clear all git observers */\nexport function clearGitObservers(): void {\n observers.splice(0, observers.length);\n}\n\n/** Remove a git observer */\nfunction removeGitObserver(observer: GitObserver): void {\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n}\n\n/**\n * Runs git command - use this for read-only commands, or if you'd like to explicitly check the\n * result and implement custom error handling.\n *\n * The caller is responsible for validating the input.\n * `shell` will always be set to false.\n */\nexport function git(args: string[], options?: GitOptions): GitProcessOutput {\n if (args.some((arg) => arg.startsWith(\"--upload-pack\"))) {\n // This is a security issue and not needed for any expected usage of this library.\n throw new GitError(\"git command contains --upload-pack, which is not allowed: \" + args.join(\" \"));\n }\n\n const gitDescription = `git ${args.join(\" \")}`;\n const { throwOnError, description = gitDescription, debug = isDebug, ...spawnOptions } = options || {};\n\n debug && console.log(gitDescription);\n\n let results: SpawnSyncReturns<string | Buffer>;\n try {\n // this only throws if git isn't found or other rare cases\n results = spawnSync(\"git\", args, { maxBuffer: defaultMaxBuffer, ...spawnOptions });\n } catch (e) {\n throw new GitError(`${description} failed (while spawning process)`, e);\n }\n\n const output: GitProcessOutput = {\n ...results,\n // these may be undefined if stdio: inherit is set\n stderr: (results.stderr || \"\").toString().trimEnd(),\n stdout: (results.stdout || \"\").toString().trimEnd(),\n success: results.status === 0,\n };\n\n if (debug) {\n console.log(\"exited with code \" + results.status);\n output.stdout && console.log(\"git stdout:\\n\", output.stdout);\n output.stderr && console.warn(\"git stderr:\\n\", output.stderr);\n }\n\n // notify observers, flipping the observing bit to prevent infinite loops\n if (!observing) {\n observing = true;\n for (const observer of observers) {\n observer(args, output);\n }\n observing = false;\n }\n\n if (!output.success && throwOnError) {\n throw new GitError(`${description} failed${output.stderr ? `\\n${output.stderr}` : \"\"}`, undefined, output);\n }\n\n return output;\n}\n\n/**\n * Run a git command. Use this for commands that make critical changes to the filesystem.\n * If it fails, throw an error and set `process.exitCode = 1` (unless `options.noExitCode` is set).\n *\n * The caller is responsible for validating the input.\n * `shell` will always be set to false.\n */\nexport function gitFailFast(args: string[], options?: GitCommonOptions & { noExitCode?: boolean }): void {\n const gitResult = git(args, options);\n if (!gitResult.success) {\n if (!options?.noExitCode) {\n process.exitCode = 1;\n }\n\n throw new GitError(`CRITICAL ERROR: running git command: git ${args.join(\" \")}!\n ${gitResult.stdout?.toString().trimEnd()}\n ${gitResult.stderr?.toString().trimEnd()}`);\n }\n}\n\n/**\n * Processes git command output by splitting it into lines and filtering out empty lines.\n * Also filters out `node_modules` lines if specified in options.\n *\n * If the command failed with stderr output, an error is thrown.\n *\n * @param output - The git command output to process\n * @returns An array of lines (presumably file paths), or an empty array if the command failed\n * without stderr output.\n * @internal\n */\nexport function processGitOutput(output: GitProcessOutput, options?: { excludeNodeModules?: boolean }): string[] {\n if (!output.success) {\n // If the intent was to throw on failure, `throwOnError` should have been set for the git command.\n return [];\n }\n\n return output.stdout\n .split(/\\n/)\n .map((line) => line.trim())\n .filter((line) => !!line && (!options?.excludeNodeModules || !line.includes(\"node_modules\")));\n}\n"],"names":["GitError","addGitObserver","clearGitObservers","git","gitFailFast","processGitOutput","Error","message","originalError","gitOutput","stderr","defaultMaxBuffer","process","env","GIT_MAX_BUFFER","parseInt","isDebug","GIT_DEBUG","observers","observing","observer","push","removeGitObserver","splice","length","index","indexOf","args","options","some","arg","startsWith","join","gitDescription","throwOnError","description","debug","spawnOptions","console","log","results","spawnSync","maxBuffer","e","output","toString","trimEnd","stdout","success","status","warn","undefined","gitResult","noExitCode","exitCode","split","map","line","trim","filter","excludeNodeModules","includes"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/git/git.ts"],"sourcesContent":["//\n// Basic git wrappers\n//\n\nimport { spawnSync, type SpawnSyncOptions, type SpawnSyncReturns } from \"child_process\";\nimport { type GitCommonOptions } from \"./types.js\";\n\nexport type GitOptions = Omit<SpawnSyncOptions, \"cwd\"> &\n GitCommonOptions & {\n /** Operation description to be used in error message (formatted as start of sentence) */\n description?: string;\n debug?: boolean;\n };\n\nexport class GitError extends Error {\n public readonly originalError: unknown;\n public readonly gitOutput?: GitProcessOutput;\n\n constructor(message: string, originalError?: unknown, gitOutput?: GitProcessOutput) {\n if (originalError instanceof Error) {\n super(`${message}: ${originalError.message}`);\n } else if (gitOutput?.stderr) {\n super(`${message} -- stderr:\\n${gitOutput.stderr}`);\n } else {\n super(message);\n }\n this.originalError = originalError;\n this.gitOutput = gitOutput;\n }\n}\n\n/**\n * A global maxBuffer override for all git operations.\n * Bumps up the default to 500MB instead of 1MB.\n * Override this value with the `GIT_MAX_BUFFER` environment variable.\n */\nconst defaultMaxBuffer = process.env.GIT_MAX_BUFFER ? parseInt(process.env.GIT_MAX_BUFFER) : 500 * 1024 * 1024;\n\nconst isDebug = !!process.env.GIT_DEBUG;\n\nexport type GitProcessOutput = {\n stderr: string;\n stdout: string;\n success: boolean;\n} & Omit<SpawnSyncReturns<string | Buffer>, \"stdout\" | \"stderr\">;\n\n/** Observes the git operations called from `git()` or `gitFailFast()` */\nexport type GitObserver = (args: string[], output: GitProcessOutput) => void;\nconst observers: GitObserver[] = [];\nlet observing: boolean;\n\n/**\n * Adds an observer for the git operations, e.g. for testing\n * @returns a function to remove the observer\n */\nexport function addGitObserver(observer: GitObserver): () => void {\n observers.push(observer);\n return () => removeGitObserver(observer);\n}\n\n/** Clear all git observers */\nexport function clearGitObservers(): void {\n observers.splice(0, observers.length);\n}\n\n/** Remove a git observer */\nfunction removeGitObserver(observer: GitObserver): void {\n const index = observers.indexOf(observer);\n if (index > -1) {\n observers.splice(index, 1);\n }\n}\n\n/**\n * Runs git command - use this for read-only commands, or if you'd like to explicitly check the\n * result and implement custom error handling.\n *\n * The caller is responsible for validating the input.\n * `shell` will always be set to false.\n */\nexport function git(args: string[], options?: GitOptions): GitProcessOutput {\n if (args.some((arg) => arg.startsWith(\"--upload-pack\"))) {\n // This is a security issue and not needed for any expected usage of this library.\n throw new GitError(\"git command contains --upload-pack, which is not allowed: \" + args.join(\" \"));\n }\n\n const gitDescription = `git ${args.join(\" \")}`;\n const { throwOnError, description = gitDescription, debug = isDebug, ...spawnOptions } = options || {};\n\n debug && console.log(gitDescription);\n\n let results: SpawnSyncReturns<string | Buffer>;\n try {\n // this only throws if git isn't found or other rare cases\n results = spawnSync(\"git\", args, { maxBuffer: defaultMaxBuffer, ...spawnOptions });\n } catch (e) {\n throw new GitError(`${description} failed (while spawning process)`, e);\n }\n\n const output: GitProcessOutput = {\n ...results,\n // these may be undefined if stdio: inherit is set\n stderr: (results.stderr || \"\").toString().trimEnd(),\n stdout: (results.stdout || \"\").toString().trimEnd(),\n success: results.status === 0,\n };\n\n if (debug) {\n console.log(\"exited with code \" + results.status);\n output.stdout && console.log(\"git stdout:\\n\", output.stdout);\n output.stderr && console.warn(\"git stderr:\\n\", output.stderr);\n }\n\n // notify observers, flipping the observing bit to prevent infinite loops\n if (!observing) {\n observing = true;\n for (const observer of observers) {\n observer(args, output);\n }\n observing = false;\n }\n\n if (!output.success && throwOnError) {\n throw new GitError(`${description} failed${output.stderr ? `\\n${output.stderr}` : \"\"}`, undefined, output);\n }\n\n return output;\n}\n\n/**\n * Run a git command. Use this for commands that make critical changes to the filesystem.\n * If it fails, throw an error and set `process.exitCode = 1` (unless `options.noExitCode` is set).\n *\n * The caller is responsible for validating the input.\n * `shell` will always be set to false.\n */\nexport function gitFailFast(args: string[], options?: GitCommonOptions & { noExitCode?: boolean }): void {\n const gitResult = git(args, options);\n if (!gitResult.success) {\n if (!options?.noExitCode) {\n process.exitCode = 1;\n }\n\n throw new GitError(`CRITICAL ERROR: running git command: git ${args.join(\" \")}!\n ${gitResult.stdout?.toString().trimEnd()}\n ${gitResult.stderr?.toString().trimEnd()}`);\n }\n}\n\n/**\n * Processes git command output by splitting it into lines and filtering out empty lines.\n * Also filters out `node_modules` lines if specified in options.\n *\n * If the command failed with stderr output, an error is thrown.\n *\n * @param output - The git command output to process\n * @returns An array of lines (presumably file paths), or an empty array if the command failed\n * without stderr output.\n * @internal\n */\nexport function processGitOutput(output: GitProcessOutput, options?: { excludeNodeModules?: boolean }): string[] {\n if (!output.success) {\n // If the intent was to throw on failure, `throwOnError` should have been set for the git command.\n return [];\n }\n\n return output.stdout\n .split(/\\n/)\n .map((line) => line.trim())\n .filter((line) => !!line && (!options?.excludeNodeModules || !line.includes(\"node_modules\")));\n}\n"],"names":["GitError","addGitObserver","clearGitObservers","git","gitFailFast","processGitOutput","Error","message","originalError","gitOutput","stderr","defaultMaxBuffer","process","env","GIT_MAX_BUFFER","parseInt","isDebug","GIT_DEBUG","observers","observing","observer","push","removeGitObserver","splice","length","index","indexOf","args","options","some","arg","startsWith","join","gitDescription","throwOnError","description","debug","spawnOptions","console","log","results","spawnSync","maxBuffer","e","output","toString","trimEnd","stdout","success","status","warn","undefined","gitResult","noExitCode","exitCode","split","map","line","trim","filter","excludeNodeModules","includes"],"mappings":"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"}
@@ -6,6 +6,33 @@
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
+ 0 && (module.exports = {
10
+ commit: null,
11
+ fetchRemote: null,
12
+ fetchRemoteBranch: null,
13
+ getBranchChanges: null,
14
+ getBranchName: null,
15
+ getChanges: null,
16
+ getChangesBetweenRefs: null,
17
+ getCurrentHash: null,
18
+ getDefaultBranch: null,
19
+ getFileAddedHash: null,
20
+ getFullBranchRef: null,
21
+ getParentBranch: null,
22
+ getRecentCommitMessages: null,
23
+ getRemoteBranch: null,
24
+ getShortBranchName: null,
25
+ getStagedChanges: null,
26
+ getUnstagedChanges: null,
27
+ getUntrackedChanges: null,
28
+ getUserEmail: null,
29
+ init: null,
30
+ listAllTrackedFiles: null,
31
+ parseRemoteBranch: null,
32
+ revertLocalChanges: null,
33
+ stage: null,
34
+ stageAndCommit: null
35
+ });
9
36
  function _export(target, all) {
10
37
  for(var name in all)Object.defineProperty(target, name, {
11
38
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/git/gitUtilities.ts"],"sourcesContent":["//\n// Assorted other git utilities\n// (could be split into separate files later if desired)\n//\n\nimport { getConfigValue } from \"./config.js\";\nimport { git, processGitOutput } from \"./git.js\";\nimport type {\n GetChangesBetweenRefsOptions,\n GitBranchOptions,\n GitCommitOptions,\n GitCommonOptions,\n GitFetchOptions,\n GitInitOptions,\n GitStageOptions,\n ParsedRemoteBranch,\n ParseRemoteBranchOptions,\n} from \"./types.js\";\n\nconst diffArgs = [\"--no-pager\", \"diff\", \"--name-only\", \"--relative\"];\n\n/**\n * Get a list of files with untracked changes.\n * Throws an error on failure by default.\n *\n * @returns An array of file paths with untracked changes\n */\n// TODO: move to getChanges.ts\nexport function getUntrackedChanges(options: GitCommonOptions): string[];\n/** @deprecated Use object params version */\nexport function getUntrackedChanges(cwd: string): string[];\nexport function getUntrackedChanges(cwdOrOptions: string | GitCommonOptions): string[] {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([\"ls-files\", \"--others\", \"--exclude-standard\"], {\n description: \"Gathering information about untracked changes\",\n throwOnError: true,\n ...options,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Fetch from the given remote (and optionally branch) or all remotes.\n * Throws an error on failure by default.\n */\n// TODO: move to fetch.ts\nexport function fetchRemote(options: GitFetchOptions): void;\n/** @deprecated Use object params version */\nexport function fetchRemote(remote: string, cwd: string): void;\nexport function fetchRemote(remoteOrOptions: string | GitFetchOptions, cwd?: string): void {\n const { remote, remoteBranch, options, ...gitOptions } =\n typeof remoteOrOptions === \"string\"\n ? ({ remote: remoteOrOptions, cwd: cwd! } satisfies GitFetchOptions)\n : remoteOrOptions;\n\n if (remoteBranch && !remote) {\n throw new Error('Must provide \"remote\" when using \"remoteBranch\" option');\n }\n\n const fetchArgs = [\n \"fetch\",\n \"--\",\n ...(remote ? [remote] : []),\n ...(remoteBranch ? [remoteBranch] : []),\n ...(options || []),\n ];\n\n git(fetchArgs, {\n description: remote\n ? `Fetching ${remoteBranch ? `branch \"${remoteBranch}\" from ` : \"\"}remote \"${remote}\"`\n : \"Fetching all remotes\",\n throwOnError: true,\n ...gitOptions,\n });\n}\n\n/**\n * Fetch from the given remote and branch. Throws an error on failure.\n * @deprecated Use `fetchRemote({ remote, remoteBranch, cwd })`\n */\n// TODO: move to fetch.ts\nexport function fetchRemoteBranch(remote: string, remoteBranch: string, cwd: string): void {\n fetchRemote({ remote, remoteBranch, cwd, throwOnError: true });\n}\n\n/**\n * Gets file paths with changes that have not been staged yet.\n * Throws an error on failure by default.\n *\n * @returns An array of relative file paths with unstaged changes\n */\n// TODO: move to getChanges.ts\nexport function getUnstagedChanges(options: GitCommonOptions): string[];\n/** @deprecated Use object params version */\nexport function getUnstagedChanges(cwd: string): string[];\nexport function getUnstagedChanges(cwdOrOptions: string | GitCommonOptions): string[] {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git(diffArgs, {\n description: \"Gathering information about unstaged changes\",\n throwOnError: true,\n ...options,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Gets file paths with changes between the current branch and the given branch.\n * Throws an error on failure.\n *\n * @returns An array of relative file paths that have changed\n * @deprecated Use `getBranchChanges({ branch, cwd })`\n */\n// TODO: move to getChanges.ts\nexport function getChanges(branch: string, cwd: string): string[] {\n return getChangesBetweenRefs({ fromRef: branch, cwd, throwOnError: true });\n}\n\n/**\n * Gets file paths with changes between the branch and the merge-base.\n * Throws an error on failure by default.\n *\n * @returns An array of relative file paths that have changed\n */\n// TODO: move to getChanges.ts\nexport function getBranchChanges(options: GitBranchOptions): string[];\n/** @deprecated Use object params version */\nexport function getBranchChanges(branch: string, cwd: string): string[];\nexport function getBranchChanges(branchOrOptions: string | GitBranchOptions, cwd?: string): string[] {\n const { branch, ...options } =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n return getChangesBetweenRefs({ fromRef: branch, throwOnError: true, ...options });\n}\n\n/**\n * Gets file paths with changes between two git references (commits, branches, tags).\n * Throws an error on failure by default.\n *\n * @returns An array of file paths that have changed\n */\n// TODO: move to getChanges.ts\nexport function getChangesBetweenRefs(options: GetChangesBetweenRefsOptions): string[];\n/** @deprecated Use object param version */\nexport function getChangesBetweenRefs(\n fromRef: string,\n toRef: string,\n options: string[],\n pattern: string,\n cwd: string\n): string[];\nexport function getChangesBetweenRefs(\n fromRef: string | GetChangesBetweenRefsOptions,\n toRef?: string,\n options?: string[],\n pattern?: string,\n cwd?: string\n): string[] {\n let gitOptions: GitCommonOptions;\n if (typeof fromRef === \"string\") {\n gitOptions = { cwd: cwd! };\n } else {\n ({ fromRef, toRef, options, pattern, ...gitOptions } = fromRef);\n }\n\n const range = `${fromRef}...${toRef || \"\"}`;\n const results = git([...diffArgs, ...(options || []), range, ...(pattern ? [\"--\", pattern] : [])], {\n description: `Gathering information about changes between refs (${range})`,\n throwOnError: true,\n ...gitOptions,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Gets all files with staged changes (files added to the index).\n * Throws an error on failure by default.\n *\n * @returns An array of relative file paths that have been staged\n */\n// TODO: move to getChanges.ts\nexport function getStagedChanges(options: GitCommonOptions): string[];\n/** @deprecated Use object params version */\nexport function getStagedChanges(cwd: string): string[];\nexport function getStagedChanges(cwdOrOptions: string | GitCommonOptions): string[] {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([...diffArgs, \"--staged\"], {\n description: \"Gathering information about staged changes\",\n throwOnError: true,\n ...options,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Gets recent commit messages between the specified parent branch and HEAD.\n * By default, returns an empty array if the operation fails.\n *\n * @returns An array of commit message strings\n */\n// TODO: move to history.ts\nexport function getRecentCommitMessages(options: GitBranchOptions): string[];\n/** @deprecated Use object params version */\nexport function getRecentCommitMessages(branch: string, cwd: string): string[];\nexport function getRecentCommitMessages(branchOrOptions: string | GitBranchOptions, cwd?: string): string[] {\n const { branch, ...options } =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n const results = git([\"log\", \"--decorate\", \"--pretty=format:%s\", `${branch}..HEAD`], {\n description: `Getting recent commit messages for branch \"${branch}\"`,\n ...options,\n });\n return processGitOutput(results);\n}\n\n/**\n * Gets the user email from the git config.\n * @returns The email string if found, null otherwise\n */\n// TODO: move to config.ts\nexport function getUserEmail(options: GitCommonOptions): string | null;\n/** @deprecated Use object params version */\nexport function getUserEmail(cwd: string): string | null;\nexport function getUserEmail(cwdOrOptions: string | GitCommonOptions): string | null {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n return getConfigValue({ key: \"user.email\", ...options });\n}\n\n/**\n * Gets the current branch name.\n * In detached HEAD state, returns \"HEAD\".\n *\n * @returns The branch name if successful, null otherwise\n */\n// TODO: move to refs.ts\nexport function getBranchName(options: GitCommonOptions): string | null;\n/** @deprecated Use object params version */\nexport function getBranchName(cwd: string): string | null;\nexport function getBranchName(cwdOrOptions: string | GitCommonOptions): string | null {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([\"rev-parse\", \"--abbrev-ref\", \"HEAD\"], {\n description: \"Getting current branch name\",\n ...options,\n });\n return results.success ? results.stdout : null;\n}\n\n/**\n * Gets the full reference path for a given branch.\n * `branch` here is the short branch name, e.g. `branch-name`.\n * @returns The full branch reference (e.g., `refs/heads/branch-name`) if found, null otherwise\n */\n// TODO: move to refs.ts\nexport function getFullBranchRef(options: GitBranchOptions): string | null;\n/** @deprecated Use object params version */\nexport function getFullBranchRef(branch: string, cwd: string): string | null;\nexport function getFullBranchRef(branchOrOptions: string | GitBranchOptions, cwd?: string): string | null {\n const { branch, ...options } =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n const showRefResults = git([\"show-ref\", \"--heads\", branch], options);\n\n return showRefResults.success ? showRefResults.stdout.split(\" \")[1] : null;\n}\n\n/**\n * Gets the short branch name from a full branch reference.\n * @returns The short branch name if successful, null otherwise\n */\n// TODO: move to refs.ts\nexport function getShortBranchName(\n options: {\n /** The full branch reference (e.g., `refs/heads/branch-name`) */\n fullBranchRef: string;\n } & GitCommonOptions\n): string | null;\n/** @deprecated Use object params version */\nexport function getShortBranchName(fullBranchRef: string, cwd: string): string | null;\nexport function getShortBranchName(\n refOrOptions: string | ({ fullBranchRef: string } & GitCommonOptions),\n cwd?: string\n): string | null {\n const { fullBranchRef, ...options } =\n typeof refOrOptions === \"string\" ? { fullBranchRef: refOrOptions, cwd: cwd! } : refOrOptions;\n\n // The original command `git name-rev --name-only` returned unreliable results if multiple\n // named refs point to the same commit as the branch.\n const showRefResults = git([\"rev-parse\", \"--abbrev-ref\", fullBranchRef], options);\n\n return showRefResults.success ? showRefResults.stdout || null : null;\n}\n\n/**\n * Gets the current commit hash (SHA).\n * @returns The hash if successful, null otherwise\n */\n// TODO: move to refs.ts\nexport function getCurrentHash(options: GitCommonOptions): string | null;\n/** @deprecated Use object params version */\nexport function getCurrentHash(cwd: string): string | null;\nexport function getCurrentHash(cwdOrOptions: string | GitCommonOptions): string | null {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([\"rev-parse\", \"HEAD\"], {\n description: \"Getting current git hash\",\n ...options,\n });\n\n return results.success ? results.stdout : null;\n}\n\n/**\n * Get the commit hash in which the file was first added.\n * @returns The commit hash if found, undefined otherwise\n */\n// TODO: move to history.ts\nexport function getFileAddedHash(options: { filename: string } & GitCommonOptions): string | undefined;\n/** @deprecated Use object params version */\nexport function getFileAddedHash(filename: string, cwd: string): string | undefined;\nexport function getFileAddedHash(\n filenameOrOptions: string | ({ filename: string } & GitCommonOptions),\n cwd?: string\n): string | undefined {\n const { filename, ...options } =\n typeof filenameOrOptions === \"string\" ? { filename: filenameOrOptions, cwd: cwd! } : filenameOrOptions;\n\n const results = git([\"rev-list\", \"--max-count=1\", \"HEAD\", filename], options);\n\n return results.success ? results.stdout.trim() : undefined;\n}\n\n/**\n * Run `git init` and verify that the `user.name` and `user.email` configs are set (at any level).\n * Throws an error if `git init` fails.\n *\n * If `user.email` and `user.name` aren't already set globally, and the missing value is provided\n * in params, set it at the repo level. Otherwise, throw an error.\n */\n// TODO: move to init.ts\nexport function init(options: GitInitOptions): void;\n/** @deprecated Use object params version */\nexport function init(cwd: string, email?: string, username?: string): void;\nexport function init(cwdOrOptions: string | GitInitOptions, _email?: string, _username?: string): void {\n const { email, username, ...options } =\n typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions, email: _email, username: _username } : cwdOrOptions;\n\n git([\"init\"], { ...options, throwOnError: true });\n\n if (!getConfigValue({ key: \"user.name\", ...options })) {\n if (!username) {\n throw new Error(\"must include a username when initializing git repo\");\n }\n git([\"config\", \"user.name\", username], options);\n }\n\n if (!getUserEmail(options)) {\n if (!email) {\n throw new Error(\"must include a email when initializing git repo\");\n }\n git([\"config\", \"user.email\", email], options);\n }\n}\n\n/**\n * Stages files matching the given patterns.\n */\n// TODO: move to stageAndCommit.ts\nexport function stage(options: GitStageOptions): void;\n/** @deprecated Use object params version */\nexport function stage(patterns: string[], cwd: string): void;\nexport function stage(patternsOrOptions: string[] | GitStageOptions, cwd?: string): void {\n const { patterns, ...options } = Array.isArray(patternsOrOptions)\n ? { patterns: patternsOrOptions, cwd: cwd! }\n : patternsOrOptions;\n\n for (const pattern of patterns) {\n git([\"add\", pattern], { ...options, description: `Staging changes (git add ${pattern})` });\n }\n}\n\n/**\n * Commit changes. Throws an error on failure by default.\n */\n// TODO: move to stageAndCommit.ts\nexport function commit(options: GitCommitOptions): void;\n/** @deprecated Use object params version */\nexport function commit(message: string, cwd: string, options?: string[]): void;\nexport function commit(messageOrOptions: string | GitCommitOptions, _cwd?: string, _options?: string[]): void {\n const { message, options, ...gitOptions } =\n typeof messageOrOptions === \"string\"\n ? { message: messageOrOptions, cwd: _cwd!, options: _options }\n : messageOrOptions;\n\n git([\"commit\", \"-m\", message, ...(options || [])], {\n throwOnError: true,\n description: \"Committing changes\",\n ...gitOptions,\n });\n}\n\n/**\n * Stages files matching the given patterns and creates a commit with the specified message.\n * Convenience function that combines `stage()` and `commit()`.\n * Throws an error on commit failure by default.\n */\n// TODO: move to stageAndCommit.ts\nexport function stageAndCommit(options: GitStageOptions & GitCommitOptions): void;\n/** @deprecated Use object params version */\nexport function stageAndCommit(patterns: string[], message: string, cwd: string, commitOptions?: string[]): void;\nexport function stageAndCommit(\n patternsOrOptions: string[] | (GitStageOptions & GitCommitOptions),\n message?: string,\n cwd?: string,\n commitOptions?: string[]\n): void {\n const options: GitStageOptions & GitCommitOptions = Array.isArray(patternsOrOptions)\n ? { patterns: patternsOrOptions, message: message!, cwd: cwd!, options: commitOptions }\n : patternsOrOptions;\n\n stage(options);\n commit(options);\n}\n\n/**\n * Reverts all local changes (both staged and unstaged) by stashing them and then dropping the stash.\n * @returns True if the revert was successful, false otherwise. It will also be false if there were\n * no changes to revert. (To distinguish between this case and errors, use the `throwOnError` option.)\n */\n// TODO: move to revertLocalChanges.ts\nexport function revertLocalChanges(options: GitCommonOptions): boolean;\n/** @deprecated Use object params version */\nexport function revertLocalChanges(cwd: string): boolean;\nexport function revertLocalChanges(cwdOrOptions: string | GitCommonOptions): boolean {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const stash = `workspace-tools_${new Date().getTime()}`;\n if (!git([\"stash\", \"push\", \"-u\", \"-m\", stash], options).success) {\n return false;\n }\n\n const results = git([\"stash\", \"list\"], options);\n if (results.success) {\n const matched = results.stdout\n .split(/\\n/)\n .find((line) => line.includes(stash))\n ?.match(/^[^:]+/);\n\n if (matched) {\n git([\"stash\", \"drop\", matched[0]], options);\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Attempts to determine the parent branch of the current branch using `git show-branch`.\n * @returns The parent branch name if found, null otherwise\n * @deprecated Does not appear to be used\n */\nexport function getParentBranch(cwd: string): string | null {\n const branchName = getBranchName({ cwd });\n\n if (!branchName || branchName === \"HEAD\") {\n return null;\n }\n\n const showBranchResult = git([\"show-branch\", \"-a\"], { cwd });\n\n if (showBranchResult.success) {\n const showBranchLines = showBranchResult.stdout.split(/\\n/);\n const parentLine = showBranchLines.find(\n (line) => line.includes(\"*\") && !line.includes(branchName) && !line.includes(\"publish_\")\n );\n\n const matched = parentLine?.match(/\\[(.*)\\]/);\n return matched ? matched[1] : null;\n }\n\n return null;\n}\n\n/**\n * Gets the remote tracking branch for the specified branch.\n *\n * @returns The remote branch name (e.g., `origin/main`) if found, null otherwise\n */\n// TODO: move to refs.ts\nexport function getRemoteBranch(options: GitBranchOptions): string | null;\n/** @deprecated Use object params version */\nexport function getRemoteBranch(branch: string, cwd: string): string | null;\nexport function getRemoteBranch(branchOrOptions: string | GitBranchOptions, cwd?: string): string | null {\n const options: GitBranchOptions =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n const results = git([\"rev-parse\", \"--abbrev-ref\", \"--symbolic-full-name\", `${options.branch}@{u}`], options);\n\n return results.success ? results.stdout.trim() : null;\n}\n\n/**\n * Get the remote and branch name from a full branch name that may include a remote prefix.\n * If the path doesn't start with one of `options.knownRemotes` (but has multiple segments),\n * the actual list of remotes will be fetched to see if one of those matches.\n *\n * NOTE: The additional verification is new in the object params version; the original version\n * incorrectly assumes the first segment before a slash is always a remote.\n */\n// TODO: move to parseRemoteBranch.ts\nexport function parseRemoteBranch(options: ParseRemoteBranchOptions): ParsedRemoteBranch;\n/**\n * @deprecated Use object params version, which does more verification. This version inaccurately\n * assumes the first segment before a slash is always a remote, which could lead to tricky bugs.\n */\nexport function parseRemoteBranch(branch: string): ParsedRemoteBranch;\nexport function parseRemoteBranch(branchOrOptions: string | ParseRemoteBranchOptions): ParsedRemoteBranch {\n if (typeof branchOrOptions === \"string\") {\n const branch = branchOrOptions;\n const firstSlashPos = branch.indexOf(\"/\", 0);\n return {\n remote: branch.substring(0, firstSlashPos),\n remoteBranch: branch.substring(firstSlashPos + 1),\n };\n }\n\n const { branch, knownRemotes = [\"origin\", \"upstream\"], ...options } = branchOrOptions;\n\n if (!branch.includes(\"/\")) {\n return { remote: \"\", remoteBranch: branch };\n }\n\n let remote = knownRemotes.find((r) => branch.startsWith(`${r}/`));\n\n if (!remote) {\n const remotes = git([\"remote\"], options).stdout.trim().split(/\\n/);\n remote = remotes.find((r) => branch.startsWith(`${r}/`));\n }\n\n if (remote) {\n return { remote, remoteBranch: branch.slice(remote.length + 1) };\n }\n return { remote: \"\", remoteBranch: branch };\n}\n\n/**\n * Gets the default branch based on `git config init.defaultBranch`, falling back to `master`.\n */\n// TODO: move to config.ts\nexport function getDefaultBranch(options: GitCommonOptions): string;\n/** @deprecated Use object params version */\nexport function getDefaultBranch(cwd: string): string;\nexport function getDefaultBranch(cwdOrOptions: string | GitCommonOptions): string {\n const options = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n // Default to the legacy 'master' for backwards compat and old git clients\n return getConfigValue({ key: \"init.defaultBranch\", ...options }) || \"master\";\n}\n\n/**\n * Lists all tracked files matching the given patterns.\n * Throws on error by default.\n * @returns An array of file paths, or an empty array if no files are found\n */\n// TODO: move to history.ts\nexport function listAllTrackedFiles(\n options: {\n /** File patterns to match (passed to git ls-files) */\n patterns: string[];\n } & GitCommonOptions\n): string[];\n/** @deprecated Use object params version */\nexport function listAllTrackedFiles(patterns: string[], cwd: string): string[];\nexport function listAllTrackedFiles(\n patternsOrOptions: string[] | ({ patterns: string[] } & GitCommonOptions),\n cwd?: string\n): string[] {\n const { patterns, ...options } = Array.isArray(patternsOrOptions)\n ? { patterns: patternsOrOptions, cwd: cwd! }\n : patternsOrOptions;\n\n const results = git([\"ls-files\", ...patterns], { throwOnError: true, ...options });\n\n return processGitOutput(results);\n}\n"],"names":["commit","fetchRemote","fetchRemoteBranch","getBranchChanges","getBranchName","getChanges","getChangesBetweenRefs","getCurrentHash","getDefaultBranch","getFileAddedHash","getFullBranchRef","getParentBranch","getRecentCommitMessages","getRemoteBranch","getShortBranchName","getStagedChanges","getUnstagedChanges","getUntrackedChanges","getUserEmail","init","listAllTrackedFiles","parseRemoteBranch","revertLocalChanges","stage","stageAndCommit","diffArgs","cwdOrOptions","options","cwd","results","git","description","throwOnError","processGitOutput","excludeNodeModules","remoteOrOptions","remote","remoteBranch","gitOptions","Error","fetchArgs","branch","fromRef","branchOrOptions","toRef","pattern","range","getConfigValue","key","success","stdout","showRefResults","split","refOrOptions","fullBranchRef","filenameOrOptions","filename","trim","undefined","_email","_username","email","username","patternsOrOptions","patterns","Array","isArray","messageOrOptions","_cwd","_options","message","commitOptions","stash","Date","getTime","matched","find","line","includes","match","branchName","showBranchResult","showBranchLines","parentLine","firstSlashPos","indexOf","substring","knownRemotes","r","startsWith","remotes","slice","length"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/git/gitUtilities.ts"],"sourcesContent":["//\n// Assorted other git utilities\n// (could be split into separate files later if desired)\n//\n\nimport { getConfigValue } from \"./config.js\";\nimport { git, processGitOutput } from \"./git.js\";\nimport type {\n GetChangesBetweenRefsOptions,\n GitBranchOptions,\n GitCommitOptions,\n GitCommonOptions,\n GitFetchOptions,\n GitInitOptions,\n GitStageOptions,\n ParsedRemoteBranch,\n ParseRemoteBranchOptions,\n} from \"./types.js\";\n\nconst diffArgs = [\"--no-pager\", \"diff\", \"--name-only\", \"--relative\"];\n\n/**\n * Get a list of files with untracked changes.\n * Throws an error on failure by default.\n *\n * @returns An array of file paths with untracked changes\n */\n// TODO: move to getChanges.ts\nexport function getUntrackedChanges(options: GitCommonOptions): string[];\n/** @deprecated Use object params version */\nexport function getUntrackedChanges(cwd: string): string[];\nexport function getUntrackedChanges(cwdOrOptions: string | GitCommonOptions): string[] {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([\"ls-files\", \"--others\", \"--exclude-standard\"], {\n description: \"Gathering information about untracked changes\",\n throwOnError: true,\n ...options,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Fetch from the given remote (and optionally branch) or all remotes.\n * Throws an error on failure by default.\n */\n// TODO: move to fetch.ts\nexport function fetchRemote(options: GitFetchOptions): void;\n/** @deprecated Use object params version */\nexport function fetchRemote(remote: string, cwd: string): void;\nexport function fetchRemote(remoteOrOptions: string | GitFetchOptions, cwd?: string): void {\n const { remote, remoteBranch, options, ...gitOptions } =\n typeof remoteOrOptions === \"string\"\n ? ({ remote: remoteOrOptions, cwd: cwd! } satisfies GitFetchOptions)\n : remoteOrOptions;\n\n if (remoteBranch && !remote) {\n throw new Error('Must provide \"remote\" when using \"remoteBranch\" option');\n }\n\n const fetchArgs = [\n \"fetch\",\n \"--\",\n ...(remote ? [remote] : []),\n ...(remoteBranch ? [remoteBranch] : []),\n ...(options || []),\n ];\n\n git(fetchArgs, {\n description: remote\n ? `Fetching ${remoteBranch ? `branch \"${remoteBranch}\" from ` : \"\"}remote \"${remote}\"`\n : \"Fetching all remotes\",\n throwOnError: true,\n ...gitOptions,\n });\n}\n\n/**\n * Fetch from the given remote and branch. Throws an error on failure.\n * @deprecated Use `fetchRemote({ remote, remoteBranch, cwd })`\n */\n// TODO: move to fetch.ts\nexport function fetchRemoteBranch(remote: string, remoteBranch: string, cwd: string): void {\n fetchRemote({ remote, remoteBranch, cwd, throwOnError: true });\n}\n\n/**\n * Gets file paths with changes that have not been staged yet.\n * Throws an error on failure by default.\n *\n * @returns An array of relative file paths with unstaged changes\n */\n// TODO: move to getChanges.ts\nexport function getUnstagedChanges(options: GitCommonOptions): string[];\n/** @deprecated Use object params version */\nexport function getUnstagedChanges(cwd: string): string[];\nexport function getUnstagedChanges(cwdOrOptions: string | GitCommonOptions): string[] {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git(diffArgs, {\n description: \"Gathering information about unstaged changes\",\n throwOnError: true,\n ...options,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Gets file paths with changes between the current branch and the given branch.\n * Throws an error on failure.\n *\n * @returns An array of relative file paths that have changed\n * @deprecated Use `getBranchChanges({ branch, cwd })`\n */\n// TODO: move to getChanges.ts\nexport function getChanges(branch: string, cwd: string): string[] {\n return getChangesBetweenRefs({ fromRef: branch, cwd, throwOnError: true });\n}\n\n/**\n * Gets file paths with changes between the branch and the merge-base.\n * Throws an error on failure by default.\n *\n * @returns An array of relative file paths that have changed\n */\n// TODO: move to getChanges.ts\nexport function getBranchChanges(options: GitBranchOptions): string[];\n/** @deprecated Use object params version */\nexport function getBranchChanges(branch: string, cwd: string): string[];\nexport function getBranchChanges(branchOrOptions: string | GitBranchOptions, cwd?: string): string[] {\n const { branch, ...options } =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n return getChangesBetweenRefs({ fromRef: branch, throwOnError: true, ...options });\n}\n\n/**\n * Gets file paths with changes between two git references (commits, branches, tags).\n * Throws an error on failure by default.\n *\n * @returns An array of file paths that have changed\n */\n// TODO: move to getChanges.ts\nexport function getChangesBetweenRefs(options: GetChangesBetweenRefsOptions): string[];\n/** @deprecated Use object param version */\nexport function getChangesBetweenRefs(\n fromRef: string,\n toRef: string,\n options: string[],\n pattern: string,\n cwd: string\n): string[];\nexport function getChangesBetweenRefs(\n fromRef: string | GetChangesBetweenRefsOptions,\n toRef?: string,\n options?: string[],\n pattern?: string,\n cwd?: string\n): string[] {\n let gitOptions: GitCommonOptions;\n if (typeof fromRef === \"string\") {\n gitOptions = { cwd: cwd! };\n } else {\n ({ fromRef, toRef, options, pattern, ...gitOptions } = fromRef);\n }\n\n const range = `${fromRef}...${toRef || \"\"}`;\n const results = git([...diffArgs, ...(options || []), range, ...(pattern ? [\"--\", pattern] : [])], {\n description: `Gathering information about changes between refs (${range})`,\n throwOnError: true,\n ...gitOptions,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Gets all files with staged changes (files added to the index).\n * Throws an error on failure by default.\n *\n * @returns An array of relative file paths that have been staged\n */\n// TODO: move to getChanges.ts\nexport function getStagedChanges(options: GitCommonOptions): string[];\n/** @deprecated Use object params version */\nexport function getStagedChanges(cwd: string): string[];\nexport function getStagedChanges(cwdOrOptions: string | GitCommonOptions): string[] {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([...diffArgs, \"--staged\"], {\n description: \"Gathering information about staged changes\",\n throwOnError: true,\n ...options,\n });\n return processGitOutput(results, { excludeNodeModules: true });\n}\n\n/**\n * Gets recent commit messages between the specified parent branch and HEAD.\n * By default, returns an empty array if the operation fails.\n *\n * @returns An array of commit message strings\n */\n// TODO: move to history.ts\nexport function getRecentCommitMessages(options: GitBranchOptions): string[];\n/** @deprecated Use object params version */\nexport function getRecentCommitMessages(branch: string, cwd: string): string[];\nexport function getRecentCommitMessages(branchOrOptions: string | GitBranchOptions, cwd?: string): string[] {\n const { branch, ...options } =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n const results = git([\"log\", \"--decorate\", \"--pretty=format:%s\", `${branch}..HEAD`], {\n description: `Getting recent commit messages for branch \"${branch}\"`,\n ...options,\n });\n return processGitOutput(results);\n}\n\n/**\n * Gets the user email from the git config.\n * @returns The email string if found, null otherwise\n */\n// TODO: move to config.ts\nexport function getUserEmail(options: GitCommonOptions): string | null;\n/** @deprecated Use object params version */\nexport function getUserEmail(cwd: string): string | null;\nexport function getUserEmail(cwdOrOptions: string | GitCommonOptions): string | null {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n return getConfigValue({ key: \"user.email\", ...options });\n}\n\n/**\n * Gets the current branch name.\n * In detached HEAD state, returns \"HEAD\".\n *\n * @returns The branch name if successful, null otherwise\n */\n// TODO: move to refs.ts\nexport function getBranchName(options: GitCommonOptions): string | null;\n/** @deprecated Use object params version */\nexport function getBranchName(cwd: string): string | null;\nexport function getBranchName(cwdOrOptions: string | GitCommonOptions): string | null {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([\"rev-parse\", \"--abbrev-ref\", \"HEAD\"], {\n description: \"Getting current branch name\",\n ...options,\n });\n return results.success ? results.stdout : null;\n}\n\n/**\n * Gets the full reference path for a given branch.\n * `branch` here is the short branch name, e.g. `branch-name`.\n * @returns The full branch reference (e.g., `refs/heads/branch-name`) if found, null otherwise\n */\n// TODO: move to refs.ts\nexport function getFullBranchRef(options: GitBranchOptions): string | null;\n/** @deprecated Use object params version */\nexport function getFullBranchRef(branch: string, cwd: string): string | null;\nexport function getFullBranchRef(branchOrOptions: string | GitBranchOptions, cwd?: string): string | null {\n const { branch, ...options } =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n const showRefResults = git([\"show-ref\", \"--heads\", branch], options);\n\n return showRefResults.success ? showRefResults.stdout.split(\" \")[1] : null;\n}\n\n/**\n * Gets the short branch name from a full branch reference.\n * @returns The short branch name if successful, null otherwise\n */\n// TODO: move to refs.ts\nexport function getShortBranchName(\n options: {\n /** The full branch reference (e.g., `refs/heads/branch-name`) */\n fullBranchRef: string;\n } & GitCommonOptions\n): string | null;\n/** @deprecated Use object params version */\nexport function getShortBranchName(fullBranchRef: string, cwd: string): string | null;\nexport function getShortBranchName(\n refOrOptions: string | ({ fullBranchRef: string } & GitCommonOptions),\n cwd?: string\n): string | null {\n const { fullBranchRef, ...options } =\n typeof refOrOptions === \"string\" ? { fullBranchRef: refOrOptions, cwd: cwd! } : refOrOptions;\n\n // The original command `git name-rev --name-only` returned unreliable results if multiple\n // named refs point to the same commit as the branch.\n const showRefResults = git([\"rev-parse\", \"--abbrev-ref\", fullBranchRef], options);\n\n return showRefResults.success ? showRefResults.stdout || null : null;\n}\n\n/**\n * Gets the current commit hash (SHA).\n * @returns The hash if successful, null otherwise\n */\n// TODO: move to refs.ts\nexport function getCurrentHash(options: GitCommonOptions): string | null;\n/** @deprecated Use object params version */\nexport function getCurrentHash(cwd: string): string | null;\nexport function getCurrentHash(cwdOrOptions: string | GitCommonOptions): string | null {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const results = git([\"rev-parse\", \"HEAD\"], {\n description: \"Getting current git hash\",\n ...options,\n });\n\n return results.success ? results.stdout : null;\n}\n\n/**\n * Get the commit hash in which the file was first added.\n * @returns The commit hash if found, undefined otherwise\n */\n// TODO: move to history.ts\nexport function getFileAddedHash(options: { filename: string } & GitCommonOptions): string | undefined;\n/** @deprecated Use object params version */\nexport function getFileAddedHash(filename: string, cwd: string): string | undefined;\nexport function getFileAddedHash(\n filenameOrOptions: string | ({ filename: string } & GitCommonOptions),\n cwd?: string\n): string | undefined {\n const { filename, ...options } =\n typeof filenameOrOptions === \"string\" ? { filename: filenameOrOptions, cwd: cwd! } : filenameOrOptions;\n\n const results = git([\"rev-list\", \"--max-count=1\", \"HEAD\", filename], options);\n\n return results.success ? results.stdout.trim() : undefined;\n}\n\n/**\n * Run `git init` and verify that the `user.name` and `user.email` configs are set (at any level).\n * Throws an error if `git init` fails.\n *\n * If `user.email` and `user.name` aren't already set globally, and the missing value is provided\n * in params, set it at the repo level. Otherwise, throw an error.\n */\n// TODO: move to init.ts\nexport function init(options: GitInitOptions): void;\n/** @deprecated Use object params version */\nexport function init(cwd: string, email?: string, username?: string): void;\nexport function init(cwdOrOptions: string | GitInitOptions, _email?: string, _username?: string): void {\n const { email, username, ...options } =\n typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions, email: _email, username: _username } : cwdOrOptions;\n\n git([\"init\"], { ...options, throwOnError: true });\n\n if (!getConfigValue({ key: \"user.name\", ...options })) {\n if (!username) {\n throw new Error(\"must include a username when initializing git repo\");\n }\n git([\"config\", \"user.name\", username], options);\n }\n\n if (!getUserEmail(options)) {\n if (!email) {\n throw new Error(\"must include a email when initializing git repo\");\n }\n git([\"config\", \"user.email\", email], options);\n }\n}\n\n/**\n * Stages files matching the given patterns.\n */\n// TODO: move to stageAndCommit.ts\nexport function stage(options: GitStageOptions): void;\n/** @deprecated Use object params version */\nexport function stage(patterns: string[], cwd: string): void;\nexport function stage(patternsOrOptions: string[] | GitStageOptions, cwd?: string): void {\n const { patterns, ...options } = Array.isArray(patternsOrOptions)\n ? { patterns: patternsOrOptions, cwd: cwd! }\n : patternsOrOptions;\n\n for (const pattern of patterns) {\n git([\"add\", pattern], { ...options, description: `Staging changes (git add ${pattern})` });\n }\n}\n\n/**\n * Commit changes. Throws an error on failure by default.\n */\n// TODO: move to stageAndCommit.ts\nexport function commit(options: GitCommitOptions): void;\n/** @deprecated Use object params version */\nexport function commit(message: string, cwd: string, options?: string[]): void;\nexport function commit(messageOrOptions: string | GitCommitOptions, _cwd?: string, _options?: string[]): void {\n const { message, options, ...gitOptions } =\n typeof messageOrOptions === \"string\"\n ? { message: messageOrOptions, cwd: _cwd!, options: _options }\n : messageOrOptions;\n\n git([\"commit\", \"-m\", message, ...(options || [])], {\n throwOnError: true,\n description: \"Committing changes\",\n ...gitOptions,\n });\n}\n\n/**\n * Stages files matching the given patterns and creates a commit with the specified message.\n * Convenience function that combines `stage()` and `commit()`.\n * Throws an error on commit failure by default.\n */\n// TODO: move to stageAndCommit.ts\nexport function stageAndCommit(options: GitStageOptions & GitCommitOptions): void;\n/** @deprecated Use object params version */\nexport function stageAndCommit(patterns: string[], message: string, cwd: string, commitOptions?: string[]): void;\nexport function stageAndCommit(\n patternsOrOptions: string[] | (GitStageOptions & GitCommitOptions),\n message?: string,\n cwd?: string,\n commitOptions?: string[]\n): void {\n const options: GitStageOptions & GitCommitOptions = Array.isArray(patternsOrOptions)\n ? { patterns: patternsOrOptions, message: message!, cwd: cwd!, options: commitOptions }\n : patternsOrOptions;\n\n stage(options);\n commit(options);\n}\n\n/**\n * Reverts all local changes (both staged and unstaged) by stashing them and then dropping the stash.\n * @returns True if the revert was successful, false otherwise. It will also be false if there were\n * no changes to revert. (To distinguish between this case and errors, use the `throwOnError` option.)\n */\n// TODO: move to revertLocalChanges.ts\nexport function revertLocalChanges(options: GitCommonOptions): boolean;\n/** @deprecated Use object params version */\nexport function revertLocalChanges(cwd: string): boolean;\nexport function revertLocalChanges(cwdOrOptions: string | GitCommonOptions): boolean {\n const options: GitCommonOptions = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n const stash = `workspace-tools_${new Date().getTime()}`;\n if (!git([\"stash\", \"push\", \"-u\", \"-m\", stash], options).success) {\n return false;\n }\n\n const results = git([\"stash\", \"list\"], options);\n if (results.success) {\n const matched = results.stdout\n .split(/\\n/)\n .find((line) => line.includes(stash))\n ?.match(/^[^:]+/);\n\n if (matched) {\n git([\"stash\", \"drop\", matched[0]], options);\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Attempts to determine the parent branch of the current branch using `git show-branch`.\n * @returns The parent branch name if found, null otherwise\n * @deprecated Does not appear to be used\n */\nexport function getParentBranch(cwd: string): string | null {\n const branchName = getBranchName({ cwd });\n\n if (!branchName || branchName === \"HEAD\") {\n return null;\n }\n\n const showBranchResult = git([\"show-branch\", \"-a\"], { cwd });\n\n if (showBranchResult.success) {\n const showBranchLines = showBranchResult.stdout.split(/\\n/);\n const parentLine = showBranchLines.find(\n (line) => line.includes(\"*\") && !line.includes(branchName) && !line.includes(\"publish_\")\n );\n\n const matched = parentLine?.match(/\\[(.*)\\]/);\n return matched ? matched[1] : null;\n }\n\n return null;\n}\n\n/**\n * Gets the remote tracking branch for the specified branch.\n *\n * @returns The remote branch name (e.g., `origin/main`) if found, null otherwise\n */\n// TODO: move to refs.ts\nexport function getRemoteBranch(options: GitBranchOptions): string | null;\n/** @deprecated Use object params version */\nexport function getRemoteBranch(branch: string, cwd: string): string | null;\nexport function getRemoteBranch(branchOrOptions: string | GitBranchOptions, cwd?: string): string | null {\n const options: GitBranchOptions =\n typeof branchOrOptions === \"string\" ? { branch: branchOrOptions, cwd: cwd! } : branchOrOptions;\n\n const results = git([\"rev-parse\", \"--abbrev-ref\", \"--symbolic-full-name\", `${options.branch}@{u}`], options);\n\n return results.success ? results.stdout.trim() : null;\n}\n\n/**\n * Get the remote and branch name from a full branch name that may include a remote prefix.\n * If the path doesn't start with one of `options.knownRemotes` (but has multiple segments),\n * the actual list of remotes will be fetched to see if one of those matches.\n *\n * NOTE: The additional verification is new in the object params version; the original version\n * incorrectly assumes the first segment before a slash is always a remote.\n */\n// TODO: move to parseRemoteBranch.ts\nexport function parseRemoteBranch(options: ParseRemoteBranchOptions): ParsedRemoteBranch;\n/**\n * @deprecated Use object params version, which does more verification. This version inaccurately\n * assumes the first segment before a slash is always a remote, which could lead to tricky bugs.\n */\nexport function parseRemoteBranch(branch: string): ParsedRemoteBranch;\nexport function parseRemoteBranch(branchOrOptions: string | ParseRemoteBranchOptions): ParsedRemoteBranch {\n if (typeof branchOrOptions === \"string\") {\n const branch = branchOrOptions;\n const firstSlashPos = branch.indexOf(\"/\", 0);\n return {\n remote: branch.substring(0, firstSlashPos),\n remoteBranch: branch.substring(firstSlashPos + 1),\n };\n }\n\n const { branch, knownRemotes = [\"origin\", \"upstream\"], ...options } = branchOrOptions;\n\n if (!branch.includes(\"/\")) {\n return { remote: \"\", remoteBranch: branch };\n }\n\n let remote = knownRemotes.find((r) => branch.startsWith(`${r}/`));\n\n if (!remote) {\n const remotes = git([\"remote\"], options).stdout.trim().split(/\\n/);\n remote = remotes.find((r) => branch.startsWith(`${r}/`));\n }\n\n if (remote) {\n return { remote, remoteBranch: branch.slice(remote.length + 1) };\n }\n return { remote: \"\", remoteBranch: branch };\n}\n\n/**\n * Gets the default branch based on `git config init.defaultBranch`, falling back to `master`.\n */\n// TODO: move to config.ts\nexport function getDefaultBranch(options: GitCommonOptions): string;\n/** @deprecated Use object params version */\nexport function getDefaultBranch(cwd: string): string;\nexport function getDefaultBranch(cwdOrOptions: string | GitCommonOptions): string {\n const options = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n\n // Default to the legacy 'master' for backwards compat and old git clients\n return getConfigValue({ key: \"init.defaultBranch\", ...options }) || \"master\";\n}\n\n/**\n * Lists all tracked files matching the given patterns.\n * Throws on error by default.\n * @returns An array of file paths, or an empty array if no files are found\n */\n// TODO: move to history.ts\nexport function listAllTrackedFiles(\n options: {\n /** File patterns to match (passed to git ls-files) */\n patterns: string[];\n } & GitCommonOptions\n): string[];\n/** @deprecated Use object params version */\nexport function listAllTrackedFiles(patterns: string[], cwd: string): string[];\nexport function listAllTrackedFiles(\n patternsOrOptions: string[] | ({ patterns: string[] } & GitCommonOptions),\n cwd?: string\n): string[] {\n const { patterns, ...options } = Array.isArray(patternsOrOptions)\n ? { patterns: patternsOrOptions, cwd: cwd! }\n : patternsOrOptions;\n\n const results = git([\"ls-files\", ...patterns], { throwOnError: true, ...options });\n\n return processGitOutput(results);\n}\n"],"names":["commit","fetchRemote","fetchRemoteBranch","getBranchChanges","getBranchName","getChanges","getChangesBetweenRefs","getCurrentHash","getDefaultBranch","getFileAddedHash","getFullBranchRef","getParentBranch","getRecentCommitMessages","getRemoteBranch","getShortBranchName","getStagedChanges","getUnstagedChanges","getUntrackedChanges","getUserEmail","init","listAllTrackedFiles","parseRemoteBranch","revertLocalChanges","stage","stageAndCommit","diffArgs","cwdOrOptions","options","cwd","results","git","description","throwOnError","processGitOutput","excludeNodeModules","remoteOrOptions","remote","remoteBranch","gitOptions","Error","fetchArgs","branch","fromRef","branchOrOptions","toRef","pattern","range","getConfigValue","key","success","stdout","showRefResults","split","refOrOptions","fullBranchRef","filenameOrOptions","filename","trim","undefined","_email","_username","email","username","patternsOrOptions","patterns","Array","isArray","messageOrOptions","_cwd","_options","message","commitOptions","stash","Date","getTime","matched","find","line","includes","match","branchName","showBranchResult","showBranchLines","parentLine","firstSlashPos","indexOf","substring","knownRemotes","r","startsWith","remotes","slice","length"],"mappings":"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"}
package/lib/git/index.js CHANGED
@@ -2,6 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ addGitObserver: null,
7
+ clearGitObservers: null,
8
+ getConfigValue: null,
9
+ getDefaultRemote: null,
10
+ getDefaultRemoteBranch: null,
11
+ git: null,
12
+ gitFailFast: null
13
+ });
5
14
  function _export(target, all) {
6
15
  for(var name in all)Object.defineProperty(target, name, {
7
16
  enumerable: true,
@@ -31,6 +40,7 @@ _export(exports, {
31
40
  return _git.gitFailFast;
32
41
  }
33
42
  });
43
+ 0 && __export(require("./gitUtilities.js"));
34
44
  const _git = require("./git.js");
35
45
  const _config = require("./config.js");
36
46
  const _getDefaultRemote = require("./getDefaultRemote.js");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/git/index.ts"],"sourcesContent":["export {\n type GitError,\n type GitObserver,\n type GitOptions,\n type GitProcessOutput,\n addGitObserver,\n clearGitObservers,\n git,\n gitFailFast,\n} from \"./git.js\";\nexport { getConfigValue } from \"./config.js\";\nexport { type GetDefaultRemoteOptions, getDefaultRemote } from \"./getDefaultRemote.js\";\nexport { type GetDefaultRemoteBranchOptions, getDefaultRemoteBranch } from \"./getDefaultRemoteBranch.js\";\nexport * from \"./gitUtilities.js\";\n// getRepositoryName is not currently exported; could be changed if it would be useful externally\n"],"names":["addGitObserver","clearGitObservers","getConfigValue","getDefaultRemote","getDefaultRemoteBranch","git","gitFailFast"],"mappings":";;;;;;;;;;;QAKEA;eAAAA,mBAAc;;QACdC;eAAAA,sBAAiB;;QAIVC;eAAAA,sBAAc;;QACgBC;eAAAA,kCAAgB;;QACVC;eAAAA,8CAAsB;;QALjEC;eAAAA,QAAG;;QACHC;eAAAA,gBAAW;;;qBACN;wBACwB;kCACgC;wCACY;qBAC7D;;;;;;;;;;;;;;CACd,iGAAiG"}
1
+ {"version":3,"sources":["../../src/git/index.ts"],"sourcesContent":["export {\n type GitError,\n type GitObserver,\n type GitOptions,\n type GitProcessOutput,\n addGitObserver,\n clearGitObservers,\n git,\n gitFailFast,\n} from \"./git.js\";\nexport { getConfigValue } from \"./config.js\";\nexport { type GetDefaultRemoteOptions, getDefaultRemote } from \"./getDefaultRemote.js\";\nexport { type GetDefaultRemoteBranchOptions, getDefaultRemoteBranch } from \"./getDefaultRemoteBranch.js\";\nexport * from \"./gitUtilities.js\";\n// getRepositoryName is not currently exported; could be changed if it would be useful externally\n"],"names":["addGitObserver","clearGitObservers","getConfigValue","getDefaultRemote","getDefaultRemoteBranch","git","gitFailFast"],"mappings":";;;;;;;;;;;;;;;;;;;;QAKEA;eAAAA,mBAAc;;QACdC;eAAAA,sBAAiB;;QAIVC;eAAAA,sBAAc;;QACgBC;eAAAA,kCAAgB;;QACVC;eAAAA,8CAAsB;;QALjEC;eAAAA,QAAG;;QACHC;eAAAA,gBAAW;;;;qBACN;wBACwB;kCACgC;wCACY;qBAC7D;;;;;;;;;;;;;;CACd,iGAAiG"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "getDependentMap", {
8
8
  return getDependentMap;
9
9
  }
10
10
  });
11
+ 0 && __export(require("./createPackageGraph.js")) && __export(require("./createDependencyMap.js")) && __export(require("./getPackageDependencies.js"));
11
12
  _export_star(require("./createPackageGraph.js"), exports);
12
13
  const _createDependencyMap = _export_star(require("./createDependencyMap.js"), exports);
13
14
  _export_star(require("./getPackageDependencies.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/graph/index.ts"],"sourcesContent":["export * from \"./createPackageGraph.js\";\nexport * from \"./createDependencyMap.js\";\nexport * from \"./getPackageDependencies.js\";\nimport { type PackageInfos } from \"../types/PackageInfo.js\";\nimport { createDependencyMap } from \"./createDependencyMap.js\";\n\n/**\n * @deprecated - use createDependencyMap() instead\n *\n * Gets a map that has the package name as key, and its dependencies as values\n */\nexport function getDependentMap(packages: PackageInfos): Map<string, Set<string>> {\n return createDependencyMap(packages).dependencies;\n}\n"],"names":["getDependentMap","packages","createDependencyMap","dependencies"],"mappings":";;;;+BAWgBA;;;eAAAA;;;qBAXF;kDACA;qBACA;;;;;;;;;;;;;;AASP,SAASA,gBAAgBC,QAAsB;IACpD,OAAOC,IAAAA,wCAAmB,EAACD,UAAUE,YAAY;AACnD"}
1
+ {"version":3,"sources":["../../src/graph/index.ts"],"sourcesContent":["export * from \"./createPackageGraph.js\";\nexport * from \"./createDependencyMap.js\";\nexport * from \"./getPackageDependencies.js\";\nimport { type PackageInfos } from \"../types/PackageInfo.js\";\nimport { createDependencyMap } from \"./createDependencyMap.js\";\n\n/**\n * @deprecated - use createDependencyMap() instead\n *\n * Gets a map that has the package name as key, and its dependencies as values\n */\nexport function getDependentMap(packages: PackageInfos): Map<string, Set<string>> {\n return createDependencyMap(packages).dependencies;\n}\n"],"names":["getDependentMap","packages","createDependencyMap","dependencies"],"mappings":";;;;+BAWgBA;;;eAAAA;;;;qBAXF;kDACA;qBACA;;;;;;;;;;;;;;AASP,SAASA,gBAAgBC,QAAsB;IACpD,OAAOC,IAAAA,wCAAmB,EAACD,UAAUE,YAAY;AACnD"}
package/lib/index.js CHANGED
@@ -2,6 +2,44 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ catalogsToYaml: null,
7
+ findGitRoot: null,
8
+ findPackageRoot: null,
9
+ findProjectRoot: null,
10
+ findWorkspacePath: null,
11
+ getAllPackageJsonFiles: null,
12
+ getAllPackageJsonFilesAsync: null,
13
+ getCatalogVersion: null,
14
+ getCatalogs: null,
15
+ getChangedPackages: null,
16
+ getChangedPackagesBetweenRefs: null,
17
+ getInternalDeps: null,
18
+ getPackageInfo: null,
19
+ getPackageInfoAsync: null,
20
+ getPackageInfos: null,
21
+ getPackageInfosAsync: null,
22
+ getPackagesByFiles: null,
23
+ getScopedPackages: null,
24
+ getTransitiveConsumers: null,
25
+ getTransitiveDependencies: null,
26
+ getTransitiveDependents: null,
27
+ getTransitiveProviders: null,
28
+ getWorkspaceInfos: null,
29
+ getWorkspaceInfosAsync: null,
30
+ getWorkspaceManagerAndRoot: null,
31
+ getWorkspaceManagerRoot: null,
32
+ getWorkspacePackagePaths: null,
33
+ getWorkspacePackagePathsAsync: null,
34
+ getWorkspacePatterns: null,
35
+ isCatalogVersion: null,
36
+ isChildOf: null,
37
+ nameAtVersion: null,
38
+ parseLockFile: null,
39
+ queryLockFile: null,
40
+ searchUp: null,
41
+ setCachingEnabled: null
42
+ });
5
43
  function _export(target, all) {
6
44
  for(var name in all)Object.defineProperty(target, name, {
7
45
  enumerable: true,
@@ -118,6 +156,7 @@ _export(exports, {
118
156
  return _isCachingEnabled.setCachingEnabled;
119
157
  }
120
158
  });
159
+ 0 && __export(require("./git/index.js")) && __export(require("./graph/index.js"));
121
160
  const _index = require("./dependencies/index.js");
122
161
  const _getPackageInfos = require("./getPackageInfos.js");
123
162
  _export_star(require("./git/index.js"), exports);
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"}
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,
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/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"}
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"}
@@ -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,
@@ -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/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"}
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"}
@@ -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,
@@ -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/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":"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"}
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":"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"}
@@ -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"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ getWorkspaceManagerAndRoot: null,
7
+ getWorkspaceUtilities: 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/implementations/index.ts"],"sourcesContent":["export { getWorkspaceManagerAndRoot, type WorkspaceManagerAndRoot } from \"./getWorkspaceManagerAndRoot.js\";\nexport { getWorkspaceUtilities } from \"./getWorkspaceUtilities.js\";\n"],"names":["getWorkspaceManagerAndRoot","getWorkspaceUtilities"],"mappings":";;;;;;;;;;;QAASA;eAAAA,sDAA0B;;QAC1BC;eAAAA,4CAAqB;;;4CAD2C;uCACnC"}
1
+ {"version":3,"sources":["../../../src/workspaces/implementations/index.ts"],"sourcesContent":["export { getWorkspaceManagerAndRoot, type WorkspaceManagerAndRoot } from \"./getWorkspaceManagerAndRoot.js\";\nexport { getWorkspaceUtilities } from \"./getWorkspaceUtilities.js\";\n"],"names":["getWorkspaceManagerAndRoot","getWorkspaceUtilities"],"mappings":";;;;;;;;;;;;;;;QAASA;eAAAA,sDAA0B;;QAC1BC;eAAAA,4CAAqB;;;4CAD2C;uCACnC"}
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ 0 && (module.exports = {
6
+ wrapAsyncWorkspaceUtility: null,
7
+ wrapWorkspaceUtility: 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/wrapWorkspaceUtility.ts"],"sourcesContent":["import { logVerboseWarning } from \"../logging.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceManagerAndRoot, type WorkspaceManagerAndRoot } from \"./implementations/index.js\";\n\ninterface WrappedUtilityParams {\n /** Search for the root from here */\n cwd: string;\n /** Optional manager to use instead of auto-detecting */\n managerOverride: WorkspaceManager | undefined;\n /** What the utility is getting (for logging) */\n description: string;\n}\n\n/**\n * Wrap a workspace utility function with common error handling and messaging.\n * Also handle getting the manager and root.\n *\n * @returns The utility's return value, or undefined on error (will verbose log on error)\n */\nexport function wrapWorkspaceUtility<TReturn>(\n params: WrappedUtilityParams & {\n /** Implementation of the utility, which receives the detected manager and root */\n impl: (params: WorkspaceManagerAndRoot) => TReturn | undefined;\n }\n): TReturn | undefined {\n const { cwd, description, impl } = params;\n let managerInfo: WorkspaceManagerAndRoot | undefined;\n try {\n managerInfo = getWorkspaceManagerAndRoot(cwd, undefined, params.managerOverride);\n if (managerInfo) {\n return impl(managerInfo);\n }\n } catch (err) {\n const manager = params.managerOverride || managerInfo?.manager || \"unknown manager\";\n logVerboseWarning(`Error getting ${manager} ${description} for ${cwd}:`, err);\n }\n}\n\n/**\n * Wrap a workspace utility function with common error handling and messaging.\n * Also handle getting the manager and root.\n *\n * @returns The utility's return value, or undefined on error (will verbose log on error)\n */\nexport async function wrapAsyncWorkspaceUtility<TReturn>(\n params: WrappedUtilityParams & {\n /** Implementation of the utility, which receives the detected manager and root */\n impl: (params: WorkspaceManagerAndRoot) => Promise<TReturn | undefined>;\n }\n): Promise<TReturn | undefined> {\n const { cwd, description, impl } = params;\n let managerInfo: WorkspaceManagerAndRoot | undefined;\n try {\n managerInfo = getWorkspaceManagerAndRoot(cwd, undefined, params.managerOverride);\n if (managerInfo) {\n return await impl(managerInfo);\n }\n } catch (err) {\n const manager = params.managerOverride || managerInfo?.manager || \"unknown manager\";\n logVerboseWarning(`Error getting ${manager} ${description} for ${cwd}:`, err);\n }\n return undefined;\n}\n"],"names":["wrapAsyncWorkspaceUtility","wrapWorkspaceUtility","params","cwd","description","impl","managerInfo","getWorkspaceManagerAndRoot","undefined","managerOverride","err","manager","logVerboseWarning"],"mappings":";;;;;;;;;;;QA4CsBA;eAAAA;;QAzBNC;eAAAA;;;yBAnBkB;uBAEuC;AAiBlE,SAASA,qBACdC,MAGC;IAED,MAAM,EAAEC,GAAG,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGH;IACnC,IAAII;IACJ,IAAI;QACFA,cAAcC,IAAAA,iCAA0B,EAACJ,KAAKK,WAAWN,OAAOO,eAAe;QAC/E,IAAIH,aAAa;YACf,OAAOD,KAAKC;QACd;IACF,EAAE,OAAOI,KAAK;QACZ,MAAMC,UAAUT,OAAOO,eAAe,IAAIH,aAAaK,WAAW;QAClEC,IAAAA,0BAAiB,EAAC,CAAC,cAAc,EAAED,QAAQ,CAAC,EAAEP,YAAY,KAAK,EAAED,IAAI,CAAC,CAAC,EAAEO;IAC3E;AACF;AAQO,eAAeV,0BACpBE,MAGC;IAED,MAAM,EAAEC,GAAG,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGH;IACnC,IAAII;IACJ,IAAI;QACFA,cAAcC,IAAAA,iCAA0B,EAACJ,KAAKK,WAAWN,OAAOO,eAAe;QAC/E,IAAIH,aAAa;YACf,OAAO,MAAMD,KAAKC;QACpB;IACF,EAAE,OAAOI,KAAK;QACZ,MAAMC,UAAUT,OAAOO,eAAe,IAAIH,aAAaK,WAAW;QAClEC,IAAAA,0BAAiB,EAAC,CAAC,cAAc,EAAED,QAAQ,CAAC,EAAEP,YAAY,KAAK,EAAED,IAAI,CAAC,CAAC,EAAEO;IAC3E;IACA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/wrapWorkspaceUtility.ts"],"sourcesContent":["import { logVerboseWarning } from \"../logging.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceManagerAndRoot, type WorkspaceManagerAndRoot } from \"./implementations/index.js\";\n\ninterface WrappedUtilityParams {\n /** Search for the root from here */\n cwd: string;\n /** Optional manager to use instead of auto-detecting */\n managerOverride: WorkspaceManager | undefined;\n /** What the utility is getting (for logging) */\n description: string;\n}\n\n/**\n * Wrap a workspace utility function with common error handling and messaging.\n * Also handle getting the manager and root.\n *\n * @returns The utility's return value, or undefined on error (will verbose log on error)\n */\nexport function wrapWorkspaceUtility<TReturn>(\n params: WrappedUtilityParams & {\n /** Implementation of the utility, which receives the detected manager and root */\n impl: (params: WorkspaceManagerAndRoot) => TReturn | undefined;\n }\n): TReturn | undefined {\n const { cwd, description, impl } = params;\n let managerInfo: WorkspaceManagerAndRoot | undefined;\n try {\n managerInfo = getWorkspaceManagerAndRoot(cwd, undefined, params.managerOverride);\n if (managerInfo) {\n return impl(managerInfo);\n }\n } catch (err) {\n const manager = params.managerOverride || managerInfo?.manager || \"unknown manager\";\n logVerboseWarning(`Error getting ${manager} ${description} for ${cwd}:`, err);\n }\n}\n\n/**\n * Wrap a workspace utility function with common error handling and messaging.\n * Also handle getting the manager and root.\n *\n * @returns The utility's return value, or undefined on error (will verbose log on error)\n */\nexport async function wrapAsyncWorkspaceUtility<TReturn>(\n params: WrappedUtilityParams & {\n /** Implementation of the utility, which receives the detected manager and root */\n impl: (params: WorkspaceManagerAndRoot) => Promise<TReturn | undefined>;\n }\n): Promise<TReturn | undefined> {\n const { cwd, description, impl } = params;\n let managerInfo: WorkspaceManagerAndRoot | undefined;\n try {\n managerInfo = getWorkspaceManagerAndRoot(cwd, undefined, params.managerOverride);\n if (managerInfo) {\n return await impl(managerInfo);\n }\n } catch (err) {\n const manager = params.managerOverride || managerInfo?.manager || \"unknown manager\";\n logVerboseWarning(`Error getting ${manager} ${description} for ${cwd}:`, err);\n }\n return undefined;\n}\n"],"names":["wrapAsyncWorkspaceUtility","wrapWorkspaceUtility","params","cwd","description","impl","managerInfo","getWorkspaceManagerAndRoot","undefined","managerOverride","err","manager","logVerboseWarning"],"mappings":";;;;;;;;;;;;;;;QA4CsBA;eAAAA;;QAzBNC;eAAAA;;;yBAnBkB;uBAEuC;AAiBlE,SAASA,qBACdC,MAGC;IAED,MAAM,EAAEC,GAAG,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGH;IACnC,IAAII;IACJ,IAAI;QACFA,cAAcC,IAAAA,iCAA0B,EAACJ,KAAKK,WAAWN,OAAOO,eAAe;QAC/E,IAAIH,aAAa;YACf,OAAOD,KAAKC;QACd;IACF,EAAE,OAAOI,KAAK;QACZ,MAAMC,UAAUT,OAAOO,eAAe,IAAIH,aAAaK,WAAW;QAClEC,IAAAA,0BAAiB,EAAC,CAAC,cAAc,EAAED,QAAQ,CAAC,EAAEP,YAAY,KAAK,EAAED,IAAI,CAAC,CAAC,EAAEO;IAC3E;AACF;AAQO,eAAeV,0BACpBE,MAGC;IAED,MAAM,EAAEC,GAAG,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGH;IACnC,IAAII;IACJ,IAAI;QACFA,cAAcC,IAAAA,iCAA0B,EAACJ,KAAKK,WAAWN,OAAOO,eAAe;QAC/E,IAAIH,aAAa;YACf,OAAO,MAAMD,KAAKC;QACpB;IACF,EAAE,OAAOI,KAAK;QACZ,MAAMC,UAAUT,OAAOO,eAAe,IAAIH,aAAaK,WAAW;QAClEC,IAAAA,0BAAiB,EAAC,CAAC,cAAc,EAAED,QAAQ,CAAC,EAAEP,YAAY,KAAK,EAAED,IAAI,CAAC,CAAC,EAAEO;IAC3E;IACA,OAAOF;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workspace-tools",
3
- "version": "0.41.2",
3
+ "version": "0.41.4",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  "@lage-run/monorepo-scripts": "^1.0.0",
34
34
  "@lage-run/test-utilities": "^0.1.0",
35
35
  "@types/git-url-parse": "^16.0.0",
36
- "@types/jju": "^1.4.2",
36
+ "@types/jju": "^1.4.5",
37
37
  "@types/js-yaml": "^4.0.5",
38
38
  "@types/micromatch": "^4.0.0",
39
39
  "@types/yarnpkg__lockfile": "^1.1.5",