@effect-app/vue 1.20.7 → 1.21.0

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.
@@ -0,0 +1,231 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { flow, pipe, tuple } from "@effect-app/core/Function";
3
+ import { Result, useSafeMutation } from "@effect-app/vue";
4
+ import * as Sentry from "@sentry/browser";
5
+ import { useIntervalFn } from "@vueuse/core";
6
+ import { Array, Cause, Effect, Match, Option, Runtime, S } from "effect-app";
7
+ import { Failure, Success } from "effect-app/Operations";
8
+ import { computed } from "vue";
9
+ /**
10
+ * Use this after handling an error yourself, still continueing on the Error track, but the error will not be reported.
11
+ */
12
+ export class SuppressErrors extends Cause.YieldableError {
13
+ _tag = "SuppressErrors";
14
+ }
15
+ export function pauseWhileProcessing(iv, pmf) {
16
+ return Promise
17
+ .resolve(iv.pause())
18
+ .then(() => pmf())
19
+ .finally(() => iv.resume());
20
+ }
21
+ export function useIntervalPauseWhileProcessing(pmf, interval, options) {
22
+ const iv = useIntervalFn(() => pauseWhileProcessing(iv, pmf), interval, options ? { ...options, immediateCallback: false } : options);
23
+ return {
24
+ isActive: iv.isActive
25
+ };
26
+ }
27
+ export const useSafeMutationWithState = (self) => {
28
+ const [a, b] = useSafeMutation(self);
29
+ return tuple(computed(() => mutationResultToVue(a.value)), b);
30
+ };
31
+ export const withSuccess = (self, onSuccess) => ({
32
+ ...self,
33
+ handler: typeof self.handler === "function"
34
+ ? (i) => pipe(self.handler(i), Effect.flatMap((_) => Effect.promise(() => onSuccess(_, i))))
35
+ : Effect.flatMap(self.handler, (_) => Effect.promise(() => onSuccess(_)))
36
+ });
37
+ export const withSuccessE = (self, onSuccessE) => {
38
+ return {
39
+ ...self,
40
+ handler: typeof self.handler === "function"
41
+ ? (i) => pipe(self.handler(i), Effect.flatMap((_) => onSuccessE(_, i)))
42
+ : Effect.flatMap(self.handler, (_) => onSuccessE(_))
43
+ };
44
+ };
45
+ function mutationResultToVue(mutationResult) {
46
+ switch (mutationResult._tag) {
47
+ case "Loading": {
48
+ return { loading: true, data: undefined, error: undefined };
49
+ }
50
+ case "Success": {
51
+ return {
52
+ loading: false,
53
+ data: mutationResult.data,
54
+ error: undefined
55
+ };
56
+ }
57
+ case "Error": {
58
+ return {
59
+ loading: false,
60
+ data: undefined,
61
+ error: mutationResult.error
62
+ };
63
+ }
64
+ case "Initial": {
65
+ return { loading: false, data: undefined, error: undefined };
66
+ }
67
+ }
68
+ }
69
+ const messages = {};
70
+ export const makeClient = (intl, useToast) => {
71
+ const { useIntl } = intl;
72
+ const toast = useToast();
73
+ /**
74
+ * Pass a function that returns a Promise.
75
+ * Returns an execution function which reports errors as Toast.
76
+ */
77
+ function handleRequestWithToast(f, action, options = { suppressErrorToast: false }) {
78
+ const { intl } = useIntl();
79
+ const message = messages[action] ?? action;
80
+ const warnMessage = intl.value.formatMessage({ id: "handle.with_warnings" }, { action: message });
81
+ const successMessage = intl.value.formatMessage({ id: "handle.success" }, { action: message });
82
+ const errorMessage = intl.value.formatMessage({ id: "handle.with_errors" }, { action: message });
83
+ return Object.assign(flow(f, (p) => p.then((r) => r._tag === "Right"
84
+ ? S.is(Failure)(r.right)
85
+ ? Promise
86
+ .resolve(toast.warning(warnMessage + r.right.message
87
+ ? "\n" + r.right.message
88
+ : ""))
89
+ .then((_) => { })
90
+ : Promise
91
+ .resolve(toast.success(successMessage
92
+ + (S.is(Success)(r.right) && r.right.message
93
+ ? "\n" + r.right.message
94
+ : "")))
95
+ .then((_) => { })
96
+ : r.left._tag === "SuppressErrors"
97
+ ? Promise.resolve(void 0)
98
+ : Promise
99
+ .resolve(!options.suppressErrorToast
100
+ && toast.error(`${errorMessage}:\n` + renderError(r.left)))
101
+ .then((_) => {
102
+ console.warn(r.left, r.left.toString());
103
+ }), (err) => {
104
+ if (Cause.isInterruptedException(err)
105
+ || (Runtime.isFiberFailure(err)
106
+ && Cause.isInterruptedOnly(err[Runtime.FiberFailureCauseId]))) {
107
+ return;
108
+ }
109
+ const extra = {
110
+ action,
111
+ message: `Unexpected Error trying to ${action}`
112
+ };
113
+ Sentry.captureException(err, {
114
+ extra
115
+ });
116
+ console.error(err, extra);
117
+ return toast.error(intl.value.formatMessage({ id: "handle.unexpected_error" }, {
118
+ action: message,
119
+ error: JSON.stringify(err, undefined, 2)
120
+ }));
121
+ })), { action });
122
+ }
123
+ function renderError(e) {
124
+ const { intl } = useIntl();
125
+ return Match.value(e).pipe(Match.tags({
126
+ // HttpErrorRequest: e =>
127
+ // intl.value.formatMessage(
128
+ // { id: "handle.request_error" },
129
+ // { error: `${e.error}` },
130
+ // ),
131
+ // HttpErrorResponse: e =>
132
+ // e.response.status >= 500 ||
133
+ // e.response.body._tag !== "Some" ||
134
+ // !e.response.body.value
135
+ // ? intl.value.formatMessage(
136
+ // { id: "handle.error_response" },
137
+ // {
138
+ // error: `${
139
+ // e.response.body._tag === "Some" && e.response.body.value
140
+ // ? parseError(e.response.body.value)
141
+ // : "Unknown"
142
+ // } (${e.response.status})`,
143
+ // },
144
+ // )
145
+ // : intl.value.formatMessage(
146
+ // { id: "handle.unexpected_error" },
147
+ // {
148
+ // error:
149
+ // JSON.stringify(e.response.body, undefined, 2) +
150
+ // "( " +
151
+ // e.response.status +
152
+ // ")",
153
+ // },
154
+ // ),
155
+ // ResponseError: e =>
156
+ // intl.value.formatMessage(
157
+ // { id: "handle.response_error" },
158
+ // { error: `${e.error}` },
159
+ // ),
160
+ ParseError: (e) => {
161
+ console.warn(e.toString());
162
+ return intl.value.formatMessage({ id: "validation.failed" });
163
+ }
164
+ }), Match.orElse((e) => intl.value.formatMessage({ id: "handle.unexpected_error" }, {
165
+ error: `${e.message ?? e._tag ?? e}`
166
+ })));
167
+ }
168
+ /**
169
+ * Pass a function that returns an Effect, e.g from a client action, give it a name, and optionally pass an onSuccess callback.
170
+ * Returns a tuple with state ref and execution function which reports errors as Toast.
171
+ */
172
+ const useAndHandleMutation = (self, action, options) => {
173
+ const [a, b] = useSafeMutation({
174
+ handler: Effect.isEffect(self.handler)
175
+ ? pipe(self.handler, Effect.withSpan("mutation", { attributes: { action } }))
176
+ : (...args) => pipe(self.handler(...args), Effect.withSpan("mutation", { attributes: { action } })),
177
+ name: self.name
178
+ });
179
+ return tuple(computed(() => mutationResultToVue(a.value)), handleRequestWithToast(b, action, options));
180
+ };
181
+ function makeUseAndHandleMutation(onSuccess) {
182
+ return ((self, action, options) => {
183
+ return useAndHandleMutation({
184
+ handler: (typeof self.handler === "function"
185
+ ? (i) => Effect.tap(self.handler(i), () => Effect.promise(onSuccess))
186
+ : Effect.tap(self.handler, () => Effect.promise(onSuccess))),
187
+ name: self.name
188
+ }, action, options);
189
+ });
190
+ }
191
+ return {
192
+ useAndHandleMutation,
193
+ makeUseAndHandleMutation,
194
+ handleRequestWithToast
195
+ };
196
+ };
197
+ export const mapHandler = (self, map) => ({
198
+ ...self,
199
+ handler: typeof self.handler === "function"
200
+ ? (i) => map(i)(self.handler(i))
201
+ : map(self.handler)
202
+ });
203
+ export function composeQueries(results, renderPreviousOnFailure) {
204
+ const values = renderPreviousOnFailure
205
+ ? Object.values(results).map(orPrevious)
206
+ : Object.values(results);
207
+ const error = values.find(Result.isFailure);
208
+ if (error) {
209
+ return error;
210
+ }
211
+ const initial = Array.findFirst(values, (x) => x._tag === "Initial" ? Option.some(x) : Option.none());
212
+ if (initial.value !== undefined) {
213
+ return initial.value;
214
+ }
215
+ const loading = Array.findFirst(values, (x) => Result.isInitial(x) && x.waiting ? Option.some(x) : Option.none());
216
+ if (loading.value !== undefined) {
217
+ return loading.value;
218
+ }
219
+ const isRefreshing = values.some((x) => x.waiting);
220
+ const r = Object.entries(results).reduce((prev, [key, value]) => {
221
+ prev[key] = Result.value(value).value;
222
+ return prev;
223
+ }, {});
224
+ return Result.success(r, isRefreshing);
225
+ }
226
+ function orPrevious(result) {
227
+ return Result.isFailure(result) && Option.isSome(result.previousValue)
228
+ ? Result.success(result.previousValue.value, result.waiting)
229
+ : result;
230
+ }
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUM3RCxPQUFPLEVBQXVCLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RSxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFBd0MsYUFBYSxFQUE2QixNQUFNLGNBQWMsQ0FBQTtBQUU3RyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFHaEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLEtBQUssQ0FBQyxjQUFjO0lBQzdDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQTtDQUNqQztBQUlELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsRUFBWSxFQUNaLEdBQTJCO0lBRTNCLE9BQU8sT0FBTztTQUNYLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUMvQixDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUM3QyxHQUEyQixFQUMzQixRQUFtQyxFQUNuQyxPQUF5RDtJQUV6RCxNQUFNLEVBQUUsR0FBRyxh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
@@ -0,0 +1,5 @@
1
+ export declare const makeContext: <T>(def: T) => {
2
+ use: () => T;
3
+ provide: (locale: T) => void;
4
+ };
5
+ //# sourceMappingURL=makeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeContext.d.ts","sourceRoot":"","sources":["../src/makeContext.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,OAAO,CAAC;;sBAIf,CAAC;CAEtB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { inject, provide } from "vue";
2
+ export const makeContext = (def) => {
3
+ const key = Symbol();
4
+ return {
5
+ use: () => inject(key, def),
6
+ provide: (locale) => provide(key, locale)
7
+ };
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZUNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBcUIsT0FBTyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFJLEdBQU0sRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBcUIsQ0FBQTtJQUN2QyxPQUFPO1FBQ0wsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQzNCLE9BQU8sRUFBRSxDQUFDLE1BQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7S0FDN0MsQ0FBQTtBQUNILENBQUMsQ0FBQSJ9
@@ -0,0 +1,17 @@
1
+ import { type IntlShape } from "@formatjs/intl";
2
+ import type { FormatXMLElementFn, PrimitiveType } from "intl-messageformat";
3
+ import type { Ref } from "vue";
4
+ export interface MakeIntlReturn<Locale extends string> extends ReturnType<typeof makeIntl<Locale>> {
5
+ }
6
+ export declare const makeIntl: <Locale extends string>(messages: Record<Locale, Record<string, string>>, defaultLocale: NoInfer<Locale>) => {
7
+ useIntl: () => {
8
+ locale: Ref<Locale, Locale>;
9
+ trans: (id: keyof (typeof messages)[Locale], values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>) => string;
10
+ intl: import("vue").ComputedRef<Record<Locale, IntlShape<Locale>>[Locale]>;
11
+ };
12
+ LocaleContext: {
13
+ use: () => Ref<Locale, Locale>;
14
+ provide: (locale: Ref<Locale, Locale>) => void;
15
+ };
16
+ };
17
+ //# sourceMappingURL=makeIntl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeIntl.d.ts","sourceRoot":"","sources":["../src/makeIntl.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAK9B,MAAM,WAAW,cAAc,CAAC,MAAM,SAAS,MAAM,CAAE,SAAQ,UAAU,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;CAAG;AAErG,eAAO,MAAM,QAAQ,GAAI,MAAM,SAAS,MAAM,YAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,iBACjC,OAAO,CAAC,MAAM,CAAC;;;oBAyBtB,MAAM,CAAC,OAAO,QAAQ,EAAE,MAAM,CAAC,WAC1B,MAAM,CACb,MAAM,EACN,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CACnD;;;;;;;CAiBN,CAAA"}
@@ -0,0 +1,32 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
2
+ import { createIntl, createIntlCache } from "@formatjs/intl";
3
+ import { typedKeysOf } from "effect-app/utils";
4
+ import { computed, ref, watch } from "vue";
5
+ import { translate } from "./form.js";
6
+ import { makeContext } from "./makeContext.js";
7
+ export const makeIntl = (messages, defaultLocale) => {
8
+ const intlCache = createIntlCache();
9
+ const intls = typedKeysOf(messages).reduce((acc, cur) => {
10
+ acc[cur] = createIntl({
11
+ defaultLocale,
12
+ locale: cur,
13
+ messages: messages[cur]
14
+ }, intlCache);
15
+ return acc;
16
+ }, {});
17
+ const LocaleContext = makeContext(ref(defaultLocale));
18
+ const useIntl = () => {
19
+ const locale = LocaleContext.use();
20
+ const trans = (id, values
21
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
22
+ ) => intls[locale.value].formatMessage({ id: id }, values);
23
+ const intl = computed(() => intls[locale.value]);
24
+ watch(locale, (locale) => {
25
+ const intl = intls[locale];
26
+ translate.value = intl.formatMessage;
27
+ }, { immediate: true });
28
+ return { locale, trans, intl };
29
+ };
30
+ return { useIntl, LocaleContext };
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUludGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFrZUludGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFrQixNQUFNLGdCQUFnQixDQUFBO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUc5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFJOUMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLFFBQWdELEVBQ2hELGFBQThCLEVBQzlCLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQTtJQUVuQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUN4QyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNYLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQ25CO1lBQ0UsYUFBYTtZQUNiLE1BQU0sRUFBRSxHQUFHO1lBQ1gsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7U0FDeEIsRUFDRCxTQUFTLENBQ1YsQ0FBQTtRQUNELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQyxFQUNELEVBQXVDLENBQ3hDLENBQUE7SUFFRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFTLGFBQWEsQ0FBZ0IsQ0FBQyxDQUFBO0lBRTVFLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtRQUNuQixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFbEMsTUFBTSxLQUFLLEdBQUcsQ0FDWixFQUFtQyxFQUNuQyxNQUdDO1FBQ0QsdUdBQXVHO1VBQ3ZHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUVqRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ2hELEtBQUssQ0FDSCxNQUFNLEVBQ04sQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNULE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMxQixTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7UUFDdEMsQ0FBQyxFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUNwQixDQUFBO1FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQyxDQUFBO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQTtBQUNuQyxDQUFDLENBQUEifQ==
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@effect-app/vue",
3
- "version": "1.20.7",
3
+ "version": "1.21.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
7
7
  "dependencies": {
8
8
  "@formatjs/intl": "^2.10.7",
9
9
  "@tanstack/vue-query": "^5.59.9",
10
+ "@vueuse/core": "^11.1.0",
10
11
  "query-string": "^9.1.1",
11
- "@effect-app/vue": "1.20.7",
12
- "effect-app": "1.26.7",
13
- "@effect-app/core": "1.15.7",
14
- "@effect-app/schema": "1.17.7"
12
+ "@effect-app/core": "1.15.8",
13
+ "@effect-app/schema": "1.17.8",
14
+ "@effect-app/vue": "1.21.0",
15
+ "effect-app": "1.26.8"
15
16
  },
16
17
  "peerDependencies": {
17
18
  "@effect/platform": "^0.68.2",
@@ -91,6 +92,36 @@
91
92
  "default": "./_cjs/internal.cjs"
92
93
  }
93
94
  },
95
+ "./makeClient": {
96
+ "import": {
97
+ "types": "./dist/makeClient.d.ts",
98
+ "default": "./dist/makeClient.js"
99
+ },
100
+ "require": {
101
+ "types": "./dist/makeClient.d.ts",
102
+ "default": "./_cjs/makeClient.cjs"
103
+ }
104
+ },
105
+ "./makeContext": {
106
+ "import": {
107
+ "types": "./dist/makeContext.d.ts",
108
+ "default": "./dist/makeContext.js"
109
+ },
110
+ "require": {
111
+ "types": "./dist/makeContext.d.ts",
112
+ "default": "./_cjs/makeContext.cjs"
113
+ }
114
+ },
115
+ "./makeIntl": {
116
+ "import": {
117
+ "types": "./dist/makeIntl.d.ts",
118
+ "default": "./dist/makeIntl.js"
119
+ },
120
+ "require": {
121
+ "types": "./dist/makeIntl.d.ts",
122
+ "default": "./_cjs/makeIntl.cjs"
123
+ }
124
+ },
94
125
  "./mutate": {
95
126
  "import": {
96
127
  "types": "./dist/mutate.d.ts",
package/src/index.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  export * as Result from "@effect-rx/rx/Result"
2
2
  export * from "./hooks.js"
3
+ export * from "./makeClient.js"
4
+ export * from "./makeContext.js"
5
+ export * from "./makeIntl.js"
3
6
  export * from "./runtime.js"