workspace-tools 0.41.1 → 0.41.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,7 +35,7 @@ function getDefaultRemote(cwdOrOptions) {
35
35
  const packageJsonPath = _path.default.join(gitRoot, "package.json");
36
36
  try {
37
37
  packageJson = JSON.parse(_fs.default.readFileSync(packageJsonPath, "utf8").trim());
38
- } catch (e) {
38
+ } catch {
39
39
  logOrThrow(`Could not read "${packageJsonPath}"`);
40
40
  }
41
41
  const { repository } = packageJson;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/git/getDefaultRemote.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { findGitRoot } from \"../paths.js\";\nimport { type PackageInfo } from \"../types/PackageInfo.js\";\nimport { getRepositoryName } from \"./getRepositoryName.js\";\nimport { git } from \"./git.js\";\n\nexport type GetDefaultRemoteOptions = {\n /** Get repository info relative to this directory. */\n cwd: string;\n /**\n * If true, throw an error if remote info can't be found, or if a `repository` is not specified\n * in package.json and no matching remote is found.\n */\n strict?: boolean;\n /** If true, log debug messages about how the remote was chosen */\n verbose?: boolean;\n};\n\n/**\n * Get the name of the default remote: the one matching the `repository` field in package.json.\n * Throws if `options.cwd` is not in a git repo or there's no package.json at the repo root.\n *\n * The order of preference for returned remotes is:\n * 1. If `repository` is defined in package.json, the remote with a matching URL (if `options.strict`\n * is true, throws an error if no matching remote exists)\n * 2. `upstream` if defined\n * 3. `origin` if defined\n * 4. The first defined remote\n * 5. If there are no defined remotes: throws an error if `options.strict` is true; otherwise returns `origin`\n *\n * @returns The name of the inferred default remote.\n */\nexport function getDefaultRemote(options: GetDefaultRemoteOptions): string;\n/** @deprecated Use the object param version */\nexport function getDefaultRemote(cwd: string): string;\nexport function getDefaultRemote(cwdOrOptions: string | GetDefaultRemoteOptions): string {\n const options = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n const { cwd, strict, verbose } = options;\n\n const log = (message: string) => verbose && console.log(message);\n const logOrThrow = (message: string) => {\n if (strict) {\n throw new Error(message);\n }\n log(message);\n };\n\n const gitRoot = findGitRoot(cwd);\n\n let packageJson: Partial<PackageInfo> = {};\n const packageJsonPath = path.join(gitRoot, \"package.json\");\n try {\n packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\").trim());\n } catch (e) {\n logOrThrow(`Could not read \"${packageJsonPath}\"`);\n }\n\n const { repository } = packageJson;\n const repositoryUrl = typeof repository === \"string\" ? repository : (repository && repository.url) || \"\";\n if (!repositoryUrl) {\n // This is always logged because it's strongly recommended to fix\n console.log(\n `Valid \"repository\" key not found in \"${packageJsonPath}\". Consider adding this info for more accurate git remote detection.`\n );\n }\n /** Repository full name (owner and repo name) specified in package.json */\n const repositoryName = getRepositoryName(repositoryUrl);\n\n const remotesResult = git([\"remote\", \"-v\"], { cwd });\n if (!remotesResult.success) {\n logOrThrow(`Could not determine available git remotes under \"${cwd}\"`);\n }\n\n /** Mapping from remote URL to full name (owner and repo name) */\n const remotes: { [remoteRepoUrl: string]: string } = {};\n remotesResult.stdout.split(\"\\n\").forEach((line) => {\n const [remoteName, remoteUrl] = line.split(/\\s+/);\n const remoteRepoName = getRepositoryName(remoteUrl);\n if (remoteRepoName) {\n remotes[remoteRepoName] = remoteName;\n }\n });\n\n if (repositoryName) {\n // If the repository name was found in package.json, check for a matching remote\n if (remotes[repositoryName]) {\n return remotes[repositoryName];\n }\n\n // If `strict` is true, and repositoryName is found, there MUST be a matching remote\n logOrThrow(`Could not find remote pointing to repository \"${repositoryName}\".`);\n }\n\n // Default to upstream or origin if available, or the first remote otherwise\n const allRemoteNames = Object.values(remotes);\n const fallbacks = [\"upstream\", \"origin\", ...allRemoteNames];\n for (const fallback of fallbacks) {\n if (allRemoteNames.includes(fallback)) {\n log(`Default to remote \"${fallback}\"`);\n return fallback;\n }\n }\n\n // If we get here, no git remotes were found. This should probably always be an error (since\n // subsequent operations which require a remote likely won't work), but to match old behavior,\n // still default to \"origin\" unless `strict` is true.\n logOrThrow(`Could not find any remotes in git repo at \"${gitRoot}\".`);\n log(`Assuming default remote \"origin\".`);\n return \"origin\";\n}\n"],"names":["getDefaultRemote","cwdOrOptions","options","cwd","strict","verbose","log","message","console","logOrThrow","Error","gitRoot","findGitRoot","packageJson","packageJsonPath","path","join","JSON","parse","fs","readFileSync","trim","e","repository","repositoryUrl","url","repositoryName","getRepositoryName","remotesResult","git","success","remotes","stdout","split","forEach","line","remoteName","remoteUrl","remoteRepoName","allRemoteNames","Object","values","fallbacks","fallback","includes"],"mappings":";;;;+BAoCgBA;;;eAAAA;;;2DApCD;6DACE;uBACW;mCAEM;qBACd;;;;;;AA+Bb,SAASA,iBAAiBC,YAA8C;IAC7E,MAAMC,UAAU,OAAOD,iBAAiB,WAAW;QAAEE,KAAKF;IAAa,IAAIA;IAC3E,MAAM,EAAEE,GAAG,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGH;IAEjC,MAAMI,MAAM,CAACC,UAAoBF,WAAWG,QAAQF,GAAG,CAACC;IACxD,MAAME,aAAa,CAACF;QAClB,IAAIH,QAAQ;YACV,MAAM,IAAIM,MAAMH;QAClB;QACAD,IAAIC;IACN;IAEA,MAAMI,UAAUC,IAAAA,kBAAW,EAACT;IAE5B,IAAIU,cAAoC,CAAC;IACzC,MAAMC,kBAAkBC,aAAI,CAACC,IAAI,CAACL,SAAS;IAC3C,IAAI;QACFE,cAAcI,KAAKC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACN,iBAAiB,QAAQO,IAAI;IACxE,EAAE,OAAOC,GAAG;QACVb,WAAW,CAAC,gBAAgB,EAAEK,gBAAgB,CAAC,CAAC;IAClD;IAEA,MAAM,EAAES,UAAU,EAAE,GAAGV;IACvB,MAAMW,gBAAgB,OAAOD,eAAe,WAAWA,aAAa,AAACA,cAAcA,WAAWE,GAAG,IAAK;IACtG,IAAI,CAACD,eAAe;QAClB,iEAAiE;QACjEhB,QAAQF,GAAG,CACT,CAAC,qCAAqC,EAAEQ,gBAAgB,oEAAoE,CAAC;IAEjI;IACA,yEAAyE,GACzE,MAAMY,iBAAiBC,IAAAA,oCAAiB,EAACH;IAEzC,MAAMI,gBAAgBC,IAAAA,QAAG,EAAC;QAAC;QAAU;KAAK,EAAE;QAAE1B;IAAI;IAClD,IAAI,CAACyB,cAAcE,OAAO,EAAE;QAC1BrB,WAAW,CAAC,iDAAiD,EAAEN,IAAI,CAAC,CAAC;IACvE;IAEA,+DAA+D,GAC/D,MAAM4B,UAA+C,CAAC;IACtDH,cAAcI,MAAM,CAACC,KAAK,CAAC,MAAMC,OAAO,CAAC,CAACC;QACxC,MAAM,CAACC,YAAYC,UAAU,GAAGF,KAAKF,KAAK,CAAC;QAC3C,MAAMK,iBAAiBX,IAAAA,oCAAiB,EAACU;QACzC,IAAIC,gBAAgB;YAClBP,OAAO,CAACO,eAAe,GAAGF;QAC5B;IACF;IAEA,IAAIV,gBAAgB;QAClB,gFAAgF;QAChF,IAAIK,OAAO,CAACL,eAAe,EAAE;YAC3B,OAAOK,OAAO,CAACL,eAAe;QAChC;QAEA,oFAAoF;QACpFjB,WAAW,CAAC,8CAA8C,EAAEiB,eAAe,EAAE,CAAC;IAChF;IAEA,4EAA4E;IAC5E,MAAMa,iBAAiBC,OAAOC,MAAM,CAACV;IACrC,MAAMW,YAAY;QAAC;QAAY;WAAaH;KAAe;IAC3D,KAAK,MAAMI,YAAYD,UAAW;QAChC,IAAIH,eAAeK,QAAQ,CAACD,WAAW;YACrCrC,IAAI,CAAC,mBAAmB,EAAEqC,SAAS,CAAC,CAAC;YACrC,OAAOA;QACT;IACF;IAEA,4FAA4F;IAC5F,8FAA8F;IAC9F,qDAAqD;IACrDlC,WAAW,CAAC,2CAA2C,EAAEE,QAAQ,EAAE,CAAC;IACpEL,IAAI,CAAC,iCAAiC,CAAC;IACvC,OAAO;AACT"}
1
+ {"version":3,"sources":["../../src/git/getDefaultRemote.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { findGitRoot } from \"../paths.js\";\nimport { type PackageInfo } from \"../types/PackageInfo.js\";\nimport { getRepositoryName } from \"./getRepositoryName.js\";\nimport { git } from \"./git.js\";\n\nexport type GetDefaultRemoteOptions = {\n /** Get repository info relative to this directory. */\n cwd: string;\n /**\n * If true, throw an error if remote info can't be found, or if a `repository` is not specified\n * in package.json and no matching remote is found.\n */\n strict?: boolean;\n /** If true, log debug messages about how the remote was chosen */\n verbose?: boolean;\n};\n\n/**\n * Get the name of the default remote: the one matching the `repository` field in package.json.\n * Throws if `options.cwd` is not in a git repo or there's no package.json at the repo root.\n *\n * The order of preference for returned remotes is:\n * 1. If `repository` is defined in package.json, the remote with a matching URL (if `options.strict`\n * is true, throws an error if no matching remote exists)\n * 2. `upstream` if defined\n * 3. `origin` if defined\n * 4. The first defined remote\n * 5. If there are no defined remotes: throws an error if `options.strict` is true; otherwise returns `origin`\n *\n * @returns The name of the inferred default remote.\n */\nexport function getDefaultRemote(options: GetDefaultRemoteOptions): string;\n/** @deprecated Use the object param version */\nexport function getDefaultRemote(cwd: string): string;\nexport function getDefaultRemote(cwdOrOptions: string | GetDefaultRemoteOptions): string {\n const options = typeof cwdOrOptions === \"string\" ? { cwd: cwdOrOptions } : cwdOrOptions;\n const { cwd, strict, verbose } = options;\n\n const log = (message: string) => verbose && console.log(message);\n const logOrThrow = (message: string) => {\n if (strict) {\n throw new Error(message);\n }\n log(message);\n };\n\n const gitRoot = findGitRoot(cwd);\n\n let packageJson: Partial<PackageInfo> = {};\n const packageJsonPath = path.join(gitRoot, \"package.json\");\n try {\n packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\").trim());\n } catch {\n logOrThrow(`Could not read \"${packageJsonPath}\"`);\n }\n\n const { repository } = packageJson;\n const repositoryUrl = typeof repository === \"string\" ? repository : (repository && repository.url) || \"\";\n if (!repositoryUrl) {\n // This is always logged because it's strongly recommended to fix\n console.log(\n `Valid \"repository\" key not found in \"${packageJsonPath}\". Consider adding this info for more accurate git remote detection.`\n );\n }\n /** Repository full name (owner and repo name) specified in package.json */\n const repositoryName = getRepositoryName(repositoryUrl);\n\n const remotesResult = git([\"remote\", \"-v\"], { cwd });\n if (!remotesResult.success) {\n logOrThrow(`Could not determine available git remotes under \"${cwd}\"`);\n }\n\n /** Mapping from remote URL to full name (owner and repo name) */\n const remotes: { [remoteRepoUrl: string]: string } = {};\n remotesResult.stdout.split(\"\\n\").forEach((line) => {\n const [remoteName, remoteUrl] = line.split(/\\s+/);\n const remoteRepoName = getRepositoryName(remoteUrl);\n if (remoteRepoName) {\n remotes[remoteRepoName] = remoteName;\n }\n });\n\n if (repositoryName) {\n // If the repository name was found in package.json, check for a matching remote\n if (remotes[repositoryName]) {\n return remotes[repositoryName];\n }\n\n // If `strict` is true, and repositoryName is found, there MUST be a matching remote\n logOrThrow(`Could not find remote pointing to repository \"${repositoryName}\".`);\n }\n\n // Default to upstream or origin if available, or the first remote otherwise\n const allRemoteNames = Object.values(remotes);\n const fallbacks = [\"upstream\", \"origin\", ...allRemoteNames];\n for (const fallback of fallbacks) {\n if (allRemoteNames.includes(fallback)) {\n log(`Default to remote \"${fallback}\"`);\n return fallback;\n }\n }\n\n // If we get here, no git remotes were found. This should probably always be an error (since\n // subsequent operations which require a remote likely won't work), but to match old behavior,\n // still default to \"origin\" unless `strict` is true.\n logOrThrow(`Could not find any remotes in git repo at \"${gitRoot}\".`);\n log(`Assuming default remote \"origin\".`);\n return \"origin\";\n}\n"],"names":["getDefaultRemote","cwdOrOptions","options","cwd","strict","verbose","log","message","console","logOrThrow","Error","gitRoot","findGitRoot","packageJson","packageJsonPath","path","join","JSON","parse","fs","readFileSync","trim","repository","repositoryUrl","url","repositoryName","getRepositoryName","remotesResult","git","success","remotes","stdout","split","forEach","line","remoteName","remoteUrl","remoteRepoName","allRemoteNames","Object","values","fallbacks","fallback","includes"],"mappings":";;;;+BAoCgBA;;;eAAAA;;;2DApCD;6DACE;uBACW;mCAEM;qBACd;;;;;;AA+Bb,SAASA,iBAAiBC,YAA8C;IAC7E,MAAMC,UAAU,OAAOD,iBAAiB,WAAW;QAAEE,KAAKF;IAAa,IAAIA;IAC3E,MAAM,EAAEE,GAAG,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGH;IAEjC,MAAMI,MAAM,CAACC,UAAoBF,WAAWG,QAAQF,GAAG,CAACC;IACxD,MAAME,aAAa,CAACF;QAClB,IAAIH,QAAQ;YACV,MAAM,IAAIM,MAAMH;QAClB;QACAD,IAAIC;IACN;IAEA,MAAMI,UAAUC,IAAAA,kBAAW,EAACT;IAE5B,IAAIU,cAAoC,CAAC;IACzC,MAAMC,kBAAkBC,aAAI,CAACC,IAAI,CAACL,SAAS;IAC3C,IAAI;QACFE,cAAcI,KAAKC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACN,iBAAiB,QAAQO,IAAI;IACxE,EAAE,OAAM;QACNZ,WAAW,CAAC,gBAAgB,EAAEK,gBAAgB,CAAC,CAAC;IAClD;IAEA,MAAM,EAAEQ,UAAU,EAAE,GAAGT;IACvB,MAAMU,gBAAgB,OAAOD,eAAe,WAAWA,aAAa,AAACA,cAAcA,WAAWE,GAAG,IAAK;IACtG,IAAI,CAACD,eAAe;QAClB,iEAAiE;QACjEf,QAAQF,GAAG,CACT,CAAC,qCAAqC,EAAEQ,gBAAgB,oEAAoE,CAAC;IAEjI;IACA,yEAAyE,GACzE,MAAMW,iBAAiBC,IAAAA,oCAAiB,EAACH;IAEzC,MAAMI,gBAAgBC,IAAAA,QAAG,EAAC;QAAC;QAAU;KAAK,EAAE;QAAEzB;IAAI;IAClD,IAAI,CAACwB,cAAcE,OAAO,EAAE;QAC1BpB,WAAW,CAAC,iDAAiD,EAAEN,IAAI,CAAC,CAAC;IACvE;IAEA,+DAA+D,GAC/D,MAAM2B,UAA+C,CAAC;IACtDH,cAAcI,MAAM,CAACC,KAAK,CAAC,MAAMC,OAAO,CAAC,CAACC;QACxC,MAAM,CAACC,YAAYC,UAAU,GAAGF,KAAKF,KAAK,CAAC;QAC3C,MAAMK,iBAAiBX,IAAAA,oCAAiB,EAACU;QACzC,IAAIC,gBAAgB;YAClBP,OAAO,CAACO,eAAe,GAAGF;QAC5B;IACF;IAEA,IAAIV,gBAAgB;QAClB,gFAAgF;QAChF,IAAIK,OAAO,CAACL,eAAe,EAAE;YAC3B,OAAOK,OAAO,CAACL,eAAe;QAChC;QAEA,oFAAoF;QACpFhB,WAAW,CAAC,8CAA8C,EAAEgB,eAAe,EAAE,CAAC;IAChF;IAEA,4EAA4E;IAC5E,MAAMa,iBAAiBC,OAAOC,MAAM,CAACV;IACrC,MAAMW,YAAY;QAAC;QAAY;WAAaH;KAAe;IAC3D,KAAK,MAAMI,YAAYD,UAAW;QAChC,IAAIH,eAAeK,QAAQ,CAACD,WAAW;YACrCpC,IAAI,CAAC,mBAAmB,EAAEoC,SAAS,CAAC,CAAC;YACrC,OAAOA;QACT;IACF;IAEA,4FAA4F;IAC5F,8FAA8F;IAC9F,qDAAqD;IACrDjC,WAAW,CAAC,2CAA2C,EAAEE,QAAQ,EAAE,CAAC;IACpEL,IAAI,CAAC,iCAAiC,CAAC;IACvC,OAAO;AACT"}
@@ -47,7 +47,7 @@ function getRepositoryName(url) {
47
47
  organization = host.match(/([^.@]+)\.visualstudio\.com$/)?.[1];
48
48
  }
49
49
  return `${organization}/${parsedUrl.owner}/${parsedUrl.name}`;
50
- } catch (err) {
50
+ } catch {
51
51
  return "";
52
52
  }
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/git/getRepositoryName.ts"],"sourcesContent":["import gitUrlParse from \"git-url-parse\";\n\n/**\n * Get a repository full name (owner and repo, plus organization for ADO/VSO) from a repository URL,\n * including special handling for the many ADO/VSO URL formats.\n *\n * Examples:\n * - returns `microsoft/lage` for `https://github.com/microsoft/lage.git`\n * - returns `foo/bar/some-repo` for `https://dev.azure.com/foo/bar/_git/some-repo`\n */\nexport function getRepositoryName(url: string): string {\n try {\n // Mostly use this standard library, but fix some VSO/ADO-specific quirks to account for the\n // fact that all of the following URLs should be considered to point to the same repo:\n // https://foo.visualstudio.com/bar/_git/some-repo\n // https://foo.visualstudio.com/DefaultCollection/bar/_git/some-repo\n // https://user:token@foo.visualstudio.com/DefaultCollection/bar/_git/some-repo\n // https://foo.visualstudio.com/DefaultCollection/bar/_git/_optimized/some-repo\n // foo@vs-ssh.visualstudio.com:v3/foo/bar/some-repo\n // https://dev.azure.com/foo/bar/_git/some-repo\n // https://dev.azure.com/foo/bar/_git/_optimized/some-repo\n // https://user@dev.azure.com/foo/bar/_git/some-repo\n // git@ssh.dev.azure.com:v3/foo/bar/some-repo\n const parsedUrl = gitUrlParse(url.replace(\"/_optimized/\", \"/\").replace(\"/DefaultCollection/\", \"/\"));\n\n // `host` is set in `parse-url` but not documented... https://github.com/IonicaBizau/parse-url/blob/c830d48647f33c054745a916cf7c4c58722f4b25/src/index.js#L28\n const host: string = (parsedUrl as any).host || \"\";\n const isVSO = host.endsWith(\".visualstudio.com\");\n if (!isVSO && host !== \"dev.azure.com\" && host !== \"ssh.dev.azure.com\") {\n return parsedUrl.full_name;\n }\n\n // As of writing, ADO and VSO SSH URLs are parsed completely wrong\n const sshMatch = parsedUrl.full_name.match(\n /(vs-ssh\\.visualstudio\\.com|ssh\\.dev\\.azure\\.com):v\\d+\\/([^/]+)\\/([^/]+)/\n );\n if (sshMatch) {\n return `${sshMatch[2]}/${sshMatch[3]}/${parsedUrl.name}`;\n }\n\n // As of writing, full_name is wrong for enough variants of ADO and VSO URLs that it\n // makes more sense to just build it manually.\n let organization: string | undefined = parsedUrl.organization;\n if (!organization && isVSO) {\n // organization is missing or wrong for VSO\n organization = host.match(/([^.@]+)\\.visualstudio\\.com$/)?.[1];\n }\n return `${organization}/${parsedUrl.owner}/${parsedUrl.name}`;\n } catch (err) {\n return \"\";\n }\n}\n"],"names":["getRepositoryName","url","parsedUrl","gitUrlParse","replace","host","isVSO","endsWith","full_name","sshMatch","match","name","organization","owner","err"],"mappings":";;;;+BAUgBA;;;eAAAA;;;oEAVQ;;;;;;AAUjB,SAASA,kBAAkBC,GAAW;IAC3C,IAAI;QACF,4FAA4F;QAC5F,sFAAsF;QACtF,kDAAkD;QAClD,oEAAoE;QACpE,+EAA+E;QAC/E,+EAA+E;QAC/E,mDAAmD;QACnD,+CAA+C;QAC/C,0DAA0D;QAC1D,oDAAoD;QACpD,6CAA6C;QAC7C,MAAMC,YAAYC,IAAAA,oBAAW,EAACF,IAAIG,OAAO,CAAC,gBAAgB,KAAKA,OAAO,CAAC,uBAAuB;QAE9F,6JAA6J;QAC7J,MAAMC,OAAe,AAACH,UAAkBG,IAAI,IAAI;QAChD,MAAMC,QAAQD,KAAKE,QAAQ,CAAC;QAC5B,IAAI,CAACD,SAASD,SAAS,mBAAmBA,SAAS,qBAAqB;YACtE,OAAOH,UAAUM,SAAS;QAC5B;QAEA,kEAAkE;QAClE,MAAMC,WAAWP,UAAUM,SAAS,CAACE,KAAK,CACxC;QAEF,IAAID,UAAU;YACZ,OAAO,GAAGA,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAEA,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAEP,UAAUS,IAAI,EAAE;QAC1D;QAEA,oFAAoF;QACpF,8CAA8C;QAC9C,IAAIC,eAAmCV,UAAUU,YAAY;QAC7D,IAAI,CAACA,gBAAgBN,OAAO;YAC1B,2CAA2C;YAC3CM,eAAeP,KAAKK,KAAK,CAAC,iCAAiC,CAAC,EAAE;QAChE;QACA,OAAO,GAAGE,aAAa,CAAC,EAAEV,UAAUW,KAAK,CAAC,CAAC,EAAEX,UAAUS,IAAI,EAAE;IAC/D,EAAE,OAAOG,KAAK;QACZ,OAAO;IACT;AACF"}
1
+ {"version":3,"sources":["../../src/git/getRepositoryName.ts"],"sourcesContent":["import gitUrlParse from \"git-url-parse\";\n\n/**\n * Get a repository full name (owner and repo, plus organization for ADO/VSO) from a repository URL,\n * including special handling for the many ADO/VSO URL formats.\n *\n * Examples:\n * - returns `microsoft/lage` for `https://github.com/microsoft/lage.git`\n * - returns `foo/bar/some-repo` for `https://dev.azure.com/foo/bar/_git/some-repo`\n */\nexport function getRepositoryName(url: string): string {\n try {\n // Mostly use this standard library, but fix some VSO/ADO-specific quirks to account for the\n // fact that all of the following URLs should be considered to point to the same repo:\n // https://foo.visualstudio.com/bar/_git/some-repo\n // https://foo.visualstudio.com/DefaultCollection/bar/_git/some-repo\n // https://user:token@foo.visualstudio.com/DefaultCollection/bar/_git/some-repo\n // https://foo.visualstudio.com/DefaultCollection/bar/_git/_optimized/some-repo\n // foo@vs-ssh.visualstudio.com:v3/foo/bar/some-repo\n // https://dev.azure.com/foo/bar/_git/some-repo\n // https://dev.azure.com/foo/bar/_git/_optimized/some-repo\n // https://user@dev.azure.com/foo/bar/_git/some-repo\n // git@ssh.dev.azure.com:v3/foo/bar/some-repo\n const parsedUrl = gitUrlParse(url.replace(\"/_optimized/\", \"/\").replace(\"/DefaultCollection/\", \"/\"));\n\n // `host` is set in `parse-url` but not documented... https://github.com/IonicaBizau/parse-url/blob/c830d48647f33c054745a916cf7c4c58722f4b25/src/index.js#L28\n const host: string = (parsedUrl as any).host || \"\";\n const isVSO = host.endsWith(\".visualstudio.com\");\n if (!isVSO && host !== \"dev.azure.com\" && host !== \"ssh.dev.azure.com\") {\n return parsedUrl.full_name;\n }\n\n // As of writing, ADO and VSO SSH URLs are parsed completely wrong\n const sshMatch = parsedUrl.full_name.match(\n /(vs-ssh\\.visualstudio\\.com|ssh\\.dev\\.azure\\.com):v\\d+\\/([^/]+)\\/([^/]+)/\n );\n if (sshMatch) {\n return `${sshMatch[2]}/${sshMatch[3]}/${parsedUrl.name}`;\n }\n\n // As of writing, full_name is wrong for enough variants of ADO and VSO URLs that it\n // makes more sense to just build it manually.\n let organization: string | undefined = parsedUrl.organization;\n if (!organization && isVSO) {\n // organization is missing or wrong for VSO\n organization = host.match(/([^.@]+)\\.visualstudio\\.com$/)?.[1];\n }\n return `${organization}/${parsedUrl.owner}/${parsedUrl.name}`;\n } catch {\n return \"\";\n }\n}\n"],"names":["getRepositoryName","url","parsedUrl","gitUrlParse","replace","host","isVSO","endsWith","full_name","sshMatch","match","name","organization","owner"],"mappings":";;;;+BAUgBA;;;eAAAA;;;oEAVQ;;;;;;AAUjB,SAASA,kBAAkBC,GAAW;IAC3C,IAAI;QACF,4FAA4F;QAC5F,sFAAsF;QACtF,kDAAkD;QAClD,oEAAoE;QACpE,+EAA+E;QAC/E,+EAA+E;QAC/E,mDAAmD;QACnD,+CAA+C;QAC/C,0DAA0D;QAC1D,oDAAoD;QACpD,6CAA6C;QAC7C,MAAMC,YAAYC,IAAAA,oBAAW,EAACF,IAAIG,OAAO,CAAC,gBAAgB,KAAKA,OAAO,CAAC,uBAAuB;QAE9F,6JAA6J;QAC7J,MAAMC,OAAe,AAACH,UAAkBG,IAAI,IAAI;QAChD,MAAMC,QAAQD,KAAKE,QAAQ,CAAC;QAC5B,IAAI,CAACD,SAASD,SAAS,mBAAmBA,SAAS,qBAAqB;YACtE,OAAOH,UAAUM,SAAS;QAC5B;QAEA,kEAAkE;QAClE,MAAMC,WAAWP,UAAUM,SAAS,CAACE,KAAK,CACxC;QAEF,IAAID,UAAU;YACZ,OAAO,GAAGA,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAEA,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAEP,UAAUS,IAAI,EAAE;QAC1D;QAEA,oFAAoF;QACpF,8CAA8C;QAC9C,IAAIC,eAAmCV,UAAUU,YAAY;QAC7D,IAAI,CAACA,gBAAgBN,OAAO;YAC1B,2CAA2C;YAC3CM,eAAeP,KAAKK,KAAK,CAAC,iCAAiC,CAAC,EAAE;QAChE;QACA,OAAO,GAAGE,aAAa,CAAC,EAAEV,UAAUW,KAAK,CAAC,CAAC,EAAEX,UAAUS,IAAI,EAAE;IAC/D,EAAE,OAAM;QACN,OAAO;IACT;AACF"}
@@ -43,7 +43,7 @@ async function parseLockFile(packageRoot) {
43
43
  parsed = (0, _parseBerryLock.parseBerryLock)(yaml);
44
44
  } else {
45
45
  // TODO: this should be an async import in the future (currently causes issues with jest setup)
46
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
46
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
47
47
  const parseYarnLock = require("@yarnpkg/lockfile").parse;
48
48
  parsed = parseYarnLock(yarnLock);
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lockfile/parseLockFile.ts"],"sourcesContent":["// NOTE: never place the import of lockfile implementation here, as it slows down the library as a whole\nimport fs from \"fs\";\nimport path from \"path\";\nimport { type ParsedLock, type PnpmLockFile, type NpmLockFile, type BerryLockFile } from \"./types.js\";\nimport { searchUp } from \"../paths.js\";\nimport { parsePnpmLock } from \"./parsePnpmLock.js\";\nimport { parseNpmLock } from \"./parseNpmLock.js\";\nimport { readYaml } from \"./readYaml.js\";\nimport { parseBerryLock } from \"./parseBerryLock.js\";\n\nconst memoization: { [path: string]: ParsedLock } = {};\n\n// eslint-disable-next-line @typescript-eslint/require-await -- was async due to async imports, and will be again in future\nexport async function parseLockFile(packageRoot: string): Promise<ParsedLock> {\n const yarnLockPath = searchUp([\"yarn.lock\", \"common/config/rush/yarn.lock\"], packageRoot);\n\n // First, test out whether this works for yarn\n if (yarnLockPath) {\n if (memoization[yarnLockPath]) {\n return memoization[yarnLockPath];\n }\n\n const yarnLock = fs.readFileSync(yarnLockPath, \"utf-8\");\n\n const isBerry =\n yarnLock.includes(\"__metadata\") || fs.existsSync(path.resolve(yarnLock.replace(\"yarn.lock\", \".yarnrc.yml\")));\n\n let parsed: {\n type: \"success\" | \"merge\" | \"conflict\";\n object: any;\n } = {\n type: \"success\",\n object: {},\n };\n\n if (isBerry) {\n const yaml = readYaml<BerryLockFile>(yarnLockPath);\n parsed = parseBerryLock(yaml);\n } else {\n // TODO: this should be an async import in the future (currently causes issues with jest setup)\n // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n const parseYarnLock = require(\"@yarnpkg/lockfile\").parse;\n parsed = parseYarnLock(yarnLock);\n }\n\n memoization[yarnLockPath] = parsed;\n\n return parsed;\n }\n\n // Second, test out whether this works for pnpm\n const pnpmLockPath = searchUp([\"pnpm-lock.yaml\", \"common/config/rush/pnpm-lock.yaml\"], packageRoot);\n\n if (pnpmLockPath) {\n if (memoization[pnpmLockPath]) {\n return memoization[pnpmLockPath];\n }\n\n const yaml = readYaml<PnpmLockFile>(pnpmLockPath);\n const parsed = parsePnpmLock(yaml);\n memoization[pnpmLockPath] = parsed;\n\n return memoization[pnpmLockPath];\n }\n\n // Third, try for npm workspaces\n const npmLockPath = searchUp(\"package-lock.json\", packageRoot);\n\n if (npmLockPath) {\n if (memoization[npmLockPath]) {\n return memoization[npmLockPath];\n }\n\n let npmLockJson;\n try {\n npmLockJson = fs.readFileSync(npmLockPath, \"utf-8\");\n } catch {\n throw new Error(\"Couldn't read package-lock.json\");\n }\n\n const npmLock: NpmLockFile = JSON.parse(npmLockJson.toString());\n\n if (!npmLock?.lockfileVersion || npmLock.lockfileVersion < 2) {\n throw new Error(\n `Your package-lock.json version is not supported: lockfileVersion is ${npmLock.lockfileVersion}. You need npm version 7 or above and package-lock version 2 or above. Please, upgrade npm or choose a different package manager.`\n );\n }\n\n memoization[npmLockPath] = parseNpmLock(npmLock);\n return memoization[npmLockPath];\n }\n\n throw new Error(\n \"You do not have yarn.lock, pnpm-lock.yaml or package-lock.json. Please use one of these package managers.\"\n );\n}\n"],"names":["parseLockFile","memoization","packageRoot","yarnLockPath","searchUp","yarnLock","fs","readFileSync","isBerry","includes","existsSync","path","resolve","replace","parsed","type","object","yaml","readYaml","parseBerryLock","parseYarnLock","require","parse","pnpmLockPath","parsePnpmLock","npmLockPath","npmLockJson","Error","npmLock","JSON","toString","lockfileVersion","parseNpmLock"],"mappings":"AAAA,wGAAwG;;;;;+BAalFA;;;eAAAA;;;2DAZP;6DACE;uBAEQ;+BACK;8BACD;0BACJ;gCACM;;;;;;AAE/B,MAAMC,cAA8C,CAAC;AAG9C,eAAeD,cAAcE,WAAmB;IACrD,MAAMC,eAAeC,IAAAA,eAAQ,EAAC;QAAC;QAAa;KAA+B,EAAEF;IAE7E,8CAA8C;IAC9C,IAAIC,cAAc;QAChB,IAAIF,WAAW,CAACE,aAAa,EAAE;YAC7B,OAAOF,WAAW,CAACE,aAAa;QAClC;QAEA,MAAME,WAAWC,WAAE,CAACC,YAAY,CAACJ,cAAc;QAE/C,MAAMK,UACJH,SAASI,QAAQ,CAAC,iBAAiBH,WAAE,CAACI,UAAU,CAACC,aAAI,CAACC,OAAO,CAACP,SAASQ,OAAO,CAAC,aAAa;QAE9F,IAAIC,SAGA;YACFC,MAAM;YACNC,QAAQ,CAAC;QACX;QAEA,IAAIR,SAAS;YACX,MAAMS,OAAOC,IAAAA,kBAAQ,EAAgBf;YACrCW,SAASK,IAAAA,8BAAc,EAACF;QAC1B,OAAO;YACL,+FAA+F;YAC/F,qGAAqG;YACrG,MAAMG,gBAAgBC,QAAQ,qBAAqBC,KAAK;YACxDR,SAASM,cAAcf;QACzB;QAEAJ,WAAW,CAACE,aAAa,GAAGW;QAE5B,OAAOA;IACT;IAEA,+CAA+C;IAC/C,MAAMS,eAAenB,IAAAA,eAAQ,EAAC;QAAC;QAAkB;KAAoC,EAAEF;IAEvF,IAAIqB,cAAc;QAChB,IAAItB,WAAW,CAACsB,aAAa,EAAE;YAC7B,OAAOtB,WAAW,CAACsB,aAAa;QAClC;QAEA,MAAMN,OAAOC,IAAAA,kBAAQ,EAAeK;QACpC,MAAMT,SAASU,IAAAA,4BAAa,EAACP;QAC7BhB,WAAW,CAACsB,aAAa,GAAGT;QAE5B,OAAOb,WAAW,CAACsB,aAAa;IAClC;IAEA,gCAAgC;IAChC,MAAME,cAAcrB,IAAAA,eAAQ,EAAC,qBAAqBF;IAElD,IAAIuB,aAAa;QACf,IAAIxB,WAAW,CAACwB,YAAY,EAAE;YAC5B,OAAOxB,WAAW,CAACwB,YAAY;QACjC;QAEA,IAAIC;QACJ,IAAI;YACFA,cAAcpB,WAAE,CAACC,YAAY,CAACkB,aAAa;QAC7C,EAAE,OAAM;YACN,MAAM,IAAIE,MAAM;QAClB;QAEA,MAAMC,UAAuBC,KAAKP,KAAK,CAACI,YAAYI,QAAQ;QAE5D,IAAI,CAACF,SAASG,mBAAmBH,QAAQG,eAAe,GAAG,GAAG;YAC5D,MAAM,IAAIJ,MACR,CAAC,oEAAoE,EAAEC,QAAQG,eAAe,CAAC,iIAAiI,CAAC;QAErO;QAEA9B,WAAW,CAACwB,YAAY,GAAGO,IAAAA,0BAAY,EAACJ;QACxC,OAAO3B,WAAW,CAACwB,YAAY;IACjC;IAEA,MAAM,IAAIE,MACR;AAEJ"}
1
+ {"version":3,"sources":["../../src/lockfile/parseLockFile.ts"],"sourcesContent":["// NOTE: never place the import of lockfile implementation here, as it slows down the library as a whole\nimport fs from \"fs\";\nimport path from \"path\";\nimport { type ParsedLock, type PnpmLockFile, type NpmLockFile, type BerryLockFile } from \"./types.js\";\nimport { searchUp } from \"../paths.js\";\nimport { parsePnpmLock } from \"./parsePnpmLock.js\";\nimport { parseNpmLock } from \"./parseNpmLock.js\";\nimport { readYaml } from \"./readYaml.js\";\nimport { parseBerryLock } from \"./parseBerryLock.js\";\n\nconst memoization: { [path: string]: ParsedLock } = {};\n\n// eslint-disable-next-line @typescript-eslint/require-await -- was async due to async imports, and will be again in future\nexport async function parseLockFile(packageRoot: string): Promise<ParsedLock> {\n const yarnLockPath = searchUp([\"yarn.lock\", \"common/config/rush/yarn.lock\"], packageRoot);\n\n // First, test out whether this works for yarn\n if (yarnLockPath) {\n if (memoization[yarnLockPath]) {\n return memoization[yarnLockPath];\n }\n\n const yarnLock = fs.readFileSync(yarnLockPath, \"utf-8\");\n\n const isBerry =\n yarnLock.includes(\"__metadata\") || fs.existsSync(path.resolve(yarnLock.replace(\"yarn.lock\", \".yarnrc.yml\")));\n\n let parsed: {\n type: \"success\" | \"merge\" | \"conflict\";\n object: any;\n } = {\n type: \"success\",\n object: {},\n };\n\n if (isBerry) {\n const yaml = readYaml<BerryLockFile>(yarnLockPath);\n parsed = parseBerryLock(yaml);\n } else {\n // TODO: this should be an async import in the future (currently causes issues with jest setup)\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const parseYarnLock = require(\"@yarnpkg/lockfile\").parse;\n parsed = parseYarnLock(yarnLock);\n }\n\n memoization[yarnLockPath] = parsed;\n\n return parsed;\n }\n\n // Second, test out whether this works for pnpm\n const pnpmLockPath = searchUp([\"pnpm-lock.yaml\", \"common/config/rush/pnpm-lock.yaml\"], packageRoot);\n\n if (pnpmLockPath) {\n if (memoization[pnpmLockPath]) {\n return memoization[pnpmLockPath];\n }\n\n const yaml = readYaml<PnpmLockFile>(pnpmLockPath);\n const parsed = parsePnpmLock(yaml);\n memoization[pnpmLockPath] = parsed;\n\n return memoization[pnpmLockPath];\n }\n\n // Third, try for npm workspaces\n const npmLockPath = searchUp(\"package-lock.json\", packageRoot);\n\n if (npmLockPath) {\n if (memoization[npmLockPath]) {\n return memoization[npmLockPath];\n }\n\n let npmLockJson;\n try {\n npmLockJson = fs.readFileSync(npmLockPath, \"utf-8\");\n } catch {\n throw new Error(\"Couldn't read package-lock.json\");\n }\n\n const npmLock: NpmLockFile = JSON.parse(npmLockJson.toString());\n\n if (!npmLock?.lockfileVersion || npmLock.lockfileVersion < 2) {\n throw new Error(\n `Your package-lock.json version is not supported: lockfileVersion is ${npmLock.lockfileVersion}. You need npm version 7 or above and package-lock version 2 or above. Please, upgrade npm or choose a different package manager.`\n );\n }\n\n memoization[npmLockPath] = parseNpmLock(npmLock);\n return memoization[npmLockPath];\n }\n\n throw new Error(\n \"You do not have yarn.lock, pnpm-lock.yaml or package-lock.json. Please use one of these package managers.\"\n );\n}\n"],"names":["parseLockFile","memoization","packageRoot","yarnLockPath","searchUp","yarnLock","fs","readFileSync","isBerry","includes","existsSync","path","resolve","replace","parsed","type","object","yaml","readYaml","parseBerryLock","parseYarnLock","require","parse","pnpmLockPath","parsePnpmLock","npmLockPath","npmLockJson","Error","npmLock","JSON","toString","lockfileVersion","parseNpmLock"],"mappings":"AAAA,wGAAwG;;;;;+BAalFA;;;eAAAA;;;2DAZP;6DACE;uBAEQ;+BACK;8BACD;0BACJ;gCACM;;;;;;AAE/B,MAAMC,cAA8C,CAAC;AAG9C,eAAeD,cAAcE,WAAmB;IACrD,MAAMC,eAAeC,IAAAA,eAAQ,EAAC;QAAC;QAAa;KAA+B,EAAEF;IAE7E,8CAA8C;IAC9C,IAAIC,cAAc;QAChB,IAAIF,WAAW,CAACE,aAAa,EAAE;YAC7B,OAAOF,WAAW,CAACE,aAAa;QAClC;QAEA,MAAME,WAAWC,WAAE,CAACC,YAAY,CAACJ,cAAc;QAE/C,MAAMK,UACJH,SAASI,QAAQ,CAAC,iBAAiBH,WAAE,CAACI,UAAU,CAACC,aAAI,CAACC,OAAO,CAACP,SAASQ,OAAO,CAAC,aAAa;QAE9F,IAAIC,SAGA;YACFC,MAAM;YACNC,QAAQ,CAAC;QACX;QAEA,IAAIR,SAAS;YACX,MAAMS,OAAOC,IAAAA,kBAAQ,EAAgBf;YACrCW,SAASK,IAAAA,8BAAc,EAACF;QAC1B,OAAO;YACL,+FAA+F;YAC/F,iEAAiE;YACjE,MAAMG,gBAAgBC,QAAQ,qBAAqBC,KAAK;YACxDR,SAASM,cAAcf;QACzB;QAEAJ,WAAW,CAACE,aAAa,GAAGW;QAE5B,OAAOA;IACT;IAEA,+CAA+C;IAC/C,MAAMS,eAAenB,IAAAA,eAAQ,EAAC;QAAC;QAAkB;KAAoC,EAAEF;IAEvF,IAAIqB,cAAc;QAChB,IAAItB,WAAW,CAACsB,aAAa,EAAE;YAC7B,OAAOtB,WAAW,CAACsB,aAAa;QAClC;QAEA,MAAMN,OAAOC,IAAAA,kBAAQ,EAAeK;QACpC,MAAMT,SAASU,IAAAA,4BAAa,EAACP;QAC7BhB,WAAW,CAACsB,aAAa,GAAGT;QAE5B,OAAOb,WAAW,CAACsB,aAAa;IAClC;IAEA,gCAAgC;IAChC,MAAME,cAAcrB,IAAAA,eAAQ,EAAC,qBAAqBF;IAElD,IAAIuB,aAAa;QACf,IAAIxB,WAAW,CAACwB,YAAY,EAAE;YAC5B,OAAOxB,WAAW,CAACwB,YAAY;QACjC;QAEA,IAAIC;QACJ,IAAI;YACFA,cAAcpB,WAAE,CAACC,YAAY,CAACkB,aAAa;QAC7C,EAAE,OAAM;YACN,MAAM,IAAIE,MAAM;QAClB;QAEA,MAAMC,UAAuBC,KAAKP,KAAK,CAACI,YAAYI,QAAQ;QAE5D,IAAI,CAACF,SAASG,mBAAmBH,QAAQG,eAAe,GAAG,GAAG;YAC5D,MAAM,IAAIJ,MACR,CAAC,oEAAoE,EAAEC,QAAQG,eAAe,CAAC,iIAAiI,CAAC;QAErO;QAEA9B,WAAW,CAACwB,YAAY,GAAGO,IAAAA,0BAAY,EAACJ;QACxC,OAAO3B,WAAW,CAACwB,YAAY;IACjC;IAEA,MAAM,IAAIE,MACR;AAEJ"}
@@ -17,7 +17,7 @@ function _interop_require_default(obj) {
17
17
  function readYaml(file) {
18
18
  // This is delay loaded to avoid the perf penalty of parsing YAML utilities any time the package
19
19
  // is used (since usage of the YAML utilities is less common).
20
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
20
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
21
21
  const jsYaml = require("js-yaml");
22
22
  const content = _fs.default.readFileSync(file, "utf8");
23
23
  return jsYaml.load(content);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lockfile/readYaml.ts"],"sourcesContent":["import fs from \"fs\";\nimport type jsYamlType from \"js-yaml\";\n\nexport function readYaml<TReturn>(file: string): TReturn {\n // This is delay loaded to avoid the perf penalty of parsing YAML utilities any time the package\n // is used (since usage of the YAML utilities is less common).\n // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n const jsYaml: typeof jsYamlType = require(\"js-yaml\");\n\n const content = fs.readFileSync(file, \"utf8\");\n return jsYaml.load(content) as TReturn;\n}\n"],"names":["readYaml","file","jsYaml","require","content","fs","readFileSync","load"],"mappings":";;;;+BAGgBA;;;eAAAA;;;2DAHD;;;;;;AAGR,SAASA,SAAkBC,IAAY;IAC5C,gGAAgG;IAChG,8DAA8D;IAC9D,qGAAqG;IACrG,MAAMC,SAA4BC,QAAQ;IAE1C,MAAMC,UAAUC,WAAE,CAACC,YAAY,CAACL,MAAM;IACtC,OAAOC,OAAOK,IAAI,CAACH;AACrB"}
1
+ {"version":3,"sources":["../../src/lockfile/readYaml.ts"],"sourcesContent":["import fs from \"fs\";\nimport type jsYamlType from \"js-yaml\";\n\nexport function readYaml<TReturn>(file: string): TReturn {\n // This is delay loaded to avoid the perf penalty of parsing YAML utilities any time the package\n // is used (since usage of the YAML utilities is less common).\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const jsYaml: typeof jsYamlType = require(\"js-yaml\");\n\n const content = fs.readFileSync(file, \"utf8\");\n return jsYaml.load(content) as TReturn;\n}\n"],"names":["readYaml","file","jsYaml","require","content","fs","readFileSync","load"],"mappings":";;;;+BAGgBA;;;eAAAA;;;2DAHD;;;;;;AAGR,SAASA,SAAkBC,IAAY;IAC5C,gGAAgG;IAChG,8DAA8D;IAC9D,iEAAiE;IACjE,MAAMC,SAA4BC,QAAQ;IAE1C,MAAMC,UAAUC,WAAE,CAACC,YAAY,CAACL,MAAM;IACtC,OAAOC,OAAOK,IAAI,CAACH;AACrB"}
package/lib/paths.js CHANGED
@@ -28,7 +28,7 @@ _export(exports, {
28
28
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
29
29
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
30
30
  const _getWorkspaceManagerRoot = require("./workspaces/getWorkspaceManagerRoot.js");
31
- const _git = require("./git");
31
+ const _index = require("./git/index.js");
32
32
  const _logging = require("./logging.js");
33
33
  function _interop_require_default(obj) {
34
34
  return obj && obj.__esModule ? obj : {
@@ -53,7 +53,7 @@ function searchUp(filePath, cwd) {
53
53
  return foundPath ? _path.default.join(cwd, foundPath) : undefined;
54
54
  }
55
55
  function findGitRoot(cwd) {
56
- const output = (0, _git.git)([
56
+ const output = (0, _index.git)([
57
57
  "rev-parse",
58
58
  "--show-toplevel"
59
59
  ], {
package/lib/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport { getWorkspaceManagerRoot } from \"./workspaces/getWorkspaceManagerRoot.js\";\nimport { git } from \"./git\";\nimport { logVerboseWarning } from \"./logging.js\";\nimport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `filePath`.\n * If multiple strings are given, searches each directory level for any of them.\n * @returns Full path to the item found, or undefined if not found.\n */\nexport function searchUp(filePath: string | string[], cwd: string): string | undefined {\n const paths = typeof filePath === \"string\" ? [filePath] : filePath;\n // convert to an absolute path if needed\n cwd = path.resolve(cwd);\n const root = path.parse(cwd).root;\n\n let foundPath: string | undefined;\n\n while (!foundPath && cwd !== root) {\n foundPath = paths.find((p) => fs.existsSync(path.join(cwd, p)));\n if (foundPath) {\n break;\n }\n\n cwd = path.dirname(cwd);\n }\n\n return foundPath ? path.join(cwd, foundPath) : undefined;\n}\n\n/**\n * Starting from `cwd`, uses `git rev-parse --show-toplevel` to find the root of the git repo.\n * Throws if `cwd` is not in a Git repository.\n */\nexport function findGitRoot(cwd: string): string {\n const output = git([\"rev-parse\", \"--show-toplevel\"], { cwd });\n if (!output.success) {\n throw new Error(`Directory \"${cwd}\" is not in a git repository`);\n }\n\n return path.normalize(output.stdout);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `package.json`.\n */\nexport function findPackageRoot(cwd: string): string | undefined {\n const jsonPath = searchUp(\"package.json\", cwd);\n return jsonPath && path.dirname(jsonPath);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for the project root (workspace/monorepo\n * manager root), falling back to the git root if no manager root is detected. Results are cached by\n * `cwd`, and an error is thrown if no project root is found and it's not a git repo.\n *\n * To skip the git root fallback, use `getWorkspaceManagerRoot`. Usually the monorepo manager root\n * is the same as the git root, but this may not be the case with multiple \"monorepos\" in a single\n * git repo, or in project structures with multiple languages where the JS is not at the root.\n *\n * @param manager Optional workspace/monorepo manager to look for specifically\n */\nexport function findProjectRoot(cwd: string, manager?: WorkspaceManager): string {\n let workspaceRoot: string | undefined;\n try {\n workspaceRoot = getWorkspaceManagerRoot(cwd, manager);\n if (!workspaceRoot) {\n logVerboseWarning(`Could not find workspace manager root for ${cwd}. Falling back to git root.`);\n }\n } catch (err) {\n logVerboseWarning(`Error getting workspace manager root for ${cwd} (will fall back to git root)`, err);\n }\n\n return workspaceRoot || findGitRoot(cwd);\n}\n\n/**\n * Determines if `child` path is a subdirectory of `parent` path.\n */\nexport function isChildOf(child: string, parent: string): boolean {\n const relativePath = path.relative(child, parent);\n return /^[./\\\\]+$/.test(relativePath);\n}\n"],"names":["findGitRoot","findPackageRoot","findProjectRoot","isChildOf","searchUp","filePath","cwd","paths","path","resolve","root","parse","foundPath","find","p","fs","existsSync","join","dirname","undefined","output","git","success","Error","normalize","stdout","jsonPath","manager","workspaceRoot","getWorkspaceManagerRoot","logVerboseWarning","err","child","parent","relativePath","relative","test"],"mappings":";;;;;;;;;;;QAoCgBA;eAAAA;;QAYAC;eAAAA;;QAgBAC;eAAAA;;QAiBAC;eAAAA;;QArEAC;eAAAA;;;6DAZC;2DACF;yCACyB;qBACpB;yBACc;;;;;;AAQ3B,SAASA,SAASC,QAA2B,EAAEC,GAAW;IAC/D,MAAMC,QAAQ,OAAOF,aAAa,WAAW;QAACA;KAAS,GAAGA;IAC1D,wCAAwC;IACxCC,MAAME,aAAI,CAACC,OAAO,CAACH;IACnB,MAAMI,OAAOF,aAAI,CAACG,KAAK,CAACL,KAAKI,IAAI;IAEjC,IAAIE;IAEJ,MAAO,CAACA,aAAaN,QAAQI,KAAM;QACjCE,YAAYL,MAAMM,IAAI,CAAC,CAACC,IAAMC,WAAE,CAACC,UAAU,CAACR,aAAI,CAACS,IAAI,CAACX,KAAKQ;QAC3D,IAAIF,WAAW;YACb;QACF;QAEAN,MAAME,aAAI,CAACU,OAAO,CAACZ;IACrB;IAEA,OAAOM,YAAYJ,aAAI,CAACS,IAAI,CAACX,KAAKM,aAAaO;AACjD;AAMO,SAASnB,YAAYM,GAAW;IACrC,MAAMc,SAASC,IAAAA,QAAG,EAAC;QAAC;QAAa;KAAkB,EAAE;QAAEf;IAAI;IAC3D,IAAI,CAACc,OAAOE,OAAO,EAAE;QACnB,MAAM,IAAIC,MAAM,CAAC,WAAW,EAAEjB,IAAI,4BAA4B,CAAC;IACjE;IAEA,OAAOE,aAAI,CAACgB,SAAS,CAACJ,OAAOK,MAAM;AACrC;AAKO,SAASxB,gBAAgBK,GAAW;IACzC,MAAMoB,WAAWtB,SAAS,gBAAgBE;IAC1C,OAAOoB,YAAYlB,aAAI,CAACU,OAAO,CAACQ;AAClC;AAaO,SAASxB,gBAAgBI,GAAW,EAAEqB,OAA0B;IACrE,IAAIC;IACJ,IAAI;QACFA,gBAAgBC,IAAAA,gDAAuB,EAACvB,KAAKqB;QAC7C,IAAI,CAACC,eAAe;YAClBE,IAAAA,0BAAiB,EAAC,CAAC,0CAA0C,EAAExB,IAAI,2BAA2B,CAAC;QACjG;IACF,EAAE,OAAOyB,KAAK;QACZD,IAAAA,0BAAiB,EAAC,CAAC,yCAAyC,EAAExB,IAAI,6BAA6B,CAAC,EAAEyB;IACpG;IAEA,OAAOH,iBAAiB5B,YAAYM;AACtC;AAKO,SAASH,UAAU6B,KAAa,EAAEC,MAAc;IACrD,MAAMC,eAAe1B,aAAI,CAAC2B,QAAQ,CAACH,OAAOC;IAC1C,OAAO,YAAYG,IAAI,CAACF;AAC1B"}
1
+ {"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport { getWorkspaceManagerRoot } from \"./workspaces/getWorkspaceManagerRoot.js\";\nimport { git } from \"./git/index.js\";\nimport { logVerboseWarning } from \"./logging.js\";\nimport type { WorkspaceManager } from \"./types/WorkspaceManager.js\";\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `filePath`.\n * If multiple strings are given, searches each directory level for any of them.\n * @returns Full path to the item found, or undefined if not found.\n */\nexport function searchUp(filePath: string | string[], cwd: string): string | undefined {\n const paths = typeof filePath === \"string\" ? [filePath] : filePath;\n // convert to an absolute path if needed\n cwd = path.resolve(cwd);\n const root = path.parse(cwd).root;\n\n let foundPath: string | undefined;\n\n while (!foundPath && cwd !== root) {\n foundPath = paths.find((p) => fs.existsSync(path.join(cwd, p)));\n if (foundPath) {\n break;\n }\n\n cwd = path.dirname(cwd);\n }\n\n return foundPath ? path.join(cwd, foundPath) : undefined;\n}\n\n/**\n * Starting from `cwd`, uses `git rev-parse --show-toplevel` to find the root of the git repo.\n * Throws if `cwd` is not in a Git repository.\n */\nexport function findGitRoot(cwd: string): string {\n const output = git([\"rev-parse\", \"--show-toplevel\"], { cwd });\n if (!output.success) {\n throw new Error(`Directory \"${cwd}\" is not in a git repository`);\n }\n\n return path.normalize(output.stdout);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for `package.json`.\n */\nexport function findPackageRoot(cwd: string): string | undefined {\n const jsonPath = searchUp(\"package.json\", cwd);\n return jsonPath && path.dirname(jsonPath);\n}\n\n/**\n * Starting from `cwd`, searches up the directory hierarchy for the project root (workspace/monorepo\n * manager root), falling back to the git root if no manager root is detected. Results are cached by\n * `cwd`, and an error is thrown if no project root is found and it's not a git repo.\n *\n * To skip the git root fallback, use `getWorkspaceManagerRoot`. Usually the monorepo manager root\n * is the same as the git root, but this may not be the case with multiple \"monorepos\" in a single\n * git repo, or in project structures with multiple languages where the JS is not at the root.\n *\n * @param manager Optional workspace/monorepo manager to look for specifically\n */\nexport function findProjectRoot(cwd: string, manager?: WorkspaceManager): string {\n let workspaceRoot: string | undefined;\n try {\n workspaceRoot = getWorkspaceManagerRoot(cwd, manager);\n if (!workspaceRoot) {\n logVerboseWarning(`Could not find workspace manager root for ${cwd}. Falling back to git root.`);\n }\n } catch (err) {\n logVerboseWarning(`Error getting workspace manager root for ${cwd} (will fall back to git root)`, err);\n }\n\n return workspaceRoot || findGitRoot(cwd);\n}\n\n/**\n * Determines if `child` path is a subdirectory of `parent` path.\n */\nexport function isChildOf(child: string, parent: string): boolean {\n const relativePath = path.relative(child, parent);\n return /^[./\\\\]+$/.test(relativePath);\n}\n"],"names":["findGitRoot","findPackageRoot","findProjectRoot","isChildOf","searchUp","filePath","cwd","paths","path","resolve","root","parse","foundPath","find","p","fs","existsSync","join","dirname","undefined","output","git","success","Error","normalize","stdout","jsonPath","manager","workspaceRoot","getWorkspaceManagerRoot","logVerboseWarning","err","child","parent","relativePath","relative","test"],"mappings":";;;;;;;;;;;QAoCgBA;eAAAA;;QAYAC;eAAAA;;QAgBAC;eAAAA;;QAiBAC;eAAAA;;QArEAC;eAAAA;;;6DAZC;2DACF;yCACyB;uBACpB;yBACc;;;;;;AAQ3B,SAASA,SAASC,QAA2B,EAAEC,GAAW;IAC/D,MAAMC,QAAQ,OAAOF,aAAa,WAAW;QAACA;KAAS,GAAGA;IAC1D,wCAAwC;IACxCC,MAAME,aAAI,CAACC,OAAO,CAACH;IACnB,MAAMI,OAAOF,aAAI,CAACG,KAAK,CAACL,KAAKI,IAAI;IAEjC,IAAIE;IAEJ,MAAO,CAACA,aAAaN,QAAQI,KAAM;QACjCE,YAAYL,MAAMM,IAAI,CAAC,CAACC,IAAMC,WAAE,CAACC,UAAU,CAACR,aAAI,CAACS,IAAI,CAACX,KAAKQ;QAC3D,IAAIF,WAAW;YACb;QACF;QAEAN,MAAME,aAAI,CAACU,OAAO,CAACZ;IACrB;IAEA,OAAOM,YAAYJ,aAAI,CAACS,IAAI,CAACX,KAAKM,aAAaO;AACjD;AAMO,SAASnB,YAAYM,GAAW;IACrC,MAAMc,SAASC,IAAAA,UAAG,EAAC;QAAC;QAAa;KAAkB,EAAE;QAAEf;IAAI;IAC3D,IAAI,CAACc,OAAOE,OAAO,EAAE;QACnB,MAAM,IAAIC,MAAM,CAAC,WAAW,EAAEjB,IAAI,4BAA4B,CAAC;IACjE;IAEA,OAAOE,aAAI,CAACgB,SAAS,CAACJ,OAAOK,MAAM;AACrC;AAKO,SAASxB,gBAAgBK,GAAW;IACzC,MAAMoB,WAAWtB,SAAS,gBAAgBE;IAC1C,OAAOoB,YAAYlB,aAAI,CAACU,OAAO,CAACQ;AAClC;AAaO,SAASxB,gBAAgBI,GAAW,EAAEqB,OAA0B;IACrE,IAAIC;IACJ,IAAI;QACFA,gBAAgBC,IAAAA,gDAAuB,EAACvB,KAAKqB;QAC7C,IAAI,CAACC,eAAe;YAClBE,IAAAA,0BAAiB,EAAC,CAAC,0CAA0C,EAAExB,IAAI,2BAA2B,CAAC;QACjG;IACF,EAAE,OAAOyB,KAAK;QACZD,IAAAA,0BAAiB,EAAC,CAAC,yCAAyC,EAAExB,IAAI,6BAA6B,CAAC,EAAEyB;IACpG;IAEA,OAAOH,iBAAiB5B,YAAYM;AACtC;AAKO,SAASH,UAAU6B,KAAa,EAAEC,MAAc;IACrD,MAAMC,eAAe1B,aAAI,CAAC2B,QAAQ,CAACH,OAAOC;IAC1C,OAAO,YAAYG,IAAI,CAACF;AAC1B"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "getCatalogs", {
8
8
  return getCatalogs;
9
9
  }
10
10
  });
11
- const _implementations = require("./implementations");
11
+ const _index = require("./implementations/index.js");
12
12
  const _wrapWorkspaceUtility = require("./wrapWorkspaceUtility.js");
13
13
  function getCatalogs(cwd, managerOverride) {
14
14
  return (0, _wrapWorkspaceUtility.wrapWorkspaceUtility)({
@@ -17,7 +17,7 @@ function getCatalogs(cwd, managerOverride) {
17
17
  description: "catalogs",
18
18
  impl: ({ manager, root })=>{
19
19
  // There is no default implementation for catalogs, since not all managers support it
20
- return (0, _implementations.getWorkspaceUtilities)(manager).getCatalogs?.({
20
+ return (0, _index.getWorkspaceUtilities)(manager).getCatalogs?.({
21
21
  root
22
22
  });
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getCatalogs.ts"],"sourcesContent":["import type { Catalogs } from \"../types/Catalogs.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get version catalogs, if supported by the manager (only pnpm and yarn v4 as of writing).\n * Returns undefined if no catalogs are present or the manager doesn't support them.\n * @see https://pnpm.io/catalogs\n * @see https://yarnpkg.com/features/catalogs\n *\n * @param cwd - Current working directory. It will search up from here to find the root, with caching.\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Catalogs if defined, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getCatalogs(cwd: string, managerOverride?: WorkspaceManager): Catalogs | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"catalogs\",\n impl: ({ manager, root }) => {\n // There is no default implementation for catalogs, since not all managers support it\n return getWorkspaceUtilities(manager).getCatalogs?.({ root });\n },\n });\n}\n"],"names":["getCatalogs","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","getWorkspaceUtilities"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;iCAfsB;sCACD;AAc9B,SAASA,YAAYC,GAAW,EAAEC,eAAkC;IACzE,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,qFAAqF;YACrF,OAAOC,IAAAA,sCAAqB,EAACF,SAASN,WAAW,GAAG;gBAAEO;YAAK;QAC7D;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getCatalogs.ts"],"sourcesContent":["import type { Catalogs } from \"../types/Catalogs.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations/index.js\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get version catalogs, if supported by the manager (only pnpm and yarn v4 as of writing).\n * Returns undefined if no catalogs are present or the manager doesn't support them.\n * @see https://pnpm.io/catalogs\n * @see https://yarnpkg.com/features/catalogs\n *\n * @param cwd - Current working directory. It will search up from here to find the root, with caching.\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Catalogs if defined, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getCatalogs(cwd: string, managerOverride?: WorkspaceManager): Catalogs | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"catalogs\",\n impl: ({ manager, root }) => {\n // There is no default implementation for catalogs, since not all managers support it\n return getWorkspaceUtilities(manager).getCatalogs?.({ root });\n },\n });\n}\n"],"names":["getCatalogs","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","getWorkspaceUtilities"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;uBAfsB;sCACD;AAc9B,SAASA,YAAYC,GAAW,EAAEC,eAAkC;IACzE,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,qFAAqF;YACrF,OAAOC,IAAAA,4BAAqB,EAACF,SAASN,WAAW,GAAG;gBAAEO;YAAK;QAC7D;IACF;AACF"}
@@ -16,7 +16,7 @@ _export(exports, {
16
16
  return getChangedPackagesBetweenRefs;
17
17
  }
18
18
  });
19
- const _git = require("../git");
19
+ const _index = require("../git/index.js");
20
20
  const _getPackagesByFiles = require("./getPackagesByFiles.js");
21
21
  function getChangedPackagesBetweenRefs(paramsOrCwd, _fromRef, _toRef, _ignoreGlobs, _returnAllPackagesOnNoMatch) {
22
22
  var _gitOptions;
@@ -31,14 +31,14 @@ function getChangedPackagesBetweenRefs(paramsOrCwd, _fromRef, _toRef, _ignoreGlo
31
31
  (_gitOptions = gitOptions).throwOnError ?? (_gitOptions.throwOnError = true);
32
32
  const changes = [
33
33
  ...new Set([
34
- ...(0, _git.getUntrackedChanges)(gitOptions),
35
- ...(0, _git.getUnstagedChanges)(gitOptions),
36
- ...(0, _git.getChangesBetweenRefs)({
34
+ ...(0, _index.getUntrackedChanges)(gitOptions),
35
+ ...(0, _index.getUnstagedChanges)(gitOptions),
36
+ ...(0, _index.getChangesBetweenRefs)({
37
37
  fromRef,
38
38
  toRef,
39
39
  ...gitOptions
40
40
  }),
41
- ...(0, _git.getStagedChanges)(gitOptions)
41
+ ...(0, _index.getStagedChanges)(gitOptions)
42
42
  ])
43
43
  ];
44
44
  return (0, _getPackagesByFiles.getPackagesByFiles)({
@@ -59,7 +59,7 @@ function getChangedPackages(cwdOrOptions, target, ignoreGlobs, returnAllPackages
59
59
  ({ target, ignoreGlobs, returnAllPackagesOnNoMatch, ...gitOptions } = cwdOrOptions);
60
60
  }
61
61
  (_gitOptions = gitOptions).throwOnError ?? (_gitOptions.throwOnError = true);
62
- const targetBranch = target || (0, _git.getDefaultRemoteBranch)(gitOptions);
62
+ const targetBranch = target || (0, _index.getDefaultRemoteBranch)(gitOptions);
63
63
  return getChangedPackagesBetweenRefs({
64
64
  fromRef: targetBranch,
65
65
  ...gitOptions,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getChangedPackages.ts"],"sourcesContent":["import {\n getChangesBetweenRefs,\n getDefaultRemoteBranch,\n getStagedChanges,\n getUnstagedChanges,\n getUntrackedChanges,\n} from \"../git\";\nimport { type GitCommonOptions, type GetChangesBetweenRefsOptions } from \"../git/types.js\";\nimport { getPackagesByFiles } from \"./getPackagesByFiles.js\";\n\ntype GetChangedPackagesOptions = GitCommonOptions & {\n /** The `merge-base` branch (must have been fetched locally) */\n target?: string;\n /** Glob patterns to ignore */\n ignoreGlobs?: string[];\n /** If true (the default), return all packages if no matches are found for any file. */\n returnAllPackagesOnNoMatch?: boolean;\n};\n\ntype GetChangedPackagesBetweenRefsOptions = Omit<GetChangedPackagesOptions, \"target\"> &\n Pick<GetChangesBetweenRefsOptions, \"fromRef\" | \"toRef\">;\n\n/**\n * Finds all packages that had been changed between two refs in the repo under cwd,\n * by executing `git diff $fromRef...$toRef`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackagesBetweenRefs(params: GetChangedPackagesBetweenRefsOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackagesBetweenRefs(\n cwd: string,\n fromRef: string,\n toRef?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackagesBetweenRefs(\n paramsOrCwd: GetChangedPackagesBetweenRefsOptions | string,\n _fromRef?: string,\n _toRef?: string,\n _ignoreGlobs?: string[],\n _returnAllPackagesOnNoMatch?: boolean\n): string[] {\n const params: GetChangedPackagesBetweenRefsOptions =\n typeof paramsOrCwd === \"string\"\n ? {\n cwd: paramsOrCwd,\n fromRef: _fromRef!,\n toRef: _toRef,\n ignoreGlobs: _ignoreGlobs,\n returnAllPackagesOnNoMatch: _returnAllPackagesOnNoMatch,\n }\n : paramsOrCwd;\n const { fromRef, toRef, ignoreGlobs, returnAllPackagesOnNoMatch = true, ...gitOptions } = params;\n gitOptions.throwOnError ??= true;\n\n const changes = [\n ...new Set([\n ...getUntrackedChanges(gitOptions),\n ...getUnstagedChanges(gitOptions),\n ...getChangesBetweenRefs({ fromRef, toRef, ...gitOptions }),\n ...getStagedChanges(gitOptions),\n ]),\n ];\n\n return getPackagesByFiles({\n root: gitOptions.cwd,\n files: changes,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n\n/**\n * Finds all packages that had been changed in the repo under cwd, by executing\n * `git diff $target...`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackages(params: GetChangedPackagesOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackages(\n cwd: string,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackages(\n cwdOrOptions: string | GetChangedPackagesOptions,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[] {\n let gitOptions: GitCommonOptions;\n if (typeof cwdOrOptions === \"string\") {\n gitOptions = { cwd: cwdOrOptions };\n } else {\n ({ target, ignoreGlobs, returnAllPackagesOnNoMatch, ...gitOptions } = cwdOrOptions);\n }\n gitOptions.throwOnError ??= true;\n\n const targetBranch = target || getDefaultRemoteBranch(gitOptions);\n\n return getChangedPackagesBetweenRefs({\n fromRef: targetBranch,\n ...gitOptions,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n"],"names":["getChangedPackages","getChangedPackagesBetweenRefs","paramsOrCwd","_fromRef","_toRef","_ignoreGlobs","_returnAllPackagesOnNoMatch","gitOptions","params","cwd","fromRef","toRef","ignoreGlobs","returnAllPackagesOnNoMatch","throwOnError","changes","Set","getUntrackedChanges","getUnstagedChanges","getChangesBetweenRefs","getStagedChanges","getPackagesByFiles","root","files","cwdOrOptions","target","targetBranch","getDefaultRemoteBranch"],"mappings":";;;;;;;;;;;QAgIgBA;eAAAA;;QAvEAC;eAAAA;;;qBAnDT;oCAE4B;AAiD5B,SAASA,8BACdC,WAA0D,EAC1DC,QAAiB,EACjBC,MAAe,EACfC,YAAuB,EACvBC,2BAAqC;QAarCC;IAXA,MAAMC,SACJ,OAAON,gBAAgB,WACnB;QACEO,KAAKP;QACLQ,SAASP;QACTQ,OAAOP;QACPQ,aAAaP;QACbQ,4BAA4BP;IAC9B,IACAJ;IACN,MAAM,EAAEQ,OAAO,EAAEC,KAAK,EAAEC,WAAW,EAAEC,6BAA6B,IAAI,EAAE,GAAGN,YAAY,GAAGC;IAC1FD,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMC,UAAU;WACX,IAAIC,IAAI;eACNC,IAAAA,wBAAmB,EAACV;eACpBW,IAAAA,uBAAkB,EAACX;eACnBY,IAAAA,0BAAqB,EAAC;gBAAET;gBAASC;gBAAO,GAAGJ,UAAU;YAAC;eACtDa,IAAAA,qBAAgB,EAACb;SACrB;KACF;IAED,OAAOc,IAAAA,sCAAkB,EAAC;QACxBC,MAAMf,WAAWE,GAAG;QACpBc,OAAOR;QACPH;QACAC;IACF;AACF;AAoCO,SAASb,mBACdwB,YAAgD,EAChDC,MAAe,EACfb,WAAsB,EACtBC,0BAAoC;QAQpCN;IANA,IAAIA;IACJ,IAAI,OAAOiB,iBAAiB,UAAU;QACpCjB,aAAa;YAAEE,KAAKe;QAAa;IACnC,OAAO;QACJ,CAAA,EAAEC,MAAM,EAAEb,WAAW,EAAEC,0BAA0B,EAAE,GAAGN,YAAY,GAAGiB,YAAW;IACnF;IACAjB,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMY,eAAeD,UAAUE,IAAAA,2BAAsB,EAACpB;IAEtD,OAAON,8BAA8B;QACnCS,SAASgB;QACT,GAAGnB,UAAU;QACbK;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getChangedPackages.ts"],"sourcesContent":["import {\n getChangesBetweenRefs,\n getDefaultRemoteBranch,\n getStagedChanges,\n getUnstagedChanges,\n getUntrackedChanges,\n} from \"../git/index.js\";\nimport { type GitCommonOptions, type GetChangesBetweenRefsOptions } from \"../git/types.js\";\nimport { getPackagesByFiles } from \"./getPackagesByFiles.js\";\n\ntype GetChangedPackagesOptions = GitCommonOptions & {\n /** The `merge-base` branch (must have been fetched locally) */\n target?: string;\n /** Glob patterns to ignore */\n ignoreGlobs?: string[];\n /** If true (the default), return all packages if no matches are found for any file. */\n returnAllPackagesOnNoMatch?: boolean;\n};\n\ntype GetChangedPackagesBetweenRefsOptions = Omit<GetChangedPackagesOptions, \"target\"> &\n Pick<GetChangesBetweenRefsOptions, \"fromRef\" | \"toRef\">;\n\n/**\n * Finds all packages that had been changed between two refs in the repo under cwd,\n * by executing `git diff $fromRef...$toRef`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackagesBetweenRefs(params: GetChangedPackagesBetweenRefsOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackagesBetweenRefs(\n cwd: string,\n fromRef: string,\n toRef?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackagesBetweenRefs(\n paramsOrCwd: GetChangedPackagesBetweenRefsOptions | string,\n _fromRef?: string,\n _toRef?: string,\n _ignoreGlobs?: string[],\n _returnAllPackagesOnNoMatch?: boolean\n): string[] {\n const params: GetChangedPackagesBetweenRefsOptions =\n typeof paramsOrCwd === \"string\"\n ? {\n cwd: paramsOrCwd,\n fromRef: _fromRef!,\n toRef: _toRef,\n ignoreGlobs: _ignoreGlobs,\n returnAllPackagesOnNoMatch: _returnAllPackagesOnNoMatch,\n }\n : paramsOrCwd;\n const { fromRef, toRef, ignoreGlobs, returnAllPackagesOnNoMatch = true, ...gitOptions } = params;\n gitOptions.throwOnError ??= true;\n\n const changes = [\n ...new Set([\n ...getUntrackedChanges(gitOptions),\n ...getUnstagedChanges(gitOptions),\n ...getChangesBetweenRefs({ fromRef, toRef, ...gitOptions }),\n ...getStagedChanges(gitOptions),\n ]),\n ];\n\n return getPackagesByFiles({\n root: gitOptions.cwd,\n files: changes,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n\n/**\n * Finds all packages that had been changed in the repo under cwd, by executing\n * `git diff $target...`.\n *\n * **NOTE: The new object params version will throw if any of the git operations error.**\n * Disabling this behavior is not recommended due to the potential for hiding other issues,\n * but can be done by setting `throwOnError: false` in the options.\n *\n * Note that by default, if a repo-wide file such as the root package.json has changed,\n * all packages are assumed to have changed. (This is highly lage-specific behavior.)\n * Disable by setting `returnAllPackagesOnNoMatch` to `false`.\n *\n * Explanation of the three dots:\n *\n * ```txt\n * git diff [--options] <commit>...<commit> [--] [<path>...]\n *\n * This form is to view the changes on the branch containing and up to\n * the second <commit>, starting at a common ancestor of both\n * <commit>. \"git diff A...B\" is equivalent to \"git diff\n * $(git-merge-base A B) B\". You can omit any one of <commit>, which\n * has the same effect as using HEAD instead.\n * ```\n *\n * @returns list of package names that have changed\n */\nexport function getChangedPackages(params: GetChangedPackagesOptions): string[];\n/** @deprecated Use object params version */\nexport function getChangedPackages(\n cwd: string,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[];\nexport function getChangedPackages(\n cwdOrOptions: string | GetChangedPackagesOptions,\n target?: string,\n ignoreGlobs?: string[],\n returnAllPackagesOnNoMatch?: boolean\n): string[] {\n let gitOptions: GitCommonOptions;\n if (typeof cwdOrOptions === \"string\") {\n gitOptions = { cwd: cwdOrOptions };\n } else {\n ({ target, ignoreGlobs, returnAllPackagesOnNoMatch, ...gitOptions } = cwdOrOptions);\n }\n gitOptions.throwOnError ??= true;\n\n const targetBranch = target || getDefaultRemoteBranch(gitOptions);\n\n return getChangedPackagesBetweenRefs({\n fromRef: targetBranch,\n ...gitOptions,\n ignoreGlobs,\n returnAllPackagesOnNoMatch,\n });\n}\n"],"names":["getChangedPackages","getChangedPackagesBetweenRefs","paramsOrCwd","_fromRef","_toRef","_ignoreGlobs","_returnAllPackagesOnNoMatch","gitOptions","params","cwd","fromRef","toRef","ignoreGlobs","returnAllPackagesOnNoMatch","throwOnError","changes","Set","getUntrackedChanges","getUnstagedChanges","getChangesBetweenRefs","getStagedChanges","getPackagesByFiles","root","files","cwdOrOptions","target","targetBranch","getDefaultRemoteBranch"],"mappings":";;;;;;;;;;;QAgIgBA;eAAAA;;QAvEAC;eAAAA;;;uBAnDT;oCAE4B;AAiD5B,SAASA,8BACdC,WAA0D,EAC1DC,QAAiB,EACjBC,MAAe,EACfC,YAAuB,EACvBC,2BAAqC;QAarCC;IAXA,MAAMC,SACJ,OAAON,gBAAgB,WACnB;QACEO,KAAKP;QACLQ,SAASP;QACTQ,OAAOP;QACPQ,aAAaP;QACbQ,4BAA4BP;IAC9B,IACAJ;IACN,MAAM,EAAEQ,OAAO,EAAEC,KAAK,EAAEC,WAAW,EAAEC,6BAA6B,IAAI,EAAE,GAAGN,YAAY,GAAGC;IAC1FD,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMC,UAAU;WACX,IAAIC,IAAI;eACNC,IAAAA,0BAAmB,EAACV;eACpBW,IAAAA,yBAAkB,EAACX;eACnBY,IAAAA,4BAAqB,EAAC;gBAAET;gBAASC;gBAAO,GAAGJ,UAAU;YAAC;eACtDa,IAAAA,uBAAgB,EAACb;SACrB;KACF;IAED,OAAOc,IAAAA,sCAAkB,EAAC;QACxBC,MAAMf,WAAWE,GAAG;QACpBc,OAAOR;QACPH;QACAC;IACF;AACF;AAoCO,SAASb,mBACdwB,YAAgD,EAChDC,MAAe,EACfb,WAAsB,EACtBC,0BAAoC;QAQpCN;IANA,IAAIA;IACJ,IAAI,OAAOiB,iBAAiB,UAAU;QACpCjB,aAAa;YAAEE,KAAKe;QAAa;IACnC,OAAO;QACJ,CAAA,EAAEC,MAAM,EAAEb,WAAW,EAAEC,0BAA0B,EAAE,GAAGN,YAAY,GAAGiB,YAAW;IACnF;IACAjB,CAAAA,cAAAA,YAAWO,YAAY,KAAvBP,YAAWO,YAAY,GAAK;IAE5B,MAAMY,eAAeD,UAAUE,IAAAA,6BAAsB,EAACpB;IAEtD,OAAON,8BAA8B;QACnCS,SAASgB;QACT,GAAGnB,UAAU;QACbK;QACAC;IACF;AACF"}
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "getWorkspaceManagerRoot", {
9
9
  }
10
10
  });
11
11
  const _logging = require("../logging.js");
12
- const _implementations = require("./implementations");
12
+ const _index = require("./implementations/index.js");
13
13
  function getWorkspaceManagerRoot(cwd, managerOverride, options) {
14
14
  const logOrThrow = (message)=>{
15
15
  if (options?.throwOnError) {
@@ -20,7 +20,7 @@ function getWorkspaceManagerRoot(cwd, managerOverride, options) {
20
20
  };
21
21
  let root;
22
22
  try {
23
- root = (0, _implementations.getWorkspaceManagerAndRoot)(cwd, undefined, managerOverride)?.root;
23
+ root = (0, _index.getWorkspaceManagerAndRoot)(cwd, undefined, managerOverride)?.root;
24
24
  } catch (err) {
25
25
  logOrThrow(`Error getting ${managerOverride || "workspace/monorepo manager"} root from ${cwd}: ${err}`);
26
26
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspaceManagerRoot.ts"],"sourcesContent":["import { logVerboseWarning } from \"../logging.js\";\nimport { getWorkspaceManagerAndRoot } from \"./implementations\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\n\n/**\n * Get the root directory of a monorepo, defined as the directory where the workspace/monorepo manager\n * config file is located. (Does not rely in any way on git, and the result is cached by `cwd`.)\n *\n * @param cwd Start searching from here\n * @param managerOverride Search for only this manager's config file\n *\n * @returns Workspace manager root directory. Returns undefined (and verbose logs) on error or if\n * not found, unless `throwOnError` is set.\n */\nexport function getWorkspaceManagerRoot(cwd: string, managerOverride?: WorkspaceManager): string | undefined;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride: WorkspaceManager | undefined,\n options?: {\n /** Throw if there's an error or if the root is not found */\n throwOnError: true;\n }\n): string;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride?: WorkspaceManager,\n options?: { throwOnError: true }\n): string | undefined {\n const logOrThrow = (message: string) => {\n if (options?.throwOnError) {\n throw new Error(message);\n } else {\n logVerboseWarning(message);\n }\n };\n\n let root: string | undefined;\n try {\n root = getWorkspaceManagerAndRoot(cwd, undefined, managerOverride)?.root;\n } catch (err) {\n logOrThrow(`Error getting ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}: ${err}`);\n return;\n }\n\n if (!root) {\n logOrThrow(`Could not find ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}`);\n }\n return root;\n}\n"],"names":["getWorkspaceManagerRoot","cwd","managerOverride","options","logOrThrow","message","throwOnError","Error","logVerboseWarning","root","getWorkspaceManagerAndRoot","undefined","err"],"mappings":";;;;+BAuBgBA;;;eAAAA;;;yBAvBkB;iCACS;AAsBpC,SAASA,wBACdC,GAAW,EACXC,eAAkC,EAClCC,OAAgC;IAEhC,MAAMC,aAAa,CAACC;QAClB,IAAIF,SAASG,cAAc;YACzB,MAAM,IAAIC,MAAMF;QAClB,OAAO;YACLG,IAAAA,0BAAiB,EAACH;QACpB;IACF;IAEA,IAAII;IACJ,IAAI;QACFA,OAAOC,IAAAA,2CAA0B,EAACT,KAAKU,WAAWT,kBAAkBO;IACtE,EAAE,OAAOG,KAAK;QACZR,WAAW,CAAC,cAAc,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,IAAI,EAAE,EAAEW,KAAK;QACtG;IACF;IAEA,IAAI,CAACH,MAAM;QACTL,WAAW,CAAC,eAAe,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,KAAK;IACjG;IACA,OAAOQ;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspaceManagerRoot.ts"],"sourcesContent":["import { logVerboseWarning } from \"../logging.js\";\nimport { getWorkspaceManagerAndRoot } from \"./implementations/index.js\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\n\n/**\n * Get the root directory of a monorepo, defined as the directory where the workspace/monorepo manager\n * config file is located. (Does not rely in any way on git, and the result is cached by `cwd`.)\n *\n * @param cwd Start searching from here\n * @param managerOverride Search for only this manager's config file\n *\n * @returns Workspace manager root directory. Returns undefined (and verbose logs) on error or if\n * not found, unless `throwOnError` is set.\n */\nexport function getWorkspaceManagerRoot(cwd: string, managerOverride?: WorkspaceManager): string | undefined;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride: WorkspaceManager | undefined,\n options?: {\n /** Throw if there's an error or if the root is not found */\n throwOnError: true;\n }\n): string;\nexport function getWorkspaceManagerRoot(\n cwd: string,\n managerOverride?: WorkspaceManager,\n options?: { throwOnError: true }\n): string | undefined {\n const logOrThrow = (message: string) => {\n if (options?.throwOnError) {\n throw new Error(message);\n } else {\n logVerboseWarning(message);\n }\n };\n\n let root: string | undefined;\n try {\n root = getWorkspaceManagerAndRoot(cwd, undefined, managerOverride)?.root;\n } catch (err) {\n logOrThrow(`Error getting ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}: ${err}`);\n return;\n }\n\n if (!root) {\n logOrThrow(`Could not find ${managerOverride || \"workspace/monorepo manager\"} root from ${cwd}`);\n }\n return root;\n}\n"],"names":["getWorkspaceManagerRoot","cwd","managerOverride","options","logOrThrow","message","throwOnError","Error","logVerboseWarning","root","getWorkspaceManagerAndRoot","undefined","err"],"mappings":";;;;+BAuBgBA;;;eAAAA;;;yBAvBkB;uBACS;AAsBpC,SAASA,wBACdC,GAAW,EACXC,eAAkC,EAClCC,OAAgC;IAEhC,MAAMC,aAAa,CAACC;QAClB,IAAIF,SAASG,cAAc;YACzB,MAAM,IAAIC,MAAMF;QAClB,OAAO;YACLG,IAAAA,0BAAiB,EAACH;QACpB;IACF;IAEA,IAAII;IACJ,IAAI;QACFA,OAAOC,IAAAA,iCAA0B,EAACT,KAAKU,WAAWT,kBAAkBO;IACtE,EAAE,OAAOG,KAAK;QACZR,WAAW,CAAC,cAAc,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,IAAI,EAAE,EAAEW,KAAK;QACtG;IACF;IAEA,IAAI,CAACH,MAAM;QACTL,WAAW,CAAC,eAAe,EAAEF,mBAAmB,6BAA6B,WAAW,EAAED,KAAK;IACjG;IACA,OAAOQ;AACT"}
@@ -18,7 +18,7 @@ _export(exports, {
18
18
  });
19
19
  const _fastglob = /*#__PURE__*/ _interop_require_default(require("fast-glob"));
20
20
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
21
- const _implementations = require("./implementations");
21
+ const _index = require("./implementations/index.js");
22
22
  const _isCachingEnabled = require("../isCachingEnabled.js");
23
23
  const _wrapWorkspaceUtility = require("./wrapWorkspaceUtility.js");
24
24
  function _interop_require_default(obj) {
@@ -108,7 +108,7 @@ async function getWorkspacePackagePathsAsync(cwd, managerOverride) {
108
108
  resolvedPaths: cachedPaths
109
109
  };
110
110
  }
111
- const managerUtilities = (0, _implementations.getWorkspaceUtilities)(params.manager);
111
+ const managerUtilities = (0, _index.getWorkspaceUtilities)(params.manager);
112
112
  const managerSetting = managerUtilities.getWorkspacePatterns({
113
113
  root: params.root
114
114
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspacePackagePaths.ts"],"sourcesContent":["import glob, { type Options as GlobOptions } from \"fast-glob\";\nimport path from \"path\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities, type WorkspaceManagerAndRoot } from \"./implementations\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\nimport { wrapWorkspaceUtility, wrapAsyncWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/** Mapping from root path to resolved package paths, or undefined if there was an error */\nconst packagePathsCache = new Map<string, string[] | undefined>();\n\nconst globOptions: GlobOptions = {\n absolute: true,\n ignore: [\"**/node_modules/**\", \"**/__fixtures__/**\"],\n stats: false,\n};\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePackagePaths(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = glob.sync(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport async function getWorkspacePackagePathsAsync(\n cwd: string,\n managerOverride?: WorkspaceManager\n): Promise<string[] | undefined> {\n return wrapAsyncWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: async ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = await glob(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Handles the shared synchronous initial logic:\n * - Used the cached result if available\n * - Else, call `getWorkspacePackagePatterns`\n * - If the results are relative paths (not patterns), resolve, cache, and return them\n * - Else, return the prepared globs for sync or async resolution as appropriate.\n */\nfunction getInitialPathsOrGlobs(\n params: WorkspaceManagerAndRoot\n): { globs: string[] } | { resolvedPaths: string[] } | undefined {\n const canCache = isCachingEnabled();\n if (canCache && packagePathsCache.has(params.root)) {\n // Return the cached result, even if it was a failure\n const cachedPaths = packagePathsCache.get(params.root);\n return cachedPaths && { resolvedPaths: cachedPaths };\n }\n\n const managerUtilities = getWorkspaceUtilities(params.manager);\n const managerSetting = managerUtilities.getWorkspacePatterns({ root: params.root });\n\n if (managerSetting?.type === \"pattern\") {\n return {\n globs: managerSetting.patterns.map((p) => path.join(p, \"package.json\").replace(/\\\\/g, \"/\")),\n };\n }\n\n if (managerSetting?.type === \"path\") {\n const resolvedPaths = managerSetting.patterns.map((p) => path.resolve(params.root, p));\n if (canCache) {\n packagePathsCache.set(params.root, resolvedPaths);\n }\n return { resolvedPaths };\n }\n\n return undefined;\n}\n\n/**\n * Given the results from globbing package.json files, resolve to package folder paths\n * and cache the results.\n */\nfunction resolveAndCacheGlobResults(params: { root: string; globResults: string[] }) {\n const { root, globResults } = params;\n const resolvedPaths = globResults.map((packageJsonPath) => {\n const packagePath = path.dirname(packageJsonPath);\n return path.sep === \"/\" ? packagePath : packagePath.replace(/\\//g, path.sep);\n });\n if (isCachingEnabled()) {\n packagePathsCache.set(root, resolvedPaths);\n }\n return resolvedPaths;\n}\n"],"names":["getWorkspacePackagePaths","getWorkspacePackagePathsAsync","packagePathsCache","Map","globOptions","absolute","ignore","stats","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","initialResult","getInitialPathsOrGlobs","resolvedPaths","globResults","glob","sync","globs","resolveAndCacheGlobResults","err","isCachingEnabled","set","undefined","wrapAsyncWorkspaceUtility","params","canCache","has","cachedPaths","get","managerUtilities","getWorkspaceUtilities","managerSetting","getWorkspacePatterns","type","patterns","map","p","path","join","replace","resolve","packageJsonPath","packagePath","dirname","sep"],"mappings":";;;;;;;;;;;QA2BgBA;eAAAA;;QAiCMC;eAAAA;;;iEA5D4B;6DACjC;iCAEmD;kCACnC;sCAC+B;;;;;;AAEhE,yFAAyF,GACzF,MAAMC,oBAAoB,IAAIC;AAE9B,MAAMC,cAA2B;IAC/BC,UAAU;IACVC,QAAQ;QAAC;QAAsB;KAAqB;IACpDC,OAAO;AACT;AAaO,SAASP,yBAAyBQ,GAAW,EAAEC,eAAkC;IACtF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAcC,iBAAI,CAACC,IAAI,CAACL,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAC/E,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAaO,eAAetB,8BACpBO,GAAW,EACXC,eAAkC;IAElC,OAAOkB,IAAAA,+CAAyB,EAAC;QAC/BnB;QACAC;QACAE,aAAa;QACbC,MAAM,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAE;YAC5B,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAc,MAAMC,IAAAA,iBAAI,EAACJ,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAChF,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAEA;;;;;;CAMC,GACD,SAASP,uBACPY,MAA+B;IAE/B,MAAMC,WAAWL,IAAAA,kCAAgB;IACjC,IAAIK,YAAY3B,kBAAkB4B,GAAG,CAACF,OAAOd,IAAI,GAAG;QAClD,qDAAqD;QACrD,MAAMiB,cAAc7B,kBAAkB8B,GAAG,CAACJ,OAAOd,IAAI;QACrD,OAAOiB,eAAe;YAAEd,eAAec;QAAY;IACrD;IAEA,MAAME,mBAAmBC,IAAAA,sCAAqB,EAACN,OAAOf,OAAO;IAC7D,MAAMsB,iBAAiBF,iBAAiBG,oBAAoB,CAAC;QAAEtB,MAAMc,OAAOd,IAAI;IAAC;IAEjF,IAAIqB,gBAAgBE,SAAS,WAAW;QACtC,OAAO;YACLhB,OAAOc,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACC,IAAI,CAACF,GAAG,gBAAgBG,OAAO,CAAC,OAAO;QACxF;IACF;IAEA,IAAIR,gBAAgBE,SAAS,QAAQ;QACnC,MAAMpB,gBAAgBkB,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACG,OAAO,CAAChB,OAAOd,IAAI,EAAE0B;QACnF,IAAIX,UAAU;YACZ3B,kBAAkBuB,GAAG,CAACG,OAAOd,IAAI,EAAEG;QACrC;QACA,OAAO;YAAEA;QAAc;IACzB;IAEA,OAAOS;AACT;AAEA;;;CAGC,GACD,SAASJ,2BAA2BM,MAA+C;IACjF,MAAM,EAAEd,IAAI,EAAEI,WAAW,EAAE,GAAGU;IAC9B,MAAMX,gBAAgBC,YAAYqB,GAAG,CAAC,CAACM;QACrC,MAAMC,cAAcL,aAAI,CAACM,OAAO,CAACF;QACjC,OAAOJ,aAAI,CAACO,GAAG,KAAK,MAAMF,cAAcA,YAAYH,OAAO,CAAC,OAAOF,aAAI,CAACO,GAAG;IAC7E;IACA,IAAIxB,IAAAA,kCAAgB,KAAI;QACtBtB,kBAAkBuB,GAAG,CAACX,MAAMG;IAC9B;IACA,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspacePackagePaths.ts"],"sourcesContent":["import glob, { type Options as GlobOptions } from \"fast-glob\";\nimport path from \"path\";\nimport type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities, type WorkspaceManagerAndRoot } from \"./implementations/index.js\";\nimport { isCachingEnabled } from \"../isCachingEnabled.js\";\nimport { wrapWorkspaceUtility, wrapAsyncWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/** Mapping from root path to resolved package paths, or undefined if there was an error */\nconst packagePathsCache = new Map<string, string[] | undefined>();\n\nconst globOptions: GlobOptions = {\n absolute: true,\n ignore: [\"**/node_modules/**\", \"**/__fixtures__/**\"],\n stats: false,\n};\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePackagePaths(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = glob.sync(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Get a list of package folder paths in the monorepo. The list of included packages is based on\n * the manager's config file and matching package folders (which must contain package.json) on disk.\n *\n * (The list of package paths is cached per monorepo root if caching is enabled.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Package paths, or undefined if there's any issue\n * (logs verbose warnings instead of throwing on error)\n */\nexport async function getWorkspacePackagePathsAsync(\n cwd: string,\n managerOverride?: WorkspaceManager\n): Promise<string[] | undefined> {\n return wrapAsyncWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace package paths\",\n impl: async ({ manager, root }) => {\n const initialResult = getInitialPathsOrGlobs({ manager, root });\n if (!initialResult || \"resolvedPaths\" in initialResult) {\n return initialResult?.resolvedPaths;\n }\n\n try {\n const globResults = await glob(initialResult.globs, { cwd: root, ...globOptions });\n return resolveAndCacheGlobResults({ root, globResults });\n } catch (err) {\n isCachingEnabled() && packagePathsCache.set(root, undefined);\n throw err;\n }\n },\n });\n}\n\n/**\n * Handles the shared synchronous initial logic:\n * - Used the cached result if available\n * - Else, call `getWorkspacePackagePatterns`\n * - If the results are relative paths (not patterns), resolve, cache, and return them\n * - Else, return the prepared globs for sync or async resolution as appropriate.\n */\nfunction getInitialPathsOrGlobs(\n params: WorkspaceManagerAndRoot\n): { globs: string[] } | { resolvedPaths: string[] } | undefined {\n const canCache = isCachingEnabled();\n if (canCache && packagePathsCache.has(params.root)) {\n // Return the cached result, even if it was a failure\n const cachedPaths = packagePathsCache.get(params.root);\n return cachedPaths && { resolvedPaths: cachedPaths };\n }\n\n const managerUtilities = getWorkspaceUtilities(params.manager);\n const managerSetting = managerUtilities.getWorkspacePatterns({ root: params.root });\n\n if (managerSetting?.type === \"pattern\") {\n return {\n globs: managerSetting.patterns.map((p) => path.join(p, \"package.json\").replace(/\\\\/g, \"/\")),\n };\n }\n\n if (managerSetting?.type === \"path\") {\n const resolvedPaths = managerSetting.patterns.map((p) => path.resolve(params.root, p));\n if (canCache) {\n packagePathsCache.set(params.root, resolvedPaths);\n }\n return { resolvedPaths };\n }\n\n return undefined;\n}\n\n/**\n * Given the results from globbing package.json files, resolve to package folder paths\n * and cache the results.\n */\nfunction resolveAndCacheGlobResults(params: { root: string; globResults: string[] }) {\n const { root, globResults } = params;\n const resolvedPaths = globResults.map((packageJsonPath) => {\n const packagePath = path.dirname(packageJsonPath);\n return path.sep === \"/\" ? packagePath : packagePath.replace(/\\//g, path.sep);\n });\n if (isCachingEnabled()) {\n packagePathsCache.set(root, resolvedPaths);\n }\n return resolvedPaths;\n}\n"],"names":["getWorkspacePackagePaths","getWorkspacePackagePathsAsync","packagePathsCache","Map","globOptions","absolute","ignore","stats","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","initialResult","getInitialPathsOrGlobs","resolvedPaths","globResults","glob","sync","globs","resolveAndCacheGlobResults","err","isCachingEnabled","set","undefined","wrapAsyncWorkspaceUtility","params","canCache","has","cachedPaths","get","managerUtilities","getWorkspaceUtilities","managerSetting","getWorkspacePatterns","type","patterns","map","p","path","join","replace","resolve","packageJsonPath","packagePath","dirname","sep"],"mappings":";;;;;;;;;;;QA2BgBA;eAAAA;;QAiCMC;eAAAA;;;iEA5D4B;6DACjC;uBAEmD;kCACnC;sCAC+B;;;;;;AAEhE,yFAAyF,GACzF,MAAMC,oBAAoB,IAAIC;AAE9B,MAAMC,cAA2B;IAC/BC,UAAU;IACVC,QAAQ;QAAC;QAAsB;KAAqB;IACpDC,OAAO;AACT;AAaO,SAASP,yBAAyBQ,GAAW,EAAEC,eAAkC;IACtF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAcC,iBAAI,CAACC,IAAI,CAACL,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAC/E,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAaO,eAAetB,8BACpBO,GAAW,EACXC,eAAkC;IAElC,OAAOkB,IAAAA,+CAAyB,EAAC;QAC/BnB;QACAC;QACAE,aAAa;QACbC,MAAM,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAE;YAC5B,MAAMC,gBAAgBC,uBAAuB;gBAAEH;gBAASC;YAAK;YAC7D,IAAI,CAACC,iBAAiB,mBAAmBA,eAAe;gBACtD,OAAOA,eAAeE;YACxB;YAEA,IAAI;gBACF,MAAMC,cAAc,MAAMC,IAAAA,iBAAI,EAACJ,cAAcM,KAAK,EAAE;oBAAEb,KAAKM;oBAAM,GAAGV,WAAW;gBAAC;gBAChF,OAAOkB,2BAA2B;oBAAER;oBAAMI;gBAAY;YACxD,EAAE,OAAOK,KAAK;gBACZC,IAAAA,kCAAgB,OAAMtB,kBAAkBuB,GAAG,CAACX,MAAMY;gBAClD,MAAMH;YACR;QACF;IACF;AACF;AAEA;;;;;;CAMC,GACD,SAASP,uBACPY,MAA+B;IAE/B,MAAMC,WAAWL,IAAAA,kCAAgB;IACjC,IAAIK,YAAY3B,kBAAkB4B,GAAG,CAACF,OAAOd,IAAI,GAAG;QAClD,qDAAqD;QACrD,MAAMiB,cAAc7B,kBAAkB8B,GAAG,CAACJ,OAAOd,IAAI;QACrD,OAAOiB,eAAe;YAAEd,eAAec;QAAY;IACrD;IAEA,MAAME,mBAAmBC,IAAAA,4BAAqB,EAACN,OAAOf,OAAO;IAC7D,MAAMsB,iBAAiBF,iBAAiBG,oBAAoB,CAAC;QAAEtB,MAAMc,OAAOd,IAAI;IAAC;IAEjF,IAAIqB,gBAAgBE,SAAS,WAAW;QACtC,OAAO;YACLhB,OAAOc,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACC,IAAI,CAACF,GAAG,gBAAgBG,OAAO,CAAC,OAAO;QACxF;IACF;IAEA,IAAIR,gBAAgBE,SAAS,QAAQ;QACnC,MAAMpB,gBAAgBkB,eAAeG,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAMC,aAAI,CAACG,OAAO,CAAChB,OAAOd,IAAI,EAAE0B;QACnF,IAAIX,UAAU;YACZ3B,kBAAkBuB,GAAG,CAACG,OAAOd,IAAI,EAAEG;QACrC;QACA,OAAO;YAAEA;QAAc;IACzB;IAEA,OAAOS;AACT;AAEA;;;CAGC,GACD,SAASJ,2BAA2BM,MAA+C;IACjF,MAAM,EAAEd,IAAI,EAAEI,WAAW,EAAE,GAAGU;IAC9B,MAAMX,gBAAgBC,YAAYqB,GAAG,CAAC,CAACM;QACrC,MAAMC,cAAcL,aAAI,CAACM,OAAO,CAACF;QACjC,OAAOJ,aAAI,CAACO,GAAG,KAAK,MAAMF,cAAcA,YAAYH,OAAO,CAAC,OAAOF,aAAI,CAACO,GAAG;IAC7E;IACA,IAAIxB,IAAAA,kCAAgB,KAAI;QACtBtB,kBAAkBuB,GAAG,CAACX,MAAMG;IAC9B;IACA,OAAOA;AACT"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "getWorkspacePatterns", {
8
8
  return getWorkspacePatterns;
9
9
  }
10
10
  });
11
- const _implementations = require("./implementations");
11
+ const _index = require("./implementations/index.js");
12
12
  const _wrapWorkspaceUtility = require("./wrapWorkspaceUtility.js");
13
13
  function getWorkspacePatterns(cwd, managerOverride) {
14
14
  return (0, _wrapWorkspaceUtility.wrapWorkspaceUtility)({
@@ -16,7 +16,7 @@ function getWorkspacePatterns(cwd, managerOverride) {
16
16
  managerOverride,
17
17
  description: "workspace patterns",
18
18
  impl: ({ manager, root })=>{
19
- const managerUtilities = (0, _implementations.getWorkspaceUtilities)(manager);
19
+ const managerUtilities = (0, _index.getWorkspaceUtilities)(manager);
20
20
  return managerUtilities.getWorkspacePatterns({
21
21
  root
22
22
  })?.patterns;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspaces/getWorkspacePatterns.ts"],"sourcesContent":["import type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get the original glob patterns from the manager's workspaces config.\n * (Calculation of the workspace manager and root for `cwd` is cached internally.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of patterns, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePatterns(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace patterns\",\n impl: ({ manager, root }) => {\n const managerUtilities = getWorkspaceUtilities(manager);\n return managerUtilities.getWorkspacePatterns({ root })?.patterns;\n },\n });\n}\n"],"names":["getWorkspacePatterns","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","managerUtilities","getWorkspaceUtilities","patterns"],"mappings":";;;;+BAagBA;;;eAAAA;;;iCAZsB;sCACD;AAW9B,SAASA,qBAAqBC,GAAW,EAAEC,eAAkC;IAClF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,mBAAmBC,IAAAA,sCAAqB,EAACH;YAC/C,OAAOE,iBAAiBR,oBAAoB,CAAC;gBAAEO;YAAK,IAAIG;QAC1D;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/workspaces/getWorkspacePatterns.ts"],"sourcesContent":["import type { WorkspaceManager } from \"../types/WorkspaceManager.js\";\nimport { getWorkspaceUtilities } from \"./implementations/index.js\";\nimport { wrapWorkspaceUtility } from \"./wrapWorkspaceUtility.js\";\n\n/**\n * Get the original glob patterns from the manager's workspaces config.\n * (Calculation of the workspace manager and root for `cwd` is cached internally.)\n *\n * @param managerOverride Workspace/monorepo manager to use instead of auto-detecting\n *\n * @returns Array of patterns, or undefined if not available\n * (logs verbose warnings instead of throwing on error)\n */\nexport function getWorkspacePatterns(cwd: string, managerOverride?: WorkspaceManager): string[] | undefined {\n return wrapWorkspaceUtility({\n cwd,\n managerOverride,\n description: \"workspace patterns\",\n impl: ({ manager, root }) => {\n const managerUtilities = getWorkspaceUtilities(manager);\n return managerUtilities.getWorkspacePatterns({ root })?.patterns;\n },\n });\n}\n"],"names":["getWorkspacePatterns","cwd","managerOverride","wrapWorkspaceUtility","description","impl","manager","root","managerUtilities","getWorkspaceUtilities","patterns"],"mappings":";;;;+BAagBA;;;eAAAA;;;uBAZsB;sCACD;AAW9B,SAASA,qBAAqBC,GAAW,EAAEC,eAAkC;IAClF,OAAOC,IAAAA,0CAAoB,EAAC;QAC1BF;QACAC;QACAE,aAAa;QACbC,MAAM,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAE;YACtB,MAAMC,mBAAmBC,IAAAA,4BAAqB,EAACH;YAC/C,OAAOE,iBAAiBR,oBAAoB,CAAC;gBAAEO;YAAK,IAAIG;QAC1D;IACF;AACF"}
@@ -12,27 +12,27 @@ const utils = {};
12
12
  function getWorkspaceUtilities(manager) {
13
13
  switch(manager){
14
14
  case "npm":
15
- var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
15
+ var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
16
16
  _utils;
17
17
  (_utils = utils).npm ?? (_utils.npm = require("./npm").npmUtilities);
18
18
  break;
19
19
  case "pnpm":
20
- var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
20
+ var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
21
21
  _utils1;
22
22
  (_utils1 = utils).pnpm ?? (_utils1.pnpm = require("./pnpm").pnpmUtilities);
23
23
  break;
24
24
  case "yarn":
25
- var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
25
+ var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
26
26
  _utils2;
27
27
  (_utils2 = utils).yarn ?? (_utils2.yarn = require("./yarn").yarnUtilities);
28
28
  break;
29
29
  case "rush":
30
- var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
30
+ var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
31
31
  _utils3;
32
32
  (_utils3 = utils).rush ?? (_utils3.rush = require("./rush").rushUtilities);
33
33
  break;
34
34
  case "lerna":
35
- var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
35
+ var // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
36
36
  _utils4;
37
37
  (_utils4 = utils).lerna ?? (_utils4.lerna = require("./lerna").lernaUtilities);
38
38
  break;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workspaces/implementations/getWorkspaceUtilities.ts"],"sourcesContent":["import type { WorkspaceManager } from \"../../types/WorkspaceManager.js\";\nimport type { WorkspaceUtilities } from \"./WorkspaceUtilities.js\";\n\nconst utils: Partial<Record<WorkspaceManager, WorkspaceUtilities>> = {};\n\n/**\n * Get utility implementations for the given workspace/monorepo manager.\n */\nexport function getWorkspaceUtilities(manager: WorkspaceManager): WorkspaceUtilities {\n switch (manager) {\n case \"npm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n utils.npm ??= (require(\"./npm\") as typeof import(\"./npm\")).npmUtilities;\n break;\n\n case \"pnpm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n utils.pnpm ??= (require(\"./pnpm\") as typeof import(\"./pnpm\")).pnpmUtilities;\n break;\n\n case \"yarn\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n utils.yarn ??= (require(\"./yarn\") as typeof import(\"./yarn\")).yarnUtilities;\n break;\n\n case \"rush\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n utils.rush ??= (require(\"./rush\") as typeof import(\"./rush\")).rushUtilities;\n break;\n\n case \"lerna\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n utils.lerna ??= (require(\"./lerna\") as typeof import(\"./lerna\")).lernaUtilities;\n break;\n }\n\n return utils[manager]!;\n}\n"],"names":["getWorkspaceUtilities","utils","manager","npm","require","npmUtilities","pnpm","pnpmUtilities","yarn","yarnUtilities","rush","rushUtilities","lerna","lernaUtilities"],"mappings":";;;;+BAQgBA;;;eAAAA;;;AALhB,MAAMC,QAA+D,CAAC;AAK/D,SAASD,sBAAsBE,OAAyB;IAC7D,OAAQA;QACN,KAAK;gBACH,iJAAiJ;YACjJD;YAAAA,CAAAA,SAAAA,OAAME,GAAG,KAATF,OAAME,GAAG,GAAK,AAACC,QAAQ,SAAoCC,YAAY;YACvE;QAEF,KAAK;gBACH,iJAAiJ;YACjJJ;YAAAA,CAAAA,UAAAA,OAAMK,IAAI,KAAVL,QAAMK,IAAI,GAAK,AAACF,QAAQ,UAAsCG,aAAa;YAC3E;QAEF,KAAK;gBACH,iJAAiJ;YACjJN;YAAAA,CAAAA,UAAAA,OAAMO,IAAI,KAAVP,QAAMO,IAAI,GAAK,AAACJ,QAAQ,UAAsCK,aAAa;YAC3E;QAEF,KAAK;gBACH,iJAAiJ;YACjJR;YAAAA,CAAAA,UAAAA,OAAMS,IAAI,KAAVT,QAAMS,IAAI,GAAK,AAACN,QAAQ,UAAsCO,aAAa;YAC3E;QAEF,KAAK;gBACH,iJAAiJ;YACjJV;YAAAA,CAAAA,UAAAA,OAAMW,KAAK,KAAXX,QAAMW,KAAK,GAAK,AAACR,QAAQ,WAAwCS,cAAc;YAC/E;IACJ;IAEA,OAAOZ,KAAK,CAACC,QAAQ;AACvB"}
1
+ {"version":3,"sources":["../../../src/workspaces/implementations/getWorkspaceUtilities.ts"],"sourcesContent":["import type { WorkspaceManager } from \"../../types/WorkspaceManager.js\";\nimport type { WorkspaceUtilities } from \"./WorkspaceUtilities.js\";\n\nconst utils: Partial<Record<WorkspaceManager, WorkspaceUtilities>> = {};\n\n/**\n * Get utility implementations for the given workspace/monorepo manager.\n */\nexport function getWorkspaceUtilities(manager: WorkspaceManager): WorkspaceUtilities {\n switch (manager) {\n case \"npm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n utils.npm ??= (require(\"./npm\") as typeof import(\"./npm\")).npmUtilities;\n break;\n\n case \"pnpm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n utils.pnpm ??= (require(\"./pnpm\") as typeof import(\"./pnpm\")).pnpmUtilities;\n break;\n\n case \"yarn\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n utils.yarn ??= (require(\"./yarn\") as typeof import(\"./yarn\")).yarnUtilities;\n break;\n\n case \"rush\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n utils.rush ??= (require(\"./rush\") as typeof import(\"./rush\")).rushUtilities;\n break;\n\n case \"lerna\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n utils.lerna ??= (require(\"./lerna\") as typeof import(\"./lerna\")).lernaUtilities;\n break;\n }\n\n return utils[manager]!;\n}\n"],"names":["getWorkspaceUtilities","utils","manager","npm","require","npmUtilities","pnpm","pnpmUtilities","yarn","yarnUtilities","rush","rushUtilities","lerna","lernaUtilities"],"mappings":";;;;+BAQgBA;;;eAAAA;;;AALhB,MAAMC,QAA+D,CAAC;AAK/D,SAASD,sBAAsBE,OAAyB;IAC7D,OAAQA;QACN,KAAK;gBACH,6GAA6G;YAC7GD;YAAAA,CAAAA,SAAAA,OAAME,GAAG,KAATF,OAAME,GAAG,GAAK,AAACC,QAAQ,SAAoCC,YAAY;YACvE;QAEF,KAAK;gBACH,6GAA6G;YAC7GJ;YAAAA,CAAAA,UAAAA,OAAMK,IAAI,KAAVL,QAAMK,IAAI,GAAK,AAACF,QAAQ,UAAsCG,aAAa;YAC3E;QAEF,KAAK;gBACH,6GAA6G;YAC7GN;YAAAA,CAAAA,UAAAA,OAAMO,IAAI,KAAVP,QAAMO,IAAI,GAAK,AAACJ,QAAQ,UAAsCK,aAAa;YAC3E;QAEF,KAAK;gBACH,6GAA6G;YAC7GR;YAAAA,CAAAA,UAAAA,OAAMS,IAAI,KAAVT,QAAMS,IAAI,GAAK,AAACN,QAAQ,UAAsCO,aAAa;YAC3E;QAEF,KAAK;gBACH,6GAA6G;YAC7GV;YAAAA,CAAAA,UAAAA,OAAMW,KAAK,KAAXX,QAAMW,KAAK,GAAK,AAACR,QAAQ,WAAwCS,cAAc;YAC/E;IACJ;IAEA,OAAOZ,KAAK,CAACC,QAAQ;AACvB"}
@@ -75,13 +75,13 @@ const lernaUtilities = {
75
75
  function getManagerUtils(manager) {
76
76
  switch(manager){
77
77
  case "npm":
78
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
78
+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
79
79
  return require("./npm").npmUtilities;
80
80
  case "yarn":
81
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
81
+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
82
82
  return require("./yarn").yarnUtilities;
83
83
  case "pnpm":
84
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
84
+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports
85
85
  return require("./pnpm").pnpmUtilities;
86
86
  }
87
87
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workspaces/implementations/lerna.ts"],"sourcesContent":["import fs from \"fs\";\nimport jju from \"jju\";\nimport path from \"path\";\nimport { isCachingEnabled } from \"../../isCachingEnabled.js\";\nimport { managerFiles } from \"./getWorkspaceManagerAndRoot.js\";\nimport type { WorkspaceUtilities } from \"./WorkspaceUtilities.js\";\n\nexport const lernaUtilities: WorkspaceUtilities = {\n getWorkspacePatterns: ({ root }) => {\n const lernaJsonPath = path.join(root, managerFiles.lerna);\n const lernaConfig = jju.parse(fs.readFileSync(lernaJsonPath, \"utf-8\")) as { packages?: string[] };\n if (lernaConfig.packages) {\n return { patterns: lernaConfig.packages, type: \"pattern\" };\n }\n\n // Newer lerna versions also pick up workspaces from the package manager.\n const actualManager = getActualManager({ root });\n if (!actualManager) {\n throw new Error(`${lernaJsonPath} does not define \"packages\", and no known package manager was found.`);\n }\n\n const managerUtils = getManagerUtils(actualManager);\n return managerUtils.getWorkspacePatterns({ root });\n },\n\n // lerna could theoretically use yarn or pnpm catalogs\n getCatalogs: ({ root }) => {\n const actualManager = getActualManager({ root });\n return actualManager && getManagerUtils(actualManager).getCatalogs?.({ root });\n },\n};\n\n/** Mapping from lerna repo root to actual package manager */\nconst managerCache = new Map<string, \"yarn\" | \"pnpm\" | \"npm\" | undefined>();\n\n/**\n * Get the actual package manager used by a lerna monorepo (with caching).\n */\nfunction getActualManager(params: { root: string }): \"yarn\" | \"pnpm\" | \"npm\" | undefined {\n const { root } = params;\n if (isCachingEnabled() && managerCache.has(root)) {\n return managerCache.get(root);\n }\n\n for (const manager of [\"npm\", \"yarn\", \"pnpm\"] as const) {\n const managerPath = path.join(root, managerFiles[manager]);\n if (fs.existsSync(managerPath)) {\n managerCache.set(root, manager);\n return manager;\n }\n }\n\n managerCache.set(root, undefined);\n return undefined;\n}\n\nfunction getManagerUtils(manager: \"npm\" | \"yarn\" | \"pnpm\"): WorkspaceUtilities {\n switch (manager) {\n case \"npm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n return (require(\"./npm\") as typeof import(\"./npm\")).npmUtilities;\n case \"yarn\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n return (require(\"./yarn\") as typeof import(\"./yarn\")).yarnUtilities;\n case \"pnpm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n return (require(\"./pnpm\") as typeof import(\"./pnpm\")).pnpmUtilities;\n }\n}\n"],"names":["lernaUtilities","getWorkspacePatterns","root","lernaJsonPath","path","join","managerFiles","lerna","lernaConfig","jju","parse","fs","readFileSync","packages","patterns","type","actualManager","getActualManager","Error","managerUtils","getManagerUtils","getCatalogs","managerCache","Map","params","isCachingEnabled","has","get","manager","managerPath","existsSync","set","undefined","require","npmUtilities","yarnUtilities","pnpmUtilities"],"mappings":";;;;+BAOaA;;;eAAAA;;;2DAPE;4DACC;6DACC;kCACgB;4CACJ;;;;;;AAGtB,MAAMA,iBAAqC;IAChDC,sBAAsB,CAAC,EAAEC,IAAI,EAAE;QAC7B,MAAMC,gBAAgBC,aAAI,CAACC,IAAI,CAACH,MAAMI,wCAAY,CAACC,KAAK;QACxD,MAAMC,cAAcC,YAAG,CAACC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACT,eAAe;QAC7D,IAAIK,YAAYK,QAAQ,EAAE;YACxB,OAAO;gBAAEC,UAAUN,YAAYK,QAAQ;gBAAEE,MAAM;YAAU;QAC3D;QAEA,yEAAyE;QACzE,MAAMC,gBAAgBC,iBAAiB;YAAEf;QAAK;QAC9C,IAAI,CAACc,eAAe;YAClB,MAAM,IAAIE,MAAM,GAAGf,cAAc,oEAAoE,CAAC;QACxG;QAEA,MAAMgB,eAAeC,gBAAgBJ;QACrC,OAAOG,aAAalB,oBAAoB,CAAC;YAAEC;QAAK;IAClD;IAEA,sDAAsD;IACtDmB,aAAa,CAAC,EAAEnB,IAAI,EAAE;QACpB,MAAMc,gBAAgBC,iBAAiB;YAAEf;QAAK;QAC9C,OAAOc,iBAAiBI,gBAAgBJ,eAAeK,WAAW,GAAG;YAAEnB;QAAK;IAC9E;AACF;AAEA,2DAA2D,GAC3D,MAAMoB,eAAe,IAAIC;AAEzB;;CAEC,GACD,SAASN,iBAAiBO,MAAwB;IAChD,MAAM,EAAEtB,IAAI,EAAE,GAAGsB;IACjB,IAAIC,IAAAA,kCAAgB,OAAMH,aAAaI,GAAG,CAACxB,OAAO;QAChD,OAAOoB,aAAaK,GAAG,CAACzB;IAC1B;IAEA,KAAK,MAAM0B,WAAW;QAAC;QAAO;QAAQ;KAAO,CAAW;QACtD,MAAMC,cAAczB,aAAI,CAACC,IAAI,CAACH,MAAMI,wCAAY,CAACsB,QAAQ;QACzD,IAAIjB,WAAE,CAACmB,UAAU,CAACD,cAAc;YAC9BP,aAAaS,GAAG,CAAC7B,MAAM0B;YACvB,OAAOA;QACT;IACF;IAEAN,aAAaS,GAAG,CAAC7B,MAAM8B;IACvB,OAAOA;AACT;AAEA,SAASZ,gBAAgBQ,OAAgC;IACvD,OAAQA;QACN,KAAK;YACH,iJAAiJ;YACjJ,OAAO,AAACK,QAAQ,SAAoCC,YAAY;QAClE,KAAK;YACH,iJAAiJ;YACjJ,OAAO,AAACD,QAAQ,UAAsCE,aAAa;QACrE,KAAK;YACH,iJAAiJ;YACjJ,OAAO,AAACF,QAAQ,UAAsCG,aAAa;IACvE;AACF"}
1
+ {"version":3,"sources":["../../../src/workspaces/implementations/lerna.ts"],"sourcesContent":["import fs from \"fs\";\nimport jju from \"jju\";\nimport path from \"path\";\nimport { isCachingEnabled } from \"../../isCachingEnabled.js\";\nimport { managerFiles } from \"./getWorkspaceManagerAndRoot.js\";\nimport type { WorkspaceUtilities } from \"./WorkspaceUtilities.js\";\n\nexport const lernaUtilities: WorkspaceUtilities = {\n getWorkspacePatterns: ({ root }) => {\n const lernaJsonPath = path.join(root, managerFiles.lerna);\n const lernaConfig = jju.parse(fs.readFileSync(lernaJsonPath, \"utf-8\")) as { packages?: string[] };\n if (lernaConfig.packages) {\n return { patterns: lernaConfig.packages, type: \"pattern\" };\n }\n\n // Newer lerna versions also pick up workspaces from the package manager.\n const actualManager = getActualManager({ root });\n if (!actualManager) {\n throw new Error(`${lernaJsonPath} does not define \"packages\", and no known package manager was found.`);\n }\n\n const managerUtils = getManagerUtils(actualManager);\n return managerUtils.getWorkspacePatterns({ root });\n },\n\n // lerna could theoretically use yarn or pnpm catalogs\n getCatalogs: ({ root }) => {\n const actualManager = getActualManager({ root });\n return actualManager && getManagerUtils(actualManager).getCatalogs?.({ root });\n },\n};\n\n/** Mapping from lerna repo root to actual package manager */\nconst managerCache = new Map<string, \"yarn\" | \"pnpm\" | \"npm\" | undefined>();\n\n/**\n * Get the actual package manager used by a lerna monorepo (with caching).\n */\nfunction getActualManager(params: { root: string }): \"yarn\" | \"pnpm\" | \"npm\" | undefined {\n const { root } = params;\n if (isCachingEnabled() && managerCache.has(root)) {\n return managerCache.get(root);\n }\n\n for (const manager of [\"npm\", \"yarn\", \"pnpm\"] as const) {\n const managerPath = path.join(root, managerFiles[manager]);\n if (fs.existsSync(managerPath)) {\n managerCache.set(root, manager);\n return manager;\n }\n }\n\n managerCache.set(root, undefined);\n return undefined;\n}\n\nfunction getManagerUtils(manager: \"npm\" | \"yarn\" | \"pnpm\"): WorkspaceUtilities {\n switch (manager) {\n case \"npm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n return (require(\"./npm\") as typeof import(\"./npm\")).npmUtilities;\n case \"yarn\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n return (require(\"./yarn\") as typeof import(\"./yarn\")).yarnUtilities;\n case \"pnpm\":\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @typescript-eslint/no-require-imports\n return (require(\"./pnpm\") as typeof import(\"./pnpm\")).pnpmUtilities;\n }\n}\n"],"names":["lernaUtilities","getWorkspacePatterns","root","lernaJsonPath","path","join","managerFiles","lerna","lernaConfig","jju","parse","fs","readFileSync","packages","patterns","type","actualManager","getActualManager","Error","managerUtils","getManagerUtils","getCatalogs","managerCache","Map","params","isCachingEnabled","has","get","manager","managerPath","existsSync","set","undefined","require","npmUtilities","yarnUtilities","pnpmUtilities"],"mappings":";;;;+BAOaA;;;eAAAA;;;2DAPE;4DACC;6DACC;kCACgB;4CACJ;;;;;;AAGtB,MAAMA,iBAAqC;IAChDC,sBAAsB,CAAC,EAAEC,IAAI,EAAE;QAC7B,MAAMC,gBAAgBC,aAAI,CAACC,IAAI,CAACH,MAAMI,wCAAY,CAACC,KAAK;QACxD,MAAMC,cAAcC,YAAG,CAACC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACT,eAAe;QAC7D,IAAIK,YAAYK,QAAQ,EAAE;YACxB,OAAO;gBAAEC,UAAUN,YAAYK,QAAQ;gBAAEE,MAAM;YAAU;QAC3D;QAEA,yEAAyE;QACzE,MAAMC,gBAAgBC,iBAAiB;YAAEf;QAAK;QAC9C,IAAI,CAACc,eAAe;YAClB,MAAM,IAAIE,MAAM,GAAGf,cAAc,oEAAoE,CAAC;QACxG;QAEA,MAAMgB,eAAeC,gBAAgBJ;QACrC,OAAOG,aAAalB,oBAAoB,CAAC;YAAEC;QAAK;IAClD;IAEA,sDAAsD;IACtDmB,aAAa,CAAC,EAAEnB,IAAI,EAAE;QACpB,MAAMc,gBAAgBC,iBAAiB;YAAEf;QAAK;QAC9C,OAAOc,iBAAiBI,gBAAgBJ,eAAeK,WAAW,GAAG;YAAEnB;QAAK;IAC9E;AACF;AAEA,2DAA2D,GAC3D,MAAMoB,eAAe,IAAIC;AAEzB;;CAEC,GACD,SAASN,iBAAiBO,MAAwB;IAChD,MAAM,EAAEtB,IAAI,EAAE,GAAGsB;IACjB,IAAIC,IAAAA,kCAAgB,OAAMH,aAAaI,GAAG,CAACxB,OAAO;QAChD,OAAOoB,aAAaK,GAAG,CAACzB;IAC1B;IAEA,KAAK,MAAM0B,WAAW;QAAC;QAAO;QAAQ;KAAO,CAAW;QACtD,MAAMC,cAAczB,aAAI,CAACC,IAAI,CAACH,MAAMI,wCAAY,CAACsB,QAAQ;QACzD,IAAIjB,WAAE,CAACmB,UAAU,CAACD,cAAc;YAC9BP,aAAaS,GAAG,CAAC7B,MAAM0B;YACvB,OAAOA;QACT;IACF;IAEAN,aAAaS,GAAG,CAAC7B,MAAM8B;IACvB,OAAOA;AACT;AAEA,SAASZ,gBAAgBQ,OAAgC;IACvD,OAAQA;QACN,KAAK;YACH,6GAA6G;YAC7G,OAAO,AAACK,QAAQ,SAAoCC,YAAY;QAClE,KAAK;YACH,6GAA6G;YAC7G,OAAO,AAACD,QAAQ,UAAsCE,aAAa;QACrE,KAAK;YACH,6GAA6G;YAC7G,OAAO,AAACF,QAAQ,UAAsCG,aAAa;IACvE;AACF"}
@@ -1,5 +1,5 @@
1
1
  import type { WorkspaceManager } from "../types/WorkspaceManager.js";
2
- import { type WorkspaceManagerAndRoot } from "./implementations";
2
+ import { type WorkspaceManagerAndRoot } from "./implementations/index.js";
3
3
  interface WrappedUtilityParams {
4
4
  /** Search for the root from here */
5
5
  cwd: string;
@@ -17,12 +17,12 @@ _export(exports, {
17
17
  }
18
18
  });
19
19
  const _logging = require("../logging.js");
20
- const _implementations = require("./implementations");
20
+ const _index = require("./implementations/index.js");
21
21
  function wrapWorkspaceUtility(params) {
22
22
  const { cwd, description, impl } = params;
23
23
  let managerInfo;
24
24
  try {
25
- managerInfo = (0, _implementations.getWorkspaceManagerAndRoot)(cwd, undefined, params.managerOverride);
25
+ managerInfo = (0, _index.getWorkspaceManagerAndRoot)(cwd, undefined, params.managerOverride);
26
26
  if (managerInfo) {
27
27
  return impl(managerInfo);
28
28
  }
@@ -35,7 +35,7 @@ async function wrapAsyncWorkspaceUtility(params) {
35
35
  const { cwd, description, impl } = params;
36
36
  let managerInfo;
37
37
  try {
38
- managerInfo = (0, _implementations.getWorkspaceManagerAndRoot)(cwd, undefined, params.managerOverride);
38
+ managerInfo = (0, _index.getWorkspaceManagerAndRoot)(cwd, undefined, params.managerOverride);
39
39
  if (managerInfo) {
40
40
  return await impl(managerInfo);
41
41
  }
@@ -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\";\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;iCAEuC;AAiBlE,SAASA,qBACdC,MAGC;IAED,MAAM,EAAEC,GAAG,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGH;IACnC,IAAII;IACJ,IAAI;QACFA,cAAcC,IAAAA,2CAA0B,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,2CAA0B,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.1",
3
+ "version": "0.41.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,11 +0,0 @@
1
- // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
- // It should be published with your NPM package. It should not be tracked by Git.
3
- {
4
- "tsdocVersion": "0.12",
5
- "toolPackages": [
6
- {
7
- "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.52.9"
9
- }
10
- ]
11
- }