diff --git a/README.md b/README.md index 1a069947..b2c171b5 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,16 @@ -# xswr - -The God tier React data (re)fetching library +![](https://user-images.githubusercontent.com/4405263/198129674-d7beabc9-61ed-43ab-852f-ab317c51f1f9.png) ```bash npm i @hazae41/xswr ``` -[**Read the docs ๐Ÿ“š**](https://xswr.hazae41.me) โ€ข [**Try it online ๐Ÿš€**](https://test.xswr.hazae41.me) โ€ข [**Comparison with other libs ๐Ÿ’ฉ**](https://xswr.hazae41.me/faq/comparison) +[**Read the docs ๐Ÿ“š**](https://xswr.hazae41.me) โ€ข [**Try it online ๐Ÿš€**](https://test.xswr.hazae41.me) โ€ข [**Next.js CodeSandbox ๐Ÿชฃ**](https://codesandbox.io/p/sandbox/misty-butterfly-64m881) โ€ข [**Comparison with other libs ๐ŸŒ**](https://xswr.hazae41.me/faq/comparison) ## Philosophy ๐Ÿง  xswr uses two new approaches compared to other data fetching libraries like swr or react-query: 1) Encapsulating key+fetcher+params in a single abstraction called schema. -2) Composing features with very simple hooks instead of having bloated configuration and unexpected behaviours. +2) Composing features with very simple hooks instead of having bloated configuration and unexpected behaviors. ## Features ๐Ÿ”ฅ @@ -64,13 +62,13 @@ function MyWrapper() { } ``` -# Your first mix ๐Ÿงช +## Your first mix ๐Ÿงช When using xswr and its composition-based hooks, you create a mix and only include the ingredients you want. We'll do a request at `/api/data` using JSON, display it with a loading, and automatically refetch it. -## Create a fetcher โšก๏ธ +### Create a fetcher โšก๏ธ It will just take an url, fetch it, and return the data. @@ -82,22 +80,23 @@ async function fetchAsJson(url: string) { } ``` -## Create a mix ๐ŸŒช +### Create a mix ๐ŸŒช -Then create a mix using a handle and some blocks. +Then create a mix using a query and some blocks. ```tsx function useHello() { - const handle = XSWR.useSingle(`/api/hello`, fetchAsJson) + const query = useSingleQuery(`/api/hello`, fetchAsJson) - XSWR.useFetch(handle) // Fetch on mount and on url change - XSWR.useVisible(handle) // Fetch when the page becomes visible - XSWR.useOnline(handle) // Fetch when the browser becomes online - return handle + useFetch(query) // Fetch on mount and on url change + useVisible(query) // Fetch when the page becomes visible + useOnline(query) // Fetch when the browser becomes online + + return query } ``` -## Use it in your components ๐Ÿš€ +### Use it in your components ๐Ÿš€ ```tsx function MyApp() { @@ -111,16 +110,16 @@ function MyApp() { } ``` -# Advanced example +## Advanced example ๐Ÿ—ฟ Last example was good, but here is the best way to use XSWR. -## Making our fetcher cancellable โšก๏ธ +### Making our fetcher cancellable โšก๏ธ Our fetcher was good, but this one can be aborted. ```tsx -async function fetchAsJson(url: string, more: XSWR.FetcherMore) { +async function fetchAsJson(url: string, more: FetcherMore) { const { signal } = more const res = await fetch(url, { signal }) @@ -137,43 +136,43 @@ async function fetchAsJson(url: string, more: XSWR.FetcherMore) { It also returns an error if the request failed. -## Defining schemas ๐Ÿ“ +### Defining schemas ๐Ÿ“ Using schemas may seems boilerplate, but it will save you a lot of time later. ```tsx function getHelloSchema() { - return XSWR.single("/api/hello", fetchAsJson) + return getSingleSchema("/api/hello", fetchAsJson) } ``` It allows you to reuse the same set of key+fetcher+params in multiple places, including imperative code. -## Creating mixtures ๐Ÿงช +### Creating mixtures ๐Ÿงช The mixtures pattern allows you to reuse the same group of blocks. ```tsx -function useAutoFetchMixture(handle: XSWR.Handle) { - XSWR.useFetch(handle) - XSWR.useVisible(handle) - XSWR.useOnline(handle) +function useAutoFetchMixture(query: Query) { + useFetch(query) + useVisible(query) + useOnline(query) } ``` -## Mixing it ๐ŸŒช +### Mixing it ๐ŸŒช Once you got a schema and a mixture, you just have to mix it. ```tsx function useHelloMix() { - const handle = XSWR.use(getHelloSchema, []) - useAutoFetchMixture(handle) - return handle + const query = useQuery(getHelloSchema, []) + useAutoFetchMixture(query) + return query } ``` -## Use it in your app ๐Ÿš€ +### Use it in your app ๐Ÿš€ ```tsx function MyApp() { @@ -187,5 +186,4 @@ function MyApp() { } ``` -[**Read the docs ๐Ÿ“š**](https://xswr.hazae41.me) โ€ข [**Try it online ๐Ÿš€**](https://test.xswr.hazae41.me) โ€ข [**Comparison with other libs ๐Ÿ’ฉ**](https://xswr.hazae41.me/faq/comparison) - +[**Read the docs ๐Ÿ“š**](https://xswr.hazae41.me) โ€ข [**Try it online ๐Ÿš€**](https://test.xswr.hazae41.me) โ€ข [**Next.js CodeSandbox ๐Ÿชฃ**](https://codesandbox.io/p/sandbox/misty-butterfly-64m881) โ€ข [**Comparison with other libs ๐ŸŒ**](https://xswr.hazae41.me/faq/comparison) diff --git a/dist/cjs/index.cjs b/dist/cjs/index.cjs deleted file mode 100644 index 595b913c..00000000 --- a/dist/cjs/index.cjs +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var index = require('./mods/index.cjs'); - - - -exports.XSWR = index; -//# sourceMappingURL=index.cjs.map diff --git a/dist/cjs/index.cjs.map b/dist/cjs/index.cjs.map deleted file mode 100644 index fbd72e2c..00000000 --- a/dist/cjs/index.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/index.js b/dist/cjs/index.js new file mode 100644 index 00000000..4b992950 --- /dev/null +++ b/dist/cjs/index.js @@ -0,0 +1,85 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var index = require('./mods/index.js'); +var core = require('./mods/core.js'); +var abort = require('./mods/errors/abort.js'); +var core$1 = require('./mods/react/contexts/core.js'); +var useDebug = require('./mods/react/hooks/blocks/use-debug.js'); +var useError = require('./mods/react/hooks/blocks/use-error.js'); +var useFallback = require('./mods/react/hooks/blocks/use-fallback.js'); +var useFetch = require('./mods/react/hooks/blocks/use-fetch.js'); +var useInterval = require('./mods/react/hooks/blocks/use-interval.js'); +var useMount = require('./mods/react/hooks/blocks/use-mount.js'); +var useOnce = require('./mods/react/hooks/blocks/use-once.js'); +var useOnline = require('./mods/react/hooks/blocks/use-online.js'); +var useRetry = require('./mods/react/hooks/blocks/use-retry.js'); +var useVisible = require('./mods/react/hooks/blocks/use-visible.js'); +var router = require('./mods/react/hooks/queries/router.js'); +var scroll = require('./mods/react/hooks/queries/scroll.js'); +var single = require('./mods/react/hooks/queries/single.js'); +var xswr = require('./mods/react/hooks/xswr.js'); +var helper = require('./mods/scroll/helper.js'); +var instance = require('./mods/scroll/instance.js'); +var schema = require('./mods/scroll/schema.js'); +var helper$1 = require('./mods/single/helper.js'); +var instance$1 = require('./mods/single/instance.js'); +var schema$1 = require('./mods/single/schema.js'); +var async = require('./mods/storages/idb/async.js'); +var async$1 = require('./mods/storages/localStorage/async.js'); +var sync = require('./mods/storages/localStorage/sync.js'); +var storage = require('./mods/types/storage.js'); +var defaults = require('./mods/utils/defaults.js'); +var equals = require('./mods/utils/equals.js'); + + + +exports.XSWR = index; +exports.Core = core.Core; +exports.AbortError = abort.AbortError; +exports.isAbortError = abort.isAbortError; +exports.CoreContext = core$1.CoreContext; +exports.CoreProvider = core$1.CoreProvider; +exports.useCore = core$1.useCore; +exports.useCoreProvider = core$1.useCoreProvider; +exports.useDebug = useDebug.useDebug; +exports.useError = useError.useError; +exports.useFallback = useFallback.useFallback; +exports.useFetch = useFetch.useFetch; +exports.useInterval = useInterval.useInterval; +exports.useMount = useMount.useMount; +exports.useOnce = useOnce.useOnce; +exports.useOnline = useOnline.useOnline; +exports.useRetry = useRetry.useRetry; +exports.useVisible = useVisible.useVisible; +exports.useQuery = router.useQuery; +exports.useScrollQuery = scroll.useScrollQuery; +exports.useSingleQuery = single.useSingleQuery; +exports.useXSWR = xswr.useXSWR; +exports.ScrollHelper = helper.ScrollHelper; +exports.ScrollInstance = instance.ScrollInstance; +exports.getScrollStorageKey = instance.getScrollStorageKey; +exports.ScrollSchema = schema.ScrollSchema; +exports.getScrollSchema = schema.getScrollSchema; +exports.SingleHelper = helper$1.SingleHelper; +exports.SingleInstance = instance$1.SingleInstance; +exports.getSingleStorageKey = instance$1.getSingleStorageKey; +exports.SingleSchema = schema$1.SingleSchema; +exports.getSingleSchema = schema$1.getSingleSchema; +exports.IDBStorage = async.IDBStorage; +exports.useIDBStorage = async.useIDBStorage; +exports.AsyncLocalStorage = async$1.AsyncLocalStorage; +exports.useAsyncLocalStorage = async$1.useAsyncLocalStorage; +exports.SyncLocalStorage = sync.SyncLocalStorage; +exports.useSyncLocalStorage = sync.useSyncLocalStorage; +exports.isAsyncStorage = storage.isAsyncStorage; +exports.DEFAULT_COOLDOWN = defaults.DEFAULT_COOLDOWN; +exports.DEFAULT_EQUALS = defaults.DEFAULT_EQUALS; +exports.DEFAULT_EXPIRATION = defaults.DEFAULT_EXPIRATION; +exports.DEFAULT_SERIALIZER = defaults.DEFAULT_SERIALIZER; +exports.DEFAULT_TIMEOUT = defaults.DEFAULT_TIMEOUT; +exports.jsonEquals = equals.jsonEquals; +exports.refEquals = equals.refEquals; +exports.shallowEquals = equals.shallowEquals; +//# sourceMappingURL=index.js.map diff --git a/dist/cjs/index.js.map b/dist/cjs/index.js.map new file mode 100644 index 00000000..f2551e41 --- /dev/null +++ b/dist/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/arrays.cjs.map b/dist/cjs/libs/arrays.cjs.map deleted file mode 100644 index 8b0730fe..00000000 --- a/dist/cjs/libs/arrays.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"arrays.cjs","sources":["../../../src/libs/arrays.ts"],"sourcesContent":["export function lastOf(array: T[]) {\n if (array.length) return array[array.length - 1]\n}"],"names":[],"mappings":";;;;AAAM,SAAU,MAAM,CAAI,KAAU,EAAA;IAClC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAClD;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/arrays.cjs b/dist/cjs/libs/arrays.js similarity index 84% rename from dist/cjs/libs/arrays.cjs rename to dist/cjs/libs/arrays.js index 741b2e5b..de802d94 100644 --- a/dist/cjs/libs/arrays.cjs +++ b/dist/cjs/libs/arrays.js @@ -8,4 +8,4 @@ function lastOf(array) { } exports.lastOf = lastOf; -//# sourceMappingURL=arrays.cjs.map +//# sourceMappingURL=arrays.js.map diff --git a/dist/cjs/libs/arrays.js.map b/dist/cjs/libs/arrays.js.map new file mode 100644 index 00000000..e8747419 --- /dev/null +++ b/dist/cjs/libs/arrays.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrays.js","sources":["../../../src/libs/arrays.ts"],"sourcesContent":["export function lastOf(array: T[]) {\n if (array.length) return array[array.length - 1]\n}"],"names":[],"mappings":";;;;AAAM,SAAU,MAAM,CAAI,KAAU,EAAA;IAClC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAClD;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/generator.cjs b/dist/cjs/libs/generator.cjs deleted file mode 100644 index 1ad71dd7..00000000 --- a/dist/cjs/libs/generator.cjs +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var tslib = require('tslib'); - -function returnOf(generator) { - return tslib.__awaiter(this, void 0, void 0, function () { - var next; - return tslib.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, generator.next()]; - case 1: - next = _a.sent(); - if (next.done) - return [2 /*return*/, next.value]; - return [2 /*return*/]; - } - }); - }); -} - -exports.returnOf = returnOf; -//# sourceMappingURL=generator.cjs.map diff --git a/dist/cjs/libs/generator.cjs.map b/dist/cjs/libs/generator.cjs.map deleted file mode 100644 index 3bdd6939..00000000 --- a/dist/cjs/libs/generator.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.cjs","sources":["../../../src/libs/generator.ts"],"sourcesContent":["export async function nextOf(generator: AsyncGenerator) {\n const next = await generator.next()\n if (!next.done) return next.value\n}\n\nexport async function returnOf(generator: AsyncGenerator) {\n const next = await generator.next()\n if (next.done) return next.value\n}"],"names":[],"mappings":";;;;;;AAKM,SAAgB,QAAQ,CAAO,SAA+B,EAAA;;;;;AACrD,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,SAAS,CAAC,IAAI,EAAE,CAAA,CAAA;;AAA7B,oBAAA,IAAI,GAAG,EAAsB,CAAA,IAAA,EAAA,CAAA;oBACnC,IAAI,IAAI,CAAC,IAAI;wBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;;;;AACjC;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/ortho.cjs.map b/dist/cjs/libs/ortho.cjs.map deleted file mode 100644 index 844787c4..00000000 --- a/dist/cjs/libs/ortho.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ortho.cjs","sources":["../../../src/libs/ortho.ts"],"sourcesContent":["\n/**\n * Map of arrays data structure\n */\nexport class MapOfArrays {\n private map = new Map()\n\n get(key: K) {\n return this.map.get(key)\n }\n\n push(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) this.map.set(key, [value])\n else values.push(value)\n }\n\n erase(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) return\n const values2 = values\n .filter(it => it !== value)\n if (values2.length)\n this.map.set(key, values2)\n else\n this.map.delete(key)\n }\n}\n\n/**\n * Orthogonal state publisher\n */\nexport class Ortho {\n private listeners = new MapOfArrays void>()\n\n publish(key: K, value: S) {\n const listeners = this.listeners.get(key)\n if (!listeners) return\n\n for (const listener of listeners)\n listener(value)\n }\n\n on(key: K, listener: (x: S) => void) {\n this.listeners.push(key, listener)\n }\n\n off(key: K, listener: (x: S) => void) {\n this.listeners.erase(key, listener)\n }\n}\n"],"names":["__values"],"mappings":";;;;;;AACA;;AAEG;AACH,IAAA,WAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;KAsBhC;IApBC,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAM,EAAA;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACzB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,GAAM,EAAE,KAAQ,EAAA;QACnB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAM,EAAE,KAAQ,EAAA;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAM,OAAO,GAAG,MAAM;aACnB,MAAM,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,KAAK,KAAK,CAAA,EAAA,CAAC,CAAA;QAC7B,IAAI,OAAO,CAAC,MAAM;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAE1B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACvB,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,EAAA;AAED;;AAEG;AACH,IAAA,KAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,KAAA,GAAA;AACU,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,WAAW,EAAqB,CAAA;KAiBzD;AAfC,IAAA,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,GAAM,EAAE,KAAQ,EAAA;;QACtB,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzC,QAAA,IAAI,CAAC,SAAS;YAAE,OAAM;;AAEtB,YAAA,KAAuB,IAAA,WAAA,GAAAA,cAAA,CAAA,SAAS,CAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA;AAA3B,gBAAA,IAAM,QAAQ,GAAA,aAAA,CAAA,KAAA,CAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAA;AAAA,aAAA;;;;;;;;;KAClB,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,EAAE,GAAF,UAAG,GAAM,EAAE,QAAwB,EAAA;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACnC,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,GAAM,EAAE,QAAwB,EAAA;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACpC,CAAA;IACH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/ortho.cjs b/dist/cjs/libs/ortho.js similarity index 98% rename from dist/cjs/libs/ortho.cjs rename to dist/cjs/libs/ortho.js index 48798c39..759475d9 100644 --- a/dist/cjs/libs/ortho.cjs +++ b/dist/cjs/libs/ortho.js @@ -71,4 +71,4 @@ var Ortho = /** @class */ (function () { exports.MapOfArrays = MapOfArrays; exports.Ortho = Ortho; -//# sourceMappingURL=ortho.cjs.map +//# sourceMappingURL=ortho.js.map diff --git a/dist/cjs/libs/ortho.js.map b/dist/cjs/libs/ortho.js.map new file mode 100644 index 00000000..21bb77b9 --- /dev/null +++ b/dist/cjs/libs/ortho.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ortho.js","sources":["../../../src/libs/ortho.ts"],"sourcesContent":["\n/**\n * Map of arrays data structure\n */\nexport class MapOfArrays {\n private map = new Map()\n\n get(key: K) {\n return this.map.get(key)\n }\n\n push(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) this.map.set(key, [value])\n else values.push(value)\n }\n\n erase(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) return\n const values2 = values\n .filter(it => it !== value)\n if (values2.length)\n this.map.set(key, values2)\n else\n this.map.delete(key)\n }\n}\n\n/**\n * Orthogonal state publisher\n */\nexport class Ortho {\n private listeners = new MapOfArrays void>()\n\n publish(key: K, value: S) {\n const listeners = this.listeners.get(key)\n if (!listeners) return\n\n for (const listener of listeners)\n listener(value)\n }\n\n on(key: K, listener: (x: S) => void) {\n this.listeners.push(key, listener)\n }\n\n off(key: K, listener: (x: S) => void) {\n this.listeners.erase(key, listener)\n }\n}\n"],"names":["__values"],"mappings":";;;;;;AACA;;AAEG;AACH,IAAA,WAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;KAsBhC;IApBC,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAM,EAAA;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACzB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,GAAM,EAAE,KAAQ,EAAA;QACnB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAM,EAAE,KAAQ,EAAA;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAM,OAAO,GAAG,MAAM;aACnB,MAAM,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,KAAK,KAAK,CAAA,EAAA,CAAC,CAAA;QAC7B,IAAI,OAAO,CAAC,MAAM;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAE1B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACvB,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,EAAA;AAED;;AAEG;AACH,IAAA,KAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,KAAA,GAAA;AACU,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,WAAW,EAAqB,CAAA;KAiBzD;AAfC,IAAA,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,GAAM,EAAE,KAAQ,EAAA;;QACtB,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzC,QAAA,IAAI,CAAC,SAAS;YAAE,OAAM;;AAEtB,YAAA,KAAuB,IAAA,WAAA,GAAAA,cAAA,CAAA,SAAS,CAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA;AAA3B,gBAAA,IAAM,QAAQ,GAAA,aAAA,CAAA,KAAA,CAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAA;AAAA,aAAA;;;;;;;;;KAClB,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,EAAE,GAAF,UAAG,GAAM,EAAE,QAAwB,EAAA;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACnC,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,GAAM,EAAE,QAAwB,EAAA;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACpC,CAAA;IACH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/react.cjs.map b/dist/cjs/libs/react.cjs.map deleted file mode 100644 index 9f37c6ea..00000000 --- a/dist/cjs/libs/react.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"react.cjs","sources":["../../../src/libs/react.ts"],"sourcesContent":["import { ReactNode, useRef } from \"react\";\n\nexport interface ChildrenProps {\n children?: ReactNode\n}\n\nexport function useAutoRef(current: T) {\n const ref = useRef(current)\n ref.current = current\n return ref\n}"],"names":["useRef"],"mappings":";;;;;;AAMM,SAAU,UAAU,CAAI,OAAU,EAAA;AACtC,IAAA,IAAM,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,CAAA;AAC3B,IAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;AACrB,IAAA,OAAO,GAAG,CAAA;AACZ;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/react.cjs b/dist/cjs/libs/react.js similarity index 88% rename from dist/cjs/libs/react.cjs rename to dist/cjs/libs/react.js index efe316f7..fb9fbf91 100644 --- a/dist/cjs/libs/react.cjs +++ b/dist/cjs/libs/react.js @@ -11,4 +11,4 @@ function useAutoRef(current) { } exports.useAutoRef = useAutoRef; -//# sourceMappingURL=react.cjs.map +//# sourceMappingURL=react.js.map diff --git a/dist/cjs/libs/react.js.map b/dist/cjs/libs/react.js.map new file mode 100644 index 00000000..c2eb5ce5 --- /dev/null +++ b/dist/cjs/libs/react.js.map @@ -0,0 +1 @@ +{"version":3,"file":"react.js","sources":["../../../src/libs/react.ts"],"sourcesContent":["import { ReactNode, useRef } from \"react\";\n\nexport interface ChildrenProps {\n children?: ReactNode\n}\n\nexport function useAutoRef(current: T) {\n const ref = useRef(current)\n ref.current = current\n return ref\n}"],"names":["useRef"],"mappings":";;;;;;AAMM,SAAU,UAAU,CAAI,OAAU,EAAA;AACtC,IAAA,IAAM,GAAG,GAAGA,YAAM,CAAC,OAAO,CAAC,CAAA;AAC3B,IAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;AACrB,IAAA,OAAO,GAAG,CAAA;AACZ;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/time.cjs.map b/dist/cjs/libs/time.cjs.map deleted file mode 100644 index ab4a4458..00000000 --- a/dist/cjs/libs/time.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"time.cjs","sources":["../../../src/libs/time.ts"],"sourcesContent":["export function getTimeFromDelay(delay: number) {\n if (delay === -1) return\n return Date.now() + delay\n}"],"names":[],"mappings":";;;;AAAM,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAM;AACxB,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;AAC3B;;;;"} \ No newline at end of file diff --git a/dist/cjs/libs/time.cjs b/dist/cjs/libs/time.js similarity index 87% rename from dist/cjs/libs/time.cjs rename to dist/cjs/libs/time.js index 62076f65..9fde2be7 100644 --- a/dist/cjs/libs/time.cjs +++ b/dist/cjs/libs/time.js @@ -9,4 +9,4 @@ function getTimeFromDelay(delay) { } exports.getTimeFromDelay = getTimeFromDelay; -//# sourceMappingURL=time.cjs.map +//# sourceMappingURL=time.js.map diff --git a/dist/cjs/libs/time.js.map b/dist/cjs/libs/time.js.map new file mode 100644 index 00000000..6b67dad1 --- /dev/null +++ b/dist/cjs/libs/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sources":["../../../src/libs/time.ts"],"sourcesContent":["export function getTimeFromDelay(delay: number) {\n if (delay === -1) return\n return Date.now() + delay\n}"],"names":[],"mappings":";;;;AAAM,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAM;AACxB,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;AAC3B;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/core.cjs.map b/dist/cjs/mods/core.cjs.map deleted file mode 100644 index 7be6e68f..00000000 --- a/dist/cjs/mods/core.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"core.cjs","sources":["../../../src/mods/core.ts"],"sourcesContent":["import { Ortho } from \"libs/ortho.js\"\nimport { ScrollHelper } from \"mods/scroll/helper.js\"\nimport { SingleHelper } from \"mods/single/helper.js\"\nimport { Mutator } from \"mods/types/mutator.js\"\nimport { Params } from \"mods/types/params.js\"\nimport { State } from \"mods/types/state.js\"\nimport { isAsyncStorage } from \"mods/types/storage.js\"\nimport { DEFAULT_EQUALS } from \"mods/utils/defaults.js\"\nimport { shallowEquals } from \"mods/utils/equals.js\"\nimport { Lock } from \"mods/utils/lock.js\"\n\nexport type Listener =\n (x?: State) => void\n\nexport class Core extends Ortho {\n readonly single = new SingleHelper(this)\n readonly scroll = new ScrollHelper(this)\n\n readonly cache = new Map()\n readonly locks = new Map()\n\n private _mounted = true\n\n constructor(\n readonly params: Params\n ) { super() }\n\n get mounted() { return this._mounted }\n\n unmount() {\n for (const timeout of this.timeouts.values())\n clearTimeout(timeout)\n this._mounted = false\n }\n\n async lock(skey: string, callback: () => Promise) {\n const lock = this.locks.get(skey)\n\n if (lock !== undefined)\n return await lock.lock(callback)\n\n const lock2 = new Lock()\n this.locks.set(skey, lock2)\n return await lock2.lock(callback)\n }\n\n getSync(\n skey: string | undefined,\n params: Params = {}\n ): State | undefined | null {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n if (isAsyncStorage(storage))\n return null\n const state = storage.get(skey)\n this.cache.set(skey, state)\n return state\n }\n\n async get(\n skey: string | undefined,\n params: Params = {},\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n const state = await storage.get(skey, ignore)\n this.cache.set(skey, state)\n return state\n }\n\n /**\n * Force set a key to a state and publish it\n * No check, no merge\n * @param skey Key\n * @param state New state\n * @returns \n */\n async set(\n skey: string | undefined,\n state: State,\n params: Params = {}\n ) {\n if (skey === undefined) return\n\n this.cache.set(skey, state)\n this.publish(skey, state)\n\n const { storage } = params\n if (!storage) return\n const { data, time, cooldown, expiration } = state\n await storage.set(skey, { data, time, cooldown, expiration })\n }\n\n /**\n * Delete key and publish undefined\n * @param skey \n * @returns \n */\n async delete(\n skey: string | undefined,\n params: Params = {}\n ) {\n if (!skey) return\n\n this.cache.delete(skey)\n this.locks.delete(skey)\n this.publish(skey, undefined)\n\n const { storage } = params\n if (!storage) return\n await storage.delete(skey)\n }\n\n async mutate(\n skey: string | undefined,\n current: State | undefined,\n mutator: Mutator,\n params: Params = {}\n ): Promise | undefined> {\n if (skey === undefined) return\n const state = mutator(current)\n\n if (!state) {\n await this.delete(skey, params)\n return\n }\n\n if (state.time !== undefined && state.time < (current?.time ?? 0))\n return current\n\n if (state.optimistic === undefined && current?.optimistic)\n return current\n\n const {\n equals = DEFAULT_EQUALS\n } = params\n\n const next: State = {\n ...current,\n ...state\n }\n\n next.data = await this.normalize(false, next, params)\n\n if (next.time === undefined)\n next.time = Date.now()\n if (equals(next.data, current?.data))\n next.data = current?.data\n if (!next.optimistic)\n next.realData = next.data\n\n if (shallowEquals(next, current))\n return current\n await this.set(skey, next, params)\n return next as State\n }\n\n async normalize(\n shallow: boolean,\n root: State,\n params: Params = {},\n ) {\n if (root.data === undefined) return\n if (params.normalizer === undefined) return root.data\n return await params.normalizer(root.data, { core: this, shallow, root })\n }\n\n /**\n * True if we should cooldown this resource\n */\n shouldCooldown(\n current?: State\n ) {\n if (current?.cooldown === undefined)\n return false\n return Date.now() < current.cooldown\n }\n\n counts = new Map()\n timeouts = new Map()\n\n once(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n const f: Listener = (x) => {\n this.off(key, f, params)\n listener(x)\n }\n\n this.on(key, f, params)\n }\n\n on(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.on(key, listener)\n\n const count = this.counts.get(key) ?? 0\n this.counts.set(key, count + 1)\n\n const timeout = this.timeouts.get(key)\n if (timeout === undefined) return\n\n clearTimeout(timeout)\n this.timeouts.delete(key)\n }\n\n async off(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.off(key, listener)\n\n const count = this.counts.get(key)\n\n if (count === undefined)\n throw new Error(\"Undefined count\")\n\n if (count > 1) {\n this.counts.set(key, count - 1)\n return\n }\n\n this.counts.delete(key)\n\n const current = await this.get(key, params, true)\n if (current?.expiration === undefined) return\n if (current?.expiration === -1) return\n\n const erase = async () => {\n if (!this._mounted) return\n\n const count = this.counts.get(key)\n if (count !== undefined) return\n\n this.timeouts.delete(key)\n await this.delete(key, params)\n }\n\n if (Date.now() > current.expiration) {\n await erase()\n return\n }\n\n const delay = current.expiration - Date.now()\n const timeout = setTimeout(erase, delay)\n this.timeouts.set(key, timeout)\n }\n}"],"names":["__extends","SingleHelper","ScrollHelper","__values","lock","Lock","storage","isAsyncStorage","equals","DEFAULT_EQUALS","__assign","shallowEquals","__awaiter","Ortho"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/core.cjs b/dist/cjs/mods/core.js similarity index 97% rename from dist/cjs/mods/core.cjs rename to dist/cjs/mods/core.js index aedf2a5e..bba67ffa 100644 --- a/dist/cjs/mods/core.cjs +++ b/dist/cjs/mods/core.js @@ -3,13 +3,13 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var ortho = require('../libs/ortho.cjs'); -var helper$1 = require('./scroll/helper.cjs'); -var helper = require('./single/helper.cjs'); -var storage = require('./types/storage.cjs'); -var defaults = require('./utils/defaults.cjs'); -var equals = require('./utils/equals.cjs'); -var lock = require('./utils/lock.cjs'); +var ortho = require('../libs/ortho.js'); +var helper$1 = require('./scroll/helper.js'); +var helper = require('./single/helper.js'); +var storage = require('./types/storage.js'); +var defaults = require('./utils/defaults.js'); +var equals = require('./utils/equals.js'); +var lock = require('./utils/lock.js'); var Core = /** @class */ (function (_super) { tslib.__extends(Core, _super); @@ -318,4 +318,4 @@ var Core = /** @class */ (function (_super) { }(ortho.Ortho)); exports.Core = Core; -//# sourceMappingURL=core.cjs.map +//# sourceMappingURL=core.js.map diff --git a/dist/cjs/mods/core.js.map b/dist/cjs/mods/core.js.map new file mode 100644 index 00000000..1a200b53 --- /dev/null +++ b/dist/cjs/mods/core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"core.js","sources":["../../../src/mods/core.ts"],"sourcesContent":["import { Ortho } from \"libs/ortho.js\"\nimport { ScrollHelper } from \"mods/scroll/helper.js\"\nimport { SingleHelper } from \"mods/single/helper.js\"\nimport { Mutator } from \"mods/types/mutator.js\"\nimport { Params } from \"mods/types/params.js\"\nimport { State } from \"mods/types/state.js\"\nimport { isAsyncStorage } from \"mods/types/storage.js\"\nimport { DEFAULT_EQUALS } from \"mods/utils/defaults.js\"\nimport { shallowEquals } from \"mods/utils/equals.js\"\nimport { Lock } from \"mods/utils/lock.js\"\n\nexport type Listener =\n (x?: State) => void\n\nexport class Core extends Ortho {\n readonly single = new SingleHelper(this)\n readonly scroll = new ScrollHelper(this)\n\n readonly cache = new Map()\n readonly locks = new Map()\n\n private _mounted = true\n\n constructor(\n readonly params: Params\n ) { super() }\n\n get mounted() { return this._mounted }\n\n unmount() {\n for (const timeout of this.timeouts.values())\n clearTimeout(timeout)\n this._mounted = false\n }\n\n async lock(skey: string, callback: () => Promise) {\n const lock = this.locks.get(skey)\n\n if (lock !== undefined)\n return await lock.lock(callback)\n\n const lock2 = new Lock()\n this.locks.set(skey, lock2)\n return await lock2.lock(callback)\n }\n\n getSync(\n skey: string | undefined,\n params: Params = {}\n ): State | undefined | null {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n if (isAsyncStorage(storage))\n return null\n const state = storage.get(skey)\n this.cache.set(skey, state)\n return state\n }\n\n async get(\n skey: string | undefined,\n params: Params = {},\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n const state = await storage.get(skey, ignore)\n this.cache.set(skey, state)\n return state\n }\n\n /**\n * Force set a key to a state and publish it\n * No check, no merge\n * @param skey Key\n * @param state New state\n * @returns \n */\n async set(\n skey: string | undefined,\n state: State,\n params: Params = {}\n ) {\n if (skey === undefined) return\n\n this.cache.set(skey, state)\n this.publish(skey, state)\n\n const { storage } = params\n if (!storage) return\n const { data, time, cooldown, expiration } = state\n await storage.set(skey, { data, time, cooldown, expiration })\n }\n\n /**\n * Delete key and publish undefined\n * @param skey \n * @returns \n */\n async delete(\n skey: string | undefined,\n params: Params = {}\n ) {\n if (!skey) return\n\n this.cache.delete(skey)\n this.locks.delete(skey)\n this.publish(skey, undefined)\n\n const { storage } = params\n if (!storage) return\n await storage.delete(skey)\n }\n\n async mutate(\n skey: string | undefined,\n current: State | undefined,\n mutator: Mutator,\n params: Params = {}\n ): Promise | undefined> {\n if (skey === undefined) return\n const state = mutator(current)\n\n if (!state) {\n await this.delete(skey, params)\n return\n }\n\n if (state.time !== undefined && state.time < (current?.time ?? 0))\n return current\n\n if (state.optimistic === undefined && current?.optimistic)\n return current\n\n const {\n equals = DEFAULT_EQUALS\n } = params\n\n const next: State = {\n ...current,\n ...state\n }\n\n next.data = await this.normalize(false, next, params)\n\n if (next.time === undefined)\n next.time = Date.now()\n if (equals(next.data, current?.data))\n next.data = current?.data\n if (!next.optimistic)\n next.realData = next.data\n\n if (shallowEquals(next, current))\n return current\n await this.set(skey, next, params)\n return next as State\n }\n\n async normalize(\n shallow: boolean,\n root: State,\n params: Params = {},\n ) {\n if (root.data === undefined) return\n if (params.normalizer === undefined) return root.data\n return await params.normalizer(root.data, { core: this, shallow, root })\n }\n\n /**\n * True if we should cooldown this resource\n */\n shouldCooldown(\n current?: State\n ) {\n if (current?.cooldown === undefined)\n return false\n return Date.now() < current.cooldown\n }\n\n counts = new Map()\n timeouts = new Map()\n\n once(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n const f: Listener = (x) => {\n this.off(key, f, params)\n listener(x)\n }\n\n this.on(key, f, params)\n }\n\n on(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.on(key, listener)\n\n const count = this.counts.get(key) ?? 0\n this.counts.set(key, count + 1)\n\n const timeout = this.timeouts.get(key)\n if (timeout === undefined) return\n\n clearTimeout(timeout)\n this.timeouts.delete(key)\n }\n\n async off(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.off(key, listener)\n\n const count = this.counts.get(key)\n\n if (count === undefined)\n throw new Error(\"Undefined count\")\n\n if (count > 1) {\n this.counts.set(key, count - 1)\n return\n }\n\n this.counts.delete(key)\n\n const current = await this.get(key, params, true)\n if (current?.expiration === undefined) return\n if (current?.expiration === -1) return\n\n const erase = async () => {\n if (!this._mounted) return\n\n const count = this.counts.get(key)\n if (count !== undefined) return\n\n this.timeouts.delete(key)\n await this.delete(key, params)\n }\n\n if (Date.now() > current.expiration) {\n await erase()\n return\n }\n\n const delay = current.expiration - Date.now()\n const timeout = setTimeout(erase, delay)\n this.timeouts.set(key, timeout)\n }\n}"],"names":["__extends","SingleHelper","ScrollHelper","__values","lock","Lock","storage","isAsyncStorage","equals","DEFAULT_EQUALS","__assign","shallowEquals","__awaiter","Ortho"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/errors/abort.cjs.map b/dist/cjs/mods/errors/abort.cjs.map deleted file mode 100644 index 16f87677..00000000 --- a/dist/cjs/mods/errors/abort.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"abort.cjs","sources":["../../../../src/mods/errors/abort.ts"],"sourcesContent":["export class AbortError extends Error {\n constructor(signal: AbortSignal) {\n super(`Aborted: ${signal.reason}`, { cause: signal })\n }\n}\n\nexport function isAbortError(e: unknown): e is AbortError | DOMException {\n if (e instanceof AbortError)\n return true\n if (e instanceof DOMException && e.name === \"AbortError\")\n return true\n return false\n}\n"],"names":["__extends"],"mappings":";;;;;;AAAA,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgCA,eAAK,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AACnC,IAAA,SAAA,UAAA,CAAY,MAAmB,EAAA;eAC7B,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,WAAA,CAAA,MAAA,CAAY,MAAM,CAAC,MAAM,CAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAA,IAAA,CAAA;KACtD;IACH,OAAC,UAAA,CAAA;AAAD,CAJA,CAAgC,KAAK,CAIpC,EAAA;AAEK,SAAU,YAAY,CAAC,CAAU,EAAA;IACrC,IAAI,CAAC,YAAY,UAAU;AACzB,QAAA,OAAO,IAAI,CAAA;IACb,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;AACtD,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,OAAO,KAAK,CAAA;AACd;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/errors/abort.cjs b/dist/cjs/mods/errors/abort.js similarity index 94% rename from dist/cjs/mods/errors/abort.cjs rename to dist/cjs/mods/errors/abort.js index 9d331653..af2a2415 100644 --- a/dist/cjs/mods/errors/abort.cjs +++ b/dist/cjs/mods/errors/abort.js @@ -21,4 +21,4 @@ function isAbortError(e) { exports.AbortError = AbortError; exports.isAbortError = isAbortError; -//# sourceMappingURL=abort.cjs.map +//# sourceMappingURL=abort.js.map diff --git a/dist/cjs/mods/errors/abort.js.map b/dist/cjs/mods/errors/abort.js.map new file mode 100644 index 00000000..801590fa --- /dev/null +++ b/dist/cjs/mods/errors/abort.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abort.js","sources":["../../../../src/mods/errors/abort.ts"],"sourcesContent":["export class AbortError extends Error {\n constructor(signal: AbortSignal) {\n super(`Aborted: ${signal.reason}`, { cause: signal })\n }\n}\n\nexport function isAbortError(e: unknown): e is AbortError | DOMException {\n if (e instanceof AbortError)\n return true\n if (e instanceof DOMException && e.name === \"AbortError\")\n return true\n return false\n}\n"],"names":["__extends"],"mappings":";;;;;;AAAA,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgCA,eAAK,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AACnC,IAAA,SAAA,UAAA,CAAY,MAAmB,EAAA;eAC7B,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,WAAA,CAAA,MAAA,CAAY,MAAM,CAAC,MAAM,CAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAA,IAAA,CAAA;KACtD;IACH,OAAC,UAAA,CAAA;AAAD,CAJA,CAAgC,KAAK,CAIpC,EAAA;AAEK,SAAU,YAAY,CAAC,CAAU,EAAA;IACrC,IAAI,CAAC,YAAY,UAAU;AACzB,QAAA,OAAO,IAAI,CAAA;IACb,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;AACtD,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,OAAO,KAAK,CAAA;AACd;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/index.cjs b/dist/cjs/mods/index.cjs deleted file mode 100644 index 31a96c48..00000000 --- a/dist/cjs/mods/index.cjs +++ /dev/null @@ -1,83 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var core = require('./core.cjs'); -var abort = require('./errors/abort.cjs'); -var core$1 = require('./react/contexts/core.cjs'); -var useDebug = require('./react/hooks/blocks/use-debug.cjs'); -var useError = require('./react/hooks/blocks/use-error.cjs'); -var useFallback = require('./react/hooks/blocks/use-fallback.cjs'); -var useFetch = require('./react/hooks/blocks/use-fetch.cjs'); -var useInterval = require('./react/hooks/blocks/use-interval.cjs'); -var useMount = require('./react/hooks/blocks/use-mount.cjs'); -var useOnce = require('./react/hooks/blocks/use-once.cjs'); -var useOnline = require('./react/hooks/blocks/use-online.cjs'); -var useRetry = require('./react/hooks/blocks/use-retry.cjs'); -var useVisible = require('./react/hooks/blocks/use-visible.cjs'); -var router = require('./react/hooks/handles/router.cjs'); -var scroll = require('./react/hooks/handles/scroll.cjs'); -var single = require('./react/hooks/handles/single.cjs'); -var xswr = require('./react/hooks/xswr.cjs'); -var helper = require('./scroll/helper.cjs'); -var object = require('./scroll/object.cjs'); -var schema = require('./scroll/schema.cjs'); -var helper$1 = require('./single/helper.cjs'); -var object$1 = require('./single/object.cjs'); -var schema$1 = require('./single/schema.cjs'); -var async = require('./storages/idb/async.cjs'); -var async$1 = require('./storages/localStorage/async.cjs'); -var sync = require('./storages/localStorage/sync.cjs'); -var storage = require('./types/storage.cjs'); -var defaults = require('./utils/defaults.cjs'); -var equals = require('./utils/equals.cjs'); - - - -exports.Core = core.Core; -exports.AbortError = abort.AbortError; -exports.isAbortError = abort.isAbortError; -exports.CoreContext = core$1.CoreContext; -exports.CoreProvider = core$1.CoreProvider; -exports.useCore = core$1.useCore; -exports.useCoreProvider = core$1.useCoreProvider; -exports.useDebug = useDebug.useDebug; -exports.useError = useError.useError; -exports.useFallback = useFallback.useFallback; -exports.useFetch = useFetch.useFetch; -exports.useInterval = useInterval.useInterval; -exports.useMount = useMount.useMount; -exports.useOnce = useOnce.useOnce; -exports.useOnline = useOnline.useOnline; -exports.useRetry = useRetry.useRetry; -exports.useVisible = useVisible.useVisible; -exports.use = router.use; -exports.useScroll = scroll.useScroll; -exports.useSingle = single.useSingle; -exports.useXSWR = xswr.useXSWR; -exports.ScrollHelper = helper.ScrollHelper; -exports.ScrollObject = object.ScrollObject; -exports.getScrollStorageKey = object.getScrollStorageKey; -exports.ScrollSchema = schema.ScrollSchema; -exports.scroll = schema.scroll; -exports.SingleHelper = helper$1.SingleHelper; -exports.SingleObject = object$1.SingleObject; -exports.getSingleStorageKey = object$1.getSingleStorageKey; -exports.SingleSchema = schema$1.SingleSchema; -exports.single = schema$1.single; -exports.IDBStorage = async.IDBStorage; -exports.useIDBStorage = async.useIDBStorage; -exports.AsyncLocalStorage = async$1.AsyncLocalStorage; -exports.useAsyncLocalStorage = async$1.useAsyncLocalStorage; -exports.SyncLocalStorage = sync.SyncLocalStorage; -exports.useSyncLocalStorage = sync.useSyncLocalStorage; -exports.isAsyncStorage = storage.isAsyncStorage; -exports.DEFAULT_COOLDOWN = defaults.DEFAULT_COOLDOWN; -exports.DEFAULT_EQUALS = defaults.DEFAULT_EQUALS; -exports.DEFAULT_EXPIRATION = defaults.DEFAULT_EXPIRATION; -exports.DEFAULT_SERIALIZER = defaults.DEFAULT_SERIALIZER; -exports.DEFAULT_TIMEOUT = defaults.DEFAULT_TIMEOUT; -exports.jsonEquals = equals.jsonEquals; -exports.refEquals = equals.refEquals; -exports.shallowEquals = equals.shallowEquals; -//# sourceMappingURL=index.cjs.map diff --git a/dist/cjs/mods/index.cjs.map b/dist/cjs/mods/index.cjs.map deleted file mode 100644 index b74dc621..00000000 --- a/dist/cjs/mods/index.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/index.js b/dist/cjs/mods/index.js new file mode 100644 index 00000000..751637f9 --- /dev/null +++ b/dist/cjs/mods/index.js @@ -0,0 +1,83 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var core = require('./core.js'); +var abort = require('./errors/abort.js'); +var core$1 = require('./react/contexts/core.js'); +var useDebug = require('./react/hooks/blocks/use-debug.js'); +var useError = require('./react/hooks/blocks/use-error.js'); +var useFallback = require('./react/hooks/blocks/use-fallback.js'); +var useFetch = require('./react/hooks/blocks/use-fetch.js'); +var useInterval = require('./react/hooks/blocks/use-interval.js'); +var useMount = require('./react/hooks/blocks/use-mount.js'); +var useOnce = require('./react/hooks/blocks/use-once.js'); +var useOnline = require('./react/hooks/blocks/use-online.js'); +var useRetry = require('./react/hooks/blocks/use-retry.js'); +var useVisible = require('./react/hooks/blocks/use-visible.js'); +var router = require('./react/hooks/queries/router.js'); +var scroll = require('./react/hooks/queries/scroll.js'); +var single = require('./react/hooks/queries/single.js'); +var xswr = require('./react/hooks/xswr.js'); +var helper = require('./scroll/helper.js'); +var instance = require('./scroll/instance.js'); +var schema = require('./scroll/schema.js'); +var helper$1 = require('./single/helper.js'); +var instance$1 = require('./single/instance.js'); +var schema$1 = require('./single/schema.js'); +var async = require('./storages/idb/async.js'); +var async$1 = require('./storages/localStorage/async.js'); +var sync = require('./storages/localStorage/sync.js'); +var storage = require('./types/storage.js'); +var defaults = require('./utils/defaults.js'); +var equals = require('./utils/equals.js'); + + + +exports.Core = core.Core; +exports.AbortError = abort.AbortError; +exports.isAbortError = abort.isAbortError; +exports.CoreContext = core$1.CoreContext; +exports.CoreProvider = core$1.CoreProvider; +exports.useCore = core$1.useCore; +exports.useCoreProvider = core$1.useCoreProvider; +exports.useDebug = useDebug.useDebug; +exports.useError = useError.useError; +exports.useFallback = useFallback.useFallback; +exports.useFetch = useFetch.useFetch; +exports.useInterval = useInterval.useInterval; +exports.useMount = useMount.useMount; +exports.useOnce = useOnce.useOnce; +exports.useOnline = useOnline.useOnline; +exports.useRetry = useRetry.useRetry; +exports.useVisible = useVisible.useVisible; +exports.useQuery = router.useQuery; +exports.useScrollQuery = scroll.useScrollQuery; +exports.useSingleQuery = single.useSingleQuery; +exports.useXSWR = xswr.useXSWR; +exports.ScrollHelper = helper.ScrollHelper; +exports.ScrollInstance = instance.ScrollInstance; +exports.getScrollStorageKey = instance.getScrollStorageKey; +exports.ScrollSchema = schema.ScrollSchema; +exports.getScrollSchema = schema.getScrollSchema; +exports.SingleHelper = helper$1.SingleHelper; +exports.SingleInstance = instance$1.SingleInstance; +exports.getSingleStorageKey = instance$1.getSingleStorageKey; +exports.SingleSchema = schema$1.SingleSchema; +exports.getSingleSchema = schema$1.getSingleSchema; +exports.IDBStorage = async.IDBStorage; +exports.useIDBStorage = async.useIDBStorage; +exports.AsyncLocalStorage = async$1.AsyncLocalStorage; +exports.useAsyncLocalStorage = async$1.useAsyncLocalStorage; +exports.SyncLocalStorage = sync.SyncLocalStorage; +exports.useSyncLocalStorage = sync.useSyncLocalStorage; +exports.isAsyncStorage = storage.isAsyncStorage; +exports.DEFAULT_COOLDOWN = defaults.DEFAULT_COOLDOWN; +exports.DEFAULT_EQUALS = defaults.DEFAULT_EQUALS; +exports.DEFAULT_EXPIRATION = defaults.DEFAULT_EXPIRATION; +exports.DEFAULT_SERIALIZER = defaults.DEFAULT_SERIALIZER; +exports.DEFAULT_TIMEOUT = defaults.DEFAULT_TIMEOUT; +exports.jsonEquals = equals.jsonEquals; +exports.refEquals = equals.refEquals; +exports.shallowEquals = equals.shallowEquals; +//# sourceMappingURL=index.js.map diff --git a/dist/cjs/mods/index.js.map b/dist/cjs/mods/index.js.map new file mode 100644 index 00000000..127dd6b5 --- /dev/null +++ b/dist/cjs/mods/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/contexts/core.cjs.map b/dist/cjs/mods/react/contexts/core.cjs.map deleted file mode 100644 index a6faf8a5..00000000 --- a/dist/cjs/mods/react/contexts/core.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"core.cjs","sources":["../../../../../src/mods/react/contexts/core.tsx"],"sourcesContent":["import { ChildrenProps } from \"libs/react.js\"\nimport { Core } from \"mods/core.js\"\nimport { Params } from \"mods/types/params.js\"\nimport * as React from \"react\"\nimport { createContext, useContext, useEffect, useRef } from \"react\"\n\nexport const CoreContext =\n createContext(undefined)\n\nexport function useCore() {\n const core = useContext(CoreContext)\n if (core === undefined)\n throw new Error(\"Undefined core\")\n return core\n}\n\nexport function useCoreProvider(params: Params) {\n const coreRef = useRef()\n\n if (coreRef.current === undefined)\n coreRef.current = new Core(params)\n\n useEffect(() => () => {\n coreRef.current?.unmount()\n }, [])\n\n return coreRef.current\n}\n\nexport function CoreProvider(props: ChildrenProps & Params) {\n const { children, ...params } = props\n\n const core = useCoreProvider(params)\n\n return \n {children}\n \n}"],"names":["createContext","useContext","useRef","Core","useEffect","__rest","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMa,WAAW,GACtBA,mBAAa,CAAmB,SAAS,EAAC;SAE5B,OAAO,GAAA;AACrB,IAAA,IAAM,IAAI,GAAGC,gBAAU,CAAC,WAAW,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,SAAS;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACnC,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAU,eAAe,CAAC,MAAc,EAAA;AAC5C,IAAA,IAAM,OAAO,GAAGC,YAAM,EAAQ,CAAA;AAE9B,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAIC,SAAI,CAAC,MAAM,CAAC,CAAA;IAEpCC,eAAS,CAAC,cAAM,OAAA,YAAA;;AACd,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;AAC5B,KAAC,CAFe,EAEf,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAEK,SAAU,YAAY,CAAC,KAA6B,EAAA;IAChD,IAAA,QAAQ,GAAgB,KAAK,CAArB,QAAA,EAAK,MAAM,GAAAC,YAAA,CAAK,KAAK,EAA/B,CAAuB,UAAA,CAAA,CAAF,CAAU;AAErC,IAAA,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAOC,gBAAA,CAAA,aAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA,EACrC,QAAQ,CACY,CAAA;AACzB;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/contexts/core.cjs b/dist/cjs/mods/react/contexts/core.js similarity index 95% rename from dist/cjs/mods/react/contexts/core.cjs rename to dist/cjs/mods/react/contexts/core.js index f61546a9..2a8acc7c 100644 --- a/dist/cjs/mods/react/contexts/core.cjs +++ b/dist/cjs/mods/react/contexts/core.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var core = require('../../core.cjs'); +var core = require('../../core.js'); var React = require('react'); function _interopNamespace(e) { @@ -53,4 +53,4 @@ exports.CoreContext = CoreContext; exports.CoreProvider = CoreProvider; exports.useCore = useCore; exports.useCoreProvider = useCoreProvider; -//# sourceMappingURL=core.cjs.map +//# sourceMappingURL=core.js.map diff --git a/dist/cjs/mods/react/contexts/core.js.map b/dist/cjs/mods/react/contexts/core.js.map new file mode 100644 index 00000000..149dada4 --- /dev/null +++ b/dist/cjs/mods/react/contexts/core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"core.js","sources":["../../../../../src/mods/react/contexts/core.tsx"],"sourcesContent":["import { ChildrenProps } from \"libs/react.js\"\nimport { Core } from \"mods/core.js\"\nimport { Params } from \"mods/types/params.js\"\nimport * as React from \"react\"\nimport { createContext, useContext, useEffect, useRef } from \"react\"\n\nexport const CoreContext =\n createContext(undefined)\n\nexport function useCore() {\n const core = useContext(CoreContext)\n if (core === undefined)\n throw new Error(\"Undefined core\")\n return core\n}\n\nexport function useCoreProvider(params: Params) {\n const coreRef = useRef()\n\n if (coreRef.current === undefined)\n coreRef.current = new Core(params)\n\n useEffect(() => () => {\n coreRef.current?.unmount()\n }, [])\n\n return coreRef.current\n}\n\nexport function CoreProvider(props: ChildrenProps & Params) {\n const { children, ...params } = props\n\n const core = useCoreProvider(params)\n\n return \n {children}\n \n}"],"names":["createContext","useContext","useRef","Core","useEffect","__rest","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMa,WAAW,GACtBA,mBAAa,CAAmB,SAAS,EAAC;SAE5B,OAAO,GAAA;AACrB,IAAA,IAAM,IAAI,GAAGC,gBAAU,CAAC,WAAW,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,SAAS;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACnC,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAU,eAAe,CAAC,MAAc,EAAA;AAC5C,IAAA,IAAM,OAAO,GAAGC,YAAM,EAAQ,CAAA;AAE9B,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAIC,SAAI,CAAC,MAAM,CAAC,CAAA;IAEpCC,eAAS,CAAC,cAAM,OAAA,YAAA;;AACd,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;AAC5B,KAAC,CAFe,EAEf,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAEK,SAAU,YAAY,CAAC,KAA6B,EAAA;IAChD,IAAA,QAAQ,GAAgB,KAAK,CAArB,QAAA,EAAK,MAAM,GAAAC,YAAA,CAAK,KAAK,EAA/B,CAAuB,UAAA,CAAA,CAAF,CAAU;AAErC,IAAA,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAOC,gBAAA,CAAA,aAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA,EACrC,QAAQ,CACY,CAAA;AACzB;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-debug.cjs b/dist/cjs/mods/react/hooks/blocks/use-debug.cjs deleted file mode 100644 index 2afdfc17..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-debug.cjs +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var React = require('react'); - -/** - * Show handle in console when it changes - * @param handle - */ -function useDebug(handle, label) { - var data = handle.data, error = handle.error, time = handle.time; - React.useEffect(function () { - console.debug(label, handle); - }, [data, error, time]); -} - -exports.useDebug = useDebug; -//# sourceMappingURL=use-debug.cjs.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-debug.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-debug.cjs.map deleted file mode 100644 index 52199987..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-debug.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-debug.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-debug.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Show handle in console when it changes\n * @param handle \n */\nexport function useDebug(\n handle: Handle,\n label: string\n) {\n const { data, error, time, } = handle\n\n useEffect(() => {\n console.debug(label, handle)\n }, [data, error, time])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;AAGG;AACa,SAAA,QAAQ,CACtB,MAAuB,EACvB,KAAa,EAAA;AAEL,IAAA,IAAA,IAAI,GAAmB,MAAM,CAAA,IAAzB,EAAE,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,IAAI,GAAM,MAAM,KAAZ,CAAY;AAErC,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC7B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACzB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-debug.js b/dist/cjs/mods/react/hooks/blocks/use-debug.js new file mode 100644 index 00000000..7a03ce32 --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-debug.js @@ -0,0 +1,19 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var React = require('react'); + +/** + * Show query in console when it changes + * @param query + */ +function useDebug(query, label) { + var data = query.data, error = query.error, time = query.time; + React.useEffect(function () { + console.debug(label, query); + }, [data, error, time]); +} + +exports.useDebug = useDebug; +//# sourceMappingURL=use-debug.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-debug.js.map b/dist/cjs/mods/react/hooks/blocks/use-debug.js.map new file mode 100644 index 00000000..2a7489c1 --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-debug.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-debug.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-debug.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Show query in console when it changes\n * @param query \n */\nexport function useDebug(query: Query, label: string) {\n const { data, error, time } = query\n\n useEffect(() => {\n console.debug(label, query)\n }, [data, error, time])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;AAGG;AACa,SAAA,QAAQ,CAAC,KAAY,EAAE,KAAa,EAAA;AAC1C,IAAA,IAAA,IAAI,GAAkB,KAAK,CAAA,IAAvB,EAAE,KAAK,GAAW,KAAK,CAAA,KAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAU;AAEnC,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAC5B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACzB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-error.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-error.cjs.map deleted file mode 100644 index 1b6564d8..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-error.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-error.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-error.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Call a function on error\n * @param handle \n * @param callback \n */\nexport function useError(\n handle: Handle,\n callback: (e: E) => void\n) {\n const { error } = handle\n\n useEffect(() => {\n if (error !== undefined) callback(error)\n }, [error])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;AAIG;AACa,SAAA,QAAQ,CACtB,MAAuB,EACvB,QAAwB,EAAA;AAEhB,IAAA,IAAA,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAExB,IAAAA,eAAS,CAAC,YAAA;QACR,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-error.cjs b/dist/cjs/mods/react/hooks/blocks/use-error.js similarity index 71% rename from dist/cjs/mods/react/hooks/blocks/use-error.cjs rename to dist/cjs/mods/react/hooks/blocks/use-error.js index a8b735cc..03aa4bee 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-error.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-error.js @@ -6,11 +6,11 @@ var React = require('react'); /** * Call a function on error - * @param handle + * @param query * @param callback */ -function useError(handle, callback) { - var error = handle.error; +function useError(query, callback) { + var error = query.error; React.useEffect(function () { if (error !== undefined) callback(error); @@ -18,4 +18,4 @@ function useError(handle, callback) { } exports.useError = useError; -//# sourceMappingURL=use-error.cjs.map +//# sourceMappingURL=use-error.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-error.js.map b/dist/cjs/mods/react/hooks/blocks/use-error.js.map new file mode 100644 index 00000000..766f5379 --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-error.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-error.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Call a function on error\n * @param query \n * @param callback \n */\nexport function useError(\n query: Query,\n callback: (e: E) => void\n) {\n const { error } = query\n\n useEffect(() => {\n if (error !== undefined) callback(error)\n }, [error])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;AAIG;AACa,SAAA,QAAQ,CACtB,KAAqB,EACrB,QAAwB,EAAA;AAEhB,IAAA,IAAA,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAEvB,IAAAA,eAAS,CAAC,YAAA;QACR,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-fallback.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-fallback.cjs.map deleted file mode 100644 index e0d45ead..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-fallback.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-fallback.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-fallback.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { State } from \"mods/types/state.js\"\n\n/**\n * Fallback to given data/error if there is no data/error\n * @example You got some data/error using SSR/ISR and want to display it on first render\n * @example You still want to display something even if the fetcher returned nothing\n * @param handle \n * @param state \n */\nexport function useFallback(\n handle: Handle,\n state?: State\n) {\n const { data, error } = handle\n\n if (data !== undefined) return\n if (error !== undefined) return\n Object.assign(handle, state)\n}"],"names":[],"mappings":";;;;AAGA;;;;;;AAMG;AACa,SAAA,WAAW,CACzB,MAAuB,EACvB,KAAsB,EAAA;IAEd,IAAA,IAAI,GAAY,MAAM,CAAA,IAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;IAE9B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;AAC/B,IAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAC9B;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-fallback.cjs b/dist/cjs/mods/react/hooks/blocks/use-fallback.js similarity index 71% rename from dist/cjs/mods/react/hooks/blocks/use-fallback.cjs rename to dist/cjs/mods/react/hooks/blocks/use-fallback.js index a29abedf..f76b5036 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-fallback.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-fallback.js @@ -6,17 +6,17 @@ Object.defineProperty(exports, '__esModule', { value: true }); * Fallback to given data/error if there is no data/error * @example You got some data/error using SSR/ISR and want to display it on first render * @example You still want to display something even if the fetcher returned nothing - * @param handle + * @param query * @param state */ -function useFallback(handle, state) { - var data = handle.data, error = handle.error; +function useFallback(query, state) { + var data = query.data, error = query.error; if (data !== undefined) return; if (error !== undefined) return; - Object.assign(handle, state); + Object.assign(query, state); } exports.useFallback = useFallback; -//# sourceMappingURL=use-fallback.cjs.map +//# sourceMappingURL=use-fallback.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-fallback.js.map b/dist/cjs/mods/react/hooks/blocks/use-fallback.js.map new file mode 100644 index 00000000..1515ed1c --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-fallback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-fallback.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-fallback.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { State } from \"mods/types/state.js\"\n\n/**\n * Fallback to given data/error if there is no data/error\n * @example You got some data/error using SSR/ISR and want to display it on first render\n * @example You still want to display something even if the fetcher returned nothing\n * @param query \n * @param state \n */\nexport function useFallback(\n query: Query,\n state?: State\n) {\n const { data, error } = query\n\n if (data !== undefined) return\n if (error !== undefined) return\n Object.assign(query, state)\n}"],"names":[],"mappings":";;;;AAGA;;;;;;AAMG;AACa,SAAA,WAAW,CACzB,KAAqB,EACrB,KAAsB,EAAA;IAEd,IAAA,IAAI,GAAY,KAAK,CAAA,IAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;IAE7B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;AAC/B,IAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7B;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-fetch.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-fetch.cjs.map deleted file mode 100644 index 15a3d8f7..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-fetch.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-fetch.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-fetch.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change\n * @see useMount for doing a request on mount only\n * @see useOnce for doing a request only if there is no data yet\n * @param handle \n */\nexport function useFetch(handle: Handle) {\n const { fetch } = handle\n\n useEffect(() => {\n fetch()\n }, [fetch])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,MAAc,EAAA;AAC7B,IAAA,IAAA,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAExB,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;AACT,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-fetch.cjs b/dist/cjs/mods/react/hooks/blocks/use-fetch.js similarity index 76% rename from dist/cjs/mods/react/hooks/blocks/use-fetch.cjs rename to dist/cjs/mods/react/hooks/blocks/use-fetch.js index 0c990b24..f1b18896 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-fetch.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-fetch.js @@ -8,14 +8,14 @@ var React = require('react'); * Do a request on mount and url change * @see useMount for doing a request on mount only * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -function useFetch(handle) { - var fetch = handle.fetch; +function useFetch(query) { + var fetch = query.fetch; React.useEffect(function () { fetch(); }, [fetch]); } exports.useFetch = useFetch; -//# sourceMappingURL=use-fetch.cjs.map +//# sourceMappingURL=use-fetch.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-fetch.js.map b/dist/cjs/mods/react/hooks/blocks/use-fetch.js.map new file mode 100644 index 00000000..616f4e2d --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-fetch.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-fetch.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change\n * @see useMount for doing a request on mount only\n * @see useOnce for doing a request only if there is no data yet\n * @param query \n */\nexport function useFetch(query: Query) {\n const { fetch } = query\n\n useEffect(() => {\n fetch()\n }, [fetch])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,KAAY,EAAA;AAC3B,IAAA,IAAA,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAEvB,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;AACT,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-interval.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-interval.cjs.map deleted file mode 100644 index 75b6d340..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-interval.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-interval.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-interval.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on interval\n * @see useRetry for error retry\n * @param handle \n * @param options \n */\nexport function useInterval(handle: Handle, interval: number) {\n const { ready, fetch } = handle\n\n useEffect(() => {\n if (!ready) return\n if (!interval) return\n\n const i = setInterval(fetch, interval)\n return () => clearInterval(i)\n }, [fetch, interval])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACa,SAAA,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAA;IAClD,IAAA,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE/B,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAClB,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,IAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACtC,OAAO,YAAA,EAAM,OAAA,aAAa,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC/B,KAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-interval.cjs b/dist/cjs/mods/react/hooks/blocks/use-interval.js similarity index 73% rename from dist/cjs/mods/react/hooks/blocks/use-interval.cjs rename to dist/cjs/mods/react/hooks/blocks/use-interval.js index 19eb2892..d6f1c0ab 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-interval.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-interval.js @@ -7,11 +7,11 @@ var React = require('react'); /** * Do a request on interval * @see useRetry for error retry - * @param handle - * @param options + * @param query + * @param interval */ -function useInterval(handle, interval) { - var ready = handle.ready, fetch = handle.fetch; +function useInterval(query, interval) { + var ready = query.ready, fetch = query.fetch; React.useEffect(function () { if (!ready) return; @@ -23,4 +23,4 @@ function useInterval(handle, interval) { } exports.useInterval = useInterval; -//# sourceMappingURL=use-interval.cjs.map +//# sourceMappingURL=use-interval.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-interval.js.map b/dist/cjs/mods/react/hooks/blocks/use-interval.js.map new file mode 100644 index 00000000..811056ee --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-interval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-interval.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-interval.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on interval\n * @see useRetry for error retry\n * @param query \n * @param interval \n */\nexport function useInterval(query: Query, interval: number) {\n const { ready, fetch } = query\n\n useEffect(() => {\n if (!ready) return\n if (!interval) return\n\n const i = setInterval(fetch, interval)\n return () => clearInterval(i)\n }, [fetch, interval])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACa,SAAA,WAAW,CAAC,KAAY,EAAE,QAAgB,EAAA;IAChD,IAAA,KAAK,GAAY,KAAK,CAAA,KAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE9B,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAClB,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,IAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACtC,OAAO,YAAA,EAAM,OAAA,aAAa,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC/B,KAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-mount.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-mount.cjs.map deleted file mode 100644 index fd89ffcd..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-mount.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-mount.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-mount.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount only\n * @see useFetch for doing a request on url change\n * @see useOnce for doing a request only if there is no data yet\n * @param handle \n */\nexport function useMount(handle: Handle) {\n const { fetch } = handle\n\n useEffect(() => {\n fetch()\n }, [])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,MAAc,EAAA;AAC7B,IAAA,IAAA,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAExB,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;KACR,EAAE,EAAE,CAAC,CAAA;AACR;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-mount.cjs b/dist/cjs/mods/react/hooks/blocks/use-mount.js similarity index 75% rename from dist/cjs/mods/react/hooks/blocks/use-mount.cjs rename to dist/cjs/mods/react/hooks/blocks/use-mount.js index 4edb3e68..c4a3e648 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-mount.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-mount.js @@ -8,14 +8,14 @@ var React = require('react'); * Do a request on mount only * @see useFetch for doing a request on url change * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -function useMount(handle) { - var fetch = handle.fetch; +function useMount(query) { + var fetch = query.fetch; React.useEffect(function () { fetch(); }, []); } exports.useMount = useMount; -//# sourceMappingURL=use-mount.cjs.map +//# sourceMappingURL=use-mount.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-mount.js.map b/dist/cjs/mods/react/hooks/blocks/use-mount.js.map new file mode 100644 index 00000000..f4c40d55 --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-mount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-mount.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-mount.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount only\n * @see useFetch for doing a request on url change\n * @see useOnce for doing a request only if there is no data yet\n * @param query \n */\nexport function useMount(query: Query) {\n const { fetch } = query\n\n useEffect(() => {\n fetch()\n }, [])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,KAAY,EAAA;AAC3B,IAAA,IAAA,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAEvB,IAAAA,eAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;KACR,EAAE,EAAE,CAAC,CAAA;AACR;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-once.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-once.cjs.map deleted file mode 100644 index 0805daf6..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-once.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-once.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-once.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change only if there is no data yet\n * @warning Will still try to fetch is there is an error\n * @param handle \n * @example You want to get some data once and share it in multiple components\n */\nexport function useOnce(handle: Handle) {\n const { data, fetch } = handle\n\n useEffect(() => {\n if (data === undefined) fetch()\n }, [data, fetch])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACG,SAAU,OAAO,CAAC,MAAc,EAAA;IAC5B,IAAA,IAAI,GAAY,MAAM,CAAA,IAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE9B,IAAAA,eAAS,CAAC,YAAA;QACR,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,KAAK,EAAE,CAAA;AACjC,KAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACnB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-once.cjs b/dist/cjs/mods/react/hooks/blocks/use-once.js similarity index 77% rename from dist/cjs/mods/react/hooks/blocks/use-once.cjs rename to dist/cjs/mods/react/hooks/blocks/use-once.js index 9d5a5c1c..a171c91b 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-once.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-once.js @@ -7,11 +7,11 @@ var React = require('react'); /** * Do a request on mount and url change only if there is no data yet * @warning Will still try to fetch is there is an error - * @param handle + * @param query * @example You want to get some data once and share it in multiple components */ -function useOnce(handle) { - var data = handle.data, fetch = handle.fetch; +function useOnce(query) { + var data = query.data, fetch = query.fetch; React.useEffect(function () { if (data === undefined) fetch(); @@ -19,4 +19,4 @@ function useOnce(handle) { } exports.useOnce = useOnce; -//# sourceMappingURL=use-once.cjs.map +//# sourceMappingURL=use-once.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-once.js.map b/dist/cjs/mods/react/hooks/blocks/use-once.js.map new file mode 100644 index 00000000..6269b6ca --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-once.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-once.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-once.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change only if there is no data yet\n * @warning Will still try to fetch is there is an error\n * @param query \n * @example You want to get some data once and share it in multiple components\n */\nexport function useOnce(query: Query) {\n const { data, fetch } = query\n\n useEffect(() => {\n if (data === undefined) fetch()\n }, [data, fetch])\n}"],"names":["useEffect"],"mappings":";;;;;;AAGA;;;;;AAKG;AACG,SAAU,OAAO,CAAC,KAAY,EAAA;IAC1B,IAAA,IAAI,GAAY,KAAK,CAAA,IAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE7B,IAAAA,eAAS,CAAC,YAAA;QACR,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,KAAK,EAAE,CAAA;AACjC,KAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACnB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-online.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-online.cjs.map deleted file mode 100644 index a513c463..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-online.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-online.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-online.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the browser is online\n * @param handle \n */\nexport function useOnline(handle: Handle) {\n const { ready, fetch } = handle\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => fetchRef.current()\n\n addEventListener(\"online\", f)\n return () => removeEventListener(\"online\", f)\n }, [ready])\n}"],"names":["useAutoRef","useEffect"],"mappings":";;;;;;;AAIA;;;AAGG;AACG,SAAU,SAAS,CAAC,MAAc,EAAA;IAC9B,IAAA,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE/B,IAAA,IAAM,QAAQ,GAAGA,gBAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAAC,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAM,CAAC,GAAG,YAAA,EAAM,OAAA,QAAQ,CAAC,OAAO,EAAE,CAAlB,EAAkB,CAAA;AAElC,QAAA,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7B,OAAO,YAAA,EAAM,OAAA,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAhC,EAAgC,CAAA;AAC/C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-online.cjs b/dist/cjs/mods/react/hooks/blocks/use-online.js similarity index 72% rename from dist/cjs/mods/react/hooks/blocks/use-online.cjs rename to dist/cjs/mods/react/hooks/blocks/use-online.js index 22b546bd..4d32300d 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-online.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-online.js @@ -2,15 +2,15 @@ Object.defineProperty(exports, '__esModule', { value: true }); -var react = require('../../../../libs/react.cjs'); +var react = require('../../../../libs/react.js'); var React = require('react'); /** * Do a request when the browser is online - * @param handle + * @param query */ -function useOnline(handle) { - var ready = handle.ready, fetch = handle.fetch; +function useOnline(query) { + var ready = query.ready, fetch = query.fetch; var fetchRef = react.useAutoRef(fetch); React.useEffect(function () { if (!ready) @@ -22,4 +22,4 @@ function useOnline(handle) { } exports.useOnline = useOnline; -//# sourceMappingURL=use-online.cjs.map +//# sourceMappingURL=use-online.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-online.js.map b/dist/cjs/mods/react/hooks/blocks/use-online.js.map new file mode 100644 index 00000000..39b42c8d --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-online.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-online.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-online.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the browser is online\n * @param query \n */\nexport function useOnline(query: Query) {\n const { ready, fetch } = query\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => fetchRef.current()\n\n addEventListener(\"online\", f)\n return () => removeEventListener(\"online\", f)\n }, [ready])\n}"],"names":["useAutoRef","useEffect"],"mappings":";;;;;;;AAIA;;;AAGG;AACG,SAAU,SAAS,CAAC,KAAY,EAAA;IAC5B,IAAA,KAAK,GAAY,KAAK,CAAA,KAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE9B,IAAA,IAAM,QAAQ,GAAGA,gBAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAAC,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAM,CAAC,GAAG,YAAA,EAAM,OAAA,QAAQ,CAAC,OAAO,EAAE,CAAlB,EAAkB,CAAA;AAElC,QAAA,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7B,OAAO,YAAA,EAAM,OAAA,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAhC,EAAgC,CAAA;AAC/C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-retry.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-retry.cjs.map deleted file mode 100644 index 382e73f0..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-retry.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-retry.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-retry.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport interface RetryOptions {\n init?: number\n base?: number\n max?: number\n}\n\n/**\n * Retry request on error using exponential backoff\n * @see useInterval for interval based requests\n * @param handle \n * @param options\n * @param options.init Initial timeout to be multiplied (in milliseconds)\n * @param options.base Exponent base (2 means the next timeout will be 2 times longer)\n * @param options.max Maximum count (3 means do not retry after 3 retries)\n * @see https://en.wikipedia.org/wiki/Exponential_backoff\n * @see https://en.wikipedia.org/wiki/Geometric_progression\n */\nexport function useRetry(handle: Handle, options: RetryOptions = {}) {\n const { ready, skey, refetch, error } = handle\n const { init = 1000, base = 2, max = 3 } = options\n\n const count = useRef(0)\n\n useEffect(() => {\n count.current = 0\n }, [skey])\n\n const refetchRef = useAutoRef(refetch)\n\n useEffect(() => {\n if (!ready) return\n\n if (error === undefined) {\n count.current = 0\n return\n }\n\n if (count.current >= max) return\n const ratio = base ** count.current\n\n function f() {\n count.current++\n refetchRef.current()\n }\n\n const t = setTimeout(f, init * ratio)\n return () => clearTimeout(t)\n }, [ready, error])\n}"],"names":["useRef","useEffect","useAutoRef"],"mappings":";;;;;;;AAUA;;;;;;;;;;AAUG;AACa,SAAA,QAAQ,CAAC,MAAc,EAAE,OAA0B,EAAA;AAA1B,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA0B,GAAA,EAAA,CAAA,EAAA;AACzD,IAAA,IAAA,KAAK,GAA2B,MAAM,MAAjC,EAAE,IAAI,GAAqB,MAAM,CAAA,IAA3B,EAAE,OAAO,GAAY,MAAM,CAAlB,OAAA,EAAE,KAAK,GAAK,MAAM,MAAX,CAAW;IACtC,IAAA,EAAA,GAAmC,OAAO,CAAA,IAA/B,EAAX,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,IAAI,GAAA,EAAA,EAAE,EAAsB,GAAA,OAAO,CAArB,IAAA,EAAR,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,EAAY,GAAA,OAAO,CAAZ,GAAA,EAAP,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAC,GAAA,EAAA,CAAY;AAElD,IAAA,IAAM,KAAK,GAAGA,YAAM,CAAC,CAAC,CAAC,CAAA;AAEvB,IAAAC,eAAS,CAAC,YAAA;AACR,QAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;AACnB,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAEV,IAAA,IAAM,UAAU,GAAGC,gBAAU,CAAC,OAAO,CAAC,CAAA;AAEtC,IAAAD,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;YACjB,OAAM;AACP,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG;YAAE,OAAM;QAChC,IAAM,KAAK,GAAG,IAAA,CAAA,GAAA,CAAA,IAAI,EAAI,KAAK,CAAC,OAAO,CAAA,CAAA;AAEnC,QAAA,SAAS,CAAC,GAAA;YACR,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,UAAU,CAAC,OAAO,EAAE,CAAA;SACrB;QAED,IAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAA;QACrC,OAAO,YAAA,EAAM,OAAA,YAAY,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC9B,KAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AACpB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-retry.cjs b/dist/cjs/mods/react/hooks/blocks/use-retry.js similarity index 85% rename from dist/cjs/mods/react/hooks/blocks/use-retry.cjs rename to dist/cjs/mods/react/hooks/blocks/use-retry.js index 2566e4e8..f47c497c 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-retry.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-retry.js @@ -2,13 +2,13 @@ Object.defineProperty(exports, '__esModule', { value: true }); -var react = require('../../../../libs/react.cjs'); +var react = require('../../../../libs/react.js'); var React = require('react'); /** * Retry request on error using exponential backoff * @see useInterval for interval based requests - * @param handle + * @param query * @param options * @param options.init Initial timeout to be multiplied (in milliseconds) * @param options.base Exponent base (2 means the next timeout will be 2 times longer) @@ -16,9 +16,9 @@ var React = require('react'); * @see https://en.wikipedia.org/wiki/Exponential_backoff * @see https://en.wikipedia.org/wiki/Geometric_progression */ -function useRetry(handle, options) { +function useRetry(query, options) { if (options === void 0) { options = {}; } - var ready = handle.ready, skey = handle.skey, refetch = handle.refetch, error = handle.error; + var ready = query.ready, skey = query.skey, refetch = query.refetch, error = query.error; var _a = options.init, init = _a === void 0 ? 1000 : _a, _b = options.base, base = _b === void 0 ? 2 : _b, _c = options.max, max = _c === void 0 ? 3 : _c; var count = React.useRef(0); React.useEffect(function () { @@ -45,4 +45,4 @@ function useRetry(handle, options) { } exports.useRetry = useRetry; -//# sourceMappingURL=use-retry.cjs.map +//# sourceMappingURL=use-retry.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-retry.js.map b/dist/cjs/mods/react/hooks/blocks/use-retry.js.map new file mode 100644 index 00000000..e3edde6a --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-retry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-retry.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-retry.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Query } from \"mods/react/types/query.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport interface RetryOptions {\n init?: number\n base?: number\n max?: number\n}\n\n/**\n * Retry request on error using exponential backoff\n * @see useInterval for interval based requests\n * @param query \n * @param options\n * @param options.init Initial timeout to be multiplied (in milliseconds)\n * @param options.base Exponent base (2 means the next timeout will be 2 times longer)\n * @param options.max Maximum count (3 means do not retry after 3 retries)\n * @see https://en.wikipedia.org/wiki/Exponential_backoff\n * @see https://en.wikipedia.org/wiki/Geometric_progression\n */\nexport function useRetry(query: Query, options: RetryOptions = {}) {\n const { ready, skey, refetch, error } = query\n const { init = 1000, base = 2, max = 3 } = options\n\n const count = useRef(0)\n\n useEffect(() => {\n count.current = 0\n }, [skey])\n\n const refetchRef = useAutoRef(refetch)\n\n useEffect(() => {\n if (!ready) return\n\n if (error === undefined) {\n count.current = 0\n return\n }\n\n if (count.current >= max) return\n const ratio = base ** count.current\n\n function f() {\n count.current++\n refetchRef.current()\n }\n\n const t = setTimeout(f, init * ratio)\n return () => clearTimeout(t)\n }, [ready, error])\n}"],"names":["useRef","useEffect","useAutoRef"],"mappings":";;;;;;;AAUA;;;;;;;;;;AAUG;AACa,SAAA,QAAQ,CAAC,KAAY,EAAE,OAA0B,EAAA;AAA1B,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA0B,GAAA,EAAA,CAAA,EAAA;AACvD,IAAA,IAAA,KAAK,GAA2B,KAAK,MAAhC,EAAE,IAAI,GAAqB,KAAK,CAAA,IAA1B,EAAE,OAAO,GAAY,KAAK,CAAjB,OAAA,EAAE,KAAK,GAAK,KAAK,MAAV,CAAU;IACrC,IAAA,EAAA,GAAmC,OAAO,CAAA,IAA/B,EAAX,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,IAAI,GAAA,EAAA,EAAE,EAAsB,GAAA,OAAO,CAArB,IAAA,EAAR,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,EAAY,GAAA,OAAO,CAAZ,GAAA,EAAP,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAC,GAAA,EAAA,CAAY;AAElD,IAAA,IAAM,KAAK,GAAGA,YAAM,CAAC,CAAC,CAAC,CAAA;AAEvB,IAAAC,eAAS,CAAC,YAAA;AACR,QAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;AACnB,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAEV,IAAA,IAAM,UAAU,GAAGC,gBAAU,CAAC,OAAO,CAAC,CAAA;AAEtC,IAAAD,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;YACjB,OAAM;AACP,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG;YAAE,OAAM;QAChC,IAAM,KAAK,GAAG,IAAA,CAAA,GAAA,CAAA,IAAI,EAAI,KAAK,CAAC,OAAO,CAAA,CAAA;AAEnC,QAAA,SAAS,CAAC,GAAA;YACR,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,UAAU,CAAC,OAAO,EAAE,CAAA;SACrB;QAED,IAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAA;QACrC,OAAO,YAAA,EAAM,OAAA,YAAY,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC9B,KAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AACpB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-visible.cjs.map b/dist/cjs/mods/react/hooks/blocks/use-visible.cjs.map deleted file mode 100644 index e6608fef..00000000 --- a/dist/cjs/mods/react/hooks/blocks/use-visible.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-visible.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-visible.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the tab is visible\n * @param handle \n */\nexport function useVisible(handle: Handle) {\n const { ready, fetch } = handle\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => !document.hidden && fetchRef.current()\n\n document.addEventListener(\"visibilitychange\", f)\n return () => document.removeEventListener(\"visibilitychange\", f)\n }, [ready])\n}"],"names":["useAutoRef","useEffect"],"mappings":";;;;;;;AAIA;;;AAGG;AACG,SAAU,UAAU,CAAC,MAAc,EAAA;IAC/B,IAAA,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE/B,IAAA,IAAM,QAAQ,GAAGA,gBAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAAC,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAElB,QAAA,IAAM,CAAC,GAAG,YAAM,EAAA,OAAA,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA;AAEtD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAChD,QAAA,OAAO,YAAM,EAAA,OAAA,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAnD,EAAmD,CAAA;AAClE,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/blocks/use-visible.cjs b/dist/cjs/mods/react/hooks/blocks/use-visible.js similarity index 74% rename from dist/cjs/mods/react/hooks/blocks/use-visible.cjs rename to dist/cjs/mods/react/hooks/blocks/use-visible.js index fed770dc..9c53d550 100644 --- a/dist/cjs/mods/react/hooks/blocks/use-visible.cjs +++ b/dist/cjs/mods/react/hooks/blocks/use-visible.js @@ -2,15 +2,15 @@ Object.defineProperty(exports, '__esModule', { value: true }); -var react = require('../../../../libs/react.cjs'); +var react = require('../../../../libs/react.js'); var React = require('react'); /** * Do a request when the tab is visible - * @param handle + * @param query */ -function useVisible(handle) { - var ready = handle.ready, fetch = handle.fetch; +function useVisible(query) { + var ready = query.ready, fetch = query.fetch; var fetchRef = react.useAutoRef(fetch); React.useEffect(function () { if (!ready) @@ -22,4 +22,4 @@ function useVisible(handle) { } exports.useVisible = useVisible; -//# sourceMappingURL=use-visible.cjs.map +//# sourceMappingURL=use-visible.js.map diff --git a/dist/cjs/mods/react/hooks/blocks/use-visible.js.map b/dist/cjs/mods/react/hooks/blocks/use-visible.js.map new file mode 100644 index 00000000..ea10b95b --- /dev/null +++ b/dist/cjs/mods/react/hooks/blocks/use-visible.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-visible.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-visible.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the tab is visible\n * @param query \n */\nexport function useVisible(query: Query) {\n const { ready, fetch } = query\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => !document.hidden && fetchRef.current()\n\n document.addEventListener(\"visibilitychange\", f)\n return () => document.removeEventListener(\"visibilitychange\", f)\n }, [ready])\n}"],"names":["useAutoRef","useEffect"],"mappings":";;;;;;;AAIA;;;AAGG;AACG,SAAU,UAAU,CAAC,KAAY,EAAA;IAC7B,IAAA,KAAK,GAAY,KAAK,CAAA,KAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE9B,IAAA,IAAM,QAAQ,GAAGA,gBAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAAC,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAElB,QAAA,IAAM,CAAC,GAAG,YAAM,EAAA,OAAA,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA;AAEtD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAChD,QAAA,OAAO,YAAM,EAAA,OAAA,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAnD,EAAmD,CAAA;AAClE,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/handles/router.cjs.map b/dist/cjs/mods/react/hooks/handles/router.cjs.map deleted file mode 100644 index ec5fb200..00000000 --- a/dist/cjs/mods/react/hooks/handles/router.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"router.cjs","sources":["../../../../../../src/mods/react/hooks/handles/router.ts"],"sourcesContent":["import { ScrollSchema } from \"mods/scroll/schema.js\";\nimport { SingleSchema } from \"mods/single/schema.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { DependencyList, useMemo } from \"react\";\nimport { ScrollHandle, useScroll } from \"./scroll.js\";\nimport { SingleHandle, useSingle } from \"./single.js\";\n\nexport function use(\n factory: (...deps: L) => SingleSchema,\n deps: L\n): SingleHandle\n\nexport function use(\n factory: (...deps: L) => ScrollSchema,\n deps: L\n): ScrollHandle\n\nexport function use(\n factory: (...deps: L) => Schema,\n deps: L\n) {\n const schema = useMemo(() => {\n return factory(...deps)\n }, deps)\n\n if (schema instanceof SingleSchema) {\n const { key, fetcher, params } = schema\n return useSingle(key, fetcher, params)\n }\n\n if (schema instanceof ScrollSchema) {\n const { scroller, fetcher, params } = schema\n return useScroll(scroller, fetcher, params)\n }\n\n throw new Error(\"Invalid resource schema\")\n}"],"names":["schema","useMemo","__spreadArray","__read","SingleSchema","useSingle","ScrollSchema","useScroll"],"mappings":";;;;;;;;;;;AAiBgB,SAAA,GAAG,CACjB,OAAwC,EACxC,IAAO,EAAA;IAEP,IAAMA,QAAM,GAAGC,aAAO,CAAC,YAAA;QACrB,OAAO,OAAO,CAAI,KAAA,CAAA,KAAA,CAAA,EAAAC,mBAAA,CAAA,EAAA,EAAAC,YAAA,CAAA,IAAI,CAAC,EAAA,KAAA,CAAA,CAAA,CAAA;KACxB,EAAE,IAAI,CAAC,CAAA;IAER,IAAIH,QAAM,YAAYI,mBAAY,EAAE;AAC1B,QAAA,IAAA,GAAG,GAAsBJ,QAAM,CAAA,GAA5B,EAAE,OAAO,GAAaA,QAAM,CAAA,OAAnB,EAAE,MAAM,GAAKA,QAAM,OAAX,CAAW;QACvC,OAAOK,gBAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACvC,KAAA;IAED,IAAIL,QAAM,YAAYM,qBAAY,EAAE;AAC1B,QAAA,IAAA,QAAQ,GAAsBN,QAAM,CAAA,QAA5B,EAAE,OAAO,GAAaA,QAAM,CAAA,OAAnB,EAAE,MAAM,GAAKA,QAAM,OAAX,CAAW;QAC5C,OAAOO,gBAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC5C,KAAA;AAED,IAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC5C;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/handles/scroll.cjs.map b/dist/cjs/mods/react/hooks/handles/scroll.cjs.map deleted file mode 100644 index faab5a23..00000000 --- a/dist/cjs/mods/react/hooks/handles/scroll.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scroll.cjs","sources":["../../../../../../src/mods/react/hooks/handles/scroll.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Handle } from \"mods/react/types/handle.js\";\nimport { getScrollStorageKey } from \"mods/scroll/object.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Handle for a scrolling resource\n */\nexport interface ScrollHandle extends Handle {\n /**\n * Fetch the next page\n */\n scroll(): Promise | undefined>\n}\n\n/**\n * Scrolling resource handle factory\n * @param scroller Key scroller (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Scrolling handle\n */\nexport function useScroll(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): ScrollHandle {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const scrollerRef = useAutoRef(scroller)\n const fetcherRef = useAutoRef(fetcher)\n const paramsRef = useAutoRef(mparams)\n\n const key = useMemo(() => {\n return scroller()\n }, [scroller])\n\n const skey = useMemo(() => {\n return getScrollStorageKey(key, paramsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, paramsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, paramsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, paramsRef.current)\n return () => void core.off(skey, setState, paramsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = paramsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, paramsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const scroll = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Scroll on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.scroll(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.scroll.first(skey, scroller, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, scroll, clear, suspend }\n}"],"names":["core","useCore","useAutoRef","useMemo","getScrollStorageKey","__read","useState","useRef","useCallback","useEffect","__awaiter"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/handles/single.cjs.map b/dist/cjs/mods/react/hooks/handles/single.cjs.map deleted file mode 100644 index bf2de4db..00000000 --- a/dist/cjs/mods/react/hooks/handles/single.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"single.cjs","sources":["../../../../../../src/mods/react/hooks/handles/single.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Handle } from \"mods/react/types/handle.js\";\nimport { getSingleStorageKey } from \"mods/single/object.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Handle for a single resource\n */\nexport interface SingleHandle extends Handle {\n /**\n * Optimistic update\n * @param updater Mutation function\n * @param aborter Custom AbortController\n */\n update(updater: Updater, uparams?: UpdaterParams, aborter?: AbortController): Promise | undefined>\n}\n\n/**\n * Single resource handle factory\n * @param key Key (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Single handle\n */\nexport function useSingle(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): SingleHandle {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const keyRef = useAutoRef(key)\n const fetcherRef = useAutoRef(fetcher)\n const mparamsRef = useAutoRef(mparams)\n\n const skey = useMemo(() => {\n return getSingleStorageKey(key, mparamsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, mparamsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, mparamsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, mparamsRef.current)\n return () => void core.off(skey, setState, mparamsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = mparamsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, mparamsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const update = useCallback(async (updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Update on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const fparams = { ...params, ...uparams }\n\n return await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.single.fetch(key, skey, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, update, clear, suspend }\n}"],"names":["core","useCore","useAutoRef","useMemo","getSingleStorageKey","__read","useState","useRef","useCallback","useEffect","__awaiter","__assign"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/handles/router.cjs b/dist/cjs/mods/react/hooks/queries/router.js similarity index 61% rename from dist/cjs/mods/react/hooks/handles/router.cjs rename to dist/cjs/mods/react/hooks/queries/router.js index 10c2b31d..38e7317a 100644 --- a/dist/cjs/mods/react/hooks/handles/router.cjs +++ b/dist/cjs/mods/react/hooks/queries/router.js @@ -3,26 +3,26 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var schema$1 = require('../../../scroll/schema.cjs'); -var schema = require('../../../single/schema.cjs'); +var schema$1 = require('../../../scroll/schema.js'); +var schema = require('../../../single/schema.js'); var React = require('react'); -var scroll = require('./scroll.cjs'); -var single = require('./single.cjs'); +var scroll = require('./scroll.js'); +var single = require('./single.js'); -function use(factory, deps) { +function useQuery(factory, deps) { var schema$2 = React.useMemo(function () { return factory.apply(void 0, tslib.__spreadArray([], tslib.__read(deps), false)); }, deps); if (schema$2 instanceof schema.SingleSchema) { var key = schema$2.key, fetcher = schema$2.fetcher, params = schema$2.params; - return single.useSingle(key, fetcher, params); + return single.useSingleQuery(key, fetcher, params); } if (schema$2 instanceof schema$1.ScrollSchema) { var scroller = schema$2.scroller, fetcher = schema$2.fetcher, params = schema$2.params; - return scroll.useScroll(scroller, fetcher, params); + return scroll.useScrollQuery(scroller, fetcher, params); } throw new Error("Invalid resource schema"); } -exports.use = use; -//# sourceMappingURL=router.cjs.map +exports.useQuery = useQuery; +//# sourceMappingURL=router.js.map diff --git a/dist/cjs/mods/react/hooks/queries/router.js.map b/dist/cjs/mods/react/hooks/queries/router.js.map new file mode 100644 index 00000000..c4d9abf0 --- /dev/null +++ b/dist/cjs/mods/react/hooks/queries/router.js.map @@ -0,0 +1 @@ +{"version":3,"file":"router.js","sources":["../../../../../../src/mods/react/hooks/queries/router.ts"],"sourcesContent":["import { ScrollSchema } from \"mods/scroll/schema.js\";\nimport { SingleSchema } from \"mods/single/schema.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { DependencyList, useMemo } from \"react\";\nimport { ScrollQuery, useScrollQuery } from \"./scroll.js\";\nimport { SingleQuery, useSingleQuery } from \"./single.js\";\n\nexport function useQuery(\n factory: (...deps: L) => SingleSchema,\n deps: L\n): SingleQuery\n\nexport function useQuery(\n factory: (...deps: L) => ScrollSchema,\n deps: L\n): ScrollQuery\n\nexport function useQuery(\n factory: (...deps: L) => Schema,\n deps: L\n) {\n const schema = useMemo(() => {\n return factory(...deps)\n }, deps)\n\n if (schema instanceof SingleSchema) {\n const { key, fetcher, params } = schema\n return useSingleQuery(key, fetcher, params)\n }\n\n if (schema instanceof ScrollSchema) {\n const { scroller, fetcher, params } = schema\n return useScrollQuery(scroller, fetcher, params)\n }\n\n throw new Error(\"Invalid resource schema\")\n}"],"names":["schema","useMemo","__spreadArray","__read","SingleSchema","useSingleQuery","ScrollSchema","useScrollQuery"],"mappings":";;;;;;;;;;;AAiBgB,SAAA,QAAQ,CACtB,OAAwC,EACxC,IAAO,EAAA;IAEP,IAAMA,QAAM,GAAGC,aAAO,CAAC,YAAA;QACrB,OAAO,OAAO,CAAI,KAAA,CAAA,KAAA,CAAA,EAAAC,mBAAA,CAAA,EAAA,EAAAC,YAAA,CAAA,IAAI,CAAC,EAAA,KAAA,CAAA,CAAA,CAAA;KACxB,EAAE,IAAI,CAAC,CAAA;IAER,IAAIH,QAAM,YAAYI,mBAAY,EAAE;AAC1B,QAAA,IAAA,GAAG,GAAsBJ,QAAM,CAAA,GAA5B,EAAE,OAAO,GAAaA,QAAM,CAAA,OAAnB,EAAE,MAAM,GAAKA,QAAM,OAAX,CAAW;QACvC,OAAOK,qBAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC5C,KAAA;IAED,IAAIL,QAAM,YAAYM,qBAAY,EAAE;AAC1B,QAAA,IAAA,QAAQ,GAAsBN,QAAM,CAAA,QAA5B,EAAE,OAAO,GAAaA,QAAM,CAAA,OAAnB,EAAE,MAAM,GAAKA,QAAM,OAAX,CAAW;QAC5C,OAAOO,qBAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACjD,KAAA;AAED,IAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC5C;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/handles/scroll.cjs b/dist/cjs/mods/react/hooks/queries/scroll.js similarity index 95% rename from dist/cjs/mods/react/hooks/handles/scroll.cjs rename to dist/cjs/mods/react/hooks/queries/scroll.js index 61c626a3..9520b471 100644 --- a/dist/cjs/mods/react/hooks/handles/scroll.cjs +++ b/dist/cjs/mods/react/hooks/queries/scroll.js @@ -3,19 +3,19 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var react = require('../../../../libs/react.cjs'); -var core = require('../../contexts/core.cjs'); -var object = require('../../../scroll/object.cjs'); +var react = require('../../../../libs/react.js'); +var core = require('../../contexts/core.js'); +var instance = require('../../../scroll/instance.js'); var React = require('react'); /** - * Scrolling resource handle factory + * Scrolling resource query factory * @param scroller Key scroller (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Scrolling handle + * @returns Scrolling query */ -function useScroll(scroller, fetcher, params) { +function useScrollQuery(scroller, fetcher, params) { var _this = this; if (params === void 0) { params = {}; } var core$1 = core.useCore(); @@ -27,7 +27,7 @@ function useScroll(scroller, fetcher, params) { return scroller(); }, [scroller]); var skey = React.useMemo(function () { - return object.getScrollStorageKey(key, paramsRef.current); + return instance.getScrollStorageKey(key, paramsRef.current); }, [key]); var _a = tslib.__read(React.useState(0), 2), setCounter = _a[1]; var stateRef = React.useRef(); @@ -204,5 +204,5 @@ function useScroll(scroller, fetcher, params) { return { key: key, skey: skey, data: data, error: error, time: time, cooldown: cooldown, expiration: expiration, aborter: aborter, optimistic: optimistic, realData: realData, loading: loading, ready: ready, mutate: mutate, fetch: fetch, refetch: refetch, scroll: scroll, clear: clear, suspend: suspend }; } -exports.useScroll = useScroll; -//# sourceMappingURL=scroll.cjs.map +exports.useScrollQuery = useScrollQuery; +//# sourceMappingURL=scroll.js.map diff --git a/dist/cjs/mods/react/hooks/queries/scroll.js.map b/dist/cjs/mods/react/hooks/queries/scroll.js.map new file mode 100644 index 00000000..13dd1d72 --- /dev/null +++ b/dist/cjs/mods/react/hooks/queries/scroll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scroll.js","sources":["../../../../../../src/mods/react/hooks/queries/scroll.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Query } from \"mods/react/types/query.js\";\nimport { getScrollStorageKey } from \"mods/scroll/instance.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Query for a scrolling resource\n */\nexport interface ScrollQuery extends Query {\n /**\n * Fetch the next page\n */\n scroll(): Promise | undefined>\n}\n\n/**\n * Scrolling resource query factory\n * @param scroller Key scroller (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Scrolling query\n */\nexport function useScrollQuery(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): ScrollQuery {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const scrollerRef = useAutoRef(scroller)\n const fetcherRef = useAutoRef(fetcher)\n const paramsRef = useAutoRef(mparams)\n\n const key = useMemo(() => {\n return scroller()\n }, [scroller])\n\n const skey = useMemo(() => {\n return getScrollStorageKey(key, paramsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, paramsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, paramsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, paramsRef.current)\n return () => void core.off(skey, setState, paramsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = paramsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, paramsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const scroll = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Scroll on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.scroll(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.scroll.first(skey, scroller, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, scroll, clear, suspend }\n}"],"names":["core","useCore","useAutoRef","useMemo","getScrollStorageKey","__read","useState","useRef","useCallback","useEffect","__awaiter"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/handles/single.cjs b/dist/cjs/mods/react/hooks/queries/single.js similarity index 95% rename from dist/cjs/mods/react/hooks/handles/single.cjs rename to dist/cjs/mods/react/hooks/queries/single.js index fa58f59a..4677dcca 100644 --- a/dist/cjs/mods/react/hooks/handles/single.cjs +++ b/dist/cjs/mods/react/hooks/queries/single.js @@ -3,19 +3,19 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var react = require('../../../../libs/react.cjs'); -var core = require('../../contexts/core.cjs'); -var object = require('../../../single/object.cjs'); +var react = require('../../../../libs/react.js'); +var core = require('../../contexts/core.js'); +var instance = require('../../../single/instance.js'); var React = require('react'); /** - * Single resource handle factory + * Single resource query factory * @param key Key (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Single handle + * @returns Single query */ -function useSingle(key, fetcher, params) { +function useSingleQuery(key, fetcher, params) { var _this = this; if (params === void 0) { params = {}; } var core$1 = core.useCore(); @@ -24,7 +24,7 @@ function useSingle(key, fetcher, params) { var fetcherRef = react.useAutoRef(fetcher); var mparamsRef = react.useAutoRef(mparams); var skey = React.useMemo(function () { - return object.getSingleStorageKey(key, mparamsRef.current); + return instance.getSingleStorageKey(key, mparamsRef.current); }, [key]); var _a = tslib.__read(React.useState(0), 2), setCounter = _a[1]; var stateRef = React.useRef(); @@ -203,5 +203,5 @@ function useSingle(key, fetcher, params) { return { key: key, skey: skey, data: data, error: error, time: time, cooldown: cooldown, expiration: expiration, aborter: aborter, optimistic: optimistic, realData: realData, loading: loading, ready: ready, mutate: mutate, fetch: fetch, refetch: refetch, update: update, clear: clear, suspend: suspend }; } -exports.useSingle = useSingle; -//# sourceMappingURL=single.cjs.map +exports.useSingleQuery = useSingleQuery; +//# sourceMappingURL=single.js.map diff --git a/dist/cjs/mods/react/hooks/queries/single.js.map b/dist/cjs/mods/react/hooks/queries/single.js.map new file mode 100644 index 00000000..e2d9db06 --- /dev/null +++ b/dist/cjs/mods/react/hooks/queries/single.js.map @@ -0,0 +1 @@ +{"version":3,"file":"single.js","sources":["../../../../../../src/mods/react/hooks/queries/single.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Query } from \"mods/react/types/query.js\";\nimport { getSingleStorageKey } from \"mods/single/instance.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Query for a single resource\n */\nexport interface SingleQuery extends Query {\n /**\n * Optimistic update\n * @param updater Mutation function\n * @param aborter Custom AbortController\n */\n update(updater: Updater, uparams?: UpdaterParams, aborter?: AbortController): Promise | undefined>\n}\n\n/**\n * Single resource query factory\n * @param key Key (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Single query\n */\nexport function useSingleQuery(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): SingleQuery {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const keyRef = useAutoRef(key)\n const fetcherRef = useAutoRef(fetcher)\n const mparamsRef = useAutoRef(mparams)\n\n const skey = useMemo(() => {\n return getSingleStorageKey(key, mparamsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, mparamsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, mparamsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, mparamsRef.current)\n return () => void core.off(skey, setState, mparamsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = mparamsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, mparamsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const update = useCallback(async (updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Update on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const fparams = { ...params, ...uparams }\n\n return await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.single.fetch(key, skey, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, update, clear, suspend }\n}"],"names":["core","useCore","useAutoRef","useMemo","getSingleStorageKey","__read","useState","useRef","useCallback","useEffect","__awaiter","__assign"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/xswr.cjs.map b/dist/cjs/mods/react/hooks/xswr.cjs.map deleted file mode 100644 index 4f2ee4ff..00000000 --- a/dist/cjs/mods/react/hooks/xswr.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xswr.cjs","sources":["../../../../../src/mods/react/hooks/xswr.tsx"],"sourcesContent":["import { useCore } from \"mods/react/contexts/core.js\"\nimport { Object } from \"mods/types/object.js\"\nimport { Schema } from \"mods/types/schema.js\"\nimport { useCallback } from \"react\"\n\nexport type Maker = = Object>(\n schema: Schema\n) => O\n\nexport function useXSWR() {\n const core = useCore()\n\n const make = useCallback((schema) => {\n return schema.make(core)\n }, [core])\n\n return { core, make }\n}"],"names":["core","useCore","useCallback"],"mappings":";;;;;;;SASgB,OAAO,GAAA;AACrB,IAAA,IAAMA,MAAI,GAAGC,YAAO,EAAE,CAAA;AAEtB,IAAA,IAAM,IAAI,GAAGC,iBAAW,CAAQ,UAAC,MAAM,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,IAAI,CAACF,MAAI,CAAC,CAAA;AAC1B,KAAC,EAAE,CAACA,MAAI,CAAC,CAAC,CAAA;AAEV,IAAA,OAAO,EAAE,IAAI,EAAAA,MAAA,EAAE,IAAI,EAAA,IAAA,EAAE,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/react/hooks/xswr.cjs b/dist/cjs/mods/react/hooks/xswr.js similarity index 81% rename from dist/cjs/mods/react/hooks/xswr.cjs rename to dist/cjs/mods/react/hooks/xswr.js index 6da16f8c..f9c38dc9 100644 --- a/dist/cjs/mods/react/hooks/xswr.cjs +++ b/dist/cjs/mods/react/hooks/xswr.js @@ -2,7 +2,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); -var core = require('../contexts/core.cjs'); +var core = require('../contexts/core.js'); var React = require('react'); function useXSWR() { @@ -14,4 +14,4 @@ function useXSWR() { } exports.useXSWR = useXSWR; -//# sourceMappingURL=xswr.cjs.map +//# sourceMappingURL=xswr.js.map diff --git a/dist/cjs/mods/react/hooks/xswr.js.map b/dist/cjs/mods/react/hooks/xswr.js.map new file mode 100644 index 00000000..16d8a840 --- /dev/null +++ b/dist/cjs/mods/react/hooks/xswr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"xswr.js","sources":["../../../../../src/mods/react/hooks/xswr.tsx"],"sourcesContent":["import { useCore } from \"mods/react/contexts/core.js\"\nimport { Instance } from \"mods/types/instance.js\"\nimport { Schema } from \"mods/types/schema.js\"\nimport { useCallback } from \"react\"\n\nexport type Maker = = Instance>(\n schema: Schema\n) => O\n\nexport function useXSWR() {\n const core = useCore()\n\n const make = useCallback((schema) => {\n return schema.make(core)\n }, [core])\n\n return { core, make }\n}"],"names":["core","useCore","useCallback"],"mappings":";;;;;;;SASgB,OAAO,GAAA;AACrB,IAAA,IAAMA,MAAI,GAAGC,YAAO,EAAE,CAAA;AAEtB,IAAA,IAAM,IAAI,GAAGC,iBAAW,CAAQ,UAAC,MAAM,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,IAAI,CAACF,MAAI,CAAC,CAAA;AAC1B,KAAC,EAAE,CAACA,MAAI,CAAC,CAAC,CAAA;AAEV,IAAA,OAAO,EAAE,IAAI,EAAAA,MAAA,EAAE,IAAI,EAAA,IAAA,EAAE,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/scroll/helper.cjs.map b/dist/cjs/mods/scroll/helper.cjs.map deleted file mode 100644 index eef80729..00000000 --- a/dist/cjs/mods/scroll/helper.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helper.cjs","sources":["../../../../src/mods/scroll/helper.ts"],"sourcesContent":["import { lastOf } from \"libs/arrays.js\";\nimport { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class ScrollHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch first page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async first(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, first } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const first = scroller(undefined)\n\n if (first === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, first }\n })\n\n if (skip)\n return current\n if (first === undefined)\n throw new Error(\"Undefined first\")\n\n const {\n equals = DEFAULT_EQUALS,\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"First timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(first, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [data]\n state.error = error\n\n if (data !== undefined) {\n const norm = await this.core.normalize(true, { data: [data] }, params)\n if (equals(norm?.[0], current?.data?.[0])) delete state.data\n }\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Scroll to the next page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async scroll(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, last } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const pages = current?.data ?? []\n const last = scroller(lastOf(pages))\n\n if (last === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, last }\n })\n\n if (skip)\n return current\n if (last === undefined)\n throw new Error(\"Undefined last\")\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Scroll timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n let {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(last, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n if (expiration !== undefined && current?.expiration !== undefined)\n expiration = Math.min(expiration, current?.expiration)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [...(current?.data ?? []), data]\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":["__awaiter","DEFAULT_EQUALS","DEFAULT_COOLDOWN","DEFAULT_EXPIRATION","DEFAULT_TIMEOUT","getTimeFromDelay","AbortError","__assign","lastOf","__spreadArray","__read"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/scroll/helper.cjs b/dist/cjs/mods/scroll/helper.js similarity index 98% rename from dist/cjs/mods/scroll/helper.cjs rename to dist/cjs/mods/scroll/helper.js index 521de674..f59ab1f2 100644 --- a/dist/cjs/mods/scroll/helper.cjs +++ b/dist/cjs/mods/scroll/helper.js @@ -3,10 +3,10 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var arrays = require('../../libs/arrays.cjs'); -var time = require('../../libs/time.cjs'); -var abort = require('../errors/abort.cjs'); -var defaults = require('../utils/defaults.cjs'); +var arrays = require('../../libs/arrays.js'); +var time = require('../../libs/time.js'); +var abort = require('../errors/abort.js'); +var defaults = require('../utils/defaults.js'); var ScrollHelper = /** @class */ (function () { function ScrollHelper(core) { @@ -215,4 +215,4 @@ var ScrollHelper = /** @class */ (function () { }()); exports.ScrollHelper = ScrollHelper; -//# sourceMappingURL=helper.cjs.map +//# sourceMappingURL=helper.js.map diff --git a/dist/cjs/mods/scroll/helper.js.map b/dist/cjs/mods/scroll/helper.js.map new file mode 100644 index 00000000..80791668 --- /dev/null +++ b/dist/cjs/mods/scroll/helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helper.js","sources":["../../../../src/mods/scroll/helper.ts"],"sourcesContent":["import { lastOf } from \"libs/arrays.js\";\nimport { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class ScrollHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch first page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async first(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, first } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const first = scroller(undefined)\n\n if (first === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, first }\n })\n\n if (skip)\n return current\n if (first === undefined)\n throw new Error(\"Undefined first\")\n\n const {\n equals = DEFAULT_EQUALS,\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"First timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(first, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [data]\n state.error = error\n\n if (data !== undefined) {\n const norm = await this.core.normalize(true, { data: [data] }, params)\n if (equals(norm?.[0], current?.data?.[0])) delete state.data\n }\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Scroll to the next page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async scroll(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, last } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const pages = current?.data ?? []\n const last = scroller(lastOf(pages))\n\n if (last === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, last }\n })\n\n if (skip)\n return current\n if (last === undefined)\n throw new Error(\"Undefined last\")\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Scroll timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n let {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(last, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n if (expiration !== undefined && current?.expiration !== undefined)\n expiration = Math.min(expiration, current?.expiration)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [...(current?.data ?? []), data]\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":["__awaiter","DEFAULT_EQUALS","DEFAULT_COOLDOWN","DEFAULT_EXPIRATION","DEFAULT_TIMEOUT","getTimeFromDelay","AbortError","__assign","lastOf","__spreadArray","__read"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/scroll/object.cjs b/dist/cjs/mods/scroll/instance.js similarity index 89% rename from dist/cjs/mods/scroll/object.cjs rename to dist/cjs/mods/scroll/instance.js index da1df6d1..d09a3e6e 100644 --- a/dist/cjs/mods/scroll/object.cjs +++ b/dist/cjs/mods/scroll/instance.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var defaults = require('../utils/defaults.cjs'); +var defaults = require('../utils/defaults.js'); function getScrollStorageKey(key, params) { if (key === undefined) @@ -14,10 +14,10 @@ function getScrollStorageKey(key, params) { return "scroll:".concat(serializer.stringify(key)); } /** - * Non-React version of ScrollHandle + * Non-React version of ScrollQuery */ -var ScrollObject = /** @class */ (function () { - function ScrollObject(core, scroller, fetcher, params) { +var ScrollInstance = /** @class */ (function () { + function ScrollInstance(core, scroller, fetcher, params) { if (params === void 0) { params = {}; } this.core = core; this.scroller = scroller; @@ -29,26 +29,26 @@ var ScrollObject = /** @class */ (function () { this.loadSync(); this.subscribe(); } - Object.defineProperty(ScrollObject.prototype, "init", { + Object.defineProperty(ScrollInstance.prototype, "init", { get: function () { return this._init; }, enumerable: false, configurable: true }); - Object.defineProperty(ScrollObject.prototype, "state", { + Object.defineProperty(ScrollInstance.prototype, "state", { get: function () { return this._state; }, enumerable: false, configurable: true }); - Object.defineProperty(ScrollObject.prototype, "ready", { + Object.defineProperty(ScrollInstance.prototype, "ready", { get: function () { return this._state !== null; }, enumerable: false, configurable: true }); - ScrollObject.prototype.loadSync = function () { + ScrollInstance.prototype.loadSync = function () { var _a = this, core = _a.core, skey = _a.skey, mparams = _a.mparams; this._state = core.getSync(skey, mparams); }; - ScrollObject.prototype.loadAsync = function () { + ScrollInstance.prototype.loadAsync = function () { return tslib.__awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams, _b; return tslib.__generator(this, function (_c) { @@ -66,7 +66,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.subscribe = function () { + ScrollInstance.prototype.subscribe = function () { var _this = this; var _a = this, core = _a.core, skey = _a.skey; var setter = function (state) { @@ -77,7 +77,7 @@ var ScrollObject = /** @class */ (function () { core.off(skey, setter); }).register(this, undefined); }; - ScrollObject.prototype.mutate = function (mutator) { + ScrollInstance.prototype.mutate = function (mutator) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, skey, mparams, _c; @@ -100,7 +100,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.fetch = function (aborter) { + ScrollInstance.prototype.fetch = function (aborter) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, scroller, skey, fetcher, mparams, _c; @@ -125,7 +125,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.refetch = function (aborter) { + ScrollInstance.prototype.refetch = function (aborter) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, scroller, skey, fetcher, mparams, _c; @@ -150,7 +150,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.scroll = function (aborter) { + ScrollInstance.prototype.scroll = function (aborter) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, scroller, skey, fetcher, mparams, _c; @@ -175,7 +175,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.clear = function () { + ScrollInstance.prototype.clear = function () { return tslib.__awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams; return tslib.__generator(this, function (_b) { @@ -191,9 +191,9 @@ var ScrollObject = /** @class */ (function () { }); }); }; - return ScrollObject; + return ScrollInstance; }()); -exports.ScrollObject = ScrollObject; +exports.ScrollInstance = ScrollInstance; exports.getScrollStorageKey = getScrollStorageKey; -//# sourceMappingURL=object.cjs.map +//# sourceMappingURL=instance.js.map diff --git a/dist/cjs/mods/scroll/instance.js.map b/dist/cjs/mods/scroll/instance.js.map new file mode 100644 index 00000000..981e957d --- /dev/null +++ b/dist/cjs/mods/scroll/instance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instance.js","sources":["../../../../src/mods/scroll/instance.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Instance } from \"mods/types/instance.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getScrollStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return `scroll:${serializer.stringify(key)}`\n}\n\n/**\n * Non-React version of ScrollQuery\n */\nexport class ScrollInstance implements Instance {\n readonly key: K | undefined\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.key = scroller()\n this.skey = getScrollStorageKey(this.key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async scroll(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.scroll(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":["DEFAULT_SERIALIZER","__assign"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/scroll/object.cjs.map b/dist/cjs/mods/scroll/object.cjs.map deleted file mode 100644 index c72d2bb9..00000000 --- a/dist/cjs/mods/scroll/object.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.cjs","sources":["../../../../src/mods/scroll/object.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Object } from \"mods/types/object.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getScrollStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return `scroll:${serializer.stringify(key)}`\n}\n\n/**\n * Non-React version of ScrollHandle\n */\nexport class ScrollObject implements Object {\n readonly key: K | undefined\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.key = scroller()\n this.skey = getScrollStorageKey(this.key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async scroll(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.scroll(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":["DEFAULT_SERIALIZER","__assign"],"mappings":";;;;;;;AASgB,SAAA,mBAAmB,CAA4B,GAAM,EAAE,MAAc,EAAA;IACnF,IAAI,GAAG,KAAK,SAAS;AACnB,QAAA,OAAO,SAAS,CAAA;IAClB,IAAI,OAAO,GAAG,KAAK,QAAQ;AACzB,QAAA,OAAO,GAAG,CAAA;IAGV,IAAA,EAAA,GACE,MAAM,CADuB,UAAA,EAA/B,UAAU,GAAG,EAAA,KAAA,KAAA,CAAA,GAAAA,2BAAkB,KAAA,CACvB;IAEV,OAAO,SAAA,CAAA,MAAA,CAAU,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAE,CAAA;AAC9C,CAAC;AAED;;AAEG;AACH,IAAA,YAAA,kBAAA,YAAA;AAQE,IAAA,SAAA,YAAA,CACW,IAAU,EACV,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;QAH9B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;QAEvC,IAAI,CAAC,OAAO,GAAQC,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAA,IAAI,CAAC,MAAM,CAAA,EAAK,MAAM,CAAE,CAAA;AAE5C,QAAA,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAA;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEvD,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,IAAI,CAAC,SAAS,EAAE,CAAA;KACjB;AAED,IAAA,MAAA,CAAA,cAAA,CAAI,YAAI,CAAA,SAAA,EAAA,MAAA,EAAA;AAAR,QAAA,GAAA,EAAA,YAAA,EAAa,OAAO,IAAI,CAAC,KAAK,CAAA,EAAE;;;AAAA,KAAA,CAAA,CAAA;AAChC,IAAA,MAAA,CAAA,cAAA,CAAI,YAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAT,QAAA,GAAA,EAAA,YAAA,EAAc,OAAO,IAAI,CAAC,MAAM,CAAA,EAAE;;;AAAA,KAAA,CAAA,CAAA;AAClC,IAAA,MAAA,CAAA,cAAA,CAAI,YAAK,CAAA,SAAA,EAAA,OAAA,EAAA;aAAT,YAAc,EAAA,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA,EAAE;;;AAAA,KAAA,CAAA,CAAA;AAEnC,IAAA,YAAA,CAAA,SAAA,CAAA,QAAQ,GAAhB,YAAA;QACQ,IAAA,EAAA,GAA0B,IAAI,EAA5B,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAS,CAAA;QAEpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;AAEa,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAvB,YAAA;;;;;;wBACE,IAAI,IAAI,CAAC,KAAK;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;wBAEhB,EAA0B,GAAA,IAAI,EAA5B,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,CAAS;AAEpC,wBAAA,EAAA,GAAA,IAAI,CAAA;wBAAU,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAA;;wBAA3C,EAAK,CAAA,MAAM,GAAG,EAAA,CAAA,IAAA,EAA6B,CAAA;;;;;AAC5C,KAAA,CAAA;AAEO,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAjB,YAAA;QAAA,IAWC,KAAA,GAAA,IAAA,CAAA;QAVO,IAAA,EAAA,GAAiB,IAAI,EAAnB,IAAI,UAAA,EAAE,IAAI,UAAS,CAAA;QAE3B,IAAM,MAAM,GAAG,UAAC,KAAwB,EAAA;AACtC,YAAA,OAAA,KAAI,CAAC,MAAM,GAAG,KAAK,CAAA;AAAnB,SAAmB,CAAA;AAErB,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAErB,QAAA,IAAI,oBAAoB,CAAC,YAAA;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SACvB,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;KAC7B,CAAA;IAEK,YAAM,CAAA,SAAA,CAAA,MAAA,GAAZ,UAAa,OAA2B,EAAA;;;;;;;wBAChC,EAA0B,GAAA,IAAI,EAA5B,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,CAAS;AAEhC,wBAAA,IAAA,EAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACtB,wBAAA,OAAA,CAAA,CAAA,aAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,oCAAV,IAAI,CAAC,KAAK,GAAK,IAAI,CAAC,SAAS,EAAE,GAAC,CAAA;;AAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAA;;;AACzC,wBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;AACtB,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;AAEnC,wBAAA,EAAA,GAAA,IAAI,CAAA;AAAU,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA,CAAA;AAA3E,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,EAAK,CAAA,MAAM,GAAG,EAAA,CAAA,IAAA,EAAsD,CAAA,CAAA;;;;AAC5E,KAAA,CAAA;IAEK,YAAK,CAAA,SAAA,CAAA,KAAA,GAAX,UAAY,OAAyB,EAAA;;;;;;;AAC7B,wBAAA,EAAA,GAA6C,IAAI,EAA/C,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,OAAO,aAAA,CAAS;AAEnD,wBAAA,IAAA,EAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACtB,wBAAA,OAAA,CAAA,CAAA,aAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,oCAAV,IAAI,CAAC,KAAK,GAAK,IAAI,CAAC,SAAS,EAAE,GAAC,CAAA;;AAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAA;;;AACzC,wBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;AACtB,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;wBAC1C,IAAI,OAAO,KAAK,SAAS;4BACvB,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAA,CAAA;AAEb,wBAAA,EAAA,GAAA,IAAI,CAAA;AAAU,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA,CAAA;AAAvF,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,EAAK,CAAA,MAAM,GAAG,EAAA,CAAA,IAAA,EAAkE,CAAA,CAAA;;;;AACxF,KAAA,CAAA;IAEK,YAAO,CAAA,SAAA,CAAA,OAAA,GAAb,UAAc,OAAyB,EAAA;;;;;;;AAC/B,wBAAA,EAAA,GAA6C,IAAI,EAA/C,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,OAAO,aAAA,CAAS;AAEnD,wBAAA,IAAA,EAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACtB,wBAAA,OAAA,CAAA,CAAA,aAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,oCAAV,IAAI,CAAC,KAAK,GAAK,IAAI,CAAC,SAAS,EAAE,GAAC,CAAA;;AAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAA;;;AACzC,wBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;AACtB,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;wBAC1C,IAAI,OAAO,KAAK,SAAS;4BACvB,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAA,CAAA;AAEb,wBAAA,EAAA,GAAA,IAAI,CAAA;wBAAU,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAA;AAAnG,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,EAAK,CAAA,MAAM,GAAG,EAAA,CAAA,IAAA,EAA8E,CAAA,CAAA;;;;AACpG,KAAA,CAAA;IAEK,YAAM,CAAA,SAAA,CAAA,MAAA,GAAZ,UAAa,OAAyB,EAAA;;;;;;;AAC9B,wBAAA,EAAA,GAA6C,IAAI,EAA/C,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,OAAO,aAAA,CAAS;AAEnD,wBAAA,IAAA,EAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACtB,wBAAA,OAAA,CAAA,CAAA,aAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,oCAAV,IAAI,CAAC,KAAK,GAAK,IAAI,CAAC,SAAS,EAAE,GAAC,CAAA;;AAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAA;;;AACzC,wBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;AACtB,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;wBAC1C,IAAI,OAAO,KAAK,SAAS;4BACvB,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAA,CAAA;AAEb,wBAAA,EAAA,GAAA,IAAI,CAAA;wBAAU,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAA;AAApG,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,EAAK,CAAA,MAAM,GAAG,EAAA,CAAA,IAAA,EAA+E,CAAA,CAAA;;;;AACrG,KAAA,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,KAAK,GAAX,YAAA;;;;;;wBACQ,EAA0B,GAAA,IAAI,EAA5B,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,CAAS;wBAEpC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAA;;AAAhC,wBAAA,EAAA,CAAA,IAAA,EAAgC,CAAA;wBAChC,OAAO,IAAI,CAAC,MAAM,CAAA;;;;;AACnB,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/scroll/schema.cjs.map b/dist/cjs/mods/scroll/schema.cjs.map deleted file mode 100644 index c673fd2e..00000000 --- a/dist/cjs/mods/scroll/schema.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schema.cjs","sources":["../../../../src/mods/scroll/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { ScrollObject } from \"./object.js\";\n\nexport function scroll(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new ScrollSchema(scroller, fetcher, params)\n}\n\nexport class ScrollSchema implements Schema> {\n constructor(\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { scroller, fetcher, params } = this\n\n return new ScrollObject(core, scroller, fetcher, params)\n }\n\n async normalize(data: D[], more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":["ScrollObject"],"mappings":";;;;;;;SAQgB,MAAM,CACpB,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;IAE9B,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;QAF9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KACpC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAAgC,IAAI,EAAlC,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAE1C,OAAO,IAAIA,mBAAY,CAAU,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAClE,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAS,EAAE,IAA+B,EAAA;;;;;;wBACxD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/scroll/schema.cjs b/dist/cjs/mods/scroll/schema.js similarity index 86% rename from dist/cjs/mods/scroll/schema.cjs rename to dist/cjs/mods/scroll/schema.js index d4ee2c3e..3e594134 100644 --- a/dist/cjs/mods/scroll/schema.cjs +++ b/dist/cjs/mods/scroll/schema.js @@ -3,9 +3,9 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var object = require('./object.cjs'); +var instance = require('./instance.js'); -function scroll(scroller, fetcher, params) { +function getScrollSchema(scroller, fetcher, params) { if (params === void 0) { params = {}; } return new ScrollSchema(scroller, fetcher, params); } @@ -18,7 +18,7 @@ var ScrollSchema = /** @class */ (function () { } ScrollSchema.prototype.make = function (core) { var _a = this, scroller = _a.scroller, fetcher = _a.fetcher, params = _a.params; - return new object.ScrollObject(core, scroller, fetcher, params); + return new instance.ScrollInstance(core, scroller, fetcher, params); }; ScrollSchema.prototype.normalize = function (data, more) { return tslib.__awaiter(this, void 0, void 0, function () { @@ -42,5 +42,5 @@ var ScrollSchema = /** @class */ (function () { }()); exports.ScrollSchema = ScrollSchema; -exports.scroll = scroll; -//# sourceMappingURL=schema.cjs.map +exports.getScrollSchema = getScrollSchema; +//# sourceMappingURL=schema.js.map diff --git a/dist/cjs/mods/scroll/schema.js.map b/dist/cjs/mods/scroll/schema.js.map new file mode 100644 index 00000000..972258e1 --- /dev/null +++ b/dist/cjs/mods/scroll/schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"schema.js","sources":["../../../../src/mods/scroll/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { ScrollInstance } from \"./instance.js\";\n\nexport function getScrollSchema(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new ScrollSchema(scroller, fetcher, params)\n}\n\nexport class ScrollSchema implements Schema> {\n constructor(\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { scroller, fetcher, params } = this\n\n return new ScrollInstance(core, scroller, fetcher, params)\n }\n\n async normalize(data: D[], more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":["ScrollInstance"],"mappings":";;;;;;;SAQgB,eAAe,CAC7B,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;IAE9B,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;QAF9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KACpC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAAgC,IAAI,EAAlC,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAE1C,OAAO,IAAIA,uBAAc,CAAU,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KACpE,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAS,EAAE,IAA+B,EAAA;;;;;;wBACxD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/single/helper.cjs.map b/dist/cjs/mods/single/helper.cjs.map deleted file mode 100644 index e1c131ad..00000000 --- a/dist/cjs/mods/single/helper.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helper.cjs","sources":["../../../../src/mods/single/helper.ts"],"sourcesContent":["import { returnOf } from \"libs/generator.js\";\nimport { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater } from \"mods/types/updater.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class SingleHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch\n * @param key Key (passed to fetcher)\n * @param skey Storage key\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async fetch(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Fetch timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(key, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Optimistic update\n * @param key Key (:K) (passed to poster)\n * @param skey Storage key\n * @param fetcher Resource poster\n * @param updater Mutation function\n * @param aborter AbortController\n * @param tparams Time parameters\n * @returns The new state\n * @throws Error\n */\n async update(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher | undefined,\n updater: Updater,\n aborter = new AbortController(),\n params: Params = {},\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter)\n current.aborter.abort(\"Replaced\")\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Update timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const generator = updater(current, { signal })\n\n for await (const { data, error } of generator) {\n if (signal.aborted)\n throw new AbortError(signal)\n\n const optimistic: State = {}\n\n if (data !== undefined)\n optimistic.data = data\n optimistic.error = error\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true, ...optimistic }),\n params)\n }\n\n let result = await returnOf(generator)\n\n if (result === undefined) {\n if (fetcher === undefined)\n throw new Error(\"Updater returned nothing and undefined fetcher\")\n result = await fetcher(key, { signal, cache: \"reload\" })\n }\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = result\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n if (error !== undefined) {\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, cooldown, expiration, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n }\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, optimistic: false, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":["__awaiter","DEFAULT_COOLDOWN","DEFAULT_EXPIRATION","DEFAULT_TIMEOUT","getTimeFromDelay","AbortError","__assign","generator","__asyncValues","returnOf"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/single/helper.cjs b/dist/cjs/mods/single/helper.js similarity index 75% rename from dist/cjs/mods/single/helper.cjs rename to dist/cjs/mods/single/helper.js index fd203575..d306efcb 100644 --- a/dist/cjs/mods/single/helper.cjs +++ b/dist/cjs/mods/single/helper.js @@ -3,10 +3,9 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var generator = require('../../libs/generator.cjs'); -var time = require('../../libs/time.cjs'); -var abort = require('../errors/abort.cjs'); -var defaults = require('../utils/defaults.cjs'); +var time = require('../../libs/time.js'); +var abort = require('../errors/abort.js'); +var defaults = require('../utils/defaults.js'); var SingleHelper = /** @class */ (function () { function SingleHelper(core) { @@ -114,14 +113,13 @@ var SingleHelper = /** @class */ (function () { * @throws Error */ SingleHelper.prototype.update = function (key, skey, fetcher, updater, aborter, params) { - var e_1, _a; if (aborter === void 0) { aborter = new AbortController(); } if (params === void 0) { params = {}; } return tslib.__awaiter(this, void 0, void 0, function () { - var _b, current, skip, _c, dcooldown, _d, dexpiration, _e, dtimeout, timeout, signal, generator$1, _loop_1, this_1, generator_1, generator_1_1, e_1_1, result, data, error_3, _f, time_2, _g, cooldown_2, _h, expiration_2, state_2, error_2; + var _a, current, skip, _b, dcooldown, _c, dexpiration, _d, dtimeout, timeout, signal, generator, result, _loop_1, this_1, state_2, data, error_3, _e, time_2, _f, cooldown_2, _g, expiration_2, state_3, error_2; var _this = this; - return tslib.__generator(this, function (_j) { - switch (_j.label) { + return tslib.__generator(this, function (_h) { + switch (_h.label) { case 0: if (key === undefined) return [2 /*return*/]; @@ -146,27 +144,31 @@ var SingleHelper = /** @class */ (function () { }); }); })]; case 1: - _b = _j.sent(), current = _b.current, skip = _b.skip; + _a = _h.sent(), current = _a.current, skip = _a.skip; if (skip) return [2 /*return*/, current]; - _c = params.cooldown, dcooldown = _c === void 0 ? defaults.DEFAULT_COOLDOWN : _c, _d = params.expiration, dexpiration = _d === void 0 ? defaults.DEFAULT_EXPIRATION : _d, _e = params.timeout, dtimeout = _e === void 0 ? defaults.DEFAULT_TIMEOUT : _e; + _b = params.cooldown, dcooldown = _b === void 0 ? defaults.DEFAULT_COOLDOWN : _b, _c = params.expiration, dexpiration = _c === void 0 ? defaults.DEFAULT_EXPIRATION : _c, _d = params.timeout, dtimeout = _d === void 0 ? defaults.DEFAULT_TIMEOUT : _d; timeout = setTimeout(function () { aborter.abort("Update timed out"); }, dtimeout); - _j.label = 2; + _h.label = 2; case 2: - _j.trys.push([2, 23, 26, 27]); + _h.trys.push([2, 12, 15, 16]); signal = aborter.signal; - generator$1 = updater(current, { signal: signal }); - _j.label = 3; - case 3: - _j.trys.push([3, 9, 10, 15]); + generator = updater(current, { signal: signal }); + result = undefined; _loop_1 = function () { - var _k, data_1, error_4, optimistic; - return tslib.__generator(this, function (_l) { - switch (_l.label) { - case 0: - _k = generator_1_1.value, data_1 = _k.data, error_4 = _k.error; + var _j, done, value, data_1, error_4, optimistic; + return tslib.__generator(this, function (_k) { + switch (_k.label) { + case 0: return [4 /*yield*/, generator.next()]; + case 1: + _j = _k.sent(), done = _j.done, value = _j.value; + if (done) { + result = value; + return [2 /*return*/, "break"]; + } + data_1 = value.data, error_4 = value.error; if (signal.aborted) throw new abort.AbortError(signal); optimistic = {}; @@ -174,82 +176,61 @@ var SingleHelper = /** @class */ (function () { optimistic.data = data_1; optimistic.error = error_4; return [4 /*yield*/, this_1.core.mutate(skey, current, function (c) { return (tslib.__assign({ time: c === null || c === void 0 ? void 0 : c.time, aborter: aborter, optimistic: true }, optimistic)); }, params)]; - case 1: - current = _l.sent(); + case 2: + current = _k.sent(); return [2 /*return*/]; } }); }; this_1 = this; - generator_1 = tslib.__asyncValues(generator$1); - _j.label = 4; - case 4: return [4 /*yield*/, generator_1.next()]; - case 5: - if (!(generator_1_1 = _j.sent(), !generator_1_1.done)) return [3 /*break*/, 8]; + _h.label = 3; + case 3: return [5 /*yield**/, _loop_1()]; - case 6: - _j.sent(); - _j.label = 7; - case 7: return [3 /*break*/, 4]; - case 8: return [3 /*break*/, 15]; - case 9: - e_1_1 = _j.sent(); - e_1 = { error: e_1_1 }; - return [3 /*break*/, 15]; - case 10: - _j.trys.push([10, , 13, 14]); - if (!(generator_1_1 && !generator_1_1.done && (_a = generator_1.return))) return [3 /*break*/, 12]; - return [4 /*yield*/, _a.call(generator_1)]; - case 11: - _j.sent(); - _j.label = 12; - case 12: return [3 /*break*/, 14]; - case 13: - if (e_1) throw e_1.error; - return [7 /*endfinally*/]; - case 14: return [7 /*endfinally*/]; - case 15: return [4 /*yield*/, generator.returnOf(generator$1)]; - case 16: - result = _j.sent(); - if (!(result === undefined)) return [3 /*break*/, 18]; + case 4: + state_2 = _h.sent(); + if (state_2 === "break") + return [3 /*break*/, 5]; + return [3 /*break*/, 3]; + case 5: + if (!(result === undefined)) return [3 /*break*/, 7]; if (fetcher === undefined) throw new Error("Updater returned nothing and undefined fetcher"); return [4 /*yield*/, fetcher(key, { signal: signal, cache: "reload" })]; - case 17: - result = _j.sent(); - _j.label = 18; - case 18: - data = result.data, error_3 = result.error, _f = result.time, time_2 = _f === void 0 ? Date.now() : _f, _g = result.cooldown, cooldown_2 = _g === void 0 ? time.getTimeFromDelay(dcooldown) : _g, _h = result.expiration, expiration_2 = _h === void 0 ? time.getTimeFromDelay(dexpiration) : _h; + case 6: + result = _h.sent(); + _h.label = 7; + case 7: + data = result.data, error_3 = result.error, _e = result.time, time_2 = _e === void 0 ? Date.now() : _e, _f = result.cooldown, cooldown_2 = _f === void 0 ? time.getTimeFromDelay(dcooldown) : _f, _g = result.expiration, expiration_2 = _g === void 0 ? time.getTimeFromDelay(dexpiration) : _g; if (signal.aborted) throw new abort.AbortError(signal); return [4 /*yield*/, this.core.get(skey, params)]; - case 19: - current = _j.sent(); - if (!(error_3 !== undefined)) return [3 /*break*/, 21]; + case 8: + current = _h.sent(); + if (!(error_3 !== undefined)) return [3 /*break*/, 10]; if ((current === null || current === void 0 ? void 0 : current.aborter) !== aborter) return [2 /*return*/, current]; return [4 /*yield*/, this.core.mutate(skey, current, function (c) { return ({ time: c === null || c === void 0 ? void 0 : c.time, cooldown: cooldown_2, expiration: expiration_2, aborter: undefined, optimistic: false, data: c === null || c === void 0 ? void 0 : c.data, error: error_3 }); }, params)]; - case 20: return [2 /*return*/, _j.sent()]; - case 21: - state_2 = {}; + case 9: return [2 /*return*/, _h.sent()]; + case 10: + state_3 = {}; if (data !== undefined) - state_2.data = data; - state_2.error = error_3; - return [4 /*yield*/, this.core.mutate(skey, current, function () { return (tslib.__assign({ time: time_2, cooldown: cooldown_2, expiration: expiration_2, aborter: undefined, optimistic: false }, state_2)); }, params)]; - case 22: return [2 /*return*/, _j.sent()]; - case 23: - error_2 = _j.sent(); + state_3.data = data; + state_3.error = error_3; + return [4 /*yield*/, this.core.mutate(skey, current, function () { return (tslib.__assign({ time: time_2, cooldown: cooldown_2, expiration: expiration_2, aborter: undefined, optimistic: false }, state_3)); }, params)]; + case 11: return [2 /*return*/, _h.sent()]; + case 12: + error_2 = _h.sent(); return [4 /*yield*/, this.core.get(skey, params)]; - case 24: - current = _j.sent(); + case 13: + current = _h.sent(); if ((current === null || current === void 0 ? void 0 : current.aborter) !== aborter) return [2 /*return*/, current]; return [4 /*yield*/, this.core.mutate(skey, current, function (c) { return ({ time: c === null || c === void 0 ? void 0 : c.time, aborter: undefined, optimistic: false, data: c === null || c === void 0 ? void 0 : c.data, error: error_2 }); }, params)]; - case 25: return [2 /*return*/, _j.sent()]; - case 26: + case 14: return [2 /*return*/, _h.sent()]; + case 15: clearTimeout(timeout); return [7 /*endfinally*/]; - case 27: return [2 /*return*/]; + case 16: return [2 /*return*/]; } }); }); @@ -258,4 +239,4 @@ var SingleHelper = /** @class */ (function () { }()); exports.SingleHelper = SingleHelper; -//# sourceMappingURL=helper.cjs.map +//# sourceMappingURL=helper.js.map diff --git a/dist/cjs/mods/single/helper.js.map b/dist/cjs/mods/single/helper.js.map new file mode 100644 index 00000000..448ae94e --- /dev/null +++ b/dist/cjs/mods/single/helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helper.js","sources":["../../../../src/mods/single/helper.ts"],"sourcesContent":["import { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Result } from \"mods/types/result.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater } from \"mods/types/updater.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class SingleHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch\n * @param key Key (passed to fetcher)\n * @param skey Storage key\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async fetch(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Fetch timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(key, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Optimistic update\n * @param key Key (:K) (passed to poster)\n * @param skey Storage key\n * @param fetcher Resource poster\n * @param updater Mutation function\n * @param aborter AbortController\n * @param tparams Time parameters\n * @returns The new state\n * @throws Error\n */\n async update(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher | undefined,\n updater: Updater,\n aborter = new AbortController(),\n params: Params = {},\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter)\n current.aborter.abort(\"Replaced\")\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Update timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const generator = updater(current, { signal })\n\n let result: Result | void = undefined\n\n while (true) {\n const { done, value } = await generator.next()\n\n if (done) {\n result = value\n break\n }\n\n const {\n data,\n error\n } = value\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n const optimistic: State = {}\n\n if (data !== undefined)\n optimistic.data = data\n optimistic.error = error\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true, ...optimistic }),\n params)\n }\n\n if (result === undefined) {\n if (fetcher === undefined)\n throw new Error(\"Updater returned nothing and undefined fetcher\")\n result = await fetcher(key, { signal, cache: \"reload\" })\n }\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = result\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n if (error !== undefined) {\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, cooldown, expiration, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n }\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, optimistic: false, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":["__awaiter","DEFAULT_COOLDOWN","DEFAULT_EXPIRATION","DEFAULT_TIMEOUT","getTimeFromDelay","AbortError","__assign"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/single/object.cjs b/dist/cjs/mods/single/instance.js similarity index 89% rename from dist/cjs/mods/single/object.cjs rename to dist/cjs/mods/single/instance.js index 2490c2ef..c8654825 100644 --- a/dist/cjs/mods/single/object.cjs +++ b/dist/cjs/mods/single/instance.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var defaults = require('../utils/defaults.cjs'); +var defaults = require('../utils/defaults.js'); function getSingleStorageKey(key, params) { if (key === undefined) @@ -14,10 +14,10 @@ function getSingleStorageKey(key, params) { return serializer.stringify(key); } /** - * Non-React version of SingleHandle + * Non-React version of SingleQuery */ -var SingleObject = /** @class */ (function () { - function SingleObject(core, key, fetcher, params) { +var SingleInstance = /** @class */ (function () { + function SingleInstance(core, key, fetcher, params) { if (params === void 0) { params = {}; } this.core = core; this.key = key; @@ -28,26 +28,26 @@ var SingleObject = /** @class */ (function () { this.loadSync(); this.subscribe(); } - Object.defineProperty(SingleObject.prototype, "init", { + Object.defineProperty(SingleInstance.prototype, "init", { get: function () { return this._init; }, enumerable: false, configurable: true }); - Object.defineProperty(SingleObject.prototype, "state", { + Object.defineProperty(SingleInstance.prototype, "state", { get: function () { return this._state; }, enumerable: false, configurable: true }); - Object.defineProperty(SingleObject.prototype, "ready", { + Object.defineProperty(SingleInstance.prototype, "ready", { get: function () { return this._state !== null; }, enumerable: false, configurable: true }); - SingleObject.prototype.loadSync = function () { + SingleInstance.prototype.loadSync = function () { var _a = this, core = _a.core, skey = _a.skey, mparams = _a.mparams; this._state = core.getSync(skey, mparams); }; - SingleObject.prototype.loadAsync = function () { + SingleInstance.prototype.loadAsync = function () { return tslib.__awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams, _b; return tslib.__generator(this, function (_c) { @@ -65,7 +65,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.subscribe = function () { + SingleInstance.prototype.subscribe = function () { var _this = this; var _a = this, core = _a.core, skey = _a.skey; var setter = function (state) { @@ -76,7 +76,7 @@ var SingleObject = /** @class */ (function () { core.off(skey, setter); }).register(this, undefined); }; - SingleObject.prototype.mutate = function (mutator) { + SingleInstance.prototype.mutate = function (mutator) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, skey, mparams, _c; @@ -99,7 +99,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.fetch = function (aborter) { + SingleInstance.prototype.fetch = function (aborter) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, key, skey, fetcher, mparams, _c; @@ -124,7 +124,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.refetch = function (aborter) { + SingleInstance.prototype.refetch = function (aborter) { var _a; return tslib.__awaiter(this, void 0, void 0, function () { var _b, core, key, skey, fetcher, mparams, _c; @@ -149,7 +149,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.update = function (updater, uparams, aborter) { + SingleInstance.prototype.update = function (updater, uparams, aborter) { var _a; if (uparams === void 0) { uparams = {}; } return tslib.__awaiter(this, void 0, void 0, function () { @@ -174,7 +174,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.clear = function () { + SingleInstance.prototype.clear = function () { return tslib.__awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams; return tslib.__generator(this, function (_b) { @@ -190,9 +190,9 @@ var SingleObject = /** @class */ (function () { }); }); }; - return SingleObject; + return SingleInstance; }()); -exports.SingleObject = SingleObject; +exports.SingleInstance = SingleInstance; exports.getSingleStorageKey = getSingleStorageKey; -//# sourceMappingURL=object.cjs.map +//# sourceMappingURL=instance.js.map diff --git a/dist/cjs/mods/single/instance.js.map b/dist/cjs/mods/single/instance.js.map new file mode 100644 index 00000000..db4b6707 --- /dev/null +++ b/dist/cjs/mods/single/instance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instance.js","sources":["../../../../src/mods/single/instance.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Instance } from \"mods/types/instance.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getSingleStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return serializer.stringify(key)\n}\n\n/**\n * Non-React version of SingleQuery\n */\nexport class SingleInstance implements Instance{\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.skey = getSingleStorageKey(key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(this.skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams, true, true)\n }\n\n async update(updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n const fparams = { ...mparams, ...uparams }\n\n return this._state = await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":["DEFAULT_SERIALIZER","__assign"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/single/object.cjs.map b/dist/cjs/mods/single/object.cjs.map deleted file mode 100644 index 1e861887..00000000 --- a/dist/cjs/mods/single/object.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.cjs","sources":["../../../../src/mods/single/object.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Object } from \"mods/types/object.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getSingleStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return serializer.stringify(key)\n}\n\n/**\n * Non-React version of SingleHandle\n */\nexport class SingleObject implements Object{\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.skey = getSingleStorageKey(key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(this.skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams, true, true)\n }\n\n async update(updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n const fparams = { ...mparams, ...uparams }\n\n return this._state = await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":["DEFAULT_SERIALIZER","__assign"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/single/schema.cjs.map b/dist/cjs/mods/single/schema.cjs.map deleted file mode 100644 index 45f7f667..00000000 --- a/dist/cjs/mods/single/schema.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schema.cjs","sources":["../../../../src/mods/single/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { SingleObject } from \"./object.js\";\n\nexport function single(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new SingleSchema(key, fetcher, params)\n}\n\nexport class SingleSchema implements Schema> {\n constructor(\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { key, fetcher, params } = this\n\n return new SingleObject(core, key, fetcher, params)\n }\n\n async normalize(data: D, more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":["SingleObject"],"mappings":";;;;;;;SAOgB,MAAM,CACpB,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;IAE5B,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;QAF5B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAe;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;KAClC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAA2B,IAAI,EAA7B,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAErC,OAAO,IAAIA,mBAAY,CAAU,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAC7D,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAO,EAAE,IAA6B,EAAA;;;;;;wBACpD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/single/schema.cjs b/dist/cjs/mods/single/schema.js similarity index 86% rename from dist/cjs/mods/single/schema.cjs rename to dist/cjs/mods/single/schema.js index dd853827..52955cdb 100644 --- a/dist/cjs/mods/single/schema.cjs +++ b/dist/cjs/mods/single/schema.js @@ -3,9 +3,9 @@ Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); -var object = require('./object.cjs'); +var instance = require('./instance.js'); -function single(key, fetcher, params) { +function getSingleSchema(key, fetcher, params) { if (params === void 0) { params = {}; } return new SingleSchema(key, fetcher, params); } @@ -18,7 +18,7 @@ var SingleSchema = /** @class */ (function () { } SingleSchema.prototype.make = function (core) { var _a = this, key = _a.key, fetcher = _a.fetcher, params = _a.params; - return new object.SingleObject(core, key, fetcher, params); + return new instance.SingleInstance(core, key, fetcher, params); }; SingleSchema.prototype.normalize = function (data, more) { return tslib.__awaiter(this, void 0, void 0, function () { @@ -42,5 +42,5 @@ var SingleSchema = /** @class */ (function () { }()); exports.SingleSchema = SingleSchema; -exports.single = single; -//# sourceMappingURL=schema.cjs.map +exports.getSingleSchema = getSingleSchema; +//# sourceMappingURL=schema.js.map diff --git a/dist/cjs/mods/single/schema.js.map b/dist/cjs/mods/single/schema.js.map new file mode 100644 index 00000000..be2e63cb --- /dev/null +++ b/dist/cjs/mods/single/schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"schema.js","sources":["../../../../src/mods/single/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { SingleInstance } from \"./instance.js\";\n\nexport function getSingleSchema(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new SingleSchema(key, fetcher, params)\n}\n\nexport class SingleSchema implements Schema> {\n constructor(\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { key, fetcher, params } = this\n\n return new SingleInstance(core, key, fetcher, params)\n }\n\n async normalize(data: D, more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":["SingleInstance"],"mappings":";;;;;;;SAOgB,eAAe,CAC7B,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;IAE5B,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;QAF5B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAe;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;KAClC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAA2B,IAAI,EAA7B,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAErC,OAAO,IAAIA,uBAAc,CAAU,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAC/D,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAO,EAAE,IAA6B,EAAA;;;;;;wBACpD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/storages/idb/async.cjs.map b/dist/cjs/mods/storages/idb/async.cjs.map deleted file mode 100644 index 26048ff0..00000000 --- a/dist/cjs/mods/storages/idb/async.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"async.cjs","sources":["../../../../../src/mods/storages/idb/async.ts"],"sourcesContent":["import { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport function useIDBStorage(name: string) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new IDBStorage(name)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\nexport class IDBStorage implements AsyncStorage {\n readonly async = true\n readonly initialization?: Promise\n readonly keys = new Set()\n readonly onunload?: () => void\n\n _database?: IDBDatabase\n\n constructor(readonly name: string) {\n if (typeof indexedDB === \"undefined\")\n return\n this.initialization = this.load()\n this.onunload = () => this.unload()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n get database() { return this._database }\n\n private async load() {\n if (typeof indexedDB === \"undefined\")\n return\n this._database = await new Promise((ok, err) => {\n const req = indexedDB.open(this.name, 1)\n req.onupgradeneeded = () =>\n req.result.createObjectStore(\"keyval\", {})\n req.onblocked = () => err(\"blocked\")\n req.onsuccess = () => ok(req.result)\n req.onerror = () => err(req.error)\n })\n\n if (typeof Storage === \"undefined\")\n return\n const item = localStorage.getItem(`idb.${this.name}.keys`)\n if (!item) return\n const keys = JSON.parse(item) as string[]\n keys.forEach(key => this.keys.add(key))\n localStorage.removeItem(`idb.${this.name}.keys`)\n await this.collect().catch(console.error)\n }\n\n unmount() {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.onunload !== undefined)\n removeEventListener(\"beforeunload\", this.onunload)\n this.collect().catch(console.error)\n }\n\n private unload() {\n if (typeof Storage === \"undefined\")\n return\n const item = JSON.stringify([...this.keys])\n localStorage.setItem(`idb.${this.name}.keys`, item)\n }\n\n async collect() {\n if (typeof indexedDB === \"undefined\")\n return\n for (const key of this.keys) {\n const state = await this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n async transact(callback: (store: IDBObjectStore) => Promise, mode: IDBTransactionMode) {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.database === undefined)\n await this.initialization\n\n return await new Promise((ok, err) => {\n if (this.database === undefined)\n throw new Error(\"Undefined database\")\n const tx = this.database.transaction(\"keyval\", mode)\n tx.onerror = () => err(tx.error)\n tx.oncomplete = () => ok(result)\n\n let result: T;\n\n callback(tx.objectStore(\"keyval\"))\n .then(x => result = x)\n .then(() => tx.commit())\n .catch(err)\n })\n }\n\n async get(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.get(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok(req.result)\n })\n }, \"readonly\")\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.put(value, key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n\n async delete(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.delete(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n}"],"names":["useRef","useEffect","__values","__awaiter"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/storages/idb/async.cjs b/dist/cjs/mods/storages/idb/async.js similarity index 99% rename from dist/cjs/mods/storages/idb/async.cjs rename to dist/cjs/mods/storages/idb/async.js index 1c002620..f65b7131 100644 --- a/dist/cjs/mods/storages/idb/async.cjs +++ b/dist/cjs/mods/storages/idb/async.js @@ -246,4 +246,4 @@ var IDBStorage = /** @class */ (function () { exports.IDBStorage = IDBStorage; exports.useIDBStorage = useIDBStorage; -//# sourceMappingURL=async.cjs.map +//# sourceMappingURL=async.js.map diff --git a/dist/cjs/mods/storages/idb/async.js.map b/dist/cjs/mods/storages/idb/async.js.map new file mode 100644 index 00000000..0809c033 --- /dev/null +++ b/dist/cjs/mods/storages/idb/async.js.map @@ -0,0 +1 @@ +{"version":3,"file":"async.js","sources":["../../../../../src/mods/storages/idb/async.ts"],"sourcesContent":["import { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport function useIDBStorage(name: string) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new IDBStorage(name)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\nexport class IDBStorage implements AsyncStorage {\n readonly async = true\n readonly initialization?: Promise\n readonly keys = new Set()\n readonly onunload?: () => void\n\n _database?: IDBDatabase\n\n constructor(readonly name: string) {\n if (typeof indexedDB === \"undefined\")\n return\n this.initialization = this.load()\n this.onunload = () => this.unload()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n get database() { return this._database }\n\n private async load() {\n if (typeof indexedDB === \"undefined\")\n return\n this._database = await new Promise((ok, err) => {\n const req = indexedDB.open(this.name, 1)\n req.onupgradeneeded = () =>\n req.result.createObjectStore(\"keyval\", {})\n req.onblocked = () => err(\"blocked\")\n req.onsuccess = () => ok(req.result)\n req.onerror = () => err(req.error)\n })\n\n if (typeof Storage === \"undefined\")\n return\n const item = localStorage.getItem(`idb.${this.name}.keys`)\n if (!item) return\n const keys = JSON.parse(item) as string[]\n keys.forEach(key => this.keys.add(key))\n localStorage.removeItem(`idb.${this.name}.keys`)\n await this.collect().catch(console.error)\n }\n\n unmount() {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.onunload !== undefined)\n removeEventListener(\"beforeunload\", this.onunload)\n this.collect().catch(console.error)\n }\n\n private unload() {\n if (typeof Storage === \"undefined\")\n return\n const item = JSON.stringify([...this.keys])\n localStorage.setItem(`idb.${this.name}.keys`, item)\n }\n\n async collect() {\n if (typeof indexedDB === \"undefined\")\n return\n for (const key of this.keys) {\n const state = await this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n async transact(callback: (store: IDBObjectStore) => Promise, mode: IDBTransactionMode) {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.database === undefined)\n await this.initialization\n\n return await new Promise((ok, err) => {\n if (this.database === undefined)\n throw new Error(\"Undefined database\")\n const tx = this.database.transaction(\"keyval\", mode)\n tx.onerror = () => err(tx.error)\n tx.oncomplete = () => ok(result)\n\n let result: T;\n\n callback(tx.objectStore(\"keyval\"))\n .then(x => result = x)\n .then(() => tx.commit())\n .catch(err)\n })\n }\n\n async get(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.get(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok(req.result)\n })\n }, \"readonly\")\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.put(value, key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n\n async delete(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.delete(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n}"],"names":["useRef","useEffect","__values","__awaiter"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/storages/localStorage/async.cjs.map b/dist/cjs/mods/storages/localStorage/async.cjs.map deleted file mode 100644 index 4cd02599..00000000 --- a/dist/cjs/mods/storages/localStorage/async.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"async.cjs","sources":["../../../../../src/mods/storages/localStorage/async.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport function useAsyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new AsyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport class AsyncLocalStorage implements AsyncStorage {\n readonly async = true\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n if (this.onunload)\n removeEventListener(\"beforeunload\", this.onunload);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.getSync(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n getSync(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n async delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":["useRef","useEffect","__awaiter","__generator","__values"],"mappings":";;;;;;;AAKA;;;;;;;;;;;;AAYG;AACa,SAAA,oBAAoB,CAAC,MAAe,EAAE,UAAuB,EAAA;AAC3E,IAAA,IAAM,OAAO,GAAGA,YAAM,EAAqB,CAAA;AAE3C,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAE7DC,eAAS,CAAC,cAAM,OAAA,YAAA;;AACd,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;AAC5B,KAAC,CAFe,EAEf,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,iBAAA,kBAAA,YAAA;IAKE,SACW,iBAAA,CAAA,MAAgB,EAChB,UAA6B,EAAA;AAD7B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAgB,GAAA,OAAA,CAAA,EAAA;AAChB,QAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAA6B,GAAA,IAAA,CAAA,EAAA;QAFxC,IAQC,KAAA,GAAA,IAAA,CAAA;QAPU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAN/B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAA;AACZ,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAO/B,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;QACR,IAAI,CAAC,QAAQ,GAAG,YAAM,EAAA,OAAA,KAAI,CAAC,OAAO,EAAE,CAAd,EAAc,CAAA;AACpC,QAAA,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;KAChD;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;QAAA,IAMC,KAAA,GAAA,IAAA,CAAA;QALC,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;QACR,IAAI,IAAI,CAAC,QAAQ;AACf,YAAA,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,YAAA,EAAA,OAAAC,eAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA,EAAA,OAAAC,iBAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;AAAY,YAAA,OAAA,CAAA,CAAA,aAAA,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA;iBAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpD,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;QACE,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;;YACR,KAAkB,IAAA,KAAAC,cAAA,CAAA,IAAI,CAAC,IAAI,CAAA,gBAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;AAAxB,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;gBACZ,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAQ,GAAG,EAAE,IAAI,CAAC,CAAA;gBAC5C,IAAI,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,UAAU,MAAK,SAAS;oBAAE,SAAQ;AAC7C,gBAAA,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;oBAAE,SAAQ;AAC3C,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACxB,aAAA;;;;;;;;;KACF,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAiB,GAAW,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;QAC1C,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;QACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACpB,QAAA,IAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;AACpD,QAAA,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA;KAClD,CAAA;AAEK,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAG,GAAT,UAAmB,GAAW,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;;;;gBAC5C,IAAI,OAAO,OAAO,KAAK,WAAW;oBAChC,OAAM,CAAA,CAAA,YAAA,CAAA;gBACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACd,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;AACpD,gBAAA,IAAI,IAAI;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA,CAAA;;;;AAClD,KAAA,CAAA;AAEK,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAG,GAAT,UAAmB,GAAW,EAAE,KAAQ,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;;;;gBACtD,IAAI,OAAO,OAAO,KAAK,WAAW;oBAChC,OAAM,CAAA,CAAA,YAAA,CAAA;gBACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACd,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBAC7C,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;;;;AAC9C,KAAA,CAAA;AAEK,IAAA,iBAAA,CAAA,SAAA,CAAA,MAAM,GAAZ,UAAa,GAAW,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;;;gBACtC,IAAI,OAAO,OAAO,KAAK,WAAW;oBAChC,OAAM,CAAA,CAAA,YAAA,CAAA;gBACR,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACvB,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;;;;AAC3C,KAAA,CAAA;IACH,OAAC,iBAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/storages/localStorage/async.cjs b/dist/cjs/mods/storages/localStorage/async.js similarity index 99% rename from dist/cjs/mods/storages/localStorage/async.cjs rename to dist/cjs/mods/storages/localStorage/async.js index 6f91709e..899d2151 100644 --- a/dist/cjs/mods/storages/localStorage/async.cjs +++ b/dist/cjs/mods/storages/localStorage/async.js @@ -147,4 +147,4 @@ var AsyncLocalStorage = /** @class */ (function () { exports.AsyncLocalStorage = AsyncLocalStorage; exports.useAsyncLocalStorage = useAsyncLocalStorage; -//# sourceMappingURL=async.cjs.map +//# sourceMappingURL=async.js.map diff --git a/dist/cjs/mods/storages/localStorage/async.js.map b/dist/cjs/mods/storages/localStorage/async.js.map new file mode 100644 index 00000000..9fc77124 --- /dev/null +++ b/dist/cjs/mods/storages/localStorage/async.js.map @@ -0,0 +1 @@ +{"version":3,"file":"async.js","sources":["../../../../../src/mods/storages/localStorage/async.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport function useAsyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new AsyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport class AsyncLocalStorage implements AsyncStorage {\n readonly async = true\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n if (this.onunload)\n removeEventListener(\"beforeunload\", this.onunload);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.getSync(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n getSync(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n async delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":["useRef","useEffect","__awaiter","__generator","__values"],"mappings":";;;;;;;AAKA;;;;;;;;;;;;AAYG;AACa,SAAA,oBAAoB,CAAC,MAAe,EAAE,UAAuB,EAAA;AAC3E,IAAA,IAAM,OAAO,GAAGA,YAAM,EAAqB,CAAA;AAE3C,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAE7DC,eAAS,CAAC,cAAM,OAAA,YAAA;;AACd,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;AAC5B,KAAC,CAFe,EAEf,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,iBAAA,kBAAA,YAAA;IAKE,SACW,iBAAA,CAAA,MAAgB,EAChB,UAA6B,EAAA;AAD7B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAgB,GAAA,OAAA,CAAA,EAAA;AAChB,QAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAA6B,GAAA,IAAA,CAAA,EAAA;QAFxC,IAQC,KAAA,GAAA,IAAA,CAAA;QAPU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAN/B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAA;AACZ,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAO/B,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;QACR,IAAI,CAAC,QAAQ,GAAG,YAAM,EAAA,OAAA,KAAI,CAAC,OAAO,EAAE,CAAd,EAAc,CAAA;AACpC,QAAA,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;KAChD;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;QAAA,IAMC,KAAA,GAAA,IAAA,CAAA;QALC,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;QACR,IAAI,IAAI,CAAC,QAAQ;AACf,YAAA,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,YAAA,EAAA,OAAAC,eAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA,EAAA,OAAAC,iBAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;AAAY,YAAA,OAAA,CAAA,CAAA,aAAA,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA;iBAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpD,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;QACE,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;;YACR,KAAkB,IAAA,KAAAC,cAAA,CAAA,IAAI,CAAC,IAAI,CAAA,gBAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;AAAxB,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;gBACZ,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAQ,GAAG,EAAE,IAAI,CAAC,CAAA;gBAC5C,IAAI,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,UAAU,MAAK,SAAS;oBAAE,SAAQ;AAC7C,gBAAA,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;oBAAE,SAAQ;AAC3C,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACxB,aAAA;;;;;;;;;KACF,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAiB,GAAW,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;QAC1C,IAAI,OAAO,OAAO,KAAK,WAAW;YAChC,OAAM;QACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACpB,QAAA,IAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;AACpD,QAAA,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA;KAClD,CAAA;AAEK,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAG,GAAT,UAAmB,GAAW,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;;;;gBAC5C,IAAI,OAAO,OAAO,KAAK,WAAW;oBAChC,OAAM,CAAA,CAAA,YAAA,CAAA;gBACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACd,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;AACpD,gBAAA,IAAI,IAAI;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA,CAAA;;;;AAClD,KAAA,CAAA;AAEK,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAG,GAAT,UAAmB,GAAW,EAAE,KAAQ,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;;;;gBACtD,IAAI,OAAO,OAAO,KAAK,WAAW;oBAChC,OAAM,CAAA,CAAA,YAAA,CAAA;gBACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACd,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBAC7C,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;;;;AAC9C,KAAA,CAAA;AAEK,IAAA,iBAAA,CAAA,SAAA,CAAA,MAAM,GAAZ,UAAa,GAAW,EAAE,MAAc,EAAA;AAAd,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;;;gBACtC,IAAI,OAAO,OAAO,KAAK,WAAW;oBAChC,OAAM,CAAA,CAAA,YAAA,CAAA;gBACR,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACvB,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;;;;AAC3C,KAAA,CAAA;IACH,OAAC,iBAAA,CAAA;AAAD,CAAC,EAAA;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/storages/localStorage/sync.cjs.map b/dist/cjs/mods/storages/localStorage/sync.cjs.map deleted file mode 100644 index b2043298..00000000 --- a/dist/cjs/mods/storages/localStorage/sync.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sync.cjs","sources":["../../../../../src/mods/storages/localStorage/sync.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { SyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport function useSyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (!storage.current)\n storage.current = new SyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport class SyncLocalStorage implements SyncStorage {\n readonly async = false\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n removeEventListener(\"beforeunload\", this.onunload!);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":["useRef","useEffect","__awaiter","__generator","__values"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/storages/localStorage/sync.cjs b/dist/cjs/mods/storages/localStorage/sync.js similarity index 99% rename from dist/cjs/mods/storages/localStorage/sync.cjs rename to dist/cjs/mods/storages/localStorage/sync.js index 998ee300..dba73c5c 100644 --- a/dist/cjs/mods/storages/localStorage/sync.cjs +++ b/dist/cjs/mods/storages/localStorage/sync.js @@ -113,4 +113,4 @@ var SyncLocalStorage = /** @class */ (function () { exports.SyncLocalStorage = SyncLocalStorage; exports.useSyncLocalStorage = useSyncLocalStorage; -//# sourceMappingURL=sync.cjs.map +//# sourceMappingURL=sync.js.map diff --git a/dist/cjs/mods/storages/localStorage/sync.js.map b/dist/cjs/mods/storages/localStorage/sync.js.map new file mode 100644 index 00000000..d9298dce --- /dev/null +++ b/dist/cjs/mods/storages/localStorage/sync.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sync.js","sources":["../../../../../src/mods/storages/localStorage/sync.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { SyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport function useSyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (!storage.current)\n storage.current = new SyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport class SyncLocalStorage implements SyncStorage {\n readonly async = false\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n removeEventListener(\"beforeunload\", this.onunload!);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":["useRef","useEffect","__awaiter","__generator","__values"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/mods/types/storage.cjs.map b/dist/cjs/mods/types/storage.cjs.map deleted file mode 100644 index 09ada947..00000000 --- a/dist/cjs/mods/types/storage.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"storage.cjs","sources":["../../../../src/mods/types/storage.ts"],"sourcesContent":["export type Storage =\n | SyncStorage\n | AsyncStorage\n\nexport interface SyncStorage {\n async?: false\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): T | undefined\n set(key: string, value: T, ignore?: boolean): void\n delete(key: string, ignore?: boolean): void\n}\n\nexport interface AsyncStorage {\n async: true\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): Promise\n set(key: string, value: T, ignore?: boolean): Promise\n delete(key: string, ignore?: boolean): Promise\n}\n\nexport function isAsyncStorage(storage: Storage): storage is AsyncStorage {\n return Boolean(storage.async)\n}"],"names":[],"mappings":";;;;AA0BM,SAAU,cAAc,CAAC,OAAgB,EAAA;AAC7C,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/B;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/types/storage.cjs b/dist/cjs/mods/types/storage.js similarity index 83% rename from dist/cjs/mods/types/storage.cjs rename to dist/cjs/mods/types/storage.js index 428facfa..03478f4d 100644 --- a/dist/cjs/mods/types/storage.cjs +++ b/dist/cjs/mods/types/storage.js @@ -7,4 +7,4 @@ function isAsyncStorage(storage) { } exports.isAsyncStorage = isAsyncStorage; -//# sourceMappingURL=storage.cjs.map +//# sourceMappingURL=storage.js.map diff --git a/dist/cjs/mods/types/storage.js.map b/dist/cjs/mods/types/storage.js.map new file mode 100644 index 00000000..f33348bf --- /dev/null +++ b/dist/cjs/mods/types/storage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.js","sources":["../../../../src/mods/types/storage.ts"],"sourcesContent":["export type Storage =\n | SyncStorage\n | AsyncStorage\n\nexport interface SyncStorage {\n async?: false\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): T | undefined\n set(key: string, value: T, ignore?: boolean): void\n delete(key: string, ignore?: boolean): void\n}\n\nexport interface AsyncStorage {\n async: true\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): Promise\n set(key: string, value: T, ignore?: boolean): Promise\n delete(key: string, ignore?: boolean): Promise\n}\n\nexport function isAsyncStorage(storage: Storage): storage is AsyncStorage {\n return Boolean(storage.async)\n}"],"names":[],"mappings":";;;;AA0BM,SAAU,cAAc,CAAC,OAAgB,EAAA;AAC7C,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/B;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/utils/defaults.cjs.map b/dist/cjs/mods/utils/defaults.cjs.map deleted file mode 100644 index 76bc3928..00000000 --- a/dist/cjs/mods/utils/defaults.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaults.cjs","sources":["../../../../src/mods/utils/defaults.ts"],"sourcesContent":["import { jsonEquals } from \"./equals.js\"\n\nexport const DEFAULT_EQUALS = jsonEquals\nexport const DEFAULT_SERIALIZER = JSON\n\nexport const DEFAULT_COOLDOWN = 1 * 1000\nexport const DEFAULT_EXPIRATION = -1\nexport const DEFAULT_TIMEOUT = 5 * 1000\n"],"names":["jsonEquals"],"mappings":";;;;;;AAEO,IAAM,cAAc,GAAGA,kBAAU;AACjC,IAAM,kBAAkB,GAAG,KAAI;AAEzB,IAAA,gBAAgB,GAAG,CAAC,GAAG,KAAI;AAC3B,IAAA,kBAAkB,GAAG,CAAC,EAAC;AACvB,IAAA,eAAe,GAAG,CAAC,GAAG;;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/utils/defaults.cjs b/dist/cjs/mods/utils/defaults.js similarity index 86% rename from dist/cjs/mods/utils/defaults.cjs rename to dist/cjs/mods/utils/defaults.js index 199a9a2d..e18bfb7b 100644 --- a/dist/cjs/mods/utils/defaults.cjs +++ b/dist/cjs/mods/utils/defaults.js @@ -2,7 +2,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); -var equals = require('./equals.cjs'); +var equals = require('./equals.js'); var DEFAULT_EQUALS = equals.jsonEquals; var DEFAULT_SERIALIZER = JSON; @@ -15,4 +15,4 @@ exports.DEFAULT_EQUALS = DEFAULT_EQUALS; exports.DEFAULT_EXPIRATION = DEFAULT_EXPIRATION; exports.DEFAULT_SERIALIZER = DEFAULT_SERIALIZER; exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; -//# sourceMappingURL=defaults.cjs.map +//# sourceMappingURL=defaults.js.map diff --git a/dist/cjs/mods/utils/defaults.js.map b/dist/cjs/mods/utils/defaults.js.map new file mode 100644 index 00000000..a6c3bce3 --- /dev/null +++ b/dist/cjs/mods/utils/defaults.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaults.js","sources":["../../../../src/mods/utils/defaults.ts"],"sourcesContent":["import { jsonEquals } from \"./equals.js\"\n\nexport const DEFAULT_EQUALS = jsonEquals\nexport const DEFAULT_SERIALIZER = JSON\n\nexport const DEFAULT_COOLDOWN = 1 * 1000\nexport const DEFAULT_EXPIRATION = -1\nexport const DEFAULT_TIMEOUT = 5 * 1000\n"],"names":["jsonEquals"],"mappings":";;;;;;AAEO,IAAM,cAAc,GAAGA,kBAAU;AACjC,IAAM,kBAAkB,GAAG,KAAI;AAEzB,IAAA,gBAAgB,GAAG,CAAC,GAAG,KAAI;AAC3B,IAAA,kBAAkB,GAAG,CAAC,EAAC;AACvB,IAAA,eAAe,GAAG,CAAC,GAAG;;;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/utils/equals.cjs.map b/dist/cjs/mods/utils/equals.cjs.map deleted file mode 100644 index b9e01c2b..00000000 --- a/dist/cjs/mods/utils/equals.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"equals.cjs","sources":["../../../../src/mods/utils/equals.ts"],"sourcesContent":["\nexport type Equals =\n (a: unknown, b: unknown) => boolean\n\nexport function refEquals(a: unknown, b: unknown) {\n return a === b\n}\n\nexport function jsonEquals(a: unknown, b: unknown) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n return JSON.stringify(a) === JSON.stringify(b)\n}\n\nexport function shallowEquals(a?: any, b?: any) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n const ka = Object.keys(a)\n const kb = Object.keys(b)\n\n if (ka.length !== kb.length)\n return false\n for (const key of ka)\n if (a[key] !== b[key])\n return false\n return true\n}"],"names":["__values"],"mappings":";;;;;;AAIgB,SAAA,SAAS,CAAC,CAAU,EAAE,CAAU,EAAA;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC;AAEe,SAAA,UAAU,CAAC,CAAU,EAAE,CAAU,EAAA;IAC/C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;AACd,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAEe,SAAA,aAAa,CAAC,CAAO,EAAE,CAAO,EAAA;;IAC5C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;IACd,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEzB,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AACzB,QAAA,OAAO,KAAK,CAAA;;AACd,QAAA,KAAkB,IAAA,IAAA,GAAAA,cAAA,CAAA,EAAE,CAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA;AAAf,YAAA,IAAM,GAAG,GAAA,MAAA,CAAA,KAAA,CAAA;YACZ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACnB,gBAAA,OAAO,KAAK,CAAA;AAAA,SAAA;;;;;;;;;AAChB,IAAA,OAAO,IAAI,CAAA;AACb;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/utils/equals.cjs b/dist/cjs/mods/utils/equals.js similarity index 96% rename from dist/cjs/mods/utils/equals.cjs rename to dist/cjs/mods/utils/equals.js index 391cd3ff..8545f243 100644 --- a/dist/cjs/mods/utils/equals.cjs +++ b/dist/cjs/mods/utils/equals.js @@ -44,4 +44,4 @@ function shallowEquals(a, b) { exports.jsonEquals = jsonEquals; exports.refEquals = refEquals; exports.shallowEquals = shallowEquals; -//# sourceMappingURL=equals.cjs.map +//# sourceMappingURL=equals.js.map diff --git a/dist/cjs/mods/utils/equals.js.map b/dist/cjs/mods/utils/equals.js.map new file mode 100644 index 00000000..f2a0569d --- /dev/null +++ b/dist/cjs/mods/utils/equals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"equals.js","sources":["../../../../src/mods/utils/equals.ts"],"sourcesContent":["\nexport type Equals =\n (a: unknown, b: unknown) => boolean\n\nexport function refEquals(a: unknown, b: unknown) {\n return a === b\n}\n\nexport function jsonEquals(a: unknown, b: unknown) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n return JSON.stringify(a) === JSON.stringify(b)\n}\n\nexport function shallowEquals(a?: any, b?: any) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n const ka = Object.keys(a)\n const kb = Object.keys(b)\n\n if (ka.length !== kb.length)\n return false\n for (const key of ka)\n if (a[key] !== b[key])\n return false\n return true\n}"],"names":["__values"],"mappings":";;;;;;AAIgB,SAAA,SAAS,CAAC,CAAU,EAAE,CAAU,EAAA;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC;AAEe,SAAA,UAAU,CAAC,CAAU,EAAE,CAAU,EAAA;IAC/C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;AACd,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAEe,SAAA,aAAa,CAAC,CAAO,EAAE,CAAO,EAAA;;IAC5C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;IACd,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEzB,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AACzB,QAAA,OAAO,KAAK,CAAA;;AACd,QAAA,KAAkB,IAAA,IAAA,GAAAA,cAAA,CAAA,EAAE,CAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA;AAAf,YAAA,IAAM,GAAG,GAAA,MAAA,CAAA,KAAA,CAAA;YACZ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACnB,gBAAA,OAAO,KAAK,CAAA;AAAA,SAAA;;;;;;;;;AAChB,IAAA,OAAO,IAAI,CAAA;AACb;;;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/utils/lock.cjs.map b/dist/cjs/mods/utils/lock.cjs.map deleted file mode 100644 index 5fccf9ef..00000000 --- a/dist/cjs/mods/utils/lock.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lock.cjs","sources":["../../../../src/mods/utils/lock.ts"],"sourcesContent":["export class Lock {\n private mutex?: Promise\n\n async lock(callback: () => Promise) {\n if (this.mutex) await this.mutex\n const promise = callback()\n this.mutex = promise\n return await promise\n }\n}"],"names":[],"mappings":";;;;;;AAAA,IAAA,IAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,IAAA,GAAA;KASC;IANO,IAAI,CAAA,SAAA,CAAA,IAAA,GAAV,UAAc,QAA0B,EAAA;;;;;;6BAClC,IAAI,CAAC,KAAK,EAAV,OAAU,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAAE,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;AAAhB,wBAAA,EAAA,CAAA,IAAA,EAAgB,CAAA;;;wBAC1B,OAAO,GAAG,QAAQ,EAAE,CAAA;AAC1B,wBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AACb,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAA,CAAA;AAApB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAa,CAAA,CAAA;;;;AACrB,KAAA,CAAA;IACH,OAAC,IAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/cjs/mods/utils/lock.cjs b/dist/cjs/mods/utils/lock.js similarity index 96% rename from dist/cjs/mods/utils/lock.cjs rename to dist/cjs/mods/utils/lock.js index d8567f78..dd96c1df 100644 --- a/dist/cjs/mods/utils/lock.cjs +++ b/dist/cjs/mods/utils/lock.js @@ -31,4 +31,4 @@ var Lock = /** @class */ (function () { }()); exports.Lock = Lock; -//# sourceMappingURL=lock.cjs.map +//# sourceMappingURL=lock.js.map diff --git a/dist/cjs/mods/utils/lock.js.map b/dist/cjs/mods/utils/lock.js.map new file mode 100644 index 00000000..8043d57d --- /dev/null +++ b/dist/cjs/mods/utils/lock.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lock.js","sources":["../../../../src/mods/utils/lock.ts"],"sourcesContent":["export class Lock {\n private mutex?: Promise\n\n async lock(callback: () => Promise) {\n if (this.mutex) await this.mutex\n const promise = callback()\n this.mutex = promise\n return await promise\n }\n}"],"names":[],"mappings":";;;;;;AAAA,IAAA,IAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,IAAA,GAAA;KASC;IANO,IAAI,CAAA,SAAA,CAAA,IAAA,GAAV,UAAc,QAA0B,EAAA;;;;;;6BAClC,IAAI,CAAC,KAAK,EAAV,OAAU,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAAE,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;AAAhB,wBAAA,EAAA,CAAA,IAAA,EAAgB,CAAA;;;wBAC1B,OAAO,GAAG,QAAQ,EAAE,CAAA;AAC1B,wBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AACb,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAA,CAAA;AAApB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAa,CAAA,CAAA;;;;AACrB,KAAA,CAAA;IACH,OAAC,IAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/index.js b/dist/mjs/index.js new file mode 100644 index 00000000..545d7fc6 --- /dev/null +++ b/dist/mjs/index.js @@ -0,0 +1,32 @@ +import * as index from './mods/index.js'; +export { index as XSWR }; +export { Core } from './mods/core.js'; +export { AbortError, isAbortError } from './mods/errors/abort.js'; +export { CoreContext, CoreProvider, useCore, useCoreProvider } from './mods/react/contexts/core.js'; +export { useDebug } from './mods/react/hooks/blocks/use-debug.js'; +export { useError } from './mods/react/hooks/blocks/use-error.js'; +export { useFallback } from './mods/react/hooks/blocks/use-fallback.js'; +export { useFetch } from './mods/react/hooks/blocks/use-fetch.js'; +export { useInterval } from './mods/react/hooks/blocks/use-interval.js'; +export { useMount } from './mods/react/hooks/blocks/use-mount.js'; +export { useOnce } from './mods/react/hooks/blocks/use-once.js'; +export { useOnline } from './mods/react/hooks/blocks/use-online.js'; +export { useRetry } from './mods/react/hooks/blocks/use-retry.js'; +export { useVisible } from './mods/react/hooks/blocks/use-visible.js'; +export { useQuery } from './mods/react/hooks/queries/router.js'; +export { useScrollQuery } from './mods/react/hooks/queries/scroll.js'; +export { useSingleQuery } from './mods/react/hooks/queries/single.js'; +export { useXSWR } from './mods/react/hooks/xswr.js'; +export { ScrollHelper } from './mods/scroll/helper.js'; +export { ScrollInstance, getScrollStorageKey } from './mods/scroll/instance.js'; +export { ScrollSchema, getScrollSchema } from './mods/scroll/schema.js'; +export { SingleHelper } from './mods/single/helper.js'; +export { SingleInstance, getSingleStorageKey } from './mods/single/instance.js'; +export { SingleSchema, getSingleSchema } from './mods/single/schema.js'; +export { IDBStorage, useIDBStorage } from './mods/storages/idb/async.js'; +export { AsyncLocalStorage, useAsyncLocalStorage } from './mods/storages/localStorage/async.js'; +export { SyncLocalStorage, useSyncLocalStorage } from './mods/storages/localStorage/sync.js'; +export { isAsyncStorage } from './mods/types/storage.js'; +export { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_SERIALIZER, DEFAULT_TIMEOUT } from './mods/utils/defaults.js'; +export { jsonEquals, refEquals, shallowEquals } from './mods/utils/equals.js'; +//# sourceMappingURL=index.js.map diff --git a/dist/mjs/index.js.map b/dist/mjs/index.js.map new file mode 100644 index 00000000..fee1d887 --- /dev/null +++ b/dist/mjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/mjs/index.mjs b/dist/mjs/index.mjs deleted file mode 100644 index c6ab060a..00000000 --- a/dist/mjs/index.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import * as index from './mods/index.mjs'; -export { index as XSWR }; -//# sourceMappingURL=index.mjs.map diff --git a/dist/mjs/index.mjs.map b/dist/mjs/index.mjs.map deleted file mode 100644 index 36420662..00000000 --- a/dist/mjs/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/dist/mjs/libs/arrays.mjs b/dist/mjs/libs/arrays.js similarity index 75% rename from dist/mjs/libs/arrays.mjs rename to dist/mjs/libs/arrays.js index a1ae4618..cb3c7036 100644 --- a/dist/mjs/libs/arrays.mjs +++ b/dist/mjs/libs/arrays.js @@ -4,4 +4,4 @@ function lastOf(array) { } export { lastOf }; -//# sourceMappingURL=arrays.mjs.map +//# sourceMappingURL=arrays.js.map diff --git a/dist/mjs/libs/arrays.js.map b/dist/mjs/libs/arrays.js.map new file mode 100644 index 00000000..d59753e8 --- /dev/null +++ b/dist/mjs/libs/arrays.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrays.js","sources":["../../../src/libs/arrays.ts"],"sourcesContent":["export function lastOf(array: T[]) {\n if (array.length) return array[array.length - 1]\n}"],"names":[],"mappings":"AAAM,SAAU,MAAM,CAAI,KAAU,EAAA;IAClC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAClD;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/arrays.mjs.map b/dist/mjs/libs/arrays.mjs.map deleted file mode 100644 index bd1a2233..00000000 --- a/dist/mjs/libs/arrays.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"arrays.mjs","sources":["../../../src/libs/arrays.ts"],"sourcesContent":["export function lastOf(array: T[]) {\n if (array.length) return array[array.length - 1]\n}"],"names":[],"mappings":"AAAM,SAAU,MAAM,CAAI,KAAU,EAAA;IAClC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAClD;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/generator.mjs b/dist/mjs/libs/generator.mjs deleted file mode 100644 index 70dac6b2..00000000 --- a/dist/mjs/libs/generator.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { __awaiter, __generator } from 'tslib'; - -function returnOf(generator) { - return __awaiter(this, void 0, void 0, function () { - var next; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, generator.next()]; - case 1: - next = _a.sent(); - if (next.done) - return [2 /*return*/, next.value]; - return [2 /*return*/]; - } - }); - }); -} - -export { returnOf }; -//# sourceMappingURL=generator.mjs.map diff --git a/dist/mjs/libs/generator.mjs.map b/dist/mjs/libs/generator.mjs.map deleted file mode 100644 index 6b0c562f..00000000 --- a/dist/mjs/libs/generator.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.mjs","sources":["../../../src/libs/generator.ts"],"sourcesContent":["export async function nextOf(generator: AsyncGenerator) {\n const next = await generator.next()\n if (!next.done) return next.value\n}\n\nexport async function returnOf(generator: AsyncGenerator) {\n const next = await generator.next()\n if (next.done) return next.value\n}"],"names":[],"mappings":";;AAKM,SAAgB,QAAQ,CAAO,SAA+B,EAAA;;;;;AACrD,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,SAAS,CAAC,IAAI,EAAE,CAAA,CAAA;;AAA7B,oBAAA,IAAI,GAAG,EAAsB,CAAA,IAAA,EAAA,CAAA;oBACnC,IAAI,IAAI,CAAC,IAAI;wBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;;;;AACjC;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/ortho.mjs b/dist/mjs/libs/ortho.js similarity index 98% rename from dist/mjs/libs/ortho.mjs rename to dist/mjs/libs/ortho.js index ac2f21a5..53d91ad2 100644 --- a/dist/mjs/libs/ortho.mjs +++ b/dist/mjs/libs/ortho.js @@ -66,4 +66,4 @@ var Ortho = /** @class */ (function () { }()); export { MapOfArrays, Ortho }; -//# sourceMappingURL=ortho.mjs.map +//# sourceMappingURL=ortho.js.map diff --git a/dist/mjs/libs/ortho.js.map b/dist/mjs/libs/ortho.js.map new file mode 100644 index 00000000..98c12ffd --- /dev/null +++ b/dist/mjs/libs/ortho.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ortho.js","sources":["../../../src/libs/ortho.ts"],"sourcesContent":["\n/**\n * Map of arrays data structure\n */\nexport class MapOfArrays {\n private map = new Map()\n\n get(key: K) {\n return this.map.get(key)\n }\n\n push(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) this.map.set(key, [value])\n else values.push(value)\n }\n\n erase(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) return\n const values2 = values\n .filter(it => it !== value)\n if (values2.length)\n this.map.set(key, values2)\n else\n this.map.delete(key)\n }\n}\n\n/**\n * Orthogonal state publisher\n */\nexport class Ortho {\n private listeners = new MapOfArrays void>()\n\n publish(key: K, value: S) {\n const listeners = this.listeners.get(key)\n if (!listeners) return\n\n for (const listener of listeners)\n listener(value)\n }\n\n on(key: K, listener: (x: S) => void) {\n this.listeners.push(key, listener)\n }\n\n off(key: K, listener: (x: S) => void) {\n this.listeners.erase(key, listener)\n }\n}\n"],"names":[],"mappings":";;AACA;;AAEG;AACH,IAAA,WAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;KAsBhC;IApBC,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAM,EAAA;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACzB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,GAAM,EAAE,KAAQ,EAAA;QACnB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAM,EAAE,KAAQ,EAAA;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAM,OAAO,GAAG,MAAM;aACnB,MAAM,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,KAAK,KAAK,CAAA,EAAA,CAAC,CAAA;QAC7B,IAAI,OAAO,CAAC,MAAM;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAE1B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACvB,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,EAAA;AAED;;AAEG;AACH,IAAA,KAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,KAAA,GAAA;AACU,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,WAAW,EAAqB,CAAA;KAiBzD;AAfC,IAAA,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,GAAM,EAAE,KAAQ,EAAA;;QACtB,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzC,QAAA,IAAI,CAAC,SAAS;YAAE,OAAM;;AAEtB,YAAA,KAAuB,IAAA,WAAA,GAAA,QAAA,CAAA,SAAS,CAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA;AAA3B,gBAAA,IAAM,QAAQ,GAAA,aAAA,CAAA,KAAA,CAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAA;AAAA,aAAA;;;;;;;;;KAClB,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,EAAE,GAAF,UAAG,GAAM,EAAE,QAAwB,EAAA;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACnC,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,GAAM,EAAE,QAAwB,EAAA;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACpC,CAAA;IACH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/ortho.mjs.map b/dist/mjs/libs/ortho.mjs.map deleted file mode 100644 index 7d39fb7c..00000000 --- a/dist/mjs/libs/ortho.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ortho.mjs","sources":["../../../src/libs/ortho.ts"],"sourcesContent":["\n/**\n * Map of arrays data structure\n */\nexport class MapOfArrays {\n private map = new Map()\n\n get(key: K) {\n return this.map.get(key)\n }\n\n push(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) this.map.set(key, [value])\n else values.push(value)\n }\n\n erase(key: K, value: V) {\n const values = this.map.get(key)\n if (!values) return\n const values2 = values\n .filter(it => it !== value)\n if (values2.length)\n this.map.set(key, values2)\n else\n this.map.delete(key)\n }\n}\n\n/**\n * Orthogonal state publisher\n */\nexport class Ortho {\n private listeners = new MapOfArrays void>()\n\n publish(key: K, value: S) {\n const listeners = this.listeners.get(key)\n if (!listeners) return\n\n for (const listener of listeners)\n listener(value)\n }\n\n on(key: K, listener: (x: S) => void) {\n this.listeners.push(key, listener)\n }\n\n off(key: K, listener: (x: S) => void) {\n this.listeners.erase(key, listener)\n }\n}\n"],"names":[],"mappings":";;AACA;;AAEG;AACH,IAAA,WAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;KAsBhC;IApBC,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAM,EAAA;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACzB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,GAAM,EAAE,KAAQ,EAAA;QACnB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB,CAAA;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,GAAM,EAAE,KAAQ,EAAA;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAM,OAAO,GAAG,MAAM;aACnB,MAAM,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,KAAK,KAAK,CAAA,EAAA,CAAC,CAAA;QAC7B,IAAI,OAAO,CAAC,MAAM;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAE1B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACvB,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,EAAA;AAED;;AAEG;AACH,IAAA,KAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,KAAA,GAAA;AACU,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,WAAW,EAAqB,CAAA;KAiBzD;AAfC,IAAA,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,GAAM,EAAE,KAAQ,EAAA;;QACtB,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzC,QAAA,IAAI,CAAC,SAAS;YAAE,OAAM;;AAEtB,YAAA,KAAuB,IAAA,WAAA,GAAA,QAAA,CAAA,SAAS,CAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA;AAA3B,gBAAA,IAAM,QAAQ,GAAA,aAAA,CAAA,KAAA,CAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAA;AAAA,aAAA;;;;;;;;;KAClB,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,EAAE,GAAF,UAAG,GAAM,EAAE,QAAwB,EAAA;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACnC,CAAA;AAED,IAAA,KAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,GAAM,EAAE,QAAwB,EAAA;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;KACpC,CAAA;IACH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/react.mjs b/dist/mjs/libs/react.js similarity index 82% rename from dist/mjs/libs/react.mjs rename to dist/mjs/libs/react.js index 6b8a9aee..859637d3 100644 --- a/dist/mjs/libs/react.mjs +++ b/dist/mjs/libs/react.js @@ -7,4 +7,4 @@ function useAutoRef(current) { } export { useAutoRef }; -//# sourceMappingURL=react.mjs.map +//# sourceMappingURL=react.js.map diff --git a/dist/mjs/libs/react.js.map b/dist/mjs/libs/react.js.map new file mode 100644 index 00000000..e2ff8683 --- /dev/null +++ b/dist/mjs/libs/react.js.map @@ -0,0 +1 @@ +{"version":3,"file":"react.js","sources":["../../../src/libs/react.ts"],"sourcesContent":["import { ReactNode, useRef } from \"react\";\n\nexport interface ChildrenProps {\n children?: ReactNode\n}\n\nexport function useAutoRef(current: T) {\n const ref = useRef(current)\n ref.current = current\n return ref\n}"],"names":[],"mappings":";;AAMM,SAAU,UAAU,CAAI,OAAU,EAAA;AACtC,IAAA,IAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;AAC3B,IAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;AACrB,IAAA,OAAO,GAAG,CAAA;AACZ;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/react.mjs.map b/dist/mjs/libs/react.mjs.map deleted file mode 100644 index 2ca3b2e5..00000000 --- a/dist/mjs/libs/react.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"react.mjs","sources":["../../../src/libs/react.ts"],"sourcesContent":["import { ReactNode, useRef } from \"react\";\n\nexport interface ChildrenProps {\n children?: ReactNode\n}\n\nexport function useAutoRef(current: T) {\n const ref = useRef(current)\n ref.current = current\n return ref\n}"],"names":[],"mappings":";;AAMM,SAAU,UAAU,CAAI,OAAU,EAAA;AACtC,IAAA,IAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;AAC3B,IAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;AACrB,IAAA,OAAO,GAAG,CAAA;AACZ;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/time.mjs b/dist/mjs/libs/time.js similarity index 80% rename from dist/mjs/libs/time.mjs rename to dist/mjs/libs/time.js index 4a1af0b8..963b8793 100644 --- a/dist/mjs/libs/time.mjs +++ b/dist/mjs/libs/time.js @@ -5,4 +5,4 @@ function getTimeFromDelay(delay) { } export { getTimeFromDelay }; -//# sourceMappingURL=time.mjs.map +//# sourceMappingURL=time.js.map diff --git a/dist/mjs/libs/time.js.map b/dist/mjs/libs/time.js.map new file mode 100644 index 00000000..aff834e3 --- /dev/null +++ b/dist/mjs/libs/time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time.js","sources":["../../../src/libs/time.ts"],"sourcesContent":["export function getTimeFromDelay(delay: number) {\n if (delay === -1) return\n return Date.now() + delay\n}"],"names":[],"mappings":"AAAM,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAM;AACxB,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;AAC3B;;;;"} \ No newline at end of file diff --git a/dist/mjs/libs/time.mjs.map b/dist/mjs/libs/time.mjs.map deleted file mode 100644 index d0dea109..00000000 --- a/dist/mjs/libs/time.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"time.mjs","sources":["../../../src/libs/time.ts"],"sourcesContent":["export function getTimeFromDelay(delay: number) {\n if (delay === -1) return\n return Date.now() + delay\n}"],"names":[],"mappings":"AAAM,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAM;AACxB,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;AAC3B;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/core.mjs b/dist/mjs/mods/core.js similarity index 97% rename from dist/mjs/mods/core.mjs rename to dist/mjs/mods/core.js index 555908ab..3f2c7099 100644 --- a/dist/mjs/mods/core.mjs +++ b/dist/mjs/mods/core.js @@ -1,11 +1,11 @@ import { __extends, __values, __awaiter, __generator, __assign } from 'tslib'; -import { Ortho } from '../libs/ortho.mjs'; -import { ScrollHelper } from './scroll/helper.mjs'; -import { SingleHelper } from './single/helper.mjs'; -import { isAsyncStorage } from './types/storage.mjs'; -import { DEFAULT_EQUALS } from './utils/defaults.mjs'; -import { shallowEquals } from './utils/equals.mjs'; -import { Lock } from './utils/lock.mjs'; +import { Ortho } from '../libs/ortho.js'; +import { ScrollHelper } from './scroll/helper.js'; +import { SingleHelper } from './single/helper.js'; +import { isAsyncStorage } from './types/storage.js'; +import { DEFAULT_EQUALS } from './utils/defaults.js'; +import { shallowEquals } from './utils/equals.js'; +import { Lock } from './utils/lock.js'; var Core = /** @class */ (function (_super) { __extends(Core, _super); @@ -314,4 +314,4 @@ var Core = /** @class */ (function (_super) { }(Ortho)); export { Core }; -//# sourceMappingURL=core.mjs.map +//# sourceMappingURL=core.js.map diff --git a/dist/mjs/mods/core.js.map b/dist/mjs/mods/core.js.map new file mode 100644 index 00000000..867c7eef --- /dev/null +++ b/dist/mjs/mods/core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"core.js","sources":["../../../src/mods/core.ts"],"sourcesContent":["import { Ortho } from \"libs/ortho.js\"\nimport { ScrollHelper } from \"mods/scroll/helper.js\"\nimport { SingleHelper } from \"mods/single/helper.js\"\nimport { Mutator } from \"mods/types/mutator.js\"\nimport { Params } from \"mods/types/params.js\"\nimport { State } from \"mods/types/state.js\"\nimport { isAsyncStorage } from \"mods/types/storage.js\"\nimport { DEFAULT_EQUALS } from \"mods/utils/defaults.js\"\nimport { shallowEquals } from \"mods/utils/equals.js\"\nimport { Lock } from \"mods/utils/lock.js\"\n\nexport type Listener =\n (x?: State) => void\n\nexport class Core extends Ortho {\n readonly single = new SingleHelper(this)\n readonly scroll = new ScrollHelper(this)\n\n readonly cache = new Map()\n readonly locks = new Map()\n\n private _mounted = true\n\n constructor(\n readonly params: Params\n ) { super() }\n\n get mounted() { return this._mounted }\n\n unmount() {\n for (const timeout of this.timeouts.values())\n clearTimeout(timeout)\n this._mounted = false\n }\n\n async lock(skey: string, callback: () => Promise) {\n const lock = this.locks.get(skey)\n\n if (lock !== undefined)\n return await lock.lock(callback)\n\n const lock2 = new Lock()\n this.locks.set(skey, lock2)\n return await lock2.lock(callback)\n }\n\n getSync(\n skey: string | undefined,\n params: Params = {}\n ): State | undefined | null {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n if (isAsyncStorage(storage))\n return null\n const state = storage.get(skey)\n this.cache.set(skey, state)\n return state\n }\n\n async get(\n skey: string | undefined,\n params: Params = {},\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n const state = await storage.get(skey, ignore)\n this.cache.set(skey, state)\n return state\n }\n\n /**\n * Force set a key to a state and publish it\n * No check, no merge\n * @param skey Key\n * @param state New state\n * @returns \n */\n async set(\n skey: string | undefined,\n state: State,\n params: Params = {}\n ) {\n if (skey === undefined) return\n\n this.cache.set(skey, state)\n this.publish(skey, state)\n\n const { storage } = params\n if (!storage) return\n const { data, time, cooldown, expiration } = state\n await storage.set(skey, { data, time, cooldown, expiration })\n }\n\n /**\n * Delete key and publish undefined\n * @param skey \n * @returns \n */\n async delete(\n skey: string | undefined,\n params: Params = {}\n ) {\n if (!skey) return\n\n this.cache.delete(skey)\n this.locks.delete(skey)\n this.publish(skey, undefined)\n\n const { storage } = params\n if (!storage) return\n await storage.delete(skey)\n }\n\n async mutate(\n skey: string | undefined,\n current: State | undefined,\n mutator: Mutator,\n params: Params = {}\n ): Promise | undefined> {\n if (skey === undefined) return\n const state = mutator(current)\n\n if (!state) {\n await this.delete(skey, params)\n return\n }\n\n if (state.time !== undefined && state.time < (current?.time ?? 0))\n return current\n\n if (state.optimistic === undefined && current?.optimistic)\n return current\n\n const {\n equals = DEFAULT_EQUALS\n } = params\n\n const next: State = {\n ...current,\n ...state\n }\n\n next.data = await this.normalize(false, next, params)\n\n if (next.time === undefined)\n next.time = Date.now()\n if (equals(next.data, current?.data))\n next.data = current?.data\n if (!next.optimistic)\n next.realData = next.data\n\n if (shallowEquals(next, current))\n return current\n await this.set(skey, next, params)\n return next as State\n }\n\n async normalize(\n shallow: boolean,\n root: State,\n params: Params = {},\n ) {\n if (root.data === undefined) return\n if (params.normalizer === undefined) return root.data\n return await params.normalizer(root.data, { core: this, shallow, root })\n }\n\n /**\n * True if we should cooldown this resource\n */\n shouldCooldown(\n current?: State\n ) {\n if (current?.cooldown === undefined)\n return false\n return Date.now() < current.cooldown\n }\n\n counts = new Map()\n timeouts = new Map()\n\n once(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n const f: Listener = (x) => {\n this.off(key, f, params)\n listener(x)\n }\n\n this.on(key, f, params)\n }\n\n on(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.on(key, listener)\n\n const count = this.counts.get(key) ?? 0\n this.counts.set(key, count + 1)\n\n const timeout = this.timeouts.get(key)\n if (timeout === undefined) return\n\n clearTimeout(timeout)\n this.timeouts.delete(key)\n }\n\n async off(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.off(key, listener)\n\n const count = this.counts.get(key)\n\n if (count === undefined)\n throw new Error(\"Undefined count\")\n\n if (count > 1) {\n this.counts.set(key, count - 1)\n return\n }\n\n this.counts.delete(key)\n\n const current = await this.get(key, params, true)\n if (current?.expiration === undefined) return\n if (current?.expiration === -1) return\n\n const erase = async () => {\n if (!this._mounted) return\n\n const count = this.counts.get(key)\n if (count !== undefined) return\n\n this.timeouts.delete(key)\n await this.delete(key, params)\n }\n\n if (Date.now() > current.expiration) {\n await erase()\n return\n }\n\n const delay = current.expiration - Date.now()\n const timeout = setTimeout(erase, delay)\n this.timeouts.set(key, timeout)\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/core.mjs.map b/dist/mjs/mods/core.mjs.map deleted file mode 100644 index 2bfb1968..00000000 --- a/dist/mjs/mods/core.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"core.mjs","sources":["../../../src/mods/core.ts"],"sourcesContent":["import { Ortho } from \"libs/ortho.js\"\nimport { ScrollHelper } from \"mods/scroll/helper.js\"\nimport { SingleHelper } from \"mods/single/helper.js\"\nimport { Mutator } from \"mods/types/mutator.js\"\nimport { Params } from \"mods/types/params.js\"\nimport { State } from \"mods/types/state.js\"\nimport { isAsyncStorage } from \"mods/types/storage.js\"\nimport { DEFAULT_EQUALS } from \"mods/utils/defaults.js\"\nimport { shallowEquals } from \"mods/utils/equals.js\"\nimport { Lock } from \"mods/utils/lock.js\"\n\nexport type Listener =\n (x?: State) => void\n\nexport class Core extends Ortho {\n readonly single = new SingleHelper(this)\n readonly scroll = new ScrollHelper(this)\n\n readonly cache = new Map()\n readonly locks = new Map()\n\n private _mounted = true\n\n constructor(\n readonly params: Params\n ) { super() }\n\n get mounted() { return this._mounted }\n\n unmount() {\n for (const timeout of this.timeouts.values())\n clearTimeout(timeout)\n this._mounted = false\n }\n\n async lock(skey: string, callback: () => Promise) {\n const lock = this.locks.get(skey)\n\n if (lock !== undefined)\n return await lock.lock(callback)\n\n const lock2 = new Lock()\n this.locks.set(skey, lock2)\n return await lock2.lock(callback)\n }\n\n getSync(\n skey: string | undefined,\n params: Params = {}\n ): State | undefined | null {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n if (isAsyncStorage(storage))\n return null\n const state = storage.get(skey)\n this.cache.set(skey, state)\n return state\n }\n\n async get(\n skey: string | undefined,\n params: Params = {},\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n const cached = this.cache.get(skey)\n if (cached !== undefined) return cached\n\n const { storage } = params\n if (!storage) return\n\n const state = await storage.get(skey, ignore)\n this.cache.set(skey, state)\n return state\n }\n\n /**\n * Force set a key to a state and publish it\n * No check, no merge\n * @param skey Key\n * @param state New state\n * @returns \n */\n async set(\n skey: string | undefined,\n state: State,\n params: Params = {}\n ) {\n if (skey === undefined) return\n\n this.cache.set(skey, state)\n this.publish(skey, state)\n\n const { storage } = params\n if (!storage) return\n const { data, time, cooldown, expiration } = state\n await storage.set(skey, { data, time, cooldown, expiration })\n }\n\n /**\n * Delete key and publish undefined\n * @param skey \n * @returns \n */\n async delete(\n skey: string | undefined,\n params: Params = {}\n ) {\n if (!skey) return\n\n this.cache.delete(skey)\n this.locks.delete(skey)\n this.publish(skey, undefined)\n\n const { storage } = params\n if (!storage) return\n await storage.delete(skey)\n }\n\n async mutate(\n skey: string | undefined,\n current: State | undefined,\n mutator: Mutator,\n params: Params = {}\n ): Promise | undefined> {\n if (skey === undefined) return\n const state = mutator(current)\n\n if (!state) {\n await this.delete(skey, params)\n return\n }\n\n if (state.time !== undefined && state.time < (current?.time ?? 0))\n return current\n\n if (state.optimistic === undefined && current?.optimistic)\n return current\n\n const {\n equals = DEFAULT_EQUALS\n } = params\n\n const next: State = {\n ...current,\n ...state\n }\n\n next.data = await this.normalize(false, next, params)\n\n if (next.time === undefined)\n next.time = Date.now()\n if (equals(next.data, current?.data))\n next.data = current?.data\n if (!next.optimistic)\n next.realData = next.data\n\n if (shallowEquals(next, current))\n return current\n await this.set(skey, next, params)\n return next as State\n }\n\n async normalize(\n shallow: boolean,\n root: State,\n params: Params = {},\n ) {\n if (root.data === undefined) return\n if (params.normalizer === undefined) return root.data\n return await params.normalizer(root.data, { core: this, shallow, root })\n }\n\n /**\n * True if we should cooldown this resource\n */\n shouldCooldown(\n current?: State\n ) {\n if (current?.cooldown === undefined)\n return false\n return Date.now() < current.cooldown\n }\n\n counts = new Map()\n timeouts = new Map()\n\n once(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n const f: Listener = (x) => {\n this.off(key, f, params)\n listener(x)\n }\n\n this.on(key, f, params)\n }\n\n on(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.on(key, listener)\n\n const count = this.counts.get(key) ?? 0\n this.counts.set(key, count + 1)\n\n const timeout = this.timeouts.get(key)\n if (timeout === undefined) return\n\n clearTimeout(timeout)\n this.timeouts.delete(key)\n }\n\n async off(\n key: string | undefined,\n listener: Listener,\n params: Params = {}\n ) {\n if (!key) return\n\n super.off(key, listener)\n\n const count = this.counts.get(key)\n\n if (count === undefined)\n throw new Error(\"Undefined count\")\n\n if (count > 1) {\n this.counts.set(key, count - 1)\n return\n }\n\n this.counts.delete(key)\n\n const current = await this.get(key, params, true)\n if (current?.expiration === undefined) return\n if (current?.expiration === -1) return\n\n const erase = async () => {\n if (!this._mounted) return\n\n const count = this.counts.get(key)\n if (count !== undefined) return\n\n this.timeouts.delete(key)\n await this.delete(key, params)\n }\n\n if (Date.now() > current.expiration) {\n await erase()\n return\n }\n\n const delay = current.expiration - Date.now()\n const timeout = setTimeout(erase, delay)\n this.timeouts.set(key, timeout)\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/errors/abort.mjs b/dist/mjs/mods/errors/abort.js similarity index 93% rename from dist/mjs/mods/errors/abort.mjs rename to dist/mjs/mods/errors/abort.js index 7bde8c4d..222b2318 100644 --- a/dist/mjs/mods/errors/abort.mjs +++ b/dist/mjs/mods/errors/abort.js @@ -16,4 +16,4 @@ function isAbortError(e) { } export { AbortError, isAbortError }; -//# sourceMappingURL=abort.mjs.map +//# sourceMappingURL=abort.js.map diff --git a/dist/mjs/mods/errors/abort.js.map b/dist/mjs/mods/errors/abort.js.map new file mode 100644 index 00000000..0a4384e0 --- /dev/null +++ b/dist/mjs/mods/errors/abort.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abort.js","sources":["../../../../src/mods/errors/abort.ts"],"sourcesContent":["export class AbortError extends Error {\n constructor(signal: AbortSignal) {\n super(`Aborted: ${signal.reason}`, { cause: signal })\n }\n}\n\nexport function isAbortError(e: unknown): e is AbortError | DOMException {\n if (e instanceof AbortError)\n return true\n if (e instanceof DOMException && e.name === \"AbortError\")\n return true\n return false\n}\n"],"names":[],"mappings":";;AAAA,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAK,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AACnC,IAAA,SAAA,UAAA,CAAY,MAAmB,EAAA;eAC7B,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,WAAA,CAAA,MAAA,CAAY,MAAM,CAAC,MAAM,CAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAA,IAAA,CAAA;KACtD;IACH,OAAC,UAAA,CAAA;AAAD,CAJA,CAAgC,KAAK,CAIpC,EAAA;AAEK,SAAU,YAAY,CAAC,CAAU,EAAA;IACrC,IAAI,CAAC,YAAY,UAAU;AACzB,QAAA,OAAO,IAAI,CAAA;IACb,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;AACtD,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,OAAO,KAAK,CAAA;AACd;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/errors/abort.mjs.map b/dist/mjs/mods/errors/abort.mjs.map deleted file mode 100644 index 9bc6e939..00000000 --- a/dist/mjs/mods/errors/abort.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"abort.mjs","sources":["../../../../src/mods/errors/abort.ts"],"sourcesContent":["export class AbortError extends Error {\n constructor(signal: AbortSignal) {\n super(`Aborted: ${signal.reason}`, { cause: signal })\n }\n}\n\nexport function isAbortError(e: unknown): e is AbortError | DOMException {\n if (e instanceof AbortError)\n return true\n if (e instanceof DOMException && e.name === \"AbortError\")\n return true\n return false\n}\n"],"names":[],"mappings":";;AAAA,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAK,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AACnC,IAAA,SAAA,UAAA,CAAY,MAAmB,EAAA;eAC7B,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,WAAA,CAAA,MAAA,CAAY,MAAM,CAAC,MAAM,CAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAA,IAAA,CAAA;KACtD;IACH,OAAC,UAAA,CAAA;AAAD,CAJA,CAAgC,KAAK,CAIpC,EAAA;AAEK,SAAU,YAAY,CAAC,CAAU,EAAA;IACrC,IAAI,CAAC,YAAY,UAAU;AACzB,QAAA,OAAO,IAAI,CAAA;IACb,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;AACtD,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,OAAO,KAAK,CAAA;AACd;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/index.js b/dist/mjs/mods/index.js new file mode 100644 index 00000000..bb309f68 --- /dev/null +++ b/dist/mjs/mods/index.js @@ -0,0 +1,30 @@ +export { Core } from './core.js'; +export { AbortError, isAbortError } from './errors/abort.js'; +export { CoreContext, CoreProvider, useCore, useCoreProvider } from './react/contexts/core.js'; +export { useDebug } from './react/hooks/blocks/use-debug.js'; +export { useError } from './react/hooks/blocks/use-error.js'; +export { useFallback } from './react/hooks/blocks/use-fallback.js'; +export { useFetch } from './react/hooks/blocks/use-fetch.js'; +export { useInterval } from './react/hooks/blocks/use-interval.js'; +export { useMount } from './react/hooks/blocks/use-mount.js'; +export { useOnce } from './react/hooks/blocks/use-once.js'; +export { useOnline } from './react/hooks/blocks/use-online.js'; +export { useRetry } from './react/hooks/blocks/use-retry.js'; +export { useVisible } from './react/hooks/blocks/use-visible.js'; +export { useQuery } from './react/hooks/queries/router.js'; +export { useScrollQuery } from './react/hooks/queries/scroll.js'; +export { useSingleQuery } from './react/hooks/queries/single.js'; +export { useXSWR } from './react/hooks/xswr.js'; +export { ScrollHelper } from './scroll/helper.js'; +export { ScrollInstance, getScrollStorageKey } from './scroll/instance.js'; +export { ScrollSchema, getScrollSchema } from './scroll/schema.js'; +export { SingleHelper } from './single/helper.js'; +export { SingleInstance, getSingleStorageKey } from './single/instance.js'; +export { SingleSchema, getSingleSchema } from './single/schema.js'; +export { IDBStorage, useIDBStorage } from './storages/idb/async.js'; +export { AsyncLocalStorage, useAsyncLocalStorage } from './storages/localStorage/async.js'; +export { SyncLocalStorage, useSyncLocalStorage } from './storages/localStorage/sync.js'; +export { isAsyncStorage } from './types/storage.js'; +export { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_SERIALIZER, DEFAULT_TIMEOUT } from './utils/defaults.js'; +export { jsonEquals, refEquals, shallowEquals } from './utils/equals.js'; +//# sourceMappingURL=index.js.map diff --git a/dist/mjs/mods/index.js.map b/dist/mjs/mods/index.js.map new file mode 100644 index 00000000..b11f5f8d --- /dev/null +++ b/dist/mjs/mods/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/index.mjs b/dist/mjs/mods/index.mjs deleted file mode 100644 index 52a6309e..00000000 --- a/dist/mjs/mods/index.mjs +++ /dev/null @@ -1,30 +0,0 @@ -export { Core } from './core.mjs'; -export { AbortError, isAbortError } from './errors/abort.mjs'; -export { CoreContext, CoreProvider, useCore, useCoreProvider } from './react/contexts/core.mjs'; -export { useDebug } from './react/hooks/blocks/use-debug.mjs'; -export { useError } from './react/hooks/blocks/use-error.mjs'; -export { useFallback } from './react/hooks/blocks/use-fallback.mjs'; -export { useFetch } from './react/hooks/blocks/use-fetch.mjs'; -export { useInterval } from './react/hooks/blocks/use-interval.mjs'; -export { useMount } from './react/hooks/blocks/use-mount.mjs'; -export { useOnce } from './react/hooks/blocks/use-once.mjs'; -export { useOnline } from './react/hooks/blocks/use-online.mjs'; -export { useRetry } from './react/hooks/blocks/use-retry.mjs'; -export { useVisible } from './react/hooks/blocks/use-visible.mjs'; -export { use } from './react/hooks/handles/router.mjs'; -export { useScroll } from './react/hooks/handles/scroll.mjs'; -export { useSingle } from './react/hooks/handles/single.mjs'; -export { useXSWR } from './react/hooks/xswr.mjs'; -export { ScrollHelper } from './scroll/helper.mjs'; -export { ScrollObject, getScrollStorageKey } from './scroll/object.mjs'; -export { ScrollSchema, scroll } from './scroll/schema.mjs'; -export { SingleHelper } from './single/helper.mjs'; -export { SingleObject, getSingleStorageKey } from './single/object.mjs'; -export { SingleSchema, single } from './single/schema.mjs'; -export { IDBStorage, useIDBStorage } from './storages/idb/async.mjs'; -export { AsyncLocalStorage, useAsyncLocalStorage } from './storages/localStorage/async.mjs'; -export { SyncLocalStorage, useSyncLocalStorage } from './storages/localStorage/sync.mjs'; -export { isAsyncStorage } from './types/storage.mjs'; -export { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_SERIALIZER, DEFAULT_TIMEOUT } from './utils/defaults.mjs'; -export { jsonEquals, refEquals, shallowEquals } from './utils/equals.mjs'; -//# sourceMappingURL=index.mjs.map diff --git a/dist/mjs/mods/index.mjs.map b/dist/mjs/mods/index.mjs.map deleted file mode 100644 index dfc80532..00000000 --- a/dist/mjs/mods/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/contexts/core.mjs b/dist/mjs/mods/react/contexts/core.js similarity index 92% rename from dist/mjs/mods/react/contexts/core.mjs rename to dist/mjs/mods/react/contexts/core.js index f4933013..b27c9065 100644 --- a/dist/mjs/mods/react/contexts/core.mjs +++ b/dist/mjs/mods/react/contexts/core.js @@ -1,5 +1,5 @@ import { __rest } from 'tslib'; -import { Core } from '../../core.mjs'; +import { Core } from '../../core.js'; import * as React from 'react'; import { createContext, useContext, useRef, useEffect } from 'react'; @@ -27,4 +27,4 @@ function CoreProvider(props) { } export { CoreContext, CoreProvider, useCore, useCoreProvider }; -//# sourceMappingURL=core.mjs.map +//# sourceMappingURL=core.js.map diff --git a/dist/mjs/mods/react/contexts/core.js.map b/dist/mjs/mods/react/contexts/core.js.map new file mode 100644 index 00000000..f8250ec7 --- /dev/null +++ b/dist/mjs/mods/react/contexts/core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"core.js","sources":["../../../../../src/mods/react/contexts/core.tsx"],"sourcesContent":["import { ChildrenProps } from \"libs/react.js\"\nimport { Core } from \"mods/core.js\"\nimport { Params } from \"mods/types/params.js\"\nimport * as React from \"react\"\nimport { createContext, useContext, useEffect, useRef } from \"react\"\n\nexport const CoreContext =\n createContext(undefined)\n\nexport function useCore() {\n const core = useContext(CoreContext)\n if (core === undefined)\n throw new Error(\"Undefined core\")\n return core\n}\n\nexport function useCoreProvider(params: Params) {\n const coreRef = useRef()\n\n if (coreRef.current === undefined)\n coreRef.current = new Core(params)\n\n useEffect(() => () => {\n coreRef.current?.unmount()\n }, [])\n\n return coreRef.current\n}\n\nexport function CoreProvider(props: ChildrenProps & Params) {\n const { children, ...params } = props\n\n const core = useCoreProvider(params)\n\n return \n {children}\n \n}"],"names":[],"mappings":";;;;;IAMa,WAAW,GACtB,aAAa,CAAmB,SAAS,EAAC;SAE5B,OAAO,GAAA;AACrB,IAAA,IAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,SAAS;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACnC,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAU,eAAe,CAAC,MAAc,EAAA;AAC5C,IAAA,IAAM,OAAO,GAAG,MAAM,EAAQ,CAAA;AAE9B,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IAEpC,SAAS,CAAC,cAAM,OAAA,YAAA;;AACd,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;AAC5B,KAAC,CAFe,EAEf,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAEK,SAAU,YAAY,CAAC,KAA6B,EAAA;IAChD,IAAA,QAAQ,GAAgB,KAAK,CAArB,QAAA,EAAK,MAAM,GAAA,MAAA,CAAK,KAAK,EAA/B,CAAuB,UAAA,CAAA,CAAF,CAAU;AAErC,IAAA,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAO,KAAA,CAAA,aAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA,EACrC,QAAQ,CACY,CAAA;AACzB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/contexts/core.mjs.map b/dist/mjs/mods/react/contexts/core.mjs.map deleted file mode 100644 index 8970c6a1..00000000 --- a/dist/mjs/mods/react/contexts/core.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"core.mjs","sources":["../../../../../src/mods/react/contexts/core.tsx"],"sourcesContent":["import { ChildrenProps } from \"libs/react.js\"\nimport { Core } from \"mods/core.js\"\nimport { Params } from \"mods/types/params.js\"\nimport * as React from \"react\"\nimport { createContext, useContext, useEffect, useRef } from \"react\"\n\nexport const CoreContext =\n createContext(undefined)\n\nexport function useCore() {\n const core = useContext(CoreContext)\n if (core === undefined)\n throw new Error(\"Undefined core\")\n return core\n}\n\nexport function useCoreProvider(params: Params) {\n const coreRef = useRef()\n\n if (coreRef.current === undefined)\n coreRef.current = new Core(params)\n\n useEffect(() => () => {\n coreRef.current?.unmount()\n }, [])\n\n return coreRef.current\n}\n\nexport function CoreProvider(props: ChildrenProps & Params) {\n const { children, ...params } = props\n\n const core = useCoreProvider(params)\n\n return \n {children}\n \n}"],"names":[],"mappings":";;;;;IAMa,WAAW,GACtB,aAAa,CAAmB,SAAS,EAAC;SAE5B,OAAO,GAAA;AACrB,IAAA,IAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,SAAS;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACnC,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAU,eAAe,CAAC,MAAc,EAAA;AAC5C,IAAA,IAAM,OAAO,GAAG,MAAM,EAAQ,CAAA;AAE9B,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IAEpC,SAAS,CAAC,cAAM,OAAA,YAAA;;AACd,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAA;AAC5B,KAAC,CAFe,EAEf,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC;AAEK,SAAU,YAAY,CAAC,KAA6B,EAAA;IAChD,IAAA,QAAQ,GAAgB,KAAK,CAArB,QAAA,EAAK,MAAM,GAAA,MAAA,CAAK,KAAK,EAA/B,CAAuB,UAAA,CAAA,CAAF,CAAU;AAErC,IAAA,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAO,KAAA,CAAA,aAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA,EACrC,QAAQ,CACY,CAAA;AACzB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-debug.js b/dist/mjs/mods/react/hooks/blocks/use-debug.js new file mode 100644 index 00000000..d44e6d9e --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-debug.js @@ -0,0 +1,15 @@ +import { useEffect } from 'react'; + +/** + * Show query in console when it changes + * @param query + */ +function useDebug(query, label) { + var data = query.data, error = query.error, time = query.time; + useEffect(function () { + console.debug(label, query); + }, [data, error, time]); +} + +export { useDebug }; +//# sourceMappingURL=use-debug.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-debug.js.map b/dist/mjs/mods/react/hooks/blocks/use-debug.js.map new file mode 100644 index 00000000..b7058893 --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-debug.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-debug.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-debug.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Show query in console when it changes\n * @param query \n */\nexport function useDebug(query: Query, label: string) {\n const { data, error, time } = query\n\n useEffect(() => {\n console.debug(label, query)\n }, [data, error, time])\n}"],"names":[],"mappings":";;AAGA;;;AAGG;AACa,SAAA,QAAQ,CAAC,KAAY,EAAE,KAAa,EAAA;AAC1C,IAAA,IAAA,IAAI,GAAkB,KAAK,CAAA,IAAvB,EAAE,KAAK,GAAW,KAAK,CAAA,KAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAU;AAEnC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAC5B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACzB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-debug.mjs b/dist/mjs/mods/react/hooks/blocks/use-debug.mjs deleted file mode 100644 index 04ab12ca..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-debug.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import { useEffect } from 'react'; - -/** - * Show handle in console when it changes - * @param handle - */ -function useDebug(handle, label) { - var data = handle.data, error = handle.error, time = handle.time; - useEffect(function () { - console.debug(label, handle); - }, [data, error, time]); -} - -export { useDebug }; -//# sourceMappingURL=use-debug.mjs.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-debug.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-debug.mjs.map deleted file mode 100644 index 65dbb313..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-debug.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-debug.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-debug.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Show handle in console when it changes\n * @param handle \n */\nexport function useDebug(\n handle: Handle,\n label: string\n) {\n const { data, error, time, } = handle\n\n useEffect(() => {\n console.debug(label, handle)\n }, [data, error, time])\n}"],"names":[],"mappings":";;AAGA;;;AAGG;AACa,SAAA,QAAQ,CACtB,MAAuB,EACvB,KAAa,EAAA;AAEL,IAAA,IAAA,IAAI,GAAmB,MAAM,CAAA,IAAzB,EAAE,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,IAAI,GAAM,MAAM,KAAZ,CAAY;AAErC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC7B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACzB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-error.mjs b/dist/mjs/mods/react/hooks/blocks/use-error.js similarity index 64% rename from dist/mjs/mods/react/hooks/blocks/use-error.mjs rename to dist/mjs/mods/react/hooks/blocks/use-error.js index 52f8ad69..7c5322c6 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-error.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-error.js @@ -2,11 +2,11 @@ import { useEffect } from 'react'; /** * Call a function on error - * @param handle + * @param query * @param callback */ -function useError(handle, callback) { - var error = handle.error; +function useError(query, callback) { + var error = query.error; useEffect(function () { if (error !== undefined) callback(error); @@ -14,4 +14,4 @@ function useError(handle, callback) { } export { useError }; -//# sourceMappingURL=use-error.mjs.map +//# sourceMappingURL=use-error.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-error.js.map b/dist/mjs/mods/react/hooks/blocks/use-error.js.map new file mode 100644 index 00000000..46275d6d --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-error.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-error.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Call a function on error\n * @param query \n * @param callback \n */\nexport function useError(\n query: Query,\n callback: (e: E) => void\n) {\n const { error } = query\n\n useEffect(() => {\n if (error !== undefined) callback(error)\n }, [error])\n}"],"names":[],"mappings":";;AAGA;;;;AAIG;AACa,SAAA,QAAQ,CACtB,KAAqB,EACrB,QAAwB,EAAA;AAEhB,IAAA,IAAA,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAEvB,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-error.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-error.mjs.map deleted file mode 100644 index 721a157b..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-error.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-error.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-error.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Call a function on error\n * @param handle \n * @param callback \n */\nexport function useError(\n handle: Handle,\n callback: (e: E) => void\n) {\n const { error } = handle\n\n useEffect(() => {\n if (error !== undefined) callback(error)\n }, [error])\n}"],"names":[],"mappings":";;AAGA;;;;AAIG;AACa,SAAA,QAAQ,CACtB,MAAuB,EACvB,QAAwB,EAAA;AAEhB,IAAA,IAAA,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAExB,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-fallback.mjs b/dist/mjs/mods/react/hooks/blocks/use-fallback.js similarity index 67% rename from dist/mjs/mods/react/hooks/blocks/use-fallback.mjs rename to dist/mjs/mods/react/hooks/blocks/use-fallback.js index 26256e5a..42730887 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-fallback.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-fallback.js @@ -2,17 +2,17 @@ * Fallback to given data/error if there is no data/error * @example You got some data/error using SSR/ISR and want to display it on first render * @example You still want to display something even if the fetcher returned nothing - * @param handle + * @param query * @param state */ -function useFallback(handle, state) { - var data = handle.data, error = handle.error; +function useFallback(query, state) { + var data = query.data, error = query.error; if (data !== undefined) return; if (error !== undefined) return; - Object.assign(handle, state); + Object.assign(query, state); } export { useFallback }; -//# sourceMappingURL=use-fallback.mjs.map +//# sourceMappingURL=use-fallback.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-fallback.js.map b/dist/mjs/mods/react/hooks/blocks/use-fallback.js.map new file mode 100644 index 00000000..43d946c5 --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-fallback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-fallback.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-fallback.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { State } from \"mods/types/state.js\"\n\n/**\n * Fallback to given data/error if there is no data/error\n * @example You got some data/error using SSR/ISR and want to display it on first render\n * @example You still want to display something even if the fetcher returned nothing\n * @param query \n * @param state \n */\nexport function useFallback(\n query: Query,\n state?: State\n) {\n const { data, error } = query\n\n if (data !== undefined) return\n if (error !== undefined) return\n Object.assign(query, state)\n}"],"names":[],"mappings":"AAGA;;;;;;AAMG;AACa,SAAA,WAAW,CACzB,KAAqB,EACrB,KAAsB,EAAA;IAEd,IAAA,IAAI,GAAY,KAAK,CAAA,IAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;IAE7B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;AAC/B,IAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7B;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-fallback.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-fallback.mjs.map deleted file mode 100644 index b0175d88..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-fallback.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-fallback.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-fallback.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { State } from \"mods/types/state.js\"\n\n/**\n * Fallback to given data/error if there is no data/error\n * @example You got some data/error using SSR/ISR and want to display it on first render\n * @example You still want to display something even if the fetcher returned nothing\n * @param handle \n * @param state \n */\nexport function useFallback(\n handle: Handle,\n state?: State\n) {\n const { data, error } = handle\n\n if (data !== undefined) return\n if (error !== undefined) return\n Object.assign(handle, state)\n}"],"names":[],"mappings":"AAGA;;;;;;AAMG;AACa,SAAA,WAAW,CACzB,MAAuB,EACvB,KAAsB,EAAA;IAEd,IAAA,IAAI,GAAY,MAAM,CAAA,IAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;IAE9B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;AAC/B,IAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAC9B;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-fetch.mjs b/dist/mjs/mods/react/hooks/blocks/use-fetch.js similarity index 71% rename from dist/mjs/mods/react/hooks/blocks/use-fetch.mjs rename to dist/mjs/mods/react/hooks/blocks/use-fetch.js index 965ff859..d92875ec 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-fetch.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-fetch.js @@ -4,14 +4,14 @@ import { useEffect } from 'react'; * Do a request on mount and url change * @see useMount for doing a request on mount only * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -function useFetch(handle) { - var fetch = handle.fetch; +function useFetch(query) { + var fetch = query.fetch; useEffect(function () { fetch(); }, [fetch]); } export { useFetch }; -//# sourceMappingURL=use-fetch.mjs.map +//# sourceMappingURL=use-fetch.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-fetch.js.map b/dist/mjs/mods/react/hooks/blocks/use-fetch.js.map new file mode 100644 index 00000000..75b754de --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-fetch.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-fetch.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change\n * @see useMount for doing a request on mount only\n * @see useOnce for doing a request only if there is no data yet\n * @param query \n */\nexport function useFetch(query: Query) {\n const { fetch } = query\n\n useEffect(() => {\n fetch()\n }, [fetch])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,KAAY,EAAA;AAC3B,IAAA,IAAA,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAEvB,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;AACT,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-fetch.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-fetch.mjs.map deleted file mode 100644 index a908561b..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-fetch.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-fetch.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-fetch.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change\n * @see useMount for doing a request on mount only\n * @see useOnce for doing a request only if there is no data yet\n * @param handle \n */\nexport function useFetch(handle: Handle) {\n const { fetch } = handle\n\n useEffect(() => {\n fetch()\n }, [fetch])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,MAAc,EAAA;AAC7B,IAAA,IAAA,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAExB,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;AACT,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-interval.mjs b/dist/mjs/mods/react/hooks/blocks/use-interval.js similarity index 68% rename from dist/mjs/mods/react/hooks/blocks/use-interval.mjs rename to dist/mjs/mods/react/hooks/blocks/use-interval.js index 4d6e75d2..8ce4cd4d 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-interval.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-interval.js @@ -3,11 +3,11 @@ import { useEffect } from 'react'; /** * Do a request on interval * @see useRetry for error retry - * @param handle - * @param options + * @param query + * @param interval */ -function useInterval(handle, interval) { - var ready = handle.ready, fetch = handle.fetch; +function useInterval(query, interval) { + var ready = query.ready, fetch = query.fetch; useEffect(function () { if (!ready) return; @@ -19,4 +19,4 @@ function useInterval(handle, interval) { } export { useInterval }; -//# sourceMappingURL=use-interval.mjs.map +//# sourceMappingURL=use-interval.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-interval.js.map b/dist/mjs/mods/react/hooks/blocks/use-interval.js.map new file mode 100644 index 00000000..2e0ebf82 --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-interval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-interval.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-interval.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on interval\n * @see useRetry for error retry\n * @param query \n * @param interval \n */\nexport function useInterval(query: Query, interval: number) {\n const { ready, fetch } = query\n\n useEffect(() => {\n if (!ready) return\n if (!interval) return\n\n const i = setInterval(fetch, interval)\n return () => clearInterval(i)\n }, [fetch, interval])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACa,SAAA,WAAW,CAAC,KAAY,EAAE,QAAgB,EAAA;IAChD,IAAA,KAAK,GAAY,KAAK,CAAA,KAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE9B,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAClB,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,IAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACtC,OAAO,YAAA,EAAM,OAAA,aAAa,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC/B,KAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-interval.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-interval.mjs.map deleted file mode 100644 index f8381044..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-interval.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-interval.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-interval.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on interval\n * @see useRetry for error retry\n * @param handle \n * @param options \n */\nexport function useInterval(handle: Handle, interval: number) {\n const { ready, fetch } = handle\n\n useEffect(() => {\n if (!ready) return\n if (!interval) return\n\n const i = setInterval(fetch, interval)\n return () => clearInterval(i)\n }, [fetch, interval])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACa,SAAA,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAA;IAClD,IAAA,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE/B,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAClB,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,IAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACtC,OAAO,YAAA,EAAM,OAAA,aAAa,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC/B,KAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-mount.mjs b/dist/mjs/mods/react/hooks/blocks/use-mount.js similarity index 70% rename from dist/mjs/mods/react/hooks/blocks/use-mount.mjs rename to dist/mjs/mods/react/hooks/blocks/use-mount.js index f42ff105..3f7c1502 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-mount.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-mount.js @@ -4,14 +4,14 @@ import { useEffect } from 'react'; * Do a request on mount only * @see useFetch for doing a request on url change * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -function useMount(handle) { - var fetch = handle.fetch; +function useMount(query) { + var fetch = query.fetch; useEffect(function () { fetch(); }, []); } export { useMount }; -//# sourceMappingURL=use-mount.mjs.map +//# sourceMappingURL=use-mount.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-mount.js.map b/dist/mjs/mods/react/hooks/blocks/use-mount.js.map new file mode 100644 index 00000000..501d25aa --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-mount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-mount.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-mount.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount only\n * @see useFetch for doing a request on url change\n * @see useOnce for doing a request only if there is no data yet\n * @param query \n */\nexport function useMount(query: Query) {\n const { fetch } = query\n\n useEffect(() => {\n fetch()\n }, [])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,KAAY,EAAA;AAC3B,IAAA,IAAA,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAEvB,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;KACR,EAAE,EAAE,CAAC,CAAA;AACR;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-mount.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-mount.mjs.map deleted file mode 100644 index 10af3bb9..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-mount.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-mount.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-mount.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount only\n * @see useFetch for doing a request on url change\n * @see useOnce for doing a request only if there is no data yet\n * @param handle \n */\nexport function useMount(handle: Handle) {\n const { fetch } = handle\n\n useEffect(() => {\n fetch()\n }, [])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,MAAc,EAAA;AAC7B,IAAA,IAAA,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAExB,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,KAAK,EAAE,CAAA;KACR,EAAE,EAAE,CAAC,CAAA;AACR;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-once.mjs b/dist/mjs/mods/react/hooks/blocks/use-once.js similarity index 74% rename from dist/mjs/mods/react/hooks/blocks/use-once.mjs rename to dist/mjs/mods/react/hooks/blocks/use-once.js index f8ef30ae..5de80f0d 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-once.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-once.js @@ -3,11 +3,11 @@ import { useEffect } from 'react'; /** * Do a request on mount and url change only if there is no data yet * @warning Will still try to fetch is there is an error - * @param handle + * @param query * @example You want to get some data once and share it in multiple components */ -function useOnce(handle) { - var data = handle.data, fetch = handle.fetch; +function useOnce(query) { + var data = query.data, fetch = query.fetch; useEffect(function () { if (data === undefined) fetch(); @@ -15,4 +15,4 @@ function useOnce(handle) { } export { useOnce }; -//# sourceMappingURL=use-once.mjs.map +//# sourceMappingURL=use-once.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-once.js.map b/dist/mjs/mods/react/hooks/blocks/use-once.js.map new file mode 100644 index 00000000..6c76f28c --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-once.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-once.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-once.ts"],"sourcesContent":["import { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change only if there is no data yet\n * @warning Will still try to fetch is there is an error\n * @param query \n * @example You want to get some data once and share it in multiple components\n */\nexport function useOnce(query: Query) {\n const { data, fetch } = query\n\n useEffect(() => {\n if (data === undefined) fetch()\n }, [data, fetch])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACG,SAAU,OAAO,CAAC,KAAY,EAAA;IAC1B,IAAA,IAAI,GAAY,KAAK,CAAA,IAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE7B,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,KAAK,EAAE,CAAA;AACjC,KAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACnB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-once.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-once.mjs.map deleted file mode 100644 index 046a07ea..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-once.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-once.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-once.ts"],"sourcesContent":["import { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request on mount and url change only if there is no data yet\n * @warning Will still try to fetch is there is an error\n * @param handle \n * @example You want to get some data once and share it in multiple components\n */\nexport function useOnce(handle: Handle) {\n const { data, fetch } = handle\n\n useEffect(() => {\n if (data === undefined) fetch()\n }, [data, fetch])\n}"],"names":[],"mappings":";;AAGA;;;;;AAKG;AACG,SAAU,OAAO,CAAC,MAAc,EAAA;IAC5B,IAAA,IAAI,GAAY,MAAM,CAAA,IAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE9B,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,KAAK,EAAE,CAAA;AACjC,KAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACnB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-online.mjs b/dist/mjs/mods/react/hooks/blocks/use-online.js similarity index 67% rename from dist/mjs/mods/react/hooks/blocks/use-online.mjs rename to dist/mjs/mods/react/hooks/blocks/use-online.js index fee50c1b..e370fa06 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-online.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-online.js @@ -1,12 +1,12 @@ -import { useAutoRef } from '../../../../libs/react.mjs'; +import { useAutoRef } from '../../../../libs/react.js'; import { useEffect } from 'react'; /** * Do a request when the browser is online - * @param handle + * @param query */ -function useOnline(handle) { - var ready = handle.ready, fetch = handle.fetch; +function useOnline(query) { + var ready = query.ready, fetch = query.fetch; var fetchRef = useAutoRef(fetch); useEffect(function () { if (!ready) @@ -18,4 +18,4 @@ function useOnline(handle) { } export { useOnline }; -//# sourceMappingURL=use-online.mjs.map +//# sourceMappingURL=use-online.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-online.js.map b/dist/mjs/mods/react/hooks/blocks/use-online.js.map new file mode 100644 index 00000000..c5634e71 --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-online.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-online.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-online.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the browser is online\n * @param query \n */\nexport function useOnline(query: Query) {\n const { ready, fetch } = query\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => fetchRef.current()\n\n addEventListener(\"online\", f)\n return () => removeEventListener(\"online\", f)\n }, [ready])\n}"],"names":[],"mappings":";;;AAIA;;;AAGG;AACG,SAAU,SAAS,CAAC,KAAY,EAAA;IAC5B,IAAA,KAAK,GAAY,KAAK,CAAA,KAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE9B,IAAA,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAM,CAAC,GAAG,YAAA,EAAM,OAAA,QAAQ,CAAC,OAAO,EAAE,CAAlB,EAAkB,CAAA;AAElC,QAAA,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7B,OAAO,YAAA,EAAM,OAAA,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAhC,EAAgC,CAAA;AAC/C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-online.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-online.mjs.map deleted file mode 100644 index 55d6ecf3..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-online.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-online.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-online.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the browser is online\n * @param handle \n */\nexport function useOnline(handle: Handle) {\n const { ready, fetch } = handle\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => fetchRef.current()\n\n addEventListener(\"online\", f)\n return () => removeEventListener(\"online\", f)\n }, [ready])\n}"],"names":[],"mappings":";;;AAIA;;;AAGG;AACG,SAAU,SAAS,CAAC,MAAc,EAAA;IAC9B,IAAA,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE/B,IAAA,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAM,CAAC,GAAG,YAAA,EAAM,OAAA,QAAQ,CAAC,OAAO,EAAE,CAAlB,EAAkB,CAAA;AAElC,QAAA,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7B,OAAO,YAAA,EAAM,OAAA,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAhC,EAAgC,CAAA;AAC/C,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-retry.mjs b/dist/mjs/mods/react/hooks/blocks/use-retry.js similarity index 84% rename from dist/mjs/mods/react/hooks/blocks/use-retry.mjs rename to dist/mjs/mods/react/hooks/blocks/use-retry.js index bce56309..b38f13c5 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-retry.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-retry.js @@ -1,10 +1,10 @@ -import { useAutoRef } from '../../../../libs/react.mjs'; +import { useAutoRef } from '../../../../libs/react.js'; import { useRef, useEffect } from 'react'; /** * Retry request on error using exponential backoff * @see useInterval for interval based requests - * @param handle + * @param query * @param options * @param options.init Initial timeout to be multiplied (in milliseconds) * @param options.base Exponent base (2 means the next timeout will be 2 times longer) @@ -12,9 +12,9 @@ import { useRef, useEffect } from 'react'; * @see https://en.wikipedia.org/wiki/Exponential_backoff * @see https://en.wikipedia.org/wiki/Geometric_progression */ -function useRetry(handle, options) { +function useRetry(query, options) { if (options === void 0) { options = {}; } - var ready = handle.ready, skey = handle.skey, refetch = handle.refetch, error = handle.error; + var ready = query.ready, skey = query.skey, refetch = query.refetch, error = query.error; var _a = options.init, init = _a === void 0 ? 1000 : _a, _b = options.base, base = _b === void 0 ? 2 : _b, _c = options.max, max = _c === void 0 ? 3 : _c; var count = useRef(0); useEffect(function () { @@ -41,4 +41,4 @@ function useRetry(handle, options) { } export { useRetry }; -//# sourceMappingURL=use-retry.mjs.map +//# sourceMappingURL=use-retry.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-retry.js.map b/dist/mjs/mods/react/hooks/blocks/use-retry.js.map new file mode 100644 index 00000000..7c69ccf3 --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-retry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-retry.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-retry.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Query } from \"mods/react/types/query.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport interface RetryOptions {\n init?: number\n base?: number\n max?: number\n}\n\n/**\n * Retry request on error using exponential backoff\n * @see useInterval for interval based requests\n * @param query \n * @param options\n * @param options.init Initial timeout to be multiplied (in milliseconds)\n * @param options.base Exponent base (2 means the next timeout will be 2 times longer)\n * @param options.max Maximum count (3 means do not retry after 3 retries)\n * @see https://en.wikipedia.org/wiki/Exponential_backoff\n * @see https://en.wikipedia.org/wiki/Geometric_progression\n */\nexport function useRetry(query: Query, options: RetryOptions = {}) {\n const { ready, skey, refetch, error } = query\n const { init = 1000, base = 2, max = 3 } = options\n\n const count = useRef(0)\n\n useEffect(() => {\n count.current = 0\n }, [skey])\n\n const refetchRef = useAutoRef(refetch)\n\n useEffect(() => {\n if (!ready) return\n\n if (error === undefined) {\n count.current = 0\n return\n }\n\n if (count.current >= max) return\n const ratio = base ** count.current\n\n function f() {\n count.current++\n refetchRef.current()\n }\n\n const t = setTimeout(f, init * ratio)\n return () => clearTimeout(t)\n }, [ready, error])\n}"],"names":[],"mappings":";;;AAUA;;;;;;;;;;AAUG;AACa,SAAA,QAAQ,CAAC,KAAY,EAAE,OAA0B,EAAA;AAA1B,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA0B,GAAA,EAAA,CAAA,EAAA;AACvD,IAAA,IAAA,KAAK,GAA2B,KAAK,MAAhC,EAAE,IAAI,GAAqB,KAAK,CAAA,IAA1B,EAAE,OAAO,GAAY,KAAK,CAAjB,OAAA,EAAE,KAAK,GAAK,KAAK,MAAV,CAAU;IACrC,IAAA,EAAA,GAAmC,OAAO,CAAA,IAA/B,EAAX,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,IAAI,GAAA,EAAA,EAAE,EAAsB,GAAA,OAAO,CAArB,IAAA,EAAR,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,EAAY,GAAA,OAAO,CAAZ,GAAA,EAAP,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAC,GAAA,EAAA,CAAY;AAElD,IAAA,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAEvB,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;AACnB,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAEV,IAAA,IAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AAEtC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;YACjB,OAAM;AACP,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG;YAAE,OAAM;QAChC,IAAM,KAAK,GAAG,IAAA,CAAA,GAAA,CAAA,IAAI,EAAI,KAAK,CAAC,OAAO,CAAA,CAAA;AAEnC,QAAA,SAAS,CAAC,GAAA;YACR,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,UAAU,CAAC,OAAO,EAAE,CAAA;SACrB;QAED,IAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAA;QACrC,OAAO,YAAA,EAAM,OAAA,YAAY,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC9B,KAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AACpB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-retry.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-retry.mjs.map deleted file mode 100644 index edf06718..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-retry.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-retry.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-retry.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport interface RetryOptions {\n init?: number\n base?: number\n max?: number\n}\n\n/**\n * Retry request on error using exponential backoff\n * @see useInterval for interval based requests\n * @param handle \n * @param options\n * @param options.init Initial timeout to be multiplied (in milliseconds)\n * @param options.base Exponent base (2 means the next timeout will be 2 times longer)\n * @param options.max Maximum count (3 means do not retry after 3 retries)\n * @see https://en.wikipedia.org/wiki/Exponential_backoff\n * @see https://en.wikipedia.org/wiki/Geometric_progression\n */\nexport function useRetry(handle: Handle, options: RetryOptions = {}) {\n const { ready, skey, refetch, error } = handle\n const { init = 1000, base = 2, max = 3 } = options\n\n const count = useRef(0)\n\n useEffect(() => {\n count.current = 0\n }, [skey])\n\n const refetchRef = useAutoRef(refetch)\n\n useEffect(() => {\n if (!ready) return\n\n if (error === undefined) {\n count.current = 0\n return\n }\n\n if (count.current >= max) return\n const ratio = base ** count.current\n\n function f() {\n count.current++\n refetchRef.current()\n }\n\n const t = setTimeout(f, init * ratio)\n return () => clearTimeout(t)\n }, [ready, error])\n}"],"names":[],"mappings":";;;AAUA;;;;;;;;;;AAUG;AACa,SAAA,QAAQ,CAAC,MAAc,EAAE,OAA0B,EAAA;AAA1B,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA0B,GAAA,EAAA,CAAA,EAAA;AACzD,IAAA,IAAA,KAAK,GAA2B,MAAM,MAAjC,EAAE,IAAI,GAAqB,MAAM,CAAA,IAA3B,EAAE,OAAO,GAAY,MAAM,CAAlB,OAAA,EAAE,KAAK,GAAK,MAAM,MAAX,CAAW;IACtC,IAAA,EAAA,GAAmC,OAAO,CAAA,IAA/B,EAAX,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,IAAI,GAAA,EAAA,EAAE,EAAsB,GAAA,OAAO,CAArB,IAAA,EAAR,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,EAAY,GAAA,OAAO,CAAZ,GAAA,EAAP,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAC,GAAA,EAAA,CAAY;AAElD,IAAA,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAEvB,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;AACnB,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAEV,IAAA,IAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AAEtC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;YACjB,OAAM;AACP,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG;YAAE,OAAM;QAChC,IAAM,KAAK,GAAG,IAAA,CAAA,GAAA,CAAA,IAAI,EAAI,KAAK,CAAC,OAAO,CAAA,CAAA;AAEnC,QAAA,SAAS,CAAC,GAAA;YACR,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,UAAU,CAAC,OAAO,EAAE,CAAA;SACrB;QAED,IAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAA;QACrC,OAAO,YAAA,EAAM,OAAA,YAAY,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAC9B,KAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AACpB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-visible.mjs b/dist/mjs/mods/react/hooks/blocks/use-visible.js similarity index 70% rename from dist/mjs/mods/react/hooks/blocks/use-visible.mjs rename to dist/mjs/mods/react/hooks/blocks/use-visible.js index 2d81542e..3caa4320 100644 --- a/dist/mjs/mods/react/hooks/blocks/use-visible.mjs +++ b/dist/mjs/mods/react/hooks/blocks/use-visible.js @@ -1,12 +1,12 @@ -import { useAutoRef } from '../../../../libs/react.mjs'; +import { useAutoRef } from '../../../../libs/react.js'; import { useEffect } from 'react'; /** * Do a request when the tab is visible - * @param handle + * @param query */ -function useVisible(handle) { - var ready = handle.ready, fetch = handle.fetch; +function useVisible(query) { + var ready = query.ready, fetch = query.fetch; var fetchRef = useAutoRef(fetch); useEffect(function () { if (!ready) @@ -18,4 +18,4 @@ function useVisible(handle) { } export { useVisible }; -//# sourceMappingURL=use-visible.mjs.map +//# sourceMappingURL=use-visible.js.map diff --git a/dist/mjs/mods/react/hooks/blocks/use-visible.js.map b/dist/mjs/mods/react/hooks/blocks/use-visible.js.map new file mode 100644 index 00000000..898bd535 --- /dev/null +++ b/dist/mjs/mods/react/hooks/blocks/use-visible.js.map @@ -0,0 +1 @@ +{"version":3,"file":"use-visible.js","sources":["../../../../../../src/mods/react/hooks/blocks/use-visible.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Query } from \"mods/react/types/query.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the tab is visible\n * @param query \n */\nexport function useVisible(query: Query) {\n const { ready, fetch } = query\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => !document.hidden && fetchRef.current()\n\n document.addEventListener(\"visibilitychange\", f)\n return () => document.removeEventListener(\"visibilitychange\", f)\n }, [ready])\n}"],"names":[],"mappings":";;;AAIA;;;AAGG;AACG,SAAU,UAAU,CAAC,KAAY,EAAA;IAC7B,IAAA,KAAK,GAAY,KAAK,CAAA,KAAjB,EAAE,KAAK,GAAK,KAAK,CAAA,KAAV,CAAU;AAE9B,IAAA,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAElB,QAAA,IAAM,CAAC,GAAG,YAAM,EAAA,OAAA,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA;AAEtD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAChD,QAAA,OAAO,YAAM,EAAA,OAAA,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAnD,EAAmD,CAAA;AAClE,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/blocks/use-visible.mjs.map b/dist/mjs/mods/react/hooks/blocks/use-visible.mjs.map deleted file mode 100644 index e1e0d528..00000000 --- a/dist/mjs/mods/react/hooks/blocks/use-visible.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"use-visible.mjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-visible.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\"\nimport { Handle } from \"mods/react/types/handle.js\"\nimport { useEffect } from \"react\"\n\n/**\n * Do a request when the tab is visible\n * @param handle \n */\nexport function useVisible(handle: Handle) {\n const { ready, fetch } = handle\n\n const fetchRef = useAutoRef(fetch)\n\n useEffect(() => {\n if (!ready) return\n\n const f = () => !document.hidden && fetchRef.current()\n\n document.addEventListener(\"visibilitychange\", f)\n return () => document.removeEventListener(\"visibilitychange\", f)\n }, [ready])\n}"],"names":[],"mappings":";;;AAIA;;;AAGG;AACG,SAAU,UAAU,CAAC,MAAc,EAAA;IAC/B,IAAA,KAAK,GAAY,MAAM,CAAA,KAAlB,EAAE,KAAK,GAAK,MAAM,CAAA,KAAX,CAAW;AAE/B,IAAA,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAElC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,KAAK;YAAE,OAAM;AAElB,QAAA,IAAM,CAAC,GAAG,YAAM,EAAA,OAAA,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA;AAEtD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAChD,QAAA,OAAO,YAAM,EAAA,OAAA,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAnD,EAAmD,CAAA;AAClE,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/handles/router.mjs.map b/dist/mjs/mods/react/hooks/handles/router.mjs.map deleted file mode 100644 index b336d273..00000000 --- a/dist/mjs/mods/react/hooks/handles/router.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"router.mjs","sources":["../../../../../../src/mods/react/hooks/handles/router.ts"],"sourcesContent":["import { ScrollSchema } from \"mods/scroll/schema.js\";\nimport { SingleSchema } from \"mods/single/schema.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { DependencyList, useMemo } from \"react\";\nimport { ScrollHandle, useScroll } from \"./scroll.js\";\nimport { SingleHandle, useSingle } from \"./single.js\";\n\nexport function use(\n factory: (...deps: L) => SingleSchema,\n deps: L\n): SingleHandle\n\nexport function use(\n factory: (...deps: L) => ScrollSchema,\n deps: L\n): ScrollHandle\n\nexport function use(\n factory: (...deps: L) => Schema,\n deps: L\n) {\n const schema = useMemo(() => {\n return factory(...deps)\n }, deps)\n\n if (schema instanceof SingleSchema) {\n const { key, fetcher, params } = schema\n return useSingle(key, fetcher, params)\n }\n\n if (schema instanceof ScrollSchema) {\n const { scroller, fetcher, params } = schema\n return useScroll(scroller, fetcher, params)\n }\n\n throw new Error(\"Invalid resource schema\")\n}"],"names":[],"mappings":";;;;;;;AAiBgB,SAAA,GAAG,CACjB,OAAwC,EACxC,IAAO,EAAA;IAEP,IAAM,MAAM,GAAG,OAAO,CAAC,YAAA;QACrB,OAAO,OAAO,CAAI,KAAA,CAAA,KAAA,CAAA,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,EAAA,KAAA,CAAA,CAAA,CAAA;KACxB,EAAE,IAAI,CAAC,CAAA;IAER,IAAI,MAAM,YAAY,YAAY,EAAE;AAC1B,QAAA,IAAA,GAAG,GAAsB,MAAM,CAAA,GAA5B,EAAE,OAAO,GAAa,MAAM,CAAA,OAAnB,EAAE,MAAM,GAAK,MAAM,OAAX,CAAW;QACvC,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACvC,KAAA;IAED,IAAI,MAAM,YAAY,YAAY,EAAE;AAC1B,QAAA,IAAA,QAAQ,GAAsB,MAAM,CAAA,QAA5B,EAAE,OAAO,GAAa,MAAM,CAAA,OAAnB,EAAE,MAAM,GAAK,MAAM,OAAX,CAAW;QAC5C,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC5C,KAAA;AAED,IAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC5C;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/handles/scroll.mjs.map b/dist/mjs/mods/react/hooks/handles/scroll.mjs.map deleted file mode 100644 index 661c5a4d..00000000 --- a/dist/mjs/mods/react/hooks/handles/scroll.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scroll.mjs","sources":["../../../../../../src/mods/react/hooks/handles/scroll.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Handle } from \"mods/react/types/handle.js\";\nimport { getScrollStorageKey } from \"mods/scroll/object.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Handle for a scrolling resource\n */\nexport interface ScrollHandle extends Handle {\n /**\n * Fetch the next page\n */\n scroll(): Promise | undefined>\n}\n\n/**\n * Scrolling resource handle factory\n * @param scroller Key scroller (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Scrolling handle\n */\nexport function useScroll(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): ScrollHandle {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const scrollerRef = useAutoRef(scroller)\n const fetcherRef = useAutoRef(fetcher)\n const paramsRef = useAutoRef(mparams)\n\n const key = useMemo(() => {\n return scroller()\n }, [scroller])\n\n const skey = useMemo(() => {\n return getScrollStorageKey(key, paramsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, paramsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, paramsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, paramsRef.current)\n return () => void core.off(skey, setState, paramsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = paramsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, paramsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const scroll = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Scroll on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.scroll(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.scroll.first(skey, scroller, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, scroll, clear, suspend }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/handles/single.mjs.map b/dist/mjs/mods/react/hooks/handles/single.mjs.map deleted file mode 100644 index d3dc9042..00000000 --- a/dist/mjs/mods/react/hooks/handles/single.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"single.mjs","sources":["../../../../../../src/mods/react/hooks/handles/single.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Handle } from \"mods/react/types/handle.js\";\nimport { getSingleStorageKey } from \"mods/single/object.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Handle for a single resource\n */\nexport interface SingleHandle extends Handle {\n /**\n * Optimistic update\n * @param updater Mutation function\n * @param aborter Custom AbortController\n */\n update(updater: Updater, uparams?: UpdaterParams, aborter?: AbortController): Promise | undefined>\n}\n\n/**\n * Single resource handle factory\n * @param key Key (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Single handle\n */\nexport function useSingle(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): SingleHandle {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const keyRef = useAutoRef(key)\n const fetcherRef = useAutoRef(fetcher)\n const mparamsRef = useAutoRef(mparams)\n\n const skey = useMemo(() => {\n return getSingleStorageKey(key, mparamsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, mparamsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, mparamsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, mparamsRef.current)\n return () => void core.off(skey, setState, mparamsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = mparamsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, mparamsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const update = useCallback(async (updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Update on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const fparams = { ...params, ...uparams }\n\n return await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.single.fetch(key, skey, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, update, clear, suspend }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/handles/router.mjs b/dist/mjs/mods/react/hooks/queries/router.js similarity index 56% rename from dist/mjs/mods/react/hooks/handles/router.mjs rename to dist/mjs/mods/react/hooks/queries/router.js index 6186e2b2..1617067b 100644 --- a/dist/mjs/mods/react/hooks/handles/router.mjs +++ b/dist/mjs/mods/react/hooks/queries/router.js @@ -1,24 +1,24 @@ import { __spreadArray, __read } from 'tslib'; -import { ScrollSchema } from '../../../scroll/schema.mjs'; -import { SingleSchema } from '../../../single/schema.mjs'; +import { ScrollSchema } from '../../../scroll/schema.js'; +import { SingleSchema } from '../../../single/schema.js'; import { useMemo } from 'react'; -import { useScroll } from './scroll.mjs'; -import { useSingle } from './single.mjs'; +import { useScrollQuery } from './scroll.js'; +import { useSingleQuery } from './single.js'; -function use(factory, deps) { +function useQuery(factory, deps) { var schema = useMemo(function () { return factory.apply(void 0, __spreadArray([], __read(deps), false)); }, deps); if (schema instanceof SingleSchema) { var key = schema.key, fetcher = schema.fetcher, params = schema.params; - return useSingle(key, fetcher, params); + return useSingleQuery(key, fetcher, params); } if (schema instanceof ScrollSchema) { var scroller = schema.scroller, fetcher = schema.fetcher, params = schema.params; - return useScroll(scroller, fetcher, params); + return useScrollQuery(scroller, fetcher, params); } throw new Error("Invalid resource schema"); } -export { use }; -//# sourceMappingURL=router.mjs.map +export { useQuery }; +//# sourceMappingURL=router.js.map diff --git a/dist/mjs/mods/react/hooks/queries/router.js.map b/dist/mjs/mods/react/hooks/queries/router.js.map new file mode 100644 index 00000000..7665730b --- /dev/null +++ b/dist/mjs/mods/react/hooks/queries/router.js.map @@ -0,0 +1 @@ +{"version":3,"file":"router.js","sources":["../../../../../../src/mods/react/hooks/queries/router.ts"],"sourcesContent":["import { ScrollSchema } from \"mods/scroll/schema.js\";\nimport { SingleSchema } from \"mods/single/schema.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { DependencyList, useMemo } from \"react\";\nimport { ScrollQuery, useScrollQuery } from \"./scroll.js\";\nimport { SingleQuery, useSingleQuery } from \"./single.js\";\n\nexport function useQuery(\n factory: (...deps: L) => SingleSchema,\n deps: L\n): SingleQuery\n\nexport function useQuery(\n factory: (...deps: L) => ScrollSchema,\n deps: L\n): ScrollQuery\n\nexport function useQuery(\n factory: (...deps: L) => Schema,\n deps: L\n) {\n const schema = useMemo(() => {\n return factory(...deps)\n }, deps)\n\n if (schema instanceof SingleSchema) {\n const { key, fetcher, params } = schema\n return useSingleQuery(key, fetcher, params)\n }\n\n if (schema instanceof ScrollSchema) {\n const { scroller, fetcher, params } = schema\n return useScrollQuery(scroller, fetcher, params)\n }\n\n throw new Error(\"Invalid resource schema\")\n}"],"names":[],"mappings":";;;;;;;AAiBgB,SAAA,QAAQ,CACtB,OAAwC,EACxC,IAAO,EAAA;IAEP,IAAM,MAAM,GAAG,OAAO,CAAC,YAAA;QACrB,OAAO,OAAO,CAAI,KAAA,CAAA,KAAA,CAAA,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,CAAC,EAAA,KAAA,CAAA,CAAA,CAAA;KACxB,EAAE,IAAI,CAAC,CAAA;IAER,IAAI,MAAM,YAAY,YAAY,EAAE;AAC1B,QAAA,IAAA,GAAG,GAAsB,MAAM,CAAA,GAA5B,EAAE,OAAO,GAAa,MAAM,CAAA,OAAnB,EAAE,MAAM,GAAK,MAAM,OAAX,CAAW;QACvC,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC5C,KAAA;IAED,IAAI,MAAM,YAAY,YAAY,EAAE;AAC1B,QAAA,IAAA,QAAQ,GAAsB,MAAM,CAAA,QAA5B,EAAE,OAAO,GAAa,MAAM,CAAA,OAAnB,EAAE,MAAM,GAAK,MAAM,OAAX,CAAW;QAC5C,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACjD,KAAA;AAED,IAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC5C;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/handles/scroll.mjs b/dist/mjs/mods/react/hooks/queries/scroll.js similarity index 96% rename from dist/mjs/mods/react/hooks/handles/scroll.mjs rename to dist/mjs/mods/react/hooks/queries/scroll.js index db54fd51..c2b853a1 100644 --- a/dist/mjs/mods/react/hooks/handles/scroll.mjs +++ b/dist/mjs/mods/react/hooks/queries/scroll.js @@ -1,17 +1,17 @@ import { __assign, __read, __awaiter, __generator } from 'tslib'; -import { useAutoRef } from '../../../../libs/react.mjs'; -import { useCore } from '../../contexts/core.mjs'; -import { getScrollStorageKey } from '../../../scroll/object.mjs'; +import { useAutoRef } from '../../../../libs/react.js'; +import { useCore } from '../../contexts/core.js'; +import { getScrollStorageKey } from '../../../scroll/instance.js'; import { useMemo, useState, useRef, useCallback, useEffect } from 'react'; /** - * Scrolling resource handle factory + * Scrolling resource query factory * @param scroller Key scroller (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Scrolling handle + * @returns Scrolling query */ -function useScroll(scroller, fetcher, params) { +function useScrollQuery(scroller, fetcher, params) { var _this = this; if (params === void 0) { params = {}; } var core = useCore(); @@ -200,5 +200,5 @@ function useScroll(scroller, fetcher, params) { return { key: key, skey: skey, data: data, error: error, time: time, cooldown: cooldown, expiration: expiration, aborter: aborter, optimistic: optimistic, realData: realData, loading: loading, ready: ready, mutate: mutate, fetch: fetch, refetch: refetch, scroll: scroll, clear: clear, suspend: suspend }; } -export { useScroll }; -//# sourceMappingURL=scroll.mjs.map +export { useScrollQuery }; +//# sourceMappingURL=scroll.js.map diff --git a/dist/mjs/mods/react/hooks/queries/scroll.js.map b/dist/mjs/mods/react/hooks/queries/scroll.js.map new file mode 100644 index 00000000..a5cd642c --- /dev/null +++ b/dist/mjs/mods/react/hooks/queries/scroll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scroll.js","sources":["../../../../../../src/mods/react/hooks/queries/scroll.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Query } from \"mods/react/types/query.js\";\nimport { getScrollStorageKey } from \"mods/scroll/instance.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Query for a scrolling resource\n */\nexport interface ScrollQuery extends Query {\n /**\n * Fetch the next page\n */\n scroll(): Promise | undefined>\n}\n\n/**\n * Scrolling resource query factory\n * @param scroller Key scroller (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Scrolling query\n */\nexport function useScrollQuery(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): ScrollQuery {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const scrollerRef = useAutoRef(scroller)\n const fetcherRef = useAutoRef(fetcher)\n const paramsRef = useAutoRef(mparams)\n\n const key = useMemo(() => {\n return scroller()\n }, [scroller])\n\n const skey = useMemo(() => {\n return getScrollStorageKey(key, paramsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, paramsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, paramsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, paramsRef.current)\n return () => void core.off(skey, setState, paramsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = paramsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, paramsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.first(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const scroll = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Scroll on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n return await core.scroll.scroll(skey, scroller, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const scroller = scrollerRef.current\n const fetcher = fetcherRef.current\n const params = paramsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.scroll.first(skey, scroller, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, scroll, clear, suspend }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/handles/single.mjs b/dist/mjs/mods/react/hooks/queries/single.js similarity index 96% rename from dist/mjs/mods/react/hooks/handles/single.mjs rename to dist/mjs/mods/react/hooks/queries/single.js index 3b1e7253..92b0778a 100644 --- a/dist/mjs/mods/react/hooks/handles/single.mjs +++ b/dist/mjs/mods/react/hooks/queries/single.js @@ -1,17 +1,17 @@ import { __assign, __read, __awaiter, __generator } from 'tslib'; -import { useAutoRef } from '../../../../libs/react.mjs'; -import { useCore } from '../../contexts/core.mjs'; -import { getSingleStorageKey } from '../../../single/object.mjs'; +import { useAutoRef } from '../../../../libs/react.js'; +import { useCore } from '../../contexts/core.js'; +import { getSingleStorageKey } from '../../../single/instance.js'; import { useMemo, useState, useRef, useCallback, useEffect } from 'react'; /** - * Single resource handle factory + * Single resource query factory * @param key Key (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Single handle + * @returns Single query */ -function useSingle(key, fetcher, params) { +function useSingleQuery(key, fetcher, params) { var _this = this; if (params === void 0) { params = {}; } var core = useCore(); @@ -199,5 +199,5 @@ function useSingle(key, fetcher, params) { return { key: key, skey: skey, data: data, error: error, time: time, cooldown: cooldown, expiration: expiration, aborter: aborter, optimistic: optimistic, realData: realData, loading: loading, ready: ready, mutate: mutate, fetch: fetch, refetch: refetch, update: update, clear: clear, suspend: suspend }; } -export { useSingle }; -//# sourceMappingURL=single.mjs.map +export { useSingleQuery }; +//# sourceMappingURL=single.js.map diff --git a/dist/mjs/mods/react/hooks/queries/single.js.map b/dist/mjs/mods/react/hooks/queries/single.js.map new file mode 100644 index 00000000..28111097 --- /dev/null +++ b/dist/mjs/mods/react/hooks/queries/single.js.map @@ -0,0 +1 @@ +{"version":3,"file":"single.js","sources":["../../../../../../src/mods/react/hooks/queries/single.ts"],"sourcesContent":["import { useAutoRef } from \"libs/react.js\";\nimport { useCore } from \"mods/react/contexts/core.js\";\nimport { Query } from \"mods/react/types/query.js\";\nimport { getSingleStorageKey } from \"mods/single/instance.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Query for a single resource\n */\nexport interface SingleQuery extends Query {\n /**\n * Optimistic update\n * @param updater Mutation function\n * @param aborter Custom AbortController\n */\n update(updater: Updater, uparams?: UpdaterParams, aborter?: AbortController): Promise | undefined>\n}\n\n/**\n * Single resource query factory\n * @param key Key (memoized)\n * @param fetcher Resource fetcher (unmemoized)\n * @param cparams Parameters (unmemoized)\n * @returns Single query\n */\nexport function useSingleQuery(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n): SingleQuery {\n const core = useCore()\n\n const mparams = { ...core.params, ...params }\n\n const keyRef = useAutoRef(key)\n const fetcherRef = useAutoRef(fetcher)\n const mparamsRef = useAutoRef(mparams)\n\n const skey = useMemo(() => {\n return getSingleStorageKey(key, mparamsRef.current)\n }, [key])\n\n const [, setCounter] = useState(0)\n\n const stateRef = useRef | null>()\n\n useMemo(() => {\n stateRef.current = core.getSync(skey, mparamsRef.current)\n }, [core, skey])\n\n const setState = useCallback((state?: State) => {\n stateRef.current = state\n setCounter(c => c + 1)\n }, [])\n\n const initRef = useRef>()\n\n useEffect(() => {\n if (stateRef.current !== null) return\n\n initRef.current = core.get(skey, mparamsRef.current).then(setState)\n }, [core, skey])\n\n useEffect(() => {\n if (!skey) return\n\n core.on(skey, setState, mparamsRef.current)\n return () => void core.off(skey, setState, mparamsRef.current)\n }, [core, skey])\n\n const mutate = useCallback(async (mutator: Mutator) => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const state = stateRef.current\n const params = mparamsRef.current\n\n return await core.mutate(skey, state, mutator, params)\n }, [core, skey])\n\n const clear = useCallback(async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n await core.delete(skey, mparamsRef.current)\n }, [core, skey])\n\n const fetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Fetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params)\n }, [core, skey])\n\n const refetch = useCallback(async (aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Refetch on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n return stateRef.current\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n return await core.single.fetch(key, skey, fetcher, aborter, params, true, true)\n }, [core, skey])\n\n const update = useCallback(async (updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) => {\n if (typeof window === \"undefined\")\n throw new Error(\"Update on SSR\")\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const fparams = { ...params, ...uparams }\n\n return await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }, [core, skey])\n\n const suspend = useCallback(() => {\n if (typeof window === \"undefined\")\n throw new Error(\"Suspend on SSR\")\n return (async () => {\n if (stateRef.current === null)\n await initRef.current\n if (stateRef.current === null)\n throw new Error(\"Null state after init\")\n if (fetcherRef.current === undefined)\n throw new Error(\"No fetcher\")\n\n const key = keyRef.current\n const fetcher = fetcherRef.current\n const params = mparamsRef.current\n\n const background = new Promise(ok => core.once(skey, () => ok(), params))\n await core.single.fetch(key, skey, fetcher, undefined, params, false, true)\n await background\n })()\n }, [core, skey])\n\n const state = stateRef.current\n\n const { data, error, time, cooldown, expiration, aborter, optimistic, realData } = state ?? {}\n\n const ready = state !== null\n const loading = Boolean(aborter)\n\n return { key, skey, data, error, time, cooldown, expiration, aborter, optimistic, realData, loading, ready, mutate, fetch, refetch, update, clear, suspend }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/xswr.mjs b/dist/mjs/mods/react/hooks/xswr.js similarity index 74% rename from dist/mjs/mods/react/hooks/xswr.mjs rename to dist/mjs/mods/react/hooks/xswr.js index a917980b..5191e0f5 100644 --- a/dist/mjs/mods/react/hooks/xswr.mjs +++ b/dist/mjs/mods/react/hooks/xswr.js @@ -1,4 +1,4 @@ -import { useCore } from '../contexts/core.mjs'; +import { useCore } from '../contexts/core.js'; import { useCallback } from 'react'; function useXSWR() { @@ -10,4 +10,4 @@ function useXSWR() { } export { useXSWR }; -//# sourceMappingURL=xswr.mjs.map +//# sourceMappingURL=xswr.js.map diff --git a/dist/mjs/mods/react/hooks/xswr.js.map b/dist/mjs/mods/react/hooks/xswr.js.map new file mode 100644 index 00000000..515ea0e8 --- /dev/null +++ b/dist/mjs/mods/react/hooks/xswr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"xswr.js","sources":["../../../../../src/mods/react/hooks/xswr.tsx"],"sourcesContent":["import { useCore } from \"mods/react/contexts/core.js\"\nimport { Instance } from \"mods/types/instance.js\"\nimport { Schema } from \"mods/types/schema.js\"\nimport { useCallback } from \"react\"\n\nexport type Maker = = Instance>(\n schema: Schema\n) => O\n\nexport function useXSWR() {\n const core = useCore()\n\n const make = useCallback((schema) => {\n return schema.make(core)\n }, [core])\n\n return { core, make }\n}"],"names":[],"mappings":";;;SASgB,OAAO,GAAA;AACrB,IAAA,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;AAEtB,IAAA,IAAM,IAAI,GAAG,WAAW,CAAQ,UAAC,MAAM,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAEV,IAAA,OAAO,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/react/hooks/xswr.mjs.map b/dist/mjs/mods/react/hooks/xswr.mjs.map deleted file mode 100644 index 150cdc9d..00000000 --- a/dist/mjs/mods/react/hooks/xswr.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"xswr.mjs","sources":["../../../../../src/mods/react/hooks/xswr.tsx"],"sourcesContent":["import { useCore } from \"mods/react/contexts/core.js\"\nimport { Object } from \"mods/types/object.js\"\nimport { Schema } from \"mods/types/schema.js\"\nimport { useCallback } from \"react\"\n\nexport type Maker = = Object>(\n schema: Schema\n) => O\n\nexport function useXSWR() {\n const core = useCore()\n\n const make = useCallback((schema) => {\n return schema.make(core)\n }, [core])\n\n return { core, make }\n}"],"names":[],"mappings":";;;SASgB,OAAO,GAAA;AACrB,IAAA,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;AAEtB,IAAA,IAAM,IAAI,GAAG,WAAW,CAAQ,UAAC,MAAM,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAEV,IAAA,OAAO,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,CAAA;AACvB;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/scroll/helper.mjs b/dist/mjs/mods/scroll/helper.js similarity index 98% rename from dist/mjs/mods/scroll/helper.mjs rename to dist/mjs/mods/scroll/helper.js index f3ed1adb..8d0aab66 100644 --- a/dist/mjs/mods/scroll/helper.mjs +++ b/dist/mjs/mods/scroll/helper.js @@ -1,8 +1,8 @@ import { __awaiter, __generator, __assign, __spreadArray, __read } from 'tslib'; -import { lastOf } from '../../libs/arrays.mjs'; -import { getTimeFromDelay } from '../../libs/time.mjs'; -import { AbortError } from '../errors/abort.mjs'; -import { DEFAULT_EQUALS, DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from '../utils/defaults.mjs'; +import { lastOf } from '../../libs/arrays.js'; +import { getTimeFromDelay } from '../../libs/time.js'; +import { AbortError } from '../errors/abort.js'; +import { DEFAULT_EQUALS, DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from '../utils/defaults.js'; var ScrollHelper = /** @class */ (function () { function ScrollHelper(core) { @@ -211,4 +211,4 @@ var ScrollHelper = /** @class */ (function () { }()); export { ScrollHelper }; -//# sourceMappingURL=helper.mjs.map +//# sourceMappingURL=helper.js.map diff --git a/dist/mjs/mods/scroll/helper.js.map b/dist/mjs/mods/scroll/helper.js.map new file mode 100644 index 00000000..bb86d95f --- /dev/null +++ b/dist/mjs/mods/scroll/helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helper.js","sources":["../../../../src/mods/scroll/helper.ts"],"sourcesContent":["import { lastOf } from \"libs/arrays.js\";\nimport { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class ScrollHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch first page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async first(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, first } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const first = scroller(undefined)\n\n if (first === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, first }\n })\n\n if (skip)\n return current\n if (first === undefined)\n throw new Error(\"Undefined first\")\n\n const {\n equals = DEFAULT_EQUALS,\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"First timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(first, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [data]\n state.error = error\n\n if (data !== undefined) {\n const norm = await this.core.normalize(true, { data: [data] }, params)\n if (equals(norm?.[0], current?.data?.[0])) delete state.data\n }\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Scroll to the next page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async scroll(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, last } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const pages = current?.data ?? []\n const last = scroller(lastOf(pages))\n\n if (last === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, last }\n })\n\n if (skip)\n return current\n if (last === undefined)\n throw new Error(\"Undefined last\")\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Scroll timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n let {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(last, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n if (expiration !== undefined && current?.expiration !== undefined)\n expiration = Math.min(expiration, current?.expiration)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [...(current?.data ?? []), data]\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/scroll/helper.mjs.map b/dist/mjs/mods/scroll/helper.mjs.map deleted file mode 100644 index be090320..00000000 --- a/dist/mjs/mods/scroll/helper.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helper.mjs","sources":["../../../../src/mods/scroll/helper.ts"],"sourcesContent":["import { lastOf } from \"libs/arrays.js\";\nimport { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class ScrollHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch first page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async first(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, first } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const first = scroller(undefined)\n\n if (first === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, first }\n })\n\n if (skip)\n return current\n if (first === undefined)\n throw new Error(\"Undefined first\")\n\n const {\n equals = DEFAULT_EQUALS,\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"First timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(first, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [data]\n state.error = error\n\n if (data !== undefined) {\n const norm = await this.core.normalize(true, { data: [data] }, params)\n if (equals(norm?.[0], current?.data?.[0])) delete state.data\n }\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Scroll to the next page\n * @param skey Storage key\n * @param scroller Key scroller\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async scroll(\n skey: string | undefined,\n scroller: Scroller,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (skey === undefined) return\n\n let { current, skip, last } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n const pages = current?.data ?? []\n const last = scroller(lastOf(pages))\n\n if (last === undefined)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current, last }\n })\n\n if (skip)\n return current\n if (last === undefined)\n throw new Error(\"Undefined last\")\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Scroll timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n let {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(last, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n if (expiration !== undefined && current?.expiration !== undefined)\n expiration = Math.min(expiration, current?.expiration)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = [...(current?.data ?? []), data]\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/scroll/object.mjs b/dist/mjs/mods/scroll/instance.js similarity index 88% rename from dist/mjs/mods/scroll/object.mjs rename to dist/mjs/mods/scroll/instance.js index 4630c26c..e022f569 100644 --- a/dist/mjs/mods/scroll/object.mjs +++ b/dist/mjs/mods/scroll/instance.js @@ -1,5 +1,5 @@ import { __awaiter, __generator, __assign } from 'tslib'; -import { DEFAULT_SERIALIZER } from '../utils/defaults.mjs'; +import { DEFAULT_SERIALIZER } from '../utils/defaults.js'; function getScrollStorageKey(key, params) { if (key === undefined) @@ -10,10 +10,10 @@ function getScrollStorageKey(key, params) { return "scroll:".concat(serializer.stringify(key)); } /** - * Non-React version of ScrollHandle + * Non-React version of ScrollQuery */ -var ScrollObject = /** @class */ (function () { - function ScrollObject(core, scroller, fetcher, params) { +var ScrollInstance = /** @class */ (function () { + function ScrollInstance(core, scroller, fetcher, params) { if (params === void 0) { params = {}; } this.core = core; this.scroller = scroller; @@ -25,26 +25,26 @@ var ScrollObject = /** @class */ (function () { this.loadSync(); this.subscribe(); } - Object.defineProperty(ScrollObject.prototype, "init", { + Object.defineProperty(ScrollInstance.prototype, "init", { get: function () { return this._init; }, enumerable: false, configurable: true }); - Object.defineProperty(ScrollObject.prototype, "state", { + Object.defineProperty(ScrollInstance.prototype, "state", { get: function () { return this._state; }, enumerable: false, configurable: true }); - Object.defineProperty(ScrollObject.prototype, "ready", { + Object.defineProperty(ScrollInstance.prototype, "ready", { get: function () { return this._state !== null; }, enumerable: false, configurable: true }); - ScrollObject.prototype.loadSync = function () { + ScrollInstance.prototype.loadSync = function () { var _a = this, core = _a.core, skey = _a.skey, mparams = _a.mparams; this._state = core.getSync(skey, mparams); }; - ScrollObject.prototype.loadAsync = function () { + ScrollInstance.prototype.loadAsync = function () { return __awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams, _b; return __generator(this, function (_c) { @@ -62,7 +62,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.subscribe = function () { + ScrollInstance.prototype.subscribe = function () { var _this = this; var _a = this, core = _a.core, skey = _a.skey; var setter = function (state) { @@ -73,7 +73,7 @@ var ScrollObject = /** @class */ (function () { core.off(skey, setter); }).register(this, undefined); }; - ScrollObject.prototype.mutate = function (mutator) { + ScrollInstance.prototype.mutate = function (mutator) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, skey, mparams, _c; @@ -96,7 +96,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.fetch = function (aborter) { + ScrollInstance.prototype.fetch = function (aborter) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, scroller, skey, fetcher, mparams, _c; @@ -121,7 +121,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.refetch = function (aborter) { + ScrollInstance.prototype.refetch = function (aborter) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, scroller, skey, fetcher, mparams, _c; @@ -146,7 +146,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.scroll = function (aborter) { + ScrollInstance.prototype.scroll = function (aborter) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, scroller, skey, fetcher, mparams, _c; @@ -171,7 +171,7 @@ var ScrollObject = /** @class */ (function () { }); }); }; - ScrollObject.prototype.clear = function () { + ScrollInstance.prototype.clear = function () { return __awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams; return __generator(this, function (_b) { @@ -187,8 +187,8 @@ var ScrollObject = /** @class */ (function () { }); }); }; - return ScrollObject; + return ScrollInstance; }()); -export { ScrollObject, getScrollStorageKey }; -//# sourceMappingURL=object.mjs.map +export { ScrollInstance, getScrollStorageKey }; +//# sourceMappingURL=instance.js.map diff --git a/dist/mjs/mods/scroll/instance.js.map b/dist/mjs/mods/scroll/instance.js.map new file mode 100644 index 00000000..afcb0b4b --- /dev/null +++ b/dist/mjs/mods/scroll/instance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instance.js","sources":["../../../../src/mods/scroll/instance.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Instance } from \"mods/types/instance.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getScrollStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return `scroll:${serializer.stringify(key)}`\n}\n\n/**\n * Non-React version of ScrollQuery\n */\nexport class ScrollInstance implements Instance {\n readonly key: K | undefined\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.key = scroller()\n this.skey = getScrollStorageKey(this.key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async scroll(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.scroll(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/scroll/object.mjs.map b/dist/mjs/mods/scroll/object.mjs.map deleted file mode 100644 index 34f12b68..00000000 --- a/dist/mjs/mods/scroll/object.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.mjs","sources":["../../../../src/mods/scroll/object.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Object } from \"mods/types/object.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { State } from \"mods/types/state.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getScrollStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return `scroll:${serializer.stringify(key)}`\n}\n\n/**\n * Non-React version of ScrollHandle\n */\nexport class ScrollObject implements Object {\n readonly key: K | undefined\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.key = scroller()\n this.skey = getScrollStorageKey(this.key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.first(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async scroll(aborter?: AbortController) {\n const { core, scroller, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.scroll.scroll(skey, scroller, fetcher, aborter, mparams, true, true)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/scroll/schema.mjs b/dist/mjs/mods/scroll/schema.js similarity index 86% rename from dist/mjs/mods/scroll/schema.mjs rename to dist/mjs/mods/scroll/schema.js index d0c1441a..120c4ed2 100644 --- a/dist/mjs/mods/scroll/schema.mjs +++ b/dist/mjs/mods/scroll/schema.js @@ -1,7 +1,7 @@ import { __awaiter, __generator } from 'tslib'; -import { ScrollObject } from './object.mjs'; +import { ScrollInstance } from './instance.js'; -function scroll(scroller, fetcher, params) { +function getScrollSchema(scroller, fetcher, params) { if (params === void 0) { params = {}; } return new ScrollSchema(scroller, fetcher, params); } @@ -14,7 +14,7 @@ var ScrollSchema = /** @class */ (function () { } ScrollSchema.prototype.make = function (core) { var _a = this, scroller = _a.scroller, fetcher = _a.fetcher, params = _a.params; - return new ScrollObject(core, scroller, fetcher, params); + return new ScrollInstance(core, scroller, fetcher, params); }; ScrollSchema.prototype.normalize = function (data, more) { return __awaiter(this, void 0, void 0, function () { @@ -37,5 +37,5 @@ var ScrollSchema = /** @class */ (function () { return ScrollSchema; }()); -export { ScrollSchema, scroll }; -//# sourceMappingURL=schema.mjs.map +export { ScrollSchema, getScrollSchema }; +//# sourceMappingURL=schema.js.map diff --git a/dist/mjs/mods/scroll/schema.js.map b/dist/mjs/mods/scroll/schema.js.map new file mode 100644 index 00000000..ef2e05d9 --- /dev/null +++ b/dist/mjs/mods/scroll/schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"schema.js","sources":["../../../../src/mods/scroll/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { ScrollInstance } from \"./instance.js\";\n\nexport function getScrollSchema(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new ScrollSchema(scroller, fetcher, params)\n}\n\nexport class ScrollSchema implements Schema> {\n constructor(\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { scroller, fetcher, params } = this\n\n return new ScrollInstance(core, scroller, fetcher, params)\n }\n\n async normalize(data: D[], more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":[],"mappings":";;;SAQgB,eAAe,CAC7B,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;IAE9B,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;QAF9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KACpC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAAgC,IAAI,EAAlC,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAE1C,OAAO,IAAI,cAAc,CAAU,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KACpE,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAS,EAAE,IAA+B,EAAA;;;;;;wBACxD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/scroll/schema.mjs.map b/dist/mjs/mods/scroll/schema.mjs.map deleted file mode 100644 index a8578a74..00000000 --- a/dist/mjs/mods/scroll/schema.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schema.mjs","sources":["../../../../src/mods/scroll/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { Scroller } from \"mods/types/scroller.js\";\nimport { ScrollObject } from \"./object.js\";\n\nexport function scroll(\n scroller: Scroller,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new ScrollSchema(scroller, fetcher, params)\n}\n\nexport class ScrollSchema implements Schema> {\n constructor(\n readonly scroller: Scroller,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { scroller, fetcher, params } = this\n\n return new ScrollObject(core, scroller, fetcher, params)\n }\n\n async normalize(data: D[], more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":[],"mappings":";;;SAQgB,MAAM,CACpB,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;IAE9B,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,QAA2B,EAC3B,OAAqC,EACrC,MAA8B,EAAA;AAA9B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA8B,GAAA,EAAA,CAAA,EAAA;QAF9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KACpC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAAgC,IAAI,EAAlC,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAE1C,OAAO,IAAI,YAAY,CAAU,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAClE,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAS,EAAE,IAA+B,EAAA;;;;;;wBACxD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/single/helper.mjs b/dist/mjs/mods/single/helper.js similarity index 75% rename from dist/mjs/mods/single/helper.mjs rename to dist/mjs/mods/single/helper.js index 299bb8d4..e6ec15f4 100644 --- a/dist/mjs/mods/single/helper.mjs +++ b/dist/mjs/mods/single/helper.js @@ -1,8 +1,7 @@ -import { __awaiter, __generator, __assign, __asyncValues } from 'tslib'; -import { returnOf } from '../../libs/generator.mjs'; -import { getTimeFromDelay } from '../../libs/time.mjs'; -import { AbortError } from '../errors/abort.mjs'; -import { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from '../utils/defaults.mjs'; +import { __awaiter, __generator, __assign } from 'tslib'; +import { getTimeFromDelay } from '../../libs/time.js'; +import { AbortError } from '../errors/abort.js'; +import { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from '../utils/defaults.js'; var SingleHelper = /** @class */ (function () { function SingleHelper(core) { @@ -110,14 +109,13 @@ var SingleHelper = /** @class */ (function () { * @throws Error */ SingleHelper.prototype.update = function (key, skey, fetcher, updater, aborter, params) { - var e_1, _a; if (aborter === void 0) { aborter = new AbortController(); } if (params === void 0) { params = {}; } return __awaiter(this, void 0, void 0, function () { - var _b, current, skip, _c, dcooldown, _d, dexpiration, _e, dtimeout, timeout, signal, generator, _loop_1, this_1, generator_1, generator_1_1, e_1_1, result, data, error_3, _f, time_2, _g, cooldown_2, _h, expiration_2, state_2, error_2; + var _a, current, skip, _b, dcooldown, _c, dexpiration, _d, dtimeout, timeout, signal, generator, result, _loop_1, this_1, state_2, data, error_3, _e, time_2, _f, cooldown_2, _g, expiration_2, state_3, error_2; var _this = this; - return __generator(this, function (_j) { - switch (_j.label) { + return __generator(this, function (_h) { + switch (_h.label) { case 0: if (key === undefined) return [2 /*return*/]; @@ -142,27 +140,31 @@ var SingleHelper = /** @class */ (function () { }); }); })]; case 1: - _b = _j.sent(), current = _b.current, skip = _b.skip; + _a = _h.sent(), current = _a.current, skip = _a.skip; if (skip) return [2 /*return*/, current]; - _c = params.cooldown, dcooldown = _c === void 0 ? DEFAULT_COOLDOWN : _c, _d = params.expiration, dexpiration = _d === void 0 ? DEFAULT_EXPIRATION : _d, _e = params.timeout, dtimeout = _e === void 0 ? DEFAULT_TIMEOUT : _e; + _b = params.cooldown, dcooldown = _b === void 0 ? DEFAULT_COOLDOWN : _b, _c = params.expiration, dexpiration = _c === void 0 ? DEFAULT_EXPIRATION : _c, _d = params.timeout, dtimeout = _d === void 0 ? DEFAULT_TIMEOUT : _d; timeout = setTimeout(function () { aborter.abort("Update timed out"); }, dtimeout); - _j.label = 2; + _h.label = 2; case 2: - _j.trys.push([2, 23, 26, 27]); + _h.trys.push([2, 12, 15, 16]); signal = aborter.signal; generator = updater(current, { signal: signal }); - _j.label = 3; - case 3: - _j.trys.push([3, 9, 10, 15]); + result = undefined; _loop_1 = function () { - var _k, data_1, error_4, optimistic; - return __generator(this, function (_l) { - switch (_l.label) { - case 0: - _k = generator_1_1.value, data_1 = _k.data, error_4 = _k.error; + var _j, done, value, data_1, error_4, optimistic; + return __generator(this, function (_k) { + switch (_k.label) { + case 0: return [4 /*yield*/, generator.next()]; + case 1: + _j = _k.sent(), done = _j.done, value = _j.value; + if (done) { + result = value; + return [2 /*return*/, "break"]; + } + data_1 = value.data, error_4 = value.error; if (signal.aborted) throw new AbortError(signal); optimistic = {}; @@ -170,82 +172,61 @@ var SingleHelper = /** @class */ (function () { optimistic.data = data_1; optimistic.error = error_4; return [4 /*yield*/, this_1.core.mutate(skey, current, function (c) { return (__assign({ time: c === null || c === void 0 ? void 0 : c.time, aborter: aborter, optimistic: true }, optimistic)); }, params)]; - case 1: - current = _l.sent(); + case 2: + current = _k.sent(); return [2 /*return*/]; } }); }; this_1 = this; - generator_1 = __asyncValues(generator); - _j.label = 4; - case 4: return [4 /*yield*/, generator_1.next()]; - case 5: - if (!(generator_1_1 = _j.sent(), !generator_1_1.done)) return [3 /*break*/, 8]; + _h.label = 3; + case 3: return [5 /*yield**/, _loop_1()]; - case 6: - _j.sent(); - _j.label = 7; - case 7: return [3 /*break*/, 4]; - case 8: return [3 /*break*/, 15]; - case 9: - e_1_1 = _j.sent(); - e_1 = { error: e_1_1 }; - return [3 /*break*/, 15]; - case 10: - _j.trys.push([10, , 13, 14]); - if (!(generator_1_1 && !generator_1_1.done && (_a = generator_1.return))) return [3 /*break*/, 12]; - return [4 /*yield*/, _a.call(generator_1)]; - case 11: - _j.sent(); - _j.label = 12; - case 12: return [3 /*break*/, 14]; - case 13: - if (e_1) throw e_1.error; - return [7 /*endfinally*/]; - case 14: return [7 /*endfinally*/]; - case 15: return [4 /*yield*/, returnOf(generator)]; - case 16: - result = _j.sent(); - if (!(result === undefined)) return [3 /*break*/, 18]; + case 4: + state_2 = _h.sent(); + if (state_2 === "break") + return [3 /*break*/, 5]; + return [3 /*break*/, 3]; + case 5: + if (!(result === undefined)) return [3 /*break*/, 7]; if (fetcher === undefined) throw new Error("Updater returned nothing and undefined fetcher"); return [4 /*yield*/, fetcher(key, { signal: signal, cache: "reload" })]; - case 17: - result = _j.sent(); - _j.label = 18; - case 18: - data = result.data, error_3 = result.error, _f = result.time, time_2 = _f === void 0 ? Date.now() : _f, _g = result.cooldown, cooldown_2 = _g === void 0 ? getTimeFromDelay(dcooldown) : _g, _h = result.expiration, expiration_2 = _h === void 0 ? getTimeFromDelay(dexpiration) : _h; + case 6: + result = _h.sent(); + _h.label = 7; + case 7: + data = result.data, error_3 = result.error, _e = result.time, time_2 = _e === void 0 ? Date.now() : _e, _f = result.cooldown, cooldown_2 = _f === void 0 ? getTimeFromDelay(dcooldown) : _f, _g = result.expiration, expiration_2 = _g === void 0 ? getTimeFromDelay(dexpiration) : _g; if (signal.aborted) throw new AbortError(signal); return [4 /*yield*/, this.core.get(skey, params)]; - case 19: - current = _j.sent(); - if (!(error_3 !== undefined)) return [3 /*break*/, 21]; + case 8: + current = _h.sent(); + if (!(error_3 !== undefined)) return [3 /*break*/, 10]; if ((current === null || current === void 0 ? void 0 : current.aborter) !== aborter) return [2 /*return*/, current]; return [4 /*yield*/, this.core.mutate(skey, current, function (c) { return ({ time: c === null || c === void 0 ? void 0 : c.time, cooldown: cooldown_2, expiration: expiration_2, aborter: undefined, optimistic: false, data: c === null || c === void 0 ? void 0 : c.data, error: error_3 }); }, params)]; - case 20: return [2 /*return*/, _j.sent()]; - case 21: - state_2 = {}; + case 9: return [2 /*return*/, _h.sent()]; + case 10: + state_3 = {}; if (data !== undefined) - state_2.data = data; - state_2.error = error_3; - return [4 /*yield*/, this.core.mutate(skey, current, function () { return (__assign({ time: time_2, cooldown: cooldown_2, expiration: expiration_2, aborter: undefined, optimistic: false }, state_2)); }, params)]; - case 22: return [2 /*return*/, _j.sent()]; - case 23: - error_2 = _j.sent(); + state_3.data = data; + state_3.error = error_3; + return [4 /*yield*/, this.core.mutate(skey, current, function () { return (__assign({ time: time_2, cooldown: cooldown_2, expiration: expiration_2, aborter: undefined, optimistic: false }, state_3)); }, params)]; + case 11: return [2 /*return*/, _h.sent()]; + case 12: + error_2 = _h.sent(); return [4 /*yield*/, this.core.get(skey, params)]; - case 24: - current = _j.sent(); + case 13: + current = _h.sent(); if ((current === null || current === void 0 ? void 0 : current.aborter) !== aborter) return [2 /*return*/, current]; return [4 /*yield*/, this.core.mutate(skey, current, function (c) { return ({ time: c === null || c === void 0 ? void 0 : c.time, aborter: undefined, optimistic: false, data: c === null || c === void 0 ? void 0 : c.data, error: error_2 }); }, params)]; - case 25: return [2 /*return*/, _j.sent()]; - case 26: + case 14: return [2 /*return*/, _h.sent()]; + case 15: clearTimeout(timeout); return [7 /*endfinally*/]; - case 27: return [2 /*return*/]; + case 16: return [2 /*return*/]; } }); }); @@ -254,4 +235,4 @@ var SingleHelper = /** @class */ (function () { }()); export { SingleHelper }; -//# sourceMappingURL=helper.mjs.map +//# sourceMappingURL=helper.js.map diff --git a/dist/mjs/mods/single/helper.js.map b/dist/mjs/mods/single/helper.js.map new file mode 100644 index 00000000..6c3107a2 --- /dev/null +++ b/dist/mjs/mods/single/helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helper.js","sources":["../../../../src/mods/single/helper.ts"],"sourcesContent":["import { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Result } from \"mods/types/result.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater } from \"mods/types/updater.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class SingleHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch\n * @param key Key (passed to fetcher)\n * @param skey Storage key\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async fetch(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Fetch timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(key, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Optimistic update\n * @param key Key (:K) (passed to poster)\n * @param skey Storage key\n * @param fetcher Resource poster\n * @param updater Mutation function\n * @param aborter AbortController\n * @param tparams Time parameters\n * @returns The new state\n * @throws Error\n */\n async update(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher | undefined,\n updater: Updater,\n aborter = new AbortController(),\n params: Params = {},\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter)\n current.aborter.abort(\"Replaced\")\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Update timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const generator = updater(current, { signal })\n\n let result: Result | void = undefined\n\n while (true) {\n const { done, value } = await generator.next()\n\n if (done) {\n result = value\n break\n }\n\n const {\n data,\n error\n } = value\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n const optimistic: State = {}\n\n if (data !== undefined)\n optimistic.data = data\n optimistic.error = error\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true, ...optimistic }),\n params)\n }\n\n if (result === undefined) {\n if (fetcher === undefined)\n throw new Error(\"Updater returned nothing and undefined fetcher\")\n result = await fetcher(key, { signal, cache: \"reload\" })\n }\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = result\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n if (error !== undefined) {\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, cooldown, expiration, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n }\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, optimistic: false, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/single/helper.mjs.map b/dist/mjs/mods/single/helper.mjs.map deleted file mode 100644 index 8e09dc3a..00000000 --- a/dist/mjs/mods/single/helper.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"helper.mjs","sources":["../../../../src/mods/single/helper.ts"],"sourcesContent":["import { returnOf } from \"libs/generator.js\";\nimport { getTimeFromDelay } from \"libs/time.js\";\nimport { Core } from \"mods/core.js\";\nimport { AbortError } from \"mods/errors/abort.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater } from \"mods/types/updater.js\";\nimport { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from \"mods/utils/defaults.js\";\n\nexport class SingleHelper {\n constructor(readonly core: Core) { }\n\n /**\n * Fetch\n * @param key Key (passed to fetcher)\n * @param skey Storage key\n * @param fetcher Resource fetcher\n * @param aborter AbortController\n * @param tparams Time parameters\n * @param force Should ignore cooldown\n * @returns The new state\n */\n async fetch(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher,\n aborter = new AbortController(),\n params: Params = {},\n force = false,\n ignore = false\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter && !force)\n return { current, skip: true }\n if (current?.aborter && force)\n current.aborter.abort(\"Replaced\")\n\n if (this.core.shouldCooldown(current) && !ignore)\n return { current, skip: true }\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Fetch timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = await fetcher(key, { signal })\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n () => ({ aborter: undefined, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n\n /**\n * Optimistic update\n * @param key Key (:K) (passed to poster)\n * @param skey Storage key\n * @param fetcher Resource poster\n * @param updater Mutation function\n * @param aborter AbortController\n * @param tparams Time parameters\n * @returns The new state\n * @throws Error\n */\n async update(\n key: K | undefined,\n skey: string | undefined,\n fetcher: Fetcher | undefined,\n updater: Updater,\n aborter = new AbortController(),\n params: Params = {},\n ): Promise | undefined> {\n if (key === undefined) return\n if (skey === undefined) return\n\n let { current, skip } = await this.core.lock(skey, async () => {\n let current = await this.core.get(skey, params)\n\n if (current?.optimistic)\n return { current, skip: true }\n if (current?.aborter)\n current.aborter.abort(\"Replaced\")\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true }),\n params)\n return { current }\n })\n\n if (skip)\n return current\n\n const {\n cooldown: dcooldown = DEFAULT_COOLDOWN,\n expiration: dexpiration = DEFAULT_EXPIRATION,\n timeout: dtimeout = DEFAULT_TIMEOUT,\n } = params\n\n const timeout = setTimeout(() => {\n aborter.abort(\"Update timed out\")\n }, dtimeout)\n\n try {\n const { signal } = aborter\n\n const generator = updater(current, { signal })\n\n for await (const { data, error } of generator) {\n if (signal.aborted)\n throw new AbortError(signal)\n\n const optimistic: State = {}\n\n if (data !== undefined)\n optimistic.data = data\n optimistic.error = error\n\n current = await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter, optimistic: true, ...optimistic }),\n params)\n }\n\n let result = await returnOf(generator)\n\n if (result === undefined) {\n if (fetcher === undefined)\n throw new Error(\"Updater returned nothing and undefined fetcher\")\n result = await fetcher(key, { signal, cache: \"reload\" })\n }\n\n const {\n data,\n error,\n time = Date.now(),\n cooldown = getTimeFromDelay(dcooldown),\n expiration = getTimeFromDelay(dexpiration)\n } = result\n\n if (signal.aborted)\n throw new AbortError(signal)\n\n current = await this.core.get(skey, params)\n\n if (error !== undefined) {\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, cooldown, expiration, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n }\n\n const state: State = {}\n\n if (data !== undefined)\n state.data = data\n state.error = error\n\n return await this.core.mutate(skey, current,\n () => ({ time, cooldown, expiration, aborter: undefined, optimistic: false, ...state }),\n params)\n } catch (error: any) {\n current = await this.core.get(skey, params)\n\n if (current?.aborter !== aborter)\n return current\n return await this.core.mutate(skey, current,\n c => ({ time: c?.time, aborter: undefined, optimistic: false, data: c?.data, error }),\n params)\n } finally {\n clearTimeout(timeout)\n }\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/single/object.mjs b/dist/mjs/mods/single/instance.js similarity index 88% rename from dist/mjs/mods/single/object.mjs rename to dist/mjs/mods/single/instance.js index c1493b02..209afd58 100644 --- a/dist/mjs/mods/single/object.mjs +++ b/dist/mjs/mods/single/instance.js @@ -1,5 +1,5 @@ import { __awaiter, __generator, __assign } from 'tslib'; -import { DEFAULT_SERIALIZER } from '../utils/defaults.mjs'; +import { DEFAULT_SERIALIZER } from '../utils/defaults.js'; function getSingleStorageKey(key, params) { if (key === undefined) @@ -10,10 +10,10 @@ function getSingleStorageKey(key, params) { return serializer.stringify(key); } /** - * Non-React version of SingleHandle + * Non-React version of SingleQuery */ -var SingleObject = /** @class */ (function () { - function SingleObject(core, key, fetcher, params) { +var SingleInstance = /** @class */ (function () { + function SingleInstance(core, key, fetcher, params) { if (params === void 0) { params = {}; } this.core = core; this.key = key; @@ -24,26 +24,26 @@ var SingleObject = /** @class */ (function () { this.loadSync(); this.subscribe(); } - Object.defineProperty(SingleObject.prototype, "init", { + Object.defineProperty(SingleInstance.prototype, "init", { get: function () { return this._init; }, enumerable: false, configurable: true }); - Object.defineProperty(SingleObject.prototype, "state", { + Object.defineProperty(SingleInstance.prototype, "state", { get: function () { return this._state; }, enumerable: false, configurable: true }); - Object.defineProperty(SingleObject.prototype, "ready", { + Object.defineProperty(SingleInstance.prototype, "ready", { get: function () { return this._state !== null; }, enumerable: false, configurable: true }); - SingleObject.prototype.loadSync = function () { + SingleInstance.prototype.loadSync = function () { var _a = this, core = _a.core, skey = _a.skey, mparams = _a.mparams; this._state = core.getSync(skey, mparams); }; - SingleObject.prototype.loadAsync = function () { + SingleInstance.prototype.loadAsync = function () { return __awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams, _b; return __generator(this, function (_c) { @@ -61,7 +61,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.subscribe = function () { + SingleInstance.prototype.subscribe = function () { var _this = this; var _a = this, core = _a.core, skey = _a.skey; var setter = function (state) { @@ -72,7 +72,7 @@ var SingleObject = /** @class */ (function () { core.off(skey, setter); }).register(this, undefined); }; - SingleObject.prototype.mutate = function (mutator) { + SingleInstance.prototype.mutate = function (mutator) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, skey, mparams, _c; @@ -95,7 +95,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.fetch = function (aborter) { + SingleInstance.prototype.fetch = function (aborter) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, key, skey, fetcher, mparams, _c; @@ -120,7 +120,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.refetch = function (aborter) { + SingleInstance.prototype.refetch = function (aborter) { var _a; return __awaiter(this, void 0, void 0, function () { var _b, core, key, skey, fetcher, mparams, _c; @@ -145,7 +145,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.update = function (updater, uparams, aborter) { + SingleInstance.prototype.update = function (updater, uparams, aborter) { var _a; if (uparams === void 0) { uparams = {}; } return __awaiter(this, void 0, void 0, function () { @@ -170,7 +170,7 @@ var SingleObject = /** @class */ (function () { }); }); }; - SingleObject.prototype.clear = function () { + SingleInstance.prototype.clear = function () { return __awaiter(this, void 0, void 0, function () { var _a, core, skey, mparams; return __generator(this, function (_b) { @@ -186,8 +186,8 @@ var SingleObject = /** @class */ (function () { }); }); }; - return SingleObject; + return SingleInstance; }()); -export { SingleObject, getSingleStorageKey }; -//# sourceMappingURL=object.mjs.map +export { SingleInstance, getSingleStorageKey }; +//# sourceMappingURL=instance.js.map diff --git a/dist/mjs/mods/single/instance.js.map b/dist/mjs/mods/single/instance.js.map new file mode 100644 index 00000000..88004c67 --- /dev/null +++ b/dist/mjs/mods/single/instance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"instance.js","sources":["../../../../src/mods/single/instance.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Instance } from \"mods/types/instance.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getSingleStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return serializer.stringify(key)\n}\n\n/**\n * Non-React version of SingleQuery\n */\nexport class SingleInstance implements Instance{\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.skey = getSingleStorageKey(key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(this.skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams, true, true)\n }\n\n async update(updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n const fparams = { ...mparams, ...uparams }\n\n return this._state = await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/single/object.mjs.map b/dist/mjs/mods/single/object.mjs.map deleted file mode 100644 index 48e1b13f..00000000 --- a/dist/mjs/mods/single/object.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"object.mjs","sources":["../../../../src/mods/single/object.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { Object } from \"mods/types/object.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater, UpdaterParams } from \"mods/types/updater.js\";\nimport { DEFAULT_SERIALIZER } from \"mods/utils/defaults.js\";\n\nexport function getSingleStorageKey(key: K, params: Params) {\n if (key === undefined)\n return undefined\n if (typeof key === \"string\")\n return key\n\n const {\n serializer = DEFAULT_SERIALIZER\n } = params\n\n return serializer.stringify(key)\n}\n\n/**\n * Non-React version of SingleHandle\n */\nexport class SingleObject implements Object{\n readonly skey: string | undefined\n readonly mparams: Params\n\n private _init: Promise | undefined\n private _state: State | undefined | null\n\n constructor(\n readonly core: Core,\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) {\n this.mparams = { ...core.params, ...params }\n\n this.skey = getSingleStorageKey(key, this.mparams)\n\n this.loadSync()\n this.subscribe()\n }\n\n get init() { return this._init }\n get state() { return this._state }\n get ready() { return this._state !== null }\n\n private loadSync() {\n const { core, skey, mparams } = this\n\n this._state = core.getSync(skey, mparams)\n }\n\n private async loadAsync() {\n if (this.ready) return\n\n const { core, skey, mparams } = this\n\n this._state = await core.get(skey, mparams)\n }\n\n private subscribe() {\n const { core, skey } = this\n\n const setter = (state?: State) =>\n this._state = state\n\n core.on(this.skey, setter)\n\n new FinalizationRegistry(() => {\n core.off(skey, setter)\n }).register(this, undefined)\n }\n\n async mutate(mutator: Mutator) {\n const { core, skey, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n return this._state = await core.mutate(skey, this._state, mutator, mparams)\n }\n\n async fetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams)\n }\n\n async refetch(aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n if (fetcher === undefined)\n return this._state\n\n return this._state = await core.single.fetch(key, skey, fetcher, aborter, mparams, true, true)\n }\n\n async update(updater: Updater, uparams: UpdaterParams = {}, aborter?: AbortController) {\n const { core, key, skey, fetcher, mparams } = this\n\n if (this._state === null)\n await (this._init ??= this.loadAsync())\n if (this._state === null)\n throw new Error(\"Null state after init\")\n\n const fparams = { ...mparams, ...uparams }\n\n return this._state = await core.single.update(key, skey, fetcher, updater, aborter, fparams)\n }\n\n async clear() {\n const { core, skey, mparams } = this\n\n await core.delete(skey, mparams)\n delete this._state\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/single/schema.mjs b/dist/mjs/mods/single/schema.js similarity index 86% rename from dist/mjs/mods/single/schema.mjs rename to dist/mjs/mods/single/schema.js index 57fe73be..aa327fd6 100644 --- a/dist/mjs/mods/single/schema.mjs +++ b/dist/mjs/mods/single/schema.js @@ -1,7 +1,7 @@ import { __awaiter, __generator } from 'tslib'; -import { SingleObject } from './object.mjs'; +import { SingleInstance } from './instance.js'; -function single(key, fetcher, params) { +function getSingleSchema(key, fetcher, params) { if (params === void 0) { params = {}; } return new SingleSchema(key, fetcher, params); } @@ -14,7 +14,7 @@ var SingleSchema = /** @class */ (function () { } SingleSchema.prototype.make = function (core) { var _a = this, key = _a.key, fetcher = _a.fetcher, params = _a.params; - return new SingleObject(core, key, fetcher, params); + return new SingleInstance(core, key, fetcher, params); }; SingleSchema.prototype.normalize = function (data, more) { return __awaiter(this, void 0, void 0, function () { @@ -37,5 +37,5 @@ var SingleSchema = /** @class */ (function () { return SingleSchema; }()); -export { SingleSchema, single }; -//# sourceMappingURL=schema.mjs.map +export { SingleSchema, getSingleSchema }; +//# sourceMappingURL=schema.js.map diff --git a/dist/mjs/mods/single/schema.js.map b/dist/mjs/mods/single/schema.js.map new file mode 100644 index 00000000..c7fcdef9 --- /dev/null +++ b/dist/mjs/mods/single/schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"schema.js","sources":["../../../../src/mods/single/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { SingleInstance } from \"./instance.js\";\n\nexport function getSingleSchema(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new SingleSchema(key, fetcher, params)\n}\n\nexport class SingleSchema implements Schema> {\n constructor(\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { key, fetcher, params } = this\n\n return new SingleInstance(core, key, fetcher, params)\n }\n\n async normalize(data: D, more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":[],"mappings":";;;SAOgB,eAAe,CAC7B,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;IAE5B,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;QAF5B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAe;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;KAClC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAA2B,IAAI,EAA7B,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAErC,OAAO,IAAI,cAAc,CAAU,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAC/D,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAO,EAAE,IAA6B,EAAA;;;;;;wBACpD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/single/schema.mjs.map b/dist/mjs/mods/single/schema.mjs.map deleted file mode 100644 index e7534e31..00000000 --- a/dist/mjs/mods/single/schema.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schema.mjs","sources":["../../../../src/mods/single/schema.ts"],"sourcesContent":["import { Core } from \"mods/core.js\";\nimport { Fetcher } from \"mods/types/fetcher.js\";\nimport { NormalizerMore } from \"mods/types/normalizer.js\";\nimport { Params } from \"mods/types/params.js\";\nimport { Schema } from \"mods/types/schema.js\";\nimport { SingleObject } from \"./object.js\";\n\nexport function single(\n key: K | undefined,\n fetcher: Fetcher | undefined,\n params: Params = {},\n) {\n return new SingleSchema(key, fetcher, params)\n}\n\nexport class SingleSchema implements Schema> {\n constructor(\n readonly key: K | undefined,\n readonly fetcher: Fetcher | undefined,\n readonly params: Params = {},\n ) { }\n\n make(core: Core) {\n const { key, fetcher, params } = this\n\n return new SingleObject(core, key, fetcher, params)\n }\n\n async normalize(data: D, more: NormalizerMore) {\n if (more.shallow) return\n const { time, cooldown, expiration, optimistic } = more.root\n const state = { data, time, cooldown, expiration, optimistic }\n await this.make(more.core).mutate(() => state)\n }\n}"],"names":[],"mappings":";;;SAOgB,MAAM,CACpB,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;IAE5B,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED,IAAA,YAAA,kBAAA,YAAA;AACE,IAAA,SAAA,YAAA,CACW,GAAkB,EAClB,OAAqC,EACrC,MAA4B,EAAA;AAA5B,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,EAAA,CAAA,EAAA;QAF5B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAe;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;KAClC;IAEL,YAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,IAAU,EAAA;QACP,IAAA,EAAA,GAA2B,IAAI,EAA7B,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAS,CAAA;QAErC,OAAO,IAAI,YAAY,CAAU,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAC7D,CAAA;AAEK,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAf,UAAgB,IAAO,EAAE,IAA6B,EAAA;;;;;;wBACpD,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM,CAAA,CAAA,YAAA,CAAA;AAClB,wBAAA,EAAA,GAA6C,IAAI,CAAC,IAAI,EAApD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,UAAU,gBAAA,CAAc;AACtD,wBAAA,KAAK,GAAG,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,UAAU,EAAA,UAAA,EAAE,UAAU,EAAA,UAAA,EAAE,CAAA;AAC9D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAM,EAAA,OAAA,KAAK,CAAL,EAAK,CAAC,CAAA,CAAA;;AAA9C,wBAAA,EAAA,CAAA,IAAA,EAA8C,CAAA;;;;;AAC/C,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/storages/idb/async.mjs b/dist/mjs/mods/storages/idb/async.js similarity index 99% rename from dist/mjs/mods/storages/idb/async.mjs rename to dist/mjs/mods/storages/idb/async.js index 3255cb55..70be51f7 100644 --- a/dist/mjs/mods/storages/idb/async.mjs +++ b/dist/mjs/mods/storages/idb/async.js @@ -241,4 +241,4 @@ var IDBStorage = /** @class */ (function () { }()); export { IDBStorage, useIDBStorage }; -//# sourceMappingURL=async.mjs.map +//# sourceMappingURL=async.js.map diff --git a/dist/mjs/mods/storages/idb/async.js.map b/dist/mjs/mods/storages/idb/async.js.map new file mode 100644 index 00000000..fc8b7c05 --- /dev/null +++ b/dist/mjs/mods/storages/idb/async.js.map @@ -0,0 +1 @@ +{"version":3,"file":"async.js","sources":["../../../../../src/mods/storages/idb/async.ts"],"sourcesContent":["import { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport function useIDBStorage(name: string) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new IDBStorage(name)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\nexport class IDBStorage implements AsyncStorage {\n readonly async = true\n readonly initialization?: Promise\n readonly keys = new Set()\n readonly onunload?: () => void\n\n _database?: IDBDatabase\n\n constructor(readonly name: string) {\n if (typeof indexedDB === \"undefined\")\n return\n this.initialization = this.load()\n this.onunload = () => this.unload()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n get database() { return this._database }\n\n private async load() {\n if (typeof indexedDB === \"undefined\")\n return\n this._database = await new Promise((ok, err) => {\n const req = indexedDB.open(this.name, 1)\n req.onupgradeneeded = () =>\n req.result.createObjectStore(\"keyval\", {})\n req.onblocked = () => err(\"blocked\")\n req.onsuccess = () => ok(req.result)\n req.onerror = () => err(req.error)\n })\n\n if (typeof Storage === \"undefined\")\n return\n const item = localStorage.getItem(`idb.${this.name}.keys`)\n if (!item) return\n const keys = JSON.parse(item) as string[]\n keys.forEach(key => this.keys.add(key))\n localStorage.removeItem(`idb.${this.name}.keys`)\n await this.collect().catch(console.error)\n }\n\n unmount() {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.onunload !== undefined)\n removeEventListener(\"beforeunload\", this.onunload)\n this.collect().catch(console.error)\n }\n\n private unload() {\n if (typeof Storage === \"undefined\")\n return\n const item = JSON.stringify([...this.keys])\n localStorage.setItem(`idb.${this.name}.keys`, item)\n }\n\n async collect() {\n if (typeof indexedDB === \"undefined\")\n return\n for (const key of this.keys) {\n const state = await this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n async transact(callback: (store: IDBObjectStore) => Promise, mode: IDBTransactionMode) {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.database === undefined)\n await this.initialization\n\n return await new Promise((ok, err) => {\n if (this.database === undefined)\n throw new Error(\"Undefined database\")\n const tx = this.database.transaction(\"keyval\", mode)\n tx.onerror = () => err(tx.error)\n tx.oncomplete = () => ok(result)\n\n let result: T;\n\n callback(tx.objectStore(\"keyval\"))\n .then(x => result = x)\n .then(() => tx.commit())\n .catch(err)\n })\n }\n\n async get(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.get(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok(req.result)\n })\n }, \"readonly\")\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.put(value, key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n\n async delete(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.delete(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/storages/idb/async.mjs.map b/dist/mjs/mods/storages/idb/async.mjs.map deleted file mode 100644 index cca19a07..00000000 --- a/dist/mjs/mods/storages/idb/async.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"async.mjs","sources":["../../../../../src/mods/storages/idb/async.ts"],"sourcesContent":["import { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\nexport function useIDBStorage(name: string) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new IDBStorage(name)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\nexport class IDBStorage implements AsyncStorage {\n readonly async = true\n readonly initialization?: Promise\n readonly keys = new Set()\n readonly onunload?: () => void\n\n _database?: IDBDatabase\n\n constructor(readonly name: string) {\n if (typeof indexedDB === \"undefined\")\n return\n this.initialization = this.load()\n this.onunload = () => this.unload()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n get database() { return this._database }\n\n private async load() {\n if (typeof indexedDB === \"undefined\")\n return\n this._database = await new Promise((ok, err) => {\n const req = indexedDB.open(this.name, 1)\n req.onupgradeneeded = () =>\n req.result.createObjectStore(\"keyval\", {})\n req.onblocked = () => err(\"blocked\")\n req.onsuccess = () => ok(req.result)\n req.onerror = () => err(req.error)\n })\n\n if (typeof Storage === \"undefined\")\n return\n const item = localStorage.getItem(`idb.${this.name}.keys`)\n if (!item) return\n const keys = JSON.parse(item) as string[]\n keys.forEach(key => this.keys.add(key))\n localStorage.removeItem(`idb.${this.name}.keys`)\n await this.collect().catch(console.error)\n }\n\n unmount() {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.onunload !== undefined)\n removeEventListener(\"beforeunload\", this.onunload)\n this.collect().catch(console.error)\n }\n\n private unload() {\n if (typeof Storage === \"undefined\")\n return\n const item = JSON.stringify([...this.keys])\n localStorage.setItem(`idb.${this.name}.keys`, item)\n }\n\n async collect() {\n if (typeof indexedDB === \"undefined\")\n return\n for (const key of this.keys) {\n const state = await this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n async transact(callback: (store: IDBObjectStore) => Promise, mode: IDBTransactionMode) {\n if (typeof indexedDB === \"undefined\")\n return\n if (this.database === undefined)\n await this.initialization\n\n return await new Promise((ok, err) => {\n if (this.database === undefined)\n throw new Error(\"Undefined database\")\n const tx = this.database.transaction(\"keyval\", mode)\n tx.onerror = () => err(tx.error)\n tx.oncomplete = () => ok(result)\n\n let result: T;\n\n callback(tx.objectStore(\"keyval\"))\n .then(x => result = x)\n .then(() => tx.commit())\n .catch(err)\n })\n }\n\n async get(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.get(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok(req.result)\n })\n }, \"readonly\")\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.put(value, key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n\n async delete(key: string, ignore = false) {\n if (typeof indexedDB === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n return await this.transact(async (store) => {\n return await new Promise((ok, err) => {\n const req = store.delete(key)\n req.onerror = () => err(req.error)\n req.onsuccess = () => ok()\n })\n }, \"readwrite\")\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/storages/localStorage/async.mjs b/dist/mjs/mods/storages/localStorage/async.js similarity index 99% rename from dist/mjs/mods/storages/localStorage/async.mjs rename to dist/mjs/mods/storages/localStorage/async.js index 8851873d..0509c104 100644 --- a/dist/mjs/mods/storages/localStorage/async.mjs +++ b/dist/mjs/mods/storages/localStorage/async.js @@ -142,4 +142,4 @@ var AsyncLocalStorage = /** @class */ (function () { }()); export { AsyncLocalStorage, useAsyncLocalStorage }; -//# sourceMappingURL=async.mjs.map +//# sourceMappingURL=async.js.map diff --git a/dist/mjs/mods/storages/localStorage/async.js.map b/dist/mjs/mods/storages/localStorage/async.js.map new file mode 100644 index 00000000..294f2eec --- /dev/null +++ b/dist/mjs/mods/storages/localStorage/async.js.map @@ -0,0 +1 @@ +{"version":3,"file":"async.js","sources":["../../../../../src/mods/storages/localStorage/async.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport function useAsyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new AsyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport class AsyncLocalStorage implements AsyncStorage {\n readonly async = true\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n if (this.onunload)\n removeEventListener(\"beforeunload\", this.onunload);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.getSync(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n getSync(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n async delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/storages/localStorage/async.mjs.map b/dist/mjs/mods/storages/localStorage/async.mjs.map deleted file mode 100644 index 0a60a3e4..00000000 --- a/dist/mjs/mods/storages/localStorage/async.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"async.mjs","sources":["../../../../../src/mods/storages/localStorage/async.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { AsyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport function useAsyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (storage.current === undefined)\n storage.current = new AsyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Asynchronous local storage\n * \n * Use for compatibility with SSR\n * Use for storing large objects\n * \n * Won't display data on first render or hydratation, you can either:\n * - use SyncLocalStorage\n * - use useFallback\n * \n * @see SyncLocalStorage\n * @see useFallback\n */\nexport class AsyncLocalStorage implements AsyncStorage {\n readonly async = true\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n if (this.onunload)\n removeEventListener(\"beforeunload\", this.onunload);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.getSync(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n getSync(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n async set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n async delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/storages/localStorage/sync.mjs b/dist/mjs/mods/storages/localStorage/sync.js similarity index 99% rename from dist/mjs/mods/storages/localStorage/sync.mjs rename to dist/mjs/mods/storages/localStorage/sync.js index d80f58e3..b400c74e 100644 --- a/dist/mjs/mods/storages/localStorage/sync.mjs +++ b/dist/mjs/mods/storages/localStorage/sync.js @@ -108,4 +108,4 @@ var SyncLocalStorage = /** @class */ (function () { }()); export { SyncLocalStorage, useSyncLocalStorage }; -//# sourceMappingURL=sync.mjs.map +//# sourceMappingURL=sync.js.map diff --git a/dist/mjs/mods/storages/localStorage/sync.js.map b/dist/mjs/mods/storages/localStorage/sync.js.map new file mode 100644 index 00000000..bfd8105a --- /dev/null +++ b/dist/mjs/mods/storages/localStorage/sync.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sync.js","sources":["../../../../../src/mods/storages/localStorage/sync.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { SyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport function useSyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (!storage.current)\n storage.current = new SyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport class SyncLocalStorage implements SyncStorage {\n readonly async = false\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n removeEventListener(\"beforeunload\", this.onunload!);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/storages/localStorage/sync.mjs.map b/dist/mjs/mods/storages/localStorage/sync.mjs.map deleted file mode 100644 index 0b191758..00000000 --- a/dist/mjs/mods/storages/localStorage/sync.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sync.mjs","sources":["../../../../../src/mods/storages/localStorage/sync.ts"],"sourcesContent":["import { Serializer } from \"mods/types/serializer.js\"\nimport { State } from \"mods/types/state.js\"\nimport { SyncStorage } from \"mods/types/storage.js\"\nimport { useEffect, useRef } from \"react\"\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport function useSyncLocalStorage(prefix?: string, serializer?: Serializer) {\n const storage = useRef()\n\n if (!storage.current)\n storage.current = new SyncLocalStorage(prefix, serializer)\n\n useEffect(() => () => {\n storage.current?.unmount()\n }, [])\n\n return storage.current\n}\n\n/**\n * Synchronous local storage\n * \n * Do NOT use with SSR, it will create hydratation errors\n * Do NOT use for storing large objects, it will harm performances\n * \n * Will display data on first render\n * \n * @see AsyncLocalStorage\n */\nexport class SyncLocalStorage implements SyncStorage {\n readonly async = false\n readonly keys = new Set()\n readonly onunload?: () => void\n\n constructor(\n readonly prefix = \"xswr:\",\n readonly serializer: Serializer = JSON\n ) {\n if (typeof Storage === \"undefined\")\n return\n this.onunload = () => this.collect()\n addEventListener(\"beforeunload\", this.onunload)\n }\n\n unmount() {\n if (typeof Storage === \"undefined\")\n return\n removeEventListener(\"beforeunload\", this.onunload!);\n (async () => this.collect())().catch(console.error)\n }\n\n collect() {\n if (typeof Storage === \"undefined\")\n return\n for (const key of this.keys) {\n const state = this.get(key, true)\n if (state?.expiration === undefined) continue\n if (state.expiration > Date.now()) continue\n this.delete(key, false)\n }\n }\n\n get(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = localStorage.getItem(this.prefix + key)\n if (item) return this.serializer.parse(item) as T\n }\n\n set(key: string, value: T, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && !this.keys.has(key))\n this.keys.add(key)\n const item = this.serializer.stringify(value)\n localStorage.setItem(this.prefix + key, item)\n }\n\n delete(key: string, ignore = false) {\n if (typeof Storage === \"undefined\")\n return\n if (!ignore && this.keys.has(key))\n this.keys.delete(key)\n localStorage.removeItem(this.prefix + key)\n }\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/mjs/mods/types/storage.mjs b/dist/mjs/mods/types/storage.js similarity index 72% rename from dist/mjs/mods/types/storage.mjs rename to dist/mjs/mods/types/storage.js index 7b4841c2..38a2dd62 100644 --- a/dist/mjs/mods/types/storage.mjs +++ b/dist/mjs/mods/types/storage.js @@ -3,4 +3,4 @@ function isAsyncStorage(storage) { } export { isAsyncStorage }; -//# sourceMappingURL=storage.mjs.map +//# sourceMappingURL=storage.js.map diff --git a/dist/mjs/mods/types/storage.js.map b/dist/mjs/mods/types/storage.js.map new file mode 100644 index 00000000..76dcb72d --- /dev/null +++ b/dist/mjs/mods/types/storage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.js","sources":["../../../../src/mods/types/storage.ts"],"sourcesContent":["export type Storage =\n | SyncStorage\n | AsyncStorage\n\nexport interface SyncStorage {\n async?: false\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): T | undefined\n set(key: string, value: T, ignore?: boolean): void\n delete(key: string, ignore?: boolean): void\n}\n\nexport interface AsyncStorage {\n async: true\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): Promise\n set(key: string, value: T, ignore?: boolean): Promise\n delete(key: string, ignore?: boolean): Promise\n}\n\nexport function isAsyncStorage(storage: Storage): storage is AsyncStorage {\n return Boolean(storage.async)\n}"],"names":[],"mappings":"AA0BM,SAAU,cAAc,CAAC,OAAgB,EAAA;AAC7C,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/B;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/types/storage.mjs.map b/dist/mjs/mods/types/storage.mjs.map deleted file mode 100644 index 8c487995..00000000 --- a/dist/mjs/mods/types/storage.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"storage.mjs","sources":["../../../../src/mods/types/storage.ts"],"sourcesContent":["export type Storage =\n | SyncStorage\n | AsyncStorage\n\nexport interface SyncStorage {\n async?: false\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): T | undefined\n set(key: string, value: T, ignore?: boolean): void\n delete(key: string, ignore?: boolean): void\n}\n\nexport interface AsyncStorage {\n async: true\n\n unmount(): void\n collect(): void\n\n get(key: string, ignore?: boolean): Promise\n set(key: string, value: T, ignore?: boolean): Promise\n delete(key: string, ignore?: boolean): Promise\n}\n\nexport function isAsyncStorage(storage: Storage): storage is AsyncStorage {\n return Boolean(storage.async)\n}"],"names":[],"mappings":"AA0BM,SAAU,cAAc,CAAC,OAAgB,EAAA;AAC7C,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/B;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/utils/defaults.mjs b/dist/mjs/mods/utils/defaults.js similarity index 76% rename from dist/mjs/mods/utils/defaults.mjs rename to dist/mjs/mods/utils/defaults.js index 4badb77d..a79bbc71 100644 --- a/dist/mjs/mods/utils/defaults.mjs +++ b/dist/mjs/mods/utils/defaults.js @@ -1,4 +1,4 @@ -import { jsonEquals } from './equals.mjs'; +import { jsonEquals } from './equals.js'; var DEFAULT_EQUALS = jsonEquals; var DEFAULT_SERIALIZER = JSON; @@ -7,4 +7,4 @@ var DEFAULT_EXPIRATION = -1; var DEFAULT_TIMEOUT = 5 * 1000; export { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_SERIALIZER, DEFAULT_TIMEOUT }; -//# sourceMappingURL=defaults.mjs.map +//# sourceMappingURL=defaults.js.map diff --git a/dist/mjs/mods/utils/defaults.js.map b/dist/mjs/mods/utils/defaults.js.map new file mode 100644 index 00000000..15469d57 --- /dev/null +++ b/dist/mjs/mods/utils/defaults.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaults.js","sources":["../../../../src/mods/utils/defaults.ts"],"sourcesContent":["import { jsonEquals } from \"./equals.js\"\n\nexport const DEFAULT_EQUALS = jsonEquals\nexport const DEFAULT_SERIALIZER = JSON\n\nexport const DEFAULT_COOLDOWN = 1 * 1000\nexport const DEFAULT_EXPIRATION = -1\nexport const DEFAULT_TIMEOUT = 5 * 1000\n"],"names":[],"mappings":";;AAEO,IAAM,cAAc,GAAG,WAAU;AACjC,IAAM,kBAAkB,GAAG,KAAI;AAEzB,IAAA,gBAAgB,GAAG,CAAC,GAAG,KAAI;AAC3B,IAAA,kBAAkB,GAAG,CAAC,EAAC;AACvB,IAAA,eAAe,GAAG,CAAC,GAAG;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/utils/defaults.mjs.map b/dist/mjs/mods/utils/defaults.mjs.map deleted file mode 100644 index d5e82e50..00000000 --- a/dist/mjs/mods/utils/defaults.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"defaults.mjs","sources":["../../../../src/mods/utils/defaults.ts"],"sourcesContent":["import { jsonEquals } from \"./equals.js\"\n\nexport const DEFAULT_EQUALS = jsonEquals\nexport const DEFAULT_SERIALIZER = JSON\n\nexport const DEFAULT_COOLDOWN = 1 * 1000\nexport const DEFAULT_EXPIRATION = -1\nexport const DEFAULT_TIMEOUT = 5 * 1000\n"],"names":[],"mappings":";;AAEO,IAAM,cAAc,GAAG,WAAU;AACjC,IAAM,kBAAkB,GAAG,KAAI;AAEzB,IAAA,gBAAgB,GAAG,CAAC,GAAG,KAAI;AAC3B,IAAA,kBAAkB,GAAG,CAAC,EAAC;AACvB,IAAA,eAAe,GAAG,CAAC,GAAG;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/utils/equals.mjs b/dist/mjs/mods/utils/equals.js similarity index 96% rename from dist/mjs/mods/utils/equals.mjs rename to dist/mjs/mods/utils/equals.js index 9aa52c00..900e68bb 100644 --- a/dist/mjs/mods/utils/equals.mjs +++ b/dist/mjs/mods/utils/equals.js @@ -38,4 +38,4 @@ function shallowEquals(a, b) { } export { jsonEquals, refEquals, shallowEquals }; -//# sourceMappingURL=equals.mjs.map +//# sourceMappingURL=equals.js.map diff --git a/dist/mjs/mods/utils/equals.js.map b/dist/mjs/mods/utils/equals.js.map new file mode 100644 index 00000000..8436f8a6 --- /dev/null +++ b/dist/mjs/mods/utils/equals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"equals.js","sources":["../../../../src/mods/utils/equals.ts"],"sourcesContent":["\nexport type Equals =\n (a: unknown, b: unknown) => boolean\n\nexport function refEquals(a: unknown, b: unknown) {\n return a === b\n}\n\nexport function jsonEquals(a: unknown, b: unknown) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n return JSON.stringify(a) === JSON.stringify(b)\n}\n\nexport function shallowEquals(a?: any, b?: any) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n const ka = Object.keys(a)\n const kb = Object.keys(b)\n\n if (ka.length !== kb.length)\n return false\n for (const key of ka)\n if (a[key] !== b[key])\n return false\n return true\n}"],"names":[],"mappings":";;AAIgB,SAAA,SAAS,CAAC,CAAU,EAAE,CAAU,EAAA;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC;AAEe,SAAA,UAAU,CAAC,CAAU,EAAE,CAAU,EAAA;IAC/C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;AACd,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAEe,SAAA,aAAa,CAAC,CAAO,EAAE,CAAO,EAAA;;IAC5C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;IACd,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEzB,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AACzB,QAAA,OAAO,KAAK,CAAA;;AACd,QAAA,KAAkB,IAAA,IAAA,GAAA,QAAA,CAAA,EAAE,CAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA;AAAf,YAAA,IAAM,GAAG,GAAA,MAAA,CAAA,KAAA,CAAA;YACZ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACnB,gBAAA,OAAO,KAAK,CAAA;AAAA,SAAA;;;;;;;;;AAChB,IAAA,OAAO,IAAI,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/utils/equals.mjs.map b/dist/mjs/mods/utils/equals.mjs.map deleted file mode 100644 index 47286b57..00000000 --- a/dist/mjs/mods/utils/equals.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"equals.mjs","sources":["../../../../src/mods/utils/equals.ts"],"sourcesContent":["\nexport type Equals =\n (a: unknown, b: unknown) => boolean\n\nexport function refEquals(a: unknown, b: unknown) {\n return a === b\n}\n\nexport function jsonEquals(a: unknown, b: unknown) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n return JSON.stringify(a) === JSON.stringify(b)\n}\n\nexport function shallowEquals(a?: any, b?: any) {\n if (a === b)\n return true\n if (typeof a !== typeof b)\n return false\n const ka = Object.keys(a)\n const kb = Object.keys(b)\n\n if (ka.length !== kb.length)\n return false\n for (const key of ka)\n if (a[key] !== b[key])\n return false\n return true\n}"],"names":[],"mappings":";;AAIgB,SAAA,SAAS,CAAC,CAAU,EAAE,CAAU,EAAA;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC;AAEe,SAAA,UAAU,CAAC,CAAU,EAAE,CAAU,EAAA;IAC/C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;AACd,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAEe,SAAA,aAAa,CAAC,CAAO,EAAE,CAAO,EAAA;;IAC5C,IAAI,CAAC,KAAK,CAAC;AACT,QAAA,OAAO,IAAI,CAAA;AACb,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AACvB,QAAA,OAAO,KAAK,CAAA;IACd,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEzB,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AACzB,QAAA,OAAO,KAAK,CAAA;;AACd,QAAA,KAAkB,IAAA,IAAA,GAAA,QAAA,CAAA,EAAE,CAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,EAAA;AAAf,YAAA,IAAM,GAAG,GAAA,MAAA,CAAA,KAAA,CAAA;YACZ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACnB,gBAAA,OAAO,KAAK,CAAA;AAAA,SAAA;;;;;;;;;AAChB,IAAA,OAAO,IAAI,CAAA;AACb;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/utils/lock.mjs b/dist/mjs/mods/utils/lock.js similarity index 96% rename from dist/mjs/mods/utils/lock.mjs rename to dist/mjs/mods/utils/lock.js index f67d8d0f..c5994f0a 100644 --- a/dist/mjs/mods/utils/lock.mjs +++ b/dist/mjs/mods/utils/lock.js @@ -27,4 +27,4 @@ var Lock = /** @class */ (function () { }()); export { Lock }; -//# sourceMappingURL=lock.mjs.map +//# sourceMappingURL=lock.js.map diff --git a/dist/mjs/mods/utils/lock.js.map b/dist/mjs/mods/utils/lock.js.map new file mode 100644 index 00000000..e2a3374b --- /dev/null +++ b/dist/mjs/mods/utils/lock.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lock.js","sources":["../../../../src/mods/utils/lock.ts"],"sourcesContent":["export class Lock {\n private mutex?: Promise\n\n async lock(callback: () => Promise) {\n if (this.mutex) await this.mutex\n const promise = callback()\n this.mutex = promise\n return await promise\n }\n}"],"names":[],"mappings":";;AAAA,IAAA,IAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,IAAA,GAAA;KASC;IANO,IAAI,CAAA,SAAA,CAAA,IAAA,GAAV,UAAc,QAA0B,EAAA;;;;;;6BAClC,IAAI,CAAC,KAAK,EAAV,OAAU,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAAE,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;AAAhB,wBAAA,EAAA,CAAA,IAAA,EAAgB,CAAA;;;wBAC1B,OAAO,GAAG,QAAQ,EAAE,CAAA;AAC1B,wBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AACb,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAA,CAAA;AAApB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAa,CAAA,CAAA;;;;AACrB,KAAA,CAAA;IACH,OAAC,IAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/mjs/mods/utils/lock.mjs.map b/dist/mjs/mods/utils/lock.mjs.map deleted file mode 100644 index 6242cfd3..00000000 --- a/dist/mjs/mods/utils/lock.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lock.mjs","sources":["../../../../src/mods/utils/lock.ts"],"sourcesContent":["export class Lock {\n private mutex?: Promise\n\n async lock(callback: () => Promise) {\n if (this.mutex) await this.mutex\n const promise = callback()\n this.mutex = promise\n return await promise\n }\n}"],"names":[],"mappings":";;AAAA,IAAA,IAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,IAAA,GAAA;KASC;IANO,IAAI,CAAA,SAAA,CAAA,IAAA,GAAV,UAAc,QAA0B,EAAA;;;;;;6BAClC,IAAI,CAAC,KAAK,EAAV,OAAU,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAAE,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;AAAhB,wBAAA,EAAA,CAAA,IAAA,EAAgB,CAAA;;;wBAC1B,OAAO,GAAG,QAAQ,EAAE,CAAA;AAC1B,wBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AACb,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAA,CAAA;AAApB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAa,CAAA,CAAA;;;;AACrB,KAAA,CAAA;IACH,OAAC,IAAA,CAAA;AAAD,CAAC,EAAA;;;;"} \ No newline at end of file diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts index a2103bd8..6fcb498c 100644 --- a/dist/types/index.d.ts +++ b/dist/types/index.d.ts @@ -1,2 +1,43 @@ import * as index from './mods/index.js'; export { index as XSWR }; +export { Core, Listener } from './mods/core.js'; +export { AbortError, isAbortError } from './mods/errors/abort.js'; +export { CoreContext, CoreProvider, useCore, useCoreProvider } from './mods/react/contexts/core.js'; +export { useDebug } from './mods/react/hooks/blocks/use-debug.js'; +export { useError } from './mods/react/hooks/blocks/use-error.js'; +export { useFallback } from './mods/react/hooks/blocks/use-fallback.js'; +export { useFetch } from './mods/react/hooks/blocks/use-fetch.js'; +export { useInterval } from './mods/react/hooks/blocks/use-interval.js'; +export { useMount } from './mods/react/hooks/blocks/use-mount.js'; +export { useOnce } from './mods/react/hooks/blocks/use-once.js'; +export { useOnline } from './mods/react/hooks/blocks/use-online.js'; +export { RetryOptions, useRetry } from './mods/react/hooks/blocks/use-retry.js'; +export { useVisible } from './mods/react/hooks/blocks/use-visible.js'; +export { useQuery } from './mods/react/hooks/queries/router.js'; +export { ScrollQuery, useScrollQuery } from './mods/react/hooks/queries/scroll.js'; +export { SingleQuery, useSingleQuery } from './mods/react/hooks/queries/single.js'; +export { Maker, useXSWR } from './mods/react/hooks/xswr.js'; +export { Query } from './mods/react/types/query.js'; +export { ScrollHelper } from './mods/scroll/helper.js'; +export { ScrollInstance, getScrollStorageKey } from './mods/scroll/instance.js'; +export { ScrollSchema, getScrollSchema } from './mods/scroll/schema.js'; +export { SingleHelper } from './mods/single/helper.js'; +export { SingleInstance, getSingleStorageKey } from './mods/single/instance.js'; +export { SingleSchema, getSingleSchema } from './mods/single/schema.js'; +export { IDBStorage, useIDBStorage } from './mods/storages/idb/async.js'; +export { AsyncLocalStorage, useAsyncLocalStorage } from './mods/storages/localStorage/async.js'; +export { SyncLocalStorage, useSyncLocalStorage } from './mods/storages/localStorage/sync.js'; +export { Fetcher, FetcherMore } from './mods/types/fetcher.js'; +export { Instance } from './mods/types/instance.js'; +export { Mutator } from './mods/types/mutator.js'; +export { Normalizer, NormalizerMore } from './mods/types/normalizer.js'; +export { Params } from './mods/types/params.js'; +export { Result } from './mods/types/result.js'; +export { Schema } from './mods/types/schema.js'; +export { Scroller } from './mods/types/scroller.js'; +export { Serializer } from './mods/types/serializer.js'; +export { State } from './mods/types/state.js'; +export { AsyncStorage, Storage, SyncStorage, isAsyncStorage } from './mods/types/storage.js'; +export { Updater, UpdaterMore, UpdaterParams } from './mods/types/updater.js'; +export { DEFAULT_COOLDOWN, DEFAULT_EQUALS, DEFAULT_EXPIRATION, DEFAULT_SERIALIZER, DEFAULT_TIMEOUT } from './mods/utils/defaults.js'; +export { Equals, jsonEquals, refEquals, shallowEquals } from './mods/utils/equals.js'; diff --git a/dist/types/mods/index.d.ts b/dist/types/mods/index.d.ts index 3065b1c2..8eddfd24 100644 --- a/dist/types/mods/index.d.ts +++ b/dist/types/mods/index.d.ts @@ -11,24 +11,24 @@ export { useOnce } from './react/hooks/blocks/use-once.js'; export { useOnline } from './react/hooks/blocks/use-online.js'; export { RetryOptions, useRetry } from './react/hooks/blocks/use-retry.js'; export { useVisible } from './react/hooks/blocks/use-visible.js'; -export { use } from './react/hooks/handles/router.js'; -export { ScrollHandle, useScroll } from './react/hooks/handles/scroll.js'; -export { SingleHandle, useSingle } from './react/hooks/handles/single.js'; +export { useQuery } from './react/hooks/queries/router.js'; +export { ScrollQuery, useScrollQuery } from './react/hooks/queries/scroll.js'; +export { SingleQuery, useSingleQuery } from './react/hooks/queries/single.js'; export { Maker, useXSWR } from './react/hooks/xswr.js'; -export { Handle } from './react/types/handle.js'; +export { Query } from './react/types/query.js'; export { ScrollHelper } from './scroll/helper.js'; -export { ScrollObject, getScrollStorageKey } from './scroll/object.js'; -export { ScrollSchema, scroll } from './scroll/schema.js'; +export { ScrollInstance, getScrollStorageKey } from './scroll/instance.js'; +export { ScrollSchema, getScrollSchema } from './scroll/schema.js'; export { SingleHelper } from './single/helper.js'; -export { SingleObject, getSingleStorageKey } from './single/object.js'; -export { SingleSchema, single } from './single/schema.js'; +export { SingleInstance, getSingleStorageKey } from './single/instance.js'; +export { SingleSchema, getSingleSchema } from './single/schema.js'; export { IDBStorage, useIDBStorage } from './storages/idb/async.js'; export { AsyncLocalStorage, useAsyncLocalStorage } from './storages/localStorage/async.js'; export { SyncLocalStorage, useSyncLocalStorage } from './storages/localStorage/sync.js'; export { Fetcher, FetcherMore } from './types/fetcher.js'; +export { Instance } from './types/instance.js'; export { Mutator } from './types/mutator.js'; export { Normalizer, NormalizerMore } from './types/normalizer.js'; -export { Object } from './types/object.js'; export { Params } from './types/params.js'; export { Result } from './types/result.js'; export { Schema } from './types/schema.js'; diff --git a/dist/types/mods/react/hooks/blocks/use-debug.d.ts b/dist/types/mods/react/hooks/blocks/use-debug.d.ts index d3b63f2f..fb940c90 100644 --- a/dist/types/mods/react/hooks/blocks/use-debug.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-debug.d.ts @@ -1,9 +1,9 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** - * Show handle in console when it changes - * @param handle + * Show query in console when it changes + * @param query */ -declare function useDebug(handle: Handle, label: string): void; +declare function useDebug(query: Query, label: string): void; export { useDebug }; diff --git a/dist/types/mods/react/hooks/blocks/use-error.d.ts b/dist/types/mods/react/hooks/blocks/use-error.d.ts index cbf445bc..54dde4c6 100644 --- a/dist/types/mods/react/hooks/blocks/use-error.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-error.d.ts @@ -1,10 +1,10 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Call a function on error - * @param handle + * @param query * @param callback */ -declare function useError(handle: Handle, callback: (e: E) => void): void; +declare function useError(query: Query, callback: (e: E) => void): void; export { useError }; diff --git a/dist/types/mods/react/hooks/blocks/use-fallback.d.ts b/dist/types/mods/react/hooks/blocks/use-fallback.d.ts index ef820213..f5f47cc8 100644 --- a/dist/types/mods/react/hooks/blocks/use-fallback.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-fallback.d.ts @@ -1,13 +1,13 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; import { State } from '../../../types/state.js'; /** * Fallback to given data/error if there is no data/error * @example You got some data/error using SSR/ISR and want to display it on first render * @example You still want to display something even if the fetcher returned nothing - * @param handle + * @param query * @param state */ -declare function useFallback(handle: Handle, state?: State): void; +declare function useFallback(query: Query, state?: State): void; export { useFallback }; diff --git a/dist/types/mods/react/hooks/blocks/use-fetch.d.ts b/dist/types/mods/react/hooks/blocks/use-fetch.d.ts index eb38b5df..36aa2295 100644 --- a/dist/types/mods/react/hooks/blocks/use-fetch.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-fetch.d.ts @@ -1,11 +1,11 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Do a request on mount and url change * @see useMount for doing a request on mount only * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -declare function useFetch(handle: Handle): void; +declare function useFetch(query: Query): void; export { useFetch }; diff --git a/dist/types/mods/react/hooks/blocks/use-interval.d.ts b/dist/types/mods/react/hooks/blocks/use-interval.d.ts index c69cb41a..7a513b5f 100644 --- a/dist/types/mods/react/hooks/blocks/use-interval.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-interval.d.ts @@ -1,11 +1,11 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Do a request on interval * @see useRetry for error retry - * @param handle - * @param options + * @param query + * @param interval */ -declare function useInterval(handle: Handle, interval: number): void; +declare function useInterval(query: Query, interval: number): void; export { useInterval }; diff --git a/dist/types/mods/react/hooks/blocks/use-mount.d.ts b/dist/types/mods/react/hooks/blocks/use-mount.d.ts index f2204cc3..21e30607 100644 --- a/dist/types/mods/react/hooks/blocks/use-mount.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-mount.d.ts @@ -1,11 +1,11 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Do a request on mount only * @see useFetch for doing a request on url change * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -declare function useMount(handle: Handle): void; +declare function useMount(query: Query): void; export { useMount }; diff --git a/dist/types/mods/react/hooks/blocks/use-once.d.ts b/dist/types/mods/react/hooks/blocks/use-once.d.ts index c6ec0b06..e2ef6eb6 100644 --- a/dist/types/mods/react/hooks/blocks/use-once.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-once.d.ts @@ -1,11 +1,11 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Do a request on mount and url change only if there is no data yet * @warning Will still try to fetch is there is an error - * @param handle + * @param query * @example You want to get some data once and share it in multiple components */ -declare function useOnce(handle: Handle): void; +declare function useOnce(query: Query): void; export { useOnce }; diff --git a/dist/types/mods/react/hooks/blocks/use-online.d.ts b/dist/types/mods/react/hooks/blocks/use-online.d.ts index 577b2918..709e9a8b 100644 --- a/dist/types/mods/react/hooks/blocks/use-online.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-online.d.ts @@ -1,9 +1,9 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Do a request when the browser is online - * @param handle + * @param query */ -declare function useOnline(handle: Handle): void; +declare function useOnline(query: Query): void; export { useOnline }; diff --git a/dist/types/mods/react/hooks/blocks/use-retry.d.ts b/dist/types/mods/react/hooks/blocks/use-retry.d.ts index c999dd2c..c56f38c7 100644 --- a/dist/types/mods/react/hooks/blocks/use-retry.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-retry.d.ts @@ -1,4 +1,4 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; interface RetryOptions { init?: number; @@ -8,7 +8,7 @@ interface RetryOptions { /** * Retry request on error using exponential backoff * @see useInterval for interval based requests - * @param handle + * @param query * @param options * @param options.init Initial timeout to be multiplied (in milliseconds) * @param options.base Exponent base (2 means the next timeout will be 2 times longer) @@ -16,6 +16,6 @@ interface RetryOptions { * @see https://en.wikipedia.org/wiki/Exponential_backoff * @see https://en.wikipedia.org/wiki/Geometric_progression */ -declare function useRetry(handle: Handle, options?: RetryOptions): void; +declare function useRetry(query: Query, options?: RetryOptions): void; export { RetryOptions, useRetry }; diff --git a/dist/types/mods/react/hooks/blocks/use-visible.d.ts b/dist/types/mods/react/hooks/blocks/use-visible.d.ts index 403e3d7b..b85bb463 100644 --- a/dist/types/mods/react/hooks/blocks/use-visible.d.ts +++ b/dist/types/mods/react/hooks/blocks/use-visible.d.ts @@ -1,9 +1,9 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; /** * Do a request when the tab is visible - * @param handle + * @param query */ -declare function useVisible(handle: Handle): void; +declare function useVisible(query: Query): void; export { useVisible }; diff --git a/dist/types/mods/react/hooks/handles/router.d.ts b/dist/types/mods/react/hooks/handles/router.d.ts deleted file mode 100644 index 19761f16..00000000 --- a/dist/types/mods/react/hooks/handles/router.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ScrollSchema } from '../../../scroll/schema.js'; -import { SingleSchema } from '../../../single/schema.js'; -import { DependencyList } from 'react'; -import { ScrollHandle } from './scroll.js'; -import { SingleHandle } from './single.js'; - -declare function use(factory: (...deps: L) => SingleSchema, deps: L): SingleHandle; -declare function use(factory: (...deps: L) => ScrollSchema, deps: L): ScrollHandle; - -export { use }; diff --git a/dist/types/mods/react/hooks/queries/router.d.ts b/dist/types/mods/react/hooks/queries/router.d.ts new file mode 100644 index 00000000..23c19ed8 --- /dev/null +++ b/dist/types/mods/react/hooks/queries/router.d.ts @@ -0,0 +1,10 @@ +import { ScrollSchema } from '../../../scroll/schema.js'; +import { SingleSchema } from '../../../single/schema.js'; +import { DependencyList } from 'react'; +import { ScrollQuery } from './scroll.js'; +import { SingleQuery } from './single.js'; + +declare function useQuery(factory: (...deps: L) => SingleSchema, deps: L): SingleQuery; +declare function useQuery(factory: (...deps: L) => ScrollSchema, deps: L): ScrollQuery; + +export { useQuery }; diff --git a/dist/types/mods/react/hooks/handles/scroll.d.ts b/dist/types/mods/react/hooks/queries/scroll.d.ts similarity index 51% rename from dist/types/mods/react/hooks/handles/scroll.d.ts rename to dist/types/mods/react/hooks/queries/scroll.d.ts index 0c6b335b..9c43e06c 100644 --- a/dist/types/mods/react/hooks/handles/scroll.d.ts +++ b/dist/types/mods/react/hooks/queries/scroll.d.ts @@ -1,25 +1,25 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; import { Fetcher } from '../../../types/fetcher.js'; import { Params } from '../../../types/params.js'; import { Scroller } from '../../../types/scroller.js'; import { State } from '../../../types/state.js'; /** - * Handle for a scrolling resource + * Query for a scrolling resource */ -interface ScrollHandle extends Handle { +interface ScrollQuery extends Query { /** * Fetch the next page */ scroll(): Promise | undefined>; } /** - * Scrolling resource handle factory + * Scrolling resource query factory * @param scroller Key scroller (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Scrolling handle + * @returns Scrolling query */ -declare function useScroll(scroller: Scroller, fetcher: Fetcher | undefined, params?: Params): ScrollHandle; +declare function useScrollQuery(scroller: Scroller, fetcher: Fetcher | undefined, params?: Params): ScrollQuery; -export { ScrollHandle, useScroll }; +export { ScrollQuery, useScrollQuery }; diff --git a/dist/types/mods/react/hooks/handles/single.d.ts b/dist/types/mods/react/hooks/queries/single.d.ts similarity index 59% rename from dist/types/mods/react/hooks/handles/single.d.ts rename to dist/types/mods/react/hooks/queries/single.d.ts index 173038be..3963345b 100644 --- a/dist/types/mods/react/hooks/handles/single.d.ts +++ b/dist/types/mods/react/hooks/queries/single.d.ts @@ -1,13 +1,13 @@ -import { Handle } from '../../types/handle.js'; +import { Query } from '../../types/query.js'; import { Fetcher } from '../../../types/fetcher.js'; import { Params } from '../../../types/params.js'; import { State } from '../../../types/state.js'; import { Updater, UpdaterParams } from '../../../types/updater.js'; /** - * Handle for a single resource + * Query for a single resource */ -interface SingleHandle extends Handle { +interface SingleQuery extends Query { /** * Optimistic update * @param updater Mutation function @@ -16,12 +16,12 @@ interface SingleHandle extends Handle { update(updater: Updater, uparams?: UpdaterParams, aborter?: AbortController): Promise | undefined>; } /** - * Single resource handle factory + * Single resource query factory * @param key Key (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Single handle + * @returns Single query */ -declare function useSingle(key: K | undefined, fetcher: Fetcher | undefined, params?: Params): SingleHandle; +declare function useSingleQuery(key: K | undefined, fetcher: Fetcher | undefined, params?: Params): SingleQuery; -export { SingleHandle, useSingle }; +export { SingleQuery, useSingleQuery }; diff --git a/dist/types/mods/react/hooks/xswr.d.ts b/dist/types/mods/react/hooks/xswr.d.ts index 0f433be3..2116aa64 100644 --- a/dist/types/mods/react/hooks/xswr.d.ts +++ b/dist/types/mods/react/hooks/xswr.d.ts @@ -1,8 +1,8 @@ import { Core } from '../../core.js'; -import { Object as Object$1 } from '../../types/object.js'; +import { Instance } from '../../types/instance.js'; import { Schema } from '../../types/schema.js'; -declare type Maker = = Object$1>(schema: Schema) => O; +declare type Maker = = Instance>(schema: Schema) => O; declare function useXSWR(): { core: Core; make: Maker; diff --git a/dist/types/mods/react/types/handle.d.ts b/dist/types/mods/react/types/query.d.ts similarity index 97% rename from dist/types/mods/react/types/handle.d.ts rename to dist/types/mods/react/types/query.d.ts index f2094722..df1b5549 100644 --- a/dist/types/mods/react/types/handle.d.ts +++ b/dist/types/mods/react/types/query.d.ts @@ -1,7 +1,7 @@ import { Mutator } from '../../types/mutator.js'; import { State } from '../../types/state.js'; -interface Handle { +interface Query { /** * Arbitrary key, must be serializable */ @@ -77,4 +77,4 @@ interface Handle { suspend(): Promise; } -export { Handle }; +export { Query }; diff --git a/dist/types/mods/scroll/object.d.ts b/dist/types/mods/scroll/instance.d.ts similarity index 85% rename from dist/types/mods/scroll/object.d.ts rename to dist/types/mods/scroll/instance.d.ts index 513c1af4..26cc2b4c 100644 --- a/dist/types/mods/scroll/object.d.ts +++ b/dist/types/mods/scroll/instance.d.ts @@ -1,16 +1,16 @@ import { Core } from '../core.js'; import { Fetcher } from '../types/fetcher.js'; +import { Instance } from '../types/instance.js'; import { Mutator } from '../types/mutator.js'; -import { Object as Object$1 } from '../types/object.js'; import { Params } from '../types/params.js'; import { Scroller } from '../types/scroller.js'; import { State } from '../types/state.js'; declare function getScrollStorageKey(key: K, params: Params): string | undefined; /** - * Non-React version of ScrollHandle + * Non-React version of ScrollQuery */ -declare class ScrollObject implements Object$1 { +declare class ScrollInstance implements Instance { readonly core: Core; readonly scroller: Scroller; readonly fetcher: Fetcher | undefined; @@ -34,4 +34,4 @@ declare class ScrollObject implements Object$1; } -export { ScrollObject, getScrollStorageKey }; +export { ScrollInstance, getScrollStorageKey }; diff --git a/dist/types/mods/scroll/schema.d.ts b/dist/types/mods/scroll/schema.d.ts index 5546d347..21df5ac1 100644 --- a/dist/types/mods/scroll/schema.d.ts +++ b/dist/types/mods/scroll/schema.d.ts @@ -4,16 +4,16 @@ import { NormalizerMore } from '../types/normalizer.js'; import { Params } from '../types/params.js'; import { Schema } from '../types/schema.js'; import { Scroller } from '../types/scroller.js'; -import { ScrollObject } from './object.js'; +import { ScrollInstance } from './instance.js'; -declare function scroll(scroller: Scroller, fetcher: Fetcher | undefined, params?: Params): ScrollSchema; -declare class ScrollSchema implements Schema> { +declare function getScrollSchema(scroller: Scroller, fetcher: Fetcher | undefined, params?: Params): ScrollSchema; +declare class ScrollSchema implements Schema> { readonly scroller: Scroller; readonly fetcher: Fetcher | undefined; readonly params: Params; constructor(scroller: Scroller, fetcher: Fetcher | undefined, params?: Params); - make(core: Core): ScrollObject; + make(core: Core): ScrollInstance; normalize(data: D[], more: NormalizerMore): Promise; } -export { ScrollSchema, scroll }; +export { ScrollSchema, getScrollSchema }; diff --git a/dist/types/mods/single/object.d.ts b/dist/types/mods/single/instance.d.ts similarity index 85% rename from dist/types/mods/single/object.d.ts rename to dist/types/mods/single/instance.d.ts index 9f95439b..cf7bc1f5 100644 --- a/dist/types/mods/single/object.d.ts +++ b/dist/types/mods/single/instance.d.ts @@ -1,16 +1,16 @@ import { Core } from '../core.js'; import { Fetcher } from '../types/fetcher.js'; +import { Instance } from '../types/instance.js'; import { Mutator } from '../types/mutator.js'; -import { Object as Object$1 } from '../types/object.js'; import { Params } from '../types/params.js'; import { State } from '../types/state.js'; import { Updater, UpdaterParams } from '../types/updater.js'; declare function getSingleStorageKey(key: K, params: Params): string | undefined; /** - * Non-React version of SingleHandle + * Non-React version of SingleQuery */ -declare class SingleObject implements Object$1 { +declare class SingleInstance implements Instance { readonly core: Core; readonly key: K | undefined; readonly fetcher: Fetcher | undefined; @@ -33,4 +33,4 @@ declare class SingleObject implements Object$1; } -export { SingleObject, getSingleStorageKey }; +export { SingleInstance, getSingleStorageKey }; diff --git a/dist/types/mods/single/schema.d.ts b/dist/types/mods/single/schema.d.ts index c2bea0e4..fefdfc21 100644 --- a/dist/types/mods/single/schema.d.ts +++ b/dist/types/mods/single/schema.d.ts @@ -3,16 +3,16 @@ import { Fetcher } from '../types/fetcher.js'; import { NormalizerMore } from '../types/normalizer.js'; import { Params } from '../types/params.js'; import { Schema } from '../types/schema.js'; -import { SingleObject } from './object.js'; +import { SingleInstance } from './instance.js'; -declare function single(key: K | undefined, fetcher: Fetcher | undefined, params?: Params): SingleSchema; -declare class SingleSchema implements Schema> { +declare function getSingleSchema(key: K | undefined, fetcher: Fetcher | undefined, params?: Params): SingleSchema; +declare class SingleSchema implements Schema> { readonly key: K | undefined; readonly fetcher: Fetcher | undefined; readonly params: Params; constructor(key: K | undefined, fetcher: Fetcher | undefined, params?: Params); - make(core: Core): SingleObject; + make(core: Core): SingleInstance; normalize(data: D, more: NormalizerMore): Promise; } -export { SingleSchema, single }; +export { SingleSchema, getSingleSchema }; diff --git a/dist/types/mods/types/object.d.ts b/dist/types/mods/types/instance.d.ts similarity index 66% rename from dist/types/mods/types/object.d.ts rename to dist/types/mods/types/instance.d.ts index e8c2168a..d683936b 100644 --- a/dist/types/mods/types/object.d.ts +++ b/dist/types/mods/types/instance.d.ts @@ -1,8 +1,8 @@ import { Mutator } from './mutator.js'; import { State } from './state.js'; -interface Object$1 { +interface Instance { mutate(mutator: Mutator): Promise | undefined>; } -export { Object$1 as Object }; +export { Instance }; diff --git a/dist/types/mods/types/schema.d.ts b/dist/types/mods/types/schema.d.ts index 53c32bde..657fbd11 100644 --- a/dist/types/mods/types/schema.d.ts +++ b/dist/types/mods/types/schema.d.ts @@ -1,7 +1,7 @@ import { Core } from '../core.js'; -import { Object as Object$1 } from './object.js'; +import { Instance } from './instance.js'; -interface Schema = Object$1> { +interface Schema = Instance> { make(core: Core): O; } diff --git a/package.json b/package.json index c7860965..c00b22f6 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { "type": "module", "name": "@hazae41/xswr", - "version": "1.0.96", + "version": "1.1.1", "author": "hazae41", "license": "MIT", - "description": "The God tier React data (re)fetching library", + "description": "Yet another React data (re)fetching library", "homepage": "https://github.com/hazae41/xswr", "types": "./dist/types/index.d.ts", - "module": "./dist/mjs/index.mjs", - "main": "./dist/cjs/index.cjs", + "module": "./dist/mjs/index.js", + "main": "./dist/cjs/index.js", "sideEffects": false, "scripts": { "build": "rimraf dist && rollup -c", @@ -35,8 +35,8 @@ "exports": { ".": { "types": "./dist/types/index.d.ts", - "import": "./dist/mjs/index.mjs", - "require": "./dist/cjs/index.cjs" + "import": "./dist/mjs/index.js", + "require": "./dist/cjs/index.js" } } } diff --git a/rollup.config.js b/rollup.config.js index b1f3d7ab..976437b4 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -12,13 +12,13 @@ export const config = [ format: "esm", preserveModules: true, sourcemap: true, - entryFileNames: "[name].mjs" + entryFileNames: "[name].js" }, { dir: "./dist/cjs", format: "cjs", preserveModules: true, sourcemap: true, - entryFileNames: "[name].cjs", + entryFileNames: "[name].js", }], plugins: [resolve(), ts({ typescript }), commonjs()], external: ["react", "tslib"] diff --git a/src/index.ts b/src/index.ts index 3317d4b6..064cb745 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,2 @@ +export * from "./mods/index.js"; export * as XSWR from "./mods/index.js"; diff --git a/src/libs/generator.ts b/src/libs/generator.ts deleted file mode 100644 index 31769169..00000000 --- a/src/libs/generator.ts +++ /dev/null @@ -1,9 +0,0 @@ -export async function nextOf(generator: AsyncGenerator) { - const next = await generator.next() - if (!next.done) return next.value -} - -export async function returnOf(generator: AsyncGenerator) { - const next = await generator.next() - if (next.done) return next.value -} \ No newline at end of file diff --git a/src/mods/react/hooks/blocks/use-debug.ts b/src/mods/react/hooks/blocks/use-debug.ts index ff35bbe4..2abb949f 100644 --- a/src/mods/react/hooks/blocks/use-debug.ts +++ b/src/mods/react/hooks/blocks/use-debug.ts @@ -1,17 +1,14 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** - * Show handle in console when it changes - * @param handle + * Show query in console when it changes + * @param query */ -export function useDebug( - handle: Handle, - label: string -) { - const { data, error, time, } = handle +export function useDebug(query: Query, label: string) { + const { data, error, time } = query useEffect(() => { - console.debug(label, handle) + console.debug(label, query) }, [data, error, time]) } \ No newline at end of file diff --git a/src/mods/react/hooks/blocks/use-error.ts b/src/mods/react/hooks/blocks/use-error.ts index 3edd403b..08b5a402 100644 --- a/src/mods/react/hooks/blocks/use-error.ts +++ b/src/mods/react/hooks/blocks/use-error.ts @@ -1,16 +1,16 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Call a function on error - * @param handle + * @param query * @param callback */ export function useError( - handle: Handle, + query: Query, callback: (e: E) => void ) { - const { error } = handle + const { error } = query useEffect(() => { if (error !== undefined) callback(error) diff --git a/src/mods/react/hooks/blocks/use-fallback.ts b/src/mods/react/hooks/blocks/use-fallback.ts index 61c408e2..2b8923bf 100644 --- a/src/mods/react/hooks/blocks/use-fallback.ts +++ b/src/mods/react/hooks/blocks/use-fallback.ts @@ -1,20 +1,20 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { State } from "mods/types/state.js" /** * Fallback to given data/error if there is no data/error * @example You got some data/error using SSR/ISR and want to display it on first render * @example You still want to display something even if the fetcher returned nothing - * @param handle + * @param query * @param state */ export function useFallback( - handle: Handle, + query: Query, state?: State ) { - const { data, error } = handle + const { data, error } = query if (data !== undefined) return if (error !== undefined) return - Object.assign(handle, state) + Object.assign(query, state) } \ No newline at end of file diff --git a/src/mods/react/hooks/blocks/use-fetch.ts b/src/mods/react/hooks/blocks/use-fetch.ts index aa3c29de..c29b780f 100644 --- a/src/mods/react/hooks/blocks/use-fetch.ts +++ b/src/mods/react/hooks/blocks/use-fetch.ts @@ -1,14 +1,14 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Do a request on mount and url change * @see useMount for doing a request on mount only * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -export function useFetch(handle: Handle) { - const { fetch } = handle +export function useFetch(query: Query) { + const { fetch } = query useEffect(() => { fetch() diff --git a/src/mods/react/hooks/blocks/use-interval.ts b/src/mods/react/hooks/blocks/use-interval.ts index 8746a038..03a4526c 100644 --- a/src/mods/react/hooks/blocks/use-interval.ts +++ b/src/mods/react/hooks/blocks/use-interval.ts @@ -1,14 +1,14 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Do a request on interval * @see useRetry for error retry - * @param handle - * @param options + * @param query + * @param interval */ -export function useInterval(handle: Handle, interval: number) { - const { ready, fetch } = handle +export function useInterval(query: Query, interval: number) { + const { ready, fetch } = query useEffect(() => { if (!ready) return diff --git a/src/mods/react/hooks/blocks/use-mount.ts b/src/mods/react/hooks/blocks/use-mount.ts index 6cdf1e00..57eb6543 100644 --- a/src/mods/react/hooks/blocks/use-mount.ts +++ b/src/mods/react/hooks/blocks/use-mount.ts @@ -1,14 +1,14 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Do a request on mount only * @see useFetch for doing a request on url change * @see useOnce for doing a request only if there is no data yet - * @param handle + * @param query */ -export function useMount(handle: Handle) { - const { fetch } = handle +export function useMount(query: Query) { + const { fetch } = query useEffect(() => { fetch() diff --git a/src/mods/react/hooks/blocks/use-once.ts b/src/mods/react/hooks/blocks/use-once.ts index 3d3469e8..7cde6861 100644 --- a/src/mods/react/hooks/blocks/use-once.ts +++ b/src/mods/react/hooks/blocks/use-once.ts @@ -1,14 +1,14 @@ -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Do a request on mount and url change only if there is no data yet * @warning Will still try to fetch is there is an error - * @param handle + * @param query * @example You want to get some data once and share it in multiple components */ -export function useOnce(handle: Handle) { - const { data, fetch } = handle +export function useOnce(query: Query) { + const { data, fetch } = query useEffect(() => { if (data === undefined) fetch() diff --git a/src/mods/react/hooks/blocks/use-online.ts b/src/mods/react/hooks/blocks/use-online.ts index cd22dd29..09c0f0b8 100644 --- a/src/mods/react/hooks/blocks/use-online.ts +++ b/src/mods/react/hooks/blocks/use-online.ts @@ -1,13 +1,13 @@ import { useAutoRef } from "libs/react.js" -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Do a request when the browser is online - * @param handle + * @param query */ -export function useOnline(handle: Handle) { - const { ready, fetch } = handle +export function useOnline(query: Query) { + const { ready, fetch } = query const fetchRef = useAutoRef(fetch) diff --git a/src/mods/react/hooks/blocks/use-retry.ts b/src/mods/react/hooks/blocks/use-retry.ts index 6056848d..ddbe1dce 100644 --- a/src/mods/react/hooks/blocks/use-retry.ts +++ b/src/mods/react/hooks/blocks/use-retry.ts @@ -1,5 +1,5 @@ import { useAutoRef } from "libs/react.js" -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect, useRef } from "react" export interface RetryOptions { @@ -11,7 +11,7 @@ export interface RetryOptions { /** * Retry request on error using exponential backoff * @see useInterval for interval based requests - * @param handle + * @param query * @param options * @param options.init Initial timeout to be multiplied (in milliseconds) * @param options.base Exponent base (2 means the next timeout will be 2 times longer) @@ -19,8 +19,8 @@ export interface RetryOptions { * @see https://en.wikipedia.org/wiki/Exponential_backoff * @see https://en.wikipedia.org/wiki/Geometric_progression */ -export function useRetry(handle: Handle, options: RetryOptions = {}) { - const { ready, skey, refetch, error } = handle +export function useRetry(query: Query, options: RetryOptions = {}) { + const { ready, skey, refetch, error } = query const { init = 1000, base = 2, max = 3 } = options const count = useRef(0) diff --git a/src/mods/react/hooks/blocks/use-visible.ts b/src/mods/react/hooks/blocks/use-visible.ts index 636738b6..7e47339f 100644 --- a/src/mods/react/hooks/blocks/use-visible.ts +++ b/src/mods/react/hooks/blocks/use-visible.ts @@ -1,13 +1,13 @@ import { useAutoRef } from "libs/react.js" -import { Handle } from "mods/react/types/handle.js" +import { Query } from "mods/react/types/query.js" import { useEffect } from "react" /** * Do a request when the tab is visible - * @param handle + * @param query */ -export function useVisible(handle: Handle) { - const { ready, fetch } = handle +export function useVisible(query: Query) { + const { ready, fetch } = query const fetchRef = useAutoRef(fetch) diff --git a/src/mods/react/hooks/index.ts b/src/mods/react/hooks/index.ts index d10e2f12..0463a7f3 100644 --- a/src/mods/react/hooks/index.ts +++ b/src/mods/react/hooks/index.ts @@ -1,4 +1,4 @@ export * from "./blocks/index.js"; -export * from "./handles/index.js"; +export * from "./queries/index.js"; export * from "./xswr.js"; diff --git a/src/mods/react/hooks/handles/index.ts b/src/mods/react/hooks/queries/index.ts similarity index 100% rename from src/mods/react/hooks/handles/index.ts rename to src/mods/react/hooks/queries/index.ts diff --git a/src/mods/react/hooks/handles/router.ts b/src/mods/react/hooks/queries/router.ts similarity index 56% rename from src/mods/react/hooks/handles/router.ts rename to src/mods/react/hooks/queries/router.ts index 110cc13f..6dfd4876 100644 --- a/src/mods/react/hooks/handles/router.ts +++ b/src/mods/react/hooks/queries/router.ts @@ -2,20 +2,20 @@ import { ScrollSchema } from "mods/scroll/schema.js"; import { SingleSchema } from "mods/single/schema.js"; import { Schema } from "mods/types/schema.js"; import { DependencyList, useMemo } from "react"; -import { ScrollHandle, useScroll } from "./scroll.js"; -import { SingleHandle, useSingle } from "./single.js"; +import { ScrollQuery, useScrollQuery } from "./scroll.js"; +import { SingleQuery, useSingleQuery } from "./single.js"; -export function use( +export function useQuery( factory: (...deps: L) => SingleSchema, deps: L -): SingleHandle +): SingleQuery -export function use( +export function useQuery( factory: (...deps: L) => ScrollSchema, deps: L -): ScrollHandle +): ScrollQuery -export function use( +export function useQuery( factory: (...deps: L) => Schema, deps: L ) { @@ -25,12 +25,12 @@ export function use( if (schema instanceof SingleSchema) { const { key, fetcher, params } = schema - return useSingle(key, fetcher, params) + return useSingleQuery(key, fetcher, params) } if (schema instanceof ScrollSchema) { const { scroller, fetcher, params } = schema - return useScroll(scroller, fetcher, params) + return useScrollQuery(scroller, fetcher, params) } throw new Error("Invalid resource schema") diff --git a/src/mods/react/hooks/handles/scroll.ts b/src/mods/react/hooks/queries/scroll.ts similarity index 93% rename from src/mods/react/hooks/handles/scroll.ts rename to src/mods/react/hooks/queries/scroll.ts index aa83941a..5d8a8c4f 100644 --- a/src/mods/react/hooks/handles/scroll.ts +++ b/src/mods/react/hooks/queries/scroll.ts @@ -1,7 +1,7 @@ import { useAutoRef } from "libs/react.js"; import { useCore } from "mods/react/contexts/core.js"; -import { Handle } from "mods/react/types/handle.js"; -import { getScrollStorageKey } from "mods/scroll/object.js"; +import { Query } from "mods/react/types/query.js"; +import { getScrollStorageKey } from "mods/scroll/instance.js"; import { Fetcher } from "mods/types/fetcher.js"; import { Mutator } from "mods/types/mutator.js"; import { Params } from "mods/types/params.js"; @@ -10,9 +10,9 @@ import { State } from "mods/types/state.js"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; /** - * Handle for a scrolling resource + * Query for a scrolling resource */ -export interface ScrollHandle extends Handle { +export interface ScrollQuery extends Query { /** * Fetch the next page */ @@ -20,17 +20,17 @@ export interface ScrollHandle extends Handle( +export function useScrollQuery( scroller: Scroller, fetcher: Fetcher | undefined, params: Params = {}, -): ScrollHandle { +): ScrollQuery { const core = useCore() const mparams = { ...core.params, ...params } diff --git a/src/mods/react/hooks/handles/single.ts b/src/mods/react/hooks/queries/single.ts similarity index 93% rename from src/mods/react/hooks/handles/single.ts rename to src/mods/react/hooks/queries/single.ts index 7a5e0064..fc8fbdda 100644 --- a/src/mods/react/hooks/handles/single.ts +++ b/src/mods/react/hooks/queries/single.ts @@ -1,7 +1,7 @@ import { useAutoRef } from "libs/react.js"; import { useCore } from "mods/react/contexts/core.js"; -import { Handle } from "mods/react/types/handle.js"; -import { getSingleStorageKey } from "mods/single/object.js"; +import { Query } from "mods/react/types/query.js"; +import { getSingleStorageKey } from "mods/single/instance.js"; import { Fetcher } from "mods/types/fetcher.js"; import { Mutator } from "mods/types/mutator.js"; import { Params } from "mods/types/params.js"; @@ -10,9 +10,9 @@ import { Updater, UpdaterParams } from "mods/types/updater.js"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; /** - * Handle for a single resource + * Query for a single resource */ -export interface SingleHandle extends Handle { +export interface SingleQuery extends Query { /** * Optimistic update * @param updater Mutation function @@ -22,17 +22,17 @@ export interface SingleHandle extends Handle } /** - * Single resource handle factory + * Single resource query factory * @param key Key (memoized) * @param fetcher Resource fetcher (unmemoized) * @param cparams Parameters (unmemoized) - * @returns Single handle + * @returns Single query */ -export function useSingle( +export function useSingleQuery( key: K | undefined, fetcher: Fetcher | undefined, params: Params = {}, -): SingleHandle { +): SingleQuery { const core = useCore() const mparams = { ...core.params, ...params } diff --git a/src/mods/react/hooks/xswr.tsx b/src/mods/react/hooks/xswr.tsx index 2cebd3f4..15fc48c0 100644 --- a/src/mods/react/hooks/xswr.tsx +++ b/src/mods/react/hooks/xswr.tsx @@ -1,9 +1,9 @@ import { useCore } from "mods/react/contexts/core.js" -import { Object } from "mods/types/object.js" +import { Instance } from "mods/types/instance.js" import { Schema } from "mods/types/schema.js" import { useCallback } from "react" -export type Maker = = Object>( +export type Maker = = Instance>( schema: Schema ) => O diff --git a/src/mods/react/types/index.ts b/src/mods/react/types/index.ts index 4894dec9..8f93120f 100644 --- a/src/mods/react/types/index.ts +++ b/src/mods/react/types/index.ts @@ -1 +1 @@ -export * from "./handle.js"; +export * from "./query.js"; diff --git a/src/mods/react/types/handle.ts b/src/mods/react/types/query.ts similarity index 97% rename from src/mods/react/types/handle.ts rename to src/mods/react/types/query.ts index b7b5dd64..86fb6e9e 100644 --- a/src/mods/react/types/handle.ts +++ b/src/mods/react/types/query.ts @@ -1,7 +1,7 @@ import { Mutator } from "mods/types/mutator.js" import { State } from "mods/types/state.js" -export interface Handle { +export interface Query { /** * Arbitrary key, must be serializable */ diff --git a/src/mods/scroll/index.ts b/src/mods/scroll/index.ts index 39a017ae..08095cf2 100644 --- a/src/mods/scroll/index.ts +++ b/src/mods/scroll/index.ts @@ -1,4 +1,4 @@ export * from "./helper.js"; -export * from "./object.js"; +export * from "./instance.js"; export * from "./schema.js"; diff --git a/src/mods/scroll/object.ts b/src/mods/scroll/instance.ts similarity index 95% rename from src/mods/scroll/object.ts rename to src/mods/scroll/instance.ts index 5c95136d..d8e5457d 100644 --- a/src/mods/scroll/object.ts +++ b/src/mods/scroll/instance.ts @@ -1,7 +1,7 @@ import { Core } from "mods/core.js"; import { Fetcher } from "mods/types/fetcher.js"; +import { Instance } from "mods/types/instance.js"; import { Mutator } from "mods/types/mutator.js"; -import { Object } from "mods/types/object.js"; import { Params } from "mods/types/params.js"; import { Scroller } from "mods/types/scroller.js"; import { State } from "mods/types/state.js"; @@ -21,9 +21,9 @@ export function getScrollStorageKey(key: K, params: P } /** - * Non-React version of ScrollHandle + * Non-React version of ScrollQuery */ -export class ScrollObject implements Object { +export class ScrollInstance implements Instance { readonly key: K | undefined readonly skey: string | undefined readonly mparams: Params diff --git a/src/mods/scroll/schema.ts b/src/mods/scroll/schema.ts index 1a4df10d..303b8a8e 100644 --- a/src/mods/scroll/schema.ts +++ b/src/mods/scroll/schema.ts @@ -4,9 +4,9 @@ import { NormalizerMore } from "mods/types/normalizer.js"; import { Params } from "mods/types/params.js"; import { Schema } from "mods/types/schema.js"; import { Scroller } from "mods/types/scroller.js"; -import { ScrollObject } from "./object.js"; +import { ScrollInstance } from "./instance.js"; -export function scroll( +export function getScrollSchema( scroller: Scroller, fetcher: Fetcher | undefined, params: Params = {}, @@ -14,7 +14,7 @@ export function scroll( return new ScrollSchema(scroller, fetcher, params) } -export class ScrollSchema implements Schema> { +export class ScrollSchema implements Schema> { constructor( readonly scroller: Scroller, readonly fetcher: Fetcher | undefined, @@ -24,7 +24,7 @@ export class ScrollSchema implements Schema(core, scroller, fetcher, params) + return new ScrollInstance(core, scroller, fetcher, params) } async normalize(data: D[], more: NormalizerMore) { diff --git a/src/mods/single/helper.ts b/src/mods/single/helper.ts index 1ae94f7a..5c62594f 100644 --- a/src/mods/single/helper.ts +++ b/src/mods/single/helper.ts @@ -1,9 +1,9 @@ -import { returnOf } from "libs/generator.js"; import { getTimeFromDelay } from "libs/time.js"; import { Core } from "mods/core.js"; import { AbortError } from "mods/errors/abort.js"; import { Fetcher } from "mods/types/fetcher.js"; import { Params } from "mods/types/params.js"; +import { Result } from "mods/types/result.js"; import { State } from "mods/types/state.js"; import { Updater } from "mods/types/updater.js"; import { DEFAULT_COOLDOWN, DEFAULT_EXPIRATION, DEFAULT_TIMEOUT } from "mods/utils/defaults.js"; @@ -157,7 +157,21 @@ export class SingleHelper { const generator = updater(current, { signal }) - for await (const { data, error } of generator) { + let result: Result | void = undefined + + while (true) { + const { done, value } = await generator.next() + + if (done) { + result = value + break + } + + const { + data, + error + } = value + if (signal.aborted) throw new AbortError(signal) @@ -172,8 +186,6 @@ export class SingleHelper { params) } - let result = await returnOf(generator) - if (result === undefined) { if (fetcher === undefined) throw new Error("Updater returned nothing and undefined fetcher") diff --git a/src/mods/single/index.ts b/src/mods/single/index.ts index 39a017ae..08095cf2 100644 --- a/src/mods/single/index.ts +++ b/src/mods/single/index.ts @@ -1,4 +1,4 @@ export * from "./helper.js"; -export * from "./object.js"; +export * from "./instance.js"; export * from "./schema.js"; diff --git a/src/mods/single/object.ts b/src/mods/single/instance.ts similarity index 95% rename from src/mods/single/object.ts rename to src/mods/single/instance.ts index 3a4e1448..d47b4e6f 100644 --- a/src/mods/single/object.ts +++ b/src/mods/single/instance.ts @@ -1,7 +1,7 @@ import { Core } from "mods/core.js"; import { Fetcher } from "mods/types/fetcher.js"; +import { Instance } from "mods/types/instance.js"; import { Mutator } from "mods/types/mutator.js"; -import { Object } from "mods/types/object.js"; import { Params } from "mods/types/params.js"; import { State } from "mods/types/state.js"; import { Updater, UpdaterParams } from "mods/types/updater.js"; @@ -21,9 +21,9 @@ export function getSingleStorageKey(key: K, params: P } /** - * Non-React version of SingleHandle + * Non-React version of SingleQuery */ -export class SingleObject implements Object{ +export class SingleInstance implements Instance{ readonly skey: string | undefined readonly mparams: Params diff --git a/src/mods/single/schema.ts b/src/mods/single/schema.ts index 4d346ac9..e7af2de6 100644 --- a/src/mods/single/schema.ts +++ b/src/mods/single/schema.ts @@ -3,9 +3,9 @@ import { Fetcher } from "mods/types/fetcher.js"; import { NormalizerMore } from "mods/types/normalizer.js"; import { Params } from "mods/types/params.js"; import { Schema } from "mods/types/schema.js"; -import { SingleObject } from "./object.js"; +import { SingleInstance } from "./instance.js"; -export function single( +export function getSingleSchema( key: K | undefined, fetcher: Fetcher | undefined, params: Params = {}, @@ -13,7 +13,7 @@ export function single( return new SingleSchema(key, fetcher, params) } -export class SingleSchema implements Schema> { +export class SingleSchema implements Schema> { constructor( readonly key: K | undefined, readonly fetcher: Fetcher | undefined, @@ -23,7 +23,7 @@ export class SingleSchema implements Schema(core, key, fetcher, params) + return new SingleInstance(core, key, fetcher, params) } async normalize(data: D, more: NormalizerMore) { diff --git a/src/mods/types/index.ts b/src/mods/types/index.ts index fd4171fd..808a1812 100644 --- a/src/mods/types/index.ts +++ b/src/mods/types/index.ts @@ -1,7 +1,7 @@ export * from "./fetcher.js" +export * from "./instance.js" export * from "./mutator.js" export * from "./normalizer.js" -export * from "./object.js" export * from "./params.js" export * from "./result.js" export * from "./schema.js" diff --git a/src/mods/types/object.ts b/src/mods/types/instance.ts similarity index 73% rename from src/mods/types/object.ts rename to src/mods/types/instance.ts index d77b96b4..494f8690 100644 --- a/src/mods/types/object.ts +++ b/src/mods/types/instance.ts @@ -1,6 +1,6 @@ import { Mutator } from "./mutator.js" import { State } from "./state.js" -export interface Object { +export interface Instance { mutate(mutator: Mutator): Promise | undefined> } \ No newline at end of file diff --git a/src/mods/types/schema.ts b/src/mods/types/schema.ts index 5d8edc96..6f695ac4 100644 --- a/src/mods/types/schema.ts +++ b/src/mods/types/schema.ts @@ -1,6 +1,6 @@ import { Core } from "../core.js" -import { Object } from "./object.js" +import { Instance } from "./instance.js" -export interface Schema = Object> { +export interface Schema = Instance> { make(core: Core): O } \ No newline at end of file diff --git a/test/next/common/fetcher.tsx b/test/next/common/fetcher.tsx index 4ce25b6d..ae4f4cc8 100644 --- a/test/next/common/fetcher.tsx +++ b/test/next/common/fetcher.tsx @@ -1,8 +1,6 @@ export async function fetchAsJson(url: string, init: RequestInit) { - const { signal, cache } = init - - const res = await fetch(url, { signal, cache }) + const res = await fetch(url, init) const cooldown = Date.now() + (5 * 1000) const expiration = Date.now() + (10 * 1000) diff --git a/test/next/package-lock.json b/test/next/package-lock.json index d20c8308..cbbd3811 100644 --- a/test/next/package-lock.json +++ b/test/next/package-lock.json @@ -8,7 +8,7 @@ "name": "test", "version": "0.1.0", "dependencies": { - "@hazae41/xswr": "^1.0.95", + "@hazae41/xswr": "^1.1.0", "next": "12.2.5", "react": "18.2.0", "react-dom": "18.2.0" @@ -71,9 +71,9 @@ } }, "node_modules/@hazae41/xswr": { - "version": "1.0.95", - "resolved": "https://registry.npmjs.org/@hazae41/xswr/-/xswr-1.0.95.tgz", - "integrity": "sha512-dz05cea2OgCdqx/c7fXispTd17up15/n/0imxQJRP7fjNTN1w7WgD5bTXFp6aQP9kqdS1y9qGEsPbEJRii84xw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@hazae41/xswr/-/xswr-1.1.0.tgz", + "integrity": "sha512-C82n2n4nkdosZKSTkeozkTBAP86CUrli2dqqicyV++TmQtifImys9fWGcgDEUe17pOGMFf8QR3wu8WtoxnOtpw==", "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0", "tslib": "^2.4.0" @@ -3415,9 +3415,9 @@ } }, "@hazae41/xswr": { - "version": "1.0.95", - "resolved": "https://registry.npmjs.org/@hazae41/xswr/-/xswr-1.0.95.tgz", - "integrity": "sha512-dz05cea2OgCdqx/c7fXispTd17up15/n/0imxQJRP7fjNTN1w7WgD5bTXFp6aQP9kqdS1y9qGEsPbEJRii84xw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@hazae41/xswr/-/xswr-1.1.0.tgz", + "integrity": "sha512-C82n2n4nkdosZKSTkeozkTBAP86CUrli2dqqicyV++TmQtifImys9fWGcgDEUe17pOGMFf8QR3wu8WtoxnOtpw==", "requires": {} }, "@humanwhocodes/config-array": { diff --git a/test/next/package.json b/test/next/package.json index 9b08e2bb..8d5916b8 100644 --- a/test/next/package.json +++ b/test/next/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@hazae41/xswr": "^1.0.96", + "@hazae41/xswr": "^1.1.0", "next": "12.2.5", "react": "18.2.0", "react-dom": "18.2.0" diff --git a/test/next/pages/array/index.tsx b/test/next/pages/array/index.tsx index fd3e3187..1c88d4d1 100644 --- a/test/next/pages/array/index.tsx +++ b/test/next/pages/array/index.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr"; +import { getSingleSchema, NormalizerMore, useFetch, useQuery } from "@hazae41/xswr"; import { useCallback } from "react"; import { fetchAsJson } from "../../common/fetcher"; @@ -13,10 +13,10 @@ interface Data { } function getDataSchema(id: string) { - return XSWR.single(`/api/array?id=${id}`, fetchAsJson) + return getSingleSchema(`/api/array?id=${id}`, fetchAsJson) } -async function getDataRef(data: Data | Ref, more: XSWR.NormalizerMore) { +async function getDataRef(data: Data | Ref, more: NormalizerMore) { if ("ref" in data) return data const schema = getDataSchema(data.id) await schema.normalize(data, more) @@ -24,25 +24,25 @@ async function getDataRef(data: Data | Ref, more: XSWR.NormalizerMore) { } function getAllDataSchema() { - async function normalizer(data: (Data | Ref)[], more: XSWR.NormalizerMore) { + async function normalizer(data: (Data | Ref)[], more: NormalizerMore) { return await Promise.all(data.map(data => getDataRef(data, more))) } - return XSWR.single<(Data | Ref)[]>( + return getSingleSchema<(Data | Ref)[]>( `/api/array/all`, fetchAsJson, { normalizer }) } function useAllData() { - const handle = XSWR.use(getAllDataSchema, []) - XSWR.useFetch(handle) + const handle = useQuery(getAllDataSchema, []) + useFetch(handle) return handle } function useData(id: string) { - const handle = XSWR.use(getDataSchema, [id]) - XSWR.useFetch(handle) + const handle = useQuery(getDataSchema, [id]) + useFetch(handle) return handle } diff --git a/test/next/pages/garbage/index.tsx b/test/next/pages/garbage/index.tsx index aae38ef1..eccd7754 100644 --- a/test/next/pages/garbage/index.tsx +++ b/test/next/pages/garbage/index.tsx @@ -1,15 +1,15 @@ -import { XSWR } from "@hazae41/xswr" +import { getSingleSchema, useFetch, useQuery, useXSWR } from "@hazae41/xswr" import { useCallback, useEffect, useState } from "react" import { fetchAsJson } from "../../common/fetcher" function getHelloSchema() { - return XSWR.single("/api/hello", fetchAsJson) + return getSingleSchema("/api/hello", fetchAsJson) } function useHello() { - const handle = XSWR.use(getHelloSchema, []) + const handle = useQuery(getHelloSchema, []) - XSWR.useFetch(handle) + useFetch(handle) return handle } @@ -22,7 +22,7 @@ function Consumer() { } export default function Page() { - const core = XSWR.useCore() + const { core } = useXSWR() const [count, setCount] = useState(0) diff --git a/test/next/pages/keys/index.tsx b/test/next/pages/keys/index.tsx index bd887640..1bf58493 100644 --- a/test/next/pages/keys/index.tsx +++ b/test/next/pages/keys/index.tsx @@ -1,15 +1,15 @@ -import { XSWR } from "@hazae41/xswr" +import { getSingleSchema, useFetch, useQuery } from "@hazae41/xswr" import { useState } from "react" import { fetchAsJson } from "../../common/fetcher" function getKeySchema(id: number) { - return XSWR.single(`/api/query?id=${id}`, fetchAsJson) + return getSingleSchema(`/api/query?id=${id}`, fetchAsJson) } function useKey(id: number) { - const handle = XSWR.use(getKeySchema, [id]) + const handle = useQuery(getKeySchema, [id]) - XSWR.useFetch(handle) + useFetch(handle) return handle } diff --git a/test/next/pages/optimistic/index.tsx b/test/next/pages/optimistic/index.tsx index 75666394..283a4c5f 100644 --- a/test/next/pages/optimistic/index.tsx +++ b/test/next/pages/optimistic/index.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr" +import { getSingleSchema, useFetch, useQuery } from "@hazae41/xswr" import { useCallback } from "react" import { fetchAsJson } from "../../common/fetcher" @@ -7,13 +7,13 @@ interface HelloData { } function getHelloSchema() { - return XSWR.single("/api/hello", fetchAsJson) + return getSingleSchema("/api/hello", fetchAsJson) } function useHelloData() { - const handle = XSWR.use(getHelloSchema, []) + const handle = useQuery(getHelloSchema, []) - XSWR.useFetch(handle) + useFetch(handle) return handle } diff --git a/test/next/pages/scroll/index.tsx b/test/next/pages/scroll/index.tsx index 4e2e2d42..c4efdc7a 100644 --- a/test/next/pages/scroll/index.tsx +++ b/test/next/pages/scroll/index.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr" +import { getScrollSchema, getSingleSchema, NormalizerMore, useFetch, useQuery } from "@hazae41/xswr" import { useCallback } from "react" import { fetchAsJson } from "../../common/fetcher" @@ -18,10 +18,10 @@ interface ElementData { } function getElementSchema(id: string) { - return XSWR.single(`data:${id}`, undefined) + return getSingleSchema(`data:${id}`, undefined) } -async function getElementRef(data: ElementData | ElementRef, more: XSWR.NormalizerMore) { +async function getElementRef(data: ElementData | ElementRef, more: NormalizerMore) { if ("ref" in data) return data const schema = getElementSchema(data.id) await schema.normalize(data, more) @@ -29,14 +29,14 @@ async function getElementRef(data: ElementData | ElementRef, more: XSWR.Normaliz } function getElementsSchema() { - async function normalizer(pages: ElementPage[], more: XSWR.NormalizerMore) { + async function normalizer(pages: ElementPage[], more: NormalizerMore) { return await Promise.all(pages.map(async page => { const data = await Promise.all(page.data.map(data => getElementRef(data, more))) return { ...page, data } as ElementPage })) } - return XSWR.scroll((previous) => { + return getScrollSchema((previous) => { if (!previous) return `/api/scroll` if (!previous.after) @@ -46,12 +46,12 @@ function getElementsSchema() { } function useElement(id: string) { - return XSWR.use(getElementSchema, [id]) + return useQuery(getElementSchema, [id]) } function useElements() { - const handle = XSWR.use(getElementsSchema, []) - XSWR.useFetch(handle) + const handle = useQuery(getElementsSchema, []) + useFetch(handle) return handle } diff --git a/test/next/pages/storage/index.tsx b/test/next/pages/storage/index.tsx index 56fd8db4..4ea7ad0b 100644 --- a/test/next/pages/storage/index.tsx +++ b/test/next/pages/storage/index.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr"; +import { getSingleSchema, Storage, useAsyncLocalStorage, useDebug, useQuery } from "@hazae41/xswr"; import { gunzipSync, gzipSync } from "zlib"; import { fetchAsJson } from "../../common/fetcher"; @@ -24,18 +24,18 @@ class GZIP { const serializer = GZIP -function getHelloSchema(storage?: XSWR.Storage) { - return XSWR.single( +function getHelloSchema(storage?: Storage) { + return getSingleSchema( "/api/hello?stored", fetchAsJson, { storage, serializer }) } function useStoredHello() { - const storage = XSWR.useAsyncLocalStorage("cache") - const handle = XSWR.use(getHelloSchema, [storage]) + const storage = useAsyncLocalStorage("cache") + const handle = useQuery(getHelloSchema, [storage]) - XSWR.useDebug(handle, "hello") + useDebug(handle, "hello") return handle } diff --git a/test/next/pages/suspense/index.tsx b/test/next/pages/suspense/index.tsx index b14b6705..75885754 100644 --- a/test/next/pages/suspense/index.tsx +++ b/test/next/pages/suspense/index.tsx @@ -1,15 +1,15 @@ -import { XSWR } from "@hazae41/xswr" +import { getSingleSchema, useFetch, useQuery } from "@hazae41/xswr" import { Suspense, useEffect, useState } from "react" import { fetchAsJson } from "../../common/fetcher" function getHelloSchema() { - return XSWR.single("/api/hello", fetchAsJson) + return getSingleSchema("/api/hello", fetchAsJson) } function useHelloData() { - const handle = XSWR.use(getHelloSchema, []) + const handle = useQuery(getHelloSchema, []) - XSWR.useFetch(handle) + useFetch(handle) return handle } diff --git a/test/next/pages/theytube/comment.tsx b/test/next/pages/theytube/comment.tsx index b06821a1..941e2c57 100644 --- a/test/next/pages/theytube/comment.tsx +++ b/test/next/pages/theytube/comment.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr"; +import { getSingleSchema, NormalizerMore, useFetch, useQuery, useXSWR } from "@hazae41/xswr"; import { useCallback } from "react"; import { fetchAsJson } from "../../common/fetcher"; import { getProfileRef, getProfileSchema, Profile, ProfileData, ProfileRef } from "./profile"; @@ -21,18 +21,18 @@ export interface NormalizedCommentData { } export function getCommentSchema(id: string) { - async function normalizer(comment: CommentData | NormalizedCommentData, more: XSWR.NormalizerMore) { + async function normalizer(comment: CommentData | NormalizedCommentData, more: NormalizerMore) { const author = await getProfileRef(comment.author, more) return { ...comment, author } } - return XSWR.single( + return getSingleSchema( `/api/theytube/comment?id=${id}`, fetchAsJson, { normalizer }) } -export async function getCommentRef(comment: CommentData | CommentRef, more: XSWR.NormalizerMore) { +export async function getCommentRef(comment: CommentData | CommentRef, more: NormalizerMore) { if ("ref" in comment) return comment const schema = getCommentSchema(comment.id) await schema.normalize(comment, more) @@ -40,13 +40,13 @@ export async function getCommentRef(comment: CommentData | CommentRef, more: XSW } export function useComment(id: string) { - const handle = XSWR.use(getCommentSchema, [id]) - XSWR.useFetch(handle) + const handle = useQuery(getCommentSchema, [id]) + useFetch(handle) return handle } export function Comment(props: { id: string }) { - const { make } = XSWR.useXSWR() + const { make } = useXSWR() const comment = useComment(props.id) const onChangeAuthorClick = useCallback(() => { diff --git a/test/next/pages/theytube/index.tsx b/test/next/pages/theytube/index.tsx index 38cd3e16..b97a5b83 100644 --- a/test/next/pages/theytube/index.tsx +++ b/test/next/pages/theytube/index.tsx @@ -1,22 +1,22 @@ -import { XSWR } from "@hazae41/xswr"; +import { getSingleSchema, NormalizerMore, useFetch, useQuery } from "@hazae41/xswr"; import { useCallback } from "react"; import { fetchAsJson } from "../../common/fetcher"; import { getVideoRef, Video, VideoData, VideoRef } from "./video"; function getAllVideosSchema() { - async function normalizer(videos: (VideoData | VideoRef)[], more: XSWR.NormalizerMore) { + async function normalizer(videos: (VideoData | VideoRef)[], more: NormalizerMore) { return await Promise.all(videos.map(data => getVideoRef(data, more))) } - return XSWR.single<(VideoData | VideoRef)[]>( + return getSingleSchema<(VideoData | VideoRef)[]>( `/api/theytube`, fetchAsJson, { normalizer }) } function useAllVideos() { - const handle = XSWR.use(getAllVideosSchema, []) - XSWR.useFetch(handle) + const handle = useQuery(getAllVideosSchema, []) + useFetch(handle) return handle } diff --git a/test/next/pages/theytube/profile.tsx b/test/next/pages/theytube/profile.tsx index 6a327fb3..f8b694bf 100644 --- a/test/next/pages/theytube/profile.tsx +++ b/test/next/pages/theytube/profile.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr"; +import { getSingleSchema, NormalizerMore, useFetch, useQuery } from "@hazae41/xswr"; import { useCallback } from "react"; import { fetchAsJson } from "../../common/fetcher"; @@ -13,12 +13,12 @@ export interface ProfileData { } export function getProfileSchema(id: string) { - return XSWR.single( + return getSingleSchema( `/api/theytube/profile?id=${id}`, fetchAsJson) } -export async function getProfileRef(profile: ProfileData | ProfileRef, more: XSWR.NormalizerMore) { +export async function getProfileRef(profile: ProfileData | ProfileRef, more: NormalizerMore) { if ("ref" in profile) return profile const schema = getProfileSchema(profile.id) await schema.normalize(profile, more) @@ -26,8 +26,8 @@ export async function getProfileRef(profile: ProfileData | ProfileRef, more: XSW } export function useProfile(id: string) { - const handle = XSWR.use(getProfileSchema, [id]) - XSWR.useFetch(handle) + const handle = useQuery(getProfileSchema, [id]) + useFetch(handle) return handle } diff --git a/test/next/pages/theytube/video.tsx b/test/next/pages/theytube/video.tsx index b2ff37c5..7f2239bb 100644 --- a/test/next/pages/theytube/video.tsx +++ b/test/next/pages/theytube/video.tsx @@ -1,4 +1,4 @@ -import { XSWR } from "@hazae41/xswr"; +import { getSingleSchema, NormalizerMore, useFetch, useQuery } from "@hazae41/xswr"; import { fetchAsJson } from "../../common/fetcher"; import { Comment, CommentData, CommentRef, getCommentRef } from "./comment"; import { getProfileRef, Profile, ProfileData, ProfileRef } from "./profile"; @@ -23,19 +23,19 @@ export interface NormalizedVideoData { } export function getVideoSchema(id: string) { - async function normalizer(video: VideoData | NormalizedVideoData, more: XSWR.NormalizerMore) { + async function normalizer(video: VideoData | NormalizedVideoData, more: NormalizerMore) { const author = await getProfileRef(video.author, more) const comments = await Promise.all(video.comments.map(data => getCommentRef(data, more))) return { ...video, author, comments } } - return XSWR.single( + return getSingleSchema( `/api/theytube/video?id=${id}`, fetchAsJson, { normalizer }) } -export async function getVideoRef(video: VideoData | VideoRef, more: XSWR.NormalizerMore) { +export async function getVideoRef(video: VideoData | VideoRef, more: NormalizerMore) { if ("ref" in video) return video const schema = getVideoSchema(video.id) await schema.normalize(video, more) @@ -43,8 +43,8 @@ export async function getVideoRef(video: VideoData | VideoRef, more: XSWR.Normal } export function useVideo(id: string) { - const handle = XSWR.use(getVideoSchema, [id]) - XSWR.useFetch(handle) + const handle = useQuery(getVideoSchema, [id]) + useFetch(handle) return handle }