@isograph/react 0.0.0-main-a840a70e → 0.0.0-main-c09c9dbf
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 +8 -5
- package/.turbo/turbo-tsc.log +2 -2
- package/dist/_virtual/{rolldown_runtime.js → rolldown_runtime.cjs} +10 -6
- package/dist/core/{FragmentReference.js → FragmentReference.cjs} +1 -1
- package/dist/core/{FragmentReference.d.ts → FragmentReference.d.cts} +5 -5
- package/dist/core/FragmentReference.d.cts.map +1 -0
- package/dist/core/FragmentReference.d.mts.map +1 -1
- package/dist/core/{IsographEnvironment.js → IsographEnvironment.cjs} +5 -5
- package/dist/core/{IsographEnvironment.d.ts → IsographEnvironment.d.cts} +15 -16
- package/dist/core/IsographEnvironment.d.cts.map +1 -0
- package/dist/core/IsographEnvironment.d.mts +5 -6
- package/dist/core/IsographEnvironment.d.mts.map +1 -1
- package/dist/core/IsographEnvironment.mjs +3 -3
- package/dist/core/IsographEnvironment.mjs.map +1 -1
- package/dist/core/{PromiseWrapper.d.ts → PromiseWrapper.d.cts} +1 -1
- package/dist/core/PromiseWrapper.d.cts.map +1 -0
- package/dist/core/PromiseWrapper.d.mts.map +1 -1
- package/dist/core/PromiseWrapper.mjs.map +1 -1
- package/dist/core/{areEqualWithDeepComparison.js → areEqualWithDeepComparison.cjs} +7 -7
- package/dist/core/areEqualWithDeepComparison.mjs +7 -7
- package/dist/core/areEqualWithDeepComparison.mjs.map +1 -1
- package/dist/core/{brand.d.ts → brand.d.cts} +2 -2
- package/dist/core/brand.d.cts.map +1 -0
- package/dist/core/brand.d.mts +1 -1
- package/dist/core/brand.d.mts.map +1 -1
- package/dist/core/{cache.js → cache.cjs} +11 -12
- package/dist/core/cache.d.cts +44 -0
- package/dist/core/cache.d.cts.map +1 -0
- package/dist/core/cache.d.mts +27 -19
- package/dist/core/cache.d.mts.map +1 -1
- package/dist/core/cache.mjs +4 -4
- package/dist/core/cache.mjs.map +1 -1
- package/dist/core/{check.js → check.cjs} +4 -4
- package/dist/core/{check.d.ts → check.d.cts} +4 -4
- package/dist/core/check.d.cts.map +1 -0
- package/dist/core/check.d.mts.map +1 -1
- package/dist/core/check.mjs.map +1 -1
- package/dist/core/{componentCache.js → componentCache.cjs} +2 -2
- package/dist/core/{entrypoint.d.ts → entrypoint.d.cts} +7 -7
- package/dist/core/entrypoint.d.cts.map +1 -0
- package/dist/core/entrypoint.d.mts.map +1 -1
- package/dist/core/{garbageCollection.js → garbageCollection.cjs} +3 -3
- package/dist/core/{garbageCollection.d.ts → garbageCollection.d.cts} +4 -4
- package/dist/core/garbageCollection.d.cts.map +1 -0
- package/dist/core/garbageCollection.d.mts.map +1 -1
- package/dist/core/garbageCollection.mjs.map +1 -1
- package/dist/core/{getOrCreateCacheForArtifact.js → getOrCreateCacheForArtifact.cjs} +4 -4
- package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -1
- package/dist/core/{logging.d.ts → logging.d.cts} +9 -10
- package/dist/core/logging.d.cts.map +1 -0
- package/dist/core/logging.d.mts +0 -1
- package/dist/core/logging.d.mts.map +1 -1
- package/dist/core/{makeNetworkRequest.js → makeNetworkRequest.cjs} +15 -15
- package/dist/core/{makeNetworkRequest.d.ts → makeNetworkRequest.d.cts} +7 -7
- package/dist/core/makeNetworkRequest.d.cts.map +1 -0
- package/dist/core/makeNetworkRequest.d.mts.map +1 -1
- package/dist/core/makeNetworkRequest.mjs +4 -4
- package/dist/core/makeNetworkRequest.mjs.map +1 -1
- package/dist/core/{optimisticProxy.js → optimisticProxy.cjs} +2 -2
- package/dist/core/{optimisticProxy.d.ts → optimisticProxy.d.cts} +2 -3
- package/dist/core/optimisticProxy.d.cts.map +1 -0
- package/dist/core/optimisticProxy.d.mts +0 -1
- package/dist/core/optimisticProxy.d.mts.map +1 -1
- package/dist/core/optimisticProxy.mjs.map +1 -1
- package/dist/core/{read.js → read.cjs} +47 -47
- package/dist/core/{read.d.ts → read.d.cts} +4 -5
- package/dist/core/read.d.cts.map +1 -0
- package/dist/core/read.d.mts.map +1 -1
- package/dist/core/read.mjs +39 -39
- package/dist/core/read.mjs.map +1 -1
- package/dist/core/{reader.d.ts → reader.d.cts} +6 -6
- package/dist/core/reader.d.cts.map +1 -0
- package/dist/core/reader.d.mts.map +1 -1
- package/dist/core/{startUpdate.js → startUpdate.cjs} +14 -14
- package/dist/core/startUpdate.mjs +6 -6
- package/dist/core/startUpdate.mjs.map +1 -1
- package/dist/core/{subscribe.js → subscribe.cjs} +3 -3
- package/dist/core/{subscribe.d.ts → subscribe.d.cts} +6 -6
- package/dist/core/subscribe.d.cts.map +1 -0
- package/dist/core/subscribe.d.mts.map +1 -1
- package/dist/core/subscribe.mjs.map +1 -1
- package/dist/core/{util.d.ts → util.d.cts} +1 -1
- package/dist/core/util.d.cts.map +1 -0
- package/dist/core/util.d.mts.map +1 -1
- package/dist/core/util.mjs.map +1 -1
- package/dist/core/{writeData.js → writeData.cjs} +6 -6
- package/dist/core/{writeData.d.ts → writeData.d.cts} +6 -6
- package/dist/core/writeData.d.cts.map +1 -0
- package/dist/core/writeData.d.mts +1 -1
- package/dist/core/writeData.d.mts.map +1 -1
- package/dist/core/writeData.mjs.map +1 -1
- package/dist/{index.js → index.cjs} +29 -29
- package/dist/{index.d.ts → index.d.cts} +31 -31
- package/dist/loadable-hooks/useClientSideDefer.cjs +14 -0
- package/dist/loadable-hooks/{useClientSideDefer.d.ts → useClientSideDefer.d.cts} +4 -4
- package/dist/loadable-hooks/useClientSideDefer.d.cts.map +1 -0
- package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -1
- package/dist/loadable-hooks/{useConnectionSpecPagination.js → useConnectionSpecPagination.cjs} +13 -16
- package/dist/loadable-hooks/{useConnectionSpecPagination.d.ts → useConnectionSpecPagination.d.cts} +4 -4
- package/dist/loadable-hooks/useConnectionSpecPagination.d.cts.map +1 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -1
- package/dist/loadable-hooks/{useImperativeExposedMutationField.d.ts → useImperativeExposedMutationField.d.cts} +1 -1
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.cts.map +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -1
- package/dist/loadable-hooks/{useImperativeLoadableField.js → useImperativeLoadableField.cjs} +4 -5
- package/dist/loadable-hooks/{useImperativeLoadableField.d.ts → useImperativeLoadableField.d.cts} +4 -4
- package/dist/loadable-hooks/useImperativeLoadableField.d.cts.map +1 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -1
- package/dist/loadable-hooks/{useSkipLimitPagination.js → useSkipLimitPagination.cjs} +13 -16
- package/dist/loadable-hooks/{useSkipLimitPagination.d.ts → useSkipLimitPagination.d.cts} +4 -4
- package/dist/loadable-hooks/useSkipLimitPagination.d.cts.map +1 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -1
- package/dist/react/{FragmentReader.js → FragmentReader.cjs} +1 -1
- package/dist/react/{FragmentReader.d.ts → FragmentReader.d.cts} +5 -5
- package/dist/react/FragmentReader.d.cts.map +1 -0
- package/dist/react/FragmentReader.d.mts.map +1 -1
- package/dist/react/{FragmentRenderer.js → FragmentRenderer.cjs} +2 -2
- package/dist/react/{FragmentRenderer.d.ts → FragmentRenderer.d.cts} +5 -5
- package/dist/react/FragmentRenderer.d.cts.map +1 -0
- package/dist/react/FragmentRenderer.d.mts.map +1 -1
- package/dist/react/{IsographEnvironmentProvider.js → IsographEnvironmentProvider.cjs} +1 -1
- package/dist/react/{IsographEnvironmentProvider.d.ts → IsographEnvironmentProvider.d.cts} +2 -2
- package/dist/react/IsographEnvironmentProvider.d.cts.map +1 -0
- package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -1
- package/dist/react/{LoadableFieldReader.js → LoadableFieldReader.cjs} +3 -3
- package/dist/react/{LoadableFieldReader.d.ts → LoadableFieldReader.d.cts} +5 -5
- package/dist/react/LoadableFieldReader.d.cts.map +1 -0
- package/dist/react/LoadableFieldReader.d.mts.map +1 -1
- package/dist/react/{LoadableFieldRenderer.js → LoadableFieldRenderer.cjs} +3 -3
- package/dist/react/{LoadableFieldRenderer.d.ts → LoadableFieldRenderer.d.cts} +5 -5
- package/dist/react/LoadableFieldRenderer.d.cts.map +1 -0
- package/dist/react/LoadableFieldRenderer.d.mts.map +1 -1
- package/dist/react/{RenderAfterCommit__DO_NOT_USE.js → RenderAfterCommit__DO_NOT_USE.cjs} +1 -2
- package/dist/react/{RenderAfterCommit__DO_NOT_USE.d.ts → RenderAfterCommit__DO_NOT_USE.d.cts} +1 -2
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.cts.map +1 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +0 -1
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -1
- package/dist/react/{createIsographEnvironment.js → createIsographEnvironment.cjs} +2 -2
- package/dist/react/{createIsographEnvironment.d.ts → createIsographEnvironment.d.cts} +3 -3
- package/dist/react/createIsographEnvironment.d.cts.map +1 -0
- package/dist/react/createIsographEnvironment.d.mts +0 -1
- package/dist/react/createIsographEnvironment.d.mts.map +1 -1
- package/dist/react/{maybeUnwrapNetworkRequest.js → maybeUnwrapNetworkRequest.cjs} +1 -1
- package/dist/react/{useImperativeReference.js → useImperativeReference.cjs} +7 -8
- package/dist/react/{useImperativeReference.d.ts → useImperativeReference.d.cts} +5 -6
- package/dist/react/useImperativeReference.d.cts.map +1 -0
- package/dist/react/useImperativeReference.d.mts +0 -1
- package/dist/react/useImperativeReference.d.mts.map +1 -1
- package/dist/react/useLazyReference.cjs +18 -0
- package/dist/react/{useLazyReference.d.ts → useLazyReference.d.cts} +5 -6
- package/dist/react/useLazyReference.d.cts.map +1 -0
- package/dist/react/useLazyReference.d.mts +0 -1
- package/dist/react/useLazyReference.d.mts.map +1 -1
- package/dist/react/{useReadAndSubscribe.js → useReadAndSubscribe.cjs} +9 -10
- package/dist/react/{useReadAndSubscribe.d.ts → useReadAndSubscribe.d.cts} +4 -5
- package/dist/react/useReadAndSubscribe.d.cts.map +1 -0
- package/dist/react/useReadAndSubscribe.d.mts +0 -1
- package/dist/react/useReadAndSubscribe.d.mts.map +1 -1
- package/dist/react/useReadAndSubscribe.mjs.map +1 -1
- package/dist/react/{useRerenderOnChange.js → useRerenderOnChange.cjs} +3 -4
- package/dist/react/{useRerenderOnChange.d.ts → useRerenderOnChange.d.cts} +4 -4
- package/dist/react/useRerenderOnChange.d.cts.map +1 -0
- package/dist/react/useRerenderOnChange.d.mts.map +1 -1
- package/dist/react/{useResult.js → useResult.cjs} +7 -7
- package/dist/react/{useResult.d.ts → useResult.d.cts} +3 -3
- package/dist/react/useResult.d.cts.map +1 -0
- package/dist/react/useResult.d.mts.map +1 -1
- package/package.json +9 -9
- package/src/core/IsographEnvironment.ts +8 -4
- package/src/core/cache.ts +38 -25
- package/src/core/getOrCreateCacheForArtifact.ts +2 -2
- package/src/core/writeData.ts +4 -4
- package/src/tests/garbageCollection.test.ts +11 -11
- package/src/tests/normalizeData.test.ts +11 -3
- package/src/tests/optimisticProxy.test.ts +23 -23
- package/src/tests/startUpdate.test.ts +2 -2
- package/tsconfig.json +5 -4
- package/tsconfig.package.json +8 -0
- package/tsconfig.package.tsbuildinfo +1 -0
- package/tsconfig.test.json +12 -0
- package/tsconfig.test.tsbuildinfo +1 -0
- package/tsdown.config.ts +8 -0
- package/vitest.config.ts +1 -1
- package/dist/core/FragmentReference.d.ts.map +0 -1
- package/dist/core/IsographEnvironment.d.ts.map +0 -1
- package/dist/core/PromiseWrapper.d.ts.map +0 -1
- package/dist/core/brand.d.ts.map +0 -1
- package/dist/core/cache.d.ts +0 -37
- package/dist/core/cache.d.ts.map +0 -1
- package/dist/core/check.d.ts.map +0 -1
- package/dist/core/entrypoint.d.ts.map +0 -1
- package/dist/core/garbageCollection.d.ts.map +0 -1
- package/dist/core/logging.d.ts.map +0 -1
- package/dist/core/makeNetworkRequest.d.ts.map +0 -1
- package/dist/core/optimisticProxy.d.ts.map +0 -1
- package/dist/core/read.d.ts.map +0 -1
- package/dist/core/reader.d.ts.map +0 -1
- package/dist/core/subscribe.d.ts.map +0 -1
- package/dist/core/util.d.ts.map +0 -1
- package/dist/core/writeData.d.ts.map +0 -1
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +0 -1
- package/dist/loadable-hooks/useClientSideDefer.js +0 -15
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +0 -1
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +0 -1
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +0 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +0 -1
- package/dist/react/FragmentReader.d.ts.map +0 -1
- package/dist/react/FragmentRenderer.d.ts.map +0 -1
- package/dist/react/IsographEnvironmentProvider.d.ts.map +0 -1
- package/dist/react/LoadableFieldReader.d.ts.map +0 -1
- package/dist/react/LoadableFieldRenderer.d.ts.map +0 -1
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +0 -1
- package/dist/react/createIsographEnvironment.d.ts.map +0 -1
- package/dist/react/useImperativeReference.d.ts.map +0 -1
- package/dist/react/useLazyReference.d.ts.map +0 -1
- package/dist/react/useLazyReference.js +0 -19
- package/dist/react/useReadAndSubscribe.d.ts.map +0 -1
- package/dist/react/useRerenderOnChange.d.ts.map +0 -1
- package/dist/react/useResult.d.ts.map +0 -1
- package/src/tests/tsconfig.json +0 -21
- package/tsconfig.pkg.json +0 -16
- /package/dist/core/{PromiseWrapper.js → PromiseWrapper.cjs} +0 -0
- /package/dist/core/{entrypoint.js → entrypoint.cjs} +0 -0
- /package/dist/core/{logging.js → logging.cjs} +0 -0
- /package/dist/core/{util.js → util.cjs} +0 -0
- /package/dist/loadable-hooks/{useImperativeExposedMutationField.js → useImperativeExposedMutationField.cjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReadAndSubscribe.mjs","names":[
|
|
1
|
+
{"version":3,"file":"useReadAndSubscribe.mjs","names":[],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n type ExtractData,\n type FragmentReference,\n stableIdForFragmentReference,\n type UnknownTReadFromStore,\n} from '../core/FragmentReference';\nimport type { IsographComponentFunction } from '../core/IsographEnvironment';\nimport { logMessage } from '../core/logging';\nimport { readPromise } from '../core/PromiseWrapper';\nimport {\n type NetworkRequestReaderOptions,\n readButDoNotEvaluate,\n type WithEncounteredRecords,\n} from '../core/read';\nimport type { ReaderAst } from '../core/reader';\nimport { subscribe } from '../core/subscribe';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\nimport { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';\nimport { useRerenderOnChange } from './useRerenderOnChange';\n\n/**\n * Read the data from a fragment reference and subscribe to updates.\n */\nexport function useReadAndSubscribe<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n fragmentReference: FragmentReference<TReadFromStore, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n readerAst: ReaderAst<TReadFromStore>,\n): ExtractData<TReadFromStore> {\n const environment = useIsographEnvironment();\n const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() =>\n readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions),\n );\n useRerenderOnChange(\n readOutDataAndRecords,\n fragmentReference,\n setReadOutDataAndRecords,\n readerAst,\n );\n return readOutDataAndRecords.item;\n}\n\nexport function useSubscribeToMultiple<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n items: ReadonlyArray<{\n records: WithEncounteredRecords<TReadFromStore>;\n callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;\n fragmentReference: FragmentReference<TReadFromStore, any>;\n readerAst: ReaderAst<TReadFromStore>;\n }>,\n) {\n const environment = useIsographEnvironment();\n useEffect(\n () => {\n const cleanupFns = items.map(\n ({ records, callback, fragmentReference, readerAst }) => {\n return subscribe(\n environment,\n records,\n fragmentReference,\n callback,\n readerAst,\n );\n },\n );\n return () => {\n cleanupFns.forEach((loader) => {\n loader();\n });\n };\n },\n // By analogy to useReadAndSubscribe, we can have an empty dependency array?\n // Maybe callback has to be depended on. I don't know!\n // TODO find out\n [\n items\n .map(({ fragmentReference }) => {\n stableIdForFragmentReference(fragmentReference);\n })\n .join('.'),\n ],\n );\n}\n\nexport const componentFunction: IsographComponentFunction = (\n environment,\n fragmentReference,\n networkRequestOptions,\n startUpdate,\n) => {\n function Component(additionalRuntimeProps: { [key: string]: any }) {\n maybeUnwrapNetworkRequest(\n fragmentReference.networkRequest,\n networkRequestOptions,\n );\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n const data = useReadAndSubscribe(\n fragmentReference,\n networkRequestOptions,\n readerWithRefetchQueries.readerArtifact.readerAst,\n );\n\n logMessage(environment, () => ({\n kind: 'ComponentRerendered',\n componentName: fragmentReference.fieldName,\n rootLink: fragmentReference.root,\n }));\n\n return readerWithRefetchQueries.readerArtifact.resolver(\n // @ts-expect-error\n {\n data,\n parameters: fragmentReference.variables,\n startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? startUpdate\n : undefined,\n },\n additionalRuntimeProps,\n );\n }\n const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;\n Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;\n return Component;\n};\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,oBAGd,mBACA,uBACA,WAC6B;CAC7B,MAAM,cAAc,wBAAwB;CAC5C,MAAM,CAAC,uBAAuB,4BAA4B,eACxD,qBAAqB,aAAa,mBAAmB,sBAAsB,CAC5E;AACD,qBACE,uBACA,mBACA,0BACA,UACD;AACD,QAAO,sBAAsB;;AAG/B,SAAgB,uBAGd,OAMA;CACA,MAAM,cAAc,wBAAwB;AAC5C,iBACQ;EACJ,MAAM,aAAa,MAAM,KACtB,EAAE,SAAS,UAAU,mBAAmB,gBAAgB;AACvD,UAAO,UACL,aACA,SACA,mBACA,UACA,UACD;IAEJ;AACD,eAAa;AACX,cAAW,SAAS,WAAW;AAC7B,YAAQ;KACR;;IAMN,CACE,MACG,KAAK,EAAE,wBAAwB;AAC9B,+BAA6B,kBAAkB;GAC/C,CACD,KAAK,IAAI,CACb,CACF;;AAGH,MAAa,qBACX,aACA,mBACA,uBACA,gBACG;CACH,SAAS,UAAU,wBAAgD;AACjE,4BACE,kBAAkB,gBAClB,sBACD;EACD,MAAM,2BAA2B,YAC/B,kBAAkB,yBACnB;EAED,MAAM,OAAO,oBACX,mBACA,uBACA,yBAAyB,eAAe,UACzC;AAED,aAAW,oBAAoB;GAC7B,MAAM;GACN,eAAe,kBAAkB;GACjC,UAAU,kBAAkB;GAC7B,EAAE;AAEH,SAAO,yBAAyB,eAAe,SAE7C;GACE;GACA,YAAY,kBAAkB;GAC9B,aAAa,yBAAyB,eAAe,eACjD,cACA;GACL,EACD,uBACD;;CAEH,MAAM,WAAW,UAAU,kBAAkB,KAAK,WAAW,QAAQ,kBAAkB,KAAK,OAAO;AACnG,WAAU,cAAc,GAAG,kBAAkB,UAAU,GAAG,SAAS;AACnE,QAAO"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.
|
|
2
|
-
const require_subscribe = require('../core/subscribe.
|
|
3
|
-
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_subscribe = require('../core/subscribe.cjs');
|
|
3
|
+
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.cjs');
|
|
4
4
|
let react = require("react");
|
|
5
|
-
react = require_rolldown_runtime.__toESM(react);
|
|
6
5
|
|
|
7
6
|
//#region src/react/useRerenderOnChange.ts
|
|
8
7
|
function useRerenderOnChange(encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords, readerAst) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ReaderAst } from "../core/reader.
|
|
2
|
-
import { WithEncounteredRecords } from "../core/read.
|
|
3
|
-
import { FragmentReference } from "../core/FragmentReference.
|
|
1
|
+
import { ReaderAst } from "../core/reader.cjs";
|
|
2
|
+
import { WithEncounteredRecords } from "../core/read.cjs";
|
|
3
|
+
import { FragmentReference } from "../core/FragmentReference.cjs";
|
|
4
4
|
|
|
5
5
|
//#region src/react/useRerenderOnChange.d.ts
|
|
6
6
|
declare function useRerenderOnChange<TReadFromStore extends {
|
|
@@ -9,4 +9,4 @@ declare function useRerenderOnChange<TReadFromStore extends {
|
|
|
9
9
|
}>(encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<any, any>, setEncounteredDataAndRecords: (data: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): void;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { useRerenderOnChange };
|
|
12
|
-
//# sourceMappingURL=useRerenderOnChange.d.
|
|
12
|
+
//# sourceMappingURL=useRerenderOnChange.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRerenderOnChange.d.cts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"mappings":";;;;;iBASgB,mBAAA;EACW,UAAA;EAAoB,IAAA;AAAA,EAAA,CAE7C,yBAAA,EAA2B,sBAAA,CAAuB,cAAA,GAClD,iBAAA,EAAmB,iBAAA,YACnB,4BAAA,GACE,IAAA,EAAM,sBAAA,CAAuB,cAAA,YAE/B,SAAA,EAAW,SAAA,CAAU,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRerenderOnChange.d.mts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"
|
|
1
|
+
{"version":3,"file":"useRerenderOnChange.d.mts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"mappings":";;;;;iBASgB,mBAAA;EACW,UAAA;EAAoB,IAAA;AAAA,EAAA,CAE7C,yBAAA,EAA2B,sBAAA,CAAuB,cAAA,GAClD,iBAAA,EAAmB,iBAAA,YACnB,4BAAA,GACE,IAAA,EAAM,sBAAA,CAAuB,cAAA,YAE/B,SAAA,EAAW,SAAA,CAAU,cAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const require_PromiseWrapper = require('../core/PromiseWrapper.
|
|
2
|
-
const require_startUpdate = require('../core/startUpdate.
|
|
3
|
-
const require_componentCache = require('../core/componentCache.
|
|
4
|
-
const require_read = require('../core/read.
|
|
5
|
-
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.
|
|
6
|
-
const require_maybeUnwrapNetworkRequest = require('./maybeUnwrapNetworkRequest.
|
|
7
|
-
const require_useReadAndSubscribe = require('./useReadAndSubscribe.
|
|
1
|
+
const require_PromiseWrapper = require('../core/PromiseWrapper.cjs');
|
|
2
|
+
const require_startUpdate = require('../core/startUpdate.cjs');
|
|
3
|
+
const require_componentCache = require('../core/componentCache.cjs');
|
|
4
|
+
const require_read = require('../core/read.cjs');
|
|
5
|
+
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.cjs');
|
|
6
|
+
const require_maybeUnwrapNetworkRequest = require('./maybeUnwrapNetworkRequest.cjs');
|
|
7
|
+
const require_useReadAndSubscribe = require('./useReadAndSubscribe.cjs');
|
|
8
8
|
|
|
9
9
|
//#region src/react/useResult.ts
|
|
10
10
|
function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { NetworkRequestReaderOptions } from "../core/read.
|
|
2
|
-
import { FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.
|
|
1
|
+
import { NetworkRequestReaderOptions } from "../core/read.cjs";
|
|
2
|
+
import { FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.cjs";
|
|
3
3
|
|
|
4
4
|
//#region src/react/useResult.d.ts
|
|
5
5
|
declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { useResult };
|
|
8
|
-
//# sourceMappingURL=useResult.d.
|
|
8
|
+
//# sourceMappingURL=useResult.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResult.d.cts","names":[],"sources":["../../src/react/useResult.ts"],"mappings":";;;;iBAegB,SAAA,wBACS,qBAAA,oBAAA,CAGvB,iBAAA,EAAmB,iBAAA,CAAkB,cAAA,EAAgB,iBAAA,GACrD,4BAAA,GAA+B,OAAA,CAAQ,2BAAA,WACtC,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResult.d.mts","names":[],"sources":["../../src/react/useResult.ts"],"
|
|
1
|
+
{"version":3,"file":"useResult.d.mts","names":[],"sources":["../../src/react/useResult.ts"],"mappings":";;;;iBAegB,SAAA,wBACS,qBAAA,oBAAA,CAGvB,iBAAA,EAAmB,iBAAA,CAAkB,cAAA,EAAgB,iBAAA,GACrD,4BAAA,GAA+B,OAAA,CAAQ,2BAAA,WACtC,iBAAA"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isograph/react",
|
|
3
|
-
"version": "0.0.0-main-
|
|
3
|
+
"version": "0.0.0-main-c09c9dbf",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
|
-
"main": "./dist/index.
|
|
7
|
-
"types": "./dist/index.d.
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"types": "./dist/index.d.cts",
|
|
8
8
|
"author": "Isograph Labs",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@isograph/
|
|
12
|
-
"@isograph/
|
|
13
|
-
"@isograph/
|
|
11
|
+
"@isograph/react-disposable-state": "0.0.0-main-c09c9dbf",
|
|
12
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-c09c9dbf",
|
|
13
|
+
"@isograph/disposable-types": "0.0.0-main-c09c9dbf"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
16
|
"react": "^18.0.0 || ^19.0.0"
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"module": "./dist/index.mjs",
|
|
33
33
|
"exports": {
|
|
34
34
|
".": {
|
|
35
|
-
"
|
|
36
|
-
"
|
|
35
|
+
"require": "./dist/index.cjs",
|
|
36
|
+
"import": "./dist/index.mjs"
|
|
37
37
|
},
|
|
38
38
|
"./package.json": "./package.json"
|
|
39
39
|
},
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"test": "vitest run",
|
|
44
44
|
"test-watch": "vitest watch",
|
|
45
45
|
"coverage": "vitest run --coverage",
|
|
46
|
-
"tsc": "tsc",
|
|
46
|
+
"tsc": "tsc -b",
|
|
47
47
|
"tsc-force": "tsc --build --clean && tsc --build --force",
|
|
48
48
|
"iso": "../../target/debug/isograph_cli --config ./isograph.config.json"
|
|
49
49
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { ParentCache } from '@isograph/react-disposable-state';
|
|
2
2
|
import type { Brand } from './brand';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
LinkedParentRecordKey,
|
|
5
|
+
ParentRecordKey,
|
|
6
|
+
ScalarParentRecordKey,
|
|
7
|
+
} from './cache';
|
|
4
8
|
import type {
|
|
5
9
|
IsographEntrypoint,
|
|
6
10
|
IsographOperation,
|
|
@@ -144,9 +148,9 @@ export type DataTypeValueLinked =
|
|
|
144
148
|
| readonly DataTypeValueLinked[];
|
|
145
149
|
|
|
146
150
|
export type StoreRecord = {
|
|
147
|
-
[
|
|
148
|
-
[
|
|
149
|
-
|
|
151
|
+
[key: ScalarParentRecordKey]: DataTypeValueScalar;
|
|
152
|
+
[key: LinkedParentRecordKey]: DataTypeValueLinked;
|
|
153
|
+
readonly [key: ParentRecordKey]: DataTypeValueScalar | DataTypeValueLinked;
|
|
150
154
|
// TODO __typename?: T, which is restricted to being a concrete string
|
|
151
155
|
// TODO this shouldn't always be named id
|
|
152
156
|
readonly __typename?: TypeName;
|
package/src/core/cache.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type Factory, ParentCache } from '@isograph/react-disposable-state';
|
|
2
|
-
import type { Brand } from './brand';
|
|
3
2
|
import type {
|
|
4
3
|
NormalizationAstNodes,
|
|
5
4
|
NormalizationInlineFragment,
|
|
@@ -61,12 +60,16 @@ export type NetworkResponseValue =
|
|
|
61
60
|
export type NetworkResponseObject = {
|
|
62
61
|
// N.B. undefined is here to support optional id's, but
|
|
63
62
|
// undefined should not *actually* be present in the network response.
|
|
64
|
-
readonly [
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
readonly [key: ScalarNetworkResponseKey]:
|
|
64
|
+
| undefined
|
|
65
|
+
| NetworkResponsePlural<NetworkResponseScalarValue>;
|
|
66
|
+
readonly [key: LinkedNetworkResponseKey]:
|
|
67
|
+
| undefined
|
|
68
|
+
| NetworkResponsePlural<NetworkResponseObject>;
|
|
69
|
+
readonly [key: NetworkResponseKey]:
|
|
70
|
+
| undefined
|
|
71
|
+
| NetworkResponsePlural<NetworkResponseScalarValue>
|
|
72
|
+
| NetworkResponsePlural<NetworkResponseObject>;
|
|
70
73
|
readonly id?: DataId;
|
|
71
74
|
readonly __typename?: TypeName;
|
|
72
75
|
};
|
|
@@ -433,15 +436,20 @@ function normalizeNetworkResponseObject(
|
|
|
433
436
|
return newStoreRecordId;
|
|
434
437
|
}
|
|
435
438
|
|
|
436
|
-
|
|
437
|
-
export type LinkedParentRecordKey = string & {
|
|
438
|
-
brand?: Brand<undefined, typeof LinkedParentRecordKeyBrand>;
|
|
439
|
-
};
|
|
439
|
+
export type ParentRecordKey = string;
|
|
440
440
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
441
|
+
/**
|
|
442
|
+
* these don't actually start with the different prefixes, but they let
|
|
443
|
+
* us use multiple indexes, e.g.
|
|
444
|
+
* {
|
|
445
|
+
* readonly [key: `NOT_AN_ACTUAL_TYPE_LinkedParentRecordKey_${string} `]: ...
|
|
446
|
+
* readonly [key: `NOT_AN_ACTUAL_TYPE_ScalarParentRecordKey_${string} `]: ...
|
|
447
|
+
* }
|
|
448
|
+
*/
|
|
449
|
+
export type LinkedParentRecordKey =
|
|
450
|
+
`NOT_AN_ACTUAL_TYPE_LinkedParentRecordKey_${string}`;
|
|
451
|
+
export type ScalarParentRecordKey =
|
|
452
|
+
`NOT_AN_ACTUAL_TYPE_ScalarParentRecordKey_${string}`;
|
|
445
453
|
|
|
446
454
|
export function getParentRecordKey(
|
|
447
455
|
astNode: NormalizationLinkedField | ReaderLinkedField,
|
|
@@ -458,7 +466,7 @@ export function getParentRecordKey(
|
|
|
458
466
|
| ReaderLinkedField
|
|
459
467
|
| ReaderScalarField,
|
|
460
468
|
variables: Variables,
|
|
461
|
-
):
|
|
469
|
+
): ParentRecordKey {
|
|
462
470
|
let parentRecordKey = astNode.fieldName;
|
|
463
471
|
const fieldParameters = astNode.arguments;
|
|
464
472
|
if (fieldParameters != null) {
|
|
@@ -512,15 +520,20 @@ function getStoreKeyChunkForArgument(argument: Argument, variables: Variables) {
|
|
|
512
520
|
return `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${chunk}`;
|
|
513
521
|
}
|
|
514
522
|
|
|
515
|
-
|
|
516
|
-
export type LinkedNetworkResponseKey = string & {
|
|
517
|
-
brand?: Brand<undefined, typeof LinkedNetworkResponseKeyBrand>;
|
|
518
|
-
};
|
|
523
|
+
export type NetworkResponseKey = string;
|
|
519
524
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
525
|
+
/**
|
|
526
|
+
* these don't actually start with the different prefixes, but they let
|
|
527
|
+
* us use multiple indexes, e.g.
|
|
528
|
+
* {
|
|
529
|
+
* readonly [key: `NOT_AN_ACTUAL_TYPE_LinkedNetworkResponseKey_${string} `]: ...
|
|
530
|
+
* readonly [key: `NOT_AN_ACTUAL_TYPE_ScalarNetworkResponseKey_${string} `]: ...
|
|
531
|
+
* }
|
|
532
|
+
*/
|
|
533
|
+
export type LinkedNetworkResponseKey =
|
|
534
|
+
`NOT_AN_ACTUAL_TYPE_LinkedNetworkResponseKey_${string}`;
|
|
535
|
+
export type ScalarNetworkResponseKey =
|
|
536
|
+
`NOT_AN_ACTUAL_TYPE_ScalarNetworkResponseKey_${string}`;
|
|
524
537
|
|
|
525
538
|
function getNetworkResponseKey(
|
|
526
539
|
astNode: NormalizationLinkedField,
|
|
@@ -530,7 +543,7 @@ function getNetworkResponseKey(
|
|
|
530
543
|
): ScalarNetworkResponseKey;
|
|
531
544
|
function getNetworkResponseKey(
|
|
532
545
|
astNode: NormalizationLinkedField | NormalizationScalarField,
|
|
533
|
-
):
|
|
546
|
+
): NetworkResponseKey {
|
|
534
547
|
let networkResponseKey = astNode.fieldName;
|
|
535
548
|
const fieldParameters = astNode.arguments;
|
|
536
549
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ItemCleanupPair } from '@isograph/
|
|
2
|
-
import type { ParentCache } from '@isograph/
|
|
1
|
+
import type { ItemCleanupPair } from '@isograph/disposable-types';
|
|
2
|
+
import type { ParentCache } from '@isograph/react-disposable-state';
|
|
3
3
|
import {
|
|
4
4
|
type NetworkResponseObject,
|
|
5
5
|
getOrCreateItemInSuspenseCache,
|
package/src/core/writeData.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import type { ItemCleanupPair } from '@isograph/
|
|
2
|
-
import { callSubscriptions } from './subscribe';
|
|
1
|
+
import type { ItemCleanupPair } from '@isograph/disposable-types';
|
|
3
2
|
import {
|
|
4
|
-
type NetworkResponseObject,
|
|
5
3
|
type EncounteredIds,
|
|
4
|
+
type NetworkResponseObject,
|
|
6
5
|
normalizeData,
|
|
7
6
|
} from './cache';
|
|
8
7
|
import type { IsographEntrypoint, NormalizationAst } from './entrypoint';
|
|
9
8
|
import type {
|
|
10
|
-
UnknownTReadFromStore,
|
|
11
9
|
ExtractParameters,
|
|
12
10
|
FragmentReference,
|
|
11
|
+
UnknownTReadFromStore,
|
|
13
12
|
} from './FragmentReference';
|
|
14
13
|
import {
|
|
15
14
|
type IsographEnvironment,
|
|
@@ -19,6 +18,7 @@ import {
|
|
|
19
18
|
import { logMessage } from './logging';
|
|
20
19
|
import { retainQueryWithoutMakingNetworkRequest } from './makeNetworkRequest';
|
|
21
20
|
import { addNetworkResponseStoreLayer } from './optimisticProxy';
|
|
21
|
+
import { callSubscriptions } from './subscribe';
|
|
22
22
|
|
|
23
23
|
export function writeData<
|
|
24
24
|
TReadFromStore extends UnknownTReadFromStore,
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
} from '../core/garbageCollection';
|
|
8
8
|
import { ROOT_ID, type BaseStoreLayerData } from '../core/IsographEnvironment';
|
|
9
9
|
import { wrapResolvedValue } from '../core/PromiseWrapper';
|
|
10
|
+
import { createIsographEnvironment } from '../react/createIsographEnvironment';
|
|
10
11
|
import { meNameSuccessorRetainedQuery } from './meNameSuccessor';
|
|
11
12
|
import { nodeFieldRetainedQuery } from './nodeQuery';
|
|
12
|
-
import { createIsographEnvironment } from '../react/createIsographEnvironment';
|
|
13
13
|
|
|
14
14
|
const getDefaultStore = (): BaseStoreLayerData => ({
|
|
15
15
|
Query: {
|
|
@@ -71,13 +71,13 @@ describe('garbage collection', () => {
|
|
|
71
71
|
null as any,
|
|
72
72
|
);
|
|
73
73
|
|
|
74
|
-
expect(store
|
|
74
|
+
expect(store['Economist']?.[1]).not.toBe(undefined);
|
|
75
75
|
|
|
76
76
|
// TODO enable babel so we don't have to do this
|
|
77
77
|
retainQuery(environment, meNameRetainedQuery);
|
|
78
78
|
garbageCollectEnvironment(environment);
|
|
79
79
|
|
|
80
|
-
expect(store
|
|
80
|
+
expect(store['Economist']?.[1]).toBe(undefined);
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
test('Referenced records should not be garbage collected', () => {
|
|
@@ -88,13 +88,13 @@ describe('garbage collection', () => {
|
|
|
88
88
|
null as any,
|
|
89
89
|
);
|
|
90
90
|
|
|
91
|
-
expect(store
|
|
91
|
+
expect(store['Economist']?.[0]).not.toBe(undefined);
|
|
92
92
|
|
|
93
93
|
// TODO enable babel so we don't have to do this
|
|
94
94
|
retainQuery(environment, meNameRetainedQuery);
|
|
95
95
|
garbageCollectEnvironment(environment);
|
|
96
96
|
|
|
97
|
-
expect(store
|
|
97
|
+
expect(store['Economist']?.[0]).not.toBe(undefined);
|
|
98
98
|
});
|
|
99
99
|
|
|
100
100
|
test('Referenced records should not be garbage collected, and this should work with variables', () => {
|
|
@@ -105,12 +105,12 @@ describe('garbage collection', () => {
|
|
|
105
105
|
null as any,
|
|
106
106
|
);
|
|
107
107
|
|
|
108
|
-
expect(store
|
|
108
|
+
expect(store['Economist']?.[0]).not.toBe(undefined);
|
|
109
109
|
|
|
110
110
|
retainQuery(environment, nodeFieldRetainedQuery);
|
|
111
111
|
garbageCollectEnvironment(environment);
|
|
112
112
|
|
|
113
|
-
expect(store
|
|
113
|
+
expect(store['Economist']?.[0]).not.toBe(undefined);
|
|
114
114
|
});
|
|
115
115
|
|
|
116
116
|
test('Referenced records should not be garbage collected, and this should work through multiple levels', () => {
|
|
@@ -124,9 +124,9 @@ describe('garbage collection', () => {
|
|
|
124
124
|
retainQuery(environment, meNameSuccessorRetainedQuery);
|
|
125
125
|
garbageCollectEnvironment(environment);
|
|
126
126
|
|
|
127
|
-
expect(store
|
|
128
|
-
expect(store
|
|
129
|
-
expect(store
|
|
127
|
+
expect(store['Economist']?.[0]).not.toBe(undefined);
|
|
128
|
+
expect(store['Economist']?.[1]).not.toBe(undefined);
|
|
129
|
+
expect(store['Economist']?.[2]).not.toBe(undefined);
|
|
130
130
|
});
|
|
131
131
|
|
|
132
132
|
test('ROOT_ID should be garbage collected, if there are no retained queries', () => {
|
|
@@ -139,6 +139,6 @@ describe('garbage collection', () => {
|
|
|
139
139
|
garbageCollectEnvironment(environment);
|
|
140
140
|
|
|
141
141
|
expect(store.Query?.[ROOT_ID]).toBe(undefined);
|
|
142
|
-
expect(store
|
|
142
|
+
expect(store['Economist']?.[0]).toBe(undefined);
|
|
143
143
|
});
|
|
144
144
|
});
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from '../core/IsographEnvironment';
|
|
9
9
|
import { normalizeData } from '../core/cache';
|
|
10
10
|
import { getOrCreateCacheForArtifact } from '../core/getOrCreateCacheForArtifact';
|
|
11
|
+
import type { StoreLayer } from '../core/optimisticProxy';
|
|
11
12
|
import {
|
|
12
13
|
readButDoNotEvaluate,
|
|
13
14
|
type WithEncounteredRecords,
|
|
@@ -36,11 +37,18 @@ const normalizeUndefinedFieldEntrypoint = iso(
|
|
|
36
37
|
`entrypoint Query.normalizeUndefinedField`,
|
|
37
38
|
);
|
|
38
39
|
|
|
40
|
+
function getBaseStoreLayer(node: StoreLayer) {
|
|
41
|
+
if (node.kind === 'BaseStoreLayer') {
|
|
42
|
+
return node;
|
|
43
|
+
}
|
|
44
|
+
return getBaseStoreLayer(node.parentStoreLayer);
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
describe('normalize undefined field', () => {
|
|
40
48
|
test('should normalize scalar field to null', () => {
|
|
41
49
|
normalizeData(
|
|
42
50
|
environment,
|
|
43
|
-
environment.store,
|
|
51
|
+
getBaseStoreLayer(environment.store),
|
|
44
52
|
normalizeUndefinedFieldEntrypoint.networkRequestInfo.normalizationAst
|
|
45
53
|
.selections,
|
|
46
54
|
{
|
|
@@ -74,7 +82,7 @@ describe('normalize undefined field', () => {
|
|
|
74
82
|
test('should normalize linked field to null', () => {
|
|
75
83
|
normalizeData(
|
|
76
84
|
environment,
|
|
77
|
-
environment.store,
|
|
85
|
+
getBaseStoreLayer(environment.store),
|
|
78
86
|
normalizeUndefinedFieldEntrypoint.networkRequestInfo.normalizationAst
|
|
79
87
|
.selections,
|
|
80
88
|
{},
|
|
@@ -111,7 +119,7 @@ describe('nested Query', () => {
|
|
|
111
119
|
test('should be normalized', () => {
|
|
112
120
|
normalizeData(
|
|
113
121
|
environment,
|
|
114
|
-
environment.store,
|
|
122
|
+
getBaseStoreLayer(environment.store),
|
|
115
123
|
entrypoint.networkRequestInfo.normalizationAst.selections,
|
|
116
124
|
{
|
|
117
125
|
query: { node____id___v_id: { __typename: 'Economist', id: '1' } },
|
|
@@ -64,7 +64,7 @@ describe('optimisticLayer', () => {
|
|
|
64
64
|
getStoreRecordProxy(environment.store, {
|
|
65
65
|
__link: '__ROOT',
|
|
66
66
|
__typename: 'Query',
|
|
67
|
-
})?.counter,
|
|
67
|
+
})?.['counter'],
|
|
68
68
|
).toBe(4);
|
|
69
69
|
});
|
|
70
70
|
});
|
|
@@ -88,7 +88,7 @@ describe('optimisticLayer', () => {
|
|
|
88
88
|
getStoreRecordProxy(environment.store, {
|
|
89
89
|
__link: '__ROOT',
|
|
90
90
|
__typename: 'Query',
|
|
91
|
-
})?.counter,
|
|
91
|
+
})?.['counter'],
|
|
92
92
|
).toBe(3);
|
|
93
93
|
});
|
|
94
94
|
});
|
|
@@ -103,7 +103,7 @@ describe('optimisticLayer', () => {
|
|
|
103
103
|
getStoreRecordProxy(environment.store, {
|
|
104
104
|
__link: '__ROOT',
|
|
105
105
|
__typename: 'Query',
|
|
106
|
-
})?.counter,
|
|
106
|
+
})?.['counter'],
|
|
107
107
|
).toBe(3);
|
|
108
108
|
});
|
|
109
109
|
});
|
|
@@ -235,7 +235,7 @@ describe('optimisticLayer', () => {
|
|
|
235
235
|
getStoreRecordProxy(environment.store, {
|
|
236
236
|
__link: '__ROOT',
|
|
237
237
|
__typename: 'Query',
|
|
238
|
-
})?.counter,
|
|
238
|
+
})?.['counter'],
|
|
239
239
|
).toBe(5);
|
|
240
240
|
});
|
|
241
241
|
|
|
@@ -256,7 +256,7 @@ describe('optimisticLayer', () => {
|
|
|
256
256
|
getStoreRecordProxy(environment.store, {
|
|
257
257
|
__link: '__ROOT',
|
|
258
258
|
__typename: 'Query',
|
|
259
|
-
})?.counter,
|
|
259
|
+
})?.['counter'],
|
|
260
260
|
).toBe(12);
|
|
261
261
|
});
|
|
262
262
|
|
|
@@ -281,7 +281,7 @@ describe('optimisticLayer', () => {
|
|
|
281
281
|
getStoreRecordProxy(environment.store, {
|
|
282
282
|
__link: '__ROOT',
|
|
283
283
|
__typename: 'Query',
|
|
284
|
-
})?.counter,
|
|
284
|
+
})?.['counter'],
|
|
285
285
|
).toBe(13);
|
|
286
286
|
});
|
|
287
287
|
|
|
@@ -306,7 +306,7 @@ describe('optimisticLayer', () => {
|
|
|
306
306
|
getStoreRecordProxy(environment.store, {
|
|
307
307
|
__link: '__ROOT',
|
|
308
308
|
__typename: 'Query',
|
|
309
|
-
})?.counter,
|
|
309
|
+
})?.['counter'],
|
|
310
310
|
).toBe(16);
|
|
311
311
|
});
|
|
312
312
|
|
|
@@ -330,7 +330,7 @@ describe('optimisticLayer', () => {
|
|
|
330
330
|
getStoreRecordProxy(environment.store, {
|
|
331
331
|
__link: '__ROOT',
|
|
332
332
|
__typename: 'Query',
|
|
333
|
-
})?.counter,
|
|
333
|
+
})?.['counter'],
|
|
334
334
|
).toBe(6);
|
|
335
335
|
});
|
|
336
336
|
});
|
|
@@ -360,7 +360,7 @@ describe('optimisticLayer', () => {
|
|
|
360
360
|
getStoreRecordProxy(environment.store, {
|
|
361
361
|
__link: '__ROOT',
|
|
362
362
|
__typename: 'Query',
|
|
363
|
-
})?.counter,
|
|
363
|
+
})?.['counter'],
|
|
364
364
|
).toBe(12);
|
|
365
365
|
});
|
|
366
366
|
|
|
@@ -387,7 +387,7 @@ describe('optimisticLayer', () => {
|
|
|
387
387
|
getStoreRecordProxy(environment.store, {
|
|
388
388
|
__link: '__ROOT',
|
|
389
389
|
__typename: 'Query',
|
|
390
|
-
})?.counter,
|
|
390
|
+
})?.['counter'],
|
|
391
391
|
).toBe(12);
|
|
392
392
|
});
|
|
393
393
|
|
|
@@ -415,7 +415,7 @@ describe('optimisticLayer', () => {
|
|
|
415
415
|
getStoreRecordProxy(environment.store, {
|
|
416
416
|
__link: '__ROOT',
|
|
417
417
|
__typename: 'Query',
|
|
418
|
-
})?.counter,
|
|
418
|
+
})?.['counter'],
|
|
419
419
|
).toBe(12);
|
|
420
420
|
});
|
|
421
421
|
});
|
|
@@ -444,7 +444,7 @@ describe('optimisticLayer', () => {
|
|
|
444
444
|
getStoreRecordProxy(environment.store, {
|
|
445
445
|
__link: '__ROOT',
|
|
446
446
|
__typename: 'Query',
|
|
447
|
-
})?.counter,
|
|
447
|
+
})?.['counter'],
|
|
448
448
|
).toBe(5);
|
|
449
449
|
});
|
|
450
450
|
test("doesn't merge child nodes if has parent nodes", () => {
|
|
@@ -474,7 +474,7 @@ describe('optimisticLayer', () => {
|
|
|
474
474
|
getStoreRecordProxy(environment.store, {
|
|
475
475
|
__link: '__ROOT',
|
|
476
476
|
__typename: 'Query',
|
|
477
|
-
})?.counter,
|
|
477
|
+
})?.['counter'],
|
|
478
478
|
).toBe(6);
|
|
479
479
|
});
|
|
480
480
|
});
|
|
@@ -541,7 +541,7 @@ describe('optimisticLayer', () => {
|
|
|
541
541
|
getStoreRecordProxy(environment.store, {
|
|
542
542
|
__link: '__ROOT',
|
|
543
543
|
__typename: 'Query',
|
|
544
|
-
})?.counter,
|
|
544
|
+
})?.['counter'],
|
|
545
545
|
).toBe(0);
|
|
546
546
|
});
|
|
547
547
|
|
|
@@ -562,7 +562,7 @@ describe('optimisticLayer', () => {
|
|
|
562
562
|
getStoreRecordProxy(environment.store, {
|
|
563
563
|
__link: '__ROOT',
|
|
564
564
|
__typename: 'Query',
|
|
565
|
-
})?.counter,
|
|
565
|
+
})?.['counter'],
|
|
566
566
|
).toBe(12);
|
|
567
567
|
});
|
|
568
568
|
|
|
@@ -587,7 +587,7 @@ describe('optimisticLayer', () => {
|
|
|
587
587
|
getStoreRecordProxy(environment.store, {
|
|
588
588
|
__link: '__ROOT',
|
|
589
589
|
__typename: 'Query',
|
|
590
|
-
})?.counter,
|
|
590
|
+
})?.['counter'],
|
|
591
591
|
).toBe(13);
|
|
592
592
|
});
|
|
593
593
|
|
|
@@ -612,7 +612,7 @@ describe('optimisticLayer', () => {
|
|
|
612
612
|
getStoreRecordProxy(environment.store, {
|
|
613
613
|
__link: '__ROOT',
|
|
614
614
|
__typename: 'Query',
|
|
615
|
-
})?.counter,
|
|
615
|
+
})?.['counter'],
|
|
616
616
|
).toBe(15);
|
|
617
617
|
});
|
|
618
618
|
|
|
@@ -636,7 +636,7 @@ describe('optimisticLayer', () => {
|
|
|
636
636
|
getStoreRecordProxy(environment.store, {
|
|
637
637
|
__link: '__ROOT',
|
|
638
638
|
__typename: 'Query',
|
|
639
|
-
})?.counter,
|
|
639
|
+
})?.['counter'],
|
|
640
640
|
).toBe(1);
|
|
641
641
|
});
|
|
642
642
|
});
|
|
@@ -666,7 +666,7 @@ describe('optimisticLayer', () => {
|
|
|
666
666
|
getStoreRecordProxy(environment.store, {
|
|
667
667
|
__link: '__ROOT',
|
|
668
668
|
__typename: 'Query',
|
|
669
|
-
})?.counter,
|
|
669
|
+
})?.['counter'],
|
|
670
670
|
).toBe(12);
|
|
671
671
|
});
|
|
672
672
|
|
|
@@ -693,7 +693,7 @@ describe('optimisticLayer', () => {
|
|
|
693
693
|
getStoreRecordProxy(environment.store, {
|
|
694
694
|
__link: '__ROOT',
|
|
695
695
|
__typename: 'Query',
|
|
696
|
-
})?.counter,
|
|
696
|
+
})?.['counter'],
|
|
697
697
|
).toBe(12);
|
|
698
698
|
});
|
|
699
699
|
|
|
@@ -721,7 +721,7 @@ describe('optimisticLayer', () => {
|
|
|
721
721
|
getStoreRecordProxy(environment.store, {
|
|
722
722
|
__link: '__ROOT',
|
|
723
723
|
__typename: 'Query',
|
|
724
|
-
})?.counter,
|
|
724
|
+
})?.['counter'],
|
|
725
725
|
).toBe(12);
|
|
726
726
|
});
|
|
727
727
|
});
|
|
@@ -747,7 +747,7 @@ describe('optimisticLayer', () => {
|
|
|
747
747
|
getStoreRecordProxy(environment.store, {
|
|
748
748
|
__link: '__ROOT',
|
|
749
749
|
__typename: 'Query',
|
|
750
|
-
})?.counter,
|
|
750
|
+
})?.['counter'],
|
|
751
751
|
).toBe(1);
|
|
752
752
|
});
|
|
753
753
|
|
|
@@ -775,7 +775,7 @@ describe('optimisticLayer', () => {
|
|
|
775
775
|
getStoreRecordProxy(environment.store, {
|
|
776
776
|
__link: '__ROOT',
|
|
777
777
|
__typename: 'Query',
|
|
778
|
-
})?.counter,
|
|
778
|
+
})?.['counter'],
|
|
779
779
|
).toBe(2);
|
|
780
780
|
});
|
|
781
781
|
});
|