@isograph/react 0.0.0-main-c13fba57 → 0.0.0-main-4941e5bf

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.
@@ -311,7 +311,7 @@ function normalizeLinkedField(environment, astNode, networkResponseParentRecord,
311
311
  const dataIds = [];
312
312
  for (let i = 0; i < networkResponseData.length; i++) {
313
313
  const networkResponseObject = networkResponseData[i];
314
- if (networkResponseObject === null) {
314
+ if (networkResponseObject == null) {
315
315
  dataIds.push(null);
316
316
  continue;
317
317
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,iBAAiB,EAEjB,WAAW,EAEZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,mBAAmB,EACnB,KAAK,IAAI,EACV,MAAM,uBAAuB,CAAC;AAe/B,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;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAE3D,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,sBAAsB,CAAC,cAAc,CAAC,CAkDxC;AAED,MAAM,MAAM,cAAc,CAAC,cAAc,IACrC;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAC7C,GACD;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;AA0jBN,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":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,iBAAiB,EAEjB,WAAW,EAEZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,mBAAmB,EACnB,KAAK,IAAI,EACV,MAAM,uBAAuB,CAAC;AAe/B,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;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAE3D,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,sBAAsB,CAAC,cAAc,CAAC,CAkDxC;AAED,MAAM,MAAM,cAAc,CAAC,cAAc,IACrC;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAC7C,GACD;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;AAukBN,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"}
package/dist/core/read.js CHANGED
@@ -215,10 +215,10 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
215
215
  }
216
216
  else {
217
217
  const refetchQueryIndex = field.refetchQuery;
218
- if (refetchQueryIndex == null) {
219
- throw new Error('refetchQuery is null in RefetchField');
220
- }
221
218
  const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
219
+ if (refetchQuery == null) {
220
+ throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
221
+ }
222
222
  const refetchQueryArtifact = refetchQuery.artifact;
223
223
  const allowedVariables = refetchQuery.allowedVariables;
224
224
  // Second, we allow the user to call the resolver, which will ultimately
@@ -236,7 +236,13 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
236
236
  }
237
237
  case 'Resolver': {
238
238
  const usedRefetchQueries = field.usedRefetchQueries;
239
- const resolverRefetchQueries = usedRefetchQueries.map((index) => nestedRefetchQueries[index]);
239
+ const resolverRefetchQueries = usedRefetchQueries.map((index) => {
240
+ const resolverRefetchQuery = nestedRefetchQueries[index];
241
+ if (resolverRefetchQuery == null) {
242
+ throw new Error('resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.');
243
+ }
244
+ return resolverRefetchQuery;
245
+ });
240
246
  switch (field.readerArtifact.kind) {
241
247
  case 'EagerReaderArtifact': {
242
248
  const data = readData(environment, field.readerArtifact.readerAst, root, generateChildVariableMap(variables, field.arguments), resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
@@ -406,7 +412,12 @@ function generateChildVariableMap(variables, fieldArguments) {
406
412
  const childVars = {};
407
413
  for (const [name, value] of fieldArguments) {
408
414
  if (value.kind === 'Variable') {
409
- childVars[name] = variables[value.name];
415
+ const variable = variables[value.name];
416
+ // Variable could be null if it was not provided but has a default case,
417
+ // so we allow the loop to continue rather than throwing an error.
418
+ if (variable != null) {
419
+ childVars[name] = variable;
420
+ }
410
421
  }
411
422
  else {
412
423
  childVars[name] = value.value;
@@ -1 +1 @@
1
- {"version":3,"file":"useConnectionSpecPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useConnectionSpecPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAI/D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,wBAAwB,CAC3B,cAAc,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,IAEH;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAwBN,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAOF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,cAAc,SAAS;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,EACD,KAAK,EAEL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,UAAU,CAAC,KAAK,CAAC,EACjB,+BAA+B,CAChC,EACD,YAAY,CAAC,EAAE,QAAQ,GACtB,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,CA8NjD"}
1
+ {"version":3,"file":"useConnectionSpecPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useConnectionSpecPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAI/D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,wBAAwB,CAC3B,cAAc,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,IAEH;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAwBN,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAOF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,cAAc,SAAS;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,EACD,KAAK,EAEL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,UAAU,CAAC,KAAK,CAAC,EACjB,+BAA+B,CAChC,EACD,YAAY,CAAC,EAAE,QAAQ,GACtB,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,CA4OjD"}
@@ -32,9 +32,15 @@ function useConnectionSpecPagination(loadableField, initialState) {
32
32
  function readCompletedFragmentReferences(completedReferences) {
33
33
  var _a, _b;
34
34
  const results = completedReferences.map((fragmentReference, i) => {
35
+ var _a;
35
36
  const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
37
+ // invariant: readOutDataAndRecords.length === completedReferences.length
38
+ const data = (_a = readOutDataAndRecords[i]) === null || _a === void 0 ? void 0 : _a.item;
39
+ if (data == null) {
40
+ throw new Error('Parameter data is unexpectedly null. This is indicative of a bug in Isograph.');
41
+ }
36
42
  const firstParameter = {
37
- data: readOutDataAndRecords[i].item,
43
+ data,
38
44
  parameters: fragmentReference.variables,
39
45
  };
40
46
  if (readerWithRefetchQueries.readerArtifact.kind !== 'EagerReaderArtifact') {
@@ -55,10 +61,14 @@ function useConnectionSpecPagination(loadableField, initialState) {
55
61
  return completedReferences.map((fragmentReference, i) => {
56
62
  (0, useResult_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
57
63
  const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
64
+ const records = readOutDataAndRecords[i];
65
+ if (records == null) {
66
+ throw new Error('subscribeCompletedFragmentReferences records is unexpectedly null');
67
+ }
58
68
  return {
59
69
  fragmentReference,
60
70
  readerAst: readerWithRefetchQueries.readerArtifact.readerAst,
61
- records: readOutDataAndRecords[i],
71
+ records,
62
72
  callback(_data) {
63
73
  rerender({});
64
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"useSkipLimitPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useSkipLimitPagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAgB9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,uBAAuB,CAC1B,cAAc,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,IAEH;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CACzC,cAAc,EACd,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;CACH,CAAC;AA6BN,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EACL,cAAc,SAAS;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,EAED,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,aAAa,CAAC,KAAK,CAAC,EACpB,0BAA0B,CAC3B,EACD,YAAY,CAAC,EAAE;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAC7B,GACA,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,CA+MhD"}
1
+ {"version":3,"file":"useSkipLimitPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useSkipLimitPagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAgB9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,uBAAuB,CAC1B,cAAc,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,IAEH;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CACzC,cAAc,EACd,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;CACH,CAAC;AA6BN,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EACL,cAAc,SAAS;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,EAED,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,aAAa,CAAC,KAAK,CAAC,EACpB,0BAA0B,CAC3B,EACD,YAAY,CAAC,EAAE;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAC7B,GACA,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,CA+NhD"}
@@ -31,9 +31,15 @@ function useSkipLimitPagination(loadableField, initialState) {
31
31
  // as parameters (or recreate networkRequestOptions)
32
32
  function readCompletedFragmentReferences(completedReferences) {
33
33
  const results = completedReferences.map((fragmentReference, i) => {
34
+ var _a;
34
35
  const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
36
+ // invariant: readOutDataAndRecords.length === completedReferences.length
37
+ const data = (_a = readOutDataAndRecords[i]) === null || _a === void 0 ? void 0 : _a.item;
38
+ if (data == null) {
39
+ throw new Error('Parameter data is unexpectedly null. This is indicative of a bug in Isograph.');
40
+ }
35
41
  const firstParameter = {
36
- data: readOutDataAndRecords[i].item,
42
+ data,
37
43
  parameters: fragmentReference.variables,
38
44
  };
39
45
  if (readerWithRefetchQueries.readerArtifact.kind !== 'EagerReaderArtifact') {
@@ -48,10 +54,14 @@ function useSkipLimitPagination(loadableField, initialState) {
48
54
  return completedReferences.map((fragmentReference, i) => {
49
55
  (0, useResult_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
50
56
  const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
57
+ const records = readOutDataAndRecords[i];
58
+ if (records == null) {
59
+ throw new Error('subscribeCompletedFragmentReferences records is unexpectedly null');
60
+ }
51
61
  return {
52
62
  fragmentReference,
53
63
  readerAst: readerWithRefetchQueries.readerArtifact.readerAst,
54
- records: readOutDataAndRecords[i],
64
+ records,
55
65
  callback(_data) {
56
66
  rerender({});
57
67
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-c13fba57",
3
+ "version": "0.0.0-main-4941e5bf",
4
4
  "description": "Use Isograph with React",
5
5
  "homepage": "https://isograph.dev",
6
6
  "main": "dist/index.js",
@@ -19,9 +19,9 @@
19
19
  "iso-watch": "../../target/debug/isograph_cli --config ./isograph.config.json --watch"
20
20
  },
21
21
  "dependencies": {
22
- "@isograph/disposable-types": "0.0.0-main-c13fba57",
23
- "@isograph/react-disposable-state": "0.0.0-main-c13fba57",
24
- "@isograph/reference-counted-pointer": "0.0.0-main-c13fba57"
22
+ "@isograph/disposable-types": "0.0.0-main-4941e5bf",
23
+ "@isograph/react-disposable-state": "0.0.0-main-4941e5bf",
24
+ "@isograph/reference-counted-pointer": "0.0.0-main-4941e5bf"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "react": "18.3.1"
package/src/core/cache.ts CHANGED
@@ -516,7 +516,7 @@ function normalizeLinkedField(
516
516
  const dataIds: (Link | null)[] = [];
517
517
  for (let i = 0; i < networkResponseData.length; i++) {
518
518
  const networkResponseObject = networkResponseData[i];
519
- if (networkResponseObject === null) {
519
+ if (networkResponseObject == null) {
520
520
  dataIds.push(null);
521
521
  continue;
522
522
  }
package/src/core/read.ts CHANGED
@@ -342,10 +342,12 @@ function readData<TReadFromStore>(
342
342
  };
343
343
  } else {
344
344
  const refetchQueryIndex = field.refetchQuery;
345
- if (refetchQueryIndex == null) {
346
- throw new Error('refetchQuery is null in RefetchField');
347
- }
348
345
  const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
346
+ if (refetchQuery == null) {
347
+ throw new Error(
348
+ 'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',
349
+ );
350
+ }
349
351
  const refetchQueryArtifact = refetchQuery.artifact;
350
352
  const allowedVariables = refetchQuery.allowedVariables;
351
353
 
@@ -371,9 +373,15 @@ function readData<TReadFromStore>(
371
373
  }
372
374
  case 'Resolver': {
373
375
  const usedRefetchQueries = field.usedRefetchQueries;
374
- const resolverRefetchQueries = usedRefetchQueries.map(
375
- (index) => nestedRefetchQueries[index],
376
- );
376
+ const resolverRefetchQueries = usedRefetchQueries.map((index) => {
377
+ const resolverRefetchQuery = nestedRefetchQueries[index];
378
+ if (resolverRefetchQuery == null) {
379
+ throw new Error(
380
+ 'resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.',
381
+ );
382
+ }
383
+ return resolverRefetchQuery;
384
+ });
377
385
 
378
386
  switch (field.readerArtifact.kind) {
379
387
  case 'EagerReaderArtifact': {
@@ -636,7 +644,12 @@ function generateChildVariableMap(
636
644
  const childVars: Writable<Variables> = {};
637
645
  for (const [name, value] of fieldArguments) {
638
646
  if (value.kind === 'Variable') {
639
- childVars[name] = variables[value.name];
647
+ const variable = variables[value.name];
648
+ // Variable could be null if it was not provided but has a default case,
649
+ // so we allow the loop to continue rather than throwing an error.
650
+ if (variable != null) {
651
+ childVars[name] = variable;
652
+ }
640
653
  } else {
641
654
  childVars[name] = value.value;
642
655
  }
@@ -114,8 +114,16 @@ export function useConnectionSpecPagination<
114
114
  fragmentReference.readerWithRefetchQueries,
115
115
  );
116
116
 
117
+ // invariant: readOutDataAndRecords.length === completedReferences.length
118
+ const data = readOutDataAndRecords[i]?.item;
119
+ if (data == null) {
120
+ throw new Error(
121
+ 'Parameter data is unexpectedly null. This is indicative of a bug in Isograph.',
122
+ );
123
+ }
124
+
117
125
  const firstParameter = {
118
- data: readOutDataAndRecords[i].item,
126
+ data,
119
127
  parameters: fragmentReference.variables,
120
128
  };
121
129
 
@@ -165,10 +173,17 @@ export function useConnectionSpecPagination<
165
173
  fragmentReference.readerWithRefetchQueries,
166
174
  );
167
175
 
176
+ const records = readOutDataAndRecords[i];
177
+ if (records == null) {
178
+ throw new Error(
179
+ 'subscribeCompletedFragmentReferences records is unexpectedly null',
180
+ );
181
+ }
182
+
168
183
  return {
169
184
  fragmentReference,
170
185
  readerAst: readerWithRefetchQueries.readerArtifact.readerAst,
171
- records: readOutDataAndRecords[i],
186
+ records,
172
187
  callback(_data) {
173
188
  rerender({});
174
189
  },
@@ -224,10 +239,9 @@ export function useConnectionSpecPagination<
224
239
 
225
240
  const loadedReferences = state === UNASSIGNED_STATE ? [] : state;
226
241
 
227
- const mostRecentItem: LoadedFragmentReference<
228
- TReadFromStore,
229
- Connection<TItem>
230
- > | null = loadedReferences[loadedReferences.length - 1];
242
+ const mostRecentItem:
243
+ | LoadedFragmentReference<TReadFromStore, Connection<TItem>>
244
+ | undefined = loadedReferences[loadedReferences.length - 1];
231
245
  const mostRecentFragmentReference =
232
246
  mostRecentItem?.[0].getItemIfNotDisposed();
233
247
 
@@ -106,8 +106,16 @@ export function useSkipLimitPagination<
106
106
  fragmentReference.readerWithRefetchQueries,
107
107
  );
108
108
 
109
+ // invariant: readOutDataAndRecords.length === completedReferences.length
110
+ const data = readOutDataAndRecords[i]?.item;
111
+ if (data == null) {
112
+ throw new Error(
113
+ 'Parameter data is unexpectedly null. This is indicative of a bug in Isograph.',
114
+ );
115
+ }
116
+
109
117
  const firstParameter = {
110
- data: readOutDataAndRecords[i].item,
118
+ data,
111
119
  parameters: fragmentReference.variables,
112
120
  };
113
121
 
@@ -150,10 +158,17 @@ export function useSkipLimitPagination<
150
158
  fragmentReference.readerWithRefetchQueries,
151
159
  );
152
160
 
161
+ const records = readOutDataAndRecords[i];
162
+ if (records == null) {
163
+ throw new Error(
164
+ 'subscribeCompletedFragmentReferences records is unexpectedly null',
165
+ );
166
+ }
167
+
153
168
  return {
154
169
  fragmentReference,
155
170
  readerAst: readerWithRefetchQueries.readerArtifact.readerAst,
156
- records: readOutDataAndRecords[i],
171
+ records,
157
172
  callback(_data) {
158
173
  rerender({});
159
174
  },
@@ -209,8 +224,9 @@ export function useSkipLimitPagination<
209
224
 
210
225
  const loadedReferences = state === UNASSIGNED_STATE ? [] : state;
211
226
 
212
- const mostRecentItem: LoadedFragmentReference<TReadFromStore, TItem> | null =
213
- loadedReferences[loadedReferences.length - 1];
227
+ const mostRecentItem:
228
+ | LoadedFragmentReference<TReadFromStore, TItem>
229
+ | undefined = loadedReferences[loadedReferences.length - 1];
214
230
  const mostRecentFragmentReference =
215
231
  mostRecentItem?.[0].getItemIfNotDisposed();
216
232