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

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.
@@ -79,10 +79,11 @@ const addJestModuleNameMapper = (contents, srcPaths) => {
79
79
  const newModuleNameMapper = srcModuleMappers.replace(/^{/, "").replace(/}$/, "");
80
80
  if (match?.[1] !== void 0) {
81
81
  const existingModuleMappers = match[1];
82
+ const optionalComma = !/[,\s]*$/.test(existingModuleMappers) ? "" : ",";
82
83
  const newContents = `${contents.slice(
83
84
  0,
84
85
  match.index
85
- )}moduleNameMapper: {${existingModuleMappers},${newModuleNameMapper}}${contents.slice(
86
+ )}moduleNameMapper: {${existingModuleMappers}${optionalComma}${newModuleNameMapper}}${contents.slice(
86
87
  match.index + match[0].length
87
88
  )}`;
88
89
  return newContents;
@@ -213,7 +214,9 @@ const tryConfigureTsConfigForESM = async ({
213
214
  const regex = /(.*)src\/?\*?$/;
214
215
  const match = regex.exec(p);
215
216
  if (match?.[1] !== void 0) {
216
- return [import_path.default.join(import_path.default.dirname(file), match[1])];
217
+ return [
218
+ import_path.default.join(import_path.default.dirname(file), match[1].replace(/\/?$/, ""))
219
+ ];
217
220
  }
218
221
  import_logging.log.warn(
219
222
  `Unexpected src path format in ${file}: ${p}. Expected format like "apps/api/src/*"`
@@ -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['#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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",
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 optionalComma = !/[,\\s]*$/.test(existingModuleMappers) ? '' : ',';\n const newContents = `${contents.slice(\n 0,\n match.index,\n )}moduleNameMapper: {${existingModuleMappers}${optionalComma}${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 [\n path.join(path.dirname(file), match[1].replace(/\\/?$/, '')),\n ];\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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,kBAAwB;AAExB,uBAAqB;AACrB,sBAAe;AACf,QAAmB;AAEnB,eAAoB;AACpB,qBAAoB;AAGpB,MAAM,oBAAoB,EAAE,YAAY;AAAA,EACtC,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC3E,CAAC;AAID,MAAM,iBAAiB,EAAE,YAAY;AAAA,EACnC,iBAAiB,EACd,YAAY;AAAA,IACX,kBAAkB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IAC/C,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,OAAO,EACJ,OAAO,EAAE,OAAO,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAC3D,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AAID,MAAM,aAAa,OAAO,aAAuB;AAC/C,QAAM,QAAQ,UAAM,uBAAK,UAAU;AAAA,IACjC,QAAQ,CAAC,WAAW,iBAAiB;AAAA,EACvC,CAAC;AAED,SAAO,QAAQ;AAAA,IACb,MAAM,IAAI,OAAO,SAAS;AACxB,YAAM,WAAW,MAAM,gBAAAA,QAAG,SAAS,SAAS,MAAM,MAAM;AAExD,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,MAAM,0BAA0B,CACrC,UACA,aACG;AACH,QAAM,kBAAkB;AACxB,QAAM,QAAQ,gBAAgB,KAAK,QAAQ;AAE3C,QAAM,eAAe,SAAS;AAAA,IAAI,CAAC,kBACjC,kBAAkB,OAAO,kBAAkB,OACvC,qBACA,aAAa,aAAa;AAAA,EAChC;AAEA,QAAM,mBAAmB,KAAK,UAAU;AAAA,IACtC,oBAAoB;AAAA,IACpB,eAAe;AAAA,EACjB,CAAC;AAGD,QAAM,sBAAsB,iBACzB,QAAQ,MAAM,EAAE,EAChB,QAAQ,MAAM,EAAE;AAEnB,MAAI,QAAQ,CAAC,MAAM,QAAW;AAE5B,UAAM,wBAAwB,MAAM,CAAC;AAErC,UAAM,gBAAgB,CAAC,UAAU,KAAK,qBAAqB,IAAI,KAAK;AACpE,UAAM,cAAc,GAAG,SAAS;AAAA,MAC9B;AAAA,MACA,MAAM;AAAA,IACR,CAAC,sBAAsB,qBAAqB,GAAG,aAAa,GAAG,mBAAmB,IAAI,SAAS;AAAA,MAC7F,MAAM,QAAQ,MAAM,CAAC,EAAE;AAAA,IACzB,CAAC;AAED,WAAO;AAAA,EACT;AAIA,QAAM,sBAAsB;AAC5B,QAAM,iBAAiB,oBAAoB,KAAK,QAAQ;AAExD,MAAI,iBAAiB,CAAC,MAAM,QAAW;AACrC,UAAM,iBAAiB,eAAe,QAAQ,eAAe,CAAC,EAAE;AAChE,UAAM,yBAAyB;AAAA,uBAA0B,mBAAmB;AAE5E,UAAM,cACJ,SAAS,MAAM,GAAG,cAAc,IAChC,yBACA,SAAS,MAAM,cAAc;AAE/B,WAAO;AAAA,EACT;AAEA,qBAAI;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,MAAM,mBAAmB,CAC9B,aAIU;AACV,MAAI;AACF,UAAM,aAAsB,KAAK,MAAM,QAAQ;AAC/C,WAAO;AAAA,MACL,UAAU;AAAA,MACV,QAAQ,kBAAkB,MAAM,UAAU;AAAA,IAC5C;AAAA,EACF,SAAS,OAAO;AACd,uBAAI,KAAK,yCAAyC,OAAO,KAAK,CAAC,EAAE;AACjE,WAAO;AAAA,EACT;AACF;AAEO,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AACF,MAGM;AACJ,SAAO,YAAY,CAAC;AACpB,SAAO,QAAQ,QAAQ,MAAM;AAAA,IAC3B,CAAC,eAAe,GAAG;AAAA,IACnB,SAAS;AAAA,EACX;AAEA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,CACpB,aAIU;AACV,MAAI;AACF,UAAM,aAAsB,KAAK,MAAM,QAAQ;AAC/C,UAAM,WAAW,eAAe,MAAM,UAAU;AAEhD,WAAO;AAAA,MACL,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,EACF,SAAS,OAAO;AACd,uBAAI,KAAK,+CAA+C,OAAO,KAAK,CAAC,EAAE;AACvE,WAAO;AAAA,EACT;AACF;AAEA,MAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,MAAI,SAAS,iBAAiB;AAC5B,WAAO,oBAAoB,CAAC;AAC5B,WAAO,gBAAgB,qBAAqB,CAAC;AAE7C,QAAI,CAAC,OAAO,gBAAgB,iBAAiB,SAAS,eAAe,GAAG;AACtE,aAAO,gBAAgB,iBAAiB,KAAK,eAAe;AAAA,IAC9D;AAAA,EACF;AAEA,MAAI,WAAqB,CAAC;AAC1B,GAAC,WAAW,SAAS,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAC3C,QAAI,OAAO,iBAAiB,QAAQ,GAAG,GAAG;AACxC,iBAAW,OAAO,gBAAgB,MAAM,GAAG;AAC3C,aAAO,OAAO,gBAAgB,MAAM,GAAG;AAAA,IACzC;AAAA,EACF,CAAC;AAED,MACE,OAAO,iBAAiB,SACxB,OAAO,KAAK,OAAO,gBAAgB,KAAK,EAAE,WAAW,GACrD;AACA,WAAO,OAAO,gBAAgB;AAAA,EAChC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,6BAA4C,OAAO;AAAA,EAC9D;AACF,MAAgC;AAC9B,MAAI;AACJ,MAAI;AACF,UAAM,EAAE,KAAK,IAAI,MAAM,aAAI,gBAAgB,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC;AACjE,sBAAkB,SAAS,IAAI;AAAA,EACjC,QAAQ;AACN,WAAO,EAAE,QAAQ,QAAQ,QAAQ,2BAA2B;AAAA,EAC9D;AAEA,QAAM,uBAAuB,CAAC,kBAAkB;AAChD,QAAM,4BAA4B,CAAC,wBAAwB;AAC3D,QAAM,qBAAqB,CAAC,qBAAqB,qBAAqB;AAEtE,QAAM,CAAC,mBAAmB,wBAAwB,eAAe,IAC/D,MAAM,QAAQ,IAAI;AAAA,IAChB,WAAW,oBAAoB;AAAA,IAC/B,WAAW,yBAAyB;AAAA,IACpC,WAAW,kBAAkB;AAAA,EAC/B,CAAC;AAEH,QAAM,sBAAsB,kBAAkB;AAAA,IAC5C,CAAC,EAAE,MAAM,SAAS,MAAM;AACtB,YAAM,SAAS,cAAc,QAAQ;AACrC,aAAO,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AAEA,QAAM,2BAA2B,uBAAuB;AAAA,IACtD,CAAC,EAAE,MAAM,SAAS,MAAM;AACtB,YAAM,SAAS,cAAc,QAAQ;AACrC,aAAO,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AAEA,MAAI,oBAAoB,WAAW,GAAG;AACpC,WAAO,EAAE,QAAQ,QAAQ,QAAQ,qCAAqC;AAAA,EACxE;AAEA,QAAM,uBAAuB,oBAAoB;AAAA,IAC/C,CAAC,EAAE,MAAM,QAAQ,SAAS,OAAO;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,GAAG,eAAe,EAAE,QAAQ,iBAAiB,KAAK,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAClB,GAAG,IAAI;AAAA,MACL,qBAAqB;AAAA,QAAQ,CAAC,EAAE,UAAU,KAAK,MAC7C,SAAS,QAAQ,CAAC,MAAM;AACtB,gBAAM,QAAQ;AACd,gBAAM,QAAQ,MAAM,KAAK,CAAC;AAC1B,cAAI,QAAQ,CAAC,MAAM,QAAW;AAC5B,mBAAO;AAAA,cACL,YAAAC,QAAK,KAAK,YAAAA,QAAK,QAAQ,IAAI,GAAG,MAAM,CAAC,EAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,YAC5D;AAAA,UACF;AAEA,6BAAI;AAAA,YACF,iCAAiC,IAAI,KAAK,CAAC;AAAA,UAC7C;AACA,iBAAO,CAAC;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAGA,QAAM,sBAAsB,YAAY;AAAA,IAAI,CAAC,YAC3C,YAAAA,QAAK,KAAK,SAAS,cAAc;AAAA,EACnC;AAEA,QAAM,mBAAmB,MAAM,WAAW,mBAAmB;AAE7D,QAAM,yBAAyB,iBAAiB;AAAA,IAC9C,CAAC,EAAE,MAAM,SAAS,MAAM;AACtB,YAAM,SAAS,iBAAiB,QAAQ;AACxC,aAAO,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AAEA,yBAAuB,QAAQ,CAAC,EAAE,QAAQ,KAAK,MAAM;AACnD,sBAAkB,EAAE,QAAQ,gBAAgB,CAAC;AAE7C,UAAM,uBAAuB,YAAAA,QAAK,KAAK,YAAAA,QAAK,QAAQ,IAAI,GAAG,eAAe;AAE1E,UAAM,mBAAmB,qBAAqB;AAAA,MAC5C,CAAC,aAAa,SAAS,SAAS;AAAA,IAClC;AAEA,QAAI,kBAAkB;AACpB,uBAAiB,OAAO,oBAAoB,CAAC;AAC7C,uBAAiB,OAAO,gBAAgB,YAAY;AAAA,IACtD,OAAO;AACL,yBAAI;AAAA,QACF,4DAA4D,IAAI,iBAAiB,oBAAoB;AAAA,MACvG;AAAA,IACF;AAEA,UAAM,4BAA4B,YAAAA,QAAK;AAAA,MACrC,YAAAA,QAAK,QAAQ,IAAI;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,wBAAwB,yBAAyB;AAAA,MACrD,CAAC,aAAa,SAAS,SAAS;AAAA,IAClC;AAEA,QAAI,uBAAuB;AACzB,4BAAsB,OAAO,oBAAoB,CAAC;AAClD,4BAAsB,OAAO,gBAAgB,YAAY;AAAA,IAC3D,OAAO;AACL,yBAAI;AAAA,QACF,kEAAkE,IAAI,iBAAiB,yBAAyB;AAAA,MAClH;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,yBAAyB,gBAAgB,IAAI,CAAC,EAAE,MAAM,SAAS,MAAM;AACzE,UAAM,SAAS,wBAAwB,UAAU,WAAW;AAC5D,WAAO,EAAE,MAAM,UAAU,UAAU,OAAO;AAAA,EAC5C,CAAC;AAED,QAAM,wBAAwB,uBAAuB;AAAA,IACnD,CAAC,EAAE,QAAQ,SAAS,MAAM,aAAa;AAAA,EACzC;AAEA,QAAM,mCAAmC,yBAAyB;AAAA,IAChE,CAAC,EAAE,UAAU,OAAO,MAClB,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,MAAM;AAAA,EACtD;AAEA,QAAM,yBAAyB,uBAAuB;AAAA,IACpD,CAAC,EAAE,UAAU,OAAO,MAClB,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,MAAM;AAAA,EACtD;AAEA,QAAM,yBAAyB,qBAAqB;AAAA,IAClD,CAAC,EAAE,UAAU,OAAO,MAClB,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,MAAM;AAAA,EACtD;AAEA,MACE,SAAS,WACR,0BACC,0BACA,oCACA,wBACF;AACA,WAAO,EAAE,QAAQ,QAAQ;AAAA,EAC3B;AAEA,MACE,CAAC,0BACD,CAAC,0BACD,CAAC,oCACD,CAAC,uBACD;AACA,WAAO,EAAE,QAAQ,QAAQ,QAAQ,sBAAsB;AAAA,EACzD;AAEA,QAAM,mBAAmB,QAAQ;AAAA,IAC/B;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL,EAAE,IAAI,OAAO,EAAE,MAAM,QAAQ,SAAS,MAAM;AAC1C,UAAI,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG;AACvD;AAAA,MACF;AACA,YAAM,kBAAkB,KAAK,UAAU,QAAQ,MAAM,CAAC;AACtD,YAAM,gBAAAD,QAAG,SAAS,UAAU,MAAM,eAAe;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,QAAM,oBAAoB,QAAQ;AAAA,IAChC,uBAAuB,IAAI,OAAO,EAAE,MAAM,QAAQ,SAAS,MAAM;AAC/D,UAAI,aAAa,QAAQ;AACvB;AAAA,MACF;AACA,YAAM,gBAAAA,QAAG,SAAS,UAAU,MAAM,MAAM;AAAA,IAC1C,CAAC;AAAA,EACH;AAEA,QAAM,QAAQ,IAAI,CAAC,kBAAkB,iBAAiB,CAAC;AAEvD,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEO,MAAM,0BAAyC,OAAO,WAAW;AACtE,MAAI;AACF,WAAO,MAAM,2BAA2B,MAAM;AAAA,EAChD,SAAS,KAAK;AACZ,uBAAI,KAAK,8DAA8D;AACvE,uBAAI,WAAO,qBAAQ,GAAG,CAAC;AACvB,WAAO,EAAE,QAAQ,QAAQ,QAAQ,kBAAkB;AAAA,EACrD;AACF;",
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-20250923011412",
3
+ "version": "13.0.0-custom-conditions-exports-20250923015339",
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-20250923011412"
26
+ "skuba": "13.0.0-custom-conditions-exports-20250923015339"
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-20250923011412"
44
+ "skuba": "13.0.0-custom-conditions-exports-20250923015339"
45
45
  },
46
46
  "packageManager": "pnpm@10.15.1",
47
47
  "engines": {