@effect-app/infra 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/.eslintrc.cjs +11 -0
  2. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-314902b6271c341511f7398a50469024 +0 -0
  3. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-3f072cc7afa09b6adaead0527ab9df83 +0 -0
  4. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-74c3c295c110fc861b6a4c673afc3e24 +0 -0
  5. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-bf6dae8cb9ea9740ceb39aefaf12716c +0 -0
  6. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-cf9d1486029526079a5f68f2041dea02 +0 -0
  7. package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-b4710ed9fb3d0757c4bf23045c585670 +0 -0
  8. package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-ee17e5395bb1b7b36a4e2e22a6ae1449 +0 -0
  9. package/.jest-cache/haste-map-7dc16d7fae8c072843ed1c69eae73100-a8a4225b317477b49bca31f54559afb3-c16136699bb7f463be85273162b447c3 +0 -0
  10. package/.jest-cache/haste-map-9aa1e395a82e108eb49698982c574272-e2f1f4b6d87214e3c49442fed31f310c-f7435f46fc41ac5a13d06a49cae9a650 +0 -0
  11. package/.jest-cache/haste-map-9d206b45d610536c9ec65eec263c6964-a8a4225b317477b49bca31f54559afb3-3510506a330b44f1ae629033aac8fbb3 +0 -0
  12. package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-17b550b450b18840c25861aa6e835f0c +0 -0
  13. package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-4dc31290b1efc98335eb4c89167d75c3 +0 -0
  14. package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-997106edf4bbc31567a378146180e45e +0 -0
  15. package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-f0cd25414f9ed16c446940ca3aa23c1b +0 -0
  16. package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-2cac07d09e6384e2d37c49714edad0ba +0 -0
  17. package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-d7967c2976c5feac7161c964f0aa442f +0 -0
  18. package/.jest-cache/haste-map-fb1a173276d25bbff02f815600059283-938122bdc1c8836874b6585d7acb2e99-f705929cca05ce95ceaa6d520b560ce8 +0 -0
  19. package/.prettierignore +6 -0
  20. package/_cjs/_global.cjs +6 -0
  21. package/_cjs/_global.cjs.map +1 -0
  22. package/_cjs/_global.ext.cjs +6 -0
  23. package/_cjs/_global.ext.cjs.map +1 -0
  24. package/_cjs/_global.schema.cjs +5 -0
  25. package/_cjs/_global.schema.cjs.map +1 -0
  26. package/_cjs/errors.cjs +82 -0
  27. package/_cjs/errors.cjs.map +1 -0
  28. package/_cjs/ext.cjs +4 -0
  29. package/_cjs/ext.cjs.map +1 -0
  30. package/_cjs/index.cjs +6 -0
  31. package/_cjs/index.cjs.map +1 -0
  32. package/_cjs/lib/RequestContext.cjs +70 -0
  33. package/_cjs/lib/RequestContext.cjs.map +1 -0
  34. package/_cjs/lib/api/authorization.jwt.cjs +44 -0
  35. package/_cjs/lib/api/authorization.jwt.cjs.map +1 -0
  36. package/_cjs/lib/api/defaultErrorHandler.cjs +45 -0
  37. package/_cjs/lib/api/defaultErrorHandler.cjs.map +1 -0
  38. package/_cjs/lib/api/reportError.cjs +64 -0
  39. package/_cjs/lib/api/reportError.cjs.map +1 -0
  40. package/_cjs/lib/api/routing.cjs +262 -0
  41. package/_cjs/lib/api/routing.cjs.map +1 -0
  42. package/_cjs/lib/api/setupRequest.cjs +35 -0
  43. package/_cjs/lib/api/setupRequest.cjs.map +1 -0
  44. package/_cjs/lib/api/util.cjs +17 -0
  45. package/_cjs/lib/api/util.cjs.map +1 -0
  46. package/_cjs/lib/api/writeDocs.cjs +31 -0
  47. package/_cjs/lib/api/writeDocs.cjs.map +1 -0
  48. package/_cjs/lib/errorReporter.cjs +72 -0
  49. package/_cjs/lib/errorReporter.cjs.map +1 -0
  50. package/_cjs/lib/ext/Array.cjs +30 -0
  51. package/_cjs/lib/ext/Array.cjs.map +1 -0
  52. package/_cjs/lib/fileUtil.cjs +36 -0
  53. package/_cjs/lib/fileUtil.cjs.map +1 -0
  54. package/_cjs/lib/filter/types/errors.cjs +6 -0
  55. package/_cjs/lib/filter/types/errors.cjs.map +1 -0
  56. package/_cjs/lib/filter/types/fields.cjs +6 -0
  57. package/_cjs/lib/filter/types/fields.cjs.map +1 -0
  58. package/_cjs/lib/filter/types/index.cjs +61 -0
  59. package/_cjs/lib/filter/types/index.cjs.map +1 -0
  60. package/_cjs/lib/filter/types/path/common.cjs +6 -0
  61. package/_cjs/lib/filter/types/path/common.cjs.map +1 -0
  62. package/_cjs/lib/filter/types/path/eager.cjs +6 -0
  63. package/_cjs/lib/filter/types/path/eager.cjs.map +1 -0
  64. package/_cjs/lib/filter/types/path/index.cjs +8 -0
  65. package/_cjs/lib/filter/types/path/index.cjs.map +1 -0
  66. package/_cjs/lib/filter/types/utils.cjs +6 -0
  67. package/_cjs/lib/filter/types/utils.cjs.map +1 -0
  68. package/_cjs/lib/filter/types/validator.cjs +6 -0
  69. package/_cjs/lib/filter/types/validator.cjs.map +1 -0
  70. package/_cjs/lib/filter.cjs +238 -0
  71. package/_cjs/lib/filter.cjs.map +1 -0
  72. package/_cjs/lib/instrument.cjs +20 -0
  73. package/_cjs/lib/instrument.cjs.map +1 -0
  74. package/_cjs/lib/rateLimit.cjs +88 -0
  75. package/_cjs/lib/rateLimit.cjs.map +1 -0
  76. package/_cjs/services/CUPS/service.cjs +15 -0
  77. package/_cjs/services/CUPS/service.cjs.map +1 -0
  78. package/_cjs/services/CUPS.cjs +113 -0
  79. package/_cjs/services/CUPS.cjs.map +1 -0
  80. package/_cjs/services/Cache.cjs +39 -0
  81. package/_cjs/services/Cache.cjs.map +1 -0
  82. package/_cjs/services/Emailer/Sendgrid.cjs +112 -0
  83. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -0
  84. package/_cjs/services/Emailer/fake.cjs +24 -0
  85. package/_cjs/services/Emailer/fake.cjs.map +1 -0
  86. package/_cjs/services/Emailer/service.cjs +12 -0
  87. package/_cjs/services/Emailer/service.cjs.map +1 -0
  88. package/_cjs/services/Emailer.cjs +17 -0
  89. package/_cjs/services/Emailer.cjs.map +1 -0
  90. package/_cjs/services/Repository.cjs +247 -0
  91. package/_cjs/services/Repository.cjs.map +1 -0
  92. package/_cjs/services/ServiceBus.cjs +69 -0
  93. package/_cjs/services/ServiceBus.cjs.map +1 -0
  94. package/_cjs/services/Store/Cosmos.cjs +324 -0
  95. package/_cjs/services/Store/Cosmos.cjs.map +1 -0
  96. package/_cjs/services/Store/Cosmos.test.cjs +59 -0
  97. package/_cjs/services/Store/Cosmos.test.cjs.map +1 -0
  98. package/_cjs/services/Store/Disk.cjs +62 -0
  99. package/_cjs/services/Store/Disk.cjs.map +1 -0
  100. package/_cjs/services/Store/Memory.cjs +70 -0
  101. package/_cjs/services/Store/Memory.cjs.map +1 -0
  102. package/_cjs/services/Store/Redis.cjs +72 -0
  103. package/_cjs/services/Store/Redis.cjs.map +1 -0
  104. package/_cjs/services/Store/codeFilter.test.cjs +61 -0
  105. package/_cjs/services/Store/codeFilter.test.cjs.map +1 -0
  106. package/_cjs/services/Store/index.cjs +72 -0
  107. package/_cjs/services/Store/index.cjs.map +1 -0
  108. package/_cjs/services/Store/service.cjs +72 -0
  109. package/_cjs/services/Store/service.cjs.map +1 -0
  110. package/_cjs/services/Store/utils.cjs +78 -0
  111. package/_cjs/services/Store/utils.cjs.map +1 -0
  112. package/_cjs/services/Store.cjs +17 -0
  113. package/_cjs/services/Store.cjs.map +1 -0
  114. package/_cjs/services/memQueue.cjs +32 -0
  115. package/_cjs/services/memQueue.cjs.map +1 -0
  116. package/_cjs/test.arbs.cjs +32 -0
  117. package/_cjs/test.arbs.cjs.map +1 -0
  118. package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs +14 -0
  119. package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs.map +1 -0
  120. package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs +29 -0
  121. package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs.map +1 -0
  122. package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs +32 -0
  123. package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs.map +1 -0
  124. package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs +266 -0
  125. package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs.map +1 -0
  126. package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs +31 -0
  127. package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs.map +1 -0
  128. package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs +67 -0
  129. package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs.map +1 -0
  130. package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs +44 -0
  131. package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs.map +1 -0
  132. package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs +33 -0
  133. package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs.map +1 -0
  134. package/_cjs/vendor/Cache/Cache/definition.cjs +13 -0
  135. package/_cjs/vendor/Cache/Cache/definition.cjs.map +1 -0
  136. package/_cjs/vendor/Cache/Cache/operations/make.cjs +20 -0
  137. package/_cjs/vendor/Cache/Cache/operations/make.cjs.map +1 -0
  138. package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs +23 -0
  139. package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs.map +1 -0
  140. package/_cjs/vendor/Cache/Cache/operations.cjs +28 -0
  141. package/_cjs/vendor/Cache/Cache/operations.cjs.map +1 -0
  142. package/_cjs/vendor/Cache/Cache.cjs +28 -0
  143. package/_cjs/vendor/Cache/Cache.cjs.map +1 -0
  144. package/_cjs/vendor/Cache/CacheStats/definition.cjs +13 -0
  145. package/_cjs/vendor/Cache/CacheStats/definition.cjs.map +1 -0
  146. package/_cjs/vendor/Cache/CacheStats.cjs +17 -0
  147. package/_cjs/vendor/Cache/CacheStats.cjs.map +1 -0
  148. package/_cjs/vendor/Cache/EntryStats/definition.cjs +11 -0
  149. package/_cjs/vendor/Cache/EntryStats/definition.cjs.map +1 -0
  150. package/_cjs/vendor/Cache/EntryStats.cjs +17 -0
  151. package/_cjs/vendor/Cache/EntryStats.cjs.map +1 -0
  152. package/_cjs/vendor/Cache/Lookup/definition.cjs +6 -0
  153. package/_cjs/vendor/Cache/Lookup/definition.cjs.map +1 -0
  154. package/_cjs/vendor/Cache/Lookup.cjs +17 -0
  155. package/_cjs/vendor/Cache/Lookup.cjs.map +1 -0
  156. package/_cjs/vendor/Cache/index.cjs +17 -0
  157. package/_cjs/vendor/Cache/index.cjs.map +1 -0
  158. package/_src/_global.ext.ts +34 -0
  159. package/_src/_global.schema.ts +10 -0
  160. package/_src/_global.ts +14 -0
  161. package/_src/errors.ts +50 -0
  162. package/_src/ext.ts +1 -0
  163. package/_src/index.ts +0 -0
  164. package/_src/lib/RequestContext.ts +132 -0
  165. package/_src/lib/api/authorization.jwt.ts +52 -0
  166. package/_src/lib/api/defaultErrorHandler.ts +92 -0
  167. package/_src/lib/api/reportError.ts +50 -0
  168. package/_src/lib/api/routing.ts +623 -0
  169. package/_src/lib/api/setupRequest.ts +22 -0
  170. package/_src/lib/api/util.ts +14 -0
  171. package/_src/lib/api/writeDocs.ts +26 -0
  172. package/_src/lib/errorReporter.ts +63 -0
  173. package/_src/lib/ext/Array.ts +32 -0
  174. package/_src/lib/fileUtil.ts +56 -0
  175. package/_src/lib/filter/types/errors.ts +47 -0
  176. package/_src/lib/filter/types/fields.ts +50 -0
  177. package/_src/lib/filter/types/index.ts +5 -0
  178. package/_src/lib/filter/types/path/common.ts +404 -0
  179. package/_src/lib/filter/types/path/eager.ts +146 -0
  180. package/_src/lib/filter/types/path/index.ts +14 -0
  181. package/_src/lib/filter/types/utils.ts +106 -0
  182. package/_src/lib/filter/types/validator.ts +46 -0
  183. package/_src/lib/filter.ts +323 -0
  184. package/_src/lib/instrument.ts +9 -0
  185. package/_src/lib/rateLimit.ts +126 -0
  186. package/_src/services/CUPS/service.ts +16 -0
  187. package/_src/services/CUPS.ts +105 -0
  188. package/_src/services/Cache.ts +45 -0
  189. package/_src/services/Emailer/Sendgrid.ts +123 -0
  190. package/_src/services/Emailer/fake.ts +14 -0
  191. package/_src/services/Emailer/service.ts +33 -0
  192. package/_src/services/Emailer.ts +1 -0
  193. package/_src/services/Repository.ts +513 -0
  194. package/_src/services/ServiceBus.ts +111 -0
  195. package/_src/services/Store/Cosmos.test.ts +91 -0
  196. package/_src/services/Store/Cosmos.ts +545 -0
  197. package/_src/services/Store/Disk.ts +81 -0
  198. package/_src/services/Store/Memory.ts +77 -0
  199. package/_src/services/Store/Redis.ts +92 -0
  200. package/_src/services/Store/codeFilter.test.ts +74 -0
  201. package/_src/services/Store/index.test.ts.bak +112 -0
  202. package/_src/services/Store/index.ts +62 -0
  203. package/_src/services/Store/service.ts +174 -0
  204. package/_src/services/Store/utils.ts +126 -0
  205. package/_src/services/Store.ts +1 -0
  206. package/_src/services/memQueue.ts +30 -0
  207. package/_src/test.arbs.ts +27 -0
  208. package/_src/vendor/Cache/Cache/_internal/AtomicBoolean.ts +7 -0
  209. package/_src/vendor/Cache/Cache/_internal/AtomicNumber.ts +28 -0
  210. package/_src/vendor/Cache/Cache/_internal/AtomicReference.ts +30 -0
  211. package/_src/vendor/Cache/Cache/_internal/CacheInternal.ts +293 -0
  212. package/_src/vendor/Cache/Cache/_internal/CacheState.ts +56 -0
  213. package/_src/vendor/Cache/Cache/_internal/KeySet.ts +58 -0
  214. package/_src/vendor/Cache/Cache/_internal/MapKey.ts +43 -0
  215. package/_src/vendor/Cache/Cache/_internal/MapValue.ts +39 -0
  216. package/_src/vendor/Cache/Cache/definition.ts +112 -0
  217. package/_src/vendor/Cache/Cache/operations/make.ts +17 -0
  218. package/_src/vendor/Cache/Cache/operations/makeWith.ts +32 -0
  219. package/_src/vendor/Cache/Cache/operations.ts +4 -0
  220. package/_src/vendor/Cache/Cache.ts +4 -0
  221. package/_src/vendor/Cache/CacheStats/definition.ts +23 -0
  222. package/_src/vendor/Cache/CacheStats.ts +3 -0
  223. package/_src/vendor/Cache/EntryStats/definition.ts +19 -0
  224. package/_src/vendor/Cache/EntryStats.ts +3 -0
  225. package/_src/vendor/Cache/Lookup/definition.ts +15 -0
  226. package/_src/vendor/Cache/Lookup.ts +3 -0
  227. package/_src/vendor/Cache/global.ts.bak +23 -0
  228. package/_src/vendor/Cache/index.ts +4 -0
  229. package/dist/_global.d.ts +10 -0
  230. package/dist/_global.d.ts.map +1 -0
  231. package/dist/_global.ext.d.ts +34 -0
  232. package/dist/_global.ext.d.ts.map +1 -0
  233. package/dist/_global.ext.js +2 -0
  234. package/dist/_global.js +12 -0
  235. package/dist/_global.schema.d.ts +6 -0
  236. package/dist/_global.schema.d.ts.map +1 -0
  237. package/dist/_global.schema.js +9 -0
  238. package/dist/errors.d.ts +41 -0
  239. package/dist/errors.d.ts.map +1 -0
  240. package/dist/errors.js +51 -0
  241. package/dist/ext.d.ts +2 -0
  242. package/dist/ext.d.ts.map +1 -0
  243. package/dist/ext.js +2 -0
  244. package/dist/index.d.ts +2 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +2 -0
  247. package/dist/lib/RequestContext.d.ts +122 -0
  248. package/dist/lib/RequestContext.d.ts.map +1 -0
  249. package/dist/lib/RequestContext.js +52 -0
  250. package/dist/lib/api/authorization.jwt.d.ts +7 -0
  251. package/dist/lib/api/authorization.jwt.d.ts.map +1 -0
  252. package/dist/lib/api/authorization.jwt.js +32 -0
  253. package/dist/lib/api/defaultErrorHandler.d.ts +8 -0
  254. package/dist/lib/api/defaultErrorHandler.d.ts.map +1 -0
  255. package/dist/lib/api/defaultErrorHandler.js +37 -0
  256. package/dist/lib/api/reportError.d.ts +32 -0
  257. package/dist/lib/api/reportError.d.ts.map +1 -0
  258. package/dist/lib/api/reportError.js +44 -0
  259. package/dist/lib/api/routing.d.ts +100 -0
  260. package/dist/lib/api/routing.d.ts.map +1 -0
  261. package/dist/lib/api/routing.js +248 -0
  262. package/dist/lib/api/setupRequest.d.ts +13 -0
  263. package/dist/lib/api/setupRequest.d.ts.map +1 -0
  264. package/dist/lib/api/setupRequest.js +25 -0
  265. package/dist/lib/api/util.d.ts +3 -0
  266. package/dist/lib/api/util.d.ts.map +1 -0
  267. package/dist/lib/api/util.js +14 -0
  268. package/dist/lib/api/writeDocs.d.ts +3 -0
  269. package/dist/lib/api/writeDocs.d.ts.map +1 -0
  270. package/dist/lib/api/writeDocs.js +23 -0
  271. package/dist/lib/errorReporter.d.ts +8 -0
  272. package/dist/lib/errorReporter.d.ts.map +1 -0
  273. package/dist/lib/errorReporter.js +45 -0
  274. package/dist/lib/ext/Array.d.ts +19 -0
  275. package/dist/lib/ext/Array.d.ts.map +1 -0
  276. package/dist/lib/ext/Array.js +21 -0
  277. package/dist/lib/fileUtil.d.ts +22 -0
  278. package/dist/lib/fileUtil.d.ts.map +1 -0
  279. package/dist/lib/fileUtil.js +23 -0
  280. package/dist/lib/filter/types/errors.d.ts +30 -0
  281. package/dist/lib/filter/types/errors.d.ts.map +1 -0
  282. package/dist/lib/filter/types/errors.js +2 -0
  283. package/dist/lib/filter/types/fields.d.ts +29 -0
  284. package/dist/lib/filter/types/fields.d.ts.map +1 -0
  285. package/dist/lib/filter/types/fields.js +2 -0
  286. package/dist/lib/filter/types/index.d.ts +6 -0
  287. package/dist/lib/filter/types/index.d.ts.map +1 -0
  288. package/dist/lib/filter/types/index.js +6 -0
  289. package/dist/lib/filter/types/path/common.d.ts +316 -0
  290. package/dist/lib/filter/types/path/common.d.ts.map +1 -0
  291. package/dist/lib/filter/types/path/common.js +2 -0
  292. package/dist/lib/filter/types/path/eager.d.ts +95 -0
  293. package/dist/lib/filter/types/path/eager.d.ts.map +1 -0
  294. package/dist/lib/filter/types/path/eager.js +2 -0
  295. package/dist/lib/filter/types/path/index.d.ts +4 -0
  296. package/dist/lib/filter/types/path/index.d.ts.map +1 -0
  297. package/dist/lib/filter/types/path/index.js +4 -0
  298. package/dist/lib/filter/types/utils.d.ts +68 -0
  299. package/dist/lib/filter/types/utils.d.ts.map +1 -0
  300. package/dist/lib/filter/types/utils.js +2 -0
  301. package/dist/lib/filter/types/validator.d.ts +30 -0
  302. package/dist/lib/filter/types/validator.d.ts.map +1 -0
  303. package/dist/lib/filter/types/validator.js +2 -0
  304. package/dist/lib/filter.d.ts +133 -0
  305. package/dist/lib/filter.d.ts.map +1 -0
  306. package/dist/lib/filter.js +171 -0
  307. package/dist/lib/instrument.d.ts +7 -0
  308. package/dist/lib/instrument.d.ts.map +1 -0
  309. package/dist/lib/instrument.js +12 -0
  310. package/dist/lib/rateLimit.d.ts +43 -0
  311. package/dist/lib/rateLimit.d.ts.map +1 -0
  312. package/dist/lib/rateLimit.js +76 -0
  313. package/dist/services/CUPS/service.d.ts +19 -0
  314. package/dist/services/CUPS/service.d.ts.map +1 -0
  315. package/dist/services/CUPS/service.js +5 -0
  316. package/dist/services/CUPS.d.ts +10 -0
  317. package/dist/services/CUPS.d.ts.map +1 -0
  318. package/dist/services/CUPS.js +89 -0
  319. package/dist/services/Cache.d.ts +28 -0
  320. package/dist/services/Cache.d.ts.map +1 -0
  321. package/dist/services/Cache.js +28 -0
  322. package/dist/services/Emailer/Sendgrid.d.ts +180 -0
  323. package/dist/services/Emailer/Sendgrid.d.ts.map +1 -0
  324. package/dist/services/Emailer/Sendgrid.js +102 -0
  325. package/dist/services/Emailer/fake.d.ts +7 -0
  326. package/dist/services/Emailer/fake.d.ts.map +1 -0
  327. package/dist/services/Emailer/fake.js +15 -0
  328. package/dist/services/Emailer/service.d.ts +41 -0
  329. package/dist/services/Emailer/service.d.ts.map +1 -0
  330. package/dist/services/Emailer/service.js +3 -0
  331. package/dist/services/Emailer.d.ts +2 -0
  332. package/dist/services/Emailer.d.ts.map +1 -0
  333. package/dist/services/Emailer.js +2 -0
  334. package/dist/services/Repository.d.ts +300 -0
  335. package/dist/services/Repository.d.ts.map +1 -0
  336. package/dist/services/Repository.js +193 -0
  337. package/dist/services/ServiceBus.d.ts +26 -0
  338. package/dist/services/ServiceBus.d.ts.map +1 -0
  339. package/dist/services/ServiceBus.js +53 -0
  340. package/dist/services/Store/Cosmos.d.ts +56 -0
  341. package/dist/services/Store/Cosmos.d.ts.map +1 -0
  342. package/dist/services/Store/Cosmos.js +321 -0
  343. package/dist/services/Store/Cosmos.test.d.ts.map +1 -0
  344. package/dist/services/Store/Disk.d.ts +14 -0
  345. package/dist/services/Store/Disk.d.ts.map +1 -0
  346. package/dist/services/Store/Disk.js +52 -0
  347. package/dist/services/Store/Memory.d.ts +17 -0
  348. package/dist/services/Store/Memory.d.ts.map +1 -0
  349. package/dist/services/Store/Memory.js +60 -0
  350. package/dist/services/Store/Redis.d.ts +12 -0
  351. package/dist/services/Store/Redis.d.ts.map +1 -0
  352. package/dist/services/Store/Redis.js +59 -0
  353. package/dist/services/Store/codeFilter.test.d.ts.map +1 -0
  354. package/dist/services/Store/index.d.ts +10 -0
  355. package/dist/services/Store/index.d.ts.map +1 -0
  356. package/dist/services/Store/index.js +52 -0
  357. package/dist/services/Store/service.d.ts +113 -0
  358. package/dist/services/Store/service.d.ts.map +1 -0
  359. package/dist/services/Store/service.js +63 -0
  360. package/dist/services/Store/utils.d.ts +14 -0
  361. package/dist/services/Store/utils.d.ts.map +1 -0
  362. package/dist/services/Store/utils.js +103 -0
  363. package/dist/services/Store.d.ts +2 -0
  364. package/dist/services/Store.d.ts.map +1 -0
  365. package/dist/services/Store.js +2 -0
  366. package/dist/services/memQueue.d.ts +18 -0
  367. package/dist/services/memQueue.d.ts.map +1 -0
  368. package/dist/services/memQueue.js +24 -0
  369. package/dist/test.arbs.d.ts +13 -0
  370. package/dist/test.arbs.d.ts.map +1 -0
  371. package/dist/test.arbs.js +22 -0
  372. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts +5 -0
  373. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts.map +1 -0
  374. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.js +7 -0
  375. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts +8 -0
  376. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts.map +1 -0
  377. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.js +22 -0
  378. package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts +10 -0
  379. package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts.map +1 -0
  380. package/dist/vendor/Cache/Cache/_internal/AtomicReference.js +25 -0
  381. package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts +51 -0
  382. package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts.map +1 -0
  383. package/dist/vendor/Cache/Cache/_internal/CacheInternal.js +253 -0
  384. package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts +33 -0
  385. package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts.map +1 -0
  386. package/dist/vendor/Cache/Cache/_internal/CacheState.js +21 -0
  387. package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts +20 -0
  388. package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts.map +1 -0
  389. package/dist/vendor/Cache/Cache/_internal/KeySet.js +61 -0
  390. package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts +24 -0
  391. package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts.map +1 -0
  392. package/dist/vendor/Cache/Cache/_internal/MapKey.js +37 -0
  393. package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts +32 -0
  394. package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts.map +1 -0
  395. package/dist/vendor/Cache/Cache/_internal/MapValue.js +24 -0
  396. package/dist/vendor/Cache/Cache/definition.d.ts +100 -0
  397. package/dist/vendor/Cache/Cache/definition.d.ts.map +1 -0
  398. package/dist/vendor/Cache/Cache/definition.js +5 -0
  399. package/dist/vendor/Cache/Cache/operations/make.d.ts +12 -0
  400. package/dist/vendor/Cache/Cache/operations/make.d.ts.map +1 -0
  401. package/dist/vendor/Cache/Cache/operations/make.js +12 -0
  402. package/dist/vendor/Cache/Cache/operations/makeWith.d.ts +14 -0
  403. package/dist/vendor/Cache/Cache/operations/makeWith.d.ts.map +1 -0
  404. package/dist/vendor/Cache/Cache/operations/makeWith.js +15 -0
  405. package/dist/vendor/Cache/Cache/operations.d.ts +3 -0
  406. package/dist/vendor/Cache/Cache/operations.d.ts.map +1 -0
  407. package/dist/vendor/Cache/Cache/operations.js +4 -0
  408. package/dist/vendor/Cache/Cache.d.ts +3 -0
  409. package/dist/vendor/Cache/Cache.d.ts.map +1 -0
  410. package/dist/vendor/Cache/Cache.js +4 -0
  411. package/dist/vendor/Cache/CacheStats/definition.d.ts +19 -0
  412. package/dist/vendor/Cache/CacheStats/definition.d.ts.map +1 -0
  413. package/dist/vendor/Cache/CacheStats/definition.js +6 -0
  414. package/dist/vendor/Cache/CacheStats.d.ts +2 -0
  415. package/dist/vendor/Cache/CacheStats.d.ts.map +1 -0
  416. package/dist/vendor/Cache/CacheStats.js +3 -0
  417. package/dist/vendor/Cache/EntryStats/definition.d.ts +17 -0
  418. package/dist/vendor/Cache/EntryStats/definition.d.ts.map +1 -0
  419. package/dist/vendor/Cache/EntryStats/definition.js +4 -0
  420. package/dist/vendor/Cache/EntryStats.d.ts +2 -0
  421. package/dist/vendor/Cache/EntryStats.d.ts.map +1 -0
  422. package/dist/vendor/Cache/EntryStats.js +3 -0
  423. package/dist/vendor/Cache/Lookup/definition.d.ts +17 -0
  424. package/dist/vendor/Cache/Lookup/definition.d.ts.map +1 -0
  425. package/dist/vendor/Cache/Lookup/definition.js +2 -0
  426. package/dist/vendor/Cache/Lookup.d.ts +2 -0
  427. package/dist/vendor/Cache/Lookup.d.ts.map +1 -0
  428. package/dist/vendor/Cache/Lookup.js +3 -0
  429. package/dist/vendor/Cache/index.d.ts +5 -0
  430. package/dist/vendor/Cache/index.d.ts.map +1 -0
  431. package/dist/vendor/Cache/index.js +5 -0
  432. package/package.json +756 -0
  433. package/tsconfig.json +107 -0
  434. package/tsconfig.json.bak +47 -0
  435. package/tsplus.config.json +6 -0
  436. package/types/modules.d.ts +1 -0
  437. package/vitest.config.ts +5 -0
  438. package/wallaby.cjs +1 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _definition = require("./CacheStats/definition.cjs");
7
+ Object.keys(_definition).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _definition[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _definition[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=CacheStats.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheStats.cjs","mappings":";;;;;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA","names":[],"sourceRoot":"","sources":["../../../_src/vendor/Cache/CacheStats.ts"],"sourcesContent":[null]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EntryStats = void 0;
7
+ const EntryStats = loadedMillis => ({
8
+ loadedMillis
9
+ });
10
+ exports.EntryStats = EntryStats;
11
+ //# sourceMappingURL=definition.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.cjs","mappings":";;;;;;AAgBO,MAAMA,UAAU,GAAmBC,YAAY,KAAM;EAC1DA;CACD,CAAC;AAAA","names":["EntryStats","loadedMillis"],"sourceRoot":"","sources":["../../../../_src/vendor/Cache/EntryStats/definition.ts"],"sourcesContent":[null]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _definition = require("./EntryStats/definition.cjs");
7
+ Object.keys(_definition).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _definition[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _definition[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=EntryStats.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryStats.cjs","mappings":";;;;;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA","names":[],"sourceRoot":"","sources":["../../../_src/vendor/Cache/EntryStats.ts"],"sourcesContent":[null]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=definition.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.cjs","mappings":"","names":[],"sourceRoot":"","sources":[],"sourcesContent":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _definition = require("./Lookup/definition.cjs");
7
+ Object.keys(_definition).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _definition[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _definition[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=Lookup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lookup.cjs","mappings":";;;;;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA","names":[],"sourceRoot":"","sources":["../../../_src/vendor/Cache/Lookup.ts"],"sourcesContent":[null]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.lookup = exports.entryStats = exports.cacheStats = exports.cache = void 0;
7
+ var _cache = _interopRequireWildcard(require("./Cache.cjs"));
8
+ exports.cache = _cache;
9
+ var _cacheStats = _interopRequireWildcard(require("./CacheStats.cjs"));
10
+ exports.cacheStats = _cacheStats;
11
+ var _entryStats = _interopRequireWildcard(require("./EntryStats.cjs"));
12
+ exports.entryStats = _entryStats;
13
+ var _lookup = _interopRequireWildcard(require("./Lookup.cjs"));
14
+ exports.lookup = _lookup;
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","mappings":"","names":[],"sourceRoot":"","sources":[],"sourcesContent":[]}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @tsplus global
3
+ */
4
+ import type {} from "@effect-app/infra/services/Emailer/fake"
5
+ /**
6
+ * @tsplus global
7
+ */
8
+ import type {} from "@effect-app/infra/services/Emailer/Sendgrid"
9
+ /**
10
+ * @tsplus global
11
+ */
12
+ import type {} from "@effect-app/infra/test.arbs"
13
+ /**
14
+ * @tsplus global
15
+ */
16
+ import type {} from "@effect-app/infra/ext"
17
+ /**
18
+ * @tsplus global
19
+ */
20
+ import type {} from "@effect-app/infra/lib/instrument"
21
+ /**
22
+ * @tsplus global
23
+ */
24
+ import type {} from "@effect-app/infra/lib/rateLimit"
25
+
26
+ /**
27
+ * @tsplus global
28
+ */
29
+ import type {} from "@effect-app/infra/lib/api/setupRequest"
30
+
31
+ /**
32
+ * @tsplus global
33
+ */
34
+ import {} from "@effect-app/infra/lib/api/reportError"
@@ -0,0 +1,10 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ /* eslint-disable unused-imports/no-unused-imports */
3
+ // Required for tsplus with project references in vscode..
4
+
5
+ /**
6
+ * @tsplus global
7
+ */
8
+ import { allowAnonymous, Delete, Get, Patch, Post, Put } from "@effect-app/prelude/schema"
9
+
10
+ import "@effect-app/prelude/_global.schema"
@@ -0,0 +1,14 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ /* eslint-disable unused-imports/no-unused-imports */
3
+
4
+ /**
5
+ * @tsplus global
6
+ */
7
+ import "@effect-app/prelude/_global"
8
+
9
+ /**
10
+ * @tsplus global
11
+ */
12
+ import "@effect-app/infra-adapters/_global"
13
+
14
+ import "./_global.ext.js"
package/_src/errors.ts ADDED
@@ -0,0 +1,50 @@
1
+ import { NotLoggedInError } from "@effect-app/infra-adapters/errors"
2
+
3
+ export class NotFoundError<T extends string = string> {
4
+ public readonly _tag = "NotFoundError"
5
+ public readonly message: string
6
+ constructor(type: T, id: string) {
7
+ this.message = `Didn't find ${type}#${id}`
8
+ }
9
+ }
10
+
11
+ export { NotLoggedInError, UnauthorizedError, ValidationError } from "@effect-app/infra-adapters/errors"
12
+
13
+ /**
14
+ * The user carries a valid Userprofile, but there is a problem with the login none the less.
15
+ */
16
+ export class LoginError extends NotLoggedInError {
17
+ constructor(readonly message: string) {
18
+ super()
19
+ }
20
+ }
21
+
22
+ export class InvalidStateError {
23
+ public readonly _tag = "InvalidStateError"
24
+ constructor(public readonly message: string) {}
25
+ }
26
+
27
+ export class CauseException<E> extends Error {
28
+ readonly pretty: string
29
+ constructor(readonly exitCause: Cause<E>, readonly _tag: string) {
30
+ super(`An unexpected ${_tag} Exception occurred, see \`pretty\` for details.`)
31
+ this.pretty = exitCause.pretty()
32
+ }
33
+
34
+ toJSON() {
35
+ return {
36
+ _tag: this._tag,
37
+ message: this.message,
38
+ pretty: this.pretty
39
+ // cause: (this.cause as {}).$$.inspect(undefined, 10)
40
+ }
41
+ }
42
+ }
43
+
44
+ export class OptimisticConcurrencyException {
45
+ readonly _tag = "OptimisticConcurrencyException"
46
+ readonly message: string
47
+ constructor(readonly type: string, readonly id: string, readonly current?: string, readonly found?: string) {
48
+ this.message = `Existing ${type} ${id} record changed`
49
+ }
50
+ }
package/_src/ext.ts ADDED
@@ -0,0 +1 @@
1
+ import "./lib/ext/Array.js"
package/_src/index.ts ADDED
File without changes
@@ -0,0 +1,132 @@
1
+ export const RequestId = StringId
2
+ export type RequestId = ParsedShapeOfCustom<typeof RequestId>
3
+
4
+ export class RequestContextParent extends MNModel<
5
+ RequestContextParent,
6
+ RequestContextParent.ConstructorInput,
7
+ RequestContextParent.Encoded,
8
+ RequestContextParent.Props
9
+ >()({
10
+ _tag: prop(literal("RequestContext")),
11
+ id: prop(RequestId),
12
+ name: prop(ReasonableString),
13
+ locale: prop(literal("en", "de")),
14
+ createdAt: defaultProp(date)
15
+ }) {}
16
+ /** @ignore @internal @deprecated */
17
+ export type RequestContextParentConstructor = typeof RequestContextParent
18
+
19
+ export function makeRequestId() {
20
+ return RequestId.make()
21
+ }
22
+
23
+ /**
24
+ * @tsplus type RequestContext
25
+ * @tsplus companion RequestContext.Ops
26
+ */
27
+ export class RequestContext extends MNModel<
28
+ RequestContext,
29
+ RequestContext.ConstructorInput,
30
+ RequestContext.Encoded,
31
+ RequestContext.Props
32
+ >()({
33
+ ...RequestContextParent.omit("id"),
34
+ id: defaultProp(RequestId, makeRequestId),
35
+ rootId: prop(RequestId),
36
+ parent: optProp(RequestContextParent)
37
+ }) {
38
+ static inherit(
39
+ this: void,
40
+ parent: RequestContext,
41
+ newSelf: RequestContextParent.ConstructorInput
42
+ ) {
43
+ return new RequestContext({
44
+ ...newSelf,
45
+ rootId: parent.rootId,
46
+ parent
47
+ })
48
+ }
49
+
50
+ static toMonitoring(this: void, self: RequestContext) {
51
+ return {
52
+ operationName: self.name,
53
+ locale: self.locale,
54
+ ...(self.parent
55
+ ? { parentOperationName: self.parent.name, parentLocale: self.parent.locale }
56
+ : {})
57
+ }
58
+ }
59
+ }
60
+
61
+ /** @ignore @internal @deprecated */
62
+ export type RequestContextConstructor = typeof RequestContext
63
+
64
+ /**
65
+ * @tsplus static RequestContext.Ops Tag
66
+ */
67
+ export const tag = Tag<RequestContext>()
68
+
69
+ /* eslint-disable */
70
+ export interface RequestContextParent {
71
+ readonly createdAt: Date
72
+ readonly id: RequestId
73
+ readonly locale: "de" | "en"
74
+ readonly name: ReasonableString
75
+ }
76
+ export namespace RequestContextParent {
77
+ /**
78
+ * @tsplus type RequestContextParent.Encoded
79
+ */
80
+ export interface Encoded {
81
+ readonly createdAt: string
82
+ readonly id: string
83
+ readonly locale: "de" | "en"
84
+ readonly name: string
85
+ }
86
+ export const Encoded: EncodedOps = { $: {} }
87
+ /**
88
+ * @tsplus type RequestContextParent.Encoded.Aspects
89
+ */
90
+ export interface EncodedAspects {}
91
+ /**
92
+ * @tsplus type RequestContextParent.Encoded.Ops
93
+ */
94
+ export interface EncodedOps { $: EncodedAspects }
95
+ export interface ConstructorInput
96
+ extends ConstructorInputFromApi<typeof RequestContextParent> {}
97
+ export interface Props extends GetProvidedProps<typeof RequestContextParent> {}
98
+ }
99
+ export interface RequestContext {
100
+ readonly createdAt: Date
101
+ readonly id: RequestId
102
+ readonly locale: "de" | "en"
103
+ readonly name: ReasonableString
104
+ readonly parent?: RequestContextParent | undefined
105
+ readonly rootId: RequestId
106
+ }
107
+ export namespace RequestContext {
108
+ /**
109
+ * @tsplus type RequestContext.Encoded
110
+ */
111
+ export interface Encoded {
112
+ readonly createdAt: string
113
+ readonly id: string
114
+ readonly locale: "de" | "en"
115
+ readonly name: string
116
+ readonly parent?: RequestContextParent.Encoded | undefined
117
+ readonly rootId: string
118
+ }
119
+ export const Encoded: EncodedOps = { $: {} }
120
+ /**
121
+ * @tsplus type RequestContext.Encoded.Aspects
122
+ */
123
+ export interface EncodedAspects {}
124
+ /**
125
+ * @tsplus type RequestContext.Encoded.Ops
126
+ */
127
+ export interface EncodedOps { $: EncodedAspects }
128
+ export interface ConstructorInput
129
+ extends ConstructorInputFromApi<typeof RequestContext> {}
130
+ export interface Props extends GetProvidedProps<typeof RequestContext> {}
131
+ }
132
+ /* eslint-enable */
@@ -0,0 +1,52 @@
1
+ // import { configM, UserSVC } from "@/services.js"
2
+ import * as Ex from "@effect-app/infra-adapters/express/index"
3
+ import { expressjwt } from "express-jwt"
4
+ import jwtAuthz from "express-jwt-authz"
5
+ import jwksRsa from "jwks-rsa"
6
+
7
+ // Authorization middleware. When used, the
8
+ // Access Token must exist and be verified against
9
+ // the Auth0 JSON Web Key Set
10
+ export const checkJwt = (audience: string, issuer: string) =>
11
+ expressjwt({
12
+ // Dynamically provide a signing key
13
+ // based on the kid in the header and
14
+ // the signing keys provided by the JWKS endpoint.
15
+ secret: jwksRsa.expressJwtSecret({
16
+ cache: true,
17
+ rateLimit: true,
18
+ jwksRequestsPerMinute: 5,
19
+ jwksUri: `${issuer}/.well-known/jwks.json`
20
+ }) as jwksRsa.GetVerificationKey,
21
+
22
+ // Validate the audience and the issuer.
23
+ audience,
24
+ issuer: [issuer + "/"],
25
+ algorithms: ["RS256"]
26
+ })
27
+
28
+ const demandScopes = jwtAuthz([])
29
+
30
+ // export const auth = configM(
31
+ // (cfg) =>
32
+ // cfg.AUTH_DISABLED
33
+ // ? Effect.unit
34
+ // : Ex.use(Ex.classic(checkJwt)) > Ex.use(Ex.classic(demandScopes)) // TODO
35
+ // )
36
+ export const scopes = Ex.classic(demandScopes)
37
+
38
+ /*
39
+ configM(cfg => {
40
+ const handleJwt = Ex.classic(
41
+ checkJwt(cfg.AUTH0_AUDIENCE, cfg.AUTH0_ISSUER_BASE_URL)
42
+ )
43
+ return (
44
+ cfg.AUTH_DISABLED
45
+ ? Effect(null)
46
+ : // eslint-disable-next-line @typescript-eslint/no-empty-function
47
+ handleJwt(req, res, () => scopes(req, res, () => {}))
48
+ ).zipRight(
49
+ cfg.AUTH_DISABLED
50
+ // ..
51
+ ).toLayer(UserProfile)
52
+ */
@@ -0,0 +1,92 @@
1
+ import type express from "express"
2
+ import type {
3
+ InvalidStateError,
4
+ NotFoundError,
5
+ NotLoggedInError,
6
+ OptimisticConcurrencyException,
7
+ UnauthorizedError,
8
+ ValidationError
9
+ } from "../../errors.js"
10
+ import type { RequestContext } from "../RequestContext.js"
11
+ import { logRequestError } from "./reportError.js"
12
+
13
+ export function defaultBasicErrorHandler<R>(
14
+ _req: express.Request,
15
+ res: express.Response,
16
+ _requestContext: RequestContext,
17
+ r2: Effect<R, ValidationError, void>
18
+ ) {
19
+ return r2
20
+ .tapErrorCause(cause => cause.isFailure() ? logRequestError(cause) : Effect.unit)
21
+ .catchTag("ValidationError", err =>
22
+ Effect(() => {
23
+ res.status(400).send(err.errors)
24
+ }))
25
+ // final catch all; expecting never so that unhandled known errors will show up
26
+ .catchAll((err: never) =>
27
+ Effect.logError(
28
+ "Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err
29
+ )
30
+ .map(() => err as unknown)
31
+ .flatMap(Effect.die)
32
+ )
33
+ }
34
+
35
+ const optimisticConcurrencySchedule = Schedule.once() &&
36
+ Schedule.recurWhile<SupportedErrors>(a => a._tag === "OptimisticConcurrencyException")
37
+
38
+ export function defaultErrorHandler<R>(
39
+ req: express.Request,
40
+ res: express.Response,
41
+ _: RequestContext,
42
+ r2: Effect<R, SupportedErrors, void>
43
+ ) {
44
+ const r3 = (
45
+ req.method === "PATCH"
46
+ ? r2.retry(optimisticConcurrencySchedule)
47
+ : r2
48
+ )
49
+ return r3
50
+ .tapErrorCause(cause => cause.isFailure() ? logRequestError(cause) : Effect.unit)
51
+ .catchTag("ValidationError", err =>
52
+ Effect(() => {
53
+ res.status(400).send(err.errors)
54
+ }))
55
+ .catchTag("NotFoundError", err =>
56
+ Effect(() => {
57
+ res.status(404).send(err)
58
+ }))
59
+ .catchTag("NotLoggedInError", err =>
60
+ Effect(() => {
61
+ res.status(401).send(err)
62
+ }))
63
+ .catchTag("UnauthorizedError", err =>
64
+ Effect(() => {
65
+ res.status(403).send(err)
66
+ }))
67
+ .catchTag("InvalidStateError", err =>
68
+ Effect(() => {
69
+ res.status(422).send(err)
70
+ }))
71
+ .catchTag("OptimisticConcurrencyException", err =>
72
+ Effect(() => {
73
+ // 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
74
+ res.status(412).send(err)
75
+ }))
76
+ // final catch all; expecting never so that unhandled known errors will show up
77
+ .catchAll((err: never) =>
78
+ Effect.logError(
79
+ "Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err
80
+ )
81
+ .map(() => err as unknown)
82
+ .flatMap(Effect.die)
83
+ )
84
+ }
85
+
86
+ export type SupportedErrors =
87
+ | ValidationError
88
+ | NotFoundError
89
+ | NotLoggedInError
90
+ | UnauthorizedError
91
+ | InvalidStateError
92
+ | OptimisticConcurrencyException
@@ -0,0 +1,50 @@
1
+ import { CauseException } from "../../errors.js"
2
+ import { logError, reportError } from "../../lib/errorReporter.js"
3
+ import { RequestContext } from "../../lib/RequestContext.js"
4
+
5
+ export class RequestException<E> extends CauseException<E> {
6
+ constructor(cause: Cause<E>) {
7
+ super(cause, "Request")
8
+ }
9
+ }
10
+ export const reportRequestError_ = reportError(cause => new RequestException(cause))
11
+
12
+ export const reportRequestError = (cause: Cause<unknown>, context?: Record<string, unknown> | undefined) =>
13
+ RequestContext.Tag.accessWithEffect(requestContext => reportRequestError_(cause, { requestContext, ...context }))
14
+
15
+ export const logRequestError_ = logError(cause => new RequestException(cause))
16
+
17
+ export const logRequestError = (cause: Cause<unknown>, context?: Record<string, unknown> | undefined) =>
18
+ RequestContext.Tag.accessWithEffect(requestContext => logRequestError_(cause, { requestContext, ...context }))
19
+
20
+ /**
21
+ * Forks the effect into a new fiber attached to the global scope. Because the
22
+ * new fiber is attached to the global scope, when the fiber executing the
23
+ * returned effect terminates, the forked fiber will continue running.
24
+ *
25
+ * Reports errors.
26
+ *
27
+ * @tsplus getter effect/io/Effect forkDaemonReportRequest
28
+ */
29
+ export function forkDaemonReportRequest<R, E, A>(self: Effect<R, E, A>) {
30
+ return self.tapErrorCause(reportRequestError)
31
+ .fork.daemonChildren
32
+ }
33
+
34
+ /**
35
+ * Forks the effect into a new fiber attached to the global scope. Because the
36
+ * new fiber is attached to the global scope, when the fiber executing the
37
+ * returned effect terminates, the forked fiber will continue running.
38
+ *
39
+ * Reports errors.
40
+ *
41
+ * @tsplus getter effect/io/Effect forkDaemonReportRequestUnexpected
42
+ */
43
+ export function forkDaemonReportRequestUnexpected<R, E, A>(self: Effect<R, E, A>) {
44
+ return self.tapErrorCause(cause =>
45
+ cause.isInterruptedOnly() || cause.isDie()
46
+ ? reportRequestError(cause)
47
+ : logRequestError(cause)
48
+ )
49
+ .fork.daemonChildren
50
+ }