@effect-app/infra 4.0.0-beta.32 → 4.0.0-beta.321

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 (480) hide show
  1. package/CHANGELOG.md +2469 -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 +36 -15
  6. package/dist/ClusterCosmos.d.ts +70 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +576 -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/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 +12 -8
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +23 -7
  24. package/dist/QueueMaker/errors.d.ts +4 -2
  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 +31 -42
  28. package/dist/SQL/Model.d.ts.map +1 -0
  29. package/dist/SQL/Model.js +469 -0
  30. package/dist/SQL.d.ts.map +1 -0
  31. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  32. package/dist/Store/Cosmos/query.d.ts +16 -4
  33. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  34. package/dist/Store/Cosmos/query.js +238 -42
  35. package/dist/Store/Cosmos.d.ts +2 -2
  36. package/dist/Store/Cosmos.d.ts.map +1 -1
  37. package/dist/Store/Cosmos.js +392 -256
  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 +87 -42
  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 +346 -76
  44. package/dist/Store/SQL/Pg.d.ts +4 -0
  45. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  46. package/dist/Store/SQL/Pg.js +257 -0
  47. package/dist/Store/SQL/query.d.ts +53 -0
  48. package/dist/Store/SQL/query.d.ts.map +1 -0
  49. package/dist/Store/SQL/query.js +656 -0
  50. package/dist/Store/SQL.d.ts +21 -0
  51. package/dist/Store/SQL.d.ts.map +1 -0
  52. package/dist/Store/SQL.js +478 -0
  53. package/dist/Store/codeFilter.d.ts +4 -4
  54. package/dist/Store/codeFilter.d.ts.map +1 -1
  55. package/dist/Store/codeFilter.js +71 -22
  56. package/dist/Store/index.d.ts +6 -4
  57. package/dist/Store/index.d.ts.map +1 -1
  58. package/dist/Store/index.js +18 -5
  59. package/dist/Store/jsonDocument.d.ts +13 -0
  60. package/dist/Store/jsonDocument.d.ts.map +1 -0
  61. package/dist/Store/jsonDocument.js +31 -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 +29 -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 +16 -4
  74. package/dist/codec.d.ts.map +1 -0
  75. package/dist/codec.js +5 -0
  76. package/dist/{adapters/cosmos-client.d.ts → cosmos-client.d.ts} +4 -2
  77. package/dist/cosmos-client.d.ts.map +1 -0
  78. package/dist/cosmos-client.js +11 -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/internal/health.d.ts.map +1 -0
  98. package/dist/internal/health.js +5 -0
  99. package/dist/{api/layerUtils.d.ts → layerUtils.d.ts} +14 -6
  100. package/dist/layerUtils.d.ts.map +1 -0
  101. package/dist/layerUtils.js +17 -0
  102. package/dist/logger/jsonLogger.d.ts +1 -1
  103. package/dist/logger/jsonLogger.d.ts.map +1 -1
  104. package/dist/logger/jsonLogger.js +5 -3
  105. package/dist/logger/logFmtLogger.d.ts +1 -1
  106. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  107. package/dist/logger/logFmtLogger.js +3 -3
  108. package/dist/logger/shared.d.ts +2 -2
  109. package/dist/logger/shared.d.ts.map +1 -1
  110. package/dist/logger/shared.js +6 -6
  111. package/dist/logger.d.ts +4 -4
  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} +3 -2
  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} +5 -2
  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 +4 -3
  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/routing/middleware/middleware.d.ts +48 -0
  134. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  135. package/dist/routing/middleware/middleware.js +152 -0
  136. package/dist/{api/routing → routing}/middleware.d.ts +0 -1
  137. package/dist/routing/middleware.d.ts.map +1 -0
  138. package/dist/{api/routing → routing}/middleware.js +1 -2
  139. package/dist/routing/schema/jwt.d.ts.map +1 -0
  140. package/dist/routing/schema/jwt.js +12 -0
  141. package/dist/routing/tsort.d.ts.map +1 -0
  142. package/dist/routing/tsort.js +51 -0
  143. package/dist/{api/routing → routing}/utils.d.ts +3 -3
  144. package/dist/routing/utils.d.ts.map +1 -0
  145. package/dist/routing/utils.js +45 -0
  146. package/dist/routing.d.ts +182 -0
  147. package/dist/routing.d.ts.map +1 -0
  148. package/dist/routing.js +256 -0
  149. package/dist/test.d.ts +2 -2
  150. package/dist/test.d.ts.map +1 -1
  151. package/dist/test.js +5 -5
  152. package/dist/util.d.ts.map +1 -0
  153. package/dist/util.js +14 -0
  154. package/docs/cluster-storage.md +26 -0
  155. package/docs/workflow-engine.md +262 -0
  156. package/examples/query.ts +49 -41
  157. package/package.json +38 -352
  158. package/src/CUPS.ts +54 -15
  159. package/src/ClusterCosmos.ts +1154 -0
  160. package/src/ClusterServiceBus.ts +244 -0
  161. package/src/{api/ContextProvider.ts → ContextProvider.ts} +20 -17
  162. package/src/Emailer/Sendgrid.ts +83 -60
  163. package/src/Emailer/fake.ts +4 -4
  164. package/src/MainFiberSet.ts +32 -13
  165. package/src/QueueMaker/errors.ts +3 -1
  166. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  167. package/src/SQL.ts +1 -0
  168. package/src/Store/Cosmos/query.ts +275 -55
  169. package/src/Store/Cosmos.ts +537 -367
  170. package/src/Store/Disk.ts +137 -74
  171. package/src/Store/Memory.ts +402 -113
  172. package/src/Store/SQL/Pg.ts +402 -0
  173. package/src/Store/SQL/query.ts +748 -0
  174. package/src/Store/SQL.ts +786 -0
  175. package/src/Store/codeFilter.ts +78 -28
  176. package/src/Store/index.ts +25 -10
  177. package/src/Store/jsonDocument.ts +43 -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 +20 -5
  182. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  183. package/src/errorReporter.ts +68 -78
  184. package/src/fileUtil.ts +1 -1
  185. package/src/index.ts +2 -1
  186. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  187. package/src/internal/auth.ts +272 -0
  188. package/src/{api/internal → internal}/events.ts +22 -13
  189. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  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} +4 -2
  195. package/src/otel.ts +177 -0
  196. package/src/rateLimit.ts +35 -24
  197. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  198. package/src/{api/reportError.ts → reportError.ts} +3 -2
  199. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  200. package/src/routing/middleware/middleware.ts +196 -0
  201. package/src/routing/middleware.ts +4 -0
  202. package/src/{api/routing → routing}/schema/jwt.ts +2 -2
  203. package/src/{api/routing → routing}/utils.ts +2 -1
  204. package/src/routing.ts +823 -0
  205. package/src/test.ts +6 -6
  206. package/src/vitest.ts +1 -1
  207. package/test/auth.test.ts +101 -0
  208. package/test/cluster-cosmos.test.ts +612 -0
  209. package/test/cluster-servicebus.test.ts +180 -0
  210. package/test/cluster-sqlite.test.ts +207 -0
  211. package/test/contextProvider.test.ts +15 -12
  212. package/test/controller.test.ts +28 -32
  213. package/test/cosmos-query.test.ts +323 -0
  214. package/test/dist/auth.test.d.ts.map +1 -0
  215. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  216. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  217. package/test/dist/cluster-sqlite.test.d.ts.map +1 -0
  218. package/test/dist/contextProvider.test.d.ts.map +1 -1
  219. package/test/dist/controller.test.d.ts.map +1 -1
  220. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  221. package/test/dist/fixtures.d.ts +29 -11
  222. package/test/dist/fixtures.d.ts.map +1 -1
  223. package/test/dist/fixtures.js +17 -10
  224. package/test/dist/json-lower.test.d.ts.map +1 -0
  225. package/test/dist/query.test.d.ts.map +1 -1
  226. package/test/dist/rawQuery.test.d.ts.map +1 -1
  227. package/test/dist/repository-ext.test.d.ts.map +1 -0
  228. package/test/dist/requires.test.d.ts.map +1 -1
  229. package/test/dist/router-generator.test.d.ts.map +1 -0
  230. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  231. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  232. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  233. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  234. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  235. package/test/dist/sql-store.test.d.ts.map +1 -0
  236. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  237. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  238. package/test/fixtures.ts +16 -9
  239. package/test/json-lower.test.ts +115 -0
  240. package/test/layerUtils.test.ts +2 -2
  241. package/test/query.test.ts +1384 -46
  242. package/test/rawQuery.test.ts +340 -22
  243. package/test/repository-ext.test.ts +456 -0
  244. package/test/requires.test.ts +10 -5
  245. package/test/router-generator.test.ts +187 -0
  246. package/test/routing-interruptibility.test.ts +66 -0
  247. package/test/rpc-context-map-streaming.test.ts +265 -0
  248. package/test/rpc-e2e-invalidation.test.ts +421 -0
  249. package/test/rpc-multi-middleware.test.ts +85 -10
  250. package/test/rpc-stream-fullstack.test.ts +307 -0
  251. package/test/sql-store.test.ts +1905 -0
  252. package/test/validateSample.test.ts +26 -14
  253. package/test/workflow-engine-cosmos.test.ts +345 -0
  254. package/test/workflow-engine-sqlite.test.ts +297 -0
  255. package/tsconfig.examples.json +1 -1
  256. package/tsconfig.json +9 -2
  257. package/tsconfig.src.json +35 -35
  258. package/tsconfig.test.json +2 -2
  259. package/dist/Emailer/service.d.ts +0 -55
  260. package/dist/Emailer/service.d.ts.map +0 -1
  261. package/dist/Emailer/service.js +0 -6
  262. package/dist/Emailer.d.ts +0 -2
  263. package/dist/Emailer.d.ts.map +0 -1
  264. package/dist/Emailer.js +0 -2
  265. package/dist/Model/Repository/ext.d.ts +0 -41
  266. package/dist/Model/Repository/ext.d.ts.map +0 -1
  267. package/dist/Model/Repository/ext.js +0 -65
  268. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  269. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  270. package/dist/Model/Repository/internal/internal.js +0 -316
  271. package/dist/Model/Repository/legacy.d.ts +0 -19
  272. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  273. package/dist/Model/Repository/legacy.js +0 -2
  274. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  275. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  276. package/dist/Model/Repository/makeRepo.js +0 -24
  277. package/dist/Model/Repository/service.d.ts +0 -89
  278. package/dist/Model/Repository/service.d.ts.map +0 -1
  279. package/dist/Model/Repository/service.js +0 -2
  280. package/dist/Model/Repository/validation.d.ts +0 -42
  281. package/dist/Model/Repository/validation.d.ts.map +0 -1
  282. package/dist/Model/Repository/validation.js +0 -32
  283. package/dist/Model/Repository.d.ts +0 -6
  284. package/dist/Model/Repository.d.ts.map +0 -1
  285. package/dist/Model/Repository.js +0 -6
  286. package/dist/Model/dsl.d.ts +0 -32
  287. package/dist/Model/dsl.d.ts.map +0 -1
  288. package/dist/Model/dsl.js +0 -44
  289. package/dist/Model/filter/filterApi.d.ts +0 -30
  290. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  291. package/dist/Model/filter/filterApi.js +0 -2
  292. package/dist/Model/filter/types/errors.d.ts +0 -29
  293. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  294. package/dist/Model/filter/types/errors.js +0 -2
  295. package/dist/Model/filter/types/fields.d.ts +0 -15
  296. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  297. package/dist/Model/filter/types/fields.js +0 -2
  298. package/dist/Model/filter/types/path/common.d.ts +0 -316
  299. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  300. package/dist/Model/filter/types/path/common.js +0 -2
  301. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  302. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  303. package/dist/Model/filter/types/path/eager.js +0 -31
  304. package/dist/Model/filter/types/path/index.d.ts +0 -4
  305. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  306. package/dist/Model/filter/types/path/index.js +0 -3
  307. package/dist/Model/filter/types/utils.d.ts +0 -79
  308. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  309. package/dist/Model/filter/types/utils.js +0 -2
  310. package/dist/Model/filter/types/validator.d.ts +0 -30
  311. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  312. package/dist/Model/filter/types/validator.js +0 -2
  313. package/dist/Model/filter/types.d.ts +0 -5
  314. package/dist/Model/filter/types.d.ts.map +0 -1
  315. package/dist/Model/filter/types.js +0 -7
  316. package/dist/Model/query/dsl.d.ts +0 -248
  317. package/dist/Model/query/dsl.d.ts.map +0 -1
  318. package/dist/Model/query/dsl.js +0 -104
  319. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  320. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  321. package/dist/Model/query/new-kid-interpreter.js +0 -165
  322. package/dist/Model/query.d.ts +0 -15
  323. package/dist/Model/query.d.ts.map +0 -1
  324. package/dist/Model/query.js +0 -3
  325. package/dist/Model.d.ts +0 -4
  326. package/dist/Model.d.ts.map +0 -1
  327. package/dist/Model.js +0 -4
  328. package/dist/Operations.d.ts +0 -55
  329. package/dist/Operations.d.ts.map +0 -1
  330. package/dist/Operations.js +0 -102
  331. package/dist/OperationsRepo.d.ts +0 -41
  332. package/dist/OperationsRepo.d.ts.map +0 -1
  333. package/dist/OperationsRepo.js +0 -14
  334. package/dist/QueueMaker/SQLQueue.d.ts +0 -16
  335. package/dist/QueueMaker/SQLQueue.d.ts.map +0 -1
  336. package/dist/QueueMaker/SQLQueue.js +0 -130
  337. package/dist/QueueMaker/memQueue.d.ts +0 -11
  338. package/dist/QueueMaker/memQueue.d.ts.map +0 -1
  339. package/dist/QueueMaker/memQueue.js +0 -76
  340. package/dist/QueueMaker/sbqueue.d.ts +0 -12
  341. package/dist/QueueMaker/sbqueue.d.ts.map +0 -1
  342. package/dist/QueueMaker/sbqueue.js +0 -91
  343. package/dist/QueueMaker/service.d.ts +0 -11
  344. package/dist/QueueMaker/service.d.ts.map +0 -1
  345. package/dist/QueueMaker/service.js +0 -4
  346. package/dist/RequestContext.d.ts +0 -63
  347. package/dist/RequestContext.d.ts.map +0 -1
  348. package/dist/RequestContext.js +0 -49
  349. package/dist/RequestFiberSet.d.ts +0 -36
  350. package/dist/RequestFiberSet.d.ts.map +0 -1
  351. package/dist/RequestFiberSet.js +0 -78
  352. package/dist/Store/ContextMapContainer.d.ts +0 -14
  353. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  354. package/dist/Store/ContextMapContainer.js +0 -16
  355. package/dist/Store/service.d.ts +0 -108
  356. package/dist/Store/service.d.ts.map +0 -1
  357. package/dist/Store/service.js +0 -71
  358. package/dist/Store.d.ts +0 -2
  359. package/dist/Store.d.ts.map +0 -1
  360. package/dist/Store.js +0 -2
  361. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  362. package/dist/adapters/SQL/Model.js +0 -478
  363. package/dist/adapters/SQL.d.ts.map +0 -1
  364. package/dist/adapters/ServiceBus.d.ts +0 -58
  365. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  366. package/dist/adapters/ServiceBus.js +0 -99
  367. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  368. package/dist/adapters/cosmos-client.js +0 -9
  369. package/dist/adapters/index.d.ts +0 -2
  370. package/dist/adapters/index.d.ts.map +0 -1
  371. package/dist/adapters/index.js +0 -2
  372. package/dist/adapters/logger.d.ts +0 -9
  373. package/dist/adapters/logger.d.ts.map +0 -1
  374. package/dist/adapters/logger.js +0 -3
  375. package/dist/adapters/memQueue.d.ts +0 -13
  376. package/dist/adapters/memQueue.d.ts.map +0 -1
  377. package/dist/adapters/memQueue.js +0 -20
  378. package/dist/adapters/mongo-client.d.ts.map +0 -1
  379. package/dist/adapters/mongo-client.js +0 -13
  380. package/dist/adapters/redis-client.d.ts.map +0 -1
  381. package/dist/adapters/redis-client.js +0 -94
  382. package/dist/api/ContextProvider.d.ts +0 -31
  383. package/dist/api/ContextProvider.d.ts.map +0 -1
  384. package/dist/api/ContextProvider.js +0 -38
  385. package/dist/api/codec.d.ts.map +0 -1
  386. package/dist/api/codec.js +0 -5
  387. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  388. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  389. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  390. package/dist/api/internal/auth.d.ts +0 -15
  391. package/dist/api/internal/auth.d.ts.map +0 -1
  392. package/dist/api/internal/auth.js +0 -47
  393. package/dist/api/internal/events.d.ts +0 -9
  394. package/dist/api/internal/events.d.ts.map +0 -1
  395. package/dist/api/internal/events.js +0 -42
  396. package/dist/api/internal/health.d.ts.map +0 -1
  397. package/dist/api/internal/health.js +0 -5
  398. package/dist/api/layerUtils.d.ts.map +0 -1
  399. package/dist/api/layerUtils.js +0 -16
  400. package/dist/api/middlewares.d.ts.map +0 -1
  401. package/dist/api/reportError.d.ts.map +0 -1
  402. package/dist/api/reportError.js +0 -27
  403. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  404. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  405. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  406. package/dist/api/routing/middleware/middleware.js +0 -92
  407. package/dist/api/routing/middleware.d.ts.map +0 -1
  408. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  409. package/dist/api/routing/schema/jwt.js +0 -12
  410. package/dist/api/routing/tsort.d.ts.map +0 -1
  411. package/dist/api/routing/tsort.js +0 -51
  412. package/dist/api/routing/utils.d.ts.map +0 -1
  413. package/dist/api/routing/utils.js +0 -44
  414. package/dist/api/routing.d.ts +0 -138
  415. package/dist/api/routing.d.ts.map +0 -1
  416. package/dist/api/routing.js +0 -166
  417. package/dist/api/setupRequest.d.ts +0 -12
  418. package/dist/api/setupRequest.d.ts.map +0 -1
  419. package/dist/api/setupRequest.js +0 -44
  420. package/dist/api/util.d.ts.map +0 -1
  421. package/dist/api/util.js +0 -14
  422. package/eslint.config.mjs +0 -24
  423. package/src/Emailer/service.ts +0 -52
  424. package/src/Emailer.ts +0 -1
  425. package/src/Model/Repository/ext.ts +0 -283
  426. package/src/Model/Repository/internal/internal.ts +0 -577
  427. package/src/Model/Repository/legacy.ts +0 -27
  428. package/src/Model/Repository/makeRepo.ts +0 -139
  429. package/src/Model/Repository/service.ts +0 -627
  430. package/src/Model/Repository/validation.ts +0 -31
  431. package/src/Model/Repository.ts +0 -5
  432. package/src/Model/dsl.ts +0 -128
  433. package/src/Model/filter/filterApi.ts +0 -60
  434. package/src/Model/filter/types/errors.ts +0 -47
  435. package/src/Model/filter/types/fields.ts +0 -50
  436. package/src/Model/filter/types/path/common.ts +0 -404
  437. package/src/Model/filter/types/path/eager.ts +0 -298
  438. package/src/Model/filter/types/path/index.ts +0 -4
  439. package/src/Model/filter/types/utils.ts +0 -128
  440. package/src/Model/filter/types/validator.ts +0 -46
  441. package/src/Model/filter/types.ts +0 -6
  442. package/src/Model/query/dsl.ts +0 -2110
  443. package/src/Model/query/new-kid-interpreter.ts +0 -210
  444. package/src/Model/query.ts +0 -13
  445. package/src/Model.ts +0 -3
  446. package/src/Operations.ts +0 -235
  447. package/src/OperationsRepo.ts +0 -16
  448. package/src/QueueMaker/SQLQueue.ts +0 -189
  449. package/src/QueueMaker/memQueue.ts +0 -130
  450. package/src/QueueMaker/sbqueue.ts +0 -137
  451. package/src/QueueMaker/service.ts +0 -17
  452. package/src/RequestContext.ts +0 -63
  453. package/src/RequestFiberSet.ts +0 -105
  454. package/src/Store/ContextMapContainer.ts +0 -20
  455. package/src/Store/index.test.ts.bak +0 -112
  456. package/src/Store/service.ts +0 -184
  457. package/src/Store.ts +0 -1
  458. package/src/adapters/SQL.ts +0 -1
  459. package/src/adapters/ServiceBus.ts +0 -209
  460. package/src/adapters/index.ts +0 -0
  461. package/src/adapters/logger.ts +0 -3
  462. package/src/adapters/memQueue.ts +0 -21
  463. package/src/api/internal/auth.ts +0 -68
  464. package/src/api/middlewares.ts +0 -10
  465. package/src/api/routing/middleware/middleware.ts +0 -128
  466. package/src/api/routing/middleware.ts +0 -6
  467. package/src/api/routing.ts +0 -598
  468. package/src/api/setupRequest.ts +0 -84
  469. package/tsconfig.json.bak +0 -12
  470. /package/dist/{adapters/SQL.d.ts → SQL.d.ts} +0 -0
  471. /package/dist/{api/codec.d.ts → codec.d.ts} +0 -0
  472. /package/dist/{api/internal → internal}/health.d.ts +0 -0
  473. /package/dist/{api/middlewares.d.ts → middlewares.d.ts} +0 -0
  474. /package/dist/{api/routing → routing}/schema/jwt.d.ts +0 -0
  475. /package/dist/{api/routing → routing}/tsort.d.ts +0 -0
  476. /package/dist/{api/util.d.ts → util.d.ts} +0 -0
  477. /package/src/{api/codec.ts → codec.ts} +0 -0
  478. /package/src/{api/internal → internal}/health.ts +0 -0
  479. /package/src/{api/routing → routing}/tsort.ts +0 -0
  480. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Full-stack stream test exercising the entire wrapper:
3
+ * resources (TaggedRequestFor)
4
+ * → controllers (Router(...)({ effect }))
5
+ * → router (makeRouter / matchAll)
6
+ * → api ClientFactory (ApiClientFactory.makeFor)
7
+ *
8
+ * Server runs over real HTTP (NodeHttpServer on a loopback port). Client uses
9
+ * FetchHttpClient through ApiClientFactory. This covers the wrapper-level
10
+ * `Stream` request constructor end-to-end.
11
+ */
12
+ import { NodeHttpServer } from "@effect/platform-node"
13
+ import { expect, it } from "@effect/vitest"
14
+ import { ApiClientFactory, makeRpcClient } from "effect-app/client"
15
+ import { HttpRouter, HttpServer } from "effect-app/http"
16
+ import { DefaultGenericMiddlewares } from "effect-app/middleware"
17
+ import { MiddlewareMaker } from "effect-app/rpc"
18
+ import * as S from "effect-app/Schema"
19
+ import { TaggedErrorClass } from "effect-app/Schema"
20
+ import * as Effect from "effect/Effect"
21
+ import * as Exit from "effect/Exit"
22
+ import * as Layer from "effect/Layer"
23
+ import * as Option from "effect/Option"
24
+ import * as Stream from "effect/Stream"
25
+ import { FetchHttpClient } from "effect/unstable/http"
26
+ import * as NetAddress from "effect/unstable/net/NetAddress"
27
+ import { RpcSerialization } from "effect/unstable/rpc"
28
+ import { createServer } from "http"
29
+ import { makeRouter } from "../src/routing.js"
30
+ import { DefaultGenericMiddlewaresLive } from "../src/routing/middleware.js"
31
+ import { AllowAnonymous, AllowAnonymousLive, RequestContextMap, RequireRoles, RequireRolesLive, SomeElseMiddleware, SomeElseMiddlewareLive, SomeService, Test, TestLive } from "./fixtures.js"
32
+
33
+ // ---------------------------------------------------------------------------
34
+ // Middleware (mirrors the boilerplate AppMiddleware shape).
35
+ // ---------------------------------------------------------------------------
36
+
37
+ class AppMiddleware extends MiddlewareMaker
38
+ .Tag<AppMiddleware>()("AppMiddleware", RequestContextMap)
39
+ .middleware(RequireRoles, Test)
40
+ .middleware(AllowAnonymous)
41
+ .middleware(SomeElseMiddleware)
42
+ .middleware(...DefaultGenericMiddlewares)
43
+ {
44
+ static Default = this.layer.pipe(
45
+ Layer.provide(
46
+ [
47
+ RequireRolesLive.pipe(Layer.provide(SomeService.Default)),
48
+ AllowAnonymousLive,
49
+ TestLive,
50
+ SomeElseMiddlewareLive,
51
+ DefaultGenericMiddlewaresLive
52
+ ] as const
53
+ )
54
+ )
55
+ }
56
+
57
+ const { Router, matchAll } = makeRouter(AppMiddleware.Default)
58
+
59
+ // ---------------------------------------------------------------------------
60
+ // Resources — Stream with and without payload.
61
+ // ---------------------------------------------------------------------------
62
+
63
+ const { TaggedRequestFor } = makeRpcClient(AppMiddleware)
64
+ const Req = TaggedRequestFor("Streamy")
65
+
66
+ class StreamTicks extends Req.Command<StreamTicks>()("StreamTicks", {}, {
67
+ stream: true,
68
+ allowAnonymous: true,
69
+ success: S.Number
70
+ }) {}
71
+
72
+ class StreamCountTo extends Req.Command<StreamCountTo>()("StreamCountTo", {
73
+ to: S.Number
74
+ }, {
75
+ stream: true,
76
+ allowAnonymous: true,
77
+ success: S.Number
78
+ }) {}
79
+
80
+ class StreamRealtime extends Req.Command<StreamRealtime>()("StreamRealtime", {}, {
81
+ stream: true,
82
+ allowAnonymous: true,
83
+ success: S.Number
84
+ }) {}
85
+
86
+ class StreamBoom extends TaggedErrorClass<StreamBoom>()("StreamBoom", { reason: S.String }) {}
87
+
88
+ class StreamFailStream extends Req.Command<StreamFailStream>()("StreamFailStream", {}, {
89
+ stream: true,
90
+ allowAnonymous: true,
91
+ success: S.Number,
92
+ error: StreamBoom
93
+ }) {}
94
+
95
+ class StreamNoSuccess extends Req.Command<StreamNoSuccess>()("StreamNoSuccess", {}, {
96
+ stream: true,
97
+ allowAnonymous: true
98
+ }) {}
99
+
100
+ // Defaults to allowAnonymous: false → AllowAnonymous middleware fails with NotLoggedInError
101
+ // when the request lacks the `x-user` header.
102
+ class StreamRequiresAuth extends Req.Command<StreamRequiresAuth>()("StreamRequiresAuth", {}, {
103
+ stream: true,
104
+ success: S.Number
105
+ }) {}
106
+
107
+ class CommandRequiresAuth extends Req.Command<CommandRequiresAuth>()("CommandRequiresAuth", {}, {
108
+ success: S.Number
109
+ }) {}
110
+
111
+ class QueryRequiresAuth extends Req.Query<QueryRequiresAuth>()("QueryRequiresAuth", {}, {
112
+ success: S.Number
113
+ }) {}
114
+
115
+ const StreamyRsc = {
116
+ StreamTicks,
117
+ StreamCountTo,
118
+ StreamRealtime,
119
+ StreamFailStream,
120
+ StreamNoSuccess,
121
+ StreamRequiresAuth,
122
+ CommandRequiresAuth,
123
+ QueryRequiresAuth
124
+ }
125
+
126
+ // ---------------------------------------------------------------------------
127
+ // Controllers / router — Stream impls returned from the match callback.
128
+ // ---------------------------------------------------------------------------
129
+
130
+ const router = Router(StreamyRsc)({
131
+ *effect(match) {
132
+ return match({
133
+ StreamTicks: () => Stream.fromIterable([10, 20, 30]),
134
+ StreamCountTo: ({ to }: { readonly to: number }) =>
135
+ Effect
136
+ .gen(function*() {
137
+ return Stream.range(1, to)
138
+ })
139
+ .pipe(Stream.unwrap),
140
+ // emits 3 values 100ms apart so the test can prove element-by-element
141
+ // delivery rather than a single batched response
142
+ StreamRealtime: () =>
143
+ Stream.fromIterable([1, 2, 3]).pipe(
144
+ Stream.mapEffect((n) => Effect.sleep("100 millis").pipe(Effect.as(n)))
145
+ ),
146
+ StreamFailStream: () => Stream.fail(new StreamBoom({ reason: "from-stream" })),
147
+ StreamNoSuccess: () => Stream.empty,
148
+ // handlers below are unreachable when middleware-auth fails; bodies exist
149
+ // only so the resource type-checks
150
+ StreamRequiresAuth: () => Stream.fromIterable([1, 2, 3]),
151
+ CommandRequiresAuth: () => Effect.succeed(1),
152
+ QueryRequiresAuth: () => Effect.succeed(1)
153
+ })
154
+ }
155
+ })
156
+
157
+ const RpcRouterLayer = matchAll({ router })
158
+
159
+ // ---------------------------------------------------------------------------
160
+ // HTTP wiring — real server on a loopback port + FetchHttpClient on the client.
161
+ // ---------------------------------------------------------------------------
162
+
163
+ // Server binds an ephemeral port (port: 0). The actual URL is read from the
164
+ // `HttpServer` service after binding, then fed into `ApiClientFactory.layer` so
165
+ // each `it.live` scope gets a fresh server without colliding on a fixed port.
166
+ const NodeServerLayer = NodeHttpServer.layer(() => createServer(), { port: 0 })
167
+
168
+ const ServerLayer = HttpRouter
169
+ .serve(RpcRouterLayer)
170
+ .pipe(
171
+ Layer.provide(NodeServerLayer),
172
+ Layer.provide(RpcSerialization.layerNdjson)
173
+ )
174
+
175
+ const ClientLayer = Layer
176
+ .unwrap(
177
+ Effect.gen(function*() {
178
+ const server = yield* HttpServer.HttpServer
179
+ const addr = server.address
180
+ if (NetAddress.isUnixPathAddress(addr)) {
181
+ return yield* Effect.die(new Error("expected inet address"))
182
+ }
183
+ const host = NetAddress.isUnspecified(addr.address) ? "127.0.0.1" : NetAddress.formatUrlHost(addr.address)
184
+ const url = `http://${host}:${addr.port}`
185
+ return ApiClientFactory
186
+ .layer({ url, headers: Option.none() })
187
+ .pipe(Layer.provide(FetchHttpClient.layer))
188
+ })
189
+ )
190
+ .pipe(Layer.provide(NodeServerLayer))
191
+
192
+ const TestLayer = Layer.mergeAll(ServerLayer, ClientLayer)
193
+
194
+ // ---------------------------------------------------------------------------
195
+ // Tests
196
+ // ---------------------------------------------------------------------------
197
+
198
+ it.live(
199
+ "stream resource without input: ApiClientFactory client emits all values",
200
+ Effect.fnUntraced(function*() {
201
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
202
+ const values = yield* Stream.runCollect(client.StreamTicks.handler())
203
+ expect(values).toStrictEqual([10, 20, 30])
204
+ }, Effect.provide(TestLayer)),
205
+ { timeout: 10_000 }
206
+ )
207
+
208
+ it.live(
209
+ "stream resource with input: payload drives the emitted values",
210
+ Effect.fnUntraced(function*() {
211
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
212
+ const values = yield* Stream.runCollect(client.StreamCountTo.handler({ to: 4 }))
213
+ expect(values).toStrictEqual([1, 2, 3, 4])
214
+ }, Effect.provide(TestLayer)),
215
+ { timeout: 10_000 }
216
+ )
217
+
218
+ it.live(
219
+ "stream resource is delivered element-by-element in real time (not batched)",
220
+ Effect.fnUntraced(function*() {
221
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
222
+ const start = Date.now()
223
+ const arrivals = yield* Stream.runCollect(
224
+ client.StreamRealtime.handler().pipe(
225
+ Stream.map((n) => ({ n, at: Date.now() - start }))
226
+ )
227
+ )
228
+ expect(arrivals.map((_) => _.n)).toStrictEqual([1, 2, 3])
229
+ // server emits each value 100ms after the previous one. If the response
230
+ // were batched, deltas would be ~0ms. Allow generous slack for CI jitter
231
+ // but require clear separation between consecutive arrivals.
232
+ const delta1 = arrivals[1]!.at - arrivals[0]!.at
233
+ const delta2 = arrivals[2]!.at - arrivals[1]!.at
234
+ expect(delta1).toBeGreaterThan(50)
235
+ expect(delta2).toBeGreaterThan(50)
236
+ // first element should not be withheld until the whole stream completes
237
+ expect(arrivals[0]!.at).toBeLessThan(arrivals[2]!.at - 50)
238
+ }, Effect.provide(TestLayer)),
239
+ { timeout: 10_000 }
240
+ )
241
+
242
+ it.live(
243
+ "stream handler returning Stream.fail surfaces as failing stream on client",
244
+ Effect.fnUntraced(function*() {
245
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
246
+ const exit = yield* Stream.runCollect(client.StreamFailStream.handler()).pipe(Effect.exit)
247
+ expect(Exit.isFailure(exit)).toBe(true)
248
+ if (Exit.isFailure(exit)) {
249
+ const failures = (exit.cause as any).reasons as ReadonlyArray<{ _tag: "Fail"; error: StreamBoom }>
250
+ expect(failures.length).toBeGreaterThan(0)
251
+ expect(failures[0]!.error._tag).toBe("StreamBoom")
252
+ expect(failures[0]!.error.reason).toBe("from-stream")
253
+ }
254
+ }, Effect.provide(TestLayer)),
255
+ { timeout: 10_000 }
256
+ )
257
+
258
+ it.live(
259
+ "stream resource without `success` exposes handler as a Stream on the client",
260
+ Effect.fnUntraced(function*() {
261
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
262
+ const exit = yield* Stream.runCollect(client.StreamNoSuccess.handler()).pipe(Effect.exit)
263
+ expect(Exit.isSuccess(exit)).toBe(true)
264
+ }, Effect.provide(TestLayer)),
265
+ { timeout: 10_000 }
266
+ )
267
+
268
+ const expectNotLoggedIn = (exit: Exit.Exit<unknown, unknown>) => {
269
+ expect(Exit.isFailure(exit)).toBe(true)
270
+ if (!Exit.isFailure(exit)) return
271
+ const failures = (exit.cause as any).reasons as ReadonlyArray<{ _tag: "Fail"; error: any }>
272
+ expect(failures.length).toBeGreaterThan(0)
273
+ // The bug surfaces here as a SchemaError ("Expected never | { _tag: 'error', ... }")
274
+ // because the middleware-thrown NotLoggedInError doesn't match the
275
+ // wire StreamFailureChunk / CommandFailureWithMetaData wrapping.
276
+ expect(failures[0]!.error?._tag).toBe("NotLoggedInError")
277
+ }
278
+
279
+ it.live(
280
+ "stream resource: middleware-emitted NotLoggedInError surfaces cleanly on the client",
281
+ Effect.fnUntraced(function*() {
282
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
283
+ const exit = yield* Stream.runCollect(client.StreamRequiresAuth.handler()).pipe(Effect.exit)
284
+ expectNotLoggedIn(exit)
285
+ }, Effect.provide(TestLayer)),
286
+ { timeout: 10_000 }
287
+ )
288
+
289
+ it.live(
290
+ "command resource: middleware-emitted NotLoggedInError surfaces cleanly on the client",
291
+ Effect.fnUntraced(function*() {
292
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
293
+ const exit = yield* client.CommandRequiresAuth.handler().pipe(Effect.exit)
294
+ expectNotLoggedIn(exit)
295
+ }, Effect.provide(TestLayer)),
296
+ { timeout: 10_000 }
297
+ )
298
+
299
+ it.live(
300
+ "query resource: middleware-emitted NotLoggedInError surfaces cleanly on the client",
301
+ Effect.fnUntraced(function*() {
302
+ const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
303
+ const exit = yield* client.QueryRequiresAuth.handler().pipe(Effect.exit)
304
+ expectNotLoggedIn(exit)
305
+ }, Effect.provide(TestLayer)),
306
+ { timeout: 10_000 }
307
+ )