skuba 13.0.0-custom-conditions-exports-20250923003120 → 13.0.0-custom-conditions-exports-20250923011412

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.
@@ -118,8 +118,8 @@ const updatePackageJson = ({
118
118
  customCondition
119
119
  }) => {
120
120
  parsed.imports ??= {};
121
- parsed.imports[customCondition] ??= {
122
- types: "./src/*",
121
+ parsed.imports["#src/*"] ??= {
122
+ [customCondition]: "./src/*",
123
123
  default: "./lib/*"
124
124
  };
125
125
  return {
@@ -285,12 +285,11 @@ const tryConfigureTsConfigForESM = async ({
285
285
  if (!hasRootTsconfigChanged && !hasPackageJsonsChanged && !hasRelativeTsconfigBuildsChanged && !hasJestConfigsChanged) {
286
286
  return { result: "skip", reason: "no changes required" };
287
287
  }
288
- await Promise.all(
288
+ const jsonFilePromises = Promise.all(
289
289
  [
290
290
  ...updatedTsconfigFiles,
291
291
  ...parsedTsconfigBuildFiles,
292
- ...parsedPackageJsonFiles,
293
- ...updatedJestConfigFiles
292
+ ...parsedPackageJsonFiles
294
293
  ].map(async ({ file, parsed, original }) => {
295
294
  if (JSON.stringify(original) === JSON.stringify(parsed)) {
296
295
  return;
@@ -299,6 +298,15 @@ const tryConfigureTsConfigForESM = async ({
299
298
  await import_fs_extra.default.promises.writeFile(file, updatedContents);
300
299
  })
301
300
  );
301
+ const otherFilePromises = Promise.all(
302
+ updatedJestConfigFiles.map(async ({ file, parsed, original }) => {
303
+ if (original === parsed) {
304
+ return;
305
+ }
306
+ await import_fs_extra.default.promises.writeFile(file, parsed);
307
+ })
308
+ );
309
+ await Promise.all([jsonFilePromises, otherFilePromises]);
302
310
  return { result: "apply" };
303
311
  };
304
312
  const configureTsConfigForESM = async (config) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/12.2.0/configureTsConfigForESM.ts"],
4
- "sourcesContent": ["import path from 'path';\nimport { inspect } from 'util';\n\nimport { glob } from 'fast-glob';\nimport fs from 'fs-extra';\nimport * as z from 'zod';\n\nimport { Git } from '../../../../../../index.js';\nimport { log } from '../../../../../../utils/logging.js';\nimport type { PatchFunction, PatchReturnType } from '../../index.js';\n\nconst packageJsonSchema = z.looseObject({\n imports: z.record(z.string(), z.record(z.string(), z.string())).optional(),\n});\n\ntype PackageJson = z.infer<typeof packageJsonSchema>;\n\nconst tsConfigSchema = z.looseObject({\n compilerOptions: z\n .looseObject({\n customConditions: z.array(z.string()).optional(),\n rootDir: z.string().optional(),\n paths: z\n .record(z.string(), z.union([z.array(z.string()), z.null()]))\n .optional(),\n })\n .optional(),\n});\n\ntype TsConfig = z.infer<typeof tsConfigSchema>;\n\nconst fetchFiles = async (patterns: string[]) => {\n const files = await glob(patterns, {\n ignore: ['**/.git', '**/node_modules'],\n });\n\n return Promise.all(\n files.map(async (file) => {\n const contents = await fs.promises.readFile(file, 'utf8');\n\n return {\n file,\n contents,\n };\n }),\n );\n};\n\nexport const addJestModuleNameMapper = (\n contents: string,\n srcPaths: string[],\n) => {\n const moduleNameRegex = /moduleNameMapper:\\s*\\{([\\s\\S]*?)\\}/;\n const match = moduleNameRegex.exec(contents);\n\n const srcPathArray = srcPaths.map((subfolderPath) =>\n subfolderPath === '.' || subfolderPath === './'\n ? '<rootDir>/src/$1'\n : `<rootDir>/${subfolderPath}/src/$1`,\n );\n\n const srcModuleMappers = JSON.stringify({\n '^#src/(.*)\\\\.js$': srcPathArray,\n '^#src/(.*)$': srcPathArray,\n });\n\n // strip the surrounding { } from the JSON stringify result\n const newModuleNameMapper = srcModuleMappers\n .replace(/^{/, '')\n .replace(/}$/, '');\n\n if (match?.[1] !== undefined) {\n // insert srcModuleMappers into existing moduleNameMapper\n const existingModuleMappers = match[1];\n\n const newContents = `${contents.slice(\n 0,\n match.index,\n )}moduleNameMapper: {${existingModuleMappers},${newModuleNameMapper}}${contents.slice(\n match.index + match[0].length,\n )}`;\n\n return newContents;\n }\n\n // Add moduleNameMapper if not present\n\n const insertionPointRegex = /(\\b(jest|export\\s+default)\\b[\\s\\S]*?{)/;\n const insertionMatch = insertionPointRegex.exec(contents);\n\n if (insertionMatch?.[1] !== undefined) {\n const insertionIndex = insertionMatch.index + insertionMatch[0].length;\n const moduleNameMapperString = `\\n moduleNameMapper: {${newModuleNameMapper}},`;\n\n const newContents =\n contents.slice(0, insertionIndex) +\n moduleNameMapperString +\n contents.slice(insertionIndex);\n\n return newContents;\n }\n\n log.warn(\n 'Could not find a suitable place to insert moduleNameMapper in jest config',\n );\n return contents;\n};\n\nexport const parsePackageJson = (\n contents: string,\n): {\n original: PackageJson;\n parsed: PackageJson;\n} | null => {\n try {\n const parsedJson: unknown = JSON.parse(contents);\n return {\n original: parsedJson as PackageJson,\n parsed: packageJsonSchema.parse(parsedJson),\n };\n } catch (error) {\n log.warn(`Failed to parse package.json as JSON: ${String(error)}`);\n return null;\n }\n};\n\nexport const updatePackageJson = ({\n parsed,\n customCondition,\n}: {\n parsed: PackageJson;\n customCondition: string;\n}) => {\n parsed.imports ??= {};\n parsed.imports[customCondition] ??= {\n types: './src/*',\n default: './lib/*',\n };\n\n return {\n parsed,\n };\n};\n\nconst parseTsconfig = (\n contents: string,\n): {\n original: TsConfig;\n parsed: TsConfig;\n} | null => {\n try {\n const parsedJson: unknown = JSON.parse(contents);\n const tsconfig = tsConfigSchema.parse(parsedJson);\n\n return {\n original: parsedJson as TsConfig,\n parsed: tsconfig,\n };\n } catch (error) {\n log.warn(`Failed to parse root tsconfig.json as JSON: ${String(error)}`);\n return null;\n }\n};\n\nconst updateTsConfig = ({\n parsed,\n customCondition,\n file,\n}: {\n parsed: TsConfig;\n customCondition: string;\n file: string;\n}) => {\n if (file === 'tsconfig.json') {\n parsed.compilerOptions ??= {};\n parsed.compilerOptions.customConditions ??= [];\n\n if (!parsed.compilerOptions.customConditions.includes(customCondition)) {\n parsed.compilerOptions.customConditions.push(customCondition);\n }\n }\n\n let srcPaths: string[] = [];\n ['./src/*', 'src/*', 'src'].forEach((key) => {\n if (parsed.compilerOptions?.paths?.[key]) {\n srcPaths = parsed.compilerOptions.paths[key];\n delete parsed.compilerOptions.paths[key];\n }\n });\n\n if (\n parsed.compilerOptions?.paths &&\n Object.keys(parsed.compilerOptions.paths).length === 0\n ) {\n delete parsed.compilerOptions.paths;\n }\n\n return {\n parsed,\n srcPaths,\n };\n};\n\nexport const tryConfigureTsConfigForESM: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n let customCondition: string;\n try {\n const { repo } = await Git.getOwnerAndRepo({ dir: process.cwd() });\n customCondition = `@seek/${repo}/source`;\n } catch {\n return { result: 'skip', reason: 'no repository name found' };\n }\n\n const tsconfigJsonPatterns = ['**/tsconfig.json'];\n const tsconfigBuildJsonPatterns = ['**/tsconfig.build.json'];\n const jestConfigPatterns = ['**/jest.config.ts', '**/jest.config.*.ts'];\n\n const [tsconfigJsonFiles, tsconfigBuildJsonFiles, jestConfigFiles] =\n await Promise.all([\n fetchFiles(tsconfigJsonPatterns),\n fetchFiles(tsconfigBuildJsonPatterns),\n fetchFiles(jestConfigPatterns),\n ]);\n\n const parsedTsconfigFiles = tsconfigJsonFiles.flatMap(\n ({ file, contents }) => {\n const parsed = parseTsconfig(contents);\n return parsed ? [{ file, ...parsed }] : [];\n },\n );\n\n const parsedTsconfigBuildFiles = tsconfigBuildJsonFiles.flatMap(\n ({ file, contents }) => {\n const parsed = parseTsconfig(contents);\n return parsed ? [{ file, ...parsed }] : [];\n },\n );\n\n if (parsedTsconfigFiles.length === 0) {\n return { result: 'skip', reason: 'no valid tsconfig.json files found' };\n }\n\n const updatedTsconfigFiles = parsedTsconfigFiles.map(\n ({ file, parsed, original }) => ({\n file,\n original,\n ...updateTsConfig({ parsed, customCondition, file }),\n }),\n );\n\n const allSrcPaths = [\n ...new Set(\n updatedTsconfigFiles.flatMap(({ srcPaths, file }) =>\n srcPaths.flatMap((p) => {\n const regex = /(.*)src\\/?\\*?$/;\n const match = regex.exec(p);\n if (match?.[1] !== undefined) {\n return [path.join(path.dirname(file), match[1])];\n }\n\n log.warn(\n `Unexpected src path format in ${file}: ${p}. Expected format like \"apps/api/src/*\"`,\n );\n return [];\n }),\n ),\n ),\n ];\n\n // Fetch all package.json paths which may be in allSrcPaths\n const packageJsonPatterns = allSrcPaths.map((srcPath) =>\n path.join(srcPath, 'package.json'),\n );\n\n const packageJsonFiles = await fetchFiles(packageJsonPatterns);\n\n const parsedPackageJsonFiles = packageJsonFiles.flatMap(\n ({ file, contents }) => {\n const parsed = parsePackageJson(contents);\n return parsed ? [{ file, ...parsed }] : [];\n },\n );\n\n parsedPackageJsonFiles.forEach(({ parsed, file }) => {\n updatePackageJson({ parsed, customCondition });\n\n const relativeTsconfigPath = path.join(path.dirname(file), 'tsconfig.json');\n\n const relativeTsconfig = updatedTsconfigFiles.find(\n (tsconfig) => tsconfig.file === relativeTsconfigPath,\n );\n\n if (relativeTsconfig) {\n relativeTsconfig.parsed.compilerOptions ??= {};\n relativeTsconfig.parsed.compilerOptions.rootDir ??= '.';\n } else {\n log.warn(\n `No corresponding tsconfig.json found for package.json at ${file}. Expected at ${relativeTsconfigPath}`,\n );\n }\n\n const relativeTsconfigBuildPath = path.join(\n path.dirname(file),\n 'tsconfig.build.json',\n );\n\n const relativeTsconfigBuild = parsedTsconfigBuildFiles.find(\n (tsconfig) => tsconfig.file === relativeTsconfigBuildPath,\n );\n\n if (relativeTsconfigBuild) {\n relativeTsconfigBuild.parsed.compilerOptions ??= {};\n relativeTsconfigBuild.parsed.compilerOptions.rootDir ??= 'src';\n } else {\n log.warn(\n `No corresponding tsconfig.build.json found for package.json at ${file}. Expected at ${relativeTsconfigBuildPath}`,\n );\n }\n });\n\n const updatedJestConfigFiles = jestConfigFiles.map(({ file, contents }) => {\n const parsed = addJestModuleNameMapper(contents, allSrcPaths);\n return { file, original: contents, parsed };\n });\n\n const hasJestConfigsChanged = updatedJestConfigFiles.some(\n ({ parsed, original }) => original !== parsed,\n );\n\n const hasRelativeTsconfigBuildsChanged = parsedTsconfigBuildFiles.some(\n ({ original, parsed }) =>\n JSON.stringify(original) !== JSON.stringify(parsed),\n );\n\n const hasPackageJsonsChanged = parsedPackageJsonFiles.some(\n ({ original, parsed }) =>\n JSON.stringify(original) !== JSON.stringify(parsed),\n );\n\n const hasRootTsconfigChanged = updatedTsconfigFiles.some(\n ({ original, parsed }) =>\n JSON.stringify(original) !== JSON.stringify(parsed),\n );\n\n if (\n mode === 'lint' &&\n (hasRootTsconfigChanged ||\n hasPackageJsonsChanged ||\n hasRelativeTsconfigBuildsChanged ||\n hasJestConfigsChanged)\n ) {\n return { result: 'apply' };\n }\n\n if (\n !hasRootTsconfigChanged &&\n !hasPackageJsonsChanged &&\n !hasRelativeTsconfigBuildsChanged &&\n !hasJestConfigsChanged\n ) {\n return { result: 'skip', reason: 'no changes required' };\n }\n\n await Promise.all(\n [\n ...updatedTsconfigFiles,\n ...parsedTsconfigBuildFiles,\n ...parsedPackageJsonFiles,\n ...updatedJestConfigFiles,\n ].map(async ({ file, parsed, original }) => {\n if (JSON.stringify(original) === JSON.stringify(parsed)) {\n return;\n }\n const updatedContents = JSON.stringify(parsed, null, 2);\n await fs.promises.writeFile(file, updatedContents);\n }),\n );\n\n return { result: 'apply' };\n};\n\nexport const configureTsConfigForESM: PatchFunction = async (config) => {\n try {\n return await tryConfigureTsConfigForESM(config);\n } catch (err) {\n log.warn('Failed to write configure `tsconfig.json` and `package.json`');\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 path from 'path';\nimport { inspect } from 'util';\n\nimport { glob } from 'fast-glob';\nimport fs from 'fs-extra';\nimport * as z from 'zod';\n\nimport { Git } from '../../../../../../index.js';\nimport { log } from '../../../../../../utils/logging.js';\nimport type { PatchFunction, PatchReturnType } from '../../index.js';\n\nconst packageJsonSchema = z.looseObject({\n imports: z.record(z.string(), z.record(z.string(), z.string())).optional(),\n});\n\ntype PackageJson = z.infer<typeof packageJsonSchema>;\n\nconst tsConfigSchema = z.looseObject({\n compilerOptions: z\n .looseObject({\n customConditions: z.array(z.string()).optional(),\n rootDir: z.string().optional(),\n paths: z\n .record(z.string(), z.union([z.array(z.string()), z.null()]))\n .optional(),\n })\n .optional(),\n});\n\ntype TsConfig = z.infer<typeof tsConfigSchema>;\n\nconst fetchFiles = async (patterns: string[]) => {\n const files = await glob(patterns, {\n ignore: ['**/.git', '**/node_modules'],\n });\n\n return Promise.all(\n files.map(async (file) => {\n const contents = await fs.promises.readFile(file, 'utf8');\n\n return {\n file,\n contents,\n };\n }),\n );\n};\n\nexport const addJestModuleNameMapper = (\n contents: string,\n srcPaths: string[],\n) => {\n const moduleNameRegex = /moduleNameMapper:\\s*\\{([\\s\\S]*?)\\}/;\n const match = moduleNameRegex.exec(contents);\n\n const srcPathArray = srcPaths.map((subfolderPath) =>\n subfolderPath === '.' || subfolderPath === './'\n ? '<rootDir>/src/$1'\n : `<rootDir>/${subfolderPath}/src/$1`,\n );\n\n const srcModuleMappers = JSON.stringify({\n '^#src/(.*)\\\\.js$': srcPathArray,\n '^#src/(.*)$': srcPathArray,\n });\n\n // strip the surrounding { } from the JSON stringify result\n const newModuleNameMapper = srcModuleMappers\n .replace(/^{/, '')\n .replace(/}$/, '');\n\n if (match?.[1] !== undefined) {\n // insert srcModuleMappers into existing moduleNameMapper\n const existingModuleMappers = match[1];\n\n const newContents = `${contents.slice(\n 0,\n match.index,\n )}moduleNameMapper: {${existingModuleMappers},${newModuleNameMapper}}${contents.slice(\n match.index + match[0].length,\n )}`;\n\n return newContents;\n }\n\n // Add moduleNameMapper if not present\n\n const insertionPointRegex = /(\\b(jest|export\\s+default)\\b[\\s\\S]*?{)/;\n const insertionMatch = insertionPointRegex.exec(contents);\n\n if (insertionMatch?.[1] !== undefined) {\n const insertionIndex = insertionMatch.index + insertionMatch[0].length;\n const moduleNameMapperString = `\\n moduleNameMapper: {${newModuleNameMapper}},`;\n\n const newContents =\n contents.slice(0, insertionIndex) +\n moduleNameMapperString +\n contents.slice(insertionIndex);\n\n return newContents;\n }\n\n log.warn(\n 'Could not find a suitable place to insert moduleNameMapper in jest config',\n );\n return contents;\n};\n\nexport const parsePackageJson = (\n contents: string,\n): {\n original: PackageJson;\n parsed: PackageJson;\n} | null => {\n try {\n const parsedJson: unknown = JSON.parse(contents);\n return {\n original: parsedJson as PackageJson,\n parsed: packageJsonSchema.parse(parsedJson),\n };\n } catch (error) {\n log.warn(`Failed to parse package.json as JSON: ${String(error)}`);\n return null;\n }\n};\n\nexport const updatePackageJson = ({\n parsed,\n customCondition,\n}: {\n parsed: PackageJson;\n customCondition: string;\n}) => {\n parsed.imports ??= {};\n parsed.imports['#src/*'] ??= {\n [customCondition]: './src/*',\n default: './lib/*',\n };\n\n return {\n parsed,\n };\n};\n\nconst parseTsconfig = (\n contents: string,\n): {\n original: TsConfig;\n parsed: TsConfig;\n} | null => {\n try {\n const parsedJson: unknown = JSON.parse(contents);\n const tsconfig = tsConfigSchema.parse(parsedJson);\n\n return {\n original: parsedJson as TsConfig,\n parsed: tsconfig,\n };\n } catch (error) {\n log.warn(`Failed to parse root tsconfig.json as JSON: ${String(error)}`);\n return null;\n }\n};\n\nconst updateTsConfig = ({\n parsed,\n customCondition,\n file,\n}: {\n parsed: TsConfig;\n customCondition: string;\n file: string;\n}) => {\n if (file === 'tsconfig.json') {\n parsed.compilerOptions ??= {};\n parsed.compilerOptions.customConditions ??= [];\n\n if (!parsed.compilerOptions.customConditions.includes(customCondition)) {\n parsed.compilerOptions.customConditions.push(customCondition);\n }\n }\n\n let srcPaths: string[] = [];\n ['./src/*', 'src/*', 'src'].forEach((key) => {\n if (parsed.compilerOptions?.paths?.[key]) {\n srcPaths = parsed.compilerOptions.paths[key];\n delete parsed.compilerOptions.paths[key];\n }\n });\n\n if (\n parsed.compilerOptions?.paths &&\n Object.keys(parsed.compilerOptions.paths).length === 0\n ) {\n delete parsed.compilerOptions.paths;\n }\n\n return {\n parsed,\n srcPaths,\n };\n};\n\nexport const tryConfigureTsConfigForESM: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n let customCondition: string;\n try {\n const { repo } = await Git.getOwnerAndRepo({ dir: process.cwd() });\n customCondition = `@seek/${repo}/source`;\n } catch {\n return { result: 'skip', reason: 'no repository name found' };\n }\n\n const tsconfigJsonPatterns = ['**/tsconfig.json'];\n const tsconfigBuildJsonPatterns = ['**/tsconfig.build.json'];\n const jestConfigPatterns = ['**/jest.config.ts', '**/jest.config.*.ts'];\n\n const [tsconfigJsonFiles, tsconfigBuildJsonFiles, jestConfigFiles] =\n await Promise.all([\n fetchFiles(tsconfigJsonPatterns),\n fetchFiles(tsconfigBuildJsonPatterns),\n fetchFiles(jestConfigPatterns),\n ]);\n\n const parsedTsconfigFiles = tsconfigJsonFiles.flatMap(\n ({ file, contents }) => {\n const parsed = parseTsconfig(contents);\n return parsed ? [{ file, ...parsed }] : [];\n },\n );\n\n const parsedTsconfigBuildFiles = tsconfigBuildJsonFiles.flatMap(\n ({ file, contents }) => {\n const parsed = parseTsconfig(contents);\n return parsed ? [{ file, ...parsed }] : [];\n },\n );\n\n if (parsedTsconfigFiles.length === 0) {\n return { result: 'skip', reason: 'no valid tsconfig.json files found' };\n }\n\n const updatedTsconfigFiles = parsedTsconfigFiles.map(\n ({ file, parsed, original }) => ({\n file,\n original,\n ...updateTsConfig({ parsed, customCondition, file }),\n }),\n );\n\n const allSrcPaths = [\n ...new Set(\n updatedTsconfigFiles.flatMap(({ srcPaths, file }) =>\n srcPaths.flatMap((p) => {\n const regex = /(.*)src\\/?\\*?$/;\n const match = regex.exec(p);\n if (match?.[1] !== undefined) {\n return [path.join(path.dirname(file), match[1])];\n }\n\n log.warn(\n `Unexpected src path format in ${file}: ${p}. Expected format like \"apps/api/src/*\"`,\n );\n return [];\n }),\n ),\n ),\n ];\n\n // Fetch all package.json paths which may be in allSrcPaths\n const packageJsonPatterns = allSrcPaths.map((srcPath) =>\n path.join(srcPath, 'package.json'),\n );\n\n const packageJsonFiles = await fetchFiles(packageJsonPatterns);\n\n const parsedPackageJsonFiles = packageJsonFiles.flatMap(\n ({ file, contents }) => {\n const parsed = parsePackageJson(contents);\n return parsed ? [{ file, ...parsed }] : [];\n },\n );\n\n parsedPackageJsonFiles.forEach(({ parsed, file }) => {\n updatePackageJson({ parsed, customCondition });\n\n const relativeTsconfigPath = path.join(path.dirname(file), 'tsconfig.json');\n\n const relativeTsconfig = updatedTsconfigFiles.find(\n (tsconfig) => tsconfig.file === relativeTsconfigPath,\n );\n\n if (relativeTsconfig) {\n relativeTsconfig.parsed.compilerOptions ??= {};\n relativeTsconfig.parsed.compilerOptions.rootDir ??= '.';\n } else {\n log.warn(\n `No corresponding tsconfig.json found for package.json at ${file}. Expected at ${relativeTsconfigPath}`,\n );\n }\n\n const relativeTsconfigBuildPath = path.join(\n path.dirname(file),\n 'tsconfig.build.json',\n );\n\n const relativeTsconfigBuild = parsedTsconfigBuildFiles.find(\n (tsconfig) => tsconfig.file === relativeTsconfigBuildPath,\n );\n\n if (relativeTsconfigBuild) {\n relativeTsconfigBuild.parsed.compilerOptions ??= {};\n relativeTsconfigBuild.parsed.compilerOptions.rootDir ??= 'src';\n } else {\n log.warn(\n `No corresponding tsconfig.build.json found for package.json at ${file}. Expected at ${relativeTsconfigBuildPath}`,\n );\n }\n });\n\n const updatedJestConfigFiles = jestConfigFiles.map(({ file, contents }) => {\n const parsed = addJestModuleNameMapper(contents, allSrcPaths);\n return { file, original: contents, parsed };\n });\n\n const hasJestConfigsChanged = updatedJestConfigFiles.some(\n ({ parsed, original }) => original !== parsed,\n );\n\n const hasRelativeTsconfigBuildsChanged = parsedTsconfigBuildFiles.some(\n ({ original, parsed }) =>\n JSON.stringify(original) !== JSON.stringify(parsed),\n );\n\n const hasPackageJsonsChanged = parsedPackageJsonFiles.some(\n ({ original, parsed }) =>\n JSON.stringify(original) !== JSON.stringify(parsed),\n );\n\n const hasRootTsconfigChanged = updatedTsconfigFiles.some(\n ({ original, parsed }) =>\n JSON.stringify(original) !== JSON.stringify(parsed),\n );\n\n if (\n mode === 'lint' &&\n (hasRootTsconfigChanged ||\n hasPackageJsonsChanged ||\n hasRelativeTsconfigBuildsChanged ||\n hasJestConfigsChanged)\n ) {\n return { result: 'apply' };\n }\n\n if (\n !hasRootTsconfigChanged &&\n !hasPackageJsonsChanged &&\n !hasRelativeTsconfigBuildsChanged &&\n !hasJestConfigsChanged\n ) {\n return { result: 'skip', reason: 'no changes required' };\n }\n\n const jsonFilePromises = Promise.all(\n [\n ...updatedTsconfigFiles,\n ...parsedTsconfigBuildFiles,\n ...parsedPackageJsonFiles,\n ].map(async ({ file, parsed, original }) => {\n if (JSON.stringify(original) === JSON.stringify(parsed)) {\n return;\n }\n const updatedContents = JSON.stringify(parsed, null, 2);\n await fs.promises.writeFile(file, updatedContents);\n }),\n );\n\n const otherFilePromises = Promise.all(\n updatedJestConfigFiles.map(async ({ file, parsed, original }) => {\n if (original === parsed) {\n return;\n }\n await fs.promises.writeFile(file, parsed);\n }),\n );\n\n await Promise.all([jsonFilePromises, otherFilePromises]);\n\n return { result: 'apply' };\n};\n\nexport const configureTsConfigForESM: PatchFunction = async (config) => {\n try {\n return await tryConfigureTsConfigForESM(config);\n } catch (err) {\n log.warn('Failed to write configure `tsconfig.json` and `package.json`');\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", "path"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skuba",
3
- "version": "13.0.0-custom-conditions-exports-20250923003120",
3
+ "version": "13.0.0-custom-conditions-exports-20250923011412",
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",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.13.10",
26
- "skuba": "13.0.0-custom-conditions-exports-20250923003120"
26
+ "skuba": "13.0.0-custom-conditions-exports-20250923011412"
27
27
  },
28
28
  "packageManager": "pnpm@10.15.1",
29
29
  "engines": {
@@ -41,7 +41,7 @@
41
41
  "datadog-lambda-js": "^12.0.0",
42
42
  "dd-trace": "^5.0.0",
43
43
  "pino-pretty": "^13.0.0",
44
- "skuba": "13.0.0-custom-conditions-exports-20250923003120"
44
+ "skuba": "13.0.0-custom-conditions-exports-20250923011412"
45
45
  },
46
46
  "packageManager": "pnpm@10.15.1",
47
47
  "engines": {