skuba 13.0.0-custom-conditions-exports-20251010010054 → 13.0.0-custom-conditions-exports-20251013220111

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.
@@ -22,6 +22,7 @@ __export(__exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(__exports);
24
24
  var import_configureTsConfigForESM = require("./configureTsConfigForESM.js");
25
+ var import_patchApiDockerfiles = require("./patchApiDockerfiles.js");
25
26
  var import_rewriteSrcImports = require("./rewriteSrcImports.js");
26
27
  var import_updateLambdaConfigs = require("./updateLambdaConfigs.js");
27
28
  const patches = [
@@ -36,6 +37,10 @@ const patches = [
36
37
  {
37
38
  apply: import_updateLambdaConfigs.updateLambdaConfigs,
38
39
  description: "Update lambda function configurations to support custom conditions"
40
+ },
41
+ {
42
+ apply: import_patchApiDockerfiles.patchApiDockerfiles,
43
+ description: "Patch Dockerfiles to copy `package.json`"
39
44
  }
40
45
  ];
41
46
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/13.0.0/index.ts"],
4
- "sourcesContent": ["import type { Patches } from '../../index.js';\n\nimport { configureTsConfigForESM } from './configureTsConfigForESM.js';\nimport { rewriteSrcImports } from './rewriteSrcImports.js';\nimport { updateLambdaConfigs } from './updateLambdaConfigs.js';\n\nexport const patches: Patches = [\n {\n apply: rewriteSrcImports,\n description: \"Rewrite all 'src' imports to be '#src'\",\n },\n {\n apply: configureTsConfigForESM,\n description:\n 'Configure `tsconfig.json`, `package.json` and `jest.config.ts` to support custom conditions',\n },\n {\n apply: updateLambdaConfigs,\n description:\n 'Update lambda function configurations to support custom conditions',\n },\n];\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qCAAwC;AACxC,+BAAkC;AAClC,iCAAoC;AAE7B,MAAM,UAAmB;AAAA,EAC9B;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AACF;",
4
+ "sourcesContent": ["import type { Patches } from '../../index.js';\n\nimport { configureTsConfigForESM } from './configureTsConfigForESM.js';\nimport { patchApiDockerfiles } from './patchApiDockerfiles.js';\nimport { rewriteSrcImports } from './rewriteSrcImports.js';\nimport { updateLambdaConfigs } from './updateLambdaConfigs.js';\n\nexport const patches: Patches = [\n {\n apply: rewriteSrcImports,\n description: \"Rewrite all 'src' imports to be '#src'\",\n },\n {\n apply: configureTsConfigForESM,\n description:\n 'Configure `tsconfig.json`, `package.json` and `jest.config.ts` to support custom conditions',\n },\n {\n apply: updateLambdaConfigs,\n description:\n 'Update lambda function configurations to support custom conditions',\n },\n {\n apply: patchApiDockerfiles,\n description: 'Patch Dockerfiles to copy `package.json`',\n },\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qCAAwC;AACxC,iCAAoC;AACpC,+BAAkC;AAClC,iCAAoC;AAE7B,MAAM,UAAmB;AAAA,EAC9B;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ import type { PatchFunction } from '../../index.js';
2
+ export declare const patchApiDockerfiles: PatchFunction;
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var patchApiDockerfiles_exports = {};
30
+ __export(patchApiDockerfiles_exports, {
31
+ patchApiDockerfiles: () => patchApiDockerfiles
32
+ });
33
+ module.exports = __toCommonJS(patchApiDockerfiles_exports);
34
+ var import_util = require("util");
35
+ var import_fast_glob = require("fast-glob");
36
+ var import_fs_extra = __toESM(require("fs-extra"));
37
+ var import_logging = require("../../../../../../utils/logging.js");
38
+ const fetchFiles = async (files) => Promise.all(
39
+ files.map(async (file) => {
40
+ const contents = await import_fs_extra.default.promises.readFile(file, "utf8");
41
+ return {
42
+ file,
43
+ contents
44
+ };
45
+ })
46
+ );
47
+ const applyDockerfilePatch = (contents) => {
48
+ if (contents.includes("pnpm deploy")) {
49
+ return void 0;
50
+ }
51
+ const cmdLineRegex = /CMD\s+\[.*?\]/ms;
52
+ const cmdLineMatch = cmdLineRegex.exec(contents);
53
+ const cmdLine = cmdLineMatch?.[0];
54
+ if (!cmdLine) {
55
+ return void 0;
56
+ }
57
+ const libPathRegex = /"([^"]*\/)?lib\/[^"]*"/;
58
+ const libPathMatch = libPathRegex.exec(cmdLine);
59
+ if (!libPathMatch) {
60
+ return void 0;
61
+ }
62
+ const fullPath = libPathMatch[1] || "./";
63
+ const libParentPath = fullPath.endsWith("/") ? fullPath.slice(0, -1) : fullPath;
64
+ const normalizedPath = libParentPath === "." || libParentPath === "" ? "." : libParentPath;
65
+ const copyNodeModulesWithFromRegex = /^\s*COPY\s+--from=(\S+)\s+.*node_modules.*$/m;
66
+ const copyNodeModulesWithFromMatch = copyNodeModulesWithFromRegex.exec(contents);
67
+ const copyNodeModulesWithoutFromRegex = /^\s*COPY\s+(?!--from).*node_modules.*$/m;
68
+ const copyNodeModulesWithoutFromMatch = copyNodeModulesWithoutFromRegex.exec(contents);
69
+ const copyNodeModulesMatch = copyNodeModulesWithFromMatch ?? copyNodeModulesWithoutFromMatch;
70
+ const copyNodeModulesLine = copyNodeModulesMatch?.[0];
71
+ const fromSource = copyNodeModulesWithFromMatch?.[1];
72
+ if (!copyNodeModulesLine) {
73
+ return void 0;
74
+ }
75
+ const packageJsonPattern = normalizedPath === "." ? "" : `${normalizedPath}/`;
76
+ const packageJsonCopyPattern = fromSource ? new RegExp(
77
+ `^\\s*COPY\\s+--from=${fromSource}\\s+.*${packageJsonPattern}package\\.json`,
78
+ "m"
79
+ ) : new RegExp(
80
+ `^\\s*COPY\\s+(?!--from).*${packageJsonPattern}package\\.json`,
81
+ "m"
82
+ );
83
+ if (packageJsonCopyPattern.test(contents)) {
84
+ return void 0;
85
+ }
86
+ let packageJsonCopyLine;
87
+ if (fromSource) {
88
+ packageJsonCopyLine = normalizedPath === "." ? `COPY --from=${fromSource} /workdir/package.json package.json` : `COPY --from=${fromSource} /workdir/${normalizedPath}/package.json ${normalizedPath}/package.json`;
89
+ } else {
90
+ packageJsonCopyLine = normalizedPath === "." ? "COPY package.json package.json" : `COPY ${normalizedPath}/package.json ${normalizedPath}/package.json`;
91
+ }
92
+ const newContents = contents.replace(
93
+ copyNodeModulesLine,
94
+ `${copyNodeModulesLine}
95
+ ${packageJsonCopyLine}`
96
+ );
97
+ return newContents;
98
+ };
99
+ const tryPatchApiDockerfiles = async (config) => {
100
+ const dockerfilePaths = await (0, import_fast_glob.glob)(["**/Dockerfile*"], {
101
+ ignore: ["**/.git", "**/node_modules"]
102
+ });
103
+ if (dockerfilePaths.length === 0) {
104
+ return {
105
+ result: "skip",
106
+ reason: "no Dockerfiles found"
107
+ };
108
+ }
109
+ const dockerfiles = await fetchFiles(dockerfilePaths);
110
+ const dockerFilesToPatch = dockerfiles.flatMap(({ file, contents }) => {
111
+ const newContents = applyDockerfilePatch(contents);
112
+ if (!newContents || newContents === contents) {
113
+ return [];
114
+ }
115
+ return [
116
+ {
117
+ file,
118
+ contents: newContents
119
+ }
120
+ ];
121
+ });
122
+ if (dockerFilesToPatch.length === 0) {
123
+ return {
124
+ result: "skip",
125
+ reason: "no Dockerfiles to patch"
126
+ };
127
+ }
128
+ if (config.mode === "lint") {
129
+ return {
130
+ result: "apply"
131
+ };
132
+ }
133
+ await Promise.all(
134
+ dockerFilesToPatch.map(
135
+ ({ file, contents }) => import_fs_extra.default.promises.writeFile(file, contents, "utf8")
136
+ )
137
+ );
138
+ return {
139
+ result: "apply"
140
+ };
141
+ };
142
+ const patchApiDockerfiles = async (config) => {
143
+ try {
144
+ return await tryPatchApiDockerfiles(config);
145
+ } catch (err) {
146
+ import_logging.log.warn("Failed to patch API dockerfiles");
147
+ import_logging.log.subtle((0, import_util.inspect)(err));
148
+ return { result: "skip", reason: "due to an error" };
149
+ }
150
+ };
151
+ // Annotate the CommonJS export names for ESM import in node:
152
+ 0 && (module.exports = {
153
+ patchApiDockerfiles
154
+ });
155
+ //# sourceMappingURL=patchApiDockerfiles.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/13.0.0/patchApiDockerfiles.ts"],
4
+ "sourcesContent": ["import { inspect } from 'util';\n\nimport { glob } from 'fast-glob';\nimport fs from 'fs-extra';\n\nimport { log } from '../../../../../../utils/logging.js';\nimport type { PatchFunction, PatchReturnType } from '../../index.js';\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 applyDockerfilePatch = (contents: string) => {\n if (contents.includes('pnpm deploy')) {\n // Assume pnpm is going to bring in the package.json file\n return undefined;\n }\n\n const cmdLineRegex = /CMD\\s+\\[.*?\\]/ms;\n const cmdLineMatch = cmdLineRegex.exec(contents);\n const cmdLine = cmdLineMatch?.[0];\n\n if (!cmdLine) {\n return undefined;\n }\n\n // Extract the lib path from CMD line\n // Match patterns like \"./lib/\", \"apps/api/lib/\", \"lib/\"\n const libPathRegex = /\"([^\"]*\\/)?lib\\/[^\"]*\"/;\n const libPathMatch = libPathRegex.exec(cmdLine);\n\n if (!libPathMatch) {\n return undefined;\n }\n\n const fullPath = libPathMatch[1] || './';\n const libParentPath = fullPath.endsWith('/')\n ? fullPath.slice(0, -1)\n : fullPath;\n\n // If the path is empty or just './', the lib is in current directory\n const normalizedPath =\n libParentPath === '.' || libParentPath === '' ? '.' : libParentPath;\n\n // Try to find COPY with --from first\n const copyNodeModulesWithFromRegex =\n /^\\s*COPY\\s+--from=(\\S+)\\s+.*node_modules.*$/m;\n const copyNodeModulesWithFromMatch =\n copyNodeModulesWithFromRegex.exec(contents);\n\n // If no --from, try to find COPY without --from\n const copyNodeModulesWithoutFromRegex =\n /^\\s*COPY\\s+(?!--from).*node_modules.*$/m;\n const copyNodeModulesWithoutFromMatch =\n copyNodeModulesWithoutFromRegex.exec(contents);\n\n const copyNodeModulesMatch =\n copyNodeModulesWithFromMatch ?? copyNodeModulesWithoutFromMatch;\n const copyNodeModulesLine = copyNodeModulesMatch?.[0];\n const fromSource = copyNodeModulesWithFromMatch?.[1];\n\n if (!copyNodeModulesLine) {\n return undefined;\n }\n\n // Check if package.json is already being copied for this path\n const packageJsonPattern = normalizedPath === '.' ? '' : `${normalizedPath}/`;\n const packageJsonCopyPattern = fromSource\n ? new RegExp(\n `^\\\\s*COPY\\\\s+--from=${fromSource}\\\\s+.*${packageJsonPattern}package\\\\.json`,\n 'm',\n )\n : new RegExp(\n `^\\\\s*COPY\\\\s+(?!--from).*${packageJsonPattern}package\\\\.json`,\n 'm',\n );\n\n if (packageJsonCopyPattern.test(contents)) {\n return undefined;\n }\n\n let packageJsonCopyLine: string;\n if (fromSource) {\n packageJsonCopyLine =\n normalizedPath === '.'\n ? `COPY --from=${fromSource} /workdir/package.json package.json`\n : `COPY --from=${fromSource} /workdir/${normalizedPath}/package.json ${normalizedPath}/package.json`;\n } else {\n packageJsonCopyLine =\n normalizedPath === '.'\n ? 'COPY package.json package.json'\n : `COPY ${normalizedPath}/package.json ${normalizedPath}/package.json`;\n }\n\n const newContents = contents.replace(\n copyNodeModulesLine,\n `${copyNodeModulesLine}\\n${packageJsonCopyLine}`,\n );\n\n return newContents;\n};\n\nconst tryPatchApiDockerfiles = async (config: {\n mode: 'lint' | 'format';\n}): Promise<PatchReturnType> => {\n const dockerfilePaths = await glob(['**/Dockerfile*'], {\n ignore: ['**/.git', '**/node_modules'],\n });\n\n if (dockerfilePaths.length === 0) {\n return {\n result: 'skip',\n reason: 'no Dockerfiles found',\n };\n }\n\n const dockerfiles = await fetchFiles(dockerfilePaths);\n\n const dockerFilesToPatch = dockerfiles.flatMap(({ file, contents }) => {\n const newContents = applyDockerfilePatch(contents);\n if (!newContents || newContents === contents) {\n return [];\n }\n\n return [\n {\n file,\n contents: newContents,\n },\n ];\n });\n\n if (dockerFilesToPatch.length === 0) {\n return {\n result: 'skip',\n reason: 'no Dockerfiles to patch',\n };\n }\n\n if (config.mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n await Promise.all(\n dockerFilesToPatch.map(({ file, contents }) =>\n fs.promises.writeFile(file, contents, 'utf8'),\n ),\n );\n\n return {\n result: 'apply',\n };\n};\n\nexport const patchApiDockerfiles: PatchFunction = async (config) => {\n try {\n return await tryPatchApiDockerfiles(config);\n } catch (err) {\n log.warn('Failed to patch API dockerfiles');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["fs"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skuba",
3
- "version": "13.0.0-custom-conditions-exports-20251010010054",
3
+ "version": "13.0.0-custom-conditions-exports-20251013220111",
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",
@@ -103,8 +103,8 @@
103
103
  "tsx": "^4.16.2",
104
104
  "typescript": "~5.9.0",
105
105
  "zod": "^4.0.0",
106
- "eslint-config-skuba": "7.2.0-custom-conditions-exports-20251010010054",
107
- "@skuba-lib/api": "^1.0.1"
106
+ "@skuba-lib/api": "^1.0.1",
107
+ "eslint-config-skuba": "7.2.0-custom-conditions-exports-20251013220111"
108
108
  },
109
109
  "devDependencies": {
110
110
  "@changesets/cli": "2.29.7",
@@ -18,6 +18,7 @@ WORKDIR /workdir
18
18
 
19
19
  COPY --from=build /workdir/lib lib
20
20
  COPY --from=build /workdir/node_modules node_modules
21
+ COPY --from=build /workdir/package.json package.json
21
22
 
22
23
  ENV NODE_ENV=production
23
24
 
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.13.10",
26
- "skuba": "13.0.0-custom-conditions-exports-20251010010054"
26
+ "skuba": "13.0.0-custom-conditions-exports-20251013220111"
27
27
  },
28
28
  "packageManager": "pnpm@10.17.1",
29
29
  "engines": {
@@ -18,6 +18,7 @@ WORKDIR /workdir
18
18
 
19
19
  COPY --from=build /workdir/lib lib
20
20
  COPY --from=build /workdir/node_modules node_modules
21
+ COPY --from=build /workdir/package.json package.json
21
22
 
22
23
  ENV NODE_ENV=production
23
24
 
@@ -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-20251010010054"
44
+ "skuba": "13.0.0-custom-conditions-exports-20251013220111"
45
45
  },
46
46
  "packageManager": "pnpm@10.17.1",
47
47
  "engines": {