@effect-app/infra 4.0.0-beta.99 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/CHANGELOG.md +2901 -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 +240 -44
  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 -320
  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 +347 -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 +230 -155
  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 +308 -14
  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 +370 -99
  53. package/dist/Store/codeFilter.d.ts +5 -5
  54. package/dist/Store/codeFilter.d.ts.map +1 -1
  55. package/dist/Store/codeFilter.js +72 -23
  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 +257 -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 +277 -57
  169. package/src/Store/Cosmos.ts +597 -512
  170. package/src/Store/Disk.ts +145 -71
  171. package/src/Store/Memory.ts +419 -115
  172. package/src/Store/SQL/Pg.ts +352 -269
  173. package/src/Store/SQL/query.ts +368 -22
  174. package/src/Store/SQL.ts +742 -294
  175. package/src/Store/codeFilter.ts +79 -29
  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 +70 -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 +827 -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,60 +1,109 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
3
- import { Array, Option } from "effect-app"
4
- import { assertUnreachable, get } from "effect-app/utils"
5
- import type { FilterR, FilterResult } from "../Model/filter/filterApi.js"
6
- import type { FieldValues } from "../Model/filter/types.js"
7
- import type { Filter } from "./service.js"
8
- import { compare, greaterThan, greaterThanExclusive, lowerThan, lowerThanExclusive } from "./utils.js"
3
+ import * as Array from "effect-app/Array"
4
+ import type { FilterR, FilterResult } from "effect-app/Model/filter/filterApi"
5
+ import type { FieldValues } from "effect-app/Model/filter/types"
6
+ import * as Option from "effect-app/Option"
7
+ import type { Filter } from "effect-app/Store"
8
+ import { absurd } from "effect/Function"
9
+ import { compare, get, greaterThan, greaterThanExclusive, lowerThan, lowerThanExclusive, toJsonQueryValue } from "./utils.ts"
9
10
 
10
- const vAsArr = (v: string) => v as unknown as any[]
11
+ const vAsArr = (v: unknown) => toJsonQueryValue(v) as any[]
12
+
13
+ const mapEntries = (value: unknown): readonly [unknown, unknown][] => {
14
+ const json = toJsonQueryValue(value)
15
+ if (!Array.isArray(json)) return []
16
+ return json.filter((entry): entry is [unknown, unknown] => Array.isArray(entry) && entry.length >= 2)
17
+ }
18
+
19
+ const pairEq = (entry: readonly [unknown, unknown], pair: unknown) => {
20
+ const json = toJsonQueryValue(pair)
21
+ return Array.isArray(json) && json.length >= 2 && compare(entry[0], json[0]) && compare(entry[1], json[1])
22
+ }
11
23
 
12
24
  const filterStatement = (x: any, p: FilterR) => {
13
- const k = get(x, p.path)
25
+ const k = toJsonQueryValue(get(x, p.path))
26
+ const v = toJsonQueryValue(p.value)
14
27
  switch (p.op) {
15
28
  case "in":
16
- return p.value.includes(k)
29
+ return (v as unknown[]).includes(k)
17
30
  case "notIn":
18
- return !p.value.includes(k)
31
+ return !(v as unknown[]).includes(k)
19
32
  case "lt":
20
- return lowerThan(k, p.value)
33
+ return lowerThan(k as any, v as any)
21
34
  case "lte":
22
- return lowerThanExclusive(k, p.value)
35
+ return lowerThanExclusive(k as any, v as any)
23
36
  case "gt":
24
- return greaterThan(k, p.value)
37
+ return greaterThan(k as any, v as any)
25
38
  case "gte":
26
- return greaterThanExclusive(k, p.value)
39
+ return greaterThanExclusive(k as any, v as any)
27
40
  case "includes":
28
- return (k as Array<string>).includes(p.value)
41
+ return (k as Array<unknown>).includes(v)
29
42
  case "notIncludes":
30
- return !(k as Array<string>).includes(p.value)
43
+ return !(k as Array<unknown>).includes(v)
31
44
  case "includes-any":
32
- return (vAsArr(p.value)).some((_) => (k as Array<string>)?.includes(_))
45
+ return (vAsArr(p.value)).some((_) => (k as Array<unknown>)?.includes(_))
33
46
  case "notIncludes-any":
34
- return !(vAsArr(p.value)).some((_) => (k as Array<string>)?.includes(_))
47
+ return !(vAsArr(p.value)).some((_) => (k as Array<unknown>)?.includes(_))
35
48
  case "includes-all":
36
- return (vAsArr(p.value)).every((_) => (k as Array<string>)?.includes(_))
49
+ return (vAsArr(p.value)).every((_) => (k as Array<unknown>)?.includes(_))
37
50
  case "notIncludes-all":
38
- return !(vAsArr(p.value)).every((_) => (k as Array<string>)?.includes(_))
51
+ return !(vAsArr(p.value)).every((_) => (k as Array<unknown>)?.includes(_))
52
+ case "hasKey":
53
+ return mapEntries(k).some(([key]) => compare(key, v))
54
+ case "notHasKey":
55
+ return !mapEntries(k).some(([key]) => compare(key, v))
56
+ case "hasValue":
57
+ return mapEntries(k).some(([, val]) => compare(val, v))
58
+ case "notHasValue":
59
+ return !mapEntries(k).some(([, val]) => compare(val, v))
60
+ case "hasKeyValue":
61
+ return mapEntries(k).some((entry) => pairEq(entry, v))
62
+ case "notHasKeyValue":
63
+ return !mapEntries(k).some((entry) => pairEq(entry, v))
64
+ case "hasKey-any":
65
+ return vAsArr(p.value).some((key) => mapEntries(k).some(([k0]) => compare(k0, key)))
66
+ case "notHasKey-any":
67
+ return !vAsArr(p.value).some((key) => mapEntries(k).some(([k0]) => compare(k0, key)))
68
+ case "hasKey-all":
69
+ return vAsArr(p.value).every((key) => mapEntries(k).some(([k0]) => compare(k0, key)))
70
+ case "notHasKey-all":
71
+ return !vAsArr(p.value).every((key) => mapEntries(k).some(([k0]) => compare(k0, key)))
72
+ case "hasValue-any":
73
+ return vAsArr(p.value).some((val) => mapEntries(k).some(([, v0]) => compare(v0, val)))
74
+ case "notHasValue-any":
75
+ return !vAsArr(p.value).some((val) => mapEntries(k).some(([, v0]) => compare(v0, val)))
76
+ case "hasValue-all":
77
+ return vAsArr(p.value).every((val) => mapEntries(k).some(([, v0]) => compare(v0, val)))
78
+ case "notHasValue-all":
79
+ return !vAsArr(p.value).every((val) => mapEntries(k).some(([, v0]) => compare(v0, val)))
80
+ case "hasKeyValue-any":
81
+ return vAsArr(p.value).some((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)))
82
+ case "notHasKeyValue-any":
83
+ return !vAsArr(p.value).some((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)))
84
+ case "hasKeyValue-all":
85
+ return vAsArr(p.value).every((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)))
86
+ case "notHasKeyValue-all":
87
+ return !vAsArr(p.value).every((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)))
39
88
  case "contains":
40
- return (k as string).toLowerCase().includes(p.value.toLowerCase())
89
+ return (k as string).toLowerCase().includes((v as string).toLowerCase())
41
90
  case "endsWith":
42
- return (k as string).toLowerCase().endsWith(p.value.toLowerCase())
91
+ return (k as string).toLowerCase().endsWith((v as string).toLowerCase())
43
92
  case "startsWith":
44
- return (k as string).toLowerCase().startsWith(p.value.toLowerCase())
93
+ return (k as string).toLowerCase().startsWith((v as string).toLowerCase())
45
94
  case "notContains":
46
- return !(k as string).toLowerCase().includes(p.value.toLowerCase())
95
+ return !(k as string).toLowerCase().includes((v as string).toLowerCase())
47
96
  case "notEndsWith":
48
- return !(k as string).toLowerCase().endsWith(p.value.toLowerCase())
97
+ return !(k as string).toLowerCase().endsWith((v as string).toLowerCase())
49
98
  case "notStartsWith":
50
- return !(k as string).toLowerCase().startsWith(p.value.toLowerCase())
99
+ return !(k as string).toLowerCase().startsWith((v as string).toLowerCase())
51
100
  case "neq":
52
- return !compare(k, p.value)
101
+ return !compare(k, v)
53
102
  case "eq":
54
103
  case undefined:
55
- return compare(k, p.value)
104
+ return compare(k, v)
56
105
  default: {
57
- return assertUnreachable(p.op)
106
+ return absurd(p.op)
58
107
  }
59
108
  }
60
109
  }
@@ -186,6 +235,7 @@ export const codeFilter3_ = <E>(state: readonly FilterResult[], sut: E): boolean
186
235
  const statements: any[] = [] // must be defined here to be used by eval.
187
236
  // always put everything inside a root scope.
188
237
  const s = codeFilter3__([{ t: "where-scope", result: state, relation: "some" }], sut, statements, null, false)
238
+ // oxlint-disable-next-line no-eval
189
239
  return eval(s)
190
240
  }
191
241
 
@@ -1,14 +1,21 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Effect, Layer, Redacted } from "effect-app"
3
- import { CosmosStoreLayer } from "./Cosmos.js"
4
- import { DiskStoreLayer } from "./Disk.js"
5
- import { MemoryStoreLive } from "./Memory.js"
6
- // import { RedisStoreLayer } from "./Redis.js"
7
- import type { StorageConfig } from "./service.js"
8
- import { SQLiteStoreLayer } from "./SQL.js"
9
- import { PgStoreLayer } from "./SQL/Pg.js"
2
+ import * as Effect from "effect-app/Effect"
3
+ import * as Layer from "effect-app/Layer"
4
+ import { RepositoryRegistryLive } from "effect-app/Model"
5
+ import type { StorageConfig } from "effect-app/Store"
6
+ import * as Redacted from "effect/Redacted"
7
+ import type { SqlClient } from "effect/sql"
8
+ import { CosmosStoreLayer } from "./Cosmos.ts"
9
+ import { DiskStoreLayer } from "./Disk.ts"
10
+ import { MemoryStoreLive } from "./Memory.ts"
11
+ // import { RedisStoreLayer } from "./Redis.ts"
12
+ import { SQLiteStoreLayer } from "./SQL.ts"
13
+ import { PgStoreLayer } from "./SQL/Pg.ts"
10
14
 
11
- export function StoreMakerLayer(cfg: StorageConfig) {
15
+ export function StoreMakerLayer(
16
+ cfg: StorageConfig,
17
+ options?: { makeSqlClientLayer?: (namespace: string) => Layer.Layer<SqlClient.SqlClient> }
18
+ ) {
12
19
  return Effect
13
20
  .sync(() => {
14
21
  const storageUrl = Redacted.value(cfg.url)
@@ -23,7 +30,7 @@ export function StoreMakerLayer(cfg: StorageConfig) {
23
30
  }
24
31
  if (storageUrl.startsWith("sqlite://")) {
25
32
  console.log("Using SQLite store")
26
- return SQLiteStoreLayer(cfg)
33
+ return SQLiteStoreLayer(cfg, options)
27
34
  }
28
35
  if (storageUrl.startsWith("pg://")) {
29
36
  console.log("Using PostgreSQL store")
@@ -37,7 +44,5 @@ export function StoreMakerLayer(cfg: StorageConfig) {
37
44
  console.log("Using Cosmos DB store")
38
45
  return CosmosStoreLayer(cfg)
39
46
  })
40
- .pipe(Layer.unwrap)
47
+ .pipe(Layer.unwrap, Layer.merge(RepositoryRegistryLive))
41
48
  }
42
-
43
- export * from "./service.js"
@@ -0,0 +1,143 @@
1
+ import type { FieldValues } from "effect-app/Model/filter/types"
2
+ import * as Option from "effect-app/Option"
3
+ import * as S from "effect-app/Schema"
4
+ import type { PersistenceModelType, StoreConfig } from "effect-app/Store"
5
+ import * as Result from "effect/Result"
6
+ import { toJsonQueryValue } from "./utils.ts"
7
+
8
+ export interface JsonDocumentCodec<E extends FieldValues> {
9
+ readonly encode: (doc: PersistenceModelType<E>) => PersistenceModelType<E>
10
+ readonly decode: (doc: PersistenceModelType<E>) => PersistenceModelType<E>
11
+ }
12
+
13
+ /**
14
+ * The store *read* boundary decode: a stored JSON document in, either the
15
+ * Encoded document or the `S.SchemaError` saying why it is not one.
16
+ *
17
+ * Synchronous on purpose: it runs once per document over whole result sets, so
18
+ * it must not allocate an Effect per row. Adapters lift the `Result` into their
19
+ * Effect channel once per operation (see {@link decodeStoredMany}).
20
+ */
21
+ export type StoredDecode<E extends FieldValues> = (
22
+ doc: PersistenceModelType<E>
23
+ ) => Result.Result<PersistenceModelType<E>, S.SchemaError>
24
+
25
+ const splitEtag = <E extends FieldValues>(doc: PersistenceModelType<E>) => {
26
+ const { _etag, ...rest } = doc
27
+ return { rest: rest as E, _etag }
28
+ }
29
+
30
+ const joinEtag = <E extends FieldValues>(
31
+ rest: E,
32
+ _etag: string | undefined
33
+ ): PersistenceModelType<E> => (_etag === undefined ? rest : { ...rest, _etag })
34
+
35
+ /** JSON document ↔ Encoded document codec for a store's domain schema. */
36
+ const jsonCodec = <E extends FieldValues>(schema: S.Top) => S.toCodecJson(S.toEncoded(schema)) as S.Codec<E, S.Json>
37
+
38
+ /**
39
+ * Encoded document ↔ JSON document. Prefer `Schema.toCodecJson(toEncoded(schema))`
40
+ * when the store has a schema; otherwise lower Date/Map/Set structurally.
41
+ *
42
+ * Both directions are **strict**: they run the whole-document codec, so a
43
+ * document that does not match the Encoded shape fails loudly rather than being
44
+ * read back half-decoded.
45
+ *
46
+ * This is the **write** path codec: `encode` on the way to the database, and
47
+ * `decode` to hand the just-written document back. The read path uses
48
+ * {@link makeStoredDecode}, which applies `jitM` first and reports a document it
49
+ * does not repair as a typed `S.SchemaError` instead of throwing.
50
+ *
51
+ * `_etag` is infrastructure metadata rather than part of the domain document,
52
+ * so it is split off before the codec runs and re-attached afterwards.
53
+ */
54
+ export const makeJsonDocumentCodec = <E extends FieldValues>(schema?: S.Top): JsonDocumentCodec<E> => {
55
+ if (schema) {
56
+ const codec = jsonCodec<E>(schema)
57
+ return {
58
+ encode: (doc) => {
59
+ const { rest, _etag } = splitEtag(doc)
60
+ return joinEtag(S.encodeSync(codec)(rest) as E, _etag)
61
+ },
62
+ decode: (doc) => {
63
+ const { rest, _etag } = splitEtag(doc)
64
+ return joinEtag(S.decodeSync(codec)(rest as S.Json), _etag)
65
+ }
66
+ }
67
+ }
68
+ return {
69
+ encode: (doc) => toJsonQueryValue(doc) as PersistenceModelType<E>,
70
+ decode: (doc) => doc
71
+ }
72
+ }
73
+
74
+ /**
75
+ * The store *read* boundary: apply `jitM` to the raw JSON document - after the
76
+ * adapter merged `defaultValues` into it - and only then decode JSON→Encoded
77
+ * with the strict `Schema.toCodecJson(Schema.toEncoded(schema))` codec.
78
+ *
79
+ * This is the one place a legacy-shaped document can be repaired, and why
80
+ * `jitM` can fix things no schema decode could - an explicit `null` where a
81
+ * `Date` is expected, a key added after the document was written. It runs
82
+ * before any schema decode sees the document.
83
+ *
84
+ * Nothing here is lenient: a document `jitM` does not repair still fails. It
85
+ * fails as a typed `S.SchemaError` in a `Result` (via `S.decodeUnknownResult`)
86
+ * rather than by throwing, so adapters can turn it into `Effect.fail` and
87
+ * callers - `Repository.validateSample` in particular - can inspect it per
88
+ * document instead of losing the whole run to a defect.
89
+ *
90
+ * `_etag` is infrastructure metadata rather than part of the domain document,
91
+ * so it is split off first and `jitM` never sees it.
92
+ */
93
+ export const makeStoredDecode = <E extends FieldValues>(
94
+ schema: StoreConfig<E>["schema"],
95
+ jitM: StoreConfig<E>["jitM"]
96
+ ): StoredDecode<E> => {
97
+ if (schema === undefined) {
98
+ // schemaless store: the stored document is already the Encoded document,
99
+ // so there is nothing to decode - only `jitM` to apply.
100
+ if (jitM === undefined) return Result.succeed
101
+ return (doc) => {
102
+ const { rest, _etag } = splitEtag(doc)
103
+ return Result.succeed(joinEtag(jitM(rest) as unknown as E, _etag))
104
+ }
105
+ }
106
+ const decode = S.decodeUnknownResult(jsonCodec<E>(schema))
107
+ return (doc) => {
108
+ const { rest, _etag } = splitEtag(doc)
109
+ // adapters type the stored document as the Encoded persistence model, but
110
+ // at this point it is still the raw JSON document that `jitM` is written
111
+ // against - and `jitM` returns JSON, which is what the codec consumes.
112
+ const json = jitM === undefined ? rest : jitM(rest) as unknown as E
113
+ return Result.map(decode(json), (decoded) => joinEtag(decoded, _etag))
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Decode a whole result set, failing fast on the first bad document.
119
+ *
120
+ * One synchronous loop and one `Result` for the batch: no Effect per document,
121
+ * and no allocation beyond the decoded array (plus a `Result` wrapper) on the
122
+ * happy path. Adapters lift the returned `Result` with `Effect.fromResult`
123
+ * once, at the end.
124
+ */
125
+ export const decodeStoredMany = <A, B>(
126
+ docs: readonly A[],
127
+ decode: (doc: A) => Result.Result<B, S.SchemaError>
128
+ ): Result.Result<B[], S.SchemaError> => {
129
+ const decoded: B[] = []
130
+ for (const doc of docs) {
131
+ const result = decode(doc)
132
+ if (Result.isFailure(result)) return Result.fail(result.failure)
133
+ decoded.push(result.success)
134
+ }
135
+ return Result.succeed(decoded)
136
+ }
137
+
138
+ /** Decode an optional stored document; `None` short-circuits without decoding. */
139
+ export const decodeStoredOption = <A, B>(
140
+ doc: Option.Option<A>,
141
+ decode: (doc: A) => Result.Result<B, S.SchemaError>
142
+ ): Result.Result<Option.Option<B>, S.SchemaError> =>
143
+ Option.isNone(doc) ? Result.succeed(Option.none()) : Result.map(decode(doc.value), Option.some)