@takumi-stack/core 1.0.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 (450) hide show
  1. package/common/coordinator.d.ts +28 -0
  2. package/common/coordinator.d.ts.map +1 -0
  3. package/common/coordinator.js +94 -0
  4. package/common/coordinator.js.map +1 -0
  5. package/common/index.d.ts +6 -0
  6. package/common/index.d.ts.map +1 -0
  7. package/common/index.js +22 -0
  8. package/common/index.js.map +1 -0
  9. package/common/modifier.d.ts +5 -0
  10. package/common/modifier.d.ts.map +1 -0
  11. package/common/modifier.js +12 -0
  12. package/common/modifier.js.map +1 -0
  13. package/common/naming/get-deploy-config.d.ts +9 -0
  14. package/common/naming/get-deploy-config.d.ts.map +1 -0
  15. package/common/naming/get-deploy-config.js +8 -0
  16. package/common/naming/get-deploy-config.js.map +1 -0
  17. package/common/naming/get-domain.d.ts +9 -0
  18. package/common/naming/get-domain.d.ts.map +1 -0
  19. package/common/naming/get-domain.js +13 -0
  20. package/common/naming/get-domain.js.map +1 -0
  21. package/common/naming/get-function-entry.d.ts +4 -0
  22. package/common/naming/get-function-entry.d.ts.map +1 -0
  23. package/common/naming/get-function-entry.js +14 -0
  24. package/common/naming/get-function-entry.js.map +1 -0
  25. package/common/naming/get-logical-name.d.ts +2 -0
  26. package/common/naming/get-logical-name.d.ts.map +1 -0
  27. package/common/naming/get-logical-name.js +8 -0
  28. package/common/naming/get-logical-name.js.map +1 -0
  29. package/common/naming/get-resource-name.d.ts +47 -0
  30. package/common/naming/get-resource-name.d.ts.map +1 -0
  31. package/common/naming/get-resource-name.js +38 -0
  32. package/common/naming/get-resource-name.js.map +1 -0
  33. package/common/naming/get-service-name.d.ts +10 -0
  34. package/common/naming/get-service-name.d.ts.map +1 -0
  35. package/common/naming/get-service-name.js +10 -0
  36. package/common/naming/get-service-name.js.map +1 -0
  37. package/common/naming/index.d.ts +8 -0
  38. package/common/naming/index.d.ts.map +1 -0
  39. package/common/naming/index.js +24 -0
  40. package/common/naming/index.js.map +1 -0
  41. package/common/naming/string-parser.d.ts +4 -0
  42. package/common/naming/string-parser.d.ts.map +1 -0
  43. package/common/naming/string-parser.js +22 -0
  44. package/common/naming/string-parser.js.map +1 -0
  45. package/common/service.d.ts +29 -0
  46. package/common/service.d.ts.map +1 -0
  47. package/common/service.js +28 -0
  48. package/common/service.js.map +1 -0
  49. package/common/synth/account-mapping.d.ts +2 -0
  50. package/common/synth/account-mapping.d.ts.map +1 -0
  51. package/common/synth/account-mapping.js +18 -0
  52. package/common/synth/account-mapping.js.map +1 -0
  53. package/common/synth/assume-role.d.ts +18 -0
  54. package/common/synth/assume-role.d.ts.map +1 -0
  55. package/common/synth/assume-role.js +25 -0
  56. package/common/synth/assume-role.js.map +1 -0
  57. package/common/synth/get-global-props.d.ts +16 -0
  58. package/common/synth/get-global-props.d.ts.map +1 -0
  59. package/common/synth/get-global-props.js +34 -0
  60. package/common/synth/get-global-props.js.map +1 -0
  61. package/common/synth/get-service-props.d.ts +11 -0
  62. package/common/synth/get-service-props.d.ts.map +1 -0
  63. package/common/synth/get-service-props.js +12 -0
  64. package/common/synth/get-service-props.js.map +1 -0
  65. package/common/synth/index.d.ts +8 -0
  66. package/common/synth/index.d.ts.map +1 -0
  67. package/common/synth/index.js +24 -0
  68. package/common/synth/index.js.map +1 -0
  69. package/common/synth/pre-script.d.ts +32 -0
  70. package/common/synth/pre-script.d.ts.map +1 -0
  71. package/common/synth/pre-script.js +74 -0
  72. package/common/synth/pre-script.js.map +1 -0
  73. package/common/synth/props-types.d.ts +60 -0
  74. package/common/synth/props-types.d.ts.map +1 -0
  75. package/common/synth/props-types.js +3 -0
  76. package/common/synth/props-types.js.map +1 -0
  77. package/common/synth/synth-error.d.ts +8 -0
  78. package/common/synth/synth-error.d.ts.map +1 -0
  79. package/common/synth/synth-error.js +17 -0
  80. package/common/synth/synth-error.js.map +1 -0
  81. package/index.d.ts +4 -0
  82. package/index.d.ts.map +1 -0
  83. package/index.js +20 -0
  84. package/index.js.map +1 -0
  85. package/package.json +43 -0
  86. package/prefab/analytics/events/handlers/ingestion-transform/handler.d.ts +4 -0
  87. package/prefab/analytics/events/handlers/ingestion-transform/handler.d.ts.map +1 -0
  88. package/prefab/analytics/events/handlers/ingestion-transform/handler.js +34 -0
  89. package/prefab/analytics/events/handlers/ingestion-transform/handler.js.map +1 -0
  90. package/prefab/analytics/events/index.d.ts +31 -0
  91. package/prefab/analytics/events/index.d.ts.map +1 -0
  92. package/prefab/analytics/events/index.js +163 -0
  93. package/prefab/analytics/events/index.js.map +1 -0
  94. package/prefab/analytics/index.d.ts +2 -0
  95. package/prefab/analytics/index.d.ts.map +1 -0
  96. package/prefab/analytics/index.js +18 -0
  97. package/prefab/analytics/index.js.map +1 -0
  98. package/prefab/auth/cognito-pool/index.d.ts +65 -0
  99. package/prefab/auth/cognito-pool/index.d.ts.map +1 -0
  100. package/prefab/auth/cognito-pool/index.js +240 -0
  101. package/prefab/auth/cognito-pool/index.js.map +1 -0
  102. package/prefab/auth/index.d.ts +2 -0
  103. package/prefab/auth/index.d.ts.map +1 -0
  104. package/prefab/auth/index.js +18 -0
  105. package/prefab/auth/index.js.map +1 -0
  106. package/prefab/cdn/cdn-api/index.d.ts +38 -0
  107. package/prefab/cdn/cdn-api/index.d.ts.map +1 -0
  108. package/prefab/cdn/cdn-api/index.js +153 -0
  109. package/prefab/cdn/cdn-api/index.js.map +1 -0
  110. package/prefab/cdn/cdn-asset/index.d.ts +27 -0
  111. package/prefab/cdn/cdn-asset/index.d.ts.map +1 -0
  112. package/prefab/cdn/cdn-asset/index.js +96 -0
  113. package/prefab/cdn/cdn-asset/index.js.map +1 -0
  114. package/prefab/cdn/cdn-spa/index.d.ts +27 -0
  115. package/prefab/cdn/cdn-spa/index.d.ts.map +1 -0
  116. package/prefab/cdn/cdn-spa/index.js +138 -0
  117. package/prefab/cdn/cdn-spa/index.js.map +1 -0
  118. package/prefab/cdn/cdn-ssr/index.d.ts +36 -0
  119. package/prefab/cdn/cdn-ssr/index.d.ts.map +1 -0
  120. package/prefab/cdn/cdn-ssr/index.js +271 -0
  121. package/prefab/cdn/cdn-ssr/index.js.map +1 -0
  122. package/prefab/cdn/index.d.ts +5 -0
  123. package/prefab/cdn/index.d.ts.map +1 -0
  124. package/prefab/cdn/index.js +21 -0
  125. package/prefab/cdn/index.js.map +1 -0
  126. package/prefab/compute/fargate/cluster.d.ts +16 -0
  127. package/prefab/compute/fargate/cluster.d.ts.map +1 -0
  128. package/prefab/compute/fargate/cluster.js +42 -0
  129. package/prefab/compute/fargate/cluster.js.map +1 -0
  130. package/prefab/compute/fargate/index.d.ts +3 -0
  131. package/prefab/compute/fargate/index.d.ts.map +1 -0
  132. package/prefab/compute/fargate/index.js +19 -0
  133. package/prefab/compute/fargate/index.js.map +1 -0
  134. package/prefab/compute/fargate/service.d.ts +49 -0
  135. package/prefab/compute/fargate/service.d.ts.map +1 -0
  136. package/prefab/compute/fargate/service.js +109 -0
  137. package/prefab/compute/fargate/service.js.map +1 -0
  138. package/prefab/compute/function/api-function/api-aggregate.d.ts +32 -0
  139. package/prefab/compute/function/api-function/api-aggregate.d.ts.map +1 -0
  140. package/prefab/compute/function/api-function/api-aggregate.js +54 -0
  141. package/prefab/compute/function/api-function/api-aggregate.js.map +1 -0
  142. package/prefab/compute/function/api-function/api-function.d.ts +22 -0
  143. package/prefab/compute/function/api-function/api-function.d.ts.map +1 -0
  144. package/prefab/compute/function/api-function/api-function.js +45 -0
  145. package/prefab/compute/function/api-function/api-function.js.map +1 -0
  146. package/prefab/compute/function/api-function/index.d.ts +3 -0
  147. package/prefab/compute/function/api-function/index.d.ts.map +1 -0
  148. package/prefab/compute/function/api-function/index.js +19 -0
  149. package/prefab/compute/function/api-function/index.js.map +1 -0
  150. package/prefab/compute/function/base-function/index.d.ts +33 -0
  151. package/prefab/compute/function/base-function/index.d.ts.map +1 -0
  152. package/prefab/compute/function/base-function/index.js +70 -0
  153. package/prefab/compute/function/base-function/index.js.map +1 -0
  154. package/prefab/compute/function/cognito-function/cognito-aggregate.d.ts +18 -0
  155. package/prefab/compute/function/cognito-function/cognito-aggregate.d.ts.map +1 -0
  156. package/prefab/compute/function/cognito-function/cognito-aggregate.js +22 -0
  157. package/prefab/compute/function/cognito-function/cognito-aggregate.js.map +1 -0
  158. package/prefab/compute/function/cognito-function/cognito-function.d.ts +19 -0
  159. package/prefab/compute/function/cognito-function/cognito-function.d.ts.map +1 -0
  160. package/prefab/compute/function/cognito-function/cognito-function.js +24 -0
  161. package/prefab/compute/function/cognito-function/cognito-function.js.map +1 -0
  162. package/prefab/compute/function/cognito-function/index.d.ts +3 -0
  163. package/prefab/compute/function/cognito-function/index.d.ts.map +1 -0
  164. package/prefab/compute/function/cognito-function/index.js +19 -0
  165. package/prefab/compute/function/cognito-function/index.js.map +1 -0
  166. package/prefab/compute/function/cron-function/cron-aggregate.d.ts +17 -0
  167. package/prefab/compute/function/cron-function/cron-aggregate.d.ts.map +1 -0
  168. package/prefab/compute/function/cron-function/cron-aggregate.js +22 -0
  169. package/prefab/compute/function/cron-function/cron-aggregate.js.map +1 -0
  170. package/prefab/compute/function/cron-function/cron-function.d.ts +17 -0
  171. package/prefab/compute/function/cron-function/cron-function.d.ts.map +1 -0
  172. package/prefab/compute/function/cron-function/cron-function.js +24 -0
  173. package/prefab/compute/function/cron-function/cron-function.js.map +1 -0
  174. package/prefab/compute/function/cron-function/index.d.ts +3 -0
  175. package/prefab/compute/function/cron-function/index.d.ts.map +1 -0
  176. package/prefab/compute/function/cron-function/index.js +19 -0
  177. package/prefab/compute/function/cron-function/index.js.map +1 -0
  178. package/prefab/compute/function/event-function/event-aggregate.d.ts +20 -0
  179. package/prefab/compute/function/event-function/event-aggregate.d.ts.map +1 -0
  180. package/prefab/compute/function/event-function/event-aggregate.js +25 -0
  181. package/prefab/compute/function/event-function/event-aggregate.js.map +1 -0
  182. package/prefab/compute/function/event-function/event-function.d.ts +14 -0
  183. package/prefab/compute/function/event-function/event-function.d.ts.map +1 -0
  184. package/prefab/compute/function/event-function/event-function.js +33 -0
  185. package/prefab/compute/function/event-function/event-function.js.map +1 -0
  186. package/prefab/compute/function/event-function/index.d.ts +3 -0
  187. package/prefab/compute/function/event-function/index.d.ts.map +1 -0
  188. package/prefab/compute/function/event-function/index.js +19 -0
  189. package/prefab/compute/function/event-function/index.js.map +1 -0
  190. package/prefab/compute/function/index.d.ts +8 -0
  191. package/prefab/compute/function/index.d.ts.map +1 -0
  192. package/prefab/compute/function/index.js +24 -0
  193. package/prefab/compute/function/index.js.map +1 -0
  194. package/prefab/compute/function/queue-function/index.d.ts +25 -0
  195. package/prefab/compute/function/queue-function/index.d.ts.map +1 -0
  196. package/prefab/compute/function/queue-function/index.js +46 -0
  197. package/prefab/compute/function/queue-function/index.js.map +1 -0
  198. package/prefab/compute/function/topic-function/index.d.ts +23 -0
  199. package/prefab/compute/function/topic-function/index.d.ts.map +1 -0
  200. package/prefab/compute/function/topic-function/index.js +23 -0
  201. package/prefab/compute/function/topic-function/index.js.map +1 -0
  202. package/prefab/compute/index.d.ts +3 -0
  203. package/prefab/compute/index.d.ts.map +1 -0
  204. package/prefab/compute/index.js +19 -0
  205. package/prefab/compute/index.js.map +1 -0
  206. package/prefab/database/dynamo/index.d.ts +14 -0
  207. package/prefab/database/dynamo/index.d.ts.map +1 -0
  208. package/prefab/database/dynamo/index.js +106 -0
  209. package/prefab/database/dynamo/index.js.map +1 -0
  210. package/prefab/database/index.d.ts +4 -0
  211. package/prefab/database/index.d.ts.map +1 -0
  212. package/prefab/database/index.js +20 -0
  213. package/prefab/database/index.js.map +1 -0
  214. package/prefab/database/rds/handlers/start-cluster/handler.d.ts +2 -0
  215. package/prefab/database/rds/handlers/start-cluster/handler.d.ts.map +1 -0
  216. package/prefab/database/rds/handlers/start-cluster/handler.js +10 -0
  217. package/prefab/database/rds/handlers/start-cluster/handler.js.map +1 -0
  218. package/prefab/database/rds/handlers/stop-cluster/handler.d.ts +2 -0
  219. package/prefab/database/rds/handlers/stop-cluster/handler.d.ts.map +1 -0
  220. package/prefab/database/rds/handlers/stop-cluster/handler.js +10 -0
  221. package/prefab/database/rds/handlers/stop-cluster/handler.js.map +1 -0
  222. package/prefab/database/rds/index.d.ts +54 -0
  223. package/prefab/database/rds/index.d.ts.map +1 -0
  224. package/prefab/database/rds/index.js +223 -0
  225. package/prefab/database/rds/index.js.map +1 -0
  226. package/prefab/database/timestream/index.d.ts +3 -0
  227. package/prefab/database/timestream/index.d.ts.map +1 -0
  228. package/prefab/database/timestream/index.js +19 -0
  229. package/prefab/database/timestream/index.js.map +1 -0
  230. package/prefab/database/timestream/timestream-database.d.ts +13 -0
  231. package/prefab/database/timestream/timestream-database.d.ts.map +1 -0
  232. package/prefab/database/timestream/timestream-database.js +21 -0
  233. package/prefab/database/timestream/timestream-database.js.map +1 -0
  234. package/prefab/database/timestream/timestream-table.d.ts +23 -0
  235. package/prefab/database/timestream/timestream-table.d.ts.map +1 -0
  236. package/prefab/database/timestream/timestream-table.js +62 -0
  237. package/prefab/database/timestream/timestream-table.js.map +1 -0
  238. package/prefab/gateway/alb-public/index.d.ts +44 -0
  239. package/prefab/gateway/alb-public/index.d.ts.map +1 -0
  240. package/prefab/gateway/alb-public/index.js +116 -0
  241. package/prefab/gateway/alb-public/index.js.map +1 -0
  242. package/prefab/gateway/api-gateway/api-http.d.ts +27 -0
  243. package/prefab/gateway/api-gateway/api-http.d.ts.map +1 -0
  244. package/prefab/gateway/api-gateway/api-http.js +48 -0
  245. package/prefab/gateway/api-gateway/api-http.js.map +1 -0
  246. package/prefab/gateway/api-gateway/api-rest.d.ts +26 -0
  247. package/prefab/gateway/api-gateway/api-rest.d.ts.map +1 -0
  248. package/prefab/gateway/api-gateway/api-rest.js +90 -0
  249. package/prefab/gateway/api-gateway/api-rest.js.map +1 -0
  250. package/prefab/gateway/api-gateway/index.d.ts +3 -0
  251. package/prefab/gateway/api-gateway/index.d.ts.map +1 -0
  252. package/prefab/gateway/api-gateway/index.js +19 -0
  253. package/prefab/gateway/api-gateway/index.js.map +1 -0
  254. package/prefab/gateway/app-sync/index.d.ts +36 -0
  255. package/prefab/gateway/app-sync/index.d.ts.map +1 -0
  256. package/prefab/gateway/app-sync/index.js +114 -0
  257. package/prefab/gateway/app-sync/index.js.map +1 -0
  258. package/prefab/gateway/app-sync/resolver-aggregate.d.ts +33 -0
  259. package/prefab/gateway/app-sync/resolver-aggregate.d.ts.map +1 -0
  260. package/prefab/gateway/app-sync/resolver-aggregate.js +125 -0
  261. package/prefab/gateway/app-sync/resolver-aggregate.js.map +1 -0
  262. package/prefab/gateway/app-sync/types.d.ts +29 -0
  263. package/prefab/gateway/app-sync/types.d.ts.map +1 -0
  264. package/prefab/gateway/app-sync/types.js +3 -0
  265. package/prefab/gateway/app-sync/types.js.map +1 -0
  266. package/prefab/gateway/index.d.ts +4 -0
  267. package/prefab/gateway/index.d.ts.map +1 -0
  268. package/prefab/gateway/index.js +20 -0
  269. package/prefab/gateway/index.js.map +1 -0
  270. package/prefab/index.d.ts +11 -0
  271. package/prefab/index.d.ts.map +1 -0
  272. package/prefab/index.js +27 -0
  273. package/prefab/index.js.map +1 -0
  274. package/prefab/integration/event-bus/index.d.ts +20 -0
  275. package/prefab/integration/event-bus/index.d.ts.map +1 -0
  276. package/prefab/integration/event-bus/index.js +46 -0
  277. package/prefab/integration/event-bus/index.js.map +1 -0
  278. package/prefab/integration/index.d.ts +4 -0
  279. package/prefab/integration/index.d.ts.map +1 -0
  280. package/prefab/integration/index.js +20 -0
  281. package/prefab/integration/index.js.map +1 -0
  282. package/prefab/integration/queue/index.d.ts +29 -0
  283. package/prefab/integration/queue/index.d.ts.map +1 -0
  284. package/prefab/integration/queue/index.js +70 -0
  285. package/prefab/integration/queue/index.js.map +1 -0
  286. package/prefab/integration/topic/index.d.ts +21 -0
  287. package/prefab/integration/topic/index.d.ts.map +1 -0
  288. package/prefab/integration/topic/index.js +48 -0
  289. package/prefab/integration/topic/index.js.map +1 -0
  290. package/prefab/networking/dns-domain-ref/index.d.ts +16 -0
  291. package/prefab/networking/dns-domain-ref/index.d.ts.map +1 -0
  292. package/prefab/networking/dns-domain-ref/index.js +28 -0
  293. package/prefab/networking/dns-domain-ref/index.js.map +1 -0
  294. package/prefab/networking/dns-subdomain-certificate/index.d.ts +13 -0
  295. package/prefab/networking/dns-subdomain-certificate/index.d.ts.map +1 -0
  296. package/prefab/networking/dns-subdomain-certificate/index.js +28 -0
  297. package/prefab/networking/dns-subdomain-certificate/index.js.map +1 -0
  298. package/prefab/networking/dns-subdomain-hosted-zone/index.d.ts +12 -0
  299. package/prefab/networking/dns-subdomain-hosted-zone/index.d.ts.map +1 -0
  300. package/prefab/networking/dns-subdomain-hosted-zone/index.js +27 -0
  301. package/prefab/networking/dns-subdomain-hosted-zone/index.js.map +1 -0
  302. package/prefab/networking/index.d.ts +6 -0
  303. package/prefab/networking/index.d.ts.map +1 -0
  304. package/prefab/networking/index.js +22 -0
  305. package/prefab/networking/index.js.map +1 -0
  306. package/prefab/networking/vpc/index.d.ts +20 -0
  307. package/prefab/networking/vpc/index.d.ts.map +1 -0
  308. package/prefab/networking/vpc/index.js +28 -0
  309. package/prefab/networking/vpc/index.js.map +1 -0
  310. package/prefab/networking/waf/index.d.ts +14 -0
  311. package/prefab/networking/waf/index.d.ts.map +1 -0
  312. package/prefab/networking/waf/index.js +45 -0
  313. package/prefab/networking/waf/index.js.map +1 -0
  314. package/prefab/storage/bucket/asset-bucket.d.ts +12 -0
  315. package/prefab/storage/bucket/asset-bucket.d.ts.map +1 -0
  316. package/prefab/storage/bucket/asset-bucket.js +19 -0
  317. package/prefab/storage/bucket/asset-bucket.js.map +1 -0
  318. package/prefab/storage/bucket/index.d.ts +3 -0
  319. package/prefab/storage/bucket/index.d.ts.map +1 -0
  320. package/prefab/storage/bucket/index.js +19 -0
  321. package/prefab/storage/bucket/index.js.map +1 -0
  322. package/prefab/storage/bucket/private-bucket.d.ts +26 -0
  323. package/prefab/storage/bucket/private-bucket.d.ts.map +1 -0
  324. package/prefab/storage/bucket/private-bucket.js +82 -0
  325. package/prefab/storage/bucket/private-bucket.js.map +1 -0
  326. package/prefab/storage/index.d.ts +2 -0
  327. package/prefab/storage/index.d.ts.map +1 -0
  328. package/prefab/storage/index.js +18 -0
  329. package/prefab/storage/index.js.map +1 -0
  330. package/prefab/utils/config/frontend-env-builder.d.ts +14 -0
  331. package/prefab/utils/config/frontend-env-builder.d.ts.map +1 -0
  332. package/prefab/utils/config/frontend-env-builder.js +25 -0
  333. package/prefab/utils/config/frontend-env-builder.js.map +1 -0
  334. package/prefab/utils/config/index.d.ts +4 -0
  335. package/prefab/utils/config/index.d.ts.map +1 -0
  336. package/prefab/utils/config/index.js +20 -0
  337. package/prefab/utils/config/index.js.map +1 -0
  338. package/prefab/utils/config/parameter-secret.d.ts +21 -0
  339. package/prefab/utils/config/parameter-secret.d.ts.map +1 -0
  340. package/prefab/utils/config/parameter-secret.js +42 -0
  341. package/prefab/utils/config/parameter-secret.js.map +1 -0
  342. package/prefab/utils/config/runtime-secret.d.ts +20 -0
  343. package/prefab/utils/config/runtime-secret.d.ts.map +1 -0
  344. package/prefab/utils/config/runtime-secret.js +37 -0
  345. package/prefab/utils/config/runtime-secret.js.map +1 -0
  346. package/prefab/utils/deploy-pipeline/catalog/integrations/index.d.ts +2 -0
  347. package/prefab/utils/deploy-pipeline/catalog/integrations/index.d.ts.map +1 -0
  348. package/prefab/utils/deploy-pipeline/catalog/integrations/index.js +28 -0
  349. package/prefab/utils/deploy-pipeline/catalog/integrations/index.js.map +1 -0
  350. package/prefab/utils/deploy-pipeline/catalog/integrations/slack.d.ts +28 -0
  351. package/prefab/utils/deploy-pipeline/catalog/integrations/slack.d.ts.map +1 -0
  352. package/prefab/utils/deploy-pipeline/catalog/integrations/slack.js +8 -0
  353. package/prefab/utils/deploy-pipeline/catalog/integrations/slack.js.map +1 -0
  354. package/prefab/utils/deploy-pipeline/entities/index.d.ts +29 -0
  355. package/prefab/utils/deploy-pipeline/entities/index.d.ts.map +1 -0
  356. package/prefab/utils/deploy-pipeline/entities/index.js +3 -0
  357. package/prefab/utils/deploy-pipeline/entities/index.js.map +1 -0
  358. package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.d.ts +3 -0
  359. package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.d.ts.map +1 -0
  360. package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.js +28 -0
  361. package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.js.map +1 -0
  362. package/prefab/utils/deploy-pipeline/index.d.ts +15 -0
  363. package/prefab/utils/deploy-pipeline/index.d.ts.map +1 -0
  364. package/prefab/utils/deploy-pipeline/index.js +173 -0
  365. package/prefab/utils/deploy-pipeline/index.js.map +1 -0
  366. package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.d.ts +6 -0
  367. package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.d.ts.map +1 -0
  368. package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.js +26 -0
  369. package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.js.map +1 -0
  370. package/prefab/utils/deploy-pipeline/platform/get-slack-payload.d.ts +4 -0
  371. package/prefab/utils/deploy-pipeline/platform/get-slack-payload.d.ts.map +1 -0
  372. package/prefab/utils/deploy-pipeline/platform/get-slack-payload.js +39 -0
  373. package/prefab/utils/deploy-pipeline/platform/get-slack-payload.js.map +1 -0
  374. package/prefab/utils/deploy-pipeline/platform/send-to-slack.d.ts +3 -0
  375. package/prefab/utils/deploy-pipeline/platform/send-to-slack.d.ts.map +1 -0
  376. package/prefab/utils/deploy-pipeline/platform/send-to-slack.js +14 -0
  377. package/prefab/utils/deploy-pipeline/platform/send-to-slack.js.map +1 -0
  378. package/prefab/utils/duration.d.ts +2 -0
  379. package/prefab/utils/duration.d.ts.map +1 -0
  380. package/prefab/utils/duration.js +6 -0
  381. package/prefab/utils/duration.js.map +1 -0
  382. package/prefab/utils/index.d.ts +5 -0
  383. package/prefab/utils/index.d.ts.map +1 -0
  384. package/prefab/utils/index.js +21 -0
  385. package/prefab/utils/index.js.map +1 -0
  386. package/prefab/utils/ses/index.d.ts +22 -0
  387. package/prefab/utils/ses/index.d.ts.map +1 -0
  388. package/prefab/utils/ses/index.js +124 -0
  389. package/prefab/utils/ses/index.js.map +1 -0
  390. package/script/config-command/bootstrap.d.ts +4 -0
  391. package/script/config-command/bootstrap.d.ts.map +1 -0
  392. package/script/config-command/bootstrap.js +66 -0
  393. package/script/config-command/bootstrap.js.map +1 -0
  394. package/script/config-command/deploy-spa.d.ts +4 -0
  395. package/script/config-command/deploy-spa.d.ts.map +1 -0
  396. package/script/config-command/deploy-spa.js +84 -0
  397. package/script/config-command/deploy-spa.js.map +1 -0
  398. package/script/config-command/deploy.d.ts +4 -0
  399. package/script/config-command/deploy.d.ts.map +1 -0
  400. package/script/config-command/deploy.js +26 -0
  401. package/script/config-command/deploy.js.map +1 -0
  402. package/script/config-command/destroy.d.ts +4 -0
  403. package/script/config-command/destroy.d.ts.map +1 -0
  404. package/script/config-command/destroy.js +26 -0
  405. package/script/config-command/destroy.js.map +1 -0
  406. package/script/config-command/env-ssr.d.ts +4 -0
  407. package/script/config-command/env-ssr.d.ts.map +1 -0
  408. package/script/config-command/env-ssr.js +51 -0
  409. package/script/config-command/env-ssr.js.map +1 -0
  410. package/script/config-command/invalidation-ssr.d.ts +4 -0
  411. package/script/config-command/invalidation-ssr.d.ts.map +1 -0
  412. package/script/config-command/invalidation-ssr.js +55 -0
  413. package/script/config-command/invalidation-ssr.js.map +1 -0
  414. package/script/config-command/rds-migration.d.ts +7 -0
  415. package/script/config-command/rds-migration.d.ts.map +1 -0
  416. package/script/config-command/rds-migration.js +125 -0
  417. package/script/config-command/rds-migration.js.map +1 -0
  418. package/script/config-command/rds-sync.d.ts +4 -0
  419. package/script/config-command/rds-sync.d.ts.map +1 -0
  420. package/script/config-command/rds-sync.js +66 -0
  421. package/script/config-command/rds-sync.js.map +1 -0
  422. package/script/config-command/ssm-connect.d.ts +4 -0
  423. package/script/config-command/ssm-connect.d.ts.map +1 -0
  424. package/script/config-command/ssm-connect.js +86 -0
  425. package/script/config-command/ssm-connect.js.map +1 -0
  426. package/script/config-command/start-spa.d.ts +4 -0
  427. package/script/config-command/start-spa.d.ts.map +1 -0
  428. package/script/config-command/start-spa.js +55 -0
  429. package/script/config-command/start-spa.js.map +1 -0
  430. package/script/config-command/start-ssr.d.ts +4 -0
  431. package/script/config-command/start-ssr.d.ts.map +1 -0
  432. package/script/config-command/start-ssr.js +55 -0
  433. package/script/config-command/start-ssr.js.map +1 -0
  434. package/script/config-command/synth.d.ts +4 -0
  435. package/script/config-command/synth.d.ts.map +1 -0
  436. package/script/config-command/synth.js +26 -0
  437. package/script/config-command/synth.js.map +1 -0
  438. package/script/index.d.ts +25 -0
  439. package/script/index.d.ts.map +1 -0
  440. package/script/index.js +70 -0
  441. package/script/index.js.map +1 -0
  442. package/script/output-command/create-user.d.ts +9 -0
  443. package/script/output-command/create-user.d.ts.map +1 -0
  444. package/script/output-command/create-user.js +61 -0
  445. package/script/output-command/create-user.js.map +1 -0
  446. package/script/output-command/gen-postman-env.d.ts +28 -0
  447. package/script/output-command/gen-postman-env.d.ts.map +1 -0
  448. package/script/output-command/gen-postman-env.js +56 -0
  449. package/script/output-command/gen-postman-env.js.map +1 -0
  450. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CdnApiPrefab = void 0;
27
+ const awsCloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
28
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
29
+ const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
30
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
31
+ const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
32
+ const constructs_1 = require("constructs");
33
+ const common_1 = require("../../../common");
34
+ const private_bucket_1 = require("../../../prefab/storage/bucket/private-bucket");
35
+ class CdnApiPrefab extends constructs_1.Construct {
36
+ domain;
37
+ baseUrl;
38
+ service;
39
+ distribution;
40
+ apiGatewayRequestPolicy;
41
+ apiGatewayCachePolicy;
42
+ apiGatewayBehaviorOptions;
43
+ unrestrictedBehaviorOptions;
44
+ constructor(service, params) {
45
+ super(service, (0, common_1.getLogicalName)(CdnApiPrefab.name, params.subDomain));
46
+ this.service = service;
47
+ this.domain = (0, common_1.getDomain)(params.subDomain, service.props);
48
+ this.baseUrl = `https://${this.domain}/`;
49
+ if (params.albDefaultBehavior && params.restApiDefaultBehavior)
50
+ throw new common_1.SynthError('Only alb or api can be default behavior', service.props);
51
+ // Api Gateway Policies
52
+ this.apiGatewayCachePolicy = new awsCloudfront.CachePolicy(this, 'CachePolicy', {
53
+ cachePolicyName: (0, common_1.getCloudFrontName)('ApiGateway', 'CachePolicy', this.service.props),
54
+ queryStringBehavior: awsCloudfront.CacheQueryStringBehavior.all(),
55
+ headerBehavior: {
56
+ behavior: 'whitelist',
57
+ headers: [...(params.headersWhitelist || []), 'Authorization'],
58
+ },
59
+ ...params.cachePolicyProps,
60
+ });
61
+ this.apiGatewayRequestPolicy = new awsCloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
62
+ originRequestPolicyName: (0, common_1.getCloudFrontName)('ApiGateway', 'RequestPolicy', this.service.props),
63
+ headerBehavior: {
64
+ behavior: 'whitelist',
65
+ headers: [
66
+ ...(params.headersWhitelist || []),
67
+ 'Access-Control-Allow-Origin',
68
+ 'Access-Control-Request-Method',
69
+ 'Access-Control-Allow-Headers',
70
+ 'Access-Control-Request-Headers',
71
+ 'Origin',
72
+ ],
73
+ },
74
+ queryStringBehavior: awsCloudfront.OriginRequestQueryStringBehavior.all(),
75
+ });
76
+ this.apiGatewayBehaviorOptions = {
77
+ compress: true,
78
+ cachePolicy: this.apiGatewayCachePolicy,
79
+ originRequestPolicy: this.apiGatewayRequestPolicy,
80
+ allowedMethods: awsCloudfront.AllowedMethods.ALLOW_ALL,
81
+ viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
82
+ };
83
+ // Integrations Policies
84
+ this.unrestrictedBehaviorOptions = {
85
+ compress: true,
86
+ cachePolicy: awsCloudfront.CachePolicy.CACHING_DISABLED,
87
+ originRequestPolicy: awsCloudfront.OriginRequestPolicy.ALL_VIEWER,
88
+ allowedMethods: awsCloudfront.AllowedMethods.ALLOW_ALL,
89
+ viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
90
+ };
91
+ // Default Behavior
92
+ let defaultBehavior = {
93
+ origin: new aws_cloudfront_origins_1.HttpOrigin(new private_bucket_1.PrivateBucketPrefab(service, { bucketName: 'default-origin' }).bucket.bucketDomainName, {
94
+ originId: (0, common_1.getCloudFrontName)('Origin', 'Default', this.service.props),
95
+ }),
96
+ ...this.apiGatewayBehaviorOptions,
97
+ };
98
+ if (params.albDefaultBehavior) {
99
+ defaultBehavior = {
100
+ origin: new aws_cloudfront_origins_1.LoadBalancerV2Origin(params.albDefaultBehavior.alb, {
101
+ originId: (0, common_1.getCloudFrontName)('Origin', 'Default', this.service.props),
102
+ }),
103
+ ...this.unrestrictedBehaviorOptions,
104
+ };
105
+ }
106
+ if (params.restApiDefaultBehavior) {
107
+ defaultBehavior = {
108
+ origin: new aws_cloudfront_origins_1.RestApiOrigin(params.restApiDefaultBehavior.api, {
109
+ originId: (0, common_1.getCloudFrontName)('Origin', 'Default', this.service.props),
110
+ }),
111
+ ...this.unrestrictedBehaviorOptions,
112
+ originRequestPolicy: awsCloudfront.OriginRequestPolicy.ALL_VIEWER_EXCEPT_HOST_HEADER,
113
+ };
114
+ }
115
+ // Distribution
116
+ this.distribution = new awsCloudfront.Distribution(this, 'Distribution', {
117
+ enabled: true,
118
+ comment: (0, common_1.getResourceName)('cdn', service.props),
119
+ certificate: params.certificate,
120
+ domainNames: params.explicitDomains ?? [this.domain],
121
+ defaultBehavior,
122
+ ...(service.props.envName !== 'prod' ? { priceClass: awsCloudfront.PriceClass.PRICE_CLASS_100 } : {}),
123
+ webAclId: params.waf?.webACL?.attrArn,
124
+ });
125
+ // Route53
126
+ if (!params.explicitDomains && !params.skipRecord) {
127
+ const hostedZone = aws_route53_1.HostedZone.fromLookup(this, 'HostedZoneEnvDns', { domainName: (0, common_1.getDomain)('', service.props) });
128
+ new aws_route53_1.ARecord(service, 'Record', {
129
+ zone: hostedZone,
130
+ target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(this.distribution)),
131
+ recordName: this.domain,
132
+ });
133
+ }
134
+ new aws_cdk_lib_1.CfnOutput(this, 'Domain', { value: params.explicitDomains ? params.explicitDomains[0] : this.domain });
135
+ new aws_cdk_lib_1.CfnOutput(this, 'BaseUrl', {
136
+ value: params.explicitDomains ? `https://${params.explicitDomains[0]}/` : this.baseUrl,
137
+ });
138
+ }
139
+ addApiGateway(basePath, apiUrl, originOptions) {
140
+ this.distribution.addBehavior(`/${basePath}*`, new aws_cloudfront_origins_1.HttpOrigin(apiUrl, { originId: (0, common_1.getCloudFrontName)('Origin', basePath, this.service.props), ...originOptions }), this.apiGatewayBehaviorOptions);
141
+ }
142
+ addAppSync(apiUrl, originOptions) {
143
+ this.distribution.addBehavior('/graphql*', new aws_cloudfront_origins_1.HttpOrigin(aws_cdk_lib_1.Fn.select(2, aws_cdk_lib_1.Fn.split('/', apiUrl)), {
144
+ originId: (0, common_1.getCloudFrontName)('Origin', 'graphql', this.service.props),
145
+ ...originOptions,
146
+ }), this.apiGatewayBehaviorOptions);
147
+ }
148
+ addAlb(basePath, alb) {
149
+ this.distribution.addBehavior(`/${basePath}/*`, new aws_cloudfront_origins_1.LoadBalancerV2Origin(alb, { originId: (0, common_1.getCloudFrontName)('Origin', basePath, this.service.props) }), this.unrestrictedBehaviorOptions);
150
+ }
151
+ }
152
+ exports.CdnApiPrefab = CdnApiPrefab;
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import * as awsCloudfront from 'aws-cdk-lib/aws-cloudfront';
2
+ import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
3
+ import { Construct } from 'constructs';
4
+
5
+ import { ServiceStack } from '../../../common';
6
+
7
+ import { WafPrefab } from '../../../prefab/networking/waf';
8
+ import { AssetBucketParams, AssetBucketPrefab } from '../../../prefab/storage/bucket/asset-bucket';
9
+
10
+ export type CdnAssetConstructProps = {
11
+ subDomain: string;
12
+ certificate: ICertificate;
13
+ assetBucketProps: AssetBucketParams;
14
+ waf?: WafPrefab;
15
+ skipRecord?: true;
16
+ explicitDomains?: string[];
17
+ distributionProps?: Partial<awsCloudfront.DistributionProps>;
18
+ };
19
+ export declare class CdnAssetPrefab extends Construct {
20
+ readonly bucketPrefab: AssetBucketPrefab;
21
+ readonly domain: string;
22
+ readonly baseUrl: string;
23
+ readonly distribution: awsCloudfront.Distribution;
24
+ readonly behaviorOptions: Omit<awsCloudfront.BehaviorOptions, 'origin'>;
25
+ constructor(service: ServiceStack, params: CdnAssetConstructProps);
26
+ }
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-asset/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKlE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAiE,MAAM,QAAQ,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE1F,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC9D,CAAC;AAEF,qBAAa,cAAe,SAAQ,SAAS;IAC3C,SAAgB,YAAY,EAAE,iBAAiB,CAAC;IAChD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;IACzD,SAAgB,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,sBAAsB;CA0DlE"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CdnAssetPrefab = void 0;
27
+ const awsCloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
28
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
29
+ const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
30
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
31
+ const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
32
+ const aws_s3_1 = require("aws-cdk-lib/aws-s3");
33
+ const constructs_1 = require("constructs");
34
+ const common_1 = require("../../../common");
35
+ const asset_bucket_1 = require("../../../prefab/storage/bucket/asset-bucket");
36
+ class CdnAssetPrefab extends constructs_1.Construct {
37
+ bucketPrefab;
38
+ domain;
39
+ baseUrl;
40
+ distribution;
41
+ behaviorOptions;
42
+ constructor(service, params) {
43
+ super(service, (0, common_1.getLogicalName)(CdnAssetPrefab.name, params.subDomain));
44
+ this.domain = (0, common_1.getDomain)(params.subDomain, service.props);
45
+ this.baseUrl = `https://${this.domain}/`;
46
+ this.bucketPrefab = new asset_bucket_1.AssetBucketPrefab(service, {
47
+ ...params.assetBucketProps,
48
+ bucketProps: {
49
+ cors: [{ allowedMethods: [aws_s3_1.HttpMethods.GET, aws_s3_1.HttpMethods.POST], allowedOrigins: ['*'], allowedHeaders: ['*'] }],
50
+ ...params.assetBucketProps?.bucketProps,
51
+ },
52
+ });
53
+ this.behaviorOptions = {
54
+ compress: true,
55
+ originRequestPolicy: new awsCloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
56
+ originRequestPolicyName: (0, common_1.getCloudFrontName)('Bucket', 'RequestPolicy', service.props),
57
+ headerBehavior: {
58
+ behavior: 'whitelist',
59
+ headers: ['Access-Control-Allow-Origin', 'Access-Control-Allow-Headers', 'Origin'],
60
+ },
61
+ }),
62
+ cachePolicy: awsCloudfront.CachePolicy.CACHING_OPTIMIZED,
63
+ allowedMethods: awsCloudfront.AllowedMethods.ALLOW_ALL,
64
+ viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
65
+ };
66
+ this.distribution = new awsCloudfront.Distribution(this, 'Distribution', {
67
+ enabled: true,
68
+ comment: (0, common_1.getResourceName)('cdn', service.props),
69
+ certificate: params.certificate,
70
+ domainNames: params.explicitDomains ?? [this.domain],
71
+ defaultBehavior: {
72
+ origin: new aws_cloudfront_origins_1.S3Origin(this.bucketPrefab.bucket, {
73
+ originId: (0, common_1.getCloudFrontName)('Origin', 'Default', service.props),
74
+ }),
75
+ ...this.behaviorOptions,
76
+ },
77
+ ...(service.props.envName !== 'prod' ? { priceClass: awsCloudfront.PriceClass.PRICE_CLASS_100 } : {}),
78
+ webAclId: params.waf?.webACL?.attrArn,
79
+ ...params.distributionProps,
80
+ });
81
+ if (!params.explicitDomains || !params.skipRecord) {
82
+ const hostedZone = aws_route53_1.HostedZone.fromLookup(this, 'HostedZoneEnvDns', { domainName: (0, common_1.getDomain)('', service.props) });
83
+ new aws_route53_1.ARecord(service, 'Record', {
84
+ zone: hostedZone,
85
+ target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(this.distribution)),
86
+ recordName: this.domain,
87
+ });
88
+ }
89
+ new aws_cdk_lib_1.CfnOutput(this, 'Domain', { value: params.explicitDomains ? params.explicitDomains[0] : this.domain });
90
+ new aws_cdk_lib_1.CfnOutput(this, 'BaseUrl', {
91
+ value: params.explicitDomains ? `https://${params.explicitDomains[0]}/` : this.baseUrl,
92
+ });
93
+ }
94
+ }
95
+ exports.CdnAssetPrefab = CdnAssetPrefab;
96
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-asset/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0EAA4D;AAC5D,6CAAwC;AAExC,+EAA8D;AAC9D,yDAA4E;AAC5E,yEAAmE;AACnE,+CAAiD;AACjD,2CAAuC;AAEvC,mCAAqG;AAGrG,qEAA0F;AAY1F,MAAa,cAAe,SAAQ,sBAAS;IAC3B,YAAY,CAAoB;IAChC,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,YAAY,CAA6B;IACzC,eAAe,CAAgD;IAE/E,YAAY,OAAqB,EAAE,MAA8B;QAC/D,KAAK,CAAC,OAAO,EAAE,IAAA,uBAAc,EAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,WAAW,IAAI,CAAC,MAAM,GAAG,CAAC;QAEzC,IAAI,CAAC,YAAY,GAAG,IAAI,gCAAiB,CAAC,OAAO,EAAE;YACjD,GAAG,MAAM,CAAC,gBAAgB;YAC1B,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,oBAAW,CAAC,GAAG,EAAE,oBAAW,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7G,GAAG,MAAM,CAAC,gBAAgB,EAAE,WAAW;aACxC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG;YACrB,QAAQ,EAAE,IAAI;YACd,mBAAmB,EAAE,IAAI,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE;gBACtF,uBAAuB,EAAE,IAAA,0BAAiB,EAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC;gBACpF,cAAc,EAAE;oBACd,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,CAAC,6BAA6B,EAAE,8BAA8B,EAAE,QAAQ,CAAC;iBACnF;aACF,CAAC;YACF,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,iBAAiB;YACxD,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,SAAS;YACtD,oBAAoB,EAAE,aAAa,CAAC,oBAAoB,CAAC,iBAAiB;SAC3E,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE;YACvE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAA,wBAAe,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;YAC9C,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpD,eAAe,EAAE;gBACf,MAAM,EAAE,IAAI,iCAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC7C,QAAQ,EAAE,IAAA,0BAAiB,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;iBAChE,CAAC;gBACF,GAAG,IAAI,CAAC,eAAe;aACxB;YACD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO;YACrC,GAAG,MAAM,CAAC,iBAAiB;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,wBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,IAAA,kBAAS,EAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjH,IAAI,qBAAO,CAAC,OAAO,EAAE,QAAQ,EAAE;gBAC7B,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,0BAAY,CAAC,SAAS,CAAC,IAAI,sCAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvE,UAAU,EAAE,IAAI,CAAC,MAAM;aACxB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,uBAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5G,IAAI,uBAAS,CAAC,IAAI,EAAE,SAAS,EAAE;YAC7B,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;SACvF,CAAC,CAAC;IACL,CAAC;CACF;AAjED,wCAiEC"}
@@ -0,0 +1,27 @@
1
+ import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
2
+ import { Construct } from 'constructs';
3
+
4
+ import { ServiceStack } from '../../../common';
5
+
6
+ import { WafPrefab } from '../../../prefab/networking/waf';
7
+
8
+ export type SpaPrefabParams = {
9
+ subDomain: string;
10
+ certificate: ICertificate;
11
+ assetMaxAge?: string;
12
+ indexMaxAge?: string;
13
+ baseDir?: string;
14
+ distDir?: string;
15
+ calculatedSecrets?: Record<string, string>;
16
+ waf?: WafPrefab;
17
+ skipRecord?: true;
18
+ wwwRedirectEnabled?: true;
19
+ explicitDomains?: string[];
20
+ };
21
+ export declare class SpaPrefab extends Construct {
22
+ private readonly domain;
23
+ private readonly baseUrl;
24
+ private readonly distribution;
25
+ constructor(service: ServiceStack, params: SpaPrefabParams);
26
+ }
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-spa/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAMlE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAA6E,MAAM,QAAQ,CAAC;AAEjH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;gBAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe;CAqG3D"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.SpaPrefab = void 0;
27
+ const awsCloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
28
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
29
+ const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
30
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
31
+ const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
32
+ const aws_s3_1 = require("aws-cdk-lib/aws-s3");
33
+ const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
34
+ const constructs_1 = require("constructs");
35
+ const common_1 = require("../../../common");
36
+ const private_bucket_1 = require("../../../prefab/storage/bucket/private-bucket");
37
+ const frontend_env_builder_1 = require("../../../prefab/utils/config/frontend-env-builder");
38
+ class SpaPrefab extends constructs_1.Construct {
39
+ domain;
40
+ baseUrl;
41
+ distribution;
42
+ constructor(service, params) {
43
+ super(service, (0, common_1.getLogicalName)(SpaPrefab.name, params.subDomain));
44
+ this.domain = (0, common_1.getDomain)(params.subDomain, service.props);
45
+ this.baseUrl = `https://${this.domain}/`;
46
+ const privateBucketPrefab = new private_bucket_1.PrivateBucketPrefab(service, {
47
+ bucketName: 'spawebapp',
48
+ bucketProps: {
49
+ autoDeleteObjects: true,
50
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
51
+ cors: [
52
+ {
53
+ allowedMethods: [aws_s3_1.HttpMethods.GET, aws_s3_1.HttpMethods.HEAD],
54
+ allowedOrigins: ['*'],
55
+ allowedHeaders: ['*'],
56
+ },
57
+ ],
58
+ },
59
+ });
60
+ const behaviorOptions = {
61
+ compress: true,
62
+ origin: new aws_cloudfront_origins_1.S3Origin(privateBucketPrefab.bucket, {
63
+ originId: (0, common_1.getCloudFrontName)('Origin', 'Default', service.props),
64
+ }),
65
+ originRequestPolicy: new awsCloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
66
+ originRequestPolicyName: (0, common_1.getCloudFrontName)('Bucket', 'RequestPolicy', service.props),
67
+ headerBehavior: {
68
+ behavior: 'whitelist',
69
+ headers: ['Access-Control-Allow-Origin', 'Access-Control-Allow-Headers', 'Origin'],
70
+ },
71
+ }),
72
+ cachePolicy: awsCloudfront.CachePolicy.CACHING_OPTIMIZED,
73
+ cachedMethods: awsCloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
74
+ allowedMethods: awsCloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
75
+ viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
76
+ };
77
+ const domains = [this.domain];
78
+ if (params.wwwRedirectEnabled) {
79
+ if (params.subDomain)
80
+ throw new common_1.SynthError('wwwRedirectEnabled is only allowed in the root domain', service.props);
81
+ domains.push(`www.${this.domain}`);
82
+ }
83
+ this.distribution = new awsCloudfront.Distribution(this, 'Distribution', {
84
+ enabled: true,
85
+ comment: (0, common_1.getResourceName)('cdn', service.props),
86
+ certificate: params.certificate,
87
+ domainNames: params.explicitDomains ?? domains,
88
+ defaultRootObject: 'index.html',
89
+ errorResponses: [
90
+ {
91
+ httpStatus: 403,
92
+ responseHttpStatus: 200,
93
+ ttl: aws_cdk_lib_1.Duration.seconds(86400),
94
+ responsePagePath: '/index.html',
95
+ },
96
+ {
97
+ httpStatus: 404,
98
+ responseHttpStatus: 200,
99
+ responsePagePath: '/index.html',
100
+ ttl: aws_cdk_lib_1.Duration.seconds(86400),
101
+ },
102
+ ],
103
+ defaultBehavior: behaviorOptions,
104
+ ...(service.props.envName !== 'prod' ? { priceClass: awsCloudfront.PriceClass.PRICE_CLASS_100 } : {}),
105
+ webAclId: params.waf?.webACL?.attrArn,
106
+ });
107
+ if (!params.explicitDomains && !params.skipRecord) {
108
+ const hostedZone = aws_route53_1.HostedZone.fromLookup(this, 'HostedZoneEnvDns', { domainName: (0, common_1.getDomain)('', service.props) });
109
+ domains.map((d) => {
110
+ new aws_route53_1.ARecord(service, d.split('.')[0], {
111
+ zone: hostedZone,
112
+ target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(this.distribution)),
113
+ recordName: d,
114
+ });
115
+ });
116
+ }
117
+ new frontend_env_builder_1.FrontendEnvBuilder(service, { ...params, name: params.subDomain });
118
+ new aws_ssm_1.StringParameter(this, 'Config', {
119
+ simpleName: true,
120
+ parameterName: (0, common_1.getResourceName)('config', service.props),
121
+ stringValue: JSON.stringify({
122
+ domain: params.explicitDomains ? params.explicitDomains[0] : this.domain,
123
+ bucketName: privateBucketPrefab.bucket.bucketName,
124
+ distributionId: this.distribution.distributionId,
125
+ assetMaxAge: params.assetMaxAge || '604800',
126
+ indexMaxAge: params.indexMaxAge || '1800',
127
+ baseDir: params.baseDir || `frontend/${service.props.serviceName}`,
128
+ distDir: params.distDir || 'build',
129
+ }),
130
+ });
131
+ new aws_cdk_lib_1.CfnOutput(this, 'Domain', { value: params.explicitDomains ? params.explicitDomains[0] : this.domain });
132
+ new aws_cdk_lib_1.CfnOutput(this, 'BaseUrl', {
133
+ value: params.explicitDomains ? `https://${params.explicitDomains[0]}/` : this.baseUrl,
134
+ });
135
+ }
136
+ }
137
+ exports.SpaPrefab = SpaPrefab;
138
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-spa/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import * as awsCloudfront from 'aws-cdk-lib/aws-cloudfront';
2
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
3
+ import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
4
+ import { Construct } from 'constructs';
5
+
6
+ import { ServiceStack } from '../../../common';
7
+
8
+ import { WafPrefab } from '../../../prefab/networking/waf';
9
+ import { PrivateBucketPrefab } from '../../../prefab/storage/bucket/private-bucket';
10
+
11
+ export type SsrPrefabParams = {
12
+ subDomain: string;
13
+ certificate: ICertificate;
14
+ assetMaxAge?: string;
15
+ indexMaxAge?: string;
16
+ baseDir?: string;
17
+ distDir?: string;
18
+ calculatedSecrets?: Record<string, string>;
19
+ waf?: WafPrefab;
20
+ skipRecord?: true;
21
+ wwwRedirectEnabled?: true;
22
+ filesPathAssets: string;
23
+ filesPathNextFunction: string;
24
+ filesPathImageFunction: string;
25
+ };
26
+ export declare class SsrPrefab extends Construct {
27
+ readonly domain: string;
28
+ readonly baseUrl: string;
29
+ readonly distribution: awsCloudfront.Distribution;
30
+ readonly bucket: PrivateBucketPrefab;
31
+ readonly serverFunction: lambda.Function;
32
+ readonly imageFunction: lambda.Function;
33
+ constructor(service: ServiceStack, params: SsrPrefabParams);
34
+ protected createCloudFrontServerCachePolicy(): awsCloudfront.CachePolicy;
35
+ }
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-ssr/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASlE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC,OAAO,EAAE,YAAY,EAAgF,MAAM,QAAQ,CAAC;AAEpH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,qBAAa,SAAU,SAAQ,SAAS;IACtC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;IACzD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAC5C,SAAgB,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;IAChD,SAAgB,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe;IAuN1D,SAAS,CAAC,iCAAiC,IAAI,aAAa,CAAC,WAAW;CAyBzE"}