@aws/nx-plugin 0.82.1 → 0.82.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.
@@ -206,23 +206,25 @@ export class <%= apiNameClassName %><
206
206
  }
207
207
 
208
208
  /**
209
- * Restricts CORS to the website CloudFront distribution domains
209
+ * Restricts CORS to the provided origins
210
210
  *
211
- * Configures the CloudFront distribution domains as the only permitted CORS origins
212
- * (other than local host with default ports) in the API gateway
213
- * The CORS origins are not configured within the AWS Lambda integrations since
214
- * the associated header is controlled by API Gateway v2
211
+ * Configures the provided CloudFront distribution domains or origin strings
212
+ * as the only permitted CORS origins
213
+ * in the API gateway. The CORS origins are not configured within the AWS Lambda
214
+ * integrations since the associated header is controlled by API Gateway v2.
215
215
  *
216
- * @param cloudFrontDistribution - The CloudFront distribution to grant CORS from
216
+ * @param origins - The origin strings, CloudFront distributions, or objects containing a CloudFront distribution to grant CORS from
217
217
  */
218
218
  public restrictCorsTo(
219
- ...websites: { cloudFrontDistribution: Distribution }[]
219
+ ...origins: (string | Distribution | { cloudFrontDistribution: Distribution })[]
220
220
  ) {
221
- const allowedOrigins = websites
222
- .map(
223
- ({ cloudFrontDistribution }) =>
224
- `https://${cloudFrontDistribution.distributionDomainName}`,
225
- );
221
+ const allowedOrigins = origins.map((origin) =>
222
+ typeof origin === 'string'
223
+ ? origin
224
+ : 'cloudFrontDistribution' in origin
225
+ ? `https://${origin.cloudFrontDistribution.distributionDomainName}`
226
+ : `https://${origin.distributionDomainName}`,
227
+ );
226
228
 
227
229
  const cfnApi = this.api.node.defaultChild;
228
230
  if (!(cfnApi instanceof CfnApi)) {
@@ -232,11 +234,7 @@ export class <%= apiNameClassName %><
232
234
  }
233
235
 
234
236
  cfnApi.corsConfiguration = {
235
- allowOrigins: [
236
- 'http://localhost:4200',
237
- 'http://localhost:4300',
238
- ...allowedOrigins,
239
- ],
237
+ allowOrigins: allowedOrigins,
240
238
  allowMethods: [CorsHttpMethod.ANY],
241
239
  allowHeaders: [
242
240
  'authorization',
@@ -14,7 +14,6 @@ import {
14
14
  } from 'aws-cdk-lib/aws-lambda';
15
15
  import {
16
16
  AuthorizationType,
17
- Cors,
18
17
  LambdaIntegration,
19
18
  <%_ if (['trpc', 'fastapi'].includes(backend.type)) { _%>
20
19
  ResponseTransferMode,
@@ -23,7 +22,7 @@ import {
23
22
  CognitoUserPoolsAuthorizer,
24
23
  <%_ } _%>
25
24
  } from 'aws-cdk-lib/aws-apigateway';
26
- import { Duration<%_ if (backend.type === 'fastapi') { _%>, Stack<%_ } _%> } from 'aws-cdk-lib';
25
+ import { Aspects, Duration<%_ if (backend.type === 'fastapi') { _%>, Stack<%_ } _%> } from 'aws-cdk-lib';
27
26
  import {
28
27
  PolicyDocument,
29
28
  PolicyStatement,
@@ -42,7 +41,7 @@ import {
42
41
  IntegrationBuilder,
43
42
  RestApiIntegration,
44
43
  } from '../../core/api/utils.js';
45
- import { RestApi } from '../../core/api/rest-api.js';
44
+ import { AddCorsPreflightAspect, RestApi } from '../../core/api/rest-api.js';
46
45
  <%_ if (backend.type === 'trpc') { _%>
47
46
  import { Procedures, routerToOperations } from '../../core/api/trpc-utils.js';
48
47
  import { AppRouter, appRouter } from '<%= backend.projectAlias %>';
@@ -86,6 +85,8 @@ export interface <%= apiNameClassName %>Props<
86
85
  export class <%= apiNameClassName %><
87
86
  TIntegrations extends ApiIntegrations<Operations, RestApiIntegration>,
88
87
  > extends RestApi<Operations, TIntegrations> {
88
+ private allowedOrigins: readonly string[] = ['*'];
89
+
89
90
  /**
90
91
  <%_ if (backend.integrationPattern === 'shared') { _%>
91
92
  * Creates default integrations for all operations using a single shared
@@ -198,10 +199,6 @@ export class <%= apiNameClassName %><
198
199
  authorizationType: AuthorizationType.NONE,
199
200
  <%_ } _%>
200
201
  },
201
- defaultCorsPreflightOptions: {
202
- allowOrigins: Cors.ALL_ORIGINS,
203
- allowMethods: Cors.ALL_METHODS,
204
- },
205
202
  deployOptions: {
206
203
  tracingEnabled: true,
207
204
  },
@@ -233,32 +230,38 @@ export class <%= apiNameClassName %><
233
230
  <%_ } _%>
234
231
  ...props,
235
232
  });
233
+ Aspects.of(this).add(new AddCorsPreflightAspect(() => this.allowedOrigins));
236
234
  }
237
235
 
238
236
  /**
239
- * Restricts CORS to the website CloudFront distribution domains
237
+ * Restricts CORS to the provided origins
240
238
  *
241
- * Configures the CloudFront distribution domains as the only permitted CORS origins
242
- * (other than local host) in the AWS Lambda integrations
243
- *
244
- * Note that this restriction is not applied to preflight OPTIONS
239
+ * Configures the provided CloudFront distribution domains or origin strings
240
+ * as the only permitted CORS origins in API Gateway preflight responses and the
241
+ * AWS Lambda integrations.
245
242
  *
246
- * @param websites - The CloudFront distribution to grant CORS from
243
+ * @param origins - The origin strings, CloudFront distributions, or objects containing a CloudFront distribution to grant CORS from
247
244
  */
248
245
  public restrictCorsTo(
249
- ...websites: { cloudFrontDistribution: Distribution }[]
246
+ ...origins: (string | Distribution | { cloudFrontDistribution: Distribution })[]
250
247
  ) {
251
- const allowedOrigins = websites
252
- .map(
253
- ({ cloudFrontDistribution }) =>
254
- `https://${cloudFrontDistribution.distributionDomainName}`,
255
- )
256
- .join(',');
248
+ const allowedOrigins = origins.map((origin) =>
249
+ typeof origin === 'string'
250
+ ? origin
251
+ : 'cloudFrontDistribution' in origin
252
+ ? `https://${origin.cloudFrontDistribution.distributionDomainName}`
253
+ : `https://${origin.distributionDomainName}`,
254
+ );
255
+
256
+ this.allowedOrigins = allowedOrigins;
257
257
 
258
258
  // Set ALLOWED_ORIGINS environment variable for all Lambda integrations
259
259
  Object.values(this.integrations).forEach((integration) => {
260
260
  if ('handler' in integration && integration.handler instanceof Function) {
261
- integration.handler.addEnvironment('ALLOWED_ORIGINS', allowedOrigins);
261
+ integration.handler.addEnvironment(
262
+ 'ALLOWED_ORIGINS',
263
+ allowedOrigins.join(','),
264
+ );
262
265
  }
263
266
  });
264
267
  }
@@ -1,10 +1,13 @@
1
- import { Construct } from 'constructs';
1
+ import { Construct, IConstruct } from 'constructs';
2
2
  import {
3
+ Cors,
4
+ Resource,
3
5
  RestApi as _RestApi,
4
6
  RestApiProps as _RestApiProps,
5
7
  IResource,
6
8
  Stage,
7
9
  } from 'aws-cdk-lib/aws-apigateway';
10
+ import { IAspect } from 'aws-cdk-lib';
8
11
  import { RuntimeConfig } from '../runtime-config.js';
9
12
  import {
10
13
  ApiIntegrations,
@@ -103,7 +106,7 @@ export class RestApi<
103
106
  };
104
107
 
105
108
  // Create API resources and methods for each operation
106
- (Object.entries(operations) as [TOperation, OperationDetails][]).map(
109
+ (Object.entries(operations) as [TOperation, OperationDetails][]).forEach(
107
110
  ([op, details]) => {
108
111
  const integration = resolveIntegration(op);
109
112
  const resource = this.getOrCreateResource(
@@ -147,3 +150,18 @@ export class RestApi<
147
150
  return this.getOrCreateResource(childResource, pathParts);
148
151
  }
149
152
  }
153
+
154
+ export class AddCorsPreflightAspect implements IAspect {
155
+ private getAllowedOrigins: () => readonly string[];
156
+ constructor(getAllowedOrigins: () => readonly string[]) {
157
+ this.getAllowedOrigins = getAllowedOrigins;
158
+ }
159
+ public visit(node: IConstruct): void {
160
+ if (node instanceof Resource) {
161
+ node.addCorsPreflight({
162
+ allowOrigins: [...this.getAllowedOrigins()],
163
+ allowMethods: Cors.ALL_METHODS,
164
+ });
165
+ }
166
+ }
167
+ }
@@ -1,4 +1,7 @@
1
- import { Integration, MethodOptions } from 'aws-cdk-lib/aws-apigateway';
1
+ import {
2
+ Integration,
3
+ MethodOptions,
4
+ } from 'aws-cdk-lib/aws-apigateway';
2
5
  import { HttpRouteIntegration, AddRoutesOptions } from 'aws-cdk-lib/aws-apigatewayv2';
3
6
 
4
7
  /**
@@ -43,6 +43,8 @@ export declare const TS_VERSIONS: {
43
43
  readonly '@types/ws': "8.18.1";
44
44
  readonly '@types/express': "5.0.6";
45
45
  readonly '@smithy/types': "4.13.0";
46
+ readonly '@vitest/coverage-v8': "4.0.18";
47
+ readonly '@vitest/ui': "4.0.18";
46
48
  readonly aws4fetch: "1.0.20";
47
49
  readonly 'aws-cdk': "2.1108.0";
48
50
  readonly 'aws-cdk-lib': "2.241.0";
@@ -78,6 +80,7 @@ export declare const TS_VERSIONS: {
78
80
  readonly shadcn: "3.8.5";
79
81
  readonly 'tw-animate-css': "1.4.0";
80
82
  readonly 'tailwind-merge': "3.5.0";
83
+ readonly vitest: "4.0.18";
81
84
  readonly 'vite-tsconfig-paths': "5.1.4";
82
85
  readonly zod: "4.3.6";
83
86
  readonly ws: "8.19.0";
@@ -87,7 +90,7 @@ export type ITsDepVersion = keyof typeof TS_VERSIONS;
87
90
  * Add versions to the given dependencies
88
91
  */
89
92
  export declare const withVersions: (deps: ITsDepVersion[]) => {
90
- [k: string]: "22.5.3" | "3.8.1" | "1.27.1" | "22.1.1" | "4.3.6" | "3.1004.0" | "1.0.0-alpha.10" | "2.31.0" | "6.4.5" | "9.0.1" | "0.19.0" | "0.4.0" | "1.163.3" | "1.164.0" | "1.161.4" | "3.0.150" | "3.0.1217" | "1.0.51" | "5.90.21" | "5.91.3" | "11.11.0" | "22.19.13" | "8.10.161" | "2.8.19" | "8.18.1" | "5.0.6" | "4.13.0" | "1.0.20" | "2.1108.0" | "2.241.0" | "2.241.0-alpha.0" | "3.12.0" | "10.5.1" | "2.8.6" | "0.7.1" | "2.1.1" | "3.7.0" | "0.27.3" | "1.0.31" | "1.0.5" | "5.5.5" | "5.2.1" | "2.4.2" | "4.0.0" | "2.0.0" | "19.6.3" | "3.4.1" | "3.3.0" | "19.2.4" | "6.1.3" | "1.0.0-rc.1" | "0.5.21" | "4.2.1" | "4.21.0" | "0.576.0" | "1.4.3" | "3.8.5" | "1.4.0" | "3.5.0" | "5.1.4" | "8.19.0";
93
+ [k: string]: "22.5.3" | "3.8.1" | "1.27.1" | "22.1.1" | "4.0.18" | "4.3.6" | "3.1004.0" | "1.0.0-alpha.10" | "2.31.0" | "6.4.5" | "9.0.1" | "0.19.0" | "0.4.0" | "1.163.3" | "1.164.0" | "1.161.4" | "3.0.150" | "3.0.1217" | "1.0.51" | "5.90.21" | "5.91.3" | "11.11.0" | "22.19.13" | "8.10.161" | "2.8.19" | "8.18.1" | "5.0.6" | "4.13.0" | "1.0.20" | "2.1108.0" | "2.241.0" | "2.241.0-alpha.0" | "3.12.0" | "10.5.1" | "2.8.6" | "0.7.1" | "2.1.1" | "3.7.0" | "0.27.3" | "1.0.31" | "1.0.5" | "5.5.5" | "5.2.1" | "2.4.2" | "4.0.0" | "2.0.0" | "19.6.3" | "3.4.1" | "3.3.0" | "19.2.4" | "6.1.3" | "1.0.0-rc.1" | "0.5.21" | "4.2.1" | "4.21.0" | "0.576.0" | "1.4.3" | "3.8.5" | "1.4.0" | "3.5.0" | "5.1.4" | "8.19.0";
91
94
  };
92
95
  /**
93
96
  * Versions for Python dependencies added by generators
@@ -46,6 +46,8 @@ exports.TS_VERSIONS = {
46
46
  '@types/ws': '8.18.1',
47
47
  '@types/express': '5.0.6',
48
48
  '@smithy/types': '4.13.0',
49
+ '@vitest/coverage-v8': '4.0.18',
50
+ '@vitest/ui': '4.0.18',
49
51
  aws4fetch: '1.0.20',
50
52
  'aws-cdk': '2.1108.0',
51
53
  'aws-cdk-lib': '2.241.0',
@@ -81,6 +83,7 @@ exports.TS_VERSIONS = {
81
83
  shadcn: '3.8.5',
82
84
  'tw-animate-css': '1.4.0',
83
85
  'tailwind-merge': '3.5.0',
86
+ vitest: '4.0.18',
84
87
  'vite-tsconfig-paths': '5.1.4',
85
88
  zod: '4.3.6',
86
89
  ws: '8.19.0',
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":"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"}