@effect-app/vue 0.7.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.
- package/.eslintrc.cjs +10 -0
- package/.prettierignore +6 -0
- package/_cjs/_global.cjs +5 -0
- package/_cjs/_global.cjs.map +1 -0
- package/_cjs/form.cjs +43 -0
- package/_cjs/form.cjs.map +1 -0
- package/_cjs/hooks.cjs +228 -0
- package/_cjs/hooks.cjs.map +1 -0
- package/_cjs/index.cjs +54 -0
- package/_cjs/index.cjs.map +1 -0
- package/_cjs/internal.cjs +19 -0
- package/_cjs/internal.cjs.map +1 -0
- package/_cjs/routeParams.cjs +51 -0
- package/_cjs/routeParams.cjs.map +1 -0
- package/_cjs/runtime.cjs +70 -0
- package/_cjs/runtime.cjs.map +1 -0
- package/_src/_global.ts +10 -0
- package/_src/form.ts +116 -0
- package/_src/hooks.ts +300 -0
- package/_src/index.ts +3 -0
- package/_src/internal.ts +14 -0
- package/_src/routeParams.ts +71 -0
- package/_src/runtime.ts +50 -0
- package/dist/_global.d.ts +9 -0
- package/dist/_global.d.ts.map +1 -0
- package/dist/_global.js +10 -0
- package/dist/form.d.ts +26 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +47 -0
- package/dist/hooks.d.ts +61 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +204 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/internal.d.ts +9 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +11 -0
- package/dist/routeParams.d.ts +15 -0
- package/dist/routeParams.d.ts.map +1 -0
- package/dist/routeParams.js +45 -0
- package/dist/runtime.d.ts +19 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +48 -0
- package/package.json +153 -0
- package/tsconfig.json +104 -0
- package/tsconfig.json.bak +36 -0
- package/tsplus.config.json +6 -0
- package/vitest.config.ts +5 -0
- package/wallaby.cjs +1 -0
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { QueryResult } from "@effect-app/prelude/client";
|
|
2
|
+
import { Effect } from "@effect/io/Effect";
|
|
3
|
+
import { Fiber } from "@effect/io/Fiber";
|
|
4
|
+
import { Exit } from "@effect/io/Exit";
|
|
5
|
+
import { Either } from "@fp-ts/data/Either";
|
|
6
|
+
import type { ApiConfig, FetchResponse } from "@effect-app/prelude/client";
|
|
7
|
+
import { Done } from "@effect-app/prelude/client";
|
|
8
|
+
import type { Http } from "@effect-app/core/http/http-client";
|
|
9
|
+
import * as swrv from "swrv";
|
|
10
|
+
import type { fetcherFn, IResponse } from "swrv/dist/types.js";
|
|
11
|
+
export { isFailed, isInitializing, isSuccess } from "@effect-app/prelude/client";
|
|
12
|
+
type MutateType = {
|
|
13
|
+
<Data>(key: string, res: Data | Promise<Data>, cache?: swrv.SWRVCache<Omit<IResponse<any, any>, "mutate">>, ttl?: number): Promise<{
|
|
14
|
+
data: any;
|
|
15
|
+
error: any;
|
|
16
|
+
isValidating: any;
|
|
17
|
+
}>;
|
|
18
|
+
};
|
|
19
|
+
export declare const mutate: MutateType;
|
|
20
|
+
export declare function useMutate<E, A>(self: Effect<ApiConfig | Http, E, FetchResponse<A>> & {
|
|
21
|
+
mapPath: string;
|
|
22
|
+
}): () => Promise<{
|
|
23
|
+
data: any;
|
|
24
|
+
error: any;
|
|
25
|
+
isValidating: any;
|
|
26
|
+
}>;
|
|
27
|
+
export declare function useMutateWithArg<Arg, E, A>(self: ((arg: Arg) => Effect<ApiConfig | Http, E, FetchResponse<A>>) & {
|
|
28
|
+
mapPath: (arg: Arg) => string;
|
|
29
|
+
}): (arg: Arg) => Promise<{
|
|
30
|
+
data: any;
|
|
31
|
+
error: any;
|
|
32
|
+
isValidating: any;
|
|
33
|
+
}>;
|
|
34
|
+
export declare function useSafeQueryWithArg<Arg, E, A>(self: ((arg: Arg) => Effect<ApiConfig | Http, E, FetchResponse<A>>) & {
|
|
35
|
+
mapPath: (arg: Arg) => string;
|
|
36
|
+
}, arg: Arg, config?: swrv.IConfig<A, fetcherFn<A>> | undefined): readonly [import("vue").ComputedRef<import("@effect-app/prelude/client").QueryResult<E, A>>, import("vue").ComputedRef<A | undefined>, () => Promise<void>, IResponse<A, E>];
|
|
37
|
+
export declare function useSafeQuery<E, A>(self: Effect<ApiConfig | Http, E, FetchResponse<A>> & {
|
|
38
|
+
mapPath: string;
|
|
39
|
+
}, config?: swrv.IConfig<A, fetcherFn<A>> | undefined): readonly [import("vue").ComputedRef<import("@effect-app/prelude/client").QueryResult<E, A>>, import("vue").ComputedRef<A | undefined>, () => Promise<void>, IResponse<A, E>];
|
|
40
|
+
export declare function useSafeQueryWithArg_<Arg, E, A>(self: (arg: Arg) => Effect<ApiConfig | Http, E, FetchResponse<A>>, mapPath: (arg: Arg) => string, arg: Arg, config?: swrv.IConfig<A, fetcherFn<A>> | undefined): readonly [import("vue").ComputedRef<import("@effect-app/prelude/client").QueryResult<E, A>>, import("vue").ComputedRef<A | undefined>, () => Promise<void>, IResponse<A, E>];
|
|
41
|
+
export declare function useSafeQuery_<E, A>(key: string, self: Effect<ApiConfig | Http, E, FetchResponse<A>>, config?: swrv.IConfig<A, fetcherFn<A>> | undefined): readonly [import("vue").ComputedRef<import("@effect-app/prelude/client").QueryResult<E, A>>, import("vue").ComputedRef<A | undefined>, () => Promise<void>, IResponse<A, E>];
|
|
42
|
+
export declare function useSafeQueryLegacy<E, A>(self: Effect<ApiConfig | Http, E, FetchResponse<A>>): readonly [import("vue").ShallowRef<import("@effect-app/prelude/client").Initial> | import("vue").ShallowRef<import("@effect-app/prelude/client").Loading> | import("vue").ShallowRef<import("@effect-app/prelude/client").Refreshing<E, A>> | import("vue").ShallowRef<Done<E, A>>, import("vue").ComputedRef<A | undefined>, () => Promise<void | import("@effect-app/prelude/client").QueryResult<E, A>>];
|
|
43
|
+
export declare function make<R, E, A>(self: Effect<R, E, FetchResponse<A>>): readonly [import("vue").ShallowRef<import("@effect-app/prelude/client").Initial> | import("vue").ShallowRef<import("@effect-app/prelude/client").Loading> | import("vue").ShallowRef<import("@effect-app/prelude/client").Refreshing<E, A>> | import("vue").ShallowRef<Done<E, A>>, import("vue").ComputedRef<A | undefined>, import("@effect/io/Effect").Effect<R, never, import("@effect-app/prelude/client").QueryResult<E, A>>];
|
|
44
|
+
/**
|
|
45
|
+
* Pass a function that returns an Effect, e.g from a client action.
|
|
46
|
+
* Returns a tuple with state ref and execution function which reports errors as Toast.
|
|
47
|
+
*/
|
|
48
|
+
export declare function useMutation<I, E, A>(self: (i: I) => Effect<ApiConfig | Http, E, A>): readonly [import("vue").ComputedRef<{
|
|
49
|
+
loading: boolean;
|
|
50
|
+
value: A | undefined;
|
|
51
|
+
error: E | undefined;
|
|
52
|
+
}>, (i: I, abortSignal?: AbortSignal) => Promise<import("@fp-ts/data/Either").Either<E, A>>];
|
|
53
|
+
/**
|
|
54
|
+
* Parameter-less variant of @see {@link useMutation}
|
|
55
|
+
*/
|
|
56
|
+
export declare function useAction<E, A>(self: Effect<ApiConfig | Http, E, A>): readonly [import("vue").ComputedRef<{
|
|
57
|
+
loading: boolean;
|
|
58
|
+
value: A | undefined;
|
|
59
|
+
error: E | undefined;
|
|
60
|
+
}>, (abortSignal?: AbortSignal) => Promise<import("@fp-ts/data/Either").Either<E, A>>];
|
|
61
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../_src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/vue/_src/hooks.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@effect-app/prelude/client";
|
|
4
|
+
import * as tsplus_module_2 from "@effect-app/prelude/client/QueryResult";
|
|
5
|
+
import * as tsplus_module_3 from "@fp-ts/data/Either";
|
|
6
|
+
import * as tsplus_module_4 from "@fp-ts/data/Option";
|
|
7
|
+
import * as tsplus_module_5 from "@effect-app/core/Function";
|
|
8
|
+
import * as tsplus_module_6 from "@effect/io/Effect";
|
|
9
|
+
import * as tsplus_module_7 from "@effect/io/Fiber";
|
|
10
|
+
import * as tsplus_module_8 from "@effect/io/Exit";
|
|
11
|
+
import * as tsplus_module_9 from "@effect/io/Cause";
|
|
12
|
+
import * as tsplus_module_10 from "@effect-app/core/Option";
|
|
13
|
+
import { Done } from "@effect-app/prelude/client";
|
|
14
|
+
import { InterruptedException } from "@effect/io/Cause";
|
|
15
|
+
import * as swrv from "swrv";
|
|
16
|
+
import { computed, ref, shallowRef } from "vue";
|
|
17
|
+
import { run } from "./internal.js";
|
|
18
|
+
export { isFailed, isInitializing, isSuccess } from "@effect-app/prelude/client";
|
|
19
|
+
// madness - workaround different import behavior on server and client
|
|
20
|
+
const useSWRV = (swrv.default.default ? swrv.default.default : swrv.default);
|
|
21
|
+
export const mutate = (swrv.default.mutate ? swrv.default.mutate : swrv.mutate);
|
|
22
|
+
function swrToQuery(r) {
|
|
23
|
+
if (r.error) {
|
|
24
|
+
return r.isValidating
|
|
25
|
+
? tsplus_module_1.Refreshing.fail(r.error, r.data)
|
|
26
|
+
: Done.fail(r.error, r.data);
|
|
27
|
+
}
|
|
28
|
+
if (r.data !== undefined) {
|
|
29
|
+
return r.isValidating
|
|
30
|
+
? tsplus_module_1.Refreshing.succeed(r.data)
|
|
31
|
+
: Done.succeed(r.data);
|
|
32
|
+
}
|
|
33
|
+
return r.isValidating ? new tsplus_module_1.Loading() : new tsplus_module_1.Initial();
|
|
34
|
+
}
|
|
35
|
+
export function useMutate(self) {
|
|
36
|
+
const fn = () => run.value(self).then(_ => _.body);
|
|
37
|
+
return () => mutate(self.mapPath, fn);
|
|
38
|
+
}
|
|
39
|
+
export function useMutateWithArg(self) {
|
|
40
|
+
const fn = (arg) => run.value(self(arg)).then(_ => _.body);
|
|
41
|
+
return (arg) => mutate(self.mapPath(arg), fn(arg));
|
|
42
|
+
}
|
|
43
|
+
// TODO: same trick with mutations/actions
|
|
44
|
+
export function useSafeQueryWithArg(self, arg, config) {
|
|
45
|
+
return useSafeQueryWithArg_(self, self.mapPath, arg, config);
|
|
46
|
+
}
|
|
47
|
+
export function useSafeQuery(self, config) {
|
|
48
|
+
return useSafeQuery_(self.mapPath, self, config);
|
|
49
|
+
}
|
|
50
|
+
export function useSafeQueryWithArg_(self, mapPath, arg, config) {
|
|
51
|
+
return useSafeQuery_(mapPath(arg), self(arg), config);
|
|
52
|
+
}
|
|
53
|
+
export function useSafeQuery_(key, self, config) {
|
|
54
|
+
// const [result, latestSuccess, execute] = make(self)
|
|
55
|
+
// TODO: support with interruption
|
|
56
|
+
// const sem = Semaphore.unsafeMake(1)
|
|
57
|
+
// const lock = sem.withPermits(1)
|
|
58
|
+
// let fib: Fiber.FiberContext<E, FetchResponse<A>> | undefined = undefined
|
|
59
|
+
// const execute = self
|
|
60
|
+
// const runNew = execute.fork()
|
|
61
|
+
// .tap(newFiber =>
|
|
62
|
+
// Effect(() => {
|
|
63
|
+
// fib = newFiber
|
|
64
|
+
// })
|
|
65
|
+
// )
|
|
66
|
+
// const ex = lock(
|
|
67
|
+
// Effect.suspend(() => {
|
|
68
|
+
// return fib
|
|
69
|
+
// ? Fiber.interrupt(fib).zipRight(runNew)
|
|
70
|
+
// : runNew
|
|
71
|
+
// })
|
|
72
|
+
// ).flatMap(Fiber.await)
|
|
73
|
+
// .flatMap(Effect.done)
|
|
74
|
+
// function execWithInterruption() {
|
|
75
|
+
// return ex.provideSomeLayer(Layers)
|
|
76
|
+
// .runPromise()
|
|
77
|
+
// .catch(err => {
|
|
78
|
+
// if (!Cause.isInterruptedException(err)) throw err
|
|
79
|
+
// return undefined
|
|
80
|
+
// })
|
|
81
|
+
// }
|
|
82
|
+
// const swr = useSWRV<A, E>(key, () => execWithInterruption().then(_ => _?.body as any)) // Effect.runPromise(self.provideSomeLayer(Layers))
|
|
83
|
+
const swr = useSWRV(key, () => run.value(self).then(_ => _.body), config);
|
|
84
|
+
const result = computed(() => swrToQuery({ data: swr.data.value, error: swr.error.value, isValidating: swr.isValidating.value })); // ref<QueryResult<E, A>>()
|
|
85
|
+
const latestSuccess = computed(() => {
|
|
86
|
+
const value = result.value;
|
|
87
|
+
return tsplus_module_2.isSuccess(value) ?
|
|
88
|
+
tsplus_module_3.isRight(value.current)
|
|
89
|
+
? value.current.right
|
|
90
|
+
: tsplus_module_4.isSome(value.previous)
|
|
91
|
+
? value.previous.value
|
|
92
|
+
: undefined :
|
|
93
|
+
undefined;
|
|
94
|
+
});
|
|
95
|
+
return tsplus_module_5.tuple(result, latestSuccess, () => swr.mutate(), swr);
|
|
96
|
+
}
|
|
97
|
+
export function useSafeQueryLegacy(self) {
|
|
98
|
+
const [result, latestSuccess, execute] = make(self);
|
|
99
|
+
const sem = tsplus_module_6.unsafeMakeSemaphore(1);
|
|
100
|
+
const withPermit = sem.withPermits(1);
|
|
101
|
+
let fib = undefined;
|
|
102
|
+
const runNew = tracer_1.withCallTrace(fileName_1 + ":154:6")(tsplus_module_6.tap(newFiber => tracer_1.withCallTrace(fileName_1 + ":155:7")(tsplus_module_6.sync(() => {
|
|
103
|
+
fib = newFiber;
|
|
104
|
+
}))))(tsplus_module_6.fork(execute));
|
|
105
|
+
const ex = tracer_1.withCallTrace(fileName_1 + ":166:6")(tsplus_module_6.flatMap(_ => tsplus_module_6.done(_)))(tracer_1.withCallTrace(fileName_1 + ":165:6")(tsplus_module_6.flatMap(_ => tracer_1.withCallTrace(fileName_1 + ":165:21")(_.await())))(withPermit(tracer_1.withCallTrace(fileName_1 + ":160:21")(tsplus_module_6.suspendSucceed(() => {
|
|
106
|
+
return fib
|
|
107
|
+
? tracer_1.withCallTrace(fileName_1 + ":162:23")(tsplus_module_6.zipRight(runNew))(tsplus_module_7.interrupt(fib))
|
|
108
|
+
: runNew;
|
|
109
|
+
})))));
|
|
110
|
+
function exec() {
|
|
111
|
+
return run.value(ex)
|
|
112
|
+
.catch(err => {
|
|
113
|
+
// TODO
|
|
114
|
+
if (!JSON.stringify(err).includes("InterruptedException"))
|
|
115
|
+
throw err;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return tsplus_module_5.tuple(result, latestSuccess, exec);
|
|
119
|
+
}
|
|
120
|
+
export function make(self) {
|
|
121
|
+
const result = shallowRef(new tsplus_module_1.Initial());
|
|
122
|
+
const execute = tracer_1.withCallTrace(fileName_1 + ":188:6")(tsplus_module_6.flatMap(r => tracer_1.withCallTrace(fileName_1 + ":188:19")(tsplus_module_6.sync(() => result.value = r))))(tracer_1.withCallTrace(fileName_1 + ":187:6")(tsplus_module_6.zipRight(tsplus_module_2.queryResult(tracer_1.withCallTrace(fileName_1 + ":187:20")(tsplus_module_6.map(_ => _.body))(self))))(tracer_1.withCallTrace(fileName_1 + ":182:19")(tsplus_module_6.sync(() => {
|
|
123
|
+
result.value = tsplus_module_2.isInitializing(result.value)
|
|
124
|
+
? new tsplus_module_1.Loading()
|
|
125
|
+
: new tsplus_module_1.Refreshing(result.value);
|
|
126
|
+
}))));
|
|
127
|
+
const latestSuccess = computed(() => {
|
|
128
|
+
const value = result.value;
|
|
129
|
+
return tsplus_module_2.hasValue(value) ?
|
|
130
|
+
tsplus_module_3.isRight(value.current)
|
|
131
|
+
? value.current.right
|
|
132
|
+
: tsplus_module_4.isSome(value.previous)
|
|
133
|
+
? value.previous.value
|
|
134
|
+
: undefined :
|
|
135
|
+
undefined;
|
|
136
|
+
});
|
|
137
|
+
return tsplus_module_5.tuple(result, latestSuccess, execute);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Pass a function that returns an Effect, e.g from a client action.
|
|
141
|
+
* Returns a tuple with state ref and execution function which reports errors as Toast.
|
|
142
|
+
*/
|
|
143
|
+
export function useMutation(self) {
|
|
144
|
+
const loading = ref(false);
|
|
145
|
+
const error = ref();
|
|
146
|
+
const value = ref();
|
|
147
|
+
const handle = handleExit(loading, error, value);
|
|
148
|
+
const exec = (i, abortSignal) => run.value(tracer_1.withCallTrace(fileName_1 + ":224:10")(tsplus_module_6.flatMap(f => {
|
|
149
|
+
const cancel = () => run.value(tsplus_module_7.interrupt(f));
|
|
150
|
+
abortSignal?.addEventListener("abort", () => void cancel().catch(console.error));
|
|
151
|
+
return tsplus_module_7.join(f);
|
|
152
|
+
}))(tsplus_module_6.fork(tracer_1.withCallTrace(fileName_1 + ":222:10")(tsplus_module_6.flatMap(exit => tracer_1.withCallTrace(fileName_1 + ":222:26")(tsplus_module_6.sync(() => handle(exit)))))(tsplus_module_6.exit(tracer_1.withCallTrace(fileName_1 + ":220:10")(tsplus_module_6.zipRight(self(i)))(tracer_1.withCallTrace(fileName_1 + ":215:7")(tsplus_module_6.sync(() => {
|
|
153
|
+
loading.value = true;
|
|
154
|
+
value.value = undefined;
|
|
155
|
+
error.value = undefined;
|
|
156
|
+
}))))))));
|
|
157
|
+
const state = computed(() => ({ loading: loading.value, value: value.value, error: error.value }));
|
|
158
|
+
return tsplus_module_5.tuple(state, exec);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Parameter-less variant of @see {@link useMutation}
|
|
162
|
+
*/
|
|
163
|
+
export function useAction(self) {
|
|
164
|
+
const loading = ref(false);
|
|
165
|
+
const error = ref();
|
|
166
|
+
const value = ref();
|
|
167
|
+
const handle = handleExit(loading, error, value);
|
|
168
|
+
const exec = (abortSignal) => {
|
|
169
|
+
loading.value = true;
|
|
170
|
+
return run.value(tracer_1.withCallTrace(fileName_1 + ":256:10")(tsplus_module_6.flatMap(f => {
|
|
171
|
+
const cancel = () => tsplus_module_6.unsafeRunPromise(tsplus_module_7.interrupt(f));
|
|
172
|
+
abortSignal?.addEventListener("abort", () => void cancel().catch(console.error));
|
|
173
|
+
return tsplus_module_7.join(f);
|
|
174
|
+
}))(tsplus_module_6.fork(tracer_1.withCallTrace(fileName_1 + ":254:10")(tsplus_module_6.flatMap(exit => tracer_1.withCallTrace(fileName_1 + ":254:26")(tsplus_module_6.sync(() => handle(exit)))))(tsplus_module_6.exit(self)))));
|
|
175
|
+
};
|
|
176
|
+
const state = computed(() => ({ loading: loading.value, value: value.value, error: error.value }));
|
|
177
|
+
return tsplus_module_5.tuple(state, exec);
|
|
178
|
+
}
|
|
179
|
+
function handleExit(loading, error, value) {
|
|
180
|
+
return (exit) => {
|
|
181
|
+
loading.value = false;
|
|
182
|
+
if (tsplus_module_8.isSuccess(exit)) {
|
|
183
|
+
value.value = exit.value;
|
|
184
|
+
error.value = undefined;
|
|
185
|
+
return tsplus_module_3.right(exit.value);
|
|
186
|
+
}
|
|
187
|
+
const err = tsplus_module_9.failureOption(exit.cause);
|
|
188
|
+
if (tsplus_module_4.isSome(err)) {
|
|
189
|
+
error.value = err.value;
|
|
190
|
+
value.value = undefined;
|
|
191
|
+
return tsplus_module_3.left(err.value);
|
|
192
|
+
}
|
|
193
|
+
const died = tsplus_module_9.dieOption(exit.cause);
|
|
194
|
+
if (tsplus_module_10.getOrUndefined(died)) {
|
|
195
|
+
throw tsplus_module_10.getOrUndefined(died);
|
|
196
|
+
}
|
|
197
|
+
const interrupted = tsplus_module_9.interruptOption(exit.cause);
|
|
198
|
+
if (tsplus_module_10.getOrUndefined(interrupted)) {
|
|
199
|
+
throw InterruptedException();
|
|
200
|
+
}
|
|
201
|
+
throw new Error("Invalid state");
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL2hvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUc1QixPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQXNCaEYsc0VBQXNFO0FBQ3RFLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUEyQixDQUFBO0FBQ3RHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBMEIsQ0FBQTtBQUV4RyxTQUFTLFVBQVUsQ0FDakIsQ0FBdUU7SUFFdkUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQ1gsT0FBTyxDQUFDLENBQUMsWUFBWTtZQUNuQixDQUFDLENBQUMsZ0JBQUEsVUFBVSxDQUFDLElBQUksQ0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU8sQ0FBQyxDQUFD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
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../_src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAChF,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { isFailed, isInitializing, isSuccess } from "@effect-app/prelude/client";
|
|
2
|
+
export * from "./hooks.js";
|
|
3
|
+
export * from "./runtime.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ2hGLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Effect } from "@effect/io/Effect";
|
|
2
|
+
import type { ApiConfig } from "@effect-app/prelude/client";
|
|
3
|
+
import type { Http } from "@effect-app/core/http/http-client";
|
|
4
|
+
import type { Runtime } from "@effect/io/Runtime";
|
|
5
|
+
export declare const run: {
|
|
6
|
+
value<E, A>(_: import("@effect/io/Effect").Effect<ApiConfig | Http, E, A>): Promise<A>;
|
|
7
|
+
};
|
|
8
|
+
export declare function initRuntime<A>(rt: Runtime<A | ApiConfig | Http>): void;
|
|
9
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../_src/internal.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,eAAO,MAAM,GAAG;;CAIf,CAAA;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,QAI/D"}
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const run = {
|
|
2
|
+
value(_) {
|
|
3
|
+
throw new Error("Runtime not initialized, please run `initRuntime` first");
|
|
4
|
+
}
|
|
5
|
+
};
|
|
6
|
+
export function initRuntime(rt) {
|
|
7
|
+
run.value = function (self) {
|
|
8
|
+
return rt.unsafeRunPromise(self);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL2ludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixLQUFLLENBQU8sQ0FBaUM7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFBO0lBQzVFLENBQUM7Q0FDRixDQUFBO0FBQ0QsTUFBTSxVQUFVLFdBQVcsQ0FBSSxFQUFpQztJQUM5RCxHQUFHLENBQUMsS0FBSyxHQUFHLFVBQWUsSUFBb0M7UUFDN0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEMsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Opt } from "@effect-app/core/Option";
|
|
2
|
+
import type { ParsedShapeOfCustom, ReqRes, SchemaAny } from "@effect-app/prelude/schema";
|
|
3
|
+
import { Parser } from "@effect-app/prelude/schema";
|
|
4
|
+
import type { ParsedQuery } from "query-string";
|
|
5
|
+
export declare function getQueryParam(search: ParsedQuery, param: string): string | null | undefined;
|
|
6
|
+
export declare const getQueryParamO: (search: ParsedQuery, param: string) => import("@fp-ts/data/Option").Option<string>;
|
|
7
|
+
export declare const parseOpt: <E, A>(t: ReqRes<E, A>) => (u: E, env?: Parser.ParserEnv | undefined) => import("@fp-ts/data/Option").None | import("@fp-ts/data/Option").Some<A>;
|
|
8
|
+
export declare const parseOptUnknown: <E, A>(t: ReqRes<E, A>) => (u: unknown, env?: Parser.ParserEnv | undefined) => import("@fp-ts/data/Option").None | import("@fp-ts/data/Option").Some<A>;
|
|
9
|
+
export declare function parseRouteParamsOption<NER extends Record<string, SchemaAny>>(query: Record<string, any>, t: NER): {
|
|
10
|
+
[K in keyof NER]: Opt<ParsedShapeOfCustom<NER[K]>>;
|
|
11
|
+
};
|
|
12
|
+
export declare function parseRouteParams<NER extends Record<string, SchemaAny>>(query: Record<string, any>, t: NER): {
|
|
13
|
+
[K in keyof NER]: ParsedShapeOfCustom<NER[K]>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=routeParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../_src/routeParams.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACxF,OAAO,EAAc,MAAM,EAAU,MAAM,4BAA4B,CAAA;AACvE,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,qFAAwC,CAAA;AAEnE,eAAO,MAAM,QAAQ,mJAQpB,CAAA;AAED,eAAO,MAAM,eAAe,yJAQ3B,CAAA;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD,CAYA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACpE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9C,CAYA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as tsplus_module_1 from "@fp-ts/data/Option";
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/core/Function";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/prelude/utils";
|
|
4
|
+
import { EParserFor, Parser, unsafe } from "@effect-app/prelude/schema";
|
|
5
|
+
export function getQueryParam(search, param) {
|
|
6
|
+
const v = search[param];
|
|
7
|
+
if (Array.isArray(v)) {
|
|
8
|
+
return v[0];
|
|
9
|
+
}
|
|
10
|
+
return v ?? null;
|
|
11
|
+
}
|
|
12
|
+
export const getQueryParamO = tsplus_module_2.flow(getQueryParam, tsplus_module_1.fromNullable);
|
|
13
|
+
export const parseOpt = (t) => {
|
|
14
|
+
const dec = tsplus_module_2.flow(EParserFor(t), x => x.effect._tag === "Right"
|
|
15
|
+
? x.effect.right[1]._tag === "None"
|
|
16
|
+
? tsplus_module_1.some(x.effect.right[0])
|
|
17
|
+
: tsplus_module_1.none
|
|
18
|
+
: tsplus_module_1.none);
|
|
19
|
+
return dec;
|
|
20
|
+
};
|
|
21
|
+
export const parseOptUnknown = (t) => {
|
|
22
|
+
const dec = tsplus_module_2.flow(Parser.for(t), x => x.effect._tag === "Right"
|
|
23
|
+
? x.effect.right[1]._tag === "None"
|
|
24
|
+
? tsplus_module_1.some(x.effect.right[0])
|
|
25
|
+
: tsplus_module_1.none
|
|
26
|
+
: tsplus_module_1.none);
|
|
27
|
+
return dec;
|
|
28
|
+
};
|
|
29
|
+
export function parseRouteParamsOption(query, t // enforce non empty
|
|
30
|
+
) {
|
|
31
|
+
return tsplus_module_3.RecordKeys(tsplus_module_3.object$(t)).reduce((prev, cur) => {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
33
|
+
prev[cur] = tsplus_module_1.flatMap(parseOpt(t[cur]))(getQueryParamO(query, cur));
|
|
34
|
+
return prev;
|
|
35
|
+
}, {});
|
|
36
|
+
}
|
|
37
|
+
export function parseRouteParams(query, t // enforce non empty
|
|
38
|
+
) {
|
|
39
|
+
return tsplus_module_3.RecordKeys(tsplus_module_3.object$(t)).reduce((prev, cur) => {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
41
|
+
prev[cur] = unsafe(EParserFor(t[cur]))(query[cur]);
|
|
42
|
+
return prev;
|
|
43
|
+
}, {});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL3JvdXRlUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBR3ZFLE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBbUIsRUFBRSxLQUFhO0lBQzlELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDWjtJQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFBLElBQUksQ0FBQyxhQUFhLCtCQUFtQixDQUFBO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFPLENBQWUsRUFBRSxFQUFFO0lBQ2hELE1BQU0sR0FBRyxHQUFHLGdCQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDbEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTztRQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDakMsQ0FBQyxDQUFDLHFCQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUMscUJBQVM7UUFDWixDQUFDLHFCQUFTLENBQUMsQ0FBQTtJQUNmLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQU8sQ0FBZSxFQUFFLEVBQUU7SUFDdkQsTUFBTSxHQUFHLEdBQUcsZ0JBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDbEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTztRQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDakMsQ0FBQyxDQUFDLHFCQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUMscUJBQVM7UUFDWixDQUFDLHFCQUFTLENBQUMsQ0FBQTtJQUNmLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxLQUEwQixFQUMxQixDQUFNLENBQUMsb0JBQW9COztJQUkzQixPQUFPLG1EQUFBLENBQUMsR0FBUyxNQUFNLENBQ3JCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1osb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyx3QkFBNkMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUUsQ0FBQyxFQUE5RCxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQWEsQ0FBQyxDQUEyQixDQUFBO1FBRTNFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxFQUNELEVBRUMsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBMEIsRUFDMUIsQ0FBTSxDQUFDLG9CQUFvQjs7SUFJM0IsT0FBTyxtREFBQSxDQUFDLEdBQVMsTUFBTSxDQUNyQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFVLENBQUMsQ0FBQyxDQUFBO1FBRTFELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxFQUNELEVBRUMsQ0FDRixDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Config } from "@effect/io/Config";
|
|
2
|
+
import { Layer } from "@effect/io/Layer";
|
|
3
|
+
import type { Http } from "@effect-app/core/http/http-client";
|
|
4
|
+
import { ApiConfig } from "@effect-app/prelude/client";
|
|
5
|
+
export { initRuntime } from "./internal.js";
|
|
6
|
+
export declare function makeApiLayers(config?: Config<ApiConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/Config/Error").ConfigError, ApiConfig | import("@effect-app/core/http/http-client").HttpOps>;
|
|
7
|
+
export declare function makeAppRuntime<R, E, A>(layer: Layer<R, E, A>): import("@effect/io/Effect").Effect<R, E, {
|
|
8
|
+
runtime: import("@effect/io/Runtime").Runtime<A>;
|
|
9
|
+
clean: import("@effect/io/Effect").Effect<never, never, void>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function initializeSync<E, A>(layer: Layer<never, E, A | ApiConfig | Http>): {
|
|
12
|
+
runtime: import("@effect/io/Runtime").Runtime<ApiConfig | Http | A>;
|
|
13
|
+
clean: () => void;
|
|
14
|
+
};
|
|
15
|
+
export declare function initializeAsync<E, A>(layer: Layer<never, E, A | ApiConfig | Http>): Promise<{
|
|
16
|
+
runtime: import("@effect/io/Runtime").Runtime<ApiConfig | Http | A>;
|
|
17
|
+
clean: () => Promise<void>;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../_src/runtime.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAItD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAQ3C,wBAAgB,aAAa,CAAC,MAAM,GAAE,MAAM,CAAC,SAAS,CAAoB,2JAEzE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;;GAW5D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;;;EAOhF;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;;;GASjF"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/vue/_src/runtime.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@effect/io/Config";
|
|
4
|
+
import * as tsplus_module_2 from "@effect/io/Layer";
|
|
5
|
+
import * as tsplus_module_3 from "@effect/io/Scope";
|
|
6
|
+
import * as tsplus_module_4 from "@effect/io/Effect";
|
|
7
|
+
import * as tsplus_module_5 from "@effect-app/core/Effect";
|
|
8
|
+
import * as HF from "@effect-app/core/http/http-client-fetch";
|
|
9
|
+
import { ApiConfig } from "@effect-app/prelude/client";
|
|
10
|
+
import { fetch } from "cross-fetch";
|
|
11
|
+
import { initRuntime } from "./internal.js";
|
|
12
|
+
export { initRuntime } from "./internal.js";
|
|
13
|
+
const DefaultApiConfig = tsplus_module_1.struct({
|
|
14
|
+
apiUrl: tsplus_module_1.withDefault("/api")(tsplus_module_1.string("apiUrl")),
|
|
15
|
+
headers: tsplus_module_1.optional(tsplus_module_1.table(tsplus_module_1.string(), "headers"))
|
|
16
|
+
});
|
|
17
|
+
export function makeApiLayers(config = DefaultApiConfig) {
|
|
18
|
+
return tsplus_module_2.merge(ApiConfig.Live(config))(HF.Client(fetch));
|
|
19
|
+
}
|
|
20
|
+
export function makeAppRuntime(layer) {
|
|
21
|
+
return tracer_1.withCallTrace(fileName_1 + ":20:17")(tsplus_module_4.gen(function* ($) {
|
|
22
|
+
const scope = yield* $(tracer_1.withCallTrace(fileName_1 + ":21:34")(tsplus_module_3.make()));
|
|
23
|
+
const env = yield* $(tracer_1.withCallTrace(fileName_1 + ":22:32")(tsplus_module_2.buildWithScope(scope))(layer));
|
|
24
|
+
const runtime = yield* $(tracer_1.withCallTrace(fileName_1 + ":23:57")(tsplus_module_4.provideEnvironment(env))(tsplus_module_4.scoped(tsplus_module_4.runtime())));
|
|
25
|
+
return {
|
|
26
|
+
runtime,
|
|
27
|
+
clean: tracer_1.withCallTrace(fileName_1 + ":27:20")(tsplus_module_3.close(tsplus_module_5.ex_unit))(scope)
|
|
28
|
+
};
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
export function initializeSync(layer) {
|
|
32
|
+
const { clean, runtime } = tsplus_module_4.unsafeRunSync(makeAppRuntime(layer));
|
|
33
|
+
initRuntime(runtime);
|
|
34
|
+
return {
|
|
35
|
+
runtime,
|
|
36
|
+
clean: () => tsplus_module_4.unsafeRunSync(clean)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function initializeAsync(layer) {
|
|
40
|
+
return tsplus_module_4.unsafeRunPromise(makeAppRuntime(layer)).then(({ clean, runtime }) => {
|
|
41
|
+
initRuntime(runtime);
|
|
42
|
+
return {
|
|
43
|
+
runtime,
|
|
44
|
+
clean: () => tsplus_module_4.unsafeRunPromise(clean)
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBYztJQUNyQyxNQUFNLEVBQUUsNEJBQW9DLE1BQU0sRUFBMUMsdUJBQWMsUUFBUSxDQUFDLENBQW9CO0lBQ25ELE9BQU8sMkJBQUUsc0JBQUEsd0JBQWUsRUFDZixTQUFTLENBQUMsQ0FBUztDQUM3QixDQUFDLENBQUE7QUFFRixNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQTRCLGdCQUFnQjtJQUN4RSw2QkFBMEIsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBekMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBeUI7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQVUsS0FBcUI7SUFDM0QscURBQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLCtDQUFDLHNCQUFZLEVBQUMsQ0FBQTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsNkVBQXFCLEtBQUssR0FBMUIsS0FBSyxDQUFzQixDQUFDLENBQUE7UUFDakQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlGQUE4QyxHQUFHLDBCQUFqRCx5QkFBbUIsRUFBK0IsQ0FBQyxDQUFBO1FBRTVFLE9BQU87WUFDTCxPQUFPO1lBQ1AsS0FBSyxFQUFFLDhGQUFBLEtBQUssQ0FBaUI7U0FDOUIsQ0FBQTtJQUNILENBQUMsQ0FBQyxFQUFBO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQU8sS0FBNEM7SUFDL0UsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsaUNBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFjLENBQUE7SUFDOUQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BCLE9BQU87UUFDTCxPQUFPO1FBQ1AsS0FBSyxFQUFFLEdBQUcsRUFBRSwrQkFBQyxLQUFLLENBQWM7S0FDakMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFPLEtBQTRDO0lBQ2hGLE9BQU8saUNBQUEsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUN6QixJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQzNCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwQixPQUFPO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxHQUFHLEVBQUUsa0NBQUMsS0FBSyxDQUFpQjtTQUNwQyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDIn0=
|
package/package.json
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@effect-app/vue",
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@effect-ts/core": "^0.60.5",
|
|
8
|
+
"@effect-ts/monocle": "^0.43.0",
|
|
9
|
+
"@effect-ts/system": "^0.57.5",
|
|
10
|
+
"@effect/io": "^0.0.65",
|
|
11
|
+
"@fp-ts/core": "^0.0.11",
|
|
12
|
+
"@fp-ts/data": "^0.0.39",
|
|
13
|
+
"query-string": "^8.1.0",
|
|
14
|
+
"swrv": "^1.0.3",
|
|
15
|
+
"vue": "^3.2.45",
|
|
16
|
+
"@effect-app/vue": "0.7.0",
|
|
17
|
+
"@effect-app/prelude": "0.7.0",
|
|
18
|
+
"@effect-app/core": "0.7.0",
|
|
19
|
+
"@effect-app/schema": "0.7.0"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@rollup/pluginutils": "^5.0.2",
|
|
23
|
+
"@babel/cli": "^7.20.7",
|
|
24
|
+
"@types/node": "~18.11.18",
|
|
25
|
+
"json5": "^2.2.3",
|
|
26
|
+
"ts-node": "^10.9.1",
|
|
27
|
+
"typescript": "https://cdn.jsdelivr.net/npm/@tsplus/installer@0.0.164/compiler/typescript.tgz",
|
|
28
|
+
"vite": "^4.0.4",
|
|
29
|
+
"vitest": "^0.27.2",
|
|
30
|
+
"vue": "^3.2.45",
|
|
31
|
+
"@effect-app/compiler": "0.7.0"
|
|
32
|
+
},
|
|
33
|
+
"typesVersions": {
|
|
34
|
+
"*": {
|
|
35
|
+
"*": [
|
|
36
|
+
"dist/*"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"exports": {
|
|
41
|
+
".": {
|
|
42
|
+
"import": {
|
|
43
|
+
"types": "./dist/index.d.ts",
|
|
44
|
+
"default": "./dist/index.js"
|
|
45
|
+
},
|
|
46
|
+
"require": {
|
|
47
|
+
"types": "./dist/index.d.ts",
|
|
48
|
+
"default": "./_cjs/index.cjs"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"./_global": {
|
|
52
|
+
"import": {
|
|
53
|
+
"types": "./dist/_global.d.ts",
|
|
54
|
+
"default": "./dist/_global.js"
|
|
55
|
+
},
|
|
56
|
+
"require": {
|
|
57
|
+
"types": "./dist/_global.d.ts",
|
|
58
|
+
"default": "./_cjs/_global.cjs"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"./form": {
|
|
62
|
+
"import": {
|
|
63
|
+
"types": "./dist/form.d.ts",
|
|
64
|
+
"default": "./dist/form.js"
|
|
65
|
+
},
|
|
66
|
+
"require": {
|
|
67
|
+
"types": "./dist/form.d.ts",
|
|
68
|
+
"default": "./_cjs/form.cjs"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"./hooks": {
|
|
72
|
+
"import": {
|
|
73
|
+
"types": "./dist/hooks.d.ts",
|
|
74
|
+
"default": "./dist/hooks.js"
|
|
75
|
+
},
|
|
76
|
+
"require": {
|
|
77
|
+
"types": "./dist/hooks.d.ts",
|
|
78
|
+
"default": "./_cjs/hooks.cjs"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"./index": {
|
|
82
|
+
"import": {
|
|
83
|
+
"types": "./dist/index.d.ts",
|
|
84
|
+
"default": "./dist/index.js"
|
|
85
|
+
},
|
|
86
|
+
"require": {
|
|
87
|
+
"types": "./dist/index.d.ts",
|
|
88
|
+
"default": "./_cjs/index.cjs"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"./internal": {
|
|
92
|
+
"import": {
|
|
93
|
+
"types": "./dist/internal.d.ts",
|
|
94
|
+
"default": "./dist/internal.js"
|
|
95
|
+
},
|
|
96
|
+
"require": {
|
|
97
|
+
"types": "./dist/internal.d.ts",
|
|
98
|
+
"default": "./_cjs/internal.cjs"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"./routeParams": {
|
|
102
|
+
"import": {
|
|
103
|
+
"types": "./dist/routeParams.d.ts",
|
|
104
|
+
"default": "./dist/routeParams.js"
|
|
105
|
+
},
|
|
106
|
+
"require": {
|
|
107
|
+
"types": "./dist/routeParams.d.ts",
|
|
108
|
+
"default": "./_cjs/routeParams.cjs"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"./runtime": {
|
|
112
|
+
"import": {
|
|
113
|
+
"types": "./dist/runtime.d.ts",
|
|
114
|
+
"default": "./dist/runtime.js"
|
|
115
|
+
},
|
|
116
|
+
"require": {
|
|
117
|
+
"types": "./dist/runtime.d.ts",
|
|
118
|
+
"default": "./_cjs/runtime.cjs"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"gitHead": "bd8e27eea3eff97db8739d577d67e7336c078d28",
|
|
123
|
+
"sideEffects": [
|
|
124
|
+
"./dist/faker.js",
|
|
125
|
+
"./faker",
|
|
126
|
+
"./src/faker",
|
|
127
|
+
"./dist/faker",
|
|
128
|
+
"./dist/src/faker.js",
|
|
129
|
+
"./dist/faker.js"
|
|
130
|
+
],
|
|
131
|
+
"scripts": {
|
|
132
|
+
"watch": "pnpm build:tsc -w",
|
|
133
|
+
"build:tsc": "pnpm clean-dist && node ../../scripts/package.js && NODE_OPTIONS=--max-old-space-size=6144 tsc --build",
|
|
134
|
+
"build": "pnpm build:tsc && pnpm build2:cjs",
|
|
135
|
+
"build2:cjs": "rm -rf _cjs && babel dist --config-file ../../.babel.cjs.json --out-dir _cjs --out-file-extension .cjs --source-maps",
|
|
136
|
+
"watch2": "pnpm clean-dist && NODE_OPTIONS=--max-old-space-size=6144 tsc -w",
|
|
137
|
+
"clean": "rm -rf dist && rm -rf _cjs",
|
|
138
|
+
"clean-dist": "sh ../../scripts/clean-dist.sh",
|
|
139
|
+
"circular": "pnpm circular:src && pnpm circular:dist",
|
|
140
|
+
"circular:src": "madge --circular --ts-config ./tsconfig.json --extensions ts ./_src",
|
|
141
|
+
"circular:dist": "madge --circular --extensions js ./dist",
|
|
142
|
+
"compile": "NODE_OPTIONS=--max-old-space-size=6144 tsc --noEmit",
|
|
143
|
+
"lint": "NODE_OPTIONS=--max-old-space-size=6144 ESLINT_TS=1 eslint ./_src",
|
|
144
|
+
"lint:watch": "ESLINT_TS=1 esw -w --changed --clear --ext ts,tsx .",
|
|
145
|
+
"autofix": "pnpm lint --fix",
|
|
146
|
+
"test": "vitest",
|
|
147
|
+
"test:run": "pnpm run test run --passWithNoTests",
|
|
148
|
+
"testsuite": "pnpm lint && pnpm circular && pnpm run test:run",
|
|
149
|
+
"ncu": "ncu",
|
|
150
|
+
"pub": "pnpm prepublish && npm publish --access public",
|
|
151
|
+
"prepublish": "pnpm build && cp -f ./tsconfig.json ./tsconfig.json.bak && node ../../scripts/mergeTsConfig.cjs ./tsconfig.json"
|
|
152
|
+
}
|
|
153
|
+
}
|