@effect-app/infra 4.0.0-beta.31 → 4.0.0-beta.310

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 (473) hide show
  1. package/CHANGELOG.md +2361 -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 +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 +14 -3
  33. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  34. package/dist/Store/Cosmos/query.js +179 -41
  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 +385 -254
  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 +79 -39
  41. package/dist/Store/Memory.d.ts +5 -9
  42. package/dist/Store/Memory.d.ts.map +1 -1
  43. package/dist/Store/Memory.js +324 -67
  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 +253 -0
  47. package/dist/Store/SQL/query.d.ts +49 -0
  48. package/dist/Store/SQL/query.d.ts.map +1 -0
  49. package/dist/Store/SQL/query.js +527 -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 +472 -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 +6 -4
  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/utils.d.ts +5 -2
  60. package/dist/Store/utils.d.ts.map +1 -1
  61. package/dist/Store/utils.js +9 -5
  62. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  63. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  64. package/dist/WorkflowEngineCosmos.js +542 -0
  65. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  66. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  67. package/dist/WorkflowEngineSqlite.js +550 -0
  68. package/dist/arbs.d.ts +1 -1
  69. package/dist/arbs.d.ts.map +1 -1
  70. package/dist/arbs.js +5 -3
  71. package/dist/codec.d.ts.map +1 -0
  72. package/dist/codec.js +5 -0
  73. package/dist/{adapters/cosmos-client.d.ts → cosmos-client.d.ts} +4 -2
  74. package/dist/cosmos-client.d.ts.map +1 -0
  75. package/dist/cosmos-client.js +11 -0
  76. package/dist/errorReporter.d.ts +6 -4
  77. package/dist/errorReporter.d.ts.map +1 -1
  78. package/dist/errorReporter.js +23 -27
  79. package/dist/fileUtil.d.ts +1 -1
  80. package/dist/fileUtil.d.ts.map +1 -1
  81. package/dist/fileUtil.js +2 -2
  82. package/dist/index.d.ts +2 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -2
  85. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  86. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  87. package/dist/internal/RequestContextMiddleware.js +45 -0
  88. package/dist/internal/auth.d.ts +53 -0
  89. package/dist/internal/auth.d.ts.map +1 -0
  90. package/dist/internal/auth.js +180 -0
  91. package/dist/internal/events.d.ts +11 -0
  92. package/dist/internal/events.d.ts.map +1 -0
  93. package/dist/internal/events.js +49 -0
  94. package/dist/internal/health.d.ts.map +1 -0
  95. package/dist/internal/health.js +5 -0
  96. package/dist/{api/layerUtils.d.ts → layerUtils.d.ts} +14 -6
  97. package/dist/layerUtils.d.ts.map +1 -0
  98. package/dist/layerUtils.js +17 -0
  99. package/dist/logger/jsonLogger.d.ts +1 -1
  100. package/dist/logger/jsonLogger.d.ts.map +1 -1
  101. package/dist/logger/jsonLogger.js +5 -3
  102. package/dist/logger/logFmtLogger.d.ts +1 -1
  103. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  104. package/dist/logger/logFmtLogger.js +3 -3
  105. package/dist/logger/shared.d.ts +2 -2
  106. package/dist/logger/shared.d.ts.map +1 -1
  107. package/dist/logger/shared.js +5 -5
  108. package/dist/logger.d.ts.map +1 -1
  109. package/dist/middlewares.d.ts.map +1 -0
  110. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  111. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +3 -2
  112. package/dist/mongo-client.d.ts.map +1 -0
  113. package/dist/mongo-client.js +15 -0
  114. package/dist/otel.d.ts +75 -0
  115. package/dist/otel.d.ts.map +1 -0
  116. package/dist/otel.js +84 -0
  117. package/dist/rateLimit.d.ts +11 -3
  118. package/dist/rateLimit.d.ts.map +1 -1
  119. package/dist/rateLimit.js +7 -12
  120. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +5 -2
  121. package/dist/redis-client.d.ts.map +1 -0
  122. package/dist/redis-client.js +98 -0
  123. package/dist/{api/reportError.d.ts → reportError.d.ts} +1 -1
  124. package/dist/reportError.d.ts.map +1 -0
  125. package/dist/reportError.js +28 -0
  126. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +4 -3
  127. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  128. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  129. package/dist/routing/middleware/middleware.d.ts +48 -0
  130. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  131. package/dist/routing/middleware/middleware.js +152 -0
  132. package/dist/{api/routing → routing}/middleware.d.ts +0 -1
  133. package/dist/routing/middleware.d.ts.map +1 -0
  134. package/dist/{api/routing → routing}/middleware.js +1 -2
  135. package/dist/routing/schema/jwt.d.ts.map +1 -0
  136. package/dist/routing/schema/jwt.js +13 -0
  137. package/dist/routing/tsort.d.ts.map +1 -0
  138. package/dist/routing/tsort.js +51 -0
  139. package/dist/{api/routing → routing}/utils.d.ts +3 -3
  140. package/dist/routing/utils.d.ts.map +1 -0
  141. package/dist/routing/utils.js +45 -0
  142. package/dist/routing.d.ts +182 -0
  143. package/dist/routing.d.ts.map +1 -0
  144. package/dist/routing.js +256 -0
  145. package/dist/test.d.ts +2 -2
  146. package/dist/test.d.ts.map +1 -1
  147. package/dist/test.js +2 -2
  148. package/dist/util.d.ts.map +1 -0
  149. package/dist/util.js +14 -0
  150. package/docs/cluster-storage.md +26 -0
  151. package/docs/workflow-engine.md +262 -0
  152. package/examples/query.ts +47 -39
  153. package/package.json +38 -352
  154. package/src/CUPS.ts +53 -14
  155. package/src/ClusterCosmos.ts +1118 -0
  156. package/src/ClusterServiceBus.ts +242 -0
  157. package/src/{api/ContextProvider.ts → ContextProvider.ts} +20 -17
  158. package/src/Emailer/Sendgrid.ts +83 -60
  159. package/src/Emailer/fake.ts +4 -4
  160. package/src/MainFiberSet.ts +32 -13
  161. package/src/QueueMaker/errors.ts +3 -1
  162. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  163. package/src/SQL.ts +1 -0
  164. package/src/Store/Cosmos/query.ts +218 -54
  165. package/src/Store/Cosmos.ts +529 -365
  166. package/src/Store/Disk.ts +112 -70
  167. package/src/Store/Memory.ts +365 -99
  168. package/src/Store/SQL/Pg.ts +389 -0
  169. package/src/Store/SQL/query.ts +603 -0
  170. package/src/Store/SQL.ts +766 -0
  171. package/src/Store/codeFilter.ts +8 -6
  172. package/src/Store/index.ts +25 -10
  173. package/src/Store/utils.ts +32 -25
  174. package/src/WorkflowEngineCosmos.ts +749 -0
  175. package/src/WorkflowEngineSqlite.ts +813 -0
  176. package/src/arbs.ts +5 -3
  177. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  178. package/src/errorReporter.ts +68 -78
  179. package/src/fileUtil.ts +1 -1
  180. package/src/index.ts +2 -1
  181. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  182. package/src/internal/auth.ts +272 -0
  183. package/src/{api/internal → internal}/events.ts +22 -13
  184. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  185. package/src/logger/jsonLogger.ts +5 -3
  186. package/src/logger/logFmtLogger.ts +3 -3
  187. package/src/logger/shared.ts +5 -4
  188. package/src/middlewares.ts +10 -0
  189. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  190. package/src/otel.ts +177 -0
  191. package/src/rateLimit.ts +34 -23
  192. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  193. package/src/{api/reportError.ts → reportError.ts} +3 -2
  194. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  195. package/src/routing/middleware/middleware.ts +196 -0
  196. package/src/routing/middleware.ts +4 -0
  197. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  198. package/src/{api/routing → routing}/utils.ts +2 -1
  199. package/src/routing.ts +823 -0
  200. package/src/test.ts +4 -4
  201. package/src/vitest.ts +1 -1
  202. package/test/auth.test.ts +101 -0
  203. package/test/cluster-cosmos.test.ts +612 -0
  204. package/test/cluster-servicebus.test.ts +180 -0
  205. package/test/cluster-sqlite.test.ts +205 -0
  206. package/test/contextProvider.test.ts +15 -12
  207. package/test/controller.test.ts +28 -32
  208. package/test/cosmos-query.test.ts +228 -0
  209. package/test/dist/auth.test.d.ts.map +1 -0
  210. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  211. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  212. package/test/dist/cluster-sqlite.test.d.ts.map +1 -0
  213. package/test/dist/contextProvider.test.d.ts.map +1 -1
  214. package/test/dist/controller.test.d.ts.map +1 -1
  215. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  216. package/test/dist/fixtures.d.ts +29 -11
  217. package/test/dist/fixtures.d.ts.map +1 -1
  218. package/test/dist/fixtures.js +17 -10
  219. package/test/dist/query.test.d.ts.map +1 -1
  220. package/test/dist/rawQuery.test.d.ts.map +1 -1
  221. package/test/dist/repository-ext.test.d.ts.map +1 -0
  222. package/test/dist/requires.test.d.ts.map +1 -1
  223. package/test/dist/router-generator.test.d.ts.map +1 -0
  224. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  225. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  226. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  227. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  228. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  229. package/test/dist/sql-store.test.d.ts.map +1 -0
  230. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  231. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  232. package/test/fixtures.ts +16 -9
  233. package/test/layerUtils.test.ts +2 -2
  234. package/test/query.test.ts +1130 -41
  235. package/test/rawQuery.test.ts +340 -22
  236. package/test/repository-ext.test.ts +426 -0
  237. package/test/requires.test.ts +10 -5
  238. package/test/router-generator.test.ts +187 -0
  239. package/test/routing-interruptibility.test.ts +66 -0
  240. package/test/rpc-context-map-streaming.test.ts +262 -0
  241. package/test/rpc-e2e-invalidation.test.ts +418 -0
  242. package/test/rpc-multi-middleware.test.ts +85 -10
  243. package/test/rpc-stream-fullstack.test.ts +304 -0
  244. package/test/sql-store.test.ts +1711 -0
  245. package/test/validateSample.test.ts +26 -14
  246. package/test/workflow-engine-cosmos.test.ts +345 -0
  247. package/test/workflow-engine-sqlite.test.ts +297 -0
  248. package/tsconfig.examples.json +1 -1
  249. package/tsconfig.json +9 -2
  250. package/tsconfig.src.json +35 -35
  251. package/tsconfig.test.json +2 -2
  252. package/dist/Emailer/service.d.ts +0 -55
  253. package/dist/Emailer/service.d.ts.map +0 -1
  254. package/dist/Emailer/service.js +0 -6
  255. package/dist/Emailer.d.ts +0 -2
  256. package/dist/Emailer.d.ts.map +0 -1
  257. package/dist/Emailer.js +0 -2
  258. package/dist/Model/Repository/ext.d.ts +0 -41
  259. package/dist/Model/Repository/ext.d.ts.map +0 -1
  260. package/dist/Model/Repository/ext.js +0 -65
  261. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  262. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  263. package/dist/Model/Repository/internal/internal.js +0 -316
  264. package/dist/Model/Repository/legacy.d.ts +0 -19
  265. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  266. package/dist/Model/Repository/legacy.js +0 -2
  267. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  268. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  269. package/dist/Model/Repository/makeRepo.js +0 -24
  270. package/dist/Model/Repository/service.d.ts +0 -89
  271. package/dist/Model/Repository/service.d.ts.map +0 -1
  272. package/dist/Model/Repository/service.js +0 -2
  273. package/dist/Model/Repository/validation.d.ts +0 -42
  274. package/dist/Model/Repository/validation.d.ts.map +0 -1
  275. package/dist/Model/Repository/validation.js +0 -32
  276. package/dist/Model/Repository.d.ts +0 -6
  277. package/dist/Model/Repository.d.ts.map +0 -1
  278. package/dist/Model/Repository.js +0 -6
  279. package/dist/Model/dsl.d.ts +0 -32
  280. package/dist/Model/dsl.d.ts.map +0 -1
  281. package/dist/Model/dsl.js +0 -44
  282. package/dist/Model/filter/filterApi.d.ts +0 -30
  283. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  284. package/dist/Model/filter/filterApi.js +0 -2
  285. package/dist/Model/filter/types/errors.d.ts +0 -29
  286. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  287. package/dist/Model/filter/types/errors.js +0 -2
  288. package/dist/Model/filter/types/fields.d.ts +0 -15
  289. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  290. package/dist/Model/filter/types/fields.js +0 -2
  291. package/dist/Model/filter/types/path/common.d.ts +0 -316
  292. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  293. package/dist/Model/filter/types/path/common.js +0 -2
  294. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  295. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  296. package/dist/Model/filter/types/path/eager.js +0 -31
  297. package/dist/Model/filter/types/path/index.d.ts +0 -4
  298. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  299. package/dist/Model/filter/types/path/index.js +0 -3
  300. package/dist/Model/filter/types/utils.d.ts +0 -79
  301. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  302. package/dist/Model/filter/types/utils.js +0 -2
  303. package/dist/Model/filter/types/validator.d.ts +0 -30
  304. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  305. package/dist/Model/filter/types/validator.js +0 -2
  306. package/dist/Model/filter/types.d.ts +0 -5
  307. package/dist/Model/filter/types.d.ts.map +0 -1
  308. package/dist/Model/filter/types.js +0 -7
  309. package/dist/Model/query/dsl.d.ts +0 -248
  310. package/dist/Model/query/dsl.d.ts.map +0 -1
  311. package/dist/Model/query/dsl.js +0 -104
  312. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  313. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  314. package/dist/Model/query/new-kid-interpreter.js +0 -165
  315. package/dist/Model/query.d.ts +0 -15
  316. package/dist/Model/query.d.ts.map +0 -1
  317. package/dist/Model/query.js +0 -3
  318. package/dist/Model.d.ts +0 -4
  319. package/dist/Model.d.ts.map +0 -1
  320. package/dist/Model.js +0 -4
  321. package/dist/Operations.d.ts +0 -55
  322. package/dist/Operations.d.ts.map +0 -1
  323. package/dist/Operations.js +0 -102
  324. package/dist/OperationsRepo.d.ts +0 -41
  325. package/dist/OperationsRepo.d.ts.map +0 -1
  326. package/dist/OperationsRepo.js +0 -14
  327. package/dist/QueueMaker/SQLQueue.d.ts +0 -16
  328. package/dist/QueueMaker/SQLQueue.d.ts.map +0 -1
  329. package/dist/QueueMaker/SQLQueue.js +0 -130
  330. package/dist/QueueMaker/memQueue.d.ts +0 -11
  331. package/dist/QueueMaker/memQueue.d.ts.map +0 -1
  332. package/dist/QueueMaker/memQueue.js +0 -76
  333. package/dist/QueueMaker/sbqueue.d.ts +0 -12
  334. package/dist/QueueMaker/sbqueue.d.ts.map +0 -1
  335. package/dist/QueueMaker/sbqueue.js +0 -91
  336. package/dist/QueueMaker/service.d.ts +0 -11
  337. package/dist/QueueMaker/service.d.ts.map +0 -1
  338. package/dist/QueueMaker/service.js +0 -4
  339. package/dist/RequestContext.d.ts +0 -63
  340. package/dist/RequestContext.d.ts.map +0 -1
  341. package/dist/RequestContext.js +0 -49
  342. package/dist/RequestFiberSet.d.ts +0 -36
  343. package/dist/RequestFiberSet.d.ts.map +0 -1
  344. package/dist/RequestFiberSet.js +0 -78
  345. package/dist/Store/ContextMapContainer.d.ts +0 -14
  346. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  347. package/dist/Store/ContextMapContainer.js +0 -16
  348. package/dist/Store/service.d.ts +0 -108
  349. package/dist/Store/service.d.ts.map +0 -1
  350. package/dist/Store/service.js +0 -71
  351. package/dist/Store.d.ts +0 -2
  352. package/dist/Store.d.ts.map +0 -1
  353. package/dist/Store.js +0 -2
  354. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  355. package/dist/adapters/SQL/Model.js +0 -478
  356. package/dist/adapters/SQL.d.ts.map +0 -1
  357. package/dist/adapters/ServiceBus.d.ts +0 -58
  358. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  359. package/dist/adapters/ServiceBus.js +0 -99
  360. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  361. package/dist/adapters/cosmos-client.js +0 -9
  362. package/dist/adapters/index.d.ts +0 -2
  363. package/dist/adapters/index.d.ts.map +0 -1
  364. package/dist/adapters/index.js +0 -2
  365. package/dist/adapters/logger.d.ts +0 -9
  366. package/dist/adapters/logger.d.ts.map +0 -1
  367. package/dist/adapters/logger.js +0 -3
  368. package/dist/adapters/memQueue.d.ts +0 -13
  369. package/dist/adapters/memQueue.d.ts.map +0 -1
  370. package/dist/adapters/memQueue.js +0 -20
  371. package/dist/adapters/mongo-client.d.ts.map +0 -1
  372. package/dist/adapters/mongo-client.js +0 -13
  373. package/dist/adapters/redis-client.d.ts.map +0 -1
  374. package/dist/adapters/redis-client.js +0 -94
  375. package/dist/api/ContextProvider.d.ts +0 -31
  376. package/dist/api/ContextProvider.d.ts.map +0 -1
  377. package/dist/api/ContextProvider.js +0 -38
  378. package/dist/api/codec.d.ts.map +0 -1
  379. package/dist/api/codec.js +0 -5
  380. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  381. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  382. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  383. package/dist/api/internal/auth.d.ts +0 -15
  384. package/dist/api/internal/auth.d.ts.map +0 -1
  385. package/dist/api/internal/auth.js +0 -47
  386. package/dist/api/internal/events.d.ts +0 -9
  387. package/dist/api/internal/events.d.ts.map +0 -1
  388. package/dist/api/internal/events.js +0 -42
  389. package/dist/api/internal/health.d.ts.map +0 -1
  390. package/dist/api/internal/health.js +0 -5
  391. package/dist/api/layerUtils.d.ts.map +0 -1
  392. package/dist/api/layerUtils.js +0 -16
  393. package/dist/api/middlewares.d.ts.map +0 -1
  394. package/dist/api/reportError.d.ts.map +0 -1
  395. package/dist/api/reportError.js +0 -27
  396. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  397. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  398. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  399. package/dist/api/routing/middleware/middleware.js +0 -92
  400. package/dist/api/routing/middleware.d.ts.map +0 -1
  401. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  402. package/dist/api/routing/schema/jwt.js +0 -12
  403. package/dist/api/routing/tsort.d.ts.map +0 -1
  404. package/dist/api/routing/tsort.js +0 -51
  405. package/dist/api/routing/utils.d.ts.map +0 -1
  406. package/dist/api/routing/utils.js +0 -44
  407. package/dist/api/routing.d.ts +0 -138
  408. package/dist/api/routing.d.ts.map +0 -1
  409. package/dist/api/routing.js +0 -166
  410. package/dist/api/setupRequest.d.ts +0 -12
  411. package/dist/api/setupRequest.d.ts.map +0 -1
  412. package/dist/api/setupRequest.js +0 -44
  413. package/dist/api/util.d.ts.map +0 -1
  414. package/dist/api/util.js +0 -14
  415. package/eslint.config.mjs +0 -24
  416. package/src/Emailer/service.ts +0 -52
  417. package/src/Emailer.ts +0 -1
  418. package/src/Model/Repository/ext.ts +0 -283
  419. package/src/Model/Repository/internal/internal.ts +0 -577
  420. package/src/Model/Repository/legacy.ts +0 -27
  421. package/src/Model/Repository/makeRepo.ts +0 -139
  422. package/src/Model/Repository/service.ts +0 -627
  423. package/src/Model/Repository/validation.ts +0 -31
  424. package/src/Model/Repository.ts +0 -5
  425. package/src/Model/dsl.ts +0 -128
  426. package/src/Model/filter/filterApi.ts +0 -60
  427. package/src/Model/filter/types/errors.ts +0 -47
  428. package/src/Model/filter/types/fields.ts +0 -50
  429. package/src/Model/filter/types/path/common.ts +0 -404
  430. package/src/Model/filter/types/path/eager.ts +0 -298
  431. package/src/Model/filter/types/path/index.ts +0 -4
  432. package/src/Model/filter/types/utils.ts +0 -128
  433. package/src/Model/filter/types/validator.ts +0 -46
  434. package/src/Model/filter/types.ts +0 -6
  435. package/src/Model/query/dsl.ts +0 -2110
  436. package/src/Model/query/new-kid-interpreter.ts +0 -210
  437. package/src/Model/query.ts +0 -13
  438. package/src/Model.ts +0 -3
  439. package/src/Operations.ts +0 -235
  440. package/src/OperationsRepo.ts +0 -16
  441. package/src/QueueMaker/SQLQueue.ts +0 -189
  442. package/src/QueueMaker/memQueue.ts +0 -130
  443. package/src/QueueMaker/sbqueue.ts +0 -137
  444. package/src/QueueMaker/service.ts +0 -17
  445. package/src/RequestContext.ts +0 -63
  446. package/src/RequestFiberSet.ts +0 -105
  447. package/src/Store/ContextMapContainer.ts +0 -20
  448. package/src/Store/index.test.ts.bak +0 -112
  449. package/src/Store/service.ts +0 -184
  450. package/src/Store.ts +0 -1
  451. package/src/adapters/SQL.ts +0 -1
  452. package/src/adapters/ServiceBus.ts +0 -209
  453. package/src/adapters/index.ts +0 -0
  454. package/src/adapters/logger.ts +0 -3
  455. package/src/adapters/memQueue.ts +0 -21
  456. package/src/api/internal/auth.ts +0 -68
  457. package/src/api/middlewares.ts +0 -10
  458. package/src/api/routing/middleware/middleware.ts +0 -128
  459. package/src/api/routing/middleware.ts +0 -6
  460. package/src/api/routing.ts +0 -598
  461. package/src/api/setupRequest.ts +0 -84
  462. package/tsconfig.json.bak +0 -12
  463. /package/dist/{adapters/SQL.d.ts → SQL.d.ts} +0 -0
  464. /package/dist/{api/codec.d.ts → codec.d.ts} +0 -0
  465. /package/dist/{api/internal → internal}/health.d.ts +0 -0
  466. /package/dist/{api/middlewares.d.ts → middlewares.d.ts} +0 -0
  467. /package/dist/{api/routing → routing}/schema/jwt.d.ts +0 -0
  468. /package/dist/{api/routing → routing}/tsort.d.ts +0 -0
  469. /package/dist/{api/util.d.ts → util.d.ts} +0 -0
  470. /package/src/{api/codec.ts → codec.ts} +0 -0
  471. /package/src/{api/internal → internal}/health.ts +0 -0
  472. /package/src/{api/routing → routing}/tsort.ts +0 -0
  473. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1,297 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { SqliteClient } from "@effect/sql-sqlite-node"
3
+ import { assert, describe, it } from "@effect/vitest"
4
+ import * as Context from "effect-app/Context"
5
+ import * as Effect from "effect-app/Effect"
6
+ import * as Layer from "effect-app/Layer"
7
+ import * as Option from "effect-app/Option"
8
+ import * as S from "effect-app/Schema"
9
+ import * as Duration from "effect/Duration"
10
+ import * as Exit from "effect/Exit"
11
+ import * as Schema from "effect/Schema"
12
+ import { SqlClient } from "effect/unstable/sql"
13
+ import { Activity, DurableDeferred, Workflow } from "effect/unstable/workflow"
14
+ import { layerSqlite } from "../src/WorkflowEngineSqlite.js"
15
+
16
+ // --- Shared mutable counter service -----------------------------------
17
+
18
+ class CounterRef extends Context.Service<CounterRef, { count: number }>()("CounterRef") {
19
+ static readonly layer = Layer.effect(CounterRef, Effect.sync(() => ({ count: 0 })))
20
+ }
21
+
22
+ // --- Workflow definitions --------------------------------------------
23
+
24
+ const Increment = Workflow.make("Sqlite/Increment", {
25
+ payload: { value: Schema.Number },
26
+ success: Schema.Number,
27
+ idempotencyKey: ({ value }) => `inc-${value}`
28
+ })
29
+
30
+ const IncrementHandler = Increment.toLayer(Effect.fn(function*({ value }) {
31
+ const counter = yield* CounterRef
32
+ yield* Activity.make({
33
+ name: "Bump",
34
+ success: Schema.Number,
35
+ execute: Effect.sync(() => {
36
+ counter.count++
37
+ return counter.count
38
+ })
39
+ })
40
+ return value + 1
41
+ }))
42
+
43
+ const TickHandler = Increment.toLayer(({ value }) => Effect.succeed(value + 1))
44
+
45
+ const EmailReceived = DurableDeferred.make("EmailReceived", { success: Schema.String })
46
+
47
+ const AwaitEmail = Workflow.make("Sqlite/AwaitEmail", {
48
+ payload: { id: Schema.String },
49
+ success: Schema.String,
50
+ idempotencyKey: ({ id }) => `email-${id}`
51
+ })
52
+
53
+ const AwaitEmailHandler = AwaitEmail.toLayer(Effect.fn(function*() {
54
+ return yield* DurableDeferred.await(EmailReceived)
55
+ }))
56
+
57
+ // Reproduces the adapter's opaque activity-result codec so tests can seed
58
+ // schema-encoded values into the activity table directly.
59
+ const ActivityResultCodec = S.fromJsonString(
60
+ S.toCodecJson(Workflow.Result({ success: S.Union([S.Any, S.Void]), error: S.Union([S.Any, S.Void]) }))
61
+ )
62
+
63
+ // --- Layer wiring ----------------------------------------------------
64
+
65
+ type TestOpts = {
66
+ readonly recoveryInterval?: Duration.Duration
67
+ readonly clockPollInterval?: Duration.Duration
68
+ }
69
+
70
+ const makeBase = (opts?: TestOpts) => {
71
+ const Sqlite = SqliteClient.layer({ filename: ":memory:" })
72
+ const Engine = layerSqlite({
73
+ recoveryInterval: opts?.recoveryInterval ?? Duration.millis(100),
74
+ clockPollInterval: opts?.clockPollInterval ?? Duration.millis(100)
75
+ })
76
+ .pipe(Layer.provide(Sqlite))
77
+ return { Sqlite, Engine }
78
+ }
79
+
80
+ const incrementLayer = (opts?: TestOpts) => {
81
+ const { Sqlite, Engine } = makeBase(opts)
82
+ return IncrementHandler.pipe(
83
+ Layer.provideMerge(CounterRef.layer),
84
+ Layer.provideMerge(Engine),
85
+ Layer.provideMerge(Sqlite)
86
+ )
87
+ }
88
+
89
+ const tickLayer = (opts?: TestOpts) => {
90
+ const { Sqlite, Engine } = makeBase(opts)
91
+ return TickHandler.pipe(Layer.provideMerge(Engine), Layer.provideMerge(Sqlite))
92
+ }
93
+
94
+ const awaitEmailLayer = (opts?: TestOpts) => {
95
+ const { Sqlite, Engine } = makeBase(opts)
96
+ return AwaitEmailHandler.pipe(Layer.provideMerge(Engine), Layer.provideMerge(Sqlite))
97
+ }
98
+
99
+ // --- Tests ------------------------------------------------------------
100
+
101
+ describe("WorkflowEngine (SQLite)", () => {
102
+ it.live("executes a workflow and persists completion", () =>
103
+ Effect
104
+ .gen(function*() {
105
+ const executionId = yield* Increment.execute({ value: 10 }, { discard: true })
106
+ const result = yield* Increment.execute({ value: 10 })
107
+ const polled = yield* Increment.poll(executionId)
108
+
109
+ assert.strictEqual(result, 11)
110
+ assert(
111
+ Option.isSome(polled)
112
+ && polled.value._tag === "Complete"
113
+ && Exit.isSuccess(polled.value.exit)
114
+ )
115
+ assert.strictEqual(polled.value.exit.value, 11)
116
+ })
117
+ .pipe(Effect.provide(incrementLayer())))
118
+
119
+ it.live("re-executing the same id is idempotent (activity runs once)", () =>
120
+ Effect
121
+ .gen(function*() {
122
+ const counter = yield* CounterRef
123
+ yield* Increment.execute({ value: 1 })
124
+ yield* Increment.execute({ value: 1 })
125
+ yield* Increment.execute({ value: 1 })
126
+ assert.strictEqual(counter.count, 1)
127
+ })
128
+ .pipe(Effect.provide(incrementLayer())))
129
+
130
+ it.live("persists activity results across replay", () =>
131
+ Effect
132
+ .gen(function*() {
133
+ const sql = yield* SqlClient.SqlClient
134
+ yield* Increment.execute({ value: 2 })
135
+ const rows = yield* sql
136
+ .unsafe(
137
+ `SELECT execution_id, name, attempt, result FROM workflow_activity`
138
+ )
139
+ .pipe(Effect.orDie)
140
+ assert.strictEqual(rows.length, 1)
141
+ assert.strictEqual((rows[0] as any).name, "Bump")
142
+ // Stored value is schema-encoded JSON, not a raw runtime object.
143
+ const decoded = S.decodeSync(ActivityResultCodec)((rows[0] as any).result)
144
+ assert.strictEqual(decoded._tag, "Complete")
145
+ })
146
+ .pipe(Effect.provide(incrementLayer())))
147
+
148
+ it.live("durable deferred completion resumes a suspended workflow", () =>
149
+ Effect
150
+ .gen(function*() {
151
+ const completion = Effect.gen(function*() {
152
+ yield* Effect.sleep(Duration.millis(50))
153
+ const token = yield* DurableDeferred.tokenFromPayload(EmailReceived, {
154
+ workflow: AwaitEmail,
155
+ payload: { id: "x" }
156
+ })
157
+ yield* DurableDeferred.done(EmailReceived, { token, exit: Exit.succeed("delivered") })
158
+ })
159
+ const [result] = yield* Effect.all(
160
+ [AwaitEmail.execute({ id: "x" }), completion],
161
+ { concurrency: "unbounded" }
162
+ )
163
+ assert.strictEqual(result, "delivered")
164
+ })
165
+ .pipe(Effect.provide(awaitEmailLayer())))
166
+
167
+ it.live("interrupt marks the execution row", () =>
168
+ Effect
169
+ .gen(function*() {
170
+ const sql = yield* SqlClient.SqlClient
171
+ const executionId = yield* AwaitEmail.executionId({ id: "i" })
172
+ // Start the workflow as discard (does not block) so it suspends in the
173
+ // background; then mark it interrupted.
174
+ yield* AwaitEmail.execute({ id: "i" }, { discard: true })
175
+ yield* Effect.sleep(Duration.millis(50))
176
+ yield* AwaitEmail.interrupt(executionId)
177
+ yield* Effect.sleep(Duration.millis(50))
178
+ const rows = yield* sql
179
+ .unsafe(
180
+ `SELECT interrupted FROM workflow_exec WHERE execution_id = ?`,
181
+ [executionId] as any
182
+ )
183
+ .pipe(Effect.orDie)
184
+ assert.strictEqual((rows[0] as any).interrupted, 1)
185
+ })
186
+ .pipe(Effect.provide(awaitEmailLayer())))
187
+
188
+ it.live("clock poller fires past-due clocks", () =>
189
+ Effect
190
+ .gen(function*() {
191
+ const sql = yield* SqlClient.SqlClient
192
+ yield* sql
193
+ .unsafe(
194
+ `INSERT INTO workflow_exec (execution_id, workflow_name, payload, status, suspended, interrupted, etag)
195
+ VALUES ('exec-clock', 'Sqlite/AwaitEmail', '{"id":"x"}', 'running', 0, 0, 'e1')`
196
+ )
197
+ .pipe(Effect.orDie)
198
+ yield* sql
199
+ .unsafe(
200
+ `INSERT INTO workflow_clock (execution_id, name, workflow_name, deferred_name, fire_at)
201
+ VALUES ('exec-clock', 'wake', 'Sqlite/AwaitEmail', 'EmailReceived', ?)`,
202
+ [Date.now() - 1000] as any
203
+ )
204
+ .pipe(Effect.orDie)
205
+
206
+ yield* Effect.sleep(Duration.millis(400))
207
+
208
+ const deferred = yield* sql
209
+ .unsafe(
210
+ `SELECT exit FROM workflow_deferred WHERE execution_id = 'exec-clock' AND name = 'EmailReceived'`
211
+ )
212
+ .pipe(Effect.orDie)
213
+ const clockGone = yield* sql
214
+ .unsafe(
215
+ `SELECT execution_id FROM workflow_clock WHERE execution_id = 'exec-clock' AND name = 'wake'`
216
+ )
217
+ .pipe(Effect.orDie)
218
+ assert.strictEqual(deferred.length, 1)
219
+ assert.strictEqual(clockGone.length, 0)
220
+ })
221
+ .pipe(Effect.provide(awaitEmailLayer())))
222
+
223
+ it.live("recovery poller drives execs with stale leases", () =>
224
+ Effect
225
+ .gen(function*() {
226
+ const sql = yield* SqlClient.SqlClient
227
+ yield* sql
228
+ .unsafe(
229
+ `INSERT INTO workflow_exec (execution_id, workflow_name, payload, status, suspended, interrupted, lease_expires_at, etag)
230
+ VALUES ('recover-1', 'Sqlite/Increment', '{"value":99}', 'running', 0, 0, 0, 'e0')`
231
+ )
232
+ .pipe(Effect.orDie)
233
+
234
+ yield* Effect.sleep(Duration.millis(500))
235
+
236
+ const rows = yield* sql
237
+ .unsafe(
238
+ `SELECT status, completed_result FROM workflow_exec WHERE execution_id = 'recover-1'`
239
+ )
240
+ .pipe(Effect.orDie)
241
+ assert.strictEqual((rows[0] as any).status, "complete")
242
+ const completedResult = JSON.parse((rows[0] as any).completed_result) as { _tag: string }
243
+ assert.strictEqual(completedResult._tag, "Complete")
244
+ })
245
+ .pipe(Effect.provide(tickLayer())))
246
+
247
+ it.live("activity dedup: a pre-existing persisted result wins over a fresh run", () =>
248
+ Effect
249
+ .gen(function*() {
250
+ const sql = yield* SqlClient.SqlClient
251
+ const counter = yield* CounterRef
252
+ const executionId = yield* Increment.executionId({ value: 7 })
253
+ yield* sql
254
+ .unsafe(
255
+ `INSERT INTO workflow_exec (execution_id, workflow_name, payload, status, suspended, interrupted, etag)
256
+ VALUES (?, 'Sqlite/Increment', '{"value":7}', 'running', 0, 0, 'e0')`,
257
+ [executionId] as any
258
+ )
259
+ .pipe(Effect.orDie)
260
+ const seeded = S.encodeSync(ActivityResultCodec)(
261
+ new Workflow.Complete({ exit: Exit.succeed(999) })
262
+ )
263
+ yield* sql
264
+ .unsafe(
265
+ `INSERT INTO workflow_activity (execution_id, name, attempt, result)
266
+ VALUES (?, 'Bump', 1, ?)`,
267
+ [executionId, seeded] as any
268
+ )
269
+ .pipe(Effect.orDie)
270
+
271
+ const result = yield* Increment.execute({ value: 7 })
272
+ assert.strictEqual(result, 8)
273
+ // Bump's user effect must NOT have run — counter stays at 0.
274
+ assert.strictEqual(counter.count, 0)
275
+ })
276
+ .pipe(Effect.provide(incrementLayer())))
277
+
278
+ it.live("deferredDone is idempotent (first-writer-wins)", () =>
279
+ Effect
280
+ .gen(function*() {
281
+ const completion = Effect.gen(function*() {
282
+ yield* Effect.sleep(Duration.millis(50))
283
+ const token = yield* DurableDeferred.tokenFromPayload(EmailReceived, {
284
+ workflow: AwaitEmail,
285
+ payload: { id: "dup" }
286
+ })
287
+ yield* DurableDeferred.done(EmailReceived, { token, exit: Exit.succeed("first") })
288
+ yield* DurableDeferred.done(EmailReceived, { token, exit: Exit.succeed("second") })
289
+ })
290
+ const [result] = yield* Effect.all(
291
+ [AwaitEmail.execute({ id: "dup" }), completion],
292
+ { concurrency: "unbounded" }
293
+ )
294
+ assert.strictEqual(result, "first")
295
+ })
296
+ .pipe(Effect.provide(awaitEmailLayer())))
297
+ })
@@ -12,4 +12,4 @@
12
12
  "tsBuildInfoFile": ".tsbuildinfo/examples.tsbuildinfo",
13
13
  "rootDir": "examples"
14
14
  }
15
- }
15
+ }
package/tsconfig.json CHANGED
@@ -14,7 +14,12 @@
14
14
  "isolatedModules": true,
15
15
  "esModuleInterop": true,
16
16
  "skipLibCheck": true,
17
- "plugins": [],
17
+ "plugins": [
18
+ {
19
+ "name": "@effect/language-service",
20
+ "diagnostics": false
21
+ }
22
+ ],
18
23
  "module": "Node16",
19
24
  "lib": [
20
25
  "ES2023"
@@ -32,9 +37,11 @@
32
37
  "outDir": "build/dist",
33
38
  "resolveJsonModule": true,
34
39
  "moduleResolution": "Node16",
35
- "downlevelIteration": true,
36
40
  "noErrorTruncation": true,
37
41
  "forceConsistentCasingInFileNames": true,
42
+ "erasableSyntaxOnly": true,
43
+ "rewriteRelativeImportExtensions": true,
44
+ "allowImportingTsExtensions": true,
38
45
  "types": [
39
46
  "node"
40
47
  ]
package/tsconfig.src.json CHANGED
@@ -1,38 +1,38 @@
1
1
  {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "lib": [
5
- "esnext"
6
- ],
7
- "tsBuildInfoFile": "./dist/.tsbuildinfo",
8
- "esModuleInterop": true,
9
- "rootDir": "./src",
10
- // keep in here, cause madge can't detect it from extended tsconfig
11
- "moduleResolution": "Node16",
12
- "types": [
13
- "./types/modules"
14
- ],
15
- "outDir": "./dist"
16
- },
17
- "include": [
18
- "./src/**/*.ts"
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "lib": [
5
+ "esnext"
19
6
  ],
20
- "exclude": [
21
- "./dist",
22
- "*.test.ts",
23
- "node_modules",
24
- "build",
25
- "lib",
26
- "dist",
27
- "**/*.d.ts.map",
28
- ".git",
29
- ".data",
30
- "**/.*",
31
- "**/*.tmp"
7
+ "tsBuildInfoFile": "./dist/.tsbuildinfo",
8
+ "esModuleInterop": true,
9
+ "rootDir": "./src",
10
+ // keep in here, cause madge can't detect it from extended tsconfig
11
+ "moduleResolution": "Node16",
12
+ "types": [
13
+ "./types/modules"
32
14
  ],
33
- "references": [
34
- {
35
- "path": "../effect-app"
36
- },
37
- ]
38
- }
15
+ "outDir": "./dist"
16
+ },
17
+ "include": [
18
+ "./src/**/*.ts"
19
+ ],
20
+ "exclude": [
21
+ "./dist",
22
+ "*.test.ts",
23
+ "node_modules",
24
+ "build",
25
+ "lib",
26
+ "dist",
27
+ "**/*.d.ts.map",
28
+ ".git",
29
+ ".data",
30
+ "**/.*",
31
+ "**/*.tmp"
32
+ ],
33
+ "references": [
34
+ {
35
+ "path": "../effect-app"
36
+ }
37
+ ]
38
+ }
@@ -28,6 +28,6 @@
28
28
  "references": [
29
29
  {
30
30
  "path": "./tsconfig.src.json"
31
- },
31
+ }
32
32
  ]
33
- }
33
+ }
@@ -1,55 +0,0 @@
1
- import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js";
2
- import type { ResponseError } from "@sendgrid/mail";
3
- import { type Effect, type NonEmptyReadonlyArray, type Redacted, ServiceMap } from "effect-app";
4
- import type { Email } from "effect-app/Schema";
5
- declare const SendMailError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
6
- readonly _tag: "SendMailError";
7
- } & Readonly<A>;
8
- export declare class SendMailError extends SendMailError_base<{
9
- readonly raw: Error | ResponseError;
10
- }> {
11
- }
12
- declare const Emailer_base: ServiceMap.OpaqueClass<Emailer, "effect-app/Emailer", {
13
- sendMail: (msg: EmailMsgOptionalFrom) => Effect.Effect<void, SendMailError>;
14
- }>;
15
- export declare class Emailer extends Emailer_base {
16
- }
17
- export type EmailData = Email | {
18
- name?: string;
19
- email: Email;
20
- };
21
- export interface SendgridConfig {
22
- defaultReplyTo?: EmailData;
23
- subjectPrefix: string;
24
- realMail: boolean;
25
- defaultFrom: EmailData;
26
- apiKey: Redacted.Redacted<string>;
27
- }
28
- export type EmailTemplateMsg = MailData & {
29
- templateId: string;
30
- };
31
- export type EmailRecipients = EmailData | NonEmptyReadonlyArray<EmailData>;
32
- export type EmailMsgBase = Omit<MailData, "from" | "to" | "bcc" | "cc" | "content"> & {
33
- to: EmailData | NonEmptyReadonlyArray<EmailData>;
34
- cc?: EmailData | NonEmptyReadonlyArray<EmailData>;
35
- bcc?: EmailData | NonEmptyReadonlyArray<EmailData>;
36
- from: EmailData;
37
- /**
38
- * should multiple `to` addresess be considered multiple emails?
39
- * defaults to `true`, not to leak email addresses
40
- */
41
- isMultiple?: boolean;
42
- };
43
- export type EmailContent = {
44
- text: string;
45
- } | {
46
- html: string;
47
- } | {
48
- templateId: string;
49
- } | {
50
- content: NonEmptyReadonlyArray<MailContent>;
51
- };
52
- export type EmailMsg = EmailMsgBase & EmailContent;
53
- export type EmailMsgOptionalFrom = Omit<EmailMsgBase, "from"> & Partial<Pick<EmailMsg, "from">> & EmailContent;
54
- export {};
55
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/Emailer/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAQ,KAAK,MAAM,EAAE,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACrG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;;;;AAE9C,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,aAAa,CAAA;CACpC,CAAC;CAAG;;cAGO,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;;AAD7E,qBAAa,OAAQ,SAAQ,YAEH;CAAG;AAE7B,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,SAAS,CAAA;IACtB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;CAClC;AACD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAE1E,MAAM,MAAM,YAAY,GACpB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GACxD;IACA,EAAE,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAChD,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACjD,GAAG,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAClD,IAAI,EAAE,SAAS,CAAA;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAEH,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IACxF,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,CAAA;AAEhB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAAA"}
@@ -1,6 +0,0 @@
1
- import { Data, ServiceMap } from "effect-app";
2
- export class SendMailError extends Data.TaggedError("SendMailError") {
3
- }
4
- export class Emailer extends ServiceMap.Opaque()("effect-app/Emailer") {
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FbWFpbGVyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBMEQsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBR3JHLE1BQU0sT0FBTyxhQUFjLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBRWpFO0NBQUc7QUFFTCxNQUFNLE9BQU8sT0FBUSxTQUFRLFVBQVUsQ0FBQyxNQUFNLEVBRTFDLENBQUMsb0JBQW9CLENBQUM7Q0FBRyJ9
package/dist/Emailer.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./Emailer/service.js";
2
- //# sourceMappingURL=Emailer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Emailer.d.ts","sourceRoot":"","sources":["../src/Emailer.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
package/dist/Emailer.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "./Emailer/service.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW1haWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9FbWFpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUEifQ==
@@ -1,41 +0,0 @@
1
- import { Effect, type NonEmptyArray } from "effect-app";
2
- import { type InvalidStateError, NotFoundError, type OptimisticConcurrencyException } from "effect-app/client/errors";
3
- import { type FixEnv, type PureEnv } from "effect-app/Pure";
4
- import type { FieldValues } from "../filter/types.js";
5
- import type { Query, QueryEnd, QueryWhere } from "../query.js";
6
- import type { Repository } from "./service.js";
7
- export declare const extendRepo: <T, Encoded extends FieldValues, Evt, ItemType extends string, IdKey extends keyof T & keyof Encoded, RSchema, RPublish>(repo: Repository<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish>) => Repository<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish> & {
8
- request: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
9
- get: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, RSchema>;
10
- log: (evt: Evt) => import("effect-app/Pure").PureLogT<any>;
11
- save: (items_0: T, ...items: T[]) => Effect.Effect<void, OptimisticConcurrencyException | InvalidStateError, RSchema | RPublish>;
12
- saveWithEvents: (events: Iterable<Evt>) => (...items: NonEmptyArray<T>) => Effect.Effect<void, OptimisticConcurrencyException | InvalidStateError, RSchema | RPublish>;
13
- queryAndSavePure: {
14
- <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => QueryEnd<Encoded, "one">, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E2, Exclude<R2, {
15
- env: PureEnv<Evt, T, T2>;
16
- }>>;
17
- <A, E2_1, R2_1, T2_1 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded, "many">, pure: Effect.Effect<A, E2_1, FixEnv<R2_1, Evt, readonly T[], readonly T2_1[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E2_1, RSchema | RPublish | Exclude<R2_1, {
18
- env: PureEnv<Evt, readonly T[], readonly T2_1[]>;
19
- }>>;
20
- <A, E2_2, R2_2, T2_2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded, "many">, pure: Effect.Effect<A, E2_2, FixEnv<R2_2, Evt, readonly T[], readonly T2_2[]>>, batch: "batched" | number): Effect.Effect<A[], InvalidStateError | OptimisticConcurrencyException | E2_2, RSchema | RPublish | Exclude<R2_2, {
21
- env: PureEnv<Evt, readonly T[], readonly T2_2[]>;
22
- }>>;
23
- };
24
- saveManyWithPure: {
25
- <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect.Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E, RSchema | RPublish | Exclude<R, {
26
- env: PureEnv<Evt, readonly S1[], readonly S2[]>;
27
- }>>;
28
- <R, A_1, E_1, S1_1 extends T, S2_1 extends T>(items: Iterable<S1_1>, pure: Effect.Effect<A_1, E_1, FixEnv<R, Evt, readonly S1_1[], readonly S2_1[]>>, batch: "batched" | number): Effect.Effect<A_1[], InvalidStateError | OptimisticConcurrencyException | E_1, RSchema | RPublish | Exclude<R, {
29
- env: PureEnv<Evt, readonly S1_1[], readonly S2_1[]>;
30
- }>>;
31
- };
32
- byIdAndSaveWithPure: <R, A_2, E_2, S2_2 extends T>(id: T[IdKey], pure: Effect.Effect<A_2, E_2, FixEnv<R, Evt, T, S2_2>>) => Effect.Effect<A_2, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E_2, RSchema | RPublish | Exclude<R, {
33
- env: PureEnv<Evt, T, S2_2>;
34
- }>>;
35
- saveWithPure: <R, A_3, E_3, S1_2 extends T, S2_3 extends T>(item: S1_2, pure: Effect.Effect<A_3, E_3, FixEnv<R, Evt, S1_2, S2_3>>) => Effect.Effect<A_3, OptimisticConcurrencyException | InvalidStateError | E_3, RSchema | RPublish | Exclude<R, {
36
- env: PureEnv<Evt, S1_2, S2_3>;
37
- }>>;
38
- };
39
- export interface ExtendedRepository<T, Encoded extends FieldValues, Evt, ItemType extends string, IdKey extends keyof T & keyof Encoded, RSchema, RPublish> extends ReturnType<typeof extendRepo<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish>> {
40
- }
41
- //# sourceMappingURL=ext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/ext.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unsafe-return */
3
- import { Array, Effect, Exit, Option, Request, RequestResolver } from "effect-app";
4
- import { NotFoundError } from "effect-app/client/errors";
5
- import { runTerm } from "effect-app/Pure";
6
- import { AnyPureDSL } from "../dsl.js";
7
- import * as Q from "../query.js";
8
- export const extendRepo = (repo) => {
9
- const get = (id) => repo.find(id).pipe(Effect.flatMap(Option.match({
10
- onNone: () => Effect.fail(new NotFoundError({ type: repo.itemType, id })),
11
- onSome: Effect.succeed
12
- })));
13
- function saveManyWithPure_(items, pure) {
14
- return saveAllWithEffectInt(runTerm(pure, [...items]));
15
- }
16
- function saveWithPure_(item, pure) {
17
- return saveAllWithEffectInt(runTerm(pure, item)
18
- .pipe(Effect
19
- .map(([item, events, a]) => [[item], events, a])));
20
- }
21
- function saveAllWithEffectInt(gen) {
22
- return Effect.flatMap(gen, ([items, events, a]) => repo.saveAndPublish(items, events).pipe(Effect.map(() => a)));
23
- }
24
- function saveManyWithPureBatched_(items, pure, batchSize = 100) {
25
- return Effect.forEach(Array.chunksOf(items, batchSize), (batch) => saveAllWithEffectInt(runTerm(pure, batch)));
26
- }
27
- const queryAndSavePure = (q, pure, batch) => repo.query(q).pipe(Effect.andThen((_) => Array.isArray(_)
28
- ? batch === undefined
29
- ? saveManyWithPure_(_, pure)
30
- : saveManyWithPureBatched_(_, pure, batch === "batched" ? 100 : batch)
31
- : saveWithPure_(_, pure)));
32
- const saveManyWithPure = (items, pure, batch) => batch
33
- ? Effect.forEach(Array.chunksOf(items, batch === "batched" ? 100 : batch), (batch) => saveAllWithEffectInt(runTerm(pure, batch)))
34
- : saveAllWithEffectInt(runTerm(pure, [...items]));
35
- const byIdAndSaveWithPure = (id, pure) => get(id).pipe(Effect.flatMap((item) => saveWithPure_(item, pure)));
36
- const _request = Request.tagged(`Get${repo.itemType}`);
37
- const requestResolver = RequestResolver
38
- .make((entries, _key) => repo.query(Q.where(repo.idKey, "in", entries.map((_) => _.request.id)))
39
- // TODO
40
- .pipe(Effect.andThen((items) => Effect.forEach(entries, (entry) => Request.complete(Array
41
- .findFirst(items, (_) => _[repo.idKey] === entry.request.id)
42
- .pipe(Option.match({
43
- onNone: () => Exit.fail(new NotFoundError({ type: repo.itemType, id: entry.request.id })),
44
- onSome: Exit.succeed
45
- })))(entry), { discard: true })), Effect
46
- .catchCause((cause) => Effect.forEach(entries, (entry) => Request.complete(Exit.failCause(cause))(entry), { discard: true }))))
47
- .pipe(RequestResolver.batchN(20));
48
- const exts = {
49
- request: (id) => Effect.request(_request({ id }), requestResolver),
50
- get,
51
- log: (evt) => AnyPureDSL.log(evt),
52
- save: (...items) => repo.saveAndPublish(items),
53
- saveWithEvents: (events) => (...items) => repo.saveAndPublish(items, events),
54
- queryAndSavePure,
55
- saveManyWithPure,
56
- byIdAndSaveWithPure,
57
- saveWithPure: (item, pure) => saveAllWithEffectInt(runTerm(pure, item)
58
- .pipe(Effect.map(([item, events, a]) => [[item], events, a])))
59
- };
60
- return {
61
- ...repo,
62
- ...exts
63
- };
64
- };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL01vZGVsL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx3REFBd0Q7QUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFzQixNQUFNLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN0RyxPQUFPLEVBQTBCLGFBQWEsRUFBdUMsTUFBTSwwQkFBMEIsQ0FBQTtBQUNySCxPQUFPLEVBQTZCLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUE7QUFHaEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBU3hCLElBQXFFLEVBQ3JFLEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQVksRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTztLQUN2QixDQUFDLENBQUMsQ0FDSixDQUFBO0lBQ0gsU0FBUyxpQkFBaUIsQ0FPeEIsS0FBbUIsRUFDbkIsSUFBdUU7UUFFdkUsT0FBTyxvQkFBb0IsQ0FDekIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FDMUIsQ0FBQTtJQUNILENBQUM7SUFF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