@isograph/react 0.0.0-main-368b39c5 → 0.0.0-main-6b4f9048

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-368b39c5 compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
2
+ > @isograph/react@0.0.0-main-6b4f9048 compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
3
3
  > rm -rf dist/* && tsc -p tsconfig.pkg.json
4
4
 
@@ -2,7 +2,9 @@ import { ReaderWithRefetchQueries } from '../core/entrypoint';
2
2
  import { type Link } from './IsographEnvironment';
3
3
  import { PromiseWrapper } from './PromiseWrapper';
4
4
  import type { StartUpdate } from './reader';
5
- export type VariableValue = string | number | boolean | null | object;
5
+ export type VariableValue = string | number | boolean | null | {
6
+ readonly [index: string]: VariableValue;
7
+ } | VariableValue[];
6
8
  export type Variables = {
7
9
  readonly [index: string]: VariableValue;
8
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FragmentReference.d.ts","sourceRoot":"","sources":["../../src/core/FragmentReference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;CAC9B,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS;IAC3C,UAAU,EAAE,MAAM,CAAC,SAAS,SAAS,CAAC;CACvC,GACG,CAAC,GACD,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,CAC5B,CAAC,SAAS;IACR,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC,IACC,CAAC,CAAC,aAAa,CAAC,CAAC;AAErB,MAAM,MAAM,iBAAiB,CAC3B,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,IACf;IACF,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,wBAAwB,EAAE,cAAc,CAC/C,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC5D,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAElD,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,SAAS,EAAE,MAAM,GAChB,4BAA4B,CAE9B"}
1
+ {"version":3,"file":"FragmentReference.d.ts","sourceRoot":"","sources":["../../src/core/FragmentReference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IACE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;CACzC,GACD,aAAa,EAAE,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;CAC9B,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS;IAC3C,UAAU,EAAE,MAAM,CAAC,SAAS,SAAS,CAAC;CACvC,GACG,CAAC,GACD,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,CAC5B,CAAC,SAAS;IACR,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC,IACC,CAAC,CAAC,aAAa,CAAC,CAAC;AAErB,MAAM,MAAM,iBAAiB,CAC3B,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,IACf;IACF,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,wBAAwB,EAAE,cAAc,CAC/C,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC5D,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAElD,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,SAAS,EAAE,MAAM,GAChB,4BAA4B,CAE9B"}
@@ -31,4 +31,5 @@ export declare function insertIfNotExists<K, V>(map: Map<K, Set<V>>, key: K): Se
31
31
  export declare function getParentRecordKey(astNode: NormalizationLinkedField | NormalizationScalarField | ReaderLinkedField | ReaderScalarField, variables: Variables): string;
32
32
  export declare const FIRST_SPLIT_KEY = "____";
33
33
  export declare const SECOND_SPLIT_KEY = "___";
34
+ export declare const THIRD_SPLIT_KEY = "__";
34
35
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAElB,wBAAwB,EACxB,wBAAwB,EACxB,wCAAwC,EACxC,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,KAAK,qBAAqB,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,MAAM,EAIN,IAAI,EAGJ,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACd,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAwB,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAGhF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,wBAAgB,8BAA8B,CAC5C,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EAEjB,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,GACrE,WAAW,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAanE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAezC;AAED,wBAAgB,2BAA2B,CACzC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EAEnE,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,kBAAkB,CAC5B,cAAc,EACd,iBAAiB,EACjB,iBAAiB,CAClB,EACD,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,YAAY,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAC7C,WAAW,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAgCnE;AAED,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnE,MAAM,MAAM,oBAAoB,GAC5B,0BAA0B,GAC1B,IAAI,GACJ,qBAAqB,GACrB,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,GAChC,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG;IAGlC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,oBAAoB,CAAC;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAC3B,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,qBAAqB,EACvC,eAAe,EAAE,qBAAqB,EACtC,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,wCAAwC,EAAE,EAChE,IAAI,EAAE,IAAI,GACT,cAAc,CAgChB;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAOZ;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAQZ;AAGD,wBAAgB,SAAS,CAAC,cAAc,SAAS,qBAAqB,EACpE,WAAW,EAAE,mBAAmB,EAChC,yBAAyB,EAAE,sBAAsB,CAAC,cAAc,CAAC,EACjE,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,EACzD,QAAQ,EAAE,CACR,4BAA4B,EAAE,sBAAsB,CAAC,cAAc,CAAC,KACjE,IAAI,EACT,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,GACnC,MAAM,IAAI,CAUZ;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,IAAI,GACf,OAAO,CAAC,IAAI,CAAC,CAWf;AA8HD,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AA6ExD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAOlE;AAwPD,wBAAgB,kBAAkB,CAChC,OAAO,EACH,wBAAwB,GACxB,wBAAwB,GACxB,iBAAiB,GACjB,iBAAiB,EACrB,SAAS,EAAE,SAAS,GACnB,MAAM,CAUR;AA0GD,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,eAAe,OAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
3
+ exports.THIRD_SPLIT_KEY = exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
4
4
  exports.getOrCreateItemInSuspenseCache = getOrCreateItemInSuspenseCache;
5
5
  exports.stableCopy = stableCopy;
6
6
  exports.getOrCreateCacheForArtifact = getOrCreateCacheForArtifact;
@@ -422,6 +422,15 @@ function getParentRecordKey(astNode, variables) {
422
422
  function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
423
423
  var _a;
424
424
  switch (argumentValue.kind) {
425
+ case 'Object': {
426
+ return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue]) => {
427
+ return [
428
+ argumentName,
429
+ // substitute variables
430
+ getStoreKeyChunkForArgumentValue(argumentValue, variables),
431
+ ];
432
+ }));
433
+ }
425
434
  case 'Literal': {
426
435
  return argumentValue.value;
427
436
  }
@@ -444,48 +453,61 @@ function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
444
453
  }
445
454
  }
446
455
  function getStoreKeyChunkForArgument(argument, variables) {
447
- const chunk = getStoreKeyChunkForArgumentValue(argument[1], variables);
456
+ let chunk = getStoreKeyChunkForArgumentValue(argument[1], variables);
457
+ if (typeof chunk === 'object') {
458
+ chunk = JSON.stringify(stableCopy(chunk));
459
+ }
448
460
  return `${exports.FIRST_SPLIT_KEY}${argument[0]}${exports.SECOND_SPLIT_KEY}${chunk}`;
449
461
  }
450
462
  function getNetworkResponseKey(astNode) {
451
463
  let networkResponseKey = astNode.fieldName;
452
464
  const fieldParameters = astNode.arguments;
453
465
  if (fieldParameters != null) {
454
- for (const fieldParameter of fieldParameters) {
455
- const [argumentName, argumentValue] = fieldParameter;
456
- let argumentValueChunk;
457
- switch (argumentValue.kind) {
458
- case 'Literal': {
459
- argumentValueChunk = 'l_' + argumentValue.value;
460
- break;
461
- }
462
- case 'Variable': {
463
- argumentValueChunk = 'v_' + argumentValue.name;
464
- break;
465
- }
466
- case 'String': {
467
- argumentValueChunk = 's_' + argumentValue.value;
468
- break;
469
- }
470
- case 'Enum': {
471
- argumentValueChunk = 'e_' + argumentValue.value;
472
- break;
473
- }
474
- default: {
475
- // Ensure we have covered all variants
476
- let _ = argumentValue;
477
- _;
478
- throw new Error('Unexpected case');
479
- }
480
- }
466
+ for (const [argumentName, argumentValue] of fieldParameters) {
467
+ let argumentValueChunk = getArgumentValueChunk(argumentValue);
481
468
  networkResponseKey += `${exports.FIRST_SPLIT_KEY}${argumentName}${exports.SECOND_SPLIT_KEY}${argumentValueChunk}`;
482
469
  }
483
470
  }
484
471
  return networkResponseKey;
485
472
  }
473
+ function getArgumentValueChunk(argumentValue) {
474
+ switch (argumentValue.kind) {
475
+ case 'Object': {
476
+ return ('o_' +
477
+ argumentValue.value
478
+ .map(([argumentName, argumentValue]) => {
479
+ return (argumentName +
480
+ exports.THIRD_SPLIT_KEY +
481
+ getArgumentValueChunk(argumentValue));
482
+ })
483
+ .join('_') +
484
+ '_c');
485
+ }
486
+ case 'Literal': {
487
+ return 'l_' + argumentValue.value;
488
+ }
489
+ case 'Variable': {
490
+ return 'v_' + argumentValue.name;
491
+ }
492
+ case 'String': {
493
+ // replace all non-word characters (alphanumeric & underscore) with underscores
494
+ return 's_' + argumentValue.value.replaceAll(/\W/g, '_');
495
+ }
496
+ case 'Enum': {
497
+ return 'e_' + argumentValue.value;
498
+ }
499
+ default: {
500
+ // Ensure we have covered all variants
501
+ let _ = argumentValue;
502
+ _;
503
+ throw new Error('Unexpected case');
504
+ }
505
+ }
506
+ }
486
507
  // an alias might be pullRequests____first___first____after___cursor
487
508
  exports.FIRST_SPLIT_KEY = '____';
488
509
  exports.SECOND_SPLIT_KEY = '___';
510
+ exports.THIRD_SPLIT_KEY = '__';
489
511
  // Returns a key to look up an item in the store
490
512
  function getDataIdOfNetworkResponse(parentRecordLink, dataToNormalize, astNode, variables, index) {
491
513
  // If we are dealing with nested Query, use __ROOT as id
@@ -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,EAEX,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,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,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,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;AA8nBN,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;AAQjB,OAAO,EACL,WAAW,EAEX,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,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,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,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;AAwoBN,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
@@ -453,7 +453,10 @@ function generateChildVariableMap(variables, fieldArguments) {
453
453
  }
454
454
  const childVars = {};
455
455
  for (const [name, value] of fieldArguments) {
456
- if (value.kind === 'Variable') {
456
+ if (value.kind === 'Object') {
457
+ childVars[name] = generateChildVariableMap(variables, value.value);
458
+ }
459
+ else if (value.kind === 'Variable') {
457
460
  const variable = variables[value.name];
458
461
  // Variable could be null if it was not provided but has a default case,
459
462
  // so we allow the loop to continue rather than throwing an error.
@@ -473,6 +476,10 @@ function writeQueryArgsToVariables(targetVariables, queryArgs, variables) {
473
476
  }
474
477
  for (const [name, argType] of queryArgs) {
475
478
  switch (argType.kind) {
479
+ case 'Object': {
480
+ writeQueryArgsToVariables((targetVariables[name] = {}), argType.value, variables);
481
+ break;
482
+ }
476
483
  case 'Variable': {
477
484
  targetVariables[name] = variables[argType.name];
478
485
  break;
@@ -15,5 +15,8 @@ export type ArgumentValue = {
15
15
  } | {
16
16
  readonly kind: 'Enum';
17
17
  readonly value: string;
18
+ } | {
19
+ readonly kind: 'Object';
20
+ readonly value: Arguments;
18
21
  };
19
22
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/core/util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,IACpE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1D,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAC1C,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAChC,GAAG,CAAC,mBAAmB,GACvB,CAAC,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;AACnC,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/core/util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,IACpE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1D,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAC1C,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAChC,GAAG,CAAC,mBAAmB,GACvB,CAAC,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;AACnC,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-368b39c5",
3
+ "version": "0.0.0-main-6b4f9048",
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-368b39c5",
24
- "@isograph/react-disposable-state": "0.0.0-main-368b39c5",
25
- "@isograph/reference-counted-pointer": "0.0.0-main-368b39c5"
23
+ "@isograph/disposable-types": "0.0.0-main-6b4f9048",
24
+ "@isograph/react-disposable-state": "0.0.0-main-6b4f9048",
25
+ "@isograph/reference-counted-pointer": "0.0.0-main-6b4f9048"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": "^18.0.0 || ^19.0.0"
@@ -5,7 +5,15 @@ import { PromiseWrapper } from './PromiseWrapper';
5
5
  import type { StartUpdate } from './reader';
6
6
 
7
7
  // TODO type this better
8
- export type VariableValue = string | number | boolean | null | object;
8
+ export type VariableValue =
9
+ | string
10
+ | number
11
+ | boolean
12
+ | null
13
+ | {
14
+ readonly [index: string]: VariableValue;
15
+ }
16
+ | VariableValue[];
9
17
 
10
18
  export type Variables = { readonly [index: string]: VariableValue };
11
19
 
package/src/core/cache.ts CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  FragmentReference,
21
21
  Variables,
22
22
  type UnknownTReadFromStore,
23
+ type VariableValue,
23
24
  } from './FragmentReference';
24
25
  import {
25
26
  DataId,
@@ -730,8 +731,19 @@ export function getParentRecordKey(
730
731
  function getStoreKeyChunkForArgumentValue(
731
732
  argumentValue: ArgumentValue,
732
733
  variables: Variables,
733
- ) {
734
+ ): VariableValue {
734
735
  switch (argumentValue.kind) {
736
+ case 'Object': {
737
+ return Object.fromEntries(
738
+ argumentValue.value.map(([argumentName, argumentValue]) => {
739
+ return [
740
+ argumentName,
741
+ // substitute variables
742
+ getStoreKeyChunkForArgumentValue(argumentValue, variables),
743
+ ];
744
+ }),
745
+ );
746
+ }
735
747
  case 'Literal': {
736
748
  return argumentValue.value;
737
749
  }
@@ -755,7 +767,12 @@ function getStoreKeyChunkForArgumentValue(
755
767
  }
756
768
 
757
769
  function getStoreKeyChunkForArgument(argument: Argument, variables: Variables) {
758
- const chunk = getStoreKeyChunkForArgumentValue(argument[1], variables);
770
+ let chunk = getStoreKeyChunkForArgumentValue(argument[1], variables);
771
+
772
+ if (typeof chunk === 'object') {
773
+ chunk = JSON.stringify(stableCopy(chunk));
774
+ }
775
+
759
776
  return `${FIRST_SPLIT_KEY}${argument[0]}${SECOND_SPLIT_KEY}${chunk}`;
760
777
  }
761
778
 
@@ -764,43 +781,60 @@ function getNetworkResponseKey(
764
781
  ): string {
765
782
  let networkResponseKey = astNode.fieldName;
766
783
  const fieldParameters = astNode.arguments;
784
+
767
785
  if (fieldParameters != null) {
768
- for (const fieldParameter of fieldParameters) {
769
- const [argumentName, argumentValue] = fieldParameter;
770
- let argumentValueChunk;
771
- switch (argumentValue.kind) {
772
- case 'Literal': {
773
- argumentValueChunk = 'l_' + argumentValue.value;
774
- break;
775
- }
776
- case 'Variable': {
777
- argumentValueChunk = 'v_' + argumentValue.name;
778
- break;
779
- }
780
- case 'String': {
781
- argumentValueChunk = 's_' + argumentValue.value;
782
- break;
783
- }
784
- case 'Enum': {
785
- argumentValueChunk = 'e_' + argumentValue.value;
786
- break;
787
- }
788
- default: {
789
- // Ensure we have covered all variants
790
- let _: never = argumentValue;
791
- _;
792
- throw new Error('Unexpected case');
793
- }
794
- }
786
+ for (const [argumentName, argumentValue] of fieldParameters) {
787
+ let argumentValueChunk = getArgumentValueChunk(argumentValue);
795
788
  networkResponseKey += `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${argumentValueChunk}`;
796
789
  }
797
790
  }
791
+
798
792
  return networkResponseKey;
799
793
  }
800
794
 
795
+ function getArgumentValueChunk(argumentValue: ArgumentValue): string {
796
+ switch (argumentValue.kind) {
797
+ case 'Object': {
798
+ return (
799
+ 'o_' +
800
+ argumentValue.value
801
+ .map(([argumentName, argumentValue]) => {
802
+ return (
803
+ argumentName +
804
+ THIRD_SPLIT_KEY +
805
+ getArgumentValueChunk(argumentValue)
806
+ );
807
+ })
808
+ .join('_') +
809
+ '_c'
810
+ );
811
+ }
812
+ case 'Literal': {
813
+ return 'l_' + argumentValue.value;
814
+ }
815
+ case 'Variable': {
816
+ return 'v_' + argumentValue.name;
817
+ }
818
+ case 'String': {
819
+ // replace all non-word characters (alphanumeric & underscore) with underscores
820
+ return 's_' + argumentValue.value.replaceAll(/\W/g, '_');
821
+ }
822
+ case 'Enum': {
823
+ return 'e_' + argumentValue.value;
824
+ }
825
+ default: {
826
+ // Ensure we have covered all variants
827
+ let _: never = argumentValue;
828
+ _;
829
+ throw new Error('Unexpected case');
830
+ }
831
+ }
832
+ }
833
+
801
834
  // an alias might be pullRequests____first___first____after___cursor
802
835
  export const FIRST_SPLIT_KEY = '____';
803
836
  export const SECOND_SPLIT_KEY = '___';
837
+ export const THIRD_SPLIT_KEY = '__';
804
838
 
805
839
  // Returns a key to look up an item in the store
806
840
  function getDataIdOfNetworkResponse(
package/src/core/read.ts CHANGED
@@ -717,7 +717,9 @@ function generateChildVariableMap(
717
717
  type Writable<T> = { -readonly [P in keyof T]: T[P] };
718
718
  const childVars: Writable<Variables> = {};
719
719
  for (const [name, value] of fieldArguments) {
720
- if (value.kind === 'Variable') {
720
+ if (value.kind === 'Object') {
721
+ childVars[name] = generateChildVariableMap(variables, value.value);
722
+ } else if (value.kind === 'Variable') {
721
723
  const variable = variables[value.name];
722
724
  // Variable could be null if it was not provided but has a default case,
723
725
  // so we allow the loop to continue rather than throwing an error.
@@ -741,6 +743,14 @@ function writeQueryArgsToVariables(
741
743
  }
742
744
  for (const [name, argType] of queryArgs) {
743
745
  switch (argType.kind) {
746
+ case 'Object': {
747
+ writeQueryArgsToVariables(
748
+ (targetVariables[name] = {}),
749
+ argType.value,
750
+ variables,
751
+ );
752
+ break;
753
+ }
744
754
  case 'Variable': {
745
755
  targetVariables[name] = variables[argType.name];
746
756
  break;
package/src/core/util.ts CHANGED
@@ -24,4 +24,8 @@ export type ArgumentValue =
24
24
  | {
25
25
  readonly kind: 'Enum';
26
26
  readonly value: string;
27
+ }
28
+ | {
29
+ readonly kind: 'Object';
30
+ readonly value: Arguments;
27
31
  };