skuba 13.0.0-custom-conditions-exports-20250729005607 → 13.0.0-custom-conditions-exports-20250729033509

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,4 +1,5 @@
1
1
  import type { PatchFunction } from '../../index.js';
2
+ export declare const addJestModuleNameMapper: (contents: string, subfolderPaths: string[]) => string;
2
3
  export declare const replacePackageJson: (contents: string, repoName: string) => string;
3
4
  export declare const replaceTsconfig: (contents: string, repoName: string) => string;
4
5
  export declare const tryConfigureTsConfigForESM: PatchFunction;
@@ -28,6 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var configureTsConfigForESM_exports = {};
30
30
  __export(configureTsConfigForESM_exports, {
31
+ addJestModuleNameMapper: () => addJestModuleNameMapper,
31
32
  configureTsConfigForESM: () => configureTsConfigForESM,
32
33
  replacePackageJson: () => replacePackageJson,
33
34
  replaceTsconfig: () => replaceTsconfig,
@@ -69,6 +70,29 @@ const fetchFiles = async (files) => Promise.all(
69
70
  };
70
71
  })
71
72
  );
73
+ const formatModuleNameMapper = (subfolderPaths) => subfolderPaths.map((subfolderPath) => `<rootDir>/${subfolderPath}/src`);
74
+ const addJestModuleNameMapper = (contents, subfolderPaths) => {
75
+ const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));
76
+ if (!parseResult.success) {
77
+ import_logging.log.warn(`Failed to parse package.json: ${parseResult.error.message}`);
78
+ return contents;
79
+ }
80
+ const jestConfig = parseResult.data;
81
+ const formattedNames = formatModuleNameMapper(subfolderPaths);
82
+ const formattedNamesWithPath = formattedNames.map((name) => `${name}/$1`);
83
+ const moduleNameMapper = {
84
+ "^(\\.{1,2}/.*)\\.js$": "$1",
85
+ "^#src$": formattedNames,
86
+ "^#src/(.*)\\.js$": formattedNamesWithPath,
87
+ "^#src/(.*)$": formattedNamesWithPath
88
+ };
89
+ jestConfig.moduleNameMapper = {
90
+ "#src/*": {
91
+ moduleNameMapper
92
+ }
93
+ };
94
+ return JSON.stringify(jestConfig, null, 2);
95
+ };
72
96
  const replacePackageJson = (contents, repoName) => {
73
97
  try {
74
98
  const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));
@@ -97,6 +121,12 @@ const replaceTsconfig = (contents, repoName) => {
97
121
  return contents;
98
122
  }
99
123
  const tsconfigJson = parseResult.data;
124
+ if (typeof tsconfigJson.extends === "string" && !tsconfigJson.extends.startsWith("skuba/")) {
125
+ import_logging.log.subtle(
126
+ "Skipping tsconfig.json that does not extend skuba/config/tsconfig.json"
127
+ );
128
+ return contents;
129
+ }
100
130
  if (!tsconfigJson.compilerOptions || typeof tsconfigJson.compilerOptions !== "object") {
101
131
  tsconfigJson.compilerOptions = {};
102
132
  }
@@ -122,15 +152,18 @@ const replaceTsconfig = (contents, repoName) => {
122
152
  const tryConfigureTsConfigForESM = async ({
123
153
  mode
124
154
  }) => {
125
- const packageJsonPatterns = ["**/package.json", "**/package.*.json"];
126
- const tsconfigJsonPatterns = ["**/tsconfig.json", "**/tsconfig.*.json"];
155
+ const packageJsonPatterns = ["**/package.*json"];
156
+ const tsconfigJsonPatterns = ["**/tsconfig.*json"];
157
+ const jestConfigPatterns = ["**/jest.config.*ts"];
127
158
  const globOptions = {
128
159
  ignore: ["**/node_modules/**", "**/tsconfig.build.json"]
129
160
  };
130
- const [packageJsonFiles, tsconfigJsonFiles] = await Promise.all([
161
+ const [packageJsonFiles, tsconfigJsonFiles, jestConfigFiles] = await Promise.all([
131
162
  fetchFiles(await (0, import_fast_glob.glob)(packageJsonPatterns, globOptions)),
132
- fetchFiles(await (0, import_fast_glob.glob)(tsconfigJsonPatterns, globOptions))
163
+ fetchFiles(await (0, import_fast_glob.glob)(tsconfigJsonPatterns, globOptions)),
164
+ fetchFiles(await (0, import_fast_glob.glob)(jestConfigPatterns, globOptions))
133
165
  ]);
166
+ const subfolderPaths = packageJsonFiles.map(({ file }) => file.split("/").slice(0, -1).join("/")).filter((path) => path !== "");
134
167
  const repoName = await getRepoName();
135
168
  if (!repoName) {
136
169
  return { result: "skip", reason: "no repository name found" };
@@ -149,17 +182,26 @@ const tryConfigureTsConfigForESM = async ({
149
182
  after: replaceTsconfig(contents, repoName)
150
183
  })
151
184
  );
185
+ const replacedJestConfigFiles = subfolderPaths.length > 0 ? jestConfigFiles.map(({ file, contents }) => ({
186
+ file,
187
+ before: contents,
188
+ after: addJestModuleNameMapper(contents, subfolderPaths)
189
+ })) : [];
152
190
  if (mode === "lint") {
153
191
  return {
154
192
  result: "apply"
155
193
  };
156
194
  }
157
195
  await Promise.all(
158
- [...replacedPackageJsonFiles, ...replacedTsconfigJsonFiles].map(
159
- async ({ file, after }) => {
160
- await import_fs_extra.default.promises.writeFile(file, after);
161
- }
162
- )
196
+ [
197
+ ...replacedPackageJsonFiles,
198
+ ...replacedTsconfigJsonFiles.filter(
199
+ ({ after }) => typeof after === "string"
200
+ ),
201
+ ...replacedJestConfigFiles
202
+ ].map(async ({ file, after }) => {
203
+ await import_fs_extra.default.promises.writeFile(file, after);
204
+ })
163
205
  );
164
206
  return { result: "apply" };
165
207
  };
@@ -174,6 +216,7 @@ const configureTsConfigForESM = async (config) => {
174
216
  };
175
217
  // Annotate the CommonJS export names for ESM import in node:
176
218
  0 && (module.exports = {
219
+ addJestModuleNameMapper,
177
220
  configureTsConfigForESM,
178
221
  replacePackageJson,
179
222
  replaceTsconfig,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/12.0.2/configureTsConfigForESM.ts"],
4
- "sourcesContent": ["import { inspect } from 'util';\n\nimport { glob } from 'fast-glob';\nimport fs from 'fs-extra';\nimport { 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\n .object({\n imports: z.record(z.record(z.string())).optional(),\n })\n .passthrough();\n\nconst tsConfigSchema = z\n .object({\n compilerOptions: z\n .object({\n customConditions: z.array(z.string()).optional(),\n rootDir: z.string().optional(),\n paths: z.record(z.unknown()).optional(),\n })\n .passthrough()\n .optional(),\n })\n .passthrough();\n\nconst getRepoName = async (): Promise<string | undefined> => {\n try {\n const dir = process.cwd();\n const { repo } = await Git.getOwnerAndRepo({ dir });\n\n return repo;\n } catch (error) {\n log.warn(`Error getting repository information: ${String(error)}`);\n throw error;\n }\n};\n\nconst fetchFiles = async (files: string[]) =>\n 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\nexport const replacePackageJson = (contents: string, repoName: string) => {\n try {\n const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(`Failed to parse package.json: ${parseResult.error.message}`);\n return contents;\n }\n\n const packageJson = parseResult.data;\n\n packageJson.imports = {\n '#src/*': {\n [`@seek/${repoName}/source`]: './src/*',\n default: './lib/*',\n },\n };\n\n return JSON.stringify(packageJson, null, 2);\n } catch (error) {\n log.warn(`Failed to parse package.json as JSON: ${String(error)}`);\n return contents;\n }\n};\n\nexport const replaceTsconfig = (contents: string, repoName: string) => {\n try {\n const parseResult = tsConfigSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(`Failed to parse tsconfig.json: ${parseResult.error.message}`);\n return contents;\n }\n\n const tsconfigJson = parseResult.data;\n\n if (\n !tsconfigJson.compilerOptions ||\n typeof tsconfigJson.compilerOptions !== 'object'\n ) {\n tsconfigJson.compilerOptions = {};\n }\n\n const compilerOptions = tsconfigJson.compilerOptions;\n\n if (compilerOptions.paths !== undefined) {\n delete compilerOptions.paths;\n }\n\n compilerOptions.customConditions ??= [];\n\n if (compilerOptions.customConditions.includes(`@seek/${repoName}/source`)) {\n log.subtle(\n 'Custom condition mapping already exists in tsconfig.json, skipping',\n );\n return contents;\n }\n\n compilerOptions.customConditions = [`@seek/${repoName}/source`];\n\n compilerOptions.rootDir ??= '.';\n\n return JSON.stringify(tsconfigJson, null, 2);\n } catch (error) {\n log.warn(`Failed to parse tsconfig.json as JSON: ${String(error)}`);\n return contents;\n }\n};\n\nexport const tryConfigureTsConfigForESM: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n const packageJsonPatterns = ['**/package.json', '**/package.*.json'];\n const tsconfigJsonPatterns = ['**/tsconfig.json', '**/tsconfig.*.json'];\n\n const globOptions = {\n ignore: ['**/node_modules/**', '**/tsconfig.build.json'],\n };\n\n const [packageJsonFiles, tsconfigJsonFiles] = await Promise.all([\n fetchFiles(await glob(packageJsonPatterns, globOptions)),\n fetchFiles(await glob(tsconfigJsonPatterns, globOptions)),\n ]);\n\n const repoName = await getRepoName();\n if (!repoName) {\n return { result: 'skip', reason: 'no repository name found' };\n }\n\n const replacedPackageJsonFiles = packageJsonFiles.map(\n ({ file, contents }) => ({\n file,\n before: contents,\n after: replacePackageJson(contents, repoName),\n }),\n );\n\n const replacedTsconfigJsonFiles = tsconfigJsonFiles.map(\n ({ file, contents }) => ({\n file,\n before: contents,\n after: replaceTsconfig(contents, repoName),\n }),\n );\n\n if (mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n await Promise.all(\n [...replacedPackageJsonFiles, ...replacedTsconfigJsonFiles].map(\n async ({ file, after }) => {\n await fs.promises.writeFile(file, after);\n },\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 { inspect } from 'util';\n\nimport { glob } from 'fast-glob';\nimport fs from 'fs-extra';\nimport { 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\n .object({\n imports: z.record(z.record(z.string())).optional(),\n })\n .passthrough();\n\nconst tsConfigSchema = z\n .object({\n compilerOptions: z\n .object({\n customConditions: z.array(z.string()).optional(),\n rootDir: z.string().optional(),\n paths: z.record(z.unknown()).optional(),\n })\n .passthrough()\n .optional(),\n })\n .passthrough();\n\nconst getRepoName = async (): Promise<string | undefined> => {\n try {\n const dir = process.cwd();\n const { repo } = await Git.getOwnerAndRepo({ dir });\n\n return repo;\n } catch (error) {\n log.warn(`Error getting repository information: ${String(error)}`);\n throw error;\n }\n};\n\nconst fetchFiles = async (files: string[]) =>\n 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\nconst formatModuleNameMapper = (subfolderPaths: string[]) =>\n subfolderPaths.map((subfolderPath) => `<rootDir>/${subfolderPath}/src`);\n\nexport const addJestModuleNameMapper = (\n contents: string,\n subfolderPaths: string[],\n) => {\n const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(`Failed to parse package.json: ${parseResult.error.message}`);\n return contents;\n }\n\n const jestConfig = parseResult.data;\n const formattedNames = formatModuleNameMapper(subfolderPaths);\n const formattedNamesWithPath = formattedNames.map((name) => `${name}/$1`);\n\n const moduleNameMapper = {\n '^(\\\\.{1,2}/.*)\\\\.js$': '$1',\n '^#src$': formattedNames,\n '^#src/(.*)\\\\.js$': formattedNamesWithPath,\n '^#src\\/(.*)$': formattedNamesWithPath,\n };\n\n jestConfig.moduleNameMapper = {\n '#src/*': {\n moduleNameMapper,\n },\n };\n\n return JSON.stringify(jestConfig, null, 2);\n};\n\nexport const replacePackageJson = (contents: string, repoName: string) => {\n try {\n const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(`Failed to parse package.json: ${parseResult.error.message}`);\n return contents;\n }\n\n const packageJson = parseResult.data;\n\n packageJson.imports = {\n '#src/*': {\n [`@seek/${repoName}/source`]: './src/*',\n default: './lib/*',\n },\n };\n\n return JSON.stringify(packageJson, null, 2);\n } catch (error) {\n log.warn(`Failed to parse package.json as JSON: ${String(error)}`);\n return contents;\n }\n};\n\nexport const replaceTsconfig = (contents: string, repoName: string) => {\n try {\n const parseResult = tsConfigSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(`Failed to parse tsconfig.json: ${parseResult.error.message}`);\n return contents;\n }\n\n const tsconfigJson = parseResult.data;\n\n if (\n typeof tsconfigJson.extends === 'string' &&\n !tsconfigJson.extends.startsWith('skuba/')\n ) {\n log.subtle(\n 'Skipping tsconfig.json that does not extend skuba/config/tsconfig.json',\n );\n return contents;\n }\n\n if (\n !tsconfigJson.compilerOptions ||\n typeof tsconfigJson.compilerOptions !== 'object'\n ) {\n tsconfigJson.compilerOptions = {};\n }\n\n const compilerOptions = tsconfigJson.compilerOptions;\n\n if (compilerOptions.paths !== undefined) {\n delete compilerOptions.paths;\n }\n\n compilerOptions.customConditions ??= [];\n\n if (compilerOptions.customConditions.includes(`@seek/${repoName}/source`)) {\n log.subtle(\n 'Custom condition mapping already exists in tsconfig.json, skipping',\n );\n return contents;\n }\n\n compilerOptions.customConditions = [`@seek/${repoName}/source`];\n\n compilerOptions.rootDir ??= '.';\n\n return JSON.stringify(tsconfigJson, null, 2);\n } catch (error) {\n log.warn(`Failed to parse tsconfig.json as JSON: ${String(error)}`);\n return contents;\n }\n};\n\nexport const tryConfigureTsConfigForESM: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n const packageJsonPatterns = ['**/package.*json'];\n const tsconfigJsonPatterns = ['**/tsconfig.*json'];\n const jestConfigPatterns = ['**/jest.config.*ts'];\n\n const globOptions = {\n ignore: ['**/node_modules/**', '**/tsconfig.build.json'],\n };\n\n const [packageJsonFiles, tsconfigJsonFiles, jestConfigFiles] =\n await Promise.all([\n fetchFiles(await glob(packageJsonPatterns, globOptions)),\n fetchFiles(await glob(tsconfigJsonPatterns, globOptions)),\n fetchFiles(await glob(jestConfigPatterns, globOptions)),\n ]);\n\n const subfolderPaths = packageJsonFiles\n .map(({ file }) => file.split('/').slice(0, -1).join('/'))\n .filter((path) => path !== '');\n\n const repoName = await getRepoName();\n if (!repoName) {\n return { result: 'skip', reason: 'no repository name found' };\n }\n\n const replacedPackageJsonFiles = packageJsonFiles.map(\n ({ file, contents }) => ({\n file,\n before: contents,\n after: replacePackageJson(contents, repoName),\n }),\n );\n\n const replacedTsconfigJsonFiles = tsconfigJsonFiles.map(\n ({ file, contents }) => ({\n file,\n before: contents,\n after: replaceTsconfig(contents, repoName),\n }),\n );\n\n const replacedJestConfigFiles =\n subfolderPaths.length > 0\n ? jestConfigFiles.map(({ file, contents }) => ({\n file,\n before: contents,\n after: addJestModuleNameMapper(contents, subfolderPaths),\n }))\n : [];\n\n if (mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n await Promise.all(\n [\n ...replacedPackageJsonFiles,\n ...replacedTsconfigJsonFiles.filter(\n ({ after }) => typeof after === 'string',\n ),\n ...replacedJestConfigFiles,\n ].map(async ({ file, after }) => {\n await fs.promises.writeFile(file, after);\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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AAExB,uBAAqB;AACrB,sBAAe;AACf,iBAAkB;AAElB,eAAoB;AACpB,qBAAoB;AAGpB,MAAM,oBAAoB,aACvB,OAAO;AAAA,EACN,SAAS,aAAE,OAAO,aAAE,OAAO,aAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AACnD,CAAC,EACA,YAAY;AAEf,MAAM,iBAAiB,aACpB,OAAO;AAAA,EACN,iBAAiB,aACd,OAAO;AAAA,IACN,kBAAkB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IAC/C,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,OAAO,aAAE,OAAO,aAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACxC,CAAC,EACA,YAAY,EACZ,SAAS;AACd,CAAC,EACA,YAAY;AAEf,MAAM,cAAc,YAAyC;AAC3D,MAAI;AACF,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,EAAE,KAAK,IAAI,MAAM,aAAI,gBAAgB,EAAE,IAAI,CAAC;AAElD,WAAO;AAAA,EACT,SAAS,OAAO;AACd,uBAAI,KAAK,yCAAyC,OAAO,KAAK,CAAC,EAAE;AACjE,UAAM;AAAA,EACR;AACF;AAEA,MAAM,aAAa,OAAO,UACxB,QAAQ;AAAA,EACN,MAAM,IAAI,OAAO,SAAS;AACxB,UAAM,WAAW,MAAM,gBAAAA,QAAG,SAAS,SAAS,MAAM,MAAM;AAExD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEF,MAAM,yBAAyB,CAAC,mBAC9B,eAAe,IAAI,CAAC,kBAAkB,aAAa,aAAa,MAAM;AAEjE,MAAM,0BAA0B,CACrC,UACA,mBACG;AACH,QAAM,cAAc,kBAAkB,UAAU,KAAK,MAAM,QAAQ,CAAC;AAEpE,MAAI,CAAC,YAAY,SAAS;AACxB,uBAAI,KAAK,iCAAiC,YAAY,MAAM,OAAO,EAAE;AACrE,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,YAAY;AAC/B,QAAM,iBAAiB,uBAAuB,cAAc;AAC5D,QAAM,yBAAyB,eAAe,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK;AAExE,QAAM,mBAAmB;AAAA,IACvB,wBAAwB;AAAA,IACxB,UAAU;AAAA,IACV,oBAAoB;AAAA,IACpB,eAAgB;AAAA,EAClB;AAEA,aAAW,mBAAmB;AAAA,IAC5B,UAAU;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,KAAK,UAAU,YAAY,MAAM,CAAC;AAC3C;AAEO,MAAM,qBAAqB,CAAC,UAAkB,aAAqB;AACxE,MAAI;AACF,UAAM,cAAc,kBAAkB,UAAU,KAAK,MAAM,QAAQ,CAAC;AAEpE,QAAI,CAAC,YAAY,SAAS;AACxB,yBAAI,KAAK,iCAAiC,YAAY,MAAM,OAAO,EAAE;AACrE,aAAO;AAAA,IACT;AAEA,UAAM,cAAc,YAAY;AAEhC,gBAAY,UAAU;AAAA,MACpB,UAAU;AAAA,QACR,CAAC,SAAS,QAAQ,SAAS,GAAG;AAAA,QAC9B,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,KAAK,UAAU,aAAa,MAAM,CAAC;AAAA,EAC5C,SAAS,OAAO;AACd,uBAAI,KAAK,yCAAyC,OAAO,KAAK,CAAC,EAAE;AACjE,WAAO;AAAA,EACT;AACF;AAEO,MAAM,kBAAkB,CAAC,UAAkB,aAAqB;AACrE,MAAI;AACF,UAAM,cAAc,eAAe,UAAU,KAAK,MAAM,QAAQ,CAAC;AAEjE,QAAI,CAAC,YAAY,SAAS;AACxB,yBAAI,KAAK,kCAAkC,YAAY,MAAM,OAAO,EAAE;AACtE,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,YAAY;AAEjC,QACE,OAAO,aAAa,YAAY,YAChC,CAAC,aAAa,QAAQ,WAAW,QAAQ,GACzC;AACA,yBAAI;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QACE,CAAC,aAAa,mBACd,OAAO,aAAa,oBAAoB,UACxC;AACA,mBAAa,kBAAkB,CAAC;AAAA,IAClC;AAEA,UAAM,kBAAkB,aAAa;AAErC,QAAI,gBAAgB,UAAU,QAAW;AACvC,aAAO,gBAAgB;AAAA,IACzB;AAEA,oBAAgB,qBAAqB,CAAC;AAEtC,QAAI,gBAAgB,iBAAiB,SAAS,SAAS,QAAQ,SAAS,GAAG;AACzE,yBAAI;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,oBAAgB,mBAAmB,CAAC,SAAS,QAAQ,SAAS;AAE9D,oBAAgB,YAAY;AAE5B,WAAO,KAAK,UAAU,cAAc,MAAM,CAAC;AAAA,EAC7C,SAAS,OAAO;AACd,uBAAI,KAAK,0CAA0C,OAAO,KAAK,CAAC,EAAE;AAClE,WAAO;AAAA,EACT;AACF;AAEO,MAAM,6BAA4C,OAAO;AAAA,EAC9D;AACF,MAAgC;AAC9B,QAAM,sBAAsB,CAAC,kBAAkB;AAC/C,QAAM,uBAAuB,CAAC,mBAAmB;AACjD,QAAM,qBAAqB,CAAC,oBAAoB;AAEhD,QAAM,cAAc;AAAA,IAClB,QAAQ,CAAC,sBAAsB,wBAAwB;AAAA,EACzD;AAEA,QAAM,CAAC,kBAAkB,mBAAmB,eAAe,IACzD,MAAM,QAAQ,IAAI;AAAA,IAChB,WAAW,UAAM,uBAAK,qBAAqB,WAAW,CAAC;AAAA,IACvD,WAAW,UAAM,uBAAK,sBAAsB,WAAW,CAAC;AAAA,IACxD,WAAW,UAAM,uBAAK,oBAAoB,WAAW,CAAC;AAAA,EACxD,CAAC;AAEH,QAAM,iBAAiB,iBACpB,IAAI,CAAC,EAAE,KAAK,MAAM,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,EACxD,OAAO,CAAC,SAAS,SAAS,EAAE;AAE/B,QAAM,WAAW,MAAM,YAAY;AACnC,MAAI,CAAC,UAAU;AACb,WAAO,EAAE,QAAQ,QAAQ,QAAQ,2BAA2B;AAAA,EAC9D;AAEA,QAAM,2BAA2B,iBAAiB;AAAA,IAChD,CAAC,EAAE,MAAM,SAAS,OAAO;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,MACR,OAAO,mBAAmB,UAAU,QAAQ;AAAA,IAC9C;AAAA,EACF;AAEA,QAAM,4BAA4B,kBAAkB;AAAA,IAClD,CAAC,EAAE,MAAM,SAAS,OAAO;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,MACR,OAAO,gBAAgB,UAAU,QAAQ;AAAA,IAC3C;AAAA,EACF;AAEA,QAAM,0BACJ,eAAe,SAAS,IACpB,gBAAgB,IAAI,CAAC,EAAE,MAAM,SAAS,OAAO;AAAA,IAC3C;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,wBAAwB,UAAU,cAAc;AAAA,EACzD,EAAE,IACF,CAAC;AAEP,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ;AAAA,MACE,GAAG;AAAA,MACH,GAAG,0BAA0B;AAAA,QAC3B,CAAC,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA,MAClC;AAAA,MACA,GAAG;AAAA,IACL,EAAE,IAAI,OAAO,EAAE,MAAM,MAAM,MAAM;AAC/B,YAAM,gBAAAA,QAAG,SAAS,UAAU,MAAM,KAAK;AAAA,IACzC,CAAC;AAAA,EACH;AAEA,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"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skuba",
3
- "version": "13.0.0-custom-conditions-exports-20250729005607",
3
+ "version": "13.0.0-custom-conditions-exports-20250729033509",
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-20250729005607"
26
+ "skuba": "13.0.0-custom-conditions-exports-20250729033509"
27
27
  },
28
28
  "packageManager": "pnpm@10.12.4",
29
29
  "engines": {
@@ -43,7 +43,7 @@
43
43
  "constructs": "^10.0.17",
44
44
  "datadog-cdk-constructs-v2": "^2.0.0",
45
45
  "pino-pretty": "^13.0.0",
46
- "skuba": "13.0.0-custom-conditions-exports-20250729005607"
46
+ "skuba": "13.0.0-custom-conditions-exports-20250729033509"
47
47
  },
48
48
  "packageManager": "pnpm@10.12.4",
49
49
  "engines": {