@isograph/react 0.4.1 → 0.4.3

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,5 +1,5 @@
1
- ../.. |  WARN  Unsupported engine: wanted: {"node":"22.9.0"} (current: {"node":"v22.19.0","pnpm":"10.15.0"})
1
+ ../.. |  WARN  Unsupported engine: wanted: {"node":"22.9.0"} (current: {"node":"v22.20.0","pnpm":"10.15.0"})
2
2
 
3
- > @isograph/react@0.4.1 compile-libs /home/runner/work/isograph/isograph/libs/isograph-react
3
+ > @isograph/react@0.4.3 compile-libs /home/runner/work/isograph/isograph/libs/isograph-react
4
4
  > rimraf dist && tsc -p tsconfig.pkg.json
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"areEqualWithDeepComparison.d.ts","sourceRoot":"","sources":["../../src/core/areEqualWithDeepComparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,UAAU,CAAC;AA+DhF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CA+DR"}
1
+ {"version":3,"file":"areEqualWithDeepComparison.d.ts","sourceRoot":"","sources":["../../src/core/areEqualWithDeepComparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,UAAU,CAAC;AA+DhF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CAoER"}
@@ -53,6 +53,11 @@ function mergeObjectsUsingReaderAst(ast, oldItemObject, newItemObject) {
53
53
  switch (field.kind) {
54
54
  case 'Scalar':
55
55
  case 'Linked':
56
+ if (field.kind === 'Linked' && field.refetchQueryIndex != null) {
57
+ // client pointers are functions, so we can't merge them
58
+ canRecycle = false;
59
+ break;
60
+ }
56
61
  const key = (_a = field.alias) !== null && _a !== void 0 ? _a : field.fieldName;
57
62
  // @ts-expect-error
58
63
  const oldValue = oldItemObject[key];
@@ -101,16 +101,17 @@ function checkFromRecord(environment, normalizationAst, variables, record, recor
101
101
  }
102
102
  case 'InlineFragment': {
103
103
  const existingRecordTypename = record['__typename'];
104
- if (existingRecordTypename == null ||
105
- existingRecordTypename !== normalizationAstNode.type) {
104
+ if (existingRecordTypename == null) {
106
105
  return {
107
106
  kind: 'MissingData',
108
107
  record: recordLink,
109
108
  };
110
109
  }
111
- const result = checkFromRecord(environment, normalizationAstNode.selections, variables, record, recordLink);
112
- if (result.kind === 'MissingData') {
113
- return result;
110
+ if (existingRecordTypename === normalizationAstNode.type) {
111
+ const result = checkFromRecord(environment, normalizationAstNode.selections, variables, record, recordLink);
112
+ if (result.kind === 'MissingData') {
113
+ return result;
114
+ }
114
115
  }
115
116
  continue normalizationAstLoop;
116
117
  }
@@ -20,7 +20,9 @@ export type ComponentReaderArtifact<TReadFromStore extends UnknownTReadFromStore
20
20
  readonly hasUpdatable: boolean;
21
21
  };
22
22
  export type ResolverFirstParameter<TReadFromStore extends UnknownTReadFromStore> = Pick<TReadFromStore, 'data' | 'parameters' | 'startUpdate'>;
23
- export type StartUpdate<UpdatableData> = (updater: (updatableData: UpdatableData) => void) => void;
23
+ export type StartUpdate<UpdatableData> = (updater: (startUpdateParams: {
24
+ updatableData: UpdatableData;
25
+ }) => void) => void;
24
26
  export type RefetchReaderArtifact = {
25
27
  readonly kind: 'RefetchReaderArtifact';
26
28
  readonly readerAst: ReaderAst<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"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"}
@@ -17,9 +17,9 @@ function getOrCreateCachedStartUpdate(environment, fragmentReference, eagerResol
17
17
  function createStartUpdate(environment, fragmentReference, networkRequestOptions) {
18
18
  return (updater) => {
19
19
  let mutableUpdatedIds = new Map();
20
- let data = createUpdatableProxy(environment, fragmentReference, networkRequestOptions, mutableUpdatedIds);
20
+ let updatableData = createUpdatableProxy(environment, fragmentReference, networkRequestOptions, mutableUpdatedIds);
21
21
  try {
22
- updater(data);
22
+ updater({ updatableData });
23
23
  }
24
24
  catch (e) {
25
25
  (0, logging_1.logMessage)(environment, () => ({
@@ -105,10 +105,10 @@ function readUpdatableData(environment, ast, root, variables, nestedRefetchQueri
105
105
  }, 'isUpdatable' in field && field.isUpdatable
106
106
  ? (newValue) => {
107
107
  if (Array.isArray(newValue)) {
108
- storeRecord[storeRecordName] = newValue.map((node) => (0, IsographEnvironment_1.assertLink)(node === null || node === void 0 ? void 0 : node.link));
108
+ storeRecord[storeRecordName] = newValue.map((node) => (0, IsographEnvironment_1.assertLink)(node === null || node === void 0 ? void 0 : node.__link));
109
109
  }
110
110
  else {
111
- storeRecord[storeRecordName] = (0, IsographEnvironment_1.assertLink)(newValue === null || newValue === void 0 ? void 0 : newValue.link);
111
+ storeRecord[storeRecordName] = (0, IsographEnvironment_1.assertLink)(newValue === null || newValue === void 0 ? void 0 : newValue.__link);
112
112
  }
113
113
  const updatedIds = (0, cache_1.insertEmptySetIfMissing)(mutableUpdatedIds, root.__typename);
114
114
  updatedIds.add(root.__link);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Use Isograph with React",
5
5
  "homepage": "https://isograph.dev",
6
6
  "main": "dist/index.js",
@@ -72,6 +72,11 @@ export function mergeObjectsUsingReaderAst(
72
72
  switch (field.kind) {
73
73
  case 'Scalar':
74
74
  case 'Linked':
75
+ if (field.kind === 'Linked' && field.refetchQueryIndex != null) {
76
+ // client pointers are functions, so we can't merge them
77
+ canRecycle = false;
78
+ break;
79
+ }
75
80
  const key = field.alias ?? field.fieldName;
76
81
  // @ts-expect-error
77
82
  const oldValue = oldItemObject[key];
package/src/core/check.ts CHANGED
@@ -172,26 +172,25 @@ function checkFromRecord(
172
172
  case 'InlineFragment': {
173
173
  const existingRecordTypename = record['__typename'];
174
174
 
175
- if (
176
- existingRecordTypename == null ||
177
- existingRecordTypename !== normalizationAstNode.type
178
- ) {
175
+ if (existingRecordTypename == null) {
179
176
  return {
180
177
  kind: 'MissingData',
181
178
  record: recordLink,
182
179
  };
183
180
  }
184
181
 
185
- const result = checkFromRecord(
186
- environment,
187
- normalizationAstNode.selections,
188
- variables,
189
- record,
190
- recordLink,
191
- );
192
-
193
- if (result.kind === 'MissingData') {
194
- return result;
182
+ if (existingRecordTypename === normalizationAstNode.type) {
183
+ const result = checkFromRecord(
184
+ environment,
185
+ normalizationAstNode.selections,
186
+ variables,
187
+ record,
188
+ recordLink,
189
+ );
190
+
191
+ if (result.kind === 'MissingData') {
192
+ return result;
193
+ }
195
194
  }
196
195
 
197
196
  continue normalizationAstLoop;
@@ -58,7 +58,7 @@ export type ResolverFirstParameter<
58
58
  > = Pick<TReadFromStore, 'data' | 'parameters' | 'startUpdate'>;
59
59
 
60
60
  export type StartUpdate<UpdatableData> = (
61
- updater: (updatableData: UpdatableData) => void,
61
+ updater: (startUpdateParams: { updatableData: UpdatableData }) => void,
62
62
  ) => void;
63
63
 
64
64
  export type RefetchReaderArtifact = {
@@ -56,7 +56,7 @@ export function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(
56
56
  return (updater) => {
57
57
  let mutableUpdatedIds: EncounteredIds = new Map();
58
58
 
59
- let data = createUpdatableProxy(
59
+ let updatableData = createUpdatableProxy(
60
60
  environment,
61
61
  fragmentReference,
62
62
  networkRequestOptions,
@@ -64,7 +64,7 @@ export function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(
64
64
  );
65
65
 
66
66
  try {
67
- updater(data);
67
+ updater({ updatableData });
68
68
  } catch (e) {
69
69
  logMessage(environment, () => ({
70
70
  kind: 'StartUpdateError',
@@ -245,10 +245,10 @@ function readUpdatableData<TReadFromStore extends UnknownTReadFromStore>(
245
245
  ? (newValue) => {
246
246
  if (Array.isArray(newValue)) {
247
247
  storeRecord[storeRecordName] = newValue.map((node) =>
248
- assertLink(node?.link),
248
+ assertLink(node?.__link),
249
249
  );
250
250
  } else {
251
- storeRecord[storeRecordName] = assertLink(newValue?.link);
251
+ storeRecord[storeRecordName] = assertLink(newValue?.__link);
252
252
  }
253
253
  const updatedIds = insertEmptySetIfMissing(
254
254
  mutableUpdatedIds,
@@ -0,0 +1,2 @@
1
+ import type { Link } from '@isograph/react';
2
+ export type Economist____link__output_type = Link<"Economist">;
@@ -0,0 +1,3 @@
1
+ import type { Link } from '@isograph/react';
2
+ export type Node____link__output_type =
3
+ | Link<"Economist">;
@@ -10,7 +10,7 @@ const readerAst: ReaderAst<{ data: any, parameters: Record<PropertyKey, never> }
10
10
  },
11
11
  {
12
12
  kind: "Link",
13
- alias: "link",
13
+ alias: "__link",
14
14
  },
15
15
  ];
16
16
 
@@ -20,7 +20,7 @@ const artifact: EagerReaderArtifact<
20
20
  > = {
21
21
  kind: "EagerReaderArtifact",
22
22
  fieldName: "Node.asEconomist",
23
- resolver: ({ data }) => data.__typename === "Economist" ? data.link : null,
23
+ resolver: ({ data }) => data.__typename === "Economist" ? data.__link : null,
24
24
  readerAst,
25
25
  hasUpdatable: false,
26
26
  };
@@ -1,4 +1,4 @@
1
- import { type Node__link__output_type } from '../../Node/link/output_type';
1
+ import { type Node____link__output_type } from '../../Node/__link/output_type';
2
2
  import type { StartUpdate } from '@isograph/react';
3
3
 
4
4
  export type Query__linkedUpdate__param = {
@@ -15,7 +15,7 @@ A client pointer for the Economist type.
15
15
  /**
16
16
  A store Link for the Node type.
17
17
  */
18
- readonly link: Node__link__output_type,
18
+ readonly __link: Node____link__output_type,
19
19
  /**
20
20
  A client pointer for the Economist type.
21
21
  */
@@ -34,12 +34,12 @@ A client pointer for the Economist type.
34
34
  name: string,
35
35
  } | null),
36
36
  } | null),
37
- set node(value: ({ link: Node__link__output_type } | null)),
37
+ set node(value: ({ __link: Node____link__output_type } | null)),
38
38
  readonly john_stuart_mill: ({
39
39
  /**
40
40
  A store Link for the Node type.
41
41
  */
42
- readonly link: Node__link__output_type,
42
+ readonly __link: Node____link__output_type,
43
43
  /**
44
44
  A client pointer for the Economist type.
45
45
  */
@@ -17,6 +17,7 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
17
17
  ],
18
18
  condition: null,
19
19
  isUpdatable: true,
20
+ refetchQueryIndex: null,
20
21
  selections: [
21
22
  {
22
23
  kind: "Linked",
@@ -25,6 +26,7 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
25
26
  arguments: null,
26
27
  condition: Node__asEconomist__resolver_reader,
27
28
  isUpdatable: false,
29
+ refetchQueryIndex: null,
28
30
  selections: [
29
31
  {
30
32
  kind: "Scalar",
@@ -34,10 +36,8 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
34
36
  isUpdatable: true,
35
37
  },
36
38
  ],
37
- refetchQueryIndex: null,
38
39
  },
39
40
  ],
40
- refetchQueryIndex: null,
41
41
  },
42
42
  {
43
43
  kind: "Linked",
@@ -51,10 +51,11 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
51
51
  ],
52
52
  condition: null,
53
53
  isUpdatable: false,
54
+ refetchQueryIndex: null,
54
55
  selections: [
55
56
  {
56
57
  kind: "Link",
57
- alias: "link",
58
+ alias: "__link",
58
59
  },
59
60
  {
60
61
  kind: "Linked",
@@ -63,6 +64,7 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
63
64
  arguments: null,
64
65
  condition: Node__asEconomist__resolver_reader,
65
66
  isUpdatable: false,
67
+ refetchQueryIndex: null,
66
68
  selections: [
67
69
  {
68
70
  kind: "Scalar",
@@ -72,10 +74,8 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
72
74
  isUpdatable: false,
73
75
  },
74
76
  ],
75
- refetchQueryIndex: null,
76
77
  },
77
78
  ],
78
- refetchQueryIndex: null,
79
79
  },
80
80
  ];
81
81
 
@@ -11,6 +11,7 @@ const readerAst: ReaderAst<Query__meName__param> = [
11
11
  arguments: null,
12
12
  condition: null,
13
13
  isUpdatable: false,
14
+ refetchQueryIndex: null,
14
15
  selections: [
15
16
  {
16
17
  kind: "Scalar",
@@ -20,7 +21,6 @@ const readerAst: ReaderAst<Query__meName__param> = [
20
21
  isUpdatable: false,
21
22
  },
22
23
  ],
23
- refetchQueryIndex: null,
24
24
  },
25
25
  ];
26
26
 
@@ -11,6 +11,7 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
11
11
  arguments: null,
12
12
  condition: null,
13
13
  isUpdatable: false,
14
+ refetchQueryIndex: null,
14
15
  selections: [
15
16
  {
16
17
  kind: "Scalar",
@@ -26,6 +27,7 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
26
27
  arguments: null,
27
28
  condition: null,
28
29
  isUpdatable: false,
30
+ refetchQueryIndex: null,
29
31
  selections: [
30
32
  {
31
33
  kind: "Linked",
@@ -34,6 +36,7 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
34
36
  arguments: null,
35
37
  condition: null,
36
38
  isUpdatable: false,
39
+ refetchQueryIndex: null,
37
40
  selections: [
38
41
  {
39
42
  kind: "Scalar",
@@ -43,13 +46,10 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
43
46
  isUpdatable: false,
44
47
  },
45
48
  ],
46
- refetchQueryIndex: null,
47
49
  },
48
50
  ],
49
- refetchQueryIndex: null,
50
51
  },
51
52
  ],
52
- refetchQueryIndex: null,
53
53
  },
54
54
  ];
55
55
 
@@ -16,6 +16,7 @@ const readerAst: ReaderAst<Query__nodeField__param> = [
16
16
  ],
17
17
  condition: null,
18
18
  isUpdatable: false,
19
+ refetchQueryIndex: null,
19
20
  selections: [
20
21
  {
21
22
  kind: "Scalar",
@@ -25,7 +26,6 @@ const readerAst: ReaderAst<Query__nodeField__param> = [
25
26
  isUpdatable: false,
26
27
  },
27
28
  ],
28
- refetchQueryIndex: null,
29
29
  },
30
30
  ];
31
31
 
@@ -17,6 +17,7 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
17
17
  ],
18
18
  condition: null,
19
19
  isUpdatable: false,
20
+ refetchQueryIndex: null,
20
21
  selections: [
21
22
  {
22
23
  kind: "Linked",
@@ -25,6 +26,7 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
25
26
  arguments: null,
26
27
  condition: Node__asEconomist__resolver_reader,
27
28
  isUpdatable: false,
29
+ refetchQueryIndex: null,
28
30
  selections: [
29
31
  {
30
32
  kind: "Scalar",
@@ -34,10 +36,8 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
34
36
  isUpdatable: true,
35
37
  },
36
38
  ],
37
- refetchQueryIndex: null,
38
39
  },
39
40
  ],
40
- refetchQueryIndex: null,
41
41
  },
42
42
  ];
43
43
 
@@ -11,6 +11,7 @@ const readerAst: ReaderAst<Query__subquery__param> = [
11
11
  arguments: null,
12
12
  condition: null,
13
13
  isUpdatable: false,
14
+ refetchQueryIndex: null,
14
15
  selections: [
15
16
  {
16
17
  kind: "Linked",
@@ -24,6 +25,7 @@ const readerAst: ReaderAst<Query__subquery__param> = [
24
25
  ],
25
26
  condition: null,
26
27
  isUpdatable: false,
28
+ refetchQueryIndex: null,
27
29
  selections: [
28
30
  {
29
31
  kind: "Scalar",
@@ -33,10 +35,8 @@ const readerAst: ReaderAst<Query__subquery__param> = [
33
35
  isUpdatable: false,
34
36
  },
35
37
  ],
36
- refetchQueryIndex: null,
37
38
  },
38
39
  ],
39
- refetchQueryIndex: null,
40
40
  },
41
41
  ];
42
42
 
@@ -56,7 +56,7 @@ export const linkedUpdate = iso(`
56
56
  }
57
57
  }
58
58
  john_stuart_mill: node(id: 1) {
59
- link
59
+ __link
60
60
  asEconomist {
61
61
  name
62
62
  }
package/vitest.config.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import path from 'node:path';
1
2
  import babel from 'vite-plugin-babel';
2
3
  import commonjs from 'vite-plugin-commonjs';
3
4
  import { defineProject } from 'vitest/config';
@@ -8,7 +9,15 @@ export default defineProject({
8
9
  filter: /\.[jt]sx?$/,
9
10
  babelConfig: {
10
11
  presets: ['@babel/preset-typescript'],
11
- plugins: [require('../isograph-babel-plugin/BabelPluginIsograph')],
12
+ plugins: [
13
+ [
14
+ path.join(
15
+ __dirname,
16
+ '../isograph-babel-plugin/BabelPluginIsograph',
17
+ ),
18
+ { searchFrom: __dirname },
19
+ ],
20
+ ],
12
21
  },
13
22
  }),
14
23
  commonjs({
@@ -1,2 +0,0 @@
1
- import type { Link } from '@isograph/react';
2
- export type Economist__link__output_type = Link<"Economist">;
@@ -1,3 +0,0 @@
1
- import type { Link } from '@isograph/react';
2
- export type Node__link__output_type =
3
- | Link<"Economist">;