@mearie/svelte 0.0.1-next.3 → 0.0.1-next.4

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/README.md CHANGED
@@ -2,20 +2,42 @@
2
2
 
3
3
  Svelte bindings for Mearie GraphQL client.
4
4
 
5
- This package provides Svelte stores and utilities for using Mearie in Svelte
6
- applications.
5
+ This package provides Svelte stores, utilities, and the GraphQL client runtime
6
+ for using Mearie in Svelte applications.
7
7
 
8
8
  ## Installation
9
9
 
10
10
  ```bash
11
- npm install mearie @mearie/svelte
11
+ npm install -D mearie
12
+ npm install @mearie/svelte
12
13
  ```
13
14
 
15
+ The `mearie` package provides build-time code generation, while `@mearie/svelte`
16
+ includes the runtime client and Svelte-specific stores.
17
+
14
18
  ## Usage
15
19
 
20
+ First, create a client and set it up in your app:
21
+
22
+ ```svelte
23
+ <!-- src/App.svelte -->
24
+ <script lang="ts">
25
+ import { createClient, httpLink, cacheLink, setClient } from '@mearie/svelte';
26
+
27
+ const client = createClient({
28
+ links: [cacheLink(), httpLink({ url: 'https://api.example.com/graphql' })],
29
+ });
30
+
31
+ setClient(client);
32
+ </script>
33
+ ```
34
+
35
+ Then use it in your components:
36
+
16
37
  ```svelte
38
+ <!-- src/components/UserProfile.svelte -->
17
39
  <script lang="ts">
18
- import { createClient, httpLink, cacheLink, graphql } from 'mearie';
40
+ import { graphql } from '$mearie';
19
41
  import { createQuery } from '@mearie/svelte';
20
42
 
21
43
  interface Props {
@@ -21,8 +21,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  }) : target, mod));
22
22
 
23
23
  //#endregion
24
+ let __mearie_core = require("@mearie/core");
25
+ __mearie_core = __toESM(__mearie_core);
24
26
  let svelte = require("svelte");
25
27
  svelte = __toESM(svelte);
28
+ let __mearie_core_stream = require("@mearie/core/stream");
29
+ __mearie_core_stream = __toESM(__mearie_core_stream);
26
30
 
27
31
  //#region src/client-context.svelte.ts
28
32
  const CLIENT_KEY = Symbol("mearie-client");
@@ -37,10 +41,36 @@ const getClient = () => {
37
41
 
38
42
  //#endregion
39
43
  //#region src/create-query.svelte.ts
40
- const createQuery = (document, variables) => {
41
- let data = $state(void 0);
42
- let loading = $state(true);
43
- let error = $state(void 0);
44
+ const createQuery = (query, ...[variables, options]) => {
45
+ const client = getClient();
46
+ let data = $state();
47
+ let loading = $state(!options?.().skip);
48
+ let error = $state();
49
+ let unsubscribe = null;
50
+ const execute = () => {
51
+ unsubscribe?.();
52
+ if (options?.().skip) return;
53
+ loading = true;
54
+ error = void 0;
55
+ unsubscribe = (0, __mearie_core_stream.pipe)(client.executeQuery(query, typeof variables === "function" ? variables() : void 0, options?.()), (0, __mearie_core_stream.subscribe)({ next: (result) => {
56
+ if (result.errors && result.errors.length > 0) {
57
+ error = new __mearie_core.AggregatedError(result.errors);
58
+ loading = false;
59
+ } else {
60
+ data = result.data;
61
+ loading = false;
62
+ }
63
+ } }));
64
+ };
65
+ const refetch = () => {
66
+ (0, svelte.untrack)(execute);
67
+ };
68
+ $effect(() => {
69
+ execute();
70
+ return () => {
71
+ unsubscribe?.();
72
+ };
73
+ });
44
74
  return {
45
75
  get data() {
46
76
  return data;
@@ -51,16 +81,38 @@ const createQuery = (document, variables) => {
51
81
  get error() {
52
82
  return error;
53
83
  },
54
- refetch: () => {}
84
+ refetch
55
85
  };
56
86
  };
57
87
 
58
88
  //#endregion
59
89
  //#region src/create-subscription.svelte.ts
60
- const createSubscription = (document, variables, options) => {
61
- let data = $state(void 0);
62
- let loading = $state(true);
63
- let error = $state(void 0);
90
+ const createSubscription = (subscription, ...[variables, options]) => {
91
+ const client = getClient();
92
+ let data = $state();
93
+ let loading = $state(!options?.().skip);
94
+ let error = $state();
95
+ $effect(() => {
96
+ if (options?.().skip) return;
97
+ loading = true;
98
+ error = void 0;
99
+ const unsubscribe = (0, __mearie_core_stream.pipe)(client.executeSubscription(subscription, typeof variables === "function" ? variables() : void 0, options?.()), (0, __mearie_core_stream.subscribe)({ next: (result) => {
100
+ if (result.errors && result.errors.length > 0) {
101
+ const err = new __mearie_core.AggregatedError(result.errors);
102
+ error = err;
103
+ loading = false;
104
+ options?.().onError?.(err);
105
+ } else {
106
+ const resultData = result.data;
107
+ data = resultData;
108
+ loading = false;
109
+ options?.().onData?.(resultData);
110
+ }
111
+ } }));
112
+ return () => {
113
+ unsubscribe();
114
+ };
115
+ });
64
116
  return {
65
117
  get data() {
66
118
  return data;
@@ -76,11 +128,32 @@ const createSubscription = (document, variables, options) => {
76
128
 
77
129
  //#endregion
78
130
  //#region src/create-mutation.svelte.ts
79
- const createMutation = (document) => {
80
- let data = $state(void 0);
131
+ const createMutation = (mutation) => {
132
+ const client = getClient();
133
+ let data = $state();
81
134
  let loading = $state(false);
82
- let error = $state(void 0);
83
- return {
135
+ let error = $state();
136
+ const execute = async (variables, options) => {
137
+ loading = true;
138
+ error = void 0;
139
+ try {
140
+ const result = await (0, __mearie_core_stream.pipe)(client.executeMutation(mutation, variables, options), __mearie_core_stream.collect);
141
+ if (result.errors && result.errors.length > 0) {
142
+ const err = new __mearie_core.AggregatedError(result.errors);
143
+ error = err;
144
+ loading = false;
145
+ throw err;
146
+ }
147
+ data = result.data;
148
+ loading = false;
149
+ return result.data;
150
+ } catch (err) {
151
+ if (err instanceof __mearie_core.AggregatedError) error = err;
152
+ loading = false;
153
+ throw err;
154
+ }
155
+ };
156
+ return [execute, {
84
157
  get data() {
85
158
  return data;
86
159
  },
@@ -89,15 +162,29 @@ const createMutation = (document) => {
89
162
  },
90
163
  get error() {
91
164
  return error;
92
- },
93
- mutate: async () => ({})
94
- };
165
+ }
166
+ }];
95
167
  };
96
168
 
97
169
  //#endregion
98
170
  //#region src/create-fragment.svelte.ts
99
- const createFragment = (document, fragmentRef) => {
100
- return $derived.by(() => ({}));
171
+ const createFragment = (fragment, fragmentRef, options) => {
172
+ const client = getClient();
173
+ const ref = fragmentRef();
174
+ const result = (0, __mearie_core_stream.pipe)(client.executeFragment(fragment, ref, options?.()), __mearie_core_stream.peek);
175
+ if (result.data === void 0) throw new Error("Fragment data not found");
176
+ let data = $state(result.data);
177
+ $effect(() => {
178
+ const unsubscribe = (0, __mearie_core_stream.pipe)(client.executeFragment(fragment, fragmentRef(), options?.()), (0, __mearie_core_stream.subscribe)({ next: (result$1) => {
179
+ if (result$1.data !== void 0) data = result$1.data;
180
+ } }));
181
+ return () => {
182
+ unsubscribe();
183
+ };
184
+ });
185
+ return { get data() {
186
+ return data;
187
+ } };
101
188
  };
102
189
 
103
190
  //#endregion
@@ -106,4 +193,10 @@ exports.createMutation = createMutation;
106
193
  exports.createQuery = createQuery;
107
194
  exports.createSubscription = createSubscription;
108
195
  exports.getClient = getClient;
109
- exports.setClient = setClient;
196
+ exports.setClient = setClient;
197
+ Object.keys(__mearie_core).forEach(function (k) {
198
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
199
+ enumerable: true,
200
+ get: function () { return __mearie_core[k]; }
201
+ });
202
+ });
@@ -1,69 +1,76 @@
1
- import { Client, DataOf, DocumentNode, FragmentRef, VariablesOf } from "@mearie/core";
1
+ import { AggregatedError, Artifact, Client, DataOf, FragmentOptions, FragmentRefs, MutationOptions, QueryOptions, SubscriptionOptions, VariablesOf } from "@mearie/core";
2
+ export * from "@mearie/core";
2
3
 
3
4
  //#region src/client-context.svelte.d.ts
4
5
  declare const setClient: (client: Client) => void;
5
6
  declare const getClient: () => Client;
6
7
  //#endregion
7
8
  //#region src/create-query.svelte.d.ts
8
- type CreateQueryReturn<Document$1 extends DocumentNode> = {
9
+ type CreateQueryOptions = QueryOptions & {
10
+ skip?: boolean;
11
+ };
12
+ type Query<T extends Artifact<'query'>> = {
9
13
  data: undefined;
10
14
  loading: true;
11
15
  error: undefined;
12
16
  refetch: () => void;
13
17
  } | {
14
- data: DataOf<Document$1>;
18
+ data: DataOf<T>;
15
19
  loading: false;
16
20
  error: undefined;
17
21
  refetch: () => void;
18
22
  } | {
19
- data: DataOf<Document$1> | undefined;
23
+ data: DataOf<T> | undefined;
20
24
  loading: false;
21
- error: Error;
25
+ error: AggregatedError;
22
26
  refetch: () => void;
23
27
  };
24
- declare const createQuery: <Document extends DocumentNode>(document: Document, variables: () => VariablesOf<Document>) => CreateQueryReturn<Document>;
28
+ declare const createQuery: <T extends Artifact<"query">>(query: T, ...[variables, options]: VariablesOf<T> extends undefined ? [undefined?, (() => CreateQueryOptions)?] : [() => VariablesOf<T>, (() => CreateQueryOptions)?]) => Query<T>;
25
29
  //#endregion
26
30
  //#region src/create-subscription.svelte.d.ts
27
- type CreateSubscriptionReturn<Document$1 extends DocumentNode> = {
31
+ type Subscription<T extends Artifact<'subscription'>> = {
28
32
  data: undefined;
29
33
  loading: true;
30
34
  error: undefined;
31
35
  } | {
32
- data: DataOf<Document$1>;
36
+ data: DataOf<T> | undefined;
33
37
  loading: false;
34
38
  error: undefined;
35
39
  } | {
36
- data: DataOf<Document$1> | undefined;
40
+ data: DataOf<T> | undefined;
37
41
  loading: false;
38
- error: Error;
42
+ error: AggregatedError;
39
43
  };
40
- type CreateSubscriptionOptions<Document$1 extends DocumentNode> = {
41
- onData?: (data: DataOf<Document$1>) => void;
42
- onError?: (error: Error) => void;
44
+ type CreateSubscriptionOptions<T extends Artifact<'subscription'>> = SubscriptionOptions & {
45
+ skip?: boolean;
46
+ onData?: (data: DataOf<T>) => void;
47
+ onError?: (error: AggregatedError) => void;
43
48
  };
44
- declare const createSubscription: <Document extends DocumentNode>(document: Document, variables: () => VariablesOf<Document>, options?: CreateSubscriptionOptions<Document>) => CreateSubscriptionReturn<Document>;
49
+ declare const createSubscription: <T extends Artifact<"subscription">>(subscription: T, ...[variables, options]: VariablesOf<T> extends undefined ? [undefined?, (() => CreateSubscriptionOptions<T>)?] : [() => VariablesOf<T>, (() => CreateSubscriptionOptions<T>)?]) => Subscription<T>;
45
50
  //#endregion
46
51
  //#region src/create-mutation.svelte.d.ts
47
- type CreateMutationReturn<Document$1 extends DocumentNode> = {
52
+ type MutationResult<T extends Artifact<'mutation'>> = {
48
53
  data: undefined;
49
54
  loading: true;
50
55
  error: undefined;
51
- mutate: (variables: VariablesOf<Document$1>) => Promise<DataOf<Document$1>>;
52
56
  } | {
53
- data: DataOf<Document$1>;
57
+ data: DataOf<T> | undefined;
54
58
  loading: false;
55
59
  error: undefined;
56
- mutate: (variables: VariablesOf<Document$1>) => Promise<DataOf<Document$1>>;
57
60
  } | {
58
- data: DataOf<Document$1> | undefined;
61
+ data: DataOf<T> | undefined;
59
62
  loading: false;
60
- error: Error;
61
- mutate: (variables: VariablesOf<Document$1>) => Promise<DataOf<Document$1>>;
63
+ error: AggregatedError;
62
64
  };
63
- declare const createMutation: <Document extends DocumentNode>(document: Document) => CreateMutationReturn<Document>;
65
+ type CreateMutationOptions = MutationOptions;
66
+ type Mutation<T extends Artifact<'mutation'>> = [(...[variables, options]: VariablesOf<T> extends undefined ? [undefined?, CreateMutationOptions?] : [VariablesOf<T>, CreateMutationOptions?]) => Promise<DataOf<T>>, MutationResult<T>];
67
+ declare const createMutation: <T extends Artifact<"mutation">>(mutation: T) => Mutation<T>;
64
68
  //#endregion
65
69
  //#region src/create-fragment.svelte.d.ts
66
- type CreateFragmentReturn<Document$1 extends DocumentNode> = DataOf<Document$1>;
67
- declare const createFragment: <Document extends DocumentNode>(document: Document, fragmentRef: () => FragmentRef<Document>) => CreateFragmentReturn<Document>;
70
+ type CreateFragmentOptions = FragmentOptions;
71
+ type Fragment<T extends Artifact<'fragment'>> = {
72
+ data: DataOf<T>;
73
+ };
74
+ declare const createFragment: <T extends Artifact<"fragment">>(fragment: T, fragmentRef: () => FragmentRefs<T["name"]>, options?: () => CreateFragmentOptions) => Fragment<T>;
68
75
  //#endregion
69
- export { type CreateFragmentReturn, type CreateMutationReturn, type CreateQueryReturn, type CreateSubscriptionOptions, type CreateSubscriptionReturn, createFragment, createMutation, createQuery, createSubscription, getClient, setClient };
76
+ export { type CreateFragmentOptions, type CreateMutationOptions, type CreateQueryOptions, type CreateSubscriptionOptions, type Fragment, type Mutation, type MutationResult, type Query, type Subscription, createFragment, createMutation, createQuery, createSubscription, getClient, setClient };
@@ -1,69 +1,76 @@
1
- import { Client, DataOf, DocumentNode, FragmentRef, VariablesOf } from "@mearie/core";
1
+ import { AggregatedError, Artifact, Client, DataOf, FragmentOptions, FragmentRefs, MutationOptions, QueryOptions, SubscriptionOptions, VariablesOf } from "@mearie/core";
2
+ export * from "@mearie/core";
2
3
 
3
4
  //#region src/client-context.svelte.d.ts
4
5
  declare const setClient: (client: Client) => void;
5
6
  declare const getClient: () => Client;
6
7
  //#endregion
7
8
  //#region src/create-query.svelte.d.ts
8
- type CreateQueryReturn<Document$1 extends DocumentNode> = {
9
+ type CreateQueryOptions = QueryOptions & {
10
+ skip?: boolean;
11
+ };
12
+ type Query<T extends Artifact<'query'>> = {
9
13
  data: undefined;
10
14
  loading: true;
11
15
  error: undefined;
12
16
  refetch: () => void;
13
17
  } | {
14
- data: DataOf<Document$1>;
18
+ data: DataOf<T>;
15
19
  loading: false;
16
20
  error: undefined;
17
21
  refetch: () => void;
18
22
  } | {
19
- data: DataOf<Document$1> | undefined;
23
+ data: DataOf<T> | undefined;
20
24
  loading: false;
21
- error: Error;
25
+ error: AggregatedError;
22
26
  refetch: () => void;
23
27
  };
24
- declare const createQuery: <Document extends DocumentNode>(document: Document, variables: () => VariablesOf<Document>) => CreateQueryReturn<Document>;
28
+ declare const createQuery: <T extends Artifact<"query">>(query: T, ...[variables, options]: VariablesOf<T> extends undefined ? [undefined?, (() => CreateQueryOptions)?] : [() => VariablesOf<T>, (() => CreateQueryOptions)?]) => Query<T>;
25
29
  //#endregion
26
30
  //#region src/create-subscription.svelte.d.ts
27
- type CreateSubscriptionReturn<Document$1 extends DocumentNode> = {
31
+ type Subscription<T extends Artifact<'subscription'>> = {
28
32
  data: undefined;
29
33
  loading: true;
30
34
  error: undefined;
31
35
  } | {
32
- data: DataOf<Document$1>;
36
+ data: DataOf<T> | undefined;
33
37
  loading: false;
34
38
  error: undefined;
35
39
  } | {
36
- data: DataOf<Document$1> | undefined;
40
+ data: DataOf<T> | undefined;
37
41
  loading: false;
38
- error: Error;
42
+ error: AggregatedError;
39
43
  };
40
- type CreateSubscriptionOptions<Document$1 extends DocumentNode> = {
41
- onData?: (data: DataOf<Document$1>) => void;
42
- onError?: (error: Error) => void;
44
+ type CreateSubscriptionOptions<T extends Artifact<'subscription'>> = SubscriptionOptions & {
45
+ skip?: boolean;
46
+ onData?: (data: DataOf<T>) => void;
47
+ onError?: (error: AggregatedError) => void;
43
48
  };
44
- declare const createSubscription: <Document extends DocumentNode>(document: Document, variables: () => VariablesOf<Document>, options?: CreateSubscriptionOptions<Document>) => CreateSubscriptionReturn<Document>;
49
+ declare const createSubscription: <T extends Artifact<"subscription">>(subscription: T, ...[variables, options]: VariablesOf<T> extends undefined ? [undefined?, (() => CreateSubscriptionOptions<T>)?] : [() => VariablesOf<T>, (() => CreateSubscriptionOptions<T>)?]) => Subscription<T>;
45
50
  //#endregion
46
51
  //#region src/create-mutation.svelte.d.ts
47
- type CreateMutationReturn<Document$1 extends DocumentNode> = {
52
+ type MutationResult<T extends Artifact<'mutation'>> = {
48
53
  data: undefined;
49
54
  loading: true;
50
55
  error: undefined;
51
- mutate: (variables: VariablesOf<Document$1>) => Promise<DataOf<Document$1>>;
52
56
  } | {
53
- data: DataOf<Document$1>;
57
+ data: DataOf<T> | undefined;
54
58
  loading: false;
55
59
  error: undefined;
56
- mutate: (variables: VariablesOf<Document$1>) => Promise<DataOf<Document$1>>;
57
60
  } | {
58
- data: DataOf<Document$1> | undefined;
61
+ data: DataOf<T> | undefined;
59
62
  loading: false;
60
- error: Error;
61
- mutate: (variables: VariablesOf<Document$1>) => Promise<DataOf<Document$1>>;
63
+ error: AggregatedError;
62
64
  };
63
- declare const createMutation: <Document extends DocumentNode>(document: Document) => CreateMutationReturn<Document>;
65
+ type CreateMutationOptions = MutationOptions;
66
+ type Mutation<T extends Artifact<'mutation'>> = [(...[variables, options]: VariablesOf<T> extends undefined ? [undefined?, CreateMutationOptions?] : [VariablesOf<T>, CreateMutationOptions?]) => Promise<DataOf<T>>, MutationResult<T>];
67
+ declare const createMutation: <T extends Artifact<"mutation">>(mutation: T) => Mutation<T>;
64
68
  //#endregion
65
69
  //#region src/create-fragment.svelte.d.ts
66
- type CreateFragmentReturn<Document$1 extends DocumentNode> = DataOf<Document$1>;
67
- declare const createFragment: <Document extends DocumentNode>(document: Document, fragmentRef: () => FragmentRef<Document>) => CreateFragmentReturn<Document>;
70
+ type CreateFragmentOptions = FragmentOptions;
71
+ type Fragment<T extends Artifact<'fragment'>> = {
72
+ data: DataOf<T>;
73
+ };
74
+ declare const createFragment: <T extends Artifact<"fragment">>(fragment: T, fragmentRef: () => FragmentRefs<T["name"]>, options?: () => CreateFragmentOptions) => Fragment<T>;
68
75
  //#endregion
69
- export { type CreateFragmentReturn, type CreateMutationReturn, type CreateQueryReturn, type CreateSubscriptionOptions, type CreateSubscriptionReturn, createFragment, createMutation, createQuery, createSubscription, getClient, setClient };
76
+ export { type CreateFragmentOptions, type CreateMutationOptions, type CreateQueryOptions, type CreateSubscriptionOptions, type Fragment, type Mutation, type MutationResult, type Query, type Subscription, createFragment, createMutation, createQuery, createSubscription, getClient, setClient };
@@ -1,4 +1,8 @@
1
- import { getContext, setContext } from "svelte";
1
+ import { AggregatedError } from "@mearie/core";
2
+ import { getContext, setContext, untrack } from "svelte";
3
+ import { collect, peek, pipe, subscribe } from "@mearie/core/stream";
4
+
5
+ export * from "@mearie/core"
2
6
 
3
7
  //#region src/client-context.svelte.ts
4
8
  const CLIENT_KEY = Symbol("mearie-client");
@@ -13,10 +17,36 @@ const getClient = () => {
13
17
 
14
18
  //#endregion
15
19
  //#region src/create-query.svelte.ts
16
- const createQuery = (document, variables) => {
17
- let data = $state(void 0);
18
- let loading = $state(true);
19
- let error = $state(void 0);
20
+ const createQuery = (query, ...[variables, options]) => {
21
+ const client = getClient();
22
+ let data = $state();
23
+ let loading = $state(!options?.().skip);
24
+ let error = $state();
25
+ let unsubscribe = null;
26
+ const execute = () => {
27
+ unsubscribe?.();
28
+ if (options?.().skip) return;
29
+ loading = true;
30
+ error = void 0;
31
+ unsubscribe = pipe(client.executeQuery(query, typeof variables === "function" ? variables() : void 0, options?.()), subscribe({ next: (result) => {
32
+ if (result.errors && result.errors.length > 0) {
33
+ error = new AggregatedError(result.errors);
34
+ loading = false;
35
+ } else {
36
+ data = result.data;
37
+ loading = false;
38
+ }
39
+ } }));
40
+ };
41
+ const refetch = () => {
42
+ untrack(execute);
43
+ };
44
+ $effect(() => {
45
+ execute();
46
+ return () => {
47
+ unsubscribe?.();
48
+ };
49
+ });
20
50
  return {
21
51
  get data() {
22
52
  return data;
@@ -27,16 +57,38 @@ const createQuery = (document, variables) => {
27
57
  get error() {
28
58
  return error;
29
59
  },
30
- refetch: () => {}
60
+ refetch
31
61
  };
32
62
  };
33
63
 
34
64
  //#endregion
35
65
  //#region src/create-subscription.svelte.ts
36
- const createSubscription = (document, variables, options) => {
37
- let data = $state(void 0);
38
- let loading = $state(true);
39
- let error = $state(void 0);
66
+ const createSubscription = (subscription, ...[variables, options]) => {
67
+ const client = getClient();
68
+ let data = $state();
69
+ let loading = $state(!options?.().skip);
70
+ let error = $state();
71
+ $effect(() => {
72
+ if (options?.().skip) return;
73
+ loading = true;
74
+ error = void 0;
75
+ const unsubscribe = pipe(client.executeSubscription(subscription, typeof variables === "function" ? variables() : void 0, options?.()), subscribe({ next: (result) => {
76
+ if (result.errors && result.errors.length > 0) {
77
+ const err = new AggregatedError(result.errors);
78
+ error = err;
79
+ loading = false;
80
+ options?.().onError?.(err);
81
+ } else {
82
+ const resultData = result.data;
83
+ data = resultData;
84
+ loading = false;
85
+ options?.().onData?.(resultData);
86
+ }
87
+ } }));
88
+ return () => {
89
+ unsubscribe();
90
+ };
91
+ });
40
92
  return {
41
93
  get data() {
42
94
  return data;
@@ -52,11 +104,32 @@ const createSubscription = (document, variables, options) => {
52
104
 
53
105
  //#endregion
54
106
  //#region src/create-mutation.svelte.ts
55
- const createMutation = (document) => {
56
- let data = $state(void 0);
107
+ const createMutation = (mutation) => {
108
+ const client = getClient();
109
+ let data = $state();
57
110
  let loading = $state(false);
58
- let error = $state(void 0);
59
- return {
111
+ let error = $state();
112
+ const execute = async (variables, options) => {
113
+ loading = true;
114
+ error = void 0;
115
+ try {
116
+ const result = await pipe(client.executeMutation(mutation, variables, options), collect);
117
+ if (result.errors && result.errors.length > 0) {
118
+ const err = new AggregatedError(result.errors);
119
+ error = err;
120
+ loading = false;
121
+ throw err;
122
+ }
123
+ data = result.data;
124
+ loading = false;
125
+ return result.data;
126
+ } catch (err) {
127
+ if (err instanceof AggregatedError) error = err;
128
+ loading = false;
129
+ throw err;
130
+ }
131
+ };
132
+ return [execute, {
60
133
  get data() {
61
134
  return data;
62
135
  },
@@ -65,15 +138,29 @@ const createMutation = (document) => {
65
138
  },
66
139
  get error() {
67
140
  return error;
68
- },
69
- mutate: async () => ({})
70
- };
141
+ }
142
+ }];
71
143
  };
72
144
 
73
145
  //#endregion
74
146
  //#region src/create-fragment.svelte.ts
75
- const createFragment = (document, fragmentRef) => {
76
- return $derived.by(() => ({}));
147
+ const createFragment = (fragment, fragmentRef, options) => {
148
+ const client = getClient();
149
+ const ref = fragmentRef();
150
+ const result = pipe(client.executeFragment(fragment, ref, options?.()), peek);
151
+ if (result.data === void 0) throw new Error("Fragment data not found");
152
+ let data = $state(result.data);
153
+ $effect(() => {
154
+ const unsubscribe = pipe(client.executeFragment(fragment, fragmentRef(), options?.()), subscribe({ next: (result$1) => {
155
+ if (result$1.data !== void 0) data = result$1.data;
156
+ } }));
157
+ return () => {
158
+ unsubscribe();
159
+ };
160
+ });
161
+ return { get data() {
162
+ return data;
163
+ } };
77
164
  };
78
165
 
79
166
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mearie/svelte",
3
- "version": "0.0.1-next.3",
3
+ "version": "0.0.1-next.4",
4
4
  "description": "Type-safe, zero-overhead GraphQL client",
5
5
  "keywords": [
6
6
  "graphql",
@@ -26,18 +26,26 @@
26
26
  "author": "Bae Junehyeon <finn@penxle.io>",
27
27
  "sideEffects": false,
28
28
  "type": "module",
29
- "main": "./dist/index.svelte.cjs",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.svelte.d.ts",
32
+ "import": "./dist/index.svelte.js",
33
+ "require": "./dist/index.svelte.cjs"
34
+ },
35
+ "./package.json": "./package.json"
36
+ },
30
37
  "files": [
31
38
  "dist",
32
39
  "package.json",
33
40
  "README.md"
34
41
  ],
35
42
  "dependencies": {
36
- "@mearie/client": "0.0.1-next.3"
43
+ "@mearie/core": "0.0.1-next.4"
37
44
  },
38
45
  "devDependencies": {
39
- "svelte": "^5.41.0",
40
- "tsdown": "^0.15.8"
46
+ "svelte": "^5.43.0",
47
+ "tsdown": "^0.15.12",
48
+ "typescript": "^5.9.3"
41
49
  },
42
50
  "peerDependencies": {
43
51
  "svelte": "^5.0.0"
@@ -52,16 +60,9 @@
52
60
  },
53
61
  "scripts": {
54
62
  "build": "tsdown",
55
- "dev": "tsdown --watch"
56
- },
57
- "exports": {
58
- ".": {
59
- "types": "./dist/index.svelte.d.ts",
60
- "import": "./dist/index.svelte.js",
61
- "require": "./dist/index.svelte.cjs"
62
- },
63
- "./package.json": "./package.json"
63
+ "typecheck": "tsc"
64
64
  },
65
+ "main": "./dist/index.svelte.cjs",
65
66
  "module": "./dist/index.svelte.js",
66
67
  "types": "./dist/index.svelte.d.ts"
67
68
  }