effect-app 4.0.0-beta.25 → 4.0.0-beta.251

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/CHANGELOG.md +1137 -0
  2. package/dist/Array.d.ts +3 -2
  3. package/dist/Array.d.ts.map +1 -1
  4. package/dist/Array.js +4 -4
  5. package/dist/Chunk.d.ts +1 -1
  6. package/dist/Chunk.d.ts.map +1 -1
  7. package/dist/Config/SecretURL.d.ts +4 -2
  8. package/dist/Config/SecretURL.d.ts.map +1 -1
  9. package/dist/Config/SecretURL.js +3 -6
  10. package/dist/Config/internal/configSecretURL.d.ts +1 -1
  11. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  12. package/dist/Config/internal/configSecretURL.js +2 -2
  13. package/dist/Config.d.ts +7 -0
  14. package/dist/Config.d.ts.map +1 -0
  15. package/dist/Config.js +6 -0
  16. package/dist/ConfigProvider.d.ts +39 -0
  17. package/dist/ConfigProvider.d.ts.map +1 -0
  18. package/dist/ConfigProvider.js +42 -0
  19. package/dist/Context.d.ts +42 -0
  20. package/dist/Context.d.ts.map +1 -0
  21. package/dist/Context.js +67 -0
  22. package/dist/Effect.d.ts +13 -12
  23. package/dist/Effect.d.ts.map +1 -1
  24. package/dist/Effect.js +5 -8
  25. package/dist/Emailer.d.ts +51 -0
  26. package/dist/Emailer.d.ts.map +1 -0
  27. package/dist/Emailer.js +7 -0
  28. package/dist/Function.d.ts +1 -1
  29. package/dist/Function.d.ts.map +1 -1
  30. package/dist/Inputify.type.d.ts +1 -1
  31. package/dist/Layer.d.ts +11 -7
  32. package/dist/Layer.d.ts.map +1 -1
  33. package/dist/Layer.js +3 -2
  34. package/dist/Model/Repository/Registry.d.ts +21 -0
  35. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  36. package/dist/Model/Repository/Registry.js +18 -0
  37. package/dist/Model/Repository/ext.d.ts +60 -0
  38. package/dist/Model/Repository/ext.d.ts.map +1 -0
  39. package/dist/Model/Repository/ext.js +122 -0
  40. package/dist/Model/Repository/internal/internal.d.ts +62 -0
  41. package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
  42. package/dist/Model/Repository/internal/internal.js +397 -0
  43. package/dist/Model/Repository/legacy.d.ts +21 -0
  44. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  45. package/dist/Model/Repository/legacy.js +2 -0
  46. package/dist/Model/Repository/makeRepo.d.ts +53 -0
  47. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  48. package/dist/Model/Repository/makeRepo.js +27 -0
  49. package/dist/Model/Repository/service.d.ts +97 -0
  50. package/dist/Model/Repository/service.d.ts.map +1 -0
  51. package/dist/Model/Repository/service.js +2 -0
  52. package/dist/Model/Repository/validation.d.ts +71 -0
  53. package/dist/Model/Repository/validation.d.ts.map +1 -0
  54. package/dist/Model/Repository/validation.js +32 -0
  55. package/dist/Model/Repository.d.ts +7 -0
  56. package/dist/Model/Repository.d.ts.map +1 -0
  57. package/dist/Model/Repository.js +7 -0
  58. package/dist/Model/dsl.d.ts +33 -0
  59. package/dist/Model/dsl.d.ts.map +1 -0
  60. package/dist/Model/dsl.js +43 -0
  61. package/dist/Model/filter/filterApi.d.ts +30 -0
  62. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  63. package/dist/Model/filter/filterApi.js +2 -0
  64. package/dist/Model/filter/types/errors.d.ts +29 -0
  65. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  66. package/dist/Model/filter/types/errors.js +2 -0
  67. package/dist/Model/filter/types/fields.d.ts +15 -0
  68. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  69. package/dist/Model/filter/types/fields.js +2 -0
  70. package/dist/Model/filter/types/path/common.d.ts +316 -0
  71. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  72. package/dist/Model/filter/types/path/common.js +2 -0
  73. package/dist/Model/filter/types/path/eager.d.ts +95 -0
  74. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  75. package/dist/Model/filter/types/path/eager.js +31 -0
  76. package/dist/Model/filter/types/path/index.d.ts +4 -0
  77. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  78. package/dist/Model/filter/types/path/index.js +3 -0
  79. package/dist/Model/filter/types/utils.d.ts +79 -0
  80. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  81. package/dist/Model/filter/types/utils.js +2 -0
  82. package/dist/Model/filter/types/validator.d.ts +30 -0
  83. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  84. package/dist/Model/filter/types/validator.js +2 -0
  85. package/dist/Model/filter/types.d.ts +5 -0
  86. package/dist/Model/filter/types.d.ts.map +1 -0
  87. package/dist/Model/filter/types.js +7 -0
  88. package/dist/Model/query/dsl.d.ts +446 -0
  89. package/dist/Model/query/dsl.d.ts.map +1 -0
  90. package/dist/Model/query/dsl.js +342 -0
  91. package/dist/Model/query/new-kid-interpreter.d.ts +136 -0
  92. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  93. package/dist/Model/query/new-kid-interpreter.js +336 -0
  94. package/dist/Model/query.d.ts +15 -0
  95. package/dist/Model/query.d.ts.map +1 -0
  96. package/dist/Model/query.js +3 -0
  97. package/dist/Model.d.ts +5 -0
  98. package/dist/Model.d.ts.map +1 -0
  99. package/dist/Model.js +5 -0
  100. package/dist/NonEmptySet.d.ts +4 -2
  101. package/dist/NonEmptySet.d.ts.map +1 -1
  102. package/dist/NonEmptySet.js +2 -2
  103. package/dist/Option.d.ts +2 -1
  104. package/dist/Option.d.ts.map +1 -1
  105. package/dist/Option.js +3 -1
  106. package/dist/Pure.d.ts +8 -6
  107. package/dist/Pure.d.ts.map +1 -1
  108. package/dist/Pure.js +17 -14
  109. package/dist/QueueMaker.d.ts +13 -0
  110. package/dist/QueueMaker.d.ts.map +1 -0
  111. package/dist/QueueMaker.js +4 -0
  112. package/dist/RequestContext.d.ts +103 -0
  113. package/dist/RequestContext.d.ts.map +1 -0
  114. package/dist/RequestContext.js +49 -0
  115. package/dist/Schema/Class.d.ts +66 -20
  116. package/dist/Schema/Class.d.ts.map +1 -1
  117. package/dist/Schema/Class.js +192 -23
  118. package/dist/Schema/FastCheck.d.ts +1 -1
  119. package/dist/Schema/FastCheck.d.ts.map +1 -1
  120. package/dist/Schema/Methods.d.ts +1 -1
  121. package/dist/Schema/SchemaParser.d.ts +5 -0
  122. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  123. package/dist/Schema/SchemaParser.js +6 -0
  124. package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
  125. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  126. package/dist/Schema/SpecialJsonSchema.js +118 -0
  127. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  128. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  129. package/dist/Schema/SpecialOpenApi.js +123 -0
  130. package/dist/Schema/brand.d.ts +5 -3
  131. package/dist/Schema/brand.d.ts.map +1 -1
  132. package/dist/Schema/brand.js +3 -1
  133. package/dist/Schema/email.d.ts +1 -1
  134. package/dist/Schema/email.d.ts.map +1 -1
  135. package/dist/Schema/email.js +7 -4
  136. package/dist/Schema/ext.d.ts +339 -56
  137. package/dist/Schema/ext.d.ts.map +1 -1
  138. package/dist/Schema/ext.js +358 -53
  139. package/dist/Schema/moreStrings.d.ts +108 -26
  140. package/dist/Schema/moreStrings.d.ts.map +1 -1
  141. package/dist/Schema/moreStrings.js +45 -16
  142. package/dist/Schema/numbers.d.ts +55 -15
  143. package/dist/Schema/numbers.d.ts.map +1 -1
  144. package/dist/Schema/numbers.js +60 -12
  145. package/dist/Schema/phoneNumber.d.ts +1 -1
  146. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  147. package/dist/Schema/phoneNumber.js +6 -3
  148. package/dist/Schema/schema.d.ts +1 -1
  149. package/dist/Schema/strings.d.ts +5 -5
  150. package/dist/Schema/strings.d.ts.map +1 -1
  151. package/dist/Schema/strings.js +1 -5
  152. package/dist/Schema.d.ts +214 -8
  153. package/dist/Schema.d.ts.map +1 -1
  154. package/dist/Schema.js +190 -11
  155. package/dist/Set.d.ts +5 -2
  156. package/dist/Set.d.ts.map +1 -1
  157. package/dist/Set.js +3 -2
  158. package/dist/Store.d.ts +170 -0
  159. package/dist/Store.d.ts.map +1 -0
  160. package/dist/Store.js +121 -0
  161. package/dist/TypeTest.d.ts +1 -1
  162. package/dist/Types.d.ts +1 -1
  163. package/dist/Widen.type.d.ts +1 -1
  164. package/dist/_ext/Array.d.ts +2 -2
  165. package/dist/_ext/Array.d.ts.map +1 -1
  166. package/dist/_ext/Array.js +4 -2
  167. package/dist/_ext/date.d.ts +1 -1
  168. package/dist/_ext/misc.d.ts +5 -2
  169. package/dist/_ext/misc.d.ts.map +1 -1
  170. package/dist/_ext/misc.js +4 -2
  171. package/dist/_ext/ord.ext.d.ts +3 -2
  172. package/dist/_ext/ord.ext.d.ts.map +1 -1
  173. package/dist/_ext/ord.ext.js +2 -2
  174. package/dist/builtin.d.ts +1 -1
  175. package/dist/builtin.d.ts.map +1 -1
  176. package/dist/client/InvalidationKeys.d.ts +29 -0
  177. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  178. package/dist/client/InvalidationKeys.js +33 -0
  179. package/dist/client/apiClientFactory.d.ts +20 -32
  180. package/dist/client/apiClientFactory.d.ts.map +1 -1
  181. package/dist/client/apiClientFactory.js +104 -34
  182. package/dist/client/clientFor.d.ts +53 -19
  183. package/dist/client/clientFor.d.ts.map +1 -1
  184. package/dist/client/clientFor.js +9 -1
  185. package/dist/client/errors.d.ts +49 -25
  186. package/dist/client/errors.d.ts.map +1 -1
  187. package/dist/client/errors.js +43 -17
  188. package/dist/client/makeClient.d.ts +495 -33
  189. package/dist/client/makeClient.d.ts.map +1 -1
  190. package/dist/client/makeClient.js +66 -24
  191. package/dist/client.d.ts +6 -5
  192. package/dist/client.d.ts.map +1 -1
  193. package/dist/client.js +2 -1
  194. package/dist/faker.d.ts +1 -1
  195. package/dist/faker.d.ts.map +1 -1
  196. package/dist/http/Request.d.ts +2 -2
  197. package/dist/http/Request.d.ts.map +1 -1
  198. package/dist/http/Request.js +2 -2
  199. package/dist/http/internal/lib.d.ts +1 -1
  200. package/dist/http.d.ts +1 -1
  201. package/dist/ids.d.ts +40 -12
  202. package/dist/ids.d.ts.map +1 -1
  203. package/dist/ids.js +25 -3
  204. package/dist/index.d.ts +7 -8
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +8 -8
  207. package/dist/logger.d.ts +1 -1
  208. package/dist/middleware.d.ts +14 -8
  209. package/dist/middleware.d.ts.map +1 -1
  210. package/dist/middleware.js +14 -8
  211. package/dist/rpc/Invalidation.d.ts +420 -0
  212. package/dist/rpc/Invalidation.d.ts.map +1 -0
  213. package/dist/rpc/Invalidation.js +168 -0
  214. package/dist/rpc/MiddlewareMaker.d.ts +12 -8
  215. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  216. package/dist/rpc/MiddlewareMaker.js +59 -38
  217. package/dist/rpc/RpcContextMap.d.ts +4 -4
  218. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  219. package/dist/rpc/RpcContextMap.js +4 -4
  220. package/dist/rpc/RpcMiddleware.d.ts +15 -11
  221. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  222. package/dist/rpc/RpcMiddleware.js +1 -1
  223. package/dist/rpc.d.ts +2 -2
  224. package/dist/rpc.d.ts.map +1 -1
  225. package/dist/rpc.js +2 -2
  226. package/dist/runtime.d.ts +19 -0
  227. package/dist/runtime.d.ts.map +1 -0
  228. package/dist/runtime.js +40 -0
  229. package/dist/setupRequest.d.ts +19 -0
  230. package/dist/setupRequest.d.ts.map +1 -0
  231. package/dist/setupRequest.js +69 -0
  232. package/dist/toast.d.ts +51 -0
  233. package/dist/toast.d.ts.map +1 -0
  234. package/dist/toast.js +34 -0
  235. package/dist/transform.d.ts +2 -2
  236. package/dist/transform.d.ts.map +1 -1
  237. package/dist/transform.js +4 -5
  238. package/dist/utils/effectify.d.ts +2 -2
  239. package/dist/utils/effectify.d.ts.map +1 -1
  240. package/dist/utils/effectify.js +2 -2
  241. package/dist/utils/extend.d.ts +1 -1
  242. package/dist/utils/extend.d.ts.map +1 -1
  243. package/dist/utils/gen.d.ts +5 -5
  244. package/dist/utils/gen.d.ts.map +1 -1
  245. package/dist/utils/logLevel.d.ts +3 -3
  246. package/dist/utils/logLevel.d.ts.map +1 -1
  247. package/dist/utils/logger.d.ts +5 -4
  248. package/dist/utils/logger.d.ts.map +1 -1
  249. package/dist/utils/logger.js +4 -4
  250. package/dist/utils.d.ts +40 -45
  251. package/dist/utils.d.ts.map +1 -1
  252. package/dist/utils.js +19 -27
  253. package/dist/validation/validators.d.ts +1 -1
  254. package/dist/validation/validators.d.ts.map +1 -1
  255. package/dist/validation.d.ts +1 -1
  256. package/dist/validation.d.ts.map +1 -1
  257. package/dist/withToast.d.ts +30 -0
  258. package/dist/withToast.d.ts.map +1 -0
  259. package/dist/withToast.js +64 -0
  260. package/package.json +162 -24
  261. package/src/Array.ts +3 -3
  262. package/src/Config/SecretURL.ts +5 -2
  263. package/src/Config/internal/configSecretURL.ts +1 -1
  264. package/src/Config.ts +14 -0
  265. package/src/ConfigProvider.ts +48 -0
  266. package/src/{ServiceMap.ts → Context.ts} +56 -63
  267. package/src/Effect.ts +12 -14
  268. package/src/Emailer.ts +51 -0
  269. package/src/Layer.ts +10 -6
  270. package/src/Model/Repository/Registry.ts +34 -0
  271. package/src/Model/Repository/ext.ts +375 -0
  272. package/src/Model/Repository/internal/internal.ts +691 -0
  273. package/src/Model/Repository/legacy.ts +29 -0
  274. package/src/Model/Repository/makeRepo.ts +144 -0
  275. package/src/Model/Repository/service.ts +639 -0
  276. package/src/Model/Repository/validation.ts +31 -0
  277. package/src/Model/Repository.ts +6 -0
  278. package/src/Model/dsl.ts +129 -0
  279. package/src/Model/filter/filterApi.ts +60 -0
  280. package/src/Model/filter/types/errors.ts +47 -0
  281. package/src/Model/filter/types/fields.ts +50 -0
  282. package/src/Model/filter/types/path/common.ts +404 -0
  283. package/src/Model/filter/types/path/eager.ts +297 -0
  284. package/src/Model/filter/types/path/index.ts +4 -0
  285. package/src/Model/filter/types/utils.ts +128 -0
  286. package/src/Model/filter/types/validator.ts +46 -0
  287. package/src/Model/filter/types.ts +6 -0
  288. package/src/Model/query/dsl.ts +2546 -0
  289. package/src/Model/query/new-kid-interpreter.ts +484 -0
  290. package/src/Model/query.ts +13 -0
  291. package/src/Model.ts +4 -0
  292. package/src/NonEmptySet.ts +3 -1
  293. package/src/Option.ts +2 -0
  294. package/src/Pure.ts +21 -19
  295. package/src/QueueMaker.ts +19 -0
  296. package/src/RequestContext.ts +62 -0
  297. package/src/Schema/Class.ts +274 -64
  298. package/src/Schema/SchemaParser.ts +12 -0
  299. package/src/Schema/SpecialJsonSchema.ts +139 -0
  300. package/src/Schema/SpecialOpenApi.ts +130 -0
  301. package/src/Schema/brand.ts +22 -2
  302. package/src/Schema/email.ts +7 -2
  303. package/src/Schema/ext.ts +443 -88
  304. package/src/Schema/moreStrings.ts +93 -37
  305. package/src/Schema/numbers.ts +64 -16
  306. package/src/Schema/phoneNumber.ts +5 -1
  307. package/src/Schema/strings.ts +4 -8
  308. package/src/Schema.ts +374 -10
  309. package/src/Set.ts +5 -1
  310. package/src/Store.ts +277 -0
  311. package/src/_ext/Array.ts +3 -1
  312. package/src/_ext/misc.ts +4 -1
  313. package/src/_ext/ord.ext.ts +2 -1
  314. package/src/client/InvalidationKeys.ts +50 -0
  315. package/src/client/apiClientFactory.ts +230 -131
  316. package/src/client/clientFor.ts +102 -31
  317. package/src/client/errors.ts +52 -26
  318. package/src/client/makeClient.ts +592 -71
  319. package/src/client.ts +5 -4
  320. package/src/http/Request.ts +1 -1
  321. package/src/ids.ts +25 -3
  322. package/src/index.ts +7 -10
  323. package/src/middleware.ts +13 -9
  324. package/src/rpc/Invalidation.ts +261 -0
  325. package/src/rpc/MiddlewareMaker.ts +83 -75
  326. package/src/rpc/README.md +2 -2
  327. package/src/rpc/RpcContextMap.ts +6 -5
  328. package/src/rpc/RpcMiddleware.ts +18 -12
  329. package/src/rpc.ts +1 -1
  330. package/src/runtime.ts +56 -0
  331. package/src/setupRequest.ts +134 -0
  332. package/src/toast.ts +54 -0
  333. package/src/transform.ts +3 -3
  334. package/src/utils/effectify.ts +1 -1
  335. package/src/utils/gen.ts +8 -8
  336. package/src/utils/logLevel.ts +1 -1
  337. package/src/utils/logger.ts +4 -3
  338. package/src/utils.ts +62 -139
  339. package/src/withToast.ts +133 -0
  340. package/test/dist/rpc-dynamic-middleware.test.d.ts.map +1 -0
  341. package/test/dist/rpc.test.d.ts.map +1 -1
  342. package/test/dist/secretURL.test.d.ts.map +1 -0
  343. package/test/dist/special.test.d.ts.map +1 -0
  344. package/test/dist/stream-error.types.d.ts +2 -0
  345. package/test/dist/stream-error.types.d.ts.map +1 -0
  346. package/test/dist/stream-error.types.js +27 -0
  347. package/test/moreStrings.test.ts +1 -1
  348. package/test/rpc.test.ts +46 -6
  349. package/test/schema.test.ts +459 -30
  350. package/test/secretURL.test.ts +160 -0
  351. package/test/special.test.ts +1026 -0
  352. package/test/utils.test.ts +7 -7
  353. package/tsconfig.base.json +6 -5
  354. package/tsconfig.json +2 -1
  355. package/tsconfig.json.bak +2 -2
  356. package/tsconfig.src.json +29 -29
  357. package/tsconfig.test.json +2 -2
  358. package/dist/Operations.d.ts +0 -123
  359. package/dist/Operations.d.ts.map +0 -1
  360. package/dist/Operations.js +0 -29
  361. package/dist/ServiceMap.d.ts +0 -44
  362. package/dist/ServiceMap.d.ts.map +0 -1
  363. package/dist/ServiceMap.js +0 -91
  364. package/eslint.config.mjs +0 -26
  365. package/src/Operations.ts +0 -55
@@ -0,0 +1,64 @@
1
+ import * as Cause from "effect/Cause";
2
+ import * as Fiber from "effect/Fiber";
3
+ import * as Context from "./Context.js";
4
+ import * as Effect from "./Effect.js";
5
+ import * as Layer from "./Layer.js";
6
+ import * as S from "./Schema.js";
7
+ import { CurrentToastId, Toast } from "./toast.js";
8
+ import { wrapEffect } from "./utils.js";
9
+ // @effect-diagnostics-next-line missingEffectServiceDependency:off
10
+ export class WithToast extends Context.Service()("WithToast", {
11
+ make: Effect.gen(function* () {
12
+ const toast = yield* Toast;
13
+ return (options) => Effect.fnUntraced(function* (self, ...args) {
14
+ const baseTimeout = options.timeout ?? 3_000;
15
+ const stableToastId = typeof options.stableToastId === "function"
16
+ ? options.stableToastId(...args)
17
+ : options.stableToastId;
18
+ const requestId = yield* Effect.currentSpan.pipe(Effect.map((span) => span.traceId), Effect.orElseSucceed(() => S.StringId.make()));
19
+ const groupId = options.groupId;
20
+ const meta = { ...(groupId !== undefined ? { groupId } : {}), requestId };
21
+ const t = yield* wrapEffect(options.onWaiting)(...args);
22
+ const toastId = t === null
23
+ ? stableToastId
24
+ : stableToastId ?? `wait-${Math.random().toString(36).slice(2)}`;
25
+ const waitingFiber = t === null ? undefined : yield* Effect.forkChild(Effect.sleep("1 seconds").pipe(Effect.andThen(toast.info(t, { id: toastId, timeout: Infinity, ...meta }))));
26
+ const interruptWaiting = waitingFiber ? Fiber.interrupt(waitingFiber) : Effect.void;
27
+ return yield* self.pipe(Effect.tap(Effect.fnUntraced(function* (a) {
28
+ yield* interruptWaiting;
29
+ const t = yield* wrapEffect(options.onSuccess)(a, ...args);
30
+ if (t === null) {
31
+ return;
32
+ }
33
+ yield* toast.success(t, toastId !== undefined
34
+ ? { id: toastId, timeout: baseTimeout, ...meta }
35
+ : { timeout: baseTimeout, ...meta });
36
+ })), Effect.tapCause(Effect.fnUntraced(function* (cause) {
37
+ yield* interruptWaiting;
38
+ yield* Effect.logDebug("WithToast - caught error cause: " + Cause.squash(cause), Cause.hasInterruptsOnly(cause), cause);
39
+ if (Cause.hasInterruptsOnly(cause)) {
40
+ if (toastId)
41
+ yield* toast.dismiss(toastId);
42
+ return;
43
+ }
44
+ const spanInfo = options.showSpanInfo !== false
45
+ ? yield* Effect.currentSpan.pipe(Effect.map((span) => `\nTrace: ${span.traceId}\nSpan: ${span.spanId}`), Effect.orElseSucceed(() => ""))
46
+ : "";
47
+ const t = yield* wrapEffect(options.onFailure)(Cause.findErrorOption(cause), ...args);
48
+ const opts = { timeout: baseTimeout * 2, ...meta };
49
+ if (typeof t === "object") {
50
+ const message = t.message + spanInfo;
51
+ return t.level === "warn"
52
+ ? yield* toast.warning(message, toastId !== undefined ? { ...opts, id: toastId } : opts)
53
+ : yield* toast.error(message, toastId !== undefined ? { ...opts, id: toastId } : opts);
54
+ }
55
+ yield* toast.error(t + spanInfo, toastId !== undefined ? { ...opts, id: toastId } : opts);
56
+ }, Effect.uninterruptible)), toastId !== undefined ? Effect.provideService(CurrentToastId, CurrentToastId.of({ toastId })) : (_) => _);
57
+ });
58
+ })
59
+ }) {
60
+ static DefaultWithoutDependencies = Layer.effect(this, this.make);
61
+ static Default = this.DefaultWithoutDependencies;
62
+ static handle = (options) => (self, ...args) => this.use((_) => _(options)(self, ...args));
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dpdGhUb2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUVuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxZQUFZLENBQUE7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQWtDdkMsbUVBQW1FO0FBQ25FLE1BQU0sT0FBTyxTQUFVLFNBQVEsT0FBTyxDQUFDLE9BQU8sRUFBYSxDQUFDLFdBQVcsRUFBRTtJQUN2RSxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFBO1FBQzFCLE9BQU8sQ0FDTCxPQUFtRCxFQUNuRCxFQUFFLENBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBQyxJQUE0QixFQUFFLEdBQUcsSUFBVTtZQUNyRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQTtZQUU1QyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssVUFBVTtnQkFDL0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFBO1lBRXpCLE1BQU0sU0FBUyxHQUFXLEtBQUssQ0FBQyxD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
package/package.json CHANGED
@@ -1,31 +1,30 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "4.0.0-beta.25",
3
+ "version": "4.0.0-beta.251",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "@tsconfig/strictest": "^2.0.8",
8
8
  "date-fns": "^4.1.0",
9
- "nanoid": "^5.1.6",
9
+ "nanoid": "^5.1.11",
10
10
  "path-parser": "^6.1.0",
11
11
  "query-string": "^9.3.1",
12
12
  "ts-pattern": "^5.9.0",
13
13
  "ts-toolbelt": "^9.6.0",
14
- "uuid": "^13.0.0",
15
- "validator": "^13.15.26"
14
+ "uuid": "^14.0.0",
15
+ "validator": "^13.15.35"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@faker-js/faker": "^8.4.1",
19
- "@types/node": "25.3.3",
19
+ "@types/node": "25.6.0",
20
20
  "@types/uuid": "^11.0.0",
21
21
  "@types/validator": "^13.15.10",
22
- "fast-check": "~4.5.3",
23
- "typescript": "~5.9.3",
24
- "vitest": "^4.0.18",
25
- "@effect-app/eslint-shared-config": "0.5.7-beta.2"
22
+ "fast-check": "~4.7.0",
23
+ "typescript": "~6.0.3",
24
+ "vitest": "^4.1.5"
26
25
  },
27
26
  "peerDependencies": {
28
- "effect": "^4.0.0-beta.36"
27
+ "effect": "^4.0.0-beta.70"
29
28
  },
30
29
  "typesVersions": {
31
30
  "*": {
@@ -47,14 +46,30 @@
47
46
  "types": "./dist/Chunk.d.ts",
48
47
  "default": "./dist/Chunk.js"
49
48
  },
49
+ "./Config": {
50
+ "types": "./dist/Config.d.ts",
51
+ "default": "./dist/Config.js"
52
+ },
50
53
  "./Config/SecretURL": {
51
54
  "types": "./dist/Config/SecretURL.d.ts",
52
55
  "default": "./dist/Config/SecretURL.js"
53
56
  },
57
+ "./ConfigProvider": {
58
+ "types": "./dist/ConfigProvider.d.ts",
59
+ "default": "./dist/ConfigProvider.js"
60
+ },
61
+ "./Context": {
62
+ "types": "./dist/Context.d.ts",
63
+ "default": "./dist/Context.js"
64
+ },
54
65
  "./Effect": {
55
66
  "types": "./dist/Effect.d.ts",
56
67
  "default": "./dist/Effect.js"
57
68
  },
69
+ "./Emailer": {
70
+ "types": "./dist/Emailer.d.ts",
71
+ "default": "./dist/Emailer.js"
72
+ },
58
73
  "./Function": {
59
74
  "types": "./dist/Function.d.ts",
60
75
  "default": "./dist/Function.js"
@@ -67,14 +82,94 @@
67
82
  "types": "./dist/Layer.d.ts",
68
83
  "default": "./dist/Layer.js"
69
84
  },
85
+ "./Model": {
86
+ "types": "./dist/Model.d.ts",
87
+ "default": "./dist/Model.js"
88
+ },
89
+ "./Model/Repository": {
90
+ "types": "./dist/Model/Repository.d.ts",
91
+ "default": "./dist/Model/Repository.js"
92
+ },
93
+ "./Model/Repository/Registry": {
94
+ "types": "./dist/Model/Repository/Registry.d.ts",
95
+ "default": "./dist/Model/Repository/Registry.js"
96
+ },
97
+ "./Model/Repository/ext": {
98
+ "types": "./dist/Model/Repository/ext.d.ts",
99
+ "default": "./dist/Model/Repository/ext.js"
100
+ },
101
+ "./Model/Repository/legacy": {
102
+ "types": "./dist/Model/Repository/legacy.d.ts",
103
+ "default": "./dist/Model/Repository/legacy.js"
104
+ },
105
+ "./Model/Repository/makeRepo": {
106
+ "types": "./dist/Model/Repository/makeRepo.d.ts",
107
+ "default": "./dist/Model/Repository/makeRepo.js"
108
+ },
109
+ "./Model/Repository/service": {
110
+ "types": "./dist/Model/Repository/service.d.ts",
111
+ "default": "./dist/Model/Repository/service.js"
112
+ },
113
+ "./Model/Repository/validation": {
114
+ "types": "./dist/Model/Repository/validation.d.ts",
115
+ "default": "./dist/Model/Repository/validation.js"
116
+ },
117
+ "./Model/dsl": {
118
+ "types": "./dist/Model/dsl.d.ts",
119
+ "default": "./dist/Model/dsl.js"
120
+ },
121
+ "./Model/filter/filterApi": {
122
+ "types": "./dist/Model/filter/filterApi.d.ts",
123
+ "default": "./dist/Model/filter/filterApi.js"
124
+ },
125
+ "./Model/filter/types": {
126
+ "types": "./dist/Model/filter/types.d.ts",
127
+ "default": "./dist/Model/filter/types.js"
128
+ },
129
+ "./Model/filter/types/errors": {
130
+ "types": "./dist/Model/filter/types/errors.d.ts",
131
+ "default": "./dist/Model/filter/types/errors.js"
132
+ },
133
+ "./Model/filter/types/fields": {
134
+ "types": "./dist/Model/filter/types/fields.d.ts",
135
+ "default": "./dist/Model/filter/types/fields.js"
136
+ },
137
+ "./Model/filter/types/path/common": {
138
+ "types": "./dist/Model/filter/types/path/common.d.ts",
139
+ "default": "./dist/Model/filter/types/path/common.js"
140
+ },
141
+ "./Model/filter/types/path/eager": {
142
+ "types": "./dist/Model/filter/types/path/eager.d.ts",
143
+ "default": "./dist/Model/filter/types/path/eager.js"
144
+ },
145
+ "./Model/filter/types/path/index": {
146
+ "types": "./dist/Model/filter/types/path/index.d.ts",
147
+ "default": "./dist/Model/filter/types/path/index.js"
148
+ },
149
+ "./Model/filter/types/utils": {
150
+ "types": "./dist/Model/filter/types/utils.d.ts",
151
+ "default": "./dist/Model/filter/types/utils.js"
152
+ },
153
+ "./Model/filter/types/validator": {
154
+ "types": "./dist/Model/filter/types/validator.d.ts",
155
+ "default": "./dist/Model/filter/types/validator.js"
156
+ },
157
+ "./Model/query": {
158
+ "types": "./dist/Model/query.d.ts",
159
+ "default": "./dist/Model/query.js"
160
+ },
161
+ "./Model/query/dsl": {
162
+ "types": "./dist/Model/query/dsl.d.ts",
163
+ "default": "./dist/Model/query/dsl.js"
164
+ },
165
+ "./Model/query/new-kid-interpreter": {
166
+ "types": "./dist/Model/query/new-kid-interpreter.d.ts",
167
+ "default": "./dist/Model/query/new-kid-interpreter.js"
168
+ },
70
169
  "./NonEmptySet": {
71
170
  "types": "./dist/NonEmptySet.d.ts",
72
171
  "default": "./dist/NonEmptySet.js"
73
172
  },
74
- "./Operations": {
75
- "types": "./dist/Operations.d.ts",
76
- "default": "./dist/Operations.js"
77
- },
78
173
  "./Option": {
79
174
  "types": "./dist/Option.d.ts",
80
175
  "default": "./dist/Option.js"
@@ -83,6 +178,14 @@
83
178
  "types": "./dist/Pure.d.ts",
84
179
  "default": "./dist/Pure.js"
85
180
  },
181
+ "./QueueMaker": {
182
+ "types": "./dist/QueueMaker.d.ts",
183
+ "default": "./dist/QueueMaker.js"
184
+ },
185
+ "./RequestContext": {
186
+ "types": "./dist/RequestContext.d.ts",
187
+ "default": "./dist/RequestContext.js"
188
+ },
86
189
  "./Schema": {
87
190
  "types": "./dist/Schema.d.ts",
88
191
  "default": "./dist/Schema.js"
@@ -99,6 +202,18 @@
99
202
  "types": "./dist/Schema/Methods.d.ts",
100
203
  "default": "./dist/Schema/Methods.js"
101
204
  },
205
+ "./Schema/SchemaParser": {
206
+ "types": "./dist/Schema/SchemaParser.d.ts",
207
+ "default": "./dist/Schema/SchemaParser.js"
208
+ },
209
+ "./Schema/SpecialJsonSchema": {
210
+ "types": "./dist/Schema/SpecialJsonSchema.d.ts",
211
+ "default": "./dist/Schema/SpecialJsonSchema.js"
212
+ },
213
+ "./Schema/SpecialOpenApi": {
214
+ "types": "./dist/Schema/SpecialOpenApi.d.ts",
215
+ "default": "./dist/Schema/SpecialOpenApi.js"
216
+ },
102
217
  "./Schema/brand": {
103
218
  "types": "./dist/Schema/brand.d.ts",
104
219
  "default": "./dist/Schema/brand.js"
@@ -131,14 +246,14 @@
131
246
  "types": "./dist/Schema/strings.d.ts",
132
247
  "default": "./dist/Schema/strings.js"
133
248
  },
134
- "./ServiceMap": {
135
- "types": "./dist/ServiceMap.d.ts",
136
- "default": "./dist/ServiceMap.js"
137
- },
138
249
  "./Set": {
139
250
  "types": "./dist/Set.d.ts",
140
251
  "default": "./dist/Set.js"
141
252
  },
253
+ "./Store": {
254
+ "types": "./dist/Store.d.ts",
255
+ "default": "./dist/Store.js"
256
+ },
142
257
  "./TypeTest": {
143
258
  "types": "./dist/TypeTest.d.ts",
144
259
  "default": "./dist/TypeTest.js"
@@ -175,6 +290,10 @@
175
290
  "types": "./dist/client.d.ts",
176
291
  "default": "./dist/client.js"
177
292
  },
293
+ "./client/InvalidationKeys": {
294
+ "types": "./dist/client/InvalidationKeys.d.ts",
295
+ "default": "./dist/client/InvalidationKeys.js"
296
+ },
178
297
  "./client/apiClientFactory": {
179
298
  "types": "./dist/client/apiClientFactory.d.ts",
180
299
  "default": "./dist/client/apiClientFactory.js"
@@ -219,6 +338,10 @@
219
338
  "types": "./dist/rpc.d.ts",
220
339
  "default": "./dist/rpc.js"
221
340
  },
341
+ "./rpc/Invalidation": {
342
+ "types": "./dist/rpc/Invalidation.d.ts",
343
+ "default": "./dist/rpc/Invalidation.js"
344
+ },
222
345
  "./rpc/MiddlewareMaker": {
223
346
  "types": "./dist/rpc/MiddlewareMaker.d.ts",
224
347
  "default": "./dist/rpc/MiddlewareMaker.js"
@@ -231,6 +354,18 @@
231
354
  "types": "./dist/rpc/RpcMiddleware.d.ts",
232
355
  "default": "./dist/rpc/RpcMiddleware.js"
233
356
  },
357
+ "./runtime": {
358
+ "types": "./dist/runtime.d.ts",
359
+ "default": "./dist/runtime.js"
360
+ },
361
+ "./setupRequest": {
362
+ "types": "./dist/setupRequest.d.ts",
363
+ "default": "./dist/setupRequest.js"
364
+ },
365
+ "./toast": {
366
+ "types": "./dist/toast.d.ts",
367
+ "default": "./dist/toast.js"
368
+ },
234
369
  "./transform": {
235
370
  "types": "./dist/transform.d.ts",
236
371
  "default": "./dist/transform.js"
@@ -266,6 +401,10 @@
266
401
  "./validation/validators": {
267
402
  "types": "./dist/validation/validators.d.ts",
268
403
  "default": "./dist/validation/validators.js"
404
+ },
405
+ "./withToast": {
406
+ "types": "./dist/withToast.d.ts",
407
+ "default": "./dist/withToast.js"
269
408
  }
270
409
  },
271
410
  "gitHead": "bd8e27eea3eff97db8739d577d67e7336c078d28",
@@ -280,20 +419,19 @@
280
419
  "scripts": {
281
420
  "watch": "pnpm build:tsc -w",
282
421
  "build:tsc": "pnpm clean-dist && effect-app-cli packagejson && pnpm check",
283
- "check": "tsc --build",
422
+ "check": "tsgo --build",
284
423
  "build:tsc-src": "pnpm clean-dist && effect-app-cli packagejson tsc --build ./tsconfig.src.json",
285
424
  "build:src": "pnpm build:tsc-src",
286
425
  "build": "pnpm build:tsc",
287
- "watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsc -w",
426
+ "watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsgo -w",
288
427
  "clean": "rm -rf dist",
289
428
  "clean-dist": "sh ../../scripts/clean-dist.sh",
290
429
  "circular": "pnpm circular:src && pnpm circular:dist",
291
430
  "circular:src": "madge --circular --ts-config ./tsconfig.json --extensions ts ./src",
292
431
  "circular:dist": "madge --circular --extensions js ./dist",
293
- "compile": "NODE_OPTIONS=--max-old-space-size=6144 tsc --noEmit",
294
- "lint": "NODE_OPTIONS=--max-old-space-size=6144 ESLINT_TS=1 eslint ./src",
295
- "lint:watch": "ESLINT_TS=1 esw -w --changed --clear --ext ts,tsx .",
296
- "lint-fix": "pnpm lint --fix",
432
+ "compile": "NODE_OPTIONS=--max-old-space-size=6144 tsgo --noEmit",
433
+ "lint": "oxlint --type-aware ./src && pnpm exec dprint check --config ../../dprint.jsonc .",
434
+ "lint-fix": "oxlint --type-aware --fix ./src && pnpm exec dprint fmt --config ../../dprint.jsonc .",
297
435
  "test": "vitest",
298
436
  "test:run": "pnpm run test run --passWithNoTests",
299
437
  "testsuite": "pnpm lint && pnpm circular && pnpm run test:run",
package/src/Array.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Chunk, Effect } from "effect"
2
1
  import type { NonEmptyArray, NonEmptyReadonlyArray } from "effect/Array"
3
2
  import * as Array from "effect/Array"
4
- import * as T from "effect/Effect"
3
+ import * as Chunk from "effect/Chunk"
4
+ import * as Effect from "effect/Effect"
5
5
  import { dual, type Predicate } from "./Function.js"
6
6
  import * as Option from "./Option.js"
7
7
 
@@ -104,7 +104,7 @@ export function chunk_<T>(items_: Iterable<T>, size: number) {
104
104
  }
105
105
 
106
106
  export function forEachEffectNA<A, R, E, B>(as: NonEmptyReadonlyArray<A>, f: (a: A) => Effect.Effect<B, E, R>) {
107
- return Effect.map(T.forEach(as, f), (_) => Option.getOrNull(toNonEmptyArray(_)))
107
+ return Effect.map(Effect.forEach(as, f), (_) => Option.getOrNull(toNonEmptyArray(_)))
108
108
  }
109
109
 
110
110
  export * from "effect/Array"
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { Config, type Equal, type Redacted } from "effect"
5
4
  import type * as Chunk from "effect/Chunk"
5
+ import * as Config from "effect/Config"
6
+ import type * as Equal from "effect/Equal"
7
+ import type * as Redacted from "effect/Redacted"
6
8
  import * as internal from "./internal/configSecretURL.js"
7
9
 
8
10
  // /**
@@ -21,6 +23,7 @@ import * as internal from "./internal/configSecretURL.js"
21
23
  * @since 1.0.0
22
24
  * @category models
23
25
  */
26
+ // eslint-disable-next-line import/namespace
24
27
  export interface SecretURL extends Redacted.Redacted, Equal.Equal {
25
28
  /** @internal */
26
29
  readonly raw: Array<number>
@@ -73,5 +76,5 @@ export const value: (self: SecretURL) => string = internal.value
73
76
  export const unsafeWipe: (self: SecretURL) => void = internal.unsafeWipe
74
77
 
75
78
  export const secretURL = (name?: string): Config.Config<SecretURL> => {
76
- return Config.map(Config.string(name), fromString)
79
+ return Config.map(Config.nonEmptyString(name), fromString)
77
80
  }
@@ -1,5 +1,5 @@
1
- import { Redacted } from "effect"
2
1
  import * as Chunk from "effect/Chunk"
2
+ import * as Redacted from "effect/Redacted"
3
3
  import type * as SecretURL from "../SecretURL.js"
4
4
 
5
5
  /** @internal */
package/src/Config.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { type Config, make } from "effect/Config"
2
+ import { dual } from "effect/Function"
3
+
4
+ import * as ConfigProvider from "./ConfigProvider.js"
5
+
6
+ export const nested: {
7
+ (name: string): <A>(self: Config<A>) => Config<A>
8
+ <A>(self: Config<A>, name: string): Config<A>
9
+ } = dual(
10
+ 2,
11
+ <A>(self: Config<A>, name: string): Config<A> => make((provider) => self.parse(ConfigProvider.nested(provider, name)))
12
+ )
13
+
14
+ export * from "effect/Config"
@@ -0,0 +1,48 @@
1
+ import { type ConfigProvider, make, type Path } from "effect/ConfigProvider"
2
+ import { dual } from "effect/Function"
3
+
4
+ /**
5
+ * Scopes a provider so that all lookups are prefixed with the given path
6
+ * segments.
7
+ *
8
+ * When to use:
9
+ * - Namespacing config under a prefix like `"app"` or `"database"`.
10
+ * - Reusing the same provider shape for multiple sub-configs.
11
+ *
12
+ * Accepts a single string or a full `Path` array. The prefix is prepended
13
+ * *after* any `mapInput` transformation runs, so ordering matters when
14
+ * composing with {@link mapInput} or {@link constantCase}.
15
+ *
16
+ * Supports both data-last and data-first calling conventions.
17
+ *
18
+ * **Example** (Nesting under a prefix)
19
+ *
20
+ * ```ts
21
+ * import * as ConfigProvider from "effect/ConfigProvider"
22
+ *
23
+ * const provider = ConfigProvider.fromEnv({
24
+ * env: { APP_HOST: "localhost", APP_PORT: "3000" }
25
+ * })
26
+ *
27
+ * // Lookups for ["HOST"] now resolve to ["APP", "HOST"]
28
+ * const scoped = ConfigProvider.nested(provider, "APP")
29
+ * ```
30
+ *
31
+ * @see {@link mapInput} – for arbitrary path transformations
32
+ *
33
+ * @category Combinators
34
+ * @since 4.0.0
35
+ */
36
+ export const nested: {
37
+ (prefix: string | Path): (self: ConfigProvider) => ConfigProvider
38
+ (self: ConfigProvider, prefix: string | Path): ConfigProvider
39
+ } = dual(
40
+ 2,
41
+ (self: ConfigProvider, prefix: string | Path): ConfigProvider => {
42
+ let path: Path = typeof prefix === "string" ? [prefix] : prefix
43
+ if (self.mapInput) path = self.mapInput(path)
44
+ return make(self.get, self.mapInput, self.prefix ? [...self.prefix, ...path] : path)
45
+ }
46
+ )
47
+
48
+ export * from "effect/ConfigProvider"
@@ -1,21 +1,17 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /**
3
- * We're doing the long way around here with assignTag, TagBase & TagBaseTagged,
4
- * because there's a typescript compiler issue where it will complain about Equal.symbol, and Hash.symbol not being accessible.
5
- * https://github.com/microsoft/TypeScript/issues/52644
6
- */
2
+ /* eslint-disable import/namespace */
7
3
 
8
- import { type Effect, Layer, type Scope, type Types } from "effect"
9
- import * as ServiceMap from "effect/ServiceMap"
10
- import { type Yieldable } from "./Effect.js"
4
+ import * as CTX from "effect/Context"
5
+ import type * as Effect from "effect/Effect"
6
+ import * as Layer from "effect/Layer"
7
+ import type * as Scope from "effect/Scope"
8
+ import type * as Types from "effect/Types"
11
9
 
12
- export * from "effect/ServiceMap"
10
+ export * from "effect/Context"
13
11
 
14
- export interface Opaque<Self extends object, in out Shape extends object>
15
- extends ServiceMap.Key<Self, Self>, Yieldable<Opaque<Self, Shape>, Self, never, Self>
16
- {
12
+ export interface Opaque<Self extends object, in out Shape extends object> extends CTX.Key<Self, Self> {
17
13
  of(this: void, self: Shape): Self
18
- serviceMap(self: Shape): ServiceMap.ServiceMap<Self>
14
+ context(self: Shape): CTX.Context<Self>
19
15
  // a version that leverages the Shape -> Self conversion
20
16
  toLayer: <E, R>(
21
17
  eff: Effect.Effect<Shape, E, R>
@@ -25,11 +21,11 @@ export interface Opaque<Self extends object, in out Shape extends object>
25
21
  }
26
22
 
27
23
  // export interface OpaqueMake<Self extends object, in out Shape extends object, E, R>
28
- // extends ServiceMap.Service<Self, Self>
24
+ // extends CTX.Service<Self, Self>
29
25
  // {
30
26
  // // temp while sorting out https://github.com/Effect-TS/effect-smol/pull/1534
31
27
  // of(self: Shape): Self
32
- // serviceMap2(self: Shape): ServiceMap.ServiceMap<Self>
28
+ // contextMap2(self: Shape): CTX.Context<Self>
33
29
  // // a version that leverages the Shape -> Self conversion
34
30
  // toLayer: {
35
31
  // <E, R>(
@@ -44,7 +40,7 @@ export function assignTag<Identifier extends object, Shape extends object = Iden
44
40
  creationError?: Error
45
41
  ) {
46
42
  return <S extends object>(cls: S): S & Opaque<Identifier, Shape> => {
47
- const tag = ServiceMap.Service<Identifier, Shape>(key)
43
+ const tag = CTX.Service<Identifier, Shape>(key)
48
44
  let fields = tag
49
45
  if (Reflect.ownKeys(cls).includes("key")) {
50
46
  const { key, ...rest } = tag
@@ -67,54 +63,51 @@ export function assignTag<Identifier extends object, Shape extends object = Iden
67
63
  }
68
64
  }
69
65
 
70
- export type ServiceAcessorShape<Self, Type> = Type extends Record<PropertyKey, any> ? {
71
- [
72
- k in keyof Type as Type[k] extends ((...args: [...infer Args]) => infer Ret)
73
- ? ((...args: Readonly<Args>) => Ret) extends Type[k] ? k : never
74
- : k
75
- ]: Type[k] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R>
76
- ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R>
77
- : Type[k] extends (...args: [...infer Args]) => infer A
78
- ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self>
79
- : Type[k] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R>
80
- : Effect.Effect<Type[k], never, Self>
81
- }
82
- : {}
66
+ /** Accessor for a service method that returns a plain value. Wraps via `useSync`. */
67
+ export const accessFn = <
68
+ Self extends object,
69
+ Shape extends Record<PropertyKey, any>,
70
+ K extends keyof Shape
71
+ >(
72
+ Tag: Opaque<Self, Shape>,
73
+ key: K
74
+ ): Shape[K] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self>
75
+ : never => ((...args: Array<any>) => Tag.useSync((s: any) => s[key](...args))) as any
83
76
 
84
- /**
85
- * Only use this in very specific cases where using dependencies directly is prefered, like inside command handlers.
86
- */
87
- export const proxify = <T extends object>(Tag: T) =>
88
- <Self, Shape>():
89
- & T
90
- & ServiceAcessorShape<Self, Shape> =>
91
- {
92
- const cache = new Map()
93
- const done = new Proxy(Tag, {
94
- get(_target: any, prop: any, _receiver) {
95
- if (prop === "use") {
96
- // @ts-expect-error abc
97
- return (body) => (Tag as any).use(body)
98
- }
99
- if (prop in Tag) {
100
- return (Tag as any)[prop]
101
- }
102
- if (cache.has(prop)) {
103
- return cache.get(prop)
104
- }
105
- const fn = (...args: Array<any>) => (Tag as any).use((s: any) => s[prop](...args))
106
- const cn = (Tag as any).use((s: any) => s[prop])
107
- // @effect-diagnostics effect/floatingEffect:off
108
- Object.assign(fn, cn)
109
- Object.setPrototypeOf(fn, Object.getPrototypeOf(cn))
110
- cache.set(prop, fn)
111
- return fn
112
- }
113
- })
114
- return done
115
- }
77
+ /** Accessor for a service method that returns an Effect. Delegates via `use`. */
78
+ export const accessEffectFn = <
79
+ Self extends object,
80
+ Shape extends Record<PropertyKey, any>,
81
+ K extends keyof Shape
82
+ >(
83
+ Tag: Opaque<Self, Shape>,
84
+ key: K
85
+ ): Shape[K] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R>
86
+ ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R>
87
+ : never => ((...args: Array<any>) => Tag.use((s: any) => s[key](...args))) as any
88
+
89
+ /** Accessor for a service property (constant). Wraps via `useSync`. */
90
+ export const accessCn = <
91
+ Self extends object,
92
+ Shape extends Record<PropertyKey, any>,
93
+ K extends keyof Shape
94
+ >(
95
+ Tag: Opaque<Self, Shape>,
96
+ key: K
97
+ ): Effect.Effect<Shape[K], never, Self> => Tag.useSync((s) => s[key])
98
+
99
+ /** Accessor for a service property that is an Effect. Delegates via `use`. */
100
+ export const accessEffectCn = <
101
+ Self extends object,
102
+ Shape extends Record<PropertyKey, any>,
103
+ K extends keyof Shape
104
+ >(
105
+ Tag: Opaque<Self, Shape>,
106
+ key: K
107
+ ): Shape[K] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R>
108
+ : never => Tag.use((s: any) => s[key]) as any
116
109
 
117
- export const TypeId = "~ServiceMap.Opaque"
110
+ export const TypeId = "~Context.Opaque"
118
111
 
119
112
  // export function Opaque<const Key extends string>(key: Key) {
120
113
  // return <Identifier extends object, Shape extends object>() => {
@@ -179,7 +172,7 @@ export const Opaque: {
179
172
  >
180
173
  & { readonly make: Make }
181
174
  } = () => (id: string, options: any) => {
182
- const svc = ServiceMap.Service()(id, options) as any
175
+ const svc = CTX.Service()(id, options) as any
183
176
  return Object.assign(svc, {
184
177
  toLayer: (eff: Effect.Effect<any, any, any>) => {
185
178
  return Layer.effect(svc, eff)