From 9df0f7c670c919d956312d2535c298d2553f5840 Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Mon, 8 Jul 2024 15:25:36 +0100 Subject: [PATCH] enhance: Get rid of fetch action.meta.nm (#3139) --- .changeset/wild-lobsters-raise.md | 6 ++++++ packages/core/src/actions.ts | 2 -- packages/core/src/controller/createFetch.ts | 1 - .../__tests__/__snapshots__/pollingSubscription.ts.snap | 2 -- .../__tests__/__snapshots__/hooks-endpoint.web.tsx.snap | 5 ----- .../hooks/__tests__/__snapshots__/useDLE.native.tsx.snap | 4 ---- .../__tests__/__snapshots__/useFetch.native.tsx.snap | 4 ---- .../hooks/__tests__/__snapshots__/useFetch.web.tsx.snap | 4 ---- .../__tests__/__snapshots__/useSuspense.native.tsx.snap | 1 - .../__tests__/__snapshots__/useSuspense.web.tsx.snap | 1 - packages/react/src/server/createPersistedStore.tsx | 6 +++--- .../nextjs/DataProvider/createPersistedStoreServer.tsx | 8 ++++---- packages/ssr/src/createPersistedStore.tsx | 6 +++--- .../nextjs/DataProvider/createPersistedStoreServer.tsx | 8 ++++---- 14 files changed, 20 insertions(+), 38 deletions(-) create mode 100644 .changeset/wild-lobsters-raise.md diff --git a/.changeset/wild-lobsters-raise.md b/.changeset/wild-lobsters-raise.md new file mode 100644 index 000000000000..d4b1624a5a94 --- /dev/null +++ b/.changeset/wild-lobsters-raise.md @@ -0,0 +1,6 @@ +--- +'@data-client/core': minor +'@data-client/react': patch +--- + +Get rid of fetch action.meta.nm. This is not used anywhere. diff --git a/packages/core/src/actions.ts b/packages/core/src/actions.ts index addddfcb31ab..735648767aba 100644 --- a/packages/core/src/actions.ts +++ b/packages/core/src/actions.ts @@ -81,8 +81,6 @@ export interface FetchMeta { reject: (reason?: any) => void; promise: PromiseLike; createdAt: number; - // indicates whether network manager processed it - nm?: boolean; } export interface FetchAction = EndpointDefault> { diff --git a/packages/core/src/controller/createFetch.ts b/packages/core/src/controller/createFetch.ts index 0512cbf05eeb..b6e4e97299f6 100644 --- a/packages/core/src/controller/createFetch.ts +++ b/packages/core/src/controller/createFetch.ts @@ -26,7 +26,6 @@ export default function createFetch< reject, promise, createdAt: Date.now(), - nm: false, }; return { diff --git a/packages/core/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap b/packages/core/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap index d991b1a1bc89..b9ddd773aa88 100644 --- a/packages/core/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap +++ b/packages/core/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap @@ -13,7 +13,6 @@ exports[`PollingSubscription fresh data should call after period 1`] = ` "meta": { "args": [], "key": "test.com", - "nm": false, "promise": Promise {}, "reject": [Function], "resolve": [Function], @@ -31,7 +30,6 @@ exports[`PollingSubscription fresh data should call after period 2`] = ` "meta": { "args": [], "key": "test.com", - "nm": false, "promise": Promise {}, "reject": [Function], "resolve": [Function], diff --git a/packages/react/src/__tests__/__snapshots__/hooks-endpoint.web.tsx.snap b/packages/react/src/__tests__/__snapshots__/hooks-endpoint.web.tsx.snap index d1e067893192..37d976516063 100644 --- a/packages/react/src/__tests__/__snapshots__/hooks-endpoint.web.tsx.snap +++ b/packages/react/src/__tests__/__snapshots__/hooks-endpoint.web.tsx.snap @@ -42,7 +42,6 @@ exports[`useController.fetch should dispatch an action that fetches a create 1`] }, ], "key": "POST http://test.com/article-cooler", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -64,7 +63,6 @@ exports[`useController.fetch should dispatch an action that fetches a full updat }, ], "key": "PUT http://test.com/article-cooler/1", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -86,7 +84,6 @@ exports[`useController.fetch should dispatch an action that fetches a partial up }, ], "key": "PATCH http://test.com/article-cooler/1", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -105,7 +102,6 @@ exports[`useController.fetch should dispatch an action with updater in the meta }, ], "key": "POST http://test.com/article-cooler", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -124,7 +120,6 @@ exports[`useController.fetch should refresh get details 1`] = ` }, ], "key": "GET http://test.com/article-cooler/1", - "nm": false, "reject": [Function], "resolve": [Function], }, diff --git a/packages/react/src/hooks/__tests__/__snapshots__/useDLE.native.tsx.snap b/packages/react/src/hooks/__tests__/__snapshots__/useDLE.native.tsx.snap index bedd3de8984b..f5c6fed22f12 100644 --- a/packages/react/src/hooks/__tests__/__snapshots__/useDLE.native.tsx.snap +++ b/packages/react/src/hooks/__tests__/__snapshots__/useDLE.native.tsx.snap @@ -10,7 +10,6 @@ exports[`useDLE should dispatch singles 1`] = ` }, ], "key": "GET http://test.com/article-cooler/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -29,7 +28,6 @@ exports[`useDLE should dispatch with fetch shape defined dataExpiryLength 1`] = }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -48,7 +46,6 @@ exports[`useDLE should dispatch with fetch shape defined errorExpiryLength 1`] = }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -67,7 +64,6 @@ exports[`useDLE should dispatch with resource defined dataExpiryLength 1`] = ` }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, diff --git a/packages/react/src/hooks/__tests__/__snapshots__/useFetch.native.tsx.snap b/packages/react/src/hooks/__tests__/__snapshots__/useFetch.native.tsx.snap index 4b232509b6cc..5c0d263a2966 100644 --- a/packages/react/src/hooks/__tests__/__snapshots__/useFetch.native.tsx.snap +++ b/packages/react/src/hooks/__tests__/__snapshots__/useFetch.native.tsx.snap @@ -10,7 +10,6 @@ exports[`useFetch should dispatch singles 1`] = ` }, ], "key": "GET http://test.com/article-cooler/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -29,7 +28,6 @@ exports[`useFetch should dispatch with fetch shape defined dataExpiryLength 1`] }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -48,7 +46,6 @@ exports[`useFetch should dispatch with fetch shape defined errorExpiryLength 1`] }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -67,7 +64,6 @@ exports[`useFetch should dispatch with resource defined dataExpiryLength 1`] = ` }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, diff --git a/packages/react/src/hooks/__tests__/__snapshots__/useFetch.web.tsx.snap b/packages/react/src/hooks/__tests__/__snapshots__/useFetch.web.tsx.snap index 4b232509b6cc..5c0d263a2966 100644 --- a/packages/react/src/hooks/__tests__/__snapshots__/useFetch.web.tsx.snap +++ b/packages/react/src/hooks/__tests__/__snapshots__/useFetch.web.tsx.snap @@ -10,7 +10,6 @@ exports[`useFetch should dispatch singles 1`] = ` }, ], "key": "GET http://test.com/article-cooler/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -29,7 +28,6 @@ exports[`useFetch should dispatch with fetch shape defined dataExpiryLength 1`] }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -48,7 +46,6 @@ exports[`useFetch should dispatch with fetch shape defined errorExpiryLength 1`] }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, @@ -67,7 +64,6 @@ exports[`useFetch should dispatch with resource defined dataExpiryLength 1`] = ` }, ], "key": "GET http://test.com/article-static/5", - "nm": false, "reject": [Function], "resolve": [Function], }, diff --git a/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.native.tsx.snap b/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.native.tsx.snap index d27a11ab9a40..57967aa44cf2 100644 --- a/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.native.tsx.snap +++ b/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.native.tsx.snap @@ -118,7 +118,6 @@ exports[`useSuspense() should dispatch an action that fetches 1`] = ` }, ], "key": "GET http://test.com/article-cooler/5", - "nm": false, "reject": [Function], "resolve": [Function], }, diff --git a/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.web.tsx.snap b/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.web.tsx.snap index d27a11ab9a40..57967aa44cf2 100644 --- a/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.web.tsx.snap +++ b/packages/react/src/hooks/__tests__/__snapshots__/useSuspense.web.tsx.snap @@ -118,7 +118,6 @@ exports[`useSuspense() should dispatch an action that fetches 1`] = ` }, ], "key": "GET http://test.com/article-cooler/5", - "nm": false, "reject": [Function], "resolve": [Function], }, diff --git a/packages/react/src/server/createPersistedStore.tsx b/packages/react/src/server/createPersistedStore.tsx index 8924831753bc..d4f0702e875a 100644 --- a/packages/react/src/server/createPersistedStore.tsx +++ b/packages/react/src/server/createPersistedStore.tsx @@ -21,10 +21,10 @@ export default function createPersistedStore( ) { const controller = new Controller(); managers = managers ?? [new ReactNetworkManager()]; - const nm: NetworkManager = managers.find( + const networkManager: NetworkManager = managers.find( m => m instanceof NetworkManager, ) as any; - if (nm === undefined) + if (networkManager === undefined) throw new Error('managers must include a NetworkManager'); const reducer = createReducer(controller); const enhancer = applyMiddleware( @@ -43,7 +43,7 @@ export default function createPersistedStore( const getState = () => selector(store.getState()); let firstRender = true; function useReadyCacheState(): State { - const inFlightFetches = nm.allSettled(); + const inFlightFetches = networkManager.allSettled(); if (inFlightFetches) { firstRender = false; throw inFlightFetches; diff --git a/packages/react/src/server/nextjs/DataProvider/createPersistedStoreServer.tsx b/packages/react/src/server/nextjs/DataProvider/createPersistedStoreServer.tsx index 718403204d23..da2774860659 100644 --- a/packages/react/src/server/nextjs/DataProvider/createPersistedStoreServer.tsx +++ b/packages/react/src/server/nextjs/DataProvider/createPersistedStoreServer.tsx @@ -19,10 +19,10 @@ import SSRDataProvider from '../../SSRDataProvider.js'; export default function createPersistedStore(managers?: Manager[]) { const controller = new Controller(); managers = managers ?? [new ReactNetworkManager()]; - const nm: NetworkManager = managers.find( + const networkManager: NetworkManager = managers.find( m => m instanceof NetworkManager, ) as any; - if (nm === undefined) + if (networkManager === undefined) throw new Error('managers must include a NetworkManager'); const reducer = createReducer(controller); const enhancer = applyMiddleware( @@ -44,7 +44,7 @@ export default function createPersistedStore(managers?: Manager[]) { let firstRender = true; // eslint-disable-next-line no-constant-condition while (true) { - const inFlightFetches = nm.allSettled(); + const inFlightFetches = networkManager.allSettled(); if (inFlightFetches) { firstRender = false; await inFlightFetches; @@ -52,7 +52,7 @@ export default function createPersistedStore(managers?: Manager[]) { } if (firstRender) { firstRender = false; - // TODO: instead of waiting 10ms - see if we can wait until next part of react is streamed and race with nm getting new fetches + // TODO: instead of waiting 10ms - see if we can wait until next part of react is streamed and race with networkManager getting new fetches await new Promise(resolve => setTimeout(resolve, 10)); continue; } diff --git a/packages/ssr/src/createPersistedStore.tsx b/packages/ssr/src/createPersistedStore.tsx index e353a445d1f2..6bc6e710052a 100644 --- a/packages/ssr/src/createPersistedStore.tsx +++ b/packages/ssr/src/createPersistedStore.tsx @@ -16,10 +16,10 @@ const { createReducer, initialState, applyManager } = __INTERNAL__; export default function createPersistedStore(managers?: Manager[]) { const controller = new Controller(); managers = managers ?? [new NetworkManager()]; - const nm: NetworkManager = managers.find( + const networkManager: NetworkManager = managers.find( m => m instanceof NetworkManager, ) as any; - if (nm === undefined) + if (networkManager === undefined) throw new Error('managers must include a NetworkManager'); const reducer = createReducer(controller); const enhancer = applyMiddleware( @@ -38,7 +38,7 @@ export default function createPersistedStore(managers?: Manager[]) { const getState = () => selector(store.getState()); let firstRender = true; function useReadyCacheState(): State { - const inFlightFetches = nm.allSettled(); + const inFlightFetches = networkManager.allSettled(); if (inFlightFetches) { firstRender = false; throw inFlightFetches; diff --git a/packages/ssr/src/nextjs/DataProvider/createPersistedStoreServer.tsx b/packages/ssr/src/nextjs/DataProvider/createPersistedStoreServer.tsx index 188b057b4550..d5b9b86c6f18 100644 --- a/packages/ssr/src/nextjs/DataProvider/createPersistedStoreServer.tsx +++ b/packages/ssr/src/nextjs/DataProvider/createPersistedStoreServer.tsx @@ -16,10 +16,10 @@ const { createReducer, initialState, applyManager } = __INTERNAL__; export default function createPersistedStore(managers?: Manager[]) { const controller = new Controller(); managers = managers ?? [new NetworkManager()]; - const nm: NetworkManager = managers.find( + const networkManager: NetworkManager = managers.find( m => m instanceof NetworkManager, ) as any; - if (nm === undefined) + if (networkManager === undefined) throw new Error('managers must include a NetworkManager'); const reducer = createReducer(controller); const enhancer = applyMiddleware( @@ -41,7 +41,7 @@ export default function createPersistedStore(managers?: Manager[]) { let firstRender = true; // eslint-disable-next-line no-constant-condition while (true) { - const inFlightFetches = nm.allSettled(); + const inFlightFetches = networkManager.allSettled(); if (inFlightFetches) { firstRender = false; await inFlightFetches; @@ -49,7 +49,7 @@ export default function createPersistedStore(managers?: Manager[]) { } if (firstRender) { firstRender = false; - // TODO: instead of waiting 10ms - see if we can wait until next part of react is streamed and race with nm getting new fetches + // TODO: instead of waiting 10ms - see if we can wait until next part of react is streamed and race with networkManager getting new fetches await new Promise(resolve => setTimeout(resolve, 10)); continue; }