@effect-app/infra 4.0.0-beta.26 → 4.0.0-beta.260

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 (503) hide show
  1. package/CHANGELOG.md +1966 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +30 -11
  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 +487 -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 +111 -147
  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 +2 -2
  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 -9
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +10 -6
  24. package/dist/QueueMaker/SQLQueue.d.ts +8 -9
  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 +5 -3
  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 +10 -6
  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 +9 -5
  34. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  35. package/dist/QueueMaker/sbqueue.js +60 -58
  36. package/dist/RequestFiberSet.d.ts +10 -7
  37. package/dist/RequestFiberSet.d.ts.map +1 -1
  38. package/dist/RequestFiberSet.js +13 -8
  39. package/dist/SQL/Model.d.ts +468 -0
  40. package/dist/SQL/Model.d.ts.map +1 -0
  41. package/dist/SQL/Model.js +469 -0
  42. package/dist/SQL.d.ts +2 -0
  43. package/dist/SQL.d.ts.map +1 -0
  44. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  45. package/dist/ServiceBus.d.ts +61 -0
  46. package/dist/ServiceBus.d.ts.map +1 -0
  47. package/dist/ServiceBus.js +108 -0
  48. package/dist/Store/Cosmos/query.d.ts +15 -4
  49. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  50. package/dist/Store/Cosmos/query.js +179 -41
  51. package/dist/Store/Cosmos.d.ts +3 -3
  52. package/dist/Store/Cosmos.d.ts.map +1 -1
  53. package/dist/Store/Cosmos.js +344 -246
  54. package/dist/Store/Disk.d.ts +5 -5
  55. package/dist/Store/Disk.d.ts.map +1 -1
  56. package/dist/Store/Disk.js +78 -38
  57. package/dist/Store/Memory.d.ts +7 -10
  58. package/dist/Store/Memory.d.ts.map +1 -1
  59. package/dist/Store/Memory.js +326 -66
  60. package/dist/Store/SQL/Pg.d.ts +4 -0
  61. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  62. package/dist/Store/SQL/Pg.js +232 -0
  63. package/dist/Store/SQL/query.d.ts +49 -0
  64. package/dist/Store/SQL/query.d.ts.map +1 -0
  65. package/dist/Store/SQL/query.js +527 -0
  66. package/dist/Store/SQL.d.ts +21 -0
  67. package/dist/Store/SQL.d.ts.map +1 -0
  68. package/dist/Store/SQL.js +449 -0
  69. package/dist/Store/codeFilter.d.ts +5 -5
  70. package/dist/Store/codeFilter.d.ts.map +1 -1
  71. package/dist/Store/codeFilter.js +6 -3
  72. package/dist/Store/index.d.ts +7 -5
  73. package/dist/Store/index.d.ts.map +1 -1
  74. package/dist/Store/index.js +18 -5
  75. package/dist/Store/utils.d.ts +4 -3
  76. package/dist/Store/utils.d.ts.map +1 -1
  77. package/dist/Store/utils.js +5 -5
  78. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  79. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  80. package/dist/WorkflowEngineCosmos.js +521 -0
  81. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  82. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  83. package/dist/WorkflowEngineSqlite.js +550 -0
  84. package/dist/arbs.d.ts +2 -2
  85. package/dist/arbs.d.ts.map +1 -1
  86. package/dist/arbs.js +5 -3
  87. package/dist/codec.d.ts +5 -0
  88. package/dist/codec.d.ts.map +1 -0
  89. package/dist/codec.js +5 -0
  90. package/dist/cosmos-client.d.ts +16 -0
  91. package/dist/cosmos-client.d.ts.map +1 -0
  92. package/dist/cosmos-client.js +11 -0
  93. package/dist/errorReporter.d.ts +7 -5
  94. package/dist/errorReporter.d.ts.map +1 -1
  95. package/dist/errorReporter.js +23 -27
  96. package/dist/errors.d.ts +1 -1
  97. package/dist/fileUtil.d.ts +2 -2
  98. package/dist/fileUtil.d.ts.map +1 -1
  99. package/dist/fileUtil.js +2 -2
  100. package/dist/index.d.ts +3 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +3 -2
  103. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  104. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  105. package/dist/internal/RequestContextMiddleware.js +45 -0
  106. package/dist/internal/auth.d.ts +53 -0
  107. package/dist/internal/auth.d.ts.map +1 -0
  108. package/dist/internal/auth.js +180 -0
  109. package/dist/internal/events.d.ts +11 -0
  110. package/dist/internal/events.d.ts.map +1 -0
  111. package/dist/internal/events.js +49 -0
  112. package/dist/internal/health.d.ts +3 -0
  113. package/dist/internal/health.d.ts.map +1 -0
  114. package/dist/internal/health.js +5 -0
  115. package/dist/layerUtils.d.ts +32 -0
  116. package/dist/layerUtils.d.ts.map +1 -0
  117. package/dist/layerUtils.js +17 -0
  118. package/dist/logger/jsonLogger.d.ts +2 -2
  119. package/dist/logger/jsonLogger.d.ts.map +1 -1
  120. package/dist/logger/jsonLogger.js +5 -3
  121. package/dist/logger/logFmtLogger.d.ts +2 -2
  122. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  123. package/dist/logger/logFmtLogger.js +3 -3
  124. package/dist/logger/shared.d.ts +3 -3
  125. package/dist/logger/shared.d.ts.map +1 -1
  126. package/dist/logger/shared.js +5 -5
  127. package/dist/logger.d.ts +1 -1
  128. package/dist/logger.d.ts.map +1 -1
  129. package/dist/memQueue.d.ts +15 -0
  130. package/dist/memQueue.d.ts.map +1 -0
  131. package/dist/memQueue.js +21 -0
  132. package/dist/middlewares.d.ts +10 -0
  133. package/dist/middlewares.d.ts.map +1 -0
  134. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  135. package/dist/mongo-client.d.ts +11 -0
  136. package/dist/mongo-client.d.ts.map +1 -0
  137. package/dist/mongo-client.js +15 -0
  138. package/dist/otel.d.ts +75 -0
  139. package/dist/otel.d.ts.map +1 -0
  140. package/dist/otel.js +65 -0
  141. package/dist/rateLimit.d.ts +12 -4
  142. package/dist/rateLimit.d.ts.map +1 -1
  143. package/dist/rateLimit.js +7 -12
  144. package/dist/redis-client.d.ts +42 -0
  145. package/dist/redis-client.d.ts.map +1 -0
  146. package/dist/redis-client.js +98 -0
  147. package/dist/reportError.d.ts +4 -0
  148. package/dist/reportError.d.ts.map +1 -0
  149. package/dist/reportError.js +28 -0
  150. package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
  151. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  152. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  153. package/dist/routing/middleware/middleware.d.ts +48 -0
  154. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  155. package/dist/routing/middleware/middleware.js +128 -0
  156. package/dist/routing/middleware.d.ts +3 -0
  157. package/dist/routing/middleware.d.ts.map +1 -0
  158. package/dist/{api/routing → routing}/middleware.js +1 -2
  159. package/dist/routing/schema/jwt.d.ts +4 -0
  160. package/dist/routing/schema/jwt.d.ts.map +1 -0
  161. package/dist/routing/schema/jwt.js +13 -0
  162. package/dist/routing/tsort.d.ts +8 -0
  163. package/dist/routing/tsort.d.ts.map +1 -0
  164. package/dist/routing/tsort.js +51 -0
  165. package/dist/routing/utils.d.ts +19 -0
  166. package/dist/routing/utils.d.ts.map +1 -0
  167. package/dist/routing/utils.js +45 -0
  168. package/dist/routing.d.ts +184 -0
  169. package/dist/routing.d.ts.map +1 -0
  170. package/dist/routing.js +236 -0
  171. package/dist/test.d.ts +3 -3
  172. package/dist/test.d.ts.map +1 -1
  173. package/dist/test.js +2 -2
  174. package/dist/util.d.ts +3 -0
  175. package/dist/util.d.ts.map +1 -0
  176. package/dist/util.js +14 -0
  177. package/dist/vitest.d.ts +1 -1
  178. package/docs/cluster-storage.md +26 -0
  179. package/docs/workflow-engine.md +262 -0
  180. package/examples/query.ts +47 -39
  181. package/package.json +31 -345
  182. package/run.sh +1 -0
  183. package/src/CUPS.ts +52 -13
  184. package/src/ClusterCosmos.ts +954 -0
  185. package/src/ClusterServiceBus.ts +242 -0
  186. package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
  187. package/src/Emailer/Sendgrid.ts +82 -59
  188. package/src/Emailer/fake.ts +3 -3
  189. package/src/MainFiberSet.ts +12 -10
  190. package/src/QueueMaker/SQLQueue.ts +153 -156
  191. package/src/QueueMaker/errors.ts +3 -1
  192. package/src/QueueMaker/memQueue.ts +113 -107
  193. package/src/QueueMaker/sbqueue.ts +78 -90
  194. package/src/RequestFiberSet.ts +13 -8
  195. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  196. package/src/ServiceBus.ts +219 -0
  197. package/src/Store/Cosmos/query.ts +216 -52
  198. package/src/Store/Cosmos.ts +493 -353
  199. package/src/Store/Disk.ts +109 -69
  200. package/src/Store/Memory.ts +365 -96
  201. package/src/Store/SQL/Pg.ts +363 -0
  202. package/src/Store/SQL/query.ts +603 -0
  203. package/src/Store/SQL.ts +735 -0
  204. package/src/Store/codeFilter.ts +8 -5
  205. package/src/Store/index.ts +21 -6
  206. package/src/Store/utils.ts +26 -24
  207. package/src/WorkflowEngineCosmos.ts +719 -0
  208. package/src/WorkflowEngineSqlite.ts +813 -0
  209. package/src/arbs.ts +5 -3
  210. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  211. package/src/errorReporter.ts +66 -76
  212. package/src/fileUtil.ts +1 -1
  213. package/src/index.ts +2 -1
  214. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  215. package/src/internal/auth.ts +272 -0
  216. package/src/{api/internal → internal}/events.ts +22 -13
  217. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  218. package/src/logger/jsonLogger.ts +4 -2
  219. package/src/logger/logFmtLogger.ts +2 -2
  220. package/src/logger/shared.ts +5 -4
  221. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  222. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  223. package/src/otel.ts +152 -0
  224. package/src/rateLimit.ts +34 -23
  225. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  226. package/src/{api/reportError.ts → reportError.ts} +3 -2
  227. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  228. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  229. package/src/routing/middleware.ts +4 -0
  230. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  231. package/src/{api/routing → routing}/utils.ts +2 -1
  232. package/src/routing.ts +768 -0
  233. package/src/test.ts +2 -2
  234. package/test/auth.test.ts +101 -0
  235. package/test/cluster-cosmos.test.ts +503 -0
  236. package/test/cluster-servicebus.test.ts +180 -0
  237. package/test/contextProvider.test.ts +15 -12
  238. package/test/controller.test.ts +28 -32
  239. package/test/cosmos-query.test.ts +159 -0
  240. package/test/dist/_check-agg-infer.test-d.d.ts +2 -0
  241. package/test/dist/_check-agg-infer.test-d.d.ts.map +1 -0
  242. package/test/dist/_check-agg-infer.test-d.js +19 -0
  243. package/test/dist/_check-proj-infer.test-d.d.ts +2 -0
  244. package/test/dist/_check-proj-infer.test-d.d.ts.map +1 -0
  245. package/test/dist/_check-proj-infer.test-d.js +16 -0
  246. package/test/dist/_check-tighten.test-d.d.ts +2 -0
  247. package/test/dist/_check-tighten.test-d.d.ts.map +1 -0
  248. package/test/dist/_check-tighten.test-d.js +21 -0
  249. package/test/dist/auth.test.d.ts.map +1 -0
  250. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  251. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  252. package/test/dist/contextProvider.test.d.ts.map +1 -1
  253. package/test/dist/controller.test.d.ts.map +1 -1
  254. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  255. package/test/dist/date-query.test.d.ts.map +1 -0
  256. package/test/dist/fixtures.d.ts +30 -12
  257. package/test/dist/fixtures.d.ts.map +1 -1
  258. package/test/dist/fixtures.js +17 -10
  259. package/test/dist/query.test.d.ts.map +1 -1
  260. package/test/dist/rawQuery.test.d.ts.map +1 -1
  261. package/test/dist/repository-ext.test.d.ts.map +1 -0
  262. package/test/dist/requires.test.d.ts.map +1 -1
  263. package/test/dist/router-generator.test.d.ts.map +1 -0
  264. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  265. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  266. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  267. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  268. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  269. package/test/dist/sql-store.test.d.ts.map +1 -0
  270. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  271. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  272. package/test/fixtures.ts +16 -9
  273. package/test/layerUtils.test.ts +2 -2
  274. package/test/query.test.ts +905 -40
  275. package/test/rawQuery.test.ts +340 -22
  276. package/test/repository-ext.test.ts +62 -0
  277. package/test/requires.test.ts +10 -5
  278. package/test/router-generator.test.ts +187 -0
  279. package/test/routing-interruptibility.test.ts +66 -0
  280. package/test/rpc-context-map-streaming.test.ts +262 -0
  281. package/test/rpc-e2e-invalidation.test.ts +256 -0
  282. package/test/rpc-multi-middleware.test.ts +85 -10
  283. package/test/rpc-stream-fullstack.test.ts +304 -0
  284. package/test/sql-store.test.ts +1711 -0
  285. package/test/validateSample.test.ts +26 -14
  286. package/test/workflow-engine-cosmos.test.ts +354 -0
  287. package/test/workflow-engine-sqlite.test.ts +299 -0
  288. package/tsconfig.examples.json +1 -1
  289. package/tsconfig.json +2 -1
  290. package/tsconfig.json.bak +2 -2
  291. package/tsconfig.src.json +35 -35
  292. package/tsconfig.test.json +2 -2
  293. package/dist/Emailer/service.d.ts +0 -55
  294. package/dist/Emailer/service.d.ts.map +0 -1
  295. package/dist/Emailer/service.js +0 -6
  296. package/dist/Emailer.d.ts +0 -2
  297. package/dist/Emailer.d.ts.map +0 -1
  298. package/dist/Emailer.js +0 -2
  299. package/dist/Model/Repository/ext.d.ts +0 -41
  300. package/dist/Model/Repository/ext.d.ts.map +0 -1
  301. package/dist/Model/Repository/ext.js +0 -65
  302. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  303. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  304. package/dist/Model/Repository/internal/internal.js +0 -316
  305. package/dist/Model/Repository/legacy.d.ts +0 -19
  306. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  307. package/dist/Model/Repository/legacy.js +0 -2
  308. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  309. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  310. package/dist/Model/Repository/makeRepo.js +0 -24
  311. package/dist/Model/Repository/service.d.ts +0 -89
  312. package/dist/Model/Repository/service.d.ts.map +0 -1
  313. package/dist/Model/Repository/service.js +0 -2
  314. package/dist/Model/Repository/validation.d.ts +0 -42
  315. package/dist/Model/Repository/validation.d.ts.map +0 -1
  316. package/dist/Model/Repository/validation.js +0 -32
  317. package/dist/Model/Repository.d.ts +0 -6
  318. package/dist/Model/Repository.d.ts.map +0 -1
  319. package/dist/Model/Repository.js +0 -6
  320. package/dist/Model/dsl.d.ts +0 -32
  321. package/dist/Model/dsl.d.ts.map +0 -1
  322. package/dist/Model/dsl.js +0 -44
  323. package/dist/Model/filter/filterApi.d.ts +0 -30
  324. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  325. package/dist/Model/filter/filterApi.js +0 -2
  326. package/dist/Model/filter/types/errors.d.ts +0 -29
  327. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  328. package/dist/Model/filter/types/errors.js +0 -2
  329. package/dist/Model/filter/types/fields.d.ts +0 -15
  330. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  331. package/dist/Model/filter/types/fields.js +0 -2
  332. package/dist/Model/filter/types/path/common.d.ts +0 -316
  333. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  334. package/dist/Model/filter/types/path/common.js +0 -2
  335. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  336. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  337. package/dist/Model/filter/types/path/eager.js +0 -31
  338. package/dist/Model/filter/types/path/index.d.ts +0 -4
  339. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  340. package/dist/Model/filter/types/path/index.js +0 -3
  341. package/dist/Model/filter/types/utils.d.ts +0 -79
  342. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  343. package/dist/Model/filter/types/utils.js +0 -2
  344. package/dist/Model/filter/types/validator.d.ts +0 -30
  345. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  346. package/dist/Model/filter/types/validator.js +0 -2
  347. package/dist/Model/filter/types.d.ts +0 -5
  348. package/dist/Model/filter/types.d.ts.map +0 -1
  349. package/dist/Model/filter/types.js +0 -7
  350. package/dist/Model/query/dsl.d.ts +0 -248
  351. package/dist/Model/query/dsl.d.ts.map +0 -1
  352. package/dist/Model/query/dsl.js +0 -104
  353. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  354. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  355. package/dist/Model/query/new-kid-interpreter.js +0 -165
  356. package/dist/Model/query.d.ts +0 -15
  357. package/dist/Model/query.d.ts.map +0 -1
  358. package/dist/Model/query.js +0 -3
  359. package/dist/Model.d.ts +0 -4
  360. package/dist/Model.d.ts.map +0 -1
  361. package/dist/Model.js +0 -4
  362. package/dist/Operations.d.ts +0 -55
  363. package/dist/Operations.d.ts.map +0 -1
  364. package/dist/Operations.js +0 -102
  365. package/dist/OperationsRepo.d.ts +0 -41
  366. package/dist/OperationsRepo.d.ts.map +0 -1
  367. package/dist/OperationsRepo.js +0 -14
  368. package/dist/QueueMaker/service.d.ts +0 -11
  369. package/dist/QueueMaker/service.d.ts.map +0 -1
  370. package/dist/QueueMaker/service.js +0 -4
  371. package/dist/RequestContext.d.ts +0 -63
  372. package/dist/RequestContext.d.ts.map +0 -1
  373. package/dist/RequestContext.js +0 -49
  374. package/dist/Store/ContextMapContainer.d.ts +0 -14
  375. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  376. package/dist/Store/ContextMapContainer.js +0 -16
  377. package/dist/Store/service.d.ts +0 -108
  378. package/dist/Store/service.d.ts.map +0 -1
  379. package/dist/Store/service.js +0 -71
  380. package/dist/Store.d.ts +0 -2
  381. package/dist/Store.d.ts.map +0 -1
  382. package/dist/Store.js +0 -2
  383. package/dist/adapters/SQL/Model.d.ts +0 -479
  384. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  385. package/dist/adapters/SQL/Model.js +0 -478
  386. package/dist/adapters/SQL.d.ts +0 -2
  387. package/dist/adapters/SQL.d.ts.map +0 -1
  388. package/dist/adapters/ServiceBus.d.ts +0 -58
  389. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  390. package/dist/adapters/ServiceBus.js +0 -99
  391. package/dist/adapters/cosmos-client.d.ts +0 -14
  392. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  393. package/dist/adapters/cosmos-client.js +0 -9
  394. package/dist/adapters/index.d.ts +0 -2
  395. package/dist/adapters/index.d.ts.map +0 -1
  396. package/dist/adapters/index.js +0 -2
  397. package/dist/adapters/logger.d.ts +0 -9
  398. package/dist/adapters/logger.d.ts.map +0 -1
  399. package/dist/adapters/logger.js +0 -3
  400. package/dist/adapters/memQueue.d.ts +0 -13
  401. package/dist/adapters/memQueue.d.ts.map +0 -1
  402. package/dist/adapters/memQueue.js +0 -20
  403. package/dist/adapters/mongo-client.d.ts +0 -10
  404. package/dist/adapters/mongo-client.d.ts.map +0 -1
  405. package/dist/adapters/mongo-client.js +0 -13
  406. package/dist/adapters/redis-client.d.ts +0 -39
  407. package/dist/adapters/redis-client.d.ts.map +0 -1
  408. package/dist/adapters/redis-client.js +0 -94
  409. package/dist/api/ContextProvider.d.ts +0 -31
  410. package/dist/api/ContextProvider.d.ts.map +0 -1
  411. package/dist/api/ContextProvider.js +0 -38
  412. package/dist/api/codec.d.ts +0 -5
  413. package/dist/api/codec.d.ts.map +0 -1
  414. package/dist/api/codec.js +0 -5
  415. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  416. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  417. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  418. package/dist/api/internal/auth.d.ts +0 -15
  419. package/dist/api/internal/auth.d.ts.map +0 -1
  420. package/dist/api/internal/auth.js +0 -47
  421. package/dist/api/internal/events.d.ts +0 -9
  422. package/dist/api/internal/events.d.ts.map +0 -1
  423. package/dist/api/internal/events.js +0 -42
  424. package/dist/api/internal/health.d.ts +0 -3
  425. package/dist/api/internal/health.d.ts.map +0 -1
  426. package/dist/api/internal/health.js +0 -5
  427. package/dist/api/layerUtils.d.ts +0 -24
  428. package/dist/api/layerUtils.d.ts.map +0 -1
  429. package/dist/api/layerUtils.js +0 -16
  430. package/dist/api/middlewares.d.ts +0 -10
  431. package/dist/api/middlewares.d.ts.map +0 -1
  432. package/dist/api/reportError.d.ts +0 -4
  433. package/dist/api/reportError.d.ts.map +0 -1
  434. package/dist/api/reportError.js +0 -27
  435. package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
  436. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  437. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  438. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  439. package/dist/api/routing/middleware/middleware.js +0 -92
  440. package/dist/api/routing/middleware.d.ts +0 -4
  441. package/dist/api/routing/middleware.d.ts.map +0 -1
  442. package/dist/api/routing/schema/jwt.d.ts +0 -4
  443. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  444. package/dist/api/routing/schema/jwt.js +0 -12
  445. package/dist/api/routing/tsort.d.ts +0 -8
  446. package/dist/api/routing/tsort.d.ts.map +0 -1
  447. package/dist/api/routing/tsort.js +0 -51
  448. package/dist/api/routing/utils.d.ts +0 -19
  449. package/dist/api/routing/utils.d.ts.map +0 -1
  450. package/dist/api/routing/utils.js +0 -44
  451. package/dist/api/routing.d.ts +0 -138
  452. package/dist/api/routing.d.ts.map +0 -1
  453. package/dist/api/routing.js +0 -166
  454. package/dist/api/setupRequest.d.ts +0 -12
  455. package/dist/api/setupRequest.d.ts.map +0 -1
  456. package/dist/api/setupRequest.js +0 -44
  457. package/dist/api/util.d.ts +0 -3
  458. package/dist/api/util.d.ts.map +0 -1
  459. package/dist/api/util.js +0 -14
  460. package/eslint.config.mjs +0 -24
  461. package/src/Emailer/service.ts +0 -52
  462. package/src/Emailer.ts +0 -1
  463. package/src/Model/Repository/ext.ts +0 -283
  464. package/src/Model/Repository/internal/internal.ts +0 -577
  465. package/src/Model/Repository/legacy.ts +0 -27
  466. package/src/Model/Repository/makeRepo.ts +0 -139
  467. package/src/Model/Repository/service.ts +0 -627
  468. package/src/Model/Repository/validation.ts +0 -31
  469. package/src/Model/Repository.ts +0 -5
  470. package/src/Model/dsl.ts +0 -128
  471. package/src/Model/filter/filterApi.ts +0 -60
  472. package/src/Model/filter/types/errors.ts +0 -47
  473. package/src/Model/filter/types/fields.ts +0 -50
  474. package/src/Model/filter/types/path/common.ts +0 -404
  475. package/src/Model/filter/types/path/eager.ts +0 -298
  476. package/src/Model/filter/types/path/index.ts +0 -4
  477. package/src/Model/filter/types/utils.ts +0 -128
  478. package/src/Model/filter/types/validator.ts +0 -46
  479. package/src/Model/filter/types.ts +0 -6
  480. package/src/Model/query/dsl.ts +0 -2110
  481. package/src/Model/query/new-kid-interpreter.ts +0 -210
  482. package/src/Model/query.ts +0 -13
  483. package/src/Model.ts +0 -3
  484. package/src/Operations.ts +0 -235
  485. package/src/OperationsRepo.ts +0 -16
  486. package/src/QueueMaker/service.ts +0 -17
  487. package/src/RequestContext.ts +0 -63
  488. package/src/Store/ContextMapContainer.ts +0 -20
  489. package/src/Store/service.ts +0 -184
  490. package/src/Store.ts +0 -1
  491. package/src/adapters/ServiceBus.ts +0 -209
  492. package/src/adapters/index.ts +0 -0
  493. package/src/adapters/logger.ts +0 -3
  494. package/src/api/internal/auth.ts +0 -68
  495. package/src/api/routing/middleware.ts +0 -6
  496. package/src/api/routing.ts +0 -598
  497. package/src/api/setupRequest.ts +0 -84
  498. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  499. /package/src/{api/codec.ts → codec.ts} +0 -0
  500. /package/src/{api/internal → internal}/health.ts +0 -0
  501. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  502. /package/src/{api/routing → routing}/tsort.ts +0 -0
  503. /package/src/{api/util.ts → util.ts} +0 -0
@@ -1,210 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
3
- import { Array, identity, Match, Option, pipe, S } from "effect-app"
4
- import { toNonEmptyArray } from "effect-app/Array"
5
- import { dropUndefinedT } from "effect-app/utils"
6
- import type { FilterResult } from "../filter/filterApi.js"
7
- import type { FieldValues } from "../filter/types.js"
8
- import type { FieldPath } from "../filter/types/path/eager.js"
9
- import { make, type Q, type QAll } from "../query/dsl.js"
10
-
11
- type Result<TFieldValues extends FieldValues, A = TFieldValues, R = never> = {
12
- filter: FilterResult[]
13
- schema: S.Codec<A, TFieldValues, R> | undefined
14
- limit: number | undefined
15
- skip: number | undefined
16
- order: { key: FieldPath<TFieldValues>; direction: "ASC" | "DESC" }[]
17
- ttype: "one" | "many" | "count" | undefined
18
- mode: "collect" | "project" | "transform" | undefined
19
- }
20
-
21
- const interpret = <
22
- TFieldValues extends FieldValues,
23
- TFieldValuesRefined extends TFieldValues = TFieldValues,
24
- A = TFieldValues,
25
- R = never
26
- >(_: QAll<TFieldValues, TFieldValuesRefined, A, R>) => {
27
- const a = _ as Q<TFieldValues>
28
-
29
- const data: Result<TFieldValues, any, any> = {
30
- filter: [],
31
- schema: undefined,
32
- limit: undefined,
33
- skip: undefined,
34
- order: [],
35
- ttype: undefined,
36
- mode: undefined
37
- }
38
-
39
- const upd = (
40
- v: Result<TFieldValues, any, any>
41
- ) => {
42
- data.filter.push(...v.filter)
43
- data.order.push(...v.order)
44
- if (v.limit !== undefined) data.limit = v.limit
45
- if (v.skip !== undefined) data.skip = v.skip
46
- if (v.ttype !== undefined) data.ttype = v.ttype
47
- if (v.schema !== undefined) data.schema = v.schema
48
- if (v.mode !== undefined) data.mode = v.mode
49
- }
50
-
51
- const applyPath = (path: string) => (_: FilterResult): FilterResult =>
52
- _.t === "where" || _.t === "and" || _.t === "or"
53
- ? { ..._, path: `${path}.-1.${_.path}` }
54
- : { ..._, result: _.result.map(applyPath(path)) }
55
-
56
- pipe(
57
- a,
58
- Match.valueTags({
59
- value: () => {
60
- // data.filter.push(value)
61
- },
62
- where: ({ current, operation, relation, subPath }) => {
63
- upd(interpret(current))
64
- if (typeof operation === "function") {
65
- data.filter.push(
66
- {
67
- t: "where-scope",
68
- result: interpret(operation(make())).filter.map(subPath ? applyPath(subPath) : identity),
69
- relation
70
- }
71
- )
72
- } else {
73
- data.filter.push(
74
- {
75
- t: "where",
76
- path: operation[0],
77
- op: operation.length === 2 ? "eq" : operation[1],
78
- value: operation.length === 2 ? operation[1] : operation[2]
79
- }
80
- )
81
- }
82
- },
83
- and: ({ current, operation, relation }) => {
84
- upd(interpret(current))
85
- if (typeof operation === "function") {
86
- data.filter.push(
87
- { t: "and-scope", result: interpret(operation(make())).filter, relation }
88
- )
89
- } else {
90
- data.filter.push(
91
- {
92
- t: "and",
93
- path: operation[0],
94
- op: operation.length === 2 ? "eq" : operation[1],
95
- value: operation.length === 2 ? operation[1] : operation[2]
96
- }
97
- )
98
- }
99
- },
100
- or: ({ current, operation, relation }) => {
101
- upd(interpret(current))
102
- if (typeof operation === "function") {
103
- data.filter.push(
104
- { t: "or-scope", result: interpret(operation(make())).filter, relation }
105
- )
106
- } else {
107
- data.filter.push(
108
- {
109
- t: "or",
110
- path: operation[0],
111
- op: operation.length === 2 ? "eq" : operation[1],
112
- value: operation.length === 2 ? operation[1] : operation[2]
113
- }
114
- )
115
- }
116
- },
117
- one: ({ current }) => {
118
- upd(interpret(current))
119
- data.limit = 1
120
- data.ttype = "one"
121
- },
122
- count: ({ current }) => {
123
- upd(interpret(current))
124
- data.ttype = "count"
125
- data.schema = S.Struct({ id: S.String }) as any
126
- },
127
- order: ({ current, direction, field }) => {
128
- upd(interpret(current))
129
- data.order.push({ key: field, direction })
130
- },
131
- page: (v) => {
132
- upd(interpret(v.current))
133
- data.limit = v.take
134
- data.skip = v.skip
135
- },
136
- project: (v) => {
137
- upd(interpret(v.current))
138
- data.schema = v.schema
139
- data.mode = v.mode
140
- }
141
- })
142
- )
143
-
144
- return data
145
- }
146
-
147
- const walkTransformation = (t: S.AST.AST): S.AST.AST => {
148
- if (S.AST.isDeclaration(t) && t.typeParameters.length > 0) {
149
- return walkTransformation(t.typeParameters[0]!)
150
- }
151
- return t
152
- }
153
-
154
- export const toFilter = <
155
- TFieldValues extends FieldValues,
156
- A,
157
- R,
158
- TFieldValuesRefined extends TFieldValues = TFieldValues
159
- >(
160
- q: QAll<TFieldValues, TFieldValuesRefined, A, R>
161
- ) => {
162
- // TODO: Native interpreter for each db adapter, instead of the intermediate "new-kid" format
163
- const a = interpret(q)
164
- const schema = a.schema
165
- let select: (keyof TFieldValues | { key: string; subKeys: string[] })[] = []
166
- // TODO: support more complex (nested) schemas?
167
- if (schema) {
168
- const t = walkTransformation(schema.ast)
169
- if (S.AST.isObjects(t)) {
170
- select = t.propertySignatures.map((_) => _.name as string)
171
- for (const prop of t.propertySignatures) {
172
- if (S.AST.isArrays(prop.type)) {
173
- // make sure we only select when there are actually type literals in the tuple...
174
- // otherwise we might be dealing with strings etc.
175
- // TODO; be more strict, can't support arrays with unions that have non TypeLiteral members etc..
176
- const arraySelect = {
177
- key: prop.name as string,
178
- subKeys: Array.flatMap(
179
- prop.type.rest,
180
- (x) => {
181
- const t = walkTransformation(x)
182
- return S.AST.isObjects(t) ? t.propertySignatures.map((y) => y.name as string) : []
183
- }
184
- )
185
- }
186
- if (arraySelect.subKeys.length > 0) {
187
- select.push(arraySelect)
188
- // make sure we don't double select?
189
- if (select.includes(prop.name as string)) {
190
- select.splice(select.indexOf(prop.name as string), 1)
191
- }
192
- }
193
- }
194
- }
195
- }
196
- }
197
- return dropUndefinedT({
198
- t: null as unknown as TFieldValues,
199
- limit: a.limit,
200
- skip: a.skip,
201
- select: Option.getOrUndefined(toNonEmptyArray(select)),
202
- schema,
203
- order: Option.getOrUndefined(toNonEmptyArray(a.order)),
204
- ttype: a.ttype,
205
- mode: a.mode ?? "transform",
206
- filter: a.filter.length
207
- ? a.filter
208
- : undefined
209
- })
210
- }
@@ -1,13 +0,0 @@
1
- export * from "./query/dsl.js"
2
- export * from "./query/new-kid-interpreter.js"
3
-
4
- export interface RawQuery<Encoded, Out> {
5
- cosmos: (vals: { name: string }) => {
6
- query: string
7
- parameters: {
8
- name: string
9
- value: any
10
- }[]
11
- }
12
- memory: (t: readonly Encoded[]) => readonly Out[]
13
- }
package/src/Model.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from "./Model/dsl.js"
2
- export * as Q from "./Model/query.js"
3
- export { makeRepo } from "./Model/Repository.js"
package/src/Operations.ts DELETED
@@ -1,235 +0,0 @@
1
- import { reportError } from "@effect-app/infra/errorReporter"
2
- import { subHours } from "date-fns"
3
- import { Cause, copy, Duration, Effect, Exit, type Fiber, Layer, Option, S, Schedule, ServiceMap } from "effect-app"
4
- import { annotateLogscoped } from "effect-app/Effect"
5
- import { dual, pipe } from "effect-app/Function"
6
- import { Operation, OperationFailure, OperationId, type OperationProgress, OperationSuccess } from "effect-app/Operations"
7
- import { NonEmptyString2k } from "effect-app/Schema"
8
- import * as Scope from "effect/Scope"
9
- import { setupRequestContextFromCurrent } from "./api/setupRequest.js"
10
- import { MainFiberSet } from "./MainFiberSet.js"
11
- import { where } from "./Model/query.js"
12
- import { OperationsRepo } from "./OperationsRepo.js"
13
- import { batch } from "./rateLimit.js"
14
- import { RequestFiberSet } from "./RequestFiberSet.js"
15
-
16
- const reportAppError = reportError("Operations.Cleanup")
17
-
18
- const make = Effect.gen(function*() {
19
- const repo = yield* OperationsRepo
20
- const reqFiberSet = yield* RequestFiberSet
21
- const makeOp = Effect.sync(() => OperationId.make())
22
-
23
- const register = (title: NonEmptyString2k) =>
24
- Effect.tap(
25
- makeOp,
26
- (id) =>
27
- Effect.andThen(
28
- annotateLogscoped("operationId", id),
29
- Effect.acquireRelease(addOp(id, title), (_, exit) => finishOp(id, exit))
30
- )
31
- )
32
-
33
- const cleanup = Effect.sync(() => subHours(new Date(), 1)).pipe(
34
- Effect.andThen((before) => repo.query(where("updatedAt", "lt", before.toISOString()))),
35
- Effect.andThen((ops) => pipe(ops, batch(100, Effect.succeed, (items) => repo.removeAndPublish(items)))),
36
- setupRequestContextFromCurrent("Operations.cleanup")
37
- )
38
-
39
- function addOp(id: OperationId, title: NonEmptyString2k) {
40
- return repo.save(new Operation({ id, title })).pipe(Effect.orDie)
41
- }
42
- function findOp(id: OperationId) {
43
- return repo.find(id)
44
- }
45
- function finishOp(id: OperationId, exit: Exit.Exit<unknown, unknown>) {
46
- return Effect
47
- .flatMap(repo.get(id).pipe(Effect.orDie), (_) =>
48
- repo
49
- .save(
50
- copy(_, {
51
- updatedAt: new Date(),
52
- result: Exit.isSuccess(exit)
53
- ? new OperationSuccess()
54
- : new OperationFailure({
55
- message: Cause.hasInterruptsOnly(exit.cause)
56
- ? NonEmptyString2k("Interrupted")
57
- : Cause.hasDies(exit.cause)
58
- ? NonEmptyString2k("Unknown error")
59
- : Cause
60
- .findErrorOption(exit.cause)
61
- .pipe(
62
- Option.flatMap((_) =>
63
- typeof _ === "object" && _ !== null && "message" in _ && S.is(NonEmptyString2k)(_.message)
64
- ? Option.some(_.message)
65
- : Option.none()
66
- ),
67
- Option.getOrNull
68
- )
69
- })
70
- })
71
- )
72
- .pipe(Effect.orDie))
73
- }
74
- function update(id: OperationId, progress: OperationProgress) {
75
- return Effect.flatMap(
76
- repo.get(id).pipe(Effect.orDie),
77
- (_) => repo.save(copy(_, { updatedAt: new Date(), progress })).pipe(Effect.orDie)
78
- )
79
- }
80
-
81
- function fork<R, R2, E, E2, A, A2>(
82
- self: (id: OperationId) => Effect.Effect<A, E, R>,
83
- fnc: (id: OperationId) => Effect.Effect<A2, E2, R2>,
84
- title: NonEmptyString2k
85
- ): Effect.Effect<
86
- RunningOperation<A, E>,
87
- never,
88
- Exclude<R, Scope.Scope> | Exclude<R2, Scope.Scope>
89
- > {
90
- return Effect
91
- .flatMap(
92
- Scope.make(),
93
- (scope) =>
94
- register(title)
95
- .pipe(
96
- Scope.provide(scope),
97
- Effect.flatMap((id) =>
98
- reqFiberSet
99
- .forkDaemonReportUnexpected(Scope.use(
100
- self(id).pipe(Effect.withSpan(title, {}, { captureStackTrace: false })),
101
- scope
102
- ))
103
- .pipe(Effect.map((fiber): RunningOperation<A, E> => ({ fiber, id })))
104
- ),
105
- Effect.tap(({ id }) =>
106
- Effect.interruptible(fnc(id)).pipe(
107
- Effect.forkScoped,
108
- Scope.provide(scope)
109
- )
110
- )
111
- )
112
- )
113
- }
114
-
115
- const fork2: {
116
- (title: NonEmptyString2k): <R, E, A>(
117
- self: (opId: OperationId) => Effect.Effect<A, E, R>
118
- ) => Effect.Effect<RunningOperation<A, E>, never, Exclude<R, Scope.Scope>>
119
- <R, E, A>(
120
- self: (opId: OperationId) => Effect.Effect<A, E, R>,
121
- title: NonEmptyString2k
122
- ): Effect.Effect<RunningOperation<A, E>, never, Exclude<R, Scope.Scope>>
123
- } = dual(
124
- 2,
125
- <R, E, A>(self: (opId: OperationId) => Effect.Effect<A, E, R>, title: NonEmptyString2k) =>
126
- Effect.flatMap(
127
- Scope.make(),
128
- (scope) =>
129
- register(title)
130
- .pipe(
131
- Scope.provide(scope),
132
- Effect
133
- .flatMap((id) =>
134
- reqFiberSet
135
- .forkDaemonReportUnexpected(Scope.use(
136
- self(id).pipe(Effect.withSpan(title, {}, { captureStackTrace: false })),
137
- scope
138
- ))
139
- .pipe(Effect.map((fiber): RunningOperation<A, E> => ({ fiber, id })))
140
- )
141
- )
142
- )
143
- )
144
-
145
- const forkOperation: {
146
- (title: NonEmptyString2k): <R, E, A>(
147
- self: Effect.Effect<A, E, R>
148
- ) => Effect.Effect<RunningOperation<A, E>, never, Exclude<R, Scope.Scope>>
149
- <R, E, A>(
150
- self: Effect.Effect<A, E, R>,
151
- title: NonEmptyString2k
152
- ): Effect.Effect<RunningOperation<A, E>, never, Exclude<R, Scope.Scope>>
153
- } = dual(
154
- 2,
155
- <R, E, A>(self: Effect.Effect<A, E, R>, title: NonEmptyString2k) =>
156
- Effect.flatMap(
157
- Scope.make(),
158
- (scope) =>
159
- register(title)
160
- .pipe(
161
- Scope.provide(scope),
162
- Effect
163
- .flatMap((id) =>
164
- reqFiberSet
165
- .forkDaemonReportUnexpected(Scope.use(
166
- self.pipe(Effect.withSpan(title, {}, { captureStackTrace: false })),
167
- scope
168
- ))
169
- .pipe(Effect.map((fiber): RunningOperation<A, E> => ({ fiber, id })))
170
- )
171
- )
172
- )
173
- )
174
-
175
- function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect.Effect<A, E, R>, title: NonEmptyString2k) {
176
- return (inp: Inp) => fnc(inp).pipe((_) => forkOperation(_, title))
177
- }
178
-
179
- return {
180
- cleanup,
181
- register,
182
- fork,
183
- fork2,
184
- forkOperation,
185
- forkOperationFunction,
186
- all: repo.all,
187
- find: findOp,
188
- update
189
- }
190
- })
191
-
192
- export class Operations extends ServiceMap.Opaque<Operations>()("effect-app/Operations", { make }) {
193
- private static readonly CleanupLive = this
194
- .use((_) =>
195
- _.cleanup.pipe(
196
- Effect.exit,
197
- Effect
198
- .flatMap((_) => {
199
- if (Exit.isSuccess(_)) {
200
- return Effect.void
201
- } else {
202
- return reportAppError(_.cause)
203
- }
204
- }),
205
- Effect.schedule(Schedule.fixed(Duration.minutes(20))),
206
- Effect.map((_) => _ as never),
207
- MainFiberSet.run
208
- )
209
- )
210
- .pipe(Layer.effectDiscard, Layer.provide(MainFiberSet.Live))
211
-
212
- static readonly Live = this.CleanupLive.pipe(
213
- Layer.provideMerge(this.toLayer(this.make)),
214
- Layer.provide(RequestFiberSet.Live)
215
- )
216
-
217
- static readonly forkOperation = (title: NonEmptyString2k) => <R, E, A>(self: Effect.Effect<A, E, R>) =>
218
- this.use((_) => _.forkOperation(self, title))
219
- static readonly forkOperationFunction =
220
- <R, E, A, Inp>(fnc: (inp: Inp) => Effect.Effect<A, E, R>, title: NonEmptyString2k) => (inp: Inp) =>
221
- this.use((_) => _.forkOperationFunction(fnc, title)(inp))
222
- static readonly fork = <R, R2, E, E2, A, A2>(
223
- self: (id: OperationId) => Effect.Effect<A, E, R>,
224
- fnc: (id: OperationId) => Effect.Effect<A2, E2, R2>,
225
- title: NonEmptyString2k
226
- ) => this.use((_) => _.fork(self, fnc, title))
227
-
228
- static readonly fork2 = (title: NonEmptyString2k) => <R, E, A>(self: (opId: OperationId) => Effect.Effect<A, E, R>) =>
229
- this.use((_) => _.fork2(self, title))
230
- }
231
-
232
- export interface RunningOperation<A, E> {
233
- id: OperationId
234
- fiber: Fiber.Fiber<A, E>
235
- }
@@ -1,16 +0,0 @@
1
- import { Effect, ServiceMap } from "effect-app"
2
- import { Operation } from "effect-app/Operations"
3
- import { makeRepo } from "./Model.js"
4
-
5
- export class OperationsRepo extends ServiceMap.Service<OperationsRepo>()(
6
- "OperationRepo",
7
- {
8
- make: Effect.gen(function*() {
9
- return yield* makeRepo("Operation", Operation, {
10
- config: {
11
- allowNamespace: () => true
12
- }
13
- })
14
- })
15
- }
16
- ) {}
@@ -1,17 +0,0 @@
1
- import type { Effect, NonEmptyReadonlyArray, Scope } from "effect-app"
2
- import { RequestContext } from "../RequestContext.js"
3
-
4
- export interface QueueBase<Evt, DrainEvt> {
5
- drain: <DrainE, DrainR>(
6
- makeHandleEvent: (ks: DrainEvt) => Effect.Effect<void, DrainE, DrainR>,
7
- sessionId?: string
8
- ) => Effect.Effect<never, never, Scope.Scope | DrainR>
9
- publish: (
10
- ...messages: NonEmptyReadonlyArray<Evt>
11
- ) => Effect.Effect<void>
12
- }
13
-
14
- export interface QueueMakerOps {}
15
- export const QueueMaker: QueueMakerOps = {}
16
-
17
- export const QueueMeta = RequestContext
@@ -1,63 +0,0 @@
1
- import { S, ServiceMap } from "effect-app"
2
- import { UserProfileId } from "effect-app/ids"
3
- import { NonEmptyString255 } from "effect-app/Schema"
4
-
5
- export const Locale = S.Literal("en", "de")
6
- export type Locale = typeof Locale.Type
7
-
8
- export class LocaleRef extends ServiceMap.Reference("Locale", { defaultValue: (): Locale => "en" }) {}
9
-
10
- export class RequestContext extends S.ExtendedClass<
11
- RequestContext,
12
- RequestContext.Encoded
13
- >("RequestContext")({
14
- span: S.Struct({
15
- traceId: S.String,
16
- spanId: S.String,
17
- sampled: S.Boolean
18
- }),
19
- name: NonEmptyString255,
20
- locale: Locale,
21
- sourceId: S.optional(NonEmptyString255), // TODO?
22
- namespace: NonEmptyString255,
23
- /** @deprecated */
24
- userProfile: S.optional(S.Struct({ sub: UserProfileId })) //
25
- }) {
26
- // static Tag = ServiceMap.Tag<RequestContext>()
27
-
28
- static toMonitoring(this: void, self: RequestContext) {
29
- return {
30
- operationName: self.name,
31
- locale: self.locale
32
- }
33
- }
34
- }
35
-
36
- export const spanAttributes = (ctx: Pick<RequestContext, "locale" | "namespace"> & Partial<RequestContext>) => ({
37
- "request.name": ctx.name,
38
- "request.locale": ctx.locale,
39
- "request.namespace": ctx.namespace,
40
- ...ctx.sourceId ? { "request.source.id": ctx.sourceId } : {},
41
- ...(ctx.userProfile?.sub
42
- ? {
43
- "request.user.sub": ctx
44
- .userProfile
45
- .sub,
46
- "request.user.roles": "roles" in ctx
47
- .userProfile
48
- ? ctx.userProfile.roles
49
- : undefined
50
- }
51
- : {})
52
- })
53
-
54
- // codegen:start {preset: model}
55
- //
56
- /* eslint-disable */
57
- export namespace RequestContext {
58
- export interface Encoded extends S.Struct.Encoded<typeof RequestContext["fields"]> {}
59
- }
60
- /* eslint-enable */
61
- //
62
- // codegen:end
63
- //
@@ -1,20 +0,0 @@
1
- import { Data, Effect, Layer, ServiceMap } from "effect-app"
2
- import { ContextMap } from "./service.js"
3
-
4
- // TODO: we have to create a new contextmap on every request.
5
- // we want to share one map during startup
6
- // but we want to make sure we don't re-use the startup map after startup
7
- // we can call another start after startup. but it would be even better if we could Die on accessing rootmap
8
- // we could also make the ContextMap optional, and when missing, issue a warning instead?
9
-
10
- export class ContextMapContainer extends ServiceMap.Reference("ContextMapContainer", {
11
- defaultValue: (): ContextMap | "root" => "root"
12
- }) {
13
- static readonly layer = Layer.effect(this, ContextMap.make.pipe(Effect.map(ContextMap.of)))
14
- }
15
-
16
- export class ContextMapNotStartedError extends Data.TaggedError("ContextMapNotStartedError") {}
17
-
18
- export const getContextMap = ContextMapContainer.asEffect().pipe(
19
- Effect.filterOrFail((_) => _ !== "root", () => new ContextMapNotStartedError())
20
- )