@isograph/react 0.0.0-main-4b464030 → 0.0.0-main-6df788b2
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/.turbo/turbo-compile-libs.log +2 -2
- package/.turbo/turbo-tsc.log +1 -1
- package/dist/core/PromiseWrapper.d.mts.map +1 -1
- package/dist/core/cache.js +3 -1
- package/dist/core/cache.mjs +3 -1
- package/dist/core/cache.mjs.map +1 -1
- package/dist/core/entrypoint.d.mts +0 -2
- package/dist/core/entrypoint.d.mts.map +1 -1
- package/dist/core/entrypoint.d.ts +0 -2
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/entrypoint.mjs.map +1 -1
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/read.d.mts.map +1 -1
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +0 -1
- package/dist/core/read.mjs +0 -1
- package/dist/core/read.mjs.map +1 -1
- package/dist/core/reader.d.mts +0 -2
- package/dist/core/reader.d.mts.map +1 -1
- package/dist/core/reader.d.ts +0 -2
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/util.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/cache.ts +9 -1
- package/src/core/entrypoint.ts +0 -2
- package/src/core/read.ts +0 -1
- package/src/core/reader.ts +0 -2
- package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +0 -1
- package/src/tests/__isograph/Query/linkedUpdate/normalization_ast.ts +0 -12
- package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +0 -6
- package/src/tests/__isograph/Query/meName/normalization_ast.ts +0 -3
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +0 -2
- package/src/tests/__isograph/Query/meNameSuccessor/normalization_ast.ts +0 -8
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +0 -5
- package/src/tests/__isograph/Query/nodeField/normalization_ast.ts +0 -3
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +0 -2
- package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +0 -3
- package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +0 -2
- package/src/tests/__isograph/Query/startUpdate/normalization_ast.ts +0 -6
- package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +0 -3
- package/src/tests/__isograph/Query/subquery/normalization_ast.ts +0 -4
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +0 -3
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
../.. | WARN Unsupported engine: wanted: {"node":"24.12.0"} (current: {"node":"v22.22.0","pnpm":"10.15.0"})
|
|
2
2
|
|
|
3
|
-
> @isograph/react@0.0.0-main-
|
|
3
|
+
> @isograph/react@0.0.0-main-6df788b2 compile-libs /home/runner/work/isograph/isograph/libs/isograph-react
|
|
4
4
|
> tsdown
|
|
5
5
|
|
|
6
6
|
[34mℹ[39m tsdown [2mv0.15.10[22m powered by rolldown [2mv1.0.0-beta.44[22m
|
|
7
7
|
[34mℹ[39m Using tsdown config: [4m/home/runner/work/isograph/isograph/tsdown.config.ts[24m
|
|
8
|
-
(node:
|
|
8
|
+
(node:2810) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/isograph/isograph/tsdown.config.ts is not specified and it doesn't parse as CommonJS.
|
|
9
9
|
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
|
|
10
10
|
To eliminate this warning, add "type": "module" to /home/runner/work/isograph/isograph/package.json.
|
|
11
11
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
package/.turbo/turbo-tsc.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
../.. | WARN Unsupported engine: wanted: {"node":"24.12.0"} (current: {"node":"v22.22.0","pnpm":"10.15.0"})
|
|
2
2
|
|
|
3
|
-
> @isograph/react@0.0.0-main-
|
|
3
|
+
> @isograph/react@0.0.0-main-6df788b2 tsc /home/runner/work/isograph/isograph/libs/isograph-react
|
|
4
4
|
> tsc
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromiseWrapper.d.mts","names":[],"sources":["../../src/core/PromiseWrapper.ts"],"sourcesContent":[],"mappings":";KAAY,QAAA;AAAA,cAEC,OAFO,EAAA,OAAA,MAAA;AAEP,KACD,MAAA,GAD4B,OACZ,OADY;AAC5B,KAEA,MAFM,CAAA,CAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"PromiseWrapper.d.mts","names":[],"sources":["../../src/core/PromiseWrapper.ts"],"sourcesContent":[],"mappings":";KAAY,QAAA;AAAA,cAEC,OAFO,EAAA,OAAA,MAAA;AAEP,KACD,MAAA,GAD4B,OACZ,OADY;AAC5B,KAEA,MAFM,CAAA,CAAA,EAAA,CAAA,CAAU,GAAA;EAEhB,SAAM,IAAA,EAAA,IAAA;EAcN,SAAA,KAAA,EAXU,CAWI;CACU,GAAA;EAAG,SAAA,IAAA,EAAA,KAAA;EAAX,SAAA,KAAA,EARN,CAQM;CAAR;;;;;AACV,KAFE,cAEF,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,GAAA;EAAgC,SAAA,OAAA,EADtB,OACsB,CADd,OACc,CADN,CACM,EADH,MACG,CAAA,CAAA;EAAM,MAAA,EAAtC,MAAsC,CAA/B,OAA+B,CAAvB,CAAuB,EAApB,MAAoB,CAAA,EAAX,CAAW,CAAA,GAAN,MAAM;AAGhD,CAAA;AAAqE,UAApD,gBAAoD,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,SAAf,cAAe,CAAA,CAAA,EAAG,CAAH,CAAA,CAAA;EAAG,MAAA,EAAA;IAG5C,SAAA,IAAA,EAAA,IAAA;IAAG,SAAA,KAAA,EAAX,OAAW,CAAH,CAAG,EAAA,MAAA,CAAA;EAAX,CAAA;;AAHgD,iBAOpD,WAPoD,CAAA,CAAA,CAAA,CAAA,OAAA,EAQzD,OARyD,CAQjD,OARiD,CAQzC,CARyC,EAQtC,MARsC,CAAA,CAAA,CAAA,EASjE,cATiE,CASlD,CATkD,EAAA,OAAA,CAAA;AAOpD,iBAeA,iBAfW,CAAA,CAAA,CAAA,CAAA,KAAA,EAgBlB,OAhBkB,CAgBV,CAhBU,EAgBP,MAhBO,CAAA,CAAA,EAiBxB,gBAjBwB,CAiBP,CAjBO,EAAA,KAAA,CAAA;AACA,iBA0BX,WA1BW,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EA0BU,cA1BV,CA0ByB,CA1BzB,EA0B4B,CA1B5B,CAAA,CAAA,EA0BiC,CA1BjC;AAAG,KAwClB,YAxCkB,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA;EAAX,SAAA,IAAA,EAAA,SAAA;EAAR,SAAA,OAAA,EA2Ca,OA3Cb,CA2CqB,CA3CrB,CAAA;CACO,GA4Cd,MA5Cc,CA4CP,CA5CO,EA4CJ,CA5CI,CAAA;AAAf,iBA8Ca,eA9Cb,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EA+CE,cA/CF,CA+CiB,CA/CjB,EA+CoB,CA/CpB,CAAA,CAAA,EAgDA,YAhDA,CAgDa,CAhDb,EAgDgB,CAhDhB,CAAA"}
|
package/dist/core/cache.js
CHANGED
|
@@ -209,7 +209,9 @@ const FIRST_SPLIT_KEY = "____";
|
|
|
209
209
|
const SECOND_SPLIT_KEY = "___";
|
|
210
210
|
const THIRD_SPLIT_KEY = "__";
|
|
211
211
|
function getDataIdOfNetworkResponse(parentRecordLink, dataToNormalize, astNode, variables, index) {
|
|
212
|
-
|
|
212
|
+
const __typename = astNode.concreteType ?? dataToNormalize[TYPENAME_FIELD_NAME];
|
|
213
|
+
if (__typename == null) throw new Error("Unexpected missing __typename in network response when normalizing a linked field. This is indicative of a bug in Isograph.");
|
|
214
|
+
if (__typename === "Query") return require_IsographEnvironment.ROOT_ID;
|
|
213
215
|
const dataId = dataToNormalize.id;
|
|
214
216
|
if (dataId != null) return dataId;
|
|
215
217
|
let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;
|
package/dist/core/cache.mjs
CHANGED
|
@@ -207,7 +207,9 @@ const FIRST_SPLIT_KEY = "____";
|
|
|
207
207
|
const SECOND_SPLIT_KEY = "___";
|
|
208
208
|
const THIRD_SPLIT_KEY = "__";
|
|
209
209
|
function getDataIdOfNetworkResponse(parentRecordLink, dataToNormalize, astNode, variables, index) {
|
|
210
|
-
|
|
210
|
+
const __typename = astNode.concreteType ?? dataToNormalize[TYPENAME_FIELD_NAME];
|
|
211
|
+
if (__typename == null) throw new Error("Unexpected missing __typename in network response when normalizing a linked field. This is indicative of a bug in Isograph.");
|
|
212
|
+
if (__typename === "Query") return ROOT_ID;
|
|
211
213
|
const dataId = dataToNormalize.id;
|
|
212
214
|
if (dataId != null) return dataId;
|
|
213
215
|
let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;
|
package/dist/core/cache.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.mjs","names":["dataIds: (StoreLink | null)[]","argumentValue"],"sources":["../../src/core/cache.ts"],"sourcesContent":["import { type Factory, ParentCache } from '@isograph/react-disposable-state';\nimport type { Brand } from './brand';\nimport type {\n NormalizationAstNodes,\n NormalizationInlineFragment,\n NormalizationLinkedField,\n NormalizationScalarField,\n} from './entrypoint';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n VariableValue,\n} from './FragmentReference';\nimport {\n type DataId,\n type DataTypeValueLinked,\n getLink,\n type IsographEnvironment,\n ROOT_ID,\n type StoreLink,\n type StoreRecord,\n type TypeName,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport {\n getMutableStoreRecordProxy,\n type StoreLayerWithData,\n} from './optimisticProxy';\nimport type { ReaderLinkedField, ReaderScalarField } from './reader';\nimport { type Argument, type ArgumentValue, isArray, stableCopy } from './util';\n\nexport const TYPENAME_FIELD_NAME = '__typename';\n\nexport function getOrCreateItemInSuspenseCache<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n>(\n environment: IsographEnvironment,\n index: string,\n factory: Factory<FragmentReference<TReadFromStore, TClientFieldValue>>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n if (environment.fragmentCache[index] == null) {\n environment.fragmentCache[index] = new ParentCache(factory);\n }\n\n return environment.fragmentCache[index];\n}\n\nexport type NetworkResponsePlural<T> =\n | null\n | T\n | readonly T[]\n | readonly (null | T)[];\nexport type NetworkResponseScalarValue = string | number | boolean | unknown;\n\nexport type NetworkResponseValue =\n | NetworkResponsePlural<NetworkResponseScalarValue>\n | NetworkResponsePlural<NetworkResponseObject>;\n\nexport type NetworkResponseObject = {\n // N.B. undefined is here to support optional id's, but\n // undefined should not *actually* be present in the network response.\n readonly [K in\n | ScalarNetworkResponseKey\n | LinkedNetworkResponseKey]: K extends ScalarNetworkResponseKey\n ? undefined | NetworkResponsePlural<NetworkResponseScalarValue>\n : undefined | NetworkResponsePlural<NetworkResponseObject>;\n} & {\n readonly id?: DataId;\n readonly __typename?: TypeName;\n};\n\nexport function normalizeData(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponse: NetworkResponseObject,\n variables: Variables,\n root: StoreLink,\n encounteredIds: EncounteredIds,\n): EncounteredIds {\n logMessage(environment, () => ({\n kind: 'AboutToNormalize',\n normalizationAst,\n networkResponse,\n variables,\n }));\n\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, root);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n normalizationAst,\n networkResponse,\n newStoreRecord,\n root,\n variables,\n encounteredIds,\n );\n\n return encounteredIds;\n}\n\nexport function subscribeToAnyChange(\n environment: IsographEnvironment,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyRecords',\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function subscribeToAnyChangesToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyChangesToRecord',\n recordLink,\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function onNextChangeToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n): Promise<void> {\n return new Promise((resolve) => {\n const unsubscribe = subscribeToAnyChangesToRecord(\n environment,\n recordLink,\n () => {\n unsubscribe();\n resolve();\n },\n );\n });\n}\n\nexport type EncounteredIds = Map<TypeName, Set<DataId>>;\n/**\n * Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.\n */\nfunction normalizeDataIntoRecord(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n let recordHasBeenUpdated = false;\n for (const normalizationNode of normalizationAst) {\n switch (normalizationNode.kind) {\n case 'Scalar': {\n const scalarFieldResultedInChange = normalizeScalarField(\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n variables,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || scalarFieldResultedInChange;\n break;\n }\n case 'Linked': {\n const linkedFieldResultedInChange = normalizeLinkedField(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || linkedFieldResultedInChange;\n break;\n }\n case 'InlineFragment': {\n const inlineFragmentResultedInChange = normalizeInlineFragment(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || inlineFragmentResultedInChange;\n break;\n }\n }\n }\n if (recordHasBeenUpdated) {\n let encounteredRecordsIds = insertEmptySetIfMissing(\n mutableEncounteredIds,\n targetParentRecordLink.__typename,\n );\n\n encounteredRecordsIds.add(targetParentRecordLink.__link);\n }\n return recordHasBeenUpdated;\n}\n\nexport function insertEmptySetIfMissing<K, V>(map: Map<K, Set<V>>, key: K) {\n let result = map.get(key);\n if (result === undefined) {\n result = new Set();\n map.set(key, result);\n }\n return result;\n}\n\ntype RecordHasBeenUpdated = boolean;\nfunction normalizeScalarField(\n astNode: NormalizationScalarField,\n networkResponseParentRecord: NetworkResponseObject,\n targetStoreRecord: StoreRecord,\n variables: Variables,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetStoreRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetStoreRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n targetStoreRecord[parentRecordKey] = networkResponseData;\n return existingValue !== networkResponseData;\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeLinkedField(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetParentRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetParentRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n if (isArray(networkResponseData)) {\n // TODO check astNode.plural or the like\n const dataIds: (StoreLink | null)[] = [];\n for (let i = 0; i < networkResponseData.length; i++) {\n const networkResponseObject = networkResponseData[i];\n if (networkResponseObject == null) {\n dataIds.push(null);\n continue;\n }\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseObject,\n targetParentRecordLink,\n variables,\n i,\n mutableEncounteredIds,\n );\n\n const __typename =\n astNode.concreteType ?? networkResponseObject[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n dataIds.push({\n __link: newStoreRecordId,\n __typename,\n });\n }\n targetParentRecord[parentRecordKey] = dataIds;\n return !dataIdsAreTheSame(existingValue, dataIds);\n } else {\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseData,\n targetParentRecordLink,\n variables,\n null,\n mutableEncounteredIds,\n );\n\n let __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n targetParentRecord[parentRecordKey] = {\n __link: newStoreRecordId,\n __typename,\n };\n\n const link = getLink(existingValue);\n return link?.__link !== newStoreRecordId || link.__typename !== __typename;\n }\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeInlineFragment(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationInlineFragment,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const typeToRefineTo = astNode.type;\n if (networkResponseParentRecord[TYPENAME_FIELD_NAME] === typeToRefineTo) {\n const hasBeenModified = normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n return hasBeenModified;\n }\n return false;\n}\n\nfunction dataIdsAreTheSame(\n existingValue: DataTypeValueLinked,\n newDataIds: (StoreLink | null)[],\n): boolean {\n if (isArray(existingValue)) {\n if (newDataIds.length !== existingValue.length) {\n return false;\n }\n for (let i = 0; i < newDataIds.length; i++) {\n const maybeLink = getLink(existingValue[i]);\n if (\n newDataIds[i]?.__link !== maybeLink?.__link ||\n newDataIds[i]?.__typename !== maybeLink?.__typename\n ) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction normalizeNetworkResponseObject(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseData: NetworkResponseObject,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n index: number | null,\n mutableEncounteredIds: EncounteredIds,\n): DataId /* The id of the modified or newly created item */ {\n const newStoreRecordId = getDataIdOfNetworkResponse(\n targetParentRecordLink,\n networkResponseData,\n astNode,\n variables,\n index,\n );\n const __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response object. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const link = { __link: newStoreRecordId, __typename };\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, link);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseData,\n newStoreRecord,\n link,\n variables,\n mutableEncounteredIds,\n );\n\n return newStoreRecordId;\n}\n\ndeclare const LinkedParentRecordKeyBrand: unique symbol;\nexport type LinkedParentRecordKey = string & {\n brand?: Brand<undefined, typeof LinkedParentRecordKeyBrand>;\n};\n\ndeclare const ScalarParentRecordKeyBrand: unique symbol;\nexport type ScalarParentRecordKey = string & {\n brand?: Brand<undefined, typeof ScalarParentRecordKeyBrand>;\n};\n\nexport function getParentRecordKey(\n astNode: NormalizationLinkedField | ReaderLinkedField,\n variables: Variables,\n): LinkedParentRecordKey;\nexport function getParentRecordKey(\n astNode: NormalizationScalarField | ReaderScalarField,\n variables: Variables,\n): ScalarParentRecordKey;\nexport function getParentRecordKey(\n astNode:\n | NormalizationLinkedField\n | NormalizationScalarField\n | ReaderLinkedField\n | ReaderScalarField,\n variables: Variables,\n): string {\n let parentRecordKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n if (fieldParameters != null) {\n for (const fieldParameter of fieldParameters) {\n parentRecordKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n }\n\n return parentRecordKey;\n}\n\nfunction getStoreKeyChunkForArgumentValue(\n argumentValue: ArgumentValue,\n variables: Variables,\n): VariableValue {\n switch (argumentValue.kind) {\n case 'Object': {\n return Object.fromEntries(\n argumentValue.value.map(([argumentName, argumentValue]) => {\n return [\n argumentName,\n // substitute variables\n getStoreKeyChunkForArgumentValue(argumentValue, variables),\n ];\n }),\n );\n }\n case 'Literal': {\n return argumentValue.value;\n }\n case 'Variable': {\n return variables[argumentValue.name] ?? 'null';\n }\n case 'String': {\n return argumentValue.value;\n }\n case 'Enum': {\n return argumentValue.value;\n }\n }\n}\n\nfunction getStoreKeyChunkForArgument(argument: Argument, variables: Variables) {\n const [argumentName, argumentValue] = argument;\n let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);\n\n if (typeof chunk === 'object') {\n chunk = JSON.stringify(stableCopy(chunk));\n }\n\n return `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${chunk}`;\n}\n\ndeclare const LinkedNetworkResponseKeyBrand: unique symbol;\nexport type LinkedNetworkResponseKey = string & {\n brand?: Brand<undefined, typeof LinkedNetworkResponseKeyBrand>;\n};\n\ndeclare const ScalarNetworkResponseKeyBrand: unique symbol;\nexport type ScalarNetworkResponseKey = string & {\n brand?: Brand<undefined, typeof ScalarNetworkResponseKeyBrand>;\n};\n\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField,\n): LinkedNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationScalarField,\n): ScalarNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField | NormalizationScalarField,\n): string {\n let networkResponseKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n\n if (fieldParameters != null) {\n for (const [argumentName, argumentValue] of fieldParameters) {\n let argumentValueChunk = getArgumentValueChunk(argumentValue);\n networkResponseKey += `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${argumentValueChunk}`;\n }\n }\n\n return networkResponseKey;\n}\n\nfunction getArgumentValueChunk(argumentValue: ArgumentValue): string {\n switch (argumentValue.kind) {\n case 'Object': {\n return (\n 'o_' +\n argumentValue.value\n .map(([argumentName, argumentValue]) => {\n return (\n argumentName +\n THIRD_SPLIT_KEY +\n getArgumentValueChunk(argumentValue)\n );\n })\n .join('_') +\n '_c'\n );\n }\n case 'Literal': {\n return 'l_' + argumentValue.value;\n }\n case 'Variable': {\n return 'v_' + argumentValue.name;\n }\n case 'String': {\n // replace all non-word characters (alphanumeric & underscore) with underscores\n return 's_' + argumentValue.value.replaceAll(/\\W/g, '_');\n }\n case 'Enum': {\n return 'e_' + argumentValue.value;\n }\n }\n}\n\n// an alias might be pullRequests____first___first____after___cursor\nexport const FIRST_SPLIT_KEY = '____';\nexport const SECOND_SPLIT_KEY = '___';\nexport const THIRD_SPLIT_KEY = '__';\n\n// Returns a key to look up an item in the store\nfunction getDataIdOfNetworkResponse(\n parentRecordLink: StoreLink,\n dataToNormalize: NetworkResponseObject,\n astNode: NormalizationLinkedField,\n variables: Variables,\n index: number | null,\n): DataId {\n // If we are dealing with nested Query, use __ROOT as id\n // TODO do not hard code this value here\n if (astNode.concreteType === 'Query') {\n return ROOT_ID;\n }\n\n // Check whether the dataToNormalize has an id field. If so, that is the key.\n // If not, we construct an id from the parentRecordId and the field parameters.\n\n const dataId = dataToNormalize.id;\n if (dataId != null) {\n return dataId;\n }\n\n let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;\n if (index != null) {\n storeKey += `.${index}`;\n }\n\n const fieldParameters = astNode.arguments;\n if (fieldParameters == null) {\n return storeKey;\n }\n\n for (const fieldParameter of fieldParameters) {\n storeKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n return storeKey;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.mjs","names":["dataIds: (StoreLink | null)[]","argumentValue"],"sources":["../../src/core/cache.ts"],"sourcesContent":["import { type Factory, ParentCache } from '@isograph/react-disposable-state';\nimport type { Brand } from './brand';\nimport type {\n NormalizationAstNodes,\n NormalizationInlineFragment,\n NormalizationLinkedField,\n NormalizationScalarField,\n} from './entrypoint';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n VariableValue,\n} from './FragmentReference';\nimport {\n type DataId,\n type DataTypeValueLinked,\n getLink,\n type IsographEnvironment,\n ROOT_ID,\n type StoreLink,\n type StoreRecord,\n type TypeName,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport {\n getMutableStoreRecordProxy,\n type StoreLayerWithData,\n} from './optimisticProxy';\nimport type { ReaderLinkedField, ReaderScalarField } from './reader';\nimport { type Argument, type ArgumentValue, isArray, stableCopy } from './util';\n\nexport const TYPENAME_FIELD_NAME = '__typename';\n\nexport function getOrCreateItemInSuspenseCache<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n>(\n environment: IsographEnvironment,\n index: string,\n factory: Factory<FragmentReference<TReadFromStore, TClientFieldValue>>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n if (environment.fragmentCache[index] == null) {\n environment.fragmentCache[index] = new ParentCache(factory);\n }\n\n return environment.fragmentCache[index];\n}\n\nexport type NetworkResponsePlural<T> =\n | null\n | T\n | readonly T[]\n | readonly (null | T)[];\nexport type NetworkResponseScalarValue = string | number | boolean | unknown;\n\nexport type NetworkResponseValue =\n | NetworkResponsePlural<NetworkResponseScalarValue>\n | NetworkResponsePlural<NetworkResponseObject>;\n\nexport type NetworkResponseObject = {\n // N.B. undefined is here to support optional id's, but\n // undefined should not *actually* be present in the network response.\n readonly [K in\n | ScalarNetworkResponseKey\n | LinkedNetworkResponseKey]: K extends ScalarNetworkResponseKey\n ? undefined | NetworkResponsePlural<NetworkResponseScalarValue>\n : undefined | NetworkResponsePlural<NetworkResponseObject>;\n} & {\n readonly id?: DataId;\n readonly __typename?: TypeName;\n};\n\nexport function normalizeData(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponse: NetworkResponseObject,\n variables: Variables,\n root: StoreLink,\n encounteredIds: EncounteredIds,\n): EncounteredIds {\n logMessage(environment, () => ({\n kind: 'AboutToNormalize',\n normalizationAst,\n networkResponse,\n variables,\n }));\n\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, root);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n normalizationAst,\n networkResponse,\n newStoreRecord,\n root,\n variables,\n encounteredIds,\n );\n\n return encounteredIds;\n}\n\nexport function subscribeToAnyChange(\n environment: IsographEnvironment,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyRecords',\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function subscribeToAnyChangesToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyChangesToRecord',\n recordLink,\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function onNextChangeToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n): Promise<void> {\n return new Promise((resolve) => {\n const unsubscribe = subscribeToAnyChangesToRecord(\n environment,\n recordLink,\n () => {\n unsubscribe();\n resolve();\n },\n );\n });\n}\n\nexport type EncounteredIds = Map<TypeName, Set<DataId>>;\n/**\n * Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.\n */\nfunction normalizeDataIntoRecord(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n let recordHasBeenUpdated = false;\n for (const normalizationNode of normalizationAst) {\n switch (normalizationNode.kind) {\n case 'Scalar': {\n const scalarFieldResultedInChange = normalizeScalarField(\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n variables,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || scalarFieldResultedInChange;\n break;\n }\n case 'Linked': {\n const linkedFieldResultedInChange = normalizeLinkedField(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || linkedFieldResultedInChange;\n break;\n }\n case 'InlineFragment': {\n const inlineFragmentResultedInChange = normalizeInlineFragment(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || inlineFragmentResultedInChange;\n break;\n }\n }\n }\n if (recordHasBeenUpdated) {\n let encounteredRecordsIds = insertEmptySetIfMissing(\n mutableEncounteredIds,\n targetParentRecordLink.__typename,\n );\n\n encounteredRecordsIds.add(targetParentRecordLink.__link);\n }\n return recordHasBeenUpdated;\n}\n\nexport function insertEmptySetIfMissing<K, V>(map: Map<K, Set<V>>, key: K) {\n let result = map.get(key);\n if (result === undefined) {\n result = new Set();\n map.set(key, result);\n }\n return result;\n}\n\ntype RecordHasBeenUpdated = boolean;\nfunction normalizeScalarField(\n astNode: NormalizationScalarField,\n networkResponseParentRecord: NetworkResponseObject,\n targetStoreRecord: StoreRecord,\n variables: Variables,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetStoreRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetStoreRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n targetStoreRecord[parentRecordKey] = networkResponseData;\n return existingValue !== networkResponseData;\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeLinkedField(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetParentRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetParentRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n if (isArray(networkResponseData)) {\n // TODO check astNode.plural or the like\n const dataIds: (StoreLink | null)[] = [];\n for (let i = 0; i < networkResponseData.length; i++) {\n const networkResponseObject = networkResponseData[i];\n if (networkResponseObject == null) {\n dataIds.push(null);\n continue;\n }\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseObject,\n targetParentRecordLink,\n variables,\n i,\n mutableEncounteredIds,\n );\n\n const __typename =\n astNode.concreteType ?? networkResponseObject[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n dataIds.push({\n __link: newStoreRecordId,\n __typename,\n });\n }\n targetParentRecord[parentRecordKey] = dataIds;\n return !dataIdsAreTheSame(existingValue, dataIds);\n } else {\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseData,\n targetParentRecordLink,\n variables,\n null,\n mutableEncounteredIds,\n );\n\n let __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n targetParentRecord[parentRecordKey] = {\n __link: newStoreRecordId,\n __typename,\n };\n\n const link = getLink(existingValue);\n return link?.__link !== newStoreRecordId || link.__typename !== __typename;\n }\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeInlineFragment(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationInlineFragment,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const typeToRefineTo = astNode.type;\n if (networkResponseParentRecord[TYPENAME_FIELD_NAME] === typeToRefineTo) {\n const hasBeenModified = normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n return hasBeenModified;\n }\n return false;\n}\n\nfunction dataIdsAreTheSame(\n existingValue: DataTypeValueLinked,\n newDataIds: (StoreLink | null)[],\n): boolean {\n if (isArray(existingValue)) {\n if (newDataIds.length !== existingValue.length) {\n return false;\n }\n for (let i = 0; i < newDataIds.length; i++) {\n const maybeLink = getLink(existingValue[i]);\n if (\n newDataIds[i]?.__link !== maybeLink?.__link ||\n newDataIds[i]?.__typename !== maybeLink?.__typename\n ) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction normalizeNetworkResponseObject(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseData: NetworkResponseObject,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n index: number | null,\n mutableEncounteredIds: EncounteredIds,\n): DataId /* The id of the modified or newly created item */ {\n const newStoreRecordId = getDataIdOfNetworkResponse(\n targetParentRecordLink,\n networkResponseData,\n astNode,\n variables,\n index,\n );\n const __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response object. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const link = { __link: newStoreRecordId, __typename };\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, link);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseData,\n newStoreRecord,\n link,\n variables,\n mutableEncounteredIds,\n );\n\n return newStoreRecordId;\n}\n\ndeclare const LinkedParentRecordKeyBrand: unique symbol;\nexport type LinkedParentRecordKey = string & {\n brand?: Brand<undefined, typeof LinkedParentRecordKeyBrand>;\n};\n\ndeclare const ScalarParentRecordKeyBrand: unique symbol;\nexport type ScalarParentRecordKey = string & {\n brand?: Brand<undefined, typeof ScalarParentRecordKeyBrand>;\n};\n\nexport function getParentRecordKey(\n astNode: NormalizationLinkedField | ReaderLinkedField,\n variables: Variables,\n): LinkedParentRecordKey;\nexport function getParentRecordKey(\n astNode: NormalizationScalarField | ReaderScalarField,\n variables: Variables,\n): ScalarParentRecordKey;\nexport function getParentRecordKey(\n astNode:\n | NormalizationLinkedField\n | NormalizationScalarField\n | ReaderLinkedField\n | ReaderScalarField,\n variables: Variables,\n): string {\n let parentRecordKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n if (fieldParameters != null) {\n for (const fieldParameter of fieldParameters) {\n parentRecordKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n }\n\n return parentRecordKey;\n}\n\nfunction getStoreKeyChunkForArgumentValue(\n argumentValue: ArgumentValue,\n variables: Variables,\n): VariableValue {\n switch (argumentValue.kind) {\n case 'Object': {\n return Object.fromEntries(\n argumentValue.value.map(([argumentName, argumentValue]) => {\n return [\n argumentName,\n // substitute variables\n getStoreKeyChunkForArgumentValue(argumentValue, variables),\n ];\n }),\n );\n }\n case 'Literal': {\n return argumentValue.value;\n }\n case 'Variable': {\n return variables[argumentValue.name] ?? 'null';\n }\n case 'String': {\n return argumentValue.value;\n }\n case 'Enum': {\n return argumentValue.value;\n }\n }\n}\n\nfunction getStoreKeyChunkForArgument(argument: Argument, variables: Variables) {\n const [argumentName, argumentValue] = argument;\n let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);\n\n if (typeof chunk === 'object') {\n chunk = JSON.stringify(stableCopy(chunk));\n }\n\n return `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${chunk}`;\n}\n\ndeclare const LinkedNetworkResponseKeyBrand: unique symbol;\nexport type LinkedNetworkResponseKey = string & {\n brand?: Brand<undefined, typeof LinkedNetworkResponseKeyBrand>;\n};\n\ndeclare const ScalarNetworkResponseKeyBrand: unique symbol;\nexport type ScalarNetworkResponseKey = string & {\n brand?: Brand<undefined, typeof ScalarNetworkResponseKeyBrand>;\n};\n\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField,\n): LinkedNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationScalarField,\n): ScalarNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField | NormalizationScalarField,\n): string {\n let networkResponseKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n\n if (fieldParameters != null) {\n for (const [argumentName, argumentValue] of fieldParameters) {\n let argumentValueChunk = getArgumentValueChunk(argumentValue);\n networkResponseKey += `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${argumentValueChunk}`;\n }\n }\n\n return networkResponseKey;\n}\n\nfunction getArgumentValueChunk(argumentValue: ArgumentValue): string {\n switch (argumentValue.kind) {\n case 'Object': {\n return (\n 'o_' +\n argumentValue.value\n .map(([argumentName, argumentValue]) => {\n return (\n argumentName +\n THIRD_SPLIT_KEY +\n getArgumentValueChunk(argumentValue)\n );\n })\n .join('_') +\n '_c'\n );\n }\n case 'Literal': {\n return 'l_' + argumentValue.value;\n }\n case 'Variable': {\n return 'v_' + argumentValue.name;\n }\n case 'String': {\n // replace all non-word characters (alphanumeric & underscore) with underscores\n return 's_' + argumentValue.value.replaceAll(/\\W/g, '_');\n }\n case 'Enum': {\n return 'e_' + argumentValue.value;\n }\n }\n}\n\n// an alias might be pullRequests____first___first____after___cursor\nexport const FIRST_SPLIT_KEY = '____';\nexport const SECOND_SPLIT_KEY = '___';\nexport const THIRD_SPLIT_KEY = '__';\n\n// Returns a key to look up an item in the store\nfunction getDataIdOfNetworkResponse(\n parentRecordLink: StoreLink,\n dataToNormalize: NetworkResponseObject,\n astNode: NormalizationLinkedField,\n variables: Variables,\n index: number | null,\n): DataId {\n const __typename =\n astNode.concreteType ?? dataToNormalize[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n // If we are dealing with nested Query, use __ROOT as id\n // TODO do not hard code this value here\n if (__typename === 'Query') {\n return ROOT_ID;\n }\n\n // Check whether the dataToNormalize has an id field. If so, that is the key.\n // If not, we construct an id from the parentRecordId and the field parameters.\n\n const dataId = dataToNormalize.id;\n if (dataId != null) {\n return dataId;\n }\n\n let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;\n if (index != null) {\n storeKey += `.${index}`;\n }\n\n const fieldParameters = astNode.arguments;\n if (fieldParameters == null) {\n return storeKey;\n }\n\n for (const fieldParameter of fieldParameters) {\n storeKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n return storeKey;\n}\n"],"mappings":"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"}
|
|
@@ -70,13 +70,11 @@ type NormalizationAstLoader = {
|
|
|
70
70
|
};
|
|
71
71
|
type NormalizationScalarField = {
|
|
72
72
|
readonly kind: 'Scalar';
|
|
73
|
-
readonly isFallible: boolean;
|
|
74
73
|
readonly fieldName: string;
|
|
75
74
|
readonly arguments: Arguments | null;
|
|
76
75
|
};
|
|
77
76
|
type NormalizationLinkedField = {
|
|
78
77
|
readonly kind: 'Linked';
|
|
79
|
-
readonly isFallible: boolean;
|
|
80
78
|
readonly fieldName: string;
|
|
81
79
|
readonly arguments: Arguments | null;
|
|
82
80
|
readonly selections: NormalizationAstNodes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint.d.mts","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"entrypoint.d.mts","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -70,13 +70,11 @@ type NormalizationAstLoader = {
|
|
|
70
70
|
};
|
|
71
71
|
type NormalizationScalarField = {
|
|
72
72
|
readonly kind: 'Scalar';
|
|
73
|
-
readonly isFallible: boolean;
|
|
74
73
|
readonly fieldName: string;
|
|
75
74
|
readonly arguments: Arguments | null;
|
|
76
75
|
};
|
|
77
76
|
type NormalizationLinkedField = {
|
|
78
77
|
readonly kind: 'Linked';
|
|
79
|
-
readonly isFallible: boolean;
|
|
80
78
|
readonly fieldName: string;
|
|
81
79
|
readonly arguments: Arguments | null;
|
|
82
80
|
readonly selections: NormalizationAstNodes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint.d.ts","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAUY,gDACa;;EADb,SAAA,cAAA,EAKe,sBALS,CAMhC,cANgC,EAOhC,iBAPgC,EAAA,GAAA,CAAA;EACX,SAAA,oBAAA,EAUQ,wCAVR,EAAA;CAKrB;AACA,KAOQ,2BAPR,CAAA,uBAQqB,qBARrB,EAAA,iBAAA,CAAA,GAAA;EAFuB,SAAA,IAAA,EAAA,0BAAA;EAMM,SAAA,cAAA,EAAA,GAAA,GAQA,sBARA,CAS7B,cAT6B,EAU7B,iBAV6B,EAAA,GAAA,CAAA;EAAwC,SAAA,oBAAA,EAcxC,wCAdwC,EAAA;AAGzE,CAAA;AACyB,KAab,8BAba,CAAA,uBAcA,qBAdA,EAAA,iBAAA,CAAA,GAAA;EAKrB,SAAA,IAAA,EAAA,gCAAA;EACA,SAAA,SAAA,EAYkB,oBAZlB;EAF6B,SAAA,kBAAA,EAAA,qBAAA,GAAA,yBAAA;EAMA,SAAA,MAAA,EAAA,GAAA,GAYR,OAZQ,CAa7B,2BAb6B,CAaD,cAbC,EAae,iBAbf,CAAA,CAAA;CAAwC;AAG7D,KAcA,kBAdA,CAAA,iBAA8B,CAAA,GAAA;EACjB,SAAA,IAAA,EAAA,oBAAA;EAIH,SAAA,SAAA,EAWA,iBAXA,GAWoB,0BAXpB;EAKU,SAAA,gBAAA,EAOH,iBAPG;CAAgB;AAA5C,KAUQ,iBAAA,GAVR;EADqB,SAAA,IAAA,EAAA,WAAA;EAAO,SAAA,IAAA,EAAA,MAAA;AAKhC,CAAA;AAEsB,KASV,0BAAA,GATU;EAAoB,SAAA,IAAA,EAAA,oBAAA;EACb,SAAA,WAAA,EAAA,MAAA;EAAiB,SAAA,SAAA,EAWxB,mCAXwB,GAAA,IAAA;AAG9C,CAAA;AAKY,KAMA,mCAAA,GAHU;EAGV,SAAA,IAAA,EAAA,6BAAmC;EAOnC,SAAA,aAAkB,EAAA,MAAA,GAAA,IAAA;EACL,SAAA,aAAA,EAAA,OAAA,GAAA,UAAA,GAAA,cAAA;CAEG;AAAmB,KAHnC,kBAGmC,CAAA,uBAFtB,qBAEsB,EAAA,iBAAA,EAAA,0BAAnB,gBAAmB,GAAA,sBAAA,EAAA,yBACpB,qBADoB,CAAA,GAAA;EACpB,SAAA,IAAA,EAAA,YAAA;EAGuB,SAAA,kBAAA,EAAnB,kBAAmB,CAAA,iBAAA,CAAA;EAAnB,SAAA,wBAAA,EAEzB,2BAFyB,CAEG,cAFH,EAEmB,iBAFnB,CAAA,GAGzB,8BAHyB,CAGM,cAHN,EAGsB,iBAHtB,CAAA;EAEG,SAAA,YAAA,EAET,QAFS;EAAgB;;;EACG,SAAA,mBAAA,CAAA,EAKpB,WALoB,CAKR,aALQ,CAKM,gBALN,CAAA,CAAA;CAA/C;AACmB,KAOb,6BAPa,CAAA,oBAQH,kBARG,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA,GASrB,iBATqB,CAUvB,oBAVuB,CAUF,WAVE,CAAA,EAWvB,uBAXuB,CAWC,WAXD,CAAA,CAAA;AAIkC,KAU/C,wBAV+C,CAAA,uBAWlC,qBAXkC,EAAA,iBAAA,EAAA,yBAahC,qBAbgC,CAAA,GAAA;EAAd,SAAA,IAAA,EAAA,kBAAA;EAAZ,SAAA,YAAA,EAAA,MAAA;EAAW,SAAA,kBAAA,EAAA,qBAAA,GAAA,yBAAA;EAGhC,SAAA,MAAA,EAAA,GAAA,GAiBa,OAjBb,CAkBR,kBAlBqC,CAmBnC,cAnBmC,EAoBnC,iBApBmC,EAqBnC,gBArBmC,EAsBnC,gBAtBmC,CAAA,CAAA;CACnB;AAEC,KAwBX,oBAAA,GACR,wBAzBmB,GA0BnB,wBA1BmB,GA2BnB,2BA3BmB;AAArB,KA6BU,qBAAA,GAAwB,aA7BlC,CA6BgD,oBA7BhD,CAAA;AACwB,KA8Bd,gBAAA,GA9Bc;EAAxB,SAAA,IAAA,EAAA,kBAAA;EAFE,SAAA,UAAA,EAkCmB,qBAlCnB;CAAiB;AAKT,KAgCA,sBAAA,GAhCwB;EACX,SAAA,IAAA,EAAA,wBAAA;EAEE,SAAA,MAAA,EAAA,GAAA,GA+BF,OA/BE,CA+BM,gBA/BN,CAAA;CASrB;AACA,KAwBM,wBAAA,GAxBN;EACA,SAAA,IAAA,EAAA,QAAA;EACA,SAAA,
|
|
1
|
+
{"version":3,"file":"entrypoint.d.ts","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint.mjs","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":["import type { Contravariant, PhantomData } from './brand';\nimport type { NetworkResponseObject } from './cache';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n} from './FragmentReference';\nimport type { ComponentOrFieldName, TypeName } from './IsographEnvironment';\nimport type { TopLevelReaderArtifact } from './reader';\nimport type { Arguments } from './util';\n\nexport type ReaderWithRefetchQueries<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n> = {\n readonly kind: 'ReaderWithRefetchQueries';\n readonly readerArtifact: TopLevelReaderArtifact<\n TReadFromStore,\n TClientFieldValue,\n // TODO don't type this as any\n any\n >;\n readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];\n};\n\nexport type RawReaderWithRefetchQueries<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n> = {\n readonly kind: 'ReaderWithRefetchQueries';\n readonly readerArtifact: () => TopLevelReaderArtifact<\n TReadFromStore,\n TClientFieldValue,\n // TODO don't type this as any\n any\n >;\n readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];\n};\n\nexport type ReaderWithRefetchQueriesLoader<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n> = {\n readonly kind: 'ReaderWithRefetchQueriesLoader';\n readonly fieldName: ComponentOrFieldName;\n readonly readerArtifactKind:\n | 'EagerReaderArtifact'\n | 'ComponentReaderArtifact';\n readonly loader: () => Promise<\n RawReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>\n >;\n};\n\nexport type NetworkRequestInfo<TNormalizationAst> = {\n readonly kind: 'NetworkRequestInfo';\n readonly operation: IsographOperation | IsographPersistedOperation;\n readonly normalizationAst: TNormalizationAst;\n};\n\nexport type IsographOperation = {\n readonly kind: 'Operation';\n readonly text: string;\n};\n\nexport type IsographPersistedOperation = {\n readonly kind: 'PersistedOperation';\n readonly operationId: string;\n readonly extraInfo: IsographPersistedOperationExtraInfo | null;\n};\n\nexport type IsographPersistedOperationExtraInfo = {\n readonly kind: 'PersistedOperationExtraInfo';\n readonly operationName: string | null;\n readonly operationKind: 'Query' | 'Mutation' | 'Subscription';\n};\n\n// This type should be treated as an opaque type.\nexport type IsographEntrypoint<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TNormalizationAst extends NormalizationAst | NormalizationAstLoader,\n TRawResponseType extends NetworkResponseObject,\n> = {\n readonly kind: 'Entrypoint';\n readonly networkRequestInfo: NetworkRequestInfo<TNormalizationAst>;\n readonly readerWithRefetchQueries:\n | RawReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>\n | ReaderWithRefetchQueriesLoader<TReadFromStore, TClientFieldValue>;\n readonly concreteType: TypeName;\n /**\n * This field exists solely for typechecking, and will not exist at runtime.\n */\n readonly '~TRawResponseType'?: PhantomData<Contravariant<TRawResponseType>>;\n};\n\nexport type FragmentReferenceOfEntrypoint<\n TEntrypoint extends IsographEntrypoint<any, any, any, any>,\n> = FragmentReference<\n ExtractReadFromStore<TEntrypoint>,\n ExtractClientFieldValue<TEntrypoint>\n>;\n\nexport type IsographEntrypointLoader<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TRawResponseType extends NetworkResponseObject,\n> = {\n readonly kind: 'EntrypointLoader';\n readonly typeAndField: string;\n readonly readerArtifactKind:\n | 'EagerReaderArtifact'\n | 'ComponentReaderArtifact';\n readonly loader: () => Promise<\n IsographEntrypoint<\n TReadFromStore,\n TClientFieldValue,\n NormalizationAst,\n TRawResponseType\n >\n >;\n};\n\nexport type NormalizationAstNode =\n | NormalizationScalarField\n | NormalizationLinkedField\n | NormalizationInlineFragment;\n\nexport type NormalizationAstNodes = ReadonlyArray<NormalizationAstNode>;\n\nexport type NormalizationAst = {\n readonly kind: 'NormalizationAst';\n readonly selections: NormalizationAstNodes;\n};\n\nexport type NormalizationAstLoader = {\n readonly kind: 'NormalizationAstLoader';\n readonly loader: () => Promise<NormalizationAst>;\n};\n\nexport type NormalizationScalarField = {\n readonly kind: 'Scalar';\n readonly
|
|
1
|
+
{"version":3,"file":"entrypoint.mjs","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":["import type { Contravariant, PhantomData } from './brand';\nimport type { NetworkResponseObject } from './cache';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n} from './FragmentReference';\nimport type { ComponentOrFieldName, TypeName } from './IsographEnvironment';\nimport type { TopLevelReaderArtifact } from './reader';\nimport type { Arguments } from './util';\n\nexport type ReaderWithRefetchQueries<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n> = {\n readonly kind: 'ReaderWithRefetchQueries';\n readonly readerArtifact: TopLevelReaderArtifact<\n TReadFromStore,\n TClientFieldValue,\n // TODO don't type this as any\n any\n >;\n readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];\n};\n\nexport type RawReaderWithRefetchQueries<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n> = {\n readonly kind: 'ReaderWithRefetchQueries';\n readonly readerArtifact: () => TopLevelReaderArtifact<\n TReadFromStore,\n TClientFieldValue,\n // TODO don't type this as any\n any\n >;\n readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];\n};\n\nexport type ReaderWithRefetchQueriesLoader<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n> = {\n readonly kind: 'ReaderWithRefetchQueriesLoader';\n readonly fieldName: ComponentOrFieldName;\n readonly readerArtifactKind:\n | 'EagerReaderArtifact'\n | 'ComponentReaderArtifact';\n readonly loader: () => Promise<\n RawReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>\n >;\n};\n\nexport type NetworkRequestInfo<TNormalizationAst> = {\n readonly kind: 'NetworkRequestInfo';\n readonly operation: IsographOperation | IsographPersistedOperation;\n readonly normalizationAst: TNormalizationAst;\n};\n\nexport type IsographOperation = {\n readonly kind: 'Operation';\n readonly text: string;\n};\n\nexport type IsographPersistedOperation = {\n readonly kind: 'PersistedOperation';\n readonly operationId: string;\n readonly extraInfo: IsographPersistedOperationExtraInfo | null;\n};\n\nexport type IsographPersistedOperationExtraInfo = {\n readonly kind: 'PersistedOperationExtraInfo';\n readonly operationName: string | null;\n readonly operationKind: 'Query' | 'Mutation' | 'Subscription';\n};\n\n// This type should be treated as an opaque type.\nexport type IsographEntrypoint<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TNormalizationAst extends NormalizationAst | NormalizationAstLoader,\n TRawResponseType extends NetworkResponseObject,\n> = {\n readonly kind: 'Entrypoint';\n readonly networkRequestInfo: NetworkRequestInfo<TNormalizationAst>;\n readonly readerWithRefetchQueries:\n | RawReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>\n | ReaderWithRefetchQueriesLoader<TReadFromStore, TClientFieldValue>;\n readonly concreteType: TypeName;\n /**\n * This field exists solely for typechecking, and will not exist at runtime.\n */\n readonly '~TRawResponseType'?: PhantomData<Contravariant<TRawResponseType>>;\n};\n\nexport type FragmentReferenceOfEntrypoint<\n TEntrypoint extends IsographEntrypoint<any, any, any, any>,\n> = FragmentReference<\n ExtractReadFromStore<TEntrypoint>,\n ExtractClientFieldValue<TEntrypoint>\n>;\n\nexport type IsographEntrypointLoader<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TRawResponseType extends NetworkResponseObject,\n> = {\n readonly kind: 'EntrypointLoader';\n readonly typeAndField: string;\n readonly readerArtifactKind:\n | 'EagerReaderArtifact'\n | 'ComponentReaderArtifact';\n readonly loader: () => Promise<\n IsographEntrypoint<\n TReadFromStore,\n TClientFieldValue,\n NormalizationAst,\n TRawResponseType\n >\n >;\n};\n\nexport type NormalizationAstNode =\n | NormalizationScalarField\n | NormalizationLinkedField\n | NormalizationInlineFragment;\n\nexport type NormalizationAstNodes = ReadonlyArray<NormalizationAstNode>;\n\nexport type NormalizationAst = {\n readonly kind: 'NormalizationAst';\n readonly selections: NormalizationAstNodes;\n};\n\nexport type NormalizationAstLoader = {\n readonly kind: 'NormalizationAstLoader';\n readonly loader: () => Promise<NormalizationAst>;\n};\n\nexport type NormalizationScalarField = {\n readonly kind: 'Scalar';\n readonly fieldName: string;\n readonly arguments: Arguments | null;\n};\n\nexport type NormalizationLinkedField = {\n readonly kind: 'Linked';\n readonly fieldName: string;\n readonly arguments: Arguments | null;\n readonly selections: NormalizationAstNodes;\n readonly concreteType: TypeName | null;\n};\n\nexport type NormalizationInlineFragment = {\n readonly kind: 'InlineFragment';\n readonly type: string;\n readonly selections: NormalizationAstNodes;\n};\n\n// This is more like an entrypoint, but one specifically for a refetch query/mutation\nexport type RefetchQueryNormalizationArtifact = {\n readonly kind: 'RefetchQuery';\n readonly networkRequestInfo: NetworkRequestInfo<NormalizationAst>;\n readonly concreteType: TypeName;\n};\n\n// TODO rename\nexport type RefetchQueryNormalizationArtifactWrapper = {\n readonly artifact: RefetchQueryNormalizationArtifact;\n readonly allowedVariables: string[];\n};\n\nexport function assertIsEntrypoint<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TNormalizationAst extends NormalizationAst | NormalizationAstLoader,\n TRawResponseType extends NetworkResponseObject,\n>(\n value:\n | IsographEntrypoint<\n TReadFromStore,\n TClientFieldValue,\n TNormalizationAst,\n TRawResponseType\n >\n | ((_: any) => any)\n // Temporarily, allow any here. Once we automatically provide\n // types to entrypoints, we probably don't need this.\n | any,\n): asserts value is IsographEntrypoint<\n TReadFromStore,\n TClientFieldValue,\n TNormalizationAst,\n TRawResponseType\n> {\n if (typeof value === 'function') throw new Error('Not a string');\n}\n\nexport type ExtractReadFromStore<Type> =\n Type extends IsographEntrypoint<infer X, any, any, any> ? X : never;\nexport type ExtractClientFieldValue<Type> =\n Type extends IsographEntrypoint<any, infer X, any, any> ? X : never;\nexport type ExtractRawResponseType<Type> =\n Type extends IsographEntrypoint<any, any, any, infer X> ? X : never;\nexport type ExtractResolverResult<Type> =\n Type extends IsographEntrypoint<any, infer X, any, any> ? X : never;\nexport type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;\n"],"mappings":";AA2KA,SAAgB,mBAMd,OAgBA;AACA,KAAI,OAAO,UAAU,WAAY,OAAM,IAAI,MAAM,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.d.ts","names":[],"sources":["../../src/core/logging.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AA8BA;;;;;;;;;;AA6BiB,KA7BL,UAAA,GA6BK;EAgBL,IAAA,EAAA,kBAAA;EACO,gBAAA,EA3CK,qBA2CL;EAEF,eAAA,EA5CM,qBA4CN;EACA,SAAA,EA5CA,SA4CA;CAID,GAAA;EAEJ,IAAA,EAAA,oBAAA;EAQE,KAAA,EAtDD,UAsDC;EAWI,cAAA,EAhEI,cAgEJ;CAAc,GAAA;EAOpB,IAAA,EAAA,mBAAW;EAGX,iBAAA,EAtEa,iBAuElB,CAAA,GAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"logging.d.ts","names":[],"sources":["../../src/core/logging.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AA8BA;;;;;;;;;;AA6BiB,KA7BL,UAAA,GA6BK;EAgBL,IAAA,EAAA,kBAAA;EACO,gBAAA,EA3CK,qBA2CL;EAEF,eAAA,EA5CM,qBA4CN;EACA,SAAA,EA5CA,SA4CA;CAID,GAAA;EAEJ,IAAA,EAAA,oBAAA;EAQE,KAAA,EAtDD,UAsDC;EAWI,cAAA,EAhEI,cAgEJ;CAAc,GAAA;EAOpB,IAAA,EAAA,mBAAW;EAGX,iBAAA,EAtEa,iBAuElB,CAAA,GAAA,EAAA,GAAA,CAAW;EAGF,GAAA,EAAA,MAAA;EAcA,GAAA,EAAA,MAAA;EACD,WAAA,EAAA,OAAA;CACR,GAAA;EACJ,IAAA,EAAA,qBAAA;EAAS,aAAA,EAAA,MAAA;YAnFI;;;YAKN,oCACA;aACO;;;;;;;;;;;;QAgBL;eACO;;aAEF;aACA;;;YAID;;QAEJ;;;;;;UAQE;;;;;;;;cAWI;;;;;KAON,WAAA,gBAA2B;KAG3B,kBAAA;OACL;;iBAGS,UAAA,cACD,uCACK;iBAYJ,cAAA,cACD,0BACR,cACJ"}
|
package/dist/core/read.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.mts","names":[],"sources":["../../src/core/read.ts"],"sourcesContent":[],"mappings":";;;;;;;AAsDY,KAAA,sBAAsB,CAAA,CAAA,CAAA,GAAA;EACH,SAAA,kBAAA,EAAA,cAAA;EACF,SAAA,IAAA,EAAZ,WAAY,CAAA,CAAA,CAAA;CAAZ;AAAW,iBAGZ,oBAHY,CAAA,uBAIH,qBAJG,CAAA,CAAA,WAAA,EAMb,mBANa,EAAA,iBAAA,EAOP,iBAPO,CAOW,cAPX,EAAA,OAAA,CAAA,EAAA,qBAAA,EAQH,2BARG,CAAA,EASzB,sBATyB,CASF,cATE,CAAA;AAGZ,KAuEJ,qBAvEwB,CAAA,IAAA,CAAA,GAAA;EACX,SAAA,IAAA,EAAA,SAAA;EAEV,SAAA,IAAA,EAsEE,IAtEF;CACwB;AAAlB,KAwET,cAxES,CAAA,IAAA,CAAA,GAyEjB,qBAzEiB,CAyEK,IAzEL,CAAA,GAAA;EACI,SAAA,IAAA,EAAA,aAAA;EACC,SAAA,MAAA,EAAA,MAAA;EAAvB,SAAA,YAAA,CAAA,EA2E2B,cA3E3B,CAAA,OAAA,CAAA;EAAsB,SAAA,UAAA,EA4EE,SA5EF;AAiEzB,CAAA;AAWoC,
|
|
1
|
+
{"version":3,"file":"read.d.mts","names":[],"sources":["../../src/core/read.ts"],"sourcesContent":[],"mappings":";;;;;;;AAsDY,KAAA,sBAAsB,CAAA,CAAA,CAAA,GAAA;EACH,SAAA,kBAAA,EAAA,cAAA;EACF,SAAA,IAAA,EAAZ,WAAY,CAAA,CAAA,CAAA;CAAZ;AAAW,iBAGZ,oBAHY,CAAA,uBAIH,qBAJG,CAAA,CAAA,WAAA,EAMb,mBANa,EAAA,iBAAA,EAOP,iBAPO,CAOW,cAPX,EAAA,OAAA,CAAA,EAAA,qBAAA,EAQH,2BARG,CAAA,EASzB,sBATyB,CASF,cATE,CAAA;AAGZ,KAuEJ,qBAvEwB,CAAA,IAAA,CAAA,GAAA;EACX,SAAA,IAAA,EAAA,SAAA;EAEV,SAAA,IAAA,EAsEE,IAtEF;CACwB;AAAlB,KAwET,cAxES,CAAA,IAAA,CAAA,GAyEjB,qBAzEiB,CAyEK,IAzEL,CAAA,GAAA;EACI,SAAA,IAAA,EAAA,aAAA;EACC,SAAA,MAAA,EAAA,MAAA;EAAvB,SAAA,YAAA,CAAA,EA2E2B,cA3E3B,CAAA,OAAA,CAAA;EAAsB,SAAA,UAAA,EA4EE,SA5EF;AAiEzB,CAAA;AAWoC,KA6zBxB,2BAAA,GA7zBwB;EA6zBxB,iBAAA,EAAA,OAAA"}
|
package/dist/core/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","names":[],"sources":["../../src/core/read.ts"],"sourcesContent":[],"mappings":";;;;;;AAwD6B,KAFjB,sBAEiB,CAAA,CAAA,CAAA,GAAA;EAAZ,SAAA,kBAAA,EADc,cACd;EAAW,SAAA,IAAA,EAAX,WAAW,CAAC,CAAD,CAAA;AAG5B,CAAA;AACyB,iBADT,oBACS,CAAA,uBAAA,qBAAA,CAAA,CAAA,WAAA,EAEV,mBAFU,EAAA,iBAAA,EAGJ,iBAHI,CAGc,cAHd,EAAA,OAAA,CAAA,EAAA,qBAAA,EAIA,2BAJA,CAAA,EAKtB,sBALsB,CAKC,cALD,CAAA;AAEV,KAoEH,qBApEG,CAAA,IAAA,CAAA,GAAA;EACwB,SAAA,IAAA,EAAA,SAAA;EAAlB,SAAA,IAAA,EAqEJ,IArEI;CACI;AACC,KAsEd,cAtEc,CAAA,IAAA,CAAA,GAuEtB,qBAvEsB,CAuEA,IAvEA,CAAA,GAAA;EAAvB,SAAA,IAAA,EAAA,aAAA;EAAsB,SAAA,MAAA,EAAA,MAAA;EAiEb,SAAA,YAAA,CAAA,EAUkB,cAVG,CAAA,OAEZ,CAAA;EAGT,SAAA,UAAc,EAMC,SAND;CACA;
|
|
1
|
+
{"version":3,"file":"read.d.ts","names":[],"sources":["../../src/core/read.ts"],"sourcesContent":[],"mappings":";;;;;;AAwD6B,KAFjB,sBAEiB,CAAA,CAAA,CAAA,GAAA;EAAZ,SAAA,kBAAA,EADc,cACd;EAAW,SAAA,IAAA,EAAX,WAAW,CAAC,CAAD,CAAA;AAG5B,CAAA;AACyB,iBADT,oBACS,CAAA,uBAAA,qBAAA,CAAA,CAAA,WAAA,EAEV,mBAFU,EAAA,iBAAA,EAGJ,iBAHI,CAGc,cAHd,EAAA,OAAA,CAAA,EAAA,qBAAA,EAIA,2BAJA,CAAA,EAKtB,sBALsB,CAKC,cALD,CAAA;AAEV,KAoEH,qBApEG,CAAA,IAAA,CAAA,GAAA;EACwB,SAAA,IAAA,EAAA,SAAA;EAAlB,SAAA,IAAA,EAqEJ,IArEI;CACI;AACC,KAsEd,cAtEc,CAAA,IAAA,CAAA,GAuEtB,qBAvEsB,CAuEA,IAvEA,CAAA,GAAA;EAAvB,SAAA,IAAA,EAAA,aAAA;EAAsB,SAAA,MAAA,EAAA,MAAA;EAiEb,SAAA,YAAA,CAAA,EAUkB,cAVG,CAAA,OAEZ,CAAA;EAGT,SAAA,UAAc,EAMC,SAND;CACA;KAk0Bd,2BAAA"}
|
package/dist/core/read.js
CHANGED
|
@@ -362,7 +362,6 @@ function isClientPointer(field) {
|
|
|
362
362
|
function readClientPointerData(environment, field, root, variables, nestedRefetchQueries, readData$1) {
|
|
363
363
|
const refetchReaderParams = readData$1([{
|
|
364
364
|
kind: "Scalar",
|
|
365
|
-
isFallible: false,
|
|
366
365
|
fieldName: "id",
|
|
367
366
|
alias: null,
|
|
368
367
|
arguments: null,
|
package/dist/core/read.mjs
CHANGED
|
@@ -362,7 +362,6 @@ function isClientPointer(field) {
|
|
|
362
362
|
function readClientPointerData(environment, field, root, variables, nestedRefetchQueries, readData$1) {
|
|
363
363
|
const refetchReaderParams = readData$1([{
|
|
364
364
|
kind: "Scalar",
|
|
365
|
-
isFallible: false,
|
|
366
365
|
fieldName: "id",
|
|
367
366
|
alias: null,
|
|
368
367
|
arguments: null,
|
package/dist/core/read.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.mjs","names":["mutableEncounteredRecords: EncounteredIds","target: { [index: string]: any }","ast","root","variables","networkRequest","entrypointLoaderState:\n | {\n kind: 'EntrypointNotLoaded';\n }\n | {\n kind: 'NetworkRequestStarted';\n disposeNetworkRequest: CleanupFn;\n }\n | { kind: 'Disposed' }","result: Variables","childVars: Writable<Variables>","data","readData","link","result"],"sources":["../../src/core/read.ts"],"sourcesContent":["import type { CleanupFn, ItemCleanupPair } from '@isograph/disposable-types';\nimport {\n getParentRecordKey,\n insertEmptySetIfMissing,\n onNextChangeToRecord,\n type EncounteredIds,\n} from './cache';\nimport type { FetchOptions } from './check';\nimport { getOrCreateCachedComponent } from './componentCache';\nimport type {\n IsographEntrypoint,\n ReaderWithRefetchQueries,\n RefetchQueryNormalizationArtifactWrapper,\n} from './entrypoint';\nimport type {\n ExtractData,\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n} from './FragmentReference';\nimport type {\n DataTypeValueScalar,\n IsographEnvironment,\n} from './IsographEnvironment';\nimport {\n assertLink,\n getOrLoadIsographArtifact,\n getOrLoadReaderWithRefetchQueries,\n type StoreLink,\n type StoreRecord,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport { maybeMakeNetworkRequest } from './makeNetworkRequest';\nimport { getStoreRecordProxy } from './optimisticProxy';\nimport type { PromiseWrapper } from './PromiseWrapper';\nimport {\n getPromiseState,\n NOT_SET,\n readPromise,\n wrapPromise,\n wrapResolvedValue,\n} from './PromiseWrapper';\nimport type {\n LoadablySelectedField,\n ReaderAst,\n ReaderClientPointer,\n ReaderImperativelyLoadedField,\n ReaderLinkedField,\n ReaderNonLoadableResolverField,\n ReaderScalarField,\n} from './reader';\nimport { getOrCreateCachedStartUpdate } from './startUpdate';\nimport type { Arguments } from './util';\n\nexport type WithEncounteredRecords<T> = {\n readonly encounteredRecords: EncounteredIds;\n readonly item: ExtractData<T>;\n};\n\nexport function readButDoNotEvaluate<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n environment: IsographEnvironment,\n fragmentReference: FragmentReference<TReadFromStore, unknown>,\n networkRequestOptions: NetworkRequestReaderOptions,\n): WithEncounteredRecords<TReadFromStore> {\n const mutableEncounteredRecords: EncounteredIds = new Map();\n\n // TODO consider moving this to the outside\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n const response = readData(\n environment,\n readerWithRefetchQueries.readerArtifact.readerAst,\n fragmentReference.root,\n fragmentReference.variables ?? {},\n readerWithRefetchQueries.nestedRefetchQueries,\n fragmentReference.networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n\n logMessage(environment, () => ({\n kind: 'DoneReading',\n response,\n fieldName: readerWithRefetchQueries.readerArtifact.fieldName,\n root: fragmentReference.root,\n }));\n\n if (response.kind === 'MissingData') {\n // There are two cases here that we care about:\n // 1. the network request is in flight, we haven't suspended on it, and we want\n // to throw if it errors out. So, networkRequestOptions.suspendIfInFlight === false\n // and networkRequestOptions.throwOnNetworkError === true.\n // 2. everything else\n //\n // In the first case, we cannot simply throw onNextChange, because if the network\n // response errors out, we will not update the store, so the onNextChange promise\n // will not resolve.\n if (\n !networkRequestOptions.suspendIfInFlight &&\n networkRequestOptions.throwOnNetworkError\n ) {\n // What are we doing here? If the network response has errored out, we can do\n // two things: throw a rejected promise, or throw an error. Both work identically\n // in the browser. However, during initial SSR on NextJS, throwing a rejected\n // promise results in an infinite loop (including re-issuing the query until the\n // process OOM's or something.) Hence, we throw an error.\n\n const result = fragmentReference.networkRequest.result;\n if (result !== NOT_SET && result.kind === 'Err') {\n throw new Error('NetworkError', { cause: result.error });\n }\n\n throw new Promise((resolve, reject) => {\n onNextChangeToRecord(environment, response.recordLink).then(resolve);\n fragmentReference.networkRequest.promise.catch(reject);\n });\n }\n throw onNextChangeToRecord(environment, response.recordLink);\n } else {\n return {\n encounteredRecords: mutableEncounteredRecords,\n item: response.data,\n };\n }\n}\n\nexport type ReadDataResultSuccess<Data> = {\n readonly kind: 'Success';\n readonly data: Data;\n};\n\nexport type ReadDataResult<Data> =\n | ReadDataResultSuccess<Data>\n | {\n readonly kind: 'MissingData';\n readonly reason: string;\n readonly nestedReason?: ReadDataResult<unknown>;\n readonly recordLink: StoreLink;\n };\n\nfunction readData<TReadFromStore>(\n environment: IsographEnvironment,\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<ExtractData<TReadFromStore>> {\n const encounteredIds = insertEmptySetIfMissing(\n mutableEncounteredRecords,\n root.__typename,\n );\n encounteredIds.add(root.__link);\n let storeRecord = getStoreRecordProxy(environment.store, root);\n if (storeRecord === undefined) {\n return {\n kind: 'MissingData',\n reason: 'No record for root ' + root.__link,\n recordLink: root,\n };\n }\n\n if (storeRecord == null) {\n return {\n kind: 'Success',\n data: null as any,\n };\n }\n\n let target: { [index: string]: any } = {};\n\n for (const field of ast) {\n switch (field.kind) {\n case 'Scalar': {\n const data = readScalarFieldData(field, storeRecord, root, variables);\n\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias ?? field.fieldName] = data.data;\n break;\n }\n case 'Link': {\n target[field.alias] = root;\n break;\n }\n case 'Linked': {\n const data = readLinkedFieldData(\n environment,\n field,\n storeRecord,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n (ast, root) =>\n readData(\n environment,\n ast,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n ),\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias ?? field.fieldName] = data.data;\n break;\n }\n case 'ImperativelyLoadedField': {\n const data = readImperativelyLoadedField(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n case 'Resolver': {\n const data = readResolverFieldData(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n case 'LoadablySelectedField': {\n const data = readLoadablySelectedFieldData(\n environment,\n field,\n root,\n variables,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n }\n }\n return {\n kind: 'Success',\n data: target as any,\n };\n}\n\nexport function readLoadablySelectedFieldData(\n environment: IsographEnvironment,\n field: LoadablySelectedField,\n root: StoreLink,\n variables: Variables,\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n const refetchReaderParams = readData(\n environment,\n field.refetchReaderAst,\n root,\n variables,\n // Refetch fields just read the id, and don't need refetch query artifacts\n [],\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n\n if (refetchReaderParams.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: refetchReaderParams,\n recordLink: refetchReaderParams.recordLink,\n };\n }\n\n return {\n kind: 'Success',\n data: (\n args: any,\n // TODO get the associated type for FetchOptions from the loadably selected field\n fetchOptions?: FetchOptions<any, never>,\n ) => {\n // TODO we should use the reader AST for this\n const includeReadOutData = (variables: any, readOutData: any) => {\n variables.id = readOutData.id;\n return variables;\n };\n const localVariables = includeReadOutData(\n args ?? {},\n refetchReaderParams.data,\n );\n writeQueryArgsToVariables(\n localVariables,\n field.queryArguments,\n variables,\n );\n\n return [\n // Stable id\n root.__typename +\n ':' +\n root.__link +\n '/' +\n field.name +\n '/' +\n stableStringifyArgs(localVariables),\n // Fetcher\n () => {\n const fragmentReferenceAndDisposeFromEntrypoint = (\n entrypoint: IsographEntrypoint<any, any, any, {}>,\n ): [FragmentReference<any, any>, CleanupFn] => {\n const { fieldName, readerArtifactKind, readerWithRefetchQueries } =\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n );\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n entrypoint,\n localVariables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName,\n readerArtifactKind,\n // TODO localVariables is not guaranteed to have an id field\n root,\n variables: localVariables,\n networkRequest,\n };\n return [fragmentReference, disposeNetworkRequest];\n };\n\n if (field.entrypoint.kind === 'Entrypoint') {\n return fragmentReferenceAndDisposeFromEntrypoint(field.entrypoint);\n } else {\n const isographArtifactPromiseWrapper = getOrLoadIsographArtifact(\n environment,\n field.entrypoint.typeAndField,\n field.entrypoint.loader,\n );\n const state = getPromiseState(isographArtifactPromiseWrapper);\n if (state.kind === 'Ok') {\n return fragmentReferenceAndDisposeFromEntrypoint(state.value);\n } else {\n // Promise is pending or thrown\n\n let entrypointLoaderState:\n | {\n kind: 'EntrypointNotLoaded';\n }\n | {\n kind: 'NetworkRequestStarted';\n disposeNetworkRequest: CleanupFn;\n }\n | { kind: 'Disposed' } = { kind: 'EntrypointNotLoaded' };\n\n const readerWithRefetchQueries = wrapPromise(\n isographArtifactPromiseWrapper.promise.then(\n (entrypoint) =>\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n ).readerWithRefetchQueries.promise,\n ),\n );\n const networkRequest = wrapPromise(\n isographArtifactPromiseWrapper.promise.then((entrypoint) => {\n if (entrypointLoaderState.kind === 'EntrypointNotLoaded') {\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n entrypoint,\n localVariables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n entrypointLoaderState = {\n kind: 'NetworkRequestStarted',\n disposeNetworkRequest,\n };\n return networkRequest.promise;\n }\n }),\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName: field.name,\n readerArtifactKind: field.entrypoint.readerArtifactKind,\n // TODO localVariables is not guaranteed to have an id field\n root,\n variables: localVariables,\n networkRequest,\n };\n\n return [\n fragmentReference,\n () => {\n if (entrypointLoaderState.kind === 'NetworkRequestStarted') {\n entrypointLoaderState.disposeNetworkRequest();\n }\n entrypointLoaderState = { kind: 'Disposed' };\n },\n ];\n }\n }\n },\n ];\n },\n };\n}\n\nfunction filterVariables(\n variables: Variables,\n allowedVariables: string[],\n): Variables {\n const result: Variables = {};\n for (const key of allowedVariables) {\n // @ts-expect-error\n result[key] = variables[key];\n }\n return result;\n}\n\nfunction generateChildVariableMap(\n variables: Variables,\n fieldArguments: Arguments | null,\n): Variables {\n if (fieldArguments == null) {\n return {};\n }\n\n type Writable<T> = { -readonly [P in keyof T]: T[P] };\n const childVars: Writable<Variables> = {};\n for (const [name, value] of fieldArguments) {\n if (value.kind === 'Object') {\n childVars[name] = generateChildVariableMap(variables, value.value);\n } else if (value.kind === 'Variable') {\n const variable = variables[value.name];\n // Variable could be null if it was not provided but has a default case,\n // so we allow the loop to continue rather than throwing an error.\n if (variable != null) {\n childVars[name] = variable;\n }\n } else {\n childVars[name] = value.value;\n }\n }\n return childVars;\n}\n\nfunction writeQueryArgsToVariables(\n targetVariables: any,\n queryArgs: Arguments | null,\n variables: Variables,\n) {\n if (queryArgs == null) {\n return;\n }\n for (const [name, argType] of queryArgs) {\n switch (argType.kind) {\n case 'Object': {\n writeQueryArgsToVariables(\n (targetVariables[name] = {}),\n argType.value,\n variables,\n );\n break;\n }\n case 'Variable': {\n targetVariables[name] = variables[argType.name];\n break;\n }\n case 'Enum': {\n targetVariables[name] = argType.value;\n break;\n }\n case 'Literal': {\n targetVariables[name] = argType.value;\n break;\n }\n case 'String': {\n targetVariables[name] = argType.value;\n break;\n }\n }\n }\n}\n\nexport function readResolverFieldData(\n environment: IsographEnvironment,\n field: ReaderNonLoadableResolverField,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n const usedRefetchQueries = field.usedRefetchQueries;\n const resolverRefetchQueries = usedRefetchQueries.map((index) => {\n const resolverRefetchQuery = nestedRefetchQueries[index];\n if (resolverRefetchQuery == null) {\n throw new Error(\n 'resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.',\n );\n }\n return resolverRefetchQuery;\n });\n\n const readerWithRefetchQueries = {\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: field.readerArtifact(),\n nestedRefetchQueries: resolverRefetchQueries,\n } satisfies ReaderWithRefetchQueries<any, any>;\n\n const fragment = {\n kind: 'FragmentReference',\n readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),\n fieldName: readerWithRefetchQueries.readerArtifact.fieldName,\n readerArtifactKind: readerWithRefetchQueries.readerArtifact.kind,\n root,\n variables: generateChildVariableMap(variables, field.arguments),\n networkRequest,\n } satisfies FragmentReference<any, any>;\n\n switch (readerWithRefetchQueries.readerArtifact.kind) {\n case 'EagerReaderArtifact': {\n const data = readData(\n environment,\n readerWithRefetchQueries.readerArtifact.readerAst,\n root,\n generateChildVariableMap(variables, field.arguments),\n resolverRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n const firstParameter = {\n data: data.data,\n parameters: variables,\n startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? getOrCreateCachedStartUpdate(\n environment,\n fragment,\n networkRequestOptions,\n )\n : undefined,\n };\n return {\n kind: 'Success',\n data: readerWithRefetchQueries.readerArtifact.resolver(firstParameter),\n };\n }\n case 'ComponentReaderArtifact': {\n return {\n kind: 'Success',\n data: getOrCreateCachedComponent(\n environment,\n fragment,\n networkRequestOptions,\n ),\n };\n }\n }\n}\n\nexport function readScalarFieldData(\n field: ReaderScalarField,\n storeRecord: StoreRecord,\n root: StoreLink,\n variables: Variables,\n): ReadDataResult<DataTypeValueScalar> {\n const storeRecordName = getParentRecordKey(field, variables);\n const value = storeRecord[storeRecordName];\n // TODO consider making scalars into discriminated unions. This probably has\n // to happen for when we handle errors.\n if (value === undefined) {\n return {\n kind: 'MissingData',\n reason: 'No value for ' + storeRecordName + ' on root ' + root.__link,\n recordLink: root,\n };\n }\n return { kind: 'Success', data: value };\n}\n\nexport function readLinkedFieldData(\n environment: IsographEnvironment,\n field: ReaderLinkedField,\n storeRecord: StoreRecord,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n readData: <TReadFromStore>(\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n ) => ReadDataResult<object>,\n): ReadDataResult<unknown> {\n const storeRecordName = getParentRecordKey(field, variables);\n let value = storeRecord[storeRecordName];\n\n if (field.condition != null) {\n const condition = field.condition();\n const data = readData(condition.readerAst, root);\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n\n const readerWithRefetchQueries = {\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: condition,\n // TODO this is wrong\n // should map field.condition.usedRefetchQueries\n // but it doesn't exist\n nestedRefetchQueries: [],\n } satisfies ReaderWithRefetchQueries<any, any>;\n\n const fragment = {\n kind: 'FragmentReference',\n readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),\n root,\n fieldName: condition.fieldName,\n readerArtifactKind: condition.kind,\n variables: generateChildVariableMap(\n variables,\n // TODO this is wrong\n // should use field.arguments\n // but it doesn't exist\n [],\n ),\n networkRequest,\n } satisfies FragmentReference<any, any>;\n\n const link = condition.resolver({\n data: data.data,\n parameters: {},\n ...(condition.hasUpdatable\n ? {\n startUpdate: getOrCreateCachedStartUpdate(\n environment,\n fragment,\n networkRequestOptions,\n ),\n }\n : undefined),\n });\n value = link;\n }\n\n if (Array.isArray(value)) {\n const results = [];\n for (const item of value) {\n const link = assertLink(item);\n if (link === undefined) {\n return {\n kind: 'MissingData',\n reason:\n 'No link for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n recordLink: root,\n };\n } else if (link == null) {\n results.push(null);\n continue;\n }\n\n if (isClientPointer(field)) {\n const result = readClientPointerData(\n environment,\n field,\n link,\n variables,\n nestedRefetchQueries,\n readData,\n );\n if (result.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n nestedReason: result,\n recordLink: result.recordLink,\n };\n }\n results.push(result.data);\n continue;\n }\n\n const result = readData(field.selections, link);\n if (result.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n nestedReason: result,\n recordLink: result.recordLink,\n };\n }\n results.push(result.data);\n }\n return {\n kind: 'Success',\n data: results,\n };\n }\n let link = assertLink(value);\n\n if (link === undefined) {\n // TODO make this configurable, and also generated and derived from the schema\n const missingFieldHandler = environment.missingFieldHandler;\n\n const altLink = missingFieldHandler?.(\n storeRecord,\n root,\n field.fieldName,\n field.arguments,\n variables,\n );\n logMessage(environment, () => ({\n kind: 'MissingFieldHandlerCalled',\n root,\n storeRecord,\n fieldName: field.fieldName,\n arguments: field.arguments,\n variables,\n }));\n\n if (altLink === undefined) {\n return {\n kind: 'MissingData',\n reason:\n 'No link for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(value),\n recordLink: root,\n };\n } else {\n link = altLink;\n }\n } else if (link == null) {\n return {\n kind: 'Success',\n data: null,\n };\n }\n\n if (isClientPointer(field)) {\n const data = readClientPointerData(\n environment,\n field,\n link,\n variables,\n nestedRefetchQueries,\n readData,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n return data;\n }\n const data = readData(field.selections, link);\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n return data;\n}\n\nfunction isClientPointer(\n field: ReaderLinkedField,\n): field is ReaderClientPointer {\n return field.refetchQueryIndex != null;\n}\n\nexport function readClientPointerData(\n environment: IsographEnvironment,\n field: ReaderClientPointer,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n readData: <TReadFromStore>(\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n ) => ReadDataResult<object>,\n): ReadDataResult<unknown> {\n const refetchReaderParams = readData(\n [\n {\n kind: 'Scalar',\n isFallible: false,\n fieldName: 'id',\n alias: null,\n arguments: null,\n isUpdatable: false,\n },\n ],\n root,\n );\n\n if (refetchReaderParams.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: refetchReaderParams,\n recordLink: refetchReaderParams.recordLink,\n };\n }\n\n const refetchQuery = nestedRefetchQueries[field.refetchQueryIndex];\n if (refetchQuery == null) {\n throw new Error(\n 'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',\n );\n }\n const refetchQueryArtifact = refetchQuery.artifact;\n const allowedVariables = refetchQuery.allowedVariables;\n\n return {\n kind: 'Success',\n data: (\n args: any,\n // TODO get the associated type for FetchOptions from the loadably selected field\n fetchOptions?: FetchOptions<any, never>,\n ) => {\n const includeReadOutData = (variables: any, readOutData: any) => {\n variables.id = readOutData.id;\n return variables;\n };\n const localVariables = includeReadOutData(\n args ?? {},\n refetchReaderParams.data,\n );\n writeQueryArgsToVariables(localVariables, field.arguments, variables);\n\n return [\n // Stable id\n root.__typename +\n ':' +\n root.__link +\n '/' +\n field.fieldName +\n '/' +\n stableStringifyArgs(localVariables),\n // Fetcher\n (): ItemCleanupPair<FragmentReference<any, any>> | undefined => {\n const variables = includeReadOutData(\n filterVariables({ ...args, ...localVariables }, allowedVariables),\n refetchReaderParams.data,\n );\n\n const readerWithRefetchQueries = wrapResolvedValue({\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: {\n kind: 'EagerReaderArtifact',\n fieldName: field.fieldName,\n readerAst: field.selections,\n resolver: ({ data }: { data: any }) => data,\n hasUpdatable: false,\n },\n nestedRefetchQueries,\n } as const);\n\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n refetchQueryArtifact,\n variables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n fieldName: field.fieldName,\n readerArtifactKind: 'EagerReaderArtifact',\n readerWithRefetchQueries: readerWithRefetchQueries,\n root,\n variables,\n networkRequest,\n };\n return [fragmentReference, disposeNetworkRequest];\n },\n ];\n },\n };\n}\n\nexport type NetworkRequestReaderOptions = {\n suspendIfInFlight: boolean;\n throwOnNetworkError: boolean;\n};\n\nexport function getNetworkRequestOptionsWithDefaults(\n networkRequestOptions?: Partial<NetworkRequestReaderOptions> | void,\n): NetworkRequestReaderOptions {\n return {\n suspendIfInFlight: networkRequestOptions?.suspendIfInFlight ?? false,\n throwOnNetworkError: networkRequestOptions?.throwOnNetworkError ?? true,\n };\n}\n\n// TODO use a description of the params for this?\n// TODO call stableStringifyArgs on the variable values, as well.\n// This doesn't matter for now, since we are just using primitive values\n// in the demo.\nfunction stableStringifyArgs(args: object) {\n const keys = Object.keys(args);\n keys.sort();\n let s = '';\n for (const key of keys) {\n // @ts-expect-error\n s += `${key}=${JSON.stringify(args[key])};`;\n }\n return s;\n}\n\nexport function readImperativelyLoadedField(\n environment: IsographEnvironment,\n field: ReaderImperativelyLoadedField,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n // First, we read the data using the refetch reader AST (i.e. read out the\n // id field).\n const data = readData(\n environment,\n field.refetchReaderArtifact.readerAst,\n root,\n variables,\n // Refetch fields just read the id, and don't need refetch query artifacts\n [],\n // This is probably indicative of the fact that we are doing redundant checks\n // on the status of this network request...\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n } else {\n const { refetchQueryIndex } = field;\n const refetchQuery = nestedRefetchQueries[refetchQueryIndex];\n if (refetchQuery == null) {\n throw new Error(\n 'Refetch query not found. This is indicative of a bug in Isograph.',\n );\n }\n const refetchQueryArtifact = refetchQuery.artifact;\n const allowedVariables = refetchQuery.allowedVariables;\n\n // Second, we allow the user to call the resolver, which will ultimately\n // use the resolver reader AST to get the resolver parameters.\n return {\n kind: 'Success',\n data: (args: any) => [\n // Stable id\n root.__typename + ':' + root.__link + '__' + field.name,\n // Fetcher\n field.refetchReaderArtifact.resolver(\n environment,\n refetchQueryArtifact,\n data.data,\n filterVariables({ ...args, ...variables }, allowedVariables),\n root,\n // TODO these params should be removed\n null,\n [],\n ),\n ],\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"read.mjs","names":["mutableEncounteredRecords: EncounteredIds","target: { [index: string]: any }","ast","root","variables","networkRequest","entrypointLoaderState:\n | {\n kind: 'EntrypointNotLoaded';\n }\n | {\n kind: 'NetworkRequestStarted';\n disposeNetworkRequest: CleanupFn;\n }\n | { kind: 'Disposed' }","result: Variables","childVars: Writable<Variables>","data","readData","link","result"],"sources":["../../src/core/read.ts"],"sourcesContent":["import type { CleanupFn, ItemCleanupPair } from '@isograph/disposable-types';\nimport {\n getParentRecordKey,\n insertEmptySetIfMissing,\n onNextChangeToRecord,\n type EncounteredIds,\n} from './cache';\nimport type { FetchOptions } from './check';\nimport { getOrCreateCachedComponent } from './componentCache';\nimport type {\n IsographEntrypoint,\n ReaderWithRefetchQueries,\n RefetchQueryNormalizationArtifactWrapper,\n} from './entrypoint';\nimport type {\n ExtractData,\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n} from './FragmentReference';\nimport type {\n DataTypeValueScalar,\n IsographEnvironment,\n} from './IsographEnvironment';\nimport {\n assertLink,\n getOrLoadIsographArtifact,\n getOrLoadReaderWithRefetchQueries,\n type StoreLink,\n type StoreRecord,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport { maybeMakeNetworkRequest } from './makeNetworkRequest';\nimport { getStoreRecordProxy } from './optimisticProxy';\nimport type { PromiseWrapper } from './PromiseWrapper';\nimport {\n getPromiseState,\n NOT_SET,\n readPromise,\n wrapPromise,\n wrapResolvedValue,\n} from './PromiseWrapper';\nimport type {\n LoadablySelectedField,\n ReaderAst,\n ReaderClientPointer,\n ReaderImperativelyLoadedField,\n ReaderLinkedField,\n ReaderNonLoadableResolverField,\n ReaderScalarField,\n} from './reader';\nimport { getOrCreateCachedStartUpdate } from './startUpdate';\nimport type { Arguments } from './util';\n\nexport type WithEncounteredRecords<T> = {\n readonly encounteredRecords: EncounteredIds;\n readonly item: ExtractData<T>;\n};\n\nexport function readButDoNotEvaluate<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n environment: IsographEnvironment,\n fragmentReference: FragmentReference<TReadFromStore, unknown>,\n networkRequestOptions: NetworkRequestReaderOptions,\n): WithEncounteredRecords<TReadFromStore> {\n const mutableEncounteredRecords: EncounteredIds = new Map();\n\n // TODO consider moving this to the outside\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n const response = readData(\n environment,\n readerWithRefetchQueries.readerArtifact.readerAst,\n fragmentReference.root,\n fragmentReference.variables ?? {},\n readerWithRefetchQueries.nestedRefetchQueries,\n fragmentReference.networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n\n logMessage(environment, () => ({\n kind: 'DoneReading',\n response,\n fieldName: readerWithRefetchQueries.readerArtifact.fieldName,\n root: fragmentReference.root,\n }));\n\n if (response.kind === 'MissingData') {\n // There are two cases here that we care about:\n // 1. the network request is in flight, we haven't suspended on it, and we want\n // to throw if it errors out. So, networkRequestOptions.suspendIfInFlight === false\n // and networkRequestOptions.throwOnNetworkError === true.\n // 2. everything else\n //\n // In the first case, we cannot simply throw onNextChange, because if the network\n // response errors out, we will not update the store, so the onNextChange promise\n // will not resolve.\n if (\n !networkRequestOptions.suspendIfInFlight &&\n networkRequestOptions.throwOnNetworkError\n ) {\n // What are we doing here? If the network response has errored out, we can do\n // two things: throw a rejected promise, or throw an error. Both work identically\n // in the browser. However, during initial SSR on NextJS, throwing a rejected\n // promise results in an infinite loop (including re-issuing the query until the\n // process OOM's or something.) Hence, we throw an error.\n\n const result = fragmentReference.networkRequest.result;\n if (result !== NOT_SET && result.kind === 'Err') {\n throw new Error('NetworkError', { cause: result.error });\n }\n\n throw new Promise((resolve, reject) => {\n onNextChangeToRecord(environment, response.recordLink).then(resolve);\n fragmentReference.networkRequest.promise.catch(reject);\n });\n }\n throw onNextChangeToRecord(environment, response.recordLink);\n } else {\n return {\n encounteredRecords: mutableEncounteredRecords,\n item: response.data,\n };\n }\n}\n\nexport type ReadDataResultSuccess<Data> = {\n readonly kind: 'Success';\n readonly data: Data;\n};\n\nexport type ReadDataResult<Data> =\n | ReadDataResultSuccess<Data>\n | {\n readonly kind: 'MissingData';\n readonly reason: string;\n readonly nestedReason?: ReadDataResult<unknown>;\n readonly recordLink: StoreLink;\n };\n\nfunction readData<TReadFromStore>(\n environment: IsographEnvironment,\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<ExtractData<TReadFromStore>> {\n const encounteredIds = insertEmptySetIfMissing(\n mutableEncounteredRecords,\n root.__typename,\n );\n encounteredIds.add(root.__link);\n let storeRecord = getStoreRecordProxy(environment.store, root);\n if (storeRecord === undefined) {\n return {\n kind: 'MissingData',\n reason: 'No record for root ' + root.__link,\n recordLink: root,\n };\n }\n\n if (storeRecord == null) {\n return {\n kind: 'Success',\n data: null as any,\n };\n }\n\n let target: { [index: string]: any } = {};\n\n for (const field of ast) {\n switch (field.kind) {\n case 'Scalar': {\n const data = readScalarFieldData(field, storeRecord, root, variables);\n\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias ?? field.fieldName] = data.data;\n break;\n }\n case 'Link': {\n target[field.alias] = root;\n break;\n }\n case 'Linked': {\n const data = readLinkedFieldData(\n environment,\n field,\n storeRecord,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n (ast, root) =>\n readData(\n environment,\n ast,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n ),\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias ?? field.fieldName] = data.data;\n break;\n }\n case 'ImperativelyLoadedField': {\n const data = readImperativelyLoadedField(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n case 'Resolver': {\n const data = readResolverFieldData(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n case 'LoadablySelectedField': {\n const data = readLoadablySelectedFieldData(\n environment,\n field,\n root,\n variables,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n }\n }\n return {\n kind: 'Success',\n data: target as any,\n };\n}\n\nexport function readLoadablySelectedFieldData(\n environment: IsographEnvironment,\n field: LoadablySelectedField,\n root: StoreLink,\n variables: Variables,\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n const refetchReaderParams = readData(\n environment,\n field.refetchReaderAst,\n root,\n variables,\n // Refetch fields just read the id, and don't need refetch query artifacts\n [],\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n\n if (refetchReaderParams.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: refetchReaderParams,\n recordLink: refetchReaderParams.recordLink,\n };\n }\n\n return {\n kind: 'Success',\n data: (\n args: any,\n // TODO get the associated type for FetchOptions from the loadably selected field\n fetchOptions?: FetchOptions<any, never>,\n ) => {\n // TODO we should use the reader AST for this\n const includeReadOutData = (variables: any, readOutData: any) => {\n variables.id = readOutData.id;\n return variables;\n };\n const localVariables = includeReadOutData(\n args ?? {},\n refetchReaderParams.data,\n );\n writeQueryArgsToVariables(\n localVariables,\n field.queryArguments,\n variables,\n );\n\n return [\n // Stable id\n root.__typename +\n ':' +\n root.__link +\n '/' +\n field.name +\n '/' +\n stableStringifyArgs(localVariables),\n // Fetcher\n () => {\n const fragmentReferenceAndDisposeFromEntrypoint = (\n entrypoint: IsographEntrypoint<any, any, any, {}>,\n ): [FragmentReference<any, any>, CleanupFn] => {\n const { fieldName, readerArtifactKind, readerWithRefetchQueries } =\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n );\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n entrypoint,\n localVariables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName,\n readerArtifactKind,\n // TODO localVariables is not guaranteed to have an id field\n root,\n variables: localVariables,\n networkRequest,\n };\n return [fragmentReference, disposeNetworkRequest];\n };\n\n if (field.entrypoint.kind === 'Entrypoint') {\n return fragmentReferenceAndDisposeFromEntrypoint(field.entrypoint);\n } else {\n const isographArtifactPromiseWrapper = getOrLoadIsographArtifact(\n environment,\n field.entrypoint.typeAndField,\n field.entrypoint.loader,\n );\n const state = getPromiseState(isographArtifactPromiseWrapper);\n if (state.kind === 'Ok') {\n return fragmentReferenceAndDisposeFromEntrypoint(state.value);\n } else {\n // Promise is pending or thrown\n\n let entrypointLoaderState:\n | {\n kind: 'EntrypointNotLoaded';\n }\n | {\n kind: 'NetworkRequestStarted';\n disposeNetworkRequest: CleanupFn;\n }\n | { kind: 'Disposed' } = { kind: 'EntrypointNotLoaded' };\n\n const readerWithRefetchQueries = wrapPromise(\n isographArtifactPromiseWrapper.promise.then(\n (entrypoint) =>\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n ).readerWithRefetchQueries.promise,\n ),\n );\n const networkRequest = wrapPromise(\n isographArtifactPromiseWrapper.promise.then((entrypoint) => {\n if (entrypointLoaderState.kind === 'EntrypointNotLoaded') {\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n entrypoint,\n localVariables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n entrypointLoaderState = {\n kind: 'NetworkRequestStarted',\n disposeNetworkRequest,\n };\n return networkRequest.promise;\n }\n }),\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName: field.name,\n readerArtifactKind: field.entrypoint.readerArtifactKind,\n // TODO localVariables is not guaranteed to have an id field\n root,\n variables: localVariables,\n networkRequest,\n };\n\n return [\n fragmentReference,\n () => {\n if (entrypointLoaderState.kind === 'NetworkRequestStarted') {\n entrypointLoaderState.disposeNetworkRequest();\n }\n entrypointLoaderState = { kind: 'Disposed' };\n },\n ];\n }\n }\n },\n ];\n },\n };\n}\n\nfunction filterVariables(\n variables: Variables,\n allowedVariables: string[],\n): Variables {\n const result: Variables = {};\n for (const key of allowedVariables) {\n // @ts-expect-error\n result[key] = variables[key];\n }\n return result;\n}\n\nfunction generateChildVariableMap(\n variables: Variables,\n fieldArguments: Arguments | null,\n): Variables {\n if (fieldArguments == null) {\n return {};\n }\n\n type Writable<T> = { -readonly [P in keyof T]: T[P] };\n const childVars: Writable<Variables> = {};\n for (const [name, value] of fieldArguments) {\n if (value.kind === 'Object') {\n childVars[name] = generateChildVariableMap(variables, value.value);\n } else if (value.kind === 'Variable') {\n const variable = variables[value.name];\n // Variable could be null if it was not provided but has a default case,\n // so we allow the loop to continue rather than throwing an error.\n if (variable != null) {\n childVars[name] = variable;\n }\n } else {\n childVars[name] = value.value;\n }\n }\n return childVars;\n}\n\nfunction writeQueryArgsToVariables(\n targetVariables: any,\n queryArgs: Arguments | null,\n variables: Variables,\n) {\n if (queryArgs == null) {\n return;\n }\n for (const [name, argType] of queryArgs) {\n switch (argType.kind) {\n case 'Object': {\n writeQueryArgsToVariables(\n (targetVariables[name] = {}),\n argType.value,\n variables,\n );\n break;\n }\n case 'Variable': {\n targetVariables[name] = variables[argType.name];\n break;\n }\n case 'Enum': {\n targetVariables[name] = argType.value;\n break;\n }\n case 'Literal': {\n targetVariables[name] = argType.value;\n break;\n }\n case 'String': {\n targetVariables[name] = argType.value;\n break;\n }\n }\n }\n}\n\nexport function readResolverFieldData(\n environment: IsographEnvironment,\n field: ReaderNonLoadableResolverField,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n const usedRefetchQueries = field.usedRefetchQueries;\n const resolverRefetchQueries = usedRefetchQueries.map((index) => {\n const resolverRefetchQuery = nestedRefetchQueries[index];\n if (resolverRefetchQuery == null) {\n throw new Error(\n 'resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.',\n );\n }\n return resolverRefetchQuery;\n });\n\n const readerWithRefetchQueries = {\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: field.readerArtifact(),\n nestedRefetchQueries: resolverRefetchQueries,\n } satisfies ReaderWithRefetchQueries<any, any>;\n\n const fragment = {\n kind: 'FragmentReference',\n readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),\n fieldName: readerWithRefetchQueries.readerArtifact.fieldName,\n readerArtifactKind: readerWithRefetchQueries.readerArtifact.kind,\n root,\n variables: generateChildVariableMap(variables, field.arguments),\n networkRequest,\n } satisfies FragmentReference<any, any>;\n\n switch (readerWithRefetchQueries.readerArtifact.kind) {\n case 'EagerReaderArtifact': {\n const data = readData(\n environment,\n readerWithRefetchQueries.readerArtifact.readerAst,\n root,\n generateChildVariableMap(variables, field.arguments),\n resolverRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n const firstParameter = {\n data: data.data,\n parameters: variables,\n startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? getOrCreateCachedStartUpdate(\n environment,\n fragment,\n networkRequestOptions,\n )\n : undefined,\n };\n return {\n kind: 'Success',\n data: readerWithRefetchQueries.readerArtifact.resolver(firstParameter),\n };\n }\n case 'ComponentReaderArtifact': {\n return {\n kind: 'Success',\n data: getOrCreateCachedComponent(\n environment,\n fragment,\n networkRequestOptions,\n ),\n };\n }\n }\n}\n\nexport function readScalarFieldData(\n field: ReaderScalarField,\n storeRecord: StoreRecord,\n root: StoreLink,\n variables: Variables,\n): ReadDataResult<DataTypeValueScalar> {\n const storeRecordName = getParentRecordKey(field, variables);\n const value = storeRecord[storeRecordName];\n // TODO consider making scalars into discriminated unions. This probably has\n // to happen for when we handle errors.\n if (value === undefined) {\n return {\n kind: 'MissingData',\n reason: 'No value for ' + storeRecordName + ' on root ' + root.__link,\n recordLink: root,\n };\n }\n return { kind: 'Success', data: value };\n}\n\nexport function readLinkedFieldData(\n environment: IsographEnvironment,\n field: ReaderLinkedField,\n storeRecord: StoreRecord,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n readData: <TReadFromStore>(\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n ) => ReadDataResult<object>,\n): ReadDataResult<unknown> {\n const storeRecordName = getParentRecordKey(field, variables);\n let value = storeRecord[storeRecordName];\n\n if (field.condition != null) {\n const condition = field.condition();\n const data = readData(condition.readerAst, root);\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n\n const readerWithRefetchQueries = {\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: condition,\n // TODO this is wrong\n // should map field.condition.usedRefetchQueries\n // but it doesn't exist\n nestedRefetchQueries: [],\n } satisfies ReaderWithRefetchQueries<any, any>;\n\n const fragment = {\n kind: 'FragmentReference',\n readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),\n root,\n fieldName: condition.fieldName,\n readerArtifactKind: condition.kind,\n variables: generateChildVariableMap(\n variables,\n // TODO this is wrong\n // should use field.arguments\n // but it doesn't exist\n [],\n ),\n networkRequest,\n } satisfies FragmentReference<any, any>;\n\n const link = condition.resolver({\n data: data.data,\n parameters: {},\n ...(condition.hasUpdatable\n ? {\n startUpdate: getOrCreateCachedStartUpdate(\n environment,\n fragment,\n networkRequestOptions,\n ),\n }\n : undefined),\n });\n value = link;\n }\n\n if (Array.isArray(value)) {\n const results = [];\n for (const item of value) {\n const link = assertLink(item);\n if (link === undefined) {\n return {\n kind: 'MissingData',\n reason:\n 'No link for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n recordLink: root,\n };\n } else if (link == null) {\n results.push(null);\n continue;\n }\n\n if (isClientPointer(field)) {\n const result = readClientPointerData(\n environment,\n field,\n link,\n variables,\n nestedRefetchQueries,\n readData,\n );\n if (result.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n nestedReason: result,\n recordLink: result.recordLink,\n };\n }\n results.push(result.data);\n continue;\n }\n\n const result = readData(field.selections, link);\n if (result.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n nestedReason: result,\n recordLink: result.recordLink,\n };\n }\n results.push(result.data);\n }\n return {\n kind: 'Success',\n data: results,\n };\n }\n let link = assertLink(value);\n\n if (link === undefined) {\n // TODO make this configurable, and also generated and derived from the schema\n const missingFieldHandler = environment.missingFieldHandler;\n\n const altLink = missingFieldHandler?.(\n storeRecord,\n root,\n field.fieldName,\n field.arguments,\n variables,\n );\n logMessage(environment, () => ({\n kind: 'MissingFieldHandlerCalled',\n root,\n storeRecord,\n fieldName: field.fieldName,\n arguments: field.arguments,\n variables,\n }));\n\n if (altLink === undefined) {\n return {\n kind: 'MissingData',\n reason:\n 'No link for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(value),\n recordLink: root,\n };\n } else {\n link = altLink;\n }\n } else if (link == null) {\n return {\n kind: 'Success',\n data: null,\n };\n }\n\n if (isClientPointer(field)) {\n const data = readClientPointerData(\n environment,\n field,\n link,\n variables,\n nestedRefetchQueries,\n readData,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n return data;\n }\n const data = readData(field.selections, link);\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n return data;\n}\n\nfunction isClientPointer(\n field: ReaderLinkedField,\n): field is ReaderClientPointer {\n return field.refetchQueryIndex != null;\n}\n\nexport function readClientPointerData(\n environment: IsographEnvironment,\n field: ReaderClientPointer,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n readData: <TReadFromStore>(\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n ) => ReadDataResult<object>,\n): ReadDataResult<unknown> {\n const refetchReaderParams = readData(\n [\n {\n kind: 'Scalar',\n fieldName: 'id',\n alias: null,\n arguments: null,\n isUpdatable: false,\n },\n ],\n root,\n );\n\n if (refetchReaderParams.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: refetchReaderParams,\n recordLink: refetchReaderParams.recordLink,\n };\n }\n\n const refetchQuery = nestedRefetchQueries[field.refetchQueryIndex];\n if (refetchQuery == null) {\n throw new Error(\n 'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',\n );\n }\n const refetchQueryArtifact = refetchQuery.artifact;\n const allowedVariables = refetchQuery.allowedVariables;\n\n return {\n kind: 'Success',\n data: (\n args: any,\n // TODO get the associated type for FetchOptions from the loadably selected field\n fetchOptions?: FetchOptions<any, never>,\n ) => {\n const includeReadOutData = (variables: any, readOutData: any) => {\n variables.id = readOutData.id;\n return variables;\n };\n const localVariables = includeReadOutData(\n args ?? {},\n refetchReaderParams.data,\n );\n writeQueryArgsToVariables(localVariables, field.arguments, variables);\n\n return [\n // Stable id\n root.__typename +\n ':' +\n root.__link +\n '/' +\n field.fieldName +\n '/' +\n stableStringifyArgs(localVariables),\n // Fetcher\n (): ItemCleanupPair<FragmentReference<any, any>> | undefined => {\n const variables = includeReadOutData(\n filterVariables({ ...args, ...localVariables }, allowedVariables),\n refetchReaderParams.data,\n );\n\n const readerWithRefetchQueries = wrapResolvedValue({\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: {\n kind: 'EagerReaderArtifact',\n fieldName: field.fieldName,\n readerAst: field.selections,\n resolver: ({ data }: { data: any }) => data,\n hasUpdatable: false,\n },\n nestedRefetchQueries,\n } as const);\n\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n refetchQueryArtifact,\n variables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n fieldName: field.fieldName,\n readerArtifactKind: 'EagerReaderArtifact',\n readerWithRefetchQueries: readerWithRefetchQueries,\n root,\n variables,\n networkRequest,\n };\n return [fragmentReference, disposeNetworkRequest];\n },\n ];\n },\n };\n}\n\nexport type NetworkRequestReaderOptions = {\n suspendIfInFlight: boolean;\n throwOnNetworkError: boolean;\n};\n\nexport function getNetworkRequestOptionsWithDefaults(\n networkRequestOptions?: Partial<NetworkRequestReaderOptions> | void,\n): NetworkRequestReaderOptions {\n return {\n suspendIfInFlight: networkRequestOptions?.suspendIfInFlight ?? false,\n throwOnNetworkError: networkRequestOptions?.throwOnNetworkError ?? true,\n };\n}\n\n// TODO use a description of the params for this?\n// TODO call stableStringifyArgs on the variable values, as well.\n// This doesn't matter for now, since we are just using primitive values\n// in the demo.\nfunction stableStringifyArgs(args: object) {\n const keys = Object.keys(args);\n keys.sort();\n let s = '';\n for (const key of keys) {\n // @ts-expect-error\n s += `${key}=${JSON.stringify(args[key])};`;\n }\n return s;\n}\n\nexport function readImperativelyLoadedField(\n environment: IsographEnvironment,\n field: ReaderImperativelyLoadedField,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n // First, we read the data using the refetch reader AST (i.e. read out the\n // id field).\n const data = readData(\n environment,\n field.refetchReaderArtifact.readerAst,\n root,\n variables,\n // Refetch fields just read the id, and don't need refetch query artifacts\n [],\n // This is probably indicative of the fact that we are doing redundant checks\n // on the status of this network request...\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n } else {\n const { refetchQueryIndex } = field;\n const refetchQuery = nestedRefetchQueries[refetchQueryIndex];\n if (refetchQuery == null) {\n throw new Error(\n 'Refetch query not found. This is indicative of a bug in Isograph.',\n );\n }\n const refetchQueryArtifact = refetchQuery.artifact;\n const allowedVariables = refetchQuery.allowedVariables;\n\n // Second, we allow the user to call the resolver, which will ultimately\n // use the resolver reader AST to get the resolver parameters.\n return {\n kind: 'Success',\n data: (args: any) => [\n // Stable id\n root.__typename + ':' + root.__link + '__' + field.name,\n // Fetcher\n field.refetchReaderArtifact.resolver(\n environment,\n refetchQueryArtifact,\n data.data,\n filterVariables({ ...args, ...variables }, allowedVariables),\n root,\n // TODO these params should be removed\n null,\n [],\n ),\n ],\n };\n }\n}\n"],"mappings":"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"}
|
package/dist/core/reader.d.mts
CHANGED
|
@@ -34,7 +34,6 @@ type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderNonLoadableRe
|
|
|
34
34
|
type ReaderAst<TReadFromStore> = ReadonlyArray<ReaderAstNode>;
|
|
35
35
|
type ReaderScalarField = {
|
|
36
36
|
readonly kind: 'Scalar';
|
|
37
|
-
readonly isFallible: boolean;
|
|
38
37
|
readonly fieldName: string;
|
|
39
38
|
readonly alias: string | null;
|
|
40
39
|
readonly arguments: Arguments | null;
|
|
@@ -46,7 +45,6 @@ type ReaderLinkField = {
|
|
|
46
45
|
};
|
|
47
46
|
type ReaderLinkedField = {
|
|
48
47
|
readonly kind: 'Linked';
|
|
49
|
-
readonly isFallible: boolean;
|
|
50
48
|
readonly fieldName: string;
|
|
51
49
|
readonly alias: string | null;
|
|
52
50
|
readonly selections: ReaderAst<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.mts","names":[],"sources":["../../src/core/reader.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAiBY,KAAA,sBAAsB,CAAA,uBACT,qBADS,EAAA,iBAAA,EAAA,wBAGR,MAHQ,CAGD,WAHC,EAAA,KAAA,CAAA,CAAA,GAK9B,mBAL8B,CAKV,cALU,EAKM,iBALN,CAAA,GAM9B,uBAN8B,CAMN,cANM,EAMU,eANV,CAAA;AACT,KAOb,mBAPa,CAAA,uBAQA,qBARA,EAAA,iBAAA,CAAA,GAAA;EAEQ,SAAA,IAAA,EAAA,qBAAA;EAAP,SAAA,SAAA,EAUJ,oBAVI;EAEF,SAAA,SAAA,EASF,SATE,CASQ,cATR,CAAA;EAAgB,SAAA,QAAA,EAAA,CAAA,IAAA,EAW9B,sBAX8B,CAWP,cAXO,CAAA,EAAA,GAYjC,iBAZiC;EAApC,SAAA,YAAA,EAAA,OAAA;CACwB;AAAgB,KAehC,uBAfgC,CAAA,uBAgBnB,qBAhBmB,EAAA,wBAiBlB,MAjBkB,CAAA,MAAA,EAAA,OAAA,CAAA,GAiBQ,MAjBR,CAiBe,WAjBf,EAAA,KAAA,CAAA,CAAA,GAAA;EAAxC,SAAA,IAAA,EAAA,yBAAA;EAAuB,SAAA,SAAA,EAoBL,oBApBK;EAEf,SAAA,SAAA,EAmBU,SAnBS,CAmBC,cAnBD,CAAA;EACN,SAAA,QAAA,EAAA,CAAA,IAAA,EAoBf,sBApBe,CAoBQ,cApBR,CAAA,EAAA,YAAA,EAqBP,eArBO,EAAA,GAsBlB,KAAA,CAAM,SAtBY;EAIH,SAAA,YAAA,EAAA,OAAA;CACU;AAAV,KAqBV,sBArBU,CAAA,uBAsBG,qBAtBH,CAAA,GAuBlB,IAvBkB,CAuBb,cAvBa,EAAA,MAAA,GAAA,YAAA,GAAA,aAAA,CAAA;AAEW,KAuBrB,WAvBqB,CAAA,aAAA,CAAA,GAAA,CAAA,OAAA,EAAA,CAAA,iBAAA,EAAA;EAAvB,aAAA,EAwBsC,aAxBtC;CACH,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;AAAiB,KA0BZ,qBAAA,GA1BY;EAIZ,SAAA,IAAA,EAAA,uBAAuB;EACV,SAAA,SAAA,EAuBH,SAvBG,CAAA,OAAA,CAAA;EACC,SAAA,QAAA,EAAA,CAAA,WAAA,EAwBT,mBAxBS,EAAA,QAAA,EAyBZ,iCAzBY,EAAA,SAAA,EAAA,GAAA,EAAA,iBAAA,EAAA,GAAA,EAAA,QAAA,EA8BZ,SA9BY,EAAA,cAAA,EA+BN,sBA/BM,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,EAAA,oBAAA,EAiCA,wCAjCA,EAAA,EAAA,GAAA,GAAA,GAAA,IAAA;CAAiC;AAAP,KAqCxC,aAAA,GACR,iBAtCgD,GAuChD,iBAvCgD,GAwChD,8BAxCgD,GAyChD,6BAzCgD,GA0ChD,qBA1CgD,GA2ChD,eA3CgD;AAG9B,KA2CV,SA3CU,CAAA,cAAA,CAAA,GA2CkB,aA3ClB,CA2CgC,aA3ChC,CAAA;AACU,KA4CpB,iBAAA,GA5CoB;EAAV,SAAA,IAAA,EAAA,QAAA;EAEW,SAAA,
|
|
1
|
+
{"version":3,"file":"reader.d.mts","names":[],"sources":["../../src/core/reader.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/core/reader.d.ts
CHANGED
|
@@ -34,7 +34,6 @@ type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderNonLoadableRe
|
|
|
34
34
|
type ReaderAst<TReadFromStore> = ReadonlyArray<ReaderAstNode>;
|
|
35
35
|
type ReaderScalarField = {
|
|
36
36
|
readonly kind: 'Scalar';
|
|
37
|
-
readonly isFallible: boolean;
|
|
38
37
|
readonly fieldName: string;
|
|
39
38
|
readonly alias: string | null;
|
|
40
39
|
readonly arguments: Arguments | null;
|
|
@@ -46,7 +45,6 @@ type ReaderLinkField = {
|
|
|
46
45
|
};
|
|
47
46
|
type ReaderLinkedField = {
|
|
48
47
|
readonly kind: 'Linked';
|
|
49
|
-
readonly isFallible: boolean;
|
|
50
48
|
readonly fieldName: string;
|
|
51
49
|
readonly alias: string | null;
|
|
52
50
|
readonly selections: ReaderAst<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","names":[],"sources":["../../src/core/reader.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAiBY,KAAA,sBAAsB,CAAA,uBACT,qBADS,EAAA,iBAAA,EAAA,wBAGR,MAHQ,CAGD,WAHC,EAAA,KAAA,CAAA,CAAA,GAK9B,mBAL8B,CAKV,cALU,EAKM,iBALN,CAAA,GAM9B,uBAN8B,CAMN,cANM,EAMU,eANV,CAAA;AACT,KAOb,mBAPa,CAAA,uBAQA,qBARA,EAAA,iBAAA,CAAA,GAAA;EAEQ,SAAA,IAAA,EAAA,qBAAA;EAAP,SAAA,SAAA,EAUJ,oBAVI;EAEF,SAAA,SAAA,EASF,SATE,CASQ,cATR,CAAA;EAAgB,SAAA,QAAA,EAAA,CAAA,IAAA,EAW9B,sBAX8B,CAWP,cAXO,CAAA,EAAA,GAYjC,iBAZiC;EAApC,SAAA,YAAA,EAAA,OAAA;CACwB;AAAgB,KAehC,uBAfgC,CAAA,uBAgBnB,qBAhBmB,EAAA,wBAiBlB,MAjBkB,CAAA,MAAA,EAAA,OAAA,CAAA,GAiBQ,MAjBR,CAiBe,WAjBf,EAAA,KAAA,CAAA,CAAA,GAAA;EAAxC,SAAA,IAAA,EAAA,yBAAA;EAAuB,SAAA,SAAA,EAoBL,oBApBK;EAEf,SAAA,SAAA,EAmBU,SAnBS,CAmBC,cAnBD,CAAA;EACN,SAAA,QAAA,EAAA,CAAA,IAAA,EAoBf,sBApBe,CAoBQ,cApBR,CAAA,EAAA,YAAA,EAqBP,eArBO,EAAA,GAsBlB,KAAA,CAAM,SAtBY;EAIH,SAAA,YAAA,EAAA,OAAA;CACU;AAAV,KAqBV,sBArBU,CAAA,uBAsBG,qBAtBH,CAAA,GAuBlB,IAvBkB,CAuBb,cAvBa,EAAA,MAAA,GAAA,YAAA,GAAA,aAAA,CAAA;AAEW,KAuBrB,WAvBqB,CAAA,aAAA,CAAA,GAAA,CAAA,OAAA,EAAA,CAAA,iBAAA,EAAA;EAAvB,aAAA,EAwBsC,aAxBtC;CACH,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;AAAiB,KA0BZ,qBAAA,GA1BY;EAIZ,SAAA,IAAA,EAAA,uBAAuB;EACV,SAAA,SAAA,EAuBH,SAvBG,CAAA,OAAA,CAAA;EACC,SAAA,QAAA,EAAA,CAAA,WAAA,EAwBT,mBAxBS,EAAA,QAAA,EAyBZ,iCAzBY,EAAA,SAAA,EAAA,GAAA,EAAA,iBAAA,EAAA,GAAA,EAAA,QAAA,EA8BZ,SA9BY,EAAA,cAAA,EA+BN,sBA/BM,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,EAAA,oBAAA,EAiCA,wCAjCA,EAAA,EAAA,GAAA,GAAA,GAAA,IAAA;CAAiC;AAAP,KAqCxC,aAAA,GACR,iBAtCgD,GAuChD,iBAvCgD,GAwChD,8BAxCgD,GAyChD,6BAzCgD,GA0ChD,qBA1CgD,GA2ChD,eA3CgD;AAG9B,KA2CV,SA3CU,CAAA,cAAA,CAAA,GA2CkB,aA3ClB,CA2CgC,aA3ChC,CAAA;AACU,KA4CpB,iBAAA,GA5CoB;EAAV,SAAA,IAAA,EAAA,QAAA;EAEW,SAAA,
|
|
1
|
+
{"version":3,"file":"reader.d.ts","names":[],"sources":["../../src/core/reader.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/core/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","names":[],"sources":["../../src/core/util.ts"],"sourcesContent":[],"mappings":";;;KAEY,8DACV,gDAA8C;KACpC,oCACV,UAAU,OAAO,sBACb,KAAA,CAAM,GAAA,CAAI,sBACV,IAAI,KAAA,CAAM,GAAA,CAAI;AALR,KAOA,SAAA,GAAY,QAPM,EAAA;AAElB,KAMA,QAAA,GANA,CAMY,YANZ,EAM0B,aANI,CAAA;AACxC,KAMU,YAAA,GANV,MAAA;AAAiB,KAOP,aAAA,GAPO;EAAP,SAAA,IAAA,EAAA,UAAA;EACN,SAAU,IAAA,EAAA,MAAA;CACV,GAAA;EAAI,SAAU,IAAA,EAAA,SAAA;EAAmB,SAAA,KAAA,EAAA,GAAA;AAEvC,CAAA,GAAY;EACA,SAAA,IAAQ,EAAA,
|
|
1
|
+
{"version":3,"file":"util.d.ts","names":[],"sources":["../../src/core/util.ts"],"sourcesContent":[],"mappings":";;;KAEY,8DACV,gDAA8C;KACpC,oCACV,UAAU,OAAO,sBACb,KAAA,CAAM,GAAA,CAAI,sBACV,IAAI,KAAA,CAAM,GAAA,CAAI;AALR,KAOA,SAAA,GAAY,QAPM,EAAA;AAElB,KAMA,QAAA,GANA,CAMY,YANZ,EAM0B,aANI,CAAA;AACxC,KAMU,YAAA,GANV,MAAA;AAAiB,KAOP,aAAA,GAPO;EAAP,SAAA,IAAA,EAAA,UAAA;EACN,SAAU,IAAA,EAAA,MAAA;CACV,GAAA;EAAI,SAAU,IAAA,EAAA,SAAA;EAAmB,SAAA,KAAA,EAAA,GAAA;AAEvC,CAAA,GAAY;EACA,SAAA,IAAQ,EAAA,QAAI;EACZ,SAAA,KAAA,EAAY,MAAA;AACxB,CAAA,GAAY;;;;;kBAmBU"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isograph/react",
|
|
3
|
-
"version": "0.0.0-main-
|
|
3
|
+
"version": "0.0.0-main-6df788b2",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"author": "Isograph Labs",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@isograph/
|
|
12
|
-
"@isograph/
|
|
13
|
-
"@isograph/
|
|
11
|
+
"@isograph/disposable-types": "0.0.0-main-6df788b2",
|
|
12
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-6df788b2",
|
|
13
|
+
"@isograph/react-disposable-state": "0.0.0-main-6df788b2"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
16
|
"react": "^18.0.0 || ^19.0.0"
|
package/src/core/cache.ts
CHANGED
|
@@ -590,9 +590,17 @@ function getDataIdOfNetworkResponse(
|
|
|
590
590
|
variables: Variables,
|
|
591
591
|
index: number | null,
|
|
592
592
|
): DataId {
|
|
593
|
+
const __typename =
|
|
594
|
+
astNode.concreteType ?? dataToNormalize[TYPENAME_FIELD_NAME];
|
|
595
|
+
if (__typename == null) {
|
|
596
|
+
throw new Error(
|
|
597
|
+
'Unexpected missing __typename in network response when normalizing a linked field. ' +
|
|
598
|
+
'This is indicative of a bug in Isograph.',
|
|
599
|
+
);
|
|
600
|
+
}
|
|
593
601
|
// If we are dealing with nested Query, use __ROOT as id
|
|
594
602
|
// TODO do not hard code this value here
|
|
595
|
-
if (
|
|
603
|
+
if (__typename === 'Query') {
|
|
596
604
|
return ROOT_ID;
|
|
597
605
|
}
|
|
598
606
|
|
package/src/core/entrypoint.ts
CHANGED
|
@@ -138,14 +138,12 @@ export type NormalizationAstLoader = {
|
|
|
138
138
|
|
|
139
139
|
export type NormalizationScalarField = {
|
|
140
140
|
readonly kind: 'Scalar';
|
|
141
|
-
readonly isFallible: boolean;
|
|
142
141
|
readonly fieldName: string;
|
|
143
142
|
readonly arguments: Arguments | null;
|
|
144
143
|
};
|
|
145
144
|
|
|
146
145
|
export type NormalizationLinkedField = {
|
|
147
146
|
readonly kind: 'Linked';
|
|
148
|
-
readonly isFallible: boolean;
|
|
149
147
|
readonly fieldName: string;
|
|
150
148
|
readonly arguments: Arguments | null;
|
|
151
149
|
readonly selections: NormalizationAstNodes;
|
package/src/core/read.ts
CHANGED
package/src/core/reader.ts
CHANGED
|
@@ -88,7 +88,6 @@ export type ReaderAst<TReadFromStore> = ReadonlyArray<ReaderAstNode>;
|
|
|
88
88
|
|
|
89
89
|
export type ReaderScalarField = {
|
|
90
90
|
readonly kind: 'Scalar';
|
|
91
|
-
readonly isFallible: boolean;
|
|
92
91
|
readonly fieldName: string;
|
|
93
92
|
readonly alias: string | null;
|
|
94
93
|
readonly arguments: Arguments | null;
|
|
@@ -102,7 +101,6 @@ export type ReaderLinkField = {
|
|
|
102
101
|
|
|
103
102
|
export type ReaderLinkedField = {
|
|
104
103
|
readonly kind: 'Linked';
|
|
105
|
-
readonly isFallible: boolean;
|
|
106
104
|
readonly fieldName: string;
|
|
107
105
|
readonly alias: string | null;
|
|
108
106
|
readonly selections: ReaderAst<unknown>;
|
|
@@ -4,7 +4,6 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: true,
|
|
8
7
|
fieldName: "node",
|
|
9
8
|
arguments: [
|
|
10
9
|
[
|
|
@@ -16,13 +15,11 @@ const normalizationAst: NormalizationAst = {
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Scalar",
|
|
19
|
-
isFallible: false,
|
|
20
18
|
fieldName: "__typename",
|
|
21
19
|
arguments: null,
|
|
22
20
|
},
|
|
23
21
|
{
|
|
24
22
|
kind: "Scalar",
|
|
25
|
-
isFallible: false,
|
|
26
23
|
fieldName: "id",
|
|
27
24
|
arguments: null,
|
|
28
25
|
},
|
|
@@ -32,19 +29,16 @@ const normalizationAst: NormalizationAst = {
|
|
|
32
29
|
selections: [
|
|
33
30
|
{
|
|
34
31
|
kind: "Scalar",
|
|
35
|
-
isFallible: false,
|
|
36
32
|
fieldName: "__typename",
|
|
37
33
|
arguments: null,
|
|
38
34
|
},
|
|
39
35
|
{
|
|
40
36
|
kind: "Scalar",
|
|
41
|
-
isFallible: false,
|
|
42
37
|
fieldName: "id",
|
|
43
38
|
arguments: null,
|
|
44
39
|
},
|
|
45
40
|
{
|
|
46
41
|
kind: "Scalar",
|
|
47
|
-
isFallible: false,
|
|
48
42
|
fieldName: "name",
|
|
49
43
|
arguments: null,
|
|
50
44
|
},
|
|
@@ -54,7 +48,6 @@ const normalizationAst: NormalizationAst = {
|
|
|
54
48
|
},
|
|
55
49
|
{
|
|
56
50
|
kind: "Linked",
|
|
57
|
-
isFallible: true,
|
|
58
51
|
fieldName: "node",
|
|
59
52
|
arguments: [
|
|
60
53
|
[
|
|
@@ -66,13 +59,11 @@ const normalizationAst: NormalizationAst = {
|
|
|
66
59
|
selections: [
|
|
67
60
|
{
|
|
68
61
|
kind: "Scalar",
|
|
69
|
-
isFallible: false,
|
|
70
62
|
fieldName: "__typename",
|
|
71
63
|
arguments: null,
|
|
72
64
|
},
|
|
73
65
|
{
|
|
74
66
|
kind: "Scalar",
|
|
75
|
-
isFallible: false,
|
|
76
67
|
fieldName: "id",
|
|
77
68
|
arguments: null,
|
|
78
69
|
},
|
|
@@ -82,19 +73,16 @@ const normalizationAst: NormalizationAst = {
|
|
|
82
73
|
selections: [
|
|
83
74
|
{
|
|
84
75
|
kind: "Scalar",
|
|
85
|
-
isFallible: false,
|
|
86
76
|
fieldName: "__typename",
|
|
87
77
|
arguments: null,
|
|
88
78
|
},
|
|
89
79
|
{
|
|
90
80
|
kind: "Scalar",
|
|
91
|
-
isFallible: false,
|
|
92
81
|
fieldName: "id",
|
|
93
82
|
arguments: null,
|
|
94
83
|
},
|
|
95
84
|
{
|
|
96
85
|
kind: "Scalar",
|
|
97
|
-
isFallible: false,
|
|
98
86
|
fieldName: "name",
|
|
99
87
|
arguments: null,
|
|
100
88
|
},
|
|
@@ -7,7 +7,6 @@ import Node__asEconomist__resolver_reader from '../../Node/asEconomist/resolver_
|
|
|
7
7
|
const readerAst: ReaderAst<Query__linkedUpdate__param> = [
|
|
8
8
|
{
|
|
9
9
|
kind: "Linked",
|
|
10
|
-
isFallible: true,
|
|
11
10
|
fieldName: "node",
|
|
12
11
|
alias: null,
|
|
13
12
|
arguments: [
|
|
@@ -22,7 +21,6 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
|
|
|
22
21
|
selections: [
|
|
23
22
|
{
|
|
24
23
|
kind: "Linked",
|
|
25
|
-
isFallible: false,
|
|
26
24
|
fieldName: "asEconomist",
|
|
27
25
|
alias: null,
|
|
28
26
|
arguments: null,
|
|
@@ -32,7 +30,6 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
|
|
|
32
30
|
selections: [
|
|
33
31
|
{
|
|
34
32
|
kind: "Scalar",
|
|
35
|
-
isFallible: false,
|
|
36
33
|
fieldName: "name",
|
|
37
34
|
alias: null,
|
|
38
35
|
arguments: null,
|
|
@@ -44,7 +41,6 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
|
|
|
44
41
|
},
|
|
45
42
|
{
|
|
46
43
|
kind: "Linked",
|
|
47
|
-
isFallible: true,
|
|
48
44
|
fieldName: "node",
|
|
49
45
|
alias: "john_stuart_mill",
|
|
50
46
|
arguments: [
|
|
@@ -63,7 +59,6 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
|
|
|
63
59
|
},
|
|
64
60
|
{
|
|
65
61
|
kind: "Linked",
|
|
66
|
-
isFallible: false,
|
|
67
62
|
fieldName: "asEconomist",
|
|
68
63
|
alias: null,
|
|
69
64
|
arguments: null,
|
|
@@ -73,7 +68,6 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
|
|
|
73
68
|
selections: [
|
|
74
69
|
{
|
|
75
70
|
kind: "Scalar",
|
|
76
|
-
isFallible: false,
|
|
77
71
|
fieldName: "name",
|
|
78
72
|
alias: null,
|
|
79
73
|
arguments: null,
|
|
@@ -4,20 +4,17 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: false,
|
|
8
7
|
fieldName: "me",
|
|
9
8
|
arguments: null,
|
|
10
9
|
concreteType: "Economist",
|
|
11
10
|
selections: [
|
|
12
11
|
{
|
|
13
12
|
kind: "Scalar",
|
|
14
|
-
isFallible: false,
|
|
15
13
|
fieldName: "id",
|
|
16
14
|
arguments: null,
|
|
17
15
|
},
|
|
18
16
|
{
|
|
19
17
|
kind: "Scalar",
|
|
20
|
-
isFallible: false,
|
|
21
18
|
fieldName: "name",
|
|
22
19
|
arguments: null,
|
|
23
20
|
},
|
|
@@ -6,7 +6,6 @@ import { meNameField as resolver } from '../../../garbageCollection.test';
|
|
|
6
6
|
const readerAst: ReaderAst<Query__meName__param> = [
|
|
7
7
|
{
|
|
8
8
|
kind: "Linked",
|
|
9
|
-
isFallible: false,
|
|
10
9
|
fieldName: "me",
|
|
11
10
|
alias: null,
|
|
12
11
|
arguments: null,
|
|
@@ -16,7 +15,6 @@ const readerAst: ReaderAst<Query__meName__param> = [
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Scalar",
|
|
19
|
-
isFallible: false,
|
|
20
18
|
fieldName: "name",
|
|
21
19
|
alias: null,
|
|
22
20
|
arguments: null,
|
|
@@ -4,52 +4,44 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: false,
|
|
8
7
|
fieldName: "me",
|
|
9
8
|
arguments: null,
|
|
10
9
|
concreteType: "Economist",
|
|
11
10
|
selections: [
|
|
12
11
|
{
|
|
13
12
|
kind: "Scalar",
|
|
14
|
-
isFallible: false,
|
|
15
13
|
fieldName: "id",
|
|
16
14
|
arguments: null,
|
|
17
15
|
},
|
|
18
16
|
{
|
|
19
17
|
kind: "Scalar",
|
|
20
|
-
isFallible: false,
|
|
21
18
|
fieldName: "name",
|
|
22
19
|
arguments: null,
|
|
23
20
|
},
|
|
24
21
|
{
|
|
25
22
|
kind: "Linked",
|
|
26
|
-
isFallible: true,
|
|
27
23
|
fieldName: "successor",
|
|
28
24
|
arguments: null,
|
|
29
25
|
concreteType: "Economist",
|
|
30
26
|
selections: [
|
|
31
27
|
{
|
|
32
28
|
kind: "Scalar",
|
|
33
|
-
isFallible: false,
|
|
34
29
|
fieldName: "id",
|
|
35
30
|
arguments: null,
|
|
36
31
|
},
|
|
37
32
|
{
|
|
38
33
|
kind: "Linked",
|
|
39
|
-
isFallible: true,
|
|
40
34
|
fieldName: "successor",
|
|
41
35
|
arguments: null,
|
|
42
36
|
concreteType: "Economist",
|
|
43
37
|
selections: [
|
|
44
38
|
{
|
|
45
39
|
kind: "Scalar",
|
|
46
|
-
isFallible: false,
|
|
47
40
|
fieldName: "id",
|
|
48
41
|
arguments: null,
|
|
49
42
|
},
|
|
50
43
|
{
|
|
51
44
|
kind: "Scalar",
|
|
52
|
-
isFallible: false,
|
|
53
45
|
fieldName: "name",
|
|
54
46
|
arguments: null,
|
|
55
47
|
},
|
|
@@ -6,7 +6,6 @@ import { meNameField as resolver } from '../../../meNameSuccessor';
|
|
|
6
6
|
const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
|
|
7
7
|
{
|
|
8
8
|
kind: "Linked",
|
|
9
|
-
isFallible: false,
|
|
10
9
|
fieldName: "me",
|
|
11
10
|
alias: null,
|
|
12
11
|
arguments: null,
|
|
@@ -16,7 +15,6 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Scalar",
|
|
19
|
-
isFallible: false,
|
|
20
18
|
fieldName: "name",
|
|
21
19
|
alias: null,
|
|
22
20
|
arguments: null,
|
|
@@ -24,7 +22,6 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
|
|
|
24
22
|
},
|
|
25
23
|
{
|
|
26
24
|
kind: "Linked",
|
|
27
|
-
isFallible: true,
|
|
28
25
|
fieldName: "successor",
|
|
29
26
|
alias: null,
|
|
30
27
|
arguments: null,
|
|
@@ -34,7 +31,6 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
|
|
|
34
31
|
selections: [
|
|
35
32
|
{
|
|
36
33
|
kind: "Linked",
|
|
37
|
-
isFallible: true,
|
|
38
34
|
fieldName: "successor",
|
|
39
35
|
alias: null,
|
|
40
36
|
arguments: null,
|
|
@@ -44,7 +40,6 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
|
|
|
44
40
|
selections: [
|
|
45
41
|
{
|
|
46
42
|
kind: "Scalar",
|
|
47
|
-
isFallible: false,
|
|
48
43
|
fieldName: "name",
|
|
49
44
|
alias: null,
|
|
50
45
|
arguments: null,
|
|
@@ -4,7 +4,6 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: true,
|
|
8
7
|
fieldName: "node",
|
|
9
8
|
arguments: [
|
|
10
9
|
[
|
|
@@ -16,13 +15,11 @@ const normalizationAst: NormalizationAst = {
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Scalar",
|
|
19
|
-
isFallible: false,
|
|
20
18
|
fieldName: "__typename",
|
|
21
19
|
arguments: null,
|
|
22
20
|
},
|
|
23
21
|
{
|
|
24
22
|
kind: "Scalar",
|
|
25
|
-
isFallible: false,
|
|
26
23
|
fieldName: "id",
|
|
27
24
|
arguments: null,
|
|
28
25
|
},
|
|
@@ -6,7 +6,6 @@ import { nodeField as resolver } from '../../../nodeQuery';
|
|
|
6
6
|
const readerAst: ReaderAst<Query__nodeField__param> = [
|
|
7
7
|
{
|
|
8
8
|
kind: "Linked",
|
|
9
|
-
isFallible: true,
|
|
10
9
|
fieldName: "node",
|
|
11
10
|
alias: null,
|
|
12
11
|
arguments: [
|
|
@@ -21,7 +20,6 @@ const readerAst: ReaderAst<Query__nodeField__param> = [
|
|
|
21
20
|
selections: [
|
|
22
21
|
{
|
|
23
22
|
kind: "Scalar",
|
|
24
|
-
isFallible: false,
|
|
25
23
|
fieldName: "id",
|
|
26
24
|
alias: null,
|
|
27
25
|
arguments: null,
|
|
@@ -4,20 +4,17 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: false,
|
|
8
7
|
fieldName: "me",
|
|
9
8
|
arguments: null,
|
|
10
9
|
concreteType: "Economist",
|
|
11
10
|
selections: [
|
|
12
11
|
{
|
|
13
12
|
kind: "Scalar",
|
|
14
|
-
isFallible: false,
|
|
15
13
|
fieldName: "id",
|
|
16
14
|
arguments: null,
|
|
17
15
|
},
|
|
18
16
|
{
|
|
19
17
|
kind: "Scalar",
|
|
20
|
-
isFallible: false,
|
|
21
18
|
fieldName: "name",
|
|
22
19
|
arguments: null,
|
|
23
20
|
},
|
|
@@ -6,7 +6,6 @@ import { normalizeUndefinedField as resolver } from '../../../normalizeData.test
|
|
|
6
6
|
const readerAst: ReaderAst<Query__normalizeUndefinedField__param> = [
|
|
7
7
|
{
|
|
8
8
|
kind: "Linked",
|
|
9
|
-
isFallible: false,
|
|
10
9
|
fieldName: "me",
|
|
11
10
|
alias: null,
|
|
12
11
|
arguments: null,
|
|
@@ -16,7 +15,6 @@ const readerAst: ReaderAst<Query__normalizeUndefinedField__param> = [
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Scalar",
|
|
19
|
-
isFallible: false,
|
|
20
18
|
fieldName: "name",
|
|
21
19
|
alias: null,
|
|
22
20
|
arguments: null,
|
|
@@ -4,7 +4,6 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: true,
|
|
8
7
|
fieldName: "node",
|
|
9
8
|
arguments: [
|
|
10
9
|
[
|
|
@@ -16,13 +15,11 @@ const normalizationAst: NormalizationAst = {
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Scalar",
|
|
19
|
-
isFallible: false,
|
|
20
18
|
fieldName: "__typename",
|
|
21
19
|
arguments: null,
|
|
22
20
|
},
|
|
23
21
|
{
|
|
24
22
|
kind: "Scalar",
|
|
25
|
-
isFallible: false,
|
|
26
23
|
fieldName: "id",
|
|
27
24
|
arguments: null,
|
|
28
25
|
},
|
|
@@ -32,19 +29,16 @@ const normalizationAst: NormalizationAst = {
|
|
|
32
29
|
selections: [
|
|
33
30
|
{
|
|
34
31
|
kind: "Scalar",
|
|
35
|
-
isFallible: false,
|
|
36
32
|
fieldName: "__typename",
|
|
37
33
|
arguments: null,
|
|
38
34
|
},
|
|
39
35
|
{
|
|
40
36
|
kind: "Scalar",
|
|
41
|
-
isFallible: false,
|
|
42
37
|
fieldName: "id",
|
|
43
38
|
arguments: null,
|
|
44
39
|
},
|
|
45
40
|
{
|
|
46
41
|
kind: "Scalar",
|
|
47
|
-
isFallible: false,
|
|
48
42
|
fieldName: "name",
|
|
49
43
|
arguments: null,
|
|
50
44
|
},
|
|
@@ -7,7 +7,6 @@ import Node__asEconomist__resolver_reader from '../../Node/asEconomist/resolver_
|
|
|
7
7
|
const readerAst: ReaderAst<Query__startUpdate__param> = [
|
|
8
8
|
{
|
|
9
9
|
kind: "Linked",
|
|
10
|
-
isFallible: true,
|
|
11
10
|
fieldName: "node",
|
|
12
11
|
alias: null,
|
|
13
12
|
arguments: [
|
|
@@ -22,7 +21,6 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
|
|
|
22
21
|
selections: [
|
|
23
22
|
{
|
|
24
23
|
kind: "Linked",
|
|
25
|
-
isFallible: false,
|
|
26
24
|
fieldName: "asEconomist",
|
|
27
25
|
alias: null,
|
|
28
26
|
arguments: null,
|
|
@@ -32,7 +30,6 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
|
|
|
32
30
|
selections: [
|
|
33
31
|
{
|
|
34
32
|
kind: "Scalar",
|
|
35
|
-
isFallible: false,
|
|
36
33
|
fieldName: "name",
|
|
37
34
|
alias: null,
|
|
38
35
|
arguments: null,
|
|
@@ -4,14 +4,12 @@ const normalizationAst: NormalizationAst = {
|
|
|
4
4
|
selections: [
|
|
5
5
|
{
|
|
6
6
|
kind: "Linked",
|
|
7
|
-
isFallible: false,
|
|
8
7
|
fieldName: "query",
|
|
9
8
|
arguments: null,
|
|
10
9
|
concreteType: "Query",
|
|
11
10
|
selections: [
|
|
12
11
|
{
|
|
13
12
|
kind: "Linked",
|
|
14
|
-
isFallible: true,
|
|
15
13
|
fieldName: "node",
|
|
16
14
|
arguments: [
|
|
17
15
|
[
|
|
@@ -23,13 +21,11 @@ const normalizationAst: NormalizationAst = {
|
|
|
23
21
|
selections: [
|
|
24
22
|
{
|
|
25
23
|
kind: "Scalar",
|
|
26
|
-
isFallible: false,
|
|
27
24
|
fieldName: "__typename",
|
|
28
25
|
arguments: null,
|
|
29
26
|
},
|
|
30
27
|
{
|
|
31
28
|
kind: "Scalar",
|
|
32
|
-
isFallible: false,
|
|
33
29
|
fieldName: "id",
|
|
34
30
|
arguments: null,
|
|
35
31
|
},
|
|
@@ -6,7 +6,6 @@ import { subquery as resolver } from '../../../normalizeData.test';
|
|
|
6
6
|
const readerAst: ReaderAst<Query__subquery__param> = [
|
|
7
7
|
{
|
|
8
8
|
kind: "Linked",
|
|
9
|
-
isFallible: false,
|
|
10
9
|
fieldName: "query",
|
|
11
10
|
alias: null,
|
|
12
11
|
arguments: null,
|
|
@@ -16,7 +15,6 @@ const readerAst: ReaderAst<Query__subquery__param> = [
|
|
|
16
15
|
selections: [
|
|
17
16
|
{
|
|
18
17
|
kind: "Linked",
|
|
19
|
-
isFallible: true,
|
|
20
18
|
fieldName: "node",
|
|
21
19
|
alias: null,
|
|
22
20
|
arguments: [
|
|
@@ -31,7 +29,6 @@ const readerAst: ReaderAst<Query__subquery__param> = [
|
|
|
31
29
|
selections: [
|
|
32
30
|
{
|
|
33
31
|
kind: "Scalar",
|
|
34
|
-
isFallible: false,
|
|
35
32
|
fieldName: "id",
|
|
36
33
|
alias: null,
|
|
37
34
|
arguments: null,
|