@isograph/react 0.0.0-main-8821fa52 → 0.0.0-main-7faadacd

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @isograph/react@0.0.0-main-8821fa52 compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
2
+ > @isograph/react@0.0.0-main-7faadacd compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
3
3
  > rm -rf dist/* && tsc -p tsconfig.pkg.json
4
4
 
@@ -1,8 +1,9 @@
1
1
  import { type EncounteredIds } from './cache';
2
+ import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
2
3
  import { ExtractData, FragmentReference, Variables, type UnknownTReadFromStore } from './FragmentReference';
3
4
  import { IsographEnvironment, type DataTypeValue, type Link, type StoreRecord } from './IsographEnvironment';
4
5
  import { PromiseWrapper } from './PromiseWrapper';
5
- import { ReaderAst, type ReaderLinkedField, type ReaderScalarField } from './reader';
6
+ import { ReaderAst, type ReaderImperativelyLoadedField, type ReaderLinkedField, type ReaderScalarField } from './reader';
6
7
  export type WithEncounteredRecords<T> = {
7
8
  readonly encounteredRecords: EncounteredIds;
8
9
  readonly item: ExtractData<T>;
@@ -25,4 +26,5 @@ export type NetworkRequestReaderOptions = {
25
26
  throwOnNetworkError: boolean;
26
27
  };
27
28
  export declare function getNetworkRequestOptionsWithDefaults(networkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): NetworkRequestReaderOptions;
29
+ export declare function readImperativelyLoadedField(environment: IsographEnvironment, field: ReaderImperativelyLoadedField, root: Link, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions, mutableEncounteredRecords: EncounteredIds): ReadDataResult<unknown>;
28
30
  //# sourceMappingURL=read.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAQjB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAEL,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,sBAAsB,CAAC,cAAc,CAAC,CAiExC;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B,qBAAqB,CAAC,IAAI,CAAC,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;CAC3B,CAAC;AA6dN,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,GACnB,cAAc,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,CAa3E;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EAEzC,QAAQ,EAAE,CAAC,cAAc,EACvB,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,IAAI,KACP,cAAc,CAAC,MAAM,CAAC,GAC1B,cAAc,CAAC,OAAO,CAAC,CA6JzB;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,qBAAqB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,GAClE,2BAA2B,CAK7B"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAEL,wCAAwC,EAEzC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAEL,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,sBAAsB,CAAC,cAAc,CAAC,CAiExC;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B,qBAAqB,CAAC,IAAI,CAAC,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;CAC3B,CAAC;AAubN,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,GACnB,cAAc,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,CAa3E;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EAEzC,QAAQ,EAAE,CAAC,cAAc,EACvB,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,IAAI,KACP,cAAc,CAAC,MAAM,CAAC,GAC1B,cAAc,CAAC,OAAO,CAAC,CA6JzB;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,qBAAqB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,GAClE,2BAA2B,CAK7B;AAiBD,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,6BAA6B,EACpC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,wCAAwC,EAAE,EAChE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,EAClD,yBAAyB,EAAE,cAAc,GACxC,cAAc,CAAC,OAAO,CAAC,CAuDzB"}
package/dist/core/read.js CHANGED
@@ -4,6 +4,7 @@ exports.readButDoNotEvaluate = readButDoNotEvaluate;
4
4
  exports.readScalarFieldData = readScalarFieldData;
5
5
  exports.readLinkedFieldData = readLinkedFieldData;
6
6
  exports.getNetworkRequestOptionsWithDefaults = getNetworkRequestOptionsWithDefaults;
7
+ exports.readImperativelyLoadedField = readImperativelyLoadedField;
7
8
  const cache_1 = require("./cache");
8
9
  const componentCache_1 = require("./componentCache");
9
10
  const IsographEnvironment_1 = require("./IsographEnvironment");
@@ -99,41 +100,11 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
99
100
  break;
100
101
  }
101
102
  case 'ImperativelyLoadedField': {
102
- // First, we read the data using the refetch reader AST (i.e. read out the
103
- // id field).
104
- const data = readData(environment, field.refetchReaderArtifact.readerAst, root, variables,
105
- // Refetch fields just read the id, and don't need refetch query artifacts
106
- [],
107
- // This is probably indicative of the fact that we are doing redundant checks
108
- // on the status of this network request...
109
- networkRequest, networkRequestOptions, mutableEncounteredRecords);
103
+ const data = readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
110
104
  if (data.kind === 'MissingData') {
111
- return {
112
- kind: 'MissingData',
113
- reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
114
- nestedReason: data,
115
- recordLink: data.recordLink,
116
- };
117
- }
118
- else {
119
- const refetchQueryIndex = field.refetchQuery;
120
- const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
121
- if (refetchQuery == null) {
122
- throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
123
- }
124
- const refetchQueryArtifact = refetchQuery.artifact;
125
- const allowedVariables = refetchQuery.allowedVariables;
126
- // Second, we allow the user to call the resolver, which will ultimately
127
- // use the resolver reader AST to get the resolver parameters.
128
- target[field.alias] = (args) => [
129
- // Stable id
130
- root.__link + '__' + field.name,
131
- // Fetcher
132
- field.refetchReaderArtifact.resolver(environment, refetchQueryArtifact, data.data, filterVariables(Object.assign(Object.assign({}, args), variables), allowedVariables), root,
133
- // TODO these params should be removed
134
- null, []),
135
- ];
105
+ return data;
136
106
  }
107
+ target[field.alias] = data.data;
137
108
  break;
138
109
  }
139
110
  case 'Resolver': {
@@ -540,3 +511,43 @@ function stableStringifyArgs(args) {
540
511
  }
541
512
  return s;
542
513
  }
514
+ function readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
515
+ // First, we read the data using the refetch reader AST (i.e. read out the
516
+ // id field).
517
+ const data = readData(environment, field.refetchReaderArtifact.readerAst, root, variables,
518
+ // Refetch fields just read the id, and don't need refetch query artifacts
519
+ [],
520
+ // This is probably indicative of the fact that we are doing redundant checks
521
+ // on the status of this network request...
522
+ networkRequest, networkRequestOptions, mutableEncounteredRecords);
523
+ if (data.kind === 'MissingData') {
524
+ return {
525
+ kind: 'MissingData',
526
+ reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
527
+ nestedReason: data,
528
+ recordLink: data.recordLink,
529
+ };
530
+ }
531
+ else {
532
+ const refetchQueryIndex = field.refetchQuery;
533
+ const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
534
+ if (refetchQuery == null) {
535
+ throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
536
+ }
537
+ const refetchQueryArtifact = refetchQuery.artifact;
538
+ const allowedVariables = refetchQuery.allowedVariables;
539
+ // Second, we allow the user to call the resolver, which will ultimately
540
+ // use the resolver reader AST to get the resolver parameters.
541
+ return {
542
+ kind: 'Success',
543
+ data: (args) => [
544
+ // Stable id
545
+ root.__link + '__' + field.name,
546
+ // Fetcher
547
+ field.refetchReaderArtifact.resolver(environment, refetchQueryArtifact, data.data, filterVariables(Object.assign(Object.assign({}, args), variables), allowedVariables), root,
548
+ // TODO these params should be removed
549
+ null, []),
550
+ ],
551
+ };
552
+ }
553
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-8821fa52",
3
+ "version": "0.0.0-main-7faadacd",
4
4
  "description": "Use Isograph with React",
5
5
  "homepage": "https://isograph.dev",
6
6
  "main": "dist/index.js",
@@ -20,9 +20,9 @@
20
20
  "iso-watch": "cross-env ../../target/debug/isograph_cli --config ./isograph.config.json --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@isograph/disposable-types": "0.0.0-main-8821fa52",
24
- "@isograph/react-disposable-state": "0.0.0-main-8821fa52",
25
- "@isograph/reference-counted-pointer": "0.0.0-main-8821fa52"
23
+ "@isograph/disposable-types": "0.0.0-main-7faadacd",
24
+ "@isograph/react-disposable-state": "0.0.0-main-7faadacd",
25
+ "@isograph/reference-counted-pointer": "0.0.0-main-7faadacd"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": "^18.0.0 || ^19.0.0"
package/src/core/read.ts CHANGED
@@ -38,6 +38,7 @@ import {
38
38
  } from './PromiseWrapper';
39
39
  import {
40
40
  ReaderAst,
41
+ type ReaderImperativelyLoadedField,
41
42
  type ReaderLinkedField,
42
43
  type ReaderScalarField,
43
44
  } from './reader';
@@ -211,58 +212,20 @@ function readData<TReadFromStore>(
211
212
  break;
212
213
  }
213
214
  case 'ImperativelyLoadedField': {
214
- // First, we read the data using the refetch reader AST (i.e. read out the
215
- // id field).
216
- const data = readData(
215
+ const data = readImperativelyLoadedField(
217
216
  environment,
218
- field.refetchReaderArtifact.readerAst,
217
+ field,
219
218
  root,
220
219
  variables,
221
- // Refetch fields just read the id, and don't need refetch query artifacts
222
- [],
223
- // This is probably indicative of the fact that we are doing redundant checks
224
- // on the status of this network request...
220
+ nestedRefetchQueries,
225
221
  networkRequest,
226
222
  networkRequestOptions,
227
223
  mutableEncounteredRecords,
228
224
  );
229
225
  if (data.kind === 'MissingData') {
230
- return {
231
- kind: 'MissingData',
232
- reason:
233
- 'Missing data for ' + field.alias + ' on root ' + root.__link,
234
- nestedReason: data,
235
- recordLink: data.recordLink,
236
- };
237
- } else {
238
- const refetchQueryIndex = field.refetchQuery;
239
- const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
240
- if (refetchQuery == null) {
241
- throw new Error(
242
- 'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',
243
- );
244
- }
245
- const refetchQueryArtifact = refetchQuery.artifact;
246
- const allowedVariables = refetchQuery.allowedVariables;
247
-
248
- // Second, we allow the user to call the resolver, which will ultimately
249
- // use the resolver reader AST to get the resolver parameters.
250
- target[field.alias] = (args: any) => [
251
- // Stable id
252
- root.__link + '__' + field.name,
253
- // Fetcher
254
- field.refetchReaderArtifact.resolver(
255
- environment,
256
- refetchQueryArtifact,
257
- data.data,
258
- filterVariables({ ...args, ...variables }, allowedVariables),
259
- root,
260
- // TODO these params should be removed
261
- null,
262
- [],
263
- ),
264
- ];
226
+ return data;
265
227
  }
228
+ target[field.alias] = data.data;
266
229
  break;
267
230
  }
268
231
  case 'Resolver': {
@@ -830,3 +793,69 @@ function stableStringifyArgs(args: object) {
830
793
  }
831
794
  return s;
832
795
  }
796
+
797
+ export function readImperativelyLoadedField(
798
+ environment: IsographEnvironment,
799
+ field: ReaderImperativelyLoadedField,
800
+ root: Link,
801
+ variables: Variables,
802
+ nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],
803
+ networkRequest: PromiseWrapper<void, any>,
804
+ networkRequestOptions: NetworkRequestReaderOptions,
805
+ mutableEncounteredRecords: EncounteredIds,
806
+ ): ReadDataResult<unknown> {
807
+ // First, we read the data using the refetch reader AST (i.e. read out the
808
+ // id field).
809
+ const data = readData(
810
+ environment,
811
+ field.refetchReaderArtifact.readerAst,
812
+ root,
813
+ variables,
814
+ // Refetch fields just read the id, and don't need refetch query artifacts
815
+ [],
816
+ // This is probably indicative of the fact that we are doing redundant checks
817
+ // on the status of this network request...
818
+ networkRequest,
819
+ networkRequestOptions,
820
+ mutableEncounteredRecords,
821
+ );
822
+ if (data.kind === 'MissingData') {
823
+ return {
824
+ kind: 'MissingData',
825
+ reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
826
+ nestedReason: data,
827
+ recordLink: data.recordLink,
828
+ };
829
+ } else {
830
+ const refetchQueryIndex = field.refetchQuery;
831
+ const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
832
+ if (refetchQuery == null) {
833
+ throw new Error(
834
+ 'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',
835
+ );
836
+ }
837
+ const refetchQueryArtifact = refetchQuery.artifact;
838
+ const allowedVariables = refetchQuery.allowedVariables;
839
+
840
+ // Second, we allow the user to call the resolver, which will ultimately
841
+ // use the resolver reader AST to get the resolver parameters.
842
+ return {
843
+ kind: 'Success',
844
+ data: (args: any) => [
845
+ // Stable id
846
+ root.__link + '__' + field.name,
847
+ // Fetcher
848
+ field.refetchReaderArtifact.resolver(
849
+ environment,
850
+ refetchQueryArtifact,
851
+ data.data,
852
+ filterVariables({ ...args, ...variables }, allowedVariables),
853
+ root,
854
+ // TODO these params should be removed
855
+ null,
856
+ [],
857
+ ),
858
+ ],
859
+ };
860
+ }
861
+ }