@openstax/ts-utils 1.34.0 → 1.34.1

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 (503) 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 +67 -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 +154 -0
  126. package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -0
  127. package/{packages/utils/src/types.ts → dist/cjs/types.d.ts} +6 -34
  128. package/dist/cjs/types.js +2 -0
  129. package/dist/esm/assertions/index.d.ts +89 -0
  130. package/{packages/utils/src/assertions/index.ts → dist/esm/assertions/index.js} +49 -64
  131. package/dist/esm/aws/ssmService.d.ts +5 -0
  132. package/dist/esm/aws/ssmService.js +6 -0
  133. package/dist/esm/config/awsParameterConfig.d.ts +10 -0
  134. package/dist/esm/config/awsParameterConfig.js +22 -0
  135. package/dist/esm/config/envConfig.d.ts +24 -0
  136. package/dist/esm/config/envConfig.js +53 -0
  137. package/dist/esm/config/index.d.ts +48 -0
  138. package/dist/esm/config/index.js +17 -0
  139. package/dist/esm/config/lambdaParameterConfig.d.ts +12 -0
  140. package/dist/esm/config/lambdaParameterConfig.js +38 -0
  141. package/dist/esm/config/replaceConfig.d.ts +14 -0
  142. package/{packages/utils/src/config/replaceConfig.ts → dist/esm/config/replaceConfig.js} +6 -16
  143. package/dist/esm/config/resolveConfigValue.d.ts +5 -0
  144. package/dist/esm/config/resolveConfigValue.js +8 -0
  145. package/dist/esm/errors/index.d.ts +88 -0
  146. package/{packages/utils/src/errors/index.ts → dist/esm/errors/index.js} +41 -57
  147. package/dist/esm/fetch/fetchStatusRetry.d.ts +8 -0
  148. package/dist/esm/fetch/fetchStatusRetry.js +23 -0
  149. package/dist/esm/fetch/index.d.ts +64 -0
  150. package/dist/esm/fetch/index.js +46 -0
  151. package/dist/esm/guards/index.d.ts +38 -0
  152. package/dist/esm/guards/index.js +36 -0
  153. package/dist/esm/index.d.ts +4 -0
  154. package/dist/esm/index.js +4 -0
  155. package/dist/esm/middleware/apiErrorHandler.d.ts +24 -0
  156. package/dist/esm/middleware/apiErrorHandler.js +38 -0
  157. package/dist/esm/middleware/apiSlowResponseMiddleware.d.ts +23 -0
  158. package/dist/esm/middleware/apiSlowResponseMiddleware.js +50 -0
  159. package/dist/esm/middleware/index.d.ts +47 -0
  160. package/dist/esm/middleware/index.js +44 -0
  161. package/dist/esm/middleware/lambdaCorsResponseMiddleware.d.ts +20 -0
  162. package/dist/esm/middleware/lambdaCorsResponseMiddleware.js +40 -0
  163. package/dist/esm/middleware/throwNotFoundMiddleware.d.ts +4 -0
  164. package/dist/esm/middleware/throwNotFoundMiddleware.js +10 -0
  165. package/dist/esm/misc/hashValue.d.ts +10 -0
  166. package/dist/esm/misc/hashValue.js +13 -0
  167. package/dist/esm/misc/helpers.d.ts +124 -0
  168. package/dist/esm/misc/helpers.js +199 -0
  169. package/dist/esm/misc/merge.d.ts +21 -0
  170. package/dist/esm/misc/merge.js +40 -0
  171. package/dist/esm/misc/partitionSequence.d.ts +35 -0
  172. package/{packages/utils/src/misc/partitionSequence.ts → dist/esm/misc/partitionSequence.js} +15 -23
  173. package/dist/esm/pagination/index.d.ts +91 -0
  174. package/dist/esm/pagination/index.js +77 -0
  175. package/dist/esm/routing/helpers.d.ts +57 -0
  176. package/{packages/utils/src/routing/helpers.ts → dist/esm/routing/helpers.js} +30 -42
  177. package/dist/esm/routing/index.d.ts +290 -0
  178. package/dist/esm/routing/index.js +246 -0
  179. package/dist/esm/routing/validators/zod.d.ts +4 -0
  180. package/dist/esm/routing/validators/zod.js +10 -0
  181. package/dist/esm/services/accountsGateway/index.d.ts +92 -0
  182. package/dist/esm/services/accountsGateway/index.js +131 -0
  183. package/dist/esm/services/apiGateway/index.d.ts +68 -0
  184. package/dist/esm/services/apiGateway/index.js +77 -0
  185. package/dist/esm/services/authProvider/browser.d.ts +40 -0
  186. package/dist/esm/services/authProvider/browser.js +151 -0
  187. package/dist/esm/services/authProvider/decryption.d.ts +19 -0
  188. package/dist/esm/services/authProvider/decryption.js +69 -0
  189. package/dist/esm/services/authProvider/index.d.ts +63 -0
  190. package/dist/esm/services/authProvider/index.js +26 -0
  191. package/dist/esm/services/authProvider/subrequest.d.ts +13 -0
  192. package/dist/esm/services/authProvider/subrequest.js +45 -0
  193. package/dist/esm/services/authProvider/utils/decryptAndVerify.d.ts +28 -0
  194. package/dist/esm/services/authProvider/utils/decryptAndVerify.js +85 -0
  195. package/dist/esm/services/authProvider/utils/embeddedAuthProvider.d.ts +26 -0
  196. package/dist/esm/services/authProvider/utils/embeddedAuthProvider.js +40 -0
  197. package/dist/esm/services/authProvider/utils/userRoleValidator.d.ts +13 -0
  198. package/dist/esm/services/authProvider/utils/userRoleValidator.js +33 -0
  199. package/dist/esm/services/authProvider/utils/userSubrequest.d.ts +3 -0
  200. package/dist/esm/services/authProvider/utils/userSubrequest.js +6 -0
  201. package/dist/esm/services/documentStore/dynamoEncoding.d.ts +10 -0
  202. package/dist/esm/services/documentStore/dynamoEncoding.js +45 -0
  203. package/dist/esm/services/documentStore/fileSystemAssert.d.ts +1 -0
  204. package/dist/esm/services/documentStore/fileSystemAssert.js +10 -0
  205. package/dist/esm/services/documentStore/index.d.ts +14 -0
  206. package/dist/esm/services/documentStore/index.js +1 -0
  207. package/dist/esm/services/documentStore/unversioned/dynamodb.d.ts +31 -0
  208. package/dist/esm/services/documentStore/unversioned/dynamodb.js +226 -0
  209. package/dist/esm/services/documentStore/unversioned/file-system.d.ts +32 -0
  210. package/dist/esm/services/documentStore/unversioned/file-system.js +174 -0
  211. package/dist/esm/services/documentStore/unversioned/index.d.ts +2 -0
  212. package/dist/esm/services/documentStore/unversioned/index.js +1 -0
  213. package/dist/esm/services/documentStore/versioned/dynamodb.d.ts +25 -0
  214. package/dist/esm/services/documentStore/versioned/dynamodb.js +139 -0
  215. package/dist/esm/services/documentStore/versioned/file-system.d.ts +25 -0
  216. package/dist/esm/services/documentStore/versioned/file-system.js +69 -0
  217. package/dist/esm/services/documentStore/versioned/index.d.ts +17 -0
  218. package/dist/esm/services/documentStore/versioned/index.js +1 -0
  219. package/dist/esm/services/exercisesGateway/index.d.ts +67 -0
  220. package/dist/esm/services/exercisesGateway/index.js +70 -0
  221. package/dist/esm/services/fileServer/index.d.ts +30 -0
  222. package/dist/esm/services/fileServer/index.js +13 -0
  223. package/dist/esm/services/fileServer/localFileServer.d.ts +13 -0
  224. package/dist/esm/services/fileServer/localFileServer.js +125 -0
  225. package/dist/esm/services/fileServer/s3FileServer.d.ts +14 -0
  226. package/dist/esm/services/fileServer/s3FileServer.js +124 -0
  227. package/dist/esm/services/launchParams/index.d.ts +2 -0
  228. package/dist/esm/services/launchParams/index.js +2 -0
  229. package/dist/esm/services/launchParams/signer.d.ts +23 -0
  230. package/dist/esm/services/launchParams/signer.js +51 -0
  231. package/dist/esm/services/launchParams/verifier.d.ts +21 -0
  232. package/dist/esm/services/launchParams/verifier.js +92 -0
  233. package/dist/esm/services/logger/console.d.ts +4 -0
  234. package/{packages/utils/src/services/logger/console.ts → dist/esm/services/logger/console.js} +2 -5
  235. package/dist/esm/services/logger/index.d.ts +39 -0
  236. package/dist/esm/services/logger/index.js +27 -0
  237. package/dist/esm/services/lrsGateway/addStatementDefaultFields.d.ts +5 -0
  238. package/dist/esm/services/lrsGateway/addStatementDefaultFields.js +14 -0
  239. package/dist/esm/services/lrsGateway/attempt-utils.d.ts +72 -0
  240. package/dist/esm/services/lrsGateway/attempt-utils.js +261 -0
  241. package/dist/esm/services/lrsGateway/file-system.d.ts +15 -0
  242. package/dist/esm/services/lrsGateway/file-system.js +110 -0
  243. package/dist/esm/services/lrsGateway/index.d.ts +122 -0
  244. package/dist/esm/services/lrsGateway/index.js +111 -0
  245. package/dist/esm/services/lrsGateway/xapiUtils.d.ts +71 -0
  246. package/dist/esm/services/lrsGateway/xapiUtils.js +134 -0
  247. package/dist/esm/services/postgresConnection/index.d.ts +28 -0
  248. package/dist/esm/services/postgresConnection/index.js +58 -0
  249. package/dist/esm/services/searchProvider/index.d.ts +67 -0
  250. package/dist/esm/services/searchProvider/index.js +1 -0
  251. package/dist/esm/services/searchProvider/memorySearchTheBadWay.d.ts +20 -0
  252. package/dist/esm/services/searchProvider/memorySearchTheBadWay.js +187 -0
  253. package/dist/esm/services/searchProvider/openSearch.d.ts +28 -0
  254. package/dist/esm/services/searchProvider/openSearch.js +150 -0
  255. package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -0
  256. package/dist/esm/types.d.ts +31 -0
  257. package/dist/esm/types.js +1 -0
  258. package/package.json +228 -12
  259. package/.cfnlintrc +0 -2
  260. package/.github/CODEOWNERS +0 -1
  261. package/.github/workflows/ci.yml +0 -36
  262. package/.github/workflows/lint.yml +0 -55
  263. package/.nvmrc +0 -1
  264. package/.syncignore +0 -4
  265. package/.syncpackrc +0 -18
  266. package/CONTRIBUTING.md +0 -96
  267. package/LICENSE +0 -661
  268. package/Procfile +0 -1
  269. package/app.json +0 -23
  270. package/cspell.json +0 -32
  271. package/deploy/constants.env +0 -21
  272. package/deploy/deploy.bash +0 -157
  273. package/deploy/deployment-alt-region.cfn.yml +0 -70
  274. package/deploy/deployment.cfn.yml +0 -650
  275. package/deploy/destroy-deployment.bash +0 -23
  276. package/deploy/shared.cfn.yml +0 -94
  277. package/docs/lambda-build.md +0 -35
  278. package/packages/frontend/README.md +0 -46
  279. package/packages/frontend/package.json +0 -101
  280. package/packages/frontend/public/favicon.ico +0 -0
  281. package/packages/frontend/public/index.html +0 -107
  282. package/packages/frontend/public/maintenance.html +0 -59
  283. package/packages/frontend/public/manifest.json +0 -15
  284. package/packages/frontend/public/robots.txt +0 -3
  285. package/packages/frontend/script/make-certificate.bash +0 -49
  286. package/packages/frontend/script/server/cli.js +0 -11
  287. package/packages/frontend/script/server/index.js +0 -47
  288. package/packages/frontend/script/start.bash +0 -22
  289. package/packages/frontend/script/trust-localhost.bash +0 -7
  290. package/packages/frontend/src/auth/authProvider.ts +0 -10
  291. package/packages/frontend/src/auth/useAuth.ts +0 -33
  292. package/packages/frontend/src/components/Pagination.tsx +0 -26
  293. package/packages/frontend/src/configProvider/index.ts +0 -53
  294. package/packages/frontend/src/configProvider/use.ts +0 -41
  295. package/packages/frontend/src/core/context/services.spec.tsx +0 -39
  296. package/packages/frontend/src/core/context/services.tsx +0 -16
  297. package/packages/frontend/src/core/index.spec.ts +0 -7
  298. package/packages/frontend/src/core/index.ts +0 -20
  299. package/packages/frontend/src/core/services.tsx +0 -14
  300. package/packages/frontend/src/core/types.ts +0 -3
  301. package/packages/frontend/src/example/api.ts +0 -28
  302. package/packages/frontend/src/example/components/Layout.tsx +0 -23
  303. package/packages/frontend/src/example/screens/Home.spec.tsx +0 -68
  304. package/packages/frontend/src/example/screens/Home.tsx +0 -78
  305. package/packages/frontend/src/example/screens/ThingList.spec.tsx +0 -60
  306. package/packages/frontend/src/example/screens/ThingList.tsx +0 -75
  307. package/packages/frontend/src/example/screens/ThingView.spec.tsx +0 -71
  308. package/packages/frontend/src/example/screens/ThingView.tsx +0 -47
  309. package/packages/frontend/src/example/screens/index.ts +0 -9
  310. package/packages/frontend/src/index.css +0 -159
  311. package/packages/frontend/src/index.tsx +0 -67
  312. package/packages/frontend/src/react-app-env.d.ts +0 -1
  313. package/packages/frontend/src/routing/components/RouteLink.spec.tsx +0 -55
  314. package/packages/frontend/src/routing/components/RouteLink.tsx +0 -35
  315. package/packages/frontend/src/routing/middleware.ts +0 -6
  316. package/packages/frontend/src/routing/useQuery.ts +0 -14
  317. package/packages/frontend/src/setupProxy.js +0 -19
  318. package/packages/frontend/src/setupTests.ts +0 -9
  319. package/packages/frontend/src/tests/testServices.tsx +0 -23
  320. package/packages/frontend/tsconfig.json +0 -27
  321. package/packages/lambda/.eslintrc.js +0 -64
  322. package/packages/lambda/jest-global-setup.js +0 -3
  323. package/packages/lambda/jest-setup-after-env.js +0 -1
  324. package/packages/lambda/jest.config.js +0 -31
  325. package/packages/lambda/jest.resolver.js +0 -17
  326. package/packages/lambda/package.json +0 -68
  327. package/packages/lambda/script/build.bash +0 -19
  328. package/packages/lambda/script/bundle-functions.bash +0 -10
  329. package/packages/lambda/script/lambdaLocalProxy.js +0 -16
  330. package/packages/lambda/script/lambdaLocalProxy.spec.ts +0 -147
  331. package/packages/lambda/script/utils/getRouteData.ts +0 -7
  332. package/packages/lambda/script/utils/routeDataLoader.js +0 -8
  333. package/packages/lambda/script/utils/routeDataLoader.spec.ts +0 -8
  334. package/packages/lambda/src/functions/serviceApi/core/index.ts +0 -7
  335. package/packages/lambda/src/functions/serviceApi/core/request.spec.ts +0 -38
  336. package/packages/lambda/src/functions/serviceApi/core/request.ts +0 -42
  337. package/packages/lambda/src/functions/serviceApi/core/routes.spec.ts +0 -7
  338. package/packages/lambda/src/functions/serviceApi/core/routes.ts +0 -10
  339. package/packages/lambda/src/functions/serviceApi/core/services.ts +0 -9
  340. package/packages/lambda/src/functions/serviceApi/core/types.ts +0 -13
  341. package/packages/lambda/src/functions/serviceApi/entry/lambda/https-xray.ts +0 -4
  342. package/packages/lambda/src/functions/serviceApi/entry/lambda/index.spec.ts +0 -48
  343. package/packages/lambda/src/functions/serviceApi/entry/lambda/index.ts +0 -58
  344. package/packages/lambda/src/functions/serviceApi/entry/lambda/services.ts +0 -36
  345. package/packages/lambda/src/functions/serviceApi/entry/local.ts +0 -71
  346. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentSearchMiddleware.spec.ts +0 -16
  347. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentSearchMiddleware.ts +0 -41
  348. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentStoreMiddleware.spec.ts +0 -78
  349. package/packages/lambda/src/functions/serviceApi/versions/v0/example/documentStoreMiddleware.ts +0 -70
  350. package/packages/lambda/src/functions/serviceApi/versions/v0/example/routes.spec.ts +0 -306
  351. package/packages/lambda/src/functions/serviceApi/versions/v0/example/routes.ts +0 -176
  352. package/packages/lambda/src/functions/serviceApi/versions/v0/index.spec.ts +0 -263
  353. package/packages/lambda/src/functions/serviceApi/versions/v0/index.ts +0 -134
  354. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/authMiddleware.spec.ts +0 -23
  355. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/authMiddleware.ts +0 -32
  356. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/configMiddleware.spec.ts +0 -10
  357. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/configMiddleware.ts +0 -7
  358. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/frontendFileServerMiddleware.spec.ts +0 -13
  359. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/frontendFileServerMiddleware.ts +0 -23
  360. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/paginationMiddleware.spec.ts +0 -9
  361. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/paginationMiddleware.ts +0 -9
  362. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/searchMiddleware.spec.ts +0 -12
  363. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/searchMiddleware.ts +0 -21
  364. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/userRoleValidatorMiddleware.spec.ts +0 -21
  365. package/packages/lambda/src/functions/serviceApi/versions/v0/middleware/userRoleValidatorMiddleware.ts +0 -18
  366. package/packages/lambda/tsconfig.json +0 -30
  367. package/packages/lambda/webpack.config.js +0 -97
  368. package/packages/utils/.eslintrc.js +0 -64
  369. package/packages/utils/README.md +0 -118
  370. package/packages/utils/jest-global-setup.js +0 -3
  371. package/packages/utils/jest.config.js +0 -25
  372. package/packages/utils/jest.resolver.js +0 -17
  373. package/packages/utils/package.json +0 -238
  374. package/packages/utils/src/assertions/index.spec.ts +0 -126
  375. package/packages/utils/src/aws/ssmService.ts +0 -7
  376. package/packages/utils/src/config/awsParameterConfig.ts +0 -24
  377. package/packages/utils/src/config/envConfig.ts +0 -58
  378. package/packages/utils/src/config/index.spec.ts +0 -165
  379. package/packages/utils/src/config/lambdaParameterConfig.ts +0 -49
  380. package/packages/utils/src/config/resolveConfigValue.ts +0 -10
  381. package/packages/utils/src/errors/index.spec.ts +0 -35
  382. package/packages/utils/src/fetch/fetchStatusRetry.spec.ts +0 -197
  383. package/packages/utils/src/fetch/fetchStatusRetry.ts +0 -33
  384. package/packages/utils/src/fetch/index.spec.ts +0 -34
  385. package/packages/utils/src/fetch/index.ts +0 -87
  386. package/packages/utils/src/guards/index.spec.ts +0 -58
  387. package/packages/utils/src/index.spec.ts +0 -471
  388. package/packages/utils/src/middleware/apiErrorHandler.spec.ts +0 -65
  389. package/packages/utils/src/middleware/apiErrorHandler.ts +0 -67
  390. package/packages/utils/src/middleware/apiSlowResponseMiddleware.spec.ts +0 -184
  391. package/packages/utils/src/middleware/apiSlowResponseMiddleware.ts +0 -71
  392. package/packages/utils/src/middleware/index.spec.ts +0 -99
  393. package/packages/utils/src/middleware/lambdaCorsResponseMiddleware.spec.ts +0 -103
  394. package/packages/utils/src/middleware/lambdaCorsResponseMiddleware.ts +0 -52
  395. package/packages/utils/src/middleware/throwNotFoundMiddleware.spec.ts +0 -20
  396. package/packages/utils/src/middleware/throwNotFoundMiddleware.ts +0 -11
  397. package/packages/utils/src/misc/hashValue.ts +0 -18
  398. package/packages/utils/src/misc/helpers.ts +0 -259
  399. package/packages/utils/src/misc/merge.ts +0 -48
  400. package/packages/utils/src/pagination/index.spec.ts +0 -150
  401. package/packages/utils/src/pagination/index.ts +0 -117
  402. package/packages/utils/src/routing/index.spec.ts +0 -553
  403. package/packages/utils/src/routing/index.ts +0 -424
  404. package/packages/utils/src/routing/validators/zod.spec.ts +0 -16
  405. package/packages/utils/src/routing/validators/zod.ts +0 -14
  406. package/packages/utils/src/services/accountsGateway/README.md +0 -3
  407. package/packages/utils/src/services/accountsGateway/index.spec.ts +0 -518
  408. package/packages/utils/src/services/accountsGateway/index.ts +0 -251
  409. package/packages/utils/src/services/apiGateway/README.md +0 -93
  410. package/packages/utils/src/services/apiGateway/index.spec.ts +0 -254
  411. package/packages/utils/src/services/apiGateway/index.ts +0 -189
  412. package/packages/utils/src/services/authProvider/README.md +0 -21
  413. package/packages/utils/src/services/authProvider/browser.spec.ts +0 -391
  414. package/packages/utils/src/services/authProvider/browser.ts +0 -209
  415. package/packages/utils/src/services/authProvider/decryption.spec.ts +0 -337
  416. package/packages/utils/src/services/authProvider/decryption.ts +0 -98
  417. package/packages/utils/src/services/authProvider/index.ts +0 -93
  418. package/packages/utils/src/services/authProvider/stub.spec.ts +0 -29
  419. package/packages/utils/src/services/authProvider/subrequest.spec.ts +0 -105
  420. package/packages/utils/src/services/authProvider/subrequest.ts +0 -68
  421. package/packages/utils/src/services/authProvider/utils/decryptAndVerify.spec.ts +0 -128
  422. package/packages/utils/src/services/authProvider/utils/decryptAndVerify.ts +0 -106
  423. package/packages/utils/src/services/authProvider/utils/embeddedAuthProvider.spec.ts +0 -26
  424. package/packages/utils/src/services/authProvider/utils/embeddedAuthProvider.ts +0 -57
  425. package/packages/utils/src/services/authProvider/utils/userRoleValidator.spec.ts +0 -135
  426. package/packages/utils/src/services/authProvider/utils/userRoleValidator.ts +0 -49
  427. package/packages/utils/src/services/authProvider/utils/userSubrequest.spec.ts +0 -26
  428. package/packages/utils/src/services/authProvider/utils/userSubrequest.ts +0 -10
  429. package/packages/utils/src/services/documentStore/dynamoEncoding.ts +0 -57
  430. package/packages/utils/src/services/documentStore/fileSystemAssert.spec.ts +0 -43
  431. package/packages/utils/src/services/documentStore/fileSystemAssert.ts +0 -10
  432. package/packages/utils/src/services/documentStore/unversioned/README.md +0 -13
  433. package/packages/utils/src/services/documentStore/unversioned/dynamodb.spec.ts +0 -859
  434. package/packages/utils/src/services/documentStore/unversioned/dynamodb.ts +0 -243
  435. package/packages/utils/src/services/documentStore/unversioned/file-system.spec.ts +0 -629
  436. package/packages/utils/src/services/documentStore/unversioned/file-system.ts +0 -194
  437. package/packages/utils/src/services/documentStore/versioned/README.md +0 -13
  438. package/packages/utils/src/services/documentStore/versioned/dynamodb.spec.ts +0 -376
  439. package/packages/utils/src/services/documentStore/versioned/dynamodb.ts +0 -167
  440. package/packages/utils/src/services/documentStore/versioned/file-system.spec.ts +0 -262
  441. package/packages/utils/src/services/documentStore/versioned/file-system.ts +0 -90
  442. package/packages/utils/src/services/documentStore/versioned/index.ts +0 -25
  443. package/packages/utils/src/services/exercisesGateway/README.md +0 -5
  444. package/packages/utils/src/services/exercisesGateway/index.spec.ts +0 -326
  445. package/packages/utils/src/services/exercisesGateway/index.ts +0 -163
  446. package/packages/utils/src/services/fileServer/index.spec.ts +0 -88
  447. package/packages/utils/src/services/fileServer/index.ts +0 -43
  448. package/packages/utils/src/services/fileServer/localFileServer.spec.ts +0 -182
  449. package/packages/utils/src/services/fileServer/localFileServer.ts +0 -159
  450. package/packages/utils/src/services/fileServer/s3FileServer.spec.ts +0 -266
  451. package/packages/utils/src/services/fileServer/s3FileServer.ts +0 -155
  452. package/packages/utils/src/services/launchParams/index.spec.ts +0 -366
  453. package/packages/utils/src/services/launchParams/signer.ts +0 -73
  454. package/packages/utils/src/services/launchParams/verifier.ts +0 -120
  455. package/packages/utils/src/services/logger/console.spec.ts +0 -29
  456. package/packages/utils/src/services/logger/index.spec.ts +0 -65
  457. package/packages/utils/src/services/lrsGateway/README.md +0 -5
  458. package/packages/utils/src/services/lrsGateway/addStatementDefaultFields.ts +0 -22
  459. package/packages/utils/src/services/lrsGateway/attempt-utils.spec.ts +0 -847
  460. package/packages/utils/src/services/lrsGateway/attempt-utils.ts +0 -358
  461. package/packages/utils/src/services/lrsGateway/file-system.spec.ts +0 -363
  462. package/packages/utils/src/services/lrsGateway/file-system.ts +0 -165
  463. package/packages/utils/src/services/lrsGateway/index.spec.ts +0 -194
  464. package/packages/utils/src/services/lrsGateway/index.ts +0 -257
  465. package/packages/utils/src/services/lrsGateway/xapiUtils.spec.ts +0 -887
  466. package/packages/utils/src/services/lrsGateway/xapiUtils.ts +0 -262
  467. package/packages/utils/src/services/postgresConnection/index.spec.ts +0 -170
  468. package/packages/utils/src/services/postgresConnection/index.ts +0 -84
  469. package/packages/utils/src/services/searchProvider/README.md +0 -3
  470. package/packages/utils/src/services/searchProvider/index.ts +0 -59
  471. package/packages/utils/src/services/searchProvider/memorySearchTheBadWay.spec.ts +0 -526
  472. package/packages/utils/src/services/searchProvider/memorySearchTheBadWay.ts +0 -223
  473. package/packages/utils/src/services/searchProvider/openSearch.spec.ts +0 -926
  474. package/packages/utils/src/services/searchProvider/openSearch.ts +0 -195
  475. package/packages/utils/tsconfig.json +0 -31
  476. package/packages/utils/tsconfig.without-specs.cjs.json +0 -7
  477. package/packages/utils/tsconfig.without-specs.esm.json +0 -7
  478. package/packages/utils/tsconfig.without-specs.json +0 -6
  479. package/scripts/build.bash +0 -24
  480. package/scripts/ci.bash +0 -10
  481. package/scripts/start.bash +0 -29
  482. /package/{packages/utils/src/index.ts → dist/cjs/index.d.ts} +0 -0
  483. /package/{packages/utils/src/services/launchParams/index.ts → dist/cjs/services/launchParams/index.d.ts} +0 -0
  484. /package/{packages/utils/script → script}/bin/copy-from-template.bash +0 -0
  485. /package/{packages/utils/script → script}/bin/delete-stack.bash +0 -0
  486. /package/{packages/utils/script → script}/bin/deploy.bash +0 -0
  487. /package/{packages/utils/script → script}/bin/destroy-deployment.bash +0 -0
  488. /package/{packages/utils/script → script}/bin/empty-bucket.bash +0 -0
  489. /package/{packages/utils/script → script}/bin/get-arg.bash +0 -0
  490. /package/{packages/utils/script → script}/bin/get-deployed-environments.bash +0 -0
  491. /package/{packages/utils/script → script}/bin/get-env-param.bash +0 -0
  492. /package/{packages/utils/script → script}/bin/get-kwarg.bash +0 -0
  493. /package/{packages/utils/script → script}/bin/get-stack-param.bash +0 -0
  494. /package/{packages/utils/script → script}/bin/has-flag.bash +0 -0
  495. /package/{packages/utils/script → script}/bin/init-constants-script.bash +0 -0
  496. /package/{packages/utils/script → script}/bin/init-params-script.bash +0 -0
  497. /package/{packages/utils/script → script}/bin/stack-exists.bash +0 -0
  498. /package/{packages/utils/script → script}/bin/update-utils.bash +0 -0
  499. /package/{packages/utils/script → script}/bin/upload-pager-duty-endpoints.bash +0 -0
  500. /package/{packages/utils/script → script}/bin/upload-params.bash +0 -0
  501. /package/{packages/utils/script → script}/bin/which.bash +0 -0
  502. /package/{packages/utils/script → script}/bin-entry.bash +0 -0
  503. /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."