diff --git a/package-lock.json b/package-lock.json index e1bd60b..5089abb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "ts-jest": "^29.1.0", "ts-loader": "^9.4.4", "ts-node": "10.9.2", - "typescript": "5.4.5" + "typescript": "5.5.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -12367,6 +12367,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@nx/eslint/node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@nx/jest": { "version": "19.8.3", "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.8.3.tgz", @@ -31308,9 +31322,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 1260a5d..fc4c147 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,6 @@ "ts-jest": "^29.1.0", "ts-loader": "^9.4.4", "ts-node": "10.9.2", - "typescript": "5.4.5" + "typescript": "5.5.4" } } diff --git a/tools/workspace-plugin/src/generators/handler/generator.spec.ts b/tools/workspace-plugin/src/generators/handler/generator.spec.ts index b8281d8..9cb8aa0 100644 --- a/tools/workspace-plugin/src/generators/handler/generator.spec.ts +++ b/tools/workspace-plugin/src/generators/handler/generator.spec.ts @@ -31,8 +31,8 @@ describe('handler generator', () => { const serverlessConfig = tree.read(`stacks/${options.project}/serverless.ts`); const contents = serverlessConfig.toString() - const nodes = tsquery.query(contents, `Identifier[name=${options.name}] ~ ObjectLiteralExpression`) - expect(nodes).toHaveLength(1) + const nodes = tsquery.query(contents, `PropertyAssignment:has(Identifier[name=functions]) StringLiteral`) + expect(nodes).toHaveLength(2) expect(tree.exists(`stacks/${options.project}/src/${options.name}.handler.ts`)).toBeTruthy() expect(tree.exists(`stacks/${options.project}/src/${options.name}.handler.spec.ts`)).toBeTruthy() diff --git a/tools/workspace-plugin/src/generators/handler/generator.ts b/tools/workspace-plugin/src/generators/handler/generator.ts index ff35b50..56b8ea8 100644 --- a/tools/workspace-plugin/src/generators/handler/generator.ts +++ b/tools/workspace-plugin/src/generators/handler/generator.ts @@ -19,7 +19,7 @@ export async function handlerGenerator( generateFiles(tree, join(__dirname, '../shared-files/handle'), projectRoot, { ...options, fileName }); const serverlessConfig = join(projectRoot, 'serverless.ts'); - const newContent = tsquery.replace(tree.read(serverlessConfig).toString(), 'Identifier[name=functions] ~ ObjectLiteralExpression', node => { + const newContent = tsquery.replace(tree.read(serverlessConfig).toString(), 'PropertyAssignment:has(Identifier[name=functions]) ObjectLiteralExpression', node => { const propAst = factory.createPropertyAssignment( factory.createStringLiteral(options.name), factory.createObjectLiteralExpression( @@ -39,7 +39,8 @@ export async function handlerGenerator( // Kinda hacky as we move into stringy stuff, but it works for what we need const content = node.getChildren()[1]; - return `{${content.getFullText()}${print(propAst)}}`; + const fullText = content.getFullText() + return fullText.includes('{') ? `{${fullText}${print(propAst)}}` : node.getFullText(); }); tree.write(serverlessConfig, newContent); diff --git a/tools/workspace-plugin/src/generators/stack/generator.spec.ts b/tools/workspace-plugin/src/generators/stack/generator.spec.ts index dbfa347..61d162c 100644 --- a/tools/workspace-plugin/src/generators/stack/generator.spec.ts +++ b/tools/workspace-plugin/src/generators/stack/generator.spec.ts @@ -32,7 +32,7 @@ describe('stack generator', () => { const serverlessConfig = tree.read(`stacks/${options.stack}/serverless.ts`); const contents = serverlessConfig.toString() - const nodes = tsquery.query(contents, `Identifier[name=${options.handler}] ~ ObjectLiteralExpression`) + const nodes = tsquery.query(contents, `PropertyAssignment:has(Identifier[name=${options.handler}]) StringLiteral`) expect(nodes).toHaveLength(1) }); });