skuba 13.0.0-custom-conditions-exports-20250729055507 → 13.0.0-custom-conditions-exports-20250730060544
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.
- package/lib/cli/lint/internalLints/upgrade/patches/12.0.1/configureTsConfigForESM.js +1 -0
- package/lib/cli/lint/internalLints/upgrade/patches/12.0.1/configureTsConfigForESM.js.map +2 -2
- package/lib/cli/node/index.js +2 -2
- package/lib/cli/node/index.js.map +2 -2
- package/lib/cli/start/index.js +2 -2
- package/lib/cli/start/index.js.map +1 -1
- package/package.json +3 -4
- package/template/base/_pnpm-workspace.yaml +0 -1
- package/template/greeter/package.json +1 -1
- package/template/koa-rest-api/package.json +3 -3
- package/template/lambda-sqs-worker-cdk/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/12.0.1/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\nconst formatModuleNameMapper = (subfolderPaths: string[]) =>\n subfolderPaths.map((subfolderPath) => `<rootDir>/${subfolderPath}/src`);\n\nconst isTypeScriptJestConfig = (contents: string): boolean =>\n contents.includes('Jest.mergePreset') ||\n contents.includes('export default') ||\n contents.includes('import');\n\nconst addModuleNameMapperToTypeScript = (\n contents: string,\n moduleNameMapper: Record<string, unknown>,\n): string => {\n const moduleNameMapperStr = JSON.stringify(moduleNameMapper, null, 2)\n .split('\\n')\n .map((line, index) => (index === 0 ? line : ` ${line}`))\n .join('\\n');\n\n const mergePresetRegex = /(Jest\\.mergePreset\\(\\s*\\{)/;\n const match = mergePresetRegex.exec(contents);\n\n if (match?.index !== undefined) {\n const insertIndex = match.index + match[0].length;\n const before = contents.slice(0, insertIndex);\n const after = contents.slice(insertIndex);\n\n return `${before}\\n moduleNameMapper: ${moduleNameMapperStr},${after}`;\n }\n\n return contents;\n};\n\nexport const addJestModuleNameMapper = (\n contents: string,\n subfolderPaths: string[],\n) => {\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 if (isTypeScriptJestConfig(contents)) {\n return addModuleNameMapperToTypeScript(contents, moduleNameMapper);\n }\n\n try {\n const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(\n `Failed to parse Jest config as JSON: ${parseResult.error.message}`,\n );\n return contents;\n }\n\n const jestConfig = parseResult.data;\n jestConfig.moduleNameMapper = moduleNameMapper;\n\n return JSON.stringify(jestConfig, null, 2);\n } catch (error) {\n log.warn(`Failed to parse Jest config: ${String(error)}`);\n return contents;\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 = (\n contents: string,\n repoName: string,\n isMonoRepo: boolean,\n) => {\n try {\n const jsonWithNoComments = contents\n .replace(/\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g, '')\n .trim();\n\n const parseResult = tsConfigSchema.safeParse(\n JSON.parse(jsonWithNoComments),\n );\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 && !isMonoRepo) {\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, subfolderPaths.length > 0),\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": "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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\nconst isTypeScriptJestConfig = (contents: string): boolean =>\n contents.includes('Jest.mergePreset') ||\n contents.includes('export default') ||\n contents.includes('import');\n\nconst addModuleNameMapperToTypeScript = (\n contents: string,\n moduleNameMapper: Record<string, unknown>,\n): string => {\n const moduleNameMapperStr = JSON.stringify(moduleNameMapper, null, 2)\n .split('\\n')\n .map((line, index) => (index === 0 ? line : ` ${line}`))\n .join('\\n');\n\n const mergePresetRegex = /(Jest\\.mergePreset\\(\\s*\\{)/;\n const match = mergePresetRegex.exec(contents);\n\n if (match?.index !== undefined) {\n const insertIndex = match.index + match[0].length;\n const before = contents.slice(0, insertIndex);\n const after = contents.slice(insertIndex);\n\n return `${before}\\n moduleNameMapper: ${moduleNameMapperStr},${after}`;\n }\n\n return contents;\n};\n\nexport const addJestModuleNameMapper = (\n contents: string,\n subfolderPaths: string[],\n) => {\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 if (isTypeScriptJestConfig(contents)) {\n return addModuleNameMapperToTypeScript(contents, moduleNameMapper);\n }\n\n try {\n const parseResult = packageJsonSchema.safeParse(JSON.parse(contents));\n\n if (!parseResult.success) {\n log.warn(\n `Failed to parse Jest config as JSON: ${parseResult.error.message}`,\n );\n return contents;\n }\n\n const jestConfig = parseResult.data;\n jestConfig.moduleNameMapper = moduleNameMapper;\n\n return JSON.stringify(jestConfig, null, 2);\n } catch (error) {\n log.warn(`Failed to parse Jest config: ${String(error)}`);\n return contents;\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 ...(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 = (\n contents: string,\n repoName: string,\n isMonoRepo: boolean,\n) => {\n try {\n const jsonWithNoComments = contents\n .replace(/\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g, '')\n .trim();\n\n const parseResult = tsConfigSchema.safeParse(\n JSON.parse(jsonWithNoComments),\n );\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 && !isMonoRepo) {\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, subfolderPaths.length > 0),\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": "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",
|
|
6
6
|
"names": ["fs"]
|
|
7
7
|
}
|
package/lib/cli/node/index.js
CHANGED
|
@@ -44,8 +44,8 @@ const node = async () => {
|
|
|
44
44
|
const availablePort = await (0, import_get_port.default)();
|
|
45
45
|
const commonArgs = [
|
|
46
46
|
...args.node,
|
|
47
|
-
"--
|
|
48
|
-
|
|
47
|
+
"--env-file-if-exists",
|
|
48
|
+
".env",
|
|
49
49
|
"--require",
|
|
50
50
|
require.resolve("tsconfig-paths/register")
|
|
51
51
|
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/node/index.ts"],
|
|
4
|
-
"sourcesContent": ["import path from 'path';\n\nimport execa from 'execa';\nimport getPort from 'get-port';\n\nimport { parseRunArgs } from '../../utils/args.js';\nimport { createExec } from '../../utils/exec.js';\nimport { isIpPort } from '../../utils/validation.js';\n\nexport const longRunning = true;\n\nexport const node = async () => {\n const args = parseRunArgs(process.argv.slice(2));\n\n const availablePort = await getPort();\n\n const commonArgs = [\n ...args.node,\n '--
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAEjB,mBAAkB;AAClB,sBAAoB;AAEpB,kBAA6B;AAC7B,kBAA2B;AAC3B,wBAAyB;AAElB,MAAM,cAAc;AAEpB,MAAM,OAAO,YAAY;AAC9B,QAAM,WAAO,0BAAa,QAAQ,KAAK,MAAM,CAAC,CAAC;AAE/C,QAAM,gBAAgB,UAAM,gBAAAA,SAAQ;AAEpC,QAAM,aAAa;AAAA,IACjB,GAAG,KAAK;AAAA,IACR;AAAA,IACA
|
|
4
|
+
"sourcesContent": ["import path from 'path';\n\nimport execa from 'execa';\nimport getPort from 'get-port';\n\nimport { parseRunArgs } from '../../utils/args.js';\nimport { createExec } from '../../utils/exec.js';\nimport { isIpPort } from '../../utils/validation.js';\n\nexport const longRunning = true;\n\nexport const node = async () => {\n const args = parseRunArgs(process.argv.slice(2));\n\n const availablePort = await getPort();\n\n const commonArgs = [\n ...args.node,\n '--env-file-if-exists',\n '.env',\n '--require',\n require.resolve('tsconfig-paths/register'),\n ];\n\n if (args.entryPoint) {\n const exec = createExec({\n env: {\n __SKUBA_ENTRY_POINT: args.entryPoint,\n __SKUBA_PORT: String(isIpPort(args.port) ? args.port : availablePort),\n },\n });\n\n return exec(\n 'tsx',\n ...commonArgs,\n path.join(__dirname, '..', '..', 'wrapper', 'index.js'),\n ...args.script,\n );\n }\n\n return execa(\n require.resolve('tsx/cli'),\n [\n ...commonArgs,\n '--require',\n // Unsure if bug or feature that this is needed, but tsx appears to not do anything typescript in the REPL without this!\n // Doesn't occur when just running the tsx binary directly \uD83E\uDDD0\n require.resolve('tsx/patch-repl'),\n ],\n {\n stdio: 'inherit',\n },\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAEjB,mBAAkB;AAClB,sBAAoB;AAEpB,kBAA6B;AAC7B,kBAA2B;AAC3B,wBAAyB;AAElB,MAAM,cAAc;AAEpB,MAAM,OAAO,YAAY;AAC9B,QAAM,WAAO,0BAAa,QAAQ,KAAK,MAAM,CAAC,CAAC;AAE/C,QAAM,gBAAgB,UAAM,gBAAAA,SAAQ;AAEpC,QAAM,aAAa;AAAA,IACjB,GAAG,KAAK;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,yBAAyB;AAAA,EAC3C;AAEA,MAAI,KAAK,YAAY;AACnB,UAAM,WAAO,wBAAW;AAAA,MACtB,KAAK;AAAA,QACH,qBAAqB,KAAK;AAAA,QAC1B,cAAc,WAAO,4BAAS,KAAK,IAAI,IAAI,KAAK,OAAO,aAAa;AAAA,MACtE;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA,GAAG;AAAA,MACH,YAAAC,QAAK,KAAK,WAAW,MAAM,MAAM,WAAW,UAAU;AAAA,MACtD,GAAG,KAAK;AAAA,IACV;AAAA,EACF;AAEA,aAAO,aAAAC;AAAA,IACL,gBAAgB,SAAS;AAAA,IACzB;AAAA,MACE,GAAG;AAAA,MACH;AAAA;AAAA;AAAA,MAGA,gBAAgB,gBAAgB;AAAA,IAClC;AAAA,IACA;AAAA,MACE,OAAO;AAAA,IACT;AAAA,EACF;AACF;",
|
|
6
6
|
"names": ["getPort", "path", "execa"]
|
|
7
7
|
}
|
package/lib/cli/start/index.js
CHANGED
|
@@ -54,8 +54,8 @@ const start = async () => {
|
|
|
54
54
|
"watch",
|
|
55
55
|
"--clear-screen=false",
|
|
56
56
|
...args.node,
|
|
57
|
-
"--
|
|
58
|
-
"
|
|
57
|
+
"--env-file-if-exists",
|
|
58
|
+
".env",
|
|
59
59
|
"--require",
|
|
60
60
|
"tsconfig-paths/register",
|
|
61
61
|
import_path.default.join(__dirname, "..", "..", "wrapper", "index.js"),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/start/index.ts"],
|
|
4
|
-
"sourcesContent": ["import path from 'path';\n\nimport getPort from 'get-port';\n\nimport { parseRunArgs } from '../../utils/args.js';\nimport { createExec } from '../../utils/exec.js';\nimport { getEntryPointFromManifest } from '../../utils/manifest.js';\nimport { isIpPort } from '../../utils/validation.js';\n\nexport const start = async () => {\n const [args, availablePort] = await Promise.all([\n parseRunArgs(process.argv.slice(2)),\n getPort(),\n ]);\n\n args.entryPoint ??= await getEntryPointFromManifest();\n\n const execProcess = createExec({\n env: {\n __SKUBA_ENTRY_POINT: args.entryPoint,\n __SKUBA_PORT: String(isIpPort(args.port) ? args.port : availablePort),\n },\n });\n\n return execProcess(\n 'tsx',\n 'watch',\n '--clear-screen=false',\n ...args.node,\n '--
|
|
4
|
+
"sourcesContent": ["import path from 'path';\n\nimport getPort from 'get-port';\n\nimport { parseRunArgs } from '../../utils/args.js';\nimport { createExec } from '../../utils/exec.js';\nimport { getEntryPointFromManifest } from '../../utils/manifest.js';\nimport { isIpPort } from '../../utils/validation.js';\n\nexport const start = async () => {\n const [args, availablePort] = await Promise.all([\n parseRunArgs(process.argv.slice(2)),\n getPort(),\n ]);\n\n args.entryPoint ??= await getEntryPointFromManifest();\n\n const execProcess = createExec({\n env: {\n __SKUBA_ENTRY_POINT: args.entryPoint,\n __SKUBA_PORT: String(isIpPort(args.port) ? args.port : availablePort),\n },\n });\n\n return execProcess(\n 'tsx',\n 'watch',\n '--clear-screen=false',\n ...args.node,\n '--env-file-if-exists',\n '.env',\n '--require',\n 'tsconfig-paths/register',\n path.join(__dirname, '..', '..', 'wrapper', 'index.js'),\n ...args.script,\n );\n};\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAEjB,sBAAoB;AAEpB,kBAA6B;AAC7B,kBAA2B;AAC3B,sBAA0C;AAC1C,wBAAyB;AAElB,MAAM,QAAQ,YAAY;AAC/B,QAAM,CAAC,MAAM,aAAa,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC9C,0BAAa,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,QAClC,gBAAAA,SAAQ;AAAA,EACV,CAAC;AAED,OAAK,eAAe,UAAM,2CAA0B;AAEpD,QAAM,kBAAc,wBAAW;AAAA,IAC7B,KAAK;AAAA,MACH,qBAAqB,KAAK;AAAA,MAC1B,cAAc,WAAO,4BAAS,KAAK,IAAI,IAAI,KAAK,OAAO,aAAa;AAAA,IACtE;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG,KAAK;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAAC,QAAK,KAAK,WAAW,MAAM,MAAM,WAAW,UAAU;AAAA,IACtD,GAAG,KAAK;AAAA,EACV;AACF;",
|
|
6
6
|
"names": ["getPort", "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-
|
|
3
|
+
"version": "13.0.0-custom-conditions-exports-20250730060544",
|
|
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",
|
|
@@ -67,7 +67,6 @@
|
|
|
67
67
|
"@types/node": "^22.0.0",
|
|
68
68
|
"chalk": "^4.1.0",
|
|
69
69
|
"concurrently": "^9.0.0",
|
|
70
|
-
"dotenv": "^16.0.0",
|
|
71
70
|
"ejs": "^3.1.6",
|
|
72
71
|
"enquirer": "^2.3.6",
|
|
73
72
|
"esbuild": "~0.25.0",
|
|
@@ -114,7 +113,7 @@
|
|
|
114
113
|
"@types/ejs": "3.1.5",
|
|
115
114
|
"@types/express": "5.0.3",
|
|
116
115
|
"@types/fs-extra": "11.0.4",
|
|
117
|
-
"@types/koa": "
|
|
116
|
+
"@types/koa": "3.0.0",
|
|
118
117
|
"@types/lodash.mergewith": "4.6.9",
|
|
119
118
|
"@types/minimist": "1.2.5",
|
|
120
119
|
"@types/module-alias": "2.0.4",
|
|
@@ -128,7 +127,7 @@
|
|
|
128
127
|
"fastify": "5.4.0",
|
|
129
128
|
"jest-diff": "30.0.4",
|
|
130
129
|
"jsonfile": "6.1.0",
|
|
131
|
-
"koa": "3.0.
|
|
130
|
+
"koa": "3.0.1",
|
|
132
131
|
"memfs": "4.17.2",
|
|
133
132
|
"remark-cli": "12.0.1",
|
|
134
133
|
"remark-preset-lint-recommended": "7.0.1",
|
|
@@ -30,17 +30,17 @@
|
|
|
30
30
|
"@opentelemetry/sdk-node": "^0.203.0",
|
|
31
31
|
"@seek/logger": "^10.0.0",
|
|
32
32
|
"hot-shots": "^10.0.0",
|
|
33
|
-
"koa": "^
|
|
33
|
+
"koa": "^3.0.1",
|
|
34
34
|
"koa-compose": "^4.1.0",
|
|
35
35
|
"seek-datadog-custom-metrics": "^4.6.3",
|
|
36
|
-
"seek-koala": "^7.
|
|
36
|
+
"seek-koala": "^7.1.0",
|
|
37
37
|
"skuba-dive": "^2.0.0",
|
|
38
38
|
"zod": "^3.25.67"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/chance": "^1.1.3",
|
|
42
42
|
"@types/co-body": "^6.1.3",
|
|
43
|
-
"@types/koa": "^
|
|
43
|
+
"@types/koa": "^3.0.0",
|
|
44
44
|
"@types/koa__router": "^12.0.0",
|
|
45
45
|
"@types/node": "^22.13.10",
|
|
46
46
|
"@types/supertest": "^6.0.0",
|
|
@@ -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-
|
|
46
|
+
"skuba": "13.0.0-custom-conditions-exports-20250730060544"
|
|
47
47
|
},
|
|
48
48
|
"packageManager": "pnpm@10.12.4",
|
|
49
49
|
"engines": {
|