@effect-app/infra 4.0.0-beta.28 → 4.0.0-beta.281

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 (477) hide show
  1. package/CHANGELOG.md +2130 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +29 -10
  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 +547 -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 +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 -8
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +10 -6
  24. package/dist/QueueMaker/SQLQueue.d.ts +7 -8
  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 +4 -2
  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 +9 -5
  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 +8 -4
  34. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  35. package/dist/QueueMaker/sbqueue.js +60 -58
  36. package/dist/RequestFiberSet.d.ts +9 -6
  37. package/dist/RequestFiberSet.d.ts.map +1 -1
  38. package/dist/RequestFiberSet.js +13 -8
  39. package/dist/{adapters/SQL → SQL}/Model.d.ts +31 -42
  40. package/dist/SQL/Model.d.ts.map +1 -0
  41. package/dist/SQL/Model.js +469 -0
  42. package/dist/SQL.d.ts.map +1 -0
  43. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  44. package/dist/{adapters/ServiceBus.d.ts → ServiceBus.d.ts} +13 -10
  45. package/dist/ServiceBus.d.ts.map +1 -0
  46. package/dist/ServiceBus.js +108 -0
  47. package/dist/Store/Cosmos/query.d.ts +14 -3
  48. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  49. package/dist/Store/Cosmos/query.js +179 -41
  50. package/dist/Store/Cosmos.d.ts +2 -2
  51. package/dist/Store/Cosmos.d.ts.map +1 -1
  52. package/dist/Store/Cosmos.js +385 -254
  53. package/dist/Store/Disk.d.ts +4 -4
  54. package/dist/Store/Disk.d.ts.map +1 -1
  55. package/dist/Store/Disk.js +79 -39
  56. package/dist/Store/Memory.d.ts +5 -9
  57. package/dist/Store/Memory.d.ts.map +1 -1
  58. package/dist/Store/Memory.js +324 -67
  59. package/dist/Store/SQL/Pg.d.ts +4 -0
  60. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  61. package/dist/Store/SQL/Pg.js +232 -0
  62. package/dist/Store/SQL/query.d.ts +49 -0
  63. package/dist/Store/SQL/query.d.ts.map +1 -0
  64. package/dist/Store/SQL/query.js +527 -0
  65. package/dist/Store/SQL.d.ts +21 -0
  66. package/dist/Store/SQL.d.ts.map +1 -0
  67. package/dist/Store/SQL.js +456 -0
  68. package/dist/Store/codeFilter.d.ts +4 -4
  69. package/dist/Store/codeFilter.d.ts.map +1 -1
  70. package/dist/Store/codeFilter.js +6 -4
  71. package/dist/Store/index.d.ts +6 -4
  72. package/dist/Store/index.d.ts.map +1 -1
  73. package/dist/Store/index.js +18 -5
  74. package/dist/Store/utils.d.ts +5 -2
  75. package/dist/Store/utils.d.ts.map +1 -1
  76. package/dist/Store/utils.js +9 -5
  77. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  78. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  79. package/dist/WorkflowEngineCosmos.js +542 -0
  80. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  81. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  82. package/dist/WorkflowEngineSqlite.js +550 -0
  83. package/dist/arbs.d.ts +1 -1
  84. package/dist/arbs.d.ts.map +1 -1
  85. package/dist/arbs.js +5 -3
  86. package/dist/codec.d.ts.map +1 -0
  87. package/dist/codec.js +5 -0
  88. package/dist/{adapters/cosmos-client.d.ts → cosmos-client.d.ts} +4 -2
  89. package/dist/cosmos-client.d.ts.map +1 -0
  90. package/dist/cosmos-client.js +11 -0
  91. package/dist/errorReporter.d.ts +6 -4
  92. package/dist/errorReporter.d.ts.map +1 -1
  93. package/dist/errorReporter.js +23 -27
  94. package/dist/fileUtil.d.ts +1 -1
  95. package/dist/fileUtil.d.ts.map +1 -1
  96. package/dist/fileUtil.js +2 -2
  97. package/dist/index.d.ts +2 -1
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +3 -2
  100. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  101. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  102. package/dist/internal/RequestContextMiddleware.js +45 -0
  103. package/dist/internal/auth.d.ts +53 -0
  104. package/dist/internal/auth.d.ts.map +1 -0
  105. package/dist/internal/auth.js +180 -0
  106. package/dist/internal/events.d.ts +11 -0
  107. package/dist/internal/events.d.ts.map +1 -0
  108. package/dist/internal/events.js +49 -0
  109. package/dist/internal/health.d.ts.map +1 -0
  110. package/dist/internal/health.js +5 -0
  111. package/dist/{api/layerUtils.d.ts → layerUtils.d.ts} +14 -6
  112. package/dist/layerUtils.d.ts.map +1 -0
  113. package/dist/layerUtils.js +17 -0
  114. package/dist/logger/jsonLogger.d.ts +1 -1
  115. package/dist/logger/jsonLogger.d.ts.map +1 -1
  116. package/dist/logger/jsonLogger.js +5 -3
  117. package/dist/logger/logFmtLogger.d.ts +1 -1
  118. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  119. package/dist/logger/logFmtLogger.js +3 -3
  120. package/dist/logger/shared.d.ts +2 -2
  121. package/dist/logger/shared.d.ts.map +1 -1
  122. package/dist/logger/shared.js +5 -5
  123. package/dist/logger.d.ts.map +1 -1
  124. package/dist/{adapters/memQueue.d.ts → memQueue.d.ts} +4 -2
  125. package/dist/memQueue.d.ts.map +1 -0
  126. package/dist/memQueue.js +21 -0
  127. package/dist/middlewares.d.ts.map +1 -0
  128. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  129. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +3 -2
  130. package/dist/mongo-client.d.ts.map +1 -0
  131. package/dist/mongo-client.js +15 -0
  132. package/dist/otel.d.ts +75 -0
  133. package/dist/otel.d.ts.map +1 -0
  134. package/dist/otel.js +65 -0
  135. package/dist/rateLimit.d.ts +11 -3
  136. package/dist/rateLimit.d.ts.map +1 -1
  137. package/dist/rateLimit.js +7 -12
  138. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +5 -2
  139. package/dist/redis-client.d.ts.map +1 -0
  140. package/dist/redis-client.js +98 -0
  141. package/dist/{api/reportError.d.ts → reportError.d.ts} +1 -1
  142. package/dist/reportError.d.ts.map +1 -0
  143. package/dist/reportError.js +28 -0
  144. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +4 -3
  145. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  146. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  147. package/dist/routing/middleware/middleware.d.ts +48 -0
  148. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  149. package/dist/routing/middleware/middleware.js +128 -0
  150. package/dist/{api/routing → routing}/middleware.d.ts +0 -1
  151. package/dist/routing/middleware.d.ts.map +1 -0
  152. package/dist/{api/routing → routing}/middleware.js +1 -2
  153. package/dist/routing/schema/jwt.d.ts.map +1 -0
  154. package/dist/routing/schema/jwt.js +13 -0
  155. package/dist/routing/tsort.d.ts.map +1 -0
  156. package/dist/routing/tsort.js +51 -0
  157. package/dist/{api/routing → routing}/utils.d.ts +3 -3
  158. package/dist/routing/utils.d.ts.map +1 -0
  159. package/dist/routing/utils.js +45 -0
  160. package/dist/routing.d.ts +182 -0
  161. package/dist/routing.d.ts.map +1 -0
  162. package/dist/routing.js +235 -0
  163. package/dist/test.d.ts +2 -2
  164. package/dist/test.d.ts.map +1 -1
  165. package/dist/test.js +2 -2
  166. package/dist/util.d.ts.map +1 -0
  167. package/dist/util.js +14 -0
  168. package/docs/cluster-storage.md +26 -0
  169. package/docs/workflow-engine.md +262 -0
  170. package/examples/query.ts +47 -39
  171. package/package.json +33 -352
  172. package/src/CUPS.ts +53 -14
  173. package/src/ClusterCosmos.ts +1118 -0
  174. package/src/ClusterServiceBus.ts +242 -0
  175. package/src/{api/ContextProvider.ts → ContextProvider.ts} +20 -17
  176. package/src/Emailer/Sendgrid.ts +83 -60
  177. package/src/Emailer/fake.ts +4 -4
  178. package/src/MainFiberSet.ts +15 -13
  179. package/src/QueueMaker/SQLQueue.ts +154 -157
  180. package/src/QueueMaker/errors.ts +3 -1
  181. package/src/QueueMaker/memQueue.ts +115 -109
  182. package/src/QueueMaker/sbqueue.ts +80 -92
  183. package/src/RequestFiberSet.ts +14 -9
  184. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  185. package/src/SQL.ts +1 -0
  186. package/src/ServiceBus.ts +219 -0
  187. package/src/Store/Cosmos/query.ts +218 -54
  188. package/src/Store/Cosmos.ts +529 -365
  189. package/src/Store/Disk.ts +112 -70
  190. package/src/Store/Memory.ts +365 -99
  191. package/src/Store/SQL/Pg.ts +363 -0
  192. package/src/Store/SQL/query.ts +603 -0
  193. package/src/Store/SQL.ts +746 -0
  194. package/src/Store/codeFilter.ts +8 -6
  195. package/src/Store/index.ts +25 -10
  196. package/src/Store/utils.ts +32 -25
  197. package/src/WorkflowEngineCosmos.ts +749 -0
  198. package/src/WorkflowEngineSqlite.ts +813 -0
  199. package/src/arbs.ts +5 -3
  200. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  201. package/src/errorReporter.ts +68 -78
  202. package/src/fileUtil.ts +1 -1
  203. package/src/index.ts +2 -1
  204. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  205. package/src/internal/auth.ts +272 -0
  206. package/src/{api/internal → internal}/events.ts +22 -13
  207. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  208. package/src/logger/jsonLogger.ts +5 -3
  209. package/src/logger/logFmtLogger.ts +3 -3
  210. package/src/logger/shared.ts +5 -4
  211. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  212. package/src/middlewares.ts +10 -0
  213. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  214. package/src/otel.ts +152 -0
  215. package/src/rateLimit.ts +34 -23
  216. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  217. package/src/{api/reportError.ts → reportError.ts} +3 -2
  218. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  219. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  220. package/src/routing/middleware.ts +4 -0
  221. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  222. package/src/{api/routing → routing}/utils.ts +2 -1
  223. package/src/routing.ts +766 -0
  224. package/src/test.ts +4 -4
  225. package/src/vitest.ts +1 -1
  226. package/test/auth.test.ts +101 -0
  227. package/test/cluster-cosmos.test.ts +612 -0
  228. package/test/cluster-servicebus.test.ts +180 -0
  229. package/test/cluster-sqlite.test.ts +205 -0
  230. package/test/contextProvider.test.ts +15 -12
  231. package/test/controller.test.ts +28 -32
  232. package/test/cosmos-query.test.ts +159 -0
  233. package/test/dist/auth.test.d.ts.map +1 -0
  234. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  235. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  236. package/test/dist/cluster-sqlite.test.d.ts.map +1 -0
  237. package/test/dist/contextProvider.test.d.ts.map +1 -1
  238. package/test/dist/controller.test.d.ts.map +1 -1
  239. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  240. package/test/dist/fixtures.d.ts +29 -11
  241. package/test/dist/fixtures.d.ts.map +1 -1
  242. package/test/dist/fixtures.js +17 -10
  243. package/test/dist/query.test.d.ts.map +1 -1
  244. package/test/dist/rawQuery.test.d.ts.map +1 -1
  245. package/test/dist/repository-ext.test.d.ts.map +1 -0
  246. package/test/dist/requires.test.d.ts.map +1 -1
  247. package/test/dist/router-generator.test.d.ts.map +1 -0
  248. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  249. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  250. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  251. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  252. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  253. package/test/dist/sql-store.test.d.ts.map +1 -0
  254. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  255. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  256. package/test/fixtures.ts +16 -9
  257. package/test/layerUtils.test.ts +2 -2
  258. package/test/query.test.ts +905 -40
  259. package/test/rawQuery.test.ts +340 -22
  260. package/test/repository-ext.test.ts +62 -0
  261. package/test/requires.test.ts +10 -5
  262. package/test/router-generator.test.ts +187 -0
  263. package/test/routing-interruptibility.test.ts +66 -0
  264. package/test/rpc-context-map-streaming.test.ts +262 -0
  265. package/test/rpc-e2e-invalidation.test.ts +256 -0
  266. package/test/rpc-multi-middleware.test.ts +85 -10
  267. package/test/rpc-stream-fullstack.test.ts +304 -0
  268. package/test/sql-store.test.ts +1711 -0
  269. package/test/validateSample.test.ts +26 -14
  270. package/test/workflow-engine-cosmos.test.ts +345 -0
  271. package/test/workflow-engine-sqlite.test.ts +297 -0
  272. package/tsconfig.examples.json +1 -1
  273. package/tsconfig.json +3 -1
  274. package/tsconfig.src.json +35 -35
  275. package/tsconfig.test.json +2 -2
  276. package/dist/Emailer/service.d.ts +0 -55
  277. package/dist/Emailer/service.d.ts.map +0 -1
  278. package/dist/Emailer/service.js +0 -6
  279. package/dist/Emailer.d.ts +0 -2
  280. package/dist/Emailer.d.ts.map +0 -1
  281. package/dist/Emailer.js +0 -2
  282. package/dist/Model/Repository/ext.d.ts +0 -41
  283. package/dist/Model/Repository/ext.d.ts.map +0 -1
  284. package/dist/Model/Repository/ext.js +0 -65
  285. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  286. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  287. package/dist/Model/Repository/internal/internal.js +0 -316
  288. package/dist/Model/Repository/legacy.d.ts +0 -19
  289. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  290. package/dist/Model/Repository/legacy.js +0 -2
  291. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  292. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  293. package/dist/Model/Repository/makeRepo.js +0 -24
  294. package/dist/Model/Repository/service.d.ts +0 -89
  295. package/dist/Model/Repository/service.d.ts.map +0 -1
  296. package/dist/Model/Repository/service.js +0 -2
  297. package/dist/Model/Repository/validation.d.ts +0 -42
  298. package/dist/Model/Repository/validation.d.ts.map +0 -1
  299. package/dist/Model/Repository/validation.js +0 -32
  300. package/dist/Model/Repository.d.ts +0 -6
  301. package/dist/Model/Repository.d.ts.map +0 -1
  302. package/dist/Model/Repository.js +0 -6
  303. package/dist/Model/dsl.d.ts +0 -32
  304. package/dist/Model/dsl.d.ts.map +0 -1
  305. package/dist/Model/dsl.js +0 -44
  306. package/dist/Model/filter/filterApi.d.ts +0 -30
  307. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  308. package/dist/Model/filter/filterApi.js +0 -2
  309. package/dist/Model/filter/types/errors.d.ts +0 -29
  310. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  311. package/dist/Model/filter/types/errors.js +0 -2
  312. package/dist/Model/filter/types/fields.d.ts +0 -15
  313. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  314. package/dist/Model/filter/types/fields.js +0 -2
  315. package/dist/Model/filter/types/path/common.d.ts +0 -316
  316. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  317. package/dist/Model/filter/types/path/common.js +0 -2
  318. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  319. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  320. package/dist/Model/filter/types/path/eager.js +0 -31
  321. package/dist/Model/filter/types/path/index.d.ts +0 -4
  322. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  323. package/dist/Model/filter/types/path/index.js +0 -3
  324. package/dist/Model/filter/types/utils.d.ts +0 -79
  325. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  326. package/dist/Model/filter/types/utils.js +0 -2
  327. package/dist/Model/filter/types/validator.d.ts +0 -30
  328. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  329. package/dist/Model/filter/types/validator.js +0 -2
  330. package/dist/Model/filter/types.d.ts +0 -5
  331. package/dist/Model/filter/types.d.ts.map +0 -1
  332. package/dist/Model/filter/types.js +0 -7
  333. package/dist/Model/query/dsl.d.ts +0 -248
  334. package/dist/Model/query/dsl.d.ts.map +0 -1
  335. package/dist/Model/query/dsl.js +0 -104
  336. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  337. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  338. package/dist/Model/query/new-kid-interpreter.js +0 -165
  339. package/dist/Model/query.d.ts +0 -15
  340. package/dist/Model/query.d.ts.map +0 -1
  341. package/dist/Model/query.js +0 -3
  342. package/dist/Model.d.ts +0 -4
  343. package/dist/Model.d.ts.map +0 -1
  344. package/dist/Model.js +0 -4
  345. package/dist/Operations.d.ts +0 -55
  346. package/dist/Operations.d.ts.map +0 -1
  347. package/dist/Operations.js +0 -102
  348. package/dist/OperationsRepo.d.ts +0 -41
  349. package/dist/OperationsRepo.d.ts.map +0 -1
  350. package/dist/OperationsRepo.js +0 -14
  351. package/dist/QueueMaker/service.d.ts +0 -11
  352. package/dist/QueueMaker/service.d.ts.map +0 -1
  353. package/dist/QueueMaker/service.js +0 -4
  354. package/dist/RequestContext.d.ts +0 -63
  355. package/dist/RequestContext.d.ts.map +0 -1
  356. package/dist/RequestContext.js +0 -49
  357. package/dist/Store/ContextMapContainer.d.ts +0 -14
  358. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  359. package/dist/Store/ContextMapContainer.js +0 -16
  360. package/dist/Store/service.d.ts +0 -108
  361. package/dist/Store/service.d.ts.map +0 -1
  362. package/dist/Store/service.js +0 -71
  363. package/dist/Store.d.ts +0 -2
  364. package/dist/Store.d.ts.map +0 -1
  365. package/dist/Store.js +0 -2
  366. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  367. package/dist/adapters/SQL/Model.js +0 -478
  368. package/dist/adapters/SQL.d.ts.map +0 -1
  369. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  370. package/dist/adapters/ServiceBus.js +0 -99
  371. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  372. package/dist/adapters/cosmos-client.js +0 -9
  373. package/dist/adapters/index.d.ts +0 -2
  374. package/dist/adapters/index.d.ts.map +0 -1
  375. package/dist/adapters/index.js +0 -2
  376. package/dist/adapters/logger.d.ts +0 -9
  377. package/dist/adapters/logger.d.ts.map +0 -1
  378. package/dist/adapters/logger.js +0 -3
  379. package/dist/adapters/memQueue.d.ts.map +0 -1
  380. package/dist/adapters/memQueue.js +0 -20
  381. package/dist/adapters/mongo-client.d.ts.map +0 -1
  382. package/dist/adapters/mongo-client.js +0 -13
  383. package/dist/adapters/redis-client.d.ts.map +0 -1
  384. package/dist/adapters/redis-client.js +0 -94
  385. package/dist/api/ContextProvider.d.ts +0 -31
  386. package/dist/api/ContextProvider.d.ts.map +0 -1
  387. package/dist/api/ContextProvider.js +0 -38
  388. package/dist/api/codec.d.ts.map +0 -1
  389. package/dist/api/codec.js +0 -5
  390. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  391. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  392. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  393. package/dist/api/internal/auth.d.ts +0 -15
  394. package/dist/api/internal/auth.d.ts.map +0 -1
  395. package/dist/api/internal/auth.js +0 -47
  396. package/dist/api/internal/events.d.ts +0 -9
  397. package/dist/api/internal/events.d.ts.map +0 -1
  398. package/dist/api/internal/events.js +0 -42
  399. package/dist/api/internal/health.d.ts.map +0 -1
  400. package/dist/api/internal/health.js +0 -5
  401. package/dist/api/layerUtils.d.ts.map +0 -1
  402. package/dist/api/layerUtils.js +0 -16
  403. package/dist/api/middlewares.d.ts.map +0 -1
  404. package/dist/api/reportError.d.ts.map +0 -1
  405. package/dist/api/reportError.js +0 -27
  406. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  407. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  408. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  409. package/dist/api/routing/middleware/middleware.js +0 -92
  410. package/dist/api/routing/middleware.d.ts.map +0 -1
  411. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  412. package/dist/api/routing/schema/jwt.js +0 -12
  413. package/dist/api/routing/tsort.d.ts.map +0 -1
  414. package/dist/api/routing/tsort.js +0 -51
  415. package/dist/api/routing/utils.d.ts.map +0 -1
  416. package/dist/api/routing/utils.js +0 -44
  417. package/dist/api/routing.d.ts +0 -138
  418. package/dist/api/routing.d.ts.map +0 -1
  419. package/dist/api/routing.js +0 -166
  420. package/dist/api/setupRequest.d.ts +0 -12
  421. package/dist/api/setupRequest.d.ts.map +0 -1
  422. package/dist/api/setupRequest.js +0 -44
  423. package/dist/api/util.d.ts.map +0 -1
  424. package/dist/api/util.js +0 -14
  425. package/eslint.config.mjs +0 -24
  426. package/src/Emailer/service.ts +0 -52
  427. package/src/Emailer.ts +0 -1
  428. package/src/Model/Repository/ext.ts +0 -283
  429. package/src/Model/Repository/internal/internal.ts +0 -577
  430. package/src/Model/Repository/legacy.ts +0 -27
  431. package/src/Model/Repository/makeRepo.ts +0 -139
  432. package/src/Model/Repository/service.ts +0 -627
  433. package/src/Model/Repository/validation.ts +0 -31
  434. package/src/Model/Repository.ts +0 -5
  435. package/src/Model/dsl.ts +0 -128
  436. package/src/Model/filter/filterApi.ts +0 -60
  437. package/src/Model/filter/types/errors.ts +0 -47
  438. package/src/Model/filter/types/fields.ts +0 -50
  439. package/src/Model/filter/types/path/common.ts +0 -404
  440. package/src/Model/filter/types/path/eager.ts +0 -298
  441. package/src/Model/filter/types/path/index.ts +0 -4
  442. package/src/Model/filter/types/utils.ts +0 -128
  443. package/src/Model/filter/types/validator.ts +0 -46
  444. package/src/Model/filter/types.ts +0 -6
  445. package/src/Model/query/dsl.ts +0 -2110
  446. package/src/Model/query/new-kid-interpreter.ts +0 -210
  447. package/src/Model/query.ts +0 -13
  448. package/src/Model.ts +0 -3
  449. package/src/Operations.ts +0 -235
  450. package/src/OperationsRepo.ts +0 -16
  451. package/src/QueueMaker/service.ts +0 -17
  452. package/src/RequestContext.ts +0 -63
  453. package/src/Store/ContextMapContainer.ts +0 -20
  454. package/src/Store/index.test.ts.bak +0 -112
  455. package/src/Store/service.ts +0 -184
  456. package/src/Store.ts +0 -1
  457. package/src/adapters/SQL.ts +0 -1
  458. package/src/adapters/ServiceBus.ts +0 -209
  459. package/src/adapters/index.ts +0 -0
  460. package/src/adapters/logger.ts +0 -3
  461. package/src/api/internal/auth.ts +0 -68
  462. package/src/api/middlewares.ts +0 -10
  463. package/src/api/routing/middleware.ts +0 -6
  464. package/src/api/routing.ts +0 -598
  465. package/src/api/setupRequest.ts +0 -84
  466. package/tsconfig.json.bak +0 -12
  467. /package/dist/{adapters/SQL.d.ts → SQL.d.ts} +0 -0
  468. /package/dist/{api/codec.d.ts → codec.d.ts} +0 -0
  469. /package/dist/{api/internal → internal}/health.d.ts +0 -0
  470. /package/dist/{api/middlewares.d.ts → middlewares.d.ts} +0 -0
  471. /package/dist/{api/routing → routing}/schema/jwt.d.ts +0 -0
  472. /package/dist/{api/routing → routing}/tsort.d.ts +0 -0
  473. /package/dist/{api/util.d.ts → util.d.ts} +0 -0
  474. /package/src/{api/codec.ts → codec.ts} +0 -0
  475. /package/src/{api/internal → internal}/health.ts +0 -0
  476. /package/src/{api/routing → routing}/tsort.ts +0 -0
  477. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1,182 @@
1
+ import * as Effect from "effect-app/Effect";
2
+ import { type HttpHeaders } from "effect-app/http";
3
+ import * as Layer from "effect-app/Layer";
4
+ import { type GetEffectContext, type RpcContextMap } from "effect-app/rpc/RpcContextMap";
5
+ import * as S from "effect-app/Schema";
6
+ import { type TypeTestId } from "effect-app/TypeTest";
7
+ import type * as Scope from "effect/Scope";
8
+ import * as Stream from "effect/Stream";
9
+ import { Rpc, type RpcSerialization } from "effect/unstable/rpc";
10
+ export * from "./routing/middleware.js";
11
+ export declare const applyRequestTypeInterruptibility: <A, E, R>(requestType: "command" | "query", effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> | Rpc.Wrapper<Effect.Effect<A, E, R>>;
12
+ export type AnyRequestModule = S.Top & {
13
+ _tag: string;
14
+ type: "command" | "query";
15
+ stream: boolean;
16
+ config: any;
17
+ success: S.Top;
18
+ error: S.Top;
19
+ };
20
+ export interface AddAction<Actions extends AnyRequestModule, Accum extends Record<string, any> = {}> {
21
+ accum: Accum;
22
+ add<A extends Handler<Actions, any, any>>(a: A): A extends Handler<infer M extends AnyRequestModule, any, any> ? Exclude<Actions, M> extends never ? Accum & {
23
+ [K in M["_tag"]]: A;
24
+ } : AddAction<Exclude<Actions, M>, Accum & {
25
+ [K in M["_tag"]]: A;
26
+ }> & Accum & {
27
+ [K in M["_tag"]]: A;
28
+ } : never;
29
+ }
30
+ declare const RequestTypes: {
31
+ readonly DECODED: "d";
32
+ readonly RAW: "raw";
33
+ };
34
+ type RequestType = typeof RequestTypes[keyof typeof RequestTypes];
35
+ type GetSuccess<T> = T extends {
36
+ success: S.Top;
37
+ } ? T["success"] : typeof S.Void;
38
+ type GetFailure<T extends {
39
+ error?: S.Top;
40
+ }> = T["error"] extends never ? typeof S.Never : T["error"];
41
+ type GetSuccessShape<Action extends {
42
+ success?: S.Top;
43
+ }, RT extends RequestType> = {
44
+ d: GetSuccess<Action>["Type"];
45
+ raw: GetSuccess<Action>["Encoded"];
46
+ }[RT];
47
+ interface HandlerBase<Action extends AnyRequestModule, RT extends RequestType, A, E, R> {
48
+ new (): {};
49
+ _tag: RT;
50
+ stack: string;
51
+ handler: (req: Action["Type"], headers: HttpHeaders.Headers) => Effect.Effect<A, E, R> | Stream.Stream<A, E, R>;
52
+ }
53
+ export interface Handler<Action extends AnyRequestModule, RT extends RequestType, R> extends HandlerBase<Action, RT, GetSuccessShape<Action, RT>, GetFailure<Action>["Type"] | S.SchemaError, R> {
54
+ }
55
+ type AnyHandler<Action extends AnyRequestModule> = Handler<Action, RequestType, any>;
56
+ type FilterRequestModules<T> = {
57
+ [K in keyof T as T[K] extends AnyRequestModule ? K : never]: T[K];
58
+ };
59
+ type EffectMatch<Resource extends Record<string, any>, RequestContextMap extends Record<string, any>, RT extends RequestType, Key extends keyof Resource> = <A extends GetSuccessShape<Resource[Key], RT>, R2 = never, E = never>(f: (req: Resource[Key]["Type"]) => Effect.Effect<A, E, R2>) => Handler<Resource[Key], RT, Exclude<Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>, Scope.Scope>>;
60
+ type StreamMatch<Resource extends Record<string, any>, RequestContextMap extends Record<string, any>, RT extends RequestType, Key extends keyof Resource> = <A extends GetSuccessShape<Resource[Key], RT>, R2 = never, E = never>(f: (req: Resource[Key]["Type"]) => Stream.Stream<A, E, R2>) => Handler<Resource[Key], RT, Exclude<Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>, Scope.Scope>>;
61
+ type Match<Resource extends Record<string, any>, RequestContextMap extends Record<string, any>, RT extends RequestType, Key extends keyof Resource> = Resource[Key] extends {
62
+ stream: true;
63
+ } ? StreamMatch<Resource, RequestContextMap, RT, Key> : EffectMatch<Resource, RequestContextMap, RT, Key>;
64
+ export type RouteMatcher<RequestContextMap extends Record<string, any>, Resource extends Record<string, any>> = {
65
+ [Key in keyof FilterRequestModules<Resource>]: Match<Resource, RequestContextMap, typeof RequestTypes.DECODED, Key> & {
66
+ success: Resource[Key]["success"];
67
+ successRaw: S.Codec<Resource[Key]["success"]["Encoded"]>;
68
+ error: Resource[Key]["error"];
69
+ /**
70
+ * Requires the Encoded shape (e.g directly undecoded from DB, so that we don't do multiple Decode/Encode)
71
+ */
72
+ raw: Match<Resource, RequestContextMap, typeof RequestTypes.RAW, Key>;
73
+ };
74
+ };
75
+ export declare const skipOnProd: Effect.Effect<boolean, never, never>;
76
+ type ProvidesOf<MW> = MW extends {
77
+ readonly provides: infer P;
78
+ } ? P : never;
79
+ type RequestContextMapOf<MW> = MW extends {
80
+ requestContextMap: infer RCM extends Record<string, RpcContextMap.Any>;
81
+ } ? RCM : Record<string, never>;
82
+ type LayerNormalize<L> = L extends Layer.Layer<any, infer E, infer R> ? Layer.Layer<never, E, R> : Layer.Layer<never, never, never>;
83
+ type LayerSuccess<L> = L extends Layer.Layer<infer A, any, any> ? A : never;
84
+ /**
85
+ * Middleware tags are typically passed to `makeRpcClient` as the class value, so
86
+ * the captured `MW` is a constructor type. Layers carry the *instance* type as
87
+ * their success channel. Bridge the two so the constraint compares like-with-like.
88
+ *
89
+ * Effect middleware classes declare `new(_: never): Shape` which the standard
90
+ * `T extends abstract new (...args: any) => infer I` form sometimes fails to
91
+ * narrow. Use the `prototype` member instead — it is always the instance type.
92
+ */
93
+ type MWService<MW> = MW extends {
94
+ readonly prototype: infer P;
95
+ } ? P : MW;
96
+ /**
97
+ * Type-level guard: emits a structural mismatch on `Resource` when the middleware
98
+ * service identifier extracted from the resource's request classes is not provided
99
+ * by the layer passed to `makeRouter`. When `MW` is `never` (no middleware on the
100
+ * resource) or already a subtype of the layer's success, this resolves to `unknown`
101
+ * and intersects harmlessly with `Resource`.
102
+ */
103
+ type EnsureMiddlewareProvided<Live, MW> = [MW] extends [never] ? unknown : [MWService<MW>] extends [LayerSuccess<Live>] ? unknown : {
104
+ readonly __middlewareNotProvidedByRouterLayer: {
105
+ readonly expected: MWService<MW>;
106
+ readonly providedByLayer: LayerSuccess<Live>;
107
+ };
108
+ };
109
+ type SafeGetEffectContext<RCM, Config> = RCM extends Record<string, RpcContextMap.Any> ? GetEffectContext<RCM, Config> : never;
110
+ export declare const makeRouter: <Live extends Layer.Layer<any, any, any> = Layer.Layer<any, never, never>>(middlewareLive?: Live) => {
111
+ matchAll: <T extends {
112
+ [key: string]: Layer.Layer<never, any, any>;
113
+ }>(handlers: T) => Layer.Layer<never, Layer.Error<typeof handlers[keyof typeof handlers]>, Layer.Services<typeof handlers[keyof typeof handlers]>>;
114
+ Router: <const Resource extends Record<string, any>, MW = Exclude<{ [K in keyof Resource]: Resource[K] extends {
115
+ readonly middleware?: infer MW_1;
116
+ } ? NonNullable<MW_1> : never; }[keyof Resource], never>>(rsc: Resource & EnsureMiddlewareProvided<Live, MW>, options?: {
117
+ check?: Effect.Effect<boolean>;
118
+ }) => {
119
+ <const Make extends {
120
+ dependencies?: ReadonlyArray<Layer.Any>;
121
+ effect: (match: <const Impl extends { [K in keyof FilterRequestModules<Resource>]: (Resource[K] extends infer T ? T extends Resource[K] ? T extends {
122
+ stream: true;
123
+ } ? (req: T["Type"]) => Stream.Stream<GetSuccess<T>["Type"], S.SchemaError | GetFailure<T>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>> : ((req: T["Type"]) => Effect.Effect<GetSuccess<T>["Type"], S.SchemaError | GetFailure<T>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>) | ((req: T["Type"]) => Generator<Effect.Effect<any, S.SchemaError | GetFailure<T>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>, GetSuccess<T>["Type"], never>) : never : never) | (Resource[K] extends infer T_1 ? T_1 extends Resource[K] ? T_1 extends {
124
+ stream: true;
125
+ } ? {
126
+ raw: (req: T_1["Type"]) => Stream.Stream<GetSuccess<T_1>["Encoded"], S.SchemaError | GetFailure<T_1>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
127
+ } : {
128
+ raw: (req: T_1["Type"]) => Generator<Effect.Effect<any, S.SchemaError | GetFailure<T_1>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>, GetSuccess<T_1>["Encoded"], never>;
129
+ } | {
130
+ raw: (req: T_1["Type"]) => Effect.Effect<GetSuccess<T_1>["Encoded"], S.SchemaError | GetFailure<T_1>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
131
+ } : never : never); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules<Resource>]: Handler<FilterRequestModules<Resource>[K], Impl[K] extends {
132
+ raw: any;
133
+ } ? typeof RequestTypes.RAW : typeof RequestTypes.DECODED, Exclude<Exclude<Impl[K] extends {
134
+ raw: any;
135
+ } ? Impl[K]["raw"] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Generator<Effect.Effect<any, any, infer R>> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Generator<Effect.Effect<any, any, infer R>> ? R : never, SafeGetEffectContext<RequestContextMapOf<MW>, Resource[K]["config"]> | ProvidesOf<MW>>, Scope.Scope>>; }) => Generator<Effect.Effect<any, any, any>, { [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]>; }>;
136
+ /** @deprecated */
137
+ readonly ಠ_ಠ: never;
138
+ }>(make: Make): Layer.Layer<never, MakeErrors<Make> | MakeDepsE<Make> | Layer.Error<LayerNormalize<Live>>, MakeDepsIn<Make> | Layer.Services<LayerNormalize<Live>> | Exclude<MakeContext<Make>, MakeDepsOut<Make>> | RpcSerialization.RpcSerialization> & {
139
+ [TypeTestId]: Make;
140
+ };
141
+ <const Make extends {
142
+ dependencies?: ReadonlyArray<Layer.Any>;
143
+ effect: (match: <const Impl extends { [K in keyof FilterRequestModules<Resource>]: (Resource[K] extends infer T ? T extends Resource[K] ? T extends {
144
+ stream: true;
145
+ } ? (req: T["Type"]) => Stream.Stream<GetSuccess<T>["Type"], S.SchemaError | GetFailure<T>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>> : ((req: T["Type"]) => Effect.Effect<GetSuccess<T>["Type"], S.SchemaError | GetFailure<T>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>) | ((req: T["Type"]) => Generator<Effect.Effect<any, S.SchemaError | GetFailure<T>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>, GetSuccess<T>["Type"], never>) : never : never) | (Resource[K] extends infer T_1 ? T_1 extends Resource[K] ? T_1 extends {
146
+ stream: true;
147
+ } ? {
148
+ raw: (req: T_1["Type"]) => Stream.Stream<GetSuccess<T_1>["Encoded"], S.SchemaError | GetFailure<T_1>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
149
+ } : {
150
+ raw: (req: T_1["Type"]) => Generator<Effect.Effect<any, S.SchemaError | GetFailure<T_1>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>, GetSuccess<T_1>["Encoded"], never>;
151
+ } | {
152
+ raw: (req: T_1["Type"]) => Effect.Effect<GetSuccess<T_1>["Encoded"], S.SchemaError | GetFailure<T_1>["Type"], ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
153
+ } : never : never); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules<Resource>]: Handler<FilterRequestModules<Resource>[K], Impl[K] extends {
154
+ raw: any;
155
+ } ? typeof RequestTypes.RAW : typeof RequestTypes.DECODED, Exclude<Exclude<Impl[K] extends {
156
+ raw: any;
157
+ } ? Impl[K]["raw"] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Generator<Effect.Effect<any, any, infer R>> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Generator<Effect.Effect<any, any, infer R>> ? R : never, SafeGetEffectContext<RequestContextMapOf<MW>, Resource[K]["config"]> | ProvidesOf<MW>>, Scope.Scope>>; }) => Generator<Effect.Effect<any, any, any>, { [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]>; }>;
158
+ }>(make: Make): Layer.Layer<never, MakeErrors<Make> | MakeDepsE<Make> | Layer.Error<LayerNormalize<Live>>, MakeDepsIn<Make> | Layer.Services<LayerNormalize<Live>> | Exclude<MakeContext<Make>, MakeDepsOut<Make>> | RpcSerialization.RpcSerialization> & {
159
+ readonly [TypeTestId]: Make;
160
+ };
161
+ };
162
+ };
163
+ export type MakeDeps<Make> = Make extends {
164
+ readonly dependencies: ReadonlyArray<Layer.Any>;
165
+ } ? Make["dependencies"][number] : never;
166
+ export type MakeErrors<Make> = Make extends {
167
+ readonly effect: (_: any) => Generator<Effect.Effect<any, never, any>, any>;
168
+ } ? never : Make extends {
169
+ readonly effect: (_: any) => Generator<Effect.Effect<any, infer E, any>, any>;
170
+ } ? E : never;
171
+ export type MakeContext<Make> = Make extends {
172
+ readonly effect: (_: any) => Generator<Effect.Effect<any, any, never>, any>;
173
+ } ? never : Make extends {
174
+ readonly effect: (_: any) => Generator<Effect.Effect<any, any, infer R>, any>;
175
+ } ? R : never;
176
+ export type MakeHandlers<Make, _Handlers extends Record<string, any>> = Make extends {
177
+ readonly effect: (_: any) => Generator<any, infer S>;
178
+ } ? S : never;
179
+ export type MakeDepsE<Make> = Layer.Error<MakeDeps<Make>>;
180
+ export type MakeDepsIn<Make> = Layer.Services<MakeDeps<Make>>;
181
+ export type MakeDepsOut<Make> = Layer.Success<MakeDeps<Make>>;
182
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ import { getMeta } from "effect-app/client";
2
+ import * as Config from "effect-app/Config";
3
+ import * as Effect from "effect-app/Effect";
4
+ import * as Layer from "effect-app/Layer";
5
+ import { Invalidation } from "effect-app/rpc";
6
+ import * as S from "effect-app/Schema";
7
+ import { typedKeysOf, typedValuesOf } from "effect-app/utils";
8
+ import * as Predicate from "effect/Predicate";
9
+ import * as Ref from "effect/Ref";
10
+ import * as Stream from "effect/Stream";
11
+ import { Rpc, RpcGroup, RpcServer } from "effect/unstable/rpc";
12
+ import { RequestType as RequestTypeAnnotation } from "./routing/middleware.js";
13
+ export * from "./routing/middleware.js";
14
+ export const applyRequestTypeInterruptibility = (requestType, effect) => requestType === "command" ? Rpc.uninterruptible(effect) : effect;
15
+ // note:
16
+ // "d" stands for decoded i.e. the Type
17
+ // "raw" stands for encoded i.e. the Encoded
18
+ const RequestTypes = {
19
+ DECODED: "d",
20
+ RAW: "raw"
21
+ };
22
+ export const skipOnProd = Effect
23
+ .gen(function* () {
24
+ const env = yield* Config.string("env");
25
+ return env !== "prod";
26
+ })
27
+ .pipe(Effect.orDie);
28
+ export const makeRouter = (middlewareLive) => {
29
+ /**
30
+ * Create a Router for specified resource.
31
+ * Middleware schema/tag is read from the request classes (stored via `makeRpcClient`).
32
+ * The middleware **Live** layer is the one passed to `makeRouter`.
33
+ * If `check` is provided, the router will only be created if the effect succeeds with true.
34
+ */
35
+ function matchFor(rsc, options) {
36
+ const meta = getMeta(rsc);
37
+ const requestModules = typedKeysOf(rsc).reduce((acc, cur) => {
38
+ if (Predicate.isObjectKeyword(rsc[cur]) && rsc[cur]["success"]) {
39
+ acc[cur] = rsc[cur];
40
+ }
41
+ return acc;
42
+ }, {});
43
+ const routeMatcher = typedKeysOf(requestModules).reduce((prev, cur) => {
44
+ ;
45
+ prev[cur] = Object.assign((handlerImpl) => {
46
+ // handlerImpl is the actual handler implementation
47
+ if (handlerImpl[Symbol.toStringTag] === "GeneratorFunction")
48
+ handlerImpl = Effect.fnUntraced(handlerImpl);
49
+ const stack = new Error().stack?.split("\n").slice(2).join("\n");
50
+ // oxlint-disable-next-line typescript/no-extraneous-class
51
+ return class {
52
+ static request = rsc[cur];
53
+ static stack = stack;
54
+ static _tag = RequestTypes.DECODED;
55
+ static handler = handlerImpl;
56
+ };
57
+ }, {
58
+ success: rsc[cur].success,
59
+ successRaw: S.toEncoded(rsc[cur].success),
60
+ error: rsc[cur].error,
61
+ raw: // "Raw" variations are for when you don't want to decode just to encode it again on the response
62
+ // e.g for direct projection from DB
63
+ // but more importantly, to skip Effectful decoders, like to resolve relationships from the database or remote client.
64
+ (handlerImpl) => {
65
+ if (handlerImpl[Symbol.toStringTag] === "GeneratorFunction")
66
+ handlerImpl = Effect.fnUntraced(handlerImpl);
67
+ const stack = new Error().stack?.split("\n").slice(2).join("\n");
68
+ // oxlint-disable-next-line typescript/no-extraneous-class
69
+ return class {
70
+ static request = rsc[cur];
71
+ static stack = stack;
72
+ static _tag = RequestTypes.RAW;
73
+ static handler = handlerImpl;
74
+ };
75
+ }
76
+ });
77
+ return prev;
78
+ }, {});
79
+ const router3 = (impl) => typedKeysOf(impl).reduce((acc, cur) => {
80
+ acc[cur] = "raw" in impl[cur] ? routeMatcher[cur].raw(impl[cur].raw) : routeMatcher[cur](impl[cur]);
81
+ return acc;
82
+ }, {});
83
+ const makeRoutes = (dependencies, make) => {
84
+ const dependenciesL = (dependencies ? Layer.mergeAll(...dependencies) : Layer.empty);
85
+ const layer = Effect
86
+ .gen(function* () {
87
+ const finalMake = (make[Symbol.toStringTag] === "GeneratorFunction"
88
+ ? Effect.fnUntraced(make)(router3)
89
+ : make(router3));
90
+ const controllers = yield* finalMake;
91
+ // Read the middleware from the resource's request classes at runtime
92
+ const mw = meta.middleware;
93
+ // return make.pipe(Effect.map((c) => controllers(c, dependencies)))
94
+ const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
95
+ const handler = controllers[cur];
96
+ const resource = rsc[cur];
97
+ acc[cur] = [
98
+ handler._tag === RequestTypes.RAW
99
+ ? class extends resource {
100
+ static success = S.toEncoded(resource.success);
101
+ }
102
+ : resource,
103
+ (payload, headers) => {
104
+ const result = handler.handler(payload, headers);
105
+ if (resource.stream) {
106
+ // Wrap stream items as { _tag: "value", value } and append a final
107
+ // { _tag: "done", metadata } chunk carrying accumulated invalidation keys.
108
+ // V2: on failure, convert to { _tag: "error", error, metadata } chunk so
109
+ // clients can invalidate queries even when the stream fails.
110
+ const keysRef = Ref.makeUnsafe([]);
111
+ const invalidationSet = Invalidation.makeInvalidationSet(keysRef);
112
+ return Stream.concat(result.pipe(Stream.map((item) => ({ _tag: "value", value: item })), Stream.provideService(Invalidation.InvalidationSet, invalidationSet),
113
+ // V3: after each value chunk, drain accumulated keys and emit a "metadata"
114
+ // chunk if any keys were collected since the last drain. This lets clients
115
+ // invalidate queries mid-stream without waiting for the "done" chunk.
116
+ Stream.flatMap((valueChunk) => Stream
117
+ .fromEffect(Ref.getAndSet(keysRef, []).pipe(Effect.map((keys) => keys.length > 0
118
+ ? [
119
+ valueChunk,
120
+ { _tag: "metadata", metadata: { invalidateQueries: keys } }
121
+ ]
122
+ : [valueChunk])))
123
+ .pipe(Stream.flatMap(Stream.fromIterable))),
124
+ // V2: catch stream failures and embed them in the stream as an error chunk
125
+ Stream.catch((err) => Stream.fromEffect(Ref.get(keysRef).pipe(Effect.flatMap((keys) => Effect.fail({
126
+ _tag: "error",
127
+ error: err,
128
+ metadata: { invalidateQueries: keys }
129
+ })))))), Stream.fromEffect(Ref.get(keysRef).pipe(Effect.map((keys) => ({ _tag: "done", metadata: { invalidateQueries: keys } })))));
130
+ }
131
+ let effect = Effect
132
+ .annotateCurrentSpan({
133
+ "rpc.system": "effect-app",
134
+ "rpc.service": meta.moduleName,
135
+ "rpc.method": resource._tag,
136
+ "code.function.name": resource._tag,
137
+ "code.namespace": meta.moduleName,
138
+ "app.rpc.type": resource.type
139
+ })
140
+ .pipe(Effect.andThen(result));
141
+ // Commands: provide a request-scoped `InvalidationSet` and wrap both
142
+ // success (`CommandResponseWithMetaData`) and handler-thrown failure
143
+ // (`CommandFailureWithMetaData`) so the client receives accumulated
144
+ // invalidation keys on either path. Middleware-thrown errors bypass the
145
+ // wrap (they fail the outer effect before reaching this `.catch`) and
146
+ // flow raw on the Cause; client decodes them via the rpc's
147
+ // `middlewares[*].error` failure-union channel.
148
+ if (resource.type === "command") {
149
+ const keysRef = Ref.makeUnsafe([]);
150
+ const invalidationSet = Invalidation.makeInvalidationSet(keysRef);
151
+ effect = effect.pipe(Effect.provideService(Invalidation.InvalidationSet, invalidationSet), Effect.flatMap((value) => Ref.get(keysRef).pipe(Effect.map((keys) => ({ payload: value, metadata: { invalidateQueries: keys } })))), Effect.catch((err) => Ref.get(keysRef).pipe(Effect.flatMap((keys) => Effect.fail({
152
+ _tag: "CommandFailureWithMetaData",
153
+ error: err,
154
+ metadata: { invalidateQueries: keys }
155
+ })))));
156
+ }
157
+ return applyRequestTypeInterruptibility(resource.type, effect);
158
+ }
159
+ ];
160
+ return acc;
161
+ }, {});
162
+ const rpcs = RpcGroup
163
+ .make(...typedValuesOf(mapped).map(([resource]) => {
164
+ const isStream = resource.stream;
165
+ const isCommand = resource.type === "command";
166
+ return (isCommand
167
+ ? isStream
168
+ ? Invalidation.makeStreamRpc(resource._tag, {
169
+ payload: resource,
170
+ success: resource.success,
171
+ error: resource.error,
172
+ stream: true
173
+ })
174
+ : Invalidation.makeCommandRpc(resource._tag, {
175
+ payload: resource,
176
+ success: resource.success,
177
+ error: resource.error
178
+ })
179
+ : Rpc.make(resource._tag, {
180
+ payload: resource,
181
+ success: resource.success,
182
+ error: resource.error,
183
+ stream: isStream
184
+ }))
185
+ .annotate(mw.requestContext, resource.config ?? {})
186
+ .annotate(RequestTypeAnnotation, resource.type);
187
+ }))
188
+ .prefix(`${meta.moduleName}.`)
189
+ .middleware(mw);
190
+ const rpc = rpcs
191
+ .toLayer(Effect.gen(function* () {
192
+ return typedValuesOf(mapped).reduce((acc, [resource, handler]) => {
193
+ acc[`${meta.moduleName}.${resource._tag}`] = handler;
194
+ return acc;
195
+ }, {}); // TODO
196
+ }));
197
+ return RpcServer
198
+ .layerHttp({
199
+ group: rpcs,
200
+ path: ("/rpc/" + meta.moduleName),
201
+ protocol: "http"
202
+ })
203
+ .pipe(Layer.provide(rpc));
204
+ })
205
+ .pipe(Layer.unwrap);
206
+ const routes = layer.pipe(Layer.provide([
207
+ dependenciesL,
208
+ (middlewareLive ?? Layer.empty)
209
+ ]));
210
+ const check = options?.check;
211
+ return check
212
+ ? Effect
213
+ .gen(function* () {
214
+ if (!(yield* check)) {
215
+ yield* Effect.logWarning(`Skipping router for module ${meta.moduleName}`);
216
+ return Layer.empty;
217
+ }
218
+ return routes;
219
+ })
220
+ .pipe(Layer.unwrap)
221
+ : routes;
222
+ };
223
+ const effect = ((make) => Object.assign(makeRoutes(make.dependencies, make.effect), { make }));
224
+ return effect;
225
+ }
226
+ function matchAll(handlers) {
227
+ const routers = typedValuesOf(handlers);
228
+ return Layer.mergeAll(...routers);
229
+ }
230
+ return {
231
+ matchAll,
232
+ Router: matchFor
233
+ };
234
+ };
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFFM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFN0MsT0FBTyxLQUFLLENBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzdELE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUE7QUFFakMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQXlCLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXJGLE9BQU8sRUFBRSxXQUFXLElBQUkscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUU5RSxjQUFjLHlCQUF5QixDQUFBO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQzlDLFdBQWdDLEVBQ2hDLE1BQThCLEVBQzlCLEVBQUUsQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFnQ3JFLFFBQVE7QUFDUix1Q0FBdUM7QUFDdkMsNENBQTRDO0FBQzVDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLE9BQU8sRUFBRSxHQUFHO0lBQ1osR0FBRyxFQUFFLEtB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
package/dist/test.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { S } from "effect-app";
1
+ import * as S from "effect-app/Schema";
2
2
  /**
3
3
  * Given the schema for an object-like structure, creates a function that generates random instances of that object with some values provided.
4
4
  */
@@ -8,7 +8,7 @@ export declare const createRandomInstance: <A extends object, I, R>(s: S.Codec<A
8
8
  /**
9
9
  * Like `createRandomInstance`, but takes encoded values rather than decoded ones.
10
10
  */
11
- export declare const createRandomInstanceI: <A extends object, I>(s: S.Codec<A, I, never> & {
11
+ export declare const createRandomInstanceI: <A extends object, I>(s: S.Codec<A, I> & {
12
12
  fields: S.Struct.Fields;
13
13
  }) => (overrides?: Partial<I>) => A;
14
14
  export * from "./arbs.js";
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAI9B;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,MAEpG,YAAY,OAAO,CAAC,CAAC,CAAC,MAI/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,MAItG,YAAY,OAAO,CAAC,CAAC,CAAC,MAK/B,CAAA;AAED,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAItC;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,kBAExF,OAAO,CAAC,CAAC,CAAC,MAI/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,kBAInF,OAAO,CAAC,CAAC,CAAC,MAK/B,CAAA;AAED,cAAc,WAAW,CAAA"}
package/dist/test.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S } from "effect-app";
1
+ import * as S from "effect-app/Schema";
2
2
  import { copy } from "effect-app/utils";
3
3
  import { generate } from "./arbs.js";
4
4
  /**
@@ -26,4 +26,4 @@ export const createRandomInstanceI = (s) => {
26
26
  };
27
27
  };
28
28
  export * from "./arbs.js";
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUF5QixDQUFpRCxFQUFFLEVBQUU7SUFDaEgsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQXNCLENBQXFELEVBQUUsRUFBRTtJQUNsSCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxjQUFjLFdBQVcsQ0FBQSJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUF5QixDQUFpRCxFQUFFLEVBQUU7SUFDaEgsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQXNCLENBQThDLEVBQUUsRUFBRTtJQUMzRyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxjQUFjLFdBQVcsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,0CAStE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAEvC"}
package/dist/util.js ADDED
@@ -0,0 +1,14 @@
1
+ export function snipValue(value) {
2
+ if (!value) {
3
+ return value;
4
+ }
5
+ return Array.isArray(value)
6
+ ? value.map(snipString)
7
+ : typeof value === "string" && value.length > 50
8
+ ? snipString(value)
9
+ : value;
10
+ }
11
+ export function snipString(value) {
12
+ return value.length > 255 ? value.slice(0, 255) + "...snip" : value;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBNkM7SUFDckUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDdkIsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUU7WUFDaEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsQ0FBQyxDQUFDLEtBQUssQ0FBQTtBQUNYLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWE7SUFDdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDckUsQ0FBQyJ9
@@ -0,0 +1,26 @@
1
+ # Cluster storage backends (Cosmos vs SQL)
2
+
3
+ `@effect-app/infra` now ships Cosmos-backed cluster storage:
4
+
5
+ - [`ClusterCosmos.layerMessageStorage`](../src/ClusterCosmos.ts)
6
+ - [`ClusterCosmos.layerRunnerStorage`](../src/ClusterCosmos.ts)
7
+ - [`ClusterCosmos.layer`](../src/ClusterCosmos.ts)
8
+ - [`ClusterCosmos.layerCosmos`](../src/ClusterCosmos.ts)
9
+
10
+ The closest baseline in Effect is `SqlMessageStorage` + `SqlRunnerStorage`.
11
+
12
+ ## Comparison
13
+
14
+ | Aspect | `ClusterCosmos` | `SqlMessageStorage` + `SqlRunnerStorage` |
15
+ | ------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
16
+ | Backend dependency | Azure Cosmos DB | SQL database via `SqlClient` |
17
+ | Schema management | Container-only document model (no SQL migrations) | Creates / migrates SQL tables (`messages`, `replies`, `runners`, `locks`, migrations table) |
18
+ | Message/reply model | JSON docs split by partition key (`message::shardId`, `reply::requestId`) | Relational rows with SQL indexes and joins |
19
+ | Locking strategy | Optimistic concurrency (`_etag`) on lock docs | Dialect-aware SQL locking (including advisory locks on pg/mysql when enabled) |
20
+ | Horizontal behavior | Throughput/cost depends on partitioning and cross-partition queries | Throughput/cost depends on SQL indexing, query plans, and connection limits |
21
+ | Operational fit | Best when Cosmos is already your system DB | Best when the cluster already runs on SQL infrastructure |
22
+
23
+ ## Practical guidance
24
+
25
+ - Pick **`ClusterCosmos`** when your platform standard is Cosmos and you want to avoid introducing SQL just for cluster storage.
26
+ - Pick **SQL storage** when you already have strong SQL ops tooling and prefer table/migration based durability.