@effect-app/vue 0.129.4 → 0.130.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/CHANGELOG.md +19 -0
- package/_cjs/query.cjs +66 -0
- package/_cjs/query.cjs.map +1 -0
- package/_src/query.ts +109 -0
- package/dist/query.d.ts +12 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +80 -0
- package/package.json +15 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @effect-app/vue
|
|
2
2
|
|
|
3
|
+
## 0.130.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3428493: add tanstack-query
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [3428493]
|
|
12
|
+
- @effect-app/vue@0.130.0
|
|
13
|
+
|
|
14
|
+
## 0.129.5
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [b4ee7e7]
|
|
19
|
+
- effect-app@0.158.5
|
|
20
|
+
- @effect-app/vue@0.129.5
|
|
21
|
+
|
|
3
22
|
## 0.129.4
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/_cjs/query.cjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSafeQuery = void 0;
|
|
7
|
+
var tsplus_module_1 = _interopRequireWildcard(require("effect/Cause"));
|
|
8
|
+
var tsplus_module_2 = _interopRequireWildcard(require("effect-app/client/QueryResult"));
|
|
9
|
+
var tsplus_module_3 = _interopRequireWildcard(require("effect/Either"));
|
|
10
|
+
var tsplus_module_4 = _interopRequireWildcard(require("effect/Option"));
|
|
11
|
+
var _vueQuery = require("@tanstack/vue-query");
|
|
12
|
+
var _effectApp = require("effect-app");
|
|
13
|
+
var _client = require("effect-app/client");
|
|
14
|
+
var _vue = require("vue");
|
|
15
|
+
var _internal = require("./internal.cjs");
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
19
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
20
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
21
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
22
|
+
|
|
23
|
+
const useSafeQuery = (q, arg) => {
|
|
24
|
+
const arr = arg;
|
|
25
|
+
const req = !arg ? undefined : typeof arr === "function" ? {
|
|
26
|
+
get value() {
|
|
27
|
+
return arr();
|
|
28
|
+
}
|
|
29
|
+
} : (0, _vue.ref)(arg);
|
|
30
|
+
const r = (0, _vueQuery.useQuery)(_effectApp.Effect.isEffect(q.handler) ? {
|
|
31
|
+
queryKey: [(0, _vue.computed)(() => q.mapPath)],
|
|
32
|
+
queryFn: () => _internal.run.value(q.handler).then(_ => _.body).catch(_ => {
|
|
33
|
+
if (!_effectApp.Runtime.isFiberFailure(_)) throw _;
|
|
34
|
+
const cause = _[_effectApp.Runtime.FiberFailureCauseId];
|
|
35
|
+
throw tsplus_module_1.squash(cause);
|
|
36
|
+
})
|
|
37
|
+
} : {
|
|
38
|
+
queryKey: [(0, _vue.computed)(() => q.mapPath(req.value))],
|
|
39
|
+
queryFn: () => _internal.run.value(q.handler(req.value)).then(_ => _.body).catch(_ => {
|
|
40
|
+
if (!_effectApp.Runtime.isFiberFailure(_)) throw _;
|
|
41
|
+
const cause = _[_effectApp.Runtime.FiberFailureCauseId];
|
|
42
|
+
throw tsplus_module_1.squash(cause);
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
function swrToQuery(r) {
|
|
46
|
+
if (r.error) {
|
|
47
|
+
return r.isValidating ? _client.Refreshing.fail(r.error, r.data) : _client.Done.fail(r.error, r.data);
|
|
48
|
+
}
|
|
49
|
+
if (r.data !== undefined) {
|
|
50
|
+
return r.isValidating ? _client.Refreshing.succeed(r.data) : _client.Done.succeed(r.data);
|
|
51
|
+
}
|
|
52
|
+
return r.isValidating ? new _client.Loading() : new _client.Initial();
|
|
53
|
+
}
|
|
54
|
+
const result = (0, _vue.computed)(() => swrToQuery({
|
|
55
|
+
error: r.error.value,
|
|
56
|
+
data: r.data.value,
|
|
57
|
+
isValidating: r.isFetching.value
|
|
58
|
+
}));
|
|
59
|
+
const latestSuccess = (0, _vue.computed)(() => {
|
|
60
|
+
const value = result.value;
|
|
61
|
+
return tsplus_module_2.isSuccess(value) ? tsplus_module_3.isRight(value.current) ? value.current.right : tsplus_module_4.isSome(value.previous) ? value.previous.value : undefined : undefined;
|
|
62
|
+
});
|
|
63
|
+
return [result, latestSuccess, r.refetch];
|
|
64
|
+
};
|
|
65
|
+
exports.useSafeQuery = useSafeQuery;
|
|
66
|
+
//# sourceMappingURL=query.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.cjs","names":["_vueQuery","require","_effectApp","_client","_vue","_internal","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useSafeQuery","q","arg","arr","req","undefined","value","ref","useQuery","Effect","isEffect","handler","queryKey","computed","mapPath","queryFn","run","then","_","body","catch","Runtime","isFiberFailure","cause","FiberFailureCauseId","tsplus_module_1","squash","swrToQuery","error","isValidating","Refreshing","fail","data","Done","succeed","Loading","Initial","result","isFetching","latestSuccess","tsplus_module_2","isSuccess","tsplus_module_3","isRight","current","right","tsplus_module_4","isSome","previous","refetch","exports"],"sources":["../_src/query.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/_src/query.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
5
|
+
import { useQuery } from "@tanstack/vue-query"
|
|
6
|
+
import { Effect, Runtime } from "effect-app"
|
|
7
|
+
import { Done, Initial, Loading, Refreshing } from "effect-app/client"
|
|
8
|
+
import type { ApiConfig, FetchResponse, QueryResult } from "effect-app/client"
|
|
9
|
+
import { computed, ref, type WatchSource } from "vue"
|
|
10
|
+
import { run } from "./internal.js"
|
|
11
|
+
|
|
12
|
+
export const useSafeQuery = <I, A, E>(
|
|
13
|
+
q:
|
|
14
|
+
| {
|
|
15
|
+
handler: (
|
|
16
|
+
req: I
|
|
17
|
+
) => Effect<
|
|
18
|
+
FetchResponse<A>,
|
|
19
|
+
E,
|
|
20
|
+
ApiConfig | HttpClient.Default
|
|
21
|
+
>
|
|
22
|
+
mapPath: (req: I) => string
|
|
23
|
+
}
|
|
24
|
+
| {
|
|
25
|
+
handler: Effect<
|
|
26
|
+
FetchResponse<A>,
|
|
27
|
+
E,
|
|
28
|
+
ApiConfig | HttpClient.Default
|
|
29
|
+
>
|
|
30
|
+
mapPath: string
|
|
31
|
+
},
|
|
32
|
+
arg?: I | WatchSource<I>
|
|
33
|
+
) => {
|
|
34
|
+
const arr = arg
|
|
35
|
+
const req: { value: I } = !arg
|
|
36
|
+
? undefined
|
|
37
|
+
: typeof arr === "function"
|
|
38
|
+
? ({
|
|
39
|
+
get value() {
|
|
40
|
+
return (arr as any)()
|
|
41
|
+
}
|
|
42
|
+
} as any)
|
|
43
|
+
: ref(arg)
|
|
44
|
+
const r = useQuery(
|
|
45
|
+
Effect.isEffect(q.handler)
|
|
46
|
+
? {
|
|
47
|
+
queryKey: [computed(() => q.mapPath)],
|
|
48
|
+
queryFn: () =>
|
|
49
|
+
run
|
|
50
|
+
.value(q.handler)
|
|
51
|
+
.then((_) => (_ as any).body)
|
|
52
|
+
.catch((_) => {
|
|
53
|
+
if (!Runtime.isFiberFailure(_)) throw _
|
|
54
|
+
const cause = _[Runtime.FiberFailureCauseId]
|
|
55
|
+
throw Cause.squash(cause)
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
: {
|
|
59
|
+
queryKey: [computed(() => (q.mapPath as any)(req.value))],
|
|
60
|
+
queryFn: () =>
|
|
61
|
+
run
|
|
62
|
+
.value(q.handler(req.value))
|
|
63
|
+
.then((_) => (_ as any).body)
|
|
64
|
+
.catch((_) => {
|
|
65
|
+
if (!Runtime.isFiberFailure(_)) throw _
|
|
66
|
+
const cause = _[Runtime.FiberFailureCauseId]
|
|
67
|
+
throw Cause.squash(cause)
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
function swrToQuery<E, A>(r: {
|
|
73
|
+
error: E | undefined
|
|
74
|
+
data: A | undefined
|
|
75
|
+
isValidating: boolean
|
|
76
|
+
}): QueryResult<E, A> {
|
|
77
|
+
if (r.error) {
|
|
78
|
+
return r.isValidating
|
|
79
|
+
? Refreshing.fail<E, A>(r.error, r.data)
|
|
80
|
+
: Done.fail<E, A>(r.error, r.data)
|
|
81
|
+
}
|
|
82
|
+
if (r.data !== undefined) {
|
|
83
|
+
return r.isValidating
|
|
84
|
+
? Refreshing.succeed<A, E>(r.data)
|
|
85
|
+
: Done.succeed<A, E>(r.data)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return r.isValidating ? new Loading() : new Initial()
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const result = computed(() =>
|
|
92
|
+
swrToQuery({
|
|
93
|
+
error: r.error.value,
|
|
94
|
+
data: r.data.value,
|
|
95
|
+
isValidating: r.isFetching.value
|
|
96
|
+
})
|
|
97
|
+
)
|
|
98
|
+
const latestSuccess = computed(() => {
|
|
99
|
+
const value = result.value
|
|
100
|
+
return value.isSuccess()
|
|
101
|
+
? value.current.isRight()
|
|
102
|
+
? value.current.right
|
|
103
|
+
: value.previous.isSome()
|
|
104
|
+
? value.previous.value
|
|
105
|
+
: undefined
|
|
106
|
+
: undefined
|
|
107
|
+
})
|
|
108
|
+
return [result, latestSuccess, r.refetch] as const
|
|
109
|
+
}
|
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { HttpClient } from "effect-app/Request";
|
|
2
|
+
import { Effect } from "effect-app";
|
|
3
|
+
import type { ApiConfig, FetchResponse, QueryResult } from "effect-app/client";
|
|
4
|
+
import { type WatchSource } from "vue";
|
|
5
|
+
export declare const useSafeQuery: <I, A, E>(q: {
|
|
6
|
+
handler: (req: I) => Effect<FetchResponse<A>, E, ApiConfig | HttpClient.Default>;
|
|
7
|
+
mapPath: (req: I) => string;
|
|
8
|
+
} | {
|
|
9
|
+
handler: Effect<FetchResponse<A>, E, ApiConfig | HttpClient.Default>;
|
|
10
|
+
mapPath: string;
|
|
11
|
+
}, arg?: I | WatchSource<I>) => readonly [import("vue").ComputedRef<QueryResult<Error | null, any>>, import("vue").ComputedRef<any>, (options?: import("@tanstack/vue-query").RefetchOptions | undefined) => Promise<import("@tanstack/vue-query").QueryObserverResult<any, Error>>];
|
|
12
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../_src/query.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAA;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AAGrD,eAAO,MAAM,YAAY;mBAIZ,CAAC,KACH,OACH,cAAc,CAAC,CAAC,EAChB,CAAC,EACD,SAAS,GAAG,WAAW,OAAO,CAC/B;mBACc,CAAC,KAAK,MAAM;;aAGlB,OACP,cAAc,CAAC,CAAC,EAChB,CAAC,EACD,SAAS,GAAG,WAAW,OAAO,CAC/B;aACQ,MAAM;SAEb,CAAC,GAAG,YAAY,CAAC,CAAC,yPA6EzB,CAAA"}
|
package/dist/query.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as tsplus_module_1 from "effect/Cause";
|
|
2
|
+
import * as tsplus_module_2 from "effect-app/client/QueryResult";
|
|
3
|
+
import * as tsplus_module_3 from "effect/Either";
|
|
4
|
+
import * as tsplus_module_4 from "effect/Option";
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
9
|
+
import { useQuery } from "@tanstack/vue-query";
|
|
10
|
+
import { Effect, Runtime } from "effect-app";
|
|
11
|
+
import { Done, Initial, Loading, Refreshing } from "effect-app/client";
|
|
12
|
+
import { computed, ref } from "vue";
|
|
13
|
+
import { run } from "./internal.js";
|
|
14
|
+
export const useSafeQuery = (q, arg) => {
|
|
15
|
+
const arr = arg;
|
|
16
|
+
const req = !arg
|
|
17
|
+
? undefined
|
|
18
|
+
: typeof arr === "function"
|
|
19
|
+
? {
|
|
20
|
+
get value() {
|
|
21
|
+
return arr();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
: ref(arg);
|
|
25
|
+
const r = useQuery(Effect.isEffect(q.handler)
|
|
26
|
+
? {
|
|
27
|
+
queryKey: [computed(() => q.mapPath)],
|
|
28
|
+
queryFn: () => run
|
|
29
|
+
.value(q.handler)
|
|
30
|
+
.then((_) => _.body)
|
|
31
|
+
.catch((_) => {
|
|
32
|
+
if (!Runtime.isFiberFailure(_))
|
|
33
|
+
throw _;
|
|
34
|
+
const cause = _[Runtime.FiberFailureCauseId];
|
|
35
|
+
throw tsplus_module_1.squash(cause);
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
: {
|
|
39
|
+
queryKey: [computed(() => q.mapPath(req.value))],
|
|
40
|
+
queryFn: () => run
|
|
41
|
+
.value(q.handler(req.value))
|
|
42
|
+
.then((_) => _.body)
|
|
43
|
+
.catch((_) => {
|
|
44
|
+
if (!Runtime.isFiberFailure(_))
|
|
45
|
+
throw _;
|
|
46
|
+
const cause = _[Runtime.FiberFailureCauseId];
|
|
47
|
+
throw tsplus_module_1.squash(cause);
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
function swrToQuery(r) {
|
|
51
|
+
if (r.error) {
|
|
52
|
+
return r.isValidating
|
|
53
|
+
? Refreshing.fail(r.error, r.data)
|
|
54
|
+
: Done.fail(r.error, r.data);
|
|
55
|
+
}
|
|
56
|
+
if (r.data !== undefined) {
|
|
57
|
+
return r.isValidating
|
|
58
|
+
? Refreshing.succeed(r.data)
|
|
59
|
+
: Done.succeed(r.data);
|
|
60
|
+
}
|
|
61
|
+
return r.isValidating ? new Loading() : new Initial();
|
|
62
|
+
}
|
|
63
|
+
const result = computed(() => swrToQuery({
|
|
64
|
+
error: r.error.value,
|
|
65
|
+
data: r.data.value,
|
|
66
|
+
isValidating: r.isFetching.value
|
|
67
|
+
}));
|
|
68
|
+
const latestSuccess = computed(() => {
|
|
69
|
+
const value = result.value;
|
|
70
|
+
return tsplus_module_2.isSuccess(value)
|
|
71
|
+
? tsplus_module_3.isRight(value.current)
|
|
72
|
+
? value.current.right
|
|
73
|
+
: tsplus_module_4.isSome(value.previous)
|
|
74
|
+
? value.previous.value
|
|
75
|
+
: undefined
|
|
76
|
+
: undefined;
|
|
77
|
+
});
|
|
78
|
+
return [result, latestSuccess, r.refetch];
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL3F1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsc0RBQXNEO0FBQ3RELHdEQUF3RDtBQUN4RCw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVuQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsQ0FrQkcsRUFDSCxHQUF3QixFQUN4QixFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2YsTUFBTSxHQUFHLEdBQWlCLENBQUMsR0FBRztRQUM1QixDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxVQUFVO1lBQzNCLENBQUMsQ0FBRTtnQkFDRCxJQUFJLEtBQUs7b0JBQ1AsT0FBUSxHQUFXLEVBQUUsQ0FBQTtnQkFDdkIsQ0FBQzthQUNNO1lBQ1QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNaLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FDaEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztZQUNBLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNa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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.130.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
|
|
@@ -9,19 +9,20 @@
|
|
|
9
9
|
"@effect/platform-browser": "^0.29.8",
|
|
10
10
|
"@effect/schema": "^0.62.6",
|
|
11
11
|
"@formatjs/intl": "^2.10.0",
|
|
12
|
+
"@tanstack/vue-query": "^5.20.5",
|
|
12
13
|
"effect": "^2.3.5",
|
|
13
14
|
"query-string": "^8.2.0",
|
|
14
15
|
"swrv": "^1.0.4",
|
|
15
16
|
"vue": "^3.4.19",
|
|
16
17
|
"@effect-app/core": "0.136.0",
|
|
17
|
-
"effect-app": "0.158.4",
|
|
18
18
|
"@effect-app/fluent-extensions": "0.130.3",
|
|
19
|
+
"@effect-app/vue": "0.130.0",
|
|
19
20
|
"@effect-app/schema": "0.189.0",
|
|
20
|
-
"
|
|
21
|
+
"effect-app": "0.158.5"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
|
-
"@rollup/pluginutils": "^5.1.0",
|
|
24
24
|
"@babel/cli": "^7.23.9",
|
|
25
|
+
"@rollup/pluginutils": "^5.1.0",
|
|
25
26
|
"@types/node": "~20.11.17",
|
|
26
27
|
"json5": "^2.2.3",
|
|
27
28
|
"ts-node": "^10.9.2",
|
|
@@ -88,6 +89,16 @@
|
|
|
88
89
|
"default": "./_cjs/internal.cjs"
|
|
89
90
|
}
|
|
90
91
|
},
|
|
92
|
+
"./query": {
|
|
93
|
+
"import": {
|
|
94
|
+
"types": "./dist/query.d.ts",
|
|
95
|
+
"default": "./dist/query.js"
|
|
96
|
+
},
|
|
97
|
+
"require": {
|
|
98
|
+
"types": "./dist/query.d.ts",
|
|
99
|
+
"default": "./_cjs/query.cjs"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
91
102
|
"./routeParams": {
|
|
92
103
|
"import": {
|
|
93
104
|
"types": "./dist/routeParams.d.ts",
|