@effect-app/vue 1.1.0 → 1.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExH,OAAO,EAAS,MAAM,EAA2B,MAAM,YAAY,CAAA;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAGnD,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,SAAS,CAAC;CAAG;AAEzG,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3E,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,EACD,OAAO,CAAC,EAAE,0BAA0B,GAAG,SAAS,GAC/C,SAAS;IACV,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1B,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChF,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;CAC7B,CAAA;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EACpC,IAAI,EAAE;IACJ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzF,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,EACD,GAAG,EAAE,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,0BAA0B,GAAG,SAAS,GAC/C,SAAS;IACV,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1B,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChF,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;CAC7B,CAAA;AAsCD,eAAO,MAAM,aAAa,eAEpB;IACA,OAAO,EAAE,CACP,GAAG,EAAE,CAAC,KACH,OACH,cAAc,CAAC,CAAC,EAChB,CAAC,EACD,SAAS,GAAG,WAAW,MAAM,CAAC,OAAO,CACtC,CAAA;IACD,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb,GACC;IACA,OAAO,EAAE,OACP,cAAc,CAAC,CAAC,EAChB,CAAC,EACD,SAAS,GAAG,WAAW,MAAM,CAAC,OAAO,CACtC,CAAA;IACD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,QACG,CAAC,GAAG,YAAY,CAAC,CAAC,YACf,0BAA0B,iNA2DpC,CAAA"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
package/dist/query.js CHANGED
@@ -1,8 +1,12 @@
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 * as Result from "@effect-rx/rx/Result";
1
6
  import { useQuery } from "@tanstack/vue-query";
2
- import { Cause, Effect, Either, Option, Runtime } from "effect-app";
3
- import { Done, Initial, isSuccess, Loading, Refreshing } from "effect-app/client";
7
+ import { Effect, Option, Runtime } from "effect-app";
4
8
  import { computed, ref } from "vue";
5
- import { makeQueryKey, run } from "./internal.js";
9
+ import { makeQueryKey, reportRuntimeError, run } from "./internal.js";
6
10
  export function useSafeQuery(self,
7
11
  /*
8
12
  q:
@@ -49,59 +53,38 @@ export const useSafeQuery_ = (q, arg, options = {} // TODO
49
53
  }
50
54
  : ref(arg);
51
55
  const queryKey = makeQueryKey(q.name);
52
- const r = useQuery(Effect.isEffect(q.handler)
56
+ const handler = q.handler;
57
+ const r = useQuery(Effect.isEffect(handler)
53
58
  ? {
54
59
  ...options,
55
60
  queryKey,
56
- queryFn: ({ signal }) => run
57
- .value(Effect.map(q.handler, (_) => _.body), { signal })
58
- .catch((_) => {
59
- if (!Runtime.isFiberFailure(_))
60
- throw _;
61
- const cause = _[Runtime.FiberFailureCauseId];
62
- throw Cause.squash(cause);
63
- })
61
+ queryFn: ({ signal }) => run.value(Effect
62
+ .map(handler, (_) => _.body)
63
+ .pipe(Effect.tapDefect(reportRuntimeError)), { signal })
64
64
  }
65
65
  : {
66
66
  ...options,
67
67
  queryKey: [...queryKey, req],
68
68
  queryFn: ({ signal }) => run
69
- .value(Effect.map(q.handler(req.value), (_) => _.body), { signal })
70
- .catch((_) => {
71
- if (!Runtime.isFiberFailure(_))
72
- throw _;
73
- const cause = _[Runtime.FiberFailureCauseId];
74
- throw Cause.squash(cause);
75
- })
69
+ .value(Effect
70
+ .map(handler(req.value), (_) => _.body)
71
+ .pipe(Effect.tapDefect(reportRuntimeError)), { signal })
76
72
  });
77
73
  const result = computed(() => swrToQuery({
78
- error: r.error.value,
74
+ error: r.error.value ?? undefined,
79
75
  data: r.data.value,
80
76
  isValidating: r.isFetching.value
81
77
  }));
82
- const latestSuccess = computed(() => {
83
- const value = result.value;
84
- return isSuccess(value)
85
- ? Either.isRight(value.current)
86
- ? value.current.right
87
- : Option.isSome(value.previous)
88
- ? value.previous.value
89
- : undefined
90
- : undefined;
91
- });
78
+ const latestSuccess = computed(() => Option.getOrUndefined(Result.value(result.value)));
92
79
  return [result, latestSuccess, r.refetch, r];
93
80
  };
94
81
  function swrToQuery(r) {
95
82
  if (r.error) {
96
- return r.isValidating
97
- ? Refreshing.fail(r.error, r.data)
98
- : Done.fail(r.error, r.data);
83
+ return Result.failureWithPrevious(r.error[Runtime.FiberFailureCauseId], r.data === undefined ? Option.none() : Option.some(Result.success(r.data)), r.isValidating);
99
84
  }
100
85
  if (r.data !== undefined) {
101
- return r.isValidating
102
- ? Refreshing.succeed(r.data)
103
- : Done.succeed(r.data);
86
+ return Result.success(r.data, r.isValidating);
104
87
  }
105
- return r.isValidating ? new Loading() : new Initial();
88
+ return Result.initial(r.isValidating);
106
89
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxlQUFlLENBQUE7QUErQmpELE1BQU0sVUFBVSxZQUFZLENBQzFCLElBQVM7QUFDVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXNCRTtBQUNGLFlBQWtCLEVBQ2xCLE9BQWE7SUFFYixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNoRCxDQUFDO0FBRUQsZ0JBQWdCO0FBQ2hCLHNSQUFzUjtBQUN0UiwyUkFBMlI7QUFDM1IsdVJBQXVSO0FBQ3ZSLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUMzQixDQW9CRyxFQUNILEdBQXdCLEVBQ3hCLFVBQXNDLEVBQUUsQ0FBQyxPQUFPO0VBQ2hELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUE7SUFDZixNQUFNLEdBQUcsR0FBaUIsQ0FBQyxHQUFHO1FBQzVCLENBQUMsQ0FBQyxTQUFTO1FB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
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHNEQUFzRDtBQUN0RCx3REFBd0Q7QUFDeEQsNERBQTREO0FBQzVELE9BQU8sS0FBSyxNQUFNLE1BQU0sc0JBQXNCLENBQUE7QUFROUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUdwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUVuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQXdDckUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsSUFBUztBQUNUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBc0JFO0FBQ0YsWUFBa0IsRUFDbEIsT0FBYTtJQUViLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUM7UUFDOUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ2hELENBQUM7QUFNRCxnQkFBZ0I7QUFDaEIsc1JBQXNSO0FBQ3RSLDJSQUEyUjtBQUMzUix1UkFBdVI7QUFDdlIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQzNCLENBb0JHLEVBQ0gsR0FBd0IsRUFDeEIsVUFBd0UsRUFBRSxDQUFDLE9BQU87RUFDbEYsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNmLE1BQU0sR0FBRyxHQUFpQixDQUFDLEdBQUc7UUFDNUIsQ0FBQyxDQUFDLFNBQVM7UUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
@@ -9,13 +9,15 @@
9
9
  "@tanstack/vue-query": "^5.32.0",
10
10
  "query-string": "^9.0.0",
11
11
  "@effect-app/core": "1.0.6",
12
- "effect-app": "1.0.12",
13
- "@effect-app/vue": "1.1.0",
14
- "@effect-app/schema": "1.0.10"
12
+ "@effect-app/schema": "1.0.10",
13
+ "@effect-app/vue": "1.2.0",
14
+ "effect-app": "1.1.0"
15
15
  },
16
16
  "peerDependencies": {
17
17
  "@effect/platform": "^0.50.7",
18
18
  "@effect/platform-browser": "^0.33.7",
19
+ "@effect-rx/rx": "^0.29.1",
20
+ "@effect-rx/rx-vue": "^0.8.1",
19
21
  "@effect/schema": "^0.66.10",
20
22
  "@sentry/browser": "^7.112.2",
21
23
  "effect": "^3.0.7",
package/src/hooks.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
 
3
- export { isFailed, isInitializing, isSuccess } from "effect-app/client"
4
3
  export * from "./mutate.js"
5
4
  export * from "./query.js"
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { isFailed, isInitializing, isSuccess } from "effect-app/client"
1
+ export * as Result from "@effect-rx/rx/Result"
2
2
  export * from "./hooks.js"
3
3
  export * from "./runtime.js"
package/src/internal.ts CHANGED
@@ -2,6 +2,7 @@ import type * as HttpClient from "@effect/platform/Http/Client"
2
2
  import type { Effect } from "effect-app"
3
3
  import { pipe, Runtime } from "effect-app"
4
4
  import type { ApiConfig } from "effect-app/client"
5
+ import { reportError } from "./errorReporter.js"
5
6
 
6
7
  export const run = {
7
8
  value<E, A>(
@@ -11,7 +12,7 @@ export const run = {
11
12
  throw new Error("Runtime not initialized, please run `initRuntime` first")
12
13
  }
13
14
  }
14
- // const reportRuntimeError = reportError("Runtime")
15
+ export const reportRuntimeError = reportError("Runtime")
15
16
  export function initRuntime<A>(rt: Runtime.Runtime<A | ApiConfig | HttpClient.Client.Default>) {
16
17
  const runPromise = Runtime.runPromise(rt)
17
18
  run.value = function<E, A>(
package/src/mutate.ts CHANGED
@@ -3,40 +3,32 @@ import { tuple } from "@effect-app/core/Function"
3
3
  import type * as HttpClient from "@effect/platform/Http/Client"
4
4
  import { useQueryClient } from "@tanstack/vue-query"
5
5
  import { Cause, Effect, Exit, Option } from "effect-app"
6
- import { hasValue, Initial, isInitializing, Loading, queryResult, Refreshing } from "effect-app/client"
7
- import type { ApiConfig, FetchResponse, QueryResult } from "effect-app/client"
6
+ import type { ApiConfig, FetchResponse } from "effect-app/client"
8
7
  import { dropUndefinedT } from "effect-app/utils"
9
8
  import { InterruptedException } from "effect/Cause"
10
9
  import * as Either from "effect/Either"
11
10
  import type { ComputedRef, Ref } from "vue"
12
11
  import { computed, ref, shallowRef } from "vue"
13
- import { makeQueryKey, run } from "./internal.js"
12
+ import { makeQueryKey, reportRuntimeError, run } from "./internal.js"
13
+
14
+ import * as Result from "@effect-rx/rx/Result"
14
15
 
15
16
  export type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T)
16
- export function make<R, E, A>(self: Effect<FetchResponse<A>, E, R>) {
17
- const result = shallowRef(new Initial() as QueryResult<E, A>)
17
+ export function make<A, E, R>(self: Effect<FetchResponse<A>, E, R>) {
18
+ const result = shallowRef(Result.initial() as Result.Result<A, E>)
18
19
 
19
20
  const execute = Effect
20
21
  .sync(() => {
21
- result.value = isInitializing(result.value)
22
- ? new Loading()
23
- : new Refreshing(result.value)
22
+ result.value = Result.waiting(result.value)
24
23
  })
25
24
  .pipe(
26
- Effect.andThen(queryResult(Effect.map(self, (_) => _.body))),
25
+ Effect.andThen(Effect.map(self, (_) => _.body)),
26
+ Effect.exit,
27
+ Effect.andThen(Result.fromExit),
27
28
  Effect.flatMap((r) => Effect.sync(() => result.value = r))
28
29
  )
29
30
 
30
- const latestSuccess = computed(() => {
31
- const value = result.value
32
- return hasValue(value)
33
- ? Either.isRight(value.current)
34
- ? value.current.right
35
- : Option.isSome(value.previous)
36
- ? value.previous.value
37
- : undefined
38
- : undefined
39
- })
31
+ const latestSuccess = computed(() => Option.getOrUndefined(Result.value(result.value)))
40
32
 
41
33
  return tuple(result, latestSuccess, execute)
42
34
  }
@@ -59,7 +51,7 @@ export interface MutationError<E> {
59
51
  readonly error: E
60
52
  }
61
53
 
62
- export type MutationResult<E, A> = MutationInitial | MutationLoading | MutationSuccess<A> | MutationError<E>
54
+ export type MutationResult<A, E> = MutationInitial | MutationLoading | MutationSuccess<A> | MutationError<E>
63
55
 
64
56
  /**
65
57
  * Pass a function that returns an Effect, e.g from a client action, or an Effect
@@ -67,14 +59,14 @@ export type MutationResult<E, A> = MutationInitial | MutationLoading | MutationS
67
59
  */
68
60
  export const useSafeMutation: {
69
61
  <I, E, A>(self: { handler: (i: I) => Effect<A, E, ApiConfig | HttpClient.Client.Default>; name: string }): readonly [
70
- Readonly<Ref<MutationResult<E, A>>>,
62
+ Readonly<Ref<MutationResult<A, E>>>,
71
63
  (
72
64
  i: I,
73
65
  signal?: AbortSignal
74
66
  ) => Promise<Either.Either<A, E>>
75
67
  ]
76
68
  <E, A>(self: { handler: Effect<A, E, ApiConfig | HttpClient.Client.Default>; name: string }): readonly [
77
- Readonly<Ref<MutationResult<E, A>>>,
69
+ Readonly<Ref<MutationResult<A, E>>>,
78
70
  (
79
71
  signal?: AbortSignal
80
72
  ) => Promise<Either.Either<A, E>>
@@ -88,7 +80,7 @@ export const useSafeMutation: {
88
80
  }
89
81
  ) => {
90
82
  const queryClient = useQueryClient()
91
- const state: Ref<MutationResult<E, A>> = ref<MutationResult<E, A>>({ _tag: "Initial" }) as any
83
+ const state: Ref<MutationResult<A, E>> = ref<MutationResult<A, E>>({ _tag: "Initial" }) as any
92
84
 
93
85
  function handleExit(exit: Exit.Exit<A, E>): Effect<Either.Either<A, E>, never, never> {
94
86
  return Effect.sync(() => {
@@ -148,6 +140,7 @@ export const useSafeMutation: {
148
140
  // }))
149
141
  })
150
142
  ),
143
+ Effect.tapDefect(reportRuntimeError),
151
144
  Effect.exit,
152
145
  Effect.flatMap(handleExit)
153
146
  ),
package/src/query.ts CHANGED
@@ -2,17 +2,33 @@
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
- import type { QueryObserverOptions, QueryObserverResult, RefetchOptions, UseQueryReturnType } from "@tanstack/vue-query"
5
+ import * as Result from "@effect-rx/rx/Result"
6
+ import type {
7
+ QueryKey,
8
+ QueryObserverOptions,
9
+ QueryObserverResult,
10
+ RefetchOptions,
11
+ UseQueryReturnType
12
+ } from "@tanstack/vue-query"
6
13
  import { useQuery } from "@tanstack/vue-query"
7
- import { Cause, Effect, Either, Option, Runtime } from "effect-app"
8
- import { Done, Initial, isSuccess, Loading, Refreshing } from "effect-app/client"
9
- import type { ApiConfig, FetchResponse, QueryResult } from "effect-app/client"
14
+ import type { Cause } from "effect-app"
15
+ import { Effect, Option, Runtime } from "effect-app"
16
+ import type { ApiConfig, FetchResponse } from "effect-app/client"
10
17
  import type { HttpClient } from "effect-app/http"
11
18
  import { computed, ref } from "vue"
12
19
  import type { ComputedRef, WatchSource } from "vue"
13
- import { makeQueryKey, run } from "./internal.js"
20
+ import { makeQueryKey, reportRuntimeError, run } from "./internal.js"
14
21
 
15
- export interface QueryObserverOptionsCustom extends Omit<QueryObserverOptions, "queryKey" | "queryFn"> {}
22
+ export interface QueryObserverOptionsCustom<
23
+ TQueryFnData = unknown,
24
+ TError = Error,
25
+ TData = TQueryFnData,
26
+ TQueryData = TQueryFnData,
27
+ TQueryKey extends QueryKey = QueryKey,
28
+ TPageParam = never
29
+ > extends
30
+ Omit<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, "queryKey" | "queryFn">
31
+ {}
16
32
 
17
33
  export function useSafeQuery<E, A>(
18
34
  self: {
@@ -22,7 +38,7 @@ export function useSafeQuery<E, A>(
22
38
  },
23
39
  options?: QueryObserverOptionsCustom | undefined // TODO
24
40
  ): readonly [
25
- ComputedRef<QueryResult<E, A>>,
41
+ ComputedRef<Result.Result<A, E>>,
26
42
  ComputedRef<A | undefined>,
27
43
  (options?: RefetchOptions | undefined) => Promise<QueryObserverResult<any, any>>,
28
44
  UseQueryReturnType<any, any>
@@ -36,7 +52,7 @@ export function useSafeQuery<Arg, E, A>(
36
52
  arg: Arg | WatchSource<Arg>,
37
53
  options?: QueryObserverOptionsCustom | undefined // TODO
38
54
  ): readonly [
39
- ComputedRef<QueryResult<E, A>>,
55
+ ComputedRef<Result.Result<A, E>>,
40
56
  ComputedRef<A | undefined>,
41
57
  (options?: RefetchOptions | undefined) => Promise<QueryObserverResult<any, any>>,
42
58
  UseQueryReturnType<any, any>
@@ -74,6 +90,10 @@ export function useSafeQuery(
74
90
  : useSafeQuery_(self, argOrOptions, options)
75
91
  }
76
92
 
93
+ export interface KnownFiberFailure<E> extends Runtime.FiberFailure {
94
+ readonly [Runtime.FiberFailureCauseId]: Cause.Cause<E>
95
+ }
96
+
77
97
  // TODO: options
78
98
  // declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryReturnType<TData, TError>;
79
99
  // declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryDefinedReturnType<TData, TError>;
@@ -81,7 +101,7 @@ export function useSafeQuery(
81
101
  export const useSafeQuery_ = <I, A, E>(
82
102
  q:
83
103
  | {
84
- handler: (
104
+ readonly handler: (
85
105
  req: I
86
106
  ) => Effect<
87
107
  FetchResponse<A>,
@@ -92,7 +112,7 @@ export const useSafeQuery_ = <I, A, E>(
92
112
  name: string
93
113
  }
94
114
  | {
95
- handler: Effect<
115
+ readonly handler: Effect<
96
116
  FetchResponse<A>,
97
117
  E,
98
118
  ApiConfig | HttpClient.Client.Default
@@ -101,7 +121,7 @@ export const useSafeQuery_ = <I, A, E>(
101
121
  name: string
102
122
  },
103
123
  arg?: I | WatchSource<I>,
104
- options: QueryObserverOptionsCustom = {} // TODO
124
+ options: QueryObserverOptionsCustom<unknown, KnownFiberFailure<E>, A> = {} // TODO
105
125
  ) => {
106
126
  const arr = arg
107
127
  const req: { value: I } = !arg
@@ -114,69 +134,60 @@ export const useSafeQuery_ = <I, A, E>(
114
134
  } as any)
115
135
  : ref(arg)
116
136
  const queryKey = makeQueryKey(q.name)
117
- const r = useQuery(
118
- Effect.isEffect(q.handler)
137
+ const handler = q.handler
138
+ const r = useQuery<unknown, KnownFiberFailure<E>, A>(
139
+ Effect.isEffect(handler)
119
140
  ? {
120
141
  ...options,
121
142
  queryKey,
122
143
  queryFn: ({ signal }) =>
123
- run
124
- .value(Effect.map(q.handler as any, (_) => (_ as any).body), { signal })
125
- .catch((_) => {
126
- if (!Runtime.isFiberFailure(_)) throw _
127
- const cause = _[Runtime.FiberFailureCauseId]
128
- throw Cause.squash(cause)
129
- })
144
+ run.value(
145
+ Effect
146
+ .map(handler, (_) => _.body)
147
+ .pipe(Effect.tapDefect(reportRuntimeError)),
148
+ { signal }
149
+ )
130
150
  }
131
151
  : {
132
152
  ...options,
133
153
  queryKey: [...queryKey, req],
134
154
  queryFn: ({ signal }) =>
135
155
  run
136
- .value(Effect.map((q.handler as any)(req.value), (_) => (_ as any).body), { signal })
137
- .catch((_) => {
138
- if (!Runtime.isFiberFailure(_)) throw _
139
- const cause = _[Runtime.FiberFailureCauseId]
140
- throw Cause.squash(cause)
141
- })
156
+ .value(
157
+ Effect
158
+ .map(handler(req.value), (_) => _.body)
159
+ .pipe(Effect.tapDefect(reportRuntimeError)),
160
+ { signal }
161
+ )
142
162
  }
143
163
  )
144
164
 
145
165
  const result = computed(() =>
146
166
  swrToQuery({
147
- error: r.error.value,
167
+ error: r.error.value ?? undefined,
148
168
  data: r.data.value,
149
169
  isValidating: r.isFetching.value
150
170
  })
151
171
  )
152
- const latestSuccess = computed(() => {
153
- const value = result.value
154
- return isSuccess(value)
155
- ? Either.isRight(value.current)
156
- ? value.current.right
157
- : Option.isSome(value.previous)
158
- ? value.previous.value
159
- : undefined
160
- : undefined
161
- })
172
+ const latestSuccess = computed(() => Option.getOrUndefined(Result.value(result.value)))
162
173
  return [result, latestSuccess, r.refetch, r] as const
163
174
  }
164
175
 
165
176
  function swrToQuery<E, A>(r: {
166
- error: E | undefined
177
+ error: KnownFiberFailure<E> | undefined
167
178
  data: A | undefined
168
179
  isValidating: boolean
169
- }): QueryResult<E, A> {
180
+ }): Result.Result<A, E> {
170
181
  if (r.error) {
171
- return r.isValidating
172
- ? Refreshing.fail<E, A>(r.error, r.data)
173
- : Done.fail<E, A>(r.error, r.data)
182
+ return Result.failureWithPrevious(
183
+ r.error[Runtime.FiberFailureCauseId],
184
+ r.data === undefined ? Option.none() : Option.some(Result.success(r.data)),
185
+ r.isValidating
186
+ )
174
187
  }
175
188
  if (r.data !== undefined) {
176
- return r.isValidating
177
- ? Refreshing.succeed<A, E>(r.data)
178
- : Done.succeed<A, E>(r.data)
189
+ return Result.success<A, E>(r.data, r.isValidating)
179
190
  }
180
191
 
181
- return r.isValidating ? new Loading() : new Initial()
192
+ return Result.initial(r.isValidating)
182
193
  }
@@ -0,0 +1,37 @@
1
+ // packages/vue/vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/node_modules/vite/dist/node/index.js";
3
+
4
+ // vite.config.base.ts
5
+ import path from "path";
6
+ import fs from "fs";
7
+ var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
8
+ function makeConfig(dirName) {
9
+ const prefix = path.resolve(__vite_injected_original_dirname, "packages");
10
+ const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
11
+ const cfg = {
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ //plugins: [autoImport],
14
+ test: {
15
+ include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
16
+ reporters: "verbose",
17
+ globals: true
18
+ },
19
+ resolve: {
20
+ alias: packages.reduce((acc, cur) => {
21
+ acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
22
+ return acc;
23
+ }, {})
24
+ // "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
25
+ }
26
+ };
27
+ console.log(cfg);
28
+ return cfg;
29
+ }
30
+
31
+ // packages/vue/vitest.config.ts
32
+ var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/vue";
33
+ var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
34
+ export {
35
+ vitest_config_default as default
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHMiLCAidml0ZS5jb25maWcuYmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3BhY2thZ2VzL3Z1ZS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgbWFrZUNvbmZpZyBmcm9tIFwiLi4vLi4vdml0ZS5jb25maWcuYmFzZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyhtYWtlQ29uZmlnKF9fZGlybmFtZSkpXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3ZpdGUuY29uZmlnLmJhc2UudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzXCJcbmltcG9ydCBBdXRvSW1wb3J0IGZyb20gXCJ1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlXCJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlc3QvY29uZmlnXCJcblxuLy8gY29uc3QgYXV0b0ltcG9ydCA9IEF1dG9JbXBvcnQoe1xuLy8gICBkdHM6IFwiLi90ZXN0L2F1dG8taW1wb3J0cy5kLnRzXCIsXG4vLyAgIC8vIGluY2x1ZGU6IFtcbi8vICAgLy8gICAvXFwudGVzdFxcLlt0al1zeD8kLyAvLyAudHMsIC50c3gsIC5qcywgLmpzeFxuLy8gICAvLyBdLFxuLy8gICBpbXBvcnRzOiBbXG4vLyAgICAgXCJ2aXRlc3RcIlxuLy8gICBdXG4vLyB9KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYWtlQ29uZmlnKGRpck5hbWU/OiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCJwYWNrYWdlc1wiKVxuICBjb25zdCBwYWNrYWdlcyA9IGZzLnJlYWRkaXJTeW5jKHByZWZpeCkubWFwKGYgPT4gcHJlZml4ICsgXCIvXCIgKyBmKS5maWx0ZXIoZiA9PiBmcy5sc3RhdFN5bmMoZikuaXNEaXJlY3RvcnkoKSApXG4gIGNvbnN0IGNmZyA9IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIC8vcGx1Z2luczogW2F1dG9JbXBvcnRdLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6ICBbXCIuL3Rlc3QvKiovKi50ZXN0LntqcyxtanMsY2pzLHRzLG10cyxjdHMsanN4LHRzeH1cIl0sXG4gICAgICByZXBvcnRlcnM6IFwidmVyYm9zZVwiLFxuICAgICAgZ2xvYmFsczogdHJ1ZVxuICAgIH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHBhY2thZ2VzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHsgLy8gd29ya2Fyb3VuZCBmb3IgL1ByZWx1ZGUgaXNzdWVcbiAgICAgIGFjY1tKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjdXIgKyBcIi9wYWNrYWdlLmpzb25cIiwgXCJ1dGYtOFwiKSkubmFtZV0gPSBwYXRoLnJlc29sdmUoY3VyLCBjdXIuZW5kc1dpdGgoXCJjb3JlXCIpID8gXCJkaXN0XCIgOiBcInNyY1wiKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHsgfSkgLy8gXCJAZWZmZWN0LWFwcC9jb3JlL1ByZWx1ZGVcIjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCJwYWNrYWdlcy9jb3JlL3NyYy9QcmVsdWRlLmNvZGUudHNcIilcbiAgfVxuICB9XG4gIGNvbnNvbGUubG9nKGNmZylcbiAgcmV0dXJuIGNmZ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVMsb0JBQW9COzs7QUNBN0IsT0FBTyxVQUFVO0FBQ2pCLE9BQU8sUUFBUTtBQUZmLElBQU0sbUNBQW1DO0FBZ0IxQixTQUFSLFdBQTRCLFNBQWtCO0FBQ25ELFFBQU0sU0FBUyxLQUFLLFFBQVEsa0NBQVcsVUFBVTtBQUNqRCxRQUFNLFdBQVcsR0FBRyxZQUFZLE1BQU0sRUFBRSxJQUFJLE9BQUssU0FBUyxNQUFNLENBQUMsRUFBRSxPQUFPLE9BQUssR0FBRyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUU7QUFDN0csUUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBLElBR1YsTUFBTTtBQUFBLE1BQ0osU0FBVSxDQUFDLGtEQUFrRDtBQUFBLE1BQzdELFdBQVc7QUFBQSxNQUNYLFNBQVM7QUFBQSxJQUNYO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxPQUFPLFNBQVMsT0FBTyxDQUFDLEtBQUssUUFBUTtBQUNyQyxZQUFJLEtBQUssTUFBTSxHQUFHLGFBQWEsTUFBTSxpQkFBaUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLEtBQUssUUFBUSxLQUFLLElBQUksU0FBUyxNQUFNLElBQUksU0FBUyxLQUFLO0FBQy9ILGVBQU87QUFBQSxNQUNULEdBQUcsQ0FBRSxDQUFDO0FBQUE7QUFBQSxJQUNSO0FBQUEsRUFDQTtBQUNBLFVBQVEsSUFBSSxHQUFHO0FBQ2YsU0FBTztBQUNUOzs7QURwQ0EsSUFBTUEsb0NBQW1DO0FBSXpDLElBQU8sd0JBQVEsYUFBYSxXQUFXQyxpQ0FBUyxDQUFDOyIsCiAgIm5hbWVzIjogWyJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSJdCn0K
@@ -0,0 +1,37 @@
1
+ // packages/vue/vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/node_modules/vite/dist/node/index.js";
3
+
4
+ // vite.config.base.ts
5
+ import path from "path";
6
+ import fs from "fs";
7
+ var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
8
+ function makeConfig(dirName) {
9
+ const prefix = path.resolve(__vite_injected_original_dirname, "packages");
10
+ const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
11
+ const cfg = {
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ //plugins: [autoImport],
14
+ test: {
15
+ include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
16
+ reporters: "verbose",
17
+ globals: true
18
+ },
19
+ resolve: {
20
+ alias: packages.reduce((acc, cur) => {
21
+ acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
22
+ return acc;
23
+ }, {})
24
+ // "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
25
+ }
26
+ };
27
+ console.log(cfg);
28
+ return cfg;
29
+ }
30
+
31
+ // packages/vue/vitest.config.ts
32
+ var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/vue";
33
+ var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
34
+ export {
35
+ vitest_config_default as default
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHMiLCAidml0ZS5jb25maWcuYmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3BhY2thZ2VzL3Z1ZS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgbWFrZUNvbmZpZyBmcm9tIFwiLi4vLi4vdml0ZS5jb25maWcuYmFzZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyhtYWtlQ29uZmlnKF9fZGlybmFtZSkpXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3ZpdGUuY29uZmlnLmJhc2UudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzXCJcbmltcG9ydCBBdXRvSW1wb3J0IGZyb20gXCJ1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlXCJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlc3QvY29uZmlnXCJcblxuLy8gY29uc3QgYXV0b0ltcG9ydCA9IEF1dG9JbXBvcnQoe1xuLy8gICBkdHM6IFwiLi90ZXN0L2F1dG8taW1wb3J0cy5kLnRzXCIsXG4vLyAgIC8vIGluY2x1ZGU6IFtcbi8vICAgLy8gICAvXFwudGVzdFxcLlt0al1zeD8kLyAvLyAudHMsIC50c3gsIC5qcywgLmpzeFxuLy8gICAvLyBdLFxuLy8gICBpbXBvcnRzOiBbXG4vLyAgICAgXCJ2aXRlc3RcIlxuLy8gICBdXG4vLyB9KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYWtlQ29uZmlnKGRpck5hbWU/OiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCJwYWNrYWdlc1wiKVxuICBjb25zdCBwYWNrYWdlcyA9IGZzLnJlYWRkaXJTeW5jKHByZWZpeCkubWFwKGYgPT4gcHJlZml4ICsgXCIvXCIgKyBmKS5maWx0ZXIoZiA9PiBmcy5sc3RhdFN5bmMoZikuaXNEaXJlY3RvcnkoKSApXG4gIGNvbnN0IGNmZyA9IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIC8vcGx1Z2luczogW2F1dG9JbXBvcnRdLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6ICBbXCIuL3Rlc3QvKiovKi50ZXN0LntqcyxtanMsY2pzLHRzLG10cyxjdHMsanN4LHRzeH1cIl0sXG4gICAgICByZXBvcnRlcnM6IFwidmVyYm9zZVwiLFxuICAgICAgZ2xvYmFsczogdHJ1ZVxuICAgIH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHBhY2thZ2VzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHsgLy8gd29ya2Fyb3VuZCBmb3IgL1ByZWx1ZGUgaXNzdWVcbiAgICAgIGFjY1tKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjdXIgKyBcIi9wYWNrYWdlLmpzb25cIiwgXCJ1dGYtOFwiKSkubmFtZV0gPSBwYXRoLnJlc29sdmUoY3VyLCBjdXIuZW5kc1dpdGgoXCJjb3JlXCIpID8gXCJkaXN0XCIgOiBcInNyY1wiKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHsgfSkgLy8gXCJAZWZmZWN0LWFwcC9jb3JlL1ByZWx1ZGVcIjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCJwYWNrYWdlcy9jb3JlL3NyYy9QcmVsdWRlLmNvZGUudHNcIilcbiAgfVxuICB9XG4gIGNvbnNvbGUubG9nKGNmZylcbiAgcmV0dXJuIGNmZ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVMsb0JBQW9COzs7QUNBN0IsT0FBTyxVQUFVO0FBQ2pCLE9BQU8sUUFBUTtBQUZmLElBQU0sbUNBQW1DO0FBZ0IxQixTQUFSLFdBQTRCLFNBQWtCO0FBQ25ELFFBQU0sU0FBUyxLQUFLLFFBQVEsa0NBQVcsVUFBVTtBQUNqRCxRQUFNLFdBQVcsR0FBRyxZQUFZLE1BQU0sRUFBRSxJQUFJLE9BQUssU0FBUyxNQUFNLENBQUMsRUFBRSxPQUFPLE9BQUssR0FBRyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUU7QUFDN0csUUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBLElBR1YsTUFBTTtBQUFBLE1BQ0osU0FBVSxDQUFDLGtEQUFrRDtBQUFBLE1BQzdELFdBQVc7QUFBQSxNQUNYLFNBQVM7QUFBQSxJQUNYO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxPQUFPLFNBQVMsT0FBTyxDQUFDLEtBQUssUUFBUTtBQUNyQyxZQUFJLEtBQUssTUFBTSxHQUFHLGFBQWEsTUFBTSxpQkFBaUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLEtBQUssUUFBUSxLQUFLLElBQUksU0FBUyxNQUFNLElBQUksU0FBUyxLQUFLO0FBQy9ILGVBQU87QUFBQSxNQUNULEdBQUcsQ0FBRSxDQUFDO0FBQUE7QUFBQSxJQUNSO0FBQUEsRUFDQTtBQUNBLFVBQVEsSUFBSSxHQUFHO0FBQ2YsU0FBTztBQUNUOzs7QURwQ0EsSUFBTUEsb0NBQW1DO0FBSXpDLElBQU8sd0JBQVEsYUFBYSxXQUFXQyxpQ0FBUyxDQUFDOyIsCiAgIm5hbWVzIjogWyJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSJdCn0K
@@ -0,0 +1,37 @@
1
+ // packages/vue/vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/node_modules/vite/dist/node/index.js";
3
+
4
+ // vite.config.base.ts
5
+ import path from "path";
6
+ import fs from "fs";
7
+ var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
8
+ function makeConfig(dirName) {
9
+ const prefix = path.resolve(__vite_injected_original_dirname, "packages");
10
+ const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
11
+ const cfg = {
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ //plugins: [autoImport],
14
+ test: {
15
+ include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
16
+ reporters: "verbose",
17
+ globals: true
18
+ },
19
+ resolve: {
20
+ alias: packages.reduce((acc, cur) => {
21
+ acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
22
+ return acc;
23
+ }, {})
24
+ // "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
25
+ }
26
+ };
27
+ console.log(cfg);
28
+ return cfg;
29
+ }
30
+
31
+ // packages/vue/vitest.config.ts
32
+ var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/vue";
33
+ var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
34
+ export {
35
+ vitest_config_default as default
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHMiLCAidml0ZS5jb25maWcuYmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3BhY2thZ2VzL3Z1ZS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgbWFrZUNvbmZpZyBmcm9tIFwiLi4vLi4vdml0ZS5jb25maWcuYmFzZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyhtYWtlQ29uZmlnKF9fZGlybmFtZSkpXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3ZpdGUuY29uZmlnLmJhc2UudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzXCJcbmltcG9ydCBBdXRvSW1wb3J0IGZyb20gXCJ1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlXCJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlc3QvY29uZmlnXCJcblxuLy8gY29uc3QgYXV0b0ltcG9ydCA9IEF1dG9JbXBvcnQoe1xuLy8gICBkdHM6IFwiLi90ZXN0L2F1dG8taW1wb3J0cy5kLnRzXCIsXG4vLyAgIC8vIGluY2x1ZGU6IFtcbi8vICAgLy8gICAvXFwudGVzdFxcLlt0al1zeD8kLyAvLyAudHMsIC50c3gsIC5qcywgLmpzeFxuLy8gICAvLyBdLFxuLy8gICBpbXBvcnRzOiBbXG4vLyAgICAgXCJ2aXRlc3RcIlxuLy8gICBdXG4vLyB9KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYWtlQ29uZmlnKGRpck5hbWU/OiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCJwYWNrYWdlc1wiKVxuICBjb25zdCBwYWNrYWdlcyA9IGZzLnJlYWRkaXJTeW5jKHByZWZpeCkubWFwKGYgPT4gcHJlZml4ICsgXCIvXCIgKyBmKS5maWx0ZXIoZiA9PiBmcy5sc3RhdFN5bmMoZikuaXNEaXJlY3RvcnkoKSApXG4gIGNvbnN0IGNmZyA9IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIC8vcGx1Z2luczogW2F1dG9JbXBvcnRdLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6ICBbXCIuL3Rlc3QvKiovKi50ZXN0LntqcyxtanMsY2pzLHRzLG10cyxjdHMsanN4LHRzeH1cIl0sXG4gICAgICByZXBvcnRlcnM6IFwidmVyYm9zZVwiLFxuICAgICAgZ2xvYmFsczogdHJ1ZVxuICAgIH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHBhY2thZ2VzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHsgLy8gd29ya2Fyb3VuZCBmb3IgL1ByZWx1ZGUgaXNzdWVcbiAgICAgIGFjY1tKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjdXIgKyBcIi9wYWNrYWdlLmpzb25cIiwgXCJ1dGYtOFwiKSkubmFtZV0gPSBwYXRoLnJlc29sdmUoY3VyLCBjdXIuZW5kc1dpdGgoXCJjb3JlXCIpID8gXCJkaXN0XCIgOiBcInNyY1wiKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHsgfSkgLy8gXCJAZWZmZWN0LWFwcC9jb3JlL1ByZWx1ZGVcIjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCJwYWNrYWdlcy9jb3JlL3NyYy9QcmVsdWRlLmNvZGUudHNcIilcbiAgfVxuICB9XG4gIGNvbnNvbGUubG9nKGNmZylcbiAgcmV0dXJuIGNmZ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVMsb0JBQW9COzs7QUNBN0IsT0FBTyxVQUFVO0FBQ2pCLE9BQU8sUUFBUTtBQUZmLElBQU0sbUNBQW1DO0FBZ0IxQixTQUFSLFdBQTRCLFNBQWtCO0FBQ25ELFFBQU0sU0FBUyxLQUFLLFFBQVEsa0NBQVcsVUFBVTtBQUNqRCxRQUFNLFdBQVcsR0FBRyxZQUFZLE1BQU0sRUFBRSxJQUFJLE9BQUssU0FBUyxNQUFNLENBQUMsRUFBRSxPQUFPLE9BQUssR0FBRyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUU7QUFDN0csUUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBLElBR1YsTUFBTTtBQUFBLE1BQ0osU0FBVSxDQUFDLGtEQUFrRDtBQUFBLE1BQzdELFdBQVc7QUFBQSxNQUNYLFNBQVM7QUFBQSxJQUNYO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxPQUFPLFNBQVMsT0FBTyxDQUFDLEtBQUssUUFBUTtBQUNyQyxZQUFJLEtBQUssTUFBTSxHQUFHLGFBQWEsTUFBTSxpQkFBaUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLEtBQUssUUFBUSxLQUFLLElBQUksU0FBUyxNQUFNLElBQUksU0FBUyxLQUFLO0FBQy9ILGVBQU87QUFBQSxNQUNULEdBQUcsQ0FBRSxDQUFDO0FBQUE7QUFBQSxJQUNSO0FBQUEsRUFDQTtBQUNBLFVBQVEsSUFBSSxHQUFHO0FBQ2YsU0FBTztBQUNUOzs7QURwQ0EsSUFBTUEsb0NBQW1DO0FBSXpDLElBQU8sd0JBQVEsYUFBYSxXQUFXQyxpQ0FBUyxDQUFDOyIsCiAgIm5hbWVzIjogWyJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSJdCn0K