@effect-app/infra 4.0.0-beta.99 → 4.0.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 (486) hide show
  1. package/CHANGELOG.md +2884 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +28 -9
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +35 -14
  6. package/dist/ClusterCosmos.d.ts +67 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +588 -0
  9. package/dist/ClusterServiceBus.d.ts +67 -0
  10. package/dist/ClusterServiceBus.d.ts.map +1 -0
  11. package/dist/ClusterServiceBus.js +84 -0
  12. package/dist/{api/ContextProvider.d.ts → ContextProvider.d.ts} +7 -4
  13. package/dist/ContextProvider.d.ts.map +1 -0
  14. package/dist/ContextProvider.js +40 -0
  15. package/dist/Emailer/Sendgrid.d.ts +110 -146
  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 +1 -1
  19. package/dist/Emailer/fake.d.ts.map +1 -1
  20. package/dist/Emailer/fake.js +4 -4
  21. package/dist/MainFiberSet.d.ts +11 -7
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +22 -6
  24. package/dist/QueueMaker/errors.d.ts +3 -1
  25. package/dist/QueueMaker/errors.d.ts.map +1 -1
  26. package/dist/QueueMaker/errors.js +4 -2
  27. package/dist/{adapters/SQL → SQL}/Model.d.ts +34 -45
  28. package/dist/SQL/Model.d.ts.map +1 -0
  29. package/dist/SQL/Model.js +469 -0
  30. package/dist/SQL.d.ts.map +1 -0
  31. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  32. package/dist/Store/Cosmos/query.d.ts +16 -4
  33. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  34. package/dist/Store/Cosmos/query.js +238 -42
  35. package/dist/Store/Cosmos.d.ts +2 -2
  36. package/dist/Store/Cosmos.d.ts.map +1 -1
  37. package/dist/Store/Cosmos.js +394 -319
  38. package/dist/Store/Disk.d.ts +4 -4
  39. package/dist/Store/Disk.d.ts.map +1 -1
  40. package/dist/Store/Disk.js +91 -39
  41. package/dist/Store/Memory.d.ts +7 -10
  42. package/dist/Store/Memory.d.ts.map +1 -1
  43. package/dist/Store/Memory.js +348 -78
  44. package/dist/Store/SQL/Pg.d.ts +2 -2
  45. package/dist/Store/SQL/Pg.d.ts.map +1 -1
  46. package/dist/Store/SQL/Pg.js +229 -154
  47. package/dist/Store/SQL/query.d.ts +19 -3
  48. package/dist/Store/SQL/query.d.ts.map +1 -1
  49. package/dist/Store/SQL/query.js +306 -12
  50. package/dist/Store/SQL.d.ts +22 -5
  51. package/dist/Store/SQL.d.ts.map +1 -1
  52. package/dist/Store/SQL.js +369 -98
  53. package/dist/Store/codeFilter.d.ts +4 -4
  54. package/dist/Store/codeFilter.d.ts.map +1 -1
  55. package/dist/Store/codeFilter.js +71 -22
  56. package/dist/Store/index.d.ts +6 -4
  57. package/dist/Store/index.d.ts.map +1 -1
  58. package/dist/Store/index.js +9 -6
  59. package/dist/Store/jsonDocument.d.ts +67 -0
  60. package/dist/Store/jsonDocument.d.ts.map +1 -0
  61. package/dist/Store/jsonDocument.js +107 -0
  62. package/dist/Store/utils.d.ts +21 -2
  63. package/dist/Store/utils.d.ts.map +1 -1
  64. package/dist/Store/utils.js +253 -10
  65. package/dist/WorkflowEngineCosmos.d.ts +30 -0
  66. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  67. package/dist/WorkflowEngineCosmos.js +542 -0
  68. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  69. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  70. package/dist/WorkflowEngineSqlite.js +550 -0
  71. package/dist/arbs.d.ts +6 -3
  72. package/dist/arbs.d.ts.map +1 -1
  73. package/dist/arbs.js +20 -4
  74. package/dist/codec.d.ts.map +1 -0
  75. package/dist/codec.js +5 -0
  76. package/dist/cosmos-client.d.ts +40 -0
  77. package/dist/cosmos-client.d.ts.map +1 -0
  78. package/dist/cosmos-client.js +41 -0
  79. package/dist/errorReporter.d.ts +6 -4
  80. package/dist/errorReporter.d.ts.map +1 -1
  81. package/dist/errorReporter.js +23 -27
  82. package/dist/fileUtil.d.ts +1 -1
  83. package/dist/fileUtil.d.ts.map +1 -1
  84. package/dist/fileUtil.js +2 -2
  85. package/dist/index.d.ts +2 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +3 -2
  88. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  89. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  90. package/dist/internal/RequestContextMiddleware.js +45 -0
  91. package/dist/internal/auth.d.ts +53 -0
  92. package/dist/internal/auth.d.ts.map +1 -0
  93. package/dist/internal/auth.js +180 -0
  94. package/dist/internal/events.d.ts +11 -0
  95. package/dist/internal/events.d.ts.map +1 -0
  96. package/dist/internal/events.js +49 -0
  97. package/dist/{api/internal → internal}/health.d.ts +1 -1
  98. package/dist/internal/health.d.ts.map +1 -0
  99. package/dist/internal/health.js +5 -0
  100. package/dist/{api/layerUtils.d.ts → layerUtils.d.ts} +10 -2
  101. package/dist/layerUtils.d.ts.map +1 -0
  102. package/dist/layerUtils.js +17 -0
  103. package/dist/logger/jsonLogger.d.ts +1 -1
  104. package/dist/logger/jsonLogger.d.ts.map +1 -1
  105. package/dist/logger/jsonLogger.js +5 -3
  106. package/dist/logger/logFmtLogger.d.ts +1 -1
  107. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  108. package/dist/logger/logFmtLogger.js +3 -3
  109. package/dist/logger/shared.d.ts +2 -2
  110. package/dist/logger/shared.d.ts.map +1 -1
  111. package/dist/logger/shared.js +6 -6
  112. package/dist/logger.d.ts.map +1 -1
  113. package/dist/middlewares.d.ts.map +1 -0
  114. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  115. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +2 -1
  116. package/dist/mongo-client.d.ts.map +1 -0
  117. package/dist/mongo-client.js +15 -0
  118. package/dist/otel.d.ts +75 -0
  119. package/dist/otel.d.ts.map +1 -0
  120. package/dist/otel.js +84 -0
  121. package/dist/rateLimit.d.ts +11 -3
  122. package/dist/rateLimit.d.ts.map +1 -1
  123. package/dist/rateLimit.js +7 -12
  124. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +4 -1
  125. package/dist/redis-client.d.ts.map +1 -0
  126. package/dist/redis-client.js +98 -0
  127. package/dist/{api/reportError.d.ts → reportError.d.ts} +1 -1
  128. package/dist/reportError.d.ts.map +1 -0
  129. package/dist/reportError.js +28 -0
  130. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +2 -1
  131. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  132. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  133. package/dist/{api/routing → routing}/middleware/middleware.d.ts +11 -6
  134. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  135. package/dist/routing/middleware/middleware.js +152 -0
  136. package/dist/{api/routing → routing}/middleware.d.ts +0 -1
  137. package/dist/routing/middleware.d.ts.map +1 -0
  138. package/dist/{api/routing → routing}/middleware.js +1 -2
  139. package/dist/routing/schema/jwt.d.ts.map +1 -0
  140. package/dist/routing/schema/jwt.js +12 -0
  141. package/dist/routing/tsort.d.ts.map +1 -0
  142. package/dist/routing/tsort.js +51 -0
  143. package/dist/{api/routing → routing}/utils.d.ts +3 -3
  144. package/dist/routing/utils.d.ts.map +1 -0
  145. package/dist/routing/utils.js +45 -0
  146. package/dist/routing.d.ts +182 -0
  147. package/dist/routing.d.ts.map +1 -0
  148. package/dist/routing.js +256 -0
  149. package/dist/test.d.ts +2 -2
  150. package/dist/test.d.ts.map +1 -1
  151. package/dist/test.js +5 -5
  152. package/dist/util.d.ts.map +1 -0
  153. package/dist/util.js +14 -0
  154. package/docs/cluster-storage.md +26 -0
  155. package/docs/workflow-engine.md +262 -0
  156. package/examples/query.ts +23 -19
  157. package/package.json +36 -364
  158. package/src/CUPS.ts +53 -14
  159. package/src/ClusterCosmos.ts +1170 -0
  160. package/src/ClusterServiceBus.ts +244 -0
  161. package/src/{api/ContextProvider.ts → ContextProvider.ts} +10 -7
  162. package/src/Emailer/Sendgrid.ts +83 -60
  163. package/src/Emailer/fake.ts +4 -4
  164. package/src/MainFiberSet.ts +31 -12
  165. package/src/QueueMaker/errors.ts +3 -1
  166. package/src/{adapters/SQL → SQL}/Model.ts +48 -47
  167. package/src/SQL.ts +1 -0
  168. package/src/Store/Cosmos/query.ts +275 -55
  169. package/src/Store/Cosmos.ts +597 -511
  170. package/src/Store/Disk.ts +145 -71
  171. package/src/Store/Memory.ts +420 -115
  172. package/src/Store/SQL/Pg.ts +352 -268
  173. package/src/Store/SQL/query.ts +366 -20
  174. package/src/Store/SQL.ts +742 -293
  175. package/src/Store/codeFilter.ts +78 -28
  176. package/src/Store/index.ts +18 -13
  177. package/src/Store/jsonDocument.ts +143 -0
  178. package/src/Store/utils.ts +307 -30
  179. package/src/WorkflowEngineCosmos.ts +749 -0
  180. package/src/WorkflowEngineSqlite.ts +813 -0
  181. package/src/arbs.ts +25 -5
  182. package/src/cosmos-client.ts +72 -0
  183. package/src/errorReporter.ts +68 -78
  184. package/src/fileUtil.ts +1 -1
  185. package/src/index.ts +2 -1
  186. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  187. package/src/internal/auth.ts +272 -0
  188. package/src/{api/internal → internal}/events.ts +18 -9
  189. package/src/{api/layerUtils.ts → layerUtils.ts} +7 -3
  190. package/src/logger/jsonLogger.ts +5 -3
  191. package/src/logger/logFmtLogger.ts +3 -3
  192. package/src/logger/shared.ts +6 -5
  193. package/src/middlewares.ts +10 -0
  194. package/src/{adapters/mongo-client.ts → mongo-client.ts} +3 -1
  195. package/src/otel.ts +177 -0
  196. package/src/rateLimit.ts +35 -24
  197. package/src/{adapters/redis-client.ts → redis-client.ts} +6 -2
  198. package/src/{api/reportError.ts → reportError.ts} +3 -2
  199. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +2 -1
  200. package/src/{api/routing → routing}/middleware/middleware.ts +75 -50
  201. package/src/routing/middleware.ts +4 -0
  202. package/src/{api/routing → routing}/schema/jwt.ts +2 -2
  203. package/src/{api/routing → routing}/utils.ts +2 -1
  204. package/src/routing.ts +823 -0
  205. package/src/test.ts +6 -6
  206. package/src/vitest.ts +1 -1
  207. package/test/arbs-magnitude.test.ts +33 -0
  208. package/test/arbs.test.ts +41 -0
  209. package/test/auth.test.ts +101 -0
  210. package/test/cluster-cosmos.test.ts +634 -0
  211. package/test/cluster-servicebus.test.ts +180 -0
  212. package/test/cluster-sqlite.test.ts +207 -0
  213. package/test/contextProvider.test.ts +11 -8
  214. package/test/controller.test.ts +23 -28
  215. package/test/cosmos-container-throughput.test.ts +80 -0
  216. package/test/cosmos-query.test.ts +368 -0
  217. package/test/dist/arbs-magnitude.test.d.ts.map +1 -0
  218. package/test/dist/arbs.test.d.ts.map +1 -0
  219. package/test/dist/auth.test.d.ts.map +1 -0
  220. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  221. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  222. package/test/dist/cluster-sqlite.test.d.ts.map +1 -0
  223. package/test/dist/contextProvider.test.d.ts.map +1 -1
  224. package/test/dist/controller.test.d.ts.map +1 -1
  225. package/test/dist/cosmos-container-throughput.test.d.ts.map +1 -0
  226. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  227. package/test/dist/fixtures.d.ts +17 -9
  228. package/test/dist/fixtures.d.ts.map +1 -1
  229. package/test/dist/fixtures.js +8 -3
  230. package/test/dist/json-lower.test.d.ts.map +1 -0
  231. package/test/dist/query.test.d.ts.map +1 -1
  232. package/test/dist/rawQuery.test.d.ts.map +1 -1
  233. package/test/dist/repository-ext.test.d.ts.map +1 -0
  234. package/test/dist/repository-legacy-document.test.d.ts.map +1 -0
  235. package/test/dist/requires.test.d.ts.map +1 -1
  236. package/test/dist/router-generator.test.d.ts.map +1 -0
  237. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  238. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  239. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  240. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  241. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  242. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  243. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  244. package/test/fixtures.ts +7 -2
  245. package/test/json-lower.test.ts +129 -0
  246. package/test/layerUtils.test.ts +2 -2
  247. package/test/query.test.ts +1232 -42
  248. package/test/rawQuery.test.ts +432 -7
  249. package/test/repository-ext.test.ts +456 -0
  250. package/test/repository-legacy-document.test.ts +394 -0
  251. package/test/requires.test.ts +7 -3
  252. package/test/router-generator.test.ts +187 -0
  253. package/test/routing-interruptibility.test.ts +66 -0
  254. package/test/rpc-context-map-streaming.test.ts +265 -0
  255. package/test/rpc-e2e-invalidation.test.ts +421 -0
  256. package/test/rpc-multi-middleware.test.ts +17 -11
  257. package/test/rpc-stream-fullstack.test.ts +307 -0
  258. package/test/sql-store.test.ts +1202 -47
  259. package/test/validateSample.test.ts +70 -42
  260. package/test/workflow-engine-cosmos.test.ts +345 -0
  261. package/test/workflow-engine-sqlite.test.ts +297 -0
  262. package/tsconfig.examples.json +1 -1
  263. package/tsconfig.json +9 -1
  264. package/tsconfig.src.json +35 -35
  265. package/tsconfig.test.json +2 -2
  266. package/dist/Emailer/service.d.ts +0 -55
  267. package/dist/Emailer/service.d.ts.map +0 -1
  268. package/dist/Emailer/service.js +0 -6
  269. package/dist/Emailer.d.ts +0 -2
  270. package/dist/Emailer.d.ts.map +0 -1
  271. package/dist/Emailer.js +0 -2
  272. package/dist/Model/Repository/ext.d.ts +0 -41
  273. package/dist/Model/Repository/ext.d.ts.map +0 -1
  274. package/dist/Model/Repository/ext.js +0 -65
  275. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  276. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  277. package/dist/Model/Repository/internal/internal.js +0 -320
  278. package/dist/Model/Repository/legacy.d.ts +0 -19
  279. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  280. package/dist/Model/Repository/legacy.js +0 -2
  281. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  282. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  283. package/dist/Model/Repository/makeRepo.js +0 -24
  284. package/dist/Model/Repository/service.d.ts +0 -89
  285. package/dist/Model/Repository/service.d.ts.map +0 -1
  286. package/dist/Model/Repository/service.js +0 -2
  287. package/dist/Model/Repository/validation.d.ts +0 -43
  288. package/dist/Model/Repository/validation.d.ts.map +0 -1
  289. package/dist/Model/Repository/validation.js +0 -32
  290. package/dist/Model/Repository.d.ts +0 -6
  291. package/dist/Model/Repository.d.ts.map +0 -1
  292. package/dist/Model/Repository.js +0 -6
  293. package/dist/Model/dsl.d.ts +0 -32
  294. package/dist/Model/dsl.d.ts.map +0 -1
  295. package/dist/Model/dsl.js +0 -44
  296. package/dist/Model/filter/filterApi.d.ts +0 -30
  297. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  298. package/dist/Model/filter/filterApi.js +0 -2
  299. package/dist/Model/filter/types/errors.d.ts +0 -29
  300. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  301. package/dist/Model/filter/types/errors.js +0 -2
  302. package/dist/Model/filter/types/fields.d.ts +0 -15
  303. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  304. package/dist/Model/filter/types/fields.js +0 -2
  305. package/dist/Model/filter/types/path/common.d.ts +0 -316
  306. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  307. package/dist/Model/filter/types/path/common.js +0 -2
  308. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  309. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  310. package/dist/Model/filter/types/path/eager.js +0 -31
  311. package/dist/Model/filter/types/path/index.d.ts +0 -4
  312. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  313. package/dist/Model/filter/types/path/index.js +0 -3
  314. package/dist/Model/filter/types/utils.d.ts +0 -79
  315. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  316. package/dist/Model/filter/types/utils.js +0 -2
  317. package/dist/Model/filter/types/validator.d.ts +0 -30
  318. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  319. package/dist/Model/filter/types/validator.js +0 -2
  320. package/dist/Model/filter/types.d.ts +0 -5
  321. package/dist/Model/filter/types.d.ts.map +0 -1
  322. package/dist/Model/filter/types.js +0 -7
  323. package/dist/Model/query/dsl.d.ts +0 -248
  324. package/dist/Model/query/dsl.d.ts.map +0 -1
  325. package/dist/Model/query/dsl.js +0 -104
  326. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  327. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  328. package/dist/Model/query/new-kid-interpreter.js +0 -165
  329. package/dist/Model/query.d.ts +0 -15
  330. package/dist/Model/query.d.ts.map +0 -1
  331. package/dist/Model/query.js +0 -3
  332. package/dist/Model.d.ts +0 -4
  333. package/dist/Model.d.ts.map +0 -1
  334. package/dist/Model.js +0 -4
  335. package/dist/Operations.d.ts +0 -55
  336. package/dist/Operations.d.ts.map +0 -1
  337. package/dist/Operations.js +0 -102
  338. package/dist/OperationsRepo.d.ts +0 -41
  339. package/dist/OperationsRepo.d.ts.map +0 -1
  340. package/dist/OperationsRepo.js +0 -14
  341. package/dist/QueueMaker/SQLQueue.d.ts +0 -14
  342. package/dist/QueueMaker/SQLQueue.d.ts.map +0 -1
  343. package/dist/QueueMaker/SQLQueue.js +0 -132
  344. package/dist/QueueMaker/memQueue.d.ts +0 -11
  345. package/dist/QueueMaker/memQueue.d.ts.map +0 -1
  346. package/dist/QueueMaker/memQueue.js +0 -76
  347. package/dist/QueueMaker/sbqueue.d.ts +0 -12
  348. package/dist/QueueMaker/sbqueue.d.ts.map +0 -1
  349. package/dist/QueueMaker/sbqueue.js +0 -91
  350. package/dist/QueueMaker/service.d.ts +0 -11
  351. package/dist/QueueMaker/service.d.ts.map +0 -1
  352. package/dist/QueueMaker/service.js +0 -4
  353. package/dist/RequestContext.d.ts +0 -68
  354. package/dist/RequestContext.d.ts.map +0 -1
  355. package/dist/RequestContext.js +0 -49
  356. package/dist/RequestFiberSet.d.ts +0 -36
  357. package/dist/RequestFiberSet.d.ts.map +0 -1
  358. package/dist/RequestFiberSet.js +0 -78
  359. package/dist/Store/ContextMapContainer.d.ts +0 -25
  360. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  361. package/dist/Store/ContextMapContainer.js +0 -77
  362. package/dist/Store/service.d.ts +0 -111
  363. package/dist/Store/service.d.ts.map +0 -1
  364. package/dist/Store/service.js +0 -79
  365. package/dist/Store.d.ts +0 -2
  366. package/dist/Store.d.ts.map +0 -1
  367. package/dist/Store.js +0 -2
  368. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  369. package/dist/adapters/SQL/Model.js +0 -478
  370. package/dist/adapters/SQL.d.ts.map +0 -1
  371. package/dist/adapters/ServiceBus.d.ts +0 -58
  372. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  373. package/dist/adapters/ServiceBus.js +0 -99
  374. package/dist/adapters/cosmos-client.d.ts +0 -14
  375. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  376. package/dist/adapters/cosmos-client.js +0 -9
  377. package/dist/adapters/index.d.ts +0 -2
  378. package/dist/adapters/index.d.ts.map +0 -1
  379. package/dist/adapters/index.js +0 -2
  380. package/dist/adapters/logger.d.ts +0 -9
  381. package/dist/adapters/logger.d.ts.map +0 -1
  382. package/dist/adapters/logger.js +0 -3
  383. package/dist/adapters/memQueue.d.ts +0 -13
  384. package/dist/adapters/memQueue.d.ts.map +0 -1
  385. package/dist/adapters/memQueue.js +0 -20
  386. package/dist/adapters/mongo-client.d.ts.map +0 -1
  387. package/dist/adapters/mongo-client.js +0 -13
  388. package/dist/adapters/redis-client.d.ts.map +0 -1
  389. package/dist/adapters/redis-client.js +0 -94
  390. package/dist/api/ContextProvider.d.ts.map +0 -1
  391. package/dist/api/ContextProvider.js +0 -38
  392. package/dist/api/codec.d.ts.map +0 -1
  393. package/dist/api/codec.js +0 -5
  394. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  395. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  396. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  397. package/dist/api/internal/auth.d.ts +0 -15
  398. package/dist/api/internal/auth.d.ts.map +0 -1
  399. package/dist/api/internal/auth.js +0 -47
  400. package/dist/api/internal/events.d.ts +0 -9
  401. package/dist/api/internal/events.d.ts.map +0 -1
  402. package/dist/api/internal/events.js +0 -42
  403. package/dist/api/internal/health.d.ts.map +0 -1
  404. package/dist/api/internal/health.js +0 -5
  405. package/dist/api/layerUtils.d.ts.map +0 -1
  406. package/dist/api/layerUtils.js +0 -16
  407. package/dist/api/middlewares.d.ts.map +0 -1
  408. package/dist/api/reportError.d.ts.map +0 -1
  409. package/dist/api/reportError.js +0 -27
  410. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  411. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  412. package/dist/api/routing/middleware/middleware.js +0 -130
  413. package/dist/api/routing/middleware.d.ts.map +0 -1
  414. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  415. package/dist/api/routing/schema/jwt.js +0 -12
  416. package/dist/api/routing/tsort.d.ts.map +0 -1
  417. package/dist/api/routing/tsort.js +0 -51
  418. package/dist/api/routing/utils.d.ts.map +0 -1
  419. package/dist/api/routing/utils.js +0 -44
  420. package/dist/api/routing.d.ts +0 -134
  421. package/dist/api/routing.d.ts.map +0 -1
  422. package/dist/api/routing.js +0 -167
  423. package/dist/api/setupRequest.d.ts +0 -15
  424. package/dist/api/setupRequest.d.ts.map +0 -1
  425. package/dist/api/setupRequest.js +0 -49
  426. package/dist/api/util.d.ts.map +0 -1
  427. package/dist/api/util.js +0 -14
  428. package/eslint.config.mjs +0 -24
  429. package/src/Emailer/service.ts +0 -52
  430. package/src/Emailer.ts +0 -1
  431. package/src/Model/Repository/ext.ts +0 -283
  432. package/src/Model/Repository/internal/internal.ts +0 -580
  433. package/src/Model/Repository/legacy.ts +0 -27
  434. package/src/Model/Repository/makeRepo.ts +0 -139
  435. package/src/Model/Repository/service.ts +0 -627
  436. package/src/Model/Repository/validation.ts +0 -31
  437. package/src/Model/Repository.ts +0 -5
  438. package/src/Model/dsl.ts +0 -128
  439. package/src/Model/filter/filterApi.ts +0 -60
  440. package/src/Model/filter/types/errors.ts +0 -47
  441. package/src/Model/filter/types/fields.ts +0 -50
  442. package/src/Model/filter/types/path/common.ts +0 -404
  443. package/src/Model/filter/types/path/eager.ts +0 -298
  444. package/src/Model/filter/types/path/index.ts +0 -4
  445. package/src/Model/filter/types/utils.ts +0 -128
  446. package/src/Model/filter/types/validator.ts +0 -46
  447. package/src/Model/filter/types.ts +0 -6
  448. package/src/Model/query/dsl.ts +0 -2110
  449. package/src/Model/query/new-kid-interpreter.ts +0 -210
  450. package/src/Model/query.ts +0 -13
  451. package/src/Model.ts +0 -3
  452. package/src/Operations.ts +0 -235
  453. package/src/OperationsRepo.ts +0 -16
  454. package/src/QueueMaker/SQLQueue.ts +0 -190
  455. package/src/QueueMaker/memQueue.ts +0 -130
  456. package/src/QueueMaker/sbqueue.ts +0 -137
  457. package/src/QueueMaker/service.ts +0 -17
  458. package/src/RequestContext.ts +0 -63
  459. package/src/RequestFiberSet.ts +0 -105
  460. package/src/Store/ContextMapContainer.ts +0 -116
  461. package/src/Store/index.test.ts.bak +0 -112
  462. package/src/Store/service.ts +0 -193
  463. package/src/Store.ts +0 -1
  464. package/src/adapters/SQL.ts +0 -1
  465. package/src/adapters/ServiceBus.ts +0 -209
  466. package/src/adapters/cosmos-client.ts +0 -16
  467. package/src/adapters/index.ts +0 -0
  468. package/src/adapters/logger.ts +0 -3
  469. package/src/adapters/memQueue.ts +0 -21
  470. package/src/api/internal/auth.ts +0 -68
  471. package/src/api/middlewares.ts +0 -10
  472. package/src/api/routing/middleware.ts +0 -6
  473. package/src/api/routing.ts +0 -598
  474. package/src/api/setupRequest.ts +0 -104
  475. package/test/dist/date-query.test.d.ts.map +0 -1
  476. package/tsconfig.json.bak +0 -12
  477. /package/dist/{adapters/SQL.d.ts → SQL.d.ts} +0 -0
  478. /package/dist/{api/codec.d.ts → codec.d.ts} +0 -0
  479. /package/dist/{api/middlewares.d.ts → middlewares.d.ts} +0 -0
  480. /package/dist/{api/routing → routing}/schema/jwt.d.ts +0 -0
  481. /package/dist/{api/routing → routing}/tsort.d.ts +0 -0
  482. /package/dist/{api/util.d.ts → util.d.ts} +0 -0
  483. /package/src/{api/codec.ts → codec.ts} +0 -0
  484. /package/src/{api/internal → internal}/health.ts +0 -0
  485. /package/src/{api/routing → routing}/tsort.ts +0 -0
  486. /package/src/{api/util.ts → util.ts} +0 -0
@@ -1,193 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import type { UniqueKey } from "@azure/cosmos"
3
- import { Context, Effect, type NonEmptyReadonlyArray, type Option, type Redacted } 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
- * Memory/Disk use separate store instances per namespace. CosmosDB uses namespace-prefixed partition keys. SQL uses a `_namespace` column.
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 Context.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
- const store = new Map<symbol, unknown>()
165
-
166
- return {
167
- get: getEtag,
168
- set: setEtag,
169
- getOrCreateStore: <T>(key: symbol, make: () => T): T => {
170
- let value = store.get(key) as T | undefined
171
- if (value === undefined) {
172
- value = make()
173
- store.set(key, value)
174
- }
175
- return value
176
- }
177
- }
178
- }
179
-
180
- const makeMap = Effect.sync(() => makeContextMap())
181
-
182
- export class ContextMap extends Context.Opaque<ContextMap>()("effect-app/ContextMap", { make: makeMap }) {
183
- }
184
-
185
- export type PersistenceModelType<Encoded extends object> = Encoded & {
186
- _etag?: string | undefined
187
- }
188
-
189
- export interface StorageConfig {
190
- url: Redacted.Redacted<string>
191
- prefix: string
192
- dbName: string
193
- }
package/src/Store.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./Store/service.js"
@@ -1 +0,0 @@
1
- export * as SQLModel from "./SQL/Model.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, Context, Effect, Exit, FiberSet, Layer, type Scope } 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 Context.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 Context.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 = Context.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 Context.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 = Context.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
- }
@@ -1,16 +0,0 @@
1
- import { CosmosClient as ComosClient_ } from "@azure/cosmos"
2
- import { Context, Effect, Layer } from "effect-app"
3
-
4
- const withClient = (url: string) => Effect.sync(() => new ComosClient_(url))
5
-
6
- export const makeCosmosClient = (url: string, dbName: string) =>
7
- Effect.map(withClient(url), (x) => ({ db: x.database(dbName) }))
8
-
9
- export class CosmosClient extends Context.Service<CosmosClient, {
10
- readonly db: ReturnType<InstanceType<typeof ComosClient_>["database"]>
11
- }>()("@services/CosmosClient") {}
12
-
13
- export const db = CosmosClient.asEffect().pipe(Effect.map((_) => _.db))
14
-
15
- export const CosmosClientLayer = (cosmosUrl: string, dbName: string) =>
16
- Layer.effect(CosmosClient, makeCosmosClient(cosmosUrl, dbName))
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,21 +0,0 @@
1
- import { Context, Effect, type Queue } from "effect-app"
2
- import * as Q from "effect/Queue"
3
-
4
- const make = Effect
5
- .gen(function*() {
6
- const store = yield* Effect.sync(() => new Map<string, Queue.Queue<string>>())
7
-
8
- return {
9
- getOrCreateQueue: Effect.fnUntraced(function*(k: string) {
10
- const q = store.get(k)
11
- if (q) return q
12
- const newQ = yield* Q.unbounded<string>()
13
- store.set(k, newQ)
14
- return newQ
15
- })
16
- }
17
- })
18
-
19
- export class MemQueue extends Context.Opaque<MemQueue>()("effect-app/MemQueue", { make }) {
20
- static readonly Live = this.toLayer(this.make)
21
- }
@@ -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,10 +0,0 @@
1
- /**
2
- * Mechanism for extendning behaviour of all handlers on the server.
3
- *
4
- * @since 1.0.0
5
- */
6
-
7
- export * from "./internal/auth.js"
8
- export * from "./internal/events.js"
9
- export * from "./internal/health.js"
10
- export * from "./internal/RequestContextMiddleware.js"
@@ -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"