cross-state 0.55.1 → 0.55.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -9,27 +9,31 @@ const require_persist = require('./persist-CGLe7YUX.cjs');
9
9
  //#region src/core/pagedCache.ts
10
10
  var PagedCache = class PagedCache extends require_scope.Cache {
11
11
  constructor(definition, args, options = {}) {
12
- super(async (helpers) => loadPage(definition, helpers, []), args, options, void 0);
12
+ super(async (helpers) => loadPage(this, helpers, []), args, options, void 0);
13
13
  this.definition = definition;
14
14
  require_store.autobind(PagedCache);
15
15
  }
16
- async fetchNextPage({ ignoreErrors } = {}) {
16
+ async fetchNextPage({ throwOnError } = {}) {
17
17
  const { status, isStale, isUpdating, value } = this.state.get();
18
18
  if (status === "error") {
19
- if (ignoreErrors) return;
19
+ if (!throwOnError) return;
20
20
  throw new Error("Cannot fetch next page while cache is in error state");
21
21
  }
22
22
  if (isUpdating) {
23
- if (ignoreErrors) return;
23
+ if (!throwOnError) return;
24
24
  throw new Error("Cannot fetch next page while another page is being fetched");
25
25
  }
26
26
  if (status === "pending" || isStale) {
27
27
  await this.get().catch(() => {});
28
28
  return;
29
29
  }
30
+ if (!value.hasMore) {
31
+ if (!throwOnError) return;
32
+ throw new Error("No more pages to fetch");
33
+ }
30
34
  this.stalePromise = this.calculatedValue?.value;
31
35
  const ac = new AbortController();
32
- const promise = loadPage(this.definition, {
36
+ const promise = loadPage(this, {
33
37
  use() {
34
38
  throw new Error("Not implemented");
35
39
  },
@@ -42,20 +46,21 @@ var PagedCache = class PagedCache extends require_scope.Cache {
42
46
  try {
43
47
  await promise;
44
48
  } catch (error) {
45
- if (ignoreErrors) return;
49
+ if (!throwOnError) return;
46
50
  throw error;
47
51
  }
48
52
  }
49
53
  };
50
- async function loadPage({ fetchPage, hasMorePages, getPageCount }, helpers, oldPages) {
51
- const page = await fetchPage({
54
+ async function loadPage(cache, helpers, oldPages) {
55
+ const { fetchPage, hasMorePages, getPageCount } = cache.definition;
56
+ const page = await fetchPage.call(cache, {
52
57
  ...helpers,
53
58
  pages: oldPages,
54
59
  prevPage: oldPages.length > 0 ? oldPages[oldPages.length - 1] : null
55
60
  });
56
61
  const pages = page === null ? oldPages : oldPages.concat(page);
57
- const pageCount = getPageCount?.(pages) ?? null;
58
- const hasMore = page === null ? false : hasMorePages ? hasMorePages(pages) : pageCount !== null ? pages.length < pageCount : true;
62
+ const pageCount = getPageCount?.call(cache, pages) ?? null;
63
+ const hasMore = hasMorePages ? hasMorePages.call(cache, pages) : pageCount !== null ? pages.length < pageCount : page !== null;
59
64
  return {
60
65
  pages,
61
66
  hasMore,
@@ -64,8 +69,9 @@ async function loadPage({ fetchPage, hasMorePages, getPageCount }, helpers, oldP
64
69
  }
65
70
  function createPaged(definition, options) {
66
71
  return require_scope.internalCreate((args, options$1) => {
67
- if (definition instanceof Function) definition = definition(...args);
68
- return new PagedCache(definition, args, options$1);
72
+ let currentDefinition = definition;
73
+ if (currentDefinition instanceof Function) currentDefinition = currentDefinition(...args);
74
+ return new PagedCache(currentDefinition, args, options$1);
69
75
  }, options);
70
76
  }
71
77
  const createPagedCache = /* @__PURE__ */ Object.assign(createPaged, { defaultOptions: require_scope.defaultCacheOptions });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["Cache","definition: PagedCacheDefinition<T>","internalCreate","options","createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> }","defaultCacheOptions"],"sources":["../src/core/pagedCache.ts","../src/lib/updateHelpers.ts"],"sourcesContent":["import {\n Cache,\n defaultCacheOptions,\n internalCreate,\n type CacheOptions,\n type CreateCacheResult,\n} from '@core/cache';\nimport type { CalculationActions } from '@core/commonTypes';\nimport { autobind } from '@lib/autobind';\n\nexport interface PageCacheFunctionProps<T> extends CalculationActions<Promise<PagedState<T>>> {\n pages: T[];\n prevPage: T | null;\n}\n\nexport interface PageCacheFunction<T> {\n (props: PageCacheFunctionProps<T>): Promise<T | null>;\n}\n\nexport interface PagedCacheDefinition<T> {\n fetchPage: (props: PageCacheFunctionProps<T>) => Promise<T | null>;\n getPageCount?: (pages: T[]) => number | null;\n hasMorePages?: (pages: T[]) => boolean;\n}\n\nexport interface PagedCacheDefinitionFunction<T, Args extends any[]> {\n (...args: Args): PagedCacheDefinition<T>;\n}\n\nexport interface PagedState<T> {\n pages: T[];\n hasMore: boolean;\n pageCount: number | null;\n}\n\nexport interface FetchNextPageOptions {\n ignoreErrors?: boolean;\n}\n\nexport class PagedCache<T, Args extends any[] = []> extends Cache<PagedState<T>, Args> {\n constructor(\n public readonly definition: PagedCacheDefinition<T>,\n args: Args,\n options: CacheOptions<PagedState<T>, Args> = {},\n ) {\n super(async (helpers) => loadPage(definition, helpers, []), args, options, undefined);\n autobind(PagedCache);\n }\n\n async fetchNextPage({ ignoreErrors }: FetchNextPageOptions = {}): Promise<void> {\n const { status, isStale, isUpdating, value } = this.state.get();\n\n if (status === 'error') {\n if (ignoreErrors) return;\n throw new Error('Cannot fetch next page while cache is in error state');\n }\n\n if (isUpdating) {\n if (ignoreErrors) return;\n throw new Error('Cannot fetch next page while another page is being fetched');\n }\n\n if (status === 'pending' || isStale) {\n await this.get().catch(() => {});\n return;\n }\n\n this.stalePromise = this.calculatedValue?.value;\n\n const ac = new AbortController();\n const promise = loadPage(\n this.definition,\n {\n use() {\n throw new Error('Not implemented');\n },\n connect() {\n throw new Error('Not implemented');\n },\n signal: ac.signal,\n },\n value.pages,\n );\n\n this.updateValue(promise);\n\n try {\n await promise;\n } catch (error) {\n if (ignoreErrors) return;\n throw error;\n }\n }\n}\n\nasync function loadPage<T>(\n { fetchPage, hasMorePages, getPageCount }: PagedCacheDefinition<T>,\n helpers: CalculationActions<Promise<PagedState<T>>>,\n oldPages: T[],\n) {\n const page = await fetchPage({\n ...helpers,\n pages: oldPages,\n prevPage: oldPages.length > 0 ? oldPages[oldPages.length - 1]! : null,\n });\n\n const pages = page === null ? oldPages : oldPages.concat(page);\n const pageCount = getPageCount?.(pages) ?? null;\n const hasMore =\n page === null\n ? false\n : hasMorePages\n ? hasMorePages(pages)\n : pageCount !== null\n ? pages.length < pageCount\n : true;\n\n return { pages, hasMore, pageCount };\n}\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>>;\n\nfunction createPaged<T>(\n definition: PagedCacheDefinition<T>,\n options?: CacheOptions<PagedState<T>, []>,\n): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args> | PagedCacheDefinition<T>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>> {\n return internalCreate<PagedState<T>, Args, PagedCache<T, Args>>((args, options) => {\n if (definition instanceof Function) {\n definition = definition(...args);\n }\n return new PagedCache(definition, args, options);\n }, options);\n}\n\nexport const createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> } =\n /* @__PURE__ */ Object.assign(createPaged, {\n defaultOptions: defaultCacheOptions,\n });\n","export function findOrDefault<T>(\n array: T[],\n predicate: (item: T) => boolean,\n defaultValue: T | (() => T),\n): T {\n const index = array.findIndex(predicate);\n\n if (index >= 0) {\n return array[index]!;\n }\n\n const value = defaultValue instanceof Function ? defaultValue() : defaultValue;\n array.push(value);\n return value;\n}\n"],"mappings":";;;;;;;;;AAuCA,IAAa,aAAb,MAAa,mBAA+CA,oBAA2B;CACrF,YACE,AAAgBC,YAChB,MACA,UAA6C,IAC7C;AACA,QAAM,OAAO,YAAY,SAAS,YAAY,SAAS,KAAK,MAAM,SAAS;EAJ3D;AAKhB,yBAAS;;CAGX,MAAM,cAAc,EAAE,iBAAuC,IAAmB;EAC9E,MAAM,EAAE,QAAQ,SAAS,YAAY,UAAU,KAAK,MAAM;AAE1D,MAAI,WAAW,SAAS;AACtB,OAAI,aAAc;AAClB,SAAM,IAAI,MAAM;;AAGlB,MAAI,YAAY;AACd,OAAI,aAAc;AAClB,SAAM,IAAI,MAAM;;AAGlB,MAAI,WAAW,aAAa,SAAS;AACnC,SAAM,KAAK,MAAM,YAAY;AAC7B;;AAGF,OAAK,eAAe,KAAK,iBAAiB;EAE1C,MAAM,KAAK,IAAI;EACf,MAAM,UAAU,SACd,KAAK,YACL;GACE,MAAM;AACJ,UAAM,IAAI,MAAM;;GAElB,UAAU;AACR,UAAM,IAAI,MAAM;;GAElB,QAAQ,GAAG;KAEb,MAAM;AAGR,OAAK,YAAY;AAEjB,MAAI;AACF,SAAM;WACC,OAAO;AACd,OAAI,aAAc;AAClB,SAAM;;;;AAKZ,eAAe,SACb,EAAE,WAAW,cAAc,gBAC3B,SACA,UACA;CACA,MAAM,OAAO,MAAM,UAAU;EAC3B,GAAG;EACH,OAAO;EACP,UAAU,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS,KAAM;;CAGnE,MAAM,QAAQ,SAAS,OAAO,WAAW,SAAS,OAAO;CACzD,MAAM,YAAY,eAAe,UAAU;CAC3C,MAAM,UACJ,SAAS,OACL,QACA,eACE,aAAa,SACb,cAAc,OACZ,MAAM,SAAS,YACf;AAEV,QAAO;EAAE;EAAO;EAAS;;;AAa3B,SAAS,YACP,YACA,SAC6D;AAC7D,QAAOC,8BAA0D,MAAM,cAAY;AACjF,MAAI,sBAAsB,SACxB,cAAa,WAAW,GAAG;AAE7B,SAAO,IAAI,WAAW,YAAY,MAAMC;IACvC;;AAGL,MAAaC,mBACK,uBAAO,OAAO,aAAa,EACzC,gBAAgBC;;;;AChJpB,SAAgB,cACd,OACA,WACA,cACG;CACH,MAAM,QAAQ,MAAM,UAAU;AAE9B,KAAI,SAAS,EACX,QAAO,MAAM;CAGf,MAAM,QAAQ,wBAAwB,WAAW,iBAAiB;AAClE,OAAM,KAAK;AACX,QAAO"}
1
+ {"version":3,"file":"index.cjs","names":["Cache","definition: PagedCacheDefinition<T, Args>","internalCreate","options","createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> }","defaultCacheOptions"],"sources":["../src/core/pagedCache.ts","../src/lib/updateHelpers.ts"],"sourcesContent":["import {\n Cache,\n defaultCacheOptions,\n internalCreate,\n type CacheOptions,\n type CreateCacheResult,\n} from '@core/cache';\nimport type { CalculationActions } from '@core/commonTypes';\nimport { autobind } from '@lib/autobind';\n\nexport interface PageCacheFunctionProps<T> extends CalculationActions<Promise<PagedState<T>>> {\n /**\n * Previously fetched pages (in order).\n */\n pages: T[];\n /**\n * Last fetched page or null if there are no previously fetched pages.\n */\n prevPage: T | null;\n}\n\nexport interface PageCacheFunction<T> {\n (props: PageCacheFunctionProps<T>): Promise<T | null>;\n}\n\nexport interface PagedCacheDefinition<T, Args extends any[]> {\n /**\n * Function to fetch a page.\n * The function receives the current state of the cache, including previously fetched pages.\n */\n fetchPage: (this: PagedCache<T, Args>, props: PageCacheFunctionProps<T>) => Promise<T | null>;\n /**\n * Optional function to determine the total number of pages - usually based on data in the fetched pages.\n */\n getPageCount?: (this: PagedCache<T, Args>, pages: T[]) => number | null;\n /**\n * Optional function to determine if there are more pages to fetch - usually based on data in the fetched pages.\n * If not provided, it will be assumed there are more pages until getPageCount is provided and the number of fetched pages equals the page count or until fetchPage returns null.\n */\n hasMorePages?: (this: PagedCache<T, Args>, pages: T[]) => boolean;\n}\n\nexport interface PagedCacheDefinitionFunction<T, Args extends any[]> {\n (...args: Args): PagedCacheDefinition<T, Args>;\n}\n\nexport interface PagedState<T> {\n pages: T[];\n hasMore: boolean;\n pageCount: number | null;\n}\n\nexport interface FetchNextPageOptions {\n /**\n * If true, will throw if the cache is in an error state or if another page is being fetched.\n */\n throwOnError?: boolean;\n}\n\nexport class PagedCache<T, Args extends any[] = []> extends Cache<PagedState<T>, Args> {\n constructor(\n public readonly definition: PagedCacheDefinition<T, Args>,\n args: Args,\n options: CacheOptions<PagedState<T>, Args> = {},\n ) {\n super(async (helpers) => loadPage(this, helpers, []), args, options, undefined);\n autobind(PagedCache);\n }\n\n async fetchNextPage({ throwOnError }: FetchNextPageOptions = {}): Promise<void> {\n const { status, isStale, isUpdating, value } = this.state.get();\n\n if (status === 'error') {\n if (!throwOnError) return;\n throw new Error('Cannot fetch next page while cache is in error state');\n }\n\n if (isUpdating) {\n if (!throwOnError) return;\n throw new Error('Cannot fetch next page while another page is being fetched');\n }\n\n if (status === 'pending' || isStale) {\n await this.get().catch(() => {});\n return;\n }\n\n if (!value.hasMore) {\n if (!throwOnError) return;\n throw new Error('No more pages to fetch');\n }\n\n this.stalePromise = this.calculatedValue?.value;\n\n const ac = new AbortController();\n const promise = loadPage(\n this,\n {\n use() {\n throw new Error('Not implemented');\n },\n connect() {\n throw new Error('Not implemented');\n },\n signal: ac.signal,\n },\n value.pages,\n );\n\n this.updateValue(promise);\n\n try {\n await promise;\n } catch (error) {\n if (!throwOnError) return;\n throw error;\n }\n }\n}\n\nasync function loadPage<T, Args extends any[]>(\n cache: PagedCache<T, Args>,\n helpers: CalculationActions<Promise<PagedState<T>>>,\n oldPages: T[],\n) {\n const { fetchPage, hasMorePages, getPageCount } = cache.definition;\n\n const page = await fetchPage.call(cache, {\n ...helpers,\n pages: oldPages,\n prevPage: oldPages.length > 0 ? oldPages[oldPages.length - 1]! : null,\n });\n\n const pages = page === null ? oldPages : oldPages.concat(page);\n const pageCount = getPageCount?.call(cache, pages) ?? null;\n const hasMore = hasMorePages\n ? hasMorePages.call(cache, pages)\n : pageCount !== null\n ? pages.length < pageCount\n : page !== null;\n\n return { pages, hasMore, pageCount };\n}\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>>;\n\nfunction createPaged<T>(\n definition: PagedCacheDefinition<T, []>,\n options?: CacheOptions<PagedState<T>, []>,\n): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args> | PagedCacheDefinition<T, Args>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>> {\n return internalCreate<PagedState<T>, Args, PagedCache<T, Args>>((args, options) => {\n let currentDefinition = definition;\n if (currentDefinition instanceof Function) {\n currentDefinition = currentDefinition(...args);\n }\n return new PagedCache(currentDefinition, args, options);\n }, options);\n}\n\nexport const createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> } =\n /* @__PURE__ */ Object.assign(createPaged, {\n defaultOptions: defaultCacheOptions,\n });\n","export function findOrDefault<T>(\n array: T[],\n predicate: (item: T) => boolean,\n defaultValue: T | (() => T),\n): T {\n const index = array.findIndex(predicate);\n\n if (index >= 0) {\n return array[index]!;\n }\n\n const value = defaultValue instanceof Function ? defaultValue() : defaultValue;\n array.push(value);\n return value;\n}\n"],"mappings":";;;;;;;;;AA2DA,IAAa,aAAb,MAAa,mBAA+CA,oBAA2B;CACrF,YACE,AAAgBC,YAChB,MACA,UAA6C,IAC7C;AACA,QAAM,OAAO,YAAY,SAAS,MAAM,SAAS,KAAK,MAAM,SAAS;EAJrD;AAKhB,yBAAS;;CAGX,MAAM,cAAc,EAAE,iBAAuC,IAAmB;EAC9E,MAAM,EAAE,QAAQ,SAAS,YAAY,UAAU,KAAK,MAAM;AAE1D,MAAI,WAAW,SAAS;AACtB,OAAI,CAAC,aAAc;AACnB,SAAM,IAAI,MAAM;;AAGlB,MAAI,YAAY;AACd,OAAI,CAAC,aAAc;AACnB,SAAM,IAAI,MAAM;;AAGlB,MAAI,WAAW,aAAa,SAAS;AACnC,SAAM,KAAK,MAAM,YAAY;AAC7B;;AAGF,MAAI,CAAC,MAAM,SAAS;AAClB,OAAI,CAAC,aAAc;AACnB,SAAM,IAAI,MAAM;;AAGlB,OAAK,eAAe,KAAK,iBAAiB;EAE1C,MAAM,KAAK,IAAI;EACf,MAAM,UAAU,SACd,MACA;GACE,MAAM;AACJ,UAAM,IAAI,MAAM;;GAElB,UAAU;AACR,UAAM,IAAI,MAAM;;GAElB,QAAQ,GAAG;KAEb,MAAM;AAGR,OAAK,YAAY;AAEjB,MAAI;AACF,SAAM;WACC,OAAO;AACd,OAAI,CAAC,aAAc;AACnB,SAAM;;;;AAKZ,eAAe,SACb,OACA,SACA,UACA;CACA,MAAM,EAAE,WAAW,cAAc,iBAAiB,MAAM;CAExD,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO;EACvC,GAAG;EACH,OAAO;EACP,UAAU,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS,KAAM;;CAGnE,MAAM,QAAQ,SAAS,OAAO,WAAW,SAAS,OAAO;CACzD,MAAM,YAAY,cAAc,KAAK,OAAO,UAAU;CACtD,MAAM,UAAU,eACZ,aAAa,KAAK,OAAO,SACzB,cAAc,OACZ,MAAM,SAAS,YACf,SAAS;AAEf,QAAO;EAAE;EAAO;EAAS;;;AAa3B,SAAS,YACP,YACA,SAC6D;AAC7D,QAAOC,8BAA0D,MAAM,cAAY;EACjF,IAAI,oBAAoB;AACxB,MAAI,6BAA6B,SAC/B,qBAAoB,kBAAkB,GAAG;AAE3C,SAAO,IAAI,WAAW,mBAAmB,MAAMC;IAC9C;;AAGL,MAAaC,mBACK,uBAAO,OAAO,aAAa,EACzC,gBAAgBC;;;;ACzKpB,SAAgB,cACd,OACA,WACA,cACG;CACH,MAAM,QAAQ,MAAM,UAAU;AAE9B,KAAI,SAAS,EACX,QAAO,MAAM;CAGf,MAAM,QAAQ,wBAAwB,WAAW,iBAAiB;AAClE,OAAM,KAAK;AACX,QAAO"}
package/dist/index.d.cts CHANGED
@@ -5,19 +5,36 @@ import { Persist, PersistOptions, PersistStorage, PersistStorageBase, PersistSto
5
5
 
6
6
  //#region src/core/pagedCache.d.ts
7
7
  interface PageCacheFunctionProps<T> extends CalculationActions<Promise<PagedState<T>>> {
8
+ /**
9
+ * Previously fetched pages (in order).
10
+ */
8
11
  pages: T[];
12
+ /**
13
+ * Last fetched page or null if there are no previously fetched pages.
14
+ */
9
15
  prevPage: T | null;
10
16
  }
11
17
  interface PageCacheFunction<T> {
12
18
  (props: PageCacheFunctionProps<T>): Promise<T | null>;
13
19
  }
14
- interface PagedCacheDefinition<T> {
15
- fetchPage: (props: PageCacheFunctionProps<T>) => Promise<T | null>;
16
- getPageCount?: (pages: T[]) => number | null;
17
- hasMorePages?: (pages: T[]) => boolean;
20
+ interface PagedCacheDefinition<T, Args extends any[]> {
21
+ /**
22
+ * Function to fetch a page.
23
+ * The function receives the current state of the cache, including previously fetched pages.
24
+ */
25
+ fetchPage: (this: PagedCache<T, Args>, props: PageCacheFunctionProps<T>) => Promise<T | null>;
26
+ /**
27
+ * Optional function to determine the total number of pages - usually based on data in the fetched pages.
28
+ */
29
+ getPageCount?: (this: PagedCache<T, Args>, pages: T[]) => number | null;
30
+ /**
31
+ * Optional function to determine if there are more pages to fetch - usually based on data in the fetched pages.
32
+ * If not provided, it will be assumed there are more pages until getPageCount is provided and the number of fetched pages equals the page count or until fetchPage returns null.
33
+ */
34
+ hasMorePages?: (this: PagedCache<T, Args>, pages: T[]) => boolean;
18
35
  }
19
36
  interface PagedCacheDefinitionFunction<T, Args extends any[]> {
20
- (...args: Args): PagedCacheDefinition<T>;
37
+ (...args: Args): PagedCacheDefinition<T, Args>;
21
38
  }
22
39
  interface PagedState<T> {
23
40
  pages: T[];
@@ -25,17 +42,20 @@ interface PagedState<T> {
25
42
  pageCount: number | null;
26
43
  }
27
44
  interface FetchNextPageOptions {
28
- ignoreErrors?: boolean;
45
+ /**
46
+ * If true, will throw if the cache is in an error state or if another page is being fetched.
47
+ */
48
+ throwOnError?: boolean;
29
49
  }
30
50
  declare class PagedCache<T, Args extends any[] = []> extends Cache<PagedState<T>, Args> {
31
- readonly definition: PagedCacheDefinition<T>;
32
- constructor(definition: PagedCacheDefinition<T>, args: Args, options?: CacheOptions<PagedState<T>, Args>);
51
+ readonly definition: PagedCacheDefinition<T, Args>;
52
+ constructor(definition: PagedCacheDefinition<T, Args>, args: Args, options?: CacheOptions<PagedState<T>, Args>);
33
53
  fetchNextPage({
34
- ignoreErrors
54
+ throwOnError
35
55
  }?: FetchNextPageOptions): Promise<void>;
36
56
  }
37
57
  declare function createPaged<T, Args extends any[] = []>(definition: PagedCacheDefinitionFunction<T, Args>, options?: CacheOptions<PagedState<T>, Args>): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>>;
38
- declare function createPaged<T>(definition: PagedCacheDefinition<T>, options?: CacheOptions<PagedState<T>, []>): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;
58
+ declare function createPaged<T>(definition: PagedCacheDefinition<T, []>, options?: CacheOptions<PagedState<T>, []>): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;
39
59
  declare const createPagedCache: typeof createPaged & {
40
60
  defaultOptions: CacheOptions<any, any>;
41
61
  };
package/dist/index.d.ts CHANGED
@@ -5,19 +5,36 @@ import { Persist, PersistOptions, PersistStorage, PersistStorageBase, PersistSto
5
5
 
6
6
  //#region src/core/pagedCache.d.ts
7
7
  interface PageCacheFunctionProps<T> extends CalculationActions<Promise<PagedState<T>>> {
8
+ /**
9
+ * Previously fetched pages (in order).
10
+ */
8
11
  pages: T[];
12
+ /**
13
+ * Last fetched page or null if there are no previously fetched pages.
14
+ */
9
15
  prevPage: T | null;
10
16
  }
11
17
  interface PageCacheFunction<T> {
12
18
  (props: PageCacheFunctionProps<T>): Promise<T | null>;
13
19
  }
14
- interface PagedCacheDefinition<T> {
15
- fetchPage: (props: PageCacheFunctionProps<T>) => Promise<T | null>;
16
- getPageCount?: (pages: T[]) => number | null;
17
- hasMorePages?: (pages: T[]) => boolean;
20
+ interface PagedCacheDefinition<T, Args extends any[]> {
21
+ /**
22
+ * Function to fetch a page.
23
+ * The function receives the current state of the cache, including previously fetched pages.
24
+ */
25
+ fetchPage: (this: PagedCache<T, Args>, props: PageCacheFunctionProps<T>) => Promise<T | null>;
26
+ /**
27
+ * Optional function to determine the total number of pages - usually based on data in the fetched pages.
28
+ */
29
+ getPageCount?: (this: PagedCache<T, Args>, pages: T[]) => number | null;
30
+ /**
31
+ * Optional function to determine if there are more pages to fetch - usually based on data in the fetched pages.
32
+ * If not provided, it will be assumed there are more pages until getPageCount is provided and the number of fetched pages equals the page count or until fetchPage returns null.
33
+ */
34
+ hasMorePages?: (this: PagedCache<T, Args>, pages: T[]) => boolean;
18
35
  }
19
36
  interface PagedCacheDefinitionFunction<T, Args extends any[]> {
20
- (...args: Args): PagedCacheDefinition<T>;
37
+ (...args: Args): PagedCacheDefinition<T, Args>;
21
38
  }
22
39
  interface PagedState<T> {
23
40
  pages: T[];
@@ -25,17 +42,20 @@ interface PagedState<T> {
25
42
  pageCount: number | null;
26
43
  }
27
44
  interface FetchNextPageOptions {
28
- ignoreErrors?: boolean;
45
+ /**
46
+ * If true, will throw if the cache is in an error state or if another page is being fetched.
47
+ */
48
+ throwOnError?: boolean;
29
49
  }
30
50
  declare class PagedCache<T, Args extends any[] = []> extends Cache<PagedState<T>, Args> {
31
- readonly definition: PagedCacheDefinition<T>;
32
- constructor(definition: PagedCacheDefinition<T>, args: Args, options?: CacheOptions<PagedState<T>, Args>);
51
+ readonly definition: PagedCacheDefinition<T, Args>;
52
+ constructor(definition: PagedCacheDefinition<T, Args>, args: Args, options?: CacheOptions<PagedState<T>, Args>);
33
53
  fetchNextPage({
34
- ignoreErrors
54
+ throwOnError
35
55
  }?: FetchNextPageOptions): Promise<void>;
36
56
  }
37
57
  declare function createPaged<T, Args extends any[] = []>(definition: PagedCacheDefinitionFunction<T, Args>, options?: CacheOptions<PagedState<T>, Args>): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>>;
38
- declare function createPaged<T>(definition: PagedCacheDefinition<T>, options?: CacheOptions<PagedState<T>, []>): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;
58
+ declare function createPaged<T>(definition: PagedCacheDefinition<T, []>, options?: CacheOptions<PagedState<T>, []>): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;
39
59
  declare const createPagedCache: typeof createPaged & {
40
60
  defaultOptions: CacheOptions<any, any>;
41
61
  };
package/dist/index.js CHANGED
@@ -9,27 +9,31 @@ import { persist } from "./persist-Btgg3qGU.js";
9
9
  //#region src/core/pagedCache.ts
10
10
  var PagedCache = class PagedCache extends Cache {
11
11
  constructor(definition, args, options = {}) {
12
- super(async (helpers) => loadPage(definition, helpers, []), args, options, void 0);
12
+ super(async (helpers) => loadPage(this, helpers, []), args, options, void 0);
13
13
  this.definition = definition;
14
14
  autobind(PagedCache);
15
15
  }
16
- async fetchNextPage({ ignoreErrors } = {}) {
16
+ async fetchNextPage({ throwOnError } = {}) {
17
17
  const { status, isStale, isUpdating, value } = this.state.get();
18
18
  if (status === "error") {
19
- if (ignoreErrors) return;
19
+ if (!throwOnError) return;
20
20
  throw new Error("Cannot fetch next page while cache is in error state");
21
21
  }
22
22
  if (isUpdating) {
23
- if (ignoreErrors) return;
23
+ if (!throwOnError) return;
24
24
  throw new Error("Cannot fetch next page while another page is being fetched");
25
25
  }
26
26
  if (status === "pending" || isStale) {
27
27
  await this.get().catch(() => {});
28
28
  return;
29
29
  }
30
+ if (!value.hasMore) {
31
+ if (!throwOnError) return;
32
+ throw new Error("No more pages to fetch");
33
+ }
30
34
  this.stalePromise = this.calculatedValue?.value;
31
35
  const ac = new AbortController();
32
- const promise = loadPage(this.definition, {
36
+ const promise = loadPage(this, {
33
37
  use() {
34
38
  throw new Error("Not implemented");
35
39
  },
@@ -42,20 +46,21 @@ var PagedCache = class PagedCache extends Cache {
42
46
  try {
43
47
  await promise;
44
48
  } catch (error) {
45
- if (ignoreErrors) return;
49
+ if (!throwOnError) return;
46
50
  throw error;
47
51
  }
48
52
  }
49
53
  };
50
- async function loadPage({ fetchPage, hasMorePages, getPageCount }, helpers, oldPages) {
51
- const page = await fetchPage({
54
+ async function loadPage(cache, helpers, oldPages) {
55
+ const { fetchPage, hasMorePages, getPageCount } = cache.definition;
56
+ const page = await fetchPage.call(cache, {
52
57
  ...helpers,
53
58
  pages: oldPages,
54
59
  prevPage: oldPages.length > 0 ? oldPages[oldPages.length - 1] : null
55
60
  });
56
61
  const pages = page === null ? oldPages : oldPages.concat(page);
57
- const pageCount = getPageCount?.(pages) ?? null;
58
- const hasMore = page === null ? false : hasMorePages ? hasMorePages(pages) : pageCount !== null ? pages.length < pageCount : true;
62
+ const pageCount = getPageCount?.call(cache, pages) ?? null;
63
+ const hasMore = hasMorePages ? hasMorePages.call(cache, pages) : pageCount !== null ? pages.length < pageCount : page !== null;
59
64
  return {
60
65
  pages,
61
66
  hasMore,
@@ -64,8 +69,9 @@ async function loadPage({ fetchPage, hasMorePages, getPageCount }, helpers, oldP
64
69
  }
65
70
  function createPaged(definition, options) {
66
71
  return internalCreate((args, options$1) => {
67
- if (definition instanceof Function) definition = definition(...args);
68
- return new PagedCache(definition, args, options$1);
72
+ let currentDefinition = definition;
73
+ if (currentDefinition instanceof Function) currentDefinition = currentDefinition(...args);
74
+ return new PagedCache(currentDefinition, args, options$1);
69
75
  }, options);
70
76
  }
71
77
  const createPagedCache = /* @__PURE__ */ Object.assign(createPaged, { defaultOptions: defaultCacheOptions });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["definition: PagedCacheDefinition<T>","options","createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> }"],"sources":["../src/core/pagedCache.ts","../src/lib/updateHelpers.ts"],"sourcesContent":["import {\n Cache,\n defaultCacheOptions,\n internalCreate,\n type CacheOptions,\n type CreateCacheResult,\n} from '@core/cache';\nimport type { CalculationActions } from '@core/commonTypes';\nimport { autobind } from '@lib/autobind';\n\nexport interface PageCacheFunctionProps<T> extends CalculationActions<Promise<PagedState<T>>> {\n pages: T[];\n prevPage: T | null;\n}\n\nexport interface PageCacheFunction<T> {\n (props: PageCacheFunctionProps<T>): Promise<T | null>;\n}\n\nexport interface PagedCacheDefinition<T> {\n fetchPage: (props: PageCacheFunctionProps<T>) => Promise<T | null>;\n getPageCount?: (pages: T[]) => number | null;\n hasMorePages?: (pages: T[]) => boolean;\n}\n\nexport interface PagedCacheDefinitionFunction<T, Args extends any[]> {\n (...args: Args): PagedCacheDefinition<T>;\n}\n\nexport interface PagedState<T> {\n pages: T[];\n hasMore: boolean;\n pageCount: number | null;\n}\n\nexport interface FetchNextPageOptions {\n ignoreErrors?: boolean;\n}\n\nexport class PagedCache<T, Args extends any[] = []> extends Cache<PagedState<T>, Args> {\n constructor(\n public readonly definition: PagedCacheDefinition<T>,\n args: Args,\n options: CacheOptions<PagedState<T>, Args> = {},\n ) {\n super(async (helpers) => loadPage(definition, helpers, []), args, options, undefined);\n autobind(PagedCache);\n }\n\n async fetchNextPage({ ignoreErrors }: FetchNextPageOptions = {}): Promise<void> {\n const { status, isStale, isUpdating, value } = this.state.get();\n\n if (status === 'error') {\n if (ignoreErrors) return;\n throw new Error('Cannot fetch next page while cache is in error state');\n }\n\n if (isUpdating) {\n if (ignoreErrors) return;\n throw new Error('Cannot fetch next page while another page is being fetched');\n }\n\n if (status === 'pending' || isStale) {\n await this.get().catch(() => {});\n return;\n }\n\n this.stalePromise = this.calculatedValue?.value;\n\n const ac = new AbortController();\n const promise = loadPage(\n this.definition,\n {\n use() {\n throw new Error('Not implemented');\n },\n connect() {\n throw new Error('Not implemented');\n },\n signal: ac.signal,\n },\n value.pages,\n );\n\n this.updateValue(promise);\n\n try {\n await promise;\n } catch (error) {\n if (ignoreErrors) return;\n throw error;\n }\n }\n}\n\nasync function loadPage<T>(\n { fetchPage, hasMorePages, getPageCount }: PagedCacheDefinition<T>,\n helpers: CalculationActions<Promise<PagedState<T>>>,\n oldPages: T[],\n) {\n const page = await fetchPage({\n ...helpers,\n pages: oldPages,\n prevPage: oldPages.length > 0 ? oldPages[oldPages.length - 1]! : null,\n });\n\n const pages = page === null ? oldPages : oldPages.concat(page);\n const pageCount = getPageCount?.(pages) ?? null;\n const hasMore =\n page === null\n ? false\n : hasMorePages\n ? hasMorePages(pages)\n : pageCount !== null\n ? pages.length < pageCount\n : true;\n\n return { pages, hasMore, pageCount };\n}\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>>;\n\nfunction createPaged<T>(\n definition: PagedCacheDefinition<T>,\n options?: CacheOptions<PagedState<T>, []>,\n): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args> | PagedCacheDefinition<T>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>> {\n return internalCreate<PagedState<T>, Args, PagedCache<T, Args>>((args, options) => {\n if (definition instanceof Function) {\n definition = definition(...args);\n }\n return new PagedCache(definition, args, options);\n }, options);\n}\n\nexport const createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> } =\n /* @__PURE__ */ Object.assign(createPaged, {\n defaultOptions: defaultCacheOptions,\n });\n","export function findOrDefault<T>(\n array: T[],\n predicate: (item: T) => boolean,\n defaultValue: T | (() => T),\n): T {\n const index = array.findIndex(predicate);\n\n if (index >= 0) {\n return array[index]!;\n }\n\n const value = defaultValue instanceof Function ? defaultValue() : defaultValue;\n array.push(value);\n return value;\n}\n"],"mappings":";;;;;;;;;AAuCA,IAAa,aAAb,MAAa,mBAA+C,MAA2B;CACrF,YACE,AAAgBA,YAChB,MACA,UAA6C,IAC7C;AACA,QAAM,OAAO,YAAY,SAAS,YAAY,SAAS,KAAK,MAAM,SAAS;EAJ3D;AAKhB,WAAS;;CAGX,MAAM,cAAc,EAAE,iBAAuC,IAAmB;EAC9E,MAAM,EAAE,QAAQ,SAAS,YAAY,UAAU,KAAK,MAAM;AAE1D,MAAI,WAAW,SAAS;AACtB,OAAI,aAAc;AAClB,SAAM,IAAI,MAAM;;AAGlB,MAAI,YAAY;AACd,OAAI,aAAc;AAClB,SAAM,IAAI,MAAM;;AAGlB,MAAI,WAAW,aAAa,SAAS;AACnC,SAAM,KAAK,MAAM,YAAY;AAC7B;;AAGF,OAAK,eAAe,KAAK,iBAAiB;EAE1C,MAAM,KAAK,IAAI;EACf,MAAM,UAAU,SACd,KAAK,YACL;GACE,MAAM;AACJ,UAAM,IAAI,MAAM;;GAElB,UAAU;AACR,UAAM,IAAI,MAAM;;GAElB,QAAQ,GAAG;KAEb,MAAM;AAGR,OAAK,YAAY;AAEjB,MAAI;AACF,SAAM;WACC,OAAO;AACd,OAAI,aAAc;AAClB,SAAM;;;;AAKZ,eAAe,SACb,EAAE,WAAW,cAAc,gBAC3B,SACA,UACA;CACA,MAAM,OAAO,MAAM,UAAU;EAC3B,GAAG;EACH,OAAO;EACP,UAAU,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS,KAAM;;CAGnE,MAAM,QAAQ,SAAS,OAAO,WAAW,SAAS,OAAO;CACzD,MAAM,YAAY,eAAe,UAAU;CAC3C,MAAM,UACJ,SAAS,OACL,QACA,eACE,aAAa,SACb,cAAc,OACZ,MAAM,SAAS,YACf;AAEV,QAAO;EAAE;EAAO;EAAS;;;AAa3B,SAAS,YACP,YACA,SAC6D;AAC7D,QAAO,gBAA0D,MAAM,cAAY;AACjF,MAAI,sBAAsB,SACxB,cAAa,WAAW,GAAG;AAE7B,SAAO,IAAI,WAAW,YAAY,MAAMC;IACvC;;AAGL,MAAaC,mBACK,uBAAO,OAAO,aAAa,EACzC,gBAAgB;;;;AChJpB,SAAgB,cACd,OACA,WACA,cACG;CACH,MAAM,QAAQ,MAAM,UAAU;AAE9B,KAAI,SAAS,EACX,QAAO,MAAM;CAGf,MAAM,QAAQ,wBAAwB,WAAW,iBAAiB;AAClE,OAAM,KAAK;AACX,QAAO"}
1
+ {"version":3,"file":"index.js","names":["definition: PagedCacheDefinition<T, Args>","options","createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> }"],"sources":["../src/core/pagedCache.ts","../src/lib/updateHelpers.ts"],"sourcesContent":["import {\n Cache,\n defaultCacheOptions,\n internalCreate,\n type CacheOptions,\n type CreateCacheResult,\n} from '@core/cache';\nimport type { CalculationActions } from '@core/commonTypes';\nimport { autobind } from '@lib/autobind';\n\nexport interface PageCacheFunctionProps<T> extends CalculationActions<Promise<PagedState<T>>> {\n /**\n * Previously fetched pages (in order).\n */\n pages: T[];\n /**\n * Last fetched page or null if there are no previously fetched pages.\n */\n prevPage: T | null;\n}\n\nexport interface PageCacheFunction<T> {\n (props: PageCacheFunctionProps<T>): Promise<T | null>;\n}\n\nexport interface PagedCacheDefinition<T, Args extends any[]> {\n /**\n * Function to fetch a page.\n * The function receives the current state of the cache, including previously fetched pages.\n */\n fetchPage: (this: PagedCache<T, Args>, props: PageCacheFunctionProps<T>) => Promise<T | null>;\n /**\n * Optional function to determine the total number of pages - usually based on data in the fetched pages.\n */\n getPageCount?: (this: PagedCache<T, Args>, pages: T[]) => number | null;\n /**\n * Optional function to determine if there are more pages to fetch - usually based on data in the fetched pages.\n * If not provided, it will be assumed there are more pages until getPageCount is provided and the number of fetched pages equals the page count or until fetchPage returns null.\n */\n hasMorePages?: (this: PagedCache<T, Args>, pages: T[]) => boolean;\n}\n\nexport interface PagedCacheDefinitionFunction<T, Args extends any[]> {\n (...args: Args): PagedCacheDefinition<T, Args>;\n}\n\nexport interface PagedState<T> {\n pages: T[];\n hasMore: boolean;\n pageCount: number | null;\n}\n\nexport interface FetchNextPageOptions {\n /**\n * If true, will throw if the cache is in an error state or if another page is being fetched.\n */\n throwOnError?: boolean;\n}\n\nexport class PagedCache<T, Args extends any[] = []> extends Cache<PagedState<T>, Args> {\n constructor(\n public readonly definition: PagedCacheDefinition<T, Args>,\n args: Args,\n options: CacheOptions<PagedState<T>, Args> = {},\n ) {\n super(async (helpers) => loadPage(this, helpers, []), args, options, undefined);\n autobind(PagedCache);\n }\n\n async fetchNextPage({ throwOnError }: FetchNextPageOptions = {}): Promise<void> {\n const { status, isStale, isUpdating, value } = this.state.get();\n\n if (status === 'error') {\n if (!throwOnError) return;\n throw new Error('Cannot fetch next page while cache is in error state');\n }\n\n if (isUpdating) {\n if (!throwOnError) return;\n throw new Error('Cannot fetch next page while another page is being fetched');\n }\n\n if (status === 'pending' || isStale) {\n await this.get().catch(() => {});\n return;\n }\n\n if (!value.hasMore) {\n if (!throwOnError) return;\n throw new Error('No more pages to fetch');\n }\n\n this.stalePromise = this.calculatedValue?.value;\n\n const ac = new AbortController();\n const promise = loadPage(\n this,\n {\n use() {\n throw new Error('Not implemented');\n },\n connect() {\n throw new Error('Not implemented');\n },\n signal: ac.signal,\n },\n value.pages,\n );\n\n this.updateValue(promise);\n\n try {\n await promise;\n } catch (error) {\n if (!throwOnError) return;\n throw error;\n }\n }\n}\n\nasync function loadPage<T, Args extends any[]>(\n cache: PagedCache<T, Args>,\n helpers: CalculationActions<Promise<PagedState<T>>>,\n oldPages: T[],\n) {\n const { fetchPage, hasMorePages, getPageCount } = cache.definition;\n\n const page = await fetchPage.call(cache, {\n ...helpers,\n pages: oldPages,\n prevPage: oldPages.length > 0 ? oldPages[oldPages.length - 1]! : null,\n });\n\n const pages = page === null ? oldPages : oldPages.concat(page);\n const pageCount = getPageCount?.call(cache, pages) ?? null;\n const hasMore = hasMorePages\n ? hasMorePages.call(cache, pages)\n : pageCount !== null\n ? pages.length < pageCount\n : page !== null;\n\n return { pages, hasMore, pageCount };\n}\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>>;\n\nfunction createPaged<T>(\n definition: PagedCacheDefinition<T, []>,\n options?: CacheOptions<PagedState<T>, []>,\n): CreateCacheResult<PagedState<T>, [], PagedCache<T, []>>;\n\nfunction createPaged<T, Args extends any[] = []>(\n definition: PagedCacheDefinitionFunction<T, Args> | PagedCacheDefinition<T, Args>,\n options?: CacheOptions<PagedState<T>, Args>,\n): CreateCacheResult<PagedState<T>, Args, PagedCache<T, Args>> {\n return internalCreate<PagedState<T>, Args, PagedCache<T, Args>>((args, options) => {\n let currentDefinition = definition;\n if (currentDefinition instanceof Function) {\n currentDefinition = currentDefinition(...args);\n }\n return new PagedCache(currentDefinition, args, options);\n }, options);\n}\n\nexport const createPagedCache: typeof createPaged & { defaultOptions: CacheOptions<any, any> } =\n /* @__PURE__ */ Object.assign(createPaged, {\n defaultOptions: defaultCacheOptions,\n });\n","export function findOrDefault<T>(\n array: T[],\n predicate: (item: T) => boolean,\n defaultValue: T | (() => T),\n): T {\n const index = array.findIndex(predicate);\n\n if (index >= 0) {\n return array[index]!;\n }\n\n const value = defaultValue instanceof Function ? defaultValue() : defaultValue;\n array.push(value);\n return value;\n}\n"],"mappings":";;;;;;;;;AA2DA,IAAa,aAAb,MAAa,mBAA+C,MAA2B;CACrF,YACE,AAAgBA,YAChB,MACA,UAA6C,IAC7C;AACA,QAAM,OAAO,YAAY,SAAS,MAAM,SAAS,KAAK,MAAM,SAAS;EAJrD;AAKhB,WAAS;;CAGX,MAAM,cAAc,EAAE,iBAAuC,IAAmB;EAC9E,MAAM,EAAE,QAAQ,SAAS,YAAY,UAAU,KAAK,MAAM;AAE1D,MAAI,WAAW,SAAS;AACtB,OAAI,CAAC,aAAc;AACnB,SAAM,IAAI,MAAM;;AAGlB,MAAI,YAAY;AACd,OAAI,CAAC,aAAc;AACnB,SAAM,IAAI,MAAM;;AAGlB,MAAI,WAAW,aAAa,SAAS;AACnC,SAAM,KAAK,MAAM,YAAY;AAC7B;;AAGF,MAAI,CAAC,MAAM,SAAS;AAClB,OAAI,CAAC,aAAc;AACnB,SAAM,IAAI,MAAM;;AAGlB,OAAK,eAAe,KAAK,iBAAiB;EAE1C,MAAM,KAAK,IAAI;EACf,MAAM,UAAU,SACd,MACA;GACE,MAAM;AACJ,UAAM,IAAI,MAAM;;GAElB,UAAU;AACR,UAAM,IAAI,MAAM;;GAElB,QAAQ,GAAG;KAEb,MAAM;AAGR,OAAK,YAAY;AAEjB,MAAI;AACF,SAAM;WACC,OAAO;AACd,OAAI,CAAC,aAAc;AACnB,SAAM;;;;AAKZ,eAAe,SACb,OACA,SACA,UACA;CACA,MAAM,EAAE,WAAW,cAAc,iBAAiB,MAAM;CAExD,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO;EACvC,GAAG;EACH,OAAO;EACP,UAAU,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS,KAAM;;CAGnE,MAAM,QAAQ,SAAS,OAAO,WAAW,SAAS,OAAO;CACzD,MAAM,YAAY,cAAc,KAAK,OAAO,UAAU;CACtD,MAAM,UAAU,eACZ,aAAa,KAAK,OAAO,SACzB,cAAc,OACZ,MAAM,SAAS,YACf,SAAS;AAEf,QAAO;EAAE;EAAO;EAAS;;;AAa3B,SAAS,YACP,YACA,SAC6D;AAC7D,QAAO,gBAA0D,MAAM,cAAY;EACjF,IAAI,oBAAoB;AACxB,MAAI,6BAA6B,SAC/B,qBAAoB,kBAAkB,GAAG;AAE3C,SAAO,IAAI,WAAW,mBAAmB,MAAMC;IAC9C;;AAGL,MAAaC,mBACK,uBAAO,OAAO,aAAa,EACzC,gBAAgB;;;;ACzKpB,SAAgB,cACd,OACA,WACA,cACG;CACH,MAAM,QAAQ,MAAM,UAAU;AAE9B,KAAI,SAAS,EACX,QAAO,MAAM;CAGf,MAAM,QAAQ,wBAAwB,WAAW,iBAAiB;AAClE,OAAM,KAAK;AACX,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cross-state",
3
- "version": "0.55.1",
3
+ "version": "0.55.3",
4
4
  "description": "(React) state library",
5
5
  "license": "ISC",
6
6
  "repository": "schummar/cross-state",