@mxpicture/build-api 0.2.53 โ†’ 0.2.54

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.
@@ -1 +1 @@
1
- {"version":3,"file":"UpdatePackages.d.ts","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAM9E,eAAO,MAAM,iBAAiB,GAAU,QAAQ,oBAAoB,kBAGnE,CAAC;AAEF,qBAAa,cAAc;IAGN,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM;IAFrD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEK,OAAO,EAAE,MAAM;IAIxC,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;cA0C9B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAgDhD"}
1
+ {"version":3,"file":"UpdatePackages.d.ts","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAM9E,eAAO,MAAM,iBAAiB,GAAU,QAAQ,oBAAoB,kBAGnE,CAAC;AAEF,qBAAa,cAAc;IAGN,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM;IAFrD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEK,OAAO,EAAE,MAAM;IAIxC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;cAyBjB,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;cA0C9B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAgDhD"}
@@ -26,6 +26,8 @@ export class UpdatePackages {
26
26
  await this.updatePackages(packages);
27
27
  // Step 3: Deduplicate dependencies
28
28
  await this.deduplicate();
29
+ // todo remove after testing
30
+ await this.exec("pnpm install");
29
31
  // Step 4: Remove old versions from node_modules
30
32
  await this.rmOldVersions();
31
33
  // Step 5: Verify all packages are at the same version
@@ -1 +1 @@
1
- {"version":3,"file":"UpdatePackages.js","sourceRoot":"","sources":["../../src/pkg/UpdatePackages.ts"],"names":[],"mappings":"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","sourcesContent":["import { 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\nexport const runUpdatePackages = async (params: UpdatePackagesParams) => {\n initWorkspace(params.repoRoot);\n return new UpdatePackages(params.pattern).run();\n};\n\nexport class UpdatePackages {\n protected patternWoSlash: string;\n\n public constructor(protected readonly pattern: string) {\n this.patternWoSlash = pattern.replaceAll(\"/\", \"+\");\n }\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<string, string[]>();\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)) packageVersions.set(key, []);\n packageVersions.get(key)!.push(version.split(\"_\")[0]); // Remove peer dep suffixes\n }\n\n // Check for duplicates\n let hasDuplicates = false;\n for (const [pkg, versions] 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 hasDuplicates = true;\n }\n\n if (hasDuplicates) {\n logInfo(\"\\n๐Ÿ”จ Reinstalling to remove duplicate versions...\");\n logInfo(\" This ensures TypeScript loads the correct types.\");\n await this.exec(\"mv node_modules node_modules_tmp\");\n await Promise.all([\n this.exec(\"rm -rf node_modules_tmp\"),\n this.exec(\"pnpm install\"),\n ]);\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 { 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\nexport const runUpdatePackages = async (params: UpdatePackagesParams) => {\n initWorkspace(params.repoRoot);\n return new UpdatePackages(params.pattern).run();\n};\n\nexport class UpdatePackages {\n protected patternWoSlash: string;\n\n public constructor(protected readonly pattern: string) {\n this.patternWoSlash = pattern.replaceAll(\"/\", \"+\");\n }\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 // todo remove after testing\n await this.exec(\"pnpm install\");\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<string, string[]>();\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)) packageVersions.set(key, []);\n packageVersions.get(key)!.push(version.split(\"_\")[0]); // Remove peer dep suffixes\n }\n\n // Check for duplicates\n let hasDuplicates = false;\n for (const [pkg, versions] 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 hasDuplicates = true;\n }\n\n if (hasDuplicates) {\n logInfo(\"\\n๐Ÿ”จ Reinstalling to remove duplicate versions...\");\n logInfo(\" This ensures TypeScript loads the correct types.\");\n await this.exec(\"mv node_modules node_modules_tmp\");\n await Promise.all([\n this.exec(\"rm -rf node_modules_tmp\"),\n this.exec(\"pnpm install\"),\n ]);\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/build-api",
3
- "version": "0.2.53",
3
+ "version": "0.2.54",
4
4
  "description": "Build utilities API",
5
5
  "type": "module",
6
6
  "author": "MXPicture",