@effect-app/infra 4.0.0-beta.25 → 4.0.0-beta.251

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 (467) hide show
  1. package/CHANGELOG.md +1900 -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/ContextProvider.d.ts +34 -0
  7. package/dist/ContextProvider.d.ts.map +1 -0
  8. package/dist/ContextProvider.js +40 -0
  9. package/dist/Emailer/Sendgrid.d.ts +111 -147
  10. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  11. package/dist/Emailer/Sendgrid.js +24 -19
  12. package/dist/Emailer/fake.d.ts +2 -2
  13. package/dist/Emailer/fake.d.ts.map +1 -1
  14. package/dist/Emailer/fake.js +4 -4
  15. package/dist/MainFiberSet.d.ts +12 -9
  16. package/dist/MainFiberSet.d.ts.map +1 -1
  17. package/dist/MainFiberSet.js +10 -6
  18. package/dist/QueueMaker/SQLQueue.d.ts +8 -9
  19. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  20. package/dist/QueueMaker/SQLQueue.js +138 -120
  21. package/dist/QueueMaker/errors.d.ts +5 -3
  22. package/dist/QueueMaker/errors.d.ts.map +1 -1
  23. package/dist/QueueMaker/errors.js +4 -2
  24. package/dist/QueueMaker/memQueue.d.ts +10 -6
  25. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  26. package/dist/QueueMaker/memQueue.js +84 -68
  27. package/dist/QueueMaker/sbqueue.d.ts +9 -5
  28. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  29. package/dist/QueueMaker/sbqueue.js +60 -58
  30. package/dist/RequestFiberSet.d.ts +10 -7
  31. package/dist/RequestFiberSet.d.ts.map +1 -1
  32. package/dist/RequestFiberSet.js +13 -8
  33. package/dist/SQL/Model.d.ts +468 -0
  34. package/dist/SQL/Model.d.ts.map +1 -0
  35. package/dist/SQL/Model.js +469 -0
  36. package/dist/SQL.d.ts +2 -0
  37. package/dist/SQL.d.ts.map +1 -0
  38. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  39. package/dist/ServiceBus.d.ts +61 -0
  40. package/dist/ServiceBus.d.ts.map +1 -0
  41. package/dist/ServiceBus.js +108 -0
  42. package/dist/Store/Cosmos/query.d.ts +15 -4
  43. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  44. package/dist/Store/Cosmos/query.js +179 -41
  45. package/dist/Store/Cosmos.d.ts +3 -3
  46. package/dist/Store/Cosmos.d.ts.map +1 -1
  47. package/dist/Store/Cosmos.js +344 -246
  48. package/dist/Store/Disk.d.ts +5 -5
  49. package/dist/Store/Disk.d.ts.map +1 -1
  50. package/dist/Store/Disk.js +78 -38
  51. package/dist/Store/Memory.d.ts +7 -10
  52. package/dist/Store/Memory.d.ts.map +1 -1
  53. package/dist/Store/Memory.js +326 -66
  54. package/dist/Store/SQL/Pg.d.ts +4 -0
  55. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  56. package/dist/Store/SQL/Pg.js +232 -0
  57. package/dist/Store/SQL/query.d.ts +49 -0
  58. package/dist/Store/SQL/query.d.ts.map +1 -0
  59. package/dist/Store/SQL/query.js +527 -0
  60. package/dist/Store/SQL.d.ts +21 -0
  61. package/dist/Store/SQL.d.ts.map +1 -0
  62. package/dist/Store/SQL.js +449 -0
  63. package/dist/Store/codeFilter.d.ts +5 -5
  64. package/dist/Store/codeFilter.d.ts.map +1 -1
  65. package/dist/Store/codeFilter.js +6 -3
  66. package/dist/Store/index.d.ts +7 -5
  67. package/dist/Store/index.d.ts.map +1 -1
  68. package/dist/Store/index.js +18 -5
  69. package/dist/Store/utils.d.ts +4 -3
  70. package/dist/Store/utils.d.ts.map +1 -1
  71. package/dist/Store/utils.js +5 -5
  72. package/dist/arbs.d.ts +2 -2
  73. package/dist/arbs.d.ts.map +1 -1
  74. package/dist/arbs.js +5 -3
  75. package/dist/codec.d.ts +5 -0
  76. package/dist/codec.d.ts.map +1 -0
  77. package/dist/codec.js +5 -0
  78. package/dist/cosmos-client.d.ts +16 -0
  79. package/dist/cosmos-client.d.ts.map +1 -0
  80. package/dist/cosmos-client.js +11 -0
  81. package/dist/errorReporter.d.ts +7 -5
  82. package/dist/errorReporter.d.ts.map +1 -1
  83. package/dist/errorReporter.js +23 -27
  84. package/dist/errors.d.ts +1 -1
  85. package/dist/fileUtil.d.ts +2 -2
  86. package/dist/fileUtil.d.ts.map +1 -1
  87. package/dist/fileUtil.js +2 -2
  88. package/dist/index.d.ts +3 -2
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +3 -2
  91. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  92. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  93. package/dist/internal/RequestContextMiddleware.js +45 -0
  94. package/dist/internal/auth.d.ts +53 -0
  95. package/dist/internal/auth.d.ts.map +1 -0
  96. package/dist/internal/auth.js +180 -0
  97. package/dist/internal/events.d.ts +11 -0
  98. package/dist/internal/events.d.ts.map +1 -0
  99. package/dist/internal/events.js +49 -0
  100. package/dist/internal/health.d.ts +3 -0
  101. package/dist/internal/health.d.ts.map +1 -0
  102. package/dist/internal/health.js +5 -0
  103. package/dist/layerUtils.d.ts +32 -0
  104. package/dist/layerUtils.d.ts.map +1 -0
  105. package/dist/layerUtils.js +17 -0
  106. package/dist/logger/jsonLogger.d.ts +2 -2
  107. package/dist/logger/jsonLogger.d.ts.map +1 -1
  108. package/dist/logger/jsonLogger.js +5 -3
  109. package/dist/logger/logFmtLogger.d.ts +2 -2
  110. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  111. package/dist/logger/logFmtLogger.js +3 -3
  112. package/dist/logger/shared.d.ts +3 -3
  113. package/dist/logger/shared.d.ts.map +1 -1
  114. package/dist/logger/shared.js +5 -5
  115. package/dist/logger.d.ts +1 -1
  116. package/dist/logger.d.ts.map +1 -1
  117. package/dist/memQueue.d.ts +15 -0
  118. package/dist/memQueue.d.ts.map +1 -0
  119. package/dist/memQueue.js +21 -0
  120. package/dist/middlewares.d.ts +10 -0
  121. package/dist/middlewares.d.ts.map +1 -0
  122. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  123. package/dist/mongo-client.d.ts +11 -0
  124. package/dist/mongo-client.d.ts.map +1 -0
  125. package/dist/mongo-client.js +15 -0
  126. package/dist/otel.d.ts +75 -0
  127. package/dist/otel.d.ts.map +1 -0
  128. package/dist/otel.js +65 -0
  129. package/dist/rateLimit.d.ts +12 -4
  130. package/dist/rateLimit.d.ts.map +1 -1
  131. package/dist/rateLimit.js +7 -12
  132. package/dist/redis-client.d.ts +42 -0
  133. package/dist/redis-client.d.ts.map +1 -0
  134. package/dist/redis-client.js +98 -0
  135. package/dist/reportError.d.ts +4 -0
  136. package/dist/reportError.d.ts.map +1 -0
  137. package/dist/reportError.js +28 -0
  138. package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
  139. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  140. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  141. package/dist/routing/middleware/middleware.d.ts +48 -0
  142. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  143. package/dist/routing/middleware/middleware.js +128 -0
  144. package/dist/routing/middleware.d.ts +3 -0
  145. package/dist/routing/middleware.d.ts.map +1 -0
  146. package/dist/{api/routing → routing}/middleware.js +1 -2
  147. package/dist/routing/schema/jwt.d.ts +4 -0
  148. package/dist/routing/schema/jwt.d.ts.map +1 -0
  149. package/dist/routing/schema/jwt.js +13 -0
  150. package/dist/routing/tsort.d.ts +8 -0
  151. package/dist/routing/tsort.d.ts.map +1 -0
  152. package/dist/routing/tsort.js +51 -0
  153. package/dist/routing/utils.d.ts +19 -0
  154. package/dist/routing/utils.d.ts.map +1 -0
  155. package/dist/routing/utils.js +45 -0
  156. package/dist/routing.d.ts +184 -0
  157. package/dist/routing.d.ts.map +1 -0
  158. package/dist/routing.js +236 -0
  159. package/dist/test.d.ts +3 -3
  160. package/dist/test.d.ts.map +1 -1
  161. package/dist/test.js +2 -2
  162. package/dist/util.d.ts +3 -0
  163. package/dist/util.d.ts.map +1 -0
  164. package/dist/util.js +14 -0
  165. package/dist/vitest.d.ts +1 -1
  166. package/examples/query.ts +47 -39
  167. package/package.json +119 -234
  168. package/src/CUPS.ts +52 -13
  169. package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
  170. package/src/Emailer/Sendgrid.ts +82 -59
  171. package/src/Emailer/fake.ts +3 -3
  172. package/src/MainFiberSet.ts +12 -10
  173. package/src/QueueMaker/SQLQueue.ts +153 -156
  174. package/src/QueueMaker/errors.ts +3 -1
  175. package/src/QueueMaker/memQueue.ts +113 -107
  176. package/src/QueueMaker/sbqueue.ts +78 -90
  177. package/src/RequestFiberSet.ts +13 -8
  178. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  179. package/src/ServiceBus.ts +219 -0
  180. package/src/Store/Cosmos/query.ts +216 -52
  181. package/src/Store/Cosmos.ts +493 -353
  182. package/src/Store/Disk.ts +109 -69
  183. package/src/Store/Memory.ts +365 -96
  184. package/src/Store/SQL/Pg.ts +363 -0
  185. package/src/Store/SQL/query.ts +603 -0
  186. package/src/Store/SQL.ts +735 -0
  187. package/src/Store/codeFilter.ts +8 -5
  188. package/src/Store/index.ts +21 -6
  189. package/src/Store/utils.ts +26 -24
  190. package/src/arbs.ts +5 -3
  191. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  192. package/src/errorReporter.ts +66 -76
  193. package/src/fileUtil.ts +1 -1
  194. package/src/index.ts +2 -1
  195. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  196. package/src/internal/auth.ts +272 -0
  197. package/src/{api/internal → internal}/events.ts +22 -13
  198. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  199. package/src/logger/jsonLogger.ts +4 -2
  200. package/src/logger/logFmtLogger.ts +2 -2
  201. package/src/logger/shared.ts +5 -4
  202. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  203. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  204. package/src/otel.ts +152 -0
  205. package/src/rateLimit.ts +34 -23
  206. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  207. package/src/{api/reportError.ts → reportError.ts} +3 -2
  208. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  209. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  210. package/src/routing/middleware.ts +4 -0
  211. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  212. package/src/{api/routing → routing}/utils.ts +2 -1
  213. package/src/routing.ts +768 -0
  214. package/src/test.ts +2 -2
  215. package/test/auth.test.ts +101 -0
  216. package/test/contextProvider.test.ts +15 -12
  217. package/test/controller.test.ts +28 -32
  218. package/test/cosmos-query.test.ts +159 -0
  219. package/test/dist/auth.test.d.ts.map +1 -0
  220. package/test/dist/contextProvider.test.d.ts.map +1 -1
  221. package/test/dist/controller.test.d.ts.map +1 -1
  222. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  223. package/test/dist/date-query.test.d.ts.map +1 -0
  224. package/test/dist/fixtures.d.ts +30 -12
  225. package/test/dist/fixtures.d.ts.map +1 -1
  226. package/test/dist/fixtures.js +17 -10
  227. package/test/dist/query.test.d.ts.map +1 -1
  228. package/test/dist/rawQuery.test.d.ts.map +1 -1
  229. package/test/dist/repository-ext.test.d.ts.map +1 -0
  230. package/test/dist/requires.test.d.ts.map +1 -1
  231. package/test/dist/router-generator.test.d.ts.map +1 -0
  232. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  233. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  234. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  235. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  236. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  237. package/test/dist/sql-store.test.d.ts.map +1 -0
  238. package/test/fixtures.ts +16 -9
  239. package/test/layerUtils.test.ts +2 -2
  240. package/test/query.test.ts +903 -40
  241. package/test/rawQuery.test.ts +340 -22
  242. package/test/repository-ext.test.ts +62 -0
  243. package/test/requires.test.ts +10 -5
  244. package/test/router-generator.test.ts +187 -0
  245. package/test/routing-interruptibility.test.ts +66 -0
  246. package/test/rpc-context-map-streaming.test.ts +262 -0
  247. package/test/rpc-e2e-invalidation.test.ts +256 -0
  248. package/test/rpc-multi-middleware.test.ts +85 -10
  249. package/test/rpc-stream-fullstack.test.ts +304 -0
  250. package/test/sql-store.test.ts +1711 -0
  251. package/test/validateSample.test.ts +19 -14
  252. package/tsconfig.examples.json +1 -1
  253. package/tsconfig.json +2 -1
  254. package/tsconfig.json.bak +2 -2
  255. package/tsconfig.src.json +35 -35
  256. package/tsconfig.test.json +2 -2
  257. package/dist/Emailer/service.d.ts +0 -55
  258. package/dist/Emailer/service.d.ts.map +0 -1
  259. package/dist/Emailer/service.js +0 -6
  260. package/dist/Emailer.d.ts +0 -2
  261. package/dist/Emailer.d.ts.map +0 -1
  262. package/dist/Emailer.js +0 -2
  263. package/dist/Model/Repository/ext.d.ts +0 -41
  264. package/dist/Model/Repository/ext.d.ts.map +0 -1
  265. package/dist/Model/Repository/ext.js +0 -65
  266. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  267. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  268. package/dist/Model/Repository/internal/internal.js +0 -316
  269. package/dist/Model/Repository/legacy.d.ts +0 -19
  270. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  271. package/dist/Model/Repository/legacy.js +0 -2
  272. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  273. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  274. package/dist/Model/Repository/makeRepo.js +0 -24
  275. package/dist/Model/Repository/service.d.ts +0 -89
  276. package/dist/Model/Repository/service.d.ts.map +0 -1
  277. package/dist/Model/Repository/service.js +0 -2
  278. package/dist/Model/Repository/validation.d.ts +0 -42
  279. package/dist/Model/Repository/validation.d.ts.map +0 -1
  280. package/dist/Model/Repository/validation.js +0 -32
  281. package/dist/Model/Repository.d.ts +0 -6
  282. package/dist/Model/Repository.d.ts.map +0 -1
  283. package/dist/Model/Repository.js +0 -6
  284. package/dist/Model/dsl.d.ts +0 -32
  285. package/dist/Model/dsl.d.ts.map +0 -1
  286. package/dist/Model/dsl.js +0 -44
  287. package/dist/Model/filter/filterApi.d.ts +0 -30
  288. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  289. package/dist/Model/filter/filterApi.js +0 -2
  290. package/dist/Model/filter/types/errors.d.ts +0 -29
  291. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  292. package/dist/Model/filter/types/errors.js +0 -2
  293. package/dist/Model/filter/types/fields.d.ts +0 -15
  294. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  295. package/dist/Model/filter/types/fields.js +0 -2
  296. package/dist/Model/filter/types/path/common.d.ts +0 -316
  297. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  298. package/dist/Model/filter/types/path/common.js +0 -2
  299. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  300. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  301. package/dist/Model/filter/types/path/eager.js +0 -31
  302. package/dist/Model/filter/types/path/index.d.ts +0 -4
  303. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  304. package/dist/Model/filter/types/path/index.js +0 -3
  305. package/dist/Model/filter/types/utils.d.ts +0 -79
  306. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  307. package/dist/Model/filter/types/utils.js +0 -2
  308. package/dist/Model/filter/types/validator.d.ts +0 -30
  309. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  310. package/dist/Model/filter/types/validator.js +0 -2
  311. package/dist/Model/filter/types.d.ts +0 -5
  312. package/dist/Model/filter/types.d.ts.map +0 -1
  313. package/dist/Model/filter/types.js +0 -7
  314. package/dist/Model/query/dsl.d.ts +0 -248
  315. package/dist/Model/query/dsl.d.ts.map +0 -1
  316. package/dist/Model/query/dsl.js +0 -104
  317. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  318. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  319. package/dist/Model/query/new-kid-interpreter.js +0 -165
  320. package/dist/Model/query.d.ts +0 -15
  321. package/dist/Model/query.d.ts.map +0 -1
  322. package/dist/Model/query.js +0 -3
  323. package/dist/Model.d.ts +0 -4
  324. package/dist/Model.d.ts.map +0 -1
  325. package/dist/Model.js +0 -4
  326. package/dist/Operations.d.ts +0 -55
  327. package/dist/Operations.d.ts.map +0 -1
  328. package/dist/Operations.js +0 -102
  329. package/dist/OperationsRepo.d.ts +0 -41
  330. package/dist/OperationsRepo.d.ts.map +0 -1
  331. package/dist/OperationsRepo.js +0 -14
  332. package/dist/QueueMaker/service.d.ts +0 -11
  333. package/dist/QueueMaker/service.d.ts.map +0 -1
  334. package/dist/QueueMaker/service.js +0 -4
  335. package/dist/RequestContext.d.ts +0 -63
  336. package/dist/RequestContext.d.ts.map +0 -1
  337. package/dist/RequestContext.js +0 -49
  338. package/dist/Store/ContextMapContainer.d.ts +0 -14
  339. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  340. package/dist/Store/ContextMapContainer.js +0 -16
  341. package/dist/Store/service.d.ts +0 -108
  342. package/dist/Store/service.d.ts.map +0 -1
  343. package/dist/Store/service.js +0 -71
  344. package/dist/Store.d.ts +0 -2
  345. package/dist/Store.d.ts.map +0 -1
  346. package/dist/Store.js +0 -2
  347. package/dist/adapters/SQL/Model.d.ts +0 -479
  348. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  349. package/dist/adapters/SQL/Model.js +0 -478
  350. package/dist/adapters/SQL.d.ts +0 -2
  351. package/dist/adapters/SQL.d.ts.map +0 -1
  352. package/dist/adapters/ServiceBus.d.ts +0 -58
  353. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  354. package/dist/adapters/ServiceBus.js +0 -99
  355. package/dist/adapters/cosmos-client.d.ts +0 -14
  356. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  357. package/dist/adapters/cosmos-client.js +0 -9
  358. package/dist/adapters/index.d.ts +0 -2
  359. package/dist/adapters/index.d.ts.map +0 -1
  360. package/dist/adapters/index.js +0 -2
  361. package/dist/adapters/logger.d.ts +0 -9
  362. package/dist/adapters/logger.d.ts.map +0 -1
  363. package/dist/adapters/logger.js +0 -3
  364. package/dist/adapters/memQueue.d.ts +0 -13
  365. package/dist/adapters/memQueue.d.ts.map +0 -1
  366. package/dist/adapters/memQueue.js +0 -20
  367. package/dist/adapters/mongo-client.d.ts +0 -10
  368. package/dist/adapters/mongo-client.d.ts.map +0 -1
  369. package/dist/adapters/mongo-client.js +0 -13
  370. package/dist/adapters/redis-client.d.ts +0 -39
  371. package/dist/adapters/redis-client.d.ts.map +0 -1
  372. package/dist/adapters/redis-client.js +0 -94
  373. package/dist/api/ContextProvider.d.ts +0 -31
  374. package/dist/api/ContextProvider.d.ts.map +0 -1
  375. package/dist/api/ContextProvider.js +0 -38
  376. package/dist/api/codec.d.ts +0 -5
  377. package/dist/api/codec.d.ts.map +0 -1
  378. package/dist/api/codec.js +0 -5
  379. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  380. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  381. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  382. package/dist/api/internal/auth.d.ts +0 -15
  383. package/dist/api/internal/auth.d.ts.map +0 -1
  384. package/dist/api/internal/auth.js +0 -47
  385. package/dist/api/internal/events.d.ts +0 -9
  386. package/dist/api/internal/events.d.ts.map +0 -1
  387. package/dist/api/internal/events.js +0 -42
  388. package/dist/api/internal/health.d.ts +0 -3
  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 +0 -24
  392. package/dist/api/layerUtils.d.ts.map +0 -1
  393. package/dist/api/layerUtils.js +0 -16
  394. package/dist/api/middlewares.d.ts +0 -10
  395. package/dist/api/middlewares.d.ts.map +0 -1
  396. package/dist/api/reportError.d.ts +0 -4
  397. package/dist/api/reportError.d.ts.map +0 -1
  398. package/dist/api/reportError.js +0 -27
  399. package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
  400. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  401. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  402. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  403. package/dist/api/routing/middleware/middleware.js +0 -92
  404. package/dist/api/routing/middleware.d.ts +0 -4
  405. package/dist/api/routing/middleware.d.ts.map +0 -1
  406. package/dist/api/routing/schema/jwt.d.ts +0 -4
  407. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  408. package/dist/api/routing/schema/jwt.js +0 -12
  409. package/dist/api/routing/tsort.d.ts +0 -8
  410. package/dist/api/routing/tsort.d.ts.map +0 -1
  411. package/dist/api/routing/tsort.js +0 -51
  412. package/dist/api/routing/utils.d.ts +0 -19
  413. package/dist/api/routing/utils.d.ts.map +0 -1
  414. package/dist/api/routing/utils.js +0 -44
  415. package/dist/api/routing.d.ts +0 -138
  416. package/dist/api/routing.d.ts.map +0 -1
  417. package/dist/api/routing.js +0 -166
  418. package/dist/api/setupRequest.d.ts +0 -12
  419. package/dist/api/setupRequest.d.ts.map +0 -1
  420. package/dist/api/setupRequest.js +0 -44
  421. package/dist/api/util.d.ts +0 -3
  422. package/dist/api/util.d.ts.map +0 -1
  423. package/dist/api/util.js +0 -14
  424. package/eslint.config.mjs +0 -24
  425. package/src/Emailer/service.ts +0 -52
  426. package/src/Emailer.ts +0 -1
  427. package/src/Model/Repository/ext.ts +0 -283
  428. package/src/Model/Repository/internal/internal.ts +0 -577
  429. package/src/Model/Repository/legacy.ts +0 -27
  430. package/src/Model/Repository/makeRepo.ts +0 -139
  431. package/src/Model/Repository/service.ts +0 -627
  432. package/src/Model/Repository/validation.ts +0 -31
  433. package/src/Model/Repository.ts +0 -5
  434. package/src/Model/dsl.ts +0 -128
  435. package/src/Model/filter/filterApi.ts +0 -60
  436. package/src/Model/filter/types/errors.ts +0 -47
  437. package/src/Model/filter/types/fields.ts +0 -50
  438. package/src/Model/filter/types/path/common.ts +0 -404
  439. package/src/Model/filter/types/path/eager.ts +0 -298
  440. package/src/Model/filter/types/path/index.ts +0 -4
  441. package/src/Model/filter/types/utils.ts +0 -128
  442. package/src/Model/filter/types/validator.ts +0 -46
  443. package/src/Model/filter/types.ts +0 -6
  444. package/src/Model/query/dsl.ts +0 -2110
  445. package/src/Model/query/new-kid-interpreter.ts +0 -210
  446. package/src/Model/query.ts +0 -13
  447. package/src/Model.ts +0 -3
  448. package/src/Operations.ts +0 -235
  449. package/src/OperationsRepo.ts +0 -16
  450. package/src/QueueMaker/service.ts +0 -17
  451. package/src/RequestContext.ts +0 -63
  452. package/src/Store/ContextMapContainer.ts +0 -20
  453. package/src/Store/service.ts +0 -184
  454. package/src/Store.ts +0 -1
  455. package/src/adapters/ServiceBus.ts +0 -209
  456. package/src/adapters/index.ts +0 -0
  457. package/src/adapters/logger.ts +0 -3
  458. package/src/api/internal/auth.ts +0 -68
  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/src/{adapters/SQL.ts → SQL.ts} +0 -0
  463. /package/src/{api/codec.ts → codec.ts} +0 -0
  464. /package/src/{api/internal → internal}/health.ts +0 -0
  465. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  466. /package/src/{api/routing → routing}/tsort.ts +0 -0
  467. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1,180 @@
1
+ import * as Effect from "effect-app/Effect";
2
+ import { HttpHeaders, HttpMiddleware, HttpServerRequest, HttpServerResponse } from "effect-app/http";
3
+ import * as Option from "effect-app/Option";
4
+ import * as Data from "effect/Data";
5
+ import { createRemoteJWKSet, jwtVerify } from "jose";
6
+ const getHeaders = (error, description, scopes) => ({
7
+ "WWW-Authenticate": `Bearer realm="api", error="${error}", error_description="${description.replace(/"/g, "'")}"${scopes ? `, scope="${scopes.join(" ")}"` : ""}`
8
+ });
9
+ export class UnauthorizedError extends Error {
10
+ status = 401;
11
+ statusCode = 401;
12
+ headers = { "WWW-Authenticate": "Bearer realm=\"api\"" };
13
+ constructor(message = "Unauthorized") {
14
+ super(message);
15
+ this.name = this.constructor.name;
16
+ }
17
+ }
18
+ export class InvalidRequestError extends UnauthorizedError {
19
+ code;
20
+ status = 400;
21
+ statusCode = 400;
22
+ constructor(message = "Invalid Request", useErrorCode = true) {
23
+ super(message);
24
+ this.code = useErrorCode ? "invalid_request" : "";
25
+ if (useErrorCode) {
26
+ this.headers = getHeaders(this.code, this.message);
27
+ }
28
+ }
29
+ }
30
+ export class InvalidTokenError extends UnauthorizedError {
31
+ code = "invalid_token";
32
+ constructor(message = "Invalid Token") {
33
+ super(message);
34
+ this.headers = getHeaders(this.code, this.message);
35
+ }
36
+ }
37
+ export class InsufficientScopeError extends UnauthorizedError {
38
+ code = "insufficient_scope";
39
+ status = 403;
40
+ statusCode = 403;
41
+ constructor(scopes, message = "Insufficient Scope") {
42
+ super(message);
43
+ this.headers = getHeaders(this.code, this.message, scopes);
44
+ }
45
+ }
46
+ const isRecord = (value) => typeof value === "object" && value !== null;
47
+ const getErrorMessage = (error) => error instanceof Error ? error.message : String(error);
48
+ const normalizeAudience = (audience) => Array.isArray(audience) ? Array.from(audience) : audience;
49
+ const buildDiscoveryUrl = (issuerBaseURL) => {
50
+ const url = new URL(issuerBaseURL);
51
+ if (!url.pathname.includes("/.well-known/")) {
52
+ url.pathname = url.pathname.endsWith("/")
53
+ ? `${url.pathname}.well-known/openid-configuration`
54
+ : `${url.pathname}/.well-known/openid-configuration`;
55
+ }
56
+ url.search = "";
57
+ url.hash = "";
58
+ return url;
59
+ };
60
+ const fetchDiscoveryDocumentPromise = async (issuerBaseURL) => {
61
+ const response = await fetch(buildDiscoveryUrl(issuerBaseURL));
62
+ if (!response.ok) {
63
+ throw new Error(`Failed to fetch authorization server metadata: ${response.status}`);
64
+ }
65
+ const json = await response.json();
66
+ if (!isRecord(json) || typeof json["issuer"] !== "string" || typeof json["jwks_uri"] !== "string") {
67
+ throw new Error("Invalid authorization server metadata");
68
+ }
69
+ return { issuer: json["issuer"], jwksUri: json["jwks_uri"] };
70
+ };
71
+ const getAuthorizationToken = (headers, authRequired) => {
72
+ const authorization = HttpHeaders.get(headers, "authorization");
73
+ if (Option.isNone(authorization)) {
74
+ return authRequired ? Effect.fail(new UnauthorizedError()) : Effect.succeed(Option.none());
75
+ }
76
+ const [scheme, token] = authorization.value.split(" ");
77
+ if (!scheme || !token || scheme.toLowerCase() !== "bearer") {
78
+ return Effect.fail(new InvalidRequestError("", false));
79
+ }
80
+ return Effect.succeed(Option.some(token));
81
+ };
82
+ const makeResolveConfig = (config) => {
83
+ let cached;
84
+ return Effect.tryPromise({
85
+ try: () => {
86
+ if (!cached) {
87
+ cached = (async () => {
88
+ const discovery = config.issuerBaseURL
89
+ ? await fetchDiscoveryDocumentPromise(config.issuerBaseURL)
90
+ : undefined;
91
+ const issuer = config.issuer ?? discovery?.issuer;
92
+ const jwksUri = config.jwksUri ?? discovery?.jwksUri;
93
+ const secret = config.secret;
94
+ const base = {
95
+ audience: normalizeAudience(config.audience),
96
+ clockTolerance: config.clockTolerance ?? 5,
97
+ issuer,
98
+ maxTokenAge: config.maxTokenAge,
99
+ strict: config.strict ?? false,
100
+ tokenSigningAlg: config.tokenSigningAlg
101
+ };
102
+ if (!issuer && !secret) {
103
+ throw new InvalidRequestError("JWT config requires 'issuer', 'issuerBaseURL', or 'secret'");
104
+ }
105
+ if (!secret) {
106
+ if (!jwksUri) {
107
+ throw new InvalidRequestError("JWT config requires 'jwksUri', 'issuerBaseURL', or 'secret'");
108
+ }
109
+ return {
110
+ ...base,
111
+ key: createRemoteJWKSet(new URL(jwksUri)),
112
+ keyType: "jwks"
113
+ };
114
+ }
115
+ return {
116
+ ...base,
117
+ key: new TextEncoder().encode(secret),
118
+ keyType: "secret"
119
+ };
120
+ })();
121
+ }
122
+ return cached;
123
+ },
124
+ catch: (error) => error instanceof InvalidRequestError || error instanceof InvalidTokenError
125
+ ? error
126
+ : new InvalidTokenError(getErrorMessage(error))
127
+ });
128
+ };
129
+ const verifyToken = (resolveConfig) => (token) => resolveConfig.pipe(Effect.flatMap((config) => {
130
+ const options = {
131
+ clockTolerance: config.clockTolerance,
132
+ ...(config.tokenSigningAlg ? { algorithms: [config.tokenSigningAlg] } : {}),
133
+ ...(config.audience !== undefined ? { audience: config.audience } : {}),
134
+ ...(config.issuer !== undefined ? { issuer: config.issuer } : {}),
135
+ ...(config.maxTokenAge !== undefined ? { maxTokenAge: config.maxTokenAge } : {})
136
+ };
137
+ const verified = config.keyType === "jwks"
138
+ ? Effect.tryPromise({
139
+ try: () => jwtVerify(token, config.key, options).then(({ protectedHeader }) => ({ protectedHeader })),
140
+ catch: (error) => new InvalidTokenError(getErrorMessage(error))
141
+ })
142
+ : Effect.tryPromise({
143
+ try: () => jwtVerify(token, config.key, options).then(({ protectedHeader }) => ({ protectedHeader })),
144
+ catch: (error) => new InvalidTokenError(getErrorMessage(error))
145
+ });
146
+ return verified.pipe(Effect.flatMap(({ protectedHeader }) => {
147
+ const typ = protectedHeader.typ?.toLowerCase().replace(/^application\//, "");
148
+ return config.strict && typ !== "at+jwt"
149
+ ? Effect.fail(new InvalidTokenError("Unexpected 'typ' value"))
150
+ : Effect.void;
151
+ }));
152
+ }));
153
+ export const checkJWTI = (config) => {
154
+ const resolveConfig = makeResolveConfig(config);
155
+ const verify = verifyToken(resolveConfig);
156
+ return Effect.fnUntraced(function* (headers) {
157
+ const token = yield* getAuthorizationToken(headers, config.authRequired !== false);
158
+ if (Option.isNone(token)) {
159
+ return;
160
+ }
161
+ yield* verify(token.value);
162
+ });
163
+ };
164
+ export const checkJwt = (config) => {
165
+ const check = checkJWTI(config);
166
+ return HttpMiddleware.make((app) => Effect.gen(function* () {
167
+ const req = yield* HttpServerRequest.HttpServerRequest;
168
+ const response = yield* check(req.headers).pipe(Effect.catch((error) => HttpServerResponse.json({ message: error.message }, {
169
+ status: error.status,
170
+ headers: HttpHeaders.fromInput(error.headers)
171
+ })));
172
+ if (response) {
173
+ return response;
174
+ }
175
+ return yield* app;
176
+ }));
177
+ };
178
+ export class JWTError extends Data.TaggedClass("JWTError") {
179
+ }
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcm5hbC9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNwRyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sYUFBYSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFcEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxNQUE4QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLGtCQUFrQixFQUFFLDhCQUE4QixLQUFLLHlCQUF5QixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFDNUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDN0MsRUFBRTtDQUNILENBQUMsQ0FBQTtBQUVGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxLQUFLO0lBQ2pDLE1BQU0sR0FBVyxHQUFHLENBQUE7SUFDcEIsVUFBVSxHQUFXLEdBQUcsQ0FBQTtJQUNqQyxPQUFPLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxDQUFBO0lBRXhELFlBQVksT0FBTyxHQUFHLGNBQWM7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQTtJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJB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
@@ -0,0 +1,11 @@
1
+ import * as Effect from "effect-app/Effect";
2
+ import { HttpServerResponse } from "effect-app/http";
3
+ import * as S from "effect-app/Schema";
4
+ import * as Stream from "effect/Stream";
5
+ export declare const makeSSE: <A extends {
6
+ id: any;
7
+ }, SI, SRD, SRE>(schema: S.Codec<A, SI, SRD, SRE>) => <E, R>(events: Stream.Stream<{
8
+ evt: A;
9
+ namespace: string;
10
+ }, E, R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, never, import("effect/Scope").Scope | Exclude<Exclude<R, import("effect/Tracer").ParentSpan>, never> | Exclude<Exclude<SRD, import("effect/Tracer").ParentSpan>, never> | Exclude<Exclude<SRE, import("effect/Tracer").ParentSpan>, never>>;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDakUsT0FBTyxLQUFLLENBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQU10QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQVN2QyxlQUFPLE1BQU0sT0FBTyxHQUFJLENBQUMsU0FBUztJQUFFLEVBQUUsRUFBRSxHQUFHLENBQUE7Q0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxVQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUVqQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxxU0F3RG9DLENBQUEifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/internal/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAe,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAMtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AASvC,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,UACjD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAEjC,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,CAAC,qSAwDoC,CAAA"}
@@ -0,0 +1,49 @@
1
+ import * as Effect from "effect-app/Effect";
2
+ import { HttpHeaders, HttpServerResponse } from "effect-app/http";
3
+ import * as S from "effect-app/Schema";
4
+ import { setupStreamingRequestContextFromCurrent } from "effect-app/setupRequest";
5
+ import { storeId } from "effect-app/Store";
6
+ import * as Duration from "effect/Duration";
7
+ import { pipe } from "effect/Function";
8
+ import * as Schedule from "effect/Schedule";
9
+ import * as Stream from "effect/Stream";
10
+ import { reportError } from "../errorReporter.js";
11
+ // Tell the client to retry every 10 seconds if connectivity is lost
12
+ const setRetry = Stream.succeed("retry: 10000");
13
+ const keepAlive = Stream.fromEffectSchedule(Effect.succeed(":keep-alive"), Schedule.fixed(Duration.seconds(15)));
14
+ let connId = BigInt(0);
15
+ export const makeSSE = (schema) => (events) => Effect
16
+ .gen(function* () {
17
+ const id = connId++;
18
+ const ctx = yield* Effect.context();
19
+ const res = HttpServerResponse.stream(
20
+ // workaround for different scoped behaviour for streams in Bun
21
+ // https://discord.com/channels/795981131316985866/1098177242598756412/1389646879675125861
22
+ Effect
23
+ .gen(function* () {
24
+ const ns = yield* storeId;
25
+ yield* Effect.annotateCurrentSpan({ "network.connection.id": id.toString() });
26
+ yield* Effect.logInfo("$ start listening to events, id: " + id.toString() + ", ns: " + ns);
27
+ yield* Effect.addFinalizer(() => Effect.logInfo("$ end listening to events, id: " + id.toString() + ", ns: " + ns));
28
+ const enc = new TextEncoder();
29
+ const encode = S.encodeEffect(S.fromJsonString(S.toCodecJson(schema)));
30
+ const eventStream = Stream.mapEffect(Stream.filter(events, (_) => _.namespace === ns), (_) => encode(_.evt)
31
+ .pipe(Effect.map((data) => `id: ${_.evt.id}\ndata: ${data}`)));
32
+ const stream = pipe(setRetry, Stream.merge(keepAlive),
33
+ // Keep this unary so pipe receives a function, not a Stream value.
34
+ (self) => Stream.merge(self, eventStream, { haltStrategy: "either" }), Stream.tapCause((cause) => Effect.logError("SSE error, id: " + id.toString() + ", ns: " + ns, cause)), Stream.map((_) => enc.encode(_ + "\n\n")));
35
+ return stream;
36
+ })
37
+ .pipe(Stream.unwrap, Stream.tapCause(reportError("Request")), Stream.provide(ctx)), {
38
+ contentType: "text/event-stream",
39
+ headers: HttpHeaders.fromInput({
40
+ "content-type": "text/event-stream",
41
+ "cache-control": "no-cache",
42
+ "x-accel-buffering": "no",
43
+ "connection": "keep-alive" // if (req.httpVersion !== "2.0")
44
+ })
45
+ });
46
+ return res;
47
+ })
48
+ .pipe(Effect.tapCause(reportError("Request")), setupStreamingRequestContextFromCurrent("events"));
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVybmFsL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRSxPQUFPLEtBQUssQ0FBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVqRCxvRUFBb0U7QUFDcEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUMvQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRWhILElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV0QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsTUFBZ0MsRUFDaEMsRUFBRSxDQUNKLENBQU8sTUFBMEQsRUFBRSxFQUFFLENBQ25FLE1BQU07S0FDSCxHQUFHLENBQUMsUUFBUSxD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
@@ -0,0 +1,3 @@
1
+ import { HttpServerResponse } from "effect-app/http";
2
+ export declare function serverHealth(version: string): import("effect/Effect").Effect<HttpServerResponse.HttpServerResponse, import("effect/unstable/http/HttpBody").HttpBodyError, import("effect/unstable/http/HttpServerRequest").HttpServerRequest>;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvaGVhbHRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVwRSx3QkFBZ0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLG9NQUUzQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/internal/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,oMAE3C"}
@@ -0,0 +1,5 @@
1
+ import { HttpMiddleware, HttpServerResponse } from "effect-app/http";
2
+ export function serverHealth(version) {
3
+ return HttpServerResponse.json({ version }).pipe(HttpMiddleware.withLoggerDisabled);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVybmFsL2hlYWx0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFcEUsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlO0lBQzFDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUE7QUFDckYsQ0FBQyJ9
@@ -0,0 +1,32 @@
1
+ import type { NonEmptyReadonlyArray } from "effect-app/Array";
2
+ import * as Context from "effect-app/Context";
3
+ import * as Effect from "effect-app/Effect";
4
+ import type * as Layer from "effect-app/Layer";
5
+ import * as Option from "effect-app/Option";
6
+ export declare namespace LayerUtils {
7
+ type GetLayersSuccess<Layers extends ReadonlyArray<Layer.Any>> = Layers extends NonEmptyReadonlyArray<Layer.Any> ? {
8
+ [k in keyof Layers]: Layer.Success<Layers[k]>;
9
+ }[number] : Layer.Success<Layers[number]>;
10
+ type GetLayersContext<Layers extends ReadonlyArray<Layer.Any>> = Layers extends NonEmptyReadonlyArray<Layer.Any> ? {
11
+ [k in keyof Layers]: Layer.Services<Layers[k]>;
12
+ }[number] : Layer.Services<Layers[number]>;
13
+ type GetLayersError<Layers extends ReadonlyArray<Layer.Any>> = Layers extends NonEmptyReadonlyArray<Layer.Any> ? {
14
+ [k in keyof Layers]: Layer.Error<Layers[k]>;
15
+ }[number] : Layer.Error<Layers[number]>;
16
+ }
17
+ export type ContextTagWithDefault<Id, A, LayerE, LayerR> = Context.Service<Id, A> & {
18
+ Default: Layer.Layer<Id, LayerE, LayerR>;
19
+ };
20
+ export declare namespace ContextTagWithDefault {
21
+ type Base<A> = {
22
+ readonly Service: A;
23
+ } & {
24
+ Default: Layer.Layer<any, any, any>;
25
+ };
26
+ }
27
+ export type GetContext<T> = T extends Context.Context<infer Y> ? Y : never;
28
+ export declare const mergeContexts: <T extends readonly {
29
+ maker: any;
30
+ handle: Effect.Effect<Context.Context<any> | Option.Option<Context.Context<any>>>;
31
+ }[]>(makers: T) => Effect.Effect<Context.Context<Effect.Success<T[number]["handle"]>>, never, never>;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xheWVyVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3RCxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFPM0MseUJBQWlCLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLEtBQVksZ0JBQWdCLENBQUMsTUFBTSxTQUFTLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxTQUM1RSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7U0FDaEMsQ0FBQyxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzlDLENBQUMsTUFBTSxDQUFDLEdBQ1AsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUVqQyxLQUFZLGdCQUFnQixDQUFDLE1BQU0sU0FBUyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sU0FDNUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHO1NBQ2hDLENBQUMsSUFBSSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQyxDQUFDLE1BQU0sQ0FBQyxHQUNQLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFbEMsS0FBWSxjQUFjLENBQUMsTUFBTSxTQUFTLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxTQUFTLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FDakg7U0FDQyxDQUFDLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDNUMsQ0FBQyxNQUFNLENBQUMsR0FDUCxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0NBQ2hDO0FBRUQsTUFBTSxNQUFNLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFDbkQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQ3RCO0lBQ0EsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtDQUN6QyxDQUFBO0FBRUgseUJBQWlCLHFCQUFxQixDQUFDLENBQUM7SUFDdEMsS0FBWSxJQUFJLENBQUMsQ0FBQyxJQUFJO1FBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7S0FBRSxHQUFHO1FBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtLQUFFLENBQUE7Q0FDeEY7QUFFRCxNQUFNLE1BQU0sVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7QUFFMUUsZUFBTyxNQUFNLGFBQWEsR0FFdEIsQ0FBQyxTQUFTLFNBQVM7SUFDakIsS0FBSyxFQUFFLEdBQUcsQ0FBQTtJQUNWLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtDQUNsRixFQUFFLGlHQWtCTixDQUFBIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layerUtils.d.ts","sourceRoot":"","sources":["../src/layerUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAO3C,yBAAiB,UAAU,CAAC,CAAC;IAC3B,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAC5E,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SAChC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC9C,CAAC,MAAM,CAAC,GACP,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEjC,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAC5E,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SAChC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC/C,CAAC,MAAM,CAAC,GACP,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAElC,KAAY,cAAc,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAAS,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GACjH;SACC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC,MAAM,CAAC,GACP,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,qBAAqB,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,IACnD,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GACtB;IACA,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC,CAAA;AAEH,yBAAiB,qBAAqB,CAAC,CAAC;IACtC,KAAY,IAAI,CAAC,CAAC,IAAI;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;KAAE,CAAA;CACxF;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1E,eAAO,MAAM,aAAa,GAEtB,CAAC,SAAS,SAAS;IACjB,KAAK,EAAE,GAAG,CAAA;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CAClF,EAAE,iGAkBN,CAAA"}
@@ -0,0 +1,17 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Option from "effect-app/Option";
4
+ import { InfraLogger } from "./logger.js";
5
+ export const mergeContexts = Effect.fnUntraced(function* (makers) {
6
+ let context = Context.empty();
7
+ for (const mw of makers) {
8
+ const ctx = yield* mw.handle.pipe(Effect.provide(context));
9
+ const moreContext = Context.isContext(ctx) ? Option.some(ctx) : ctx;
10
+ yield* InfraLogger.logDebug("Built dynamic context for middleware" + (mw.maker.key ?? mw.maker), Option.map(moreContext, (c) => c.toJSON().services));
11
+ if (moreContext.value) {
12
+ context = Context.merge(context, moreContext.value);
13
+ }
14
+ }
15
+ return context;
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXllclV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUUzQyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFzQ3pDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUM1QyxRQUFRLENBQUMsRUFNUCxNQUFTO0lBRVQsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUNuRSxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUN6QixzQ0FBc0MsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDbkUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDN0QsQ0FBQTtRQUNELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckQsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE9BQStELENBQUE7QUFDeEUsQ0FBQyxDQUNGLENBQUEifQ==
@@ -1,4 +1,4 @@
1
- import { Logger } from "effect-app";
1
+ import * as Logger from "effect/Logger";
2
2
  export declare const jsonLogger: Logger.Logger<unknown, void>;
3
3
  export declare const logJson: import("effect/Layer").Layer<never, never, never>;
4
- //# sourceMappingURL=jsonLogger.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkxvZ2dlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9qc29uTG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBSXZDLGVBQU8sTUFBTSxVQUFVLDhCQXlCdEIsQ0FBQTtBQUVELGVBQU8sTUFBTSxPQUFPLG1EQUE2QixDQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"jsonLogger.d.ts","sourceRoot":"","sources":["../../src/logger/jsonLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,YAAY,CAAA;AAKjD,eAAO,MAAM,UAAU,8BAyBtB,CAAA;AAED,eAAO,MAAM,OAAO,mDAA6B,CAAA"}
1
+ {"version":3,"file":"jsonLogger.d.ts","sourceRoot":"","sources":["../../src/logger/jsonLogger.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,eAAO,MAAM,UAAU,8BAyBtB,CAAA;AAED,eAAO,MAAM,OAAO,mDAA6B,CAAA"}
@@ -1,6 +1,8 @@
1
- import { Array, Cause, Logger } from "effect-app";
1
+ import * as Array from "effect-app/Array";
2
+ import { spanAttributes } from "effect-app/RequestContext";
3
+ import * as Cause from "effect/Cause";
4
+ import * as Logger from "effect/Logger";
2
5
  import { CurrentLogAnnotations, CurrentLogSpans } from "effect/References";
3
- import { spanAttributes } from "../RequestContext.js";
4
6
  import { getRequestContextFromFiber } from "./shared.js";
5
7
  export const jsonLogger = Logger.make(({ cause, date, fiber, logLevel, message }) => {
6
8
  const nowMillis = date.getTime();
@@ -24,4 +26,4 @@ export const jsonLogger = Logger.make(({ cause, date, fiber, logLevel, message }
24
26
  globalThis.console.log(JSON.stringify(data));
25
27
  });
26
28
  export const logJson = Logger.layer([jsonLogger]);
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnZXIvanNvbkxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFeEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ25DLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFaEMsTUFBTSxPQUFPLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUMzQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFFdkQsTUFBTSxJQUFJLEdBQUc7UUFDWCxTQUFTLEVBQUUsSUFBSTtRQUNmLEtBQUssRUFBRSxRQUFRO1FBQ2YsS0FBSyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRTtRQUNyQixPQUFPO1FBQ1AsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDaEMsS0FBSyxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzlELEtBQUssRUFBRSxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUMsQ0FBQyxTQUFTO1FBQ2IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDOUMsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUMsU0FBUztLQUNkLENBQUE7SUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDOUMsQ0FBQyxDQUNGLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUEifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnZXIvanNvbkxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRCxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNuQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7SUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWhDLE1BQU0sT0FBTyxHQUFHLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDM0MsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBRXZELE1BQU0sSUFBSSxHQUFHO1FBQ1gsU0FBUyxFQUFFLElBQUk7UUFDZixLQUFLLEVBQUUsUUFBUTtRQUNmLEtBQUssRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTztRQUNQLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ2hDLEtBQUssRUFBRSxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM5RCxLQUFLLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztZQUN6QyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUMvRSxDQUFDLENBQUMsU0FBUztRQUNiLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLFNBQVM7S0FDZCxDQUFBO0lBRUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBQzlDLENBQUMsQ0FDRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBIn0=
@@ -1,4 +1,4 @@
1
- import { Logger } from "effect-app";
1
+ import * as Logger from "effect/Logger";
2
2
  export declare const logfmtLogger: Logger.Logger<unknown, void>;
3
3
  export declare const logFmt: import("effect/Layer").Layer<never, never, never>;
4
- //# sourceMappingURL=logFmtLogger.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nRm10TG9nZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2VyL2xvZ0ZtdExvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUd2QyxlQUFPLE1BQU0sWUFBWSw4QkFXeEIsQ0FBQTtBQUVELGVBQU8sTUFBTSxNQUFNLG1EQUErQixDQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"logFmtLogger.d.ts","sourceRoot":"","sources":["../../src/logger/logFmtLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAInC,eAAO,MAAM,YAAY,8BAWxB,CAAA;AAED,eAAO,MAAM,MAAM,mDAA+B,CAAA"}
1
+ {"version":3,"file":"logFmtLogger.d.ts","sourceRoot":"","sources":["../../src/logger/logFmtLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,eAAO,MAAM,YAAY,8BAWxB,CAAA;AAED,eAAO,MAAM,MAAM,mDAA+B,CAAA"}
@@ -1,5 +1,5 @@
1
- import { Logger } from "effect-app";
2
- import { spanAttributes } from "../RequestContext.js";
1
+ import { spanAttributes } from "effect-app/RequestContext";
2
+ import * as Logger from "effect/Logger";
3
3
  import { getRequestContextFromFiber } from "./shared.js";
4
4
  export const logfmtLogger = Logger.make((options) => {
5
5
  const requestContext = getRequestContextFromFiber(options.fiber);
@@ -12,4 +12,4 @@ export const logfmtLogger = Logger.make((options) => {
12
12
  globalThis.console.log(formatted);
13
13
  });
14
14
  export const logFmt = Logger.layer([logfmtLogger]);
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nRm10TG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9sb2dGbXRMb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNyQyxDQUFDLE9BQU8sRUFBRSxFQUFFO0lBQ1YsTUFBTSxjQUFjLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hELElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFFLFNBQVMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDekQsQ0FBQztJQUNILENBQUM7SUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUNuQyxDQUFDLENBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQSJ9
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nRm10TG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9sb2dGbXRMb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV4RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDckMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUNWLE1BQU0sY0FBYyxHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxTQUFTLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDbkMsQ0FBQyxDQUNGLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUEifQ==
@@ -1,4 +1,4 @@
1
- import { type Fiber } from "effect-app";
2
- import { RequestContext } from "../RequestContext.js";
1
+ import { RequestContext } from "effect-app/RequestContext";
2
+ import type * as Fiber from "effect/Fiber";
3
3
  export declare function getRequestContextFromFiber(fiber: Fiber.Fiber<unknown, unknown>): RequestContext;
4
- //# sourceMappingURL=shared.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2VyL3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFHckUsT0FBTyxLQUFLLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUUxQyx3QkFBZ0IsMEJBQTBCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxrQkFZOUUifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/logger/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAU,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAa,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGhE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,kBAY9E"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/logger/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAGrE,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,kBAY9E"}
@@ -1,16 +1,16 @@
1
- import { Option } from "effect-app";
1
+ import * as Option from "effect-app/Option";
2
+ import { LocaleRef, RequestContext } from "effect-app/RequestContext";
2
3
  import { NonEmptyString255 } from "effect-app/Schema";
3
- import { LocaleRef, RequestContext } from "../RequestContext.js";
4
- import { storeId } from "../Store/Memory.js";
4
+ import { storeId } from "effect-app/Store";
5
5
  export function getRequestContextFromFiber(fiber) {
6
6
  const span = Option.fromNullishOr(fiber.currentSpan);
7
7
  const locale = fiber.getRef(LocaleRef);
8
8
  const namespace = fiber.getRef(storeId);
9
- return new RequestContext({
9
+ return RequestContext.make({
10
10
  span: Option.map(span, (s) => ({ spanId: s.spanId, traceId: s.traceId, sampled: s.sampled })).pipe(Option.getOrElse(() => ({ spanId: "bogus", sampled: true, traceId: "bogus" }))),
11
11
  name: NonEmptyString255("_"),
12
12
  locale,
13
13
  namespace
14
14
  });
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUU1QyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBb0M7SUFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sSUFBSSxjQUFjLENBQUM7UUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDL0U7UUFDRCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDO1FBQzVCLE1BQU07UUFDTixTQUFTO0tBQ1YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUcxQyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBb0M7SUFDN0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUMvRTtRQUNELElBQUksRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7UUFDNUIsTUFBTTtRQUNOLFNBQVM7S0FDVixDQUFDLENBQUE7QUFDSixDQUFDIn0=
package/dist/logger.d.ts CHANGED
@@ -6,4 +6,4 @@ export declare const InfraLogger: {
6
6
  logDebug: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
7
7
  logWithLevel: (level: import("effect/LogLevel").Severity, ...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
8
8
  };
9
- //# sourceMappingURL=logger.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQU8sTUFBTSxXQUFXOzs7Ozs7O0NBQXVDLENBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBAC0O,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;8DAA+G,GAAI;CAD5oB,CAAA"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;;;;;;;CAAuC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Queue from "effect/Queue";
4
+ declare const MemQueue_base: Context.OpaqueClass<MemQueue, "effect-app/MemQueue", {
5
+ getOrCreateQueue: (k: string) => Effect.Effect<Queue.Queue<string, never>, never, never>;
6
+ }> & {
7
+ readonly make: Effect.Effect<{
8
+ getOrCreateQueue: (k: string) => Effect.Effect<Queue.Queue<string, never>, never, never>;
9
+ }, never, never>;
10
+ };
11
+ export declare class MemQueue extends MemQueue_base {
12
+ static readonly Live: import("effect/Layer").Layer<MemQueue, never, never>;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tZW1RdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7Ozs7Ozs7O0FBaUJyQyxxQkFBYSxRQUFTLFNBQVEsYUFBMkQ7SUFDdkYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLHVEQUEwQjtDQUMvQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../src/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;;;;;;;;AAiBrC,qBAAa,QAAS,SAAQ,aAA2D;IACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,uDAA0B;CAC/C"}
@@ -0,0 +1,21 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Queue from "effect/Queue";
4
+ const make = Effect
5
+ .gen(function* () {
6
+ const store = yield* Effect.sync(() => new Map());
7
+ return {
8
+ getOrCreateQueue: Effect.fnUntraced(function* (k) {
9
+ const q = store.get(k);
10
+ if (q)
11
+ return q;
12
+ const newQ = yield* Queue.unbounded();
13
+ store.set(k, newQ);
14
+ return newQ;
15
+ })
16
+ };
17
+ });
18
+ export class MemQueue extends Context.Opaque()("effect-app/MemQueue", { make }) {
19
+ static Live = this.toLayer(this.make);
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBRXJDLE1BQU0sSUFBSSxHQUFHLE1BQU07S0FDaEIsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNaLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQStCLENBQUMsQ0FBQTtJQUU5RSxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFTO1lBQ3JELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdEIsSUFBSSxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ2YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBVSxDQUFBO1lBQzdDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2xCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxDQUFDO0tBQ0gsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUosTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPLENBQUMsTUFBTSxFQUFZLENBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN2RixNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQy9DIn0=
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mechanism for extendning behaviour of all handlers on the server.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ export * from "./internal/auth.js";
7
+ export * from "./internal/events.js";
8
+ export * from "./internal/health.js";
9
+ export * from "./internal/RequestContextMiddleware.js";
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9taWRkbGV3YXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx3Q0FBd0MsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../src/middlewares.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wCAAwC,CAAA"}
@@ -7,4 +7,4 @@ export * from "./internal/auth.js";
7
7
  export * from "./internal/events.js";
8
8
  export * from "./internal/health.js";
9
9
  export * from "./internal/RequestContextMiddleware.js";
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHdDQUF3QyxDQUFBIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsd0NBQXdDLENBQUEifQ==
@@ -0,0 +1,11 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Layer from "effect-app/Layer";
3
+ import { MongoClient as MongoClient_ } from "mongodb";
4
+ declare const MongoClient_base: Context.ServiceClass<MongoClient, "@services/MongoClient", {
5
+ readonly db: ReturnType<InstanceType<typeof MongoClient_>["db"]>;
6
+ }>;
7
+ export declare class MongoClient extends MongoClient_base {
8
+ }
9
+ export declare const MongoClientLive: (mongoUrl: string, dbName?: string) => Layer.Layer<MongoClient, never, never>;
10
+ export {};
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tY2xpZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9uZ28tY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFFN0MsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxJQUFJLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTs7aUJBaUJ0QyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRGxFLHFCQUFhLFdBQVksU0FBUSxnQkFFSjtDQUFHO0FBRWhDLGVBQU8sTUFBTSxlQUFlLGFBQWMsTUFBTSxXQUFXLE1BQU0sMkNBQ0gsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-client.d.ts","sourceRoot":"","sources":["../src/mongo-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,SAAS,CAAA;;iBAiBtC,UAAU,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;;AADlE,qBAAa,WAAY,SAAQ,gBAEJ;CAAG;AAEhC,eAAO,MAAM,eAAe,aAAc,MAAM,WAAW,MAAM,2CACH,CAAA"}
@@ -0,0 +1,15 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Layer from "effect-app/Layer";
4
+ import { MongoClient as MongoClient_ } from "mongodb";
5
+ // TODO: we should probably share a single client...
6
+ const withClient = (url) => Effect.acquireRelease(Effect
7
+ .promise(() => {
8
+ const client = new MongoClient_(url);
9
+ return client.connect();
10
+ }), (cl) => Effect.promise(() => cl.close()).pipe(Effect.uninterruptible, Effect.orDie));
11
+ const makeMongoClient = (url, dbName) => Effect.map(withClient(url), (x) => ({ db: x.db(dbName) }));
12
+ export class MongoClient extends Context.Service()("@services/MongoClient") {
13
+ }
14
+ export const MongoClientLive = (mongoUrl, dbName) => Layer.effect(MongoClient, makeMongoClient(mongoUrl, dbName));
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vbmdvLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxJQUFJLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVyRCxvREFBb0Q7QUFFcEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUNqQyxNQUFNLENBQUMsY0FBYyxDQUNuQixNQUFNO0tBQ0gsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQ3pCLENBQUMsQ0FBQyxFQUNKLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDcEYsQ0FBQTtBQUVILE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQWUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVwSCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQU8sQ0FBQyxPQUFPLEVBRTVDLENBQUMsdUJBQXVCLENBQUM7Q0FBRztBQUVoQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFnQixFQUFFLE1BQWUsRUFBRSxFQUFFLENBQ25FLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQSJ9