@openstax/ts-utils 1.34.0 → 1.35.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 (507) hide show
  1. package/README.md +90 -62
  2. package/dist/cjs/assertions/index.d.ts +89 -0
  3. package/dist/cjs/assertions/index.js +157 -0
  4. package/dist/cjs/aws/ssmService.d.ts +5 -0
  5. package/dist/cjs/aws/ssmService.js +9 -0
  6. package/dist/cjs/config/awsParameterConfig.d.ts +10 -0
  7. package/dist/cjs/config/awsParameterConfig.js +26 -0
  8. package/dist/cjs/config/envConfig.d.ts +24 -0
  9. package/dist/cjs/config/envConfig.js +57 -0
  10. package/{packages/utils/src/config/index.ts → dist/cjs/config/index.d.ts} +13 -29
  11. package/dist/cjs/config/index.js +35 -0
  12. package/dist/cjs/config/lambdaParameterConfig.d.ts +12 -0
  13. package/dist/cjs/config/lambdaParameterConfig.js +45 -0
  14. package/dist/cjs/config/replaceConfig.d.ts +14 -0
  15. package/dist/cjs/config/replaceConfig.js +22 -0
  16. package/dist/cjs/config/resolveConfigValue.d.ts +5 -0
  17. package/dist/cjs/config/resolveConfigValue.js +12 -0
  18. package/dist/cjs/errors/index.d.ts +88 -0
  19. package/dist/cjs/errors/index.js +123 -0
  20. package/dist/cjs/fetch/fetchStatusRetry.d.ts +8 -0
  21. package/dist/cjs/fetch/fetchStatusRetry.js +27 -0
  22. package/dist/cjs/fetch/index.d.ts +64 -0
  23. package/dist/cjs/fetch/index.js +55 -0
  24. package/{packages/utils/src/guards/index.ts → dist/cjs/guards/index.d.ts} +7 -10
  25. package/dist/cjs/guards/index.js +44 -0
  26. package/dist/cjs/index.js +20 -0
  27. package/dist/cjs/middleware/apiErrorHandler.d.ts +24 -0
  28. package/dist/cjs/middleware/apiErrorHandler.js +42 -0
  29. package/dist/cjs/middleware/apiSlowResponseMiddleware.d.ts +23 -0
  30. package/dist/cjs/middleware/apiSlowResponseMiddleware.js +54 -0
  31. package/{packages/utils/src/middleware/index.ts → dist/cjs/middleware/index.d.ts} +5 -53
  32. package/dist/cjs/middleware/index.js +48 -0
  33. package/dist/cjs/middleware/lambdaCorsResponseMiddleware.d.ts +20 -0
  34. package/dist/cjs/middleware/lambdaCorsResponseMiddleware.js +44 -0
  35. package/dist/cjs/middleware/throwNotFoundMiddleware.d.ts +4 -0
  36. package/dist/cjs/middleware/throwNotFoundMiddleware.js +14 -0
  37. package/dist/cjs/misc/hashValue.d.ts +10 -0
  38. package/dist/cjs/misc/hashValue.js +17 -0
  39. package/dist/cjs/misc/helpers.d.ts +124 -0
  40. package/dist/cjs/misc/helpers.js +214 -0
  41. package/dist/cjs/misc/merge.d.ts +21 -0
  42. package/dist/cjs/misc/merge.js +45 -0
  43. package/dist/cjs/misc/partitionSequence.d.ts +35 -0
  44. package/dist/cjs/misc/partitionSequence.js +55 -0
  45. package/dist/cjs/pagination/index.d.ts +91 -0
  46. package/dist/cjs/pagination/index.js +83 -0
  47. package/dist/cjs/routing/helpers.d.ts +57 -0
  48. package/dist/cjs/routing/helpers.js +90 -0
  49. package/dist/cjs/routing/index.d.ts +290 -0
  50. package/dist/cjs/routing/index.js +295 -0
  51. package/dist/cjs/routing/validators/zod.d.ts +4 -0
  52. package/dist/cjs/routing/validators/zod.js +14 -0
  53. package/dist/cjs/services/accountsGateway/index.d.ts +92 -0
  54. package/dist/cjs/services/accountsGateway/index.js +138 -0
  55. package/dist/cjs/services/apiGateway/index.d.ts +68 -0
  56. package/dist/cjs/services/apiGateway/index.js +118 -0
  57. package/dist/cjs/services/authProvider/browser.d.ts +40 -0
  58. package/dist/cjs/services/authProvider/browser.js +155 -0
  59. package/dist/cjs/services/authProvider/decryption.d.ts +19 -0
  60. package/dist/cjs/services/authProvider/decryption.js +73 -0
  61. package/dist/cjs/services/authProvider/index.d.ts +63 -0
  62. package/dist/cjs/services/authProvider/index.js +34 -0
  63. package/dist/cjs/services/authProvider/subrequest.d.ts +13 -0
  64. package/dist/cjs/services/authProvider/subrequest.js +49 -0
  65. package/dist/cjs/services/authProvider/utils/decryptAndVerify.d.ts +28 -0
  66. package/dist/cjs/services/authProvider/utils/decryptAndVerify.js +91 -0
  67. package/dist/cjs/services/authProvider/utils/embeddedAuthProvider.d.ts +26 -0
  68. package/dist/cjs/services/authProvider/utils/embeddedAuthProvider.js +47 -0
  69. package/dist/cjs/services/authProvider/utils/userRoleValidator.d.ts +13 -0
  70. package/dist/cjs/services/authProvider/utils/userRoleValidator.js +37 -0
  71. package/dist/cjs/services/authProvider/utils/userSubrequest.d.ts +3 -0
  72. package/dist/cjs/services/authProvider/utils/userSubrequest.js +13 -0
  73. package/dist/cjs/services/documentStore/dynamoEncoding.d.ts +10 -0
  74. package/dist/cjs/services/documentStore/dynamoEncoding.js +52 -0
  75. package/dist/cjs/services/documentStore/fileSystemAssert.d.ts +1 -0
  76. package/dist/cjs/services/documentStore/fileSystemAssert.js +14 -0
  77. package/{packages/utils/src/services/documentStore/index.ts → dist/cjs/services/documentStore/index.d.ts} +8 -8
  78. package/dist/cjs/services/documentStore/index.js +2 -0
  79. package/dist/cjs/services/documentStore/unversioned/dynamodb.d.ts +31 -0
  80. package/dist/cjs/services/documentStore/unversioned/dynamodb.js +233 -0
  81. package/dist/cjs/services/documentStore/unversioned/file-system.d.ts +32 -0
  82. package/dist/cjs/services/documentStore/unversioned/file-system.js +214 -0
  83. package/{packages/utils/src/services/documentStore/unversioned/index.ts → dist/cjs/services/documentStore/unversioned/index.d.ts} +0 -2
  84. package/dist/cjs/services/documentStore/unversioned/index.js +2 -0
  85. package/dist/cjs/services/documentStore/versioned/dynamodb.d.ts +25 -0
  86. package/dist/cjs/services/documentStore/versioned/dynamodb.js +143 -0
  87. package/dist/cjs/services/documentStore/versioned/file-system.d.ts +25 -0
  88. package/dist/cjs/services/documentStore/versioned/file-system.js +73 -0
  89. package/dist/cjs/services/documentStore/versioned/index.d.ts +17 -0
  90. package/dist/cjs/services/documentStore/versioned/index.js +2 -0
  91. package/dist/cjs/services/exercisesGateway/index.d.ts +67 -0
  92. package/dist/cjs/services/exercisesGateway/index.js +107 -0
  93. package/dist/cjs/services/fileServer/index.d.ts +30 -0
  94. package/dist/cjs/services/fileServer/index.js +19 -0
  95. package/dist/cjs/services/fileServer/localFileServer.d.ts +13 -0
  96. package/dist/cjs/services/fileServer/localFileServer.js +132 -0
  97. package/dist/cjs/services/fileServer/s3FileServer.d.ts +14 -0
  98. package/dist/cjs/services/fileServer/s3FileServer.js +131 -0
  99. package/dist/cjs/services/launchParams/index.js +7 -0
  100. package/dist/cjs/services/launchParams/signer.d.ts +23 -0
  101. package/dist/cjs/services/launchParams/signer.js +58 -0
  102. package/dist/cjs/services/launchParams/verifier.d.ts +21 -0
  103. package/dist/cjs/services/launchParams/verifier.js +129 -0
  104. package/dist/cjs/services/logger/console.d.ts +4 -0
  105. package/dist/cjs/services/logger/console.js +12 -0
  106. package/{packages/utils/src/services/logger/index.ts → dist/cjs/services/logger/index.d.ts} +9 -23
  107. package/dist/cjs/services/logger/index.js +31 -0
  108. package/dist/cjs/services/lrsGateway/addStatementDefaultFields.d.ts +5 -0
  109. package/dist/cjs/services/lrsGateway/addStatementDefaultFields.js +21 -0
  110. package/dist/cjs/services/lrsGateway/attempt-utils.d.ts +72 -0
  111. package/dist/cjs/services/lrsGateway/attempt-utils.js +283 -0
  112. package/dist/cjs/services/lrsGateway/file-system.d.ts +15 -0
  113. package/dist/cjs/services/lrsGateway/file-system.js +150 -0
  114. package/dist/cjs/services/lrsGateway/index.d.ts +122 -0
  115. package/dist/cjs/services/lrsGateway/index.js +148 -0
  116. package/dist/cjs/services/lrsGateway/xapiUtils.d.ts +71 -0
  117. package/dist/cjs/services/lrsGateway/xapiUtils.js +145 -0
  118. package/dist/cjs/services/postgresConnection/index.d.ts +28 -0
  119. package/dist/cjs/services/postgresConnection/index.js +65 -0
  120. package/dist/cjs/services/searchProvider/index.d.ts +69 -0
  121. package/dist/cjs/services/searchProvider/index.js +2 -0
  122. package/dist/cjs/services/searchProvider/memorySearchTheBadWay.d.ts +20 -0
  123. package/dist/cjs/services/searchProvider/memorySearchTheBadWay.js +191 -0
  124. package/dist/cjs/services/searchProvider/openSearch.d.ts +28 -0
  125. package/dist/cjs/services/searchProvider/openSearch.js +162 -0
  126. package/dist/cjs/services/searchProvider/streamIndexer.d.ts +17 -0
  127. package/dist/cjs/services/searchProvider/streamIndexer.js +41 -0
  128. package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -0
  129. package/{packages/utils/src/types.ts → dist/cjs/types.d.ts} +6 -34
  130. package/dist/cjs/types.js +2 -0
  131. package/dist/esm/assertions/index.d.ts +89 -0
  132. package/{packages/utils/src/assertions/index.ts → dist/esm/assertions/index.js} +49 -64
  133. package/dist/esm/aws/ssmService.d.ts +5 -0
  134. package/dist/esm/aws/ssmService.js +6 -0
  135. package/dist/esm/config/awsParameterConfig.d.ts +10 -0
  136. package/dist/esm/config/awsParameterConfig.js +22 -0
  137. package/dist/esm/config/envConfig.d.ts +24 -0
  138. package/dist/esm/config/envConfig.js +53 -0
  139. package/dist/esm/config/index.d.ts +48 -0
  140. package/dist/esm/config/index.js +17 -0
  141. package/dist/esm/config/lambdaParameterConfig.d.ts +12 -0
  142. package/dist/esm/config/lambdaParameterConfig.js +38 -0
  143. package/dist/esm/config/replaceConfig.d.ts +14 -0
  144. package/{packages/utils/src/config/replaceConfig.ts → dist/esm/config/replaceConfig.js} +6 -16
  145. package/dist/esm/config/resolveConfigValue.d.ts +5 -0
  146. package/dist/esm/config/resolveConfigValue.js +8 -0
  147. package/dist/esm/errors/index.d.ts +88 -0
  148. package/{packages/utils/src/errors/index.ts → dist/esm/errors/index.js} +41 -57
  149. package/dist/esm/fetch/fetchStatusRetry.d.ts +8 -0
  150. package/dist/esm/fetch/fetchStatusRetry.js +23 -0
  151. package/dist/esm/fetch/index.d.ts +64 -0
  152. package/dist/esm/fetch/index.js +46 -0
  153. package/dist/esm/guards/index.d.ts +38 -0
  154. package/dist/esm/guards/index.js +36 -0
  155. package/dist/esm/index.d.ts +4 -0
  156. package/dist/esm/index.js +4 -0
  157. package/dist/esm/middleware/apiErrorHandler.d.ts +24 -0
  158. package/dist/esm/middleware/apiErrorHandler.js +38 -0
  159. package/dist/esm/middleware/apiSlowResponseMiddleware.d.ts +23 -0
  160. package/dist/esm/middleware/apiSlowResponseMiddleware.js +50 -0
  161. package/dist/esm/middleware/index.d.ts +47 -0
  162. package/dist/esm/middleware/index.js +44 -0
  163. package/dist/esm/middleware/lambdaCorsResponseMiddleware.d.ts +20 -0
  164. package/dist/esm/middleware/lambdaCorsResponseMiddleware.js +40 -0
  165. package/dist/esm/middleware/throwNotFoundMiddleware.d.ts +4 -0
  166. package/dist/esm/middleware/throwNotFoundMiddleware.js +10 -0
  167. package/dist/esm/misc/hashValue.d.ts +10 -0
  168. package/dist/esm/misc/hashValue.js +13 -0
  169. package/dist/esm/misc/helpers.d.ts +124 -0
  170. package/dist/esm/misc/helpers.js +199 -0
  171. package/dist/esm/misc/merge.d.ts +21 -0
  172. package/dist/esm/misc/merge.js +40 -0
  173. package/dist/esm/misc/partitionSequence.d.ts +35 -0
  174. package/{packages/utils/src/misc/partitionSequence.ts → dist/esm/misc/partitionSequence.js} +15 -23
  175. package/dist/esm/pagination/index.d.ts +91 -0
  176. package/dist/esm/pagination/index.js +77 -0
  177. package/dist/esm/routing/helpers.d.ts +57 -0
  178. package/{packages/utils/src/routing/helpers.ts → dist/esm/routing/helpers.js} +30 -42
  179. package/dist/esm/routing/index.d.ts +290 -0
  180. package/dist/esm/routing/index.js +246 -0
  181. package/dist/esm/routing/validators/zod.d.ts +4 -0
  182. package/dist/esm/routing/validators/zod.js +10 -0
  183. package/dist/esm/services/accountsGateway/index.d.ts +92 -0
  184. package/dist/esm/services/accountsGateway/index.js +131 -0
  185. package/dist/esm/services/apiGateway/index.d.ts +68 -0
  186. package/dist/esm/services/apiGateway/index.js +77 -0
  187. package/dist/esm/services/authProvider/browser.d.ts +40 -0
  188. package/dist/esm/services/authProvider/browser.js +151 -0
  189. package/dist/esm/services/authProvider/decryption.d.ts +19 -0
  190. package/dist/esm/services/authProvider/decryption.js +69 -0
  191. package/dist/esm/services/authProvider/index.d.ts +63 -0
  192. package/dist/esm/services/authProvider/index.js +26 -0
  193. package/dist/esm/services/authProvider/subrequest.d.ts +13 -0
  194. package/dist/esm/services/authProvider/subrequest.js +45 -0
  195. package/dist/esm/services/authProvider/utils/decryptAndVerify.d.ts +28 -0
  196. package/dist/esm/services/authProvider/utils/decryptAndVerify.js +85 -0
  197. package/dist/esm/services/authProvider/utils/embeddedAuthProvider.d.ts +26 -0
  198. package/dist/esm/services/authProvider/utils/embeddedAuthProvider.js +40 -0
  199. package/dist/esm/services/authProvider/utils/userRoleValidator.d.ts +13 -0
  200. package/dist/esm/services/authProvider/utils/userRoleValidator.js +33 -0
  201. package/dist/esm/services/authProvider/utils/userSubrequest.d.ts +3 -0
  202. package/dist/esm/services/authProvider/utils/userSubrequest.js +6 -0
  203. package/dist/esm/services/documentStore/dynamoEncoding.d.ts +10 -0
  204. package/dist/esm/services/documentStore/dynamoEncoding.js +45 -0
  205. package/dist/esm/services/documentStore/fileSystemAssert.d.ts +1 -0
  206. package/dist/esm/services/documentStore/fileSystemAssert.js +10 -0
  207. package/dist/esm/services/documentStore/index.d.ts +14 -0
  208. package/dist/esm/services/documentStore/index.js +1 -0
  209. package/dist/esm/services/documentStore/unversioned/dynamodb.d.ts +31 -0
  210. package/dist/esm/services/documentStore/unversioned/dynamodb.js +226 -0
  211. package/dist/esm/services/documentStore/unversioned/file-system.d.ts +32 -0
  212. package/dist/esm/services/documentStore/unversioned/file-system.js +174 -0
  213. package/dist/esm/services/documentStore/unversioned/index.d.ts +2 -0
  214. package/dist/esm/services/documentStore/unversioned/index.js +1 -0
  215. package/dist/esm/services/documentStore/versioned/dynamodb.d.ts +25 -0
  216. package/dist/esm/services/documentStore/versioned/dynamodb.js +139 -0
  217. package/dist/esm/services/documentStore/versioned/file-system.d.ts +25 -0
  218. package/dist/esm/services/documentStore/versioned/file-system.js +69 -0
  219. package/dist/esm/services/documentStore/versioned/index.d.ts +17 -0
  220. package/dist/esm/services/documentStore/versioned/index.js +1 -0
  221. package/dist/esm/services/exercisesGateway/index.d.ts +67 -0
  222. package/dist/esm/services/exercisesGateway/index.js +70 -0
  223. package/dist/esm/services/fileServer/index.d.ts +30 -0
  224. package/dist/esm/services/fileServer/index.js +13 -0
  225. package/dist/esm/services/fileServer/localFileServer.d.ts +13 -0
  226. package/dist/esm/services/fileServer/localFileServer.js +125 -0
  227. package/dist/esm/services/fileServer/s3FileServer.d.ts +14 -0
  228. package/dist/esm/services/fileServer/s3FileServer.js +124 -0
  229. package/dist/esm/services/launchParams/index.d.ts +2 -0
  230. package/dist/esm/services/launchParams/index.js +2 -0
  231. package/dist/esm/services/launchParams/signer.d.ts +23 -0
  232. package/dist/esm/services/launchParams/signer.js +51 -0
  233. package/dist/esm/services/launchParams/verifier.d.ts +21 -0
  234. package/dist/esm/services/launchParams/verifier.js +92 -0
  235. package/dist/esm/services/logger/console.d.ts +4 -0
  236. package/{packages/utils/src/services/logger/console.ts → dist/esm/services/logger/console.js} +2 -5
  237. package/dist/esm/services/logger/index.d.ts +39 -0
  238. package/dist/esm/services/logger/index.js +27 -0
  239. package/dist/esm/services/lrsGateway/addStatementDefaultFields.d.ts +5 -0
  240. package/dist/esm/services/lrsGateway/addStatementDefaultFields.js +14 -0
  241. package/dist/esm/services/lrsGateway/attempt-utils.d.ts +72 -0
  242. package/dist/esm/services/lrsGateway/attempt-utils.js +261 -0
  243. package/dist/esm/services/lrsGateway/file-system.d.ts +15 -0
  244. package/dist/esm/services/lrsGateway/file-system.js +110 -0
  245. package/dist/esm/services/lrsGateway/index.d.ts +122 -0
  246. package/dist/esm/services/lrsGateway/index.js +111 -0
  247. package/dist/esm/services/lrsGateway/xapiUtils.d.ts +71 -0
  248. package/dist/esm/services/lrsGateway/xapiUtils.js +134 -0
  249. package/dist/esm/services/postgresConnection/index.d.ts +28 -0
  250. package/dist/esm/services/postgresConnection/index.js +58 -0
  251. package/dist/esm/services/searchProvider/index.d.ts +69 -0
  252. package/dist/esm/services/searchProvider/index.js +1 -0
  253. package/dist/esm/services/searchProvider/memorySearchTheBadWay.d.ts +20 -0
  254. package/dist/esm/services/searchProvider/memorySearchTheBadWay.js +187 -0
  255. package/dist/esm/services/searchProvider/openSearch.d.ts +28 -0
  256. package/dist/esm/services/searchProvider/openSearch.js +158 -0
  257. package/dist/esm/services/searchProvider/streamIndexer.d.ts +17 -0
  258. package/dist/esm/services/searchProvider/streamIndexer.js +37 -0
  259. package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -0
  260. package/dist/esm/types.d.ts +31 -0
  261. package/dist/esm/types.js +1 -0
  262. package/package.json +234 -12
  263. package/.cfnlintrc +0 -2
  264. package/.github/CODEOWNERS +0 -1
  265. package/.github/workflows/ci.yml +0 -36
  266. package/.github/workflows/lint.yml +0 -55
  267. package/.nvmrc +0 -1
  268. package/.syncignore +0 -4
  269. package/.syncpackrc +0 -18
  270. package/CONTRIBUTING.md +0 -96
  271. package/LICENSE +0 -661
  272. package/Procfile +0 -1
  273. package/app.json +0 -23
  274. package/cspell.json +0 -32
  275. package/deploy/constants.env +0 -21
  276. package/deploy/deploy.bash +0 -157
  277. package/deploy/deployment-alt-region.cfn.yml +0 -70
  278. package/deploy/deployment.cfn.yml +0 -650
  279. package/deploy/destroy-deployment.bash +0 -23
  280. package/deploy/shared.cfn.yml +0 -94
  281. package/docs/lambda-build.md +0 -35
  282. package/packages/frontend/README.md +0 -46
  283. package/packages/frontend/package.json +0 -101
  284. package/packages/frontend/public/favicon.ico +0 -0
  285. package/packages/frontend/public/index.html +0 -107
  286. package/packages/frontend/public/maintenance.html +0 -59
  287. package/packages/frontend/public/manifest.json +0 -15
  288. package/packages/frontend/public/robots.txt +0 -3
  289. package/packages/frontend/script/make-certificate.bash +0 -49
  290. package/packages/frontend/script/server/cli.js +0 -11
  291. package/packages/frontend/script/server/index.js +0 -47
  292. package/packages/frontend/script/start.bash +0 -22
  293. package/packages/frontend/script/trust-localhost.bash +0 -7
  294. package/packages/frontend/src/auth/authProvider.ts +0 -10
  295. package/packages/frontend/src/auth/useAuth.ts +0 -33
  296. package/packages/frontend/src/components/Pagination.tsx +0 -26
  297. package/packages/frontend/src/configProvider/index.ts +0 -53
  298. package/packages/frontend/src/configProvider/use.ts +0 -41
  299. package/packages/frontend/src/core/context/services.spec.tsx +0 -39
  300. package/packages/frontend/src/core/context/services.tsx +0 -16
  301. package/packages/frontend/src/core/index.spec.ts +0 -7
  302. package/packages/frontend/src/core/index.ts +0 -20
  303. package/packages/frontend/src/core/services.tsx +0 -14
  304. package/packages/frontend/src/core/types.ts +0 -3
  305. package/packages/frontend/src/example/api.ts +0 -28
  306. package/packages/frontend/src/example/components/Layout.tsx +0 -23
  307. package/packages/frontend/src/example/screens/Home.spec.tsx +0 -68
  308. package/packages/frontend/src/example/screens/Home.tsx +0 -78
  309. package/packages/frontend/src/example/screens/ThingList.spec.tsx +0 -60
  310. package/packages/frontend/src/example/screens/ThingList.tsx +0 -75
  311. package/packages/frontend/src/example/screens/ThingView.spec.tsx +0 -71
  312. package/packages/frontend/src/example/screens/ThingView.tsx +0 -47
  313. package/packages/frontend/src/example/screens/index.ts +0 -9
  314. package/packages/frontend/src/index.css +0 -159
  315. package/packages/frontend/src/index.tsx +0 -67
  316. package/packages/frontend/src/react-app-env.d.ts +0 -1
  317. package/packages/frontend/src/routing/components/RouteLink.spec.tsx +0 -55
  318. package/packages/frontend/src/routing/components/RouteLink.tsx +0 -35
  319. package/packages/frontend/src/routing/middleware.ts +0 -6
  320. package/packages/frontend/src/routing/useQuery.ts +0 -14
  321. package/packages/frontend/src/setupProxy.js +0 -19
  322. package/packages/frontend/src/setupTests.ts +0 -9
  323. package/packages/frontend/src/tests/testServices.tsx +0 -23
  324. package/packages/frontend/tsconfig.json +0 -27
  325. package/packages/lambda/.eslintrc.js +0 -64
  326. package/packages/lambda/jest-global-setup.js +0 -3
  327. package/packages/lambda/jest-setup-after-env.js +0 -1
  328. package/packages/lambda/jest.config.js +0 -31
  329. package/packages/lambda/jest.resolver.js +0 -17
  330. package/packages/lambda/package.json +0 -68
  331. package/packages/lambda/script/build.bash +0 -19
  332. package/packages/lambda/script/bundle-functions.bash +0 -10
  333. package/packages/lambda/script/lambdaLocalProxy.js +0 -16
  334. package/packages/lambda/script/lambdaLocalProxy.spec.ts +0 -147
  335. package/packages/lambda/script/utils/getRouteData.ts +0 -7
  336. package/packages/lambda/script/utils/routeDataLoader.js +0 -8
  337. package/packages/lambda/script/utils/routeDataLoader.spec.ts +0 -8
  338. package/packages/lambda/src/functions/serviceApi/core/index.ts +0 -7
  339. package/packages/lambda/src/functions/serviceApi/core/request.spec.ts +0 -38
  340. package/packages/lambda/src/functions/serviceApi/core/request.ts +0 -42
  341. package/packages/lambda/src/functions/serviceApi/core/routes.spec.ts +0 -7
  342. package/packages/lambda/src/functions/serviceApi/core/routes.ts +0 -10
  343. package/packages/lambda/src/functions/serviceApi/core/services.ts +0 -9
  344. package/packages/lambda/src/functions/serviceApi/core/types.ts +0 -13
  345. package/packages/lambda/src/functions/serviceApi/entry/lambda/https-xray.ts +0 -4
  346. package/packages/lambda/src/functions/serviceApi/entry/lambda/index.spec.ts +0 -48
  347. package/packages/lambda/src/functions/serviceApi/entry/lambda/index.ts +0 -58
  348. package/packages/lambda/src/functions/serviceApi/entry/lambda/services.ts +0 -36
  349. package/packages/lambda/src/functions/serviceApi/entry/local.ts +0 -71
  350. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentSearchMiddleware.spec.ts +0 -16
  351. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentSearchMiddleware.ts +0 -41
  352. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentStoreMiddleware.spec.ts +0 -78
  353. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentStoreMiddleware.ts +0 -70
  354. package/packages/lambda/src/functions/serviceApi/versions/v0/example/routes.spec.ts +0 -306
  355. package/packages/lambda/src/functions/serviceApi/versions/v0/example/routes.ts +0 -176
  356. package/packages/lambda/src/functions/serviceApi/versions/v0/index.spec.ts +0 -263
  357. package/packages/lambda/src/functions/serviceApi/versions/v0/index.ts +0 -134
  358. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/authMiddleware.spec.ts +0 -23
  359. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/authMiddleware.ts +0 -32
  360. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/configMiddleware.spec.ts +0 -10
  361. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/configMiddleware.ts +0 -7
  362. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/frontendFileServerMiddleware.spec.ts +0 -13
  363. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/frontendFileServerMiddleware.ts +0 -23
  364. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/paginationMiddleware.spec.ts +0 -9
  365. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/paginationMiddleware.ts +0 -9
  366. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/searchMiddleware.spec.ts +0 -12
  367. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/searchMiddleware.ts +0 -21
  368. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/userRoleValidatorMiddleware.spec.ts +0 -21
  369. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/userRoleValidatorMiddleware.ts +0 -18
  370. package/packages/lambda/tsconfig.json +0 -30
  371. package/packages/lambda/webpack.config.js +0 -97
  372. package/packages/utils/.eslintrc.js +0 -64
  373. package/packages/utils/README.md +0 -118
  374. package/packages/utils/jest-global-setup.js +0 -3
  375. package/packages/utils/jest.config.js +0 -25
  376. package/packages/utils/jest.resolver.js +0 -17
  377. package/packages/utils/package.json +0 -238
  378. package/packages/utils/src/assertions/index.spec.ts +0 -126
  379. package/packages/utils/src/aws/ssmService.ts +0 -7
  380. package/packages/utils/src/config/awsParameterConfig.ts +0 -24
  381. package/packages/utils/src/config/envConfig.ts +0 -58
  382. package/packages/utils/src/config/index.spec.ts +0 -165
  383. package/packages/utils/src/config/lambdaParameterConfig.ts +0 -49
  384. package/packages/utils/src/config/resolveConfigValue.ts +0 -10
  385. package/packages/utils/src/errors/index.spec.ts +0 -35
  386. package/packages/utils/src/fetch/fetchStatusRetry.spec.ts +0 -197
  387. package/packages/utils/src/fetch/fetchStatusRetry.ts +0 -33
  388. package/packages/utils/src/fetch/index.spec.ts +0 -34
  389. package/packages/utils/src/fetch/index.ts +0 -87
  390. package/packages/utils/src/guards/index.spec.ts +0 -58
  391. package/packages/utils/src/index.spec.ts +0 -471
  392. package/packages/utils/src/middleware/apiErrorHandler.spec.ts +0 -65
  393. package/packages/utils/src/middleware/apiErrorHandler.ts +0 -67
  394. package/packages/utils/src/middleware/apiSlowResponseMiddleware.spec.ts +0 -184
  395. package/packages/utils/src/middleware/apiSlowResponseMiddleware.ts +0 -71
  396. package/packages/utils/src/middleware/index.spec.ts +0 -99
  397. package/packages/utils/src/middleware/lambdaCorsResponseMiddleware.spec.ts +0 -103
  398. package/packages/utils/src/middleware/lambdaCorsResponseMiddleware.ts +0 -52
  399. package/packages/utils/src/middleware/throwNotFoundMiddleware.spec.ts +0 -20
  400. package/packages/utils/src/middleware/throwNotFoundMiddleware.ts +0 -11
  401. package/packages/utils/src/misc/hashValue.ts +0 -18
  402. package/packages/utils/src/misc/helpers.ts +0 -259
  403. package/packages/utils/src/misc/merge.ts +0 -48
  404. package/packages/utils/src/pagination/index.spec.ts +0 -150
  405. package/packages/utils/src/pagination/index.ts +0 -117
  406. package/packages/utils/src/routing/index.spec.ts +0 -553
  407. package/packages/utils/src/routing/index.ts +0 -424
  408. package/packages/utils/src/routing/validators/zod.spec.ts +0 -16
  409. package/packages/utils/src/routing/validators/zod.ts +0 -14
  410. package/packages/utils/src/services/accountsGateway/README.md +0 -3
  411. package/packages/utils/src/services/accountsGateway/index.spec.ts +0 -518
  412. package/packages/utils/src/services/accountsGateway/index.ts +0 -251
  413. package/packages/utils/src/services/apiGateway/README.md +0 -93
  414. package/packages/utils/src/services/apiGateway/index.spec.ts +0 -254
  415. package/packages/utils/src/services/apiGateway/index.ts +0 -189
  416. package/packages/utils/src/services/authProvider/README.md +0 -21
  417. package/packages/utils/src/services/authProvider/browser.spec.ts +0 -391
  418. package/packages/utils/src/services/authProvider/browser.ts +0 -209
  419. package/packages/utils/src/services/authProvider/decryption.spec.ts +0 -337
  420. package/packages/utils/src/services/authProvider/decryption.ts +0 -98
  421. package/packages/utils/src/services/authProvider/index.ts +0 -93
  422. package/packages/utils/src/services/authProvider/stub.spec.ts +0 -29
  423. package/packages/utils/src/services/authProvider/subrequest.spec.ts +0 -105
  424. package/packages/utils/src/services/authProvider/subrequest.ts +0 -68
  425. package/packages/utils/src/services/authProvider/utils/decryptAndVerify.spec.ts +0 -128
  426. package/packages/utils/src/services/authProvider/utils/decryptAndVerify.ts +0 -106
  427. package/packages/utils/src/services/authProvider/utils/embeddedAuthProvider.spec.ts +0 -26
  428. package/packages/utils/src/services/authProvider/utils/embeddedAuthProvider.ts +0 -57
  429. package/packages/utils/src/services/authProvider/utils/userRoleValidator.spec.ts +0 -135
  430. package/packages/utils/src/services/authProvider/utils/userRoleValidator.ts +0 -49
  431. package/packages/utils/src/services/authProvider/utils/userSubrequest.spec.ts +0 -26
  432. package/packages/utils/src/services/authProvider/utils/userSubrequest.ts +0 -10
  433. package/packages/utils/src/services/documentStore/dynamoEncoding.ts +0 -57
  434. package/packages/utils/src/services/documentStore/fileSystemAssert.spec.ts +0 -43
  435. package/packages/utils/src/services/documentStore/fileSystemAssert.ts +0 -10
  436. package/packages/utils/src/services/documentStore/unversioned/README.md +0 -13
  437. package/packages/utils/src/services/documentStore/unversioned/dynamodb.spec.ts +0 -859
  438. package/packages/utils/src/services/documentStore/unversioned/dynamodb.ts +0 -243
  439. package/packages/utils/src/services/documentStore/unversioned/file-system.spec.ts +0 -629
  440. package/packages/utils/src/services/documentStore/unversioned/file-system.ts +0 -194
  441. package/packages/utils/src/services/documentStore/versioned/README.md +0 -13
  442. package/packages/utils/src/services/documentStore/versioned/dynamodb.spec.ts +0 -376
  443. package/packages/utils/src/services/documentStore/versioned/dynamodb.ts +0 -167
  444. package/packages/utils/src/services/documentStore/versioned/file-system.spec.ts +0 -262
  445. package/packages/utils/src/services/documentStore/versioned/file-system.ts +0 -90
  446. package/packages/utils/src/services/documentStore/versioned/index.ts +0 -25
  447. package/packages/utils/src/services/exercisesGateway/README.md +0 -5
  448. package/packages/utils/src/services/exercisesGateway/index.spec.ts +0 -326
  449. package/packages/utils/src/services/exercisesGateway/index.ts +0 -163
  450. package/packages/utils/src/services/fileServer/index.spec.ts +0 -88
  451. package/packages/utils/src/services/fileServer/index.ts +0 -43
  452. package/packages/utils/src/services/fileServer/localFileServer.spec.ts +0 -182
  453. package/packages/utils/src/services/fileServer/localFileServer.ts +0 -159
  454. package/packages/utils/src/services/fileServer/s3FileServer.spec.ts +0 -266
  455. package/packages/utils/src/services/fileServer/s3FileServer.ts +0 -155
  456. package/packages/utils/src/services/launchParams/index.spec.ts +0 -366
  457. package/packages/utils/src/services/launchParams/signer.ts +0 -73
  458. package/packages/utils/src/services/launchParams/verifier.ts +0 -120
  459. package/packages/utils/src/services/logger/console.spec.ts +0 -29
  460. package/packages/utils/src/services/logger/index.spec.ts +0 -65
  461. package/packages/utils/src/services/lrsGateway/README.md +0 -5
  462. package/packages/utils/src/services/lrsGateway/addStatementDefaultFields.ts +0 -22
  463. package/packages/utils/src/services/lrsGateway/attempt-utils.spec.ts +0 -847
  464. package/packages/utils/src/services/lrsGateway/attempt-utils.ts +0 -358
  465. package/packages/utils/src/services/lrsGateway/file-system.spec.ts +0 -363
  466. package/packages/utils/src/services/lrsGateway/file-system.ts +0 -165
  467. package/packages/utils/src/services/lrsGateway/index.spec.ts +0 -194
  468. package/packages/utils/src/services/lrsGateway/index.ts +0 -257
  469. package/packages/utils/src/services/lrsGateway/xapiUtils.spec.ts +0 -887
  470. package/packages/utils/src/services/lrsGateway/xapiUtils.ts +0 -262
  471. package/packages/utils/src/services/postgresConnection/index.spec.ts +0 -170
  472. package/packages/utils/src/services/postgresConnection/index.ts +0 -84
  473. package/packages/utils/src/services/searchProvider/README.md +0 -3
  474. package/packages/utils/src/services/searchProvider/index.ts +0 -59
  475. package/packages/utils/src/services/searchProvider/memorySearchTheBadWay.spec.ts +0 -526
  476. package/packages/utils/src/services/searchProvider/memorySearchTheBadWay.ts +0 -223
  477. package/packages/utils/src/services/searchProvider/openSearch.spec.ts +0 -926
  478. package/packages/utils/src/services/searchProvider/openSearch.ts +0 -195
  479. package/packages/utils/tsconfig.json +0 -31
  480. package/packages/utils/tsconfig.without-specs.cjs.json +0 -7
  481. package/packages/utils/tsconfig.without-specs.esm.json +0 -7
  482. package/packages/utils/tsconfig.without-specs.json +0 -6
  483. package/scripts/build.bash +0 -24
  484. package/scripts/ci.bash +0 -10
  485. package/scripts/start.bash +0 -29
  486. /package/{packages/utils/src/index.ts → dist/cjs/index.d.ts} +0 -0
  487. /package/{packages/utils/src/services/launchParams/index.ts → dist/cjs/services/launchParams/index.d.ts} +0 -0
  488. /package/{packages/utils/script → script}/bin/copy-from-template.bash +0 -0
  489. /package/{packages/utils/script → script}/bin/delete-stack.bash +0 -0
  490. /package/{packages/utils/script → script}/bin/deploy.bash +0 -0
  491. /package/{packages/utils/script → script}/bin/destroy-deployment.bash +0 -0
  492. /package/{packages/utils/script → script}/bin/empty-bucket.bash +0 -0
  493. /package/{packages/utils/script → script}/bin/get-arg.bash +0 -0
  494. /package/{packages/utils/script → script}/bin/get-deployed-environments.bash +0 -0
  495. /package/{packages/utils/script → script}/bin/get-env-param.bash +0 -0
  496. /package/{packages/utils/script → script}/bin/get-kwarg.bash +0 -0
  497. /package/{packages/utils/script → script}/bin/get-stack-param.bash +0 -0
  498. /package/{packages/utils/script → script}/bin/has-flag.bash +0 -0
  499. /package/{packages/utils/script → script}/bin/init-constants-script.bash +0 -0
  500. /package/{packages/utils/script → script}/bin/init-params-script.bash +0 -0
  501. /package/{packages/utils/script → script}/bin/stack-exists.bash +0 -0
  502. /package/{packages/utils/script → script}/bin/update-utils.bash +0 -0
  503. /package/{packages/utils/script → script}/bin/upload-pager-duty-endpoints.bash +0 -0
  504. /package/{packages/utils/script → script}/bin/upload-params.bash +0 -0
  505. /package/{packages/utils/script → script}/bin/which.bash +0 -0
  506. /package/{packages/utils/script → script}/bin-entry.bash +0 -0
  507. /package/{packages/utils/script → script}/build.bash +0 -0
@@ -1,650 +0,0 @@
1
- # spell-checker: ignore Keepalive FDTNDATAQYW
2
- Metadata:
3
- cfn-lint:
4
- config:
5
- ignore_checks:
6
- - W6001
7
- - E3031 # we do this on purpose
8
- - E3033 # we do this on purpose
9
-
10
- Parameters:
11
- BucketPrefix:
12
- Description: A prefix to prevent collisions between buckets in different accounts, e.g. sandbox-
13
- Type: String
14
-
15
- ApiCodeKey:
16
- Description: S3 key of zip with api function code
17
- Type: String
18
-
19
- Application:
20
- Description: This application's lower-case name, e.g. "project-template"
21
- Type: String
22
-
23
- CodeBucket:
24
- Description: S3 bucket with lambda function code
25
- Type: String
26
-
27
- EnvName:
28
- Description: Which environment this is, e.g. "dev"
29
- Type: String
30
-
31
- ReplicaBucketWebsiteURL:
32
- Type: String
33
-
34
- CookieName:
35
- Description: Name of the cookie used for authentication
36
- Type: String
37
-
38
- AccountsBase:
39
- Description: Base URL for the accounts service
40
- Type: String
41
-
42
- SignaturePublicKey:
43
- Description: Public key used for signature verification
44
- Type: String
45
-
46
- Conditions:
47
- # Lambda@Edge functions need to be created in us-east-1; there might be a way
48
- # to set up other resources in other regions using StackSets, but for now force
49
- # the region with this condition, in case one day we add Lambda@Edge
50
- WrongRegion: !Not [!Equals [!Ref 'AWS::Region', us-east-1]]
51
-
52
- IsProduction: !Or
53
- - !Equals [!Ref EnvName, prod]
54
- - !Equals [!Ref EnvName, production]
55
-
56
- IsProductionOrStaging: !Or
57
- - Condition: IsProduction
58
- - !Equals [!Ref EnvName, staging]
59
-
60
- Resources:
61
- # ==============
62
- # Region validation
63
- # ==============
64
- YouAreInTheWrongRegion:
65
- Type: "AWS::SSM::Parameter"
66
- Condition: WrongRegion
67
- Properties:
68
- Name: '' # Leave name empty to force a fail
69
- Type: String
70
- Value: ''
71
- # ==============
72
- # route53
73
- # ==============
74
- Dns:
75
- Type: AWS::Route53::RecordSetGroup
76
- Properties:
77
- HostedZoneName: !Sub
78
- - ${zoneName}.
79
- - zoneName:
80
- Fn::ImportValue: !Sub subdomain-${Application}-hosted-zone-name
81
- RecordSets:
82
- - Name: !Sub
83
- - ${subDomain}${baseDomain}
84
- - subDomain: !If [IsProduction, '', !Sub '${EnvName}.']
85
- baseDomain:
86
- Fn::ImportValue: !Sub subdomain-${Application}-hosted-zone-name
87
- Type: A
88
- AliasTarget:
89
- HostedZoneId: Z2FDTNDATAQYW2 # Indicates CloudFront
90
- DNSName: !GetAtt Distribution.DomainName
91
- # ==============
92
- # dynamo table
93
- # ==============
94
- ExampleTable:
95
- Type: AWS::DynamoDB::Table
96
- Properties:
97
- AttributeDefinitions:
98
- -
99
- AttributeName: id
100
- AttributeType: S
101
- -
102
- AttributeName: timestamp
103
- AttributeType: N
104
- BillingMode: PAY_PER_REQUEST
105
- DeletionProtectionEnabled: !If [IsProductionOrStaging, true, false]
106
- KeySchema:
107
- -
108
- AttributeName: id
109
- KeyType: HASH
110
- -
111
- AttributeName: timestamp
112
- KeyType: RANGE
113
- PointInTimeRecoverySpecification:
114
- PointInTimeRecoveryEnabled: !If [IsProductionOrStaging, true, false]
115
-
116
- # ==============
117
- # Lambda stuff
118
- # ==============
119
-
120
- apiLambdaFunction:
121
- Type: AWS::Lambda::Function
122
- Properties:
123
- Code:
124
- S3Bucket: !Ref CodeBucket
125
- S3Key: !Ref ApiCodeKey
126
- FunctionName: !Sub ${AWS::StackName}-api-lambda # this must be consistent with log group name
127
- Handler: index.handler
128
- Layers:
129
- - arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:4
130
- MemorySize: 512
131
- Timeout: 30 # logging stacktraces is surprisingly heavy
132
- Role: !GetAtt lambdaIAMRole.Arn
133
- Runtime: nodejs22.x
134
- Environment:
135
- Variables:
136
- API_HOST: !Sub
137
- - ${subDomain}${baseDomain}
138
- - subDomain: !If [IsProduction, '', !Sub '${EnvName}.']
139
- baseDomain:
140
- Fn::ImportValue: !Sub subdomain-${Application}-hosted-zone-name
141
- UI_HOST: !Sub
142
- - ${subDomain}${baseDomain}
143
- - subDomain: !If [IsProduction, '', !Sub '${EnvName}.']
144
- baseDomain:
145
- Fn::ImportValue: !Sub subdomain-${Application}-hosted-zone-name
146
- ENV_NAME: !Ref EnvName
147
- FRONTEND_BUILD_BUCKET: !Ref Bucket
148
- EXAMPLE_TABLE_NAME: !Ref ExampleTable
149
- COOKIE_NAME: !Ref CookieName
150
- ACCOUNTS_BASE: !Ref AccountsBase
151
- SIGNATURE_PUBLIC_KEY: !Ref SignaturePublicKey
152
-
153
- apiLambdaUrl:
154
- Type: AWS::Lambda::Url
155
- Properties:
156
- AuthType: NONE
157
- TargetFunctionArn: !GetAtt apiLambdaFunction.Arn
158
-
159
- apiLambdaInvoke:
160
- Type: AWS::Lambda::Permission
161
- Properties:
162
- Action: lambda:InvokeFunctionUrl
163
- FunctionName: !GetAtt apiLambdaFunction.Arn
164
- FunctionUrlAuthType: NONE
165
- Principal: '*'
166
-
167
- lambdaIAMRole:
168
- Type: AWS::IAM::Role
169
- Properties:
170
- AssumeRolePolicyDocument:
171
- Version: 2012-10-17
172
- Statement:
173
- - Action:
174
- - sts:AssumeRole
175
- Effect: Allow
176
- Principal:
177
- Service:
178
- - lambda.amazonaws.com
179
- Policies:
180
- - PolicyName: dynamo-access
181
- PolicyDocument:
182
- Statement:
183
- - Effect: Allow
184
- Action:
185
- - dynamodb:Batch*
186
- - dynamodb:Describe*
187
- - dynamodb:Get*
188
- - dynamodb:Put*
189
- - dynamodb:Query
190
- - dynamodb:Scan
191
- - dynamodb:UpdateItem
192
- - dynamodb:DeleteItem
193
- Resource: !GetAtt ExampleTable.Arn
194
- - PolicyName: logs
195
- PolicyDocument:
196
- Statement:
197
- - Effect: Allow
198
- Action:
199
- - logs:CreateLogGroup
200
- - logs:CreateLogStream
201
- - logs:PutLogEvents
202
- Resource:
203
- - !GetAtt lambdaLogGroup.Arn
204
- - !Select [0, !Split [':*', !GetAtt lambdaLogGroup.Arn ]]
205
- - PolicyName: params
206
- PolicyDocument:
207
- Statement:
208
- - Effect: Allow
209
- Action: ssm:GetParameter
210
- Resource: !Sub >-
211
- arn:aws:ssm:${AWS::Region}:${AWS::AccountId
212
- }:parameter/${Application}/${EnvName}/api/*
213
- - PolicyName: s3
214
- PolicyDocument:
215
- Statement:
216
- - Effect: Allow
217
- Action: s3:ListBucket
218
- Resource: !GetAtt Bucket.Arn
219
- - Effect: Allow
220
- Action: s3:GetObject
221
- Resource: !Sub ${Bucket.Arn}/*
222
- - PolicyName: xray
223
- PolicyDocument:
224
- Statement:
225
- - Effect: Allow
226
- Action:
227
- - xray:PutTelemetryRecords
228
- - xray:PutTraceSegments
229
- Resource: '*'
230
-
231
- lambdaLogGroup:
232
- Type: AWS::Logs::LogGroup
233
- Properties:
234
- LogGroupName: !Sub /aws/lambda/${AWS::StackName}-api-lambda # this must be consistent with lambda name
235
- RetentionInDays: 14
236
-
237
- RequestTimeoutMetric:
238
- Type: AWS::Logs::MetricFilter
239
- Properties:
240
- LogGroupName: !Ref lambdaLogGroup
241
- FilterPattern: "Task timed out after"
242
- MetricTransformations:
243
- - MetricValue: 1
244
- DefaultValue: 0 # idk if this is doing anything, it doesn't seem to add 0s if there are no log records for the period
245
- MetricNamespace: !Sub ${Application}/${AWS::StackName}
246
- MetricName: Request Timeouts
247
-
248
- RequestTimeoutAlarm:
249
- Type: AWS::CloudWatch::Alarm
250
- Properties:
251
- AlarmName: !Sub ${Application}/${AWS::StackName}-request-timeout
252
- AlarmActions:
253
- - Fn::ImportValue: !Sub
254
- - ${Application}-shared-sns-${Type}-topic-arn
255
- - Type: !If
256
- - IsProduction
257
- - anytime
258
- - workday
259
- OKActions:
260
- - Fn::ImportValue: !Sub
261
- - ${Application}-shared-sns-${Type}-topic-arn
262
- - Type: !If
263
- - IsProduction
264
- - anytime
265
- - workday
266
- MetricName: Request Timeouts
267
- Namespace: !Sub ${Application}/${AWS::StackName}
268
- ComparisonOperator: GreaterThanOrEqualToThreshold
269
- EvaluationPeriods: '1'
270
- Period: '60'
271
- Statistic: Sum
272
- Threshold: '1'
273
- TreatMissingData: notBreaching # if you set this to `breaching`, the alarm goes off if there is no api traffic
274
-
275
- ErrorMetric:
276
- Type: AWS::Logs::MetricFilter
277
- Properties:
278
- LogGroupName: !Ref lambdaLogGroup
279
- FilterPattern: '{ $.eventType = "ERROR" }'
280
- MetricTransformations:
281
- - MetricValue: 1
282
- DefaultValue: 0 # idk if this is doing anything, it doesn't seem to add 0s if there are no log records for the period
283
- MetricNamespace: !Sub ${Application}/${AWS::StackName}
284
- MetricName: Errors
285
-
286
- ErrorAlarm:
287
- Type: AWS::CloudWatch::Alarm
288
- Properties:
289
- AlarmName: !Sub ${Application}/${AWS::StackName}-error
290
- AlarmActions:
291
- - Fn::ImportValue: !Sub
292
- - ${Application}-shared-sns-${Type}-topic-arn
293
- - Type: !If
294
- - IsProduction
295
- - anytime
296
- - workday
297
- OKActions:
298
- - Fn::ImportValue: !Sub
299
- - ${Application}-shared-sns-${Type}-topic-arn
300
- - Type: !If
301
- - IsProduction
302
- - anytime
303
- - workday
304
- MetricName: Errors
305
- Namespace: !Sub ${Application}/${AWS::StackName}
306
- ComparisonOperator: GreaterThanOrEqualToThreshold
307
- EvaluationPeriods: '1'
308
- Period: '60'
309
- Statistic: Sum
310
- Threshold: '1'
311
- TreatMissingData: notBreaching # if you set this to `breaching`, the alarm goes off if there is no api traffic
312
-
313
- # ==============
314
- # static frontend S3 / Cloudfront
315
- # ==============
316
- ReplicationRole:
317
- Type: AWS::IAM::Role
318
- Properties:
319
- AssumeRolePolicyDocument:
320
- Statement:
321
- - Action: ['sts:AssumeRole']
322
- Effect: Allow
323
- Principal:
324
- Service: [s3.amazonaws.com]
325
-
326
- ReplicationPolicy:
327
- Type: AWS::IAM::Policy
328
- Properties:
329
- PolicyDocument:
330
- Statement:
331
- - Action:
332
- - s3:Get*
333
- - s3:ListBucket
334
- Resource:
335
- - !GetAtt Bucket.Arn
336
- - !Sub ${Bucket.Arn}/*
337
- Effect: 'Allow'
338
- - Action:
339
- - s3:ReplicateObject
340
- - s3:ReplicateDelete
341
- - s3:ReplicateTags
342
- - s3:GetObjectVersionTagging
343
- Effect: 'Allow'
344
- Resource: !Sub arn:aws:s3:::${BucketPrefix}${AWS::StackName}-ui-replica-bucket/*
345
- PolicyName: ReplicationPolicy
346
- Roles: [!Ref 'ReplicationRole']
347
-
348
- Bucket:
349
- Type: AWS::S3::Bucket
350
- DeletionPolicy: Delete
351
- Properties:
352
- BucketName: !Sub ${BucketPrefix}${AWS::StackName}-ui-primary-bucket
353
- ReplicationConfiguration:
354
- Role: !GetAtt [ReplicationRole, Arn]
355
- Rules:
356
- - Destination:
357
- Bucket: !Sub arn:aws:s3:::${BucketPrefix}${AWS::StackName}-ui-replica-bucket
358
- StorageClass: STANDARD
359
- Id: Backup
360
- Prefix: ''
361
- Status: Enabled
362
- VersioningConfiguration:
363
- Status: Enabled
364
- LifecycleConfiguration:
365
- Rules:
366
- - Id: MustHaveVersioningButDoNotWantOldVersions
367
- NoncurrentVersionExpirationInDays: 1
368
- Status: "Enabled"
369
- PublicAccessBlockConfiguration:
370
- BlockPublicPolicy: false
371
- WebsiteConfiguration:
372
- IndexDocument: "does-not-exist.html"
373
- OwnershipControls:
374
- Rules:
375
- - ObjectOwnership: BucketOwnerEnforced
376
-
377
- BucketPolicy:
378
- Type: AWS::S3::BucketPolicy
379
- Properties:
380
- PolicyDocument:
381
- Version: "2012-10-17"
382
- Statement:
383
- - Sid: PublicReadForGetBucketObjects
384
- Effect: Allow
385
- Principal: '*'
386
- Action: s3:GetObject
387
- Resource: !Sub ${Bucket.Arn}/*
388
- Bucket: !Ref Bucket
389
-
390
- LogsBucket:
391
- Type: AWS::S3::Bucket
392
- DeletionPolicy: Delete
393
- Properties:
394
- BucketName: !Sub ${BucketPrefix}${AWS::StackName}-logs
395
- OwnershipControls:
396
- Rules:
397
- - ObjectOwnership: BucketOwnerPreferred
398
-
399
- RewriteFunction:
400
- Type: AWS::CloudFront::Function
401
- Properties:
402
- AutoPublish: true
403
- FunctionCode: |
404
- function handler(event) {
405
- var request = event.request;
406
-
407
- request.uri = '/build/index.html';
408
-
409
- return request;
410
- }
411
- FunctionConfig:
412
- Comment: Rewrites all request paths to /build/index.html
413
- Runtime: cloudfront-js-1.0
414
- Name: !Sub ${AWS::StackName}-rewriteFunction
415
-
416
- Distribution:
417
- Type: AWS::CloudFront::Distribution
418
- Properties:
419
- DistributionConfig:
420
- HttpVersion: 'http2'
421
- Enabled: 'true'
422
- DefaultRootObject: /build/index.html
423
- Aliases:
424
- - !Sub
425
- - ${subDomain}${baseDomain}
426
- - subDomain: !If [IsProduction, '', !Sub '${EnvName}.']
427
- baseDomain:
428
- Fn::ImportValue: !Sub subdomain-${Application}-hosted-zone-name
429
-
430
- ViewerCertificate:
431
- AcmCertificateArn:
432
- Fn::ImportValue: !Sub subdomain-${Application}-ssl-cert-arn
433
- SslSupportMethod: sni-only
434
- MinimumProtocolVersion: TLSv1.2_2019
435
-
436
- Logging:
437
- IncludeCookies: true
438
- Bucket: !Sub '${LogsBucket}.s3.amazonaws.com'
439
- Prefix: cloudfront-access
440
-
441
- CacheBehaviors:
442
- - PathPattern: /api/*
443
- TargetOriginId: ApiOrigin
444
- AllowedMethods:
445
- - GET
446
- - HEAD
447
- - DELETE
448
- - POST
449
- - OPTIONS
450
- - PUT
451
- - PATCH
452
- Compress: 'true'
453
- DefaultTTL: 0
454
- MaxTTL: 0
455
- MinTTL: 0
456
- ForwardedValues:
457
- Headers:
458
- - Authorization
459
- - X-Request-ID
460
- - X-Launch-Token
461
- Cookies:
462
- Forward: all
463
- QueryString: 'true'
464
- ViewerProtocolPolicy: redirect-to-https
465
-
466
- - PathPattern: /build/index.html
467
- TargetOriginId: ApiOrigin
468
- AllowedMethods:
469
- - GET
470
- - HEAD
471
- - OPTIONS
472
- CachedMethods:
473
- - GET
474
- - HEAD
475
- - OPTIONS
476
- Compress: 'true'
477
- DefaultTTL: 31536000
478
- MaxTTL: 31536000
479
- MinTTL: 31536000
480
- ForwardedValues:
481
- Cookies:
482
- Forward: none
483
- QueryString: 'false'
484
- ViewerProtocolPolicy: redirect-to-https
485
-
486
- - PathPattern: /build/*
487
- TargetOriginId: StaticOrigin
488
- AllowedMethods:
489
- - GET
490
- - HEAD
491
- - OPTIONS
492
- CachedMethods:
493
- - GET
494
- - HEAD
495
- - OPTIONS
496
- Compress: 'true'
497
- DefaultTTL: 31536000
498
- MaxTTL: 31536000
499
- MinTTL: 31536000
500
- ForwardedValues:
501
- Cookies:
502
- Forward: none
503
- QueryString: 'false'
504
- ViewerProtocolPolicy: redirect-to-https
505
-
506
- - PathPattern: /favicon.*
507
- TargetOriginId: BuildOrigin
508
- AllowedMethods:
509
- - GET
510
- - HEAD
511
- - OPTIONS
512
- CachedMethods:
513
- - GET
514
- - HEAD
515
- - OPTIONS
516
- Compress: 'true'
517
- DefaultTTL: 31536000
518
- MaxTTL: 31536000
519
- MinTTL: 31536000
520
- ForwardedValues:
521
- Cookies:
522
- Forward: none
523
- QueryString: 'false'
524
- ViewerProtocolPolicy: redirect-to-https
525
-
526
- - PathPattern: /robots.txt
527
- TargetOriginId: BuildOrigin
528
- AllowedMethods:
529
- - GET
530
- - HEAD
531
- - OPTIONS
532
- CachedMethods:
533
- - GET
534
- - HEAD
535
- - OPTIONS
536
- Compress: 'true'
537
- DefaultTTL: 31536000
538
- MaxTTL: 31536000
539
- MinTTL: 31536000
540
- ForwardedValues:
541
- Cookies:
542
- Forward: none
543
- QueryString: 'false'
544
- ViewerProtocolPolicy: redirect-to-https
545
-
546
- # This cache behavior always serves /build/index.html
547
- DefaultCacheBehavior:
548
- TargetOriginId: ApiOrigin
549
- AllowedMethods:
550
- - GET
551
- - HEAD
552
- - OPTIONS
553
- CachedMethods:
554
- - GET
555
- - HEAD
556
- - OPTIONS
557
- Compress: 'true'
558
- DefaultTTL: 31536000
559
- MaxTTL: 31536000
560
- MinTTL: 0
561
- ForwardedValues:
562
- Cookies:
563
- Forward: all
564
- QueryString: 'true'
565
- ViewerProtocolPolicy: redirect-to-https
566
- FunctionAssociations:
567
- - EventType: viewer-request
568
- FunctionARN: !GetAtt RewriteFunction.FunctionMetadata.FunctionARN
569
-
570
- Origins:
571
- - Id: ApiOrigin
572
- DomainName: !Select [0, !Split ["/", !Select [1, !Split ["://", !GetAtt apiLambdaUrl.FunctionUrl]]]]
573
- CustomOriginConfig:
574
- OriginKeepaliveTimeout: 5
575
- OriginReadTimeout: 60
576
- OriginProtocolPolicy: https-only
577
-
578
- - Id: BuildPrimaryOrigin
579
- DomainName: !Select [1, !Split ["://", !GetAtt Bucket.WebsiteURL]]
580
- CustomOriginConfig:
581
- OriginKeepaliveTimeout: 5
582
- OriginReadTimeout: 60
583
- OriginProtocolPolicy: http-only
584
- OriginPath: /build
585
-
586
- - Id: BuildReplicaOrigin
587
- DomainName: !Select [1, !Split ["://", !Ref ReplicaBucketWebsiteURL]]
588
- CustomOriginConfig:
589
- OriginKeepaliveTimeout: 5
590
- OriginReadTimeout: 60
591
- OriginProtocolPolicy: http-only
592
- OriginPath: /build
593
-
594
- - Id: StaticPrimaryOrigin
595
- DomainName: !Select [1, !Split ["://", !GetAtt Bucket.WebsiteURL]]
596
- CustomOriginConfig:
597
- OriginKeepaliveTimeout: 5
598
- OriginReadTimeout: 60
599
- OriginProtocolPolicy: http-only
600
-
601
- - Id: StaticReplicaOrigin
602
- DomainName: !Select [1, !Split ["://", !Ref ReplicaBucketWebsiteURL]]
603
- CustomOriginConfig:
604
- OriginKeepaliveTimeout: 5
605
- OriginReadTimeout: 60
606
- OriginProtocolPolicy: http-only
607
-
608
- OriginGroups:
609
- Quantity: 2
610
- Items:
611
- - Id: BuildOrigin
612
- FailoverCriteria:
613
- StatusCodes:
614
- Items: [ 500, 502, 503, 504, 403, 404 ]
615
- Quantity: 6
616
- Members:
617
- Items:
618
- - OriginId: BuildPrimaryOrigin
619
- - OriginId: BuildReplicaOrigin
620
- Quantity: 2
621
- - Id: StaticOrigin
622
- FailoverCriteria:
623
- StatusCodes:
624
- Items: [ 500, 502, 503, 504, 403, 404 ]
625
- Quantity: 6
626
- Members:
627
- Items:
628
- - OriginId: StaticPrimaryOrigin
629
- - OriginId: StaticReplicaOrigin
630
- Quantity: 2
631
-
632
- Outputs:
633
- lambdaInvokeURL:
634
- Value: !GetAtt apiLambdaUrl.FunctionUrl
635
-
636
- lambdaArn:
637
- Value: !GetAtt apiLambdaFunction.Arn
638
-
639
- StaticBucketName:
640
- Value: !Ref Bucket
641
-
642
- DistributionId:
643
- Value: !Ref Distribution
644
-
645
- DistributionDomainName:
646
- Value: !Sub
647
- - ${subDomain}${baseDomain}
648
- - subDomain: !If [IsProduction, '', !Sub '${EnvName}.']
649
- baseDomain:
650
- Fn::ImportValue: !Sub subdomain-${Application}-hosted-zone-name
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env bash
2
- # spell-checker: ignore pipefail
3
- set -euo pipefail
4
-
5
- if [ -z "${ENVIRONMENT:-}" ]; then echo "run this command with 'yarn -s ts-utils destroy-deployment' instead of executing it directly" > /dev/stderr; exit 1; fi
6
-
7
- if [ -z "$YES" ]; then
8
- echo "you have 5 seconds to cancel this before we start deleting things. this can be disabled by specifying '-y'";
9
- sleep 5;
10
- fi
11
-
12
- stackName="$ENVIRONMENT-$APPLICATION"
13
-
14
- primaryBucket=$(yarn -s ts-utils get-stack-param "$stackName" StaticBucketName)
15
- replicaBucket=$(AWS_DEFAULT_REGION="$AWS_ALT_REGION" yarn -s ts-utils get-stack-param "$stackName" ReplicaBucketName)
16
-
17
- if [ -n "$primaryBucket" ]; then yarn -s ts-utils empty-bucket "$primaryBucket"; fi;
18
- if [ -n "$replicaBucket" ]; then yarn -s ts-utils empty-bucket "$replicaBucket"; fi;
19
-
20
- yarn -s ts-utils delete-stack "$stackName" "$AWS_ALT_REGION"
21
- yarn -s ts-utils delete-stack "$stackName" "$AWS_DEFAULT_REGION"
22
-
23
- echo "done."