@isograph/react 0.0.0-main-3de26263 → 0.0.0-main-709dc2bb
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 +9 -2
- package/dist/_virtual/rolldown_runtime.js +25 -0
- package/dist/core/FragmentReference.d.mts +38 -0
- package/dist/core/FragmentReference.d.mts.map +1 -0
- package/dist/core/FragmentReference.d.ts +31 -29
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +7 -5
- package/dist/core/FragmentReference.mjs +10 -0
- package/dist/core/FragmentReference.mjs.map +1 -0
- package/dist/core/IsographEnvironment.d.mts +89 -0
- package/dist/core/IsographEnvironment.d.mts.map +1 -0
- package/dist/core/IsographEnvironment.d.ts +76 -81
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +59 -82
- package/dist/core/IsographEnvironment.mjs +67 -0
- package/dist/core/IsographEnvironment.mjs.map +1 -0
- package/dist/core/PromiseWrapper.d.mts +36 -0
- package/dist/core/PromiseWrapper.d.mts.map +1 -0
- package/dist/core/PromiseWrapper.d.ts +26 -23
- package/dist/core/PromiseWrapper.d.ts.map +1 -1
- package/dist/core/PromiseWrapper.js +45 -43
- package/dist/core/PromiseWrapper.mjs +49 -0
- package/dist/core/PromiseWrapper.mjs.map +1 -0
- package/dist/core/areEqualWithDeepComparison.js +56 -93
- package/dist/core/areEqualWithDeepComparison.mjs +62 -0
- package/dist/core/areEqualWithDeepComparison.mjs.map +1 -0
- package/dist/core/brand.d.mts +19 -0
- package/dist/core/brand.d.mts.map +1 -0
- package/dist/core/brand.d.ts +6 -6
- package/dist/core/brand.d.ts.map +1 -1
- package/dist/core/cache.d.mts +20 -0
- package/dist/core/cache.d.mts.map +1 -0
- package/dist/core/cache.d.ts +18 -24
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +203 -306
- package/dist/core/cache.mjs +237 -0
- package/dist/core/cache.mjs.map +1 -0
- package/dist/core/check.d.mts +28 -0
- package/dist/core/check.d.mts.map +1 -0
- package/dist/core/check.d.ts +21 -19
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +80 -122
- package/dist/core/check.mjs +84 -0
- package/dist/core/check.mjs.map +1 -0
- package/dist/core/componentCache.js +9 -10
- package/dist/core/componentCache.mjs +12 -0
- package/dist/core/componentCache.mjs.map +1 -0
- package/dist/core/entrypoint.d.mts +99 -0
- package/dist/core/entrypoint.d.mts.map +1 -0
- package/dist/core/entrypoint.d.ts +83 -80
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/entrypoint.js +6 -5
- package/dist/core/entrypoint.mjs +8 -0
- package/dist/core/entrypoint.mjs.map +1 -0
- package/dist/core/garbageCollection.d.mts +18 -0
- package/dist/core/garbageCollection.d.mts.map +1 -0
- package/dist/core/garbageCollection.d.ts +15 -16
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +76 -120
- package/dist/core/garbageCollection.mjs +89 -0
- package/dist/core/garbageCollection.mjs.map +1 -0
- package/dist/core/getOrCreateCacheForArtifact.js +35 -38
- package/dist/core/getOrCreateCacheForArtifact.mjs +38 -0
- package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -0
- package/dist/core/logging.d.mts +95 -0
- package/dist/core/logging.d.mts.map +1 -0
- package/dist/core/logging.d.ts +66 -61
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/logging.js +17 -18
- package/dist/core/logging.mjs +20 -0
- package/dist/core/logging.mjs.map +1 -0
- package/dist/core/makeNetworkRequest.d.mts +13 -0
- package/dist/core/makeNetworkRequest.d.mts.map +1 -0
- package/dist/core/makeNetworkRequest.d.ts +12 -10
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +180 -260
- package/dist/core/makeNetworkRequest.mjs +195 -0
- package/dist/core/makeNetworkRequest.mjs.map +1 -0
- package/dist/core/optimisticProxy.d.mts +43 -0
- package/dist/core/optimisticProxy.d.mts.map +1 -0
- package/dist/core/optimisticProxy.d.ts +37 -53
- package/dist/core/optimisticProxy.d.ts.map +1 -1
- package/dist/core/optimisticProxy.js +245 -353
- package/dist/core/optimisticProxy.mjs +268 -0
- package/dist/core/optimisticProxy.mjs.map +1 -0
- package/dist/core/read.d.mts +29 -0
- package/dist/core/read.d.mts.map +1 -0
- package/dist/core/read.d.ts +23 -29
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +435 -634
- package/dist/core/read.mjs +456 -0
- package/dist/core/read.mjs.map +1 -0
- package/dist/core/reader.d.mts +89 -0
- package/dist/core/reader.d.mts.map +1 -0
- package/dist/core/reader.d.ts +78 -79
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.js +115 -149
- package/dist/core/startUpdate.mjs +125 -0
- package/dist/core/startUpdate.mjs.map +1 -0
- package/dist/core/subscribe.d.mts +12 -0
- package/dist/core/subscribe.d.mts.map +1 -0
- package/dist/core/subscribe.d.ts +11 -7
- package/dist/core/subscribe.d.ts.map +1 -1
- package/dist/core/subscribe.js +67 -109
- package/dist/core/subscribe.mjs +79 -0
- package/dist/core/subscribe.mjs.map +1 -0
- package/dist/core/util.d.mts +27 -0
- package/dist/core/util.d.mts.map +1 -0
- package/dist/core/util.d.ts +21 -24
- package/dist/core/util.d.ts.map +1 -1
- package/dist/core/util.js +17 -23
- package/dist/core/util.mjs +21 -0
- package/dist/core/util.mjs.map +1 -0
- package/dist/core/writeData.d.mts +11 -0
- package/dist/core/writeData.d.mts.map +1 -0
- package/dist/core/writeData.d.ts +10 -6
- package/dist/core/writeData.d.ts.map +1 -1
- package/dist/core/writeData.js +39 -34
- package/dist/core/writeData.mjs +42 -0
- package/dist/core/writeData.mjs.map +1 -0
- package/dist/index.d.mts +32 -0
- package/dist/index.d.ts +32 -32
- package/dist/index.js +70 -72
- package/dist/index.mjs +31 -0
- package/dist/loadable-hooks/useClientSideDefer.d.mts +12 -0
- package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -0
- package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -13
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +13 -44
- package/dist/loadable-hooks/useClientSideDefer.mjs +14 -0
- package/dist/loadable-hooks/useClientSideDefer.mjs.map +1 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.mts +33 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +26 -22
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -176
- package/dist/loadable-hooks/useConnectionSpecPagination.mjs +134 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts +8 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +6 -3
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeExposedMutationField.js +9 -12
- package/dist/loadable-hooks/useImperativeExposedMutationField.mjs +11 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.mjs.map +1 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.mts +19 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +15 -11
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.js +16 -12
- package/dist/loadable-hooks/useImperativeLoadableField.mjs +17 -0
- package/dist/loadable-hooks/useImperativeLoadableField.mjs.map +1 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.mts +24 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +19 -15
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +118 -164
- package/dist/loadable-hooks/useSkipLimitPagination.mjs +119 -0
- package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -0
- package/dist/react/FragmentReader.d.mts +18 -0
- package/dist/react/FragmentReader.d.mts.map +1 -0
- package/dist/react/FragmentReader.d.ts +16 -8
- package/dist/react/FragmentReader.d.ts.map +1 -1
- package/dist/react/FragmentReader.js +8 -7
- package/dist/react/FragmentReader.mjs +10 -0
- package/dist/react/FragmentReader.mjs.map +1 -0
- package/dist/react/FragmentRenderer.d.mts +20 -0
- package/dist/react/FragmentRenderer.d.mts.map +1 -0
- package/dist/react/FragmentRenderer.d.ts +18 -14
- package/dist/react/FragmentRenderer.d.ts.map +1 -1
- package/dist/react/FragmentRenderer.js +11 -33
- package/dist/react/FragmentRenderer.mjs +12 -0
- package/dist/react/FragmentRenderer.mjs.map +1 -0
- package/dist/react/IsographEnvironmentProvider.d.mts +17 -0
- package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -0
- package/dist/react/IsographEnvironmentProvider.d.ts +15 -9
- package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
- package/dist/react/IsographEnvironmentProvider.js +15 -39
- package/dist/react/IsographEnvironmentProvider.mjs +17 -0
- package/dist/react/IsographEnvironmentProvider.mjs.map +1 -0
- package/dist/react/LoadableFieldReader.d.mts +21 -0
- package/dist/react/LoadableFieldReader.d.mts.map +1 -0
- package/dist/react/LoadableFieldReader.d.ts +15 -13
- package/dist/react/LoadableFieldReader.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.js +13 -47
- package/dist/react/LoadableFieldReader.mjs +14 -0
- package/dist/react/LoadableFieldReader.mjs.map +1 -0
- package/dist/react/LoadableFieldRenderer.d.mts +22 -0
- package/dist/react/LoadableFieldRenderer.d.mts.map +1 -0
- package/dist/react/LoadableFieldRenderer.d.ts +16 -14
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldRenderer.js +13 -70
- package/dist/react/LoadableFieldRenderer.mjs +14 -0
- package/dist/react/LoadableFieldRenderer.mjs.map +1 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +18 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +11 -3
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -1
- package/dist/react/RenderAfterCommit__DO_NOT_USE.js +17 -13
- package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs +18 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs.map +1 -0
- package/dist/react/createIsographEnvironment.d.mts +9 -0
- package/dist/react/createIsographEnvironment.d.mts.map +1 -0
- package/dist/react/createIsographEnvironment.d.ts +7 -3
- package/dist/react/createIsographEnvironment.d.ts.map +1 -1
- package/dist/react/createIsographEnvironment.js +8 -6
- package/dist/react/createIsographEnvironment.mjs +11 -0
- package/dist/react/createIsographEnvironment.mjs.map +1 -0
- package/dist/react/maybeUnwrapNetworkRequest.js +9 -12
- package/dist/react/maybeUnwrapNetworkRequest.mjs +12 -0
- package/dist/react/maybeUnwrapNetworkRequest.mjs.map +1 -0
- package/dist/react/useImperativeReference.d.mts +15 -0
- package/dist/react/useImperativeReference.d.mts.map +1 -0
- package/dist/react/useImperativeReference.d.ts +13 -11
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +34 -30
- package/dist/react/useImperativeReference.mjs +35 -0
- package/dist/react/useImperativeReference.mjs.map +1 -0
- package/dist/react/useLazyReference.d.mts +13 -0
- package/dist/react/useLazyReference.d.mts.map +1 -0
- package/dist/react/useLazyReference.d.ts +11 -9
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useLazyReference.js +17 -40
- package/dist/react/useLazyReference.mjs +18 -0
- package/dist/react/useLazyReference.mjs.map +1 -0
- package/dist/react/useReadAndSubscribe.d.mts +20 -0
- package/dist/react/useReadAndSubscribe.d.mts.map +1 -0
- package/dist/react/useReadAndSubscribe.d.ts +14 -11
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +54 -63
- package/dist/react/useReadAndSubscribe.mjs +59 -0
- package/dist/react/useReadAndSubscribe.mjs.map +1 -0
- package/dist/react/useRerenderOnChange.d.mts +12 -0
- package/dist/react/useRerenderOnChange.d.mts.map +1 -0
- package/dist/react/useRerenderOnChange.d.ts +10 -6
- package/dist/react/useRerenderOnChange.d.ts.map +1 -1
- package/dist/react/useRerenderOnChange.js +16 -20
- package/dist/react/useRerenderOnChange.mjs +17 -0
- package/dist/react/useRerenderOnChange.mjs.map +1 -0
- package/dist/react/useResult.d.mts +8 -0
- package/dist/react/useResult.d.mts.map +1 -0
- package/dist/react/useResult.d.ts +7 -3
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +27 -30
- package/dist/react/useResult.mjs +30 -0
- package/dist/react/useResult.mjs.map +1 -0
- package/package.json +16 -8
- package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
- package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
- package/dist/core/brand.js +0 -2
- package/dist/core/componentCache.d.ts +0 -5
- package/dist/core/componentCache.d.ts.map +0 -1
- package/dist/core/getOrCreateCacheForArtifact.d.ts +0 -8
- package/dist/core/getOrCreateCacheForArtifact.d.ts.map +0 -1
- package/dist/core/reader.js +0 -2
- package/dist/core/startUpdate.d.ts +0 -9
- package/dist/core/startUpdate.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/react/maybeUnwrapNetworkRequest.d.ts +0 -4
- package/dist/react/maybeUnwrapNetworkRequest.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startUpdate.mjs","names":["mutableUpdatedIds: EncounteredIds","startUpdate: StartUpdateStoreLayer['startUpdate']","value:\n | { kind: 'Set'; value: T; validatedAt: number }\n | {\n kind: 'NotSet';\n }","target: { [index: string]: any }","storeRecord","ast","root"],"sources":["../../src/core/startUpdate.ts"],"sourcesContent":["import {\n getParentRecordKey,\n insertEmptySetIfMissing,\n type EncounteredIds,\n} from './cache';\nimport type { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';\nimport {\n stableIdForFragmentReference,\n type ExtractParameters,\n type ExtractStartUpdate,\n type ExtractUpdatableData,\n type FragmentReference,\n type UnknownTReadFromStore,\n} from './FragmentReference';\nimport {\n assertLink,\n type IsographEnvironment,\n type StoreLink,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport {\n addStartUpdateStoreLayer,\n getMutableStoreRecordProxy,\n getOrInsertRecord,\n type StartUpdateStoreLayer,\n type StoreLayer,\n} from './optimisticProxy';\nimport { readPromise, type PromiseWrapper } from './PromiseWrapper';\nimport {\n readImperativelyLoadedField,\n readLinkedFieldData,\n readLoadablySelectedFieldData,\n readResolverFieldData,\n readScalarFieldData,\n type NetworkRequestReaderOptions,\n type ReadDataResultSuccess,\n} from './read';\nimport type { ReaderAst } from './reader';\nimport { callSubscriptions } from './subscribe';\n\nexport function getOrCreateCachedStartUpdate<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n environment: IsographEnvironment,\n fragmentReference: FragmentReference<TReadFromStore, unknown>,\n networkRequestOptions: NetworkRequestReaderOptions,\n): ExtractStartUpdate<TReadFromStore> {\n return (environment.eagerReaderCache[\n stableIdForFragmentReference(fragmentReference)\n ] ??= createStartUpdate(\n environment,\n fragmentReference,\n networkRequestOptions,\n ));\n}\n\nexport function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(\n environment: IsographEnvironment,\n fragmentReference: FragmentReference<TReadFromStore, unknown>,\n networkRequestOptions: NetworkRequestReaderOptions,\n): ExtractStartUpdate<TReadFromStore> {\n return (updater) => {\n let mutableUpdatedIds: EncounteredIds = new Map();\n\n const startUpdate: StartUpdateStoreLayer['startUpdate'] = (storeLayer) => {\n mutableUpdatedIds.clear();\n let updatableData = createUpdatableProxy(\n environment,\n storeLayer,\n fragmentReference,\n networkRequestOptions,\n mutableUpdatedIds,\n );\n\n try {\n updater({ updatableData });\n } catch (e) {\n logMessage(environment, () => ({\n kind: 'StartUpdateError',\n error: e,\n }));\n throw e;\n }\n };\n\n environment.store = addStartUpdateStoreLayer(\n environment.store,\n startUpdate,\n );\n\n logMessage(environment, () => ({\n kind: 'StartUpdateComplete',\n updatedIds: mutableUpdatedIds,\n }));\n\n callSubscriptions(environment, mutableUpdatedIds);\n };\n}\n\nexport function createUpdatableProxy<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n environment: IsographEnvironment,\n storeLayer: StoreLayer,\n fragmentReference: FragmentReference<TReadFromStore, unknown>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableUpdatedIds: EncounteredIds,\n): ExtractUpdatableData<TReadFromStore> {\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n return readUpdatableData(\n environment,\n storeLayer,\n readerWithRefetchQueries.readerArtifact.readerAst,\n fragmentReference.root,\n fragmentReference.variables ?? {},\n readerWithRefetchQueries.nestedRefetchQueries,\n fragmentReference.networkRequest,\n networkRequestOptions,\n {\n lastInvalidated: 0,\n },\n mutableUpdatedIds,\n ).data;\n}\n\ntype MutableInvalidationState = {\n lastInvalidated: number;\n};\n\nfunction defineCachedProperty<T>(\n target: T,\n property: PropertyKey,\n mutableState: MutableInvalidationState,\n get: () => any,\n set?: (v: any) => void,\n) {\n let value:\n | { kind: 'Set'; value: T; validatedAt: number }\n | {\n kind: 'NotSet';\n } = {\n kind: 'NotSet',\n };\n\n Object.defineProperty(target, property, {\n configurable: false,\n enumerable: true,\n get: () => {\n if (\n value.kind === 'NotSet' ||\n value.validatedAt < mutableState.lastInvalidated\n ) {\n value = {\n kind: 'Set',\n value: get(),\n validatedAt: mutableState.lastInvalidated,\n };\n }\n return value.value;\n },\n ...(set != null && {\n set: (newValue) => {\n set(newValue);\n mutableState.lastInvalidated++;\n },\n }),\n });\n}\n\nfunction readUpdatableData<TReadFromStore extends UnknownTReadFromStore>(\n environment: IsographEnvironment,\n storeLayer: StoreLayer,\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n variables: ExtractParameters<TReadFromStore>,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableState: MutableInvalidationState,\n mutableUpdatedIds: EncounteredIds,\n): ReadDataResultSuccess<ExtractUpdatableData<TReadFromStore>> {\n const storeRecord = getMutableStoreRecordProxy(storeLayer, root);\n let target: { [index: string]: any } = {};\n\n for (const field of ast) {\n switch (field.kind) {\n case 'Scalar': {\n const storeRecordName = getParentRecordKey(field, variables);\n\n defineCachedProperty(\n target,\n field.alias ?? field.fieldName,\n mutableState,\n () => {\n const data = readScalarFieldData(\n field,\n storeRecord,\n root,\n variables,\n );\n if (data.kind === 'MissingData') {\n throw new Error(data.reason);\n }\n return data.data;\n },\n field.isUpdatable\n ? (newValue) => {\n const storeRecord = getOrInsertRecord(storeLayer.data, root);\n storeRecord[storeRecordName] = newValue;\n const updatedIds = insertEmptySetIfMissing(\n mutableUpdatedIds,\n root.__typename,\n );\n updatedIds.add(root.__link);\n }\n : undefined,\n );\n break;\n }\n case 'Linked': {\n const storeRecordName = getParentRecordKey(field, variables);\n defineCachedProperty(\n target,\n field.alias ?? field.fieldName,\n mutableState,\n () => {\n const data = readLinkedFieldData(\n environment,\n field,\n storeRecord,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n (ast, root) =>\n readUpdatableData(\n environment,\n storeLayer,\n ast,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableState,\n mutableUpdatedIds,\n ),\n );\n if (data.kind === 'MissingData') {\n throw new Error(data.reason);\n }\n return data.data;\n },\n 'isUpdatable' in field && field.isUpdatable\n ? (newValue) => {\n const storeRecord = getOrInsertRecord(storeLayer.data, root);\n if (Array.isArray(newValue)) {\n storeRecord[storeRecordName] = newValue.map((node) =>\n assertLink(node?.__link),\n );\n } else {\n storeRecord[storeRecordName] = assertLink(newValue?.__link);\n }\n const updatedIds = insertEmptySetIfMissing(\n mutableUpdatedIds,\n root.__typename,\n );\n updatedIds.add(root.__link);\n }\n : undefined,\n );\n break;\n }\n case 'ImperativelyLoadedField': {\n defineCachedProperty(target, field.alias, mutableState, () => {\n const data = readImperativelyLoadedField(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n new Map(),\n );\n if (data.kind === 'MissingData') {\n throw new Error(data.reason);\n }\n return data.data;\n });\n break;\n }\n case 'Resolver': {\n defineCachedProperty(target, field.alias, mutableState, () => {\n const data = readResolverFieldData(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n new Map(),\n );\n if (data.kind === 'MissingData') {\n throw new Error(data.reason);\n }\n return data.data;\n });\n break;\n }\n case 'LoadablySelectedField': {\n defineCachedProperty(target, field.alias, mutableState, () => {\n const data = readLoadablySelectedFieldData(\n environment,\n field,\n root,\n variables,\n networkRequest,\n networkRequestOptions,\n new Map(),\n );\n if (data.kind === 'MissingData') {\n throw new Error(data.reason);\n }\n return data.data;\n });\n break;\n }\n case 'Link': {\n target[field.alias] = root;\n break;\n }\n }\n }\n\n return {\n kind: 'Success',\n data: target as any,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReaderAst } from "./reader.mjs";
|
|
2
|
+
import { WithEncounteredRecords } from "./read.mjs";
|
|
3
|
+
import { IsographEnvironment } from "./IsographEnvironment.mjs";
|
|
4
|
+
import { FragmentReference, UnknownTReadFromStore } from "./FragmentReference.mjs";
|
|
5
|
+
import { EncounteredIds } from "./cache.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/core/subscribe.d.ts
|
|
8
|
+
declare function subscribe<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<TReadFromStore, any>, callback: (newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): () => void;
|
|
9
|
+
declare function callSubscriptions(environment: IsographEnvironment, recordsEncounteredWhenNormalizing: EncounteredIds): void;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { callSubscriptions, subscribe };
|
|
12
|
+
//# sourceMappingURL=subscribe.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.d.mts","names":[],"sources":["../../src/core/subscribe.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAcgB,iCAAiC,oCAClC,gDACc,uBAAuB,oCAC/B,kBAAkB,+DAEL,uBAAuB,qCAE5C,UAAU;iBAyCP,iBAAA,cACD,wDACsB"}
|
package/dist/core/subscribe.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { ReaderAst } from "./reader.js";
|
|
2
|
+
import { WithEncounteredRecords } from "./read.js";
|
|
3
|
+
import { IsographEnvironment } from "./IsographEnvironment.js";
|
|
4
|
+
import { FragmentReference, UnknownTReadFromStore } from "./FragmentReference.js";
|
|
5
|
+
import { EncounteredIds } from "./cache.js";
|
|
6
|
+
|
|
7
|
+
//#region src/core/subscribe.d.ts
|
|
8
|
+
declare function subscribe<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<TReadFromStore, any>, callback: (newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): () => void;
|
|
9
|
+
declare function callSubscriptions(environment: IsographEnvironment, recordsEncounteredWhenNormalizing: EncounteredIds): void;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { callSubscriptions, subscribe };
|
|
8
12
|
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.d.ts","
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","names":[],"sources":["../../src/core/subscribe.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAcgB,iCAAiC,oCAClC,gDACc,uBAAuB,oCAC/B,kBAAkB,+DAEL,uBAAuB,qCAE5C,UAAU;iBAyCP,iBAAA,cACD,wDACsB"}
|
package/dist/core/subscribe.js
CHANGED
|
@@ -1,121 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const logging_1 = require("./logging");
|
|
7
|
-
const read_1 = require("./read");
|
|
1
|
+
const require_logging = require('./logging.js');
|
|
2
|
+
const require_areEqualWithDeepComparison = require('./areEqualWithDeepComparison.js');
|
|
3
|
+
const require_read = require('./read.js');
|
|
4
|
+
|
|
5
|
+
//#region src/core/subscribe.ts
|
|
8
6
|
function subscribe(environment, encounteredDataAndRecords, fragmentReference, callback, readerAst) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// subscription (i.e. re-render) if the fragment data has changed.
|
|
20
|
-
callSubscriptionIfDataChanged(environment, fragmentSubscription);
|
|
21
|
-
environment.subscriptions.add(fragmentSubscription);
|
|
22
|
-
return () => environment.subscriptions.delete(fragmentSubscription);
|
|
7
|
+
const fragmentSubscription = {
|
|
8
|
+
kind: "FragmentSubscription",
|
|
9
|
+
callback,
|
|
10
|
+
encounteredDataAndRecords,
|
|
11
|
+
fragmentReference,
|
|
12
|
+
readerAst
|
|
13
|
+
};
|
|
14
|
+
callSubscriptionIfDataChanged(environment, fragmentSubscription);
|
|
15
|
+
environment.subscriptions.add(fragmentSubscription);
|
|
16
|
+
return () => environment.subscriptions.delete(fragmentSubscription);
|
|
23
17
|
}
|
|
24
|
-
// Calls to readButDoNotEvaluate can suspend (i.e. throw a promise).
|
|
25
|
-
// Maybe in the future, they will be able to throw errors.
|
|
26
|
-
//
|
|
27
|
-
// That's probably okay to ignore. We don't, however, want to prevent
|
|
28
|
-
// updating other subscriptions if one subscription had missing data.
|
|
29
18
|
function logAnyError(environment, context, f) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
19
|
+
try {
|
|
20
|
+
f();
|
|
21
|
+
} catch (e) {
|
|
22
|
+
require_logging.logMessage(environment, () => ({
|
|
23
|
+
kind: "ErrorEncounteredInWithErrorHandling",
|
|
24
|
+
error: e,
|
|
25
|
+
context
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
40
28
|
}
|
|
41
29
|
function callSubscriptions(environment, recordsEncounteredWhenNormalizing) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
logAnyError(environment, { situation: 'calling AnyRecords callback' }, () => subscription.callback());
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
case 'AnyChangesToRecord': {
|
|
59
|
-
if (((_a = recordsEncounteredWhenNormalizing
|
|
60
|
-
.get(subscription.recordLink.__typename)) === null || _a === void 0 ? void 0 : _a.has(subscription.recordLink.__link)) != null) {
|
|
61
|
-
logAnyError(environment, { situation: 'calling AnyChangesToRecord callback' }, () => subscription.callback());
|
|
62
|
-
}
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}));
|
|
30
|
+
environment.subscriptions.forEach((subscription) => logAnyError(environment, { situation: "calling subscriptions" }, () => {
|
|
31
|
+
switch (subscription.kind) {
|
|
32
|
+
case "FragmentSubscription":
|
|
33
|
+
if (hasOverlappingIds(recordsEncounteredWhenNormalizing, subscription.encounteredDataAndRecords.encounteredRecords)) callSubscriptionIfDataChanged(environment, subscription);
|
|
34
|
+
return;
|
|
35
|
+
case "AnyRecords":
|
|
36
|
+
logAnyError(environment, { situation: "calling AnyRecords callback" }, () => subscription.callback());
|
|
37
|
+
return;
|
|
38
|
+
case "AnyChangesToRecord":
|
|
39
|
+
if (recordsEncounteredWhenNormalizing.get(subscription.recordLink.__typename)?.has(subscription.recordLink.__link) != null) logAnyError(environment, { situation: "calling AnyChangesToRecord callback" }, () => subscription.callback());
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
67
43
|
}
|
|
68
44
|
function callSubscriptionIfDataChanged(environment, subscription) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
(0, logging_1.logMessage)(environment, () => ({
|
|
88
|
-
kind: 'DeepEqualityCheck',
|
|
89
|
-
fragmentReference: subscription.fragmentReference,
|
|
90
|
-
old: subscription.encounteredDataAndRecords.item,
|
|
91
|
-
new: newEncounteredDataAndRecords.item,
|
|
92
|
-
deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item,
|
|
93
|
-
}));
|
|
94
|
-
if (mergedItem !== subscription.encounteredDataAndRecords.item) {
|
|
95
|
-
logAnyError(environment, { situation: 'calling FragmentSubscription callback' }, () => {
|
|
96
|
-
subscription.callback(newEncounteredDataAndRecords);
|
|
97
|
-
});
|
|
98
|
-
subscription.encounteredDataAndRecords = newEncounteredDataAndRecords;
|
|
99
|
-
}
|
|
45
|
+
const newEncounteredDataAndRecords = require_read.readButDoNotEvaluate(environment, subscription.fragmentReference, {
|
|
46
|
+
suspendIfInFlight: false,
|
|
47
|
+
throwOnNetworkError: false
|
|
48
|
+
});
|
|
49
|
+
const mergedItem = require_areEqualWithDeepComparison.mergeObjectsUsingReaderAst(subscription.readerAst, subscription.encounteredDataAndRecords.item, newEncounteredDataAndRecords.item);
|
|
50
|
+
require_logging.logMessage(environment, () => ({
|
|
51
|
+
kind: "DeepEqualityCheck",
|
|
52
|
+
fragmentReference: subscription.fragmentReference,
|
|
53
|
+
old: subscription.encounteredDataAndRecords.item,
|
|
54
|
+
new: newEncounteredDataAndRecords.item,
|
|
55
|
+
deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item
|
|
56
|
+
}));
|
|
57
|
+
if (mergedItem !== subscription.encounteredDataAndRecords.item) {
|
|
58
|
+
logAnyError(environment, { situation: "calling FragmentSubscription callback" }, () => {
|
|
59
|
+
subscription.callback(newEncounteredDataAndRecords);
|
|
60
|
+
});
|
|
61
|
+
subscription.encounteredDataAndRecords = newEncounteredDataAndRecords;
|
|
62
|
+
}
|
|
100
63
|
}
|
|
101
64
|
function hasOverlappingIds(ids1, ids2) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return false;
|
|
65
|
+
for (const [typeName, set1] of ids1.entries()) {
|
|
66
|
+
const set2 = ids2.get(typeName);
|
|
67
|
+
if (set2 === void 0) continue;
|
|
68
|
+
if (isNotDisjointFrom(set1, set2)) return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
112
71
|
}
|
|
113
|
-
// TODO use a polyfill library
|
|
114
72
|
function isNotDisjointFrom(set1, set2) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return false;
|
|
73
|
+
for (const id of set1) if (set2.has(id)) return true;
|
|
74
|
+
return false;
|
|
121
75
|
}
|
|
76
|
+
|
|
77
|
+
//#endregion
|
|
78
|
+
exports.callSubscriptions = callSubscriptions;
|
|
79
|
+
exports.subscribe = subscribe;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { logMessage } from "./logging.mjs";
|
|
2
|
+
import { mergeObjectsUsingReaderAst } from "./areEqualWithDeepComparison.mjs";
|
|
3
|
+
import { readButDoNotEvaluate } from "./read.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/core/subscribe.ts
|
|
6
|
+
function subscribe(environment, encounteredDataAndRecords, fragmentReference, callback, readerAst) {
|
|
7
|
+
const fragmentSubscription = {
|
|
8
|
+
kind: "FragmentSubscription",
|
|
9
|
+
callback,
|
|
10
|
+
encounteredDataAndRecords,
|
|
11
|
+
fragmentReference,
|
|
12
|
+
readerAst
|
|
13
|
+
};
|
|
14
|
+
callSubscriptionIfDataChanged(environment, fragmentSubscription);
|
|
15
|
+
environment.subscriptions.add(fragmentSubscription);
|
|
16
|
+
return () => environment.subscriptions.delete(fragmentSubscription);
|
|
17
|
+
}
|
|
18
|
+
function logAnyError(environment, context, f) {
|
|
19
|
+
try {
|
|
20
|
+
f();
|
|
21
|
+
} catch (e) {
|
|
22
|
+
logMessage(environment, () => ({
|
|
23
|
+
kind: "ErrorEncounteredInWithErrorHandling",
|
|
24
|
+
error: e,
|
|
25
|
+
context
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function callSubscriptions(environment, recordsEncounteredWhenNormalizing) {
|
|
30
|
+
environment.subscriptions.forEach((subscription) => logAnyError(environment, { situation: "calling subscriptions" }, () => {
|
|
31
|
+
switch (subscription.kind) {
|
|
32
|
+
case "FragmentSubscription":
|
|
33
|
+
if (hasOverlappingIds(recordsEncounteredWhenNormalizing, subscription.encounteredDataAndRecords.encounteredRecords)) callSubscriptionIfDataChanged(environment, subscription);
|
|
34
|
+
return;
|
|
35
|
+
case "AnyRecords":
|
|
36
|
+
logAnyError(environment, { situation: "calling AnyRecords callback" }, () => subscription.callback());
|
|
37
|
+
return;
|
|
38
|
+
case "AnyChangesToRecord":
|
|
39
|
+
if (recordsEncounteredWhenNormalizing.get(subscription.recordLink.__typename)?.has(subscription.recordLink.__link) != null) logAnyError(environment, { situation: "calling AnyChangesToRecord callback" }, () => subscription.callback());
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
function callSubscriptionIfDataChanged(environment, subscription) {
|
|
45
|
+
const newEncounteredDataAndRecords = readButDoNotEvaluate(environment, subscription.fragmentReference, {
|
|
46
|
+
suspendIfInFlight: false,
|
|
47
|
+
throwOnNetworkError: false
|
|
48
|
+
});
|
|
49
|
+
const mergedItem = mergeObjectsUsingReaderAst(subscription.readerAst, subscription.encounteredDataAndRecords.item, newEncounteredDataAndRecords.item);
|
|
50
|
+
logMessage(environment, () => ({
|
|
51
|
+
kind: "DeepEqualityCheck",
|
|
52
|
+
fragmentReference: subscription.fragmentReference,
|
|
53
|
+
old: subscription.encounteredDataAndRecords.item,
|
|
54
|
+
new: newEncounteredDataAndRecords.item,
|
|
55
|
+
deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item
|
|
56
|
+
}));
|
|
57
|
+
if (mergedItem !== subscription.encounteredDataAndRecords.item) {
|
|
58
|
+
logAnyError(environment, { situation: "calling FragmentSubscription callback" }, () => {
|
|
59
|
+
subscription.callback(newEncounteredDataAndRecords);
|
|
60
|
+
});
|
|
61
|
+
subscription.encounteredDataAndRecords = newEncounteredDataAndRecords;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function hasOverlappingIds(ids1, ids2) {
|
|
65
|
+
for (const [typeName, set1] of ids1.entries()) {
|
|
66
|
+
const set2 = ids2.get(typeName);
|
|
67
|
+
if (set2 === void 0) continue;
|
|
68
|
+
if (isNotDisjointFrom(set1, set2)) return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
function isNotDisjointFrom(set1, set2) {
|
|
73
|
+
for (const id of set1) if (set2.has(id)) return true;
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
//#endregion
|
|
78
|
+
export { callSubscriptions, subscribe };
|
|
79
|
+
//# sourceMappingURL=subscribe.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.mjs","names":["fragmentSubscription: FragmentSubscription<TReadFromStore>"],"sources":["../../src/core/subscribe.ts"],"sourcesContent":["import { mergeObjectsUsingReaderAst } from './areEqualWithDeepComparison';\nimport type { EncounteredIds } from './cache';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n} from './FragmentReference';\nimport type {\n FragmentSubscription,\n IsographEnvironment,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport { type WithEncounteredRecords, readButDoNotEvaluate } from './read';\nimport type { ReaderAst } from './reader';\n\nexport function subscribe<TReadFromStore extends UnknownTReadFromStore>(\n environment: IsographEnvironment,\n encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>,\n fragmentReference: FragmentReference<TReadFromStore, any>,\n callback: (\n newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>,\n ) => void,\n readerAst: ReaderAst<TReadFromStore>,\n): () => void {\n const fragmentSubscription: FragmentSubscription<TReadFromStore> = {\n kind: 'FragmentSubscription',\n callback,\n encounteredDataAndRecords,\n fragmentReference,\n readerAst,\n };\n\n // subscribe is called in an effect. (We should actually subscribe during the\n // initial render.) Because it's called in an effect, we might have missed some\n // changes since the initial render! So, at this point, we re-read and call the\n // subscription (i.e. re-render) if the fragment data has changed.\n callSubscriptionIfDataChanged(environment, fragmentSubscription);\n\n environment.subscriptions.add(fragmentSubscription);\n return () => environment.subscriptions.delete(fragmentSubscription);\n}\n\n// Calls to readButDoNotEvaluate can suspend (i.e. throw a promise).\n// Maybe in the future, they will be able to throw errors.\n//\n// That's probably okay to ignore. We don't, however, want to prevent\n// updating other subscriptions if one subscription had missing data.\nfunction logAnyError(\n environment: IsographEnvironment,\n context: any,\n f: () => void,\n) {\n try {\n f();\n } catch (e) {\n logMessage(environment, () => ({\n kind: 'ErrorEncounteredInWithErrorHandling',\n error: e,\n context,\n }));\n }\n}\n\nexport function callSubscriptions(\n environment: IsographEnvironment,\n recordsEncounteredWhenNormalizing: EncounteredIds,\n) {\n environment.subscriptions.forEach((subscription) =>\n logAnyError(environment, { situation: 'calling subscriptions' }, () => {\n switch (subscription.kind) {\n case 'FragmentSubscription': {\n // TODO if there are multiple components subscribed to the same\n // fragment, we will call readButNotEvaluate multiple times. We\n // should fix that.\n if (\n hasOverlappingIds(\n recordsEncounteredWhenNormalizing,\n subscription.encounteredDataAndRecords.encounteredRecords,\n )\n ) {\n callSubscriptionIfDataChanged(environment, subscription);\n }\n return;\n }\n case 'AnyRecords': {\n logAnyError(\n environment,\n { situation: 'calling AnyRecords callback' },\n () => subscription.callback(),\n );\n return;\n }\n case 'AnyChangesToRecord': {\n if (\n recordsEncounteredWhenNormalizing\n .get(subscription.recordLink.__typename)\n ?.has(subscription.recordLink.__link) != null\n ) {\n logAnyError(\n environment,\n { situation: 'calling AnyChangesToRecord callback' },\n () => subscription.callback(),\n );\n }\n return;\n }\n }\n }),\n );\n}\n\nfunction callSubscriptionIfDataChanged<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n environment: IsographEnvironment,\n subscription: FragmentSubscription<TReadFromStore>,\n) {\n const newEncounteredDataAndRecords = readButDoNotEvaluate(\n environment,\n subscription.fragmentReference,\n // Is this wrong?\n // Reasons to think no:\n // - we are only updating the read-out value, and the network\n // options only affect whether we throw.\n // - the component will re-render, and re-throw on its own, anyway.\n //\n // Reasons to think not:\n // - it seems more efficient to suspend here and not update state,\n // if we expect that the component will just throw anyway\n // - consistency\n // - it's also weird, this is called from makeNetworkRequest, where\n // we don't currently pass network request options\n {\n suspendIfInFlight: false,\n throwOnNetworkError: false,\n },\n );\n\n const mergedItem = mergeObjectsUsingReaderAst(\n subscription.readerAst,\n subscription.encounteredDataAndRecords.item,\n newEncounteredDataAndRecords.item,\n );\n\n logMessage(environment, () => ({\n kind: 'DeepEqualityCheck',\n fragmentReference: subscription.fragmentReference,\n old: subscription.encounteredDataAndRecords.item,\n new: newEncounteredDataAndRecords.item,\n deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item,\n }));\n\n if (mergedItem !== subscription.encounteredDataAndRecords.item) {\n logAnyError(\n environment,\n { situation: 'calling FragmentSubscription callback' },\n () => {\n subscription.callback(newEncounteredDataAndRecords);\n },\n );\n subscription.encounteredDataAndRecords = newEncounteredDataAndRecords;\n }\n}\n\nfunction hasOverlappingIds(\n ids1: EncounteredIds,\n ids2: EncounteredIds,\n): boolean {\n for (const [typeName, set1] of ids1.entries()) {\n const set2 = ids2.get(typeName);\n if (set2 === undefined) {\n continue;\n }\n\n if (isNotDisjointFrom(set1, set2)) {\n return true;\n }\n }\n return false;\n}\n\n// TODO use a polyfill library\nfunction isNotDisjointFrom<T>(set1: Set<T>, set2: Set<T>): boolean {\n for (const id of set1) {\n if (set2.has(id)) {\n return true;\n }\n }\n return false;\n}\n"],"mappings":";;;;;AAcA,SAAgB,UACd,aACA,2BACA,mBACA,UAGA,WACY;CACZ,MAAMA,uBAA6D;EACjE,MAAM;EACN;EACA;EACA;EACA;EACD;AAMD,+BAA8B,aAAa,qBAAqB;AAEhE,aAAY,cAAc,IAAI,qBAAqB;AACnD,cAAa,YAAY,cAAc,OAAO,qBAAqB;;AAQrE,SAAS,YACP,aACA,SACA,GACA;AACA,KAAI;AACF,KAAG;UACI,GAAG;AACV,aAAW,oBAAoB;GAC7B,MAAM;GACN,OAAO;GACP;GACD,EAAE;;;AAIP,SAAgB,kBACd,aACA,mCACA;AACA,aAAY,cAAc,SAAS,iBACjC,YAAY,aAAa,EAAE,WAAW,yBAAyB,QAAQ;AACrE,UAAQ,aAAa,MAArB;GACE,KAAK;AAIH,QACE,kBACE,mCACA,aAAa,0BAA0B,mBACxC,CAED,+BAA8B,aAAa,aAAa;AAE1D;GAEF,KAAK;AACH,gBACE,aACA,EAAE,WAAW,+BAA+B,QACtC,aAAa,UAAU,CAC9B;AACD;GAEF,KAAK;AACH,QACE,kCACG,IAAI,aAAa,WAAW,WAAW,EACtC,IAAI,aAAa,WAAW,OAAO,IAAI,KAE3C,aACE,aACA,EAAE,WAAW,uCAAuC,QAC9C,aAAa,UAAU,CAC9B;AAEH;;GAGJ,CACH;;AAGH,SAAS,8BAGP,aACA,cACA;CACA,MAAM,+BAA+B,qBACnC,aACA,aAAa,mBAab;EACE,mBAAmB;EACnB,qBAAqB;EACtB,CACF;CAED,MAAM,aAAa,2BACjB,aAAa,WACb,aAAa,0BAA0B,MACvC,6BAA6B,KAC9B;AAED,YAAW,oBAAoB;EAC7B,MAAM;EACN,mBAAmB,aAAa;EAChC,KAAK,aAAa,0BAA0B;EAC5C,KAAK,6BAA6B;EAClC,aAAa,eAAe,aAAa,0BAA0B;EACpE,EAAE;AAEH,KAAI,eAAe,aAAa,0BAA0B,MAAM;AAC9D,cACE,aACA,EAAE,WAAW,yCAAyC,QAChD;AACJ,gBAAa,SAAS,6BAA6B;IAEtD;AACD,eAAa,4BAA4B;;;AAI7C,SAAS,kBACP,MACA,MACS;AACT,MAAK,MAAM,CAAC,UAAU,SAAS,KAAK,SAAS,EAAE;EAC7C,MAAM,OAAO,KAAK,IAAI,SAAS;AAC/B,MAAI,SAAS,OACX;AAGF,MAAI,kBAAkB,MAAM,KAAK,CAC/B,QAAO;;AAGX,QAAO;;AAIT,SAAS,kBAAqB,MAAc,MAAuB;AACjE,MAAK,MAAM,MAAM,KACf,KAAI,KAAK,IAAI,GAAG,CACd,QAAO;AAGX,QAAO"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/core/util.d.ts
|
|
4
|
+
type ExtractSecondParam<T extends (arg1: any, arg2: any) => any> = T extends ((arg1: any, arg2: infer P) => any) ? P : never;
|
|
5
|
+
type CombineWithIntrinsicAttributes<T> = T extends Record<PropertyKey, never> ? React.JSX.IntrinsicAttributes : T & React.JSX.IntrinsicAttributes;
|
|
6
|
+
type Arguments = Argument[];
|
|
7
|
+
type Argument = [ArgumentName, ArgumentValue];
|
|
8
|
+
type ArgumentName = string;
|
|
9
|
+
type ArgumentValue = {
|
|
10
|
+
readonly kind: 'Variable';
|
|
11
|
+
readonly name: string;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'Literal';
|
|
14
|
+
readonly value: any;
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: 'String';
|
|
17
|
+
readonly value: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: 'Enum';
|
|
20
|
+
readonly value: string;
|
|
21
|
+
} | {
|
|
22
|
+
readonly kind: 'Object';
|
|
23
|
+
readonly value: Arguments;
|
|
24
|
+
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { Argument, ArgumentName, ArgumentValue, Arguments, CombineWithIntrinsicAttributes, ExtractSecondParam };
|
|
27
|
+
//# sourceMappingURL=util.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.mts","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,QAAA;EACR,SAAA,KAAA,EAAY,MAAA;AACxB,CAAA,GAAY;;;;;kBAmBU"}
|
package/dist/core/util.d.ts
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/core/util.d.ts
|
|
4
|
+
type ExtractSecondParam<T extends (arg1: any, arg2: any) => any> = T extends ((arg1: any, arg2: infer P) => any) ? P : never;
|
|
5
|
+
type CombineWithIntrinsicAttributes<T> = T extends Record<PropertyKey, never> ? React.JSX.IntrinsicAttributes : T & React.JSX.IntrinsicAttributes;
|
|
6
|
+
type Arguments = Argument[];
|
|
7
|
+
type Argument = [ArgumentName, ArgumentValue];
|
|
8
|
+
type ArgumentName = string;
|
|
9
|
+
type ArgumentValue = {
|
|
10
|
+
readonly kind: 'Variable';
|
|
11
|
+
readonly name: string;
|
|
10
12
|
} | {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
readonly kind: 'Literal';
|
|
14
|
+
readonly value: any;
|
|
13
15
|
} | {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
readonly kind: 'String';
|
|
17
|
+
readonly value: string;
|
|
16
18
|
} | {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
readonly kind: 'Enum';
|
|
20
|
+
readonly value: string;
|
|
19
21
|
} | {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
readonly kind: 'Object';
|
|
23
|
+
readonly value: Arguments;
|
|
22
24
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* Creates a copy of the provided value, ensuring any nested objects have their
|
|
26
|
-
* keys sorted such that equivalent values would have identical JSON.stringify
|
|
27
|
-
* results.
|
|
28
|
-
*/
|
|
29
|
-
export declare function stableCopy<T>(value: T): T;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { Argument, ArgumentName, ArgumentValue, Arguments, CombineWithIntrinsicAttributes, ExtractSecondParam };
|
|
30
27
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/core/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","
|
|
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,QAAA;EACR,SAAA,KAAA,EAAY,MAAA;AACxB,CAAA,GAAY;;;;;kBAmBU"}
|
package/dist/core/util.js
CHANGED
|
@@ -1,28 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.isArray = isArray;
|
|
4
|
-
exports.stableCopy = stableCopy;
|
|
1
|
+
|
|
2
|
+
//#region src/core/util.ts
|
|
5
3
|
function isArray(value) {
|
|
6
|
-
|
|
4
|
+
return Array.isArray(value);
|
|
7
5
|
}
|
|
8
6
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
* Creates a copy of the provided value, ensuring any nested objects have their
|
|
8
|
+
* keys sorted such that equivalent values would have identical JSON.stringify
|
|
9
|
+
* results.
|
|
10
|
+
*/
|
|
13
11
|
function stableCopy(value) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
const keys = Object.keys(value).sort();
|
|
22
|
-
const stable = {};
|
|
23
|
-
for (let i = 0; i < keys.length; i++) {
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
stable[keys[i]] = stableCopy(value[keys[i]]);
|
|
26
|
-
}
|
|
27
|
-
return stable;
|
|
12
|
+
if (value == null || typeof value !== "object") return value;
|
|
13
|
+
if (isArray(value)) return value.map(stableCopy);
|
|
14
|
+
const keys = Object.keys(value).sort();
|
|
15
|
+
const stable = {};
|
|
16
|
+
for (let i = 0; i < keys.length; i++) stable[keys[i]] = stableCopy(value[keys[i]]);
|
|
17
|
+
return stable;
|
|
28
18
|
}
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.isArray = isArray;
|
|
22
|
+
exports.stableCopy = stableCopy;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/core/util.ts
|
|
2
|
+
function isArray(value) {
|
|
3
|
+
return Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Creates a copy of the provided value, ensuring any nested objects have their
|
|
7
|
+
* keys sorted such that equivalent values would have identical JSON.stringify
|
|
8
|
+
* results.
|
|
9
|
+
*/
|
|
10
|
+
function stableCopy(value) {
|
|
11
|
+
if (value == null || typeof value !== "object") return value;
|
|
12
|
+
if (isArray(value)) return value.map(stableCopy);
|
|
13
|
+
const keys = Object.keys(value).sort();
|
|
14
|
+
const stable = {};
|
|
15
|
+
for (let i = 0; i < keys.length; i++) stable[keys[i]] = stableCopy(value[keys[i]]);
|
|
16
|
+
return stable;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { isArray, stableCopy };
|
|
21
|
+
//# sourceMappingURL=util.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.mjs","names":["stable: { [index: string]: any }"],"sources":["../../src/core/util.ts"],"sourcesContent":["import type React from 'react';\n\nexport type ExtractSecondParam<T extends (arg1: any, arg2: any) => any> =\n T extends (arg1: any, arg2: infer P) => any ? P : never;\nexport type CombineWithIntrinsicAttributes<T> =\n T extends Record<PropertyKey, never>\n ? React.JSX.IntrinsicAttributes\n : T & React.JSX.IntrinsicAttributes;\n\nexport type Arguments = Argument[];\nexport type Argument = [ArgumentName, ArgumentValue];\nexport type ArgumentName = string;\nexport type ArgumentValue =\n | {\n readonly kind: 'Variable';\n readonly name: string;\n }\n | {\n readonly kind: 'Literal';\n readonly value: any;\n }\n | {\n readonly kind: 'String';\n readonly value: string;\n }\n | {\n readonly kind: 'Enum';\n readonly value: string;\n }\n | {\n readonly kind: 'Object';\n readonly value: Arguments;\n };\n\nexport function isArray(value: unknown): value is readonly unknown[] {\n return Array.isArray(value);\n}\n\n/**\n * Creates a copy of the provided value, ensuring any nested objects have their\n * keys sorted such that equivalent values would have identical JSON.stringify\n * results.\n */\nexport function stableCopy<T>(value: T): T {\n if (value == null || typeof value !== 'object') {\n return value;\n }\n if (isArray(value)) {\n // @ts-ignore\n return value.map(stableCopy);\n }\n const keys = Object.keys(value).sort();\n const stable: { [index: string]: any } = {};\n for (let i = 0; i < keys.length; i++) {\n // @ts-ignore\n stable[keys[i]] = stableCopy(value[keys[i]]);\n }\n return stable as any;\n}\n"],"mappings":";AAkCA,SAAgB,QAAQ,OAA6C;AACnE,QAAO,MAAM,QAAQ,MAAM;;;;;;;AAQ7B,SAAgB,WAAc,OAAa;AACzC,KAAI,SAAS,QAAQ,OAAO,UAAU,SACpC,QAAO;AAET,KAAI,QAAQ,MAAM,CAEhB,QAAO,MAAM,IAAI,WAAW;CAE9B,MAAM,OAAO,OAAO,KAAK,MAAM,CAAC,MAAM;CACtC,MAAMA,SAAmC,EAAE;AAC3C,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAE/B,QAAO,KAAK,MAAM,WAAW,MAAM,KAAK,IAAI;AAE9C,QAAO"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IsographEnvironment } from "./IsographEnvironment.mjs";
|
|
2
|
+
import { ExtractParameters, FragmentReference, UnknownTReadFromStore } from "./FragmentReference.mjs";
|
|
3
|
+
import { NetworkResponseObject } from "./cache.mjs";
|
|
4
|
+
import { IsographEntrypoint, NormalizationAst } from "./entrypoint.mjs";
|
|
5
|
+
import { ItemCleanupPair } from "@isograph/isograph-disposable-types/dist";
|
|
6
|
+
|
|
7
|
+
//#region src/core/writeData.d.ts
|
|
8
|
+
declare function writeData<TReadFromStore extends UnknownTReadFromStore, TRawResponseType extends NetworkResponseObject, TClientFieldValue>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue, NormalizationAst, TRawResponseType>, data: TRawResponseType, variables: ExtractParameters<TReadFromStore>): ItemCleanupPair<FragmentReference<TReadFromStore, TClientFieldValue>>;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { writeData };
|
|
11
|
+
//# sourceMappingURL=writeData.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeData.d.mts","names":[],"sources":["../../src/core/writeData.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAsBgB,iCACS,gDACE,uDAGZ,iCACD,mBACV,gBACA,mBACA,kBACA,yBAEI,6BACK,kBAAkB,kBAC5B,gBAAgB,kBAAkB,gBAAgB"}
|
package/dist/core/writeData.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { IsographEnvironment } from "./IsographEnvironment.js";
|
|
2
|
+
import { ExtractParameters, FragmentReference, UnknownTReadFromStore } from "./FragmentReference.js";
|
|
3
|
+
import { NetworkResponseObject } from "./cache.js";
|
|
4
|
+
import { IsographEntrypoint, NormalizationAst } from "./entrypoint.js";
|
|
5
|
+
import { ItemCleanupPair } from "@isograph/isograph-disposable-types/dist";
|
|
6
|
+
|
|
7
|
+
//#region src/core/writeData.d.ts
|
|
8
|
+
declare function writeData<TReadFromStore extends UnknownTReadFromStore, TRawResponseType extends NetworkResponseObject, TClientFieldValue>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue, NormalizationAst, TRawResponseType>, data: TRawResponseType, variables: ExtractParameters<TReadFromStore>): ItemCleanupPair<FragmentReference<TReadFromStore, TClientFieldValue>>;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { writeData };
|
|
7
11
|
//# sourceMappingURL=writeData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeData.d.ts","
|
|
1
|
+
{"version":3,"file":"writeData.d.ts","names":[],"sources":["../../src/core/writeData.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAsBgB,iCACS,gDACE,uDAGZ,iCACD,mBACV,gBACA,mBACA,kBACA,yBAEI,6BACK,kBAAkB,kBAC5B,gBAAgB,kBAAkB,gBAAgB"}
|