@aws/nx-plugin 0.4.0 → 0.5.1

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.
Files changed (38) hide show
  1. package/LICENSE-THIRD-PARTY +21 -0
  2. package/package.json +1 -1
  3. package/src/infra/app/__snapshots__/generator.spec.ts.snap +3 -1
  4. package/src/infra/app/generator.js +1 -1
  5. package/src/infra/app/generator.js.map +1 -1
  6. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +317 -6
  7. package/src/trpc/backend/files/backend/README.md.template +5 -1
  8. package/src/trpc/backend/files/backend/src/client/index.ts.template +33 -0
  9. package/src/trpc/backend/files/backend/src/client/sigv4.ts.template +9 -0
  10. package/src/trpc/backend/files/backend/src/index.ts.template +3 -1
  11. package/src/trpc/backend/files/backend/src/init.ts.template +18 -0
  12. package/src/trpc/backend/files/backend/src/local-server.ts.template +17 -0
  13. package/src/trpc/backend/files/backend/src/middleware/error.ts.template +26 -0
  14. package/src/trpc/backend/files/backend/src/middleware/index.ts.template +15 -0
  15. package/src/trpc/backend/files/backend/src/middleware/logger.ts.template +26 -0
  16. package/src/trpc/backend/files/backend/src/middleware/metrics.ts.template +36 -0
  17. package/src/trpc/backend/files/backend/src/middleware/tracer.ts.template +44 -0
  18. package/src/trpc/backend/files/backend/src/procedures/echo.ts.template +8 -0
  19. package/src/trpc/backend/files/backend/src/router.ts.template +20 -0
  20. package/src/trpc/backend/files/common/constructs/src/app/trpc-apis/__apiNameKebabCase__.ts.template +1 -1
  21. package/src/trpc/backend/files/schema/src/index.ts.template +1 -7
  22. package/src/trpc/backend/files/schema/src/procedures/echo.ts.template +13 -0
  23. package/src/trpc/backend/generator.js +10 -1
  24. package/src/trpc/backend/generator.js.map +1 -1
  25. package/src/trpc/backend/schema.d.ts +0 -2
  26. package/src/trpc/backend/schema.json +0 -13
  27. package/src/trpc/react/files/src/hooks/useSigV4.tsx.template +20 -3
  28. package/src/trpc/react/generator.js +1 -1
  29. package/src/trpc/react/generator.js.map +1 -1
  30. package/src/utils/test.d.ts +4 -0
  31. package/src/utils/test.js +16 -1
  32. package/src/utils/test.js.map +1 -1
  33. package/src/utils/versions.d.ts +3 -1
  34. package/src/utils/versions.js +2 -0
  35. package/src/utils/versions.js.map +1 -1
  36. package/src/trpc/backend/files/backend/src/lambdas/index.ts.template +0 -1
  37. package/src/trpc/backend/files/backend/src/lambdas/middleware.ts.template +0 -146
  38. package/src/trpc/backend/files/backend/src/lambdas/router.ts.template +0 -36
@@ -39247,6 +39247,27 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
39247
39247
 
39248
39248
  ---
39249
39249
 
39250
+ The following software may be included in this product: semver (7.7.1)
39251
+ This software contains the following license and notice below:
39252
+
39253
+ The ISC License
39254
+
39255
+ Copyright (c) Isaac Z. Schlueter and Contributors
39256
+
39257
+ Permission to use, copy, modify, and/or distribute this software for any
39258
+ purpose with or without fee is hereby granted, provided that the above
39259
+ copyright notice and this permission notice appear in all copies.
39260
+
39261
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
39262
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
39263
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
39264
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
39265
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
39266
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
39267
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
39268
+
39269
+ ---
39270
+
39250
39271
  The following software may be included in this product: setprototypeof (1.2.0)
39251
39272
  This software contains the following license and notice below:
39252
39273
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "license": "Apache-2.0",
@@ -147,6 +147,7 @@ exports[`infra generator > should configure project.json with correct targets >
147
147
  "cache": true,
148
148
  "dependsOn": [
149
149
  "^build",
150
+ "compile",
150
151
  ],
151
152
  "executor": "nx:run-commands",
152
153
  "options": {
@@ -484,7 +485,7 @@ exports[`infra generator > should generate files with correct content > project-
484
485
  "cache": true,
485
486
  "executor": "nx:run-commands",
486
487
  "outputs": ["{workspaceRoot}/dist/packages/test/cdk.out"],
487
- "dependsOn": ["^build"],
488
+ "dependsOn": ["^build", "compile"],
488
489
  "options": {
489
490
  "cwd": "packages/test",
490
491
  "command": "cdk synth"
@@ -792,6 +793,7 @@ exports[`infra generator > should handle custom project names correctly > custom
792
793
  "cache": true,
793
794
  "dependsOn": [
794
795
  "^build",
796
+ "compile",
795
797
  ],
796
798
  "executor": "nx:run-commands",
797
799
  "options": {
@@ -51,7 +51,7 @@ function infraGenerator(tree, schema) {
51
51
  cache: true,
52
52
  executor: 'nx:run-commands',
53
53
  outputs: [`{workspaceRoot}${synthDirFromRoot}`],
54
- dependsOn: ['^build'],
54
+ dependsOn: ['^build', 'compile'], // compile clobbers dist directory, so ensure synth runs afterwards
55
55
  options: {
56
56
  cwd: libraryRoot,
57
57
  command: 'cdk synth',
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/infra/app/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/infra/app/generator.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,329 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`trpc backend generator > should generate backend and schema projects > backend-index.ts 1`] = `
4
- "export * from './lambdas/index.js';
3
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/client/index.ts 1`] = `
4
+ "import {
5
+ createTRPCClient,
6
+ httpBatchLink,
7
+ httpLink,
8
+ HTTPBatchLinkOptions,
9
+ HTTPLinkOptions,
10
+ splitLink,
11
+ } from '@trpc/client';
12
+
13
+ import { AppRouter } from '../router.js';
14
+ import { sigv4Fetch } from './sigv4.js';
15
+
16
+ export interface TestApiClientConfig {
17
+ readonly url: string;
18
+ }
19
+
20
+ export const createTestApiClient = (config: TestApiClientConfig) => {
21
+ const linkOptions: HTTPLinkOptions<any> & HTTPBatchLinkOptions<any> = {
22
+ url: config.url,
23
+ fetch: sigv4Fetch,
24
+ };
25
+ return createTRPCClient<AppRouter>({
26
+ links: [
27
+ splitLink({
28
+ condition(op) {
29
+ return op.context.skipBatch === true;
30
+ },
31
+ true: httpLink(linkOptions),
32
+ false: httpBatchLink(linkOptions),
33
+ }),
34
+ ],
35
+ });
36
+ };
37
+ "
38
+ `;
39
+
40
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/client/sigv4.ts 1`] = `
41
+ "import { AwsClient } from 'aws4fetch';
42
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
43
+
44
+ const credentialProvider = fromNodeProviderChain();
45
+
46
+ export const sigv4Fetch = (async (...args) => {
47
+ const client = new AwsClient(await credentialProvider());
48
+ return client.fetch(...args);
49
+ }) satisfies AwsClient['fetch'];
50
+ "
51
+ `;
52
+
53
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/index.ts 1`] = `
54
+ "export type { AppRouter } from './router.js';
55
+ export type { Context } from './init.js';
56
+ export * from './client/index.js';
57
+ "
58
+ `;
59
+
60
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/init.ts 1`] = `
61
+ "import { initTRPC } from '@trpc/server';
62
+ import {
63
+ createErrorPlugin,
64
+ createLoggerPlugin,
65
+ createMetricsPlugin,
66
+ createTracerPlugin,
67
+ IMiddlewareContext,
68
+ } from './middleware/index.js';
69
+
70
+ export type Context = IMiddlewareContext;
71
+
72
+ export const t = initTRPC.context<Context>().create();
73
+
74
+ export const publicProcedure = t.procedure
75
+ .unstable_concat(createLoggerPlugin())
76
+ .unstable_concat(createTracerPlugin())
77
+ .unstable_concat(createMetricsPlugin())
78
+ .unstable_concat(createErrorPlugin());
5
79
  "
6
80
  `;
7
81
 
8
- exports[`trpc backend generator > should generate backend and schema projects > schema-index.ts 1`] = `
82
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/local-server.ts 1`] = `
83
+ "import { createHTTPServer } from '@trpc/server/adapters/standalone';
84
+ import { appRouter } from './router.js';
85
+
86
+ const PORT = 2022;
87
+
88
+ createHTTPServer({
89
+ router: appRouter,
90
+ createContext() {
91
+ return {
92
+ event: {} as any,
93
+ context: {} as any,
94
+ info: {} as any,
95
+ };
96
+ },
97
+ }).listen(PORT);
98
+
99
+ console.log(\`Local TRPC server listening on port \${PORT}\`);
100
+ "
101
+ `;
102
+
103
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/middleware/error.ts 1`] = `
104
+ "import { initTRPC, TRPCError } from '@trpc/server';
105
+
106
+ export const createErrorPlugin = () => {
107
+ const t = initTRPC.context().create();
108
+ return t.procedure.use(async (opts) => {
109
+ const response = await opts.next({
110
+ ctx: {
111
+ ...opts.ctx,
112
+ },
113
+ });
114
+
115
+ if (!response.ok) {
116
+ if (response.error instanceof TRPCError) {
117
+ throw response.error;
118
+ }
119
+
120
+ throw new TRPCError({
121
+ code: 'INTERNAL_SERVER_ERROR',
122
+ message: 'An unexpected error occurred, please try again later.',
123
+ cause: response.error,
124
+ });
125
+ }
126
+
127
+ return response;
128
+ });
129
+ };
130
+ "
131
+ `;
132
+
133
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/middleware/index.ts 1`] = `
134
+ "import { CreateAWSLambdaContextOptions } from '@trpc/server/adapters/aws-lambda';
135
+ import type { APIGatewayProxyEventV2WithIAMAuthorizer } from 'aws-lambda';
136
+ import { ILoggerContext } from './logger.js';
137
+ import { IMetricsContext } from './metrics.js';
138
+ import { ITracerContext } from './tracer.js';
139
+
140
+ export * from './logger.js';
141
+ export * from './metrics.js';
142
+ export * from './tracer.js';
143
+ export * from './error.js';
144
+
145
+ export type IMiddlewareContext =
146
+ CreateAWSLambdaContextOptions<APIGatewayProxyEventV2WithIAMAuthorizer> &
147
+ ILoggerContext &
148
+ IMetricsContext &
149
+ ITracerContext;
150
+ "
151
+ `;
152
+
153
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/middleware/logger.ts 1`] = `
154
+ "import { initTRPC } from '@trpc/server';
155
+ import { Logger } from '@aws-lambda-powertools/logger';
156
+
157
+ export interface ILoggerContext {
158
+ logger?: Logger;
159
+ }
160
+
161
+ export const createLoggerPlugin = () => {
162
+ const t = initTRPC.context<ILoggerContext>().create();
163
+ return t.procedure.use(async (opts) => {
164
+ const logger = new Logger();
165
+
166
+ const response = await opts.next({
167
+ ctx: {
168
+ ...opts.ctx,
169
+ logger,
170
+ },
171
+ });
172
+
173
+ if (!response.ok) {
174
+ logger.error('Unexpected error occured', response.error.cause ?? '');
175
+ }
176
+
177
+ return response;
178
+ });
179
+ };
180
+ "
181
+ `;
182
+
183
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/middleware/metrics.ts 1`] = `
184
+ "import { initTRPC } from '@trpc/server';
185
+ import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
186
+
187
+ export interface IMetricsContext {
188
+ metrics?: Metrics;
189
+ }
190
+
191
+ export const createMetricsPlugin = () => {
192
+ const t = initTRPC.context<IMetricsContext>().create();
193
+
194
+ return t.procedure.use(async (opts) => {
195
+ const metrics = new Metrics();
196
+ metrics.captureColdStartMetric();
197
+
198
+ metrics.addMetric('requestCount', MetricUnit.Count, 1);
199
+
200
+ try {
201
+ const response = await opts.next({
202
+ ctx: {
203
+ ...opts.ctx,
204
+ metrics,
205
+ },
206
+ });
207
+
208
+ if (!response.ok) {
209
+ metrics.addMetric('errorCount', MetricUnit.Count, 1);
210
+ } else {
211
+ metrics.addMetric('successCount', MetricUnit.Count, 1);
212
+ }
213
+
214
+ return response;
215
+ } finally {
216
+ metrics.publishStoredMetrics();
217
+ }
218
+ });
219
+ };
220
+ "
221
+ `;
222
+
223
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/middleware/tracer.ts 1`] = `
224
+ "import { initTRPC } from '@trpc/server';
225
+ import { Tracer } from '@aws-lambda-powertools/tracer';
226
+ import { Subsegment } from 'aws-xray-sdk-core';
227
+
228
+ export interface ITracerContext {
229
+ tracer?: Tracer;
230
+ }
231
+
232
+ export const createTracerPlugin = () => {
233
+ const t = initTRPC.context<ITracerContext>().create();
234
+
235
+ return t.procedure.use(async (opts) => {
236
+ const tracer = new Tracer();
237
+ const segment = tracer.getSegment();
238
+ let handlerSegment: Subsegment | undefined;
239
+
240
+ if (segment) {
241
+ handlerSegment = segment.addNewSubsegment(\`## \${opts.path}\`);
242
+ tracer.setSegment(handlerSegment);
243
+ }
244
+
245
+ tracer.annotateColdStart();
246
+ tracer.addServiceNameAnnotation();
247
+
248
+ try {
249
+ const response = await opts.next({
250
+ ctx: {
251
+ ...opts.ctx,
252
+ tracer,
253
+ },
254
+ });
255
+
256
+ if (!response.ok && response.error.cause instanceof Error) {
257
+ tracer.addErrorAsMetadata(response.error.cause);
258
+ }
259
+ return response;
260
+ } finally {
261
+ if (segment && handlerSegment) {
262
+ handlerSegment.close();
263
+ tracer.setSegment(segment);
264
+ }
265
+ }
266
+ });
267
+ };
268
+ "
269
+ `;
270
+
271
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/procedures/echo.ts 1`] = `
272
+ "import { publicProcedure } from '../init.js';
273
+ import { EchoInputSchema, EchoOutputSchema } from ':proj/test-api-schema';
274
+
275
+ export const echo = publicProcedure
276
+ .input(EchoInputSchema)
277
+ .output(EchoOutputSchema)
278
+ .query((opts) => ({ result: opts.input.message }));
279
+ "
280
+ `;
281
+
282
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/backend/src/router.ts 1`] = `
283
+ "import {
284
+ awsLambdaRequestHandler,
285
+ CreateAWSLambdaContextOptions,
286
+ } from '@trpc/server/adapters/aws-lambda';
287
+ import { echo } from './procedures/echo.js';
288
+ import { t } from './init.js';
289
+ import { APIGatewayProxyEventV2WithIAMAuthorizer } from 'aws-lambda';
290
+
291
+ export const router = t.router;
292
+
293
+ export const appRouter = router({
294
+ echo,
295
+ });
296
+
297
+ export const handler = awsLambdaRequestHandler({
298
+ router: appRouter,
299
+ createContext: (
300
+ ctx: CreateAWSLambdaContextOptions<APIGatewayProxyEventV2WithIAMAuthorizer>,
301
+ ) => ctx,
302
+ });
303
+
304
+ export type AppRouter = typeof appRouter;
305
+ "
306
+ `;
307
+
308
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/schema/src/index.ts 1`] = `
309
+ "export * from './procedures/echo.js';
310
+ "
311
+ `;
312
+
313
+ exports[`trpc backend generator > should generate backend and schema projects > apps/test-api/schema/src/procedures/echo.ts 1`] = `
9
314
  "import { z } from 'zod';
10
315
 
11
- export const EchoSchema = z.object({
316
+ export const EchoInputSchema = z.object({
317
+ message: z.string(),
318
+ });
319
+
320
+ export type IEchoInput = z.TypeOf<typeof EchoInputSchema>;
321
+
322
+ export const EchoOutputSchema = z.object({
12
323
  result: z.string(),
13
324
  });
14
325
 
15
- export type IEcho = z.TypeOf<typeof EchoSchema>;
326
+ export type IEchoOutput = z.TypeOf<typeof EchoOutputSchema>;
16
327
  "
17
328
  `;
18
329
 
@@ -33,7 +344,7 @@ export class TestApi extends TrpcApi {
33
344
  defaultAuthorizer: new HttpIamAuthorizer(),
34
345
  handlerFilePath: url.fileURLToPath(
35
346
  new URL(
36
- '../../../../../../apps/test-api/backend/src/lambdas/router.ts',
347
+ '../../../../../../apps/test-api/backend/src/router.ts',
37
348
  import.meta.url,
38
349
  ),
39
350
  ),
@@ -6,6 +6,10 @@ This library was generated with [@aws/nx-plugin](https://github.com/awslabs/nx-p
6
6
 
7
7
  Run `<%= pkgMgrCmd %> nx build <%= backendProjectName %> [--skip-nx-cache]` to build the application.
8
8
 
9
+ ## Running local server
10
+
11
+ Run `<%= pkgMgrCmd %> nx serve <%= backendProjectName %>` to start a local server
12
+
9
13
  ## Running unit tests
10
14
 
11
15
  Run `<%= pkgMgrCmd %> nx test <%= backendProjectName %>` to execute the unit tests via Vitest.
@@ -28,6 +32,6 @@ You can also automatiaclly fix some lint errors by running the following command
28
32
 
29
33
  ## Useful links
30
34
 
31
- - [Trpc reference docs](TODO)
35
+ - [tRPC reference docs](https://trpc.io/docs/)
32
36
  - [Learn more about NX](https://nx.dev/getting-started/intro)
33
37
 
@@ -0,0 +1,33 @@
1
+ import {
2
+ createTRPCClient,
3
+ httpBatchLink,
4
+ httpLink,
5
+ HTTPBatchLinkOptions,
6
+ HTTPLinkOptions,
7
+ splitLink,
8
+ } from '@trpc/client';
9
+
10
+ import { AppRouter } from "../router.js";
11
+ import { sigv4Fetch } from './sigv4.js';
12
+
13
+ export interface <%= apiNameClassName %>ClientConfig {
14
+ readonly url: string;
15
+ }
16
+
17
+ export const create<%= apiNameClassName %>Client = (config: <%= apiNameClassName %>ClientConfig) => {
18
+ const linkOptions: HTTPLinkOptions<any> & HTTPBatchLinkOptions<any> = {
19
+ url: config.url,
20
+ fetch: sigv4Fetch,
21
+ };
22
+ return createTRPCClient<AppRouter>({
23
+ links: [
24
+ splitLink({
25
+ condition(op) {
26
+ return op.context.skipBatch === true;
27
+ },
28
+ true: httpLink(linkOptions),
29
+ false: httpBatchLink(linkOptions),
30
+ }),
31
+ ],
32
+ });
33
+ };
@@ -0,0 +1,9 @@
1
+ import { AwsClient } from 'aws4fetch';
2
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
3
+
4
+ const credentialProvider = fromNodeProviderChain();
5
+
6
+ export const sigv4Fetch = (async (...args) => {
7
+ const client = new AwsClient(await credentialProvider());
8
+ return client.fetch(...args);
9
+ }) satisfies AwsClient['fetch'];
@@ -1 +1,3 @@
1
- export * from './lambdas/index.js';
1
+ export type { AppRouter } from './router.js';
2
+ export type { Context } from './init.js';
3
+ export * from './client/index.js';
@@ -0,0 +1,18 @@
1
+ import { initTRPC } from '@trpc/server';
2
+ import {
3
+ createErrorPlugin,
4
+ createLoggerPlugin,
5
+ createMetricsPlugin,
6
+ createTracerPlugin,
7
+ IMiddlewareContext,
8
+ } from './middleware/index.js';
9
+
10
+ export type Context = IMiddlewareContext;
11
+
12
+ export const t = initTRPC.context<Context>().create();
13
+
14
+ export const publicProcedure = t.procedure
15
+ .unstable_concat(createLoggerPlugin())
16
+ .unstable_concat(createTracerPlugin())
17
+ .unstable_concat(createMetricsPlugin())
18
+ .unstable_concat(createErrorPlugin());
@@ -0,0 +1,17 @@
1
+ import { createHTTPServer } from '@trpc/server/adapters/standalone';
2
+ import { appRouter } from './router.js';
3
+
4
+ const PORT = 2022;
5
+
6
+ createHTTPServer({
7
+ router: appRouter,
8
+ createContext() {
9
+ return {
10
+ event: {} as any,
11
+ context: {} as any,
12
+ info: {} as any,
13
+ };
14
+ },
15
+ }).listen(PORT);
16
+
17
+ console.log(`Local TRPC server listening on port ${PORT}`);
@@ -0,0 +1,26 @@
1
+ import { initTRPC, TRPCError } from '@trpc/server';
2
+
3
+ export const createErrorPlugin = () => {
4
+ const t = initTRPC.context().create();
5
+ return t.procedure.use(async (opts) => {
6
+ const response = await opts.next({
7
+ ctx: {
8
+ ...opts.ctx,
9
+ },
10
+ });
11
+
12
+ if (!response.ok) {
13
+ if (response.error instanceof TRPCError) {
14
+ throw response.error;
15
+ }
16
+
17
+ throw new TRPCError({
18
+ code: 'INTERNAL_SERVER_ERROR',
19
+ message: 'An unexpected error occurred, please try again later.',
20
+ cause: response.error,
21
+ });
22
+ }
23
+
24
+ return response;
25
+ });
26
+ };
@@ -0,0 +1,15 @@
1
+ import { CreateAWSLambdaContextOptions } from '@trpc/server/adapters/aws-lambda';
2
+ import type { APIGatewayProxyEventV2WithIAMAuthorizer } from 'aws-lambda';
3
+ import { ILoggerContext } from './logger.js';
4
+ import { IMetricsContext } from './metrics.js';
5
+ import { ITracerContext } from './tracer.js';
6
+
7
+ export * from './logger.js';
8
+ export * from './metrics.js';
9
+ export * from './tracer.js';
10
+ export * from './error.js';
11
+
12
+ export type IMiddlewareContext = CreateAWSLambdaContextOptions<APIGatewayProxyEventV2WithIAMAuthorizer>
13
+ & ILoggerContext
14
+ & IMetricsContext
15
+ & ITracerContext;
@@ -0,0 +1,26 @@
1
+ import { initTRPC } from '@trpc/server';
2
+ import { Logger } from '@aws-lambda-powertools/logger';
3
+
4
+ export interface ILoggerContext {
5
+ logger?: Logger;
6
+ }
7
+
8
+ export const createLoggerPlugin = () => {
9
+ const t = initTRPC.context<ILoggerContext>().create();
10
+ return t.procedure.use(async (opts) => {
11
+ const logger = new Logger();
12
+
13
+ const response = await opts.next({
14
+ ctx: {
15
+ ...opts.ctx,
16
+ logger,
17
+ },
18
+ });
19
+
20
+ if (!response.ok) {
21
+ logger.error('Unexpected error occured', response.error.cause ?? '');
22
+ }
23
+
24
+ return response;
25
+ });
26
+ };
@@ -0,0 +1,36 @@
1
+ import { initTRPC } from '@trpc/server';
2
+ import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
3
+
4
+ export interface IMetricsContext {
5
+ metrics?: Metrics;
6
+ }
7
+
8
+ export const createMetricsPlugin = () => {
9
+ const t = initTRPC.context<IMetricsContext>().create();
10
+
11
+ return t.procedure.use(async (opts) => {
12
+ const metrics = new Metrics();
13
+ metrics.captureColdStartMetric();
14
+
15
+ metrics.addMetric('requestCount', MetricUnit.Count, 1);
16
+
17
+ try {
18
+ const response = await opts.next({
19
+ ctx: {
20
+ ...opts.ctx,
21
+ metrics,
22
+ },
23
+ });
24
+
25
+ if (!response.ok) {
26
+ metrics.addMetric('errorCount', MetricUnit.Count, 1);
27
+ } else {
28
+ metrics.addMetric('successCount', MetricUnit.Count, 1);
29
+ }
30
+
31
+ return response;
32
+ } finally {
33
+ metrics.publishStoredMetrics();
34
+ }
35
+ });
36
+ };
@@ -0,0 +1,44 @@
1
+ import { initTRPC } from '@trpc/server';
2
+ import { Tracer } from '@aws-lambda-powertools/tracer';
3
+ import { Subsegment } from 'aws-xray-sdk-core';
4
+
5
+ export interface ITracerContext {
6
+ tracer?: Tracer;
7
+ }
8
+
9
+ export const createTracerPlugin = () => {
10
+ const t = initTRPC.context<ITracerContext>().create();
11
+
12
+ return t.procedure.use(async (opts) => {
13
+ const tracer = new Tracer();
14
+ const segment = tracer.getSegment();
15
+ let handlerSegment: Subsegment | undefined;
16
+
17
+ if (segment) {
18
+ handlerSegment = segment.addNewSubsegment(`## ${opts.path}`);
19
+ tracer.setSegment(handlerSegment);
20
+ }
21
+
22
+ tracer.annotateColdStart();
23
+ tracer.addServiceNameAnnotation();
24
+
25
+ try {
26
+ const response = await opts.next({
27
+ ctx: {
28
+ ...opts.ctx,
29
+ tracer,
30
+ },
31
+ });
32
+
33
+ if (!response.ok && response.error.cause instanceof Error) {
34
+ tracer.addErrorAsMetadata(response.error.cause);
35
+ }
36
+ return response;
37
+ } finally {
38
+ if (segment && handlerSegment) {
39
+ handlerSegment.close();
40
+ tracer.setSegment(segment);
41
+ }
42
+ }
43
+ });
44
+ };
@@ -0,0 +1,8 @@
1
+ import { publicProcedure } from '../init.js';
2
+ import { EchoInputSchema, EchoOutputSchema } from '<%= schemaProjectAlias %>';
3
+
4
+
5
+ export const echo = publicProcedure
6
+ .input(EchoInputSchema)
7
+ .output(EchoOutputSchema)
8
+ .query((opts) => ({ result: opts.input.message }));
@@ -0,0 +1,20 @@
1
+ import {
2
+ awsLambdaRequestHandler,
3
+ CreateAWSLambdaContextOptions,
4
+ } from '@trpc/server/adapters/aws-lambda';
5
+ import { echo } from './procedures/echo.js';
6
+ import { t } from './init.js';
7
+ import { APIGatewayProxyEventV2WithIAMAuthorizer } from 'aws-lambda';
8
+
9
+ export const router = t.router;
10
+
11
+ export const appRouter = router({
12
+ echo,
13
+ });
14
+
15
+ export const handler = awsLambdaRequestHandler({
16
+ router: appRouter,
17
+ createContext: (ctx: CreateAWSLambdaContextOptions<APIGatewayProxyEventV2WithIAMAuthorizer>) => ctx,
18
+ });
19
+
20
+ export type AppRouter = typeof appRouter;
@@ -9,7 +9,7 @@ export class <%= apiNameClassName %> extends TrpcApi {
9
9
  defaultAuthorizer: new HttpIamAuthorizer(),
10
10
  handlerFilePath: url.fileURLToPath(
11
11
  new URL(
12
- '../../../<%= relativePathToProjectRoot %>/backend/src/lambdas/router.ts',
12
+ '../../../<%= relativePathToProjectRoot %>/backend/src/router.ts',
13
13
  import.meta.url
14
14
  )
15
15
  )
@@ -1,7 +1 @@
1
- import { z } from 'zod';
2
-
3
- export const EchoSchema = z.object({
4
- result: z.string(),
5
- });
6
-
7
- export type IEcho = z.TypeOf<typeof EchoSchema>;
1
+ export * from './procedures/echo.js';
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+
3
+ export const EchoInputSchema = z.object({
4
+ message: z.string(),
5
+ });
6
+
7
+ export type IEchoInput = z.TypeOf<typeof EchoInputSchema>;
8
+
9
+ export const EchoOutputSchema = z.object({
10
+ result: z.string(),
11
+ });
12
+
13
+ export type IEchoOutput = z.TypeOf<typeof EchoOutputSchema>;
@@ -64,6 +64,13 @@ function trpcBackendGenerator(tree, options) {
64
64
  config.metadata = {
65
65
  apiName: options.apiName,
66
66
  };
67
+ config.targets = Object.assign(Object.assign({}, config.targets), { serve: {
68
+ executor: 'nx:run-commands',
69
+ options: {
70
+ commands: ['tsx src/local-server.ts'],
71
+ cwd: backendRoot,
72
+ },
73
+ } });
67
74
  return config;
68
75
  });
69
76
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'backend'), backendRoot, enhancedOptions, {
@@ -81,7 +88,9 @@ function trpcBackendGenerator(tree, options) {
81
88
  '@aws-lambda-powertools/metrics',
82
89
  '@aws-lambda-powertools/tracer',
83
90
  '@trpc/server',
84
- ]), (0, versions_1.withVersions)(['@types/aws-lambda']));
91
+ 'aws4fetch',
92
+ '@aws-sdk/credential-providers',
93
+ ]), (0, versions_1.withVersions)(['@types/aws-lambda', 'tsx']));
85
94
  tree.delete((0, devkit_1.joinPathFragments)(backendRoot, 'package.json'));
86
95
  tree.delete((0, devkit_1.joinPathFragments)(schemaRoot, 'package.json'));
87
96
  yield (0, format_1.formatFilesInSubtree)(tree);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/backend/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/backend/generator.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,4 @@ export interface TrpcBackendGeneratorSchema {
8
8
  apiName: string;
9
9
  bundler: TsLibGeneratorSchema['bundler'];
10
10
  directory?: TsLibGeneratorSchema['directory'];
11
- unitTestRunner: TsLibGeneratorSchema['unitTestRunner'];
12
- linter?: Linter;
13
11
  }
@@ -20,19 +20,6 @@
20
20
  "x-priority": "important",
21
21
  "default": "packages",
22
22
  "x-prompt": "What directory would you like to store your application in?"
23
- },
24
- "unitTestRunner": {
25
- "type": "string",
26
- "enum": ["jest", "vitest", "none"],
27
- "description": "Test runner to use for unit tests.",
28
- "x-prompt": "Which unit test runner would you like to use?",
29
- "default": "vitest"
30
- },
31
- "linter": {
32
- "description": "The tool to use for running lint checks.",
33
- "type": "string",
34
- "enum": ["eslint", "none"],
35
- "default": "eslint"
36
23
  }
37
24
  },
38
25
  "required": ["apiName"]
@@ -1,14 +1,31 @@
1
1
  import { AwsClient } from 'aws4fetch';
2
2
  import { CognitoIdentityClient } from '@aws-sdk/client-cognito-identity';
3
3
  import { fromCognitoIdentityPool } from '@aws-sdk/credential-provider-cognito-identity';
4
- import { useCallback } from 'react';
4
+ import { useCallback, useState } from 'react';
5
5
  import { useAuth } from 'react-oidc-context';
6
6
  import { useRuntimeConfig } from './useRuntimeConfig';
7
+ import { AwsCredentialIdentity, AwsCredentialIdentityProvider } from '@smithy/types';
8
+
9
+ // Credential expiration grace time before considering credentials as expired
10
+ const CREDENTIAL_EXPIRY_OFFSET_MILLIS = 30 * 1000;
7
11
 
8
12
  export const useSigV4 = () => {
9
13
  const { cognitoProps } = useRuntimeConfig();
10
14
  const { user } = useAuth();
11
15
 
16
+ const [cachedCredentials, setCachedCredentials] = useState<{ [key: string]: AwsCredentialIdentity }>({});
17
+
18
+ const withCachedCredentials = useCallback(async (provider: AwsCredentialIdentityProvider, ...cacheKeys: string[]): Promise<AwsCredentialIdentity> => {
19
+ const key = `sigv4/${cacheKeys.join('/')}`;
20
+ const cachedCreds = cachedCredentials[key];
21
+ if (cachedCreds && cachedCreds.expiration && cachedCreds.expiration.getTime() > Date.now() + CREDENTIAL_EXPIRY_OFFSET_MILLIS) {
22
+ return cachedCreds;
23
+ }
24
+ const credentials = await provider();
25
+ setCachedCredentials((prev) => ({ ...prev, [key]: credentials }));
26
+ return credentials;
27
+ }, [cachedCredentials, setCachedCredentials]);
28
+
12
29
  return useCallback(
13
30
  async (input: RequestInfo | URL, init?: RequestInit | undefined) => {
14
31
  if (!cognitoProps) {
@@ -29,10 +46,10 @@ export const useSigV4 = () => {
29
46
  const cognitoidentity = new CognitoIdentityClient({
30
47
  credentials: credentialsFromCognitoIdentityPool,
31
48
  });
32
- const credential = await cognitoidentity.config.credentials();
49
+ const credential = await withCachedCredentials(cognitoidentity.config.credentials, cognitoProps.identityPoolId, user.profile.sub);
33
50
  const awsClient = new AwsClient(credential);
34
51
  return awsClient.fetch(input, init);
35
52
  },
36
- [cognitoProps, user?.id_token]
53
+ [cognitoProps, user?.id_token, user.profile.sub, withCachedCredentials]
37
54
  );
38
55
  };
@@ -156,7 +156,7 @@ function reactGenerator(tree, options) {
156
156
  ...(options.auth === 'IAM'
157
157
  ? ['oidc-client-ts', 'react-oidc-context']
158
158
  : []),
159
- ]), {});
159
+ ]), (0, versions_1.withVersions)(['@smithy/types']));
160
160
  yield (0, format_1.formatFilesInSubtree)(tree);
161
161
  return () => {
162
162
  (0, devkit_1.installPackagesTask)(tree);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/react/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/react/generator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
1
  import { Tree } from '@nx/devkit';
2
2
  export declare const createTreeUsingTsSolutionSetup: () => Tree;
3
+ /**
4
+ * Snapshot all files within a directory in the given tree
5
+ */
6
+ export declare const snapshotTreeDir: (tree: Tree, dir: string) => void;
package/src/utils/test.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTreeUsingTsSolutionSetup = void 0;
3
+ exports.snapshotTreeDir = exports.createTreeUsingTsSolutionSetup = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  /**
6
6
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -8,6 +8,7 @@ const tslib_1 = require("tslib");
8
8
  */
9
9
  const vitest_1 = require("vitest");
10
10
  const testing_1 = require("@nx/devkit/testing");
11
+ const devkit_1 = require("@nx/devkit");
11
12
  const ts_solution_setup_1 = tslib_1.__importDefault(require("@nx/js/src/utils/typescript/ts-solution-setup"));
12
13
  const createTreeUsingTsSolutionSetup = () => {
13
14
  vitest_1.vi.spyOn(ts_solution_setup_1.default, 'isUsingTsSolutionSetup').mockImplementation(() => true);
@@ -16,4 +17,18 @@ const createTreeUsingTsSolutionSetup = () => {
16
17
  return tree;
17
18
  };
18
19
  exports.createTreeUsingTsSolutionSetup = createTreeUsingTsSolutionSetup;
20
+ /**
21
+ * Snapshot all files within a directory in the given tree
22
+ */
23
+ const snapshotTreeDir = (tree, dir) => {
24
+ if (tree.isFile(dir)) {
25
+ (0, vitest_1.expect)(tree.read(dir, 'utf-8')).toMatchSnapshot(dir);
26
+ }
27
+ else {
28
+ tree
29
+ .children(dir)
30
+ .forEach((subDir) => (0, exports.snapshotTreeDir)(tree, (0, devkit_1.joinPathFragments)(dir, subDir)));
31
+ }
32
+ };
33
+ exports.snapshotTreeDir = snapshotTreeDir;
19
34
  //# sourceMappingURL=test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/test.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,mCAA4B;AAC5B,gDAAkE;AAElE,8GAA0E;AAEnE,MAAM,8BAA8B,GAAG,GAAS,EAAE;IACvD,WAAE,CAAC,KAAK,CAAC,2BAAa,EAAE,wBAAwB,CAAC,CAAC,kBAAkB,CAClE,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,sCAA4B,GAAE,CAAC;IAE5C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AATW,QAAA,8BAA8B,kCASzC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/test.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,mCAAoC;AACpC,gDAAkE;AAClE,uCAAqD;AACrD,8GAA0E;AAEnE,MAAM,8BAA8B,GAAG,GAAS,EAAE;IACvD,WAAE,CAAC,KAAK,CAAC,2BAAa,EAAE,wBAAwB,CAAC,CAAC,kBAAkB,CAClE,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,sCAA4B,GAAE,CAAC;IAE5C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AATW,QAAA,8BAA8B,kCASzC;AAEF;;GAEG;AACI,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,GAAW,EAAE,EAAE;IACzD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,IAAI;aACD,QAAQ,CAAC,GAAG,CAAC;aACb,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,IAAA,uBAAe,EAAC,IAAI,EAAE,IAAA,0BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CACtD,CAAC;IACN,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B"}
@@ -6,6 +6,7 @@ export declare const VERSIONS: {
6
6
  readonly '@cdklabs/cdk-validator-cfnguard': "^0.0.60";
7
7
  readonly '@aws-cdk/aws-cognito-identitypool-alpha': "^2.166.0-alpha.0";
8
8
  readonly '@aws-sdk/client-cognito-identity': "^3.721.0";
9
+ readonly '@aws-sdk/credential-providers': "^3.721.0";
9
10
  readonly '@aws-sdk/credential-provider-cognito-identity': "^3.721.0";
10
11
  readonly '@aws-lambda-powertools/logger': "^2.11.0";
11
12
  readonly '@aws-lambda-powertools/metrics': "^2.11.0";
@@ -20,6 +21,7 @@ export declare const VERSIONS: {
20
21
  readonly '@trpc/client': "11.0.0-rc.700";
21
22
  readonly '@trpc/server': "11.0.0-rc.700";
22
23
  readonly '@types/aws-lambda': "^8.10.145";
24
+ readonly '@smithy/types': "^4.1.0";
23
25
  readonly aws4fetch: "^1.0.20";
24
26
  readonly 'aws-cdk': "^2.166.0";
25
27
  readonly 'aws-cdk-lib': "^2.166.0";
@@ -39,5 +41,5 @@ export declare const VERSIONS: {
39
41
  * Add versions to the given dependencies
40
42
  */
41
43
  export declare const withVersions: (deps: (keyof typeof VERSIONS)[]) => {
42
- [k: string]: "^0.0.60" | "^2.166.0-alpha.0" | "^3.721.0" | "^2.11.0" | "^1.99.7" | "^3.0.84" | "^3.0.823" | "^1.0.34" | "^5.59.20" | "11.0.0-rc.700" | "^8.10.145" | "^1.0.20" | "^2.166.0" | "^3.10.2" | "^10.4.2" | "^0.24.0" | "^5.2.2" | "^2.4.0" | "^3.1.0" | "^3.4.2" | "^3.2.0" | "^0.5.21" | "^4.19.2" | "^3.23.8";
44
+ [k: string]: "^0.0.60" | "^2.166.0-alpha.0" | "^3.721.0" | "^2.11.0" | "^1.99.7" | "^3.0.84" | "^3.0.823" | "^1.0.34" | "^5.59.20" | "11.0.0-rc.700" | "^8.10.145" | "^4.1.0" | "^1.0.20" | "^2.166.0" | "^3.10.2" | "^10.4.2" | "^0.24.0" | "^5.2.2" | "^2.4.0" | "^3.1.0" | "^3.4.2" | "^3.2.0" | "^0.5.21" | "^4.19.2" | "^3.23.8";
43
45
  };
@@ -9,6 +9,7 @@ exports.VERSIONS = {
9
9
  '@cdklabs/cdk-validator-cfnguard': '^0.0.60',
10
10
  '@aws-cdk/aws-cognito-identitypool-alpha': '^2.166.0-alpha.0',
11
11
  '@aws-sdk/client-cognito-identity': '^3.721.0',
12
+ '@aws-sdk/credential-providers': '^3.721.0',
12
13
  '@aws-sdk/credential-provider-cognito-identity': '^3.721.0',
13
14
  '@aws-lambda-powertools/logger': '^2.11.0',
14
15
  '@aws-lambda-powertools/metrics': '^2.11.0',
@@ -23,6 +24,7 @@ exports.VERSIONS = {
23
24
  '@trpc/client': '11.0.0-rc.700',
24
25
  '@trpc/server': '11.0.0-rc.700',
25
26
  '@types/aws-lambda': '^8.10.145',
27
+ '@smithy/types': '^4.1.0',
26
28
  aws4fetch: '^1.0.20',
27
29
  'aws-cdk': '^2.166.0',
28
30
  'aws-cdk-lib': '^2.166.0',
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB,iCAAiC,EAAE,SAAS;IAC5C,yCAAyC,EAAE,kBAAkB;IAC7D,kCAAkC,EAAE,UAAU;IAC9C,+CAA+C,EAAE,UAAU;IAC3D,+BAA+B,EAAE,SAAS;IAC1C,gCAAgC,EAAE,SAAS;IAC3C,+BAA+B,EAAE,SAAS;IAC1C,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,SAAS;IACpC,qCAAqC,EAAE,SAAS;IAChD,+BAA+B,EAAE,UAAU;IAC3C,kCAAkC,EAAE,SAAS;IAC7C,uBAAuB,EAAE,UAAU;IACnC,mBAAmB,EAAE,eAAe;IACpC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,eAAe;IAC/B,mBAAmB,EAAE,WAAW;IAChC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,UAAU;IACrB,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,SAAS;IAC9B,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,QAAQ;IAClC,qBAAqB,EAAE,QAAQ;IAC/B,gBAAgB,EAAE,QAAQ;IAC1B,QAAQ,EAAE,QAAQ;IAClB,oBAAoB,EAAE,QAAQ;IAC9B,oBAAoB,EAAE,SAAS;IAC/B,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACN,CAAC;AACX;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAA+B,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AADjD,QAAA,YAAY,gBACqC"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB,iCAAiC,EAAE,SAAS;IAC5C,yCAAyC,EAAE,kBAAkB;IAC7D,kCAAkC,EAAE,UAAU;IAC9C,+BAA+B,EAAE,UAAU;IAC3C,+CAA+C,EAAE,UAAU;IAC3D,+BAA+B,EAAE,SAAS;IAC1C,gCAAgC,EAAE,SAAS;IAC3C,+BAA+B,EAAE,SAAS;IAC1C,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,SAAS;IACpC,qCAAqC,EAAE,SAAS;IAChD,+BAA+B,EAAE,UAAU;IAC3C,kCAAkC,EAAE,SAAS;IAC7C,uBAAuB,EAAE,UAAU;IACnC,mBAAmB,EAAE,eAAe;IACpC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,eAAe;IAC/B,mBAAmB,EAAE,WAAW;IAChC,eAAe,EAAE,QAAQ;IACzB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,UAAU;IACrB,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,SAAS;IAC9B,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,QAAQ;IAClC,qBAAqB,EAAE,QAAQ;IAC/B,gBAAgB,EAAE,QAAQ;IAC1B,QAAQ,EAAE,QAAQ;IAClB,oBAAoB,EAAE,QAAQ;IAC9B,oBAAoB,EAAE,SAAS;IAC/B,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACN,CAAC;AACX;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAA+B,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AADjD,QAAA,YAAY,gBACqC"}
@@ -1 +0,0 @@
1
- export * from './router.js';
@@ -1,146 +0,0 @@
1
- import { Logger } from '@aws-lambda-powertools/logger';
2
- import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
3
- import { Tracer } from '@aws-lambda-powertools/tracer';
4
- import { initTRPC, TRPCError } from '@trpc/server';
5
- import { Context as APIGWContext } from 'aws-lambda';
6
- import { Subsegment } from 'aws-xray-sdk-core';
7
-
8
- export type IMiddlewareContext = ILoggerContext &
9
- IMetricsContext &
10
- ITracerContext;
11
-
12
- interface ILoggerContext extends APIGWContext {
13
- logger: Logger;
14
- }
15
-
16
- interface IMetricsContext extends APIGWContext {
17
- metrics: Metrics;
18
- }
19
-
20
- interface ITracerContext extends APIGWContext {
21
- tracer: Tracer;
22
- }
23
-
24
- export const createLoggerPlugin = () => {
25
- const t = initTRPC.context<ILoggerContext>().create();
26
- return {
27
- loggerPlugin: t.procedure.use(async (opts) => {
28
- const logger = new Logger();
29
-
30
- const response = await opts.next({
31
- ctx: {
32
- ...opts.ctx,
33
- logger,
34
- },
35
- });
36
-
37
- if (!response.ok) {
38
- logger.error('Unexpected error occured', response.error.cause ?? '');
39
- }
40
-
41
- return response;
42
- }),
43
- };
44
- };
45
-
46
- export const createMetricsPlugin = () => {
47
- const t = initTRPC.context<IMetricsContext>().create();
48
-
49
- return {
50
- metricsPlugin: t.procedure.use(async (opts) => {
51
- const metrics = new Metrics();
52
- metrics.captureColdStartMetric();
53
-
54
- metrics.addMetric('requestCount', MetricUnit.Count, 1);
55
-
56
- try {
57
- const response = await opts.next({
58
- ctx: {
59
- ...opts.ctx,
60
- metrics,
61
- },
62
- });
63
-
64
- if (!response.ok) {
65
- metrics.addMetric('errorCount', MetricUnit.Count, 1);
66
- } else {
67
- metrics.addMetric('successCount', MetricUnit.Count, 1);
68
- }
69
-
70
- return response;
71
- } finally {
72
- metrics.publishStoredMetrics();
73
- }
74
- }),
75
- };
76
- };
77
-
78
- export const createTracerPlugin = () => {
79
- const t = initTRPC.context<ITracerContext>().create();
80
-
81
- return {
82
- tracerPlugin: t.procedure.use(async (opts) => {
83
- const tracer = new Tracer();
84
- const segment = tracer.getSegment();
85
- let handlerSegment: Subsegment | undefined;
86
-
87
- if (segment) {
88
- handlerSegment = segment.addNewSubsegment(`## ${opts.path}`);
89
- tracer.setSegment(handlerSegment);
90
- }
91
-
92
- tracer.annotateColdStart();
93
- tracer.addServiceNameAnnotation();
94
-
95
- try {
96
- const response = await opts.next({
97
- ctx: {
98
- ...opts.ctx,
99
- tracer,
100
- },
101
- });
102
-
103
- if (!response.ok && response.error.cause instanceof Error) {
104
- tracer.addErrorAsMetadata(response.error.cause);
105
- }
106
- return response;
107
- } finally {
108
- if (segment && handlerSegment) {
109
- handlerSegment.close();
110
- tracer.setSegment(segment);
111
- }
112
- }
113
- }),
114
- };
115
- };
116
-
117
- export const createErrorPlugin = () => {
118
- const t = initTRPC.context().create();
119
- return {
120
- errorPlugin: t.procedure.use(async (opts) => {
121
- const response = await opts.next({
122
- ctx: {
123
- ...opts.ctx,
124
- },
125
- });
126
-
127
- if (!response.ok) {
128
- let trpcError: TRPCError;
129
-
130
- if (response.error.cause instanceof TRPCError) {
131
- trpcError = response.error.cause;
132
- } else {
133
- trpcError = new TRPCError({
134
- code: 'INTERNAL_SERVER_ERROR',
135
- message: 'An unexpected error occurred, please try again later.',
136
- cause: response.error.cause,
137
- });
138
- }
139
-
140
- throw trpcError;
141
- } else {
142
- return response;
143
- }
144
- }),
145
- };
146
- };
@@ -1,36 +0,0 @@
1
- import { initTRPC } from '@trpc/server';
2
- import {
3
- awsLambdaRequestHandler,
4
- } from '@trpc/server/adapters/aws-lambda';
5
- import { EchoSchema } from '<%= schemaProjectAlias %>';
6
- import {
7
- createErrorPlugin,
8
- createLoggerPlugin,
9
- createMetricsPlugin,
10
- createTracerPlugin,
11
- IMiddlewareContext,
12
- } from './middleware.js';
13
- import { z } from 'zod';
14
-
15
- export type Context = IMiddlewareContext;
16
-
17
- const t = initTRPC.context<Context>().create();
18
- export const router = t.router;
19
- export const publicProcedure = t.procedure
20
- .unstable_concat(createLoggerPlugin().loggerPlugin)
21
- .unstable_concat(createTracerPlugin().tracerPlugin)
22
- .unstable_concat(createMetricsPlugin().metricsPlugin)
23
- .unstable_concat(createErrorPlugin().errorPlugin);
24
-
25
- const appRouter = router({
26
- echo: publicProcedure
27
- .input(z.string())
28
- .output(EchoSchema)
29
- .query((opts) => ({ result: opts.input })),
30
- });
31
-
32
- export const handler = awsLambdaRequestHandler({
33
- router: appRouter
34
- });
35
-
36
- export type AppRouter = typeof appRouter;