@mxpicture/build-api 0.3.16 โ†’ 0.3.18

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.
@@ -40,7 +40,7 @@ export declare class NpmPublisher {
40
40
  *
41
41
  * @returns A promise that resolves when all publish attempts have settled.
42
42
  */
43
- run(): Promise<void>;
44
- protected runPackage(pkg: Pkg): Promise<void>;
43
+ run(token?: string): Promise<void>;
44
+ protected runPackage(pkg: Pkg, token?: string): Promise<void>;
45
45
  }
46
46
  //# sourceMappingURL=NpmPublisher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPublisher.d.ts","sourceRoot":"","sources":["../../src/npmPublish/NpmPublisher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAU,QAAQ,kBAAkB,kBAG/D,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,YAAY;aAEY,MAAM,EAAE,MAAM;IADjD,mDAAmD;gBAChB,MAAM,GAAE,MAAc;IAEzD;;;;;;;;;OASG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;cAiBjB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAoCpD"}
1
+ {"version":3,"file":"NpmPublisher.d.ts","sourceRoot":"","sources":["../../src/npmPublish/NpmPublisher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAU,QAAQ,kBAAkB,kBAG/D,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,YAAY;aAEY,MAAM,EAAE,MAAM;IADjD,mDAAmD;gBAChB,MAAM,GAAE,MAAc;IAEzD;;;;;;;;;OASG;IACU,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAiB/B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsCpE"}
@@ -46,9 +46,9 @@ export class NpmPublisher {
46
46
  *
47
47
  * @returns A promise that resolves when all publish attempts have settled.
48
48
  */
49
- async run() {
49
+ async run(token) {
50
50
  const pkgs = (await workspace().read()).packages;
51
- const results = await Promise.allSettled(pkgs.map((d) => this.runPackage(d)));
51
+ const results = await Promise.allSettled(pkgs.map((d) => this.runPackage(d, token)));
52
52
  const failures = results.filter((r) => r.status === "rejected");
53
53
  if (failures.length > 0) {
54
54
  logError(`\nโŒ ${failures.length} package(s) failed to publish:`);
@@ -58,14 +58,15 @@ export class NpmPublisher {
58
58
  process.exit(1);
59
59
  }
60
60
  }
61
- async runPackage(pkg) {
61
+ async runPackage(pkg, token) {
62
62
  if (pkg.content.private)
63
63
  return;
64
64
  const { name, version } = pkg.content;
65
65
  logInfo(`๐Ÿ“ฆ Publishing ${name}@${version} ... (${new Date().toISOString()})`);
66
+ const setToken = token ? `NPM_TOKEN=${token} && ` : "";
66
67
  // Check if this exact version is already published
67
68
  try {
68
- const { stdout } = await execAsync(`${this.npmCli} view ${name}@${version} version`);
69
+ const { stdout } = await execAsync(`${setToken}${this.npmCli} view ${name}@${version} version`);
69
70
  const published = stdout.trim();
70
71
  if (published === version) {
71
72
  logInfo(`โญ๏ธ ${name}@${version} already published, skipping.`);
@@ -76,7 +77,7 @@ export class NpmPublisher {
76
77
  // npm view exits non-zero if the package/version doesn't exist โ€” means we should publish
77
78
  }
78
79
  try {
79
- await execAsync(`${this.npmCli} publish --access public`, {
80
+ await execAsync(`${setToken}${this.npmCli} publish --access public`, {
80
81
  cwd: pkg.dirPath,
81
82
  });
82
83
  logSuccess(`โœ… ${name}@${version} published successfully (${new Date().toISOString()}).`);
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPublisher.js","sourceRoot":"","sources":["../../src/npmPublish/NpmPublisher.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, logInfo, logSuccess } from \"../logger/Logger.js\";\nimport { execAsync } from \"../common/common.fs.js\";\nimport type { NpmPublisherParams } from \"../types/types.npm.js\";\nimport type { Pkg } from \"../pkg/Pkg.js\";\nimport { initWorkspace, workspace } from \"../workspace/Workspace.js\";\n\n/**\n * Publishes all non-private workspace packages to the npm registry.\n *\n * @remarks\n * Initialises the workspace from the given repository root, then delegates\n * to {@link NpmPublisher.run} which publishes every public package in\n * parallel. Already-published versions are automatically skipped.\n *\n * @param params - Publisher parameters containing the repository root path.\n * @returns A promise that resolves when all packages have been processed.\n *\n * @example\n * ```ts\n * await runNpmPublisher({ repoRoot: \"/path/to/repo\" });\n * ```\n */\nexport const runNpmPublisher = async (params: NpmPublisherParams) => {\n initWorkspace(params.repoRoot);\n return new NpmPublisher(params.useCorepack ? \"corepack npm\" : \"npm\").run();\n};\n\n/**\n * Publishes workspace packages to the npm registry.\n *\n * @remarks\n * Reads every package from the current workspace, attempts to publish each\n * non-private package in parallel via `npm publish --access public`, and\n * exits the process with code 1 if any publication fails. Packages whose\n * exact version is already on the registry are silently skipped.\n */\nexport class NpmPublisher {\n /** Creates a new {@link NpmPublisher} instance. */\n public constructor(public readonly npmCli: string = \"npm\") {}\n\n /**\n * Publishes all non-private workspace packages.\n *\n * @remarks\n * Each package is published concurrently using `Promise.allSettled`.\n * If one or more packages fail, the errors are logged and the process\n * exits with code 1.\n *\n * @returns A promise that resolves when all publish attempts have settled.\n */\n public async run(): Promise<void> {\n const pkgs = (await workspace().read()).packages;\n\n const results = await Promise.allSettled(\n pkgs.map((d) => this.runPackage(d)),\n );\n\n const failures = results.filter((r) => r.status === \"rejected\");\n if (failures.length > 0) {\n logError(`\\nโŒ ${failures.length} package(s) failed to publish:`);\n failures.forEach((failure) => {\n logError(failure.reason);\n });\n process.exit(1);\n }\n }\n\n protected async runPackage(pkg: Pkg): Promise<void> {\n if (pkg.content.private) return;\n const { name, version } = pkg.content;\n\n logInfo(\n `๐Ÿ“ฆ Publishing ${name}@${version} ... (${new Date().toISOString()})`,\n );\n\n // Check if this exact version is already published\n try {\n const { stdout } = await execAsync(\n `${this.npmCli} view ${name}@${version} version`,\n );\n const published = stdout.trim();\n\n if (published === version) {\n logInfo(`โญ๏ธ ${name}@${version} already published, skipping.`);\n return;\n }\n } catch {\n // npm view exits non-zero if the package/version doesn't exist โ€” means we should publish\n }\n\n try {\n await execAsync(`${this.npmCli} publish --access public`, {\n cwd: pkg.dirPath,\n });\n logSuccess(\n `โœ… ${name}@${version} published successfully (${new Date().toISOString()}).`,\n );\n } catch (err) {\n const errorMessage = `Failed to publish ${name}@${version} (${new Date().toISOString()})`;\n logError(`โŒ ${errorMessage}`);\n throw new Error(errorMessage, { cause: err });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"NpmPublisher.js","sourceRoot":"","sources":["../../src/npmPublish/NpmPublisher.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, logInfo, logSuccess } from \"../logger/Logger.js\";\nimport { execAsync } from \"../common/common.fs.js\";\nimport type { NpmPublisherParams } from \"../types/types.npm.js\";\nimport type { Pkg } from \"../pkg/Pkg.js\";\nimport { initWorkspace, workspace } from \"../workspace/Workspace.js\";\n\n/**\n * Publishes all non-private workspace packages to the npm registry.\n *\n * @remarks\n * Initialises the workspace from the given repository root, then delegates\n * to {@link NpmPublisher.run} which publishes every public package in\n * parallel. Already-published versions are automatically skipped.\n *\n * @param params - Publisher parameters containing the repository root path.\n * @returns A promise that resolves when all packages have been processed.\n *\n * @example\n * ```ts\n * await runNpmPublisher({ repoRoot: \"/path/to/repo\" });\n * ```\n */\nexport const runNpmPublisher = async (params: NpmPublisherParams) => {\n initWorkspace(params.repoRoot);\n return new NpmPublisher(params.useCorepack ? \"corepack npm\" : \"npm\").run();\n};\n\n/**\n * Publishes workspace packages to the npm registry.\n *\n * @remarks\n * Reads every package from the current workspace, attempts to publish each\n * non-private package in parallel via `npm publish --access public`, and\n * exits the process with code 1 if any publication fails. Packages whose\n * exact version is already on the registry are silently skipped.\n */\nexport class NpmPublisher {\n /** Creates a new {@link NpmPublisher} instance. */\n public constructor(public readonly npmCli: string = \"npm\") {}\n\n /**\n * Publishes all non-private workspace packages.\n *\n * @remarks\n * Each package is published concurrently using `Promise.allSettled`.\n * If one or more packages fail, the errors are logged and the process\n * exits with code 1.\n *\n * @returns A promise that resolves when all publish attempts have settled.\n */\n public async run(token?: string): Promise<void> {\n const pkgs = (await workspace().read()).packages;\n\n const results = await Promise.allSettled(\n pkgs.map((d) => this.runPackage(d, token)),\n );\n\n const failures = results.filter((r) => r.status === \"rejected\");\n if (failures.length > 0) {\n logError(`\\nโŒ ${failures.length} package(s) failed to publish:`);\n failures.forEach((failure) => {\n logError(failure.reason);\n });\n process.exit(1);\n }\n }\n\n protected async runPackage(pkg: Pkg, token?: string): Promise<void> {\n if (pkg.content.private) return;\n const { name, version } = pkg.content;\n\n logInfo(\n `๐Ÿ“ฆ Publishing ${name}@${version} ... (${new Date().toISOString()})`,\n );\n\n const setToken = token ? `NPM_TOKEN=${token} && ` : \"\";\n\n // Check if this exact version is already published\n try {\n const { stdout } = await execAsync(\n `${setToken}${this.npmCli} view ${name}@${version} version`,\n );\n const published = stdout.trim();\n\n if (published === version) {\n logInfo(`โญ๏ธ ${name}@${version} already published, skipping.`);\n return;\n }\n } catch {\n // npm view exits non-zero if the package/version doesn't exist โ€” means we should publish\n }\n\n try {\n await execAsync(`${setToken}${this.npmCli} publish --access public`, {\n cwd: pkg.dirPath,\n });\n logSuccess(\n `โœ… ${name}@${version} published successfully (${new Date().toISOString()}).`,\n );\n } catch (err) {\n const errorMessage = `Failed to publish ${name}@${version} (${new Date().toISOString()})`;\n logError(`โŒ ${errorMessage}`);\n throw new Error(errorMessage, { cause: err });\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UpdatePackages.d.ts","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAMnF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,oBAAoB,kBAGnE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IAQN,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM;IAPrD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;gBACmC,OAAO,EAAE,MAAM;IAIrD;;;;;;;;;OASG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;cAwBjB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAetC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAWnD,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;IAIxE,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;cAOpD,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC;cAQJ,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAMpD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;cAK5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;cAiD9B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAgDhD"}
1
+ {"version":3,"file":"UpdatePackages.d.ts","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAMnC;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,oBAAoB,kBAInE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IAQN,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM;IAPrD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;gBACmC,OAAO,EAAE,MAAM;IAIrD;;;;;;;;;OASG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;cAwBjB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAetC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAWnD,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;IAIxE,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;cAOpD,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC;cAQJ,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAMpD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;cAK5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;cAiD9B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAgDhD"}
@@ -14,7 +14,9 @@ import { initWorkspace, workspace } from "../workspace/Workspace.js";
14
14
  */
15
15
  export const runUpdatePackages = async (params) => {
16
16
  initWorkspace(params.repoRoot);
17
- return new UpdatePackages(params.pattern).run();
17
+ // in sequence to avoid locks
18
+ for (const pat of params.pattern)
19
+ await new UpdatePackages(pat).run();
18
20
  };
19
21
  /**
20
22
  * Bulk-updates dependencies matching a glob pattern across all workspace packages.
@@ -1 +1 @@
1
- {"version":3,"file":"UpdatePackages.js","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageJson, UpdatePackagesParams } from \"../types/types.package.js\";\nimport { logInfo, logSuccess } from \"../logger/Logger.js\";\nimport { execAsync } from \"../common/common.fs.js\";\nimport micromatch from \"micromatch\";\nimport { initWorkspace, workspace } from \"../workspace/Workspace.js\";\n\n/**\n * Initializes the workspace and runs the package-update workflow.\n *\n * @remarks\n * This is a convenience entry point that constructs an {@link UpdatePackages} instance\n * and immediately invokes its {@link UpdatePackages.run} method.\n *\n * @param params - Configuration for the update, including the repo root and a glob pattern to select packages.\n * @returns A promise that resolves when all matching packages have been updated and verified.\n */\nexport const runUpdatePackages = async (params: UpdatePackagesParams) => {\n initWorkspace(params.repoRoot);\n return new UpdatePackages(params.pattern).run();\n};\n\n/**\n * Bulk-updates dependencies matching a glob pattern across all workspace packages.\n *\n * @remarks\n * The update pipeline performs five sequential steps:\n * 1. Discover matching dependencies across every workspace package.\n * 2. Run `pnpm update -r --latest` for the matched packages.\n * 3. Deduplicate the dependency tree with `pnpm dedupe`.\n * 4. Remove stale duplicate versions from `node_modules/.pnpm`.\n * 5. Verify that all workspaces converge on the same version for each package.\n */\nexport class UpdatePackages {\n protected patternWoSlash: string;\n\n /**\n * Creates a new UpdatePackages instance.\n *\n * @param pattern - A glob pattern used to match dependency names (e.g. `\"@angular/*\"`).\n */\n public constructor(protected readonly pattern: string) {\n this.patternWoSlash = pattern.replaceAll(\"/\", \"+\");\n }\n\n /**\n * Executes the full package-update pipeline.\n *\n * @remarks\n * Discovers matching packages, updates them, deduplicates, cleans old versions,\n * and verifies consistency. Exits the process with code 1 if version\n * inconsistencies are detected after the update.\n *\n * @returns A promise that resolves when the pipeline completes successfully.\n */\n public async run(): Promise<void> {\n logInfo(`๐Ÿš€ Starting ${this.pattern} packages update process...\\n`);\n\n // Step 1: Find all packages\n const packages = await this.getPackages();\n logInfo(`๐Ÿ“ฆ Found ${this.pattern} packages:`);\n for (const pkg of packages) logInfo(` - ${pkg}`);\n\n if (packages.size === 0)\n return logSuccess(`โœ… No ${this.pattern} packages found.`);\n\n // Step 2: Update packages in all workspaces recursively\n await this.updatePackages(packages);\n\n // Step 3: Deduplicate dependencies\n await this.deduplicate();\n\n // Step 4: Remove old versions from node_modules\n await this.rmOldVersions();\n\n // Step 5: Verify all packages are at the same version\n await this.verifyPackages();\n }\n\n protected async exec(command: string): Promise<string> {\n console.log(`\\nโ–ถ ${command}`);\n try {\n return (\n await execAsync(command, {\n cwd: workspace().repoRoot,\n encoding: \"utf-8\",\n })\n ).stdout;\n } catch (error) {\n console.error(`Error executing: ${command}`);\n throw error;\n }\n }\n\n protected async getPackages(): Promise<Set<string>> {\n const ws = workspace();\n await ws.read();\n const pkgs = [...ws.packages, ws.rootPackage];\n const packageNames: string[] = (\n await Promise.all(this.filterPackages(pkgs.map((p) => p.content)))\n ).flat();\n\n return new Set<string>(packageNames);\n }\n\n protected filterPackages(wsPackages: PackageJson[]): Promise<string[]>[] {\n return wsPackages.flatMap((wsPackage) => this.filterPackage(wsPackage));\n }\n\n protected filterPackage(wsPackage: PackageJson): Promise<string[]>[] {\n return [\n this.filterPackageDep(wsPackage.dependencies),\n this.filterPackageDep(wsPackage.devDependencies),\n ];\n }\n\n protected async filterPackageDep(\n deps: Record<string, string> | undefined,\n ): Promise<string[]> {\n return Promise.resolve(\n Object.keys(deps ?? []).filter((depName) =>\n micromatch.isMatch(depName, this.pattern),\n ),\n );\n }\n\n protected async updatePackages(packages: Set<string>): Promise<void> {\n logInfo(\"\\n๐Ÿ“ฅ Updating packages across all workspaces...\");\n const packageList = Array.from(packages).join(\" \");\n await this.exec(`pnpm update -r --latest ${packageList}`);\n }\n\n protected async deduplicate(): Promise<void> {\n logInfo(\"\\n๐Ÿ”ง Deduplicating dependencies...\");\n await this.exec(\"pnpm dedupe\");\n }\n\n protected async rmOldVersions(): Promise<void> {\n logInfo(\"\\n๐Ÿงน Checking for old versions...\");\n const oldVersions = await this.exec(\n `find node_modules/.pnpm -type d -name \"${this.patternWoSlash}\" -depth 1 2>/dev/null || true`,\n );\n const versionDirs = oldVersions.trim().split(\"\\n\").filter(Boolean);\n\n // Group by package name to identify duplicates\n const packageVersions = new Map<\n string,\n { versions: string[]; dirs: string[] }\n >();\n for (const dir of versionDirs) {\n const match = dir.match(/\\/(@?[a-z-+]+)@(.+)$/);\n if (!match) continue;\n const [, pkgName, version] = match;\n if (!micromatch.isMatch(pkgName, this.patternWoSlash)) continue;\n const key = pkgName.replace(/\\+/g, \"/\");\n if (!packageVersions.has(key))\n packageVersions.set(key, { versions: [], dirs: [] });\n const entry = packageVersions.get(key)!;\n entry.versions.push(version.split(\"_\")[0]); // Remove peer dep suffixes\n entry.dirs.push(dir);\n }\n\n // Collect only directories for packages that have duplicates\n const dirsToRemove: string[] = [];\n for (const [pkg, { versions, dirs }] of packageVersions) {\n const uniqueVersions = [...new Set(versions)];\n if (uniqueVersions.length <= 1) continue;\n logInfo(\n `โš ๏ธ Multiple versions found for ${pkg}:`,\n uniqueVersions.join(\", \"),\n );\n dirsToRemove.push(...dirs);\n }\n\n if (dirsToRemove.length > 0) {\n logInfo(\"\\n๐Ÿ”จ Removing duplicate version directories...\");\n logInfo(\" This ensures TypeScript loads the correct types.\");\n // Remove only the specific duplicate directories, not all of node_modules\n await Promise.all(\n dirsToRemove.map((dir) => this.exec(`rm -rf '${dir}'`)),\n );\n // Fast reinstall โ€” only needs to recreate symlinks for removed packages\n await this.exec(\"pnpm install\");\n }\n }\n\n protected async verifyPackages(): Promise<void> {\n logSuccess(\"\\nโœ… Verifying package versions...\");\n const listOutput = await this.exec(\n `pnpm list ${this.pattern} --depth=0 -r --json`,\n );\n const workspaces = JSON.parse(listOutput);\n\n const versionMap = new Map<string, Map<string, string>>();\n\n for (const workspace of workspaces) {\n const deps = workspace.dependencies ?? {};\n for (const [pkg, info] of Object.entries(deps)) {\n if (micromatch.isMatch(pkg, this.pattern)) {\n if (!versionMap.has(pkg)) versionMap.set(pkg, new Map());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n versionMap.get(pkg)!.set(workspace.name, (info as any).version);\n }\n }\n }\n\n let allConsistent = true;\n for (const [pkg, versions] of versionMap) {\n const uniqueVersions = new Set(versions.values());\n if (uniqueVersions.size <= 1) {\n logSuccess(`โœ… ${pkg}: ${[...uniqueVersions][0]}`);\n continue;\n }\n\n logInfo(`โŒ Inconsistent versions for ${pkg}:`);\n for (const [workspace, version] of versions)\n logInfo(` - ${workspace}: ${version}`);\n\n allConsistent = false;\n }\n\n if (!allConsistent) {\n console.error(\n \"\\nโŒ Version inconsistencies detected! Please review and fix manually.\",\n );\n process.exit(1);\n }\n\n logInfo(`\\n๐ŸŽ‰ All ${this.pattern} packages updated successfully!`);\n logInfo(\n \"\\n๐Ÿ’ก Tip: Restart your TypeScript server in VS Code to pick up the new types.\",\n );\n logInfo(' - Cmd+Shift+P โ†’ \"TypeScript: Restart TS Server\"');\n }\n}\n"]}
1
+ {"version":3,"file":"UpdatePackages.js","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n PackageJson,\n UpdatePackagesParams,\n} from \"../types/types.package.js\";\nimport { logInfo, logSuccess } from \"../logger/Logger.js\";\nimport { execAsync } from \"../common/common.fs.js\";\nimport micromatch from \"micromatch\";\nimport { initWorkspace, workspace } from \"../workspace/Workspace.js\";\n\n/**\n * Initializes the workspace and runs the package-update workflow.\n *\n * @remarks\n * This is a convenience entry point that constructs an {@link UpdatePackages} instance\n * and immediately invokes its {@link UpdatePackages.run} method.\n *\n * @param params - Configuration for the update, including the repo root and a glob pattern to select packages.\n * @returns A promise that resolves when all matching packages have been updated and verified.\n */\nexport const runUpdatePackages = async (params: UpdatePackagesParams) => {\n initWorkspace(params.repoRoot);\n // in sequence to avoid locks\n for (const pat of params.pattern) await new UpdatePackages(pat).run();\n};\n\n/**\n * Bulk-updates dependencies matching a glob pattern across all workspace packages.\n *\n * @remarks\n * The update pipeline performs five sequential steps:\n * 1. Discover matching dependencies across every workspace package.\n * 2. Run `pnpm update -r --latest` for the matched packages.\n * 3. Deduplicate the dependency tree with `pnpm dedupe`.\n * 4. Remove stale duplicate versions from `node_modules/.pnpm`.\n * 5. Verify that all workspaces converge on the same version for each package.\n */\nexport class UpdatePackages {\n protected patternWoSlash: string;\n\n /**\n * Creates a new UpdatePackages instance.\n *\n * @param pattern - A glob pattern used to match dependency names (e.g. `\"@angular/*\"`).\n */\n public constructor(protected readonly pattern: string) {\n this.patternWoSlash = pattern.replaceAll(\"/\", \"+\");\n }\n\n /**\n * Executes the full package-update pipeline.\n *\n * @remarks\n * Discovers matching packages, updates them, deduplicates, cleans old versions,\n * and verifies consistency. Exits the process with code 1 if version\n * inconsistencies are detected after the update.\n *\n * @returns A promise that resolves when the pipeline completes successfully.\n */\n public async run(): Promise<void> {\n logInfo(`๐Ÿš€ Starting ${this.pattern} packages update process...\\n`);\n\n // Step 1: Find all packages\n const packages = await this.getPackages();\n logInfo(`๐Ÿ“ฆ Found ${this.pattern} packages:`);\n for (const pkg of packages) logInfo(` - ${pkg}`);\n\n if (packages.size === 0)\n return logSuccess(`โœ… No ${this.pattern} packages found.`);\n\n // Step 2: Update packages in all workspaces recursively\n await this.updatePackages(packages);\n\n // Step 3: Deduplicate dependencies\n await this.deduplicate();\n\n // Step 4: Remove old versions from node_modules\n await this.rmOldVersions();\n\n // Step 5: Verify all packages are at the same version\n await this.verifyPackages();\n }\n\n protected async exec(command: string): Promise<string> {\n console.log(`\\nโ–ถ ${command}`);\n try {\n return (\n await execAsync(command, {\n cwd: workspace().repoRoot,\n encoding: \"utf-8\",\n })\n ).stdout;\n } catch (error) {\n console.error(`Error executing: ${command}`);\n throw error;\n }\n }\n\n protected async getPackages(): Promise<Set<string>> {\n const ws = workspace();\n await ws.read();\n const pkgs = [...ws.packages, ws.rootPackage];\n const packageNames: string[] = (\n await Promise.all(this.filterPackages(pkgs.map((p) => p.content)))\n ).flat();\n\n return new Set<string>(packageNames);\n }\n\n protected filterPackages(wsPackages: PackageJson[]): Promise<string[]>[] {\n return wsPackages.flatMap((wsPackage) => this.filterPackage(wsPackage));\n }\n\n protected filterPackage(wsPackage: PackageJson): Promise<string[]>[] {\n return [\n this.filterPackageDep(wsPackage.dependencies),\n this.filterPackageDep(wsPackage.devDependencies),\n ];\n }\n\n protected async filterPackageDep(\n deps: Record<string, string> | undefined,\n ): Promise<string[]> {\n return Promise.resolve(\n Object.keys(deps ?? []).filter((depName) =>\n micromatch.isMatch(depName, this.pattern),\n ),\n );\n }\n\n protected async updatePackages(packages: Set<string>): Promise<void> {\n logInfo(\"\\n๐Ÿ“ฅ Updating packages across all workspaces...\");\n const packageList = Array.from(packages).join(\" \");\n await this.exec(`pnpm update -r --latest ${packageList}`);\n }\n\n protected async deduplicate(): Promise<void> {\n logInfo(\"\\n๐Ÿ”ง Deduplicating dependencies...\");\n await this.exec(\"pnpm dedupe\");\n }\n\n protected async rmOldVersions(): Promise<void> {\n logInfo(\"\\n๐Ÿงน Checking for old versions...\");\n const oldVersions = await this.exec(\n `find node_modules/.pnpm -type d -name \"${this.patternWoSlash}\" -depth 1 2>/dev/null || true`,\n );\n const versionDirs = oldVersions.trim().split(\"\\n\").filter(Boolean);\n\n // Group by package name to identify duplicates\n const packageVersions = new Map<\n string,\n { versions: string[]; dirs: string[] }\n >();\n for (const dir of versionDirs) {\n const match = dir.match(/\\/(@?[a-z-+]+)@(.+)$/);\n if (!match) continue;\n const [, pkgName, version] = match;\n if (!micromatch.isMatch(pkgName, this.patternWoSlash)) continue;\n const key = pkgName.replace(/\\+/g, \"/\");\n if (!packageVersions.has(key))\n packageVersions.set(key, { versions: [], dirs: [] });\n const entry = packageVersions.get(key)!;\n entry.versions.push(version.split(\"_\")[0]); // Remove peer dep suffixes\n entry.dirs.push(dir);\n }\n\n // Collect only directories for packages that have duplicates\n const dirsToRemove: string[] = [];\n for (const [pkg, { versions, dirs }] of packageVersions) {\n const uniqueVersions = [...new Set(versions)];\n if (uniqueVersions.length <= 1) continue;\n logInfo(\n `โš ๏ธ Multiple versions found for ${pkg}:`,\n uniqueVersions.join(\", \"),\n );\n dirsToRemove.push(...dirs);\n }\n\n if (dirsToRemove.length > 0) {\n logInfo(\"\\n๐Ÿ”จ Removing duplicate version directories...\");\n logInfo(\" This ensures TypeScript loads the correct types.\");\n // Remove only the specific duplicate directories, not all of node_modules\n await Promise.all(\n dirsToRemove.map((dir) => this.exec(`rm -rf '${dir}'`)),\n );\n // Fast reinstall โ€” only needs to recreate symlinks for removed packages\n await this.exec(\"pnpm install\");\n }\n }\n\n protected async verifyPackages(): Promise<void> {\n logSuccess(\"\\nโœ… Verifying package versions...\");\n const listOutput = await this.exec(\n `pnpm list ${this.pattern} --depth=0 -r --json`,\n );\n const workspaces = JSON.parse(listOutput);\n\n const versionMap = new Map<string, Map<string, string>>();\n\n for (const workspace of workspaces) {\n const deps = workspace.dependencies ?? {};\n for (const [pkg, info] of Object.entries(deps)) {\n if (micromatch.isMatch(pkg, this.pattern)) {\n if (!versionMap.has(pkg)) versionMap.set(pkg, new Map());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n versionMap.get(pkg)!.set(workspace.name, (info as any).version);\n }\n }\n }\n\n let allConsistent = true;\n for (const [pkg, versions] of versionMap) {\n const uniqueVersions = new Set(versions.values());\n if (uniqueVersions.size <= 1) {\n logSuccess(`โœ… ${pkg}: ${[...uniqueVersions][0]}`);\n continue;\n }\n\n logInfo(`โŒ Inconsistent versions for ${pkg}:`);\n for (const [workspace, version] of versions)\n logInfo(` - ${workspace}: ${version}`);\n\n allConsistent = false;\n }\n\n if (!allConsistent) {\n console.error(\n \"\\nโŒ Version inconsistencies detected! Please review and fix manually.\",\n );\n process.exit(1);\n }\n\n logInfo(`\\n๐ŸŽ‰ All ${this.pattern} packages updated successfully!`);\n logInfo(\n \"\\n๐Ÿ’ก Tip: Restart your TypeScript server in VS Code to pick up the new types.\",\n );\n logInfo(' - Cmd+Shift+P โ†’ \"TypeScript: Restart TS Server\"');\n }\n}\n"]}
@@ -8,5 +8,6 @@ import type { RunRepoRootParams } from "./types.run.js";
8
8
  */
9
9
  export interface NpmPublisherParams extends RunRepoRootParams {
10
10
  useCorepack?: boolean;
11
+ token?: string;
11
12
  }
12
13
  //# sourceMappingURL=types.npm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.npm.d.ts","sourceRoot":"","sources":["../../src/types/types.npm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"types.npm.d.ts","sourceRoot":"","sources":["../../src/types/types.npm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.npm.js","sourceRoot":"","sources":["../../src/types/types.npm.ts"],"names":[],"mappings":"","sourcesContent":["import type { RunRepoRootParams } from \"./types.run.js\";\n\n/**\n * Parameters for the npm package publisher.\n *\n * @remarks\n * Currently an alias for {@link RunRepoRootParams}; extend this type\n * to add publisher-specific options in the future.\n */\nexport interface NpmPublisherParams extends RunRepoRootParams {\n useCorepack?: boolean;\n}\n"]}
1
+ {"version":3,"file":"types.npm.js","sourceRoot":"","sources":["../../src/types/types.npm.ts"],"names":[],"mappings":"","sourcesContent":["import type { RunRepoRootParams } from \"./types.run.js\";\n\n/**\n * Parameters for the npm package publisher.\n *\n * @remarks\n * Currently an alias for {@link RunRepoRootParams}; extend this type\n * to add publisher-specific options in the future.\n */\nexport interface NpmPublisherParams extends RunRepoRootParams {\n useCorepack?: boolean;\n token?: string;\n}\n"]}
@@ -80,7 +80,7 @@ export interface SyncPkgVersionParams extends RunRepoRootParams {
80
80
  */
81
81
  export interface UpdatePackagesParams extends RunRepoRootParams {
82
82
  /** Glob pattern used to select packages to update. */
83
- pattern: string;
83
+ pattern: string[];
84
84
  }
85
85
  export interface LinesOfCodeParams extends RunRepoRootParams {
86
86
  top: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.package.d.ts","sourceRoot":"","sources":["../../src/types/types.package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,uCAAuC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AASD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,OAAO,EAAE,GAAG,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,GAAG,CAAC;IACX,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,mFAAmF;IACnF,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"types.package.d.ts","sourceRoot":"","sources":["../../src/types/types.package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,uCAAuC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AASD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,OAAO,EAAE,GAAG,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,GAAG,CAAC;IACX,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,mFAAmF;IACnF,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.package.js","sourceRoot":"","sources":["../../src/types/types.package.ts"],"names":[],"mappings":"","sourcesContent":["import type { Pkg } from \"../pkg/Pkg.js\";\nimport type { RunRepoRootParams } from \"./types.run.js\";\n\n/**\n * A parsed semantic version split into its numeric components.\n */\nexport interface PackageVersion {\n /** The major version number. */\n major: number;\n /** The minor version number. */\n minor: number;\n /** The patch version number. */\n patch: number;\n /** An optional prefix such as `\"^\"` or `\"~\"`, or `null` if none. */\n prefix: string | null;\n}\n\n/**\n * A minimal representation of a `package.json` file.\n *\n * @remarks\n * Contains the most commonly accessed fields and allows arbitrary\n * additional fields via the index signature.\n */\nexport interface PackageJson {\n /** The package name as published to npm. */\n name: string;\n /** Whether the package is marked as private (not publishable). */\n private?: boolean;\n /** The current version string (semver). */\n version: string;\n /** The `exports` field mapping entry points to file paths. */\n exports?: Record<string, string>;\n /** Runtime dependency map (`name โ†’ version range`). */\n dependencies?: Record<string, string>;\n /** Development dependency map (`name โ†’ version range`). */\n devDependencies?: Record<string, string>;\n /** Peer dependency map (`name โ†’ version range`). */\n peerDependencies?: Record<string, string>;\n /** Any other `package.json` fields. */\n [key: string]: unknown;\n}\n\n// export interface PackageEntry {\n// jsonPath: string;\n// repoPath: string | null;\n// content: PackageJson;\n// modified: boolean;\n// }\n\n/**\n * Describes a dependency mapping between two packages in a workspace.\n */\nexport interface MapEntry {\n /** The package that declares the dependency. */\n fromPkg: Pkg;\n /** The package that is depended upon. */\n toPkg: Pkg;\n /** The relative file-system path from the source to the target package. */\n relPath: string;\n}\n\n/**\n * Flags indicating which semver component to bump.\n *\n * @remarks\n * At most one flag should be `true`. If none are set, the default\n * bump behavior of the consumer applies.\n */\nexport interface BumpParams {\n /** Bump the major version. */\n major?: boolean;\n /** Bump the minor version. */\n minor?: boolean;\n /** Bump the patch version. */\n patch?: boolean;\n}\n\n/**\n * Parameters for synchronizing package versions across a workspace.\n */\nexport interface SyncPkgVersionParams extends RunRepoRootParams {\n /** Optional bump configuration controlling which semver component to increment. */\n bump?: BumpParams;\n /** When `true`, skip version bumping entirely. */\n noBump?: boolean;\n /** When `true`, skip creating a git tag after the version sync. */\n noTag?: boolean;\n}\n\n/**\n * Parameters for bulk-updating packages that match a pattern.\n */\nexport interface UpdatePackagesParams extends RunRepoRootParams {\n /** Glob pattern used to select packages to update. */\n pattern: string;\n}\n\nexport interface LinesOfCodeParams extends RunRepoRootParams {\n top: number;\n}\n"]}
1
+ {"version":3,"file":"types.package.js","sourceRoot":"","sources":["../../src/types/types.package.ts"],"names":[],"mappings":"","sourcesContent":["import type { Pkg } from \"../pkg/Pkg.js\";\nimport type { RunRepoRootParams } from \"./types.run.js\";\n\n/**\n * A parsed semantic version split into its numeric components.\n */\nexport interface PackageVersion {\n /** The major version number. */\n major: number;\n /** The minor version number. */\n minor: number;\n /** The patch version number. */\n patch: number;\n /** An optional prefix such as `\"^\"` or `\"~\"`, or `null` if none. */\n prefix: string | null;\n}\n\n/**\n * A minimal representation of a `package.json` file.\n *\n * @remarks\n * Contains the most commonly accessed fields and allows arbitrary\n * additional fields via the index signature.\n */\nexport interface PackageJson {\n /** The package name as published to npm. */\n name: string;\n /** Whether the package is marked as private (not publishable). */\n private?: boolean;\n /** The current version string (semver). */\n version: string;\n /** The `exports` field mapping entry points to file paths. */\n exports?: Record<string, string>;\n /** Runtime dependency map (`name โ†’ version range`). */\n dependencies?: Record<string, string>;\n /** Development dependency map (`name โ†’ version range`). */\n devDependencies?: Record<string, string>;\n /** Peer dependency map (`name โ†’ version range`). */\n peerDependencies?: Record<string, string>;\n /** Any other `package.json` fields. */\n [key: string]: unknown;\n}\n\n// export interface PackageEntry {\n// jsonPath: string;\n// repoPath: string | null;\n// content: PackageJson;\n// modified: boolean;\n// }\n\n/**\n * Describes a dependency mapping between two packages in a workspace.\n */\nexport interface MapEntry {\n /** The package that declares the dependency. */\n fromPkg: Pkg;\n /** The package that is depended upon. */\n toPkg: Pkg;\n /** The relative file-system path from the source to the target package. */\n relPath: string;\n}\n\n/**\n * Flags indicating which semver component to bump.\n *\n * @remarks\n * At most one flag should be `true`. If none are set, the default\n * bump behavior of the consumer applies.\n */\nexport interface BumpParams {\n /** Bump the major version. */\n major?: boolean;\n /** Bump the minor version. */\n minor?: boolean;\n /** Bump the patch version. */\n patch?: boolean;\n}\n\n/**\n * Parameters for synchronizing package versions across a workspace.\n */\nexport interface SyncPkgVersionParams extends RunRepoRootParams {\n /** Optional bump configuration controlling which semver component to increment. */\n bump?: BumpParams;\n /** When `true`, skip version bumping entirely. */\n noBump?: boolean;\n /** When `true`, skip creating a git tag after the version sync. */\n noTag?: boolean;\n}\n\n/**\n * Parameters for bulk-updating packages that match a pattern.\n */\nexport interface UpdatePackagesParams extends RunRepoRootParams {\n /** Glob pattern used to select packages to update. */\n pattern: string[];\n}\n\nexport interface LinesOfCodeParams extends RunRepoRootParams {\n top: number;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/build-api",
3
- "version": "0.3.16",
3
+ "version": "0.3.18",
4
4
  "description": "Build utilities API",
5
5
  "type": "module",
6
6
  "author": "MXPicture",