solid-swr-store
Version:
SolidJS bindings for swr-store
8 lines (7 loc) • 2.45 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/index.ts", "../../../src/use-swr-store.tsx"],
"sourcesContent": ["export * from './use-swr-store';\n", "import {\n createEffect,\n createResource,\n createSignal,\n onCleanup,\n Resource,\n} from 'solid-js';\nimport { MutationResult, SWRStore } from 'swr-store';\n\nexport interface UseSWRStoreOptions<T> {\n initialData?: T;\n shouldRevalidate?: boolean;\n hydrate?: boolean;\n}\n\nexport function useSWRStoreSuspenseless<T, P extends any[] = []>(\n store: SWRStore<T, P>,\n args: () => P,\n options: UseSWRStoreOptions<T>,\n): () => MutationResult<T> {\n const [result, setResult] = createSignal(store.get(args(), {\n shouldRevalidate: options.shouldRevalidate,\n initialData: options.initialData,\n hydrate: options.hydrate,\n }));\n\n createEffect(() => {\n const currentArgs = args();\n onCleanup(store.subscribe(currentArgs, () => {\n setResult(() => store.get(currentArgs, {\n shouldRevalidate: false,\n }));\n }));\n });\n\n return result;\n}\n\nexport function useSWRStore<T, P extends any[] = []>(\n store: SWRStore<T, P>,\n args: () => P,\n options: UseSWRStoreOptions<T>,\n): Resource<T | undefined> {\n const suspenseless = useSWRStoreSuspenseless(store, args, options);\n const [resource] = createResource(\n suspenseless,\n async (result): Promise<T> => {\n if (result.status === 'failure') {\n throw result.data;\n }\n return result.data;\n },\n 'initialData' in options ? {\n initialValue: options.initialData,\n ssrLoadFrom: 'initial',\n } : {},\n );\n return resource as Resource<T | undefined>;\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,sBAMO;AASA,SAAS,wBACd,OACA,MACA,SACyB;AACzB,QAAM,CAAC,QAAQ,SAAS,QAAI,8BAAa,MAAM,IAAI,KAAK,GAAG;AAAA,IACzD,kBAAkB,QAAQ;AAAA,IAC1B,aAAa,QAAQ;AAAA,IACrB,SAAS,QAAQ;AAAA,EACnB,CAAC,CAAC;AAEF,oCAAa,MAAM;AACjB,UAAM,cAAc,KAAK;AACzB,mCAAU,MAAM,UAAU,aAAa,MAAM;AAC3C,gBAAU,MAAM,MAAM,IAAI,aAAa;AAAA,QACrC,kBAAkB;AAAA,MACpB,CAAC,CAAC;AAAA,IACJ,CAAC,CAAC;AAAA,EACJ,CAAC;AAED,SAAO;AACT;AAEO,SAAS,YACd,OACA,MACA,SACyB;AACzB,QAAM,eAAe,wBAAwB,OAAO,MAAM,OAAO;AACjE,QAAM,CAAC,QAAQ,QAAI;AAAA,IACjB;AAAA,IACA,OAAO,WAAuB;AAC5B,UAAI,OAAO,WAAW,WAAW;AAC/B,cAAM,OAAO;AAAA,MACf;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,iBAAiB,UAAU;AAAA,MACzB,cAAc,QAAQ;AAAA,MACtB,aAAa;AAAA,IACf,IAAI,CAAC;AAAA,EACP;AACA,SAAO;AACT;",
"names": []
}