@effect-app/infra 4.0.0-beta.248 → 4.0.0-beta.249

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 (377) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/dist/ContextProvider.d.ts +34 -0
  3. package/dist/ContextProvider.d.ts.map +1 -0
  4. package/dist/ContextProvider.js +40 -0
  5. package/dist/Emailer/Sendgrid.d.ts +109 -145
  6. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  7. package/dist/Emailer/Sendgrid.js +4 -3
  8. package/dist/Emailer/fake.d.ts +2 -2
  9. package/dist/Emailer/fake.d.ts.map +1 -1
  10. package/dist/Emailer/fake.js +2 -2
  11. package/dist/QueueMaker/SQLQueue.d.ts +2 -2
  12. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  13. package/dist/QueueMaker/SQLQueue.js +4 -4
  14. package/dist/QueueMaker/memQueue.d.ts +2 -2
  15. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  16. package/dist/QueueMaker/memQueue.js +4 -4
  17. package/dist/QueueMaker/sbqueue.d.ts +2 -2
  18. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  19. package/dist/QueueMaker/sbqueue.js +4 -4
  20. package/dist/RequestFiberSet.js +2 -2
  21. package/dist/{adapters/SQL → SQL}/Model.d.ts +2 -2
  22. package/dist/SQL/Model.d.ts.map +1 -0
  23. package/dist/SQL/Model.js +469 -0
  24. package/dist/{adapters/SQL.d.ts → SQL.d.ts} +1 -1
  25. package/dist/SQL.d.ts.map +1 -0
  26. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  27. package/dist/{adapters/ServiceBus.d.ts → ServiceBus.d.ts} +1 -1
  28. package/dist/ServiceBus.d.ts.map +1 -0
  29. package/dist/ServiceBus.js +108 -0
  30. package/dist/Store/ContextMapContainer.d.ts +2 -2
  31. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  32. package/dist/Store/ContextMapContainer.js +2 -2
  33. package/dist/Store/Cosmos/query.d.ts +4 -4
  34. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  35. package/dist/Store/Cosmos/query.js +1 -1
  36. package/dist/Store/Cosmos.d.ts +2 -2
  37. package/dist/Store/Cosmos.d.ts.map +1 -1
  38. package/dist/Store/Cosmos.js +3 -3
  39. package/dist/Store/Disk.d.ts +3 -3
  40. package/dist/Store/Disk.d.ts.map +1 -1
  41. package/dist/Store/Disk.js +2 -2
  42. package/dist/Store/Memory.d.ts +3 -3
  43. package/dist/Store/Memory.d.ts.map +1 -1
  44. package/dist/Store/Memory.js +2 -2
  45. package/dist/Store/SQL/Pg.d.ts +2 -2
  46. package/dist/Store/SQL/Pg.d.ts.map +1 -1
  47. package/dist/Store/SQL/Pg.js +2 -2
  48. package/dist/Store/SQL/query.d.ts +3 -3
  49. package/dist/Store/SQL/query.d.ts.map +1 -1
  50. package/dist/Store/SQL/query.js +1 -1
  51. package/dist/Store/SQL.d.ts +3 -3
  52. package/dist/Store/SQL.d.ts.map +1 -1
  53. package/dist/Store/SQL.js +2 -2
  54. package/dist/Store/codeFilter.d.ts +4 -4
  55. package/dist/Store/codeFilter.d.ts.map +1 -1
  56. package/dist/Store/codeFilter.js +1 -1
  57. package/dist/Store/index.d.ts +3 -4
  58. package/dist/Store/index.d.ts.map +1 -1
  59. package/dist/Store/index.js +2 -3
  60. package/dist/Store/utils.d.ts +2 -2
  61. package/dist/Store/utils.d.ts.map +1 -1
  62. package/dist/Store/utils.js +1 -1
  63. package/dist/{api/codec.d.ts → codec.d.ts} +1 -1
  64. package/dist/codec.d.ts.map +1 -0
  65. package/dist/codec.js +5 -0
  66. package/dist/{adapters/cosmos-client.d.ts → cosmos-client.d.ts} +1 -1
  67. package/dist/cosmos-client.d.ts.map +1 -0
  68. package/dist/cosmos-client.js +11 -0
  69. package/dist/errorReporter.d.ts +1 -1
  70. package/dist/errorReporter.d.ts.map +1 -1
  71. package/dist/errorReporter.js +2 -2
  72. package/dist/index.d.ts +3 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +3 -2
  75. package/dist/{api/internal → internal}/RequestContextMiddleware.d.ts +2 -2
  76. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  77. package/dist/internal/RequestContextMiddleware.js +46 -0
  78. package/dist/{api/internal → internal}/auth.d.ts +1 -1
  79. package/dist/internal/auth.d.ts.map +1 -0
  80. package/dist/internal/auth.js +180 -0
  81. package/dist/{api/internal → internal}/events.d.ts +1 -1
  82. package/dist/internal/events.d.ts.map +1 -0
  83. package/dist/internal/events.js +49 -0
  84. package/dist/{api/internal → internal}/health.d.ts +1 -1
  85. package/dist/internal/health.d.ts.map +1 -0
  86. package/dist/internal/health.js +5 -0
  87. package/dist/layerUtils.d.ts +32 -0
  88. package/dist/layerUtils.d.ts.map +1 -0
  89. package/dist/layerUtils.js +17 -0
  90. package/dist/logger/jsonLogger.d.ts +1 -1
  91. package/dist/logger/jsonLogger.d.ts.map +1 -1
  92. package/dist/logger/jsonLogger.js +2 -2
  93. package/dist/logger/logFmtLogger.d.ts +1 -1
  94. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  95. package/dist/logger/logFmtLogger.js +2 -2
  96. package/dist/logger/shared.d.ts +2 -2
  97. package/dist/logger/shared.d.ts.map +1 -1
  98. package/dist/logger/shared.js +2 -2
  99. package/dist/{adapters/memQueue.d.ts → memQueue.d.ts} +1 -1
  100. package/dist/memQueue.d.ts.map +1 -0
  101. package/dist/memQueue.js +21 -0
  102. package/dist/{api/middlewares.d.ts → middlewares.d.ts} +1 -1
  103. package/dist/middlewares.d.ts.map +1 -0
  104. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  105. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +1 -1
  106. package/dist/mongo-client.d.ts.map +1 -0
  107. package/dist/mongo-client.js +15 -0
  108. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +1 -1
  109. package/dist/redis-client.d.ts.map +1 -0
  110. package/dist/redis-client.js +98 -0
  111. package/dist/reportError.d.ts +4 -0
  112. package/dist/reportError.d.ts.map +1 -0
  113. package/dist/reportError.js +28 -0
  114. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +1 -1
  115. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  116. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  117. package/dist/{api/routing → routing}/middleware/middleware.d.ts +2 -2
  118. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  119. package/dist/routing/middleware/middleware.js +128 -0
  120. package/dist/{api/routing → routing}/middleware.d.ts +1 -1
  121. package/dist/routing/middleware.d.ts.map +1 -0
  122. package/dist/{api/routing → routing}/middleware.js +1 -1
  123. package/dist/{api/routing → routing}/schema/jwt.d.ts +1 -1
  124. package/dist/routing/schema/jwt.d.ts.map +1 -0
  125. package/dist/routing/schema/jwt.js +13 -0
  126. package/dist/routing/tsort.d.ts +8 -0
  127. package/dist/routing/tsort.d.ts.map +1 -0
  128. package/dist/routing/tsort.js +51 -0
  129. package/dist/{api/routing → routing}/utils.d.ts +1 -1
  130. package/dist/routing/utils.d.ts.map +1 -0
  131. package/dist/routing/utils.js +45 -0
  132. package/dist/routing.d.ts +184 -0
  133. package/dist/routing.d.ts.map +1 -0
  134. package/dist/{api/routing.js → routing.js} +1 -1
  135. package/dist/{api/setupRequest.d.ts → setupRequest.d.ts} +2 -2
  136. package/dist/setupRequest.d.ts.map +1 -0
  137. package/dist/setupRequest.js +70 -0
  138. package/dist/{api/util.d.ts → util.d.ts} +1 -1
  139. package/dist/util.d.ts.map +1 -0
  140. package/dist/util.js +14 -0
  141. package/examples/query.ts +2 -2
  142. package/package.json +84 -200
  143. package/src/Emailer/Sendgrid.ts +20 -5
  144. package/src/Emailer/fake.ts +1 -1
  145. package/src/QueueMaker/SQLQueue.ts +3 -3
  146. package/src/QueueMaker/memQueue.ts +3 -3
  147. package/src/QueueMaker/sbqueue.ts +3 -3
  148. package/src/RequestFiberSet.ts +1 -1
  149. package/src/{adapters/SQL → SQL}/Model.ts +1 -1
  150. package/src/{adapters/ServiceBus.ts → ServiceBus.ts} +1 -1
  151. package/src/Store/ContextMapContainer.ts +1 -1
  152. package/src/Store/Cosmos/query.ts +3 -3
  153. package/src/Store/Cosmos.ts +4 -4
  154. package/src/Store/Disk.ts +2 -2
  155. package/src/Store/Memory.ts +4 -4
  156. package/src/Store/SQL/Pg.ts +3 -3
  157. package/src/Store/SQL/query.ts +2 -2
  158. package/src/Store/SQL.ts +3 -3
  159. package/src/Store/codeFilter.ts +3 -3
  160. package/src/Store/index.ts +2 -4
  161. package/src/Store/utils.ts +1 -1
  162. package/src/errorReporter.ts +1 -1
  163. package/src/index.ts +2 -1
  164. package/src/{api/internal → internal}/RequestContextMiddleware.ts +3 -3
  165. package/src/{api/internal → internal}/events.ts +2 -2
  166. package/src/{api/layerUtils.ts → layerUtils.ts} +1 -1
  167. package/src/logger/jsonLogger.ts +1 -1
  168. package/src/logger/logFmtLogger.ts +1 -1
  169. package/src/logger/shared.ts +1 -1
  170. package/src/{adapters/redis-client.ts → redis-client.ts} +1 -1
  171. package/src/{api/reportError.ts → reportError.ts} +1 -1
  172. package/src/{api/routing → routing}/middleware/middleware.ts +4 -4
  173. package/src/{api/setupRequest.ts → setupRequest.ts} +3 -3
  174. package/test/auth.test.ts +1 -1
  175. package/test/contextProvider.test.ts +1 -1
  176. package/test/controller.test.ts +3 -3
  177. package/test/cosmos-query.test.ts +1 -1
  178. package/test/dist/controller.test.d.ts.map +1 -1
  179. package/test/dist/query.test.d.ts.map +1 -1
  180. package/test/dist/rawQuery.test.d.ts.map +1 -1
  181. package/test/layerUtils.test.ts +1 -1
  182. package/test/query.test.ts +4 -4
  183. package/test/rawQuery.test.ts +4 -4
  184. package/test/repository-ext.test.ts +3 -3
  185. package/test/router-generator.test.ts +3 -3
  186. package/test/routing-interruptibility.test.ts +2 -2
  187. package/test/rpc-context-map-streaming.test.ts +3 -3
  188. package/test/rpc-e2e-invalidation.test.ts +2 -2
  189. package/test/rpc-multi-middleware.test.ts +1 -1
  190. package/test/rpc-stream-fullstack.test.ts +2 -2
  191. package/test/validateSample.test.ts +3 -3
  192. package/dist/Emailer/service.d.ts +0 -64
  193. package/dist/Emailer/service.d.ts.map +0 -1
  194. package/dist/Emailer/service.js +0 -7
  195. package/dist/Emailer.d.ts +0 -2
  196. package/dist/Emailer.d.ts.map +0 -1
  197. package/dist/Emailer.js +0 -2
  198. package/dist/Model/Repository/Registry.d.ts +0 -21
  199. package/dist/Model/Repository/Registry.d.ts.map +0 -1
  200. package/dist/Model/Repository/Registry.js +0 -18
  201. package/dist/Model/Repository/ext.d.ts +0 -60
  202. package/dist/Model/Repository/ext.d.ts.map +0 -1
  203. package/dist/Model/Repository/ext.js +0 -122
  204. package/dist/Model/Repository/internal/internal.d.ts +0 -62
  205. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  206. package/dist/Model/Repository/internal/internal.js +0 -398
  207. package/dist/Model/Repository/legacy.d.ts +0 -21
  208. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  209. package/dist/Model/Repository/legacy.js +0 -2
  210. package/dist/Model/Repository/makeRepo.d.ts +0 -53
  211. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  212. package/dist/Model/Repository/makeRepo.js +0 -27
  213. package/dist/Model/Repository/service.d.ts +0 -97
  214. package/dist/Model/Repository/service.d.ts.map +0 -1
  215. package/dist/Model/Repository/service.js +0 -2
  216. package/dist/Model/Repository/validation.d.ts +0 -71
  217. package/dist/Model/Repository/validation.d.ts.map +0 -1
  218. package/dist/Model/Repository/validation.js +0 -32
  219. package/dist/Model/Repository.d.ts +0 -7
  220. package/dist/Model/Repository.d.ts.map +0 -1
  221. package/dist/Model/Repository.js +0 -7
  222. package/dist/Model/dsl.d.ts +0 -33
  223. package/dist/Model/dsl.d.ts.map +0 -1
  224. package/dist/Model/dsl.js +0 -43
  225. package/dist/Model/filter/filterApi.d.ts +0 -30
  226. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  227. package/dist/Model/filter/filterApi.js +0 -2
  228. package/dist/Model/filter/types/errors.d.ts +0 -29
  229. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  230. package/dist/Model/filter/types/errors.js +0 -2
  231. package/dist/Model/filter/types/fields.d.ts +0 -15
  232. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  233. package/dist/Model/filter/types/fields.js +0 -2
  234. package/dist/Model/filter/types/path/common.d.ts +0 -316
  235. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  236. package/dist/Model/filter/types/path/common.js +0 -2
  237. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  238. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  239. package/dist/Model/filter/types/path/eager.js +0 -31
  240. package/dist/Model/filter/types/path/index.d.ts +0 -4
  241. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  242. package/dist/Model/filter/types/path/index.js +0 -3
  243. package/dist/Model/filter/types/utils.d.ts +0 -79
  244. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  245. package/dist/Model/filter/types/utils.js +0 -2
  246. package/dist/Model/filter/types/validator.d.ts +0 -30
  247. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  248. package/dist/Model/filter/types/validator.js +0 -2
  249. package/dist/Model/filter/types.d.ts +0 -5
  250. package/dist/Model/filter/types.d.ts.map +0 -1
  251. package/dist/Model/filter/types.js +0 -7
  252. package/dist/Model/query/dsl.d.ts +0 -446
  253. package/dist/Model/query/dsl.d.ts.map +0 -1
  254. package/dist/Model/query/dsl.js +0 -339
  255. package/dist/Model/query/new-kid-interpreter.d.ts +0 -136
  256. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  257. package/dist/Model/query/new-kid-interpreter.js +0 -336
  258. package/dist/Model/query.d.ts +0 -15
  259. package/dist/Model/query.d.ts.map +0 -1
  260. package/dist/Model/query.js +0 -3
  261. package/dist/Model.d.ts +0 -5
  262. package/dist/Model.d.ts.map +0 -1
  263. package/dist/Model.js +0 -5
  264. package/dist/QueueMaker/service.d.ts +0 -13
  265. package/dist/QueueMaker/service.d.ts.map +0 -1
  266. package/dist/QueueMaker/service.js +0 -4
  267. package/dist/RequestContext.d.ts +0 -103
  268. package/dist/RequestContext.d.ts.map +0 -1
  269. package/dist/RequestContext.js +0 -49
  270. package/dist/Store/service.d.ts +0 -138
  271. package/dist/Store/service.d.ts.map +0 -1
  272. package/dist/Store/service.js +0 -95
  273. package/dist/Store.d.ts +0 -2
  274. package/dist/Store.d.ts.map +0 -1
  275. package/dist/Store.js +0 -2
  276. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  277. package/dist/adapters/SQL/Model.js +0 -469
  278. package/dist/adapters/SQL.d.ts.map +0 -1
  279. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  280. package/dist/adapters/ServiceBus.js +0 -108
  281. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  282. package/dist/adapters/cosmos-client.js +0 -11
  283. package/dist/adapters/index.d.ts +0 -8
  284. package/dist/adapters/index.d.ts.map +0 -1
  285. package/dist/adapters/index.js +0 -8
  286. package/dist/adapters/logger.d.ts +0 -9
  287. package/dist/adapters/logger.d.ts.map +0 -1
  288. package/dist/adapters/logger.js +0 -3
  289. package/dist/adapters/memQueue.d.ts.map +0 -1
  290. package/dist/adapters/memQueue.js +0 -21
  291. package/dist/adapters/mongo-client.d.ts.map +0 -1
  292. package/dist/adapters/mongo-client.js +0 -15
  293. package/dist/adapters/redis-client.d.ts.map +0 -1
  294. package/dist/adapters/redis-client.js +0 -98
  295. package/dist/api/ContextProvider.d.ts +0 -34
  296. package/dist/api/ContextProvider.d.ts.map +0 -1
  297. package/dist/api/ContextProvider.js +0 -40
  298. package/dist/api/codec.d.ts.map +0 -1
  299. package/dist/api/codec.js +0 -5
  300. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  301. package/dist/api/internal/RequestContextMiddleware.js +0 -46
  302. package/dist/api/internal/auth.d.ts.map +0 -1
  303. package/dist/api/internal/auth.js +0 -180
  304. package/dist/api/internal/events.d.ts.map +0 -1
  305. package/dist/api/internal/events.js +0 -49
  306. package/dist/api/internal/health.d.ts.map +0 -1
  307. package/dist/api/internal/health.js +0 -5
  308. package/dist/api/layerUtils.d.ts +0 -32
  309. package/dist/api/layerUtils.d.ts.map +0 -1
  310. package/dist/api/layerUtils.js +0 -17
  311. package/dist/api/middlewares.d.ts.map +0 -1
  312. package/dist/api/reportError.d.ts +0 -4
  313. package/dist/api/reportError.d.ts.map +0 -1
  314. package/dist/api/reportError.js +0 -28
  315. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  316. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  317. package/dist/api/routing/middleware/middleware.js +0 -128
  318. package/dist/api/routing/middleware.d.ts.map +0 -1
  319. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  320. package/dist/api/routing/schema/jwt.js +0 -13
  321. package/dist/api/routing/tsort.d.ts +0 -8
  322. package/dist/api/routing/tsort.d.ts.map +0 -1
  323. package/dist/api/routing/tsort.js +0 -51
  324. package/dist/api/routing/utils.d.ts.map +0 -1
  325. package/dist/api/routing/utils.js +0 -45
  326. package/dist/api/routing.d.ts +0 -184
  327. package/dist/api/routing.d.ts.map +0 -1
  328. package/dist/api/setupRequest.d.ts.map +0 -1
  329. package/dist/api/setupRequest.js +0 -70
  330. package/dist/api/util.d.ts.map +0 -1
  331. package/dist/api/util.js +0 -14
  332. package/src/Emailer/service.ts +0 -62
  333. package/src/Emailer.ts +0 -1
  334. package/src/Model/Repository/Registry.ts +0 -34
  335. package/src/Model/Repository/ext.ts +0 -375
  336. package/src/Model/Repository/internal/internal.ts +0 -692
  337. package/src/Model/Repository/legacy.ts +0 -29
  338. package/src/Model/Repository/makeRepo.ts +0 -144
  339. package/src/Model/Repository/service.ts +0 -639
  340. package/src/Model/Repository/validation.ts +0 -31
  341. package/src/Model/Repository.ts +0 -6
  342. package/src/Model/dsl.ts +0 -129
  343. package/src/Model/filter/filterApi.ts +0 -60
  344. package/src/Model/filter/types/errors.ts +0 -47
  345. package/src/Model/filter/types/fields.ts +0 -50
  346. package/src/Model/filter/types/path/common.ts +0 -404
  347. package/src/Model/filter/types/path/eager.ts +0 -297
  348. package/src/Model/filter/types/path/index.ts +0 -4
  349. package/src/Model/filter/types/utils.ts +0 -128
  350. package/src/Model/filter/types/validator.ts +0 -46
  351. package/src/Model/filter/types.ts +0 -6
  352. package/src/Model/query/dsl.ts +0 -2546
  353. package/src/Model/query/new-kid-interpreter.ts +0 -484
  354. package/src/Model/query.ts +0 -13
  355. package/src/Model.ts +0 -4
  356. package/src/QueueMaker/service.ts +0 -19
  357. package/src/RequestContext.ts +0 -62
  358. package/src/Store/service.ts +0 -233
  359. package/src/Store.ts +0 -1
  360. package/src/adapters/index.ts +0 -7
  361. package/src/adapters/logger.ts +0 -3
  362. /package/src/{api/ContextProvider.ts → ContextProvider.ts} +0 -0
  363. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  364. /package/src/{api/codec.ts → codec.ts} +0 -0
  365. /package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +0 -0
  366. /package/src/{api/internal → internal}/auth.ts +0 -0
  367. /package/src/{api/internal → internal}/health.ts +0 -0
  368. /package/src/{adapters/memQueue.ts → memQueue.ts} +0 -0
  369. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  370. /package/src/{adapters/mongo-client.ts → mongo-client.ts} +0 -0
  371. /package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +0 -0
  372. /package/src/{api/routing → routing}/middleware.ts +0 -0
  373. /package/src/{api/routing → routing}/schema/jwt.ts +0 -0
  374. /package/src/{api/routing → routing}/tsort.ts +0 -0
  375. /package/src/{api/routing → routing}/utils.ts +0 -0
  376. /package/src/{api/routing.ts → routing.ts} +0 -0
  377. /package/src/{api/util.ts → util.ts} +0 -0
@@ -1,233 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import type { UniqueKey } from "@azure/cosmos"
3
- import type { NonEmptyReadonlyArray } from "effect-app/Array"
4
- import * as Context from "effect-app/Context"
5
- import * as Effect from "effect-app/Effect"
6
- import type * as Option from "effect-app/Option"
7
- import type * as Redacted from "effect/Redacted"
8
- import * as Semaphore from "effect/Semaphore"
9
- import type { OptimisticConcurrencyException } from "../errors.js"
10
- import type { FilterResult } from "../Model/filter/filterApi.js"
11
- import type { FieldValues } from "../Model/filter/types.js"
12
- import type { FieldPath } from "../Model/filter/types/path/index.js"
13
- import type { AggregateIrExpression, ComputedProjectionIrExpression, RawQuery } from "../Model/query.js"
14
-
15
- export interface StoreConfig<E> {
16
- partitionValue: (e?: E) => string
17
- /**
18
- * Primarily used for testing, creating namespaces in the database to separate data e.g to run multiple tests in isolation within the same database.
19
- * Memory/Disk use separate store instances per namespace. CosmosDB uses namespace-prefixed partition keys. SQL uses a `_namespace` column.
20
- */
21
- allowNamespace?: (namespace: string) => boolean
22
- /**
23
- * just in time migrations, supported by the database driver, supporting queries, for simple default values
24
- */
25
- defaultValues?: Partial<E>
26
-
27
- /**
28
- * How many items can be processed in one batch at a time.
29
- * Defaults to 100 for CosmosDB.
30
- */
31
- maxBulkSize?: number
32
-
33
- /**
34
- * Unique indexes, mainly for CosmosDB
35
- */
36
- uniqueKeys?: UniqueKey[]
37
- }
38
-
39
- export type SupportedValues = string | boolean | number | null
40
- export type SupportedValues2 = string | boolean | number
41
-
42
- // default is eq
43
- export type Where =
44
- | { key: string; t?: "eq" | "not-eq"; value: SupportedValues }
45
- | { key: string; t: "gt" | "lt" | "gte" | "lte"; value: SupportedValues2 }
46
- | {
47
- key: string
48
- t: "contains" | "starts-with" | "ends-with" | "not-contains" | "not-starts-with" | "not-ends-with"
49
- value: string
50
- }
51
- | { key: string; t: "includes" | "not-includes"; value: string }
52
- | {
53
- key: string
54
- t: "in" | "not-in"
55
- value: readonly (SupportedValues)[]
56
- }
57
-
58
- export type Filter = readonly FilterResult[]
59
-
60
- export interface O<TFieldValues extends FieldValues> {
61
- key: FieldPath<TFieldValues>
62
- direction: "ASC" | "DESC"
63
- }
64
-
65
- export interface FilterArgs<Encoded extends FieldValues, U extends keyof Encoded = never> {
66
- t: Encoded
67
- filter?: Filter | undefined
68
- select?:
69
- | NonEmptyReadonlyArray<
70
- U | { key: string; subKeys: readonly string[] } | {
71
- key: string
72
- computed: ComputedProjectionIrExpression
73
- } | {
74
- key: string
75
- path: string
76
- } | {
77
- key: string
78
- aggregate: AggregateIrExpression
79
- }
80
- >
81
- | undefined
82
- order?: NonEmptyReadonlyArray<O<NoInfer<Encoded>>>
83
- limit?: number | undefined
84
- skip?: number | undefined
85
- }
86
-
87
- export type FilterFunc<Encoded extends FieldValues> = <U extends keyof Encoded = never>(
88
- args: FilterArgs<Encoded, U>
89
- ) => Effect.Effect<(U extends undefined ? Encoded : Pick<Encoded, U>)[]>
90
-
91
- export interface Store<
92
- IdKey extends keyof Encoded,
93
- Encoded extends FieldValues,
94
- PM extends PersistenceModelType<Encoded> = PersistenceModelType<Encoded>
95
- > {
96
- all: Effect.Effect<PM[]>
97
- filter: FilterFunc<Encoded>
98
- find: (id: Encoded[IdKey]) => Effect.Effect<Option.Option<PM>>
99
- set: (e: PM) => Effect.Effect<PM, OptimisticConcurrencyException>
100
- batchSet: (
101
- items: NonEmptyReadonlyArray<PM>
102
- ) => Effect.Effect<NonEmptyReadonlyArray<PM>, OptimisticConcurrencyException>
103
- bulkSet: (
104
- items: NonEmptyReadonlyArray<PM>
105
- ) => Effect.Effect<NonEmptyReadonlyArray<PM>, OptimisticConcurrencyException>
106
- batchRemove: (ids: NonEmptyReadonlyArray<Encoded[IdKey]>, partitionKey?: string) => Effect.Effect<void>
107
- queryRaw: <Out>(query: RawQuery<Encoded, Out>) => Effect.Effect<readonly Out[]>
108
- /**
109
- * Explicitly seed a namespace. Primary is seeded eagerly on initialization.
110
- * Non-primary namespaces must be seeded explicitly before use.
111
- */
112
- seedNamespace: (namespace: string) => Effect.Effect<void>
113
- }
114
-
115
- export class StoreMaker extends Context.Opaque<StoreMaker, {
116
- make: <IdKey extends keyof Encoded, Encoded extends FieldValues, R = never, E = never>(
117
- name: string,
118
- idKey: IdKey,
119
- seed?: Effect.Effect<Iterable<Encoded>, E, R>,
120
- config?: StoreConfig<Encoded>
121
- ) => Effect.Effect<Store<IdKey, Encoded>, E, R>
122
- }>()("effect-app/StoreMaker") {
123
- }
124
-
125
- export const makeContextMap = () => {
126
- const etags = new Map<string, string>()
127
- const getEtag = (id: string) => etags.get(id)
128
- const setEtag = (id: string, eTag: string | undefined) => {
129
- if (eTag === undefined) {
130
- etags.delete(id)
131
- } else {
132
- etags.set(id, eTag)
133
- }
134
- }
135
-
136
- // const parsedCache = new Map<
137
- // Parser<any, any, any>,
138
- // Map<unknown, These.These<unknown, unknown>>
139
- // >()
140
-
141
- // const parserCache = new Map<
142
- // Parser<any, any, any>,
143
- // (i: any) => These.These<any, any>
144
- // >()
145
-
146
- // const setAndReturn = <I, E, A>(
147
- // p: Parser<I, E, A>,
148
- // np: (i: I) => These.These<E, A>
149
- // ) => {
150
- // parserCache.set(p, np)
151
- // return np
152
- // }
153
-
154
- // const parserEnv: ParserEnv = {
155
- // // TODO: lax: true would turn off refinement checks, may help on large payloads
156
- // // but of course removes confirming of validation rules (which may be okay for a database owned by the app, as we write safely)
157
- // lax: false,
158
- // cache: {
159
- // getOrSetParser: (p) => parserCache.get(p) ?? setAndReturn(p, (i) => parserEnv.cache!.getOrSet(i, p)),
160
- // getOrSetParsers: (parsers) => {
161
- // return Object.entries(parsers).reduce((prev, [k, v]) => {
162
- // prev[k] = parserEnv.cache!.getOrSetParser(v)
163
- // return prev
164
- // }, {} as any)
165
- // },
166
- // getOrSet: (i, parse): any => {
167
- // const c = parsedCache.get(parse)
168
- // if (c) {
169
- // const f = c.get(i)
170
- // if (f) {
171
- // // console.log("$$$ cache hit", i)
172
- // return f
173
- // } else {
174
- // const nf = parse(i, parserEnv)
175
- // c.set(i, nf)
176
- // return nf
177
- // }
178
- // } else {
179
- // const nf = parse(i, parserEnv)
180
- // parsedCache.set(parse, new Map([[i, nf]]))
181
- // return nf
182
- // }
183
- // }
184
- // }
185
- // }
186
-
187
- const store = new Map<symbol, unknown>()
188
- const sem = Semaphore.makeUnsafe(1)
189
-
190
- return {
191
- createdAt: new Date(),
192
- get: getEtag,
193
- set: setEtag,
194
- getOrCreateStore: <T>(key: symbol, make: () => T): T => {
195
- let value = store.get(key) as T | undefined
196
- if (value === undefined) {
197
- value = make()
198
- store.set(key, value)
199
- }
200
- return value
201
- },
202
- getOrCreateStoreEffect: <T, E, R>(key: symbol, make: Effect.Effect<T, E, R>): Effect.Effect<T, E, R> =>
203
- sem.withPermits(1)(Effect.uninterruptible(Effect.gen(function*() {
204
- const value = store.get(key) as T | undefined
205
- if (value !== undefined) return value
206
- const v = yield* make
207
- store.set(key, v)
208
- return v
209
- }))),
210
- clear: () => {
211
- etags.clear()
212
- store.clear()
213
- }
214
- }
215
- }
216
-
217
- const makeMap = Effect.acquireRelease(
218
- Effect.sync(() => makeContextMap()),
219
- (m) => Effect.sync(() => m.clear())
220
- )
221
-
222
- export class ContextMap extends Context.Opaque<ContextMap>()("effect-app/ContextMap", { make: makeMap }) {
223
- }
224
-
225
- export type PersistenceModelType<Encoded extends object> = Encoded & {
226
- _etag?: string | undefined
227
- }
228
-
229
- export interface StorageConfig {
230
- url: Redacted.Redacted
231
- prefix: string
232
- dbName: string
233
- }
package/src/Store.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./Store/service.js"
@@ -1,7 +0,0 @@
1
- export * from "./cosmos-client.js"
2
- export * from "./logger.js"
3
- export * from "./memQueue.js"
4
- export * from "./mongo-client.js"
5
- export * from "./redis-client.js"
6
- export * from "./ServiceBus.js"
7
- export * from "./SQL.js"
@@ -1,3 +0,0 @@
1
- import { makeLog } from "effect-app/utils/logger"
2
-
3
- export const InfraLogger = makeLog("@effect-app/infra", "info")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes