@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,97 +0,0 @@
1
- /* spell-checker: ignore Builtins */
2
- const fs = require('fs');
3
- const path = require('path');
4
- const {assertDefined} = require('@openstax/ts-utils/assertions');
5
- const {ENV_BUILD_CONFIGS} = require('@openstax/ts-utils/config');
6
- const nodeBuiltins = require('builtin-modules');
7
- const TerserPlugin = require('terser-webpack-plugin');
8
- const webpack = require('webpack');
9
- const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
10
-
11
-
12
- // we need to run the code to get the ENV configs, so build it now
13
- // to make sure its up to date
14
- require('child_process').execSync(
15
- './script/build.bash --clean',
16
- {stdio: 'inherit'}
17
- );
18
-
19
- const lambdaDir = 'build/src/functions';
20
- const lambdaNames = fs.readdirSync(path.join(__dirname, lambdaDir));
21
-
22
- const externals = ['aws-sdk', 'aws-crt']
23
- .concat(nodeBuiltins)
24
- .reduce((externalsMap, moduleName) => {
25
- externalsMap[moduleName] = moduleName;
26
- return externalsMap;
27
- }, {});
28
-
29
- module.exports = lambdaNames.map(lambdaName => {
30
- const lambdaPath = path.join(__dirname, lambdaDir, lambdaName);
31
- const entryPath = path.join(lambdaPath, 'entry', 'lambda');
32
- const webpackConfigPath = path.join(entryPath, 'webpack.config.js');
33
- const outputPath = path.join(__dirname, 'dist', lambdaName);
34
- const services = path.join(entryPath, 'services');
35
- const routes = path.join(lambdaPath, 'core', 'routes');
36
-
37
- // trying to cover as much as possible without actually wiring up the app
38
- // to catch all `envConfig` calls without trying to run them.
39
- require(services)
40
-
41
- // require routes if they exist
42
- if (fs.existsSync(routes)) { require(routes) }
43
-
44
- const env = ENV_BUILD_CONFIGS.splice(0, ENV_BUILD_CONFIGS.length);
45
-
46
- if (fs.existsSync(webpackConfigPath)) { return require(webpackConfigPath)({lambdaName, entryPath, outputPath, env}) }
47
-
48
- return {
49
- entry: ['source-map-support/register', entryPath],
50
- externals,
51
-
52
- output: {
53
- path: outputPath,
54
- libraryTarget: 'commonjs',
55
- filename: 'index.js',
56
- },
57
-
58
- target: 'node',
59
- mode: 'production',
60
-
61
- optimization: {
62
- concatenateModules: true,
63
- minimize: true,
64
- minimizer: [new TerserPlugin({ terserOptions: {
65
- mangle: false
66
- },
67
- })],
68
- },
69
-
70
- module: {
71
- rules: [
72
- {
73
- test: /\.ts$/,
74
- use: 'ts-loader',
75
- exclude: [], // include node modules
76
- }
77
- ]
78
- },
79
-
80
- resolve: {
81
- extensions: ['.ts', '.js'],
82
- },
83
-
84
- devtool: 'source-map',
85
-
86
- plugins: [
87
- new webpack.DefinePlugin({
88
- 'typeof __PROCESS_ENV': JSON.stringify('object'),
89
- __PROCESS_ENV: JSON.stringify(Object.fromEntries(env.map(key => {
90
- return [key, assertDefined(process.env[key], `missing environment key ${key}`)]
91
- })))
92
- }),
93
- new webpack.ProgressPlugin(),
94
- ...(lambdaName === process.env.DEBUG_MODULES ? [new BundleAnalyzerPlugin()] : []),
95
- ],
96
- }
97
- });
@@ -1,64 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- env: { node: true, es6: true },
4
- parserOptions: {
5
- ecmaVersion: 2018
6
- },
7
- overrides: [
8
- {
9
- files: ['**/*.ts?(x)'],
10
- parser: '@typescript-eslint/parser',
11
- parserOptions: {
12
- project: 'tsconfig.json',
13
- tsconfigRootDir: __dirname,
14
- ecmaVersion: 2018,
15
- sourceType: 'module',
16
- warnOnUnsupportedTypeScriptVersion: true
17
- },
18
- plugins: ['@typescript-eslint'],
19
- extends: [
20
- 'eslint:recommended',
21
- 'plugin:import/typescript'
22
- ],
23
- rules: {
24
- '@typescript-eslint/ban-ts-comment': 'off',
25
- '@typescript-eslint/no-inferrable-types': [
26
- 'warn',
27
- { ignoreParameters: true }
28
- ],
29
- semi: 'off',
30
- '@typescript-eslint/semi': ['warn'],
31
- '@typescript-eslint/member-delimiter-style': ['warn'],
32
- 'no-unused-vars': 'off',
33
- '@typescript-eslint/no-unused-vars': [
34
- 'warn',
35
- {
36
- args: 'none',
37
- ignoreRestSiblings: true,
38
- varsIgnorePattern: '^_'
39
- }
40
- ],
41
- '@typescript-eslint/no-explicit-any': 'off'
42
- }
43
- }
44
- ],
45
- ignorePatterns: ['node_modules', 'dist', 'coverage'],
46
- plugins: ['import', 'jest'],
47
- extends: [
48
- 'eslint:recommended',
49
- 'plugin:jest/recommended',
50
- 'plugin:jest/style'
51
- ],
52
- rules: {
53
- quotes: ['warn', 'single'],
54
- 'quote-props': ['warn', 'as-needed'],
55
- 'import/order': [
56
- 'warn',
57
- { 'newlines-between': 'never', alphabetize: { order: 'asc' } }
58
- ],
59
- 'sort-imports': [
60
- 'warn',
61
- { ignoreDeclarationSort: true, ignoreCase: true }
62
- ]
63
- }
64
- }
@@ -1,118 +0,0 @@
1
- # @openstax/ts-utils
2
-
3
- A collection of utilities typescript applications. browser and server support.
4
-
5
- ## Libraries
6
- overviews of the libraries provided and their purposes, for more specific information check out the comments in the source code.
7
-
8
- ### [types.ts](./types.ts)
9
- utility types, no javascript functionality in here. A dumping ground for commonly used utility types or sorcery copied of stack overflow.
10
-
11
- ### [guards.ts](./guards.ts)
12
- generic [type guards](https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards). most of this isn't super interesting its just annoying to have to re-define these in every project.
13
-
14
- ### [assertions.ts](./assertions.ts)
15
- like a guard but throws if the condition fails. you can use an assertion if you're extra sure that something is true but typescript isn't so sure, its possible that a bug might exist but normally your expected case should always be the case. these assertions allow you to have useful errors/messages for the exceptional bug, without generating conditional logic in your application code. this is almost entirely driven by not wanting to create code branches that will then need unit tests.
16
-
17
- ### [index.ts](./index.ts)
18
- basic array/object access/manipulation utilities
19
-
20
- ### [errors.ts](./errors.ts)
21
- a set of common application errors for the other libraries to use
22
-
23
- ### [fetch.ts](./fetch.ts)
24
- utilities for working with `fetch` and fetching data. mostly there are constructors and guards for working with response objects that capture both a request status and associated data. the actual fetch api only throws if there is a connection errors, so most data access utilities need a way to communicate application layer failures back to the client in a discernible way. you can _almost_ do this with regular response objects, but then you're forcing all of the response processing down into user-land, and this system provides an additional loading state for UIs.
25
-
26
- ### [config.ts](./config.ts)
27
- defines ConfigProvider as an arbitrarily nested object where leaves must be ConfigValueProviders. ConfigValueProviders are strings, promises of strings, functions without arguments that return strings, or promises of strings. the library has a utility to resolve a ConfigValueProvider to a string, and a few re-usable providers.
28
-
29
- ### [middleware.ts](./middleware.ts)
30
- middleware are chains of functions, with shared access to a parent application or services, that modify or decorate a result. middleware chains are used to pre-process requests before they reach routing, post-process results after routing, and compose service providers for the routes to use.
31
-
32
- ### [routing.ts](./routing.ts)
33
- a flexible routing library with utils for defining routes, matching requests to routes, and rendering urls for routes. strong typing for route params, request bodies, response bodies. reverse routing asserts not only that the correct route and params are given, but that the route is composed in the application. built to be implementation agnostic and support both browser SPA routing and server side API routing.
34
-
35
- ### [pagination.ts](./pagination.ts)
36
- utilities for interpreting pagination requests and generating pagination responses for both 'load more' and 'page number' style pagination. included middleware for working with the routing library.
37
-
38
- ## Services
39
- Services differ from the rest of the libraries in that they have a single discrete interface and support multiple implementations of that interface.
40
-
41
- ### [apiGateway](./services/apiGateway/index.ts)
42
- dynamically generates an api client from route configuration. if you're using the routing library in the api, this allows you to import your route types directly into your client and have very strong typing on your api calls for free. includes error handling, filtering responses by status code, and narrowing the expected data type by given status code.
43
-
44
- ### [authProvider](./services/authProvider)
45
- integrates with openstax.org/accounts, includes several implementations for both browser and server side integrations.
46
-
47
- ### [lrsGateway](./services/lrsGateway/index.ts)
48
- handles authentication and payload formatting for interacting with the LRS
49
-
50
- ### [versionedDocumentStore](./services/versionedDocumentStore)
51
- a key/value document store with integrated audit logging. all writes are done as new versions of documents and version history can be fetched. includes implementations for dynamodb and local file system.
52
-
53
- ### [searchProvider](./services/searchProvider/index.ts)
54
- allows filtering and open text search for documents. has strong typing for filterable values based on the document type definition. interface is based on elasticsearch options, but currently we only have an in memory filtering implementation. works out of the box with versionedDocumentStore.
55
-
56
- ## Notes
57
-
58
- ### Service drivers and configuration
59
- Service providers are defined in a little bit of a weird nested way, this is supposed to help separate driver specific and instance specific configurations, and let you swap drivers in different application entry points without too many application dependencies.
60
-
61
- an entry point is the file you point to when you build or run the application. the idea is that you make a different entry point files for different environments or contexts. so you have one for launching local development and one for launching an all-in-one stack on a testing server and another one for launching a production environment. in order to reduce environment specific issues you reduce your entry point to be as small as possible and just assemble the required bits for that environment to work. in the recommended setup, one of the main things the entry point does is choose which service provider drivers to use. there are two main benefits of using entry points, its more declarative than using downstream conditional logic with some kind of `driver: fs` flag in the config, and it allows bundled javascript to only include the dependencies relevant for the drivers that are being used in that build.
62
-
63
- the idea is that you may have some entities you're putting in a VersionedDocumentStore and maybe some others in a RelationalEntityStore but you're for sure not putting some versioned entities in dynamo and some in a local json file. so in your development environment entry point you provide your config for `versionedDocumentStore: fileSystemVersionedDocumentStore` and in the deployed environment entry point you put `versionedDocumentStore: dynamoVersionedDocumentStore`.
64
-
65
- there are two levels the drivers are configured at, one is the driver level and the other is the instance level. for the VersionedDocumentStore the fileSystem driver takes a path to the directory to store the files in. the instance level may vary based on the usage of that driver, for example if you're storing 4 different entities in VersionedDocumentStores, you need to provide different table names to the driver to configure each store to create separate instances of that store. it just happens that for VersionedDocumentStore the fileSystem and dynamo implementations use the same instance config, this isn't always the case. once you get into your application logic you won't know which entry point was used to bootstrap your application, so you'll just know the driver is _one of_ the possible versions, typescript will recognize this and throw an error unless you provide a config that would work for any of the possible drivers. in order to make this more legible (and separate key collisions), most of the services can be set up in the entry point with a config prefix, so when you get into application-land it looks more like you're providing two discrete configs.
66
-
67
- for example:
68
-
69
- ```typescript
70
- // entry/anEntryPoint.ts
71
- export const lambdaServices = {
72
- // in this entry we provide the dynamo driver
73
- versionedDocumentStore: dynamoVersionedDocumentStore({configSpace: 'dynamodb'}),
74
- };
75
-
76
- // entry/anotherEntryPoint.ts
77
- export const localServices = {
78
- // in this entry we provide the fileSystem driver, it has a different config prefix
79
- versionedDocumentStore: fileSystemVersionedDocumentStore({dataDir, configSpace: 'fileSystem'}),
80
- };
81
-
82
- // core/types.ts
83
-
84
- // there is other wiring up that happens with the app services on the request responder, if
85
- // you made a new entrypoint and tried to use a different format of services without registering it
86
- // here it would yell at you.
87
- export type AppServices = LambdaServices | LocalServices;
88
-
89
- // myCoolDocumentStoreMiddleware.ts
90
-
91
- // this config satisfies both config drivers with separate sections for each one.
92
- // the envConfig is defined here, but it wouldn't try to actually resolve that value
93
- // unless it was being used.
94
- const config = {
95
- fileSystem: {
96
- tableName: 'coolDocument'
97
- },
98
- dynamodb: {
99
- tableName: envConfig('TestDocumentTableName', 'runtime'),
100
- }
101
- };
102
-
103
- export const myCoolDocumentStoreMiddleware = <M extends {}>(app: AppServices) => {
104
- // providing the document interface and the config prepares the driver to work for this entity in particular.
105
- // the extra function call in this line is to work around some typescript quirkiness with generic type inference.
106
- // this line is only run once when the app is wired up, doing this call here allows the driver to do internal memory caching
107
- // if it wants to.
108
- const makeCoolDocumentStore = app.versionedDocumentStore<CoolDocument>()(config);
109
-
110
- return (middleware: M) => ({
111
- ...middleware,
112
- // this part is run for every api request processed. in this case there it could have been combined with the call above,
113
- // but most of the time you'll want to pull in the authProvider and hook up automatic audit logging, and that will be different on
114
- // each request. look at the VersionedDocumentStore documentation for details.
115
- coolDocumentStore: makeCoolDocumentStore('id'),
116
- })
117
- };
118
- ```
@@ -1,3 +0,0 @@
1
- module.exports = async () => {
2
- process.env.TZ = 'UTC';
3
- };
@@ -1,25 +0,0 @@
1
- module.exports = {
2
- preset: 'ts-jest',
3
- testEnvironment: 'node',
4
- globalSetup: './jest-global-setup.js',
5
- testMatch: [
6
- '**/src/**/?(*.)+(spec).ts'
7
- ],
8
- collectCoverageFrom: [
9
- 'src/**/*.{js,ts}',
10
- ],
11
- coverageReporters: [
12
- 'text-summary',
13
- 'html',
14
- 'lcovonly'
15
- ],
16
- coverageThreshold: {
17
- global: {
18
- branches: 100,
19
- functions: 100,
20
- lines: 100,
21
- statements: 100
22
- }
23
- },
24
- resolver: './jest.resolver.js'
25
- };
@@ -1,17 +0,0 @@
1
- // https://github.com/cloudflare/miniflare/issues/271#issuecomment-1255544333
2
- //
3
- // the uuid package says that it fixed this in v9 here https://github.com/uuidjs/uuid/pull/616#issuecomment-1237428554
4
- // but i tired it and was still getting the error. try removing this hack in the future and
5
- // see if it got figured out.
6
- module.exports = (path, options) => {
7
- return options.defaultResolver(path, {
8
- ...options,
9
- packageFilter: pkg => {
10
- if (pkg.name === 'uuid') {
11
- delete pkg['exports'];
12
- delete pkg['module'];
13
- }
14
- return pkg;
15
- },
16
- });
17
- };
@@ -1,238 +0,0 @@
1
- {
2
- "name": "@openstax/ts-utils",
3
- "version": "1.33.0",
4
- "bin": {
5
- "ts-utils": "./script/bin-entry.bash"
6
- },
7
- "dependencies": {
8
- "@aws-sdk/client-dynamodb": "^3.171.0",
9
- "@aws-sdk/client-s3": "^3.267.0",
10
- "@aws-sdk/client-ssm": "^3.171.0",
11
- "@aws-sdk/client-sts": "^3.171.0",
12
- "@aws-sdk/s3-presigned-post": "^3.267.0",
13
- "@aws-sdk/s3-request-presigner": "^3.267.0",
14
- "aws-sdk": "^2.1145.0",
15
- "cookie": "^0.5.0",
16
- "date-fns": "^2.29.2",
17
- "deep-equal": "^2.1.0",
18
- "jsonwebtoken": "^9.0.0",
19
- "jwks-rsa": "^3.1.0",
20
- "ms": "^2.1.3",
21
- "node-jose": "^2.2.0",
22
- "path-to-regexp": "^6.2.0",
23
- "query-string": "^7.1.1",
24
- "tiny-async-pool": "^2.1.0",
25
- "uuid": "^9.0.0"
26
- },
27
- "devDependencies": {
28
- "@opensearch-project/opensearch": "^1.2.0",
29
- "@types/cookie": "^0.5.0",
30
- "@types/cors": "^2.8.13",
31
- "@types/deep-equal": "^1.0.1",
32
- "@types/express": "^4.17.13",
33
- "@types/jest": "^29.5.14",
34
- "@types/jsonwebtoken": "^9.0.1",
35
- "@types/lodash": "^4.14.200",
36
- "@types/ms": "^0.7.34",
37
- "@types/multer": "^1.4.7",
38
- "@types/node": "^24.2.0",
39
- "@types/node-fetch": "^2.6.11",
40
- "@types/node-jose": "^1.1.12",
41
- "@types/tiny-async-pool": "^2.0.0",
42
- "@types/uuid": "^8.3.4",
43
- "@typescript-eslint/eslint-plugin": "^5.13.0",
44
- "@typescript-eslint/parser": "^8.39.0",
45
- "cors": "^2.8.5",
46
- "cspell": "^5.18.5",
47
- "eslint": "^8.10.0",
48
- "eslint-plugin-import": "^2.25.4",
49
- "eslint-plugin-jest": "^26.1.1",
50
- "express": "^4.17.3",
51
- "jest": "^29.7.0",
52
- "multer": "^1.4.5-lts.1",
53
- "node-fetch": "^2.7.0",
54
- "npm-run-all": "^4.1.5",
55
- "postgres": "^3.4.5",
56
- "rollup-plugin-commonjs": "^10.1.0",
57
- "rollup-plugin-typescript2": "^0.31.2",
58
- "ts-jest": "^29.4.1",
59
- "typescript": "5.9.2",
60
- "yargs": "^17.5.1",
61
- "zod": "^4.0.15"
62
- },
63
- "exports": {
64
- ".": {
65
- "browser": "./dist/cjs/index.js",
66
- "import": "./dist/esm/index.js",
67
- "require": "./dist/cjs/index.js"
68
- },
69
- "./*": {
70
- "browser": "./dist/cjs/*.js",
71
- "import": "./dist/esm/*.js",
72
- "require": "./dist/cjs/*.js"
73
- },
74
- "./assertions": {
75
- "browser": "./dist/cjs/assertions/index.js",
76
- "import": "./dist/esm/assertions/index.js",
77
- "require": "./dist/cjs/assertions/index.js"
78
- },
79
- "./aws": {
80
- "browser": "./dist/cjs/aws/index.js",
81
- "import": "./dist/esm/aws/index.js",
82
- "require": "./dist/cjs/aws/index.js"
83
- },
84
- "./config": {
85
- "browser": "./dist/cjs/config/index.js",
86
- "import": "./dist/esm/config/index.js",
87
- "require": "./dist/cjs/config/index.js"
88
- },
89
- "./errors": {
90
- "browser": "./dist/cjs/errors/index.js",
91
- "import": "./dist/esm/errors/index.js",
92
- "require": "./dist/cjs/errors/index.js"
93
- },
94
- "./fetch": {
95
- "browser": "./dist/cjs/fetch/index.js",
96
- "import": "./dist/esm/fetch/index.js",
97
- "require": "./dist/cjs/fetch/index.js"
98
- },
99
- "./guards": {
100
- "browser": "./dist/cjs/guards/index.js",
101
- "import": "./dist/esm/guards/index.js",
102
- "require": "./dist/cjs/guards/index.js"
103
- },
104
- "./middleware": {
105
- "browser": "./dist/cjs/middleware/index.js",
106
- "import": "./dist/esm/middleware/index.js",
107
- "require": "./dist/cjs/middleware/index.js"
108
- },
109
- "./misc": {
110
- "browser": "./dist/cjs/misc/index.js",
111
- "import": "./dist/esm/misc/index.js",
112
- "require": "./dist/cjs/misc/index.js"
113
- },
114
- "./pagination": {
115
- "browser": "./dist/cjs/pagination/index.js",
116
- "import": "./dist/esm/pagination/index.js",
117
- "require": "./dist/cjs/pagination/index.js"
118
- },
119
- "./routing": {
120
- "browser": "./dist/cjs/routing/index.js",
121
- "import": "./dist/esm/routing/index.js",
122
- "require": "./dist/cjs/routing/index.js"
123
- },
124
- "./services": {
125
- "browser": "./dist/cjs/services/index.js",
126
- "import": "./dist/esm/services/index.js",
127
- "require": "./dist/cjs/services/index.js"
128
- },
129
- "./services/launchParams": {
130
- "browser": "./dist/cjs/services/launchParams/index.js",
131
- "import": "./dist/esm/services/launchParams/index.js",
132
- "require": "./dist/cjs/services/launchParams/index.js"
133
- },
134
- "./services/exercisesGateway": {
135
- "browser": "./dist/cjs/services/exercisesGateway/index.js",
136
- "import": "./dist/esm/services/exercisesGateway/index.js",
137
- "require": "./dist/cjs/services/exercisesGateway/index.js"
138
- },
139
- "./services/accountsGateway": {
140
- "browser": "./dist/cjs/services/accountsGateway/index.js",
141
- "import": "./dist/esm/services/accountsGateway/index.js",
142
- "require": "./dist/cjs/services/accountsGateway/index.js"
143
- },
144
- "./services/logger": {
145
- "browser": "./dist/cjs/services/logger/index.js",
146
- "import": "./dist/esm/services/logger/index.js",
147
- "require": "./dist/cjs/services/logger/index.js"
148
- },
149
- "./services/searchProvider": {
150
- "browser": "./dist/cjs/services/searchProvider/index.js",
151
- "import": "./dist/esm/services/searchProvider/index.js",
152
- "require": "./dist/cjs/services/searchProvider/index.js"
153
- },
154
- "./services/documentStore": {
155
- "browser": "./dist/cjs/services/documentStore/index.js",
156
- "import": "./dist/esm/services/documentStore/index.js",
157
- "require": "./dist/cjs/services/documentStore/index.js"
158
- },
159
- "./services/documentStore/unversioned": {
160
- "browser": "./dist/cjs/services/documentStore/unversioned/index.js",
161
- "import": "./dist/esm/services/documentStore/unversioned/index.js",
162
- "require": "./dist/cjs/services/documentStore/unversioned/index.js"
163
- },
164
- "./services/documentStore/versioned": {
165
- "browser": "./dist/cjs/services/documentStore/versioned/index.js",
166
- "import": "./dist/esm/services/documentStore/versioned/index.js",
167
- "require": "./dist/cjs/services/documentStore/versioned/index.js"
168
- },
169
- "./services/lrsGateway": {
170
- "browser": "./dist/cjs/services/lrsGateway/index.js",
171
- "import": "./dist/esm/services/lrsGateway/index.js",
172
- "require": "./dist/cjs/services/lrsGateway/index.js"
173
- },
174
- "./services/authProvider": {
175
- "browser": "./dist/cjs/services/authProvider/index.js",
176
- "import": "./dist/esm/services/authProvider/index.js",
177
- "require": "./dist/cjs/services/authProvider/index.js"
178
- },
179
- "./services/authProvider/utils": {
180
- "browser": "./dist/cjs/services/authProvider/utils/index.js",
181
- "import": "./dist/esm/services/authProvider/utils/index.js",
182
- "require": "./dist/cjs/services/authProvider/utils/index.js"
183
- },
184
- "./services/apiGateway": {
185
- "browser": "./dist/cjs/services/apiGateway/index.js",
186
- "import": "./dist/esm/services/apiGateway/index.js",
187
- "require": "./dist/cjs/services/apiGateway/index.js"
188
- },
189
- "./services/fileServer": {
190
- "browser": "./dist/cjs/services/fileServer/index.js",
191
- "import": "./dist/esm/services/fileServer/index.js",
192
- "require": "./dist/cjs/services/fileServer/index.js"
193
- },
194
- "./services/postgresConnection": {
195
- "browser": "./dist/cjs/services/postgresConnection/index.js",
196
- "import": "./dist/esm/services/postgresConnection/index.js",
197
- "require": "./dist/cjs/services/postgresConnection/index.js"
198
- }
199
- },
200
- "files": [
201
- "dist",
202
- "script"
203
- ],
204
- "license": "MIT",
205
- "main": "index.js",
206
- "peerDependencies": {
207
- "@opensearch-project/opensearch": "^1.2.0",
208
- "cors": "^2.8.5",
209
- "express": "^4.17.3",
210
- "multer": "^1.4.5-lts.1",
211
- "postgres": "^3.4.5",
212
- "zod": "^4.0.15"
213
- },
214
- "scripts": {
215
- "build": "./script/build.bash",
216
- "build:clean": "yarn clean && yarn build",
217
- "ci": "CI=true npm-run-all ci:*",
218
- "ci:lint": "eslint --max-warnings=0 .",
219
- "ci:spelling": "git ls-files | yarn cspell -c ../../cspell.json --file-list stdin",
220
- "ci:test": "yarn jest --coverage",
221
- "ci:typecheck": "tsc --noEmit",
222
- "clean": "rm -rf dist",
223
- "coverage-report": "open coverage/index.html",
224
- "start": "./script/build.bash --watch",
225
- "test": "yarn jest"
226
- },
227
- "sideEffects": false,
228
- "types": "index.d.ts",
229
- "typesVersions": {
230
- "*": {
231
- "*": [
232
- "dist/esm/*",
233
- "dist/esm/*.d.ts",
234
- "dist/esm/*/index.d.ts"
235
- ]
236
- }
237
- }
238
- }