@fjall/components-infrastructure 0.86.1 → 0.87.4
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/README.md +3 -3
- package/dist/lib/app.d.ts +166 -6
- package/dist/lib/app.js +212 -20
- package/dist/lib/aspects/resourceInventory.d.ts +4 -4
- package/dist/lib/aspects/resourceInventory.js +3 -3
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -2
- package/dist/lib/config/aws/identityCenter.js +1 -5
- package/dist/lib/config/aws/organisation.js +1 -4
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +7 -1
- package/dist/lib/patterns/aws/buildkite.js +3 -2
- package/dist/lib/patterns/aws/cdn.d.ts +164 -0
- package/dist/lib/patterns/aws/cdn.js +264 -0
- package/dist/lib/patterns/aws/compute.d.ts +278 -59
- package/dist/lib/patterns/aws/compute.js +384 -188
- package/dist/lib/patterns/aws/connections.d.ts +46 -0
- package/dist/lib/patterns/aws/connections.js +159 -0
- package/dist/lib/patterns/aws/database.d.ts +124 -11
- package/dist/lib/patterns/aws/database.js +188 -66
- package/dist/lib/patterns/aws/hostedZone.js +1 -1
- package/dist/lib/patterns/aws/index.d.ts +3 -0
- package/dist/lib/patterns/aws/index.js +4 -1
- package/dist/lib/patterns/aws/interfaces/compute.d.ts +121 -0
- package/dist/lib/patterns/aws/interfaces/compute.js +48 -0
- package/dist/lib/patterns/aws/interfaces/connector.d.ts +183 -0
- package/dist/lib/patterns/aws/interfaces/connector.js +117 -0
- package/dist/lib/patterns/aws/interfaces/database.d.ts +136 -0
- package/dist/lib/patterns/aws/interfaces/database.js +65 -0
- package/dist/lib/patterns/aws/interfaces/index.d.ts +12 -0
- package/dist/lib/patterns/aws/interfaces/index.js +49 -0
- package/dist/lib/patterns/aws/interfaces/messaging.d.ts +146 -0
- package/dist/lib/patterns/aws/interfaces/messaging.js +56 -0
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +403 -0
- package/dist/lib/patterns/aws/interfaces/pattern.js +36 -0
- package/dist/lib/patterns/aws/interfaces/storage.d.ts +136 -0
- package/dist/lib/patterns/aws/interfaces/storage.js +48 -0
- package/dist/lib/patterns/aws/messaging.d.ts +183 -0
- package/dist/lib/patterns/aws/messaging.js +239 -0
- package/dist/lib/patterns/aws/network.js +4 -4
- package/dist/lib/patterns/aws/pattern.d.ts +67 -0
- package/dist/lib/patterns/aws/pattern.js +69 -0
- package/dist/lib/patterns/aws/payload.d.ts +87 -0
- package/dist/lib/patterns/aws/payload.js +526 -0
- package/dist/lib/patterns/aws/storage.d.ts +127 -15
- package/dist/lib/patterns/aws/storage.js +234 -38
- package/dist/lib/resources/aws/backup/backupPlan.js +1 -6
- package/dist/lib/resources/aws/backup/backupVault.js +1 -2
- package/dist/lib/resources/aws/base/awsStack.d.ts +0 -2
- package/dist/lib/resources/aws/base/awsStack.js +1 -7
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +71 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +176 -0
- package/dist/lib/resources/aws/cdn/index.d.ts +1 -0
- package/dist/lib/resources/aws/cdn/index.js +18 -0
- package/dist/lib/resources/aws/compute/ec2.d.ts +5 -0
- package/dist/lib/resources/aws/compute/ec2.js +33 -6
- package/dist/lib/resources/aws/compute/ecs.d.ts +32 -25
- package/dist/lib/resources/aws/compute/ecs.js +31 -115
- package/dist/lib/resources/aws/compute/lambda.d.ts +94 -5
- package/dist/lib/resources/aws/compute/lambda.js +209 -32
- package/dist/lib/resources/aws/database/database.js +1 -1
- package/dist/lib/resources/aws/database/dynamodb.d.ts +70 -0
- package/dist/lib/resources/aws/database/dynamodb.js +181 -0
- package/dist/lib/resources/aws/database/index.d.ts +1 -0
- package/dist/lib/resources/aws/database/index.js +2 -1
- package/dist/lib/resources/aws/database/migrationLambda.d.ts +80 -0
- package/dist/lib/resources/aws/database/migrationLambda.js +119 -0
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +15 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +41 -18
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +12 -8
- package/dist/lib/resources/aws/database/rdsInstance.js +2 -2
- package/dist/lib/resources/aws/index.d.ts +2 -0
- package/dist/lib/resources/aws/index.js +3 -1
- package/dist/lib/resources/aws/messaging/eventbridge.d.ts +28 -0
- package/dist/lib/resources/aws/messaging/eventbridge.js +53 -0
- package/dist/lib/resources/aws/messaging/index.d.ts +3 -0
- package/dist/lib/resources/aws/messaging/index.js +20 -0
- package/dist/lib/resources/aws/messaging/sns.d.ts +35 -0
- package/dist/lib/resources/aws/messaging/sns.js +70 -0
- package/dist/lib/resources/aws/messaging/sqs.d.ts +105 -0
- package/dist/lib/resources/aws/messaging/sqs.js +231 -0
- package/dist/lib/resources/aws/messaging/utils.d.ts +3 -0
- package/dist/lib/resources/aws/messaging/utils.js +7 -0
- package/dist/lib/resources/aws/networking/ipam.js +1 -2
- package/dist/lib/resources/aws/networking/ipamPool.js +3 -2
- package/dist/lib/resources/aws/networking/vpc.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.js +8 -5
- package/dist/lib/resources/aws/storage/s3.js +1 -2
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -1
- package/dist/lib/resources/aws/utilities/customResource.js +1 -1
- package/dist/lib/utils/getConfig.js +3 -2
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/dist/lib/utils/manifestWriter.d.ts +174 -0
- package/dist/lib/utils/manifestWriter.js +233 -0
- package/dist/lib/utils/standardTagsAspect.js +1 -8
- package/dist/lib/utils/validationLogger.d.ts +34 -0
- package/dist/lib/utils/validationLogger.js +83 -0
- package/package.json +6 -3
- package/dist/lib/__tests__/setup.d.ts +0 -48
- package/dist/lib/__tests__/setup.js +0 -1
- package/dist/lib/patterns/aws/cicdRole.d.ts +0 -67
- package/dist/lib/patterns/aws/cicdRole.js +0 -68
- package/dist/lib/resources/aws/cicd/cicdRole.d.ts +0 -65
- package/dist/lib/resources/aws/cicd/cicdRole.js +0 -191
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +0 -75
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +0 -1
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +0 -75
- package/dist/lib/resources/aws/compute/ecsSpot.js +0 -1
- package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.d.ts +0 -20
- package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.js +0 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +0 -5
- package/dist/lib/resources/aws/utilities/cfnOutput.js +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pattern Factory for High-Level Infrastructure Patterns.
|
|
4
|
+
*
|
|
5
|
+
* PatternFactory creates composite infrastructure patterns that encapsulate
|
|
6
|
+
* multiple related resources into a single, cohesive unit. This reduces
|
|
7
|
+
* boilerplate and ensures best practices for common deployment scenarios.
|
|
8
|
+
*
|
|
9
|
+
* Currently supported patterns:
|
|
10
|
+
* - `payload`: Payload CMS deployment with OpenNext
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* // Minimal - works out of box
|
|
14
|
+
* const payload = app.addPattern(PatternFactory.build("PayloadApp", {
|
|
15
|
+
* type: "payload",
|
|
16
|
+
* name: "my-cms",
|
|
17
|
+
* source: "../.."
|
|
18
|
+
* }));
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Customised with escape hatches
|
|
22
|
+
* const payload = app.addPattern(PatternFactory.build("PayloadApp", {
|
|
23
|
+
* type: "payload",
|
|
24
|
+
* name: "my-cms",
|
|
25
|
+
* source: "../..",
|
|
26
|
+
* database: { type: "Aurora", publiclyAccessible: false },
|
|
27
|
+
* compute: { memorySize: 2048 }
|
|
28
|
+
* }));
|
|
29
|
+
*
|
|
30
|
+
* // Access underlying resources for advanced customisation
|
|
31
|
+
* payload.getDatabase().grantConnect(otherLambda);
|
|
32
|
+
* payload.getServer().getLambdaFunction().addEnvironment("CUSTOM", "value");
|
|
33
|
+
*/
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.isPattern = exports.isPayloadPattern = exports.Payload = exports.PatternFactory = void 0;
|
|
36
|
+
const payload_js_1 = require("./payload.js");
|
|
37
|
+
Object.defineProperty(exports, "Payload", { enumerable: true, get: function () { return payload_js_1.Payload; } });
|
|
38
|
+
/**
|
|
39
|
+
* Factory for creating high-level infrastructure patterns.
|
|
40
|
+
*
|
|
41
|
+
* Uses discriminated union (type: "payload" | ...) to route to specific implementations.
|
|
42
|
+
* Each pattern type has specific props and returns a specific interface.
|
|
43
|
+
*/
|
|
44
|
+
class PatternFactory {
|
|
45
|
+
/**
|
|
46
|
+
* Implementation of the build method.
|
|
47
|
+
* Routes to specific pattern implementations based on type discriminator.
|
|
48
|
+
*/
|
|
49
|
+
static build(id, props) {
|
|
50
|
+
return (app, scope) => {
|
|
51
|
+
const { type } = props;
|
|
52
|
+
switch (type) {
|
|
53
|
+
case "payload":
|
|
54
|
+
return new payload_js_1.Payload(scope, id, app, props);
|
|
55
|
+
default: {
|
|
56
|
+
// Exhaustive check ensures all pattern types are handled
|
|
57
|
+
const _exhaustive = type;
|
|
58
|
+
throw new Error(`Unsupported pattern type: ${String(_exhaustive)}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.PatternFactory = PatternFactory;
|
|
65
|
+
// Re-export type guards
|
|
66
|
+
var pattern_js_1 = require("./interfaces/pattern.js");
|
|
67
|
+
Object.defineProperty(exports, "isPayloadPattern", { enumerable: true, get: function () { return pattern_js_1.isPayloadPattern; } });
|
|
68
|
+
Object.defineProperty(exports, "isPattern", { enumerable: true, get: function () { return pattern_js_1.isPattern; } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvcGF0dGVybi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7OztBQUtILDZDQUF1QztBQWtFOUIsd0ZBbEVBLG9CQUFPLE9Ba0VBO0FBM0RoQjs7Ozs7R0FLRztBQUNILE1BQWEsY0FBYztJQTZCekI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FDVixFQUFVLEVBQ1YsS0FBb0I7UUFFcEIsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFjLEVBQUU7WUFDaEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztZQUN2QixRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNiLEtBQUssU0FBUztvQkFDWixPQUFPLElBQUksb0JBQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDUix5REFBeUQ7b0JBQ3pELE1BQU0sV0FBVyxHQUFVLElBQUksQ0FBQztvQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsREQsd0NBa0RDO0FBY0Qsd0JBQXdCO0FBQ3hCLHNEQUFzRTtBQUE3RCw4R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLHVHQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGF0dGVybiBGYWN0b3J5IGZvciBIaWdoLUxldmVsIEluZnJhc3RydWN0dXJlIFBhdHRlcm5zLlxuICpcbiAqIFBhdHRlcm5GYWN0b3J5IGNyZWF0ZXMgY29tcG9zaXRlIGluZnJhc3RydWN0dXJlIHBhdHRlcm5zIHRoYXQgZW5jYXBzdWxhdGVcbiAqIG11bHRpcGxlIHJlbGF0ZWQgcmVzb3VyY2VzIGludG8gYSBzaW5nbGUsIGNvaGVzaXZlIHVuaXQuIFRoaXMgcmVkdWNlc1xuICogYm9pbGVycGxhdGUgYW5kIGVuc3VyZXMgYmVzdCBwcmFjdGljZXMgZm9yIGNvbW1vbiBkZXBsb3ltZW50IHNjZW5hcmlvcy5cbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIHBhdHRlcm5zOlxuICogLSBgcGF5bG9hZGA6IFBheWxvYWQgQ01TIGRlcGxveW1lbnQgd2l0aCBPcGVuTmV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIC0gd29ya3Mgb3V0IG9mIGJveFxuICogY29uc3QgcGF5bG9hZCA9IGFwcC5hZGRQYXR0ZXJuKFBhdHRlcm5GYWN0b3J5LmJ1aWxkKFwiUGF5bG9hZEFwcFwiLCB7XG4gKiAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICogICBuYW1lOiBcIm15LWNtc1wiLFxuICogICBzb3VyY2U6IFwiLi4vLi5cIlxuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b21pc2VkIHdpdGggZXNjYXBlIGhhdGNoZXNcbiAqIGNvbnN0IHBheWxvYWQgPSBhcHAuYWRkUGF0dGVybihQYXR0ZXJuRmFjdG9yeS5idWlsZChcIlBheWxvYWRBcHBcIiwge1xuICogICB0eXBlOiBcInBheWxvYWRcIixcbiAqICAgbmFtZTogXCJteS1jbXNcIixcbiAqICAgc291cmNlOiBcIi4uLy4uXCIsXG4gKiAgIGRhdGFiYXNlOiB7IHR5cGU6IFwiQXVyb3JhXCIsIHB1YmxpY2x5QWNjZXNzaWJsZTogZmFsc2UgfSxcbiAqICAgY29tcHV0ZTogeyBtZW1vcnlTaXplOiAyMDQ4IH1cbiAqIH0pKTtcbiAqXG4gKiAvLyBBY2Nlc3MgdW5kZXJseWluZyByZXNvdXJjZXMgZm9yIGFkdmFuY2VkIGN1c3RvbWlzYXRpb25cbiAqIHBheWxvYWQuZ2V0RGF0YWJhc2UoKS5ncmFudENvbm5lY3Qob3RoZXJMYW1iZGEpO1xuICogcGF5bG9hZC5nZXRTZXJ2ZXIoKS5nZXRMYW1iZGFGdW5jdGlvbigpLmFkZEVudmlyb25tZW50KFwiQ1VTVE9NXCIsIFwidmFsdWVcIik7XG4gKi9cblxuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgdHlwZSBBcHAgZnJvbSBcIi4uLy4uL2FwcC5qc1wiO1xuaW1wb3J0IHsgUGF5bG9hZCB9IGZyb20gXCIuL3BheWxvYWQuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgSVBheWxvYWRQcm9wcyxcbiAgdHlwZSBJUGF0dGVyblByb3BzLFxuICB0eXBlIEFueVBhdHRlcm5cbn0gZnJvbSBcIi4vaW50ZXJmYWNlcy9wYXR0ZXJuLmpzXCI7XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgaGlnaC1sZXZlbCBpbmZyYXN0cnVjdHVyZSBwYXR0ZXJucy5cbiAqXG4gKiBVc2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24gKHR5cGU6IFwicGF5bG9hZFwiIHwgLi4uKSB0byByb3V0ZSB0byBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuXG4gKiBFYWNoIHBhdHRlcm4gdHlwZSBoYXMgc3BlY2lmaWMgcHJvcHMgYW5kIHJldHVybnMgYSBzcGVjaWZpYyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXR0ZXJuRmFjdG9yeSB7XG4gIC8qKlxuICAgKiBCdWlsZCBhIFBheWxvYWQgQ01TIHBhdHRlcm4uXG4gICAqXG4gICAqIENyZWF0ZXMgYSBjb21wbGV0ZSBQYXlsb2FkIENNUyBpbmZyYXN0cnVjdHVyZTpcbiAgICogLSBSRFMgUG9zdGdyZVNRTCBkYXRhYmFzZSAoQXVyb3JhIG9yIEluc3RhbmNlKVxuICAgKiAtIFMzIGJ1Y2tldHMgKGFzc2V0cywgY2FjaGUsIG1lZGlhKVxuICAgKiAtIER5bmFtb0RCIHRhYmxlICh0YWcgY2FjaGUpXG4gICAqIC0gU1FTIEZJRk8gcXVldWUgKHJldmFsaWRhdGlvbilcbiAgICogLSBMYW1iZGEgZnVuY3Rpb25zIChzZXJ2ZXIsIGltYWdlIG9wdGltaXphdGlvbiwgcmV2YWxpZGF0aW9uKVxuICAgKiAtIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIENvbnN0cnVjdCBJRCAodXNlZCBmb3IgcmVzb3VyY2UgbmFtaW5nKVxuICAgKiBAcGFyYW0gcHJvcHMgLSBQYXlsb2FkIHBhdHRlcm4gY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgcGF0dGVyblxuICAgKi9cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElQYXlsb2FkUHJvcHNcbiAgKTogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBQYXlsb2FkO1xuXG4gIC8qKlxuICAgKiBHZW5lcmljIGJ1aWxkIG1ldGhvZCAoaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlKS5cbiAgICovXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJUGF0dGVyblByb3BzXG4gICk6IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQW55UGF0dGVybjtcblxuICAvKipcbiAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWxkIG1ldGhvZC5cbiAgICogUm91dGVzIHRvIHNwZWNpZmljIHBhdHRlcm4gaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIHR5cGUgZGlzY3JpbWluYXRvci5cbiAgICovXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJUGF0dGVyblByb3BzXG4gICk6IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQW55UGF0dGVybiB7XG4gICAgcmV0dXJuIChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCk6IEFueVBhdHRlcm4gPT4ge1xuICAgICAgY29uc3QgeyB0eXBlIH0gPSBwcm9wcztcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwicGF5bG9hZFwiOlxuICAgICAgICAgIHJldHVybiBuZXcgUGF5bG9hZChzY29wZSwgaWQsIGFwcCwgcHJvcHMpO1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgLy8gRXhoYXVzdGl2ZSBjaGVjayBlbnN1cmVzIGFsbCBwYXR0ZXJuIHR5cGVzIGFyZSBoYW5kbGVkXG4gICAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gdHlwZTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdHRlcm4gdHlwZTogJHtTdHJpbmcoX2V4aGF1c3RpdmUpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG4vLyBSZS1leHBvcnQgdHlwZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBQYXlsb2FkIH07XG5leHBvcnQgdHlwZSB7XG4gIElQYXlsb2FkUHJvcHMsXG4gIElQYXR0ZXJuUHJvcHMsXG4gIEFueVBhdHRlcm4sXG4gIElQYXlsb2FkLFxuICBQYXlsb2FkRGF0YWJhc2VDb25maWcsXG4gIFBheWxvYWRDb21wdXRlQ29uZmlnLFxuICBQYXlsb2FkQ2RuQ29uZmlnXG59IGZyb20gXCIuL2ludGVyZmFjZXMvcGF0dGVybi5qc1wiO1xuXG4vLyBSZS1leHBvcnQgdHlwZSBndWFyZHNcbmV4cG9ydCB7IGlzUGF5bG9hZFBhdHRlcm4sIGlzUGF0dGVybiB9IGZyb20gXCIuL2ludGVyZmFjZXMvcGF0dGVybi5qc1wiO1xuIl19
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload CMS Pattern.
|
|
3
|
+
*
|
|
4
|
+
* A high-level pattern that creates all infrastructure required for a
|
|
5
|
+
* Payload CMS deployment using OpenNext.
|
|
6
|
+
*
|
|
7
|
+
* Resources created:
|
|
8
|
+
* - RDS PostgreSQL database (Aurora or Instance)
|
|
9
|
+
* - 3 S3 buckets (assets, cache, media)
|
|
10
|
+
* - DynamoDB table (tag cache with GSI)
|
|
11
|
+
* - SQS FIFO queue (revalidation)
|
|
12
|
+
* - 3 Lambda functions (server, image optimisation, revalidation)
|
|
13
|
+
* - CloudFront distribution
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const payload = app.addPattern(PatternFactory.build("PayloadApp", {
|
|
17
|
+
* type: "payload",
|
|
18
|
+
* name: "my-cms"
|
|
19
|
+
* }));
|
|
20
|
+
*
|
|
21
|
+
* // Escape hatches
|
|
22
|
+
* payload.getDatabase().grantConnect(otherLambda);
|
|
23
|
+
*/
|
|
24
|
+
import { Construct } from "constructs";
|
|
25
|
+
import type App from "../../app.js";
|
|
26
|
+
import { type IPayloadProps, type IPayload } from "./interfaces/pattern.js";
|
|
27
|
+
import { type RelationalDatabase, type DynamoDBDatabase } from "./database.js";
|
|
28
|
+
import { type LambdaCompute } from "./compute.js";
|
|
29
|
+
import { type PrivateStorage } from "./storage.js";
|
|
30
|
+
import { type QueueMessaging } from "./messaging.js";
|
|
31
|
+
import { type Cdn } from "./cdn.js";
|
|
32
|
+
/**
|
|
33
|
+
* Payload CMS pattern implementation.
|
|
34
|
+
*
|
|
35
|
+
* Composes all required AWS resources for a Payload deployment.
|
|
36
|
+
*/
|
|
37
|
+
export declare class Payload extends Construct implements IPayload {
|
|
38
|
+
readonly patternType: "payload";
|
|
39
|
+
private readonly app;
|
|
40
|
+
private readonly props;
|
|
41
|
+
private readonly pascalName;
|
|
42
|
+
private readonly payloadSecret;
|
|
43
|
+
private _database;
|
|
44
|
+
private _server;
|
|
45
|
+
private _imageOptimisation;
|
|
46
|
+
private _revalidation;
|
|
47
|
+
private _assetsBucket;
|
|
48
|
+
private _cacheBucket;
|
|
49
|
+
private _mediaBucket;
|
|
50
|
+
private _tagCache;
|
|
51
|
+
private _revalidationQueue;
|
|
52
|
+
private _cdn;
|
|
53
|
+
constructor(scope: Construct, id: string, app: App, props: IPayloadProps);
|
|
54
|
+
private registerManifest;
|
|
55
|
+
private validateProps;
|
|
56
|
+
private createDatabase;
|
|
57
|
+
private buildBaseDatabaseProps;
|
|
58
|
+
private createAuroraDatabase;
|
|
59
|
+
private createInstanceDatabase;
|
|
60
|
+
private createStorageBuckets;
|
|
61
|
+
private createAssetsBucket;
|
|
62
|
+
private createCacheBucket;
|
|
63
|
+
private createMediaBucket;
|
|
64
|
+
private createTagCache;
|
|
65
|
+
private createRevalidationQueue;
|
|
66
|
+
private createLambdaFunctions;
|
|
67
|
+
private createServerLambda;
|
|
68
|
+
private buildServerEnvironment;
|
|
69
|
+
private grantServerPermissions;
|
|
70
|
+
private createImageLambda;
|
|
71
|
+
private createRevalidationLambda;
|
|
72
|
+
private createCdn;
|
|
73
|
+
private resolveDomainConfig;
|
|
74
|
+
private resolveSimpleDomain;
|
|
75
|
+
private resolveAdvancedDomain;
|
|
76
|
+
private createDnsRecord;
|
|
77
|
+
getDatabase(): RelationalDatabase;
|
|
78
|
+
getServer(): LambdaCompute;
|
|
79
|
+
getImageOptimisation(): LambdaCompute;
|
|
80
|
+
getRevalidation(): LambdaCompute;
|
|
81
|
+
getAssetsBucket(): PrivateStorage;
|
|
82
|
+
getCacheBucket(): PrivateStorage;
|
|
83
|
+
getMediaBucket(): PrivateStorage;
|
|
84
|
+
getTagCache(): DynamoDBDatabase;
|
|
85
|
+
getRevalidationQueue(): QueueMessaging;
|
|
86
|
+
getCdn(): Cdn;
|
|
87
|
+
}
|