@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,302 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addUserManagement = void 0;
4
+ const utils_1 = require("../../utils");
5
+ exports.addUserManagement = (0, utils_1.createResourcePack)(({ id, authRoleName, unauthRoleName, domainName, hostedZoneId, sslCertificateArn, callbackUrls, logoutUrls, baseDomainRecordAliasTargetDNSName, apiGatewayRESTAPIId, apiStageName, }) => {
6
+ const apiRoleConfig = apiGatewayRESTAPIId && apiStageName
7
+ ? {
8
+ [`${id}IdentityPoolRoles`]: {
9
+ Type: "AWS::Cognito::IdentityPoolRoleAttachment",
10
+ Properties: {
11
+ IdentityPoolId: {
12
+ Ref: `${id}IdentityPool`,
13
+ },
14
+ Roles: {
15
+ authenticated: {
16
+ "Fn::GetAtt": [`${id}AuthRole`, "Arn"],
17
+ },
18
+ unauthenticated: {
19
+ "Fn::GetAtt": [`${id}UnauthRole`, "Arn"],
20
+ },
21
+ },
22
+ },
23
+ },
24
+ [`${id}AuthRole`]: {
25
+ Type: "AWS::IAM::Role",
26
+ Properties: {
27
+ RoleName: authRoleName,
28
+ Path: "/",
29
+ AssumeRolePolicyDocument: {
30
+ Version: "2012-10-17",
31
+ Statement: [
32
+ {
33
+ Effect: "Allow",
34
+ Principal: {
35
+ Federated: "cognito-identity.amazonaws.com",
36
+ },
37
+ Action: ["sts:AssumeRoleWithWebIdentity"],
38
+ Condition: {
39
+ StringEquals: {
40
+ "cognito-identity.amazonaws.com:aud": {
41
+ Ref: `${id}IdentityPool`,
42
+ },
43
+ },
44
+ "ForAnyValue:StringLike": {
45
+ "cognito-identity.amazonaws.com:amr": "authenticated",
46
+ },
47
+ },
48
+ },
49
+ ],
50
+ },
51
+ Policies: [
52
+ {
53
+ PolicyName: "CognitoAuthorizedPolicy",
54
+ PolicyDocument: {
55
+ Version: "2012-10-17",
56
+ Statement: [
57
+ {
58
+ Effect: "Allow",
59
+ Action: [
60
+ "mobileanalytics:PutEvents",
61
+ "cognito-sync:*",
62
+ "cognito-identity:*",
63
+ ],
64
+ Resource: "*",
65
+ },
66
+ {
67
+ Effect: "Allow",
68
+ Action: ["execute-api:Invoke"],
69
+ Resource: {
70
+ "Fn::Sub": [
71
+ "arn:aws:execute-api:${Region}:${AccountId}:${APIID}/${StageName}/${HTTPVerb}/api/*",
72
+ {
73
+ Region: {
74
+ Ref: "AWS::Region",
75
+ },
76
+ AccountId: {
77
+ Ref: "AWS::AccountId",
78
+ },
79
+ APIID: apiGatewayRESTAPIId,
80
+ StageName: apiStageName,
81
+ HTTPVerb: "*",
82
+ },
83
+ ],
84
+ },
85
+ },
86
+ ],
87
+ },
88
+ },
89
+ ],
90
+ },
91
+ },
92
+ [`${id}UnauthRole`]: {
93
+ Type: "AWS::IAM::Role",
94
+ Properties: {
95
+ RoleName: unauthRoleName,
96
+ Path: "/",
97
+ AssumeRolePolicyDocument: {
98
+ Version: "2012-10-17",
99
+ Statement: [
100
+ {
101
+ Effect: "Allow",
102
+ Principal: {
103
+ Federated: "cognito-identity.amazonaws.com",
104
+ },
105
+ Action: ["sts:AssumeRoleWithWebIdentity"],
106
+ Condition: {
107
+ StringEquals: {
108
+ "cognito-identity.amazonaws.com:aud": {
109
+ Ref: `${id}IdentityPool`,
110
+ },
111
+ },
112
+ "ForAnyValue:StringLike": {
113
+ "cognito-identity.amazonaws.com:amr": "unauthenticated",
114
+ },
115
+ },
116
+ },
117
+ ],
118
+ },
119
+ Policies: [
120
+ {
121
+ PolicyName: "CognitoUnauthorizedPolicy",
122
+ PolicyDocument: {
123
+ Version: "2012-10-17",
124
+ Statement: [
125
+ {
126
+ Effect: "Allow",
127
+ Action: [
128
+ "mobileanalytics:PutEvents",
129
+ "cognito-sync:*",
130
+ "cognito-identity:*",
131
+ ],
132
+ Resource: "*",
133
+ },
134
+ ],
135
+ },
136
+ },
137
+ ],
138
+ },
139
+ },
140
+ }
141
+ : {};
142
+ return {
143
+ Resources: {
144
+ [`${id}UserPool`]: {
145
+ Type: "AWS::Cognito::UserPool",
146
+ Properties: {
147
+ UserPoolName: {
148
+ "Fn::Sub": [`$\{AWS::StackName\}${id}UserPool`, {}],
149
+ },
150
+ AccountRecoverySetting: {
151
+ RecoveryMechanisms: [
152
+ {
153
+ Name: "verified_email",
154
+ Priority: 1,
155
+ },
156
+ ],
157
+ },
158
+ AdminCreateUserConfig: {
159
+ AllowAdminCreateUserOnly: false,
160
+ UnusedAccountValidityDays: 365,
161
+ },
162
+ AutoVerifiedAttributes: ["email"],
163
+ AliasAttributes: ["phone_number", "email", "preferred_username"],
164
+ Schema: [
165
+ {
166
+ Name: "email",
167
+ Required: true,
168
+ Mutable: true,
169
+ },
170
+ {
171
+ Name: "given_name",
172
+ Required: true,
173
+ Mutable: true,
174
+ },
175
+ {
176
+ Name: "family_name",
177
+ Required: true,
178
+ Mutable: true,
179
+ },
180
+ {
181
+ Name: "phone_number",
182
+ Required: true,
183
+ Mutable: true,
184
+ },
185
+ ],
186
+ DeviceConfiguration: {
187
+ ChallengeRequiredOnNewDevice: true,
188
+ DeviceOnlyRememberedOnUserPrompt: false,
189
+ },
190
+ UsernameConfiguration: {
191
+ CaseSensitive: false,
192
+ },
193
+ },
194
+ },
195
+ [`${id}BaseDomainRecord`]: !!baseDomainRecordAliasTargetDNSName
196
+ ? {
197
+ Type: "AWS::Route53::RecordSet",
198
+ DeletionPolicy: "Delete",
199
+ Properties: {
200
+ HostedZoneId: hostedZoneId,
201
+ Type: "A",
202
+ Name: domainName,
203
+ AliasTarget: {
204
+ HostedZoneId: "Z2FDTNDATAQYW2",
205
+ DNSName: baseDomainRecordAliasTargetDNSName,
206
+ },
207
+ },
208
+ }
209
+ : undefined,
210
+ [`${id}UserPoolDomainRecord`]: {
211
+ Type: "AWS::Route53::RecordSet",
212
+ DeletionPolicy: "Delete",
213
+ Properties: {
214
+ HostedZoneId: hostedZoneId,
215
+ Type: "A",
216
+ Name: {
217
+ "Fn::Sub": [
218
+ "auth.${BaseDomainName}",
219
+ {
220
+ BaseDomainName: domainName,
221
+ },
222
+ ],
223
+ },
224
+ AliasTarget: {
225
+ HostedZoneId: "Z2FDTNDATAQYW2",
226
+ DNSName: {
227
+ "Fn::GetAtt": [`${id}UserPoolDomain`, "CloudFrontDistribution"],
228
+ },
229
+ },
230
+ },
231
+ },
232
+ [`${id}UserPoolDomain`]: {
233
+ Type: "AWS::Cognito::UserPoolDomain",
234
+ DependsOn: !!baseDomainRecordAliasTargetDNSName
235
+ ? `${id}BaseDomainRecord`
236
+ : undefined,
237
+ Properties: {
238
+ Domain: {
239
+ "Fn::Sub": [
240
+ "auth.${BaseDomainName}",
241
+ {
242
+ BaseDomainName: domainName,
243
+ },
244
+ ],
245
+ },
246
+ UserPoolId: {
247
+ Ref: `${id}UserPool`,
248
+ },
249
+ CustomDomainConfig: {
250
+ CertificateArn: sslCertificateArn,
251
+ },
252
+ },
253
+ },
254
+ [`${id}UserPoolClient`]: {
255
+ Type: "AWS::Cognito::UserPoolClient",
256
+ Properties: {
257
+ ClientName: {
258
+ "Fn::Sub": [`$\{AWS::StackName\}${id}UserPoolClient`, {}],
259
+ },
260
+ UserPoolId: {
261
+ Ref: `${id}UserPool`,
262
+ },
263
+ AllowedOAuthFlowsUserPoolClient: true,
264
+ AllowedOAuthFlows: ["code", "implicit"],
265
+ AllowedOAuthScopes: [
266
+ "openid",
267
+ "email",
268
+ "phone",
269
+ "profile",
270
+ "aws.cognito.signin.user.admin",
271
+ ],
272
+ CallbackURLs: callbackUrls,
273
+ LogoutURLs: logoutUrls,
274
+ EnableTokenRevocation: true,
275
+ PreventUserExistenceErrors: "ENABLED",
276
+ SupportedIdentityProviders: ["COGNITO"],
277
+ },
278
+ },
279
+ [`${id}IdentityPool`]: {
280
+ Type: "AWS::Cognito::IdentityPool",
281
+ Properties: {
282
+ IdentityPoolName: {
283
+ "Fn::Sub": [`$\{AWS::StackName\}${id}IdentityPool`, {}],
284
+ },
285
+ AllowUnauthenticatedIdentities: false,
286
+ CognitoIdentityProviders: [
287
+ {
288
+ ClientId: {
289
+ Ref: `${id}UserPoolClient`,
290
+ },
291
+ ProviderName: {
292
+ "Fn::GetAtt": [`${id}UserPool`, "ProviderName"],
293
+ },
294
+ ServerSideTokenCheck: true,
295
+ },
296
+ ],
297
+ },
298
+ },
299
+ ...apiRoleConfig,
300
+ },
301
+ };
302
+ });
@@ -0,0 +1,19 @@
1
+ export type AddAuthConfig = {
2
+ userManagementId: string;
3
+ authRoleName: string;
4
+ unauthRoleName: string;
5
+ hostedZoneIdParameterName: string;
6
+ domainNameParameterName: string;
7
+ sslCertificateId: string;
8
+ mainCDNCloudFrontId: string;
9
+ apiCloudFunctionGatewayId: string;
10
+ apiStageName: string;
11
+ adminGroupId: string;
12
+ userManagementAdminGroupName: string;
13
+ callbackUrls: any[];
14
+ logoutUrls: any[];
15
+ };
16
+ /**
17
+ * Add a user management system.
18
+ * */
19
+ export declare const addAuth: import("../utils").ResourcePackApplier<AddAuthConfig>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addAuth = void 0;
4
+ const user_management_1 = require("./auth/user-management");
5
+ const utils_1 = require("../utils");
6
+ const SimpleCFT_1 = require("../SimpleCFT");
7
+ /**
8
+ * Add a user management system.
9
+ * */
10
+ exports.addAuth = (0, utils_1.createResourcePack)(({ userManagementId, authRoleName, unauthRoleName, hostedZoneIdParameterName, domainNameParameterName, sslCertificateId, callbackUrls, logoutUrls, mainCDNCloudFrontId, apiCloudFunctionGatewayId, apiStageName, adminGroupId, userManagementAdminGroupName, }) => new SimpleCFT_1.SimpleCFT()
11
+ .applyPack(user_management_1.addUserManagement, {
12
+ id: userManagementId,
13
+ authRoleName,
14
+ unauthRoleName,
15
+ domainName: {
16
+ Ref: domainNameParameterName,
17
+ },
18
+ hostedZoneId: {
19
+ Ref: hostedZoneIdParameterName,
20
+ },
21
+ sslCertificateArn: {
22
+ Ref: sslCertificateId,
23
+ },
24
+ callbackUrls: callbackUrls,
25
+ logoutUrls: logoutUrls,
26
+ baseDomainRecordAliasTargetDNSName: {
27
+ "Fn::GetAtt": [mainCDNCloudFrontId, "DomainName"],
28
+ },
29
+ apiGatewayRESTAPIId: {
30
+ Ref: apiCloudFunctionGatewayId,
31
+ },
32
+ apiStageName,
33
+ })
34
+ .patch({
35
+ Resources: {
36
+ [adminGroupId]: {
37
+ Type: "AWS::Cognito::UserPoolGroup",
38
+ Properties: {
39
+ GroupName: userManagementAdminGroupName,
40
+ UserPoolId: {
41
+ Ref: `${userManagementId}UserPool`,
42
+ },
43
+ Description: "Application admin group.",
44
+ },
45
+ },
46
+ },
47
+ }).template);
@@ -0,0 +1,100 @@
1
+ export type AtLeastOne<T, U = {
2
+ [K in keyof T]: Pick<T, K>;
3
+ }> = Partial<T> & U[keyof U];
4
+ export declare const COMMAND_HELPERS: {
5
+ updateFunction: ({ cloudFunctionArn, codeZipFilePath, }: {
6
+ cloudFunctionArn: string;
7
+ codeZipFilePath: string;
8
+ }) => string;
9
+ copyDirectoryToS3: ({ s3Domain, directoryPath, }: {
10
+ s3Domain: string;
11
+ directoryPath: string;
12
+ }) => string;
13
+ cloudFrontInvalidation: ({ cloudFrontDistributionId, pathsToInvalidate, }: {
14
+ cloudFrontDistributionId: string;
15
+ pathsToInvalidate?: string[];
16
+ }) => string;
17
+ addNPMTokenWithNPMRC: ({ npmToken }: {
18
+ npmToken: string;
19
+ }) => string;
20
+ };
21
+ export type LinuxUserNameString = string;
22
+ export type YesOrNo = "yes" | "no";
23
+ export interface Env {
24
+ shell?: "bash" | "/bin/sh" | "powershell.exe" | "cmd.exe" | string;
25
+ variables?: Record<string, string>;
26
+ "parameter-store"?: Record<string, string>;
27
+ "exported-variables"?: string[];
28
+ "secrets-manager"?: Record<string, `${string}:${string}:${string}:${string}`>;
29
+ "git-credential-helper"?: YesOrNo;
30
+ }
31
+ export interface Proxy {
32
+ "upload-artifacts"?: YesOrNo;
33
+ logs?: YesOrNo;
34
+ }
35
+ export interface Batch {
36
+ "fast-fail"?: boolean;
37
+ "build-list"?: any;
38
+ "build-matrix"?: any;
39
+ "build-graph"?: any;
40
+ [key: string]: any;
41
+ }
42
+ export interface Phase {
43
+ "runtime-versions"?: Record<string, any>;
44
+ "run-as"?: LinuxUserNameString;
45
+ "on-failure"?: "ABORT" | "CONTINUE";
46
+ commands: string[];
47
+ finally?: string[];
48
+ }
49
+ export type PhaseConfig = AtLeastOne<{
50
+ install: Phase;
51
+ pre_build: Phase;
52
+ build: Phase;
53
+ post_build: Phase;
54
+ }>;
55
+ export interface ReportGroupNameOrArn {
56
+ files?: string[];
57
+ "base-directory"?: string;
58
+ "discard-paths"?: string;
59
+ "file-format"?: string;
60
+ }
61
+ export interface Reports {
62
+ "report-group-name-or-arn"?: ReportGroupNameOrArn;
63
+ }
64
+ export interface ArtifactIdentifier {
65
+ files?: string[];
66
+ name?: string;
67
+ "discard-paths"?: string;
68
+ "base-directory"?: string;
69
+ }
70
+ export interface SecondaryArtifacts {
71
+ artifactIdentifier?: ArtifactIdentifier;
72
+ }
73
+ export interface Artifacts {
74
+ files?: string[];
75
+ name?: string;
76
+ "discard-paths"?: string;
77
+ "base-directory"?: string;
78
+ "exclude-paths"?: string;
79
+ "enable-symlinks"?: string;
80
+ "s3-prefix"?: string;
81
+ "secondary-artifacts"?: SecondaryArtifacts;
82
+ }
83
+ export interface Cache {
84
+ paths?: string[];
85
+ }
86
+ export interface BuildSpec {
87
+ version?: number;
88
+ "run-as"?: LinuxUserNameString;
89
+ env?: Env;
90
+ proxy?: Proxy;
91
+ batch?: Batch;
92
+ phases: PhaseConfig;
93
+ reports?: Reports;
94
+ artifacts?: Artifacts;
95
+ cache?: Cache;
96
+ }
97
+ /**
98
+ * Create a build spec for a build pipeline (CI/CD).
99
+ * */
100
+ export declare const createBuildSpec: ({ version, phases }: BuildSpec) => string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createBuildSpec = exports.COMMAND_HELPERS = void 0;
7
+ const yaml_1 = __importDefault(require("yaml"));
8
+ exports.COMMAND_HELPERS = {
9
+ updateFunction: ({ cloudFunctionArn, codeZipFilePath, }) => `aws lambda update-function-code --function-name "${cloudFunctionArn}" --zip-file "fileb://${codeZipFilePath}"`,
10
+ copyDirectoryToS3: ({ s3Domain, directoryPath, }) => `aws s3 cp --recursive --acl public-read ${directoryPath} s3://${s3Domain}/`,
11
+ cloudFrontInvalidation: ({ cloudFrontDistributionId, pathsToInvalidate = ["/*"], }) => `aws cloudfront create-invalidation --distribution-id "${cloudFrontDistributionId}" --paths "${pathsToInvalidate.join('" "')}"`,
12
+ addNPMTokenWithNPMRC: ({ npmToken }) => `echo '//registry.npmjs.org/:_authToken=${npmToken}' > .npmrc`,
13
+ };
14
+ /**
15
+ * Create a build spec for a build pipeline (CI/CD).
16
+ * */
17
+ const createBuildSpec = ({ version = 0.2, phases }) => yaml_1.default.stringify(
18
+ // TRICKY: Removed all keys with a value of `undefined`.
19
+ JSON.parse(JSON.stringify({
20
+ version,
21
+ phases,
22
+ })));
23
+ exports.createBuildSpec = createBuildSpec;
@@ -0,0 +1,29 @@
1
+ import { AWS } from "../types/IaCTypes";
2
+ export declare const DEFAULT_BUILD_PIPELINE_REPO_PROVIDER = "GitHub";
3
+ export type BuildPipelineRepoConfig = {
4
+ provider?: any;
5
+ owner: any;
6
+ repo: any;
7
+ branch: any;
8
+ oauthToken: any;
9
+ };
10
+ export type CustomCodeBuildString<T extends string> = T & {
11
+ __custom?: never;
12
+ };
13
+ export type CodeBuildEnvironmentType = "ARM_CONTAINER" | "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER" | "LINUX_EC2" | "ARM_EC2" | "WINDOWS_EC2" | "MAC_ARM" | CustomCodeBuildString<string>;
14
+ export type CodeBuildComputeType = "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE" | "BUILD_GENERAL1_XLARGE" | CustomCodeBuildString<string>;
15
+ export type AddBuildPipelineConfig = {
16
+ id: string;
17
+ buildSpec: any;
18
+ dependsOn?: string | string[];
19
+ environmentVariables?: AWS.CodeBuild.Project.EnvironmentVariable[];
20
+ timeoutInMinutes?: number;
21
+ environmentType?: CodeBuildEnvironmentType;
22
+ environmentComputeType?: CodeBuildComputeType;
23
+ environmentImage?: string;
24
+ repoConfig: BuildPipelineRepoConfig;
25
+ };
26
+ /**
27
+ * Add a build pipeline with full permissions.
28
+ */
29
+ export declare const addBuildPipeline: import("../utils").ResourcePackApplier<AddBuildPipelineConfig>;