@jaypie/constructs 1.1.57 → 1.1.59
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/dist/cjs/JaypieNextJs.d.ts +17 -0
- package/dist/cjs/JaypieNextJs.test.d.ts +1 -0
- package/dist/cjs/helpers/resolveParamsAndSecrets.d.ts +1 -1
- package/dist/cjs/index.cjs +83 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/esm/JaypieNextJs.d.ts +17 -0
- package/dist/esm/JaypieNextJs.test.d.ts +1 -0
- package/dist/esm/helpers/resolveParamsAndSecrets.d.ts +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +82 -3
- package/dist/esm/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
import { JaypieEnvSecret } from "./JaypieEnvSecret.js";
|
|
5
|
+
export interface JaypieNextjsProps {
|
|
6
|
+
datadogApiKeyArn?: string;
|
|
7
|
+
domainName?: string;
|
|
8
|
+
envSecrets?: {
|
|
9
|
+
[key: string]: secretsmanager.ISecret;
|
|
10
|
+
};
|
|
11
|
+
hostedZone?: IHostedZone | string;
|
|
12
|
+
nextjsPath?: string;
|
|
13
|
+
secrets?: JaypieEnvSecret[];
|
|
14
|
+
}
|
|
15
|
+
export declare class JaypieNextJs extends Construct {
|
|
16
|
+
constructor(scope: Construct, id: string, props?: JaypieNextjsProps);
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -6,7 +6,7 @@ export interface ResolveParamsAndSecretsOptions {
|
|
|
6
6
|
parameterStoreTtl?: Duration;
|
|
7
7
|
secretsManagerTtl?: Duration;
|
|
8
8
|
}
|
|
9
|
-
export declare const resolveParamsAndSecrets: ({ paramsAndSecrets, options, }
|
|
9
|
+
export declare const resolveParamsAndSecrets: ({ paramsAndSecrets, options, }?: {
|
|
10
10
|
paramsAndSecrets?: lambda.ParamsAndSecretsLayerVersion | boolean;
|
|
11
11
|
options?: ResolveParamsAndSecretsOptions;
|
|
12
12
|
}) => lambda.ParamsAndSecretsLayerVersion | undefined;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -19,6 +19,9 @@ var lambdaEventSources = require('aws-cdk-lib/aws-lambda-event-sources');
|
|
|
19
19
|
var awsEvents = require('aws-cdk-lib/aws-events');
|
|
20
20
|
var awsEventsTargets = require('aws-cdk-lib/aws-events-targets');
|
|
21
21
|
var awsLogs = require('aws-cdk-lib/aws-logs');
|
|
22
|
+
var constructs$1 = require('@jaypie/constructs');
|
|
23
|
+
var cdkNextjsStandalone = require('cdk-nextjs-standalone');
|
|
24
|
+
var path = require('path');
|
|
22
25
|
var awsCloudtrail = require('aws-cdk-lib/aws-cloudtrail');
|
|
23
26
|
var awsSso = require('aws-cdk-lib/aws-sso');
|
|
24
27
|
var awsSam = require('aws-cdk-lib/aws-sam');
|
|
@@ -54,6 +57,7 @@ var logDestinations__namespace = /*#__PURE__*/_interopNamespaceDefault(logDestin
|
|
|
54
57
|
var s3n__namespace = /*#__PURE__*/_interopNamespaceDefault(s3n);
|
|
55
58
|
var sqs__namespace = /*#__PURE__*/_interopNamespaceDefault(sqs);
|
|
56
59
|
var lambdaEventSources__namespace = /*#__PURE__*/_interopNamespaceDefault(lambdaEventSources);
|
|
60
|
+
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
57
61
|
var cloudfront__namespace = /*#__PURE__*/_interopNamespaceDefault(cloudfront);
|
|
58
62
|
var origins__namespace = /*#__PURE__*/_interopNamespaceDefault(origins);
|
|
59
63
|
|
|
@@ -389,10 +393,11 @@ function envHostname({ component, domain, env, subdomain, } = {}) {
|
|
|
389
393
|
const resolvedComponent = component === "@" || component === "" ? undefined : component;
|
|
390
394
|
const resolvedSubdomain = subdomain || process.env.CDK_ENV_SUBDOMAIN;
|
|
391
395
|
const resolvedEnv = env || process.env.PROJECT_ENV;
|
|
396
|
+
const filteredEnv = resolvedEnv === CDK$2.ENV.PRODUCTION ? undefined : resolvedEnv;
|
|
392
397
|
const parts = [
|
|
393
398
|
resolvedComponent,
|
|
394
399
|
resolvedSubdomain,
|
|
395
|
-
|
|
400
|
+
filteredEnv,
|
|
396
401
|
resolvedDomain,
|
|
397
402
|
].filter((part) => part);
|
|
398
403
|
return parts.join(".");
|
|
@@ -695,7 +700,7 @@ function resolveHostedZone(scope, { name = "HostedZone", zone = process.env.CDK_
|
|
|
695
700
|
return zone;
|
|
696
701
|
}
|
|
697
702
|
|
|
698
|
-
const resolveParamsAndSecrets = ({ paramsAndSecrets, options, }) => {
|
|
703
|
+
const resolveParamsAndSecrets = ({ paramsAndSecrets, options, } = {}) => {
|
|
699
704
|
if (paramsAndSecrets === false) {
|
|
700
705
|
return;
|
|
701
706
|
}
|
|
@@ -2191,6 +2196,81 @@ class JaypieMongoDbSecret extends JaypieEnvSecret {
|
|
|
2191
2196
|
}
|
|
2192
2197
|
}
|
|
2193
2198
|
|
|
2199
|
+
class JaypieNextJs extends constructs.Construct {
|
|
2200
|
+
constructor(scope, id, props) {
|
|
2201
|
+
super(scope, id);
|
|
2202
|
+
const domainName = props?.domainName || constructs$1.envHostname();
|
|
2203
|
+
const domainNameSanitized = domainName
|
|
2204
|
+
.replace(/\./g, "-")
|
|
2205
|
+
.replace(/[^a-zA-Z0-9]/g, "_");
|
|
2206
|
+
const envSecrets = props?.envSecrets || {};
|
|
2207
|
+
const nextjsPath = props?.nextjsPath?.startsWith("..")
|
|
2208
|
+
? path__namespace.join(process.cwd(), props.nextjsPath)
|
|
2209
|
+
: props?.nextjsPath || path__namespace.join(process.cwd(), "..", "nextjs");
|
|
2210
|
+
const paramsAndSecrets = resolveParamsAndSecrets();
|
|
2211
|
+
const secrets = props?.secrets || [];
|
|
2212
|
+
// Process secrets environment variables
|
|
2213
|
+
const secretsEnvironment = Object.entries(envSecrets).reduce((acc, [key, secret]) => ({
|
|
2214
|
+
...acc,
|
|
2215
|
+
[`SECRET_${key}`]: secret.secretName,
|
|
2216
|
+
}), {});
|
|
2217
|
+
// Process JaypieEnvSecret array
|
|
2218
|
+
const jaypieSecretsEnvironment = secrets.reduce((acc, secret) => {
|
|
2219
|
+
if (secret.envKey) {
|
|
2220
|
+
return {
|
|
2221
|
+
...acc,
|
|
2222
|
+
[`SECRET_${secret.envKey}`]: secret.secretName,
|
|
2223
|
+
};
|
|
2224
|
+
}
|
|
2225
|
+
return acc;
|
|
2226
|
+
}, {});
|
|
2227
|
+
const nextjs = new cdkNextjsStandalone.Nextjs(this, "NextJsApp", {
|
|
2228
|
+
nextjsPath,
|
|
2229
|
+
domainProps: {
|
|
2230
|
+
domainName,
|
|
2231
|
+
hostedZone: constructs$1.resolveHostedZone(this, {
|
|
2232
|
+
zone: props?.hostedZone,
|
|
2233
|
+
}),
|
|
2234
|
+
},
|
|
2235
|
+
environment: {
|
|
2236
|
+
...constructs$1.jaypieLambdaEnv(),
|
|
2237
|
+
...secretsEnvironment,
|
|
2238
|
+
...jaypieSecretsEnvironment,
|
|
2239
|
+
},
|
|
2240
|
+
overrides: {
|
|
2241
|
+
nextjsDistribution: {
|
|
2242
|
+
imageCachePolicyProps: {
|
|
2243
|
+
cachePolicyName: `NextJsImageCachePolicy-${domainNameSanitized}`,
|
|
2244
|
+
},
|
|
2245
|
+
serverCachePolicyProps: {
|
|
2246
|
+
cachePolicyName: `NextJsServerCachePolicy-${domainNameSanitized}`,
|
|
2247
|
+
},
|
|
2248
|
+
},
|
|
2249
|
+
nextjsImage: {
|
|
2250
|
+
functionProps: {
|
|
2251
|
+
paramsAndSecrets,
|
|
2252
|
+
},
|
|
2253
|
+
},
|
|
2254
|
+
nextjsServer: {
|
|
2255
|
+
functionProps: {
|
|
2256
|
+
paramsAndSecrets,
|
|
2257
|
+
},
|
|
2258
|
+
},
|
|
2259
|
+
},
|
|
2260
|
+
});
|
|
2261
|
+
addDatadogLayers(nextjs.imageOptimizationFunction);
|
|
2262
|
+
addDatadogLayers(nextjs.serverFunction.lambdaFunction);
|
|
2263
|
+
// Grant secret read permissions
|
|
2264
|
+
Object.values(envSecrets).forEach((secret) => {
|
|
2265
|
+
secret.grantRead(nextjs.serverFunction.lambdaFunction);
|
|
2266
|
+
});
|
|
2267
|
+
// Grant read permissions for JaypieEnvSecrets
|
|
2268
|
+
secrets.forEach((secret) => {
|
|
2269
|
+
secret.grantRead(nextjs.serverFunction.lambdaFunction);
|
|
2270
|
+
});
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2194
2274
|
class JaypieOpenAiSecret extends JaypieEnvSecret {
|
|
2195
2275
|
constructor(scope, id = "OpenAiApiKey", props) {
|
|
2196
2276
|
const defaultProps = {
|
|
@@ -2929,6 +3009,7 @@ exports.JaypieHostedZone = JaypieHostedZone;
|
|
|
2929
3009
|
exports.JaypieInfrastructureStack = JaypieInfrastructureStack;
|
|
2930
3010
|
exports.JaypieLambda = JaypieLambda;
|
|
2931
3011
|
exports.JaypieMongoDbSecret = JaypieMongoDbSecret;
|
|
3012
|
+
exports.JaypieNextJs = JaypieNextJs;
|
|
2932
3013
|
exports.JaypieOpenAiSecret = JaypieOpenAiSecret;
|
|
2933
3014
|
exports.JaypieOrganizationTrail = JaypieOrganizationTrail;
|
|
2934
3015
|
exports.JaypieQueuedLambda = JaypieQueuedLambda;
|