@effect-app/infra 4.0.0-beta.26 → 4.0.0-beta.260

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/CHANGELOG.md +1966 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +30 -11
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +35 -14
  6. package/dist/ClusterCosmos.d.ts +64 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +487 -0
  9. package/dist/ClusterServiceBus.d.ts +67 -0
  10. package/dist/ClusterServiceBus.d.ts.map +1 -0
  11. package/dist/ClusterServiceBus.js +82 -0
  12. package/dist/ContextProvider.d.ts +34 -0
  13. package/dist/ContextProvider.d.ts.map +1 -0
  14. package/dist/ContextProvider.js +40 -0
  15. package/dist/Emailer/Sendgrid.d.ts +111 -147
  16. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  17. package/dist/Emailer/Sendgrid.js +24 -19
  18. package/dist/Emailer/fake.d.ts +2 -2
  19. package/dist/Emailer/fake.d.ts.map +1 -1
  20. package/dist/Emailer/fake.js +4 -4
  21. package/dist/MainFiberSet.d.ts +12 -9
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +10 -6
  24. package/dist/QueueMaker/SQLQueue.d.ts +8 -9
  25. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  26. package/dist/QueueMaker/SQLQueue.js +138 -120
  27. package/dist/QueueMaker/errors.d.ts +5 -3
  28. package/dist/QueueMaker/errors.d.ts.map +1 -1
  29. package/dist/QueueMaker/errors.js +4 -2
  30. package/dist/QueueMaker/memQueue.d.ts +10 -6
  31. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  32. package/dist/QueueMaker/memQueue.js +84 -68
  33. package/dist/QueueMaker/sbqueue.d.ts +9 -5
  34. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  35. package/dist/QueueMaker/sbqueue.js +60 -58
  36. package/dist/RequestFiberSet.d.ts +10 -7
  37. package/dist/RequestFiberSet.d.ts.map +1 -1
  38. package/dist/RequestFiberSet.js +13 -8
  39. package/dist/SQL/Model.d.ts +468 -0
  40. package/dist/SQL/Model.d.ts.map +1 -0
  41. package/dist/SQL/Model.js +469 -0
  42. package/dist/SQL.d.ts +2 -0
  43. package/dist/SQL.d.ts.map +1 -0
  44. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  45. package/dist/ServiceBus.d.ts +61 -0
  46. package/dist/ServiceBus.d.ts.map +1 -0
  47. package/dist/ServiceBus.js +108 -0
  48. package/dist/Store/Cosmos/query.d.ts +15 -4
  49. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  50. package/dist/Store/Cosmos/query.js +179 -41
  51. package/dist/Store/Cosmos.d.ts +3 -3
  52. package/dist/Store/Cosmos.d.ts.map +1 -1
  53. package/dist/Store/Cosmos.js +344 -246
  54. package/dist/Store/Disk.d.ts +5 -5
  55. package/dist/Store/Disk.d.ts.map +1 -1
  56. package/dist/Store/Disk.js +78 -38
  57. package/dist/Store/Memory.d.ts +7 -10
  58. package/dist/Store/Memory.d.ts.map +1 -1
  59. package/dist/Store/Memory.js +326 -66
  60. package/dist/Store/SQL/Pg.d.ts +4 -0
  61. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  62. package/dist/Store/SQL/Pg.js +232 -0
  63. package/dist/Store/SQL/query.d.ts +49 -0
  64. package/dist/Store/SQL/query.d.ts.map +1 -0
  65. package/dist/Store/SQL/query.js +527 -0
  66. package/dist/Store/SQL.d.ts +21 -0
  67. package/dist/Store/SQL.d.ts.map +1 -0
  68. package/dist/Store/SQL.js +449 -0
  69. package/dist/Store/codeFilter.d.ts +5 -5
  70. package/dist/Store/codeFilter.d.ts.map +1 -1
  71. package/dist/Store/codeFilter.js +6 -3
  72. package/dist/Store/index.d.ts +7 -5
  73. package/dist/Store/index.d.ts.map +1 -1
  74. package/dist/Store/index.js +18 -5
  75. package/dist/Store/utils.d.ts +4 -3
  76. package/dist/Store/utils.d.ts.map +1 -1
  77. package/dist/Store/utils.js +5 -5
  78. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  79. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  80. package/dist/WorkflowEngineCosmos.js +521 -0
  81. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  82. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  83. package/dist/WorkflowEngineSqlite.js +550 -0
  84. package/dist/arbs.d.ts +2 -2
  85. package/dist/arbs.d.ts.map +1 -1
  86. package/dist/arbs.js +5 -3
  87. package/dist/codec.d.ts +5 -0
  88. package/dist/codec.d.ts.map +1 -0
  89. package/dist/codec.js +5 -0
  90. package/dist/cosmos-client.d.ts +16 -0
  91. package/dist/cosmos-client.d.ts.map +1 -0
  92. package/dist/cosmos-client.js +11 -0
  93. package/dist/errorReporter.d.ts +7 -5
  94. package/dist/errorReporter.d.ts.map +1 -1
  95. package/dist/errorReporter.js +23 -27
  96. package/dist/errors.d.ts +1 -1
  97. package/dist/fileUtil.d.ts +2 -2
  98. package/dist/fileUtil.d.ts.map +1 -1
  99. package/dist/fileUtil.js +2 -2
  100. package/dist/index.d.ts +3 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +3 -2
  103. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  104. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  105. package/dist/internal/RequestContextMiddleware.js +45 -0
  106. package/dist/internal/auth.d.ts +53 -0
  107. package/dist/internal/auth.d.ts.map +1 -0
  108. package/dist/internal/auth.js +180 -0
  109. package/dist/internal/events.d.ts +11 -0
  110. package/dist/internal/events.d.ts.map +1 -0
  111. package/dist/internal/events.js +49 -0
  112. package/dist/internal/health.d.ts +3 -0
  113. package/dist/internal/health.d.ts.map +1 -0
  114. package/dist/internal/health.js +5 -0
  115. package/dist/layerUtils.d.ts +32 -0
  116. package/dist/layerUtils.d.ts.map +1 -0
  117. package/dist/layerUtils.js +17 -0
  118. package/dist/logger/jsonLogger.d.ts +2 -2
  119. package/dist/logger/jsonLogger.d.ts.map +1 -1
  120. package/dist/logger/jsonLogger.js +5 -3
  121. package/dist/logger/logFmtLogger.d.ts +2 -2
  122. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  123. package/dist/logger/logFmtLogger.js +3 -3
  124. package/dist/logger/shared.d.ts +3 -3
  125. package/dist/logger/shared.d.ts.map +1 -1
  126. package/dist/logger/shared.js +5 -5
  127. package/dist/logger.d.ts +1 -1
  128. package/dist/logger.d.ts.map +1 -1
  129. package/dist/memQueue.d.ts +15 -0
  130. package/dist/memQueue.d.ts.map +1 -0
  131. package/dist/memQueue.js +21 -0
  132. package/dist/middlewares.d.ts +10 -0
  133. package/dist/middlewares.d.ts.map +1 -0
  134. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  135. package/dist/mongo-client.d.ts +11 -0
  136. package/dist/mongo-client.d.ts.map +1 -0
  137. package/dist/mongo-client.js +15 -0
  138. package/dist/otel.d.ts +75 -0
  139. package/dist/otel.d.ts.map +1 -0
  140. package/dist/otel.js +65 -0
  141. package/dist/rateLimit.d.ts +12 -4
  142. package/dist/rateLimit.d.ts.map +1 -1
  143. package/dist/rateLimit.js +7 -12
  144. package/dist/redis-client.d.ts +42 -0
  145. package/dist/redis-client.d.ts.map +1 -0
  146. package/dist/redis-client.js +98 -0
  147. package/dist/reportError.d.ts +4 -0
  148. package/dist/reportError.d.ts.map +1 -0
  149. package/dist/reportError.js +28 -0
  150. package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
  151. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  152. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  153. package/dist/routing/middleware/middleware.d.ts +48 -0
  154. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  155. package/dist/routing/middleware/middleware.js +128 -0
  156. package/dist/routing/middleware.d.ts +3 -0
  157. package/dist/routing/middleware.d.ts.map +1 -0
  158. package/dist/{api/routing → routing}/middleware.js +1 -2
  159. package/dist/routing/schema/jwt.d.ts +4 -0
  160. package/dist/routing/schema/jwt.d.ts.map +1 -0
  161. package/dist/routing/schema/jwt.js +13 -0
  162. package/dist/routing/tsort.d.ts +8 -0
  163. package/dist/routing/tsort.d.ts.map +1 -0
  164. package/dist/routing/tsort.js +51 -0
  165. package/dist/routing/utils.d.ts +19 -0
  166. package/dist/routing/utils.d.ts.map +1 -0
  167. package/dist/routing/utils.js +45 -0
  168. package/dist/routing.d.ts +184 -0
  169. package/dist/routing.d.ts.map +1 -0
  170. package/dist/routing.js +236 -0
  171. package/dist/test.d.ts +3 -3
  172. package/dist/test.d.ts.map +1 -1
  173. package/dist/test.js +2 -2
  174. package/dist/util.d.ts +3 -0
  175. package/dist/util.d.ts.map +1 -0
  176. package/dist/util.js +14 -0
  177. package/dist/vitest.d.ts +1 -1
  178. package/docs/cluster-storage.md +26 -0
  179. package/docs/workflow-engine.md +262 -0
  180. package/examples/query.ts +47 -39
  181. package/package.json +31 -345
  182. package/run.sh +1 -0
  183. package/src/CUPS.ts +52 -13
  184. package/src/ClusterCosmos.ts +954 -0
  185. package/src/ClusterServiceBus.ts +242 -0
  186. package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
  187. package/src/Emailer/Sendgrid.ts +82 -59
  188. package/src/Emailer/fake.ts +3 -3
  189. package/src/MainFiberSet.ts +12 -10
  190. package/src/QueueMaker/SQLQueue.ts +153 -156
  191. package/src/QueueMaker/errors.ts +3 -1
  192. package/src/QueueMaker/memQueue.ts +113 -107
  193. package/src/QueueMaker/sbqueue.ts +78 -90
  194. package/src/RequestFiberSet.ts +13 -8
  195. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  196. package/src/ServiceBus.ts +219 -0
  197. package/src/Store/Cosmos/query.ts +216 -52
  198. package/src/Store/Cosmos.ts +493 -353
  199. package/src/Store/Disk.ts +109 -69
  200. package/src/Store/Memory.ts +365 -96
  201. package/src/Store/SQL/Pg.ts +363 -0
  202. package/src/Store/SQL/query.ts +603 -0
  203. package/src/Store/SQL.ts +735 -0
  204. package/src/Store/codeFilter.ts +8 -5
  205. package/src/Store/index.ts +21 -6
  206. package/src/Store/utils.ts +26 -24
  207. package/src/WorkflowEngineCosmos.ts +719 -0
  208. package/src/WorkflowEngineSqlite.ts +813 -0
  209. package/src/arbs.ts +5 -3
  210. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  211. package/src/errorReporter.ts +66 -76
  212. package/src/fileUtil.ts +1 -1
  213. package/src/index.ts +2 -1
  214. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  215. package/src/internal/auth.ts +272 -0
  216. package/src/{api/internal → internal}/events.ts +22 -13
  217. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  218. package/src/logger/jsonLogger.ts +4 -2
  219. package/src/logger/logFmtLogger.ts +2 -2
  220. package/src/logger/shared.ts +5 -4
  221. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  222. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  223. package/src/otel.ts +152 -0
  224. package/src/rateLimit.ts +34 -23
  225. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  226. package/src/{api/reportError.ts → reportError.ts} +3 -2
  227. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  228. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  229. package/src/routing/middleware.ts +4 -0
  230. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  231. package/src/{api/routing → routing}/utils.ts +2 -1
  232. package/src/routing.ts +768 -0
  233. package/src/test.ts +2 -2
  234. package/test/auth.test.ts +101 -0
  235. package/test/cluster-cosmos.test.ts +503 -0
  236. package/test/cluster-servicebus.test.ts +180 -0
  237. package/test/contextProvider.test.ts +15 -12
  238. package/test/controller.test.ts +28 -32
  239. package/test/cosmos-query.test.ts +159 -0
  240. package/test/dist/_check-agg-infer.test-d.d.ts +2 -0
  241. package/test/dist/_check-agg-infer.test-d.d.ts.map +1 -0
  242. package/test/dist/_check-agg-infer.test-d.js +19 -0
  243. package/test/dist/_check-proj-infer.test-d.d.ts +2 -0
  244. package/test/dist/_check-proj-infer.test-d.d.ts.map +1 -0
  245. package/test/dist/_check-proj-infer.test-d.js +16 -0
  246. package/test/dist/_check-tighten.test-d.d.ts +2 -0
  247. package/test/dist/_check-tighten.test-d.d.ts.map +1 -0
  248. package/test/dist/_check-tighten.test-d.js +21 -0
  249. package/test/dist/auth.test.d.ts.map +1 -0
  250. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  251. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  252. package/test/dist/contextProvider.test.d.ts.map +1 -1
  253. package/test/dist/controller.test.d.ts.map +1 -1
  254. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  255. package/test/dist/date-query.test.d.ts.map +1 -0
  256. package/test/dist/fixtures.d.ts +30 -12
  257. package/test/dist/fixtures.d.ts.map +1 -1
  258. package/test/dist/fixtures.js +17 -10
  259. package/test/dist/query.test.d.ts.map +1 -1
  260. package/test/dist/rawQuery.test.d.ts.map +1 -1
  261. package/test/dist/repository-ext.test.d.ts.map +1 -0
  262. package/test/dist/requires.test.d.ts.map +1 -1
  263. package/test/dist/router-generator.test.d.ts.map +1 -0
  264. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  265. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  266. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  267. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  268. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  269. package/test/dist/sql-store.test.d.ts.map +1 -0
  270. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  271. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  272. package/test/fixtures.ts +16 -9
  273. package/test/layerUtils.test.ts +2 -2
  274. package/test/query.test.ts +905 -40
  275. package/test/rawQuery.test.ts +340 -22
  276. package/test/repository-ext.test.ts +62 -0
  277. package/test/requires.test.ts +10 -5
  278. package/test/router-generator.test.ts +187 -0
  279. package/test/routing-interruptibility.test.ts +66 -0
  280. package/test/rpc-context-map-streaming.test.ts +262 -0
  281. package/test/rpc-e2e-invalidation.test.ts +256 -0
  282. package/test/rpc-multi-middleware.test.ts +85 -10
  283. package/test/rpc-stream-fullstack.test.ts +304 -0
  284. package/test/sql-store.test.ts +1711 -0
  285. package/test/validateSample.test.ts +26 -14
  286. package/test/workflow-engine-cosmos.test.ts +354 -0
  287. package/test/workflow-engine-sqlite.test.ts +299 -0
  288. package/tsconfig.examples.json +1 -1
  289. package/tsconfig.json +2 -1
  290. package/tsconfig.json.bak +2 -2
  291. package/tsconfig.src.json +35 -35
  292. package/tsconfig.test.json +2 -2
  293. package/dist/Emailer/service.d.ts +0 -55
  294. package/dist/Emailer/service.d.ts.map +0 -1
  295. package/dist/Emailer/service.js +0 -6
  296. package/dist/Emailer.d.ts +0 -2
  297. package/dist/Emailer.d.ts.map +0 -1
  298. package/dist/Emailer.js +0 -2
  299. package/dist/Model/Repository/ext.d.ts +0 -41
  300. package/dist/Model/Repository/ext.d.ts.map +0 -1
  301. package/dist/Model/Repository/ext.js +0 -65
  302. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  303. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  304. package/dist/Model/Repository/internal/internal.js +0 -316
  305. package/dist/Model/Repository/legacy.d.ts +0 -19
  306. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  307. package/dist/Model/Repository/legacy.js +0 -2
  308. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  309. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  310. package/dist/Model/Repository/makeRepo.js +0 -24
  311. package/dist/Model/Repository/service.d.ts +0 -89
  312. package/dist/Model/Repository/service.d.ts.map +0 -1
  313. package/dist/Model/Repository/service.js +0 -2
  314. package/dist/Model/Repository/validation.d.ts +0 -42
  315. package/dist/Model/Repository/validation.d.ts.map +0 -1
  316. package/dist/Model/Repository/validation.js +0 -32
  317. package/dist/Model/Repository.d.ts +0 -6
  318. package/dist/Model/Repository.d.ts.map +0 -1
  319. package/dist/Model/Repository.js +0 -6
  320. package/dist/Model/dsl.d.ts +0 -32
  321. package/dist/Model/dsl.d.ts.map +0 -1
  322. package/dist/Model/dsl.js +0 -44
  323. package/dist/Model/filter/filterApi.d.ts +0 -30
  324. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  325. package/dist/Model/filter/filterApi.js +0 -2
  326. package/dist/Model/filter/types/errors.d.ts +0 -29
  327. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  328. package/dist/Model/filter/types/errors.js +0 -2
  329. package/dist/Model/filter/types/fields.d.ts +0 -15
  330. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  331. package/dist/Model/filter/types/fields.js +0 -2
  332. package/dist/Model/filter/types/path/common.d.ts +0 -316
  333. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  334. package/dist/Model/filter/types/path/common.js +0 -2
  335. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  336. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  337. package/dist/Model/filter/types/path/eager.js +0 -31
  338. package/dist/Model/filter/types/path/index.d.ts +0 -4
  339. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  340. package/dist/Model/filter/types/path/index.js +0 -3
  341. package/dist/Model/filter/types/utils.d.ts +0 -79
  342. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  343. package/dist/Model/filter/types/utils.js +0 -2
  344. package/dist/Model/filter/types/validator.d.ts +0 -30
  345. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  346. package/dist/Model/filter/types/validator.js +0 -2
  347. package/dist/Model/filter/types.d.ts +0 -5
  348. package/dist/Model/filter/types.d.ts.map +0 -1
  349. package/dist/Model/filter/types.js +0 -7
  350. package/dist/Model/query/dsl.d.ts +0 -248
  351. package/dist/Model/query/dsl.d.ts.map +0 -1
  352. package/dist/Model/query/dsl.js +0 -104
  353. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  354. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  355. package/dist/Model/query/new-kid-interpreter.js +0 -165
  356. package/dist/Model/query.d.ts +0 -15
  357. package/dist/Model/query.d.ts.map +0 -1
  358. package/dist/Model/query.js +0 -3
  359. package/dist/Model.d.ts +0 -4
  360. package/dist/Model.d.ts.map +0 -1
  361. package/dist/Model.js +0 -4
  362. package/dist/Operations.d.ts +0 -55
  363. package/dist/Operations.d.ts.map +0 -1
  364. package/dist/Operations.js +0 -102
  365. package/dist/OperationsRepo.d.ts +0 -41
  366. package/dist/OperationsRepo.d.ts.map +0 -1
  367. package/dist/OperationsRepo.js +0 -14
  368. package/dist/QueueMaker/service.d.ts +0 -11
  369. package/dist/QueueMaker/service.d.ts.map +0 -1
  370. package/dist/QueueMaker/service.js +0 -4
  371. package/dist/RequestContext.d.ts +0 -63
  372. package/dist/RequestContext.d.ts.map +0 -1
  373. package/dist/RequestContext.js +0 -49
  374. package/dist/Store/ContextMapContainer.d.ts +0 -14
  375. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  376. package/dist/Store/ContextMapContainer.js +0 -16
  377. package/dist/Store/service.d.ts +0 -108
  378. package/dist/Store/service.d.ts.map +0 -1
  379. package/dist/Store/service.js +0 -71
  380. package/dist/Store.d.ts +0 -2
  381. package/dist/Store.d.ts.map +0 -1
  382. package/dist/Store.js +0 -2
  383. package/dist/adapters/SQL/Model.d.ts +0 -479
  384. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  385. package/dist/adapters/SQL/Model.js +0 -478
  386. package/dist/adapters/SQL.d.ts +0 -2
  387. package/dist/adapters/SQL.d.ts.map +0 -1
  388. package/dist/adapters/ServiceBus.d.ts +0 -58
  389. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  390. package/dist/adapters/ServiceBus.js +0 -99
  391. package/dist/adapters/cosmos-client.d.ts +0 -14
  392. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  393. package/dist/adapters/cosmos-client.js +0 -9
  394. package/dist/adapters/index.d.ts +0 -2
  395. package/dist/adapters/index.d.ts.map +0 -1
  396. package/dist/adapters/index.js +0 -2
  397. package/dist/adapters/logger.d.ts +0 -9
  398. package/dist/adapters/logger.d.ts.map +0 -1
  399. package/dist/adapters/logger.js +0 -3
  400. package/dist/adapters/memQueue.d.ts +0 -13
  401. package/dist/adapters/memQueue.d.ts.map +0 -1
  402. package/dist/adapters/memQueue.js +0 -20
  403. package/dist/adapters/mongo-client.d.ts +0 -10
  404. package/dist/adapters/mongo-client.d.ts.map +0 -1
  405. package/dist/adapters/mongo-client.js +0 -13
  406. package/dist/adapters/redis-client.d.ts +0 -39
  407. package/dist/adapters/redis-client.d.ts.map +0 -1
  408. package/dist/adapters/redis-client.js +0 -94
  409. package/dist/api/ContextProvider.d.ts +0 -31
  410. package/dist/api/ContextProvider.d.ts.map +0 -1
  411. package/dist/api/ContextProvider.js +0 -38
  412. package/dist/api/codec.d.ts +0 -5
  413. package/dist/api/codec.d.ts.map +0 -1
  414. package/dist/api/codec.js +0 -5
  415. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  416. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  417. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  418. package/dist/api/internal/auth.d.ts +0 -15
  419. package/dist/api/internal/auth.d.ts.map +0 -1
  420. package/dist/api/internal/auth.js +0 -47
  421. package/dist/api/internal/events.d.ts +0 -9
  422. package/dist/api/internal/events.d.ts.map +0 -1
  423. package/dist/api/internal/events.js +0 -42
  424. package/dist/api/internal/health.d.ts +0 -3
  425. package/dist/api/internal/health.d.ts.map +0 -1
  426. package/dist/api/internal/health.js +0 -5
  427. package/dist/api/layerUtils.d.ts +0 -24
  428. package/dist/api/layerUtils.d.ts.map +0 -1
  429. package/dist/api/layerUtils.js +0 -16
  430. package/dist/api/middlewares.d.ts +0 -10
  431. package/dist/api/middlewares.d.ts.map +0 -1
  432. package/dist/api/reportError.d.ts +0 -4
  433. package/dist/api/reportError.d.ts.map +0 -1
  434. package/dist/api/reportError.js +0 -27
  435. package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
  436. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  437. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  438. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  439. package/dist/api/routing/middleware/middleware.js +0 -92
  440. package/dist/api/routing/middleware.d.ts +0 -4
  441. package/dist/api/routing/middleware.d.ts.map +0 -1
  442. package/dist/api/routing/schema/jwt.d.ts +0 -4
  443. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  444. package/dist/api/routing/schema/jwt.js +0 -12
  445. package/dist/api/routing/tsort.d.ts +0 -8
  446. package/dist/api/routing/tsort.d.ts.map +0 -1
  447. package/dist/api/routing/tsort.js +0 -51
  448. package/dist/api/routing/utils.d.ts +0 -19
  449. package/dist/api/routing/utils.d.ts.map +0 -1
  450. package/dist/api/routing/utils.js +0 -44
  451. package/dist/api/routing.d.ts +0 -138
  452. package/dist/api/routing.d.ts.map +0 -1
  453. package/dist/api/routing.js +0 -166
  454. package/dist/api/setupRequest.d.ts +0 -12
  455. package/dist/api/setupRequest.d.ts.map +0 -1
  456. package/dist/api/setupRequest.js +0 -44
  457. package/dist/api/util.d.ts +0 -3
  458. package/dist/api/util.d.ts.map +0 -1
  459. package/dist/api/util.js +0 -14
  460. package/eslint.config.mjs +0 -24
  461. package/src/Emailer/service.ts +0 -52
  462. package/src/Emailer.ts +0 -1
  463. package/src/Model/Repository/ext.ts +0 -283
  464. package/src/Model/Repository/internal/internal.ts +0 -577
  465. package/src/Model/Repository/legacy.ts +0 -27
  466. package/src/Model/Repository/makeRepo.ts +0 -139
  467. package/src/Model/Repository/service.ts +0 -627
  468. package/src/Model/Repository/validation.ts +0 -31
  469. package/src/Model/Repository.ts +0 -5
  470. package/src/Model/dsl.ts +0 -128
  471. package/src/Model/filter/filterApi.ts +0 -60
  472. package/src/Model/filter/types/errors.ts +0 -47
  473. package/src/Model/filter/types/fields.ts +0 -50
  474. package/src/Model/filter/types/path/common.ts +0 -404
  475. package/src/Model/filter/types/path/eager.ts +0 -298
  476. package/src/Model/filter/types/path/index.ts +0 -4
  477. package/src/Model/filter/types/utils.ts +0 -128
  478. package/src/Model/filter/types/validator.ts +0 -46
  479. package/src/Model/filter/types.ts +0 -6
  480. package/src/Model/query/dsl.ts +0 -2110
  481. package/src/Model/query/new-kid-interpreter.ts +0 -210
  482. package/src/Model/query.ts +0 -13
  483. package/src/Model.ts +0 -3
  484. package/src/Operations.ts +0 -235
  485. package/src/OperationsRepo.ts +0 -16
  486. package/src/QueueMaker/service.ts +0 -17
  487. package/src/RequestContext.ts +0 -63
  488. package/src/Store/ContextMapContainer.ts +0 -20
  489. package/src/Store/service.ts +0 -184
  490. package/src/Store.ts +0 -1
  491. package/src/adapters/ServiceBus.ts +0 -209
  492. package/src/adapters/index.ts +0 -0
  493. package/src/adapters/logger.ts +0 -3
  494. package/src/api/internal/auth.ts +0 -68
  495. package/src/api/routing/middleware.ts +0 -6
  496. package/src/api/routing.ts +0 -598
  497. package/src/api/setupRequest.ts +0 -84
  498. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  499. /package/src/{api/codec.ts → codec.ts} +0 -0
  500. /package/src/{api/internal → internal}/health.ts +0 -0
  501. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  502. /package/src/{api/routing → routing}/tsort.ts +0 -0
  503. /package/src/{api/util.ts → util.ts} +0 -0
@@ -1,184 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import type { UniqueKey } from "@azure/cosmos"
3
- import { Effect, type NonEmptyReadonlyArray, type Option, type Redacted, ServiceMap } from "effect-app"
4
- import type { OptimisticConcurrencyException } from "../errors.js"
5
- import type { FilterResult } from "../Model/filter/filterApi.js"
6
- import type { FieldValues } from "../Model/filter/types.js"
7
- import type { FieldPath } from "../Model/filter/types/path/index.js"
8
- import { type RawQuery } from "../Model/query.js"
9
-
10
- export interface StoreConfig<E> {
11
- partitionValue: (e?: E) => string
12
- /**
13
- * Primarily used for testing, creating namespaces in the database to separate data e.g to run multiple tests in isolation within the same database
14
- * currently only supported in disk/memory. CosmosDB is TODO.
15
- */
16
- allowNamespace?: (namespace: string) => boolean
17
- /**
18
- * just in time migrations, supported by the database driver, supporting queries, for simple default values
19
- */
20
- defaultValues?: Partial<E>
21
-
22
- /**
23
- * How many items can be processed in one batch at a time.
24
- * Defaults to 100 for CosmosDB.
25
- */
26
- maxBulkSize?: number
27
-
28
- /**
29
- * Unique indexes, mainly for CosmosDB
30
- */
31
- uniqueKeys?: UniqueKey[]
32
- }
33
-
34
- export type SupportedValues = string | boolean | number | null
35
- export type SupportedValues2 = string | boolean | number
36
-
37
- // default is eq
38
- export type Where =
39
- | { key: string; t?: "eq" | "not-eq"; value: SupportedValues }
40
- | { key: string; t: "gt" | "lt" | "gte" | "lte"; value: SupportedValues2 }
41
- | {
42
- key: string
43
- t: "contains" | "starts-with" | "ends-with" | "not-contains" | "not-starts-with" | "not-ends-with"
44
- value: string
45
- }
46
- | { key: string; t: "includes" | "not-includes"; value: string }
47
- | {
48
- key: string
49
- t: "in" | "not-in"
50
- value: readonly (SupportedValues)[]
51
- }
52
-
53
- export type Filter = readonly FilterResult[]
54
-
55
- export interface O<TFieldValues extends FieldValues> {
56
- key: FieldPath<TFieldValues>
57
- direction: "ASC" | "DESC"
58
- }
59
-
60
- export interface FilterArgs<Encoded extends FieldValues, U extends keyof Encoded = never> {
61
- t: Encoded
62
- filter?: Filter | undefined
63
- select?: NonEmptyReadonlyArray<U | { key: string; subKeys: readonly string[] }> | undefined
64
- order?: NonEmptyReadonlyArray<O<NoInfer<Encoded>>>
65
- limit?: number | undefined
66
- skip?: number | undefined
67
- }
68
-
69
- export type FilterFunc<Encoded extends FieldValues> = <U extends keyof Encoded = never>(
70
- args: FilterArgs<Encoded, U>
71
- ) => Effect.Effect<(U extends undefined ? Encoded : Pick<Encoded, U>)[]>
72
-
73
- export interface Store<
74
- IdKey extends keyof Encoded,
75
- Encoded extends FieldValues,
76
- PM extends PersistenceModelType<Encoded> = PersistenceModelType<Encoded>
77
- > {
78
- all: Effect.Effect<PM[]>
79
- filter: FilterFunc<Encoded>
80
- find: (id: Encoded[IdKey]) => Effect.Effect<Option.Option<PM>>
81
- set: (e: PM) => Effect.Effect<PM, OptimisticConcurrencyException>
82
- batchSet: (
83
- items: NonEmptyReadonlyArray<PM>
84
- ) => Effect.Effect<NonEmptyReadonlyArray<PM>, OptimisticConcurrencyException>
85
- bulkSet: (
86
- items: NonEmptyReadonlyArray<PM>
87
- ) => Effect.Effect<NonEmptyReadonlyArray<PM>, OptimisticConcurrencyException>
88
- batchRemove: (ids: NonEmptyReadonlyArray<Encoded[IdKey]>, partitionKey?: string) => Effect.Effect<void>
89
- queryRaw: <Out>(query: RawQuery<Encoded, Out>) => Effect.Effect<readonly Out[]>
90
- }
91
-
92
- export class StoreMaker extends ServiceMap.Opaque<StoreMaker, {
93
- make: <IdKey extends keyof Encoded, Encoded extends FieldValues, R = never, E = never>(
94
- name: string,
95
- idKey: IdKey,
96
- seed?: Effect.Effect<Iterable<Encoded>, E, R>,
97
- config?: StoreConfig<Encoded>
98
- ) => Effect.Effect<Store<IdKey, Encoded>, E, R>
99
- }>()("effect-app/StoreMaker") {
100
- }
101
-
102
- export const makeContextMap = () => {
103
- const etags = new Map<string, string>()
104
- const getEtag = (id: string) => etags.get(id)
105
- const setEtag = (id: string, eTag: string | undefined) => {
106
- if (eTag === undefined) {
107
- etags.delete(id)
108
- } else {
109
- etags.set(id, eTag)
110
- }
111
- }
112
-
113
- // const parsedCache = new Map<
114
- // Parser<any, any, any>,
115
- // Map<unknown, These.These<unknown, unknown>>
116
- // >()
117
-
118
- // const parserCache = new Map<
119
- // Parser<any, any, any>,
120
- // (i: any) => These.These<any, any>
121
- // >()
122
-
123
- // const setAndReturn = <I, E, A>(
124
- // p: Parser<I, E, A>,
125
- // np: (i: I) => These.These<E, A>
126
- // ) => {
127
- // parserCache.set(p, np)
128
- // return np
129
- // }
130
-
131
- // const parserEnv: ParserEnv = {
132
- // // TODO: lax: true would turn off refinement checks, may help on large payloads
133
- // // but of course removes confirming of validation rules (which may be okay for a database owned by the app, as we write safely)
134
- // lax: false,
135
- // cache: {
136
- // getOrSetParser: (p) => parserCache.get(p) ?? setAndReturn(p, (i) => parserEnv.cache!.getOrSet(i, p)),
137
- // getOrSetParsers: (parsers) => {
138
- // return Object.entries(parsers).reduce((prev, [k, v]) => {
139
- // prev[k] = parserEnv.cache!.getOrSetParser(v)
140
- // return prev
141
- // }, {} as any)
142
- // },
143
- // getOrSet: (i, parse): any => {
144
- // const c = parsedCache.get(parse)
145
- // if (c) {
146
- // const f = c.get(i)
147
- // if (f) {
148
- // // console.log("$$$ cache hit", i)
149
- // return f
150
- // } else {
151
- // const nf = parse(i, parserEnv)
152
- // c.set(i, nf)
153
- // return nf
154
- // }
155
- // } else {
156
- // const nf = parse(i, parserEnv)
157
- // parsedCache.set(parse, new Map([[i, nf]]))
158
- // return nf
159
- // }
160
- // }
161
- // }
162
- // }
163
-
164
- return {
165
- get: getEtag,
166
- set: setEtag
167
- // parserEnv
168
- }
169
- }
170
-
171
- const makeMap = Effect.sync(() => makeContextMap())
172
-
173
- export class ContextMap extends ServiceMap.Opaque<ContextMap>()("effect-app/ContextMap", { make: makeMap }) {
174
- }
175
-
176
- export type PersistenceModelType<Encoded extends object> = Encoded & {
177
- _etag?: string | undefined
178
- }
179
-
180
- export interface StorageConfig {
181
- url: Redacted.Redacted<string>
182
- prefix: string
183
- dbName: string
184
- }
package/src/Store.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./Store/service.js"
@@ -1,209 +0,0 @@
1
- /* eslint-disable @typescript-eslint/prefer-promise-reject-errors */
2
- import { type OperationOptionsBase, type ProcessErrorArgs, ServiceBusClient, type ServiceBusMessage, type ServiceBusMessageBatch, type ServiceBusReceivedMessage, type ServiceBusReceiver } from "@azure/service-bus"
3
- import { Cause, Effect, Exit, FiberSet, Layer, type Scope, ServiceMap } from "effect-app"
4
- import { InfraLogger } from "../logger.js"
5
-
6
- const withSpanAndLog = (name: string) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
7
- Effect.logInfo(name).pipe(
8
- Effect.andThen(self),
9
- Effect.tap(Effect.logInfo(name + " done")),
10
- Effect.withLogSpan(name),
11
- Effect.withSpan(name)
12
- )
13
-
14
- function makeClient(url: string) {
15
- return Effect.acquireRelease(
16
- Effect.sync(() => new ServiceBusClient(url)).pipe(withSpanAndLog("ServiceBus.client.create")),
17
- (client) => Effect.promise(() => client.close()).pipe(withSpanAndLog("ServiceBus.client.close"))
18
- )
19
- }
20
-
21
- export class ServiceBusClientTag
22
- extends ServiceMap.Opaque<ServiceBusClientTag, ServiceBusClient>()("@services/Client", { make: makeClient })
23
- {
24
- static readonly layer = (url: string) => this.toLayer(this.make(url))
25
- }
26
-
27
- function makeSender_(queueName: string) {
28
- return Effect.gen(function*() {
29
- const serviceBusClient = yield* ServiceBusClientTag
30
-
31
- return yield* Effect.acquireRelease(
32
- Effect.sync(() => serviceBusClient.createSender(queueName)).pipe(
33
- withSpanAndLog(`ServiceBus.sender.create ${queueName}`)
34
- ),
35
- (sender) => Effect.promise(() => sender.close()).pipe(withSpanAndLog(`ServiceBus.sender.close ${queueName}`))
36
- )
37
- })
38
- }
39
-
40
- const makeSender = (name: string) =>
41
- Effect.gen(function*() {
42
- const sender = yield* makeSender_(name)
43
- const sendMessages = Effect.fnUntraced(function*(
44
- messages: ServiceBusMessage | ServiceBusMessage[] | ServiceBusMessageBatch,
45
- options?: Omit<OperationOptionsBase, "abortSignal">
46
- ) {
47
- return yield* Effect.promise((abortSignal) => sender.sendMessages(messages, { ...options, abortSignal }))
48
- })
49
-
50
- return { name, sendMessages }
51
- })
52
-
53
- export class Sender extends ServiceMap.Opaque<Sender, {
54
- name: string
55
- sendMessages: (
56
- messages: ServiceBusMessage | ServiceBusMessage[] | ServiceBusMessageBatch,
57
- options?: Omit<OperationOptionsBase, "abortSignal">
58
- ) => Effect.Effect<void, never, never>
59
- }>()("Sender", { make: makeSender }) {
60
- static readonly layer = (name: string) => this.toLayer(this.make(name))
61
- }
62
-
63
- export const SenderTag = <Id>() => <Key extends string>(queueName: Key) => {
64
- const tag = ServiceMap.Service<Id, Sender>(`ServiceBus.Sender.${queueName}`)
65
-
66
- return Object.assign(tag, {
67
- layer: Layer.effect(
68
- tag,
69
- Sender.make(queueName).pipe(Effect.map(Sender.of))
70
- )
71
- })
72
- }
73
-
74
- const makeReceiver = (name: string) =>
75
- Effect.gen(function*() {
76
- const serviceBusClient = yield* ServiceBusClientTag
77
-
78
- const makeReceiver = Effect.fnUntraced(
79
- function*(queueName: string, waitTillEmpty: Effect.Effect<void>, sessionId?: string) {
80
- return yield* Effect.acquireRelease(
81
- (sessionId
82
- ? Effect.promise(() => serviceBusClient.acceptSession(queueName, sessionId))
83
- : Effect.sync(() => serviceBusClient.createReceiver(queueName)))
84
- .pipe(withSpanAndLog(`ServiceBus.receiver.create ${queueName}.${sessionId}`)),
85
- (r) =>
86
- waitTillEmpty.pipe(
87
- withSpanAndLog(`ServiceBus.receiver.waitTillEmpty ${queueName}.${sessionId}`),
88
- Effect.andThen(
89
- Effect.promise(() => r.close()).pipe(
90
- withSpanAndLog(`ServiceBus.receiver.close ${queueName}.${sessionId}`)
91
- )
92
- ),
93
- withSpanAndLog(`ServiceBus.receiver.release ${queueName}.${sessionId}`)
94
- )
95
- )
96
- }
97
- )
98
-
99
- const make = (waitTillEmpty: Effect.Effect<void>) => makeReceiver(name, waitTillEmpty)
100
-
101
- const makeSession = (sessionId: string, waitTillEmpty: Effect.Effect<void>) =>
102
- makeReceiver(name, waitTillEmpty, sessionId)
103
-
104
- return {
105
- name,
106
- make,
107
- makeSession,
108
- subscribe: Effect.fnUntraced(function*<RMsg, RErr>(hndlr: MessageHandlers<RMsg, RErr>, sessionId?: string) {
109
- const fs = yield* FiberSet.make()
110
- const fr = yield* FiberSet.runtime(fs)<RMsg | RErr>()
111
- const wait = Effect
112
- .gen(function*() {
113
- if ((yield* FiberSet.size(fs)) > 0) {
114
- yield* InfraLogger.logDebug("Waiting ServiceBusFiberSet to be empty: " + (yield* FiberSet.size(fs)))
115
- }
116
- while ((yield* FiberSet.size(fs)) > 0) yield* Effect.sleep("250 millis")
117
- })
118
- const r = yield* sessionId
119
- ? makeSession(
120
- sessionId,
121
- wait
122
- )
123
- : make(wait)
124
-
125
- const runEffect = <E>(effect: Effect.Effect<void, E, RMsg | RErr>) =>
126
- new Promise<void>((resolve, reject) =>
127
- fr(effect)
128
- .addObserver((exit) => {
129
- if (Exit.isSuccess(exit)) {
130
- resolve(exit.value)
131
- } else {
132
- // disable @typescript-eslint/prefer-promise-reject-errors
133
- reject(Cause.pretty(exit.cause))
134
- }
135
- })
136
- )
137
-
138
- yield* Effect.acquireRelease(
139
- Effect
140
- .sync(() => {
141
- const s = r
142
- .subscribe({
143
- processError: (err) =>
144
- runEffect(
145
- hndlr
146
- .processError(err)
147
- .pipe(
148
- Effect.catchCause((cause) => Effect.logError(`ServiceBus Error ${sessionId}`, cause))
149
- )
150
- ),
151
- processMessage: (msg) => runEffect(hndlr.processMessage(msg))
152
- // DO NOT CATCH ERRORS here as they should return to the queue!
153
- })
154
- return { close: Effect.promise(() => s.close()) }
155
- })
156
- .pipe(withSpanAndLog(`ServiceBus.subscription.create ${sessionId}`)),
157
- (subscription) =>
158
- subscription.close.pipe(
159
- withSpanAndLog(`ServiceBus.subscription.close ${sessionId}`)
160
- )
161
- ) as Effect.Effect<void, never, Scope.Scope> // wth is going on here
162
- })
163
- }
164
- })
165
-
166
- export class Receiver extends ServiceMap.Opaque<Receiver, {
167
- name: string
168
- make: (waitTillEmpty: Effect.Effect<void>) => Effect.Effect<ServiceBusReceiver, never, Scope.Scope>
169
- makeSession: (
170
- sessionId: string,
171
- waitTillEmpty: Effect.Effect<void>
172
- ) => Effect.Effect<ServiceBusReceiver, never, Scope.Scope>
173
- subscribe<RMsg, RErr>(
174
- hndlr: MessageHandlers<RMsg, RErr>,
175
- sessionId?: string
176
- ): Effect.Effect<void, never, Scope.Scope | RMsg | RErr>
177
- }>()("Receiver") {
178
- static readonly make = makeReceiver
179
- static readonly layer = (name: string) => this.toLayer(makeReceiver(name))
180
- }
181
-
182
- export const ReceiverTag = <Id>() => <Key extends string>(queueName: Key) => {
183
- const tag = ServiceMap.Service<Id, Receiver>(`ServiceBus.Receiver.${queueName}`)
184
-
185
- return Object.assign(tag, {
186
- layer: Layer.effect(
187
- tag,
188
- makeReceiver(queueName).pipe(Effect.map(Receiver.of))
189
- )
190
- })
191
- }
192
-
193
- export const SenderReceiver = (queue: string, queueDrain?: string) =>
194
- Layer.mergeAll(Sender.layer(queue), Receiver.layer(queueDrain ?? queue))
195
-
196
- export interface MessageHandlers<RMsg, RErr> {
197
- /**
198
- * Handler that processes messages from service bus.
199
- *
200
- * @param message - A message received from Service Bus.
201
- */
202
- processMessage(message: ServiceBusReceivedMessage): Effect.Effect<void, never, RMsg>
203
- /**
204
- * Handler that processes errors that occur during receiving.
205
- * @param args - The error and additional context to indicate where
206
- * the error originated.
207
- */
208
- processError(args: ProcessErrorArgs): Effect.Effect<void, never, RErr>
209
- }
File without changes
@@ -1,3 +0,0 @@
1
- import { makeLog } from "effect-app/utils/logger"
2
-
3
- export const InfraLogger = makeLog("@effect-app/infra", "info")
@@ -1,68 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable unused-imports/no-unused-vars */
3
- import { Data, Effect } from "effect-app"
4
- import { HttpHeaders, HttpMiddleware, HttpServerRequest, HttpServerResponse } from "effect-app/http"
5
- import { auth, InsufficientScopeError, InvalidRequestError, InvalidTokenError, UnauthorizedError } from "express-oauth2-jwt-bearer"
6
-
7
- // // Authorization middleware. When used, the Access Token must
8
- // // exist and be verified against the Auth0 JSON Web Key Set.
9
-
10
- // type Errors = InsufficientScopeError | InvalidRequestError | InvalidTokenError | UnauthorizedError
11
- type Config = Parameters<typeof auth>[0]
12
- export const checkJWTI = (config: Config) => {
13
- const mw = auth(config)
14
- return Effect.fnUntraced(function*(headers: HttpHeaders.Headers) {
15
- return yield* Effect.callback<
16
- void,
17
- InsufficientScopeError | InvalidRequestError | InvalidTokenError | UnauthorizedError
18
- >(
19
- (resume) => {
20
- const next = (err?: unknown) => {
21
- if (!err) return resume(Effect.void)
22
- if (
23
- err instanceof InsufficientScopeError
24
- || err instanceof InvalidRequestError
25
- || err instanceof InvalidTokenError
26
- || err instanceof UnauthorizedError
27
- ) {
28
- return resume(Effect.fail(err))
29
- }
30
- return resume(Effect.die(err))
31
- }
32
- const r = { headers, query: {}, body: {}, is: () => false, method: "POST" } // is("urlencoded")
33
- try {
34
- mw(r as any, {} as any, next)
35
- } catch (e) {
36
- return resume(Effect.die(e))
37
- }
38
- }
39
- )
40
- })
41
- }
42
-
43
- export const checkJwt = (config: Config) => {
44
- const check = checkJWTI(config)
45
- return HttpMiddleware.make((app) =>
46
- Effect.gen(function*() {
47
- const req = yield* HttpServerRequest.HttpServerRequest
48
- const response = yield* check(req.headers).pipe(Effect.catch((e) =>
49
- HttpServerResponse.json({ message: e.message }, {
50
- status: e.status,
51
- headers: HttpHeaders.fromInput(e.headers)
52
- })
53
- ))
54
- if (response) {
55
- return response
56
- }
57
- return yield* app
58
- })
59
- )
60
- }
61
-
62
- export class JWTError extends Data.TaggedClass("JWTError")<{
63
- error:
64
- | InsufficientScopeError
65
- | InvalidRequestError
66
- | InvalidTokenError
67
- | UnauthorizedError
68
- }> {}
@@ -1,6 +0,0 @@
1
- // codegen:start {preset: barrel, include: ./middleware/*.ts, nodir: false }
2
- export * from "./middleware/middleware.js"
3
- export * from "./middleware/RouterMiddleware.js"
4
- // codegen:end
5
-
6
- export * as Middleware from "./middleware.js"