skuba 16.0.1 → 16.0.2
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.
|
@@ -74,7 +74,7 @@ format: ${containsAwsLambdaNodeJsImport ? "aws_lambda_nodejs." : ""}OutputFormat
|
|
|
74
74
|
edits.push({
|
|
75
75
|
startPos: insertPos,
|
|
76
76
|
endPos: insertPos,
|
|
77
|
-
insertedText: "import { OutputFormat } from 'aws-cdk-lib/aws-
|
|
77
|
+
insertedText: "import { OutputFormat } from 'aws-cdk-lib/aws-lambda-nodejs';\n"
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
} else {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/cli/migrate/esm/migrateLambdas.ts"],
|
|
4
|
-
"sourcesContent": ["import { inspect } from 'util';\n\nimport { type Edit, parseAsync } from '@ast-grep/napi';\nimport fg from 'fast-glob';\nimport fs from 'fs-extra';\n\nimport { log } from '../../../utils/logging.js';\nimport { getCustomConditions } from '../../build/tsc.js';\nimport { registerAstGrepLanguages } from '../../lint/internalLints/registerAstGrepLanguages.js';\nimport type { PatchFunction } from '../../lint/internalLints/upgrade/index.js';\n\nconst migrateCdkLambdas = async (\n tsFiles: Array<{ file: string; contents: string }>,\n containsDatadogLambdaImport: boolean,\n) =>\n (\n await Promise.all(\n tsFiles.map(async ({ file, contents }) => {\n if (!contents.includes('NodejsFunction')) {\n return null;\n }\n\n const edits: Edit[] = [];\n\n const astRoot = (await parseAsync('TypeScript', contents)).root();\n\n const workerAst = astRoot.find({\n rule: {\n kind: 'new_expression',\n regex: '^new (aws_lambda_nodejs.NodejsFunction|NodejsFunction)',\n },\n });\n\n if (!workerAst) {\n return null;\n }\n\n const bundlingObject = workerAst.find({\n rule: {\n kind: 'object',\n inside: {\n kind: 'pair',\n regex: '^bundling',\n },\n },\n });\n\n if (!bundlingObject) {\n return null;\n }\n\n const format = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^format',\n },\n });\n\n const containsAwsLambdaNodeJsImport = astRoot.find({\n rule: {\n kind: 'import_specifier',\n regex: 'aws_lambda_nodejs',\n },\n });\n\n if (!format) {\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: `\\nformat: ${containsAwsLambdaNodeJsImport ? 'aws_lambda_nodejs.' : ''}OutputFormat.ESM,\\n`,\n });\n if (!containsAwsLambdaNodeJsImport) {\n const lastImport = astRoot.find({\n rule: {\n kind: 'import_statement',\n inside: {\n kind: 'program',\n },\n nthChild: {\n ofRule: {\n kind: 'import_statement',\n },\n position: 1,\n reverse: true,\n },\n },\n });\n\n const insertPos = lastImport\n ? lastImport.range().end.index\n : astRoot.range().start.index;\n\n edits.push({\n startPos: insertPos,\n endPos: insertPos,\n insertedText:\n \"import { OutputFormat } from 'aws-cdk-lib/aws-lambda_nodejs';\\n\",\n });\n }\n } else {\n edits.push(format.replace(format.text().replace('CJS', 'ESM')));\n }\n\n const mainFields = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^mainFields',\n },\n });\n\n if (!mainFields) {\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: \"\\nmainFields: ['module', 'main'],\\n\",\n });\n } else {\n edits.push(mainFields.replace(\"mainFields: ['module', 'main']\"));\n }\n\n const nodeModules = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^nodeModules',\n },\n });\n\n if (!nodeModules) {\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: \"\\nnodeModules: ['pino'],\\n\",\n });\n } else {\n const nodeModulesArray = nodeModules.find({\n rule: {\n kind: 'array',\n },\n });\n\n if (nodeModulesArray && !nodeModules.text().includes('pino')) {\n edits.push({\n startPos: nodeModulesArray.range().end.index - 1,\n endPos: nodeModulesArray.range().end.index - 1,\n insertedText: `${nodeModules.text().includes('[') ? ',' : ''} 'pino'`,\n });\n }\n }\n\n const esbuildArgs = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^esbuildArgs',\n },\n });\n\n if (!esbuildArgs) {\n const customCondition = getCustomConditions();\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: `\\nesbuildArgs: {\\n '--conditions': '${customCondition.join(',')},module',\\n},\\n`,\n });\n } else {\n const conditions = esbuildArgs.find({\n rule: {\n kind: 'pair',\n regex: \"^'--conditions'\",\n },\n });\n\n if (!conditions) {\n const customCondition = getCustomConditions();\n edits.push({\n startPos: esbuildArgs.range().end.index - 1,\n endPos: esbuildArgs.range().end.index - 1,\n insertedText: `\\n'--conditions': '${customCondition.join(',')},module',\\n`,\n });\n } else {\n const conditionsValue = conditions.field('value');\n if (conditionsValue && !conditionsValue.text().includes('module')) {\n edits.push({\n startPos: conditionsValue.range().end.index - 1,\n endPos: conditionsValue.range().end.index - 1,\n insertedText: ',module',\n });\n }\n }\n\n const datadogSettings = astRoot.find({\n rule: {\n kind: 'object',\n inside: {\n kind: 'arguments',\n inside: {\n kind: 'new_expression',\n regex: '^new DatadogLambda',\n },\n },\n },\n });\n\n const nodeLayerVersion = datadogSettings?.find({\n rule: {\n kind: 'pair',\n regex: '^nodeLayerVersion',\n },\n });\n\n const redirectHandler = datadogSettings?.find({\n rule: {\n kind: 'pair',\n regex: '^redirectHandler',\n },\n });\n\n if (datadogSettings && !nodeLayerVersion && !redirectHandler) {\n if (containsDatadogLambdaImport) {\n edits.push({\n startPos: datadogSettings.range().end.index - 1,\n endPos: datadogSettings.range().end.index - 1,\n insertedText: '\\nredirectHandler: false,\\n',\n });\n } else {\n const extensionVersion = datadogSettings.find({\n rule: {\n kind: 'lexical_declaration',\n regex: '^const DATADOG_EXTENSION_LAYER_VERSION ',\n },\n });\n\n const lastImport = astRoot.find({\n rule: {\n kind: 'import_statement',\n inside: {\n kind: 'program',\n },\n nthChild: {\n ofRule: {\n kind: 'import_statement',\n },\n position: 1,\n reverse: true,\n },\n },\n });\n\n const insertPos =\n extensionVersion?.range().end.index ??\n lastImport?.range().end.index ??\n astRoot.range().start.index;\n\n edits.push({\n startPos: insertPos,\n endPos: insertPos,\n insertedText: 'const DATADOG_NODE_LAYER_VERSION = 126;\\n',\n });\n\n edits.push({\n startPos: datadogSettings.range().end.index - 1,\n endPos: datadogSettings.range().end.index - 1,\n insertedText:\n '\\nnodeLayerVersion: DATADOG_NODE_LAYER_VERSION,\\n',\n });\n }\n }\n }\n\n if (!edits.length) {\n return null;\n }\n\n return {\n file,\n contents: astRoot.commitEdits(edits),\n };\n }),\n )\n ).filter((file) => file !== null);\n\nconst migrateServerlessLambdas = async (\n serverlessFiles: Array<{ file: string; contents: string }>,\n containsDatadogLambdaImport: boolean,\n) => {\n registerAstGrepLanguages();\n return (\n await Promise.all(\n serverlessFiles.map(async ({ file, contents }) => {\n if (!contents.includes('esbuild')) {\n return null;\n }\n\n const edits: Edit[] = [];\n\n const astRoot = (await parseAsync('yaml', contents)).root();\n\n const esbuildAst = astRoot.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^esbuild:',\n },\n },\n });\n\n if (!esbuildAst) {\n return null;\n }\n\n const conditions = esbuildAst.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^conditions:',\n },\n },\n });\n\n if (conditions) {\n const indent = conditions.range().start.column;\n edits.push({\n startPos: conditions.range().end.index,\n endPos: conditions.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}- module`,\n });\n } else {\n const indent = esbuildAst.range().start.column;\n edits.push({\n startPos: esbuildAst.range().end.index,\n endPos: esbuildAst.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}conditions:\\n${' '.repeat(\n indent + 2,\n )}- module\\n`,\n });\n }\n\n const external = esbuildAst.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^external:',\n },\n },\n });\n\n if (external) {\n const indent = external.range().start.column;\n if (!external.text().includes('pino')) {\n edits.push({\n startPos: external.range().start.index,\n endPos: external.range().start.index,\n insertedText: `- pino\\n${' '.repeat(indent)}`,\n });\n }\n } else {\n const indent = esbuildAst.range().start.column;\n edits.push({\n startPos: esbuildAst.range().end.index,\n endPos: esbuildAst.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}external:\\n${' '.repeat(\n indent + 2,\n )}- pino\\n`,\n });\n }\n\n const mainFields = esbuildAst.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^mainFields:',\n },\n },\n });\n\n if (!mainFields) {\n const indent = esbuildAst.range().start.column;\n edits.push({\n startPos: esbuildAst.range().end.index,\n endPos: esbuildAst.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}mainFields:\\n${' '.repeat(\n indent + 2,\n )}- module\\n${' '.repeat(indent + 2)}- main\\n`,\n });\n } else {\n edits.push(mainFields.replace('mainFields:\\n - module\\n - main\\n'));\n }\n\n const datadogSettings = astRoot.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^datadog:',\n },\n },\n });\n\n if (datadogSettings) {\n const addLayers = datadogSettings.find({\n rule: {\n kind: 'block_mapping_pair',\n regex: '^addLayers:',\n },\n });\n\n const addLayersDisabled = addLayers?.text().includes('false');\n\n if (addLayersDisabled && containsDatadogLambdaImport) {\n const redirectHandlers = datadogSettings.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^redirectHandlers:',\n },\n },\n });\n\n if (!redirectHandlers) {\n const indent = datadogSettings.range().start.column;\n edits.push({\n startPos: datadogSettings.range().end.index,\n endPos: datadogSettings.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}redirectHandlers: false\\n`,\n });\n }\n }\n }\n\n if (edits.length === 0) {\n return null;\n }\n\n return {\n file,\n contents: astRoot.commitEdits(edits),\n };\n }),\n )\n ).filter((file) => file !== null);\n};\n\nexport const migrateLambdas: PatchFunction = async ({ mode }) => {\n const [tsFilePaths, serverlessFilePaths] = await Promise.all([\n fg(['**/*.ts'], {\n ignore: ['**/.git', '**/node_modules'],\n }),\n fg(['**/serverless*.{yml,yaml}'], {\n ignore: ['**/.git', '**/node_modules'],\n }),\n ]);\n\n const [tsFiles, serverlessFiles] = await Promise.all([\n Promise.all(\n tsFilePaths.map(async (file) => {\n const contents = await fs.promises.readFile(file, 'utf8');\n\n return {\n file,\n contents,\n };\n }),\n ),\n Promise.all(\n serverlessFilePaths.map(async (file) => {\n const contents = await fs.promises.readFile(file, 'utf8');\n\n return {\n file,\n contents,\n };\n }),\n ),\n ]);\n\n const containsDatadogLambdaImport = tsFiles.some(\n ({ contents }) =>\n contents.includes('datadog-lambda-js') ||\n contents.includes('withLambdaExtension'),\n );\n\n const [patchedTsFiles, patchedServerlessFiles] = await Promise.all([\n migrateCdkLambdas(tsFiles, containsDatadogLambdaImport),\n migrateServerlessLambdas(serverlessFiles, containsDatadogLambdaImport),\n ]);\n\n if (!patchedTsFiles.length && !patchedServerlessFiles.length) {\n return {\n result: 'skip',\n reason: 'no lambdas to migrate',\n };\n }\n\n if (mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n await Promise.all(\n [...patchedTsFiles, ...patchedServerlessFiles].map(\n async ({ file, contents }) => {\n await fs.promises.writeFile(file, contents, 'utf8');\n },\n ),\n );\n\n return {\n result: 'apply',\n };\n};\n\nexport const tryMigrateLambdas: PatchFunction = async (opts) => {\n try {\n return await migrateLambdas(opts);\n } catch (err) {\n // Don't fail the entire lint/format if this fails since it's a non-critical part of the upgrade\n // and can be retried later by the user\n log.warn('Failed to migrate lambdas, skipping');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
|
|
4
|
+
"sourcesContent": ["import { inspect } from 'util';\n\nimport { type Edit, parseAsync } from '@ast-grep/napi';\nimport fg from 'fast-glob';\nimport fs from 'fs-extra';\n\nimport { log } from '../../../utils/logging.js';\nimport { getCustomConditions } from '../../build/tsc.js';\nimport { registerAstGrepLanguages } from '../../lint/internalLints/registerAstGrepLanguages.js';\nimport type { PatchFunction } from '../../lint/internalLints/upgrade/index.js';\n\nconst migrateCdkLambdas = async (\n tsFiles: Array<{ file: string; contents: string }>,\n containsDatadogLambdaImport: boolean,\n) =>\n (\n await Promise.all(\n tsFiles.map(async ({ file, contents }) => {\n if (!contents.includes('NodejsFunction')) {\n return null;\n }\n\n const edits: Edit[] = [];\n\n const astRoot = (await parseAsync('TypeScript', contents)).root();\n\n const workerAst = astRoot.find({\n rule: {\n kind: 'new_expression',\n regex: '^new (aws_lambda_nodejs.NodejsFunction|NodejsFunction)',\n },\n });\n\n if (!workerAst) {\n return null;\n }\n\n const bundlingObject = workerAst.find({\n rule: {\n kind: 'object',\n inside: {\n kind: 'pair',\n regex: '^bundling',\n },\n },\n });\n\n if (!bundlingObject) {\n return null;\n }\n\n const format = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^format',\n },\n });\n\n const containsAwsLambdaNodeJsImport = astRoot.find({\n rule: {\n kind: 'import_specifier',\n regex: 'aws_lambda_nodejs',\n },\n });\n\n if (!format) {\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: `\\nformat: ${containsAwsLambdaNodeJsImport ? 'aws_lambda_nodejs.' : ''}OutputFormat.ESM,\\n`,\n });\n if (!containsAwsLambdaNodeJsImport) {\n const lastImport = astRoot.find({\n rule: {\n kind: 'import_statement',\n inside: {\n kind: 'program',\n },\n nthChild: {\n ofRule: {\n kind: 'import_statement',\n },\n position: 1,\n reverse: true,\n },\n },\n });\n\n const insertPos = lastImport\n ? lastImport.range().end.index\n : astRoot.range().start.index;\n\n edits.push({\n startPos: insertPos,\n endPos: insertPos,\n insertedText:\n \"import { OutputFormat } from 'aws-cdk-lib/aws-lambda-nodejs';\\n\",\n });\n }\n } else {\n edits.push(format.replace(format.text().replace('CJS', 'ESM')));\n }\n\n const mainFields = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^mainFields',\n },\n });\n\n if (!mainFields) {\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: \"\\nmainFields: ['module', 'main'],\\n\",\n });\n } else {\n edits.push(mainFields.replace(\"mainFields: ['module', 'main']\"));\n }\n\n const nodeModules = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^nodeModules',\n },\n });\n\n if (!nodeModules) {\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: \"\\nnodeModules: ['pino'],\\n\",\n });\n } else {\n const nodeModulesArray = nodeModules.find({\n rule: {\n kind: 'array',\n },\n });\n\n if (nodeModulesArray && !nodeModules.text().includes('pino')) {\n edits.push({\n startPos: nodeModulesArray.range().end.index - 1,\n endPos: nodeModulesArray.range().end.index - 1,\n insertedText: `${nodeModules.text().includes('[') ? ',' : ''} 'pino'`,\n });\n }\n }\n\n const esbuildArgs = bundlingObject.find({\n rule: {\n kind: 'pair',\n regex: '^esbuildArgs',\n },\n });\n\n if (!esbuildArgs) {\n const customCondition = getCustomConditions();\n edits.push({\n startPos: bundlingObject.range().end.index - 1,\n endPos: bundlingObject.range().end.index - 1,\n insertedText: `\\nesbuildArgs: {\\n '--conditions': '${customCondition.join(',')},module',\\n},\\n`,\n });\n } else {\n const conditions = esbuildArgs.find({\n rule: {\n kind: 'pair',\n regex: \"^'--conditions'\",\n },\n });\n\n if (!conditions) {\n const customCondition = getCustomConditions();\n edits.push({\n startPos: esbuildArgs.range().end.index - 1,\n endPos: esbuildArgs.range().end.index - 1,\n insertedText: `\\n'--conditions': '${customCondition.join(',')},module',\\n`,\n });\n } else {\n const conditionsValue = conditions.field('value');\n if (conditionsValue && !conditionsValue.text().includes('module')) {\n edits.push({\n startPos: conditionsValue.range().end.index - 1,\n endPos: conditionsValue.range().end.index - 1,\n insertedText: ',module',\n });\n }\n }\n\n const datadogSettings = astRoot.find({\n rule: {\n kind: 'object',\n inside: {\n kind: 'arguments',\n inside: {\n kind: 'new_expression',\n regex: '^new DatadogLambda',\n },\n },\n },\n });\n\n const nodeLayerVersion = datadogSettings?.find({\n rule: {\n kind: 'pair',\n regex: '^nodeLayerVersion',\n },\n });\n\n const redirectHandler = datadogSettings?.find({\n rule: {\n kind: 'pair',\n regex: '^redirectHandler',\n },\n });\n\n if (datadogSettings && !nodeLayerVersion && !redirectHandler) {\n if (containsDatadogLambdaImport) {\n edits.push({\n startPos: datadogSettings.range().end.index - 1,\n endPos: datadogSettings.range().end.index - 1,\n insertedText: '\\nredirectHandler: false,\\n',\n });\n } else {\n const extensionVersion = datadogSettings.find({\n rule: {\n kind: 'lexical_declaration',\n regex: '^const DATADOG_EXTENSION_LAYER_VERSION ',\n },\n });\n\n const lastImport = astRoot.find({\n rule: {\n kind: 'import_statement',\n inside: {\n kind: 'program',\n },\n nthChild: {\n ofRule: {\n kind: 'import_statement',\n },\n position: 1,\n reverse: true,\n },\n },\n });\n\n const insertPos =\n extensionVersion?.range().end.index ??\n lastImport?.range().end.index ??\n astRoot.range().start.index;\n\n edits.push({\n startPos: insertPos,\n endPos: insertPos,\n insertedText: 'const DATADOG_NODE_LAYER_VERSION = 126;\\n',\n });\n\n edits.push({\n startPos: datadogSettings.range().end.index - 1,\n endPos: datadogSettings.range().end.index - 1,\n insertedText:\n '\\nnodeLayerVersion: DATADOG_NODE_LAYER_VERSION,\\n',\n });\n }\n }\n }\n\n if (!edits.length) {\n return null;\n }\n\n return {\n file,\n contents: astRoot.commitEdits(edits),\n };\n }),\n )\n ).filter((file) => file !== null);\n\nconst migrateServerlessLambdas = async (\n serverlessFiles: Array<{ file: string; contents: string }>,\n containsDatadogLambdaImport: boolean,\n) => {\n registerAstGrepLanguages();\n return (\n await Promise.all(\n serverlessFiles.map(async ({ file, contents }) => {\n if (!contents.includes('esbuild')) {\n return null;\n }\n\n const edits: Edit[] = [];\n\n const astRoot = (await parseAsync('yaml', contents)).root();\n\n const esbuildAst = astRoot.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^esbuild:',\n },\n },\n });\n\n if (!esbuildAst) {\n return null;\n }\n\n const conditions = esbuildAst.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^conditions:',\n },\n },\n });\n\n if (conditions) {\n const indent = conditions.range().start.column;\n edits.push({\n startPos: conditions.range().end.index,\n endPos: conditions.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}- module`,\n });\n } else {\n const indent = esbuildAst.range().start.column;\n edits.push({\n startPos: esbuildAst.range().end.index,\n endPos: esbuildAst.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}conditions:\\n${' '.repeat(\n indent + 2,\n )}- module\\n`,\n });\n }\n\n const external = esbuildAst.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^external:',\n },\n },\n });\n\n if (external) {\n const indent = external.range().start.column;\n if (!external.text().includes('pino')) {\n edits.push({\n startPos: external.range().start.index,\n endPos: external.range().start.index,\n insertedText: `- pino\\n${' '.repeat(indent)}`,\n });\n }\n } else {\n const indent = esbuildAst.range().start.column;\n edits.push({\n startPos: esbuildAst.range().end.index,\n endPos: esbuildAst.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}external:\\n${' '.repeat(\n indent + 2,\n )}- pino\\n`,\n });\n }\n\n const mainFields = esbuildAst.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^mainFields:',\n },\n },\n });\n\n if (!mainFields) {\n const indent = esbuildAst.range().start.column;\n edits.push({\n startPos: esbuildAst.range().end.index,\n endPos: esbuildAst.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}mainFields:\\n${' '.repeat(\n indent + 2,\n )}- module\\n${' '.repeat(indent + 2)}- main\\n`,\n });\n } else {\n edits.push(mainFields.replace('mainFields:\\n - module\\n - main\\n'));\n }\n\n const datadogSettings = astRoot.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^datadog:',\n },\n },\n });\n\n if (datadogSettings) {\n const addLayers = datadogSettings.find({\n rule: {\n kind: 'block_mapping_pair',\n regex: '^addLayers:',\n },\n });\n\n const addLayersDisabled = addLayers?.text().includes('false');\n\n if (addLayersDisabled && containsDatadogLambdaImport) {\n const redirectHandlers = datadogSettings.find({\n rule: {\n kind: 'block_node',\n inside: {\n kind: 'block_mapping_pair',\n regex: '^redirectHandlers:',\n },\n },\n });\n\n if (!redirectHandlers) {\n const indent = datadogSettings.range().start.column;\n edits.push({\n startPos: datadogSettings.range().end.index,\n endPos: datadogSettings.range().end.index,\n insertedText: `\\n${' '.repeat(indent)}redirectHandlers: false\\n`,\n });\n }\n }\n }\n\n if (edits.length === 0) {\n return null;\n }\n\n return {\n file,\n contents: astRoot.commitEdits(edits),\n };\n }),\n )\n ).filter((file) => file !== null);\n};\n\nexport const migrateLambdas: PatchFunction = async ({ mode }) => {\n const [tsFilePaths, serverlessFilePaths] = await Promise.all([\n fg(['**/*.ts'], {\n ignore: ['**/.git', '**/node_modules'],\n }),\n fg(['**/serverless*.{yml,yaml}'], {\n ignore: ['**/.git', '**/node_modules'],\n }),\n ]);\n\n const [tsFiles, serverlessFiles] = await Promise.all([\n Promise.all(\n tsFilePaths.map(async (file) => {\n const contents = await fs.promises.readFile(file, 'utf8');\n\n return {\n file,\n contents,\n };\n }),\n ),\n Promise.all(\n serverlessFilePaths.map(async (file) => {\n const contents = await fs.promises.readFile(file, 'utf8');\n\n return {\n file,\n contents,\n };\n }),\n ),\n ]);\n\n const containsDatadogLambdaImport = tsFiles.some(\n ({ contents }) =>\n contents.includes('datadog-lambda-js') ||\n contents.includes('withLambdaExtension'),\n );\n\n const [patchedTsFiles, patchedServerlessFiles] = await Promise.all([\n migrateCdkLambdas(tsFiles, containsDatadogLambdaImport),\n migrateServerlessLambdas(serverlessFiles, containsDatadogLambdaImport),\n ]);\n\n if (!patchedTsFiles.length && !patchedServerlessFiles.length) {\n return {\n result: 'skip',\n reason: 'no lambdas to migrate',\n };\n }\n\n if (mode === 'lint') {\n return {\n result: 'apply',\n };\n }\n\n await Promise.all(\n [...patchedTsFiles, ...patchedServerlessFiles].map(\n async ({ file, contents }) => {\n await fs.promises.writeFile(file, contents, 'utf8');\n },\n ),\n );\n\n return {\n result: 'apply',\n };\n};\n\nexport const tryMigrateLambdas: PatchFunction = async (opts) => {\n try {\n return await migrateLambdas(opts);\n } catch (err) {\n // Don't fail the entire lint/format if this fails since it's a non-critical part of the upgrade\n // and can be retried later by the user\n log.warn('Failed to migrate lambdas, skipping');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skuba",
|
|
3
|
-
"version": "16.0.
|
|
3
|
+
"version": "16.0.2",
|
|
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",
|
|
@@ -106,9 +106,9 @@
|
|
|
106
106
|
"typescript": "~5.9.0",
|
|
107
107
|
"vitest": "^4.1.4",
|
|
108
108
|
"zod": "^4.3.5",
|
|
109
|
-
"@skuba-lib/api": "^2.1.0",
|
|
110
109
|
"eslint-config-skuba": "9.0.0",
|
|
111
|
-
"pnpm-plugin-skuba": "3.0.0"
|
|
110
|
+
"pnpm-plugin-skuba": "3.0.0",
|
|
111
|
+
"@skuba-lib/api": "^2.1.0"
|
|
112
112
|
},
|
|
113
113
|
"devDependencies": {
|
|
114
114
|
"@changesets/cli": "2.31.0",
|