@mearie/svelte 0.2.6 → 0.3.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.
@@ -22,6 +22,7 @@ const createQuery = ((query, variables, options) => {
22
22
  let data = $state.raw(initialOpts?.initialData);
23
23
  let loading = $state(!initialOpts?.skip && !initialOpts?.initialData);
24
24
  let error = $state();
25
+ let metadata = $state();
25
26
  let unsubscribe = null;
26
27
  let initialized = false;
27
28
  const execute = () => {
@@ -31,6 +32,7 @@ const createQuery = ((query, variables, options) => {
31
32
  initialized = true;
32
33
  error = void 0;
33
34
  unsubscribe = (0, _mearie_core_stream.pipe)(client.executeQuery(query, typeof variables === "function" ? variables() : void 0, options?.()), (0, _mearie_core_stream.subscribe)({ next: (result) => {
35
+ metadata = result.metadata;
34
36
  if (result.errors && result.errors.length > 0) {
35
37
  error = new _mearie_core.AggregatedError(result.errors);
36
38
  loading = false;
@@ -59,6 +61,9 @@ const createQuery = ((query, variables, options) => {
59
61
  get error() {
60
62
  return error;
61
63
  },
64
+ get metadata() {
65
+ return metadata;
66
+ },
62
67
  refetch
63
68
  };
64
69
  });
@@ -70,11 +75,13 @@ const createSubscription = (subscription, ...[variables, options]) => {
70
75
  let data = $state.raw();
71
76
  let loading = $state(!options?.().skip);
72
77
  let error = $state();
78
+ let metadata = $state();
73
79
  $effect(() => {
74
80
  if (options?.().skip) return;
75
81
  loading = true;
76
82
  error = void 0;
77
83
  const unsubscribe = (0, _mearie_core_stream.pipe)(client.executeSubscription(subscription, typeof variables === "function" ? variables() : void 0, options?.()), (0, _mearie_core_stream.subscribe)({ next: (result) => {
84
+ metadata = result.metadata;
78
85
  if (result.errors && result.errors.length > 0) {
79
86
  const err = new _mearie_core.AggregatedError(result.errors);
80
87
  error = err;
@@ -100,6 +107,9 @@ const createSubscription = (subscription, ...[variables, options]) => {
100
107
  },
101
108
  get error() {
102
109
  return error;
110
+ },
111
+ get metadata() {
112
+ return metadata;
103
113
  }
104
114
  };
105
115
  };
@@ -111,11 +121,14 @@ const createMutation = (mutation) => {
111
121
  let data = $state();
112
122
  let loading = $state(false);
113
123
  let error = $state();
124
+ let metadata = $state();
114
125
  const execute = async (variables, options) => {
115
126
  loading = true;
116
127
  error = void 0;
128
+ metadata = void 0;
117
129
  try {
118
130
  const result = await (0, _mearie_core_stream.pipe)(client.executeMutation(mutation, variables, options), (0, _mearie_core_stream.take)(1), _mearie_core_stream.collect);
131
+ metadata = result.metadata;
119
132
  if (result.errors && result.errors.length > 0) {
120
133
  const err = new _mearie_core.AggregatedError(result.errors);
121
134
  error = err;
@@ -140,6 +153,9 @@ const createMutation = (mutation) => {
140
153
  },
141
154
  get error() {
142
155
  return error;
156
+ },
157
+ get metadata() {
158
+ return metadata;
143
159
  }
144
160
  }];
145
161
  };
@@ -150,29 +166,39 @@ const createFragment = ((fragment, fragmentRef, options) => {
150
166
  const client = getClient();
151
167
  const ref = fragmentRef();
152
168
  let data;
169
+ let initialMetadata;
153
170
  if (ref == null) data = null;
154
171
  else {
155
172
  const result = (0, _mearie_core_stream.pipe)(client.executeFragment(fragment, $state.snapshot(ref), options?.()), _mearie_core_stream.peek);
156
173
  if (result.data === void 0) throw new Error("Fragment data not found");
157
174
  data = result.data;
175
+ initialMetadata = result.metadata;
158
176
  }
159
177
  let state = $state(data);
178
+ let metadata = $state(initialMetadata);
160
179
  $effect(() => {
161
180
  const currentRef = fragmentRef();
162
181
  if (currentRef == null) {
163
182
  state = null;
183
+ metadata = void 0;
164
184
  return;
165
185
  }
166
186
  const unsubscribe = (0, _mearie_core_stream.pipe)(client.executeFragment(fragment, $state.snapshot(currentRef), options?.()), (0, _mearie_core_stream.subscribe)({ next: (result) => {
187
+ metadata = result.metadata;
167
188
  if (result.data !== void 0) state = result.data;
168
189
  } }));
169
190
  return () => {
170
191
  unsubscribe();
171
192
  };
172
193
  });
173
- return { get data() {
174
- return state;
175
- } };
194
+ return {
195
+ get data() {
196
+ return state;
197
+ },
198
+ get metadata() {
199
+ return metadata;
200
+ }
201
+ };
176
202
  });
177
203
 
178
204
  //#endregion
@@ -1,4 +1,4 @@
1
- import { AggregatedError, Artifact, Client, DataOf, FragmentOptions, FragmentRefs, MutationOptions, QueryOptions, SchemaMeta, SubscriptionOptions, VariablesOf } from "@mearie/core";
1
+ import { AggregatedError, Artifact, Client, DataOf, FragmentOptions, FragmentRefs, MutationOptions, OperationResult, QueryOptions, SchemaMeta, SubscriptionOptions, VariablesOf } from "@mearie/core";
2
2
  export * from "@mearie/core";
3
3
 
4
4
  //#region src/client-context.svelte.d.ts
@@ -13,32 +13,38 @@ type Query<T extends Artifact<'query'>> = {
13
13
  data: undefined;
14
14
  loading: true;
15
15
  error: undefined;
16
+ metadata: OperationResult['metadata'];
16
17
  refetch: () => void;
17
18
  } | {
18
19
  data: DataOf<T>;
19
20
  loading: false;
20
21
  error: undefined;
22
+ metadata: OperationResult['metadata'];
21
23
  refetch: () => void;
22
24
  } | {
23
25
  data: DataOf<T> | undefined;
24
26
  loading: false;
25
27
  error: AggregatedError;
28
+ metadata: OperationResult['metadata'];
26
29
  refetch: () => void;
27
30
  };
28
31
  type DefinedQuery<T extends Artifact<'query'>> = {
29
32
  data: DataOf<T>;
30
33
  loading: true;
31
34
  error: undefined;
35
+ metadata: OperationResult['metadata'];
32
36
  refetch: () => void;
33
37
  } | {
34
38
  data: DataOf<T>;
35
39
  loading: false;
36
40
  error: undefined;
41
+ metadata: OperationResult['metadata'];
37
42
  refetch: () => void;
38
43
  } | {
39
44
  data: DataOf<T>;
40
45
  loading: false;
41
46
  error: AggregatedError;
47
+ metadata: OperationResult['metadata'];
42
48
  refetch: () => void;
43
49
  };
44
50
  type CreateQueryFn = {
@@ -54,14 +60,17 @@ type Subscription<T extends Artifact<'subscription'>> = {
54
60
  data: undefined;
55
61
  loading: true;
56
62
  error: undefined;
63
+ metadata: OperationResult['metadata'];
57
64
  } | {
58
65
  data: DataOf<T> | undefined;
59
66
  loading: false;
60
67
  error: undefined;
68
+ metadata: OperationResult['metadata'];
61
69
  } | {
62
70
  data: DataOf<T> | undefined;
63
71
  loading: false;
64
72
  error: AggregatedError;
73
+ metadata: OperationResult['metadata'];
65
74
  };
66
75
  type CreateSubscriptionOptions<T extends Artifact<'subscription'>> = SubscriptionOptions & {
67
76
  skip?: boolean;
@@ -75,14 +84,17 @@ type MutationResult<T extends Artifact<'mutation'>> = {
75
84
  data: undefined;
76
85
  loading: true;
77
86
  error: undefined;
87
+ metadata: OperationResult['metadata'];
78
88
  } | {
79
89
  data: DataOf<T> | undefined;
80
90
  loading: false;
81
91
  error: undefined;
92
+ metadata: OperationResult['metadata'];
82
93
  } | {
83
94
  data: DataOf<T> | undefined;
84
95
  loading: false;
85
96
  error: AggregatedError;
97
+ metadata: OperationResult['metadata'];
86
98
  };
87
99
  type CreateMutationOptions = MutationOptions;
88
100
  type Mutation<T extends Artifact<'mutation'>> = [(...[variables, options]: VariablesOf<T> extends Record<string, never> ? [undefined?, CreateMutationOptions?] : [VariablesOf<T>, CreateMutationOptions?]) => Promise<DataOf<T>>, MutationResult<T>];
@@ -92,12 +104,15 @@ declare const createMutation: <T extends Artifact<"mutation">>(mutation: T) => M
92
104
  type CreateFragmentOptions = FragmentOptions;
93
105
  type Fragment<T extends Artifact<'fragment'>> = {
94
106
  data: DataOf<T>;
107
+ metadata: OperationResult['metadata'];
95
108
  };
96
109
  type FragmentList<T extends Artifact<'fragment'>> = {
97
110
  data: DataOf<T>[];
111
+ metadata: OperationResult['metadata'];
98
112
  };
99
113
  type OptionalFragment<T extends Artifact<'fragment'>> = {
100
114
  data: DataOf<T> | null;
115
+ metadata: OperationResult['metadata'];
101
116
  };
102
117
  type CreateFragmentFn = {
103
118
  <T extends Artifact<'fragment'>>(fragment: T, fragmentRef: () => FragmentRefs<T['name']>[], options?: () => CreateFragmentOptions): FragmentList<T>;
@@ -1,4 +1,4 @@
1
- import { AggregatedError, Artifact, Client, DataOf, FragmentOptions, FragmentRefs, MutationOptions, QueryOptions, SchemaMeta, SubscriptionOptions, VariablesOf } from "@mearie/core";
1
+ import { AggregatedError, Artifact, Client, DataOf, FragmentOptions, FragmentRefs, MutationOptions, OperationResult, QueryOptions, SchemaMeta, SubscriptionOptions, VariablesOf } from "@mearie/core";
2
2
  export * from "@mearie/core";
3
3
 
4
4
  //#region src/client-context.svelte.d.ts
@@ -13,32 +13,38 @@ type Query<T extends Artifact<'query'>> = {
13
13
  data: undefined;
14
14
  loading: true;
15
15
  error: undefined;
16
+ metadata: OperationResult['metadata'];
16
17
  refetch: () => void;
17
18
  } | {
18
19
  data: DataOf<T>;
19
20
  loading: false;
20
21
  error: undefined;
22
+ metadata: OperationResult['metadata'];
21
23
  refetch: () => void;
22
24
  } | {
23
25
  data: DataOf<T> | undefined;
24
26
  loading: false;
25
27
  error: AggregatedError;
28
+ metadata: OperationResult['metadata'];
26
29
  refetch: () => void;
27
30
  };
28
31
  type DefinedQuery<T extends Artifact<'query'>> = {
29
32
  data: DataOf<T>;
30
33
  loading: true;
31
34
  error: undefined;
35
+ metadata: OperationResult['metadata'];
32
36
  refetch: () => void;
33
37
  } | {
34
38
  data: DataOf<T>;
35
39
  loading: false;
36
40
  error: undefined;
41
+ metadata: OperationResult['metadata'];
37
42
  refetch: () => void;
38
43
  } | {
39
44
  data: DataOf<T>;
40
45
  loading: false;
41
46
  error: AggregatedError;
47
+ metadata: OperationResult['metadata'];
42
48
  refetch: () => void;
43
49
  };
44
50
  type CreateQueryFn = {
@@ -54,14 +60,17 @@ type Subscription<T extends Artifact<'subscription'>> = {
54
60
  data: undefined;
55
61
  loading: true;
56
62
  error: undefined;
63
+ metadata: OperationResult['metadata'];
57
64
  } | {
58
65
  data: DataOf<T> | undefined;
59
66
  loading: false;
60
67
  error: undefined;
68
+ metadata: OperationResult['metadata'];
61
69
  } | {
62
70
  data: DataOf<T> | undefined;
63
71
  loading: false;
64
72
  error: AggregatedError;
73
+ metadata: OperationResult['metadata'];
65
74
  };
66
75
  type CreateSubscriptionOptions<T extends Artifact<'subscription'>> = SubscriptionOptions & {
67
76
  skip?: boolean;
@@ -75,14 +84,17 @@ type MutationResult<T extends Artifact<'mutation'>> = {
75
84
  data: undefined;
76
85
  loading: true;
77
86
  error: undefined;
87
+ metadata: OperationResult['metadata'];
78
88
  } | {
79
89
  data: DataOf<T> | undefined;
80
90
  loading: false;
81
91
  error: undefined;
92
+ metadata: OperationResult['metadata'];
82
93
  } | {
83
94
  data: DataOf<T> | undefined;
84
95
  loading: false;
85
96
  error: AggregatedError;
97
+ metadata: OperationResult['metadata'];
86
98
  };
87
99
  type CreateMutationOptions = MutationOptions;
88
100
  type Mutation<T extends Artifact<'mutation'>> = [(...[variables, options]: VariablesOf<T> extends Record<string, never> ? [undefined?, CreateMutationOptions?] : [VariablesOf<T>, CreateMutationOptions?]) => Promise<DataOf<T>>, MutationResult<T>];
@@ -92,12 +104,15 @@ declare const createMutation: <T extends Artifact<"mutation">>(mutation: T) => M
92
104
  type CreateFragmentOptions = FragmentOptions;
93
105
  type Fragment<T extends Artifact<'fragment'>> = {
94
106
  data: DataOf<T>;
107
+ metadata: OperationResult['metadata'];
95
108
  };
96
109
  type FragmentList<T extends Artifact<'fragment'>> = {
97
110
  data: DataOf<T>[];
111
+ metadata: OperationResult['metadata'];
98
112
  };
99
113
  type OptionalFragment<T extends Artifact<'fragment'>> = {
100
114
  data: DataOf<T> | null;
115
+ metadata: OperationResult['metadata'];
101
116
  };
102
117
  type CreateFragmentFn = {
103
118
  <T extends Artifact<'fragment'>>(fragment: T, fragmentRef: () => FragmentRefs<T['name']>[], options?: () => CreateFragmentOptions): FragmentList<T>;
@@ -23,6 +23,7 @@ const createQuery = ((query, variables, options) => {
23
23
  let data = $state.raw(initialOpts?.initialData);
24
24
  let loading = $state(!initialOpts?.skip && !initialOpts?.initialData);
25
25
  let error = $state();
26
+ let metadata = $state();
26
27
  let unsubscribe = null;
27
28
  let initialized = false;
28
29
  const execute = () => {
@@ -32,6 +33,7 @@ const createQuery = ((query, variables, options) => {
32
33
  initialized = true;
33
34
  error = void 0;
34
35
  unsubscribe = pipe(client.executeQuery(query, typeof variables === "function" ? variables() : void 0, options?.()), subscribe({ next: (result) => {
36
+ metadata = result.metadata;
35
37
  if (result.errors && result.errors.length > 0) {
36
38
  error = new AggregatedError(result.errors);
37
39
  loading = false;
@@ -60,6 +62,9 @@ const createQuery = ((query, variables, options) => {
60
62
  get error() {
61
63
  return error;
62
64
  },
65
+ get metadata() {
66
+ return metadata;
67
+ },
63
68
  refetch
64
69
  };
65
70
  });
@@ -71,11 +76,13 @@ const createSubscription = (subscription, ...[variables, options]) => {
71
76
  let data = $state.raw();
72
77
  let loading = $state(!options?.().skip);
73
78
  let error = $state();
79
+ let metadata = $state();
74
80
  $effect(() => {
75
81
  if (options?.().skip) return;
76
82
  loading = true;
77
83
  error = void 0;
78
84
  const unsubscribe = pipe(client.executeSubscription(subscription, typeof variables === "function" ? variables() : void 0, options?.()), subscribe({ next: (result) => {
85
+ metadata = result.metadata;
79
86
  if (result.errors && result.errors.length > 0) {
80
87
  const err = new AggregatedError(result.errors);
81
88
  error = err;
@@ -101,6 +108,9 @@ const createSubscription = (subscription, ...[variables, options]) => {
101
108
  },
102
109
  get error() {
103
110
  return error;
111
+ },
112
+ get metadata() {
113
+ return metadata;
104
114
  }
105
115
  };
106
116
  };
@@ -112,11 +122,14 @@ const createMutation = (mutation) => {
112
122
  let data = $state();
113
123
  let loading = $state(false);
114
124
  let error = $state();
125
+ let metadata = $state();
115
126
  const execute = async (variables, options) => {
116
127
  loading = true;
117
128
  error = void 0;
129
+ metadata = void 0;
118
130
  try {
119
131
  const result = await pipe(client.executeMutation(mutation, variables, options), take(1), collect);
132
+ metadata = result.metadata;
120
133
  if (result.errors && result.errors.length > 0) {
121
134
  const err = new AggregatedError(result.errors);
122
135
  error = err;
@@ -141,6 +154,9 @@ const createMutation = (mutation) => {
141
154
  },
142
155
  get error() {
143
156
  return error;
157
+ },
158
+ get metadata() {
159
+ return metadata;
144
160
  }
145
161
  }];
146
162
  };
@@ -151,29 +167,39 @@ const createFragment = ((fragment, fragmentRef, options) => {
151
167
  const client = getClient();
152
168
  const ref = fragmentRef();
153
169
  let data;
170
+ let initialMetadata;
154
171
  if (ref == null) data = null;
155
172
  else {
156
173
  const result = pipe(client.executeFragment(fragment, $state.snapshot(ref), options?.()), peek);
157
174
  if (result.data === void 0) throw new Error("Fragment data not found");
158
175
  data = result.data;
176
+ initialMetadata = result.metadata;
159
177
  }
160
178
  let state = $state(data);
179
+ let metadata = $state(initialMetadata);
161
180
  $effect(() => {
162
181
  const currentRef = fragmentRef();
163
182
  if (currentRef == null) {
164
183
  state = null;
184
+ metadata = void 0;
165
185
  return;
166
186
  }
167
187
  const unsubscribe = pipe(client.executeFragment(fragment, $state.snapshot(currentRef), options?.()), subscribe({ next: (result) => {
188
+ metadata = result.metadata;
168
189
  if (result.data !== void 0) state = result.data;
169
190
  } }));
170
191
  return () => {
171
192
  unsubscribe();
172
193
  };
173
194
  });
174
- return { get data() {
175
- return state;
176
- } };
195
+ return {
196
+ get data() {
197
+ return state;
198
+ },
199
+ get metadata() {
200
+ return metadata;
201
+ }
202
+ };
177
203
  });
178
204
 
179
205
  //#endregion
@@ -4,6 +4,7 @@ export const createFragment = ((fragment, fragmentRef, options) => {
4
4
  const client = getClient();
5
5
  const ref = fragmentRef();
6
6
  let data;
7
+ let initialMetadata;
7
8
  if (ref == null) {
8
9
  data = null;
9
10
  }
@@ -13,16 +14,20 @@ export const createFragment = ((fragment, fragmentRef, options) => {
13
14
  throw new Error('Fragment data not found');
14
15
  }
15
16
  data = result.data;
17
+ initialMetadata = result.metadata;
16
18
  }
17
19
  let state = $state(data);
20
+ let metadata = $state(initialMetadata);
18
21
  $effect(() => {
19
22
  const currentRef = fragmentRef();
20
23
  if (currentRef == null) {
21
24
  state = null;
25
+ metadata = undefined;
22
26
  return;
23
27
  }
24
28
  const unsubscribe = pipe(client.executeFragment(fragment, $state.snapshot(currentRef), options?.()), subscribe({
25
29
  next: (result) => {
30
+ metadata = result.metadata;
26
31
  if (result.data !== undefined) {
27
32
  state = result.data;
28
33
  }
@@ -36,5 +41,8 @@ export const createFragment = ((fragment, fragmentRef, options) => {
36
41
  get data() {
37
42
  return state;
38
43
  },
44
+ get metadata() {
45
+ return metadata;
46
+ },
39
47
  };
40
48
  });
@@ -6,13 +6,16 @@ export const createMutation = (mutation) => {
6
6
  let data = $state();
7
7
  let loading = $state(false);
8
8
  let error = $state();
9
+ let metadata = $state();
9
10
  const execute = async (variables, options) => {
10
11
  loading = true;
11
12
  error = undefined;
13
+ metadata = undefined;
12
14
  try {
13
15
  const result = await pipe(
14
16
  // @ts-expect-error - conditional signature makes this hard to type correctly
15
17
  client.executeMutation(mutation, variables, options), take(1), collect);
18
+ metadata = result.metadata;
16
19
  if (result.errors && result.errors.length > 0) {
17
20
  const err = new AggregatedError(result.errors);
18
21
  error = err;
@@ -43,6 +46,9 @@ export const createMutation = (mutation) => {
43
46
  get error() {
44
47
  return error;
45
48
  },
49
+ get metadata() {
50
+ return metadata;
51
+ },
46
52
  },
47
53
  ];
48
54
  };
@@ -8,6 +8,7 @@ export const createQuery = ((query, variables, options) => {
8
8
  let data = $state.raw(initialOpts?.initialData);
9
9
  let loading = $state(!initialOpts?.skip && !initialOpts?.initialData);
10
10
  let error = $state();
11
+ let metadata = $state();
11
12
  let unsubscribe = null;
12
13
  let initialized = false;
13
14
  const execute = () => {
@@ -24,6 +25,7 @@ export const createQuery = ((query, variables, options) => {
24
25
  // @ts-expect-error - conditional signature makes this hard to type correctly
25
26
  client.executeQuery(query, typeof variables === 'function' ? variables() : undefined, options?.()), subscribe({
26
27
  next: (result) => {
28
+ metadata = result.metadata;
27
29
  if (result.errors && result.errors.length > 0) {
28
30
  error = new AggregatedError(result.errors);
29
31
  loading = false;
@@ -54,6 +56,9 @@ export const createQuery = ((query, variables, options) => {
54
56
  get error() {
55
57
  return error;
56
58
  },
59
+ get metadata() {
60
+ return metadata;
61
+ },
57
62
  refetch,
58
63
  };
59
64
  });
@@ -6,6 +6,7 @@ export const createSubscription = (subscription, ...[variables, options]) => {
6
6
  let data = $state.raw();
7
7
  let loading = $state(!options?.().skip);
8
8
  let error = $state();
9
+ let metadata = $state();
9
10
  $effect(() => {
10
11
  if (options?.().skip) {
11
12
  return;
@@ -16,6 +17,7 @@ export const createSubscription = (subscription, ...[variables, options]) => {
16
17
  // @ts-expect-error - conditional signature makes this hard to type correctly
17
18
  client.executeSubscription(subscription, typeof variables === 'function' ? variables() : undefined, options?.()), subscribe({
18
19
  next: (result) => {
20
+ metadata = result.metadata;
19
21
  if (result.errors && result.errors.length > 0) {
20
22
  const err = new AggregatedError(result.errors);
21
23
  error = err;
@@ -44,5 +46,8 @@ export const createSubscription = (subscription, ...[variables, options]) => {
44
46
  get error() {
45
47
  return error;
46
48
  },
49
+ get metadata() {
50
+ return metadata;
51
+ },
47
52
  };
48
53
  };
package/package.json CHANGED
@@ -1,15 +1,22 @@
1
1
  {
2
2
  "name": "@mearie/svelte",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "description": "Type-safe, zero-overhead GraphQL client",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "graphql-client",
8
8
  "typescript",
9
+ "type-safe",
9
10
  "codegen",
10
- "cache"
11
+ "cache",
12
+ "normalized-cache",
13
+ "react",
14
+ "vue",
15
+ "svelte",
16
+ "solid",
17
+ "vite"
11
18
  ],
12
- "homepage": "https://github.com/devunt/mearie#readme",
19
+ "homepage": "https://mearie.dev/",
13
20
  "bugs": {
14
21
  "url": "https://github.com/devunt/mearie/issues"
15
22
  },
@@ -46,7 +53,7 @@
46
53
  "README.md"
47
54
  ],
48
55
  "dependencies": {
49
- "@mearie/core": "0.2.4"
56
+ "@mearie/core": "0.3.0"
50
57
  },
51
58
  "devDependencies": {
52
59
  "svelte": "^5.53.3",