@graphitation/apollo-react-relay-duct-tape 1.4.33 → 1.4.34

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/.eslintcache CHANGED
@@ -1 +1 @@
1
- [{"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/hooks.test.tsx":"1","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/useOverridenOrDefaultApolloClient.test.tsx":"2","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/convertFetchPolicy.ts":"3","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/hooks.ts":"4","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/index.ts":"5","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/compiledHooks.test.tsx":"6","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/fragmentReferencesFieldPolicy.test.ts":"7","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/getPossibleTypesAndDataIdFromNode.test.ts":"8","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/nodeFromCacheFieldPolicy.test.ts":"9","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/index.ts":"10","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/types.ts":"11","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledFragment.ts":"12","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledLazyLoadQuery.ts":"13","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledPaginationFragment.ts":"14","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts":"15","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useDeepCompareMemoize.ts":"16","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useForceUpdate.ts":"17","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/fragmentReferencesFieldPolicy.ts":"18","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/getPossibleTypesAndDataIdFromNode.ts":"19","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/index.ts":"20","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/nodeFromCacheFieldPolicy.ts":"21","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/shallowCompareFragmentReferences.ts":"22","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/typePolicies.ts":"23","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/types.ts":"24","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/useOverridenOrDefaultApolloClient.ts":"25"},{"size":11649,"mtime":1773943218691,"results":"26","hashOfConfig":"27"},{"size":1922,"mtime":1773943218691,"results":"28","hashOfConfig":"27"},{"size":690,"mtime":1773943218691,"results":"29","hashOfConfig":"27"},{"size":12373,"mtime":1773943218691,"results":"30","hashOfConfig":"27"},{"size":174,"mtime":1773943218691,"results":"31","hashOfConfig":"27"},{"size":48808,"mtime":1773943218693,"results":"32","hashOfConfig":"27"},{"size":1839,"mtime":1773943218693,"results":"33","hashOfConfig":"27"},{"size":1709,"mtime":1773943218693,"results":"34","hashOfConfig":"27"},{"size":3041,"mtime":1773943218693,"results":"35","hashOfConfig":"27"},{"size":445,"mtime":1773943218694,"results":"36","hashOfConfig":"27"},{"size":575,"mtime":1773943218694,"results":"37","hashOfConfig":"27"},{"size":3668,"mtime":1773943218694,"results":"38","hashOfConfig":"27"},{"size":4126,"mtime":1773943218694,"results":"39","hashOfConfig":"27"},{"size":10521,"mtime":1773943218694,"results":"40","hashOfConfig":"27"},{"size":5548,"mtime":1773943218694,"results":"41","hashOfConfig":"27"},{"size":843,"mtime":1773943218694,"results":"42","hashOfConfig":"27"},{"size":152,"mtime":1773943218694,"results":"43","hashOfConfig":"27"},{"size":286,"mtime":1773943218694,"results":"44","hashOfConfig":"27"},{"size":1243,"mtime":1773943218694,"results":"45","hashOfConfig":"27"},{"size":230,"mtime":1773943218694,"results":"46","hashOfConfig":"27"},{"size":2829,"mtime":1773943218694,"results":"47","hashOfConfig":"27"},{"size":2325,"mtime":1773943218695,"results":"48","hashOfConfig":"27"},{"size":1110,"mtime":1773943218695,"results":"49","hashOfConfig":"27"},{"size":2069,"mtime":1773943218695,"results":"50","hashOfConfig":"27"},{"size":1352,"mtime":1773943218695,"results":"51","hashOfConfig":"27"},{"filePath":"52","messages":"53","suppressedMessages":"54","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"xo3mzo",{"filePath":"55","messages":"56","suppressedMessages":"57","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"58","messages":"59","suppressedMessages":"60","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"61","messages":"62","suppressedMessages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"64","messages":"65","suppressedMessages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"67","messages":"68","suppressedMessages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","suppressedMessages":"72","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"73","messages":"74","suppressedMessages":"75","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"76","messages":"77","suppressedMessages":"78","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"79","messages":"80","suppressedMessages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"82","messages":"83","suppressedMessages":"84","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"85","messages":"86","suppressedMessages":"87","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"88","messages":"89","suppressedMessages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"91","messages":"92","suppressedMessages":"93","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"94","messages":"95","suppressedMessages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"97","messages":"98","suppressedMessages":"99","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","suppressedMessages":"102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"103","messages":"104","suppressedMessages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","suppressedMessages":"108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"109","messages":"110","suppressedMessages":"111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"112","messages":"113","suppressedMessages":"114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"115","messages":"116","suppressedMessages":"117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"118","messages":"119","suppressedMessages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"121","messages":"122","suppressedMessages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","suppressedMessages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/hooks.test.tsx",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/useOverridenOrDefaultApolloClient.test.tsx",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/convertFetchPolicy.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/hooks.ts",[],["127"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/index.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/compiledHooks.test.tsx",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/fragmentReferencesFieldPolicy.test.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/getPossibleTypesAndDataIdFromNode.test.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/nodeFromCacheFieldPolicy.test.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/index.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/types.ts",[],["128"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledFragment.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledLazyLoadQuery.ts",[],["129"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledPaginationFragment.ts",[],["130","131","132","133","134"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts",[],["135"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useDeepCompareMemoize.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useForceUpdate.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/fragmentReferencesFieldPolicy.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/getPossibleTypesAndDataIdFromNode.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/index.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/nodeFromCacheFieldPolicy.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/shallowCompareFragmentReferences.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/typePolicies.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/types.ts",[],["136","137"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/useOverridenOrDefaultApolloClient.ts",[],["138"],{"ruleId":"139","severity":1,"message":"140","line":320,"column":38,"nodeType":"141","messageId":"142","endLine":320,"endColumn":41,"suggestions":"143","suppressions":"144"},{"ruleId":"139","severity":1,"message":"140","line":16,"column":32,"nodeType":"141","messageId":"142","endLine":16,"endColumn":35,"suggestions":"145","suppressions":"146"},{"ruleId":"139","severity":1,"message":"140","line":104,"column":28,"nodeType":"141","messageId":"142","endLine":104,"endColumn":31,"suggestions":"147","suppressions":"148"},{"ruleId":"139","severity":1,"message":"140","line":174,"column":24,"nodeType":"141","messageId":"142","endLine":174,"endColumn":27,"suggestions":"149","suppressions":"150"},{"ruleId":"139","severity":1,"message":"140","line":177,"column":4,"nodeType":"141","messageId":"142","endLine":177,"endColumn":7,"suggestions":"151","suppressions":"152"},{"ruleId":"139","severity":1,"message":"140","line":179,"column":30,"nodeType":"141","messageId":"142","endLine":179,"endColumn":33,"suggestions":"153","suppressions":"154"},{"ruleId":"139","severity":1,"message":"140","line":189,"column":24,"nodeType":"141","messageId":"142","endLine":189,"endColumn":27,"suggestions":"155","suppressions":"156"},{"ruleId":"139","severity":1,"message":"140","line":225,"column":9,"nodeType":"141","messageId":"142","endLine":225,"endColumn":12,"suggestions":"157","suppressions":"158"},{"ruleId":"139","severity":1,"message":"140","line":38,"column":26,"nodeType":"141","messageId":"142","endLine":38,"endColumn":29,"suggestions":"159","suppressions":"160"},{"ruleId":"139","severity":1,"message":"140","line":5,"column":19,"nodeType":"141","messageId":"142","endLine":5,"endColumn":22,"suggestions":"161","suppressions":"162"},{"ruleId":"139","severity":1,"message":"140","line":10,"column":19,"nodeType":"141","messageId":"142","endLine":10,"endColumn":22,"suggestions":"163","suppressions":"164"},{"ruleId":"139","severity":1,"message":"140","line":17,"column":51,"nodeType":"141","messageId":"142","endLine":17,"endColumn":54,"suggestions":"165","suppressions":"166"},"@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["167","168"],["169"],["170","171"],["172"],["173","174"],["175"],["176","177"],["178"],["179","180"],["181"],["182","183"],["184"],["185","186"],["187"],["188","189"],["190"],["191","192"],["193"],["194","195"],["196"],["197","198"],["199"],["200","201"],["202"],{"messageId":"203","fix":"204","desc":"205"},{"messageId":"206","fix":"207","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"211","desc":"205"},{"messageId":"206","fix":"212","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"213","desc":"205"},{"messageId":"206","fix":"214","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"215","desc":"205"},{"messageId":"206","fix":"216","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"217","desc":"205"},{"messageId":"206","fix":"218","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"219","desc":"205"},{"messageId":"206","fix":"220","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"221","desc":"205"},{"messageId":"206","fix":"222","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"223","desc":"205"},{"messageId":"206","fix":"224","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"225","desc":"205"},{"messageId":"206","fix":"226","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"227","desc":"205"},{"messageId":"206","fix":"228","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"229","desc":"205"},{"messageId":"206","fix":"230","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"231","desc":"205"},{"messageId":"206","fix":"232","desc":"208"},{"kind":"209","justification":"210"},"suggestUnknown",{"range":"233","text":"234"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"233","text":"235"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.","directive","",{"range":"236","text":"234"},{"range":"236","text":"235"},{"range":"237","text":"234"},{"range":"237","text":"235"},{"range":"238","text":"234"},{"range":"238","text":"235"},{"range":"239","text":"234"},{"range":"239","text":"235"},{"range":"240","text":"234"},{"range":"240","text":"235"},{"range":"241","text":"234"},{"range":"241","text":"235"},{"range":"242","text":"234"},{"range":"242","text":"235"},{"range":"243","text":"234"},{"range":"243","text":"235"},{"range":"244","text":"234"},{"range":"244","text":"235"},{"range":"245","text":"234"},{"range":"245","text":"235"},{"range":"246","text":"234"},{"range":"246","text":"235"},[11748,11751],"unknown","never",[567,570],[3065,3068],[5868,5871],[5969,5972],[6069,6072],[6358,6361],[7422,7425],[1283,1286],[158,161],[276,279],[460,463]]
1
+ [{"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/hooks.test.tsx":"1","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/useOverridenOrDefaultApolloClient.test.tsx":"2","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/convertFetchPolicy.ts":"3","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/hooks.ts":"4","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/index.ts":"5","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/compiledHooks.test.tsx":"6","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/fragmentReferencesFieldPolicy.test.ts":"7","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/getPossibleTypesAndDataIdFromNode.test.ts":"8","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/nodeFromCacheFieldPolicy.test.ts":"9","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/index.ts":"10","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/types.ts":"11","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledFragment.ts":"12","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledLazyLoadQuery.ts":"13","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledPaginationFragment.ts":"14","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts":"15","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useDeepCompareMemoize.ts":"16","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useForceUpdate.ts":"17","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/fragmentReferencesFieldPolicy.ts":"18","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/getPossibleTypesAndDataIdFromNode.ts":"19","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/index.ts":"20","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/nodeFromCacheFieldPolicy.ts":"21","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/shallowCompareFragmentReferences.ts":"22","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/typePolicies.ts":"23","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/types.ts":"24","/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/useOverridenOrDefaultApolloClient.ts":"25"},{"size":11649,"mtime":1774018667109,"results":"26","hashOfConfig":"27"},{"size":1922,"mtime":1774018667110,"results":"28","hashOfConfig":"27"},{"size":690,"mtime":1774018667110,"results":"29","hashOfConfig":"27"},{"size":12373,"mtime":1774018667110,"results":"30","hashOfConfig":"27"},{"size":174,"mtime":1774018667110,"results":"31","hashOfConfig":"27"},{"size":50014,"mtime":1774018667111,"results":"32","hashOfConfig":"27"},{"size":1839,"mtime":1774018667111,"results":"33","hashOfConfig":"27"},{"size":1709,"mtime":1774018667111,"results":"34","hashOfConfig":"27"},{"size":3041,"mtime":1774018667111,"results":"35","hashOfConfig":"27"},{"size":445,"mtime":1774018667111,"results":"36","hashOfConfig":"27"},{"size":575,"mtime":1774018667111,"results":"37","hashOfConfig":"27"},{"size":3668,"mtime":1774018667111,"results":"38","hashOfConfig":"27"},{"size":4126,"mtime":1774018667112,"results":"39","hashOfConfig":"27"},{"size":10546,"mtime":1774018667112,"results":"40","hashOfConfig":"27"},{"size":5905,"mtime":1774018667112,"results":"41","hashOfConfig":"27"},{"size":843,"mtime":1774018667112,"results":"42","hashOfConfig":"27"},{"size":152,"mtime":1774018667112,"results":"43","hashOfConfig":"27"},{"size":286,"mtime":1774018667112,"results":"44","hashOfConfig":"27"},{"size":1243,"mtime":1774018667112,"results":"45","hashOfConfig":"27"},{"size":230,"mtime":1774018667112,"results":"46","hashOfConfig":"27"},{"size":2829,"mtime":1774018667112,"results":"47","hashOfConfig":"27"},{"size":2325,"mtime":1774018667112,"results":"48","hashOfConfig":"27"},{"size":1110,"mtime":1774018667112,"results":"49","hashOfConfig":"27"},{"size":2069,"mtime":1774018667112,"results":"50","hashOfConfig":"27"},{"size":1352,"mtime":1774018667112,"results":"51","hashOfConfig":"27"},{"filePath":"52","messages":"53","suppressedMessages":"54","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"xo3mzo",{"filePath":"55","messages":"56","suppressedMessages":"57","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"58","messages":"59","suppressedMessages":"60","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"61","messages":"62","suppressedMessages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"64","messages":"65","suppressedMessages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"67","messages":"68","suppressedMessages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","suppressedMessages":"72","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"73","messages":"74","suppressedMessages":"75","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"76","messages":"77","suppressedMessages":"78","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"79","messages":"80","suppressedMessages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"82","messages":"83","suppressedMessages":"84","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"85","messages":"86","suppressedMessages":"87","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"88","messages":"89","suppressedMessages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"91","messages":"92","suppressedMessages":"93","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"94","messages":"95","suppressedMessages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"97","messages":"98","suppressedMessages":"99","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","suppressedMessages":"102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"103","messages":"104","suppressedMessages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","suppressedMessages":"108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"109","messages":"110","suppressedMessages":"111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"112","messages":"113","suppressedMessages":"114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"115","messages":"116","suppressedMessages":"117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"118","messages":"119","suppressedMessages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"121","messages":"122","suppressedMessages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","suppressedMessages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/hooks.test.tsx",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/__tests__/useOverridenOrDefaultApolloClient.test.tsx",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/convertFetchPolicy.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/hooks.ts",[],["127"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/index.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/compiledHooks.test.tsx",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/fragmentReferencesFieldPolicy.test.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/getPossibleTypesAndDataIdFromNode.test.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/__tests__/nodeFromCacheFieldPolicy.test.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/index.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/types.ts",[],["128"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledFragment.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledLazyLoadQuery.ts",[],["129"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledPaginationFragment.ts",[],["130","131","132","133","134"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts",[],["135"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useDeepCompareMemoize.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/compiledHooks/useForceUpdate.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/fragmentReferencesFieldPolicy.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/getPossibleTypesAndDataIdFromNode.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/index.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/nodeFromCacheFieldPolicy.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/shallowCompareFragmentReferences.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/storeObservation/typePolicies.ts",[],[],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/types.ts",[],["136","137"],"/mnt/vss/_work/1/s/packages/apollo-react-relay-duct-tape/src/useOverridenOrDefaultApolloClient.ts",[],["138"],{"ruleId":"139","severity":1,"message":"140","line":320,"column":38,"nodeType":"141","messageId":"142","endLine":320,"endColumn":41,"suggestions":"143","suppressions":"144"},{"ruleId":"139","severity":1,"message":"140","line":16,"column":32,"nodeType":"141","messageId":"142","endLine":16,"endColumn":35,"suggestions":"145","suppressions":"146"},{"ruleId":"139","severity":1,"message":"140","line":104,"column":28,"nodeType":"141","messageId":"142","endLine":104,"endColumn":31,"suggestions":"147","suppressions":"148"},{"ruleId":"139","severity":1,"message":"140","line":174,"column":24,"nodeType":"141","messageId":"142","endLine":174,"endColumn":27,"suggestions":"149","suppressions":"150"},{"ruleId":"139","severity":1,"message":"140","line":177,"column":4,"nodeType":"141","messageId":"142","endLine":177,"endColumn":7,"suggestions":"151","suppressions":"152"},{"ruleId":"139","severity":1,"message":"140","line":179,"column":30,"nodeType":"141","messageId":"142","endLine":179,"endColumn":33,"suggestions":"153","suppressions":"154"},{"ruleId":"139","severity":1,"message":"140","line":189,"column":24,"nodeType":"141","messageId":"142","endLine":189,"endColumn":27,"suggestions":"155","suppressions":"156"},{"ruleId":"139","severity":1,"message":"140","line":225,"column":9,"nodeType":"141","messageId":"142","endLine":225,"endColumn":12,"suggestions":"157","suppressions":"158"},{"ruleId":"139","severity":1,"message":"140","line":48,"column":26,"nodeType":"141","messageId":"142","endLine":48,"endColumn":29,"suggestions":"159","suppressions":"160"},{"ruleId":"139","severity":1,"message":"140","line":5,"column":19,"nodeType":"141","messageId":"142","endLine":5,"endColumn":22,"suggestions":"161","suppressions":"162"},{"ruleId":"139","severity":1,"message":"140","line":10,"column":19,"nodeType":"141","messageId":"142","endLine":10,"endColumn":22,"suggestions":"163","suppressions":"164"},{"ruleId":"139","severity":1,"message":"140","line":17,"column":51,"nodeType":"141","messageId":"142","endLine":17,"endColumn":54,"suggestions":"165","suppressions":"166"},"@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["167","168"],["169"],["170","171"],["172"],["173","174"],["175"],["176","177"],["178"],["179","180"],["181"],["182","183"],["184"],["185","186"],["187"],["188","189"],["190"],["191","192"],["193"],["194","195"],["196"],["197","198"],["199"],["200","201"],["202"],{"messageId":"203","fix":"204","desc":"205"},{"messageId":"206","fix":"207","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"211","desc":"205"},{"messageId":"206","fix":"212","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"213","desc":"205"},{"messageId":"206","fix":"214","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"215","desc":"205"},{"messageId":"206","fix":"216","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"217","desc":"205"},{"messageId":"206","fix":"218","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"219","desc":"205"},{"messageId":"206","fix":"220","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"221","desc":"205"},{"messageId":"206","fix":"222","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"223","desc":"205"},{"messageId":"206","fix":"224","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"225","desc":"205"},{"messageId":"206","fix":"226","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"227","desc":"205"},{"messageId":"206","fix":"228","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"229","desc":"205"},{"messageId":"206","fix":"230","desc":"208"},{"kind":"209","justification":"210"},{"messageId":"203","fix":"231","desc":"205"},{"messageId":"206","fix":"232","desc":"208"},{"kind":"209","justification":"210"},"suggestUnknown",{"range":"233","text":"234"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"233","text":"235"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.","directive","",{"range":"236","text":"234"},{"range":"236","text":"235"},{"range":"237","text":"234"},{"range":"237","text":"235"},{"range":"238","text":"234"},{"range":"238","text":"235"},{"range":"239","text":"234"},{"range":"239","text":"235"},{"range":"240","text":"234"},{"range":"240","text":"235"},{"range":"241","text":"234"},{"range":"241","text":"235"},{"range":"242","text":"234"},{"range":"242","text":"235"},{"range":"243","text":"234"},{"range":"243","text":"235"},{"range":"244","text":"234"},{"range":"244","text":"235"},{"range":"245","text":"234"},{"range":"245","text":"235"},{"range":"246","text":"234"},{"range":"246","text":"235"},[11748,11751],"unknown","never",[567,570],[3065,3068],[5893,5896],[5994,5997],[6094,6097],[6383,6386],[7447,7450],[1601,1604],[158,161],[276,279],[460,463]]
package/CHANGELOG.md CHANGED
@@ -1,12 +1,20 @@
1
1
  # Change Log - @graphitation/apollo-react-relay-duct-tape
2
2
 
3
- <!-- This log was last generated on Thu, 19 Mar 2026 18:11:42 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Fri, 20 Mar 2026 15:11:14 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 1.4.34
8
+
9
+ Fri, 20 Mar 2026 15:11:14 GMT
10
+
11
+ ### Patches
12
+
13
+ - Align pagination/refetch completion callback option with Relay by supporting `onComplete` and keeping `onCompleted` as a deprecated alias. (vikaskumar@microsoft.com)
14
+
7
15
  ## 1.4.33
8
16
 
9
- Thu, 19 Mar 2026 18:11:42 GMT
17
+ Thu, 19 Mar 2026 18:12:21 GMT
10
18
 
11
19
  ### Patches
12
20
 
@@ -82,7 +82,7 @@ function useLoadMore({
82
82
  const refetchOptions = {
83
83
  fetchPolicy: "no-cache",
84
84
  UNSTABLE_onCompletedWithData: (error, data) => {
85
- var _a2;
85
+ var _a2, _b;
86
86
  setIsLoadingMore(false);
87
87
  if (!error) {
88
88
  (0, import_invariant.default)(
@@ -126,7 +126,7 @@ function useLoadMore({
126
126
  data: newCacheData
127
127
  });
128
128
  }
129
- (_a2 = options == null ? void 0 : options.onCompleted) == null ? void 0 : _a2.call(options, error);
129
+ (_b = (_a2 = options == null ? void 0 : options.onComplete) != null ? _a2 : options == null ? void 0 : options.onCompleted) == null ? void 0 : _b(error);
130
130
  }
131
131
  };
132
132
  const disposable = refetch(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/storeObservation/compiledHooks/useCompiledPaginationFragment.ts"],
4
- "sourcesContent": ["import { useState, useCallback, useRef } from \"react\";\nimport { ApolloCache, DataProxy } from \"@apollo/client\";\nimport invariant from \"invariant\";\nimport { useCompiledRefetchableFragment } from \"./useCompiledRefetchableFragment\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { FragmentReference } from \"./types\";\nimport type {\n RefetchFn,\n Disposable,\n PrivateRefetchOptions,\n RefetchOptions,\n} from \"./useCompiledRefetchableFragment\";\nimport type {\n CompiledArtefactModule,\n Metadata,\n} from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { DocumentNode } from \"graphql\";\nimport { Variables } from \"../../types\";\nimport { merge } from \"lodash\";\n\nexport type PaginationFn = (\n count: number,\n options?: RefetchOptions,\n) => Disposable;\n\ninterface PaginationParams {\n fragmentReference: FragmentReference;\n refetch: RefetchFn;\n latestVariablesUsedByStandaloneRefetch: Partial<Variables>;\n metadata: Metadata;\n executionQueryDocument: DocumentNode;\n cache: ApolloCache<unknown>;\n countVariable: string | undefined;\n cursorVariable: string | undefined;\n connectionSelectionPath: string[];\n cursorValue: string | undefined;\n updater: <T>(existing: T[], incoming: T[]) => T[];\n}\n\nfunction useLoadMore({\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n updater,\n}: PaginationParams): [loadPage: PaginationFn, isLoadingMore: boolean] {\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const loadPage = useCallback<PaginationFn>(\n (countValue, options) => {\n invariant(\n countVariable,\n \"usePaginationFragment(): Expected a count variable to exist\",\n );\n invariant(\n cursorVariable,\n \"usePaginationFragment(): Expected a cursor variable to exist\",\n );\n invariant(\n cursorValue,\n \"usePaginationFragment(): Expected a cursor value to exist\",\n );\n const previousVariables = {\n ...merge(\n {},\n metadata.connection?.filterVariableDefaults,\n latestVariablesUsedByStandaloneRefetch,\n fragmentReference.__fragments,\n ),\n id: fragmentReference.id,\n };\n const newVariables = {\n ...previousVariables,\n [countVariable]: countValue,\n [cursorVariable]: cursorValue,\n };\n const refetchOptions: PrivateRefetchOptions = {\n fetchPolicy: \"no-cache\",\n UNSTABLE_onCompletedWithData: (error, data) => {\n // NOTE: We can do this now already, because `refetch` wraps the\n // onCompleted callback in a batchedUpdates callback.\n setIsLoadingMore(false);\n\n if (!error) {\n invariant(\n data,\n \"usePaginationFragment(): Expected to have response data\",\n );\n const newData = metadata.rootSelection\n ? data[metadata.rootSelection]\n : data;\n const mainFragment = metadata.mainFragment;\n invariant(\n mainFragment,\n \"usePaginationFragment(): Expected mainFragment metadata\",\n );\n const cacheSelector: DataProxy.Fragment<unknown, object> = {\n // TODO: If we're dropping default Apollo Cache keys, we can probably just do the below\n id: fragmentReference.id as string,\n // id: cache.identify({\n // __typename: mainFragment.typeCondition,\n // id: fragmentReference.id as StoreValue,\n // }),\n variables: previousVariables,\n fragmentName: mainFragment.name,\n // Create new document with operation filtered out.\n fragment: {\n kind: \"Document\",\n definitions: executionQueryDocument.definitions.filter(\n (def) => def.kind === \"FragmentDefinition\",\n ),\n },\n };\n /**\n * Note: Even though we already have the latest data from the\n * useCompiledFragment hook, we can't really use that as it may contain\n * __fragments fields and we don't want to write those to the cache. If\n * we figure out a way from a field-policy's merge function to not write\n * to the cache, then that would be preferable.\n */\n const existingData = cache.readFragment(cacheSelector);\n invariant(existingData, \"Expected existing data\");\n const newCacheData = mergeEdges(\n connectionSelectionPath,\n newData,\n existingData,\n updater,\n );\n cache.writeFragment({\n ...cacheSelector,\n variables: newVariables,\n data: newCacheData,\n });\n }\n\n options?.onCompleted?.(error);\n },\n };\n // TODO: Measure if invoking `refetch` leads to React updates and if it\n // makes sense to wrap it and the following setIsLoadingMore(true)\n // call in a batchedUpdates callback.\n const disposable = refetch(\n newVariables,\n refetchOptions as RefetchOptions,\n );\n setIsLoadingMore(true);\n return disposable;\n },\n [\n fragmentReference.id,\n fragmentReference.__fragments,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n ],\n );\n return [loadPage, isLoadingMore];\n}\n\nfunction getValueAtSelectionPath(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let object: Record<string, any> = data;\n selectionPath.forEach((field) => {\n object = object[field];\n invariant(object, \"Expected path to connection in response to exist\");\n });\n return object;\n}\n\nfunction getPageInfo(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n): {\n startCursor?: string;\n endCursor?: string;\n hasPreviousPage?: boolean;\n hasNextPage?: boolean;\n} {\n const object = getValueAtSelectionPath(data, selectionPath);\n const pageInfo = object.pageInfo;\n invariant(pageInfo, \"Expected to find the connection's page info object\");\n return pageInfo;\n}\n\nfunction mergeEdges(\n connectionPath: string[],\n destination: object,\n source: object,\n updater: <T>(existing: T[], incoming: T[]) => T[],\n) {\n const edgesPath = [...connectionPath, \"edges\"];\n const existingEdges = getValueAtSelectionPath(source, edgesPath);\n const newEdges = getValueAtSelectionPath(destination, edgesPath);\n const allEdges = updater(existingEdges, newEdges);\n\n const connection = getValueAtSelectionPath(destination, connectionPath);\n connection[\"edges\"] = allEdges;\n\n return destination;\n}\n\nexport function useCompiledPaginationFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n loadNext: PaginationFn;\n loadPrevious: PaginationFn;\n hasNext: boolean;\n hasPrevious: boolean;\n isLoadingNext: boolean;\n isLoadingPrevious: boolean;\n refetch: RefetchFn;\n} {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"usePaginationFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"usePaginationFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `usePaginationFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n const connectionMetadata = metadata.connection;\n invariant(\n connectionMetadata,\n \"usePaginationFragment: Expected fragment `%s` to include a \" +\n \"connection when using `usePaginationFragment`. Did you forget to add a @connection \" +\n \"directive to the connection field in the fragment?\",\n metadata.mainFragment.name,\n );\n const [data, refetch] = useCompiledRefetchableFragment(\n documents,\n fragmentReference,\n );\n\n // Consumers might want to not only use loadNext/loadPrevious with pagination fragment but also standalone refetch,\n // for example to change the variables that decide on connection filtering. To make sure that loadNext/loadPrevious\n // respects the variables used by standalone refetch, we store them in a ref and pass them to useLoadMore.\n const latestVariablesUsedByStandaloneRefetch = useRef({});\n const storeVariablesAndRefetch = useCallback<RefetchFn>(\n (variables: Partial<Variables>, options?: RefetchOptions) => {\n latestVariablesUsedByStandaloneRefetch.current = variables;\n return refetch(variables, options);\n },\n [refetch],\n );\n\n const commonPaginationParams = {\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch:\n latestVariablesUsedByStandaloneRefetch.current,\n metadata,\n executionQueryDocument,\n cache: useOverridenOrDefaultApolloClient().cache,\n connectionSelectionPath: connectionMetadata.selectionPath,\n };\n const pageInfo = getPageInfo(data, connectionMetadata.selectionPath);\n const [loadNext, isLoadingNext] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.forwardCountVariable,\n cursorVariable: connectionMetadata.forwardCursorVariable,\n cursorValue: pageInfo?.endCursor,\n updater: (existing, incoming) => [...existing, ...incoming],\n });\n const [loadPrevious, isLoadingPrevious] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.backwardCountVariable,\n cursorVariable: connectionMetadata.backwardCursorVariable,\n cursorValue: pageInfo?.startCursor,\n updater: (existing, incoming) => [...incoming, ...existing],\n });\n return {\n data,\n refetch: storeVariablesAndRefetch,\n hasNext: !!pageInfo?.hasNextPage,\n hasPrevious: !!pageInfo?.hasPreviousPage,\n isLoadingNext,\n isLoadingPrevious,\n loadNext,\n loadPrevious,\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useState, useCallback, useRef } from \"react\";\nimport { ApolloCache, DataProxy } from \"@apollo/client\";\nimport invariant from \"invariant\";\nimport { useCompiledRefetchableFragment } from \"./useCompiledRefetchableFragment\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { FragmentReference } from \"./types\";\nimport type {\n RefetchFn,\n Disposable,\n PrivateRefetchOptions,\n RefetchOptions,\n} from \"./useCompiledRefetchableFragment\";\nimport type {\n CompiledArtefactModule,\n Metadata,\n} from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { DocumentNode } from \"graphql\";\nimport { Variables } from \"../../types\";\nimport { merge } from \"lodash\";\n\nexport type PaginationFn = (\n count: number,\n options?: RefetchOptions,\n) => Disposable;\n\ninterface PaginationParams {\n fragmentReference: FragmentReference;\n refetch: RefetchFn;\n latestVariablesUsedByStandaloneRefetch: Partial<Variables>;\n metadata: Metadata;\n executionQueryDocument: DocumentNode;\n cache: ApolloCache<unknown>;\n countVariable: string | undefined;\n cursorVariable: string | undefined;\n connectionSelectionPath: string[];\n cursorValue: string | undefined;\n updater: <T>(existing: T[], incoming: T[]) => T[];\n}\n\nfunction useLoadMore({\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n updater,\n}: PaginationParams): [loadPage: PaginationFn, isLoadingMore: boolean] {\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const loadPage = useCallback<PaginationFn>(\n (countValue, options) => {\n invariant(\n countVariable,\n \"usePaginationFragment(): Expected a count variable to exist\",\n );\n invariant(\n cursorVariable,\n \"usePaginationFragment(): Expected a cursor variable to exist\",\n );\n invariant(\n cursorValue,\n \"usePaginationFragment(): Expected a cursor value to exist\",\n );\n const previousVariables = {\n ...merge(\n {},\n metadata.connection?.filterVariableDefaults,\n latestVariablesUsedByStandaloneRefetch,\n fragmentReference.__fragments,\n ),\n id: fragmentReference.id,\n };\n const newVariables = {\n ...previousVariables,\n [countVariable]: countValue,\n [cursorVariable]: cursorValue,\n };\n const refetchOptions: PrivateRefetchOptions = {\n fetchPolicy: \"no-cache\",\n UNSTABLE_onCompletedWithData: (error, data) => {\n // NOTE: We can do this now already, because `refetch` wraps the\n // onCompleted callback in a batchedUpdates callback.\n setIsLoadingMore(false);\n\n if (!error) {\n invariant(\n data,\n \"usePaginationFragment(): Expected to have response data\",\n );\n const newData = metadata.rootSelection\n ? data[metadata.rootSelection]\n : data;\n const mainFragment = metadata.mainFragment;\n invariant(\n mainFragment,\n \"usePaginationFragment(): Expected mainFragment metadata\",\n );\n const cacheSelector: DataProxy.Fragment<unknown, object> = {\n // TODO: If we're dropping default Apollo Cache keys, we can probably just do the below\n id: fragmentReference.id as string,\n // id: cache.identify({\n // __typename: mainFragment.typeCondition,\n // id: fragmentReference.id as StoreValue,\n // }),\n variables: previousVariables,\n fragmentName: mainFragment.name,\n // Create new document with operation filtered out.\n fragment: {\n kind: \"Document\",\n definitions: executionQueryDocument.definitions.filter(\n (def) => def.kind === \"FragmentDefinition\",\n ),\n },\n };\n /**\n * Note: Even though we already have the latest data from the\n * useCompiledFragment hook, we can't really use that as it may contain\n * __fragments fields and we don't want to write those to the cache. If\n * we figure out a way from a field-policy's merge function to not write\n * to the cache, then that would be preferable.\n */\n const existingData = cache.readFragment(cacheSelector);\n invariant(existingData, \"Expected existing data\");\n const newCacheData = mergeEdges(\n connectionSelectionPath,\n newData,\n existingData,\n updater,\n );\n cache.writeFragment({\n ...cacheSelector,\n variables: newVariables,\n data: newCacheData,\n });\n }\n\n (options?.onComplete ?? options?.onCompleted)?.(error);\n },\n };\n // TODO: Measure if invoking `refetch` leads to React updates and if it\n // makes sense to wrap it and the following setIsLoadingMore(true)\n // call in a batchedUpdates callback.\n const disposable = refetch(\n newVariables,\n refetchOptions as RefetchOptions,\n );\n setIsLoadingMore(true);\n return disposable;\n },\n [\n fragmentReference.id,\n fragmentReference.__fragments,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n ],\n );\n return [loadPage, isLoadingMore];\n}\n\nfunction getValueAtSelectionPath(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let object: Record<string, any> = data;\n selectionPath.forEach((field) => {\n object = object[field];\n invariant(object, \"Expected path to connection in response to exist\");\n });\n return object;\n}\n\nfunction getPageInfo(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n): {\n startCursor?: string;\n endCursor?: string;\n hasPreviousPage?: boolean;\n hasNextPage?: boolean;\n} {\n const object = getValueAtSelectionPath(data, selectionPath);\n const pageInfo = object.pageInfo;\n invariant(pageInfo, \"Expected to find the connection's page info object\");\n return pageInfo;\n}\n\nfunction mergeEdges(\n connectionPath: string[],\n destination: object,\n source: object,\n updater: <T>(existing: T[], incoming: T[]) => T[],\n) {\n const edgesPath = [...connectionPath, \"edges\"];\n const existingEdges = getValueAtSelectionPath(source, edgesPath);\n const newEdges = getValueAtSelectionPath(destination, edgesPath);\n const allEdges = updater(existingEdges, newEdges);\n\n const connection = getValueAtSelectionPath(destination, connectionPath);\n connection[\"edges\"] = allEdges;\n\n return destination;\n}\n\nexport function useCompiledPaginationFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n loadNext: PaginationFn;\n loadPrevious: PaginationFn;\n hasNext: boolean;\n hasPrevious: boolean;\n isLoadingNext: boolean;\n isLoadingPrevious: boolean;\n refetch: RefetchFn;\n} {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"usePaginationFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"usePaginationFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `usePaginationFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n const connectionMetadata = metadata.connection;\n invariant(\n connectionMetadata,\n \"usePaginationFragment: Expected fragment `%s` to include a \" +\n \"connection when using `usePaginationFragment`. Did you forget to add a @connection \" +\n \"directive to the connection field in the fragment?\",\n metadata.mainFragment.name,\n );\n const [data, refetch] = useCompiledRefetchableFragment(\n documents,\n fragmentReference,\n );\n\n // Consumers might want to not only use loadNext/loadPrevious with pagination fragment but also standalone refetch,\n // for example to change the variables that decide on connection filtering. To make sure that loadNext/loadPrevious\n // respects the variables used by standalone refetch, we store them in a ref and pass them to useLoadMore.\n const latestVariablesUsedByStandaloneRefetch = useRef({});\n const storeVariablesAndRefetch = useCallback<RefetchFn>(\n (variables: Partial<Variables>, options?: RefetchOptions) => {\n latestVariablesUsedByStandaloneRefetch.current = variables;\n return refetch(variables, options);\n },\n [refetch],\n );\n\n const commonPaginationParams = {\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch:\n latestVariablesUsedByStandaloneRefetch.current,\n metadata,\n executionQueryDocument,\n cache: useOverridenOrDefaultApolloClient().cache,\n connectionSelectionPath: connectionMetadata.selectionPath,\n };\n const pageInfo = getPageInfo(data, connectionMetadata.selectionPath);\n const [loadNext, isLoadingNext] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.forwardCountVariable,\n cursorVariable: connectionMetadata.forwardCursorVariable,\n cursorValue: pageInfo?.endCursor,\n updater: (existing, incoming) => [...existing, ...incoming],\n });\n const [loadPrevious, isLoadingPrevious] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.backwardCountVariable,\n cursorVariable: connectionMetadata.backwardCursorVariable,\n cursorValue: pageInfo?.startCursor,\n updater: (existing, incoming) => [...incoming, ...existing],\n });\n return {\n data,\n refetch: storeVariablesAndRefetch,\n hasNext: !!pageInfo?.hasNextPage,\n hasPrevious: !!pageInfo?.hasPreviousPage,\n isLoadingNext,\n isLoadingPrevious,\n loadNext,\n loadPrevious,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["invariant", "_a"]
7
7
  }
@@ -50,7 +50,7 @@ function useLoadMore({
50
50
  const refetchOptions = {
51
51
  fetchPolicy: "no-cache",
52
52
  UNSTABLE_onCompletedWithData: (error, data) => {
53
- var _a2;
53
+ var _a2, _b;
54
54
  setIsLoadingMore(false);
55
55
  if (!error) {
56
56
  invariant(
@@ -94,7 +94,7 @@ function useLoadMore({
94
94
  data: newCacheData
95
95
  });
96
96
  }
97
- (_a2 = options == null ? void 0 : options.onCompleted) == null ? void 0 : _a2.call(options, error);
97
+ (_b = (_a2 = options == null ? void 0 : options.onComplete) != null ? _a2 : options == null ? void 0 : options.onCompleted) == null ? void 0 : _b(error);
98
98
  }
99
99
  };
100
100
  const disposable = refetch(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/storeObservation/compiledHooks/useCompiledPaginationFragment.ts"],
4
- "sourcesContent": ["import { useState, useCallback, useRef } from \"react\";\nimport { ApolloCache, DataProxy } from \"@apollo/client\";\nimport invariant from \"invariant\";\nimport { useCompiledRefetchableFragment } from \"./useCompiledRefetchableFragment\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { FragmentReference } from \"./types\";\nimport type {\n RefetchFn,\n Disposable,\n PrivateRefetchOptions,\n RefetchOptions,\n} from \"./useCompiledRefetchableFragment\";\nimport type {\n CompiledArtefactModule,\n Metadata,\n} from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { DocumentNode } from \"graphql\";\nimport { Variables } from \"../../types\";\nimport { merge } from \"lodash\";\n\nexport type PaginationFn = (\n count: number,\n options?: RefetchOptions,\n) => Disposable;\n\ninterface PaginationParams {\n fragmentReference: FragmentReference;\n refetch: RefetchFn;\n latestVariablesUsedByStandaloneRefetch: Partial<Variables>;\n metadata: Metadata;\n executionQueryDocument: DocumentNode;\n cache: ApolloCache<unknown>;\n countVariable: string | undefined;\n cursorVariable: string | undefined;\n connectionSelectionPath: string[];\n cursorValue: string | undefined;\n updater: <T>(existing: T[], incoming: T[]) => T[];\n}\n\nfunction useLoadMore({\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n updater,\n}: PaginationParams): [loadPage: PaginationFn, isLoadingMore: boolean] {\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const loadPage = useCallback<PaginationFn>(\n (countValue, options) => {\n invariant(\n countVariable,\n \"usePaginationFragment(): Expected a count variable to exist\",\n );\n invariant(\n cursorVariable,\n \"usePaginationFragment(): Expected a cursor variable to exist\",\n );\n invariant(\n cursorValue,\n \"usePaginationFragment(): Expected a cursor value to exist\",\n );\n const previousVariables = {\n ...merge(\n {},\n metadata.connection?.filterVariableDefaults,\n latestVariablesUsedByStandaloneRefetch,\n fragmentReference.__fragments,\n ),\n id: fragmentReference.id,\n };\n const newVariables = {\n ...previousVariables,\n [countVariable]: countValue,\n [cursorVariable]: cursorValue,\n };\n const refetchOptions: PrivateRefetchOptions = {\n fetchPolicy: \"no-cache\",\n UNSTABLE_onCompletedWithData: (error, data) => {\n // NOTE: We can do this now already, because `refetch` wraps the\n // onCompleted callback in a batchedUpdates callback.\n setIsLoadingMore(false);\n\n if (!error) {\n invariant(\n data,\n \"usePaginationFragment(): Expected to have response data\",\n );\n const newData = metadata.rootSelection\n ? data[metadata.rootSelection]\n : data;\n const mainFragment = metadata.mainFragment;\n invariant(\n mainFragment,\n \"usePaginationFragment(): Expected mainFragment metadata\",\n );\n const cacheSelector: DataProxy.Fragment<unknown, object> = {\n // TODO: If we're dropping default Apollo Cache keys, we can probably just do the below\n id: fragmentReference.id as string,\n // id: cache.identify({\n // __typename: mainFragment.typeCondition,\n // id: fragmentReference.id as StoreValue,\n // }),\n variables: previousVariables,\n fragmentName: mainFragment.name,\n // Create new document with operation filtered out.\n fragment: {\n kind: \"Document\",\n definitions: executionQueryDocument.definitions.filter(\n (def) => def.kind === \"FragmentDefinition\",\n ),\n },\n };\n /**\n * Note: Even though we already have the latest data from the\n * useCompiledFragment hook, we can't really use that as it may contain\n * __fragments fields and we don't want to write those to the cache. If\n * we figure out a way from a field-policy's merge function to not write\n * to the cache, then that would be preferable.\n */\n const existingData = cache.readFragment(cacheSelector);\n invariant(existingData, \"Expected existing data\");\n const newCacheData = mergeEdges(\n connectionSelectionPath,\n newData,\n existingData,\n updater,\n );\n cache.writeFragment({\n ...cacheSelector,\n variables: newVariables,\n data: newCacheData,\n });\n }\n\n options?.onCompleted?.(error);\n },\n };\n // TODO: Measure if invoking `refetch` leads to React updates and if it\n // makes sense to wrap it and the following setIsLoadingMore(true)\n // call in a batchedUpdates callback.\n const disposable = refetch(\n newVariables,\n refetchOptions as RefetchOptions,\n );\n setIsLoadingMore(true);\n return disposable;\n },\n [\n fragmentReference.id,\n fragmentReference.__fragments,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n ],\n );\n return [loadPage, isLoadingMore];\n}\n\nfunction getValueAtSelectionPath(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let object: Record<string, any> = data;\n selectionPath.forEach((field) => {\n object = object[field];\n invariant(object, \"Expected path to connection in response to exist\");\n });\n return object;\n}\n\nfunction getPageInfo(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n): {\n startCursor?: string;\n endCursor?: string;\n hasPreviousPage?: boolean;\n hasNextPage?: boolean;\n} {\n const object = getValueAtSelectionPath(data, selectionPath);\n const pageInfo = object.pageInfo;\n invariant(pageInfo, \"Expected to find the connection's page info object\");\n return pageInfo;\n}\n\nfunction mergeEdges(\n connectionPath: string[],\n destination: object,\n source: object,\n updater: <T>(existing: T[], incoming: T[]) => T[],\n) {\n const edgesPath = [...connectionPath, \"edges\"];\n const existingEdges = getValueAtSelectionPath(source, edgesPath);\n const newEdges = getValueAtSelectionPath(destination, edgesPath);\n const allEdges = updater(existingEdges, newEdges);\n\n const connection = getValueAtSelectionPath(destination, connectionPath);\n connection[\"edges\"] = allEdges;\n\n return destination;\n}\n\nexport function useCompiledPaginationFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n loadNext: PaginationFn;\n loadPrevious: PaginationFn;\n hasNext: boolean;\n hasPrevious: boolean;\n isLoadingNext: boolean;\n isLoadingPrevious: boolean;\n refetch: RefetchFn;\n} {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"usePaginationFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"usePaginationFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `usePaginationFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n const connectionMetadata = metadata.connection;\n invariant(\n connectionMetadata,\n \"usePaginationFragment: Expected fragment `%s` to include a \" +\n \"connection when using `usePaginationFragment`. Did you forget to add a @connection \" +\n \"directive to the connection field in the fragment?\",\n metadata.mainFragment.name,\n );\n const [data, refetch] = useCompiledRefetchableFragment(\n documents,\n fragmentReference,\n );\n\n // Consumers might want to not only use loadNext/loadPrevious with pagination fragment but also standalone refetch,\n // for example to change the variables that decide on connection filtering. To make sure that loadNext/loadPrevious\n // respects the variables used by standalone refetch, we store them in a ref and pass them to useLoadMore.\n const latestVariablesUsedByStandaloneRefetch = useRef({});\n const storeVariablesAndRefetch = useCallback<RefetchFn>(\n (variables: Partial<Variables>, options?: RefetchOptions) => {\n latestVariablesUsedByStandaloneRefetch.current = variables;\n return refetch(variables, options);\n },\n [refetch],\n );\n\n const commonPaginationParams = {\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch:\n latestVariablesUsedByStandaloneRefetch.current,\n metadata,\n executionQueryDocument,\n cache: useOverridenOrDefaultApolloClient().cache,\n connectionSelectionPath: connectionMetadata.selectionPath,\n };\n const pageInfo = getPageInfo(data, connectionMetadata.selectionPath);\n const [loadNext, isLoadingNext] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.forwardCountVariable,\n cursorVariable: connectionMetadata.forwardCursorVariable,\n cursorValue: pageInfo?.endCursor,\n updater: (existing, incoming) => [...existing, ...incoming],\n });\n const [loadPrevious, isLoadingPrevious] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.backwardCountVariable,\n cursorVariable: connectionMetadata.backwardCursorVariable,\n cursorValue: pageInfo?.startCursor,\n updater: (existing, incoming) => [...incoming, ...existing],\n });\n return {\n data,\n refetch: storeVariablesAndRefetch,\n hasNext: !!pageInfo?.hasNextPage,\n hasPrevious: !!pageInfo?.hasPreviousPage,\n isLoadingNext,\n isLoadingPrevious,\n loadNext,\n loadPrevious,\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useState, useCallback, useRef } from \"react\";\nimport { ApolloCache, DataProxy } from \"@apollo/client\";\nimport invariant from \"invariant\";\nimport { useCompiledRefetchableFragment } from \"./useCompiledRefetchableFragment\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { FragmentReference } from \"./types\";\nimport type {\n RefetchFn,\n Disposable,\n PrivateRefetchOptions,\n RefetchOptions,\n} from \"./useCompiledRefetchableFragment\";\nimport type {\n CompiledArtefactModule,\n Metadata,\n} from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { DocumentNode } from \"graphql\";\nimport { Variables } from \"../../types\";\nimport { merge } from \"lodash\";\n\nexport type PaginationFn = (\n count: number,\n options?: RefetchOptions,\n) => Disposable;\n\ninterface PaginationParams {\n fragmentReference: FragmentReference;\n refetch: RefetchFn;\n latestVariablesUsedByStandaloneRefetch: Partial<Variables>;\n metadata: Metadata;\n executionQueryDocument: DocumentNode;\n cache: ApolloCache<unknown>;\n countVariable: string | undefined;\n cursorVariable: string | undefined;\n connectionSelectionPath: string[];\n cursorValue: string | undefined;\n updater: <T>(existing: T[], incoming: T[]) => T[];\n}\n\nfunction useLoadMore({\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n updater,\n}: PaginationParams): [loadPage: PaginationFn, isLoadingMore: boolean] {\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const loadPage = useCallback<PaginationFn>(\n (countValue, options) => {\n invariant(\n countVariable,\n \"usePaginationFragment(): Expected a count variable to exist\",\n );\n invariant(\n cursorVariable,\n \"usePaginationFragment(): Expected a cursor variable to exist\",\n );\n invariant(\n cursorValue,\n \"usePaginationFragment(): Expected a cursor value to exist\",\n );\n const previousVariables = {\n ...merge(\n {},\n metadata.connection?.filterVariableDefaults,\n latestVariablesUsedByStandaloneRefetch,\n fragmentReference.__fragments,\n ),\n id: fragmentReference.id,\n };\n const newVariables = {\n ...previousVariables,\n [countVariable]: countValue,\n [cursorVariable]: cursorValue,\n };\n const refetchOptions: PrivateRefetchOptions = {\n fetchPolicy: \"no-cache\",\n UNSTABLE_onCompletedWithData: (error, data) => {\n // NOTE: We can do this now already, because `refetch` wraps the\n // onCompleted callback in a batchedUpdates callback.\n setIsLoadingMore(false);\n\n if (!error) {\n invariant(\n data,\n \"usePaginationFragment(): Expected to have response data\",\n );\n const newData = metadata.rootSelection\n ? data[metadata.rootSelection]\n : data;\n const mainFragment = metadata.mainFragment;\n invariant(\n mainFragment,\n \"usePaginationFragment(): Expected mainFragment metadata\",\n );\n const cacheSelector: DataProxy.Fragment<unknown, object> = {\n // TODO: If we're dropping default Apollo Cache keys, we can probably just do the below\n id: fragmentReference.id as string,\n // id: cache.identify({\n // __typename: mainFragment.typeCondition,\n // id: fragmentReference.id as StoreValue,\n // }),\n variables: previousVariables,\n fragmentName: mainFragment.name,\n // Create new document with operation filtered out.\n fragment: {\n kind: \"Document\",\n definitions: executionQueryDocument.definitions.filter(\n (def) => def.kind === \"FragmentDefinition\",\n ),\n },\n };\n /**\n * Note: Even though we already have the latest data from the\n * useCompiledFragment hook, we can't really use that as it may contain\n * __fragments fields and we don't want to write those to the cache. If\n * we figure out a way from a field-policy's merge function to not write\n * to the cache, then that would be preferable.\n */\n const existingData = cache.readFragment(cacheSelector);\n invariant(existingData, \"Expected existing data\");\n const newCacheData = mergeEdges(\n connectionSelectionPath,\n newData,\n existingData,\n updater,\n );\n cache.writeFragment({\n ...cacheSelector,\n variables: newVariables,\n data: newCacheData,\n });\n }\n\n (options?.onComplete ?? options?.onCompleted)?.(error);\n },\n };\n // TODO: Measure if invoking `refetch` leads to React updates and if it\n // makes sense to wrap it and the following setIsLoadingMore(true)\n // call in a batchedUpdates callback.\n const disposable = refetch(\n newVariables,\n refetchOptions as RefetchOptions,\n );\n setIsLoadingMore(true);\n return disposable;\n },\n [\n fragmentReference.id,\n fragmentReference.__fragments,\n refetch,\n latestVariablesUsedByStandaloneRefetch,\n metadata,\n executionQueryDocument,\n cache,\n countVariable,\n cursorVariable,\n connectionSelectionPath,\n cursorValue,\n ],\n );\n return [loadPage, isLoadingMore];\n}\n\nfunction getValueAtSelectionPath(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let object: Record<string, any> = data;\n selectionPath.forEach((field) => {\n object = object[field];\n invariant(object, \"Expected path to connection in response to exist\");\n });\n return object;\n}\n\nfunction getPageInfo(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any>,\n selectionPath: string[],\n): {\n startCursor?: string;\n endCursor?: string;\n hasPreviousPage?: boolean;\n hasNextPage?: boolean;\n} {\n const object = getValueAtSelectionPath(data, selectionPath);\n const pageInfo = object.pageInfo;\n invariant(pageInfo, \"Expected to find the connection's page info object\");\n return pageInfo;\n}\n\nfunction mergeEdges(\n connectionPath: string[],\n destination: object,\n source: object,\n updater: <T>(existing: T[], incoming: T[]) => T[],\n) {\n const edgesPath = [...connectionPath, \"edges\"];\n const existingEdges = getValueAtSelectionPath(source, edgesPath);\n const newEdges = getValueAtSelectionPath(destination, edgesPath);\n const allEdges = updater(existingEdges, newEdges);\n\n const connection = getValueAtSelectionPath(destination, connectionPath);\n connection[\"edges\"] = allEdges;\n\n return destination;\n}\n\nexport function useCompiledPaginationFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n loadNext: PaginationFn;\n loadPrevious: PaginationFn;\n hasNext: boolean;\n hasPrevious: boolean;\n isLoadingNext: boolean;\n isLoadingPrevious: boolean;\n refetch: RefetchFn;\n} {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"usePaginationFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"usePaginationFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `usePaginationFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n const connectionMetadata = metadata.connection;\n invariant(\n connectionMetadata,\n \"usePaginationFragment: Expected fragment `%s` to include a \" +\n \"connection when using `usePaginationFragment`. Did you forget to add a @connection \" +\n \"directive to the connection field in the fragment?\",\n metadata.mainFragment.name,\n );\n const [data, refetch] = useCompiledRefetchableFragment(\n documents,\n fragmentReference,\n );\n\n // Consumers might want to not only use loadNext/loadPrevious with pagination fragment but also standalone refetch,\n // for example to change the variables that decide on connection filtering. To make sure that loadNext/loadPrevious\n // respects the variables used by standalone refetch, we store them in a ref and pass them to useLoadMore.\n const latestVariablesUsedByStandaloneRefetch = useRef({});\n const storeVariablesAndRefetch = useCallback<RefetchFn>(\n (variables: Partial<Variables>, options?: RefetchOptions) => {\n latestVariablesUsedByStandaloneRefetch.current = variables;\n return refetch(variables, options);\n },\n [refetch],\n );\n\n const commonPaginationParams = {\n fragmentReference,\n refetch,\n latestVariablesUsedByStandaloneRefetch:\n latestVariablesUsedByStandaloneRefetch.current,\n metadata,\n executionQueryDocument,\n cache: useOverridenOrDefaultApolloClient().cache,\n connectionSelectionPath: connectionMetadata.selectionPath,\n };\n const pageInfo = getPageInfo(data, connectionMetadata.selectionPath);\n const [loadNext, isLoadingNext] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.forwardCountVariable,\n cursorVariable: connectionMetadata.forwardCursorVariable,\n cursorValue: pageInfo?.endCursor,\n updater: (existing, incoming) => [...existing, ...incoming],\n });\n const [loadPrevious, isLoadingPrevious] = useLoadMore({\n ...commonPaginationParams,\n countVariable: connectionMetadata.backwardCountVariable,\n cursorVariable: connectionMetadata.backwardCursorVariable,\n cursorValue: pageInfo?.startCursor,\n updater: (existing, incoming) => [...incoming, ...existing],\n });\n return {\n data,\n refetch: storeVariablesAndRefetch,\n hasNext: !!pageInfo?.hasNextPage,\n hasPrevious: !!pageInfo?.hasPreviousPage,\n isLoadingNext,\n isLoadingPrevious,\n loadNext,\n loadPrevious,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["_a"]
7
7
  }
@@ -6,6 +6,10 @@ export interface Disposable {
6
6
  }
7
7
  export type RefetchFn<Variables extends object = object> = (variables: Partial<Variables>, options?: RefetchOptions) => Disposable;
8
8
  export interface RefetchOptions {
9
+ onComplete?: (error: Error | null) => void;
10
+ /**
11
+ * @deprecated Use `onComplete` to match the Relay API.
12
+ */
9
13
  onCompleted?: (error: Error | null) => void;
10
14
  fetchPolicy?: FetchPolicy;
11
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useCompiledRefetchableFragment.d.ts","sourceRoot":"","sources":["../../../src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CACzD,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAC7B,OAAO,CAAC,EAAE,cAAc,KACrB,UAAU,CAAC;AAEhB,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC;IAC3C;;OAEG;IACH,4BAA4B,CAAC,EAAE,CAC7B,KAAK,EAAE,KAAK,GAAG,IAAI,EAEnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAC7B,IAAI,CAAC;IAEV,WAAW,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;CACxC;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,sBAAsB,EACjC,iBAAiB,EAAE,iBAAiB,GACnC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAqHpC"}
1
+ {"version":3,"file":"useCompiledRefetchableFragment.d.ts","sourceRoot":"","sources":["../../../src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CACzD,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAC7B,OAAO,CAAC,EAAE,cAAc,KACrB,UAAU,CAAC;AAEhB,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAQD;;GAEG;AACH,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC;IAC3C;;OAEG;IACH,4BAA4B,CAAC,EAAE,CAC7B,KAAK,EAAE,KAAK,GAAG,IAAI,EAEnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAC7B,IAAI,CAAC;IAEV,WAAW,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;CACxC;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,sBAAsB,EACjC,iBAAiB,EAAE,iBAAiB,GACnC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAsHpC"}
@@ -38,6 +38,10 @@ var import_useCompiledFragment = require("./useCompiledFragment");
38
38
  var import_lodash = require("lodash");
39
39
  var import_convertFetchPolicy = require("../../convertFetchPolicy");
40
40
  var import_useOverridenOrDefaultApolloClient = require("../../useOverridenOrDefaultApolloClient");
41
+ function getOnCompleteCallback(options) {
42
+ var _a;
43
+ return (_a = options == null ? void 0 : options.onComplete) != null ? _a : options == null ? void 0 : options.onCompleted;
44
+ }
41
45
  function useCompiledRefetchableFragment(documents, fragmentReference) {
42
46
  const { executionQueryDocument, metadata } = documents;
43
47
  (0, import_invariant.default)(
@@ -95,7 +99,7 @@ function useCompiledRefetchableFragment(documents, fragmentReference) {
95
99
  if (options == null ? void 0 : options.UNSTABLE_onCompletedWithData) {
96
100
  options.UNSTABLE_onCompletedWithData(error || null, data2);
97
101
  } else {
98
- (_a2 = options == null ? void 0 : options.onCompleted) == null ? void 0 : _a2.call(options, error || null);
102
+ (_a2 = getOnCompleteCallback(options)) == null ? void 0 : _a2(error || null);
99
103
  }
100
104
  }
101
105
  if (!error) {
@@ -126,7 +130,7 @@ function useCompiledRefetchableFragment(documents, fragmentReference) {
126
130
  if (options == null ? void 0 : options.UNSTABLE_onCompletedWithData) {
127
131
  options.UNSTABLE_onCompletedWithData(error, null);
128
132
  } else {
129
- (_a2 = options == null ? void 0 : options.onCompleted) == null ? void 0 : _a2.call(options, error);
133
+ (_a2 = getOnCompleteCallback(options)) == null ? void 0 : _a2(error);
130
134
  }
131
135
  }
132
136
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts"],
4
- "sourcesContent": ["import { useState, useCallback, useRef, useEffect } from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport invariant from \"invariant\";\nimport { useCompiledFragment } from \"./useCompiledFragment\";\nimport { isEqual } from \"lodash\";\nimport { convertFetchPolicy } from \"../../convertFetchPolicy\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { CompiledArtefactModule } from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { FragmentReference } from \"./types\";\nimport type { FetchPolicy } from \"../../types\";\n\nexport interface Disposable {\n dispose(): void;\n}\n\nexport type RefetchFn<Variables extends object = object> = (\n variables: Partial<Variables>,\n options?: RefetchOptions,\n) => Disposable;\n\nexport interface RefetchOptions {\n onCompleted?: (error: Error | null) => void;\n fetchPolicy?: FetchPolicy;\n}\n\n/**\n * These do not exist in the Relay API and should not be exported from the package.\n */\nexport interface PrivateRefetchOptions\n extends Omit<RefetchOptions, \"fetchPolicy\"> {\n /**\n * Returns the fetched data.\n */\n UNSTABLE_onCompletedWithData?: (\n error: Error | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any> | null,\n ) => void;\n\n fetchPolicy?: FetchPolicy | \"no-cache\";\n}\n\nexport function useCompiledRefetchableFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): [data: object, refetch: RefetchFn] {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"useRefetchableFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"useRefetchableFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `useRefetchableFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n\n const client = useOverridenOrDefaultApolloClient();\n\n // We use state for this, so that...\n const [\n fragmentReferenceWithOwnVariables,\n setFragmentReferenceWithOwnVariables,\n ] = useState(fragmentReference);\n // ...this gets invoked again with updated variables.\n const data = useCompiledFragment(\n documents,\n fragmentReferenceWithOwnVariables,\n );\n\n const disposable = useRef<Disposable>();\n useEffect(\n () => () => {\n if (disposable.current) {\n disposable.current.dispose();\n disposable.current = undefined;\n }\n },\n [], // On unmount\n );\n\n const refetch = useCallback<RefetchFn>(\n (variablesSubset, options?: PrivateRefetchOptions) => {\n const variables = {\n ...fragmentReference.__fragments,\n ...variablesSubset,\n id: fragmentReference.id,\n };\n const observable = client.watchQuery({\n fetchPolicy: convertFetchPolicy(options?.fetchPolicy) ?? \"network-only\",\n query: executionQueryDocument,\n variables,\n });\n let subscription: ZenObservable.Subscription | undefined =\n observable.subscribe(\n ({ data, error, loading }) => {\n if (!loading) {\n // Be sure not to keep a retain cycle, so cleanup the reference first thing.\n subscription?.unsubscribe();\n subscription = undefined;\n disposable.current = undefined;\n }\n unstable_batchedUpdates(() => {\n if (!loading) {\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error || null, data);\n } else {\n options?.onCompleted?.(error || null); // Public callback fires only when finished loading\n }\n }\n if (!error) {\n const { id: _, ...variablesToPropagate } = variables;\n const nextVariables = {\n ...fragmentReference.__fragments,\n ...variablesToPropagate,\n };\n // No need to trigger an update to propagate new variables if they don't actually change.\n if (\n !isEqual(\n fragmentReferenceWithOwnVariables.__fragments,\n nextVariables,\n )\n ) {\n const nextFragmentReference: FragmentReference = {\n __fragments: nextVariables,\n };\n if (fragmentReference.id !== undefined) {\n nextFragmentReference.id = fragmentReference.id;\n }\n setFragmentReferenceWithOwnVariables(nextFragmentReference);\n }\n }\n });\n },\n (error) => {\n // Be sure not to keep a retain cycle\n subscription?.unsubscribe();\n subscription = undefined;\n\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error, null);\n } else {\n options?.onCompleted?.(error);\n }\n },\n );\n disposable.current = { dispose: () => subscription?.unsubscribe() };\n return disposable.current;\n },\n [\n client,\n executionQueryDocument,\n fragmentReference.id,\n fragmentReference.__fragments,\n fragmentReferenceWithOwnVariables.__fragments,\n ],\n );\n\n return [data, refetch];\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAyD;AACzD,uBAAwC;AACxC,uBAAsB;AACtB,iCAAoC;AACpC,oBAAwB;AACxB,gCAAmC;AACnC,+CAAkD;AAqC3C,SAAS,+BACd,WACA,mBACoC;AACpC,QAAM,EAAE,wBAAwB,SAAS,IAAI;AAC7C,uBAAAA;AAAA,IACE,YAAY,SAAS;AAAA,IACrB;AAAA,EAEF;AACA,uBAAAA;AAAA,IACE;AAAA,IACA;AAAA,IAGA,SAAS,aAAa;AAAA,EACxB;AAEA,QAAM,aAAS,4EAAkC;AAGjD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,QAAI,uBAAS,iBAAiB;AAE9B,QAAM,WAAO;AAAA,IACX;AAAA,IACA;AAAA,EACF;AAEA,QAAM,iBAAa,qBAAmB;AACtC;AAAA,IACE,MAAM,MAAM;AACV,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,QAAQ;AAC3B,mBAAW,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC;AAAA;AAAA,EACH;AAEA,QAAM,cAAU;AAAA,IACd,CAAC,iBAAiB,YAAoC;AAtF1D;AAuFM,YAAM,YAAY;AAAA,QAChB,GAAG,kBAAkB;AAAA,QACrB,GAAG;AAAA,QACH,IAAI,kBAAkB;AAAA,MACxB;AACA,YAAM,aAAa,OAAO,WAAW;AAAA,QACnC,cAAa,uDAAmB,mCAAS,WAAW,MAAvC,YAA4C;AAAA,QACzD,OAAO;AAAA,QACP;AAAA,MACF,CAAC;AACD,UAAI,eACF,WAAW;AAAA,QACT,CAAC,EAAE,MAAAC,OAAM,OAAO,QAAQ,MAAM;AAC5B,cAAI,CAAC,SAAS;AAEZ,yDAAc;AACd,2BAAe;AACf,uBAAW,UAAU;AAAA,UACvB;AACA,wDAAwB,MAAM;AA1G1C,gBAAAC;AA2Gc,gBAAI,CAAC,SAAS;AACZ,kBAAI,mCAAS,8BAA8B;AACzC,wBAAQ,6BAA6B,SAAS,MAAMD,KAAI;AAAA,cAC1D,OAAO;AACL,iBAAAC,MAAA,mCAAS,gBAAT,gBAAAA,IAAA,cAAuB,SAAS;AAAA,cAClC;AAAA,YACF;AACA,gBAAI,CAAC,OAAO;AACV,oBAAM,EAAE,IAAI,GAAG,GAAG,qBAAqB,IAAI;AAC3C,oBAAM,gBAAgB;AAAA,gBACpB,GAAG,kBAAkB;AAAA,gBACrB,GAAG;AAAA,cACL;AAEA,kBACE,KAAC;AAAA,gBACC,kCAAkC;AAAA,gBAClC;AAAA,cACF,GACA;AACA,sBAAM,wBAA2C;AAAA,kBAC/C,aAAa;AAAA,gBACf;AACA,oBAAI,kBAAkB,OAAO,QAAW;AACtC,wCAAsB,KAAK,kBAAkB;AAAA,gBAC/C;AACA,qDAAqC,qBAAqB;AAAA,cAC5D;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,CAAC,UAAU;AA1IrB,cAAAA;AA4IY,uDAAc;AACd,yBAAe;AAEf,cAAI,mCAAS,8BAA8B;AACzC,oBAAQ,6BAA6B,OAAO,IAAI;AAAA,UAClD,OAAO;AACL,aAAAA,MAAA,mCAAS,gBAAT,gBAAAA,IAAA,cAAuB;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AACF,iBAAW,UAAU,EAAE,SAAS,MAAM,6CAAc,cAAc;AAClE,aAAO,WAAW;AAAA,IACpB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kCAAkC;AAAA,IACpC;AAAA,EACF;AAEA,SAAO,CAAC,MAAM,OAAO;AACvB;",
4
+ "sourcesContent": ["import { useState, useCallback, useRef, useEffect } from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport invariant from \"invariant\";\nimport { useCompiledFragment } from \"./useCompiledFragment\";\nimport { isEqual } from \"lodash\";\nimport { convertFetchPolicy } from \"../../convertFetchPolicy\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { CompiledArtefactModule } from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { FragmentReference } from \"./types\";\nimport type { FetchPolicy } from \"../../types\";\n\nexport interface Disposable {\n dispose(): void;\n}\n\nexport type RefetchFn<Variables extends object = object> = (\n variables: Partial<Variables>,\n options?: RefetchOptions,\n) => Disposable;\n\nexport interface RefetchOptions {\n onComplete?: (error: Error | null) => void;\n /**\n * @deprecated Use `onComplete` to match the Relay API.\n */\n onCompleted?: (error: Error | null) => void;\n fetchPolicy?: FetchPolicy;\n}\n\nfunction getOnCompleteCallback(\n options?: Pick<RefetchOptions, \"onComplete\" | \"onCompleted\">,\n): ((error: Error | null) => void) | undefined {\n return options?.onComplete ?? options?.onCompleted;\n}\n\n/**\n * These do not exist in the Relay API and should not be exported from the package.\n */\nexport interface PrivateRefetchOptions\n extends Omit<RefetchOptions, \"fetchPolicy\"> {\n /**\n * Returns the fetched data.\n */\n UNSTABLE_onCompletedWithData?: (\n error: Error | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any> | null,\n ) => void;\n\n fetchPolicy?: FetchPolicy | \"no-cache\";\n}\n\nexport function useCompiledRefetchableFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): [data: object, refetch: RefetchFn] {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"useRefetchableFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"useRefetchableFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `useRefetchableFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n\n const client = useOverridenOrDefaultApolloClient();\n\n // We use state for this, so that...\n const [\n fragmentReferenceWithOwnVariables,\n setFragmentReferenceWithOwnVariables,\n ] = useState(fragmentReference);\n // ...this gets invoked again with updated variables.\n const data = useCompiledFragment(\n documents,\n fragmentReferenceWithOwnVariables,\n );\n\n const disposable = useRef<Disposable>();\n useEffect(\n () => () => {\n if (disposable.current) {\n disposable.current.dispose();\n disposable.current = undefined;\n }\n },\n [], // On unmount\n );\n\n const refetch = useCallback<RefetchFn>(\n (variablesSubset, options?: PrivateRefetchOptions) => {\n const variables = {\n ...fragmentReference.__fragments,\n ...variablesSubset,\n id: fragmentReference.id,\n };\n const observable = client.watchQuery({\n fetchPolicy: convertFetchPolicy(options?.fetchPolicy) ?? \"network-only\",\n query: executionQueryDocument,\n variables,\n });\n let subscription: ZenObservable.Subscription | undefined =\n observable.subscribe(\n ({ data, error, loading }) => {\n if (!loading) {\n // Be sure not to keep a retain cycle, so cleanup the reference first thing.\n subscription?.unsubscribe();\n subscription = undefined;\n disposable.current = undefined;\n }\n unstable_batchedUpdates(() => {\n if (!loading) {\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error || null, data);\n } else {\n // Public callback fires only when finished loading.\n getOnCompleteCallback(options)?.(error || null);\n }\n }\n if (!error) {\n const { id: _, ...variablesToPropagate } = variables;\n const nextVariables = {\n ...fragmentReference.__fragments,\n ...variablesToPropagate,\n };\n // No need to trigger an update to propagate new variables if they don't actually change.\n if (\n !isEqual(\n fragmentReferenceWithOwnVariables.__fragments,\n nextVariables,\n )\n ) {\n const nextFragmentReference: FragmentReference = {\n __fragments: nextVariables,\n };\n if (fragmentReference.id !== undefined) {\n nextFragmentReference.id = fragmentReference.id;\n }\n setFragmentReferenceWithOwnVariables(nextFragmentReference);\n }\n }\n });\n },\n (error) => {\n // Be sure not to keep a retain cycle\n subscription?.unsubscribe();\n subscription = undefined;\n\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error, null);\n } else {\n getOnCompleteCallback(options)?.(error);\n }\n },\n );\n disposable.current = { dispose: () => subscription?.unsubscribe() };\n return disposable.current;\n },\n [\n client,\n executionQueryDocument,\n fragmentReference.id,\n fragmentReference.__fragments,\n fragmentReferenceWithOwnVariables.__fragments,\n ],\n );\n\n return [data, refetch];\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["invariant", "data", "_a"]
7
7
  }
@@ -6,6 +6,10 @@ import { useCompiledFragment } from "./useCompiledFragment.mjs";
6
6
  import { isEqual } from "lodash";
7
7
  import { convertFetchPolicy } from "../../convertFetchPolicy.mjs";
8
8
  import { useOverridenOrDefaultApolloClient } from "../../useOverridenOrDefaultApolloClient.mjs";
9
+ function getOnCompleteCallback(options) {
10
+ var _a;
11
+ return (_a = options == null ? void 0 : options.onComplete) != null ? _a : options == null ? void 0 : options.onCompleted;
12
+ }
9
13
  function useCompiledRefetchableFragment(documents, fragmentReference) {
10
14
  const { executionQueryDocument, metadata } = documents;
11
15
  invariant(
@@ -63,7 +67,7 @@ function useCompiledRefetchableFragment(documents, fragmentReference) {
63
67
  if (options == null ? void 0 : options.UNSTABLE_onCompletedWithData) {
64
68
  options.UNSTABLE_onCompletedWithData(error || null, data2);
65
69
  } else {
66
- (_a2 = options == null ? void 0 : options.onCompleted) == null ? void 0 : _a2.call(options, error || null);
70
+ (_a2 = getOnCompleteCallback(options)) == null ? void 0 : _a2(error || null);
67
71
  }
68
72
  }
69
73
  if (!error) {
@@ -94,7 +98,7 @@ function useCompiledRefetchableFragment(documents, fragmentReference) {
94
98
  if (options == null ? void 0 : options.UNSTABLE_onCompletedWithData) {
95
99
  options.UNSTABLE_onCompletedWithData(error, null);
96
100
  } else {
97
- (_a2 = options == null ? void 0 : options.onCompleted) == null ? void 0 : _a2.call(options, error);
101
+ (_a2 = getOnCompleteCallback(options)) == null ? void 0 : _a2(error);
98
102
  }
99
103
  }
100
104
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/storeObservation/compiledHooks/useCompiledRefetchableFragment.ts"],
4
- "sourcesContent": ["import { useState, useCallback, useRef, useEffect } from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport invariant from \"invariant\";\nimport { useCompiledFragment } from \"./useCompiledFragment\";\nimport { isEqual } from \"lodash\";\nimport { convertFetchPolicy } from \"../../convertFetchPolicy\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { CompiledArtefactModule } from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { FragmentReference } from \"./types\";\nimport type { FetchPolicy } from \"../../types\";\n\nexport interface Disposable {\n dispose(): void;\n}\n\nexport type RefetchFn<Variables extends object = object> = (\n variables: Partial<Variables>,\n options?: RefetchOptions,\n) => Disposable;\n\nexport interface RefetchOptions {\n onCompleted?: (error: Error | null) => void;\n fetchPolicy?: FetchPolicy;\n}\n\n/**\n * These do not exist in the Relay API and should not be exported from the package.\n */\nexport interface PrivateRefetchOptions\n extends Omit<RefetchOptions, \"fetchPolicy\"> {\n /**\n * Returns the fetched data.\n */\n UNSTABLE_onCompletedWithData?: (\n error: Error | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any> | null,\n ) => void;\n\n fetchPolicy?: FetchPolicy | \"no-cache\";\n}\n\nexport function useCompiledRefetchableFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): [data: object, refetch: RefetchFn] {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"useRefetchableFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"useRefetchableFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `useRefetchableFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n\n const client = useOverridenOrDefaultApolloClient();\n\n // We use state for this, so that...\n const [\n fragmentReferenceWithOwnVariables,\n setFragmentReferenceWithOwnVariables,\n ] = useState(fragmentReference);\n // ...this gets invoked again with updated variables.\n const data = useCompiledFragment(\n documents,\n fragmentReferenceWithOwnVariables,\n );\n\n const disposable = useRef<Disposable>();\n useEffect(\n () => () => {\n if (disposable.current) {\n disposable.current.dispose();\n disposable.current = undefined;\n }\n },\n [], // On unmount\n );\n\n const refetch = useCallback<RefetchFn>(\n (variablesSubset, options?: PrivateRefetchOptions) => {\n const variables = {\n ...fragmentReference.__fragments,\n ...variablesSubset,\n id: fragmentReference.id,\n };\n const observable = client.watchQuery({\n fetchPolicy: convertFetchPolicy(options?.fetchPolicy) ?? \"network-only\",\n query: executionQueryDocument,\n variables,\n });\n let subscription: ZenObservable.Subscription | undefined =\n observable.subscribe(\n ({ data, error, loading }) => {\n if (!loading) {\n // Be sure not to keep a retain cycle, so cleanup the reference first thing.\n subscription?.unsubscribe();\n subscription = undefined;\n disposable.current = undefined;\n }\n unstable_batchedUpdates(() => {\n if (!loading) {\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error || null, data);\n } else {\n options?.onCompleted?.(error || null); // Public callback fires only when finished loading\n }\n }\n if (!error) {\n const { id: _, ...variablesToPropagate } = variables;\n const nextVariables = {\n ...fragmentReference.__fragments,\n ...variablesToPropagate,\n };\n // No need to trigger an update to propagate new variables if they don't actually change.\n if (\n !isEqual(\n fragmentReferenceWithOwnVariables.__fragments,\n nextVariables,\n )\n ) {\n const nextFragmentReference: FragmentReference = {\n __fragments: nextVariables,\n };\n if (fragmentReference.id !== undefined) {\n nextFragmentReference.id = fragmentReference.id;\n }\n setFragmentReferenceWithOwnVariables(nextFragmentReference);\n }\n }\n });\n },\n (error) => {\n // Be sure not to keep a retain cycle\n subscription?.unsubscribe();\n subscription = undefined;\n\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error, null);\n } else {\n options?.onCompleted?.(error);\n }\n },\n );\n disposable.current = { dispose: () => subscription?.unsubscribe() };\n return disposable.current;\n },\n [\n client,\n executionQueryDocument,\n fragmentReference.id,\n fragmentReference.__fragments,\n fragmentReferenceWithOwnVariables.__fragments,\n ],\n );\n\n return [data, refetch];\n}\n"],
5
- "mappings": ";AAAA,SAAS,UAAU,aAAa,QAAQ,iBAAiB;AACzD,SAAS,+BAA+B;AACxC,OAAO,eAAe;AACtB,SAAS,2BAA2B;AACpC,SAAS,eAAe;AACxB,SAAS,0BAA0B;AACnC,SAAS,yCAAyC;AAqC3C,SAAS,+BACd,WACA,mBACoC;AACpC,QAAM,EAAE,wBAAwB,SAAS,IAAI;AAC7C;AAAA,IACE,YAAY,SAAS;AAAA,IACrB;AAAA,EAEF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IAGA,SAAS,aAAa;AAAA,EACxB;AAEA,QAAM,SAAS,kCAAkC;AAGjD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI,SAAS,iBAAiB;AAE9B,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,EACF;AAEA,QAAM,aAAa,OAAmB;AACtC;AAAA,IACE,MAAM,MAAM;AACV,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,QAAQ;AAC3B,mBAAW,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC;AAAA;AAAA,EACH;AAEA,QAAM,UAAU;AAAA,IACd,CAAC,iBAAiB,YAAoC;AAtF1D;AAuFM,YAAM,YAAY;AAAA,QAChB,GAAG,kBAAkB;AAAA,QACrB,GAAG;AAAA,QACH,IAAI,kBAAkB;AAAA,MACxB;AACA,YAAM,aAAa,OAAO,WAAW;AAAA,QACnC,cAAa,wBAAmB,mCAAS,WAAW,MAAvC,YAA4C;AAAA,QACzD,OAAO;AAAA,QACP;AAAA,MACF,CAAC;AACD,UAAI,eACF,WAAW;AAAA,QACT,CAAC,EAAE,MAAAA,OAAM,OAAO,QAAQ,MAAM;AAC5B,cAAI,CAAC,SAAS;AAEZ,yDAAc;AACd,2BAAe;AACf,uBAAW,UAAU;AAAA,UACvB;AACA,kCAAwB,MAAM;AA1G1C,gBAAAC;AA2Gc,gBAAI,CAAC,SAAS;AACZ,kBAAI,mCAAS,8BAA8B;AACzC,wBAAQ,6BAA6B,SAAS,MAAMD,KAAI;AAAA,cAC1D,OAAO;AACL,iBAAAC,MAAA,mCAAS,gBAAT,gBAAAA,IAAA,cAAuB,SAAS;AAAA,cAClC;AAAA,YACF;AACA,gBAAI,CAAC,OAAO;AACV,oBAAM,EAAE,IAAI,GAAG,GAAG,qBAAqB,IAAI;AAC3C,oBAAM,gBAAgB;AAAA,gBACpB,GAAG,kBAAkB;AAAA,gBACrB,GAAG;AAAA,cACL;AAEA,kBACE,CAAC;AAAA,gBACC,kCAAkC;AAAA,gBAClC;AAAA,cACF,GACA;AACA,sBAAM,wBAA2C;AAAA,kBAC/C,aAAa;AAAA,gBACf;AACA,oBAAI,kBAAkB,OAAO,QAAW;AACtC,wCAAsB,KAAK,kBAAkB;AAAA,gBAC/C;AACA,qDAAqC,qBAAqB;AAAA,cAC5D;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,CAAC,UAAU;AA1IrB,cAAAA;AA4IY,uDAAc;AACd,yBAAe;AAEf,cAAI,mCAAS,8BAA8B;AACzC,oBAAQ,6BAA6B,OAAO,IAAI;AAAA,UAClD,OAAO;AACL,aAAAA,MAAA,mCAAS,gBAAT,gBAAAA,IAAA,cAAuB;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AACF,iBAAW,UAAU,EAAE,SAAS,MAAM,6CAAc,cAAc;AAClE,aAAO,WAAW;AAAA,IACpB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kCAAkC;AAAA,IACpC;AAAA,EACF;AAEA,SAAO,CAAC,MAAM,OAAO;AACvB;",
4
+ "sourcesContent": ["import { useState, useCallback, useRef, useEffect } from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport invariant from \"invariant\";\nimport { useCompiledFragment } from \"./useCompiledFragment\";\nimport { isEqual } from \"lodash\";\nimport { convertFetchPolicy } from \"../../convertFetchPolicy\";\nimport { useOverridenOrDefaultApolloClient } from \"../../useOverridenOrDefaultApolloClient\";\n\nimport type { CompiledArtefactModule } from \"@graphitation/apollo-react-relay-duct-tape-compiler\";\nimport type { FragmentReference } from \"./types\";\nimport type { FetchPolicy } from \"../../types\";\n\nexport interface Disposable {\n dispose(): void;\n}\n\nexport type RefetchFn<Variables extends object = object> = (\n variables: Partial<Variables>,\n options?: RefetchOptions,\n) => Disposable;\n\nexport interface RefetchOptions {\n onComplete?: (error: Error | null) => void;\n /**\n * @deprecated Use `onComplete` to match the Relay API.\n */\n onCompleted?: (error: Error | null) => void;\n fetchPolicy?: FetchPolicy;\n}\n\nfunction getOnCompleteCallback(\n options?: Pick<RefetchOptions, \"onComplete\" | \"onCompleted\">,\n): ((error: Error | null) => void) | undefined {\n return options?.onComplete ?? options?.onCompleted;\n}\n\n/**\n * These do not exist in the Relay API and should not be exported from the package.\n */\nexport interface PrivateRefetchOptions\n extends Omit<RefetchOptions, \"fetchPolicy\"> {\n /**\n * Returns the fetched data.\n */\n UNSTABLE_onCompletedWithData?: (\n error: Error | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record<string, any> | null,\n ) => void;\n\n fetchPolicy?: FetchPolicy | \"no-cache\";\n}\n\nexport function useCompiledRefetchableFragment(\n documents: CompiledArtefactModule,\n fragmentReference: FragmentReference,\n): [data: object, refetch: RefetchFn] {\n const { executionQueryDocument, metadata } = documents;\n invariant(\n metadata && metadata.mainFragment,\n \"useRefetchableFragment(): Expected metadata to have been extracted from \" +\n \"the fragment. Did you forget to invoke the compiler?\",\n );\n invariant(\n executionQueryDocument,\n \"useRefetchableFragment(): Expected fragment `%s` to be refetchable when \" +\n \"using `useRefetchableFragment`. Did you forget to add a @refetchable \" +\n \"directive to the fragment?\",\n metadata.mainFragment.name,\n );\n\n const client = useOverridenOrDefaultApolloClient();\n\n // We use state for this, so that...\n const [\n fragmentReferenceWithOwnVariables,\n setFragmentReferenceWithOwnVariables,\n ] = useState(fragmentReference);\n // ...this gets invoked again with updated variables.\n const data = useCompiledFragment(\n documents,\n fragmentReferenceWithOwnVariables,\n );\n\n const disposable = useRef<Disposable>();\n useEffect(\n () => () => {\n if (disposable.current) {\n disposable.current.dispose();\n disposable.current = undefined;\n }\n },\n [], // On unmount\n );\n\n const refetch = useCallback<RefetchFn>(\n (variablesSubset, options?: PrivateRefetchOptions) => {\n const variables = {\n ...fragmentReference.__fragments,\n ...variablesSubset,\n id: fragmentReference.id,\n };\n const observable = client.watchQuery({\n fetchPolicy: convertFetchPolicy(options?.fetchPolicy) ?? \"network-only\",\n query: executionQueryDocument,\n variables,\n });\n let subscription: ZenObservable.Subscription | undefined =\n observable.subscribe(\n ({ data, error, loading }) => {\n if (!loading) {\n // Be sure not to keep a retain cycle, so cleanup the reference first thing.\n subscription?.unsubscribe();\n subscription = undefined;\n disposable.current = undefined;\n }\n unstable_batchedUpdates(() => {\n if (!loading) {\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error || null, data);\n } else {\n // Public callback fires only when finished loading.\n getOnCompleteCallback(options)?.(error || null);\n }\n }\n if (!error) {\n const { id: _, ...variablesToPropagate } = variables;\n const nextVariables = {\n ...fragmentReference.__fragments,\n ...variablesToPropagate,\n };\n // No need to trigger an update to propagate new variables if they don't actually change.\n if (\n !isEqual(\n fragmentReferenceWithOwnVariables.__fragments,\n nextVariables,\n )\n ) {\n const nextFragmentReference: FragmentReference = {\n __fragments: nextVariables,\n };\n if (fragmentReference.id !== undefined) {\n nextFragmentReference.id = fragmentReference.id;\n }\n setFragmentReferenceWithOwnVariables(nextFragmentReference);\n }\n }\n });\n },\n (error) => {\n // Be sure not to keep a retain cycle\n subscription?.unsubscribe();\n subscription = undefined;\n\n if (options?.UNSTABLE_onCompletedWithData) {\n options.UNSTABLE_onCompletedWithData(error, null);\n } else {\n getOnCompleteCallback(options)?.(error);\n }\n },\n );\n disposable.current = { dispose: () => subscription?.unsubscribe() };\n return disposable.current;\n },\n [\n client,\n executionQueryDocument,\n fragmentReference.id,\n fragmentReference.__fragments,\n fragmentReferenceWithOwnVariables.__fragments,\n ],\n );\n\n return [data, refetch];\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["data", "_a"]
7
7
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@graphitation/apollo-react-relay-duct-tape",
3
3
  "description": "A compatibility wrapper that provides the react-relay API on top of Apollo Client.",
4
4
  "license": "MIT",
5
- "version": "1.4.33",
5
+ "version": "1.4.34",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/microsoft/graphitation.git",