@webiny/project-aws 0.0.0-unstable.3c5210ad37

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 (556) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/_templates/appTemplates/admin/src/App.scss +2 -0
  4. package/_templates/appTemplates/admin/src/App.tsx +13 -0
  5. package/_templates/appTemplates/admin/src/Extensions.tsx +7 -0
  6. package/_templates/appTemplates/admin/src/index.tsx +11 -0
  7. package/_templates/appTemplates/admin/tsconfig.json +7 -0
  8. package/_templates/appTemplates/admin/webiny.application.ts +3 -0
  9. package/_templates/appTemplates/admin/webiny.config.ts +3 -0
  10. package/_templates/appTemplates/api/graphql/package.json +43 -0
  11. package/_templates/appTemplates/api/graphql/src/extensions.ts +9 -0
  12. package/_templates/appTemplates/api/graphql/src/index.ts +80 -0
  13. package/_templates/appTemplates/api/graphql/src/security.ts +43 -0
  14. package/_templates/appTemplates/api/graphql/tsconfig.json +7 -0
  15. package/_templates/appTemplates/api/graphql/webiny.config.ts +8 -0
  16. package/_templates/appTemplates/api/migration/src/index.ts +23 -0
  17. package/_templates/appTemplates/api/migration/tsconfig.json +7 -0
  18. package/_templates/appTemplates/api/migration/webiny.config.ts +8 -0
  19. package/_templates/appTemplates/api/webiny.application.ts +3 -0
  20. package/_templates/appTemplates/blueGreen/webiny.application.ts +3 -0
  21. package/_templates/appTemplates/core/webiny.application.ts +3 -0
  22. package/_templates/appTemplates/syncSystem/webiny.application.ts +3 -0
  23. package/_templates/extensions/ApiLambdaFunction/package.json +9 -0
  24. package/_templates/extensions/ApiLambdaFunction/tsconfig.json +7 -0
  25. package/_templates/extensions/ApiLambdaFunction/webiny.config.ts +8 -0
  26. package/_templates/extensions/OpenSearch/api/graphql/src/index.ts +90 -0
  27. package/_templates/extensions/OpenSearch/api/migration/src/index.ts +33 -0
  28. package/_templates/extensions/OpenSearch/coreDdbToEsHandler/dynamoToElastic/src/index.ts +15 -0
  29. package/_templates/extensions/OpenSearch/coreDdbToEsHandler/dynamoToElastic/tsconfig.json +7 -0
  30. package/_templates/extensions/OpenSearch/coreDdbToEsHandler/dynamoToElastic/webiny.config.ts +8 -0
  31. package/abstractions/ApiGqlClient.d.ts +23 -0
  32. package/abstractions/ApiGqlClient.js +4 -0
  33. package/abstractions/ApiGqlClient.js.map +1 -0
  34. package/abstractions/InvokeLambdaFunction.d.ts +18 -0
  35. package/abstractions/InvokeLambdaFunction.js +4 -0
  36. package/abstractions/InvokeLambdaFunction.js.map +1 -0
  37. package/abstractions/index.d.ts +5 -0
  38. package/abstractions/index.js +7 -0
  39. package/abstractions/index.js.map +1 -0
  40. package/abstractions/services/AdminStackOutputService.d.ts +13 -0
  41. package/abstractions/services/AdminStackOutputService.js +4 -0
  42. package/abstractions/services/AdminStackOutputService.js.map +1 -0
  43. package/abstractions/services/ApiStackOutputService.d.ts +30 -0
  44. package/abstractions/services/ApiStackOutputService.js +4 -0
  45. package/abstractions/services/ApiStackOutputService.js.map +1 -0
  46. package/abstractions/services/CoreStackOutputService.d.ts +16 -0
  47. package/abstractions/services/CoreStackOutputService.js +4 -0
  48. package/abstractions/services/CoreStackOutputService.js.map +1 -0
  49. package/admin.d.ts +22 -0
  50. package/admin.js +7 -0
  51. package/admin.js.map +1 -0
  52. package/api.d.ts +22 -0
  53. package/api.js +7 -0
  54. package/api.js.map +1 -0
  55. package/apps/createAdminApp.d.ts +15 -0
  56. package/apps/createAdminApp.js +15 -0
  57. package/apps/createAdminApp.js.map +1 -0
  58. package/apps/createAdminAppConfig.d.ts +2 -0
  59. package/apps/createAdminAppConfig.js +21 -0
  60. package/apps/createAdminAppConfig.js.map +1 -0
  61. package/apps/createApiApp.d.ts +65 -0
  62. package/apps/createApiApp.js +25 -0
  63. package/apps/createApiApp.js.map +1 -0
  64. package/apps/createBlueGreenApp.d.ts +24 -0
  65. package/apps/createBlueGreenApp.js +20 -0
  66. package/apps/createBlueGreenApp.js.map +1 -0
  67. package/apps/createCoreApp.d.ts +36 -0
  68. package/apps/createCoreApp.js +16 -0
  69. package/apps/createCoreApp.js.map +1 -0
  70. package/apps/createReactAppConfig.d.ts +53 -0
  71. package/apps/createReactAppConfig.js +79 -0
  72. package/apps/createReactAppConfig.js.map +1 -0
  73. package/apps/createSyncSystemApp.d.ts +21 -0
  74. package/apps/createSyncSystemApp.js +11 -0
  75. package/apps/createSyncSystemApp.js.map +1 -0
  76. package/apps/index.d.ts +7 -0
  77. package/apps/index.js +9 -0
  78. package/apps/index.js.map +1 -0
  79. package/cli.d.ts +9 -0
  80. package/cli.js +6 -0
  81. package/cli.js.map +1 -0
  82. package/exports/extensions.d.ts +5 -0
  83. package/exports/extensions.js +7 -0
  84. package/exports/extensions.js.map +1 -0
  85. package/exports/infra/admin.d.ts +1 -0
  86. package/exports/infra/admin.js +3 -0
  87. package/exports/infra/admin.js.map +1 -0
  88. package/exports/infra/api.d.ts +1 -0
  89. package/exports/infra/api.js +3 -0
  90. package/exports/infra/api.js.map +1 -0
  91. package/exports/infra/core.d.ts +1 -0
  92. package/exports/infra/core.js +3 -0
  93. package/exports/infra/core.js.map +1 -0
  94. package/exports/infra/index.d.ts +1 -0
  95. package/exports/infra/index.js +3 -0
  96. package/exports/infra/index.js.map +1 -0
  97. package/extensions/ApiLambdaFunction.d.ts +11 -0
  98. package/extensions/ApiLambdaFunction.js +68 -0
  99. package/extensions/ApiLambdaFunction.js.map +1 -0
  100. package/extensions/AwsDefaultRegion.d.ts +8 -0
  101. package/extensions/AwsDefaultRegion.js +22 -0
  102. package/extensions/AwsDefaultRegion.js.map +1 -0
  103. package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.d.ts +10 -0
  104. package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js +40 -0
  105. package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js.map +1 -0
  106. package/extensions/OpenSearch/EnsureOsWasDeployed.d.ts +11 -0
  107. package/extensions/OpenSearch/EnsureOsWasDeployed.js +34 -0
  108. package/extensions/OpenSearch/EnsureOsWasDeployed.js.map +1 -0
  109. package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.d.ts +12 -0
  110. package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js +31 -0
  111. package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js.map +1 -0
  112. package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.d.ts +12 -0
  113. package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js +32 -0
  114. package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js.map +1 -0
  115. package/extensions/OpenSearch.d.ts +17 -0
  116. package/extensions/OpenSearch.js +35 -0
  117. package/extensions/OpenSearch.js.map +1 -0
  118. package/extensions/ProjectAws/AdminStackOutputService.d.ts +1 -0
  119. package/extensions/ProjectAws/AdminStackOutputService.js +3 -0
  120. package/extensions/ProjectAws/AdminStackOutputService.js.map +1 -0
  121. package/extensions/ProjectAws/ApiStackOutputService.d.ts +1 -0
  122. package/extensions/ProjectAws/ApiStackOutputService.js +3 -0
  123. package/extensions/ProjectAws/ApiStackOutputService.js.map +1 -0
  124. package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.d.ts +17 -0
  125. package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.js +108 -0
  126. package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.js.map +1 -0
  127. package/extensions/ProjectAws/AutoInstall.d.ts +33 -0
  128. package/extensions/ProjectAws/AutoInstall.js +19 -0
  129. package/extensions/ProjectAws/AutoInstall.js.map +1 -0
  130. package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.d.ts +10 -0
  131. package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.js +27 -0
  132. package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.js.map +1 -0
  133. package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.d.ts +20 -0
  134. package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.js +54 -0
  135. package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.js.map +1 -0
  136. package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.d.ts +18 -0
  137. package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.js +60 -0
  138. package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.js.map +1 -0
  139. package/extensions/ProjectAws/BuildAppWorkspace.d.ts +12 -0
  140. package/extensions/ProjectAws/BuildAppWorkspace.js +66 -0
  141. package/extensions/ProjectAws/BuildAppWorkspace.js.map +1 -0
  142. package/extensions/ProjectAws/CoreStackOutputService.d.ts +1 -0
  143. package/extensions/ProjectAws/CoreStackOutputService.js +3 -0
  144. package/extensions/ProjectAws/CoreStackOutputService.js.map +1 -0
  145. package/extensions/ProjectAws/ExecuteDataMigrations.d.ts +16 -0
  146. package/extensions/ProjectAws/ExecuteDataMigrations.js +69 -0
  147. package/extensions/ProjectAws/ExecuteDataMigrations.js.map +1 -0
  148. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.d.ts +13 -0
  149. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.js +43 -0
  150. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.js.map +1 -0
  151. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.d.ts +13 -0
  152. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.js +24 -0
  153. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.js.map +1 -0
  154. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.d.ts +13 -0
  155. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.js +24 -0
  156. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.js.map +1 -0
  157. package/extensions/ProjectAws/SetDatabaseSetupOutput.d.ts +10 -0
  158. package/extensions/ProjectAws/SetDatabaseSetupOutput.js +29 -0
  159. package/extensions/ProjectAws/SetDatabaseSetupOutput.js.map +1 -0
  160. package/extensions/ProjectAws/UploadAdminAppToS3.d.ts +13 -0
  161. package/extensions/ProjectAws/UploadAdminAppToS3.js +69 -0
  162. package/extensions/ProjectAws/UploadAdminAppToS3.js.map +1 -0
  163. package/extensions/ProjectAws/definitions.d.ts +3 -0
  164. package/extensions/ProjectAws/definitions.js +9 -0
  165. package/extensions/ProjectAws/definitions.js.map +1 -0
  166. package/extensions/ProjectAws.d.ts +2 -0
  167. package/extensions/ProjectAws.js +52 -0
  168. package/extensions/ProjectAws.js.map +1 -0
  169. package/extensions/definitions.d.ts +3 -0
  170. package/extensions/definitions.js +6 -0
  171. package/extensions/definitions.js.map +1 -0
  172. package/extensions/index.d.ts +5 -0
  173. package/extensions/index.js +7 -0
  174. package/extensions/index.js.map +1 -0
  175. package/features/ApiGqlClient.d.ts +21 -0
  176. package/features/ApiGqlClient.js +59 -0
  177. package/features/ApiGqlClient.js.map +1 -0
  178. package/features/InvokeLambdaFunction.d.ts +10 -0
  179. package/features/InvokeLambdaFunction.js +38 -0
  180. package/features/InvokeLambdaFunction.js.map +1 -0
  181. package/features/index.d.ts +2 -0
  182. package/features/index.js +4 -0
  183. package/features/index.js.map +1 -0
  184. package/index.d.ts +6 -0
  185. package/index.js +8 -0
  186. package/index.js.map +1 -0
  187. package/infra.d.ts +425 -0
  188. package/infra.js +54 -0
  189. package/infra.js.map +1 -0
  190. package/package.json +60 -0
  191. package/project.d.ts +139 -0
  192. package/project.js +10 -0
  193. package/project.js.map +1 -0
  194. package/pulumi/apps/admin/createAdminPulumiApp.d.ts +12 -0
  195. package/pulumi/apps/admin/createAdminPulumiApp.js +52 -0
  196. package/pulumi/apps/admin/createAdminPulumiApp.js.map +1 -0
  197. package/pulumi/apps/admin/index.d.ts +1 -0
  198. package/pulumi/apps/admin/index.js +3 -0
  199. package/pulumi/apps/admin/index.js.map +1 -0
  200. package/pulumi/apps/api/ApiBackgroundTask.d.ts +12 -0
  201. package/pulumi/apps/api/ApiBackgroundTask.js +148 -0
  202. package/pulumi/apps/api/ApiBackgroundTask.js.map +1 -0
  203. package/pulumi/apps/api/ApiCloudfront.d.ts +3 -0
  204. package/pulumi/apps/api/ApiCloudfront.js +136 -0
  205. package/pulumi/apps/api/ApiCloudfront.js.map +1 -0
  206. package/pulumi/apps/api/ApiFileManager.d.ts +11 -0
  207. package/pulumi/apps/api/ApiFileManager.js +39 -0
  208. package/pulumi/apps/api/ApiFileManager.js.map +1 -0
  209. package/pulumi/apps/api/ApiGateway.d.ts +18 -0
  210. package/pulumi/apps/api/ApiGateway.js +80 -0
  211. package/pulumi/apps/api/ApiGateway.js.map +1 -0
  212. package/pulumi/apps/api/ApiGraphql.d.ts +22 -0
  213. package/pulumi/apps/api/ApiGraphql.js +164 -0
  214. package/pulumi/apps/api/ApiGraphql.js.map +1 -0
  215. package/pulumi/apps/api/ApiMigration.d.ts +5 -0
  216. package/pulumi/apps/api/ApiMigration.js +83 -0
  217. package/pulumi/apps/api/ApiMigration.js.map +1 -0
  218. package/pulumi/apps/api/ApiOutput.d.ts +23 -0
  219. package/pulumi/apps/api/ApiOutput.js +36 -0
  220. package/pulumi/apps/api/ApiOutput.js.map +1 -0
  221. package/pulumi/apps/api/ApiScheduler.d.ts +8 -0
  222. package/pulumi/apps/api/ApiScheduler.js +100 -0
  223. package/pulumi/apps/api/ApiScheduler.js.map +1 -0
  224. package/pulumi/apps/api/ApiWebsocket.d.ts +14 -0
  225. package/pulumi/apps/api/ApiWebsocket.js +138 -0
  226. package/pulumi/apps/api/ApiWebsocket.js.map +1 -0
  227. package/pulumi/apps/api/backgroundTask/definition.d.ts +7 -0
  228. package/pulumi/apps/api/backgroundTask/definition.js +149 -0
  229. package/pulumi/apps/api/backgroundTask/definition.js.map +1 -0
  230. package/pulumi/apps/api/backgroundTask/policy.d.ts +8 -0
  231. package/pulumi/apps/api/backgroundTask/policy.js +26 -0
  232. package/pulumi/apps/api/backgroundTask/policy.js.map +1 -0
  233. package/pulumi/apps/api/backgroundTask/role.d.ts +9 -0
  234. package/pulumi/apps/api/backgroundTask/role.js +32 -0
  235. package/pulumi/apps/api/backgroundTask/role.js.map +1 -0
  236. package/pulumi/apps/api/backgroundTask/types.d.ts +91 -0
  237. package/pulumi/apps/api/backgroundTask/types.js +14 -0
  238. package/pulumi/apps/api/backgroundTask/types.js.map +1 -0
  239. package/pulumi/apps/api/createApiPulumiApp.d.ts +57 -0
  240. package/pulumi/apps/api/createApiPulumiApp.js +281 -0
  241. package/pulumi/apps/api/createApiPulumiApp.js.map +1 -0
  242. package/pulumi/apps/api/handleGuardDutyEvents.d.ts +2 -0
  243. package/pulumi/apps/api/handleGuardDutyEvents.js +55 -0
  244. package/pulumi/apps/api/handleGuardDutyEvents.js.map +1 -0
  245. package/pulumi/apps/api/index.d.ts +9 -0
  246. package/pulumi/apps/api/index.js +11 -0
  247. package/pulumi/apps/api/index.js.map +1 -0
  248. package/pulumi/apps/awsUtils.d.ts +5 -0
  249. package/pulumi/apps/awsUtils.js +34 -0
  250. package/pulumi/apps/awsUtils.js.map +1 -0
  251. package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.d.ts +11 -0
  252. package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.js +44 -0
  253. package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.js.map +1 -0
  254. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.d.ts +17 -0
  255. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.js +100 -0
  256. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.js.map +1 -0
  257. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.d.ts +10 -0
  258. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.js +20 -0
  259. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.js.map +1 -0
  260. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.d.ts +7 -0
  261. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js +15 -0
  262. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js.map +1 -0
  263. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.d.ts +14 -0
  264. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js +23 -0
  265. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js.map +1 -0
  266. package/pulumi/apps/blueGreen/cloudfront/createOriginId.d.ts +11 -0
  267. package/pulumi/apps/blueGreen/cloudfront/createOriginId.js +10 -0
  268. package/pulumi/apps/blueGreen/cloudfront/createOriginId.js.map +1 -0
  269. package/pulumi/apps/blueGreen/constants.d.ts +3 -0
  270. package/pulumi/apps/blueGreen/constants.js +5 -0
  271. package/pulumi/apps/blueGreen/constants.js.map +1 -0
  272. package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.d.ts +15 -0
  273. package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.js +122 -0
  274. package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -0
  275. package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.d.ts +9 -0
  276. package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.js +30 -0
  277. package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -0
  278. package/pulumi/apps/blueGreen/domains/convertApplicationDomains.d.ts +6 -0
  279. package/pulumi/apps/blueGreen/domains/convertApplicationDomains.js +23 -0
  280. package/pulumi/apps/blueGreen/domains/convertApplicationDomains.js.map +1 -0
  281. package/pulumi/apps/blueGreen/domains/getApplicationDomains.d.ts +18 -0
  282. package/pulumi/apps/blueGreen/domains/getApplicationDomains.js +73 -0
  283. package/pulumi/apps/blueGreen/domains/getApplicationDomains.js.map +1 -0
  284. package/pulumi/apps/blueGreen/domains/resolveDomains.d.ts +6 -0
  285. package/pulumi/apps/blueGreen/domains/resolveDomains.js +41 -0
  286. package/pulumi/apps/blueGreen/domains/resolveDomains.js.map +1 -0
  287. package/pulumi/apps/blueGreen/functions/buildHandlerFunction.d.ts +15 -0
  288. package/pulumi/apps/blueGreen/functions/buildHandlerFunction.js +18 -0
  289. package/pulumi/apps/blueGreen/functions/buildHandlerFunction.js.map +1 -0
  290. package/pulumi/apps/blueGreen/functions/handler.d.ts +1 -0
  291. package/pulumi/apps/blueGreen/functions/handler.js +60 -0
  292. package/pulumi/apps/blueGreen/functions/handler.js.map +1 -0
  293. package/pulumi/apps/blueGreen/types.d.ts +77 -0
  294. package/pulumi/apps/blueGreen/types.js +3 -0
  295. package/pulumi/apps/blueGreen/types.js.map +1 -0
  296. package/pulumi/apps/blueGreen/validation/validateDeployments.d.ts +2 -0
  297. package/pulumi/apps/blueGreen/validation/validateDeployments.js +33 -0
  298. package/pulumi/apps/blueGreen/validation/validateDeployments.js.map +1 -0
  299. package/pulumi/apps/common/CoreOutput.d.ts +38 -0
  300. package/pulumi/apps/common/CoreOutput.js +46 -0
  301. package/pulumi/apps/common/CoreOutput.js.map +1 -0
  302. package/pulumi/apps/common/VpcConfig.d.ts +8 -0
  303. package/pulumi/apps/common/VpcConfig.js +25 -0
  304. package/pulumi/apps/common/VpcConfig.js.map +1 -0
  305. package/pulumi/apps/common/index.d.ts +2 -0
  306. package/pulumi/apps/common/index.js +4 -0
  307. package/pulumi/apps/common/index.js.map +1 -0
  308. package/pulumi/apps/core/CoreAuditLogsDynamo.d.ts +5 -0
  309. package/pulumi/apps/core/CoreAuditLogsDynamo.js +186 -0
  310. package/pulumi/apps/core/CoreAuditLogsDynamo.js.map +1 -0
  311. package/pulumi/apps/core/CoreCognito.d.ts +10 -0
  312. package/pulumi/apps/core/CoreCognito.js +110 -0
  313. package/pulumi/apps/core/CoreCognito.js.map +1 -0
  314. package/pulumi/apps/core/CoreDynamo.d.ts +5 -0
  315. package/pulumi/apps/core/CoreDynamo.js +74 -0
  316. package/pulumi/apps/core/CoreDynamo.js.map +1 -0
  317. package/pulumi/apps/core/CoreEventBus.d.ts +1 -0
  318. package/pulumi/apps/core/CoreEventBus.js +13 -0
  319. package/pulumi/apps/core/CoreEventBus.js.map +1 -0
  320. package/pulumi/apps/core/CoreFileManager.d.ts +11 -0
  321. package/pulumi/apps/core/CoreFileManager.js +72 -0
  322. package/pulumi/apps/core/CoreFileManager.js.map +1 -0
  323. package/pulumi/apps/core/CoreOpenSearch.d.ts +16 -0
  324. package/pulumi/apps/core/CoreOpenSearch.js +299 -0
  325. package/pulumi/apps/core/CoreOpenSearch.js.map +1 -0
  326. package/pulumi/apps/core/CoreVpc.d.ts +13 -0
  327. package/pulumi/apps/core/CoreVpc.js +160 -0
  328. package/pulumi/apps/core/CoreVpc.js.map +1 -0
  329. package/pulumi/apps/core/LogDynamo.d.ts +5 -0
  330. package/pulumi/apps/core/LogDynamo.js +122 -0
  331. package/pulumi/apps/core/LogDynamo.js.map +1 -0
  332. package/pulumi/apps/core/WatchCommand.d.ts +7 -0
  333. package/pulumi/apps/core/WatchCommand.js +105 -0
  334. package/pulumi/apps/core/WatchCommand.js.map +1 -0
  335. package/pulumi/apps/core/cognitoIdentityProviders/amazon.d.ts +9 -0
  336. package/pulumi/apps/core/cognitoIdentityProviders/amazon.js +24 -0
  337. package/pulumi/apps/core/cognitoIdentityProviders/amazon.js.map +1 -0
  338. package/pulumi/apps/core/cognitoIdentityProviders/apple.d.ts +4 -0
  339. package/pulumi/apps/core/cognitoIdentityProviders/apple.js +19 -0
  340. package/pulumi/apps/core/cognitoIdentityProviders/apple.js.map +1 -0
  341. package/pulumi/apps/core/cognitoIdentityProviders/configure.d.ts +28 -0
  342. package/pulumi/apps/core/cognitoIdentityProviders/configure.js +57 -0
  343. package/pulumi/apps/core/cognitoIdentityProviders/configure.js.map +1 -0
  344. package/pulumi/apps/core/cognitoIdentityProviders/facebook.d.ts +4 -0
  345. package/pulumi/apps/core/cognitoIdentityProviders/facebook.js +19 -0
  346. package/pulumi/apps/core/cognitoIdentityProviders/facebook.js.map +1 -0
  347. package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.d.ts +3 -0
  348. package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.js +17 -0
  349. package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.js.map +1 -0
  350. package/pulumi/apps/core/cognitoIdentityProviders/google.d.ts +4 -0
  351. package/pulumi/apps/core/cognitoIdentityProviders/google.js +19 -0
  352. package/pulumi/apps/core/cognitoIdentityProviders/google.js.map +1 -0
  353. package/pulumi/apps/core/cognitoIdentityProviders/index.d.ts +1 -0
  354. package/pulumi/apps/core/cognitoIdentityProviders/index.js +3 -0
  355. package/pulumi/apps/core/cognitoIdentityProviders/index.js.map +1 -0
  356. package/pulumi/apps/core/cognitoIdentityProviders/oidc.d.ts +4 -0
  357. package/pulumi/apps/core/cognitoIdentityProviders/oidc.js +20 -0
  358. package/pulumi/apps/core/cognitoIdentityProviders/oidc.js.map +1 -0
  359. package/pulumi/apps/core/configureS3BucketMalwareProtection.d.ts +2 -0
  360. package/pulumi/apps/core/configureS3BucketMalwareProtection.js +195 -0
  361. package/pulumi/apps/core/configureS3BucketMalwareProtection.js.map +1 -0
  362. package/pulumi/apps/core/createCorePulumiApp.d.ts +32 -0
  363. package/pulumi/apps/core/createCorePulumiApp.js +295 -0
  364. package/pulumi/apps/core/createCorePulumiApp.js.map +1 -0
  365. package/pulumi/apps/core/index.d.ts +8 -0
  366. package/pulumi/apps/core/index.js +10 -0
  367. package/pulumi/apps/core/index.js.map +1 -0
  368. package/pulumi/apps/core/webinyWatchCommand/handler.d.ts +28 -0
  369. package/pulumi/apps/core/webinyWatchCommand/handler.js +37 -0
  370. package/pulumi/apps/core/webinyWatchCommand/handler.js.map +1 -0
  371. package/pulumi/apps/createAppBucket.d.ts +17 -0
  372. package/pulumi/apps/createAppBucket.js +152 -0
  373. package/pulumi/apps/createAppBucket.js.map +1 -0
  374. package/pulumi/apps/customDomain.d.ts +9 -0
  375. package/pulumi/apps/customDomain.js +9 -0
  376. package/pulumi/apps/customDomain.js.map +1 -0
  377. package/pulumi/apps/extensions/getAwsTagsFromExtension.d.ts +2 -0
  378. package/pulumi/apps/extensions/getAwsTagsFromExtension.js +10 -0
  379. package/pulumi/apps/extensions/getAwsTagsFromExtension.js.map +1 -0
  380. package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.d.ts +23 -0
  381. package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.js +10 -0
  382. package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.js.map +1 -0
  383. package/pulumi/apps/extensions/getOsConfigFromExtension.d.ts +7 -0
  384. package/pulumi/apps/extensions/getOsConfigFromExtension.js +33 -0
  385. package/pulumi/apps/extensions/getOsConfigFromExtension.js.map +1 -0
  386. package/pulumi/apps/extensions/getVpcConfigFromExtension.d.ts +15 -0
  387. package/pulumi/apps/extensions/getVpcConfigFromExtension.js +29 -0
  388. package/pulumi/apps/extensions/getVpcConfigFromExtension.js.map +1 -0
  389. package/pulumi/apps/index.d.ts +6 -0
  390. package/pulumi/apps/index.js +8 -0
  391. package/pulumi/apps/index.js.map +1 -0
  392. package/pulumi/apps/lambdaUtils.d.ts +11 -0
  393. package/pulumi/apps/lambdaUtils.js +70 -0
  394. package/pulumi/apps/lambdaUtils.js.map +1 -0
  395. package/pulumi/apps/react/createReactPulumiApp.d.ts +32 -0
  396. package/pulumi/apps/react/createReactPulumiApp.js +150 -0
  397. package/pulumi/apps/react/createReactPulumiApp.js.map +1 -0
  398. package/pulumi/apps/react/index.d.ts +1 -0
  399. package/pulumi/apps/react/index.js +3 -0
  400. package/pulumi/apps/react/index.js.map +1 -0
  401. package/pulumi/apps/syncSystem/SyncSystemDynamo.d.ts +5 -0
  402. package/pulumi/apps/syncSystem/SyncSystemDynamo.js +56 -0
  403. package/pulumi/apps/syncSystem/SyncSystemDynamo.js.map +1 -0
  404. package/pulumi/apps/syncSystem/SyncSystemDynamoDb.d.ts +3 -0
  405. package/pulumi/apps/syncSystem/SyncSystemDynamoDb.js +52 -0
  406. package/pulumi/apps/syncSystem/SyncSystemDynamoDb.js.map +1 -0
  407. package/pulumi/apps/syncSystem/SyncSystemEventBus.d.ts +6 -0
  408. package/pulumi/apps/syncSystem/SyncSystemEventBus.js +77 -0
  409. package/pulumi/apps/syncSystem/SyncSystemEventBus.js.map +1 -0
  410. package/pulumi/apps/syncSystem/SyncSystemLambda.d.ts +11 -0
  411. package/pulumi/apps/syncSystem/SyncSystemLambda.js +99 -0
  412. package/pulumi/apps/syncSystem/SyncSystemLambda.js.map +1 -0
  413. package/pulumi/apps/syncSystem/SyncSystemOutput.d.ts +3 -0
  414. package/pulumi/apps/syncSystem/SyncSystemOutput.js +18 -0
  415. package/pulumi/apps/syncSystem/SyncSystemOutput.js.map +1 -0
  416. package/pulumi/apps/syncSystem/SyncSystemResolverLambda.d.ts +8 -0
  417. package/pulumi/apps/syncSystem/SyncSystemResolverLambda.js +73 -0
  418. package/pulumi/apps/syncSystem/SyncSystemResolverLambda.js.map +1 -0
  419. package/pulumi/apps/syncSystem/SyncSystemSQS.d.ts +3 -0
  420. package/pulumi/apps/syncSystem/SyncSystemSQS.js +54 -0
  421. package/pulumi/apps/syncSystem/SyncSystemSQS.js.map +1 -0
  422. package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.d.ts +7 -0
  423. package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.js +52 -0
  424. package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.js.map +1 -0
  425. package/pulumi/apps/syncSystem/addTableItems.d.ts +8 -0
  426. package/pulumi/apps/syncSystem/addTableItems.js +51 -0
  427. package/pulumi/apps/syncSystem/addTableItems.js.map +1 -0
  428. package/pulumi/apps/syncSystem/api/addServiceManifest.d.ts +8 -0
  429. package/pulumi/apps/syncSystem/api/addServiceManifest.js +18 -0
  430. package/pulumi/apps/syncSystem/api/addServiceManifest.js.map +1 -0
  431. package/pulumi/apps/syncSystem/api/attachCognitoPermissions.d.ts +14 -0
  432. package/pulumi/apps/syncSystem/api/attachCognitoPermissions.js +59 -0
  433. package/pulumi/apps/syncSystem/api/attachCognitoPermissions.js.map +1 -0
  434. package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.d.ts +13 -0
  435. package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.js +44 -0
  436. package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.js.map +1 -0
  437. package/pulumi/apps/syncSystem/api/attachEventBusPermissions.d.ts +17 -0
  438. package/pulumi/apps/syncSystem/api/attachEventBusPermissions.js +48 -0
  439. package/pulumi/apps/syncSystem/api/attachEventBusPermissions.js.map +1 -0
  440. package/pulumi/apps/syncSystem/api/attachS3Permissions.d.ts +14 -0
  441. package/pulumi/apps/syncSystem/api/attachS3Permissions.js +51 -0
  442. package/pulumi/apps/syncSystem/api/attachS3Permissions.js.map +1 -0
  443. package/pulumi/apps/syncSystem/api/index.d.ts +8 -0
  444. package/pulumi/apps/syncSystem/api/index.js +55 -0
  445. package/pulumi/apps/syncSystem/api/index.js.map +1 -0
  446. package/pulumi/apps/syncSystem/constants.d.ts +1 -0
  447. package/pulumi/apps/syncSystem/constants.js +3 -0
  448. package/pulumi/apps/syncSystem/constants.js.map +1 -0
  449. package/pulumi/apps/syncSystem/createSyncResourceName.d.ts +4 -0
  450. package/pulumi/apps/syncSystem/createSyncResourceName.js +10 -0
  451. package/pulumi/apps/syncSystem/createSyncResourceName.js.map +1 -0
  452. package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.d.ts +26 -0
  453. package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.js +181 -0
  454. package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -0
  455. package/pulumi/apps/syncSystem/customApp.d.ts +6 -0
  456. package/pulumi/apps/syncSystem/customApp.js +19 -0
  457. package/pulumi/apps/syncSystem/customApp.js.map +1 -0
  458. package/pulumi/apps/syncSystem/getSyncSystemOutput.d.ts +3 -0
  459. package/pulumi/apps/syncSystem/getSyncSystemOutput.js +10 -0
  460. package/pulumi/apps/syncSystem/getSyncSystemOutput.js.map +1 -0
  461. package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.d.ts +7 -0
  462. package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js +48 -0
  463. package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js.map +1 -0
  464. package/pulumi/apps/syncSystem/types.d.ts +56 -0
  465. package/pulumi/apps/syncSystem/types.js +3 -0
  466. package/pulumi/apps/syncSystem/types.js.map +1 -0
  467. package/pulumi/constants.d.ts +1 -0
  468. package/pulumi/constants.js +4 -0
  469. package/pulumi/constants.js.map +1 -0
  470. package/pulumi/env/awsRegion.d.ts +1 -0
  471. package/pulumi/env/awsRegion.js +6 -0
  472. package/pulumi/env/awsRegion.js.map +1 -0
  473. package/pulumi/env/base.d.ts +15 -0
  474. package/pulumi/env/base.js +29 -0
  475. package/pulumi/env/base.js.map +1 -0
  476. package/pulumi/env/env.d.ts +1 -0
  477. package/pulumi/env/env.js +6 -0
  478. package/pulumi/env/env.js.map +1 -0
  479. package/pulumi/env/projectName.d.ts +1 -0
  480. package/pulumi/env/projectName.js +6 -0
  481. package/pulumi/env/projectName.js.map +1 -0
  482. package/pulumi/env/variant.d.ts +1 -0
  483. package/pulumi/env/variant.js +7 -0
  484. package/pulumi/env/variant.js.map +1 -0
  485. package/pulumi/extensions/AdminCustomDomains.d.ts +14 -0
  486. package/pulumi/extensions/AdminCustomDomains.js +16 -0
  487. package/pulumi/extensions/AdminCustomDomains.js.map +1 -0
  488. package/pulumi/extensions/AwsTags.d.ts +8 -0
  489. package/pulumi/extensions/AwsTags.js +15 -0
  490. package/pulumi/extensions/AwsTags.js.map +1 -0
  491. package/pulumi/extensions/BlueGreenDeployments.d.ts +134 -0
  492. package/pulumi/extensions/BlueGreenDeployments.js +34 -0
  493. package/pulumi/extensions/BlueGreenDeployments.js.map +1 -0
  494. package/pulumi/extensions/OpenSearch.d.ts +17 -0
  495. package/pulumi/extensions/OpenSearch.js +17 -0
  496. package/pulumi/extensions/OpenSearch.js.map +1 -0
  497. package/pulumi/extensions/Vpc.d.ts +71 -0
  498. package/pulumi/extensions/Vpc.js +25 -0
  499. package/pulumi/extensions/Vpc.js.map +1 -0
  500. package/pulumi/extensions/index.d.ts +220 -0
  501. package/pulumi/extensions/index.js +13 -0
  502. package/pulumi/extensions/index.js.map +1 -0
  503. package/pulumi/index.d.ts +3 -0
  504. package/pulumi/index.js +5 -0
  505. package/pulumi/index.js.map +1 -0
  506. package/pulumi/types.d.ts +44 -0
  507. package/pulumi/types.js +3 -0
  508. package/pulumi/types.js.map +1 -0
  509. package/pulumi/utils/addDomainsUrlsOutputs.d.ts +18 -0
  510. package/pulumi/utils/addDomainsUrlsOutputs.js +40 -0
  511. package/pulumi/utils/addDomainsUrlsOutputs.js.map +1 -0
  512. package/pulumi/utils/addServiceManifestTableItem.d.ts +12 -0
  513. package/pulumi/utils/addServiceManifestTableItem.js +28 -0
  514. package/pulumi/utils/addServiceManifestTableItem.js.map +1 -0
  515. package/pulumi/utils/crawlDirectory.d.ts +1 -0
  516. package/pulumi/utils/crawlDirectory.js +19 -0
  517. package/pulumi/utils/crawlDirectory.js.map +1 -0
  518. package/pulumi/utils/createAssetArchive.d.ts +2 -0
  519. package/pulumi/utils/createAssetArchive.js +8 -0
  520. package/pulumi/utils/createAssetArchive.js.map +1 -0
  521. package/pulumi/utils/dynamodb.d.ts +14 -0
  522. package/pulumi/utils/dynamodb.js +29 -0
  523. package/pulumi/utils/dynamodb.js.map +1 -0
  524. package/pulumi/utils/getPresignedPost.d.ts +11 -0
  525. package/pulumi/utils/getPresignedPost.js +34 -0
  526. package/pulumi/utils/getPresignedPost.js.map +1 -0
  527. package/pulumi/utils/index.d.ts +5 -0
  528. package/pulumi/utils/index.js +7 -0
  529. package/pulumi/utils/index.js.map +1 -0
  530. package/pulumi/utils/lambdaEnvVariables.d.ts +20 -0
  531. package/pulumi/utils/lambdaEnvVariables.js +62 -0
  532. package/pulumi/utils/lambdaEnvVariables.js.map +1 -0
  533. package/pulumi/utils/tagResources.d.ts +5 -0
  534. package/pulumi/utils/tagResources.js +33 -0
  535. package/pulumi/utils/tagResources.js.map +1 -0
  536. package/pulumi/utils/uploadFolderToS3.d.ts +26 -0
  537. package/pulumi/utils/uploadFolderToS3.js +147 -0
  538. package/pulumi/utils/uploadFolderToS3.js.map +1 -0
  539. package/pulumi/utils/withServiceManifest.d.ts +14 -0
  540. package/pulumi/utils/withServiceManifest.js +45 -0
  541. package/pulumi/utils/withServiceManifest.js.map +1 -0
  542. package/services/AdminStackOutputService.d.ts +10 -0
  543. package/services/AdminStackOutputService.js +16 -0
  544. package/services/AdminStackOutputService.js.map +1 -0
  545. package/services/ApiStackOutputService.d.ts +10 -0
  546. package/services/ApiStackOutputService.js +16 -0
  547. package/services/ApiStackOutputService.js.map +1 -0
  548. package/services/CoreStackOutputService.d.ts +10 -0
  549. package/services/CoreStackOutputService.js +16 -0
  550. package/services/CoreStackOutputService.js.map +1 -0
  551. package/utils/getTemplatesFolderPath.d.ts +1 -0
  552. package/utils/getTemplatesFolderPath.js +16 -0
  553. package/utils/getTemplatesFolderPath.js.map +1 -0
  554. package/utils/index.d.ts +1 -0
  555. package/utils/index.js +3 -0
  556. package/utils/index.js.map +1 -0
@@ -0,0 +1,6 @@
1
+ import type { IGetApplicationStacksResult } from "./getApplicationDomains.js";
2
+ import type { IDeploymentsDomains } from "../types.js";
3
+ export interface IConvertApplicationDomainsParams {
4
+ input: IGetApplicationStacksResult;
5
+ }
6
+ export declare const convertApplicationDomains: (params: IConvertApplicationDomainsParams) => IDeploymentsDomains;
@@ -0,0 +1,23 @@
1
+ export const convertApplicationDomains = params => {
2
+ const {
3
+ input
4
+ } = params;
5
+ const result = Object.keys(input).map(name => {
6
+ const value = input[name];
7
+ return {
8
+ name,
9
+ env: value.env,
10
+ variant: value.variant,
11
+ domains: {
12
+ api: value.api,
13
+ admin: value.admin
14
+ }
15
+ };
16
+ });
17
+ if (result.length !== 2) {
18
+ throw new Error("Invalid number of domains.");
19
+ }
20
+ return result;
21
+ };
22
+
23
+ //# sourceMappingURL=convertApplicationDomains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["convertApplicationDomains","params","input","result","Object","keys","map","name","value","env","variant","domains","api","admin","length","Error"],"sources":["convertApplicationDomains.ts"],"sourcesContent":["import type { IGetApplicationStacksResult } from \"./getApplicationDomains.js\";\nimport type { IDeploymentDomain, IDeploymentsDomains } from \"../types.js\";\n\nexport interface IConvertApplicationDomainsParams {\n input: IGetApplicationStacksResult;\n}\n\nexport const convertApplicationDomains = (\n params: IConvertApplicationDomainsParams\n): IDeploymentsDomains => {\n const { input } = params;\n\n const result = Object.keys(input).map<IDeploymentDomain>(name => {\n const value = input[name];\n return {\n name,\n env: value.env,\n variant: value.variant,\n domains: {\n api: value.api,\n admin: value.admin\n }\n };\n });\n if (result.length !== 2) {\n throw new Error(\"Invalid number of domains.\");\n }\n return result as IDeploymentsDomains;\n};\n"],"mappings":"AAOA,OAAO,MAAMA,yBAAyB,GAClCC,MAAwC,IAClB;EACtB,MAAM;IAAEC;EAAM,CAAC,GAAGD,MAAM;EAExB,MAAME,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACH,KAAK,CAAC,CAACI,GAAG,CAAoBC,IAAI,IAAI;IAC7D,MAAMC,KAAK,GAAGN,KAAK,CAACK,IAAI,CAAC;IACzB,OAAO;MACHA,IAAI;MACJE,GAAG,EAAED,KAAK,CAACC,GAAG;MACdC,OAAO,EAAEF,KAAK,CAACE,OAAO;MACtBC,OAAO,EAAE;QACLC,GAAG,EAAEJ,KAAK,CAACI,GAAG;QACdC,KAAK,EAAEL,KAAK,CAACK;MACjB;IACJ,CAAC;EACL,CAAC,CAAC;EACF,IAAIV,MAAM,CAACW,MAAM,KAAK,CAAC,EAAE;IACrB,MAAM,IAAIC,KAAK,CAAC,4BAA4B,CAAC;EACjD;EACA,OAAOZ,MAAM;AACjB,CAAC","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ export interface IGetStacksStack {
2
+ name: string;
3
+ env: string;
4
+ variant: string | undefined;
5
+ }
6
+ export interface IGetApplicationStacks {
7
+ stacks: IGetStacksStack[];
8
+ }
9
+ export interface IGetApplicationStacksResultStack {
10
+ env: string;
11
+ variant: string | undefined;
12
+ api: string;
13
+ admin: string;
14
+ }
15
+ export interface IGetApplicationStacksResult {
16
+ [name: string]: IGetApplicationStacksResultStack;
17
+ }
18
+ export declare const getApplicationDomains: (params: IGetApplicationStacks) => Promise<IGetApplicationStacksResult>;
@@ -0,0 +1,73 @@
1
+ import { getStackOutput } from "@webiny/project";
2
+ const apps = ["api", "admin"];
3
+ const removeProtocol = url => {
4
+ return url.replace(/^https?:\/\//, "");
5
+ };
6
+ const getApiDomainName = (results, name) => {
7
+ const api = results.find(r => r.name === name && r.app === "api");
8
+ if (!api?.stack?.apiDomain) {
9
+ throw new Error(`Missing API stack for "${name}" deployment.`);
10
+ }
11
+ return removeProtocol(api.stack.apiDomain);
12
+ };
13
+ const getAdminDomainName = (results, name) => {
14
+ const admin = results.find(r => r.name === name && r.app === "admin");
15
+ if (!admin?.stack?.appDomain) {
16
+ throw new Error(`Missing Admin stack for "${name}" deployment.`);
17
+ }
18
+ return removeProtocol(admin.stack.appDomain);
19
+ };
20
+ const getEnv = (results, name) => {
21
+ const env = results.find(r => r.name === name);
22
+ if (!env) {
23
+ throw new Error(`Missing environment for "${name}" deployment.`);
24
+ }
25
+ return env.env;
26
+ };
27
+ const getVariant = (results, name) => {
28
+ const variant = results.find(r => r.name === name);
29
+ if (!variant) {
30
+ throw new Error(`Missing variant for "${name}" deployment.`);
31
+ }
32
+ return variant.variant;
33
+ };
34
+ export const getApplicationDomains = async params => {
35
+ const promises = [];
36
+ for (const stack of params.stacks) {
37
+ for (const app of apps) {
38
+ promises.push(new Promise(async resolve => {
39
+ const result = await getStackOutput(app);
40
+ resolve({
41
+ env: stack.env,
42
+ variant: stack.variant,
43
+ name: stack.name,
44
+ app,
45
+ stack: result
46
+ });
47
+ }));
48
+ }
49
+ }
50
+ const results = await Promise.all(promises);
51
+ const deployments = {};
52
+ const names = params.stacks.map(s => s.name);
53
+ try {
54
+ for (const name of names) {
55
+ const env = getEnv(results, name);
56
+ const variant = getVariant(results, name);
57
+ const api = getApiDomainName(results, name);
58
+ const admin = getAdminDomainName(results, name);
59
+ deployments[name] = {
60
+ env,
61
+ variant,
62
+ api,
63
+ admin
64
+ };
65
+ }
66
+ return deployments;
67
+ } catch (ex) {
68
+ console.error(ex.message);
69
+ throw ex;
70
+ }
71
+ };
72
+
73
+ //# sourceMappingURL=getApplicationDomains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getStackOutput","apps","removeProtocol","url","replace","getApiDomainName","results","name","api","find","r","app","stack","apiDomain","Error","getAdminDomainName","admin","appDomain","getEnv","env","getVariant","variant","getApplicationDomains","params","promises","stacks","push","Promise","resolve","result","all","deployments","names","map","s","ex","console","error","message"],"sources":["getApplicationDomains.ts"],"sourcesContent":["import { type AppName, getStackOutput } from \"@webiny/project\";\nimport { type IDefaultStackOutput } from \"~/pulumi/types.js\";\n\nexport interface IGetStacksStack {\n name: string;\n env: string;\n variant: string | undefined;\n}\n\nexport interface IGetApplicationStacks {\n stacks: IGetStacksStack[];\n}\n\nconst apps: AppName[] = [\"api\", \"admin\"];\n\ninterface IPromiseResult {\n app: string;\n env: string;\n variant: string | undefined;\n name: string;\n stack: IDefaultStackOutput;\n}\n\nexport interface IGetApplicationStacksResultStack {\n env: string;\n variant: string | undefined;\n api: string;\n admin: string;\n}\n\nexport interface IGetApplicationStacksResult {\n [name: string]: IGetApplicationStacksResultStack;\n}\n\nconst removeProtocol = (url: string): string => {\n return url.replace(/^https?:\\/\\//, \"\");\n};\n\nconst getApiDomainName = (results: IPromiseResult[], name: string): string => {\n const api = results.find(r => r.name === name && r.app === \"api\");\n if (!api?.stack?.apiDomain) {\n throw new Error(`Missing API stack for \"${name}\" deployment.`);\n }\n return removeProtocol(api.stack.apiDomain);\n};\n\nconst getAdminDomainName = (results: IPromiseResult[], name: string): string => {\n const admin = results.find(r => r.name === name && r.app === \"admin\");\n if (!admin?.stack?.appDomain) {\n throw new Error(`Missing Admin stack for \"${name}\" deployment.`);\n }\n return removeProtocol(admin.stack.appDomain);\n};\n\nconst getEnv = (results: IPromiseResult[], name: string): string => {\n const env = results.find(r => r.name === name);\n if (!env) {\n throw new Error(`Missing environment for \"${name}\" deployment.`);\n }\n return env.env;\n};\n\nconst getVariant = (results: IPromiseResult[], name: string): string | undefined => {\n const variant = results.find(r => r.name === name);\n if (!variant) {\n throw new Error(`Missing variant for \"${name}\" deployment.`);\n }\n return variant.variant;\n};\n\nexport const getApplicationDomains = async (\n params: IGetApplicationStacks\n): Promise<IGetApplicationStacksResult> => {\n const promises: Promise<IPromiseResult>[] = [];\n\n for (const stack of params.stacks) {\n for (const app of apps) {\n promises.push(\n new Promise<IPromiseResult>(async resolve => {\n const result = await getStackOutput<IDefaultStackOutput>(app);\n\n resolve({\n env: stack.env,\n variant: stack.variant,\n name: stack.name,\n app,\n stack: result!\n });\n })\n );\n }\n }\n const results = await Promise.all(promises);\n const deployments: IGetApplicationStacksResult = {};\n const names = params.stacks.map(s => s.name);\n try {\n for (const name of names) {\n const env = getEnv(results, name);\n const variant = getVariant(results, name);\n const api = getApiDomainName(results, name);\n const admin = getAdminDomainName(results, name);\n\n deployments[name] = {\n env,\n variant,\n api,\n admin\n };\n }\n return deployments;\n } catch (ex) {\n console.error(ex.message);\n throw ex;\n }\n};\n"],"mappings":"AAAA,SAAuBA,cAAc,QAAQ,iBAAiB;AAa9D,MAAMC,IAAe,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;AAqBxC,MAAMC,cAAc,GAAIC,GAAW,IAAa;EAC5C,OAAOA,GAAG,CAACC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC1C,CAAC;AAED,MAAMC,gBAAgB,GAAGA,CAACC,OAAyB,EAAEC,IAAY,KAAa;EAC1E,MAAMC,GAAG,GAAGF,OAAO,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKA,IAAI,IAAIG,CAAC,CAACC,GAAG,KAAK,KAAK,CAAC;EACjE,IAAI,CAACH,GAAG,EAAEI,KAAK,EAAEC,SAAS,EAAE;IACxB,MAAM,IAAIC,KAAK,CAAC,0BAA0BP,IAAI,eAAe,CAAC;EAClE;EACA,OAAOL,cAAc,CAACM,GAAG,CAACI,KAAK,CAACC,SAAS,CAAC;AAC9C,CAAC;AAED,MAAME,kBAAkB,GAAGA,CAACT,OAAyB,EAAEC,IAAY,KAAa;EAC5E,MAAMS,KAAK,GAAGV,OAAO,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKA,IAAI,IAAIG,CAAC,CAACC,GAAG,KAAK,OAAO,CAAC;EACrE,IAAI,CAACK,KAAK,EAAEJ,KAAK,EAAEK,SAAS,EAAE;IAC1B,MAAM,IAAIH,KAAK,CAAC,4BAA4BP,IAAI,eAAe,CAAC;EACpE;EACA,OAAOL,cAAc,CAACc,KAAK,CAACJ,KAAK,CAACK,SAAS,CAAC;AAChD,CAAC;AAED,MAAMC,MAAM,GAAGA,CAACZ,OAAyB,EAAEC,IAAY,KAAa;EAChE,MAAMY,GAAG,GAAGb,OAAO,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKA,IAAI,CAAC;EAC9C,IAAI,CAACY,GAAG,EAAE;IACN,MAAM,IAAIL,KAAK,CAAC,4BAA4BP,IAAI,eAAe,CAAC;EACpE;EACA,OAAOY,GAAG,CAACA,GAAG;AAClB,CAAC;AAED,MAAMC,UAAU,GAAGA,CAACd,OAAyB,EAAEC,IAAY,KAAyB;EAChF,MAAMc,OAAO,GAAGf,OAAO,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKA,IAAI,CAAC;EAClD,IAAI,CAACc,OAAO,EAAE;IACV,MAAM,IAAIP,KAAK,CAAC,wBAAwBP,IAAI,eAAe,CAAC;EAChE;EACA,OAAOc,OAAO,CAACA,OAAO;AAC1B,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAG,MACjCC,MAA6B,IACU;EACvC,MAAMC,QAAmC,GAAG,EAAE;EAE9C,KAAK,MAAMZ,KAAK,IAAIW,MAAM,CAACE,MAAM,EAAE;IAC/B,KAAK,MAAMd,GAAG,IAAIV,IAAI,EAAE;MACpBuB,QAAQ,CAACE,IAAI,CACT,IAAIC,OAAO,CAAiB,MAAMC,OAAO,IAAI;QACzC,MAAMC,MAAM,GAAG,MAAM7B,cAAc,CAAsBW,GAAG,CAAC;QAE7DiB,OAAO,CAAC;UACJT,GAAG,EAAEP,KAAK,CAACO,GAAG;UACdE,OAAO,EAAET,KAAK,CAACS,OAAO;UACtBd,IAAI,EAAEK,KAAK,CAACL,IAAI;UAChBI,GAAG;UACHC,KAAK,EAAEiB;QACX,CAAC,CAAC;MACN,CAAC,CACL,CAAC;IACL;EACJ;EACA,MAAMvB,OAAO,GAAG,MAAMqB,OAAO,CAACG,GAAG,CAACN,QAAQ,CAAC;EAC3C,MAAMO,WAAwC,GAAG,CAAC,CAAC;EACnD,MAAMC,KAAK,GAAGT,MAAM,CAACE,MAAM,CAACQ,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAC3B,IAAI,CAAC;EAC5C,IAAI;IACA,KAAK,MAAMA,IAAI,IAAIyB,KAAK,EAAE;MACtB,MAAMb,GAAG,GAAGD,MAAM,CAACZ,OAAO,EAAEC,IAAI,CAAC;MACjC,MAAMc,OAAO,GAAGD,UAAU,CAACd,OAAO,EAAEC,IAAI,CAAC;MACzC,MAAMC,GAAG,GAAGH,gBAAgB,CAACC,OAAO,EAAEC,IAAI,CAAC;MAC3C,MAAMS,KAAK,GAAGD,kBAAkB,CAACT,OAAO,EAAEC,IAAI,CAAC;MAE/CwB,WAAW,CAACxB,IAAI,CAAC,GAAG;QAChBY,GAAG;QACHE,OAAO;QACPb,GAAG;QACHQ;MACJ,CAAC;IACL;IACA,OAAOe,WAAW;EACtB,CAAC,CAAC,OAAOI,EAAE,EAAE;IACTC,OAAO,CAACC,KAAK,CAACF,EAAE,CAACG,OAAO,CAAC;IACzB,MAAMH,EAAE;EACZ;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import type { IAttachedDomains, IDeploymentsDomains, IResolvedDomains } from "../types.js";
2
+ export interface IResolveDomainsParams {
3
+ attachedDomains: IAttachedDomains;
4
+ deploymentsDomains: IDeploymentsDomains;
5
+ }
6
+ export declare const resolveDomains: (params: IResolveDomainsParams) => IResolvedDomains;
@@ -0,0 +1,41 @@
1
+ export const resolveDomains = params => {
2
+ const {
3
+ attachedDomains,
4
+ deploymentsDomains
5
+ } = params;
6
+ const domains = attachedDomains.domains;
7
+ if (!domains) {
8
+ return [];
9
+ }
10
+ const types = Object.keys(domains).filter(key => {
11
+ return !!domains[key];
12
+ });
13
+ return types.reduce((output, type) => {
14
+ const value = domains[type];
15
+ /**
16
+ * Should not happen because we are filtering out undefined values when creating the `types` array.
17
+ */
18
+ if (!value) {
19
+ return output;
20
+ } else if (value.length === 0) {
21
+ throw new Error(`Missing domains for "${type}" deployment.`);
22
+ }
23
+ for (const domain of deploymentsDomains) {
24
+ const target = domain.domains[type];
25
+ if (!target) {
26
+ throw new Error(`Missing "${type}" domain in deployment "${domain.name}".`);
27
+ }
28
+ output.push({
29
+ type,
30
+ env: domain.env,
31
+ variant: domain.variant,
32
+ name: domain.name,
33
+ sources: value,
34
+ target
35
+ });
36
+ }
37
+ return output;
38
+ }, []);
39
+ };
40
+
41
+ //# sourceMappingURL=resolveDomains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolveDomains","params","attachedDomains","deploymentsDomains","domains","types","Object","keys","filter","key","reduce","output","type","value","length","Error","domain","target","name","push","env","variant","sources"],"sources":["resolveDomains.ts"],"sourcesContent":["import type {\n IAttachedDomainKey,\n IAttachedDomains,\n IDeploymentsDomains,\n IResolvedDomains\n} from \"../types.js\";\n\nexport interface IResolveDomainsParams {\n attachedDomains: IAttachedDomains;\n deploymentsDomains: IDeploymentsDomains;\n}\n\nexport const resolveDomains = (params: IResolveDomainsParams): IResolvedDomains => {\n const { attachedDomains, deploymentsDomains } = params;\n\n const domains = attachedDomains.domains;\n\n if (!domains) {\n return [];\n }\n const types = Object.keys(domains).filter(key => {\n return !!domains[key as IAttachedDomainKey];\n }) as IAttachedDomainKey[];\n\n return types.reduce<IResolvedDomains>((output, type) => {\n const value = domains[type];\n /**\n * Should not happen because we are filtering out undefined values when creating the `types` array.\n */\n if (!value) {\n return output;\n } else if (value.length === 0) {\n throw new Error(`Missing domains for \"${type}\" deployment.`);\n }\n for (const domain of deploymentsDomains) {\n const target = domain.domains[type];\n if (!target) {\n throw new Error(`Missing \"${type}\" domain in deployment \"${domain.name}\".`);\n }\n\n output.push({\n type,\n env: domain.env,\n variant: domain.variant,\n name: domain.name,\n sources: value,\n target\n });\n }\n\n return output;\n }, []);\n};\n"],"mappings":"AAYA,OAAO,MAAMA,cAAc,GAAIC,MAA6B,IAAuB;EAC/E,MAAM;IAAEC,eAAe;IAAEC;EAAmB,CAAC,GAAGF,MAAM;EAEtD,MAAMG,OAAO,GAAGF,eAAe,CAACE,OAAO;EAEvC,IAAI,CAACA,OAAO,EAAE;IACV,OAAO,EAAE;EACb;EACA,MAAMC,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,MAAM,CAACC,GAAG,IAAI;IAC7C,OAAO,CAAC,CAACL,OAAO,CAACK,GAAG,CAAuB;EAC/C,CAAC,CAAyB;EAE1B,OAAOJ,KAAK,CAACK,MAAM,CAAmB,CAACC,MAAM,EAAEC,IAAI,KAAK;IACpD,MAAMC,KAAK,GAAGT,OAAO,CAACQ,IAAI,CAAC;IAC3B;AACR;AACA;IACQ,IAAI,CAACC,KAAK,EAAE;MACR,OAAOF,MAAM;IACjB,CAAC,MAAM,IAAIE,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAAC,wBAAwBH,IAAI,eAAe,CAAC;IAChE;IACA,KAAK,MAAMI,MAAM,IAAIb,kBAAkB,EAAE;MACrC,MAAMc,MAAM,GAAGD,MAAM,CAACZ,OAAO,CAACQ,IAAI,CAAC;MACnC,IAAI,CAACK,MAAM,EAAE;QACT,MAAM,IAAIF,KAAK,CAAC,YAAYH,IAAI,2BAA2BI,MAAM,CAACE,IAAI,IAAI,CAAC;MAC/E;MAEAP,MAAM,CAACQ,IAAI,CAAC;QACRP,IAAI;QACJQ,GAAG,EAAEJ,MAAM,CAACI,GAAG;QACfC,OAAO,EAAEL,MAAM,CAACK,OAAO;QACvBH,IAAI,EAAEF,MAAM,CAACE,IAAI;QACjBI,OAAO,EAAET,KAAK;QACdI;MACJ,CAAC,CAAC;IACN;IAEA,OAAON,MAAM;EACjB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ export interface IBuildRequestFunctionParamsDomain {
2
+ /**
3
+ * Name of the deployment (eg. green, blue, orange, etc.).
4
+ */
5
+ name: string;
6
+ sourceDomain: string;
7
+ targetOriginId: string;
8
+ targetDomain: string;
9
+ }
10
+ export interface IBuildRequestFunctionParams {
11
+ storeId: string;
12
+ storeKey: string;
13
+ domains: IBuildRequestFunctionParamsDomain[];
14
+ }
15
+ export declare const buildHandlerFunction: ({ storeId, storeKey, domains }: IBuildRequestFunctionParams) => string;
@@ -0,0 +1,18 @@
1
+ import { existsSync, readFileSync } from "fs";
2
+ export const buildHandlerFunction = ({
3
+ storeId,
4
+ storeKey,
5
+ domains
6
+ }) => {
7
+ const target = __dirname + `/handler.mjs`;
8
+ if (!existsSync(target)) {
9
+ throw new Error(`File "${target}" does not exist.`);
10
+ }
11
+ const content = readFileSync(target, "utf8");
12
+ if (!content) {
13
+ throw new Error(`File "${target}" is empty.`);
14
+ }
15
+ return content.replace("{BLUE_GREEN_ROUTER_STORE_ID}", storeId).replace("{BLUE_GREEN_ROUTER_STORE_KEY}", storeKey).replace(`"{BLUE_GREEN_ROUTER_DOMAINS}"`, JSON.stringify(domains));
16
+ };
17
+
18
+ //# sourceMappingURL=buildHandlerFunction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["existsSync","readFileSync","buildHandlerFunction","storeId","storeKey","domains","target","__dirname","Error","content","replace","JSON","stringify"],"sources":["buildHandlerFunction.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"fs\";\n\nexport interface IBuildRequestFunctionParamsDomain {\n /**\n * Name of the deployment (eg. green, blue, orange, etc.).\n */\n name: string;\n sourceDomain: string;\n targetOriginId: string;\n targetDomain: string;\n}\n\nexport interface IBuildRequestFunctionParams {\n storeId: string;\n storeKey: string;\n domains: IBuildRequestFunctionParamsDomain[];\n}\n\nexport const buildHandlerFunction = ({\n storeId,\n storeKey,\n domains\n}: IBuildRequestFunctionParams): string => {\n const target = __dirname + `/handler.mjs`;\n if (!existsSync(target)) {\n throw new Error(`File \"${target}\" does not exist.`);\n }\n const content = readFileSync(target, \"utf8\");\n if (!content) {\n throw new Error(`File \"${target}\" is empty.`);\n }\n\n return content\n .replace(\"{BLUE_GREEN_ROUTER_STORE_ID}\", storeId)\n .replace(\"{BLUE_GREEN_ROUTER_STORE_KEY}\", storeKey)\n .replace(`\"{BLUE_GREEN_ROUTER_DOMAINS}\"`, JSON.stringify(domains));\n};\n"],"mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,IAAI;AAkB7C,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACjCC,OAAO;EACPC,QAAQ;EACRC;AACyB,CAAC,KAAa;EACvC,MAAMC,MAAM,GAAGC,SAAS,GAAG,cAAc;EACzC,IAAI,CAACP,UAAU,CAACM,MAAM,CAAC,EAAE;IACrB,MAAM,IAAIE,KAAK,CAAC,SAASF,MAAM,mBAAmB,CAAC;EACvD;EACA,MAAMG,OAAO,GAAGR,YAAY,CAACK,MAAM,EAAE,MAAM,CAAC;EAC5C,IAAI,CAACG,OAAO,EAAE;IACV,MAAM,IAAID,KAAK,CAAC,SAASF,MAAM,aAAa,CAAC;EACjD;EAEA,OAAOG,OAAO,CACTC,OAAO,CAAC,8BAA8B,EAAEP,OAAO,CAAC,CAChDO,OAAO,CAAC,+BAA+B,EAAEN,QAAQ,CAAC,CAClDM,OAAO,CAAC,+BAA+B,EAAEC,IAAI,CAACC,SAAS,CAACP,OAAO,CAAC,CAAC;AAC1E,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,60 @@
1
+ const cf = require("cloudfront");
2
+ const BLUE_GREEN_ROUTER_STORE_ID = "{BLUE_GREEN_ROUTER_STORE_ID}";
3
+ const BLUE_GREEN_ROUTER_STORE_KEY = "{BLUE_GREEN_ROUTER_STORE_KEY}";
4
+ const BLUE_GREEN_ROUTER_DOMAINS = "{BLUE_GREEN_ROUTER_DOMAINS}";
5
+ const store = cf.kvs(BLUE_GREEN_ROUTER_STORE_ID);
6
+ function removeProtocol(url) {
7
+ return url.replace(/^https?:\/\//, "");
8
+ }
9
+ function requestWithError(request, error) {
10
+ console.log(`There is an error: ${error.message}`);
11
+ const properties = Object.getOwnPropertyNames(error);
12
+ for (const property in properties) {
13
+ console.log(`${property}: ${error[property]}`);
14
+ }
15
+ request.headers["x-webiny-debug-log"] = {
16
+ value: error.message
17
+ };
18
+ return request;
19
+ }
20
+ function getTargetDomain(headers, active) {
21
+ const values = headers.host;
22
+ if (!values) {
23
+ throw new Error("Missing the 'host' header.");
24
+ }
25
+ const initialHost = Array.isArray(values) ? values[0].value : values.value;
26
+ if (!initialHost) {
27
+ throw new Error("Missing the 'host' header value.");
28
+ }
29
+ const host = removeProtocol(initialHost);
30
+ const domain = BLUE_GREEN_ROUTER_DOMAINS.find(domain => domain.name === active && domain.sourceDomain === host);
31
+ if (domain) {
32
+ return domain;
33
+ }
34
+ throw new Error(`Could not find a domain mapping for ${host}.`);
35
+ }
36
+ function handleRequest(request, active) {
37
+ const targetDomain = getTargetDomain(request.headers || {}, active);
38
+ cf.updateRequestOrigin({
39
+ domainName: targetDomain.targetDomain
40
+ });
41
+ return request;
42
+ }
43
+ async function handler(event) {
44
+ const context = event.context;
45
+ const request = event.request;
46
+ try {
47
+ if (context.eventType !== "viewer-request") {
48
+ new Error("This function only supports viewer-request events.");
49
+ }
50
+ const active = await store.get(BLUE_GREEN_ROUTER_STORE_KEY);
51
+ if (!active) {
52
+ throw new Error("Blue/Green system is not configured.");
53
+ }
54
+ return await handleRequest(request, active);
55
+ } catch (ex) {
56
+ return requestWithError(request, ex);
57
+ }
58
+ }
59
+
60
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cf","require","BLUE_GREEN_ROUTER_STORE_ID","BLUE_GREEN_ROUTER_STORE_KEY","BLUE_GREEN_ROUTER_DOMAINS","store","kvs","removeProtocol","url","replace","requestWithError","request","error","console","log","message","properties","Object","getOwnPropertyNames","property","headers","value","getTargetDomain","active","values","host","Error","initialHost","Array","isArray","domain","find","name","sourceDomain","handleRequest","targetDomain","updateRequestOrigin","domainName","handler","event","context","eventType","get","ex"],"sources":["handler.js"],"sourcesContent":["const cf = require(\"cloudfront\");\n\nconst BLUE_GREEN_ROUTER_STORE_ID = \"{BLUE_GREEN_ROUTER_STORE_ID}\";\nconst BLUE_GREEN_ROUTER_STORE_KEY = \"{BLUE_GREEN_ROUTER_STORE_KEY}\";\nconst BLUE_GREEN_ROUTER_DOMAINS = \"{BLUE_GREEN_ROUTER_DOMAINS}\";\n\nconst store = cf.kvs(BLUE_GREEN_ROUTER_STORE_ID);\n\nfunction removeProtocol(url) {\n return url.replace(/^https?:\\/\\//, \"\");\n}\nfunction requestWithError(request, error) {\n console.log(`There is an error: ${error.message}`);\n const properties = Object.getOwnPropertyNames(error);\n for (const property in properties) {\n console.log(`${property}: ${error[property]}`);\n }\n request.headers[\"x-webiny-debug-log\"] = {\n value: error.message\n };\n\n return request;\n}\n\nfunction getTargetDomain(headers, active) {\n const values = headers.host;\n if (!values) {\n throw new Error(\"Missing the 'host' header.\");\n }\n const initialHost = Array.isArray(values) ? values[0].value : values.value;\n if (!initialHost) {\n throw new Error(\"Missing the 'host' header value.\");\n }\n const host = removeProtocol(initialHost);\n\n const domain = BLUE_GREEN_ROUTER_DOMAINS.find(\n domain => domain.name === active && domain.sourceDomain === host\n );\n if (domain) {\n return domain;\n }\n throw new Error(`Could not find a domain mapping for ${host}.`);\n}\n\nfunction handleRequest(request, active) {\n const targetDomain = getTargetDomain(request.headers || {}, active);\n\n cf.updateRequestOrigin({\n domainName: targetDomain.targetDomain\n });\n\n return request;\n}\n\nasync function handler(event) {\n const context = event.context;\n const request = event.request;\n\n try {\n if (context.eventType !== \"viewer-request\") {\n new Error(\"This function only supports viewer-request events.\");\n }\n const active = await store.get(BLUE_GREEN_ROUTER_STORE_KEY);\n if (!active) {\n throw new Error(\"Blue/Green system is not configured.\");\n }\n\n return await handleRequest(request, active);\n } catch (ex) {\n return requestWithError(request, ex);\n }\n}\n"],"mappings":"AAAA,MAAMA,EAAE,GAAGC,OAAO,CAAC,YAAY,CAAC;AAEhC,MAAMC,0BAA0B,GAAG,8BAA8B;AACjE,MAAMC,2BAA2B,GAAG,+BAA+B;AACnE,MAAMC,yBAAyB,GAAG,6BAA6B;AAE/D,MAAMC,KAAK,GAAGL,EAAE,CAACM,GAAG,CAACJ,0BAA0B,CAAC;AAEhD,SAASK,cAAcA,CAACC,GAAG,EAAE;EACzB,OAAOA,GAAG,CAACC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC1C;AACA,SAASC,gBAAgBA,CAACC,OAAO,EAAEC,KAAK,EAAE;EACtCC,OAAO,CAACC,GAAG,CAAC,sBAAsBF,KAAK,CAACG,OAAO,EAAE,CAAC;EAClD,MAAMC,UAAU,GAAGC,MAAM,CAACC,mBAAmB,CAACN,KAAK,CAAC;EACpD,KAAK,MAAMO,QAAQ,IAAIH,UAAU,EAAE;IAC/BH,OAAO,CAACC,GAAG,CAAC,GAAGK,QAAQ,KAAKP,KAAK,CAACO,QAAQ,CAAC,EAAE,CAAC;EAClD;EACAR,OAAO,CAACS,OAAO,CAAC,oBAAoB,CAAC,GAAG;IACpCC,KAAK,EAAET,KAAK,CAACG;EACjB,CAAC;EAED,OAAOJ,OAAO;AAClB;AAEA,SAASW,eAAeA,CAACF,OAAO,EAAEG,MAAM,EAAE;EACtC,MAAMC,MAAM,GAAGJ,OAAO,CAACK,IAAI;EAC3B,IAAI,CAACD,MAAM,EAAE;IACT,MAAM,IAAIE,KAAK,CAAC,4BAA4B,CAAC;EACjD;EACA,MAAMC,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACL,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,CAACH,KAAK,GAAGG,MAAM,CAACH,KAAK;EAC1E,IAAI,CAACM,WAAW,EAAE;IACd,MAAM,IAAID,KAAK,CAAC,kCAAkC,CAAC;EACvD;EACA,MAAMD,IAAI,GAAGlB,cAAc,CAACoB,WAAW,CAAC;EAExC,MAAMG,MAAM,GAAG1B,yBAAyB,CAAC2B,IAAI,CACzCD,MAAM,IAAIA,MAAM,CAACE,IAAI,KAAKT,MAAM,IAAIO,MAAM,CAACG,YAAY,KAAKR,IAChE,CAAC;EACD,IAAIK,MAAM,EAAE;IACR,OAAOA,MAAM;EACjB;EACA,MAAM,IAAIJ,KAAK,CAAC,uCAAuCD,IAAI,GAAG,CAAC;AACnE;AAEA,SAASS,aAAaA,CAACvB,OAAO,EAAEY,MAAM,EAAE;EACpC,MAAMY,YAAY,GAAGb,eAAe,CAACX,OAAO,CAACS,OAAO,IAAI,CAAC,CAAC,EAAEG,MAAM,CAAC;EAEnEvB,EAAE,CAACoC,mBAAmB,CAAC;IACnBC,UAAU,EAAEF,YAAY,CAACA;EAC7B,CAAC,CAAC;EAEF,OAAOxB,OAAO;AAClB;AAEA,eAAe2B,OAAOA,CAACC,KAAK,EAAE;EAC1B,MAAMC,OAAO,GAAGD,KAAK,CAACC,OAAO;EAC7B,MAAM7B,OAAO,GAAG4B,KAAK,CAAC5B,OAAO;EAE7B,IAAI;IACA,IAAI6B,OAAO,CAACC,SAAS,KAAK,gBAAgB,EAAE;MACxC,IAAIf,KAAK,CAAC,oDAAoD,CAAC;IACnE;IACA,MAAMH,MAAM,GAAG,MAAMlB,KAAK,CAACqC,GAAG,CAACvC,2BAA2B,CAAC;IAC3D,IAAI,CAACoB,MAAM,EAAE;MACT,MAAM,IAAIG,KAAK,CAAC,sCAAsC,CAAC;IAC3D;IAEA,OAAO,MAAMQ,aAAa,CAACvB,OAAO,EAAEY,MAAM,CAAC;EAC/C,CAAC,CAAC,OAAOoB,EAAE,EAAE;IACT,OAAOjC,gBAAgB,CAACC,OAAO,EAAEgC,EAAE,CAAC;EACxC;AACJ","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ import type { IStackOutput } from "@webiny/project";
2
+ export type GenericRecord<K extends PropertyKey = PropertyKey, V = any> = Record<K, V>;
3
+ export type NonEmptyArray<T> = [T, ...T[]];
4
+ export interface IDeploymentDomain {
5
+ /**
6
+ * A name of the deployment (e.g. "green" or "blue").
7
+ */
8
+ name: string;
9
+ env: string;
10
+ variant: string | undefined;
11
+ domains: {
12
+ api: string;
13
+ admin: string;
14
+ };
15
+ }
16
+ export type IDeploymentsDomains = [IDeploymentDomain, IDeploymentDomain];
17
+ export interface IBlueGreenDeployment {
18
+ /**
19
+ * Name by this deployment will be accessible in the Pulumi program.
20
+ */
21
+ name: string;
22
+ env: string;
23
+ variant: string | undefined;
24
+ }
25
+ export interface IAttachedDomainsTypes {
26
+ api: NonEmptyArray<string>;
27
+ admin: NonEmptyArray<string>;
28
+ }
29
+ export interface IAttachedDomains {
30
+ acmCertificateArn: string;
31
+ sslSupportMethod?: string;
32
+ /**
33
+ * We need to allow system to be deployed without any domains for start.
34
+ * User can attach domains later.
35
+ */
36
+ domains?: IAttachedDomainsTypes;
37
+ }
38
+ export interface IAttachDomainsCallableParams {
39
+ env: string;
40
+ }
41
+ export interface IAttachDomainsCallable {
42
+ (params: IAttachDomainsCallableParams): IAttachedDomains;
43
+ }
44
+ export type IAttachedDomainKey = keyof IAttachedDomainsTypes;
45
+ export interface IResolvedDomain {
46
+ /**
47
+ * Environment and variant of the deployment.
48
+ */
49
+ env: string;
50
+ variant: string | undefined;
51
+ /**
52
+ * Name of the deployment (e.g. "green" or "blue").
53
+ */
54
+ name: string;
55
+ /**
56
+ * Type of the domain (e.g. "api", "admin").
57
+ */
58
+ type: IAttachedDomainKey;
59
+ /**
60
+ * List of domains that will be used as source and transferred to the target domain.
61
+ */
62
+ sources: NonEmptyArray<string>;
63
+ /**
64
+ * The target CloudFront domain of the deployment.
65
+ */
66
+ target: string;
67
+ }
68
+ export type IResolvedDomains = IResolvedDomain[];
69
+ export interface IBlueGreenStackOutput extends IStackOutput {
70
+ distributionDomain: string;
71
+ distributionUrl: string;
72
+ /**
73
+ * TODO fix later
74
+ */
75
+ environments?: IResolvedDomains;
76
+ domains?: string[];
77
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { IStackOutput } from \"@webiny/project\";\n\nexport type GenericRecord<K extends PropertyKey = PropertyKey, V = any> = Record<K, V>;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface IDeploymentDomain {\n /**\n * A name of the deployment (e.g. \"green\" or \"blue\").\n */\n name: string;\n env: string;\n variant: string | undefined;\n domains: {\n api: string;\n admin: string;\n };\n}\n\nexport type IDeploymentsDomains = [IDeploymentDomain, IDeploymentDomain];\n\nexport interface IBlueGreenDeployment {\n /**\n * Name by this deployment will be accessible in the Pulumi program.\n */\n name: string;\n env: string;\n variant: string | undefined;\n}\n\nexport interface IAttachedDomainsTypes {\n api: NonEmptyArray<string>;\n admin: NonEmptyArray<string>;\n}\n\nexport interface IAttachedDomains {\n acmCertificateArn: string;\n sslSupportMethod?: string;\n /**\n * We need to allow system to be deployed without any domains for start.\n * User can attach domains later.\n */\n domains?: IAttachedDomainsTypes;\n}\n\nexport interface IAttachDomainsCallableParams {\n env: string;\n}\n\nexport interface IAttachDomainsCallable {\n (params: IAttachDomainsCallableParams): IAttachedDomains;\n}\n\nexport type IAttachedDomainKey = keyof IAttachedDomainsTypes;\n\nexport interface IResolvedDomain {\n /**\n * Environment and variant of the deployment.\n */\n env: string;\n variant: string | undefined;\n /**\n * Name of the deployment (e.g. \"green\" or \"blue\").\n */\n name: string;\n /**\n * Type of the domain (e.g. \"api\", \"admin\").\n */\n type: IAttachedDomainKey;\n /**\n * List of domains that will be used as source and transferred to the target domain.\n */\n sources: NonEmptyArray<string>;\n /**\n * The target CloudFront domain of the deployment.\n */\n target: string;\n}\n\nexport type IResolvedDomains = IResolvedDomain[];\n\nexport interface IBlueGreenStackOutput extends IStackOutput {\n distributionDomain: string;\n distributionUrl: string;\n /**\n * TODO fix later\n */\n // @ts-expect-error\n environments?: IResolvedDomains;\n domains?: string[];\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { IBlueGreenDeployment } from "../types.js";
2
+ export declare const validateDeployments: (deployments: unknown) => IBlueGreenDeployment[];
@@ -0,0 +1,33 @@
1
+ import zod from "zod";
2
+ import { createZodError } from "@webiny/utils/createZodError.js";
3
+ const schema = zod.array(zod.object({
4
+ name: zod.string(),
5
+ env: zod.string(),
6
+ variant: zod.string().optional()
7
+ })).min(2).max(2).refine(items => {
8
+ const check = new Set(items.map(i => i.name));
9
+ return check.size === items.length;
10
+ }, {
11
+ message: "Names must be unique."
12
+ }).refine(items => {
13
+ const checks = new Set(items.map(item => {
14
+ return `${item.env}#${item.variant || "not-set"}`;
15
+ }));
16
+ return checks.size === items.length;
17
+ }, {
18
+ message: "Environment / variant combinations must be unique."
19
+ });
20
+ export const validateDeployments = deployments => {
21
+ const result = schema.safeParse(deployments);
22
+ if (result.error) {
23
+ throw createZodError(result.error);
24
+ }
25
+ return result.data.map(item => {
26
+ return {
27
+ ...item,
28
+ variant: item.variant
29
+ };
30
+ });
31
+ };
32
+
33
+ //# sourceMappingURL=validateDeployments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["zod","createZodError","schema","array","object","name","string","env","variant","optional","min","max","refine","items","check","Set","map","i","size","length","message","checks","item","validateDeployments","deployments","result","safeParse","error","data"],"sources":["validateDeployments.ts"],"sourcesContent":["import zod from \"zod\";\nimport { createZodError } from \"@webiny/utils/createZodError.js\";\nimport type { IBlueGreenDeployment } from \"../types.js\";\n\nconst schema = zod\n .array(\n zod.object({\n name: zod.string(),\n env: zod.string(),\n variant: zod.string().optional()\n })\n )\n .min(2)\n .max(2)\n .refine(\n items => {\n const check = new Set(items.map(i => i.name));\n return check.size === items.length;\n },\n {\n message: \"Names must be unique.\"\n }\n )\n .refine(\n items => {\n const checks = new Set(\n items.map(item => {\n return `${item.env}#${item.variant || \"not-set\"}`;\n })\n );\n return checks.size === items.length;\n },\n {\n message: \"Environment / variant combinations must be unique.\"\n }\n );\n\nexport const validateDeployments = (deployments: unknown): IBlueGreenDeployment[] => {\n const result = schema.safeParse(deployments);\n if (result.error) {\n throw createZodError(result.error);\n }\n return result.data.map(item => {\n return {\n ...item,\n variant: item.variant\n };\n });\n};\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AACrB,SAASC,cAAc,QAAQ,iCAAiC;AAGhE,MAAMC,MAAM,GAAGF,GAAG,CACbG,KAAK,CACFH,GAAG,CAACI,MAAM,CAAC;EACPC,IAAI,EAAEL,GAAG,CAACM,MAAM,CAAC,CAAC;EAClBC,GAAG,EAAEP,GAAG,CAACM,MAAM,CAAC,CAAC;EACjBE,OAAO,EAAER,GAAG,CAACM,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC;AACnC,CAAC,CACL,CAAC,CACAC,GAAG,CAAC,CAAC,CAAC,CACNC,GAAG,CAAC,CAAC,CAAC,CACNC,MAAM,CACHC,KAAK,IAAI;EACL,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAACF,KAAK,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACZ,IAAI,CAAC,CAAC;EAC7C,OAAOS,KAAK,CAACI,IAAI,KAAKL,KAAK,CAACM,MAAM;AACtC,CAAC,EACD;EACIC,OAAO,EAAE;AACb,CACJ,CAAC,CACAR,MAAM,CACHC,KAAK,IAAI;EACL,MAAMQ,MAAM,GAAG,IAAIN,GAAG,CAClBF,KAAK,CAACG,GAAG,CAACM,IAAI,IAAI;IACd,OAAO,GAAGA,IAAI,CAACf,GAAG,IAAIe,IAAI,CAACd,OAAO,IAAI,SAAS,EAAE;EACrD,CAAC,CACL,CAAC;EACD,OAAOa,MAAM,CAACH,IAAI,KAAKL,KAAK,CAACM,MAAM;AACvC,CAAC,EACD;EACIC,OAAO,EAAE;AACb,CACJ,CAAC;AAEL,OAAO,MAAMG,mBAAmB,GAAIC,WAAoB,IAA6B;EACjF,MAAMC,MAAM,GAAGvB,MAAM,CAACwB,SAAS,CAACF,WAAW,CAAC;EAC5C,IAAIC,MAAM,CAACE,KAAK,EAAE;IACd,MAAM1B,cAAc,CAACwB,MAAM,CAACE,KAAK,CAAC;EACtC;EACA,OAAOF,MAAM,CAACG,IAAI,CAACZ,GAAG,CAACM,IAAI,IAAI;IAC3B,OAAO;MACH,GAAGA,IAAI;MACPd,OAAO,EAAEc,IAAI,CAACd;IAClB,CAAC;EACL,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ import { type PulumiAppModule } from "@webiny/pulumi";
2
+ export type CoreOutput = PulumiAppModule<typeof CoreOutput>;
3
+ export interface ICoreOutput {
4
+ deploymentId: string;
5
+ region: string;
6
+ dynamoDbTable: string;
7
+ iotAuthorizerName: string;
8
+ cognitoUserPoolArn: string;
9
+ cognitoAppClientId: string;
10
+ cognitoUserPoolId: string;
11
+ cognitoUserPoolPasswordPolicy: string;
12
+ fileManagerBucketId: string;
13
+ fileManagerBucketArn: string;
14
+ primaryDynamodbTableArn: string;
15
+ primaryDynamodbTableName: string;
16
+ primaryDynamodbTableHashKey: string;
17
+ primaryDynamodbTableRangeKey: string;
18
+ logDynamodbTableArn: string;
19
+ logDynamodbTableName: string;
20
+ logDynamodbTableHashKey: string;
21
+ logDynamodbTableRangeKey: string;
22
+ auditLogsDynamodbTableArn: string;
23
+ auditLogsDynamodbTableName: string;
24
+ auditLogsDynamodbTableHashKey: string;
25
+ auditLogsDynamodbTableRangeKey: string;
26
+ eventBusName: string;
27
+ eventBusArn: string;
28
+ vpcPublicSubnetIds: string[] | undefined;
29
+ vpcPrivateSubnetIds: string[] | undefined;
30
+ vpcSecurityGroupIds: string[] | undefined;
31
+ opensearchDomainArn: string | undefined;
32
+ opensearchDomainEndpoint: string | undefined;
33
+ opensearchDynamodbTableHashKey: string;
34
+ opensearchDynamodbTableRangeKey: string;
35
+ opensearchDynamodbTableArn: string | undefined;
36
+ opensearchDynamodbTableName: string | undefined;
37
+ }
38
+ export declare const CoreOutput: import("@webiny/pulumi").PulumiAppModuleDefinition<import("@pulumi/pulumi").Output<import("@pulumi/pulumi").UnwrappedObject<ICoreOutput>>, void>;
@@ -0,0 +1,46 @@
1
+ import { createAppModule } from "@webiny/pulumi";
2
+ import { ProjectSdk } from "@webiny/project";
3
+ export const CoreOutput = createAppModule({
4
+ name: "CoreOutput",
5
+ config(app) {
6
+ return app.addHandler(async () => {
7
+ const sdk = await ProjectSdk.init();
8
+ const output = await sdk.getAppStackOutput("core");
9
+ if (!output) {
10
+ throw new Error("Core application is not deployed.");
11
+ }
12
+ return {
13
+ fileManagerBucketId: output["fileManagerBucketId"],
14
+ primaryDynamodbTableArn: output["primaryDynamodbTableArn"],
15
+ primaryDynamodbTableName: output["primaryDynamodbTableName"],
16
+ primaryDynamodbTableHashKey: output["primaryDynamodbTableHashKey"],
17
+ primaryDynamodbTableRangeKey: output["primaryDynamodbTableRangeKey"],
18
+ logDynamodbTableArn: output["logDynamodbTableArn"],
19
+ logDynamodbTableName: output["logDynamodbTableName"],
20
+ logDynamodbTableHashKey: output["logDynamodbTableHashKey"],
21
+ logDynamodbTableRangeKey: output["logDynamodbTableRangeKey"],
22
+ auditLogsDynamodbTableArn: output["auditLogsDynamodbTableArn"],
23
+ auditLogsDynamodbTableName: output["auditLogsDynamodbTableName"],
24
+ auditLogsDynamodbTableHashKey: output["auditLogsDynamodbTableHashKey"],
25
+ auditLogsDynamodbTableRangeKey: output["auditLogsDynamodbTableRangeKey"],
26
+ cognitoUserPoolId: output["cognitoUserPoolId"],
27
+ cognitoUserPoolArn: output["cognitoUserPoolArn"],
28
+ cognitoUserPoolPasswordPolicy: output["cognitoUserPoolPasswordPolicy"],
29
+ cognitoAppClientId: output["cognitoAppClientId"],
30
+ eventBusName: output["eventBusName"],
31
+ eventBusArn: output["eventBusArn"],
32
+ // These outputs are optional, since VPC is not always enabled.
33
+ vpcPublicSubnetIds: output["vpcPublicSubnetIds"],
34
+ vpcPrivateSubnetIds: output["vpcPrivateSubnetIds"],
35
+ vpcSecurityGroupIds: output["vpcSecurityGroupIds"],
36
+ // These outputs are optional, since Opensearch is not always enabled.
37
+ opensearchDomainArn: output["opensearchDomainArn"],
38
+ opensearchDomainEndpoint: output["opensearchDomainEndpoint"],
39
+ opensearchDynamodbTableArn: output["opensearchDynamodbTableArn"],
40
+ opensearchDynamodbTableName: output["opensearchDynamodbTableName"]
41
+ };
42
+ });
43
+ }
44
+ });
45
+
46
+ //# sourceMappingURL=CoreOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAppModule","ProjectSdk","CoreOutput","name","config","app","addHandler","sdk","init","output","getAppStackOutput","Error","fileManagerBucketId","primaryDynamodbTableArn","primaryDynamodbTableName","primaryDynamodbTableHashKey","primaryDynamodbTableRangeKey","logDynamodbTableArn","logDynamodbTableName","logDynamodbTableHashKey","logDynamodbTableRangeKey","auditLogsDynamodbTableArn","auditLogsDynamodbTableName","auditLogsDynamodbTableHashKey","auditLogsDynamodbTableRangeKey","cognitoUserPoolId","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","cognitoAppClientId","eventBusName","eventBusArn","vpcPublicSubnetIds","vpcPrivateSubnetIds","vpcSecurityGroupIds","opensearchDomainArn","opensearchDomainEndpoint","opensearchDynamodbTableArn","opensearchDynamodbTableName"],"sources":["CoreOutput.ts"],"sourcesContent":["import { createAppModule, type PulumiAppModule } from \"@webiny/pulumi\";\nimport { ProjectSdk } from \"@webiny/project\";\n\nexport type CoreOutput = PulumiAppModule<typeof CoreOutput>;\n\nexport interface ICoreOutput {\n deploymentId: string;\n region: string;\n dynamoDbTable: string;\n iotAuthorizerName: string;\n cognitoUserPoolArn: string;\n cognitoAppClientId: string;\n cognitoUserPoolId: string;\n cognitoUserPoolPasswordPolicy: string;\n fileManagerBucketId: string;\n fileManagerBucketArn: string;\n primaryDynamodbTableArn: string;\n primaryDynamodbTableName: string;\n primaryDynamodbTableHashKey: string;\n primaryDynamodbTableRangeKey: string;\n logDynamodbTableArn: string;\n logDynamodbTableName: string;\n logDynamodbTableHashKey: string;\n logDynamodbTableRangeKey: string;\n auditLogsDynamodbTableArn: string;\n auditLogsDynamodbTableName: string;\n auditLogsDynamodbTableHashKey: string;\n auditLogsDynamodbTableRangeKey: string;\n eventBusName: string;\n eventBusArn: string;\n vpcPublicSubnetIds: string[] | undefined;\n vpcPrivateSubnetIds: string[] | undefined;\n vpcSecurityGroupIds: string[] | undefined;\n opensearchDomainArn: string | undefined;\n opensearchDomainEndpoint: string | undefined;\n opensearchDynamodbTableHashKey: string;\n opensearchDynamodbTableRangeKey: string;\n opensearchDynamodbTableArn: string | undefined;\n opensearchDynamodbTableName: string | undefined;\n}\n\nexport const CoreOutput = createAppModule({\n name: \"CoreOutput\",\n config(app) {\n return app.addHandler(async () => {\n const sdk = await ProjectSdk.init();\n\n const output = await sdk.getAppStackOutput(\"core\");\n if (!output) {\n throw new Error(\"Core application is not deployed.\");\n }\n\n return {\n fileManagerBucketId: output[\"fileManagerBucketId\"],\n primaryDynamodbTableArn: output[\"primaryDynamodbTableArn\"],\n primaryDynamodbTableName: output[\"primaryDynamodbTableName\"],\n primaryDynamodbTableHashKey: output[\"primaryDynamodbTableHashKey\"],\n primaryDynamodbTableRangeKey: output[\"primaryDynamodbTableRangeKey\"],\n logDynamodbTableArn: output[\"logDynamodbTableArn\"],\n logDynamodbTableName: output[\"logDynamodbTableName\"],\n logDynamodbTableHashKey: output[\"logDynamodbTableHashKey\"],\n logDynamodbTableRangeKey: output[\"logDynamodbTableRangeKey\"],\n auditLogsDynamodbTableArn: output[\"auditLogsDynamodbTableArn\"],\n auditLogsDynamodbTableName: output[\"auditLogsDynamodbTableName\"],\n auditLogsDynamodbTableHashKey: output[\"auditLogsDynamodbTableHashKey\"],\n auditLogsDynamodbTableRangeKey: output[\"auditLogsDynamodbTableRangeKey\"],\n cognitoUserPoolId: output[\"cognitoUserPoolId\"],\n cognitoUserPoolArn: output[\"cognitoUserPoolArn\"],\n cognitoUserPoolPasswordPolicy: output[\"cognitoUserPoolPasswordPolicy\"],\n cognitoAppClientId: output[\"cognitoAppClientId\"],\n eventBusName: output[\"eventBusName\"],\n eventBusArn: output[\"eventBusArn\"],\n // These outputs are optional, since VPC is not always enabled.\n vpcPublicSubnetIds: output[\"vpcPublicSubnetIds\"],\n vpcPrivateSubnetIds: output[\"vpcPrivateSubnetIds\"],\n vpcSecurityGroupIds: output[\"vpcSecurityGroupIds\"],\n // These outputs are optional, since Opensearch is not always enabled.\n opensearchDomainArn: output[\"opensearchDomainArn\"],\n opensearchDomainEndpoint: output[\"opensearchDomainEndpoint\"],\n opensearchDynamodbTableArn: output[\"opensearchDynamodbTableArn\"],\n opensearchDynamodbTableName: output[\"opensearchDynamodbTableName\"]\n } as ICoreOutput;\n });\n }\n});\n"],"mappings":"AAAA,SAASA,eAAe,QAA8B,gBAAgB;AACtE,SAASC,UAAU,QAAQ,iBAAiB;AAwC5C,OAAO,MAAMC,UAAU,GAAGF,eAAe,CAAC;EACtCG,IAAI,EAAE,YAAY;EAClBC,MAAMA,CAACC,GAAG,EAAE;IACR,OAAOA,GAAG,CAACC,UAAU,CAAC,YAAY;MAC9B,MAAMC,GAAG,GAAG,MAAMN,UAAU,CAACO,IAAI,CAAC,CAAC;MAEnC,MAAMC,MAAM,GAAG,MAAMF,GAAG,CAACG,iBAAiB,CAAC,MAAM,CAAC;MAClD,IAAI,CAACD,MAAM,EAAE;QACT,MAAM,IAAIE,KAAK,CAAC,mCAAmC,CAAC;MACxD;MAEA,OAAO;QACHC,mBAAmB,EAAEH,MAAM,CAAC,qBAAqB,CAAC;QAClDI,uBAAuB,EAAEJ,MAAM,CAAC,yBAAyB,CAAC;QAC1DK,wBAAwB,EAAEL,MAAM,CAAC,0BAA0B,CAAC;QAC5DM,2BAA2B,EAAEN,MAAM,CAAC,6BAA6B,CAAC;QAClEO,4BAA4B,EAAEP,MAAM,CAAC,8BAA8B,CAAC;QACpEQ,mBAAmB,EAAER,MAAM,CAAC,qBAAqB,CAAC;QAClDS,oBAAoB,EAAET,MAAM,CAAC,sBAAsB,CAAC;QACpDU,uBAAuB,EAAEV,MAAM,CAAC,yBAAyB,CAAC;QAC1DW,wBAAwB,EAAEX,MAAM,CAAC,0BAA0B,CAAC;QAC5DY,yBAAyB,EAAEZ,MAAM,CAAC,2BAA2B,CAAC;QAC9Da,0BAA0B,EAAEb,MAAM,CAAC,4BAA4B,CAAC;QAChEc,6BAA6B,EAAEd,MAAM,CAAC,+BAA+B,CAAC;QACtEe,8BAA8B,EAAEf,MAAM,CAAC,gCAAgC,CAAC;QACxEgB,iBAAiB,EAAEhB,MAAM,CAAC,mBAAmB,CAAC;QAC9CiB,kBAAkB,EAAEjB,MAAM,CAAC,oBAAoB,CAAC;QAChDkB,6BAA6B,EAAElB,MAAM,CAAC,+BAA+B,CAAC;QACtEmB,kBAAkB,EAAEnB,MAAM,CAAC,oBAAoB,CAAC;QAChDoB,YAAY,EAAEpB,MAAM,CAAC,cAAc,CAAC;QACpCqB,WAAW,EAAErB,MAAM,CAAC,aAAa,CAAC;QAClC;QACAsB,kBAAkB,EAAEtB,MAAM,CAAC,oBAAoB,CAAC;QAChDuB,mBAAmB,EAAEvB,MAAM,CAAC,qBAAqB,CAAC;QAClDwB,mBAAmB,EAAExB,MAAM,CAAC,qBAAqB,CAAC;QAClD;QACAyB,mBAAmB,EAAEzB,MAAM,CAAC,qBAAqB,CAAC;QAClD0B,wBAAwB,EAAE1B,MAAM,CAAC,0BAA0B,CAAC;QAC5D2B,0BAA0B,EAAE3B,MAAM,CAAC,4BAA4B,CAAC;QAChE4B,2BAA2B,EAAE5B,MAAM,CAAC,6BAA6B;MACrE,CAAC;IACL,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import type * as aws from "@pulumi/aws";
2
+ export interface VpcParams {
3
+ enabled: boolean | undefined;
4
+ }
5
+ export declare const VpcConfig: import("@webiny/pulumi").PulumiAppModuleDefinition<import("@pulumi/pulumi").Output<{
6
+ functionVpcConfig: aws.types.input.lambda.FunctionVpcConfig;
7
+ enabled: boolean;
8
+ }>, VpcParams>;
@@ -0,0 +1,25 @@
1
+ import { createAppModule } from "@webiny/pulumi";
2
+ import { CoreOutput } from "./CoreOutput.js";
3
+ export const VpcConfig = createAppModule({
4
+ name: "VpcConfig",
5
+ config(app, params) {
6
+ return app.getModule(CoreOutput).apply(core => {
7
+ const functionVpcConfig = {
8
+ subnetIds: [],
9
+ securityGroupIds: []
10
+ };
11
+ const enabled = Boolean(params.enabled);
12
+ if (enabled) {
13
+ // If VPC is not manually disabled we extract details from core.
14
+ functionVpcConfig.subnetIds = core.vpcPrivateSubnetIds || [];
15
+ functionVpcConfig.securityGroupIds = core.vpcSecurityGroupIds || [];
16
+ }
17
+ return {
18
+ functionVpcConfig,
19
+ enabled
20
+ };
21
+ });
22
+ }
23
+ });
24
+
25
+ //# sourceMappingURL=VpcConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAppModule","CoreOutput","VpcConfig","name","config","app","params","getModule","apply","core","functionVpcConfig","subnetIds","securityGroupIds","enabled","Boolean","vpcPrivateSubnetIds","vpcSecurityGroupIds"],"sources":["VpcConfig.ts"],"sourcesContent":["import type * as aws from \"@pulumi/aws\";\nimport { createAppModule } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"./CoreOutput.js\";\n\nexport interface VpcParams {\n enabled: boolean | undefined;\n}\n\nexport const VpcConfig = createAppModule({\n name: \"VpcConfig\",\n config(app, params: VpcParams) {\n return app.getModule(CoreOutput).apply(core => {\n const functionVpcConfig: aws.types.input.lambda.FunctionVpcConfig = {\n subnetIds: [],\n securityGroupIds: []\n };\n\n const enabled = Boolean(params.enabled);\n\n if (enabled) {\n // If VPC is not manually disabled we extract details from core.\n functionVpcConfig.subnetIds = core.vpcPrivateSubnetIds || [];\n functionVpcConfig.securityGroupIds = core.vpcSecurityGroupIds || [];\n }\n\n return {\n functionVpcConfig,\n enabled\n };\n });\n }\n});\n"],"mappings":"AACA,SAASA,eAAe,QAAQ,gBAAgB;AAChD,SAASC,UAAU;AAMnB,OAAO,MAAMC,SAAS,GAAGF,eAAe,CAAC;EACrCG,IAAI,EAAE,WAAW;EACjBC,MAAMA,CAACC,GAAG,EAAEC,MAAiB,EAAE;IAC3B,OAAOD,GAAG,CAACE,SAAS,CAACN,UAAU,CAAC,CAACO,KAAK,CAACC,IAAI,IAAI;MAC3C,MAAMC,iBAA2D,GAAG;QAChEC,SAAS,EAAE,EAAE;QACbC,gBAAgB,EAAE;MACtB,CAAC;MAED,MAAMC,OAAO,GAAGC,OAAO,CAACR,MAAM,CAACO,OAAO,CAAC;MAEvC,IAAIA,OAAO,EAAE;QACT;QACAH,iBAAiB,CAACC,SAAS,GAAGF,IAAI,CAACM,mBAAmB,IAAI,EAAE;QAC5DL,iBAAiB,CAACE,gBAAgB,GAAGH,IAAI,CAACO,mBAAmB,IAAI,EAAE;MACvE;MAEA,OAAO;QACHN,iBAAiB;QACjBG;MACJ,CAAC;IACL,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from "./CoreOutput.js";
2
+ export * from "./VpcConfig.js";
@@ -0,0 +1,4 @@
1
+ export * from "./CoreOutput.js";
2
+ export * from "./VpcConfig.js";
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./CoreOutput.js\";\nexport * from \"./VpcConfig.js\";\n"],"mappings":"AAAA;AACA","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import type { PulumiAppModule } from "@webiny/pulumi";
2
+ export type CoreAuditLogsDynamo = PulumiAppModule<typeof CoreAuditLogsDynamo>;
3
+ export declare const CoreAuditLogsDynamo: import("@webiny/pulumi").PulumiAppModuleDefinition<import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/table").Table>, {
4
+ protect: boolean;
5
+ }>;