skuba 14.0.0-rfc-pnpm-config-skuba-20260106121557 → 14.0.0-rfc-pnpm-config-skuba-20260106125558

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.
@@ -104,11 +104,11 @@ ${packageJson.packageJson.minimumReleaseAgeExcludeOverload.map((item) => ` - ${
104
104
  result: "apply"
105
105
  };
106
106
  }
107
- const stringifiedPackageJson = packageJson && modifiedPnpmWorkspace.includes("minimumReleaseAgeExclude") ? `${JSON.stringify(packageJson.packageJson, null, 2)}
108
- ` : null;
107
+ const stringifiedPackageJson = packageJson && `${JSON.stringify(packageJson.packageJson, null, 2)}
108
+ `;
109
109
  await Promise.all([
110
110
  import_fs_extra.default.promises.writeFile("pnpm-workspace.yaml", modifiedPnpmWorkspace, "utf8"),
111
- stringifiedPackageJson && packageJson && import_fs_extra.default.promises.writeFile(packageJson.path, stringifiedPackageJson, "utf8")
111
+ stringifiedPackageJson && import_fs_extra.default.promises.writeFile(packageJson.path, stringifiedPackageJson, "utf8")
112
112
  ]);
113
113
  const pnpmPluginSkubaVersion = skubaPackageJson.devDependencies?.["pnpm-plugin-skuba"] || "latest";
114
114
  await (0, import_exec.exec)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/13.1.1/migrateToPnpmConfig.ts"],
4
- "sourcesContent": ["import { inspect } from 'util';\n\nimport fs from 'fs-extra';\nimport { SemVer, lt } from 'semver';\n\nimport { exec } from '../../../../../../utils/exec.js';\nimport { log } from '../../../../../../utils/logging.js';\nimport {\n getConsumerManifest,\n getSkubaManifest,\n} from '../../../../../../utils/manifest.js';\nimport type { PatchFunction, PatchReturnType } from '../../index.js';\n\nexport const migrateToPnpmConfig: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n let pnpmWorkSpaceFile: string;\n try {\n pnpmWorkSpaceFile = await fs.promises.readFile(\n 'pnpm-workspace.yaml',\n 'utf8',\n );\n } catch {\n return {\n result: 'skip',\n reason: 'no pnpm-workspace.yaml found',\n };\n }\n\n // Remove entire # managed by skuba comments block\n\n const startingIndexText = '# managed by skuba';\n const endOfSectionIndexText = '# end managed by skuba\\n';\n\n const startingIndex = pnpmWorkSpaceFile.indexOf(startingIndexText);\n const endOfSectionIndex = pnpmWorkSpaceFile.indexOf(endOfSectionIndexText);\n\n if (startingIndex === -1 || endOfSectionIndex === -1) {\n return {\n result: 'skip',\n reason: 'no managed by skuba comment block found',\n };\n }\n\n const endSection = pnpmWorkSpaceFile.slice(\n endOfSectionIndex + endOfSectionIndexText.length,\n );\n\n let modifiedPnpmWorkspace =\n pnpmWorkSpaceFile.slice(0, startingIndex) + endSection;\n\n // Check if consumers have extended the publicHoistPattern section\n const brokenYamlPatternRegex = /^ -\\s+[^#]/m;\n if (brokenYamlPatternRegex.exec(endSection)) {\n modifiedPnpmWorkspace = modifiedPnpmWorkspace.replace(\n endSection,\n `publicHoistPattern:\\n${endSection}`,\n );\n }\n\n // Migrate minimumReleaseAgeExcludeOverload\n const [packageJson, skubaPackageJson] = await Promise.all([\n getConsumerManifest(),\n getSkubaManifest(),\n ]);\n\n if (\n packageJson?.packageJson.minimumReleaseAgeExcludeOverload &&\n Array.isArray(packageJson.packageJson.minimumReleaseAgeExcludeOverload)\n ) {\n modifiedPnpmWorkspace += `\\nminimumReleaseAgeExclude:\\n${packageJson.packageJson.minimumReleaseAgeExcludeOverload.map((item) => ` - ${item}`).join('\\n')}\\n`;\n delete packageJson.packageJson.minimumReleaseAgeExcludeOverload;\n }\n\n if (typeof packageJson?.packageJson.packageManager === 'string') {\n const version = packageJson.packageJson.packageManager\n .split('@')?.[1] // strip name\n ?.split('+')?.[0]; // strip sha\n\n // strip sha\n const cleanVersion = version?.split('+')?.[0];\n\n if (\n typeof cleanVersion === 'string' &&\n lt(new SemVer(cleanVersion), new SemVer('10.13.0'))\n ) {\n packageJson.packageJson.packageManager = 'pnpm@10.13.0';\n }\n }\n\n if (modifiedPnpmWorkspace === pnpmWorkSpaceFile) {\n return {\n result: 'skip',\n reason: 'no changes needed to pnpm-workspace.yaml',\n };\n }\n\n if (mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n const stringifiedPackageJson =\n packageJson && modifiedPnpmWorkspace.includes('minimumReleaseAgeExclude')\n ? `${JSON.stringify(packageJson.packageJson, null, 2)}\\n`\n : null;\n\n await Promise.all([\n fs.promises.writeFile('pnpm-workspace.yaml', modifiedPnpmWorkspace, 'utf8'),\n stringifiedPackageJson &&\n packageJson &&\n fs.promises.writeFile(packageJson.path, stringifiedPackageJson, 'utf8'),\n ]);\n\n const pnpmPluginSkubaVersion =\n skubaPackageJson.devDependencies?.['pnpm-plugin-skuba'] || 'latest';\n\n await exec(\n 'pnpm',\n 'add',\n '--config',\n `pnpm-plugin-skuba@${pnpmPluginSkubaVersion}`,\n );\n\n await exec('pnpm', 'install', '--offline');\n\n return {\n result: 'apply',\n };\n};\n\nexport const tryMigrateToPnpmConfig: PatchFunction = async (config) => {\n try {\n return await migrateToPnpmConfig(config);\n } catch (err) {\n log.warn('Failed to migrate to pnpm-plugin-skuba');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { inspect } from 'util';\n\nimport fs from 'fs-extra';\nimport { SemVer, lt } from 'semver';\n\nimport { exec } from '../../../../../../utils/exec.js';\nimport { log } from '../../../../../../utils/logging.js';\nimport {\n getConsumerManifest,\n getSkubaManifest,\n} from '../../../../../../utils/manifest.js';\nimport type { PatchFunction, PatchReturnType } from '../../index.js';\n\nexport const migrateToPnpmConfig: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n let pnpmWorkSpaceFile: string;\n try {\n pnpmWorkSpaceFile = await fs.promises.readFile(\n 'pnpm-workspace.yaml',\n 'utf8',\n );\n } catch {\n return {\n result: 'skip',\n reason: 'no pnpm-workspace.yaml found',\n };\n }\n\n // Remove entire # managed by skuba comments block\n\n const startingIndexText = '# managed by skuba';\n const endOfSectionIndexText = '# end managed by skuba\\n';\n\n const startingIndex = pnpmWorkSpaceFile.indexOf(startingIndexText);\n const endOfSectionIndex = pnpmWorkSpaceFile.indexOf(endOfSectionIndexText);\n\n if (startingIndex === -1 || endOfSectionIndex === -1) {\n return {\n result: 'skip',\n reason: 'no managed by skuba comment block found',\n };\n }\n\n const endSection = pnpmWorkSpaceFile.slice(\n endOfSectionIndex + endOfSectionIndexText.length,\n );\n\n let modifiedPnpmWorkspace =\n pnpmWorkSpaceFile.slice(0, startingIndex) + endSection;\n\n // Check if consumers have extended the publicHoistPattern section\n const brokenYamlPatternRegex = /^ -\\s+[^#]/m;\n if (brokenYamlPatternRegex.exec(endSection)) {\n modifiedPnpmWorkspace = modifiedPnpmWorkspace.replace(\n endSection,\n `publicHoistPattern:\\n${endSection}`,\n );\n }\n\n // Migrate minimumReleaseAgeExcludeOverload\n const [packageJson, skubaPackageJson] = await Promise.all([\n getConsumerManifest(),\n getSkubaManifest(),\n ]);\n\n if (\n packageJson?.packageJson.minimumReleaseAgeExcludeOverload &&\n Array.isArray(packageJson.packageJson.minimumReleaseAgeExcludeOverload)\n ) {\n modifiedPnpmWorkspace += `\\nminimumReleaseAgeExclude:\\n${packageJson.packageJson.minimumReleaseAgeExcludeOverload.map((item) => ` - ${item}`).join('\\n')}\\n`;\n delete packageJson.packageJson.minimumReleaseAgeExcludeOverload;\n }\n\n if (typeof packageJson?.packageJson.packageManager === 'string') {\n const version = packageJson.packageJson.packageManager\n .split('@')?.[1] // strip name\n ?.split('+')?.[0]; // strip sha\n\n // strip sha\n const cleanVersion = version?.split('+')?.[0];\n\n if (\n typeof cleanVersion === 'string' &&\n lt(new SemVer(cleanVersion), new SemVer('10.13.0'))\n ) {\n packageJson.packageJson.packageManager = 'pnpm@10.13.0';\n }\n }\n\n if (modifiedPnpmWorkspace === pnpmWorkSpaceFile) {\n return {\n result: 'skip',\n reason: 'no changes needed to pnpm-workspace.yaml',\n };\n }\n\n if (mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n const stringifiedPackageJson =\n packageJson && `${JSON.stringify(packageJson.packageJson, null, 2)}\\n`;\n\n await Promise.all([\n fs.promises.writeFile('pnpm-workspace.yaml', modifiedPnpmWorkspace, 'utf8'),\n stringifiedPackageJson &&\n fs.promises.writeFile(packageJson.path, stringifiedPackageJson, 'utf8'),\n ]);\n\n const pnpmPluginSkubaVersion =\n skubaPackageJson.devDependencies?.['pnpm-plugin-skuba'] || 'latest';\n\n await exec(\n 'pnpm',\n 'add',\n '--config',\n `pnpm-plugin-skuba@${pnpmPluginSkubaVersion}`,\n );\n\n await exec('pnpm', 'install', '--offline');\n\n return {\n result: 'apply',\n };\n};\n\nexport const tryMigrateToPnpmConfig: PatchFunction = async (config) => {\n try {\n return await migrateToPnpmConfig(config);\n } catch (err) {\n log.warn('Failed to migrate to pnpm-plugin-skuba');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["fs"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skuba",
3
- "version": "14.0.0-rfc-pnpm-config-skuba-20260106121557",
3
+ "version": "14.0.0-rfc-pnpm-config-skuba-20260106125558",
4
4
  "private": false,
5
5
  "description": "SEEK development toolkit for backend applications and packages",
6
6
  "homepage": "https://github.com/seek-oss/skuba#readme",
@@ -102,8 +102,8 @@
102
102
  "tsx": "^4.21.0",
103
103
  "typescript": "~5.9.0",
104
104
  "zod": "^4.0.0",
105
- "@skuba-lib/api": "^2.0.0-rfc-pnpm-config-skuba-20260106121557",
106
- "eslint-config-skuba": "8.0.0-rfc-pnpm-config-skuba-20260106121557"
105
+ "@skuba-lib/api": "^2.0.0-rfc-pnpm-config-skuba-20260106125558",
106
+ "eslint-config-skuba": "8.0.0-rfc-pnpm-config-skuba-20260106125558"
107
107
  },
108
108
  "devDependencies": {
109
109
  "@changesets/cli": "2.29.8",
@@ -19,11 +19,11 @@
19
19
  "test:watch": "skuba test --watch"
20
20
  },
21
21
  "dependencies": {
22
- "skuba-dive": "4.0.0-rfc-pnpm-config-skuba-20260106121557"
22
+ "skuba-dive": "4.0.0-rfc-pnpm-config-skuba-20260106125558"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.13.10",
26
- "skuba": "14.0.0-rfc-pnpm-config-skuba-20260106121557"
26
+ "skuba": "14.0.0-rfc-pnpm-config-skuba-20260106125558"
27
27
  },
28
28
  "packageManager": "pnpm@10.27.0",
29
29
  "engines": {
@@ -24,7 +24,7 @@
24
24
  "@aws-sdk/client-sns": "^3.363.0",
25
25
  "@seek/aws-codedeploy-hooks": "^2.0.0",
26
26
  "@seek/logger": "^11.1.0",
27
- "skuba-dive": "4.0.0-rfc-pnpm-config-skuba-20260106121557",
27
+ "skuba-dive": "4.0.0-rfc-pnpm-config-skuba-20260106125558",
28
28
  "zod": "^4.0.0"
29
29
  },
30
30
  "devDependencies": {
@@ -42,7 +42,7 @@
42
42
  "datadog-lambda-js": "^12.0.0",
43
43
  "dd-trace": "^5.0.0",
44
44
  "pino-pretty": "^13.0.0",
45
- "skuba": "14.0.0-rfc-pnpm-config-skuba-20260106121557"
45
+ "skuba": "14.0.0-rfc-pnpm-config-skuba-20260106125558"
46
46
  },
47
47
  "packageManager": "pnpm@10.27.0",
48
48
  "engines": {