@effect-app/vue 4.0.0-beta.3 → 4.0.0-beta.300

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 (133) hide show
  1. package/CHANGELOG.md +2424 -0
  2. package/dist/atomQuery.d.ts +111 -0
  3. package/dist/atomQuery.d.ts.map +1 -0
  4. package/dist/atomQuery.js +386 -0
  5. package/dist/commander.d.ts +634 -0
  6. package/dist/commander.d.ts.map +1 -0
  7. package/dist/commander.js +1070 -0
  8. package/dist/{experimental/confirm.d.ts → confirm.d.ts} +6 -4
  9. package/dist/confirm.d.ts.map +1 -0
  10. package/dist/confirm.js +26 -0
  11. package/dist/dependencyMetadata.d.ts +10 -0
  12. package/dist/dependencyMetadata.d.ts.map +1 -0
  13. package/dist/dependencyMetadata.js +29 -0
  14. package/dist/errorReporter.d.ts +6 -4
  15. package/dist/errorReporter.d.ts.map +1 -1
  16. package/dist/errorReporter.js +14 -19
  17. package/dist/form.d.ts +14 -5
  18. package/dist/form.d.ts.map +1 -1
  19. package/dist/form.js +46 -13
  20. package/dist/internal/tanstackQuery.d.ts +9 -0
  21. package/dist/internal/tanstackQuery.d.ts.map +1 -0
  22. package/dist/internal/tanstackQuery.js +194 -0
  23. package/dist/intl.d.ts +15 -0
  24. package/dist/intl.d.ts.map +1 -0
  25. package/dist/intl.js +9 -0
  26. package/dist/lib.d.ts +7 -9
  27. package/dist/lib.d.ts.map +1 -1
  28. package/dist/lib.js +35 -10
  29. package/dist/makeClient.d.ts +236 -336
  30. package/dist/makeClient.d.ts.map +1 -1
  31. package/dist/makeClient.js +416 -408
  32. package/dist/makeContext.d.ts.map +1 -1
  33. package/dist/makeIntl.d.ts.map +1 -1
  34. package/dist/{experimental/makeUseCommand.d.ts → makeUseCommand.d.ts} +4 -3
  35. package/dist/makeUseCommand.d.ts.map +1 -0
  36. package/dist/makeUseCommand.js +13 -0
  37. package/dist/mutate.d.ts +109 -41
  38. package/dist/mutate.d.ts.map +1 -1
  39. package/dist/mutate.js +212 -59
  40. package/dist/query.d.ts +140 -46
  41. package/dist/query.d.ts.map +1 -1
  42. package/dist/query.js +328 -111
  43. package/dist/routeParams.d.ts +4 -4
  44. package/dist/routeParams.d.ts.map +1 -1
  45. package/dist/routeParams.js +4 -3
  46. package/dist/runtime.d.ts +1 -14
  47. package/dist/runtime.d.ts.map +1 -1
  48. package/dist/runtime.js +2 -26
  49. package/dist/suspense.d.ts +19 -0
  50. package/dist/suspense.d.ts.map +1 -0
  51. package/dist/suspense.js +38 -0
  52. package/dist/toast.d.ts +2 -0
  53. package/dist/toast.d.ts.map +1 -0
  54. package/dist/toast.js +2 -0
  55. package/dist/withToast.d.ts +2 -0
  56. package/dist/withToast.d.ts.map +1 -0
  57. package/dist/withToast.js +2 -0
  58. package/docs/atom-query-api-redesign.md +207 -0
  59. package/docs/query-key-invalidation.md +106 -0
  60. package/examples/streamMutation.ts +72 -0
  61. package/package.json +36 -95
  62. package/src/atomQuery.ts +540 -0
  63. package/src/commander.ts +3413 -0
  64. package/src/{experimental/confirm.ts → confirm.ts} +13 -15
  65. package/src/dependencyMetadata.ts +38 -0
  66. package/src/errorReporter.ts +65 -75
  67. package/src/form.ts +61 -18
  68. package/src/index.ts +7 -7
  69. package/src/internal/tanstackQuery.ts +289 -0
  70. package/src/intl.ts +12 -0
  71. package/src/lib.ts +49 -21
  72. package/src/makeClient.ts +967 -1159
  73. package/src/makeIntl.ts +2 -2
  74. package/src/{experimental/makeUseCommand.ts → makeUseCommand.ts} +9 -6
  75. package/src/mutate.ts +371 -153
  76. package/src/query.ts +694 -249
  77. package/src/routeParams.ts +7 -7
  78. package/src/runtime.ts +1 -31
  79. package/src/suspense.ts +43 -0
  80. package/src/toast.ts +1 -0
  81. package/src/withToast.ts +1 -0
  82. package/test/Mutation.test.ts +181 -24
  83. package/test/dependencyInvalidation.test.ts +373 -0
  84. package/test/dist/dependencyInvalidation.test.d.ts.map +1 -0
  85. package/test/dist/form.test.d.ts.map +1 -1
  86. package/test/dist/interrupt-refetch-repro.test.d.ts.map +1 -0
  87. package/test/dist/lib.test.d.ts.map +1 -0
  88. package/test/dist/query-span.test.d.ts.map +1 -0
  89. package/test/dist/streamFinal.test.d.ts.map +1 -0
  90. package/test/dist/streamFn.test.d.ts.map +1 -0
  91. package/test/dist/stubs.d.ts +3756 -122
  92. package/test/dist/stubs.d.ts.map +1 -1
  93. package/test/dist/stubs.js +192 -32
  94. package/test/dist/suspense-regression.test.d.ts.map +1 -0
  95. package/test/dist/suspense.test.d.ts.map +1 -0
  96. package/test/form-validation-errors.test.ts +25 -20
  97. package/test/form.test.ts +22 -3
  98. package/test/interrupt-refetch-repro.test.ts +623 -0
  99. package/test/lib.test.ts +240 -0
  100. package/test/makeClient.test.ts +437 -38
  101. package/test/query-span.test.ts +92 -0
  102. package/test/streamFinal.test.ts +64 -0
  103. package/test/streamFn.test.ts +457 -0
  104. package/test/stubs.ts +228 -43
  105. package/test/suspense-regression.test.ts +168 -0
  106. package/test/suspense.test.ts +160 -0
  107. package/tsconfig.examples.json +20 -0
  108. package/tsconfig.json +3 -1
  109. package/tsconfig.src.json +34 -34
  110. package/tsconfig.test.json +2 -2
  111. package/vitest.config.ts +5 -5
  112. package/dist/experimental/commander.d.ts +0 -359
  113. package/dist/experimental/commander.d.ts.map +0 -1
  114. package/dist/experimental/commander.js +0 -558
  115. package/dist/experimental/confirm.d.ts.map +0 -1
  116. package/dist/experimental/confirm.js +0 -28
  117. package/dist/experimental/intl.d.ts +0 -16
  118. package/dist/experimental/intl.d.ts.map +0 -1
  119. package/dist/experimental/intl.js +0 -5
  120. package/dist/experimental/makeUseCommand.d.ts.map +0 -1
  121. package/dist/experimental/makeUseCommand.js +0 -13
  122. package/dist/experimental/toast.d.ts +0 -47
  123. package/dist/experimental/toast.d.ts.map +0 -1
  124. package/dist/experimental/toast.js +0 -41
  125. package/dist/experimental/withToast.d.ts +0 -25
  126. package/dist/experimental/withToast.d.ts.map +0 -1
  127. package/dist/experimental/withToast.js +0 -45
  128. package/eslint.config.mjs +0 -24
  129. package/src/experimental/commander.ts +0 -1836
  130. package/src/experimental/intl.ts +0 -9
  131. package/src/experimental/toast.ts +0 -66
  132. package/src/experimental/withToast.ts +0 -99
  133. package/tsconfig.json.bak +0 -12
package/dist/query.js CHANGED
@@ -2,112 +2,341 @@
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-call */
3
3
  /* eslint-disable @typescript-eslint/no-unsafe-return */
4
4
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
6
+ import { injectRegistry, useAtomValue } from "@effect/atom-vue";
7
+ import * as Array from "effect-app/Array";
8
+ import { makeQueryKey } from "effect-app/client";
9
+ import * as Effect from "effect-app/Effect";
10
+ import * as Option from "effect-app/Option";
11
+ import * as Exit from "effect/Exit";
12
+ import * as Stream from "effect/Stream";
5
13
  import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
6
- import { useQuery as useTanstackQuery, useQueryClient } from "@tanstack/vue-query";
7
- import { Array, Cause, Effect, Exit, flow, Option, S } from "effect-app";
8
- import { ServiceUnavailableError } from "effect-app/client/errors";
9
- import { isHttpClientError } from "effect/unstable/http/HttpClientError";
10
- import { computed, ref, shallowRef, watch } from "vue";
11
- import { makeQueryKey, reportRuntimeError } from "./lib.js";
12
- export class KnownFiberFailure extends Error {
13
- effectCause;
14
- error;
15
- constructor(effectCause) {
16
- super("Query failed with cause: " + Cause.squash(effectCause));
17
- this.effectCause = effectCause;
18
- this.error = Cause.squash(effectCause);
14
+ import * as Atom from "effect/unstable/reactivity/Atom";
15
+ import { computed, effectScope, onBeforeUnmount, onMounted, onScopeDispose, ref, toValue } from "vue";
16
+ import { awaitAtomResult, buildQueryFamily, buildStreamQueryFamily, disabledQueryAtom, isStaleResult, refreshAtomWithCurrentSpan, staleTimeMsOf, withQueryOptions } from "./atomQuery.js";
17
+ import { latestDefined } from "./suspense.js";
18
+ const useScopedSuspenseSetup = (setup) => {
19
+ const scope = effectScope();
20
+ const controller = new AbortController();
21
+ const value = scope.run(setup);
22
+ if (value === undefined) {
23
+ throw new Error("Internal Error: atom suspense setup scope did not initialize");
19
24
  }
20
- }
21
- export const makeQuery = (getRuntime) => {
22
- const useQuery_ = (q) => (arg,
23
- // todo QueryKey type would be [string, ...string[]], but with I it would be [string, ...string[], I]
24
- options
25
- // TODO
26
- ) => {
27
- // we wrap into KnownFiberFailure because we want to keep the full cause of the failure.
28
- const runPromise = flow(Effect.runPromiseExitWith(getRuntime()), (_) => _.then(Exit.match({
29
- onFailure: (cause) => Promise.reject(new KnownFiberFailure(cause)),
30
- onSuccess: (value) => Promise.resolve(value)
31
- })));
32
- const arr = arg;
33
- const req = !arg
34
- ? undefined
35
- : typeof arr === "function"
36
- ? {
37
- get value() {
38
- return arr();
39
- }
40
- }
41
- : ref(arg);
42
- const queryKey = makeQueryKey(q);
43
- const handler = q.handler;
44
- const r = useTanstackQuery(Effect.isEffect(handler)
45
- ? {
46
- ...options,
47
- retry: (retryCount, error) => {
48
- if (error instanceof KnownFiberFailure) {
49
- if (!isHttpClientError(error.error) && !S.is(ServiceUnavailableError)(error.error)) {
50
- return false;
51
- }
52
- }
53
- return retryCount < 5;
54
- },
55
- queryKey,
56
- queryFn: ({ meta, signal }) => runPromise(handler
57
- .pipe(Effect.tapCauseIf(Cause.hasDies, (cause) => reportRuntimeError(cause)), Effect.withSpan(`query ${q.id}`, {}, { captureStackTrace: false }), meta?.["span"] ? Effect.withParentSpan(meta["span"]) : (_) => _), { signal })
25
+ const isMounted = ref(true);
26
+ let stopped = false;
27
+ const stop = () => {
28
+ if (stopped)
29
+ return;
30
+ stopped = true;
31
+ isMounted.value = false;
32
+ controller.abort();
33
+ scope.stop();
34
+ };
35
+ onBeforeUnmount(stop);
36
+ onScopeDispose(stop);
37
+ return [value, isMounted, controller.signal];
38
+ };
39
+ const queryFamilyCacheKey = (q) => `${makeQueryKey(q).join("/")}:${q.queryKeyProjectionHash ?? ""}`;
40
+ // One atom family per request shape, keyed by the stable query key + projection hash (not the
41
+ // handler object — `clientFor` returns a fresh proxy per call, so the object isn't shareable).
42
+ // Module-level + key-indexed => the family is process-global, so the same request+input read
43
+ // the same atom across components/pages => cross-page caching via the global registry.
44
+ const queryFamilyByKey = new Map();
45
+ const getQueryFamily = (rt, q) => {
46
+ const key = queryFamilyCacheKey(q);
47
+ let f = queryFamilyByKey.get(key);
48
+ if (!f) {
49
+ f = buildQueryFamily(rt, q);
50
+ queryFamilyByKey.set(key, f);
51
+ }
52
+ return f;
53
+ };
54
+ const streamQueryFamilyByKey = new Map();
55
+ const getStreamQueryFamily = (rt, q) => {
56
+ const key = queryFamilyCacheKey(q);
57
+ let f = streamQueryFamilyByKey.get(key);
58
+ if (!f) {
59
+ f = buildStreamQueryFamily(rt, q);
60
+ streamQueryFamilyByKey.set(key, f);
61
+ }
62
+ return f;
63
+ };
64
+ const makeAtomQueryCacheUpdater = (warnIfMissing) => ({
65
+ update: (registry, query, input, updater) => {
66
+ const family = queryFamilyByKey.get(queryFamilyCacheKey(query));
67
+ if (!family) {
68
+ if (warnIfMissing) {
69
+ console.warn(`Query ${query.id} has not been used yet; nothing to update`);
58
70
  }
59
- : {
60
- ...options,
61
- retry: (retryCount, error) => {
62
- if (error instanceof KnownFiberFailure) {
63
- if (!isHttpClientError(error.error) && !S.is(ServiceUnavailableError)(error.error)) {
64
- return false;
65
- }
66
- }
67
- return retryCount < 5;
68
- },
69
- queryKey: [...queryKey, req],
70
- queryFn: ({ meta, signal }) => runPromise(handler(req.value)
71
- .pipe(Effect.tapCauseIf(Cause.hasDies, (cause) => reportRuntimeError(cause)), Effect.withSpan(`query ${q.id}`, {}, { captureStackTrace: false }), meta?.["span"] ? Effect.withParentSpan(meta["span"]) : (_) => _), { signal })
72
- });
73
- const latestSuccess = shallowRef();
74
- const result = computed(() => swrToQuery({
75
- error: r.error.value ?? undefined,
76
- data: r.data.value === undefined ? latestSuccess.value : r.data.value, // we fall back to existing data, as tanstack query might loose it when the key changes
77
- isValidating: r.isFetching.value
78
- }));
79
- // not using `computed` here as we have a circular dependency
80
- watch(result, (value) => latestSuccess.value = Option.getOrUndefined(AsyncResult.value(value)), { immediate: true });
81
- return [
82
- result,
83
- computed(() => latestSuccess.value),
84
- // one thing to keep in mind is that span will be disconnected as Context does not pass from outside.
85
- // TODO: consider how we should handle the Result here which is `QueryObserverResult<A, E>`
86
- // and always ends up in the success channel, even when error..
87
- (options) => Effect.currentSpan.pipe(Effect.orElseSucceed(() => null), Effect.flatMap((span) => Effect.promise(() => r.refetch({ ...options, updateMeta: { span } })))),
88
- r
89
- ];
71
+ return;
72
+ }
73
+ const atom = family(input);
74
+ const current = registry.get(atom);
75
+ const next = AsyncResult.map(current, updater);
76
+ registry.set(atom, next);
77
+ }
78
+ });
79
+ export const atomQueryCacheUpdater = makeAtomQueryCacheUpdater(true);
80
+ export const optionalAtomQueryCacheUpdater = makeAtomQueryCacheUpdater(false);
81
+ export const combineQueryCacheUpdaters = (first, second) => ({
82
+ update: (registry, query, input, updater) => {
83
+ first.update(registry, query, input, updater);
84
+ second.update(registry, query, input, updater);
85
+ }
86
+ });
87
+ let activeQueryCacheUpdater = atomQueryCacheUpdater;
88
+ export const setQueryCacheUpdater = (updater) => {
89
+ activeQueryCacheUpdater = updater;
90
+ };
91
+ const normalizeQueryOptions = (options) => {
92
+ const out = {};
93
+ if (options?.staleTime !== undefined)
94
+ out.staleTime = options.staleTime;
95
+ const gcTime = options?.idleTTL ?? options?.gcTime;
96
+ if (gcTime !== undefined)
97
+ out.gcTime = gcTime;
98
+ const revalidateOnFocus = options?.revalidateOnFocus ?? options?.refetchOnWindowFocus;
99
+ if (revalidateOnFocus !== undefined)
100
+ out.revalidateOnFocus = revalidateOnFocus;
101
+ if (options?.structuralSharing !== undefined)
102
+ out.structuralSharing = options.structuralSharing;
103
+ const refetchInterval = options?.refreshEvery ?? options?.refetchInterval;
104
+ if (refetchInterval !== undefined)
105
+ out.refetchInterval = refetchInterval;
106
+ return out;
107
+ };
108
+ export const useAtomQuery = (atom) => {
109
+ const registry = injectRegistry();
110
+ const atomRef = computed(atom);
111
+ const atomResult = useAtomValue(() => atomRef.value);
112
+ const result = computed(() => atomResult.value);
113
+ const refresh = () => registry.refresh(atomRef.value);
114
+ const awaitResult = () => awaitAtomResult(registry, atomRef.value);
115
+ const refetch = () => Effect.gen(function* () {
116
+ yield* refreshAtomWithCurrentSpan(registry, atomRef.value);
117
+ return yield* awaitResult();
118
+ });
119
+ const data = computed(() => Option.getOrUndefined(AsyncResult.value(result.value)));
120
+ return {
121
+ result,
122
+ data,
123
+ awaitResult,
124
+ refetch,
125
+ refresh,
126
+ registry,
127
+ atom: atomRef
90
128
  };
91
- function swrToQuery(r) {
92
- if (r.error !== undefined) {
93
- return AsyncResult.failureWithPrevious(r.error.effectCause, {
94
- previous: r.data === undefined ? Option.none() : Option.some(AsyncResult.success(r.data)),
95
- waiting: r.isValidating
96
- });
129
+ };
130
+ export const useAtomSuspense = (atom) => {
131
+ const [{ view, data }, isMounted, signal] = useScopedSuspenseSetup(() => {
132
+ const view = useAtomQuery(atom);
133
+ const data = latestDefined(() => view.data.value, "atom suspense");
134
+ return { view, data };
135
+ });
136
+ const eff = Effect.gen(function* () {
137
+ const exit = yield* view.awaitResult().pipe(Effect.exit);
138
+ if (!isMounted.value) {
139
+ return yield* Effect.interrupt;
97
140
  }
98
- if (r.data !== undefined) {
99
- return AsyncResult.success(r.data, { waiting: r.isValidating });
141
+ if (Exit.isFailure(exit)) {
142
+ return yield* Exit.failCause(exit.cause);
100
143
  }
101
- return AsyncResult.initial(r.isValidating);
144
+ const fetch = (_options) => view.refetch();
145
+ const handle = {
146
+ awaitResult: view.awaitResult,
147
+ refetch: view.refetch,
148
+ refresh: view.refresh,
149
+ registry: view.registry,
150
+ atom: view.atom
151
+ };
152
+ return Object.assign([
153
+ view.result,
154
+ data,
155
+ fetch,
156
+ handle
157
+ ], {
158
+ ...view,
159
+ data
160
+ });
161
+ });
162
+ return Effect.runPromise(eff, { signal });
163
+ };
164
+ export const useAtomStreamQuery = (atom) => {
165
+ const registry = injectRegistry();
166
+ const atomRef = computed(atom);
167
+ const atomResult = useAtomValue(() => atomRef.value);
168
+ const result = computed(() => atomResult.value);
169
+ const pull = () => registry.set(atomRef.value, void 0);
170
+ const refresh = () => registry.refresh(atomRef.value);
171
+ const awaitResult = () => awaitAtomResult(registry, atomRef.value);
172
+ const pullAndAwait = () => Effect.gen(function* () {
173
+ pull();
174
+ return yield* awaitResult();
175
+ });
176
+ const items = computed(() => Option.getOrElse(Option.map(AsyncResult.value(result.value), (_) => _.items), () => []));
177
+ const latest = computed(() => items.value.at(-1));
178
+ const done = computed(() => Option.getOrElse(Option.map(AsyncResult.value(result.value), (_) => _.done), () => false));
179
+ return {
180
+ result,
181
+ items,
182
+ latest,
183
+ done,
184
+ awaitResult,
185
+ pull,
186
+ pullAndAwait,
187
+ refresh,
188
+ registry,
189
+ atom: atomRef
190
+ };
191
+ };
192
+ const optionValue = (arr, options) => {
193
+ if (options?.mode === "optional") {
194
+ const getOption = typeof arr === "function"
195
+ ? arr
196
+ : () => arr.value;
197
+ return [
198
+ {
199
+ get value() {
200
+ return Option.getOrUndefined(getOption());
201
+ }
202
+ },
203
+ computed(() => Option.isSome(getOption()))
204
+ ];
102
205
  }
103
- const useQuery = (self) => {
104
- const q = useQuery_(self);
105
- return (argOrOptions, options) => Effect.isEffect(self.handler)
106
- ? q(undefined, argOrOptions)
107
- : q(argOrOptions, options);
206
+ const req = !arr
207
+ ? ({ value: undefined })
208
+ : typeof arr === "function"
209
+ ? ({
210
+ get value() {
211
+ return arr();
212
+ }
213
+ })
214
+ : ref(arr);
215
+ const enabled = options?.enabled;
216
+ return [req, computed(() => enabled === undefined ? true : !!toValue(enabled))];
217
+ };
218
+ const observedAtom = (atom, options) => withQueryOptions(atom, normalizeQueryOptions(options));
219
+ const observedStreamAtom = (atom, options) => {
220
+ let next = atom;
221
+ const refetchInterval = options?.refreshEvery ?? options?.refetchInterval;
222
+ if (refetchInterval !== undefined)
223
+ next = Atom.withRefresh(refetchInterval)(next);
224
+ const gcTime = options?.idleTTL ?? options?.gcTime;
225
+ if (gcTime === "infinity")
226
+ return Atom.keepAlive(next);
227
+ if (gcTime !== undefined)
228
+ return Atom.setIdleTTL(next, gcTime);
229
+ return next;
230
+ };
231
+ const queryAtomFor = (rt, q, arg, options) => {
232
+ const family = getQueryFamily(rt, q);
233
+ return observedAtom(family(arg), options);
234
+ };
235
+ const makeQueryView = (getAtomRt, q, arg, options) => {
236
+ const atomRt = getAtomRt();
237
+ const registry = injectRegistry();
238
+ const [req, enabledRef] = optionValue(arg, options);
239
+ const family = getQueryFamily(atomRt, q);
240
+ const atomRef = computed(() => enabledRef.value ? observedAtom(family(req.value), options) : disabledQueryAtom);
241
+ const rawResult = useAtomValue(() => atomRef.value);
242
+ const select = options?.select;
243
+ const result = (select
244
+ ? computed(() => AsyncResult.map(rawResult.value, select))
245
+ : rawResult);
246
+ const refresh = () => registry.refresh(atomRef.value);
247
+ const awaitResult = () => select
248
+ ? awaitAtomResult(registry, atomRef.value).pipe(Effect.map(select))
249
+ : awaitAtomResult(registry, atomRef.value);
250
+ const refetch = () => Effect.gen(function* () {
251
+ yield* refreshAtomWithCurrentSpan(registry, atomRef.value);
252
+ return yield* awaitResult();
253
+ });
254
+ const staleMs = staleTimeMsOf(normalizeQueryOptions(options));
255
+ onMounted(() => {
256
+ if (!enabledRef.value)
257
+ return;
258
+ if (isStaleResult(registry.get(atomRef.value), staleMs))
259
+ refresh();
260
+ });
261
+ const data = computed(() => Option.getOrUndefined(AsyncResult.value(result.value)));
262
+ return {
263
+ result,
264
+ data,
265
+ awaitResult,
266
+ refetch,
267
+ refresh,
268
+ registry,
269
+ atom: atomRef
108
270
  };
271
+ };
272
+ export const makeQueryFamily = (_getRuntime, getAtomRt) => {
273
+ const useQueryFamily = (q) => getQueryFamily(getAtomRt(), q);
274
+ return useQueryFamily;
275
+ };
276
+ export const makeQueryAtom = (_getRuntime, getAtomRt) => {
277
+ const useQueryAtom = (q) => (arg, options) => queryAtomFor(getAtomRt(), q, arg, options);
278
+ return useQueryAtom;
279
+ };
280
+ export const makeQueryNew = (_getRuntime, getAtomRt) => {
281
+ const useQueryNew = (q) => (arg, options) => makeQueryView(getAtomRt, q, arg, options);
282
+ return useQueryNew;
283
+ };
284
+ export const makeQuery = (_getRuntime, getAtomRt) => {
285
+ const useQuery_ = (q) => (arg, options) => {
286
+ const view = makeQueryView(getAtomRt, q, arg, options);
287
+ // 4th element is internal-only; the public `.suspense()` Promise boundary lives in makeClient.
288
+ const handle = {
289
+ awaitResult: view.awaitResult,
290
+ refetch: view.refetch,
291
+ refresh: view.refresh,
292
+ registry: view.registry,
293
+ atom: view.atom
294
+ };
295
+ return [
296
+ view.result,
297
+ view.data,
298
+ (_options) => view.refetch(),
299
+ handle
300
+ ];
301
+ };
302
+ const useQuery = ((self) => {
303
+ const q = useQuery_(self);
304
+ return (arg, options) => q(arg, options);
305
+ });
109
306
  return useQuery;
110
307
  };
308
+ const streamQueryAtomFor = (rt, q, arg, options) => {
309
+ const family = getStreamQueryFamily(rt, q);
310
+ return observedStreamAtom(family(arg), options);
311
+ };
312
+ export const makeStreamQueryFamily = (_getRuntime, getAtomRt) => {
313
+ const useStreamQueryFamily = (q) => getStreamQueryFamily(getAtomRt(), q);
314
+ return useStreamQueryFamily;
315
+ };
316
+ export const makeStreamQueryAtom = (_getRuntime, getAtomRt) => {
317
+ const useStreamQueryAtom = (q) => (arg, options) => streamQueryAtomFor(getAtomRt(), q, arg, options);
318
+ return useStreamQueryAtom;
319
+ };
320
+ export const makeStreamQueryNew = (_getRuntime, getAtomRt) => {
321
+ const useStreamQueryNew = (q) => (arg, options) => useAtomStreamQuery(() => streamQueryAtomFor(getAtomRt(), q, toValue(arg), options));
322
+ return useStreamQueryNew;
323
+ };
324
+ export const makeStreamQuery = (getRuntime, getAtomRt) => {
325
+ const query = makeQuery(getRuntime, getAtomRt);
326
+ // A stream query is an ordinary atom query over an effect that collects the whole stream
327
+ // into an array (`Stream.runCollect`). It reuses all the atom machinery (family cache, swr,
328
+ // invalidation, structural sharing). Note: unlike the old tanstack `streamedQuery`, the result
329
+ // appears once the stream completes, not incrementally (stream queries are not used today).
330
+ const streamQuery_ = (q) => {
331
+ const hook = query({
332
+ id: q.id,
333
+ options: q.options,
334
+ handler: (i) => Stream.runCollect(q.handler(i)).pipe(Effect.map((chunk) => [...chunk]))
335
+ });
336
+ return (arg) => hook(arg);
337
+ };
338
+ return streamQuery_;
339
+ };
111
340
  function orPrevious(result) {
112
341
  return AsyncResult.isFailure(result) && Option.isSome(result.previousSuccess)
113
342
  ? AsyncResult.success(result.previousSuccess.value, { waiting: result.waiting })
@@ -137,20 +366,8 @@ export function composeQueries(results, renderPreviousOnFailure) {
137
366
  return AsyncResult.success(r, { waiting: isRefreshing });
138
367
  }
139
368
  export const useUpdateQuery = () => {
140
- const queryClient = useQueryClient();
141
- const f = (query, updateOrInput, updaterMaybe) => {
142
- const updater = updaterMaybe !== undefined ? updaterMaybe : updateOrInput;
143
- const key = updaterMaybe !== undefined
144
- ? [...makeQueryKey(query), updateOrInput]
145
- : makeQueryKey(query);
146
- const data = queryClient.getQueryData(key);
147
- if (data) {
148
- queryClient.setQueryData(key, updater);
149
- }
150
- else {
151
- console.warn(`Query data for key ${key} not found`, key);
152
- }
153
- };
369
+ const registry = injectRegistry();
370
+ const f = (query, input, updater) => activeQueryCacheUpdater.update(registry, query, input, updater);
154
371
  return f;
155
372
  };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHNEQUFzRDtBQUN0RCx3REFBd0Q7QUFDeEQsNERBQTREO0FBQzVELE9BQU8sS0FBSyxXQUFXLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUE0TSxRQUFRLElBQUksZ0JBQWdCLEVBQUUsY0FBYyxFQUEyRCxNQUFNLHFCQUFxQixDQUFBO0FBQ3JWLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQW1CLE1BQU0sWUFBWSxDQUFBO0FBR3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRWxFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQTJDLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFvQixNQUFNLEtBQUssQ0FBQTtBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBK0QzRCxNQUFNLE9BQU8saUJBQXFCLFNBQVEsS0FBSztJQUUxQjtJQURWLEtBQUssQ0FBUztJQUN2QixZQUFtQixXQUEyQjtRQUM1QyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBRDdDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUU1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDeEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUksVUFBMEMsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sU0FBUyxHQW9DWCxDQUNGLENB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
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHNEQUFzRDtBQUN0RCx3REFBd0Q7QUFDeEQsNERBQTREO0FBQzVELCtEQUErRDtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLG1CQUFtQixDQUFBO0FBSTFELE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUUzQyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssV0FBVyxNQUFNLHdDQUF3QyxDQUFBO0FBQ3JFLE9BQU8sS0FBSyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBb0IsV0FBVyxFQUF5QixlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFvQixNQUFNLEtBQUssQ0FBQTtBQUNoSyxPQUFPLEVBQWlELGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsMEJBQTBCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeE8sT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQXVCN0MsTUFBTSxzQkFBc0IsR0FBRyxDQUFJLEtBQWMsRUFBRSxFQUFFO0lBQ25ELE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFBO0lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksZUFB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
@@ -1,12 +1,12 @@
1
- import { Option, S } from "effect-app";
2
- import type { Schema } from "effect-app/Schema";
1
+ import * as Option from "effect-app/Option";
2
+ import * as S from "effect-app/Schema";
3
3
  import type { ParsedQuery } from "query-string";
4
4
  export declare function getQueryParam(search: ParsedQuery, param: string): string | null | undefined;
5
5
  export declare const getQueryParamO: (search: ParsedQuery, param: string) => Option.Option<string>;
6
6
  export declare function parseRouteParamsOption<NER extends Record<string, S.Codec<any, any>>>(query: Record<string, any>, t: NER): {
7
- [K in keyof NER]: Option.Option<Schema.Type<NER[K]>>;
7
+ [K in keyof NER]: Option.Option<NER[K]["Type"]>;
8
8
  };
9
9
  export declare function parseRouteParams<NER extends Record<string, S.Codec<any, any>>>(query: Record<string, any>, t: NER): {
10
- [K in keyof NER]: Schema.Type<NER[K]>;
10
+ [K in keyof NER]: NER[K]["Type"];
11
11
  };
12
12
  //# sourceMappingURL=routeParams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../src/routeParams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,6BAM/D;AAED,eAAO,MAAM,cAAc,+DAA4C,CAAA;AAEvE,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,GACrH;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACrD,CAcA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC5E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACtC,CAcA"}
1
+ {"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../src/routeParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAGtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,6BAM/D;AAED,eAAO,MAAM,cAAc,+DAA4C,CAAA;AAEvE,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,GACrH;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAChD,CAcA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC5E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CACjC,CAcA"}
@@ -1,6 +1,7 @@
1
- import { flow } from "effect";
2
- import { Option, S } from "effect-app";
1
+ import * as Option from "effect-app/Option";
2
+ import * as S from "effect-app/Schema";
3
3
  import { typedKeysOf } from "effect-app/utils";
4
+ import { flow } from "effect/Function";
4
5
  export function getQueryParam(search, param) {
5
6
  const v = search[param];
6
7
  if (Array.isArray(v)) {
@@ -25,4 +26,4 @@ export function parseRouteParams(query, t // enforce non empty
25
26
  return prev;
26
27
  }, {});
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm91dGVQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHOUMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFtQixFQUFFLEtBQWE7SUFDOUQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRXZFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBZ0QsS0FBMEIsRUFBRSxDQUFNLENBQUMsb0JBQW9COztJQUkzSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzFCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1osb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQWEsQ0FBQyxDQUFDLElBQUksQ0FDbkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FDL0MsQ0FBQTtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxFQUNELEVBRUMsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBMEIsRUFDMUIsQ0FBTSxDQUFDLG9CQUFvQjs7SUFJM0IsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUMxQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUNyQyxLQUFhLENBQUMsR0FBRyxDQUFDLENBQ3BCLENBQUE7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsRUFDRCxFQUVDLENBQ0YsQ0FBQTtBQUNILENBQUMifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm91dGVQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFHdEMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFtQixFQUFFLEtBQWE7SUFDOUQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRXZFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBZ0QsS0FBMEIsRUFBRSxDQUFNLENBQUMsb0JBQW9COztJQUkzSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzFCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1osb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQWEsQ0FBQyxDQUFDLElBQUksQ0FDbkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FDL0MsQ0FBQTtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxFQUNELEVBRUMsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBMEIsRUFDMUIsQ0FBTSxDQUFDLG9CQUFvQjs7SUFJM0IsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUMxQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUNyQyxLQUFhLENBQUMsR0FBRyxDQUFDLENBQ3BCLENBQUE7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsRUFDRCxFQUVDLENBQ0YsQ0FBQTtBQUNILENBQUMifQ==
package/dist/runtime.d.ts CHANGED
@@ -1,15 +1,2 @@
1
- import { ManagedRuntime } from "effect";
2
- import { Effect, Layer } from "effect-app";
3
- export declare function makeAppRuntime<A, E>(layer: Layer.Layer<A, E>): Effect.Effect<ManagedRuntime.ManagedRuntime<A, never> & {
4
- [Symbol.dispose](): void;
5
- [Symbol.asyncDispose](): Promise<void>;
6
- }, never, never>;
7
- export declare function initializeSync<A, E>(layer: Layer.Layer<A, E, never>): ManagedRuntime.ManagedRuntime<A, never> & {
8
- [Symbol.dispose](): void;
9
- [Symbol.asyncDispose](): Promise<void>;
10
- };
11
- export declare function initializeAsync<A, E>(layer: Layer.Layer<A, E, never>): Promise<ManagedRuntime.ManagedRuntime<A, never> & {
12
- [Symbol.dispose](): void;
13
- [Symbol.asyncDispose](): Promise<void>;
14
- }>;
1
+ export * from "effect-app/runtime";
15
2
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,YAAY,CAAA;AAElD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;;iBAiB5D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;;;EAGnE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;;;GAGpE"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
package/dist/runtime.js CHANGED
@@ -1,26 +1,2 @@
1
- import { ManagedRuntime } from "effect";
2
- import { Effect, Layer, Logger } from "effect-app";
3
- export function makeAppRuntime(layer) {
4
- return Effect.gen(function* () {
5
- const l = layer.pipe(Layer.provide(Logger.layer([Logger.consolePretty()])));
6
- const mrt = ManagedRuntime.make(l);
7
- yield* mrt.servicesEffect;
8
- return Object.assign(mrt, {
9
- [Symbol.dispose]() {
10
- return Effect.runSync(mrt.disposeEffect);
11
- },
12
- [Symbol.asyncDispose]() {
13
- return mrt.dispose();
14
- }
15
- }); // as we initialise here, there is no more error left.
16
- });
17
- }
18
- export function initializeSync(layer) {
19
- const runtime = Effect.runSync(makeAppRuntime(layer));
20
- return runtime;
21
- }
22
- export function initializeAsync(layer) {
23
- return Effect
24
- .runPromise(makeAppRuntime(layer));
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRWxELE1BQU0sVUFBVSxjQUFjLENBQU8sS0FBd0I7SUFDM0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdCLENBQUE7UUFDMUIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFBO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDeEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDMUMsQ0FBQztZQUVELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztnQkFDbkIsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQSxDQUFDLHNEQUFzRDtJQUMzRCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFPLEtBQStCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDckQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQU8sS0FBK0I7SUFDbkUsT0FBTyxNQUFNO1NBQ1YsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUMifQ==
1
+ export * from "effect-app/runtime";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUEifQ==