@effect-app/vue 2.51.18 → 2.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ import { type MessageFormatElement } from "@formatjs/icu-messageformat-parser";
2
+ export declare const useExperimental: (options?: {
3
+ messages?: Record<string, string> | Record<string, MessageFormatElement[]>;
4
+ toasts: any[];
5
+ }) => {
6
+ useConfirm: () => {
7
+ confirm: (message?: string) => import("effect/Effect").Effect<boolean, never, never>;
8
+ confirmOrInterrupt: (message?: string) => import("effect/Effect").Effect<void, never, never>;
9
+ };
10
+ useCommand: () => {
11
+ confirmOrInterrupt: (message?: string | undefined) => import("effect/Effect").Effect<void, never, import("../src/experimental/useCommand.js").CommandContext>;
12
+ withDefaultToast: <A, E>(self: import("effect/Effect").Effect<A, E, import("../src/experimental/useCommand.js").CommandContext>, errorRenderer?: ((e: E) => string | undefined) | undefined) => import("effect/Effect").Effect<A, E, import("../src/experimental/useCommand.js").CommandContext>;
13
+ fn: (actionName: string) => {
14
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>, AEff, Args extends Array<any>>(body: (...args: Args) => Generator<Eff, AEff, never>): import("vue").ComputedRef<((...a: Args) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<AEff, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_1, infer _R>>] ? E_1 : never>, never>) & import("../src/experimental/useCommand.js").CommandProps<AEff, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_1, infer _R>>] ? E_1 : never>>;
15
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_1, Args_1 extends Array<any>, A extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_1) => Generator<Eff, AEff_1, never>, a: (_: import("effect/Effect").Effect<AEff_1, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_1, infer _R>>] ? E_1 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A): import("vue").ComputedRef<((...a: Args_1) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<A>, import("effect/Effect").Effect.Error<A>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<A>, import("effect/Effect").Effect.Error<A>>>;
16
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_2, Args_2 extends Array<any>, A_1, B extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_2) => Generator<Eff, AEff_2, never>, a: (_: import("effect/Effect").Effect<AEff_2, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_1, infer _R>>] ? E_1 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_1, b: (_: A_1) => B): import("vue").ComputedRef<((...a: Args_2) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<B>, import("effect/Effect").Effect.Error<B>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<B>, import("effect/Effect").Effect.Error<B>>>;
17
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_3, Args_3 extends Array<any>, A_2, B_1, C extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_3) => Generator<Eff, AEff_3, never>, a: (_: import("effect/Effect").Effect<AEff_3, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_1, infer _R>>] ? E_1 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_2, b: (_: A_2) => B_1, c: (_: B_1) => C): import("vue").ComputedRef<((...a: Args_3) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<C>, import("effect/Effect").Effect.Error<C>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<C>, import("effect/Effect").Effect.Error<C>>>;
18
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_4, Args_4 extends Array<any>, A_3, B_2, C_1, D extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_4) => Generator<Eff, AEff_4, never>, a: (_: import("effect/Effect").Effect<AEff_4, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_1, infer _R>>] ? E_1 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_3, b: (_: A_3) => B_2, c: (_: B_2) => C_1, d: (_: C_1) => D): import("vue").ComputedRef<((...a: Args_4) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<D>, import("effect/Effect").Effect.Error<D>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<D>, import("effect/Effect").Effect.Error<D>>>;
19
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_5, Args_5 extends Array<any>, A_4, B_3, C_2, D_1, E_1 extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_5) => Generator<Eff, AEff_5, never>, a: (_: import("effect/Effect").Effect<AEff_5, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_2, infer _R>>] ? E_2 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_4, b: (_: A_4) => B_3, c: (_: B_3) => C_2, d: (_: C_2) => D_1, e: (_: D_1) => E_1): import("vue").ComputedRef<((...a: Args_5) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<E_1>, import("effect/Effect").Effect.Error<E_1>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<E_1>, import("effect/Effect").Effect.Error<E_1>>>;
20
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_6, Args_6 extends Array<any>, A_5, B_4, C_3, D_2, E_2, F extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_6) => Generator<Eff, AEff_6, never>, a: (_: import("effect/Effect").Effect<AEff_6, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_3, infer _R>>] ? E_3 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_5, b: (_: A_5) => B_4, c: (_: B_4) => C_3, d: (_: C_3) => D_2, e: (_: D_2) => E_2, f: (_: E_2) => F): import("vue").ComputedRef<((...a: Args_6) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<F>, import("effect/Effect").Effect.Error<F>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<F>, import("effect/Effect").Effect.Error<F>>>;
21
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_7, Args_7 extends Array<any>, A_6, B_5, C_4, D_3, E_3, F_1, G extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_7) => Generator<Eff, AEff_7, never>, a: (_: import("effect/Effect").Effect<AEff_7, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_4, infer _R>>] ? E_4 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_6, b: (_: A_6) => B_5, c: (_: B_5) => C_4, d: (_: C_4) => D_3, e: (_: D_3) => E_3, f: (_: E_3) => F_1, g: (_: F_1) => G): import("vue").ComputedRef<((...a: Args_7) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<G>, import("effect/Effect").Effect.Error<G>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<G>, import("effect/Effect").Effect.Error<G>>>;
22
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_8, Args_8 extends Array<any>, A_7, B_6, C_5, D_4, E_4, F_2, G_1, H extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_8) => Generator<Eff, AEff_8, never>, a: (_: import("effect/Effect").Effect<AEff_8, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_5, infer _R>>] ? E_5 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_7, b: (_: A_7) => B_6, c: (_: B_6) => C_5, d: (_: C_5) => D_4, e: (_: D_4) => E_4, f: (_: E_4) => F_2, g: (_: F_2) => G_1, h: (_: G_1) => H): import("vue").ComputedRef<((...a: Args_8) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<H>, import("effect/Effect").Effect.Error<H>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<H>, import("effect/Effect").Effect.Error<H>>>;
23
+ <Eff extends import("effect/Utils").YieldWrap<import("effect/Effect").Effect<any, any, any>>, AEff_9, Args_9 extends Array<any>, A_8, B_7, C_6, D_5, E_5, F_3, G_2, H_1, I extends import("effect/Effect").Effect<any, any, import("../src/experimental/useCommand.js").CommandContext>>(body: (...args: Args_9) => Generator<Eff, AEff_9, never>, a: (_: import("effect/Effect").Effect<AEff_9, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A, infer E_6, infer _R>>] ? E_6 : never, [Eff] extends [never] ? never : [Eff] extends [import("effect/Utils").YieldWrap<import("effect/Effect").Effect<infer _A_1, infer _E, infer R_1>>] ? R_1 : never>) => A_8, b: (_: A_8) => B_7, c: (_: B_7) => C_6, d: (_: C_6) => D_5, e: (_: D_5) => E_5, f: (_: E_5) => F_3, g: (_: F_3) => G_2, h: (_: G_2) => H_1, i: (_: H_1) => I): import("vue").ComputedRef<((...a: Args_9) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<import("effect/Effect").Effect.Success<I>, import("effect/Effect").Effect.Error<I>>, never>) & import("../src/experimental/useCommand.js").CommandProps<import("effect/Effect").Effect.Success<I>, import("effect/Effect").Effect.Error<I>>>;
24
+ };
25
+ alt: (actionName: string) => <Args_10 extends ReadonlyArray<any>, A_9, E_6, R_1 extends import("../src/experimental/useCommand.js").CommandContext>(handler: (...args: Args_10) => import("effect/Effect").Effect<A_9, E_6, R_1>) => import("vue").ComputedRef<((...a: Args_10) => import("effect/Fiber").RuntimeFiber<import("effect/Exit").Exit<A_9, E_6>, never>) & import("../src/experimental/useCommand.js").CommandProps<A_9, E_6>>;
26
+ };
27
+ useWithToast: () => <A_10, E_7, Args_10 extends ReadonlyArray<unknown>, R_2>(options: import("../src/experimental/useWithToast.js").ToastOptions<A_10, E_7, Args_10>) => (self: import("effect/Effect").Effect<A_10, E_7, R_2>, ...args: Args_10) => import("effect/Effect").Effect<A_10, E_7, R_2>;
28
+ };
29
+ //# sourceMappingURL=stubs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AA0B9E,eAAO,MAAM,eAAe,GAC1B,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE;;yBAnBlG,CAAC;oCAEuC,CAAC;;;oCAGd,CAAC;sJAM7B,CAAC;;;;;;;;;;;;;;;oOAwDqlT,GAAI;CAD/lT,CAAA"}
@@ -0,0 +1,60 @@
1
+ import * as Intl from "@formatjs/intl";
2
+ import { Runtime } from "effect-app";
3
+ import { computed, ref } from "vue";
4
+ import { makeExperimentalCommand } from "../src/experimental/makeExperimental.js";
5
+ // const mockIntl = {
6
+ // locale: ref("en" as const),
7
+ // trans: (id: string) => id,
8
+ // intl: ref({ formatMessage: (msg: { id: string }) => msg.id })
9
+ // } as unknown as ReturnType<ReturnType<typeof makeIntl<string>>["useIntl"]>
10
+ const makeUseIntl = (messages) => () => {
11
+ const locale = ref("en");
12
+ const intlCache = Intl.createIntlCache();
13
+ const intl = Intl.createIntl({
14
+ locale: locale.value,
15
+ messages
16
+ }, intlCache);
17
+ return { locale, intl: computed(() => intl), trans: (id, values) => intl.formatMessage({ id }, values) };
18
+ };
19
+ export const useExperimental = (options) => {
20
+ const toasts = options?.toasts ?? [];
21
+ const useIntl = makeUseIntl({ ...options?.messages });
22
+ const dismiss = (id) => {
23
+ const idx = toasts.findIndex((_) => _.id === id);
24
+ if (idx > -1) {
25
+ const toast = toasts[idx];
26
+ clearTimeout(toast.timeoutId);
27
+ toasts.splice(idx, 1);
28
+ }
29
+ };
30
+ const fakeToast = (message, options) => {
31
+ const id = options?.id ?? Math.random().toString(36).substring(2, 15);
32
+ console.log(`Toast [${id}]: ${message}`, options);
33
+ options = { ...options, id };
34
+ const idx = toasts.findIndex((_) => _.id === id);
35
+ if (idx > -1) {
36
+ const toast = toasts[idx];
37
+ clearTimeout(toast.timeoutId);
38
+ Object.assign(toast, { message, options });
39
+ toast.timeoutId = setTimeout(() => {
40
+ toasts.splice(idx, 1);
41
+ }, options?.timeout ?? 3000);
42
+ }
43
+ else {
44
+ const toast = { id, message, options };
45
+ toast.timeoutId = setTimeout(() => {
46
+ toasts.splice(idx, 1);
47
+ }, options?.timeout ?? 3000);
48
+ toasts.push(toast);
49
+ }
50
+ return id;
51
+ };
52
+ return makeExperimentalCommand(useIntl, () => ({
53
+ error: fakeToast,
54
+ warning: fakeToast,
55
+ success: fakeToast,
56
+ info: fakeToast,
57
+ dismiss
58
+ }), Runtime.defaultRuntime);
59
+ };
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1YnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zdHVicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFHakYscUJBQXFCO0FBQ3JCLGdDQUFnQztBQUNoQywrQkFBK0I7QUFDL0Isa0VBQWtFO0FBQ2xFLDZFQUE2RTtBQUU3RSxNQUFNLFdBQVcsR0FBRyxDQUFDLFFBQXlFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTtJQUN0RyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBYSxDQUFDLENBQUE7SUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQzFCO1FBQ0UsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ3BCLFFBQVE7S0FDVCxFQUNELFNBQVMsQ0FDVixDQUFBO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQU8sRUFBRSxNQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFBO0FBQ3BILENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUM3QixPQUF1RyxFQUN2RyxFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQVUsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDM0MsTUFB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
package/test/stubs.ts ADDED
@@ -0,0 +1,75 @@
1
+ import { type MessageFormatElement } from "@formatjs/icu-messageformat-parser"
2
+ import * as Intl from "@formatjs/intl"
3
+ import { Runtime } from "effect-app"
4
+ import { computed, ref } from "vue"
5
+ import { makeExperimentalCommand } from "../src/experimental/makeExperimental.js"
6
+ import { type ToastId } from "../src/experimental/useWithToast.js"
7
+
8
+ // const mockIntl = {
9
+ // locale: ref("en" as const),
10
+ // trans: (id: string) => id,
11
+ // intl: ref({ formatMessage: (msg: { id: string }) => msg.id })
12
+ // } as unknown as ReturnType<ReturnType<typeof makeIntl<string>>["useIntl"]>
13
+
14
+ const makeUseIntl = (messages: Record<string, string> | Record<string, MessageFormatElement[]>) => () => {
15
+ const locale = ref("en" as const)
16
+ const intlCache = Intl.createIntlCache()
17
+ const intl = Intl.createIntl<typeof locale.value>(
18
+ {
19
+ locale: locale.value,
20
+ messages
21
+ },
22
+ intlCache
23
+ )
24
+ return { locale, intl: computed(() => intl), trans: (id: any, values: any) => intl.formatMessage({ id }, values) }
25
+ }
26
+
27
+ export const useExperimental = (
28
+ options?: { messages?: Record<string, string> | Record<string, MessageFormatElement[]>; toasts: any[] }
29
+ ) => {
30
+ const toasts: any[] = options?.toasts ?? []
31
+ const useIntl = makeUseIntl({ ...options?.messages })
32
+
33
+ const dismiss = (id: ToastId) => {
34
+ const idx = toasts.findIndex((_) => _.id === id)
35
+ if (idx > -1) {
36
+ const toast = toasts[idx]
37
+ clearTimeout(toast.timeoutId)
38
+ toasts.splice(idx, 1)
39
+ }
40
+ }
41
+ const fakeToast = (message: string, options?: { timeout?: number; id?: ToastId }) => {
42
+ const id = options?.id ?? Math.random().toString(36).substring(2, 15)
43
+ console.log(`Toast [${id}]: ${message}`, options)
44
+
45
+ options = { ...options, id }
46
+ const idx = toasts.findIndex((_) => _.id === id)
47
+ if (idx > -1) {
48
+ const toast = toasts[idx]
49
+ clearTimeout(toast.timeoutId)
50
+ Object.assign(toast, { message, options })
51
+ toast.timeoutId = setTimeout(() => {
52
+ toasts.splice(idx, 1)
53
+ }, options?.timeout ?? 3000)
54
+ } else {
55
+ const toast: any = { id, message, options }
56
+ toast.timeoutId = setTimeout(() => {
57
+ toasts.splice(idx, 1)
58
+ }, options?.timeout ?? 3000)
59
+ toasts.push(toast)
60
+ }
61
+ return id
62
+ }
63
+
64
+ return makeExperimentalCommand(
65
+ useIntl,
66
+ () => ({
67
+ error: fakeToast,
68
+ warning: fakeToast,
69
+ success: fakeToast,
70
+ info: fakeToast,
71
+ dismiss
72
+ }),
73
+ Runtime.defaultRuntime
74
+ )
75
+ }
package/tsconfig.src.json CHANGED
@@ -2,7 +2,8 @@
2
2
  "extends": "../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
4
  "lib": [
5
- "esnext"
5
+ "esnext",
6
+ "DOM"
6
7
  ],
7
8
  "tsBuildInfoFile": "./dist/.tsbuildinfo",
8
9
  "esModuleInterop": true,
package/vitest.config.ts CHANGED
@@ -1,5 +1,18 @@
1
1
  /// <reference types="vitest" />
2
- import { defineConfig } from "vite"
2
+ import { defineConfig } from "vitest/config"
3
+ import vue from '@vitejs/plugin-vue'
3
4
  import makeConfig from "../../vite.config.base"
4
5
 
5
- export default defineConfig(makeConfig(__dirname))
6
+ export default defineConfig({
7
+ ...makeConfig(__dirname),
8
+ plugins: [vue()],
9
+ test: {
10
+ environment: 'jsdom',
11
+ include: ['src/**/*.test.{ts,tsx}', '**/test/**/*.test.{ts,tsx}', '**/__tests__/**/*.test.{ts,tsx}'],
12
+ exclude: ['node_modules/**', 'dist/**'],
13
+ globals: true
14
+ },
15
+ optimizeDeps: {
16
+ exclude: ['**/__tests__/**', '**/test/**', '**/*.test.*']
17
+ }
18
+ })