@isograph/react 0.0.0-main-01f29812 → 0.0.0-main-7f010fe1
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 +7 -4
- package/dist/index.js +8 -3
- package/package.json +4 -4
- package/src/cache.tsx +3 -1
- package/src/componentCache.ts +1 -1
- package/src/index.tsx +19 -7
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,20 +88,23 @@ 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
|
-
type
|
101
|
+
type ExtractReadFromStore<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
|
-
|
104
|
+
export declare function useLazyReference<TEntrypoint>(entrypoint: TEntrypoint | ((_: any) => any), variables: {
|
105
|
+
[key: string]: Variable;
|
106
|
+
}): {
|
107
|
+
queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverProps<TEntrypoint>, ExtractResolverResult<TEntrypoint>>;
|
105
108
|
};
|
106
109
|
export declare function useRead<TReadFromStore extends Object, TResolverProps, TResolverResult>(fragmentReference: FragmentReference<TReadFromStore, TResolverProps, TResolverResult>): TResolverResult;
|
107
110
|
export declare function read<TReadFromStore extends Object, TResolverProps, TResolverResult>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, TResolverProps, TResolverResult>): TResolverResult;
|
package/dist/index.js
CHANGED
@@ -28,7 +28,6 @@ function assertIsEntrypoint(value) {
|
|
28
28
|
function useLazyReference(entrypoint, variables) {
|
29
29
|
const environment = (0, IsographEnvironment_1.useIsographEnvironment)();
|
30
30
|
assertIsEntrypoint(entrypoint);
|
31
|
-
// Typechecking fails here... TODO investigate
|
32
31
|
const cache = (0, cache_1.getOrCreateCacheForArtifact)(environment, entrypoint, variables);
|
33
32
|
// TODO add comment explaining why we never use this value
|
34
33
|
// @ts-ignore
|
@@ -58,6 +57,7 @@ function read(environment, fragmentReference) {
|
|
58
57
|
throw (0, cache_1.onNextChange)(environment);
|
59
58
|
}
|
60
59
|
else {
|
60
|
+
// @ts-expect-error This not properly typed yet
|
61
61
|
return fragmentReference.readerArtifact.resolver(data.data);
|
62
62
|
}
|
63
63
|
}
|
@@ -207,7 +207,10 @@ function readData(environment, ast, root, variables, nestedRefetchQueries) {
|
|
207
207
|
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
208
208
|
const refetchQueryArtifact = refetchQuery.artifact;
|
209
209
|
const allowedVariables = refetchQuery.allowedVariables;
|
210
|
-
target[field.alias] = field.readerArtifact.resolver(environment,
|
210
|
+
target[field.alias] = field.readerArtifact.resolver(environment,
|
211
|
+
// resolvers for refetch fields take 3 args, and this is not reflected in types
|
212
|
+
// @ts-expect-error
|
213
|
+
refetchQueryArtifact, Object.assign(Object.assign({}, data.data), filterVariables(variables, allowedVariables)));
|
211
214
|
}
|
212
215
|
break;
|
213
216
|
}
|
@@ -233,7 +236,9 @@ function readData(environment, ast, root, variables, nestedRefetchQueries) {
|
|
233
236
|
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
234
237
|
const refetchQueryArtifact = refetchQuery.artifact;
|
235
238
|
const allowedVariables = refetchQuery.allowedVariables;
|
236
|
-
target[field.alias] = field.readerArtifact.resolver(environment,
|
239
|
+
target[field.alias] = field.readerArtifact.resolver(environment,
|
240
|
+
// @ts-expect-error
|
241
|
+
refetchQueryArtifact, data.data, filterVariables(variables, allowedVariables));
|
237
242
|
}
|
238
243
|
break;
|
239
244
|
}
|
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-7f010fe1",
|
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-7f010fe1",
|
19
|
+
"@isograph/react-disposable-state": "0.0.0-main-7f010fe1",
|
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
|
};
|
@@ -200,7 +203,7 @@ function assertIsEntrypoint<
|
|
200
203
|
if (typeof value === 'function') throw new Error('Not a string');
|
201
204
|
}
|
202
205
|
|
203
|
-
type
|
206
|
+
type ExtractReadFromStore<Type> =
|
204
207
|
Type extends IsographEntrypoint<infer X, any, any> ? X : never;
|
205
208
|
type ExtractResolverProps<Type> =
|
206
209
|
Type extends IsographEntrypoint<any, infer X, any> ? X : never;
|
@@ -217,17 +220,20 @@ 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
|
+
ExtractReadFromStore<TEntrypoint>,
|
224
227
|
ExtractResolverProps<TEntrypoint>,
|
225
228
|
ExtractResolverResult<TEntrypoint>
|
226
229
|
>;
|
227
230
|
} {
|
228
231
|
const environment = useIsographEnvironment();
|
229
|
-
assertIsEntrypoint
|
230
|
-
|
232
|
+
assertIsEntrypoint<
|
233
|
+
ExtractReadFromStore<TEntrypoint>,
|
234
|
+
ExtractResolverProps<TEntrypoint>,
|
235
|
+
ExtractResolverResult<TEntrypoint>
|
236
|
+
>(entrypoint);
|
231
237
|
const cache = getOrCreateCacheForArtifact<ExtractResolverResult<TEntrypoint>>(
|
232
238
|
environment,
|
233
239
|
entrypoint,
|
@@ -237,7 +243,9 @@ export function useLazyReference<TEntrypoint>(
|
|
237
243
|
// TODO add comment explaining why we never use this value
|
238
244
|
// @ts-ignore
|
239
245
|
const data =
|
240
|
-
useLazyDisposableState<PromiseWrapper<
|
246
|
+
useLazyDisposableState<PromiseWrapper<ExtractResolverResult<TEntrypoint>>>(
|
247
|
+
cache,
|
248
|
+
).state;
|
241
249
|
|
242
250
|
return {
|
243
251
|
queryReference: {
|
@@ -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),
|