@effect-app/infra 4.0.0-beta.247 → 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 (378) hide show
  1. package/CHANGELOG.md +24 -0
  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/logger.d.ts +1 -1
  100. package/dist/{adapters/memQueue.d.ts → memQueue.d.ts} +1 -1
  101. package/dist/memQueue.d.ts.map +1 -0
  102. package/dist/memQueue.js +21 -0
  103. package/dist/{api/middlewares.d.ts → middlewares.d.ts} +1 -1
  104. package/dist/middlewares.d.ts.map +1 -0
  105. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  106. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +1 -1
  107. package/dist/mongo-client.d.ts.map +1 -0
  108. package/dist/mongo-client.js +15 -0
  109. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +1 -1
  110. package/dist/redis-client.d.ts.map +1 -0
  111. package/dist/redis-client.js +98 -0
  112. package/dist/reportError.d.ts +4 -0
  113. package/dist/reportError.d.ts.map +1 -0
  114. package/dist/reportError.js +28 -0
  115. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +1 -1
  116. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  117. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  118. package/dist/{api/routing → routing}/middleware/middleware.d.ts +2 -2
  119. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  120. package/dist/routing/middleware/middleware.js +128 -0
  121. package/dist/{api/routing → routing}/middleware.d.ts +1 -1
  122. package/dist/routing/middleware.d.ts.map +1 -0
  123. package/dist/{api/routing → routing}/middleware.js +1 -1
  124. package/dist/{api/routing → routing}/schema/jwt.d.ts +1 -1
  125. package/dist/routing/schema/jwt.d.ts.map +1 -0
  126. package/dist/routing/schema/jwt.js +13 -0
  127. package/dist/routing/tsort.d.ts +8 -0
  128. package/dist/routing/tsort.d.ts.map +1 -0
  129. package/dist/routing/tsort.js +51 -0
  130. package/dist/{api/routing → routing}/utils.d.ts +1 -1
  131. package/dist/routing/utils.d.ts.map +1 -0
  132. package/dist/routing/utils.js +45 -0
  133. package/dist/routing.d.ts +184 -0
  134. package/dist/routing.d.ts.map +1 -0
  135. package/dist/{api/routing.js → routing.js} +1 -1
  136. package/dist/{api/setupRequest.d.ts → setupRequest.d.ts} +2 -2
  137. package/dist/setupRequest.d.ts.map +1 -0
  138. package/dist/setupRequest.js +70 -0
  139. package/dist/{api/util.d.ts → util.d.ts} +1 -1
  140. package/dist/util.d.ts.map +1 -0
  141. package/dist/util.js +14 -0
  142. package/examples/query.ts +2 -2
  143. package/package.json +84 -200
  144. package/src/Emailer/Sendgrid.ts +20 -5
  145. package/src/Emailer/fake.ts +1 -1
  146. package/src/QueueMaker/SQLQueue.ts +3 -3
  147. package/src/QueueMaker/memQueue.ts +3 -3
  148. package/src/QueueMaker/sbqueue.ts +3 -3
  149. package/src/RequestFiberSet.ts +1 -1
  150. package/src/{adapters/SQL → SQL}/Model.ts +1 -1
  151. package/src/{adapters/ServiceBus.ts → ServiceBus.ts} +1 -1
  152. package/src/Store/ContextMapContainer.ts +1 -1
  153. package/src/Store/Cosmos/query.ts +3 -3
  154. package/src/Store/Cosmos.ts +4 -4
  155. package/src/Store/Disk.ts +2 -2
  156. package/src/Store/Memory.ts +4 -4
  157. package/src/Store/SQL/Pg.ts +3 -3
  158. package/src/Store/SQL/query.ts +2 -2
  159. package/src/Store/SQL.ts +3 -3
  160. package/src/Store/codeFilter.ts +3 -3
  161. package/src/Store/index.ts +2 -4
  162. package/src/Store/utils.ts +1 -1
  163. package/src/errorReporter.ts +1 -1
  164. package/src/index.ts +2 -1
  165. package/src/{api/internal → internal}/RequestContextMiddleware.ts +3 -3
  166. package/src/{api/internal → internal}/events.ts +2 -2
  167. package/src/{api/layerUtils.ts → layerUtils.ts} +1 -1
  168. package/src/logger/jsonLogger.ts +1 -1
  169. package/src/logger/logFmtLogger.ts +1 -1
  170. package/src/logger/shared.ts +1 -1
  171. package/src/{adapters/redis-client.ts → redis-client.ts} +1 -1
  172. package/src/{api/reportError.ts → reportError.ts} +1 -1
  173. package/src/{api/routing → routing}/middleware/middleware.ts +4 -4
  174. package/src/{api/routing.ts → routing.ts} +13 -13
  175. package/src/{api/setupRequest.ts → setupRequest.ts} +3 -3
  176. package/test/auth.test.ts +1 -1
  177. package/test/contextProvider.test.ts +1 -1
  178. package/test/controller.test.ts +3 -3
  179. package/test/cosmos-query.test.ts +1 -1
  180. package/test/dist/controller.test.d.ts.map +1 -1
  181. package/test/dist/query.test.d.ts.map +1 -1
  182. package/test/dist/rawQuery.test.d.ts.map +1 -1
  183. package/test/layerUtils.test.ts +1 -1
  184. package/test/query.test.ts +4 -4
  185. package/test/rawQuery.test.ts +4 -4
  186. package/test/repository-ext.test.ts +3 -3
  187. package/test/router-generator.test.ts +3 -3
  188. package/test/routing-interruptibility.test.ts +2 -2
  189. package/test/rpc-context-map-streaming.test.ts +3 -3
  190. package/test/rpc-e2e-invalidation.test.ts +2 -2
  191. package/test/rpc-multi-middleware.test.ts +1 -1
  192. package/test/rpc-stream-fullstack.test.ts +2 -2
  193. package/test/validateSample.test.ts +3 -3
  194. package/dist/Emailer/service.d.ts +0 -64
  195. package/dist/Emailer/service.d.ts.map +0 -1
  196. package/dist/Emailer/service.js +0 -7
  197. package/dist/Emailer.d.ts +0 -2
  198. package/dist/Emailer.d.ts.map +0 -1
  199. package/dist/Emailer.js +0 -2
  200. package/dist/Model/Repository/Registry.d.ts +0 -21
  201. package/dist/Model/Repository/Registry.d.ts.map +0 -1
  202. package/dist/Model/Repository/Registry.js +0 -18
  203. package/dist/Model/Repository/ext.d.ts +0 -60
  204. package/dist/Model/Repository/ext.d.ts.map +0 -1
  205. package/dist/Model/Repository/ext.js +0 -122
  206. package/dist/Model/Repository/internal/internal.d.ts +0 -62
  207. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  208. package/dist/Model/Repository/internal/internal.js +0 -398
  209. package/dist/Model/Repository/legacy.d.ts +0 -21
  210. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  211. package/dist/Model/Repository/legacy.js +0 -2
  212. package/dist/Model/Repository/makeRepo.d.ts +0 -53
  213. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  214. package/dist/Model/Repository/makeRepo.js +0 -27
  215. package/dist/Model/Repository/service.d.ts +0 -97
  216. package/dist/Model/Repository/service.d.ts.map +0 -1
  217. package/dist/Model/Repository/service.js +0 -2
  218. package/dist/Model/Repository/validation.d.ts +0 -71
  219. package/dist/Model/Repository/validation.d.ts.map +0 -1
  220. package/dist/Model/Repository/validation.js +0 -32
  221. package/dist/Model/Repository.d.ts +0 -7
  222. package/dist/Model/Repository.d.ts.map +0 -1
  223. package/dist/Model/Repository.js +0 -7
  224. package/dist/Model/dsl.d.ts +0 -33
  225. package/dist/Model/dsl.d.ts.map +0 -1
  226. package/dist/Model/dsl.js +0 -43
  227. package/dist/Model/filter/filterApi.d.ts +0 -30
  228. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  229. package/dist/Model/filter/filterApi.js +0 -2
  230. package/dist/Model/filter/types/errors.d.ts +0 -29
  231. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  232. package/dist/Model/filter/types/errors.js +0 -2
  233. package/dist/Model/filter/types/fields.d.ts +0 -15
  234. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  235. package/dist/Model/filter/types/fields.js +0 -2
  236. package/dist/Model/filter/types/path/common.d.ts +0 -316
  237. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  238. package/dist/Model/filter/types/path/common.js +0 -2
  239. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  240. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  241. package/dist/Model/filter/types/path/eager.js +0 -31
  242. package/dist/Model/filter/types/path/index.d.ts +0 -4
  243. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  244. package/dist/Model/filter/types/path/index.js +0 -3
  245. package/dist/Model/filter/types/utils.d.ts +0 -79
  246. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  247. package/dist/Model/filter/types/utils.js +0 -2
  248. package/dist/Model/filter/types/validator.d.ts +0 -30
  249. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  250. package/dist/Model/filter/types/validator.js +0 -2
  251. package/dist/Model/filter/types.d.ts +0 -5
  252. package/dist/Model/filter/types.d.ts.map +0 -1
  253. package/dist/Model/filter/types.js +0 -7
  254. package/dist/Model/query/dsl.d.ts +0 -446
  255. package/dist/Model/query/dsl.d.ts.map +0 -1
  256. package/dist/Model/query/dsl.js +0 -339
  257. package/dist/Model/query/new-kid-interpreter.d.ts +0 -136
  258. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  259. package/dist/Model/query/new-kid-interpreter.js +0 -336
  260. package/dist/Model/query.d.ts +0 -15
  261. package/dist/Model/query.d.ts.map +0 -1
  262. package/dist/Model/query.js +0 -3
  263. package/dist/Model.d.ts +0 -5
  264. package/dist/Model.d.ts.map +0 -1
  265. package/dist/Model.js +0 -5
  266. package/dist/QueueMaker/service.d.ts +0 -13
  267. package/dist/QueueMaker/service.d.ts.map +0 -1
  268. package/dist/QueueMaker/service.js +0 -4
  269. package/dist/RequestContext.d.ts +0 -103
  270. package/dist/RequestContext.d.ts.map +0 -1
  271. package/dist/RequestContext.js +0 -49
  272. package/dist/Store/service.d.ts +0 -138
  273. package/dist/Store/service.d.ts.map +0 -1
  274. package/dist/Store/service.js +0 -95
  275. package/dist/Store.d.ts +0 -2
  276. package/dist/Store.d.ts.map +0 -1
  277. package/dist/Store.js +0 -2
  278. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  279. package/dist/adapters/SQL/Model.js +0 -469
  280. package/dist/adapters/SQL.d.ts.map +0 -1
  281. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  282. package/dist/adapters/ServiceBus.js +0 -108
  283. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  284. package/dist/adapters/cosmos-client.js +0 -11
  285. package/dist/adapters/index.d.ts +0 -8
  286. package/dist/adapters/index.d.ts.map +0 -1
  287. package/dist/adapters/index.js +0 -8
  288. package/dist/adapters/logger.d.ts +0 -9
  289. package/dist/adapters/logger.d.ts.map +0 -1
  290. package/dist/adapters/logger.js +0 -3
  291. package/dist/adapters/memQueue.d.ts.map +0 -1
  292. package/dist/adapters/memQueue.js +0 -21
  293. package/dist/adapters/mongo-client.d.ts.map +0 -1
  294. package/dist/adapters/mongo-client.js +0 -15
  295. package/dist/adapters/redis-client.d.ts.map +0 -1
  296. package/dist/adapters/redis-client.js +0 -98
  297. package/dist/api/ContextProvider.d.ts +0 -34
  298. package/dist/api/ContextProvider.d.ts.map +0 -1
  299. package/dist/api/ContextProvider.js +0 -40
  300. package/dist/api/codec.d.ts.map +0 -1
  301. package/dist/api/codec.js +0 -5
  302. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  303. package/dist/api/internal/RequestContextMiddleware.js +0 -46
  304. package/dist/api/internal/auth.d.ts.map +0 -1
  305. package/dist/api/internal/auth.js +0 -180
  306. package/dist/api/internal/events.d.ts.map +0 -1
  307. package/dist/api/internal/events.js +0 -49
  308. package/dist/api/internal/health.d.ts.map +0 -1
  309. package/dist/api/internal/health.js +0 -5
  310. package/dist/api/layerUtils.d.ts +0 -32
  311. package/dist/api/layerUtils.d.ts.map +0 -1
  312. package/dist/api/layerUtils.js +0 -17
  313. package/dist/api/middlewares.d.ts.map +0 -1
  314. package/dist/api/reportError.d.ts +0 -4
  315. package/dist/api/reportError.d.ts.map +0 -1
  316. package/dist/api/reportError.js +0 -28
  317. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  318. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  319. package/dist/api/routing/middleware/middleware.js +0 -128
  320. package/dist/api/routing/middleware.d.ts.map +0 -1
  321. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  322. package/dist/api/routing/schema/jwt.js +0 -13
  323. package/dist/api/routing/tsort.d.ts +0 -8
  324. package/dist/api/routing/tsort.d.ts.map +0 -1
  325. package/dist/api/routing/tsort.js +0 -51
  326. package/dist/api/routing/utils.d.ts.map +0 -1
  327. package/dist/api/routing/utils.js +0 -45
  328. package/dist/api/routing.d.ts +0 -184
  329. package/dist/api/routing.d.ts.map +0 -1
  330. package/dist/api/setupRequest.d.ts.map +0 -1
  331. package/dist/api/setupRequest.js +0 -70
  332. package/dist/api/util.d.ts.map +0 -1
  333. package/dist/api/util.js +0 -14
  334. package/src/Emailer/service.ts +0 -62
  335. package/src/Emailer.ts +0 -1
  336. package/src/Model/Repository/Registry.ts +0 -34
  337. package/src/Model/Repository/ext.ts +0 -375
  338. package/src/Model/Repository/internal/internal.ts +0 -692
  339. package/src/Model/Repository/legacy.ts +0 -29
  340. package/src/Model/Repository/makeRepo.ts +0 -144
  341. package/src/Model/Repository/service.ts +0 -639
  342. package/src/Model/Repository/validation.ts +0 -31
  343. package/src/Model/Repository.ts +0 -6
  344. package/src/Model/dsl.ts +0 -129
  345. package/src/Model/filter/filterApi.ts +0 -60
  346. package/src/Model/filter/types/errors.ts +0 -47
  347. package/src/Model/filter/types/fields.ts +0 -50
  348. package/src/Model/filter/types/path/common.ts +0 -404
  349. package/src/Model/filter/types/path/eager.ts +0 -297
  350. package/src/Model/filter/types/path/index.ts +0 -4
  351. package/src/Model/filter/types/utils.ts +0 -128
  352. package/src/Model/filter/types/validator.ts +0 -46
  353. package/src/Model/filter/types.ts +0 -6
  354. package/src/Model/query/dsl.ts +0 -2546
  355. package/src/Model/query/new-kid-interpreter.ts +0 -484
  356. package/src/Model/query.ts +0 -13
  357. package/src/Model.ts +0 -4
  358. package/src/QueueMaker/service.ts +0 -19
  359. package/src/RequestContext.ts +0 -62
  360. package/src/Store/service.ts +0 -233
  361. package/src/Store.ts +0 -1
  362. package/src/adapters/index.ts +0 -7
  363. package/src/adapters/logger.ts +0 -3
  364. /package/src/{api/ContextProvider.ts → ContextProvider.ts} +0 -0
  365. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  366. /package/src/{api/codec.ts → codec.ts} +0 -0
  367. /package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +0 -0
  368. /package/src/{api/internal → internal}/auth.ts +0 -0
  369. /package/src/{api/internal → internal}/health.ts +0 -0
  370. /package/src/{adapters/memQueue.ts → memQueue.ts} +0 -0
  371. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  372. /package/src/{adapters/mongo-client.ts → mongo-client.ts} +0 -0
  373. /package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +0 -0
  374. /package/src/{api/routing → routing}/middleware.ts +0 -0
  375. /package/src/{api/routing → routing}/schema/jwt.ts +0 -0
  376. /package/src/{api/routing → routing}/tsort.ts +0 -0
  377. /package/src/{api/routing → routing}/utils.ts +0 -0
  378. /package/src/{api/util.ts → util.ts} +0 -0
@@ -1,639 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import type { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client/errors"
3
- import type * as Effect from "effect-app/Effect"
4
- import type * as Option from "effect-app/Option"
5
- import type * as S from "effect-app/Schema"
6
- import type { NonNegativeInt } from "effect-app/Schema/numbers"
7
- import type * as PubSub from "effect/PubSub"
8
- import type { FieldValues, IsNever, ResolveFirstLevel } from "../filter/types.js"
9
- import type { QAll, Query, QueryProjection, RawQuery } from "../query.js"
10
- import type { Mapped } from "./legacy.js"
11
- import type { ValidationResult } from "./validation.js"
12
-
13
- export interface Repository<
14
- T,
15
- Encoded extends FieldValues,
16
- Evt,
17
- ItemType extends string,
18
- IdKey extends keyof T,
19
- RSchema,
20
- RPublish,
21
- RProvided = never
22
- > {
23
- readonly itemType: ItemType
24
- readonly idKey: IdKey
25
- readonly find: (id: T[IdKey]) => Effect.Effect<Option.Option<T>, never, RSchema>
26
- readonly all: Effect.Effect<T[], never, RSchema>
27
- readonly saveAndPublish: (
28
- items: Iterable<T>,
29
- events?: Iterable<Evt>
30
- ) => Effect.Effect<void, InvalidStateError | OptimisticConcurrencyException, RSchema | RPublish>
31
- readonly changeFeed: PubSub.PubSub<[T[], "save" | "remove"]>
32
- readonly removeAndPublish: (
33
- items: Iterable<T>,
34
- events?: Iterable<Evt>
35
- ) => Effect.Effect<void, never, RSchema | RPublish>
36
-
37
- readonly removeById: (
38
- idOrIds: T[IdKey] | ReadonlyArray<T[IdKey]>
39
- ) => Effect.Effect<void, never, RSchema>
40
-
41
- readonly queryRaw: <T, Out, R>(
42
- schema: S.Codec<T, Out, R>,
43
- raw: RawQuery<Encoded, Out>
44
- ) => Effect.Effect<readonly T[], S.SchemaError, R>
45
-
46
- /**
47
- * Explicitly seed a namespace. Primary is seeded eagerly on initialization.
48
- * Non-primary namespaces must be seeded explicitly before use.
49
- */
50
- readonly seedNamespace: (namespace: string) => Effect.Effect<void>
51
-
52
- readonly query: {
53
- // ending with projection
54
- <
55
- A,
56
- R,
57
- From extends FieldValues,
58
- TType extends "one" | "many" | "count" = "many",
59
- E extends boolean = false
60
- >(
61
- q: (
62
- initial: Query<Encoded>
63
- ) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
64
- ): Effect.Effect<
65
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
66
- | (TType extends "many" ? never : NotFoundError<ItemType>)
67
- | (TType extends "count" ? never : S.SchemaError),
68
- Exclude<R, RProvided> | RSchema
69
- >
70
- <
71
- A,
72
- R,
73
- From extends FieldValues,
74
- TType extends "one" | "many" | "count" = "many",
75
- $A = never,
76
- E extends boolean = false
77
- >(
78
- q1: (
79
- initial: Query<Encoded>
80
- ) => $A,
81
- q2: (
82
- _: $A
83
- ) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
84
- ): Effect.Effect<
85
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
86
- | (TType extends "many" ? never : NotFoundError<ItemType>)
87
- | (TType extends "count" ? never : S.SchemaError),
88
- Exclude<R, RProvided> | RSchema
89
- >
90
- <
91
- A,
92
- R,
93
- From extends FieldValues,
94
- TType extends "one" | "many" | "count" = "many",
95
- $A = never,
96
- $B = never,
97
- E extends boolean = false
98
- >(
99
- q1: (
100
- initial: Query<Encoded>
101
- ) => $A,
102
- q2: (_: $A) => $B,
103
- q3: (
104
- _: $B
105
- ) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
106
- ): Effect.Effect<
107
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
108
- | (TType extends "many" ? never : NotFoundError<ItemType>)
109
- | (TType extends "count" ? never : S.SchemaError),
110
- Exclude<R, RProvided> | RSchema
111
- >
112
- <
113
- A,
114
- R,
115
- From extends FieldValues,
116
- TType extends "one" | "many" | "count" = "many",
117
- $A = never,
118
- $B = never,
119
- $C = never,
120
- E extends boolean = false
121
- >(
122
- q1: (
123
- initial: Query<Encoded>
124
- ) => $A,
125
- q2: (_: $A) => $B,
126
- q3: (_: $B) => $C,
127
- q4: (
128
- _: $C
129
- ) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
130
- ): Effect.Effect<
131
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
132
- | (TType extends "many" ? never : NotFoundError<ItemType>)
133
- | (TType extends "count" ? never : S.SchemaError),
134
- Exclude<R, RProvided> | RSchema
135
- >
136
- <
137
- A,
138
- R,
139
- From extends FieldValues,
140
- TType extends "one" | "many" | "count" = "many",
141
- $A = never,
142
- $B = never,
143
- $C = never,
144
- $D = never,
145
- E extends boolean = false
146
- >(
147
- q1: (
148
- initial: Query<Encoded>
149
- ) => $A,
150
- q2: (_: $A) => $B,
151
- q3: (_: $B) => $C,
152
- q4: (_: $C) => $D,
153
- q5: (
154
- _: $D
155
- ) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
156
- ): Effect.Effect<
157
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
158
- | (TType extends "many" ? never : NotFoundError<ItemType>)
159
- | (TType extends "count" ? never : S.SchemaError),
160
- Exclude<R, RProvided> | RSchema
161
- >
162
- <
163
- A,
164
- R,
165
- From extends FieldValues,
166
- TType extends "one" | "many" | "count" = "many",
167
- $A = never,
168
- $B = never,
169
- $C = never,
170
- $D = never,
171
- $E = never,
172
- E extends boolean = false
173
- >(
174
- q1: (
175
- initial: Query<Encoded>
176
- ) => $A,
177
- q2: (_: $A) => $B,
178
- q3: (_: $B) => $C,
179
- q4: (_: $C) => $D,
180
- q5: (_: $D) => $E,
181
- q6: (_: $E) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
182
- ): Effect.Effect<
183
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
184
- | (TType extends "many" ? never : NotFoundError<ItemType>)
185
- | (TType extends "count" ? never : S.SchemaError),
186
- Exclude<R, RProvided> | RSchema
187
- >
188
- <
189
- A,
190
- R,
191
- From extends FieldValues,
192
- TType extends "one" | "many" | "count" = "many",
193
- $A = never,
194
- $B = never,
195
- $C = never,
196
- $D = never,
197
- $E = never,
198
- $F = never,
199
- E extends boolean = false
200
- >(
201
- q1: (
202
- initial: Query<Encoded>
203
- ) => $A,
204
- q2: (_: $A) => $B,
205
- q3: (_: $B) => $C,
206
- q4: (_: $C) => $D,
207
- q5: (_: $D) => $E,
208
- q6: (_: $E) => $F,
209
- q7: (_: $F) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
210
- ): Effect.Effect<
211
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
212
- | (TType extends "many" ? never : NotFoundError<ItemType>)
213
- | (TType extends "count" ? never : S.SchemaError),
214
- Exclude<R, RProvided> | RSchema
215
- >
216
- <
217
- A,
218
- R,
219
- From extends FieldValues,
220
- TType extends "one" | "many" | "count" = "many",
221
- $A = never,
222
- $B = never,
223
- $C = never,
224
- $D = never,
225
- $E = never,
226
- $F = never,
227
- $G = never,
228
- E extends boolean = false
229
- >(
230
- q1: (
231
- initial: Query<Encoded>
232
- ) => $A,
233
- q2: (_: $A) => $B,
234
- q3: (_: $B) => $C,
235
- q4: (_: $C) => $D,
236
- q5: (_: $D) => $E,
237
- q6: (_: $E) => $F,
238
- q7: (_: $F) => $G,
239
- q8: (_: $G) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
240
- ): Effect.Effect<
241
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
242
- | (TType extends "many" ? never : NotFoundError<ItemType>)
243
- | (TType extends "count" ? never : S.SchemaError),
244
- Exclude<R, RProvided> | RSchema
245
- >
246
- <
247
- A,
248
- R,
249
- From extends FieldValues,
250
- TType extends "one" | "many" | "count" = "many",
251
- $A = never,
252
- $B = never,
253
- $C = never,
254
- $D = never,
255
- $E = never,
256
- $F = never,
257
- $G = never,
258
- $H = never,
259
- E extends boolean = false
260
- >(
261
- q1: (
262
- initial: Query<Encoded>
263
- ) => $A,
264
- q2: (_: $A) => $B,
265
- q3: (_: $B) => $C,
266
- q4: (_: $C) => $D,
267
- q5: (_: $D) => $E,
268
- q6: (_: $E) => $F,
269
- q7: (_: $F) => $G,
270
- q8: (_: $G) => $H,
271
- q9: (_: $H) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
272
- ): Effect.Effect<
273
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
274
- | (TType extends "many" ? never : NotFoundError<ItemType>)
275
- | (TType extends "count" ? never : S.SchemaError),
276
- Exclude<R, RProvided> | RSchema
277
- >
278
- <
279
- A,
280
- R,
281
- From extends FieldValues,
282
- TType extends "one" | "many" | "count" = "many",
283
- $A = never,
284
- $B = never,
285
- $C = never,
286
- $D = never,
287
- $E = never,
288
- $F = never,
289
- $G = never,
290
- $H = never,
291
- $I = never,
292
- E extends boolean = false
293
- >(
294
- q1: (
295
- initial: Query<Encoded>
296
- ) => $A,
297
- q2: (_: $A) => $B,
298
- q3: (_: $B) => $C,
299
- q4: (_: $C) => $D,
300
- q5: (_: $D) => $E,
301
- q6: (_: $E) => $F,
302
- q7: (_: $F) => $G,
303
- q8: (_: $G) => $H,
304
- q9: (_: $H) => $I,
305
- q10: (_: $I) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
306
- ): Effect.Effect<
307
- TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
308
- | (TType extends "many" ? never : NotFoundError<ItemType>)
309
- | (TType extends "count" ? never : S.SchemaError),
310
- Exclude<R, RProvided> | RSchema
311
- >
312
-
313
- // ending with generic query
314
- <
315
- R = never,
316
- TType extends "one" | "many" = "many",
317
- EncodedRefined extends Encoded = Encoded,
318
- E extends boolean = false
319
- >(
320
- q: (initial: Query<Encoded>) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
321
- ): Effect.Effect<
322
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
323
- TType extends "many" ? never : NotFoundError<ItemType>,
324
- Exclude<R, RProvided> | RSchema
325
- >
326
- <
327
- R = never,
328
- TType extends "one" | "many" = "many",
329
- EncodedRefined extends Encoded = Encoded,
330
- $A = never,
331
- E extends boolean = false
332
- >(
333
- q1: (initial: Query<Encoded>) => $A,
334
- q2: (
335
- _: $A
336
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
337
- ): Effect.Effect<
338
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
339
- TType extends "many" ? never : NotFoundError<ItemType>,
340
- Exclude<R, RProvided> | RSchema
341
- >
342
- <
343
- R = never,
344
- TType extends "one" | "many" = "many",
345
- EncodedRefined extends Encoded = Encoded,
346
- $A = never,
347
- $B = never,
348
- E extends boolean = false
349
- >(
350
- q1: (initial: Query<Encoded>) => $A,
351
- q2: (
352
- _: $A
353
- ) => $B,
354
- q3: (
355
- _: $B
356
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
357
- ): Effect.Effect<
358
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
359
- TType extends "many" ? never : NotFoundError<ItemType>,
360
- Exclude<R, RProvided> | RSchema
361
- >
362
- <
363
- R = never,
364
- TType extends "one" | "many" = "many",
365
- EncodedRefined extends Encoded = Encoded,
366
- $A = never,
367
- $B = never,
368
- $C = never,
369
- E extends boolean = false
370
- >(
371
- q1: (initial: Query<Encoded>) => $A,
372
- q2: (_: $A) => $B,
373
- q3: (_: $B) => $C,
374
- q4: (
375
- _: $C
376
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
377
- ): Effect.Effect<
378
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
379
- TType extends "many" ? never : NotFoundError<ItemType>,
380
- Exclude<R, RProvided> | RSchema
381
- >
382
- <
383
- R = never,
384
- TType extends "one" | "many" = "many",
385
- EncodedRefined extends Encoded = Encoded,
386
- $A = never,
387
- $B = never,
388
- $C = never,
389
- $D = never,
390
- E extends boolean = false
391
- >(
392
- q1: (initial: Query<Encoded>) => $A,
393
- q2: (_: $A) => $B,
394
- q3: (_: $B) => $C,
395
- q4: (_: $C) => $D,
396
- q5: (
397
- _: $D
398
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
399
- ): Effect.Effect<
400
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
401
- TType extends "many" ? never : NotFoundError<ItemType>,
402
- Exclude<R, RProvided> | RSchema
403
- >
404
- <
405
- R = never,
406
- TType extends "one" | "many" = "many",
407
- EncodedRefined extends Encoded = Encoded,
408
- $A = never,
409
- $B = never,
410
- $C = never,
411
- $D = never,
412
- $E = never,
413
- E extends boolean = false
414
- >(
415
- q1: (initial: Query<Encoded>) => $A,
416
- q2: (_: $A) => $B,
417
- q3: (_: $B) => $C,
418
- q4: (_: $C) => $D,
419
- q5: (_: $D) => $E,
420
- q6: (
421
- _: $E
422
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
423
- ): Effect.Effect<
424
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
425
- TType extends "many" ? never : NotFoundError<ItemType>,
426
- Exclude<R, RProvided> | RSchema
427
- >
428
- <
429
- R = never,
430
- TType extends "one" | "many" = "many",
431
- EncodedRefined extends Encoded = Encoded,
432
- $A = never,
433
- $B = never,
434
- $C = never,
435
- $D = never,
436
- $E = never,
437
- $F = never,
438
- E extends boolean = false
439
- >(
440
- q1: (initial: Query<Encoded>) => $A,
441
- q2: (_: $A) => $B,
442
- q3: (_: $B) => $C,
443
- q4: (_: $C) => $D,
444
- q5: (_: $D) => $E,
445
- q6: (_: $E) => $F,
446
- q7: (
447
- _: $F
448
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
449
- ): Effect.Effect<
450
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
451
- TType extends "many" ? never : NotFoundError<ItemType>,
452
- Exclude<R, RProvided> | RSchema
453
- >
454
- <
455
- R = never,
456
- TType extends "one" | "many" = "many",
457
- EncodedRefined extends Encoded = Encoded,
458
- $A = never,
459
- $B = never,
460
- $C = never,
461
- $D = never,
462
- $E = never,
463
- $F = never,
464
- $G = never,
465
- E extends boolean = false
466
- >(
467
- q1: (initial: Query<Encoded>) => $A,
468
- q2: (_: $A) => $B,
469
- q3: (_: $B) => $C,
470
- q4: (_: $C) => $D,
471
- q5: (_: $D) => $E,
472
- q6: (_: $E) => $F,
473
- q7: (_: $F) => $G,
474
- q8: (
475
- _: $G
476
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
477
- ): Effect.Effect<
478
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
479
- : RefineTHelper<T, EncodedRefined>,
480
- TType extends "many" ? never : NotFoundError<ItemType>,
481
- Exclude<R, RProvided> | RSchema
482
- >
483
- <
484
- R = never,
485
- TType extends "one" | "many" = "many",
486
- EncodedRefined extends Encoded = Encoded,
487
- $A = never,
488
- $B = never,
489
- $C = never,
490
- $D = never,
491
- $E = never,
492
- $F = never,
493
- $G = never,
494
- $H = never,
495
- E extends boolean = false
496
- >(
497
- q1: (initial: Query<Encoded>) => $A,
498
- q2: (_: $A) => $B,
499
- q3: (_: $B) => $C,
500
- q4: (_: $C) => $D,
501
- q5: (_: $D) => $E,
502
- q6: (_: $E) => $F,
503
- q7: (_: $F) => $G,
504
- q8: (_: $G) => $H,
505
- q9: (
506
- _: $H
507
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
508
- ): Effect.Effect<
509
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
510
- : RefineTHelper<T, EncodedRefined>,
511
- TType extends "many" ? never : NotFoundError<ItemType>,
512
- Exclude<R, RProvided> | RSchema
513
- >
514
- <
515
- R = never,
516
- TType extends "one" | "many" = "many",
517
- EncodedRefined extends Encoded = Encoded,
518
- $A = never,
519
- $B = never,
520
- $C = never,
521
- $D = never,
522
- $E = never,
523
- $F = never,
524
- $G = never,
525
- $H = never,
526
- $I = never,
527
- E extends boolean = false
528
- >(
529
- q1: (initial: Query<Encoded>) => $A,
530
- q2: (_: $A) => $B,
531
- q3: (_: $B) => $C,
532
- q4: (_: $C) => $D,
533
- q5: (_: $D) => $E,
534
- q6: (_: $E) => $F,
535
- q7: (_: $F) => $G,
536
- q8: (_: $G) => $H,
537
- q9: (_: $H) => $I,
538
- q10: (
539
- _: $I
540
- ) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
541
- ): Effect.Effect<
542
- TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
543
- : RefineTHelper<T, EncodedRefined>,
544
- TType extends "many" ? never : NotFoundError<ItemType>,
545
- Exclude<R, RProvided> | RSchema
546
- >
547
- }
548
-
549
- /** @deprecated use query */
550
- readonly mapped: Mapped<Encoded>
551
-
552
- /**
553
- * Validates a random sample of repository items by applying jitM and schema decode.
554
- * Useful for testing that migrations and schema changes work correctly on existing data.
555
- */
556
- readonly validateSample: (options?: {
557
- /** percentage of items to sample (0.0-1.0), default 0.1 (10%) */
558
- percentage?: number
559
- /** optional maximum number of items to sample */
560
- maxItems?: number
561
- }) => Effect.Effect<ValidationResult, never, RSchema>
562
- }
563
-
564
- type DistributeQueryIfExclusiveOnArray<Exclusive extends boolean, T, EncodedRefined> = [Exclusive] extends [true]
565
- ? T extends any ? RefineTHelper<T, EncodedRefined> extends infer R ? IsNever<R> extends true ? never
566
- : readonly R[]
567
- : never
568
- : never
569
- : readonly RefineTHelper<T, EncodedRefined>[]
570
-
571
- type NullableRefined<T, EncodedRefined> = {
572
- // EncodedRefined may be a union, so if you just keyof you'll get just common keys
573
- // p.s. NullableRefined is homomorphic in T so it distributes itself over T
574
- [k in keyof T]: [null] extends [T[k]] ? [null] extends [Extract<EncodedRefined, { [j in k]: any }>[k]] ? T[k]
575
- : Exclude<T[k], null>
576
- : T[k]
577
- }
578
-
579
- // for DX purposes
580
- type ShouldRecursiveExtractTagged<T, EncodedRefined> = true extends {
581
- [k in keyof T]: "_tag" extends keyof T[k]
582
- ? k extends keyof EncodedRefined ? "_tag" extends keyof EncodedRefined[k] ? true
583
- : false
584
- : false
585
- : false
586
- }[keyof T] ? true
587
- : false
588
-
589
- // support is not 100% but we have to make compromises
590
- type RecursiveExtractTagged<T, EncodedRefined> = ShouldRecursiveExtractTagged<T, EncodedRefined> extends true ? {
591
- [k in keyof T]: "_tag" extends keyof T[k]
592
- ? k extends keyof EncodedRefined ? "_tag" extends keyof EncodedRefined[k] ? ExtractTagged<T[k], EncodedRefined[k]>
593
- : T[k]
594
- : T[k]
595
- : T[k]
596
- }
597
- : T
598
-
599
- type ExtractTagged_<T, EncodedRefined> = EncodedRefined extends { _tag: string }
600
- ? T extends { _tag: string } ? Extract<T, { _tag: EncodedRefined["_tag"] }>
601
- : T
602
- : T
603
-
604
- type ExtractTagged<T, EncodedRefined> = ExtractTagged_<T, EncodedRefined> extends infer R
605
- ? RecursiveExtractTagged<RecusiveExtractIded<R, EncodedRefined>, EncodedRefined>
606
- : never
607
-
608
- type ShouldRecursiveExtractIded<T, EncodedRefined> = true extends {
609
- [k in keyof T]: "id" extends keyof T[k] ? k extends keyof EncodedRefined ? "id" extends keyof EncodedRefined[k] ? true
610
- : false
611
- : false
612
- : false
613
- }[keyof T] ? true
614
- : false
615
-
616
- type RecusiveExtractIded<T, EncodedRefined> = ShouldRecursiveExtractIded<T, EncodedRefined> extends true ? {
617
- [k in keyof T]: "id" extends keyof T[k]
618
- ? k extends keyof EncodedRefined ? "id" extends keyof EncodedRefined[k] ? ExtractIded<T[k], EncodedRefined[k]>
619
- : T[k]
620
- : T[k]
621
- : T[k]
622
- }
623
- : T
624
-
625
- type ExtractIded_<T, EncodedRefined> = EncodedRefined extends { id: string }
626
- ? T extends { id: string } ? Extract<T, { id: EncodedRefined["id"] }>
627
- : T
628
- : T
629
-
630
- type ExtractIded<T, EncodedRefined> = ExtractIded_<T, EncodedRefined> extends infer R
631
- ? RecusiveExtractIded<RecursiveExtractTagged<R, EncodedRefined>, EncodedRefined>
632
- : never
633
-
634
- export type RefineTHelper<T, EncodedRefined> = ResolveFirstLevel<
635
- NullableRefined<
636
- ExtractIded<ExtractTagged<T, EncodedRefined>, EncodedRefined>,
637
- EncodedRefined
638
- >
639
- >
@@ -1,31 +0,0 @@
1
- import * as S from "effect-app/Schema"
2
- import { NonNegativeInt } from "effect-app/Schema"
3
-
4
- /**
5
- * Represents a single validation error when decoding a repository item.
6
- * Contains full context for debugging: raw data, jitM result, and decode error.
7
- */
8
- export class ValidationError extends S.Opaque<ValidationError>()(S.Struct({
9
- /** the id of the item that failed validation */
10
- id: S.Unknown,
11
- /** the raw data from the database before jitM */
12
- rawData: S.Unknown,
13
- /** the data after applying jitM transformation */
14
- jitMResult: S.Unknown,
15
- /** the S.SchemaError from schema decode */
16
- error: S.Unknown
17
- })) {}
18
-
19
- /**
20
- * Result of validating a sample of repository items.
21
- */
22
- export class ValidationResult extends S.Opaque<ValidationResult>()(S.Struct({
23
- /** total number of items in the repository */
24
- total: NonNegativeInt,
25
- /** number of items that were sampled for validation */
26
- sampled: NonNegativeInt,
27
- /** number of items that passed validation */
28
- valid: NonNegativeInt,
29
- /** list of validation errors with full context */
30
- errors: S.Array(ValidationError)
31
- })) {}
@@ -1,6 +0,0 @@
1
- export * from "./Repository/ext.js"
2
- export * from "./Repository/legacy.js"
3
- export { makeRepo } from "./Repository/makeRepo.js"
4
- export * from "./Repository/Registry.js"
5
- export * from "./Repository/service.js"
6
- export * from "./Repository/validation.js"