@effect-app/infra 4.0.0-beta.20 → 4.0.0-beta.200

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 (304) hide show
  1. package/CHANGELOG.md +1378 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +15 -7
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +10 -12
  6. package/dist/Emailer/Sendgrid.d.ts +14 -14
  7. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  8. package/dist/Emailer/Sendgrid.js +16 -15
  9. package/dist/Emailer/fake.d.ts +1 -1
  10. package/dist/Emailer/service.d.ts +10 -4
  11. package/dist/Emailer/service.d.ts.map +1 -1
  12. package/dist/Emailer/service.js +3 -3
  13. package/dist/Emailer.d.ts +1 -1
  14. package/dist/MainFiberSet.d.ts +9 -9
  15. package/dist/MainFiberSet.d.ts.map +1 -1
  16. package/dist/MainFiberSet.js +3 -3
  17. package/dist/Model/Repository/Registry.d.ts +20 -0
  18. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  19. package/dist/Model/Repository/Registry.js +17 -0
  20. package/dist/Model/Repository/ext.d.ts +33 -15
  21. package/dist/Model/Repository/ext.d.ts.map +1 -1
  22. package/dist/Model/Repository/ext.js +54 -2
  23. package/dist/Model/Repository/internal/internal.d.ts +6 -6
  24. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  25. package/dist/Model/Repository/internal/internal.js +43 -32
  26. package/dist/Model/Repository/legacy.d.ts +1 -1
  27. package/dist/Model/Repository/makeRepo.d.ts +7 -6
  28. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  29. package/dist/Model/Repository/makeRepo.js +5 -1
  30. package/dist/Model/Repository/service.d.ts +28 -23
  31. package/dist/Model/Repository/service.d.ts.map +1 -1
  32. package/dist/Model/Repository/validation.d.ts +142 -17
  33. package/dist/Model/Repository/validation.d.ts.map +1 -1
  34. package/dist/Model/Repository/validation.js +5 -5
  35. package/dist/Model/Repository.d.ts +2 -1
  36. package/dist/Model/Repository.d.ts.map +1 -1
  37. package/dist/Model/Repository.js +2 -1
  38. package/dist/Model/dsl.d.ts +4 -4
  39. package/dist/Model/dsl.d.ts.map +1 -1
  40. package/dist/Model/filter/filterApi.d.ts +5 -5
  41. package/dist/Model/filter/filterApi.d.ts.map +1 -1
  42. package/dist/Model/filter/types/errors.d.ts +1 -1
  43. package/dist/Model/filter/types/fields.d.ts +1 -1
  44. package/dist/Model/filter/types/path/common.d.ts +1 -1
  45. package/dist/Model/filter/types/path/eager.d.ts +1 -1
  46. package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
  47. package/dist/Model/filter/types/path/eager.js +1 -1
  48. package/dist/Model/filter/types/path/index.d.ts +1 -1
  49. package/dist/Model/filter/types/utils.d.ts +1 -1
  50. package/dist/Model/filter/types/validator.d.ts +1 -1
  51. package/dist/Model/filter/types.d.ts +1 -1
  52. package/dist/Model/query/dsl.d.ts +16 -16
  53. package/dist/Model/query/dsl.d.ts.map +1 -1
  54. package/dist/Model/query/new-kid-interpreter.d.ts +6 -6
  55. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
  56. package/dist/Model/query/new-kid-interpreter.js +3 -3
  57. package/dist/Model/query.d.ts +1 -1
  58. package/dist/Model.d.ts +2 -1
  59. package/dist/Model.d.ts.map +1 -1
  60. package/dist/Model.js +2 -1
  61. package/dist/QueueMaker/SQLQueue.d.ts +5 -7
  62. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  63. package/dist/QueueMaker/SQLQueue.js +105 -114
  64. package/dist/QueueMaker/errors.d.ts +2 -2
  65. package/dist/QueueMaker/errors.d.ts.map +1 -1
  66. package/dist/QueueMaker/memQueue.d.ts +7 -4
  67. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  68. package/dist/QueueMaker/memQueue.js +51 -62
  69. package/dist/QueueMaker/sbqueue.d.ts +6 -3
  70. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  71. package/dist/QueueMaker/sbqueue.js +37 -53
  72. package/dist/QueueMaker/service.d.ts +1 -1
  73. package/dist/RequestContext.d.ts +112 -26
  74. package/dist/RequestContext.d.ts.map +1 -1
  75. package/dist/RequestContext.js +7 -8
  76. package/dist/RequestFiberSet.d.ts +7 -7
  77. package/dist/RequestFiberSet.d.ts.map +1 -1
  78. package/dist/RequestFiberSet.js +5 -5
  79. package/dist/Store/ContextMapContainer.d.ts +19 -3
  80. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  81. package/dist/Store/ContextMapContainer.js +13 -3
  82. package/dist/Store/Cosmos/query.d.ts +1 -1
  83. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  84. package/dist/Store/Cosmos/query.js +10 -12
  85. package/dist/Store/Cosmos.d.ts +1 -1
  86. package/dist/Store/Cosmos.d.ts.map +1 -1
  87. package/dist/Store/Cosmos.js +318 -240
  88. package/dist/Store/Disk.d.ts +2 -2
  89. package/dist/Store/Disk.d.ts.map +1 -1
  90. package/dist/Store/Disk.js +25 -22
  91. package/dist/Store/Memory.d.ts +4 -4
  92. package/dist/Store/Memory.d.ts.map +1 -1
  93. package/dist/Store/Memory.js +27 -22
  94. package/dist/Store/SQL/Pg.d.ts +4 -0
  95. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  96. package/dist/Store/SQL/Pg.js +189 -0
  97. package/dist/Store/SQL/query.d.ts +38 -0
  98. package/dist/Store/SQL/query.d.ts.map +1 -0
  99. package/dist/Store/SQL/query.js +367 -0
  100. package/dist/Store/SQL.d.ts +20 -0
  101. package/dist/Store/SQL.d.ts.map +1 -0
  102. package/dist/Store/SQL.js +381 -0
  103. package/dist/Store/codeFilter.d.ts +1 -1
  104. package/dist/Store/codeFilter.d.ts.map +1 -1
  105. package/dist/Store/codeFilter.js +2 -1
  106. package/dist/Store/index.d.ts +5 -2
  107. package/dist/Store/index.d.ts.map +1 -1
  108. package/dist/Store/index.js +15 -3
  109. package/dist/Store/service.d.ts +18 -7
  110. package/dist/Store/service.d.ts.map +1 -1
  111. package/dist/Store/service.js +24 -6
  112. package/dist/Store/utils.d.ts +1 -1
  113. package/dist/Store/utils.d.ts.map +1 -1
  114. package/dist/Store/utils.js +3 -4
  115. package/dist/Store.d.ts +1 -1
  116. package/dist/adapters/SQL/Model.d.ts +28 -42
  117. package/dist/adapters/SQL/Model.d.ts.map +1 -1
  118. package/dist/adapters/SQL/Model.js +2 -2
  119. package/dist/adapters/SQL.d.ts +1 -1
  120. package/dist/adapters/ServiceBus.d.ts +11 -11
  121. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  122. package/dist/adapters/ServiceBus.js +13 -15
  123. package/dist/adapters/cosmos-client.d.ts +3 -3
  124. package/dist/adapters/cosmos-client.d.ts.map +1 -1
  125. package/dist/adapters/cosmos-client.js +3 -3
  126. package/dist/adapters/index.d.ts +8 -2
  127. package/dist/adapters/index.d.ts.map +1 -1
  128. package/dist/adapters/index.js +8 -2
  129. package/dist/adapters/logger.d.ts +2 -2
  130. package/dist/adapters/logger.d.ts.map +1 -1
  131. package/dist/adapters/memQueue.d.ts +3 -3
  132. package/dist/adapters/memQueue.d.ts.map +1 -1
  133. package/dist/adapters/memQueue.js +3 -3
  134. package/dist/adapters/mongo-client.d.ts +3 -3
  135. package/dist/adapters/mongo-client.d.ts.map +1 -1
  136. package/dist/adapters/mongo-client.js +3 -3
  137. package/dist/adapters/redis-client.d.ts +3 -3
  138. package/dist/adapters/redis-client.d.ts.map +1 -1
  139. package/dist/adapters/redis-client.js +3 -3
  140. package/dist/api/ContextProvider.d.ts +8 -8
  141. package/dist/api/ContextProvider.d.ts.map +1 -1
  142. package/dist/api/ContextProvider.js +6 -6
  143. package/dist/api/codec.d.ts +1 -1
  144. package/dist/api/internal/RequestContextMiddleware.d.ts +2 -2
  145. package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
  146. package/dist/api/internal/RequestContextMiddleware.js +2 -2
  147. package/dist/api/internal/auth.d.ts +44 -6
  148. package/dist/api/internal/auth.d.ts.map +1 -1
  149. package/dist/api/internal/auth.js +160 -29
  150. package/dist/api/internal/events.d.ts +3 -3
  151. package/dist/api/internal/events.d.ts.map +1 -1
  152. package/dist/api/internal/events.js +9 -7
  153. package/dist/api/internal/health.d.ts +1 -1
  154. package/dist/api/layerUtils.d.ts +6 -6
  155. package/dist/api/layerUtils.d.ts.map +1 -1
  156. package/dist/api/layerUtils.js +5 -5
  157. package/dist/api/middlewares.d.ts +1 -1
  158. package/dist/api/reportError.d.ts +1 -1
  159. package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -4
  160. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  161. package/dist/api/routing/middleware/middleware.d.ts +50 -4
  162. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  163. package/dist/api/routing/middleware/middleware.js +79 -17
  164. package/dist/api/routing/middleware.d.ts +1 -2
  165. package/dist/api/routing/middleware.d.ts.map +1 -1
  166. package/dist/api/routing/middleware.js +1 -2
  167. package/dist/api/routing/schema/jwt.d.ts +1 -1
  168. package/dist/api/routing/schema/jwt.d.ts.map +1 -1
  169. package/dist/api/routing/tsort.d.ts +1 -1
  170. package/dist/api/routing/tsort.d.ts.map +1 -1
  171. package/dist/api/routing/utils.d.ts +3 -3
  172. package/dist/api/routing/utils.d.ts.map +1 -1
  173. package/dist/api/routing.d.ts +25 -26
  174. package/dist/api/routing.d.ts.map +1 -1
  175. package/dist/api/routing.js +83 -35
  176. package/dist/api/setupRequest.d.ts +8 -5
  177. package/dist/api/setupRequest.d.ts.map +1 -1
  178. package/dist/api/setupRequest.js +12 -7
  179. package/dist/api/util.d.ts +1 -1
  180. package/dist/arbs.d.ts +1 -1
  181. package/dist/arbs.d.ts.map +1 -1
  182. package/dist/arbs.js +5 -3
  183. package/dist/errorReporter.d.ts +4 -4
  184. package/dist/errorReporter.d.ts.map +1 -1
  185. package/dist/errorReporter.js +20 -25
  186. package/dist/errors.d.ts +1 -1
  187. package/dist/fileUtil.d.ts +1 -1
  188. package/dist/fileUtil.d.ts.map +1 -1
  189. package/dist/index.d.ts +1 -1
  190. package/dist/logger/jsonLogger.d.ts +1 -1
  191. package/dist/logger/logFmtLogger.d.ts +1 -1
  192. package/dist/logger/shared.d.ts +1 -1
  193. package/dist/logger/shared.js +2 -2
  194. package/dist/logger.d.ts +1 -1
  195. package/dist/logger.d.ts.map +1 -1
  196. package/dist/rateLimit.d.ts +9 -3
  197. package/dist/rateLimit.d.ts.map +1 -1
  198. package/dist/rateLimit.js +5 -11
  199. package/dist/test.d.ts +2 -2
  200. package/dist/test.d.ts.map +1 -1
  201. package/dist/test.js +1 -1
  202. package/dist/vitest.d.ts +1 -1
  203. package/examples/query.ts +39 -35
  204. package/package.json +41 -37
  205. package/src/CUPS.ts +9 -11
  206. package/src/Emailer/Sendgrid.ts +17 -14
  207. package/src/Emailer/service.ts +9 -3
  208. package/src/MainFiberSet.ts +5 -6
  209. package/src/Model/Repository/Registry.ts +33 -0
  210. package/src/Model/Repository/ext.ts +96 -10
  211. package/src/Model/Repository/internal/internal.ts +97 -88
  212. package/src/Model/Repository/makeRepo.ts +12 -10
  213. package/src/Model/Repository/service.ts +31 -22
  214. package/src/Model/Repository/validation.ts +4 -4
  215. package/src/Model/Repository.ts +1 -0
  216. package/src/Model/dsl.ts +3 -3
  217. package/src/Model/filter/types/path/eager.ts +1 -2
  218. package/src/Model/query/dsl.ts +18 -18
  219. package/src/Model/query/new-kid-interpreter.ts +2 -2
  220. package/src/Model.ts +1 -0
  221. package/src/QueueMaker/SQLQueue.ts +121 -151
  222. package/src/QueueMaker/memQueue.ts +82 -103
  223. package/src/QueueMaker/sbqueue.ts +56 -86
  224. package/src/RequestContext.ts +8 -10
  225. package/src/RequestFiberSet.ts +4 -4
  226. package/src/Store/ContextMapContainer.ts +41 -2
  227. package/src/Store/Cosmos/query.ts +16 -20
  228. package/src/Store/Cosmos.ts +452 -342
  229. package/src/Store/Disk.ts +52 -49
  230. package/src/Store/Memory.ts +54 -48
  231. package/src/Store/SQL/Pg.ts +318 -0
  232. package/src/Store/SQL/query.ts +409 -0
  233. package/src/Store/SQL.ts +668 -0
  234. package/src/Store/codeFilter.ts +1 -0
  235. package/src/Store/index.ts +17 -2
  236. package/src/Store/service.ts +32 -8
  237. package/src/Store/utils.ts +23 -22
  238. package/src/adapters/SQL/Model.ts +10 -4
  239. package/src/adapters/ServiceBus.ts +112 -116
  240. package/src/adapters/cosmos-client.ts +2 -2
  241. package/src/adapters/index.ts +7 -0
  242. package/src/adapters/memQueue.ts +2 -2
  243. package/src/adapters/mongo-client.ts +2 -2
  244. package/src/adapters/redis-client.ts +2 -2
  245. package/src/api/ContextProvider.ts +12 -13
  246. package/src/api/internal/RequestContextMiddleware.ts +1 -1
  247. package/src/api/internal/auth.ts +246 -44
  248. package/src/api/internal/events.ts +12 -8
  249. package/src/api/layerUtils.ts +8 -8
  250. package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
  251. package/src/api/routing/middleware/middleware.ts +112 -15
  252. package/src/api/routing/middleware.ts +0 -2
  253. package/src/api/routing.ts +142 -63
  254. package/src/api/setupRequest.ts +28 -8
  255. package/src/arbs.ts +4 -2
  256. package/src/errorReporter.ts +62 -74
  257. package/src/logger/shared.ts +1 -1
  258. package/src/rateLimit.ts +30 -22
  259. package/src/test.ts +1 -1
  260. package/test/auth.test.ts +101 -0
  261. package/test/contextProvider.test.ts +11 -11
  262. package/test/controller.test.ts +18 -16
  263. package/test/dist/auth.test.d.ts.map +1 -0
  264. package/test/dist/contextProvider.test.d.ts.map +1 -1
  265. package/test/dist/controller.test.d.ts.map +1 -1
  266. package/test/dist/fixtures.d.ts +26 -12
  267. package/test/dist/fixtures.d.ts.map +1 -1
  268. package/test/dist/fixtures.js +12 -10
  269. package/test/dist/query.test.d.ts.map +1 -1
  270. package/test/dist/rawQuery.test.d.ts.map +1 -1
  271. package/test/dist/repository-ext.test.d.ts.map +1 -0
  272. package/test/dist/requires.test.d.ts.map +1 -1
  273. package/test/dist/router-generator.test.d.ts.map +1 -0
  274. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  275. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  276. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  277. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  278. package/test/dist/sql-store.test.d.ts.map +1 -0
  279. package/test/fixtures.ts +11 -9
  280. package/test/query.test.ts +216 -34
  281. package/test/rawQuery.test.ts +23 -19
  282. package/test/repository-ext.test.ts +60 -0
  283. package/test/requires.test.ts +6 -6
  284. package/test/router-generator.test.ts +180 -0
  285. package/test/routing-interruptibility.test.ts +63 -0
  286. package/test/rpc-e2e-invalidation.test.ts +507 -0
  287. package/test/rpc-multi-middleware.test.ts +78 -9
  288. package/test/rpc-stream-fullstack.test.ts +325 -0
  289. package/test/sql-store.test.ts +1064 -0
  290. package/test/validateSample.test.ts +15 -12
  291. package/tsconfig.examples.json +1 -1
  292. package/tsconfig.json +0 -1
  293. package/tsconfig.json.bak +2 -2
  294. package/tsconfig.src.json +35 -35
  295. package/tsconfig.test.json +2 -2
  296. package/dist/Operations.d.ts +0 -55
  297. package/dist/Operations.d.ts.map +0 -1
  298. package/dist/Operations.js +0 -102
  299. package/dist/OperationsRepo.d.ts +0 -41
  300. package/dist/OperationsRepo.d.ts.map +0 -1
  301. package/dist/OperationsRepo.js +0 -14
  302. package/eslint.config.mjs +0 -24
  303. package/src/Operations.ts +0 -235
  304. package/src/OperationsRepo.ts +0 -16
package/dist/rateLimit.js CHANGED
@@ -20,6 +20,7 @@
20
20
  // }
21
21
  // }
22
22
  import { Array, Effect } from "effect-app";
23
+ import { dual } from "effect-app/Function";
23
24
  /**
24
25
  * Executes the specified effect, acquiring the specified number of permits
25
26
  * immediately before the effect begins execution and releasing them
@@ -33,16 +34,9 @@ export function SEM_withPermitsDuration(permits, duration) {
33
34
  .pipe(Effect.ensuring(Effect.delay(self.release(permits), duration))))));
34
35
  };
35
36
  }
36
- export function batchPar(n, forEachItem, forEachBatch) {
37
- return (items) => Effect.forEach(Array.chunksOf(items, n), (_, i) => Effect
38
- .forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
39
- .pipe(Effect.flatMap((_) => forEachBatch(_, i))), { concurrency: "inherit" });
40
- }
41
- export function batch(n, forEachItem, forEachBatch) {
42
- return (items) => Effect.forEach(Array.chunksOf(items, n), (_, i) => Effect
43
- .forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
44
- .pipe(Effect.flatMap((_) => forEachBatch(_, i))));
45
- }
37
+ export const batch = dual((args) => typeof args[0] !== "number", (items, n, forEachItem, forEachBatch, options) => Effect.forEach(Array.chunksOf(items, n), (_, i) => Effect
38
+ .forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
39
+ .pipe(Effect.flatMap((_) => forEachBatch(_, i))), { concurrency: options?.concurrency }));
46
40
  // export function rateLimit(
47
41
  // n: number,
48
42
  // d: DUR
@@ -66,4 +60,4 @@ export function naiveRateLimit(n, d) {
66
60
  .forEach(batch, forEachItem, { concurrency: n })
67
61
  .pipe(Effect.flatMap(forEachBatch))))));
68
62
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JhdGVMaW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sOEVBQThFO0FBQzlFLHVFQUF1RTtBQUN2RSxtRkFBbUY7QUFDbkYsK0JBQStCO0FBQy9CLE1BQU07QUFDTiw2RUFBNkU7QUFDN0Usd0dBQXdHO0FBQ3hHLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxnQ0FBZ0M7QUFDaEMsMkJBQTJCO0FBQzNCLHlDQUF5QztBQUN6Qyw0QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLGtCQUFrQjtBQUNsQixVQUFVO0FBQ1YsTUFBTTtBQUNOLElBQUk7QUFFSixPQUFPLEVBQUUsS0FBSyxFQUFpQixNQUFNLEVBQXNCLE1BQU0sWUFBWSxDQUFBO0FBRzdFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWUsRUFBRSxRQUEyQjtJQUNsRixPQUFPLENBQUMsSUFBZSxFQUF1RSxFQUFFO1FBQzlGLE9BQU8sQ0FBVSxNQUE4QixFQUFFLEVBQUUsQ0FDakQsTUFBTSxDQUFDLG1CQUFtQixDQUN4QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUM5QyxDQUFDLENBQ0wsQ0FBQyxDQUNQLENBQUE7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsQ0FBUyxFQUNULFdBQXNGLEVBQ3RG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
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JhdGVMaW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sOEVBQThFO0FBQzlFLHVFQUF1RTtBQUN2RSxtRkFBbUY7QUFDbkYsK0JBQStCO0FBQy9CLE1BQU07QUFDTiw2RUFBNkU7QUFDN0Usd0dBQXdHO0FBQ3hHLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxnQ0FBZ0M7QUFDaEMsMkJBQTJCO0FBQzNCLHlDQUF5QztBQUN6Qyw0QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLGtCQUFrQjtBQUNsQixVQUFVO0FBQ1YsTUFBTTtBQUNOLElBQUk7QUFFSixPQUFPLEVBQUUsS0FBSyxFQUFpQixNQUFNLEVBQXNCLE1BQU0sWUFBWSxDQUFBO0FBQzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUkxQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUFlLEVBQUUsUUFBMkI7SUFDbEYsT0FBTyxDQUFDLElBQWUsRUFBdUUsRUFBRTtRQUM5RixPQUFPLENBQVUsTUFBOEIsRUFBRSxFQUFFLENBQ2pELE1BQU0sQ0FBQyxtQkFBbUIsQ0FDeEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUNsQixPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ25CLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FDOUMsQ0FBQyxDQUNMLENBQUMsQ0FDUCxDQUFBO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FjZCxJQUFJLENBQ04sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFDckMsQ0FDRSxLQUFrQixFQUNsQixDQUFTLEVBQ1QsV0FBc0YsRUFDdEYsWUFBMkUsRUFDM0UsT0FBc0IsRUFDdEIsRUFBRSxDQUNGLE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQ3hCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ1AsTUFBTTtLQUNILE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3BELEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FDdEMsQ0FDSixDQUFBO0FBRUQsNkJBQTZCO0FBQzdCLGVBQWU7QUFDZixXQUFXO0FBQ1gsTUFBTTtBQUNOLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsdURBQXVEO0FBQ3ZELGlFQUFpRTtBQUNqRSxXQUFXO0FBQ1gscUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0Qix3Q0FBd0M7QUFDeEMsbUZBQW1GO0FBQ25GLHNCQUFzQjtBQUN0QixJQUFJO0FBRUosTUFBTSxVQUFVLGNBQWMsQ0FDNUIsQ0FBUyxFQUNULENBQW9CO0lBRXBCLE9BQU8sQ0FBSSxLQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ2pDLFdBQTZDLEVBQzdDLFlBQW1ELEVBQ25ELEVBQUUsQ0FDRixNQUFNLENBQUMsT0FBTyxDQUNaLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUN4QixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNYLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ2IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLE1BQU07U0FDSCxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUN0QyxDQUFDLENBQ1AsQ0FBQyxDQUFBO0FBQ04sQ0FBQyJ9
package/dist/test.d.ts CHANGED
@@ -8,8 +8,8 @@ export declare const createRandomInstance: <A extends object, I, R>(s: S.Codec<A
8
8
  /**
9
9
  * Like `createRandomInstance`, but takes encoded values rather than decoded ones.
10
10
  */
11
- export declare const createRandomInstanceI: <A extends object, I>(s: S.Codec<A, I, never> & {
11
+ export declare const createRandomInstanceI: <A extends object, I>(s: S.Codec<A, I> & {
12
12
  fields: S.Struct.Fields;
13
13
  }) => (overrides?: Partial<I>) => A;
14
14
  export * from "./arbs.js";
15
- //# sourceMappingURL=test.d.ts.map
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUk5Qjs7R0FFRztBQUNILGVBQU8sTUFBTSxvQkFBb0IsR0FBSSxDQUFDLFNBQVMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHO0lBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFBO0NBQUUsa0JBRXhGLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFJL0IsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsZUFBTyxNQUFNLHFCQUFxQixHQUFJLENBQUMsU0FBUyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHO0lBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFBO0NBQUUsa0JBSW5GLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFLL0IsQ0FBQTtBQUVELGNBQWMsV0FBVyxDQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAI9B;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,MAEpG,YAAY,OAAO,CAAC,CAAC,CAAC,MAI/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,MAItG,YAAY,OAAO,CAAC,CAAC,CAAC,MAK/B,CAAA;AAED,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAI9B;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,kBAExF,OAAO,CAAC,CAAC,CAAC,MAI/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,kBAInF,OAAO,CAAC,CAAC,CAAC,MAK/B,CAAA;AAED,cAAc,WAAW,CAAA"}
package/dist/test.js CHANGED
@@ -26,4 +26,4 @@ export const createRandomInstanceI = (s) => {
26
26
  };
27
27
  };
28
28
  export * from "./arbs.js";
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUF5QixDQUFpRCxFQUFFLEVBQUU7SUFDaEgsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQXNCLENBQXFELEVBQUUsRUFBRTtJQUNsSCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxjQUFjLFdBQVcsQ0FBQSJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUF5QixDQUFpRCxFQUFFLEVBQUU7SUFDaEgsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQXNCLENBQThDLEVBQUUsRUFBRTtJQUMzRyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsU0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxjQUFjLFdBQVcsQ0FBQSJ9
package/dist/vitest.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from "@effect/vitest";
2
2
  export * from "./test.js";
3
- //# sourceMappingURL=vitest.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxXQUFXLENBQUEifQ==
package/examples/query.ts CHANGED
@@ -1,24 +1,24 @@
1
- import { Effect, Layer, ManagedRuntime, S, Schema } from "effect-app"
1
+ import { expectTypeOf } from "@effect/vitest"
2
+ import { Effect, Layer, ManagedRuntime, S, Struct } from "effect-app"
2
3
  import { makeRepo } from "../src/Model.js"
3
- import { and, make, one, or, order, page, project, QueryWhere, where } from "../src/Model/query.js"
4
+ import { and, make, one, or, order, page, project, type QueryWhere, where } from "../src/Model/query.js"
4
5
  import { MemoryStoreLive } from "../src/Store/Memory.js"
5
- import { expectTypeOf } from "@effect/vitest"
6
6
 
7
7
  const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
8
- const num = S.Struct({ _tag: S.Literal("number"), value: S.Number })
8
+ const num = S.Struct({ _tag: S.Literal("number"), value: S.Finite })
9
9
  const someUnion = S.Union(str, num)
10
10
 
11
- export class Something extends S.TaggedClass<Something>()("Something", {
11
+ export class Something extends S.Opaque<Something>()(S.TaggedStruct("Something", {
12
12
  id: S.StringId.withDefault,
13
13
  displayName: S.NonEmptyString255,
14
14
  n: S.Date.withDefault,
15
- union: someUnion.pipe(S.withDefaultConstructor(() => ({ _tag: "string" as const, value: "hi" })))
16
- }) {}
15
+ union: someUnion.pipe(S.withConstructorDefault(Effect.succeed({ _tag: "string" as const, value: "hi" })))
16
+ })) {}
17
17
 
18
- export class SomethingElse extends S.TaggedClass<SomethingElse>()("SomethingElse", {
18
+ export class SomethingElse extends S.Opaque<SomethingElse>()(S.TaggedStruct("SomethingElse", {
19
19
  id: S.StringId.withDefault,
20
20
  banana: S.NonEmptyString255
21
- }) {}
21
+ })) {}
22
22
 
23
23
  const Union = S.Union(Something, SomethingElse)
24
24
 
@@ -38,15 +38,15 @@ export declare namespace SomethingElse {
38
38
  }
39
39
 
40
40
  const items = [
41
- new Something({ displayName: S.NonEmptyString255("Verona"), n: new Date("2020-01-01T00:00:00Z") }),
42
- new Something({ displayName: S.NonEmptyString255("Riley") }),
43
- new Something({
41
+ Something.make({ displayName: S.NonEmptyString255("Verona"), n: new Date("2020-01-01T00:00:00Z") }),
42
+ Something.make({ displayName: S.NonEmptyString255("Riley") }),
43
+ Something.make({
44
44
  displayName: S.NonEmptyString255("Riley"),
45
45
  n: new Date("2020-01-01T00:00:00Z"),
46
46
  union: { _tag: "number", value: 1 }
47
47
  }),
48
- new SomethingElse({ banana: S.NonEmptyString255("Banana") }),
49
- new SomethingElse({ banana: S.NonEmptyString255("Banana2") })
48
+ SomethingElse.make({ banana: S.NonEmptyString255("Banana") }),
49
+ SomethingElse.make({ banana: S.NonEmptyString255("Banana2") })
50
50
  ]
51
51
 
52
52
  class SomethingRepo extends Effect.Service<SomethingRepo>()("SomethingRepo", {
@@ -78,7 +78,7 @@ const program = Effect.gen(function*() {
78
78
  order("displayName"),
79
79
  page({ take: 1 }),
80
80
  one,
81
- project(S.Struct(Something.pick("id", "displayName")))
81
+ project(Something.mapFields(Struct.pick(["id", "displayName"])))
82
82
  )
83
83
 
84
84
  const r2 = yield* somethingRepo.query(
@@ -100,31 +100,35 @@ const rt = ManagedRuntime.make(SomethingRepo.Test)
100
100
  rt.runFork(program)
101
101
 
102
102
  const test1 = make<Union.Encoded>().pipe(
103
- where("union._tag", "string"),
103
+ where("union._tag", "string")
104
104
  )
105
105
 
106
- expectTypeOf(test1).toEqualTypeOf<QueryWhere<Union.Encoded, {
107
- readonly _tag: "Something";
108
- readonly id: string;
109
- readonly displayName: string;
110
- readonly n: string;
106
+ expectTypeOf(test1).toEqualTypeOf<
107
+ QueryWhere<Union.Encoded, {
108
+ readonly _tag: "Something"
109
+ readonly id: string
110
+ readonly displayName: string
111
+ readonly n: string
111
112
  readonly union: {
112
- readonly _tag: "string";
113
- readonly value: string;
114
- };
115
- }>>()
113
+ readonly _tag: "string"
114
+ readonly value: string
115
+ }
116
+ }>
117
+ >()
116
118
 
117
119
  const testneq1 = make<Union.Encoded>().pipe(
118
- where("union._tag", "neq", "string"),
120
+ where("union._tag", "neq", "string")
119
121
  )
120
122
 
121
- expectTypeOf(testneq1).toEqualTypeOf<QueryWhere<Union.Encoded, {
122
- readonly _tag: "Something";
123
- readonly id: string;
124
- readonly displayName: string;
125
- readonly n: string;
123
+ expectTypeOf(testneq1).toEqualTypeOf<
124
+ QueryWhere<Union.Encoded, {
125
+ readonly _tag: "Something"
126
+ readonly id: string
127
+ readonly displayName: string
128
+ readonly n: string
126
129
  readonly union: {
127
- readonly _tag: "number";
128
- readonly value: number;
129
- };
130
- }>>()
130
+ readonly _tag: "number"
131
+ readonly value: number
132
+ }
133
+ }>
134
+ >()
package/package.json CHANGED
@@ -1,54 +1,51 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "4.0.0-beta.20",
3
+ "version": "4.0.0-beta.200",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "@faker-js/faker": "^8.4.1",
8
8
  "change-case": "^5.4.4",
9
9
  "cross-fetch": "^4.1.0",
10
- "express-oauth2-jwt-bearer": "^1.7.4",
11
- "fast-check": "~4.5.3",
10
+ "fast-check": "~4.7.0",
11
+ "jose": "^6.2.3",
12
12
  "path-parser": "^6.1.0",
13
13
  "proper-lockfile": "^4.1.2",
14
- "pure-rand": "7.0.1",
14
+ "pure-rand": "8.4.0",
15
15
  "query-string": "^9.3.1",
16
- "effect-app": "4.0.0-beta.20"
16
+ "effect-app": "4.0.0-beta.200"
17
17
  },
18
18
  "devDependencies": {
19
- "@azure/cosmos": "^4.9.1",
19
+ "@azure/cosmos": "^4.9.3",
20
20
  "@azure/service-bus": "^7.9.5",
21
- "@sentry/node": "10.42.0",
22
- "@sentry/opentelemetry": "10.42.0",
23
- "@types/express": "^5.0.6",
24
- "@types/node": "25.3.3",
21
+ "@sentry/node": "10.51.0",
22
+ "@sentry/opentelemetry": "10.51.0",
23
+ "@types/better-sqlite3": "^7.6.13",
24
+ "@types/node": "25.6.0",
25
25
  "@types/proper-lockfile": "^4.1.4",
26
26
  "@types/redis": "^2.8.32",
27
27
  "@types/redlock": "^4.0.8",
28
- "express": "^5.2.1",
29
- "jwks-rsa": "2.1.4",
28
+ "better-sqlite3": "^12.9.0",
30
29
  "jwt-decode": "^4.0.0",
31
- "mongodb": "7.1.0",
30
+ "mongodb": "7.2.0",
32
31
  "redis": "^3.1.2",
33
32
  "redlock": "^4.2.0",
34
33
  "strip-ansi": "^7.2.0",
35
- "typescript": "~5.9.3",
36
- "vitest": "^4.0.18",
37
- "@effect-app/eslint-shared-config": "0.5.7-beta.2"
34
+ "typescript": "~6.0.3",
35
+ "vitest": "^4.1.5"
38
36
  },
39
37
  "peerDependencies": {
40
- "@azure/cosmos": "^4.9.1",
38
+ "@azure/cosmos": "^4.9.3",
41
39
  "@azure/service-bus": "^7.9.5",
42
- "@effect/vitest": "^4.0.0-beta.31",
40
+ "@effect/vitest": "^4.0.0-beta.59",
43
41
  "@sendgrid/helpers": "^8.0.0",
44
42
  "@sendgrid/mail": "^8.1.6",
45
- "@sentry/node": "10.42.0",
46
- "@sentry/opentelemetry": "10.42.0",
43
+ "@sentry/node": "10.51.0",
44
+ "@sentry/opentelemetry": "10.51.0",
45
+ "effect": "^4.0.0-beta.60",
47
46
  "jwt-decode": "^4.0.0",
48
47
  "redis": "^3.1.2",
49
- "redlock": "^4.2.0",
50
- "effect": "^4.0.0-beta.31",
51
- "express": "^5.2.1"
48
+ "redlock": "^4.2.0"
52
49
  },
53
50
  "typesVersions": {
54
51
  "*": {
@@ -94,6 +91,10 @@
94
91
  "types": "./dist/Model/Repository.d.ts",
95
92
  "default": "./dist/Model/Repository.js"
96
93
  },
94
+ "./Model/Repository/Registry": {
95
+ "types": "./dist/Model/Repository/Registry.d.ts",
96
+ "default": "./dist/Model/Repository/Registry.js"
97
+ },
97
98
  "./Model/Repository/ext": {
98
99
  "types": "./dist/Model/Repository/ext.d.ts",
99
100
  "default": "./dist/Model/Repository/ext.js"
@@ -166,14 +167,6 @@
166
167
  "types": "./dist/Model/query/new-kid-interpreter.d.ts",
167
168
  "default": "./dist/Model/query/new-kid-interpreter.js"
168
169
  },
169
- "./Operations": {
170
- "types": "./dist/Operations.d.ts",
171
- "default": "./dist/Operations.js"
172
- },
173
- "./OperationsRepo": {
174
- "types": "./dist/OperationsRepo.d.ts",
175
- "default": "./dist/OperationsRepo.js"
176
- },
177
170
  "./QueueMaker/SQLQueue": {
178
171
  "types": "./dist/QueueMaker/SQLQueue.d.ts",
179
172
  "default": "./dist/QueueMaker/SQLQueue.js"
@@ -226,6 +219,18 @@
226
219
  "types": "./dist/Store/Memory.d.ts",
227
220
  "default": "./dist/Store/Memory.js"
228
221
  },
222
+ "./Store/SQL": {
223
+ "types": "./dist/Store/SQL.d.ts",
224
+ "default": "./dist/Store/SQL.js"
225
+ },
226
+ "./Store/SQL/Pg": {
227
+ "types": "./dist/Store/SQL/Pg.d.ts",
228
+ "default": "./dist/Store/SQL/Pg.js"
229
+ },
230
+ "./Store/SQL/query": {
231
+ "types": "./dist/Store/SQL/query.d.ts",
232
+ "default": "./dist/Store/SQL/query.js"
233
+ },
229
234
  "./Store/codeFilter": {
230
235
  "types": "./dist/Store/codeFilter.d.ts",
231
236
  "default": "./dist/Store/codeFilter.js"
@@ -384,18 +389,17 @@
384
389
  "scripts": {
385
390
  "watch": "pnpm build:tsc -w",
386
391
  "build:tsc": "pnpm clean-dist && effect-app-cli packagejson pnpm check",
387
- "check": "tsc --build",
392
+ "check": "tsgo --build",
388
393
  "build": "pnpm build:tsc",
389
- "watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsc -w",
394
+ "watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsgo -w",
390
395
  "clean": "rm -rf dist",
391
396
  "clean-dist": "sh ../../scripts/clean-dist.sh",
392
397
  "circular": "pnpm circular:src && pnpm circular:dist",
393
398
  "circular:src": "madge --circular --ts-config ./tsconfig.json --extensions ts ./src",
394
399
  "circular:dist": "madge --circular --extensions js ./dist",
395
- "compile": "NODE_OPTIONS=--max-old-space-size=6144 tsc --noEmit",
396
- "lint": "NODE_OPTIONS=--max-old-space-size=6144 ESLINT_TS=1 eslint ./src",
397
- "lint:watch": "ESLINT_TS=1 esw -w --changed --clear --ext ts,tsx .",
398
- "lint-fix": "pnpm lint --fix",
400
+ "compile": "NODE_OPTIONS=--max-old-space-size=6144 tsgo --noEmit",
401
+ "lint": "oxlint --quiet --type-aware ./src && pnpm exec dprint check --config ../../dprint.jsonc .",
402
+ "lint-fix": "oxlint --quiet --type-aware --fix ./src && pnpm exec dprint fmt --config ../../dprint.jsonc .",
399
403
  "test": "vitest",
400
404
  "test:run": "pnpm run test run --passWithNoTests",
401
405
  "testsuite": "pnpm lint && pnpm circular && pnpm run test:run",
package/src/CUPS.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type FileOptions, tempFile } from "@effect-app/infra/fileUtil"
2
2
  import cp from "child_process"
3
- import { Config, Effect, Layer, Option, Predicate, S, ServiceMap } from "effect-app"
3
+ import { Config, Context, Effect, Layer, Option, Predicate, S } from "effect-app"
4
4
  import { pretty } from "effect-app/utils"
5
5
  import fs from "fs"
6
6
  import os from "os"
@@ -74,15 +74,13 @@ function printBuffer(printer: PrinterConfig, options: string[]) {
74
74
  )
75
75
  }
76
76
 
77
- function getAvailablePrinters(host?: string) {
78
- return Effect.gen(function*() {
79
- const { stdout } = yield* exec(["lpstat", ...buildListArgs({ host }), "-s"].join(" "))
80
- return [...stdout.matchAll(/device for (\w+):/g)]
81
- .map((_) => _[1])
82
- .filter(Predicate.isNotNullish)
83
- .map((_) => S.NonEmptyString255(_))
84
- })
85
- }
77
+ const getAvailablePrinters = Effect.fnUntraced(function*(host?: string) {
78
+ const { stdout } = yield* exec(["lpstat", ...buildListArgs({ host }), "-s"].join(" "))
79
+ return [...stdout.matchAll(/device for (\w+):/g)]
80
+ .map((_) => _[1])
81
+ .filter(Predicate.isNotNullish)
82
+ .map((_) => S.NonEmptyString255(_))
83
+ })
86
84
 
87
85
  function* buildListArgs(config?: { host?: string | undefined }) {
88
86
  if (config?.host) {
@@ -100,7 +98,7 @@ export const CUPSConfig = Config.all({
100
98
  )
101
99
  })
102
100
 
103
- export class CUPS extends ServiceMap.Service<CUPS>()("effect-app/CUPS", {
101
+ export class CUPS extends Context.Service<CUPS>()("effect-app/CUPS", {
104
102
  make: Effect.gen(function*() {
105
103
  const config = yield* CUPSConfig
106
104
  const serverUrl = Option.getOrUndefined(config.server)
@@ -7,7 +7,9 @@ import { inspect } from "util"
7
7
  import { InfraLogger } from "../logger.js"
8
8
  import { Emailer, type EmailMsg, type EmailMsgOptionalFrom, type SendgridConfig, SendMailError } from "./service.js"
9
9
 
10
- const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPrefix }: SendgridConfig) =>
10
+ const makeSendgrid = (
11
+ { apiKey, defaultFrom, defaultReplyTo, fakeMailAddress, realMail, subjectPrefix }: SendgridConfig
12
+ ) =>
11
13
  Effect.sync(() => {
12
14
  sgMail.setApiKey(Redacted.value(apiKey))
13
15
 
@@ -18,7 +20,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
18
20
  from: msg_.from ?? defaultFrom,
19
21
  replyTo: msg_.replyTo ?? (msg_.from ? undefined : defaultReplyTo)
20
22
  })
21
- const render = renderMessage(!realMail)
23
+ const render = renderMessage(!realMail, fakeMailAddress)
22
24
 
23
25
  const renderedMsg_ = render(msg)
24
26
  const renderedMsg = {
@@ -68,23 +70,24 @@ export function Sendgrid(config: SendgridConfig) {
68
70
  /**
69
71
  * @hidden
70
72
  */
71
- export function renderMessage(forceFake: boolean) {
73
+ export function renderMessage(forceFake: boolean, fakeMailAddress: string) {
72
74
  let i = 0
73
75
  const makeId = () => i++
76
+ const makeFakeEmail = () => fakeMailAddress.replace("{i}", String(makeId()))
74
77
  return forceFake
75
78
  ? (msg: EmailMsg) =>
76
79
  dropUndefinedT({
77
80
  ...msg,
78
- to: msg.to && renderFake(msg.to, makeId),
79
- cc: msg.cc && renderFake(msg.cc, makeId),
80
- bcc: msg.bcc && renderFake(msg.bcc, makeId)
81
+ to: msg.to && renderFake(msg.to, makeFakeEmail),
82
+ cc: msg.cc && renderFake(msg.cc, makeFakeEmail),
83
+ bcc: msg.bcc && renderFake(msg.bcc, makeFakeEmail)
81
84
  })
82
85
  : (msg: EmailMsg) =>
83
86
  dropUndefinedT({
84
87
  ...msg,
85
- to: msg.to && renderFakeIfTest(msg.to, makeId),
86
- cc: msg.cc && renderFakeIfTest(msg.cc, makeId),
87
- bcc: msg.bcc && renderFakeIfTest(msg.bcc, makeId)
88
+ to: msg.to && renderFakeIfTest(msg.to, makeFakeEmail),
89
+ cc: msg.cc && renderFakeIfTest(msg.cc, makeFakeEmail),
90
+ bcc: msg.bcc && renderFakeIfTest(msg.bcc, makeFakeEmail)
88
91
  })
89
92
  }
90
93
 
@@ -100,10 +103,10 @@ export function isTestAddress(to: EmailData) {
100
103
  )
101
104
  }
102
105
 
103
- function renderFake(addr: EmailData | readonly EmailData[], makeId: () => number) {
106
+ function renderFake(addr: EmailData | readonly EmailData[], makeEmail: () => string) {
104
107
  return {
105
108
  name: renderMailData(addr),
106
- email: `test+${makeId()}@nomizz.com`
109
+ email: makeEmail()
107
110
  }
108
111
  }
109
112
  const eq = Equivalence.mapInput(
@@ -117,14 +120,14 @@ function isEmailDataArray(md: EmailData | readonly EmailData[]): md is readonly
117
120
 
118
121
  // TODO: should just not add any already added email address
119
122
  // https://stackoverflow.com/a/53603076/11595834
120
- function renderFakeIfTest(addr: EmailData | readonly EmailData[], makeId: () => number) {
123
+ function renderFakeIfTest(addr: EmailData | readonly EmailData[], makeEmail: () => string) {
121
124
  if (isEmailDataArray(addr)) {
122
125
  return Array.dedupeWith(
123
- addr.map((x) => (isTestAddress(x) ? renderFake(x, makeId) : x)),
126
+ addr.map((x) => (isTestAddress(x) ? renderFake(x, makeEmail) : x)),
124
127
  eq
125
128
  )
126
129
  }
127
- return isTestAddress(addr) ? renderFake(addr, makeId) : addr
130
+ return isTestAddress(addr) ? renderFake(addr, makeEmail) : addr
128
131
  }
129
132
 
130
133
  function renderMailData(md: EmailData | readonly EmailData[]): string {
@@ -1,13 +1,13 @@
1
1
  import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js"
2
2
  import type { ResponseError } from "@sendgrid/mail"
3
- import { Data, type Effect, type NonEmptyReadonlyArray, type Redacted, ServiceMap } from "effect-app"
3
+ import { Context, Data, type Effect, type NonEmptyReadonlyArray, type Redacted } from "effect-app"
4
4
  import type { Email } from "effect-app/Schema"
5
5
 
6
6
  export class SendMailError extends Data.TaggedError("SendMailError")<{
7
7
  readonly raw: Error | ResponseError
8
8
  }> {}
9
9
 
10
- export class Emailer extends ServiceMap.Opaque<Emailer, {
10
+ export class Emailer extends Context.Opaque<Emailer, {
11
11
  sendMail: (msg: EmailMsgOptionalFrom) => Effect.Effect<void, SendMailError>
12
12
  }>()("effect-app/Emailer") {}
13
13
 
@@ -21,7 +21,13 @@ export interface SendgridConfig {
21
21
  subjectPrefix: string
22
22
  realMail: boolean
23
23
  defaultFrom: EmailData
24
- apiKey: Redacted.Redacted<string>
24
+ apiKey: Redacted.Redacted
25
+ /**
26
+ * Email address used for fake/test recipients. Use `{i}` as a placeholder for an auto-incrementing index to ensure uniqueness.
27
+ *
28
+ * @example "test+{i}@example.com"
29
+ */
30
+ fakeMailAddress: string
25
31
  }
26
32
  export type EmailTemplateMsg = MailData & { templateId: string }
27
33
 
@@ -1,14 +1,13 @@
1
- import { Effect, Fiber, FiberSet, Layer, ServiceMap } from "effect-app"
2
- import type {} from "effect/Scope"
1
+ import { Context, Effect, Fiber, FiberSet, Layer } from "effect-app"
2
+
3
3
  import { InfraLogger } from "./logger.js"
4
4
  import { reportNonInterruptedFailureCause } from "./QueueMaker/errors.js"
5
5
  import { setRootParentSpan } from "./RequestFiberSet.js"
6
6
 
7
7
  const make = Effect.gen(function*() {
8
8
  const set = yield* FiberSet.make<unknown, never>()
9
- const add = (...fibers: Fiber.Fiber<never, never>[]) =>
10
- Effect.sync(() => fibers.forEach((_) => FiberSet.addUnsafe(set, _)))
11
- const addAll = (fibers: readonly Fiber.Fiber<never, never>[]) =>
9
+ const add = (...fibers: Fiber.Fiber<never>[]) => Effect.sync(() => fibers.forEach((_) => FiberSet.addUnsafe(set, _)))
10
+ const addAll = (fibers: readonly Fiber.Fiber<never>[]) =>
12
11
  Effect.sync(() => fibers.forEach((_) => FiberSet.addUnsafe(set, _)))
13
12
  const join = FiberSet.size(set).pipe(
14
13
  Effect.andThen((count) => InfraLogger.logDebug(`Joining ${count} current fibers on the MainFiberSet`)),
@@ -62,7 +61,7 @@ const make = Effect.gen(function*() {
62
61
  * you should register these long running fibers in a FiberSet, and join them at the end of your main program.
63
62
  * This way any errors will blow up the main program instead of fibers dying unknowingly.
64
63
  */
65
- export class MainFiberSet extends ServiceMap.Service<MainFiberSet>()("MainFiberSet", { make }) {
64
+ export class MainFiberSet extends Context.Service<MainFiberSet>()("MainFiberSet", { make }) {
66
65
  static readonly Live = Layer.effect(this, this.make)
67
66
  static readonly JoinLive = this.asEffect().pipe(
68
67
  Effect.andThen((_) => _.join),
@@ -0,0 +1,33 @@
1
+ import { Context, Effect } from "effect-app"
2
+
3
+ export interface RegisteredRepository {
4
+ readonly seedNamespace: (namespace: string) => Effect.Effect<void>
5
+ }
6
+
7
+ const make = Effect.sync(() => {
8
+ const repos = new Map<string, RegisteredRepository>()
9
+ return {
10
+ register(modelName: string, repo: RegisteredRepository) {
11
+ repos.set(modelName, repo)
12
+ },
13
+ seedNamespace: (namespace: string) =>
14
+ Effect.suspend(() =>
15
+ Effect.forEach(
16
+ repos.values(),
17
+ (r) => r.seedNamespace(namespace),
18
+ { concurrency: "unbounded", discard: true }
19
+ )
20
+ ),
21
+ get entries(): ReadonlyMap<string, RegisteredRepository> {
22
+ return repos
23
+ }
24
+ }
25
+ })
26
+
27
+ export class RepositoryRegistry extends Context.Opaque<RepositoryRegistry, {
28
+ readonly register: (modelName: string, repo: RegisteredRepository) => void
29
+ readonly seedNamespace: (namespace: string) => Effect.Effect<void>
30
+ readonly entries: ReadonlyMap<string, RegisteredRepository>
31
+ }>()("effect-app/RepositoryRegistry", { make }) {}
32
+
33
+ export const RepositoryRegistryLive = RepositoryRegistry.toLayer(RepositoryRegistry.make)