@resistdesign/voltra 0.0.0-alpha.0

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 (205) hide show
  1. package/README.md +86 -0
  2. package/package.json +103 -0
  3. package/src/api/DataAccessControl.d.ts +85 -0
  4. package/src/api/DataAccessControl.js +159 -0
  5. package/src/api/ORM/DACUtils.d.ts +60 -0
  6. package/src/api/ORM/DACUtils.js +197 -0
  7. package/src/api/ORM/ListItemUtils.d.ts +7 -0
  8. package/src/api/ORM/ListItemUtils.js +22 -0
  9. package/src/api/ORM/ORMRouteMap.d.ts +19 -0
  10. package/src/api/ORM/ORMRouteMap.js +82 -0
  11. package/src/api/ORM/TypeInfoORMService.d.ts +103 -0
  12. package/src/api/ORM/TypeInfoORMService.js +581 -0
  13. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +63 -0
  14. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.js +2 -0
  15. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +36 -0
  16. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.js +282 -0
  17. package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +90 -0
  18. package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.js +2 -0
  19. package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +45 -0
  20. package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.js +127 -0
  21. package/src/api/ORM/drivers/S3FileItemDBDriver.d.ts +44 -0
  22. package/src/api/ORM/drivers/S3FileItemDBDriver.js +182 -0
  23. package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +12 -0
  24. package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.js +20 -0
  25. package/src/api/ORM/drivers/common/Types.d.ts +77 -0
  26. package/src/api/ORM/drivers/common/Types.js +14 -0
  27. package/src/api/ORM/drivers/common/index.d.ts +2 -0
  28. package/src/api/ORM/drivers/common/index.js +18 -0
  29. package/src/api/ORM/drivers/index.d.ts +3 -0
  30. package/src/api/ORM/drivers/index.js +19 -0
  31. package/src/api/ORM/index.d.ts +4 -0
  32. package/src/api/ORM/index.js +43 -0
  33. package/src/api/Router/AWS.d.ts +26 -0
  34. package/src/api/Router/AWS.js +76 -0
  35. package/src/api/Router/Auth.d.ts +2 -0
  36. package/src/api/Router/Auth.js +9 -0
  37. package/src/api/Router/CORS.d.ts +6 -0
  38. package/src/api/Router/CORS.js +27 -0
  39. package/src/api/Router/Types.d.ts +71 -0
  40. package/src/api/Router/Types.js +2 -0
  41. package/src/api/Router/index.d.ts +18 -0
  42. package/src/api/Router/index.js +145 -0
  43. package/src/api/index.d.ts +3 -0
  44. package/src/api/index.js +39 -0
  45. package/src/app/index.d.ts +1 -0
  46. package/src/app/index.js +37 -0
  47. package/src/app/utils/ApplicationState.d.ts +52 -0
  48. package/src/app/utils/ApplicationState.js +86 -0
  49. package/src/app/utils/ApplicationStateLoader.d.ts +46 -0
  50. package/src/app/utils/ApplicationStateLoader.js +57 -0
  51. package/src/app/utils/Controller.d.ts +4 -0
  52. package/src/app/utils/Controller.js +47 -0
  53. package/src/app/utils/Debug.d.ts +4 -0
  54. package/src/app/utils/Debug.js +30 -0
  55. package/src/app/utils/EasyLayout.d.ts +49 -0
  56. package/src/app/utils/EasyLayout.js +122 -0
  57. package/src/app/utils/Route.d.ts +28 -0
  58. package/src/app/utils/Route.js +102 -0
  59. package/src/app/utils/Service.d.ts +12 -0
  60. package/src/app/utils/Service.js +34 -0
  61. package/src/app/utils/TypeInfoORMAPIUtils.d.ts +20 -0
  62. package/src/app/utils/TypeInfoORMAPIUtils.js +62 -0
  63. package/src/app/utils/TypeInfoORMClient.d.ts +24 -0
  64. package/src/app/utils/TypeInfoORMClient.js +69 -0
  65. package/src/app/utils/index.d.ts +8 -0
  66. package/src/app/utils/index.js +24 -0
  67. package/src/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +1 -0
  68. package/src/common/CommandLine/collectRequiredEnvironmentVariables.js +16 -0
  69. package/src/common/HelperTypes.d.ts +3 -0
  70. package/src/common/HelperTypes.js +2 -0
  71. package/src/common/IdGeneration/getSimpleId.d.ts +4 -0
  72. package/src/common/IdGeneration/getSimpleId.js +16 -0
  73. package/src/common/IdGeneration/index.d.ts +1 -0
  74. package/src/common/IdGeneration/index.js +17 -0
  75. package/src/common/ItemRelationshipInfoTypes.d.ts +46 -0
  76. package/src/common/ItemRelationshipInfoTypes.js +20 -0
  77. package/src/common/ItemRelationships/ItemRelationshipValidation.d.ts +10 -0
  78. package/src/common/ItemRelationships/ItemRelationshipValidation.js +43 -0
  79. package/src/common/ItemRelationships/index.d.ts +1 -0
  80. package/src/common/ItemRelationships/index.js +17 -0
  81. package/src/common/Logging/Utils.d.ts +10 -0
  82. package/src/common/Logging/Utils.js +33 -0
  83. package/src/common/Logging/index.d.ts +1 -0
  84. package/src/common/Logging/index.js +17 -0
  85. package/src/common/Routing.d.ts +25 -0
  86. package/src/common/Routing.js +102 -0
  87. package/src/common/SearchTypes.d.ts +98 -0
  88. package/src/common/SearchTypes.js +39 -0
  89. package/src/common/SearchUtils.d.ts +22 -0
  90. package/src/common/SearchUtils.js +134 -0
  91. package/src/common/SearchValidation.d.ts +17 -0
  92. package/src/common/SearchValidation.js +90 -0
  93. package/src/common/Storyboarding/Types.d.ts +25 -0
  94. package/src/common/Storyboarding/Types.js +2 -0
  95. package/src/common/StringTransformers.d.ts +17 -0
  96. package/src/common/StringTransformers.js +36 -0
  97. package/src/common/Testing/CLI.d.ts +2 -0
  98. package/src/common/Testing/CLI.js +56 -0
  99. package/src/common/Testing/Types.d.ts +117 -0
  100. package/src/common/Testing/Types.js +19 -0
  101. package/src/common/Testing/Utils.d.ts +48 -0
  102. package/src/common/Testing/Utils.js +334 -0
  103. package/src/common/Testing/index.d.ts +2 -0
  104. package/src/common/Testing/index.js +18 -0
  105. package/src/common/TypeInfoDataItemUtils.d.ts +10 -0
  106. package/src/common/TypeInfoDataItemUtils.js +55 -0
  107. package/src/common/TypeInfoORM/Types.d.ts +76 -0
  108. package/src/common/TypeInfoORM/Types.js +55 -0
  109. package/src/common/TypeInfoORM/index.d.ts +1 -0
  110. package/src/common/TypeInfoORM/index.js +17 -0
  111. package/src/common/TypeParsing/Constants.d.ts +1 -0
  112. package/src/common/TypeParsing/Constants.js +4 -0
  113. package/src/common/TypeParsing/ParsingUtils/Constants.d.ts +5 -0
  114. package/src/common/TypeParsing/ParsingUtils/Constants.js +8 -0
  115. package/src/common/TypeParsing/ParsingUtils/checkType.d.ts +8 -0
  116. package/src/common/TypeParsing/ParsingUtils/checkType.js +46 -0
  117. package/src/common/TypeParsing/ParsingUtils/checkUnionType.d.ts +6 -0
  118. package/src/common/TypeParsing/ParsingUtils/checkUnionType.js +15 -0
  119. package/src/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +2 -0
  120. package/src/common/TypeParsing/ParsingUtils/extractCommentTags.js +105 -0
  121. package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +6 -0
  122. package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.js +42 -0
  123. package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +8 -0
  124. package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.js +14 -0
  125. package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +5 -0
  126. package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.js +27 -0
  127. package/src/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +3 -0
  128. package/src/common/TypeParsing/ParsingUtils/getTypeInfo.js +27 -0
  129. package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +3 -0
  130. package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.js +44 -0
  131. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +4 -0
  132. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.js +28 -0
  133. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +4 -0
  134. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.js +105 -0
  135. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +4 -0
  136. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.js +20 -0
  137. package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +3 -0
  138. package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.js +17 -0
  139. package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +4 -0
  140. package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.js +49 -0
  141. package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +2 -0
  142. package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.js +24 -0
  143. package/src/common/TypeParsing/TypeInfo.d.ts +142 -0
  144. package/src/common/TypeParsing/TypeInfo.js +13 -0
  145. package/src/common/TypeParsing/TypeMapping.d.ts +9 -0
  146. package/src/common/TypeParsing/TypeMapping.js +32 -0
  147. package/src/common/TypeParsing/TypeParsing.d.ts +5 -0
  148. package/src/common/TypeParsing/TypeParsing.js +39 -0
  149. package/src/common/TypeParsing/Utils.d.ts +21 -0
  150. package/src/common/TypeParsing/Utils.js +94 -0
  151. package/src/common/TypeParsing/Validation.d.ts +92 -0
  152. package/src/common/TypeParsing/Validation.js +340 -0
  153. package/src/common/TypeParsing/index.d.ts +5 -0
  154. package/src/common/TypeParsing/index.js +44 -0
  155. package/src/common/index.d.ts +11 -0
  156. package/src/common/index.js +47 -0
  157. package/src/iac/SimpleCFT.d.ts +48 -0
  158. package/src/iac/SimpleCFT.js +82 -0
  159. package/src/iac/index.d.ts +9 -0
  160. package/src/iac/index.js +48 -0
  161. package/src/iac/packs/auth/user-management.d.ts +14 -0
  162. package/src/iac/packs/auth/user-management.js +302 -0
  163. package/src/iac/packs/auth.d.ts +19 -0
  164. package/src/iac/packs/auth.js +47 -0
  165. package/src/iac/packs/build/utils.d.ts +100 -0
  166. package/src/iac/packs/build/utils.js +23 -0
  167. package/src/iac/packs/build.d.ts +29 -0
  168. package/src/iac/packs/build.js +217 -0
  169. package/src/iac/packs/cdn.d.ts +12 -0
  170. package/src/iac/packs/cdn.js +113 -0
  171. package/src/iac/packs/cloud-function.d.ts +17 -0
  172. package/src/iac/packs/cloud-function.js +69 -0
  173. package/src/iac/packs/database.d.ts +29 -0
  174. package/src/iac/packs/database.js +27 -0
  175. package/src/iac/packs/dns.d.ts +13 -0
  176. package/src/iac/packs/dns.js +26 -0
  177. package/src/iac/packs/file-storage.d.ts +14 -0
  178. package/src/iac/packs/file-storage.js +71 -0
  179. package/src/iac/packs/gateway.d.ts +27 -0
  180. package/src/iac/packs/gateway.js +342 -0
  181. package/src/iac/packs/index.d.ts +11 -0
  182. package/src/iac/packs/index.js +27 -0
  183. package/src/iac/packs/repo.d.ts +10 -0
  184. package/src/iac/packs/repo.js +34 -0
  185. package/src/iac/packs/ssl-certificate.d.ts +10 -0
  186. package/src/iac/packs/ssl-certificate.js +36 -0
  187. package/src/iac/types/CloudFormationResourceSpecification.d.ts +2 -0
  188. package/src/iac/types/Constants.d.ts +9 -0
  189. package/src/iac/types/Constants.js +20 -0
  190. package/src/iac/types/IaCTypes.d.ts +234994 -0
  191. package/src/iac/types/IaCTypes.js +14 -0
  192. package/src/iac/types/Renderers.d.ts +12 -0
  193. package/src/iac/types/Renderers.js +112 -0
  194. package/src/iac/types/Types.d.ts +37 -0
  195. package/src/iac/types/Types.js +2 -0
  196. package/src/iac/types/Utils.d.ts +2 -0
  197. package/src/iac/types/Utils.js +60 -0
  198. package/src/iac/types/generate.d.ts +1 -0
  199. package/src/iac/types/generate.js +31 -0
  200. package/src/iac/utils/index.d.ts +36 -0
  201. package/src/iac/utils/index.js +105 -0
  202. package/src/iac/utils/patch-utils.d.ts +15 -0
  203. package/src/iac/utils/patch-utils.js +62 -0
  204. package/src/index.d.ts +178 -0
  205. package/src/index.js +214 -0
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addGateway = exports.DEFAULT_AUTH_TYPE = void 0;
4
+ const utils_1 = require("../utils");
5
+ const SimpleCFT_1 = require("../SimpleCFT");
6
+ exports.DEFAULT_AUTH_TYPE = "COGNITO_USER_POOLS";
7
+ /**
8
+ * Add a load-balanced API gateway for your serverless cloud function.
9
+ * Includes authorization config that connects your user management system to your cloud function.
10
+ * Also includes a DNS record for your API/back-end.
11
+ * */
12
+ exports.addGateway = (0, utils_1.createResourcePack)(({ id, hostedZoneId, domainName, certificateArn, cloudFunction: { id: cloudFunctionId, region: cloudFunctionRegion = "${AWS::Region}", }, stageName = "production", authorizer, deploymentSuffix = "", }) => {
13
+ const cloudFunctionUri = {
14
+ "Fn::Sub": `arn:aws:apigateway:${cloudFunctionRegion}:lambda:path/2015-03-31/functions/\${${cloudFunctionId}.Arn}/invocations`,
15
+ };
16
+ const { scopes: authScopes = ["phone", "email", "openid", "profile"], type: authType = "COGNITO_USER_POOLS", providerARNs, identitySource = "method.request.header.authorization", } = !!authorizer &&
17
+ typeof authorizer === "object"
18
+ ? authorizer
19
+ : {};
20
+ const authorizerId = `${id}CustomAuthorizer`;
21
+ const authProps = !!authorizer
22
+ ? {
23
+ AuthorizationScopes: authScopes,
24
+ AuthorizationType: authType === exports.DEFAULT_AUTH_TYPE ? exports.DEFAULT_AUTH_TYPE : "CUSTOM",
25
+ AuthorizerId: {
26
+ Ref: authorizerId,
27
+ },
28
+ }
29
+ : {
30
+ AuthorizationType: "NONE",
31
+ };
32
+ const fullDeploymentId = `${id}GatewayRESTAPIDeployment${deploymentSuffix}`;
33
+ return new SimpleCFT_1.SimpleCFT()
34
+ .patch({
35
+ Resources: {
36
+ // REST API
37
+ [id]: {
38
+ Type: "AWS::ApiGateway::RestApi",
39
+ Properties: {
40
+ Name: {
41
+ "Fn::Sub": `\${AWS::StackName}-${id}GatewayRESTAPI`,
42
+ },
43
+ EndpointConfiguration: {
44
+ Types: ["EDGE"],
45
+ },
46
+ },
47
+ },
48
+ [`${id}GatewayRESTAPIResource`]: {
49
+ Type: "AWS::ApiGateway::Resource",
50
+ DependsOn: id,
51
+ Properties: {
52
+ ParentId: {
53
+ "Fn::GetAtt": [id, "RootResourceId"],
54
+ },
55
+ PathPart: "{proxy+}",
56
+ RestApiId: {
57
+ Ref: id,
58
+ },
59
+ },
60
+ },
61
+ [`${id}GatewayRESTAPIMethod`]: {
62
+ Type: "AWS::ApiGateway::Method",
63
+ DependsOn: `${id}GatewayRESTAPIResource`,
64
+ Properties: {
65
+ ...authProps,
66
+ HttpMethod: "ANY",
67
+ ResourceId: {
68
+ Ref: `${id}GatewayRESTAPIResource`,
69
+ },
70
+ RestApiId: {
71
+ Ref: id,
72
+ },
73
+ Integration: {
74
+ Type: "AWS_PROXY",
75
+ IntegrationHttpMethod: "POST",
76
+ Uri: cloudFunctionUri,
77
+ },
78
+ },
79
+ },
80
+ [`${id}GatewayRESTAPIRootMethod`]: {
81
+ Type: "AWS::ApiGateway::Method",
82
+ DependsOn: `${id}GatewayRESTAPIResource`,
83
+ Properties: {
84
+ ...authProps,
85
+ HttpMethod: "ANY",
86
+ ResourceId: {
87
+ "Fn::GetAtt": [id, "RootResourceId"],
88
+ },
89
+ RestApiId: {
90
+ Ref: id,
91
+ },
92
+ Integration: {
93
+ Type: "AWS_PROXY",
94
+ IntegrationHttpMethod: "POST",
95
+ Uri: cloudFunctionUri,
96
+ },
97
+ },
98
+ },
99
+ },
100
+ })
101
+ .patch({
102
+ Resources: {
103
+ // CORS
104
+ [`${id}GatewayRESTAPIOPTIONSMethod`]: {
105
+ Type: "AWS::ApiGateway::Method",
106
+ DependsOn: `${id}GatewayRESTAPIResource`,
107
+ Properties: {
108
+ AuthorizationType: "NONE",
109
+ HttpMethod: "OPTIONS",
110
+ ResourceId: {
111
+ Ref: `${id}GatewayRESTAPIResource`,
112
+ },
113
+ RestApiId: {
114
+ Ref: id,
115
+ },
116
+ Integration: {
117
+ Type: "AWS_PROXY",
118
+ IntegrationHttpMethod: "POST",
119
+ Uri: cloudFunctionUri,
120
+ },
121
+ },
122
+ },
123
+ [`${id}GatewayRESTAPIRootOPTIONSMethod`]: {
124
+ Type: "AWS::ApiGateway::Method",
125
+ DependsOn: `${id}GatewayRESTAPIResource`,
126
+ Properties: {
127
+ AuthorizationType: "NONE",
128
+ HttpMethod: "OPTIONS",
129
+ ResourceId: {
130
+ "Fn::GetAtt": [id, "RootResourceId"],
131
+ },
132
+ RestApiId: {
133
+ Ref: id,
134
+ },
135
+ Integration: {
136
+ Type: "AWS_PROXY",
137
+ IntegrationHttpMethod: "POST",
138
+ Uri: cloudFunctionUri,
139
+ },
140
+ },
141
+ },
142
+ [`${id}GatewayResponseDefault4XX`]: {
143
+ Type: "AWS::ApiGateway::GatewayResponse",
144
+ Properties: {
145
+ ResponseParameters: {
146
+ // Not authorized, so just allow the current origin by mapping it into the header.
147
+ "gatewayresponse.header.Access-Control-Allow-Origin": "method.request.header.origin",
148
+ "gatewayresponse.header.Access-Control-Allow-Credentials": "'true'",
149
+ "gatewayresponse.header.Access-Control-Allow-Headers": "'*'",
150
+ },
151
+ ResponseType: "DEFAULT_4XX",
152
+ RestApiId: {
153
+ Ref: id,
154
+ },
155
+ },
156
+ },
157
+ },
158
+ })
159
+ .patch({
160
+ Resources: {
161
+ // SUPPORTING RESOURCES
162
+ [fullDeploymentId]: {
163
+ Type: "AWS::ApiGateway::Deployment",
164
+ DependsOn: [
165
+ `${id}GatewayRESTAPIResource`,
166
+ `${id}GatewayRESTAPIMethod`,
167
+ `${id}GatewayRESTAPIRootMethod`,
168
+ id,
169
+ cloudFunctionId,
170
+ ],
171
+ Properties: {
172
+ RestApiId: {
173
+ Ref: id,
174
+ },
175
+ },
176
+ },
177
+ [`${id}CloudWatch`]: {
178
+ Type: "AWS::Logs::LogGroup",
179
+ Properties: {
180
+ LogGroupName: {
181
+ "Fn::Sub": `\${AWS::StackName}-${id}GatewayLogs`,
182
+ },
183
+ },
184
+ },
185
+ [`${id}CloudWatchRole`]: {
186
+ Type: "AWS::IAM::Role",
187
+ Properties: {
188
+ AssumeRolePolicyDocument: {
189
+ Version: "2012-10-17",
190
+ Statement: [
191
+ {
192
+ Effect: "Allow",
193
+ Principal: {
194
+ Service: ["apigateway.amazonaws.com"],
195
+ },
196
+ Action: "sts:AssumeRole",
197
+ },
198
+ ],
199
+ },
200
+ Path: "/",
201
+ ManagedPolicyArns: [
202
+ "arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs",
203
+ ],
204
+ },
205
+ },
206
+ [`${id}CloudWatchAccount`]: {
207
+ Type: "AWS::ApiGateway::Account",
208
+ Properties: {
209
+ CloudWatchRoleArn: {
210
+ "Fn::GetAtt": [`${id}CloudWatchRole`, "Arn"],
211
+ },
212
+ },
213
+ },
214
+ [`${id}GatewayRESTAPIEnvironment`]: {
215
+ Type: "AWS::ApiGateway::Stage",
216
+ DependsOn: [`${id}CloudWatchAccount`, fullDeploymentId],
217
+ Properties: {
218
+ AccessLogSetting: {
219
+ DestinationArn: {
220
+ "Fn::GetAtt": [`${id}CloudWatch`, "Arn"],
221
+ },
222
+ Format: '{"requestId":"$context.requestId","ip":"$context.identity.sourceIp","caller":"$context.identity.caller","user":"$context.identity.user","requestTime":"$context.requestTime","httpMethod":"$context.httpMethod","resourcePath":"$context.resourcePath","status":"$context.status","protocol":"$context.protocol","responseLength":"$context.responseLength","apiGatewayErrorMessage":"$context.error.message"}',
223
+ },
224
+ DeploymentId: {
225
+ Ref: fullDeploymentId,
226
+ },
227
+ RestApiId: {
228
+ Ref: id,
229
+ },
230
+ StageName: stageName,
231
+ },
232
+ },
233
+ },
234
+ })
235
+ .patch({
236
+ Resources: {
237
+ // DNS
238
+ [`${id}DomainName`]: {
239
+ Type: "AWS::ApiGateway::DomainName",
240
+ Properties: {
241
+ CertificateArn: certificateArn,
242
+ DomainName: domainName,
243
+ EndpointConfiguration: {
244
+ Types: ["EDGE"],
245
+ },
246
+ },
247
+ },
248
+ [`${id}DomainNameBasePathMapping`]: {
249
+ Type: "AWS::ApiGateway::BasePathMapping",
250
+ DependsOn: [
251
+ id,
252
+ `${id}GatewayRESTAPIEnvironment`,
253
+ `${id}DomainName`,
254
+ ],
255
+ Properties: {
256
+ DomainName: domainName,
257
+ RestApiId: {
258
+ Ref: id,
259
+ },
260
+ Stage: stageName,
261
+ },
262
+ },
263
+ [`${id}Route53Record`]: {
264
+ Type: "AWS::Route53::RecordSet",
265
+ DependsOn: `${id}DomainName`,
266
+ Properties: {
267
+ HostedZoneId: hostedZoneId,
268
+ Type: "A",
269
+ Name: {
270
+ "Fn::Sub": [
271
+ "${DomainName}.",
272
+ {
273
+ DomainName: domainName,
274
+ },
275
+ ],
276
+ },
277
+ AliasTarget: {
278
+ HostedZoneId: "Z2FDTNDATAQYW2",
279
+ DNSName: {
280
+ "Fn::Sub": [
281
+ "${DomainName}.",
282
+ {
283
+ DomainName: {
284
+ "Fn::GetAtt": [
285
+ `${id}DomainName`,
286
+ "DistributionDomainName",
287
+ ],
288
+ },
289
+ },
290
+ ],
291
+ },
292
+ },
293
+ },
294
+ },
295
+ },
296
+ })
297
+ .patch({
298
+ Resources: {
299
+ // PERMISSIONS
300
+ [`${id}CloudFunctionANYResourcePermission`]: {
301
+ Type: "AWS::Lambda::Permission",
302
+ Properties: {
303
+ Action: "lambda:InvokeFunction",
304
+ Principal: "apigateway.amazonaws.com",
305
+ FunctionName: {
306
+ "Fn::GetAtt": [cloudFunctionId, "Arn"],
307
+ },
308
+ SourceArn: {
309
+ "Fn::Sub": [
310
+ "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/*",
311
+ {
312
+ __Stage__: stageName,
313
+ __ApiId__: {
314
+ Ref: id,
315
+ },
316
+ },
317
+ ],
318
+ },
319
+ },
320
+ },
321
+ },
322
+ })
323
+ .patch(!!authorizer
324
+ ? {
325
+ Resources: {
326
+ // AUTHORIZER
327
+ [`${id}CustomAuthorizer`]: {
328
+ Type: "AWS::ApiGateway::Authorizer",
329
+ Properties: {
330
+ IdentitySource: identitySource,
331
+ Name: `${id}CustomAuthorizer`,
332
+ ProviderARNs: providerARNs,
333
+ RestApiId: {
334
+ Ref: id,
335
+ },
336
+ Type: "COGNITO_USER_POOLS",
337
+ },
338
+ },
339
+ },
340
+ }
341
+ : {}).template;
342
+ });
@@ -0,0 +1,11 @@
1
+ export * from "./auth";
2
+ export * from "./build";
3
+ export * from "./build/utils";
4
+ export * from "./cdn";
5
+ export * from "./cloud-function";
6
+ export * from "./database";
7
+ export * from "./dns";
8
+ export * from "./file-storage";
9
+ export * from "./gateway";
10
+ export * from "./repo";
11
+ export * from "./ssl-certificate";
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./auth"), exports);
18
+ __exportStar(require("./build"), exports);
19
+ __exportStar(require("./build/utils"), exports);
20
+ __exportStar(require("./cdn"), exports);
21
+ __exportStar(require("./cloud-function"), exports);
22
+ __exportStar(require("./database"), exports);
23
+ __exportStar(require("./dns"), exports);
24
+ __exportStar(require("./file-storage"), exports);
25
+ __exportStar(require("./gateway"), exports);
26
+ __exportStar(require("./repo"), exports);
27
+ __exportStar(require("./ssl-certificate"), exports);
@@ -0,0 +1,10 @@
1
+ export type AddRepoConfig = {
2
+ repoOwnerParameterName: string;
3
+ repoNameParameterName: string;
4
+ repoBranchParameterName: string;
5
+ repoTokenParameterName: string;
6
+ };
7
+ /**
8
+ * Add repository related parameters for reference in other resources like a build pipeline (CI/CD).
9
+ * */
10
+ export declare const addRepo: import("../utils").ResourcePackApplier<AddRepoConfig>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addRepo = void 0;
4
+ const utils_1 = require("../utils");
5
+ const SimpleCFT_1 = require("../SimpleCFT");
6
+ /**
7
+ * Add repository related parameters for reference in other resources like a build pipeline (CI/CD).
8
+ * */
9
+ exports.addRepo = (0, utils_1.createResourcePack)(({ repoOwnerParameterName, repoNameParameterName, repoBranchParameterName, repoTokenParameterName, }) => new SimpleCFT_1.SimpleCFT().addParameterGroup({
10
+ Label: "Repository",
11
+ Parameters: {
12
+ [repoOwnerParameterName]: {
13
+ Label: "RepoOwner",
14
+ Type: "String",
15
+ Description: "The owner of the repository",
16
+ },
17
+ [repoNameParameterName]: {
18
+ Label: "RepoName",
19
+ Type: "String",
20
+ Description: "The name of the repository",
21
+ },
22
+ [repoBranchParameterName]: {
23
+ Label: "RepoBranch",
24
+ Type: "String",
25
+ Description: "The branch of the repository",
26
+ },
27
+ [repoTokenParameterName]: {
28
+ Label: "RepoToken",
29
+ Type: "String",
30
+ Description: "The token of the repository",
31
+ NoEcho: true,
32
+ },
33
+ },
34
+ }).template);
@@ -0,0 +1,10 @@
1
+ export type AddSSLCertificateConfig = {
2
+ id: string;
3
+ domainName: any;
4
+ hostedZoneId: any;
5
+ includeWildCard?: boolean;
6
+ };
7
+ /**
8
+ * Add an automatic SSL Certificate for a domain and all of it's subdomains.
9
+ * */
10
+ export declare const addSSLCertificate: import("../utils").ResourcePackApplier<AddSSLCertificateConfig>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addSSLCertificate = void 0;
4
+ const utils_1 = require("../utils");
5
+ /**
6
+ * Add an automatic SSL Certificate for a domain and all of it's subdomains.
7
+ * */
8
+ exports.addSSLCertificate = (0, utils_1.createResourcePack)(({ id, domainName, hostedZoneId, includeWildCard = true, }) => ({
9
+ Resources: {
10
+ [id]: {
11
+ Type: "AWS::CertificateManager::Certificate",
12
+ Properties: {
13
+ DomainName: domainName,
14
+ ValidationMethod: "DNS",
15
+ DomainValidationOptions: [
16
+ {
17
+ DomainName: domainName,
18
+ HostedZoneId: hostedZoneId,
19
+ },
20
+ ],
21
+ SubjectAlternativeNames: includeWildCard
22
+ ? [
23
+ {
24
+ "Fn::Sub": [
25
+ "*.${BaseDomainName}",
26
+ {
27
+ BaseDomainName: domainName,
28
+ },
29
+ ],
30
+ },
31
+ ]
32
+ : undefined,
33
+ },
34
+ },
35
+ },
36
+ }));
@@ -0,0 +1,2 @@
1
+ import { CloudFormationResourceSpecification } from "./Types";
2
+ export declare const CloudFormationResourceSpecificationData: CloudFormationResourceSpecification;
@@ -0,0 +1,9 @@
1
+ export declare const NEVER_TYPE = "never";
2
+ export declare const NAMESPACE_DELIMITERS: {
3
+ INPUT_REGEX: RegExp;
4
+ INPUT: string;
5
+ OUTPUT: string;
6
+ };
7
+ export declare const TAG_TYPE = "Tag";
8
+ export declare const CONTAINER_TYPES: string[];
9
+ export declare const PRIMITIVE_TYPE_MAP: Record<string, string>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRIMITIVE_TYPE_MAP = exports.CONTAINER_TYPES = exports.TAG_TYPE = exports.NAMESPACE_DELIMITERS = exports.NEVER_TYPE = void 0;
4
+ exports.NEVER_TYPE = 'never';
5
+ exports.NAMESPACE_DELIMITERS = {
6
+ INPUT_REGEX: /::/gim,
7
+ INPUT: '::',
8
+ OUTPUT: '.',
9
+ };
10
+ exports.TAG_TYPE = 'Tag';
11
+ exports.CONTAINER_TYPES = ['List', 'Map'];
12
+ exports.PRIMITIVE_TYPE_MAP = {
13
+ String: 'string',
14
+ Integer: 'number',
15
+ Boolean: 'boolean',
16
+ Double: 'number',
17
+ Json: 'Json',
18
+ Timestamp: 'Timestamp',
19
+ Long: 'number',
20
+ };