@isograph/react 0.0.0-main-01f29812 → 0.0.0-main-5c978d1b
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/dist/cache.js +3 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +13 -3
- package/package.json +4 -4
- package/src/cache.tsx +3 -1
- package/src/componentCache.ts +1 -1
- package/src/index.tsx +15 -3
package/dist/cache.js
CHANGED
@@ -211,7 +211,8 @@ function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
|
|
211
211
|
}
|
212
212
|
default: {
|
213
213
|
// TODO configure eslint to allow unused vars starting with _
|
214
|
-
|
214
|
+
// @ts-expect-error
|
215
|
+
const _ = argumentValue;
|
215
216
|
throw new Error('Unexpected case');
|
216
217
|
}
|
217
218
|
}
|
@@ -237,6 +238,7 @@ function getNetworkResponseKey(astNode) {
|
|
237
238
|
break;
|
238
239
|
}
|
239
240
|
default: {
|
241
|
+
// @ts-expect-error
|
240
242
|
let _ = argumentValue;
|
241
243
|
throw new Error('Unexpected case');
|
242
244
|
}
|
package/dist/index.d.ts
CHANGED
@@ -88,19 +88,22 @@ export type ArgumentValue = {
|
|
88
88
|
kind: 'Literal';
|
89
89
|
value: any;
|
90
90
|
};
|
91
|
+
type Variable = any;
|
91
92
|
export type FragmentReference<TReadFromStore extends Object, TResolverProps, TResolverResult> = {
|
92
93
|
kind: 'FragmentReference';
|
93
94
|
readerArtifact: ReaderArtifact<TReadFromStore, TResolverProps, TResolverResult>;
|
94
95
|
root: DataId;
|
95
96
|
variables: {
|
96
|
-
[index: string]:
|
97
|
+
[index: string]: Variable;
|
97
98
|
} | null;
|
98
99
|
nestedRefetchQueries: RefetchQueryArtifactWrapper[];
|
99
100
|
};
|
100
101
|
type ExtractTReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any, any> ? X : never;
|
101
102
|
type ExtractResolverProps<Type> = Type extends IsographEntrypoint<any, infer X, any> ? X : never;
|
102
103
|
type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, any, infer X> ? X : never;
|
103
|
-
export declare function useLazyReference<TEntrypoint>(entrypoint: TEntrypoint | ((_: any) => any), variables:
|
104
|
+
export declare function useLazyReference<TEntrypoint>(entrypoint: TEntrypoint | ((_: any) => any), variables: {
|
105
|
+
[key: string]: Variable;
|
106
|
+
}): {
|
104
107
|
queryReference: FragmentReference<ExtractTReadFromStore<TEntrypoint>, ExtractResolverProps<TEntrypoint>, ExtractResolverResult<TEntrypoint>>;
|
105
108
|
};
|
106
109
|
export declare function useRead<TReadFromStore extends Object, TResolverProps, TResolverResult>(fragmentReference: FragmentReference<TReadFromStore, TResolverProps, TResolverResult>): TResolverResult;
|
package/dist/index.js
CHANGED
@@ -29,13 +29,17 @@ function useLazyReference(entrypoint, variables) {
|
|
29
29
|
const environment = (0, IsographEnvironment_1.useIsographEnvironment)();
|
30
30
|
assertIsEntrypoint(entrypoint);
|
31
31
|
// Typechecking fails here... TODO investigate
|
32
|
-
const cache = (0, cache_1.getOrCreateCacheForArtifact)(environment,
|
32
|
+
const cache = (0, cache_1.getOrCreateCacheForArtifact)(environment,
|
33
|
+
// @ts-expect-error
|
34
|
+
entrypoint, variables);
|
33
35
|
// TODO add comment explaining why we never use this value
|
34
36
|
// @ts-ignore
|
35
37
|
const data = (0, react_disposable_state_1.useLazyDisposableState)(cache).state;
|
36
38
|
return {
|
37
39
|
queryReference: {
|
38
40
|
kind: 'FragmentReference',
|
41
|
+
// This cannot be fixed until iso has generated types
|
42
|
+
// @ts-expect-error
|
39
43
|
readerArtifact: entrypoint.readerArtifact,
|
40
44
|
root: IsographEnvironment_1.ROOT_ID,
|
41
45
|
variables,
|
@@ -58,6 +62,7 @@ function read(environment, fragmentReference) {
|
|
58
62
|
throw (0, cache_1.onNextChange)(environment);
|
59
63
|
}
|
60
64
|
else {
|
65
|
+
// @ts-expect-error This not properly typed yet
|
61
66
|
return fragmentReference.readerArtifact.resolver(data.data);
|
62
67
|
}
|
63
68
|
}
|
@@ -207,7 +212,10 @@ function readData(environment, ast, root, variables, nestedRefetchQueries) {
|
|
207
212
|
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
208
213
|
const refetchQueryArtifact = refetchQuery.artifact;
|
209
214
|
const allowedVariables = refetchQuery.allowedVariables;
|
210
|
-
target[field.alias] = field.readerArtifact.resolver(environment,
|
215
|
+
target[field.alias] = field.readerArtifact.resolver(environment,
|
216
|
+
// resolvers for refetch fields take 3 args, and this is not reflected in types
|
217
|
+
// @ts-expect-error
|
218
|
+
refetchQueryArtifact, Object.assign(Object.assign({}, data.data), filterVariables(variables, allowedVariables)));
|
211
219
|
}
|
212
220
|
break;
|
213
221
|
}
|
@@ -233,7 +241,9 @@ function readData(environment, ast, root, variables, nestedRefetchQueries) {
|
|
233
241
|
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
234
242
|
const refetchQueryArtifact = refetchQuery.artifact;
|
235
243
|
const allowedVariables = refetchQuery.allowedVariables;
|
236
|
-
target[field.alias] = field.readerArtifact.resolver(environment,
|
244
|
+
target[field.alias] = field.readerArtifact.resolver(environment,
|
245
|
+
// @ts-expect-error
|
246
|
+
refetchQueryArtifact, data.data, filterVariables(variables, allowedVariables));
|
237
247
|
}
|
238
248
|
break;
|
239
249
|
}
|
package/package.json
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
{
|
2
2
|
"name": "@isograph/react",
|
3
|
-
"version": "0.0.0-main-
|
3
|
+
"version": "0.0.0-main-5c978d1b",
|
4
4
|
"description": "Use Isograph with React",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
7
7
|
"author": "Isograph Labs",
|
8
8
|
"license": "MIT",
|
9
9
|
"scripts": {
|
10
|
-
"compile": "rm -rf dist/* &&
|
10
|
+
"compile": "rm -rf dist/* && tsc -p tsconfig.pkg.json",
|
11
11
|
"compile-watch": "tsc -p tsconfig.pkg.json --watch",
|
12
12
|
"test": "echo no tests yet",
|
13
13
|
"test-watch": "vitest watch",
|
@@ -15,8 +15,8 @@
|
|
15
15
|
"prepack": "yarn run test && yarn run compile"
|
16
16
|
},
|
17
17
|
"dependencies": {
|
18
|
-
"@isograph/disposable-types": "0.0.0-main-
|
19
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
18
|
+
"@isograph/disposable-types": "0.0.0-main-5c978d1b",
|
19
|
+
"@isograph/react-disposable-state": "0.0.0-main-5c978d1b",
|
20
20
|
"react": "^18.2.0"
|
21
21
|
},
|
22
22
|
"devDependencies": {
|
package/src/cache.tsx
CHANGED
@@ -402,7 +402,8 @@ function getStoreKeyChunkForArgumentValue(
|
|
402
402
|
}
|
403
403
|
default: {
|
404
404
|
// TODO configure eslint to allow unused vars starting with _
|
405
|
-
|
405
|
+
// @ts-expect-error
|
406
|
+
const _: never = argumentValue;
|
406
407
|
throw new Error('Unexpected case');
|
407
408
|
}
|
408
409
|
}
|
@@ -435,6 +436,7 @@ function getNetworkResponseKey(
|
|
435
436
|
break;
|
436
437
|
}
|
437
438
|
default: {
|
439
|
+
// @ts-expect-error
|
438
440
|
let _: never = argumentValue;
|
439
441
|
throw new Error('Unexpected case');
|
440
442
|
}
|
package/src/componentCache.ts
CHANGED
@@ -23,7 +23,7 @@ export function getOrCreateCachedComponent(
|
|
23
23
|
byArgs[stringifiedArgs] =
|
24
24
|
byArgs[stringifiedArgs] ??
|
25
25
|
(() => {
|
26
|
-
function Component(additionalRuntimeProps) {
|
26
|
+
function Component(additionalRuntimeProps: { [key: string]: any }) {
|
27
27
|
const data = readButDoNotEvaluate(environment, {
|
28
28
|
kind: 'FragmentReference',
|
29
29
|
readerArtifact: readerArtifact,
|
package/src/index.tsx
CHANGED
@@ -164,6 +164,9 @@ export type ArgumentValue =
|
|
164
164
|
value: any;
|
165
165
|
};
|
166
166
|
|
167
|
+
// TODO type this better
|
168
|
+
type Variable = any;
|
169
|
+
|
167
170
|
export type FragmentReference<
|
168
171
|
TReadFromStore extends Object,
|
169
172
|
TResolverProps,
|
@@ -176,7 +179,7 @@ export type FragmentReference<
|
|
176
179
|
TResolverResult
|
177
180
|
>;
|
178
181
|
root: DataId;
|
179
|
-
variables: { [index: string]:
|
182
|
+
variables: { [index: string]: Variable } | null;
|
180
183
|
// TODO: We should instead have ReaderAst<TResolverProps>
|
181
184
|
nestedRefetchQueries: RefetchQueryArtifactWrapper[];
|
182
185
|
};
|
@@ -217,7 +220,7 @@ export function useLazyReference<TEntrypoint>(
|
|
217
220
|
// iso`...`. At runtime, we confirm that the passed-in `iso` literal is actually
|
218
221
|
// an entrypoint.
|
219
222
|
| ((_: any) => any),
|
220
|
-
variables:
|
223
|
+
variables: { [key: string]: Variable },
|
221
224
|
): {
|
222
225
|
queryReference: FragmentReference<
|
223
226
|
ExtractTReadFromStore<TEntrypoint>,
|
@@ -230,6 +233,7 @@ export function useLazyReference<TEntrypoint>(
|
|
230
233
|
// Typechecking fails here... TODO investigate
|
231
234
|
const cache = getOrCreateCacheForArtifact<ExtractResolverResult<TEntrypoint>>(
|
232
235
|
environment,
|
236
|
+
// @ts-expect-error
|
233
237
|
entrypoint,
|
234
238
|
variables,
|
235
239
|
);
|
@@ -237,11 +241,15 @@ export function useLazyReference<TEntrypoint>(
|
|
237
241
|
// TODO add comment explaining why we never use this value
|
238
242
|
// @ts-ignore
|
239
243
|
const data =
|
240
|
-
useLazyDisposableState<PromiseWrapper<
|
244
|
+
useLazyDisposableState<PromiseWrapper<ExtractResolverResult<TEntrypoint>>>(
|
245
|
+
cache,
|
246
|
+
).state;
|
241
247
|
|
242
248
|
return {
|
243
249
|
queryReference: {
|
244
250
|
kind: 'FragmentReference',
|
251
|
+
// This cannot be fixed until iso has generated types
|
252
|
+
// @ts-expect-error
|
245
253
|
readerArtifact: entrypoint.readerArtifact,
|
246
254
|
root: ROOT_ID,
|
247
255
|
variables,
|
@@ -289,6 +297,7 @@ export function read<
|
|
289
297
|
if (data.kind === 'MissingData') {
|
290
298
|
throw onNextChange(environment);
|
291
299
|
} else {
|
300
|
+
// @ts-expect-error This not properly typed yet
|
292
301
|
return fragmentReference.readerArtifact.resolver(data.data);
|
293
302
|
}
|
294
303
|
} else if (variant.kind === 'Component') {
|
@@ -496,6 +505,8 @@ function readData<TReadFromStore>(
|
|
496
505
|
|
497
506
|
target[field.alias] = field.readerArtifact.resolver(
|
498
507
|
environment,
|
508
|
+
// resolvers for refetch fields take 3 args, and this is not reflected in types
|
509
|
+
// @ts-expect-error
|
499
510
|
refetchQueryArtifact,
|
500
511
|
{
|
501
512
|
...data.data,
|
@@ -536,6 +547,7 @@ function readData<TReadFromStore>(
|
|
536
547
|
|
537
548
|
target[field.alias] = field.readerArtifact.resolver(
|
538
549
|
environment,
|
550
|
+
// @ts-expect-error
|
539
551
|
refetchQueryArtifact,
|
540
552
|
data.data,
|
541
553
|
filterVariables(variables, allowedVariables),
|