@simpleapps-com/augur-hooks 0.2.1 → 0.2.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.
@@ -70,6 +70,23 @@ interface CacheConfig {
70
70
  /** TTLs for frequently-changing data (prices, stock, search). */
71
71
  semiStatic?: CacheTierConfig;
72
72
  }
73
+ /** Configuration for React Query localStorage persistence. */
74
+ interface PersistenceConfig {
75
+ /** localStorage key for the persisted cache. */
76
+ key: string;
77
+ /** Cache buster string. When changed, persisted data is discarded. In development, defaults to Date.now(). */
78
+ buster?: string;
79
+ /** Max age of persisted data in ms. Default: 24 hours. */
80
+ maxAge?: number;
81
+ /** Query key prefixes to persist. Only successful queries whose first key element matches are persisted. */
82
+ persistableKeys: string[];
83
+ /** Per-key-prefix LRU limits. Queries exceeding the limit are evicted oldest-first by dataUpdatedAt. */
84
+ limits?: Record<string, number>;
85
+ /** localStorage size threshold in MB before eviction runs. Default: 3. */
86
+ maxStorageMB?: number;
87
+ /** Write throttle in ms. Default: 1000. */
88
+ throttleMs?: number;
89
+ }
73
90
  /** API options for item category queries. */
74
91
  interface GetItemCategoryApiOptions {
75
92
  childrenFilter?: string;
@@ -457,4 +474,4 @@ declare const getJoomlaContentListOptions: (api: AugurApiClient, categoryId: num
457
474
  gcTime: number | undefined;
458
475
  };
459
476
 
460
- export { type AugurCallbacks as A, getJoomlaContentListKey as B, type CacheConfig as C, getJoomlaContentListOptions as D, getJoomlaContentOptions as E, getProductCategoryKey as F, type GetItemCategoryApiOptions as G, getProductCategoryOptions as H, type InfiniteScrollPage as I, getProductSearchKey as J, getProductSearchOptions as K, getSearchSuggestionsKey as L, getSearchSuggestionsOptions as M, useAugurApi as N, useAugurAuth as O, type PageData as P, useAugurCache as Q, type SearchSuggestionsResponse as S, type SearchSuggestion as a, type AugurApiClient as b, type AugurAuthContext as c, AugurHooksProvider as d, type CacheProvider as e, type CacheTierConfig as f, getCartPricingQueryOptions as g, getCategoryItemsInfiniteKey as h, getCategoryItemsInfiniteOptions as i, getInvMastDocKey as j, getInvMastDocOptions as k, getInvMastKey as l, getInvMastOptions as m, getInvMastStockKey as n, getInvMastStockOptions as o, getItemAttributesKey as p, getItemAttributesOptions as q, getItemCategoryKey as r, getItemCategoryOptions as s, getItemDetailsKey as t, getItemDetailsOptions as u, getItemPriceKey as v, getItemPriceOptions as w, getItemSearchInfiniteKey as x, getItemSearchInfiniteOptions as y, getJoomlaContentKey as z };
477
+ export { type AugurCallbacks as A, getJoomlaContentKey as B, type CacheConfig as C, getJoomlaContentListKey as D, getJoomlaContentListOptions as E, getJoomlaContentOptions as F, type GetItemCategoryApiOptions as G, getProductCategoryKey as H, type InfiniteScrollPage as I, getProductCategoryOptions as J, getProductSearchKey as K, getProductSearchOptions as L, getSearchSuggestionsKey as M, getSearchSuggestionsOptions as N, useAugurApi as O, type PageData as P, useAugurAuth as Q, useAugurCache as R, type SearchSuggestionsResponse as S, type SearchSuggestion as a, type AugurApiClient as b, type AugurAuthContext as c, type PersistenceConfig as d, AugurHooksProvider as e, type CacheProvider as f, type CacheTierConfig as g, getCartPricingQueryOptions as h, getCategoryItemsInfiniteKey as i, getCategoryItemsInfiniteOptions as j, getInvMastDocKey as k, getInvMastDocOptions as l, getInvMastKey as m, getInvMastOptions as n, getInvMastStockKey as o, getInvMastStockOptions as p, getItemAttributesKey as q, getItemAttributesOptions as r, getItemCategoryKey as s, getItemCategoryOptions as t, getItemDetailsKey as u, getItemDetailsOptions as v, getItemPriceKey as w, getItemPriceOptions as x, getItemSearchInfiniteKey as y, getItemSearchInfiniteOptions as z };
@@ -70,6 +70,23 @@ interface CacheConfig {
70
70
  /** TTLs for frequently-changing data (prices, stock, search). */
71
71
  semiStatic?: CacheTierConfig;
72
72
  }
73
+ /** Configuration for React Query localStorage persistence. */
74
+ interface PersistenceConfig {
75
+ /** localStorage key for the persisted cache. */
76
+ key: string;
77
+ /** Cache buster string. When changed, persisted data is discarded. In development, defaults to Date.now(). */
78
+ buster?: string;
79
+ /** Max age of persisted data in ms. Default: 24 hours. */
80
+ maxAge?: number;
81
+ /** Query key prefixes to persist. Only successful queries whose first key element matches are persisted. */
82
+ persistableKeys: string[];
83
+ /** Per-key-prefix LRU limits. Queries exceeding the limit are evicted oldest-first by dataUpdatedAt. */
84
+ limits?: Record<string, number>;
85
+ /** localStorage size threshold in MB before eviction runs. Default: 3. */
86
+ maxStorageMB?: number;
87
+ /** Write throttle in ms. Default: 1000. */
88
+ throttleMs?: number;
89
+ }
73
90
  /** API options for item category queries. */
74
91
  interface GetItemCategoryApiOptions {
75
92
  childrenFilter?: string;
@@ -457,4 +474,4 @@ declare const getJoomlaContentListOptions: (api: AugurApiClient, categoryId: num
457
474
  gcTime: number | undefined;
458
475
  };
459
476
 
460
- export { type AugurCallbacks as A, getJoomlaContentListKey as B, type CacheConfig as C, getJoomlaContentListOptions as D, getJoomlaContentOptions as E, getProductCategoryKey as F, type GetItemCategoryApiOptions as G, getProductCategoryOptions as H, type InfiniteScrollPage as I, getProductSearchKey as J, getProductSearchOptions as K, getSearchSuggestionsKey as L, getSearchSuggestionsOptions as M, useAugurApi as N, useAugurAuth as O, type PageData as P, useAugurCache as Q, type SearchSuggestionsResponse as S, type SearchSuggestion as a, type AugurApiClient as b, type AugurAuthContext as c, AugurHooksProvider as d, type CacheProvider as e, type CacheTierConfig as f, getCartPricingQueryOptions as g, getCategoryItemsInfiniteKey as h, getCategoryItemsInfiniteOptions as i, getInvMastDocKey as j, getInvMastDocOptions as k, getInvMastKey as l, getInvMastOptions as m, getInvMastStockKey as n, getInvMastStockOptions as o, getItemAttributesKey as p, getItemAttributesOptions as q, getItemCategoryKey as r, getItemCategoryOptions as s, getItemDetailsKey as t, getItemDetailsOptions as u, getItemPriceKey as v, getItemPriceOptions as w, getItemSearchInfiniteKey as x, getItemSearchInfiniteOptions as y, getJoomlaContentKey as z };
477
+ export { type AugurCallbacks as A, getJoomlaContentKey as B, type CacheConfig as C, getJoomlaContentListKey as D, getJoomlaContentListOptions as E, getJoomlaContentOptions as F, type GetItemCategoryApiOptions as G, getProductCategoryKey as H, type InfiniteScrollPage as I, getProductCategoryOptions as J, getProductSearchKey as K, getProductSearchOptions as L, getSearchSuggestionsKey as M, getSearchSuggestionsOptions as N, useAugurApi as O, type PageData as P, useAugurAuth as Q, useAugurCache as R, type SearchSuggestionsResponse as S, type SearchSuggestion as a, type AugurApiClient as b, type AugurAuthContext as c, type PersistenceConfig as d, AugurHooksProvider as e, type CacheProvider as f, type CacheTierConfig as g, getCartPricingQueryOptions as h, getCategoryItemsInfiniteKey as i, getCategoryItemsInfiniteOptions as j, getInvMastDocKey as k, getInvMastDocOptions as l, getInvMastKey as m, getInvMastOptions as n, getInvMastStockKey as o, getInvMastStockOptions as p, getItemAttributesKey as q, getItemAttributesOptions as r, getItemCategoryKey as s, getItemCategoryOptions as t, getItemDetailsKey as u, getItemDetailsOptions as v, getItemPriceKey as w, getItemPriceOptions as x, getItemSearchInfiniteKey as y, getItemSearchInfiniteOptions as z };
package/dist/server.cjs CHANGED
@@ -29,7 +29,7 @@
29
29
 
30
30
 
31
31
 
32
- var _chunk4CNSPZ7Qcjs = require('./chunk-4CNSPZ7Q.cjs');
32
+ var _chunkIYEN7NGCcjs = require('./chunk-IYEN7NGC.cjs');
33
33
 
34
34
 
35
35
 
@@ -61,5 +61,5 @@ var _chunk4CNSPZ7Qcjs = require('./chunk-4CNSPZ7Q.cjs');
61
61
 
62
62
 
63
63
 
64
- exports.getCartPricingQueryOptions = _chunk4CNSPZ7Qcjs.getCartPricingQueryOptions; exports.getCategoryItemsInfiniteKey = _chunk4CNSPZ7Qcjs.getCategoryItemsInfiniteKey; exports.getCategoryItemsInfiniteOptions = _chunk4CNSPZ7Qcjs.getCategoryItemsInfiniteOptions; exports.getInvMastDocKey = _chunk4CNSPZ7Qcjs.getInvMastDocKey; exports.getInvMastDocOptions = _chunk4CNSPZ7Qcjs.getInvMastDocOptions; exports.getInvMastKey = _chunk4CNSPZ7Qcjs.getInvMastKey; exports.getInvMastOptions = _chunk4CNSPZ7Qcjs.getInvMastOptions; exports.getInvMastStockKey = _chunk4CNSPZ7Qcjs.getInvMastStockKey; exports.getInvMastStockOptions = _chunk4CNSPZ7Qcjs.getInvMastStockOptions; exports.getItemAttributesKey = _chunk4CNSPZ7Qcjs.getItemAttributesKey; exports.getItemAttributesOptions = _chunk4CNSPZ7Qcjs.getItemAttributesOptions; exports.getItemCategoryKey = _chunk4CNSPZ7Qcjs.getItemCategoryKey; exports.getItemCategoryOptions = _chunk4CNSPZ7Qcjs.getItemCategoryOptions; exports.getItemDetailsKey = _chunk4CNSPZ7Qcjs.getItemDetailsKey; exports.getItemDetailsOptions = _chunk4CNSPZ7Qcjs.getItemDetailsOptions; exports.getItemPriceKey = _chunk4CNSPZ7Qcjs.getItemPriceKey; exports.getItemPriceOptions = _chunk4CNSPZ7Qcjs.getItemPriceOptions; exports.getItemSearchInfiniteKey = _chunk4CNSPZ7Qcjs.getItemSearchInfiniteKey; exports.getItemSearchInfiniteOptions = _chunk4CNSPZ7Qcjs.getItemSearchInfiniteOptions; exports.getJoomlaContentKey = _chunk4CNSPZ7Qcjs.getJoomlaContentKey; exports.getJoomlaContentListKey = _chunk4CNSPZ7Qcjs.getJoomlaContentListKey; exports.getJoomlaContentListOptions = _chunk4CNSPZ7Qcjs.getJoomlaContentListOptions; exports.getJoomlaContentOptions = _chunk4CNSPZ7Qcjs.getJoomlaContentOptions; exports.getProductCategoryKey = _chunk4CNSPZ7Qcjs.getProductCategoryKey; exports.getProductCategoryOptions = _chunk4CNSPZ7Qcjs.getProductCategoryOptions; exports.getProductSearchKey = _chunk4CNSPZ7Qcjs.getProductSearchKey; exports.getProductSearchOptions = _chunk4CNSPZ7Qcjs.getProductSearchOptions; exports.getSearchSuggestionsKey = _chunk4CNSPZ7Qcjs.getSearchSuggestionsKey; exports.getSearchSuggestionsOptions = _chunk4CNSPZ7Qcjs.getSearchSuggestionsOptions; exports.stableStringify = _chunk4CNSPZ7Qcjs.stableStringify;
64
+ exports.getCartPricingQueryOptions = _chunkIYEN7NGCcjs.getCartPricingQueryOptions; exports.getCategoryItemsInfiniteKey = _chunkIYEN7NGCcjs.getCategoryItemsInfiniteKey; exports.getCategoryItemsInfiniteOptions = _chunkIYEN7NGCcjs.getCategoryItemsInfiniteOptions; exports.getInvMastDocKey = _chunkIYEN7NGCcjs.getInvMastDocKey; exports.getInvMastDocOptions = _chunkIYEN7NGCcjs.getInvMastDocOptions; exports.getInvMastKey = _chunkIYEN7NGCcjs.getInvMastKey; exports.getInvMastOptions = _chunkIYEN7NGCcjs.getInvMastOptions; exports.getInvMastStockKey = _chunkIYEN7NGCcjs.getInvMastStockKey; exports.getInvMastStockOptions = _chunkIYEN7NGCcjs.getInvMastStockOptions; exports.getItemAttributesKey = _chunkIYEN7NGCcjs.getItemAttributesKey; exports.getItemAttributesOptions = _chunkIYEN7NGCcjs.getItemAttributesOptions; exports.getItemCategoryKey = _chunkIYEN7NGCcjs.getItemCategoryKey; exports.getItemCategoryOptions = _chunkIYEN7NGCcjs.getItemCategoryOptions; exports.getItemDetailsKey = _chunkIYEN7NGCcjs.getItemDetailsKey; exports.getItemDetailsOptions = _chunkIYEN7NGCcjs.getItemDetailsOptions; exports.getItemPriceKey = _chunkIYEN7NGCcjs.getItemPriceKey; exports.getItemPriceOptions = _chunkIYEN7NGCcjs.getItemPriceOptions; exports.getItemSearchInfiniteKey = _chunkIYEN7NGCcjs.getItemSearchInfiniteKey; exports.getItemSearchInfiniteOptions = _chunkIYEN7NGCcjs.getItemSearchInfiniteOptions; exports.getJoomlaContentKey = _chunkIYEN7NGCcjs.getJoomlaContentKey; exports.getJoomlaContentListKey = _chunkIYEN7NGCcjs.getJoomlaContentListKey; exports.getJoomlaContentListOptions = _chunkIYEN7NGCcjs.getJoomlaContentListOptions; exports.getJoomlaContentOptions = _chunkIYEN7NGCcjs.getJoomlaContentOptions; exports.getProductCategoryKey = _chunkIYEN7NGCcjs.getProductCategoryKey; exports.getProductCategoryOptions = _chunkIYEN7NGCcjs.getProductCategoryOptions; exports.getProductSearchKey = _chunkIYEN7NGCcjs.getProductSearchKey; exports.getProductSearchOptions = _chunkIYEN7NGCcjs.getProductSearchOptions; exports.getSearchSuggestionsKey = _chunkIYEN7NGCcjs.getSearchSuggestionsKey; exports.getSearchSuggestionsOptions = _chunkIYEN7NGCcjs.getSearchSuggestionsOptions; exports.stableStringify = _chunkIYEN7NGCcjs.stableStringify;
65
65
  //# sourceMappingURL=server.cjs.map
package/dist/server.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { b as AugurApiClient, c as AugurAuthContext, A as AugurCallbacks, I as InfiniteScrollPage, P as PageData, g as getCartPricingQueryOptions, h as getCategoryItemsInfiniteKey, i as getCategoryItemsInfiniteOptions, j as getInvMastDocKey, k as getInvMastDocOptions, l as getInvMastKey, m as getInvMastOptions, n as getInvMastStockKey, o as getInvMastStockOptions, p as getItemAttributesKey, q as getItemAttributesOptions, r as getItemCategoryKey, s as getItemCategoryOptions, t as getItemDetailsKey, u as getItemDetailsOptions, v as getItemPriceKey, w as getItemPriceOptions, x as getItemSearchInfiniteKey, y as getItemSearchInfiniteOptions, z as getJoomlaContentKey, B as getJoomlaContentListKey, D as getJoomlaContentListOptions, E as getJoomlaContentOptions, F as getProductCategoryKey, H as getProductCategoryOptions, J as getProductSearchKey, K as getProductSearchOptions, L as getSearchSuggestionsKey, M as getSearchSuggestionsOptions } from './joomla-content-list-CDF5-OJ3.cjs';
1
+ export { b as AugurApiClient, c as AugurAuthContext, A as AugurCallbacks, I as InfiniteScrollPage, P as PageData, h as getCartPricingQueryOptions, i as getCategoryItemsInfiniteKey, j as getCategoryItemsInfiniteOptions, k as getInvMastDocKey, l as getInvMastDocOptions, m as getInvMastKey, n as getInvMastOptions, o as getInvMastStockKey, p as getInvMastStockOptions, q as getItemAttributesKey, r as getItemAttributesOptions, s as getItemCategoryKey, t as getItemCategoryOptions, u as getItemDetailsKey, v as getItemDetailsOptions, w as getItemPriceKey, x as getItemPriceOptions, y as getItemSearchInfiniteKey, z as getItemSearchInfiniteOptions, B as getJoomlaContentKey, D as getJoomlaContentListKey, E as getJoomlaContentListOptions, F as getJoomlaContentOptions, H as getProductCategoryKey, J as getProductCategoryOptions, K as getProductSearchKey, L as getProductSearchOptions, M as getSearchSuggestionsKey, N as getSearchSuggestionsOptions } from './joomla-content-list-DGPtwJ99.cjs';
2
2
  import '@simpleapps-com/augur-utils';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
package/dist/server.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { b as AugurApiClient, c as AugurAuthContext, A as AugurCallbacks, I as InfiniteScrollPage, P as PageData, g as getCartPricingQueryOptions, h as getCategoryItemsInfiniteKey, i as getCategoryItemsInfiniteOptions, j as getInvMastDocKey, k as getInvMastDocOptions, l as getInvMastKey, m as getInvMastOptions, n as getInvMastStockKey, o as getInvMastStockOptions, p as getItemAttributesKey, q as getItemAttributesOptions, r as getItemCategoryKey, s as getItemCategoryOptions, t as getItemDetailsKey, u as getItemDetailsOptions, v as getItemPriceKey, w as getItemPriceOptions, x as getItemSearchInfiniteKey, y as getItemSearchInfiniteOptions, z as getJoomlaContentKey, B as getJoomlaContentListKey, D as getJoomlaContentListOptions, E as getJoomlaContentOptions, F as getProductCategoryKey, H as getProductCategoryOptions, J as getProductSearchKey, K as getProductSearchOptions, L as getSearchSuggestionsKey, M as getSearchSuggestionsOptions } from './joomla-content-list-CDF5-OJ3.js';
1
+ export { b as AugurApiClient, c as AugurAuthContext, A as AugurCallbacks, I as InfiniteScrollPage, P as PageData, h as getCartPricingQueryOptions, i as getCategoryItemsInfiniteKey, j as getCategoryItemsInfiniteOptions, k as getInvMastDocKey, l as getInvMastDocOptions, m as getInvMastKey, n as getInvMastOptions, o as getInvMastStockKey, p as getInvMastStockOptions, q as getItemAttributesKey, r as getItemAttributesOptions, s as getItemCategoryKey, t as getItemCategoryOptions, u as getItemDetailsKey, v as getItemDetailsOptions, w as getItemPriceKey, x as getItemPriceOptions, y as getItemSearchInfiniteKey, z as getItemSearchInfiniteOptions, B as getJoomlaContentKey, D as getJoomlaContentListKey, E as getJoomlaContentListOptions, F as getJoomlaContentOptions, H as getProductCategoryKey, J as getProductCategoryOptions, K as getProductSearchKey, L as getProductSearchOptions, M as getSearchSuggestionsKey, N as getSearchSuggestionsOptions } from './joomla-content-list-DGPtwJ99.js';
2
2
  import '@simpleapps-com/augur-utils';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
package/dist/server.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  getSearchSuggestionsKey,
30
30
  getSearchSuggestionsOptions,
31
31
  stableStringify
32
- } from "./chunk-D3APHDL4.js";
32
+ } from "./chunk-XPZVNYPR.js";
33
33
  export {
34
34
  getCartPricingQueryOptions,
35
35
  getCategoryItemsInfiniteKey,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simpleapps-com/augur-hooks",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Cross-platform React Query hooks and Zustand stores for Augur ecommerce sites",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -31,7 +31,7 @@
31
31
  "dist"
32
32
  ],
33
33
  "dependencies": {
34
- "@simpleapps-com/augur-utils": "0.2.1"
34
+ "@simpleapps-com/augur-utils": "0.2.3"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@simpleapps-com/augur-api": "^0.9.6",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-hooks/dist/chunk-4CNSPZ7Q.cjs","../src/queries/stable-stringify.ts","../src/queries/cache-helper.ts","../src/queries/item-price.ts","../src/queries/inv-mast-doc.ts","../src/queries/item-category.ts","../src/queries/inv-mast.ts","../src/queries/inv-mast-stock.ts","../src/queries/product-category.ts","../src/queries/item-details.ts","../src/queries/item-attributes.ts","../src/queries/product-search.ts","../src/queries/search-suggestions.ts","../src/queries/cart-pricing.ts","../src/queries/category-items-infinite.ts","../src/queries/item-search-infinite.ts","../src/queries/joomla-content.ts","../src/queries/joomla-content-list.ts"],"names":[],"mappings":"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AAAc,QAAA;AAAiB,QAAA;AACjC,MAAA;AACF,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACQ,IAAA;AACA,IAAA;AACV,EAAA;AACF;AfsZc;AACA;AgB7dD;AACH,EAAA;AACV;AAEa;AAKL,EAAA;AACC,EAAA;AACK,IAAA;AACD,IAAA;AACD,MAAA;AACC,MAAA;AACL,wBAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACE,YAAA;AACD,UAAA;AACG,UAAA;AACJ,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACQ,IAAA;AACV,EAAA;AACF;AhB0dc;AACA;AiBvfD;AAIH,EAAA;AACV;AAEa;AAML,EAAA;AACC,EAAA;AACK,IAAA;AACD,IAAA;AACD,MAAA;AACC,MAAA;AACL,wBAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACE,YAAA;AACA,YAAA;AACA,YAAA;AACD,UAAA;AACD,UAAA;AACF,QAAA;AACA,QAAA;AAAY,QAAA;AACd,MAAA;AACF,IAAA;AACA,IAAA;AACQ,IAAA;AACV,EAAA;AACF;AjBifc;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-hooks/dist/chunk-4CNSPZ7Q.cjs","sourcesContent":[null,"/**\n * JSON.stringify with sorted object keys for deterministic cache keys.\n * Ensures { a: 1, b: 2 } and { b: 2, a: 1 } produce the same string.\n */\nexport function stableStringify(value: unknown): string {\n if (value === null || value === undefined) return JSON.stringify(value);\n if (typeof value !== \"object\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n const obj = value as Record<string, unknown>;\n const keys = Object.keys(obj).sort();\n const entries = keys.map(\n (key) => `${JSON.stringify(key)}:${stableStringify(obj[key])}`,\n );\n return `{${entries.join(\",\")}}`;\n}\n","import type { CacheProvider, CacheTierConfig } from \"../types\";\nimport { stableStringify } from \"./stable-stringify\";\n\n/**\n * FNV-1a 32-bit hash. Fast, cross-platform (no Node crypto needed).\n */\nfunction fnv1a(str: string): string {\n let h = 0x811c9dc5;\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i);\n h = Math.imul(h, 0x01000193);\n }\n return (h >>> 0).toString(16).padStart(8, \"0\");\n}\n\n/**\n * Wraps an async function with optional Redis caching.\n *\n * - When `provider` and `tier.redis` are both set, checks Redis before\n * calling `fn`, then caches the result on miss.\n * - When either is missing, calls `fn` directly (no-op passthrough).\n *\n * @param provider Redis-compatible get/set + prefix. Undefined = skip Redis.\n * @param tier Cache tier config. Undefined or missing `redis` = skip Redis.\n * @param methodPath Dot-separated SDK method path (used as cache key segment).\n * @param fn The async function to cache (typically the SDK call).\n * @param keyArgs Values to hash for the cache key (e.g. query params).\n */\nexport async function withCache<T>(\n provider: CacheProvider | undefined,\n tier: CacheTierConfig | undefined,\n methodPath: string,\n fn: () => Promise<T>,\n ...keyArgs: unknown[]\n): Promise<T> {\n const redisTtl = tier?.redis;\n if (!provider || !redisTtl) return fn();\n\n const key = `${provider.prefix}sdk:${methodPath}:${fnv1a(stableStringify(keyArgs))}`;\n\n try {\n const cached = await provider.get(key);\n if (cached != null) return JSON.parse(cached) as T;\n } catch {\n /* Redis read error — fall through to SDK call */\n }\n\n const result = await fn();\n\n try {\n provider.set(key, JSON.stringify(result), redisTtl).catch(() => {});\n } catch {\n /* Non-serializable or write error — skip caching */\n }\n\n return result;\n}\n","import type { TPriceData } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\n/**\n * Generates a consistent query key for item price queries.\n * Usable in both client hooks and server-side prefetch.\n */\nexport const getItemPriceKey = (\n itemId: string | undefined,\n customerId: string | number | undefined,\n quantity: number = 1,\n) => {\n return [\"price\", itemId?.toUpperCase() || \"\", customerId, quantity] as const;\n};\n\n/**\n * Query options for item price. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getItemPriceOptions = (\n api: AugurApiClient,\n itemId: string | undefined,\n customerId: string | number | undefined,\n quantity: number = 1,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getItemPriceKey(itemId, customerId, quantity),\n queryFn: async (): Promise<TPriceData> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"pricing.priceEngine.get\",\n async () => {\n const response = await api.pricing.priceEngine.get({\n itemId: itemId?.toUpperCase() || \"\",\n customerId: Number(customerId),\n quantity,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n itemId, customerId, quantity,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n refetchOnReconnect: true,\n refetchOnWindowFocus: false,\n meta: { persist: true },\n };\n};\n","import type { TInvMastDoc } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\n/**\n * Generates a consistent query key for inv mast doc queries.\n * Usable in both client hooks and server-side prefetch.\n */\nexport const getInvMastDocKey = (\n invMastUid: number,\n itemId: string,\n includePricing: \"Y\" | \"N\",\n) => {\n return [\n \"invMastDoc\",\n invMastUid,\n itemId.toUpperCase(),\n includePricing,\n ] as const;\n};\n\n/**\n * Query options for inv mast doc. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getInvMastDocOptions = (\n api: AugurApiClient,\n invMastUid: number,\n itemId: string,\n includePricing: \"Y\" | \"N\",\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getInvMastDocKey(invMastUid, itemId, includePricing),\n queryFn: async (): Promise<TInvMastDoc> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.doc.list\",\n async () => {\n const response = await api.items.invMast.doc.list(invMastUid, {\n itemId: itemId.toUpperCase(),\n includePricing,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Item not found\");\n return response.data;\n },\n invMastUid,\n itemId,\n includePricing,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TCategory } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig, GetItemCategoryApiOptions } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\ntype ItemCategoryQueryKey = readonly [\n \"itemCategory\",\n number,\n GetItemCategoryApiOptions | undefined,\n];\n\n/**\n * Generates a consistent query key for item category queries.\n * Usable in both client hooks and server-side prefetch.\n */\nexport const getItemCategoryKey = (\n itemCategoryUid: number,\n apiOptions?: GetItemCategoryApiOptions,\n): ItemCategoryQueryKey => {\n return [\"itemCategory\", itemCategoryUid, apiOptions] as const;\n};\n\n/**\n * Query options for item category. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getItemCategoryOptions = (\n api: AugurApiClient,\n itemCategoryUid: number,\n apiOptions?: GetItemCategoryApiOptions,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getItemCategoryKey(itemCategoryUid, apiOptions),\n queryFn: async (): Promise<TCategory> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.itemCategory.get\",\n async () => {\n const response = await api.items.itemCategory.get(\n itemCategoryUid,\n { ...apiOptions, ...(edgeCache != null ? { edgeCache } : {}) },\n );\n if (!response.data) throw new Error(\"Item category not found\");\n return response.data;\n },\n itemCategoryUid,\n apiOptions,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TItemDetails } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getInvMastKey = (invMastUid: number, itemId: string) => {\n return [\"invMast\", invMastUid, itemId.toUpperCase()] as const;\n};\n\nexport const getInvMastOptions = (\n api: AugurApiClient,\n invMastUid: number,\n itemId: string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getInvMastKey(invMastUid, itemId),\n queryFn: async (): Promise<TItemDetails> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.get\",\n async () => {\n const response = await api.items.invMast.get(invMastUid, {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Item not found\");\n return response.data;\n },\n invMastUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TStockData } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getInvMastStockKey = (invMastUid: number | string) => {\n return [\"invMastStock\", invMastUid] as const;\n};\n\nexport const getInvMastStockOptions = (\n api: AugurApiClient,\n invMastUid: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getInvMastStockKey(invMastUid),\n queryFn: async (): Promise<number> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.stock.list\",\n async () => {\n const response = await api.items.invMast.stock.list(Number(invMastUid), {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n const stockData: TStockData[] = response.data?.stockData ?? [];\n return stockData.reduce(\n (qty: number, stock: TStockData) => qty + stock.qtyOnHand,\n 0,\n );\n },\n invMastUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TProductCategory } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\ntype ProductCategoryResponse = {\n itemCategoryDesc: string;\n childrenTotal: number;\n children: TProductCategory[];\n categoryImage: string | null;\n};\n\nexport const getProductCategoryKey = (\n itemCategoryUid: number | string | null,\n) => {\n return [\"productCategory\", itemCategoryUid] as const;\n};\n\nexport const getProductCategoryOptions = (\n api: AugurApiClient,\n itemCategoryUid: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getProductCategoryKey(itemCategoryUid),\n queryFn: async (): Promise<ProductCategoryResponse> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.itemCategory.get\",\n async () => {\n const response = await api.items.itemCategory.get(Number(itemCategoryUid), {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n itemCategoryUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TItemDetails } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getItemDetailsKey = (itemId: number | string) => {\n const normalizedId = typeof itemId === \"string\" ? itemId.toUpperCase() : itemId;\n return [\"itemDetails\", normalizedId] as const;\n};\n\nexport const getItemDetailsOptions = (\n api: AugurApiClient,\n itemId: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getItemDetailsKey(itemId),\n queryFn: async (): Promise<TItemDetails> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.doc.list\",\n async () => {\n const response = await api.items.invMast.doc.list(Number(itemId), {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Item not found\");\n return response.data;\n },\n itemId,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getItemAttributesKey = (\n itemCategoryUid: number | string | null,\n) => {\n return [\"itemAttributes\", itemCategoryUid] as const;\n};\n\nexport const getItemAttributesOptions = (\n api: AugurApiClient,\n itemCategoryUid: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getItemAttributesKey(itemCategoryUid),\n queryFn: async () => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.attributes.list\",\n async () => {\n const response = await api.openSearch.itemSearch.attributes.list({\n q: \"\",\n searchType: \"query\",\n classId5List: String(itemCategoryUid),\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n itemCategoryUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TProductItem } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig, PageData } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\ntype ProductSearchResponse = {\n items: TProductItem[];\n totalResults: number;\n};\n\n/**\n * Generates a consistent query key for product search queries.\n */\nexport const getProductSearchKey = (pageData: PageData) => {\n return [\n \"productSearch\",\n pageData.q,\n pageData.limit,\n pageData.offset,\n pageData.sortBy,\n pageData.itemCategoryUid,\n ] as const;\n};\n\n/**\n * Query options for product search. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getProductSearchOptions = (\n api: AugurApiClient,\n pageData: PageData,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getProductSearchKey(pageData),\n queryFn: async (): Promise<ProductSearchResponse> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.list\",\n async () => {\n const response = await api.openSearch.itemSearch.list({\n q: pageData.q,\n searchType: \"query\",\n size: pageData.limit,\n from: pageData.offset,\n classId5List: pageData.itemCategoryUid\n ? String(pageData.itemCategoryUid)\n : undefined,\n filters: pageData.filters\n ? JSON.stringify(pageData.filters)\n : undefined,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n pageData,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig, SearchSuggestionsResponse } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\n/**\n * Generates a consistent query key for search suggestion queries.\n */\nexport const getSearchSuggestionsKey = (\n query: string,\n limit: number,\n offset: number,\n) => {\n return [\"searchSuggestions\", query, limit, offset] as const;\n};\n\n/**\n * Query options for search suggestions. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getSearchSuggestionsOptions = (\n api: AugurApiClient,\n query: string,\n limit: number = 10,\n offset: number = 0,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getSearchSuggestionsKey(query, limit, offset),\n queryFn: async (): Promise<SearchSuggestionsResponse> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.suggestions.suggest.list\",\n async () => {\n const response = await api.openSearch.suggestions.suggest.list({\n q: query,\n size: limit,\n from: offset,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n query,\n limit,\n offset,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { getItemPriceOptions } from \"./item-price\";\n\n/**\n * Get cart pricing query options for prefetching or parent components.\n */\nexport function getCartPricingQueryOptions(\n api: AugurApiClient,\n cartLines: Array<{ itemId: string; quantity: number }>,\n customerId: string | number | undefined,\n cache?: CacheConfig,\n) {\n return cartLines.map((line) => ({\n ...getItemPriceOptions(api, line.itemId, customerId, line.quantity, cache),\n enabled: !!customerId && !!line.itemId,\n }));\n}\n","import {\n type TItemsFilters,\n type TProductItem,\n} from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { InfiniteScrollPage } from \"../callbacks\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nimport { stableStringify } from \"./stable-stringify\";\n\nexport const getCategoryItemsInfiniteKey = (\n itemCategoryUid: number,\n itemsFilters: TItemsFilters,\n) => {\n return [\n \"categoryItemsInfinite\",\n itemCategoryUid,\n stableStringify(itemsFilters),\n ] as const;\n};\n\n/**\n * Full infinite query options for category items.\n * Usable for server-side prefetch with `queryClient.prefetchInfiniteQuery()`.\n */\nexport const getCategoryItemsInfiniteOptions = (\n api: AugurApiClient,\n itemCategoryUid: number,\n itemsFilters: TItemsFilters,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getCategoryItemsInfiniteKey(itemCategoryUid, itemsFilters),\n queryFn: async ({\n pageParam = 0,\n }: {\n pageParam?: unknown;\n }): Promise<InfiniteScrollPage> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.list\",\n async () => {\n const response = await api.openSearch.itemSearch.list({\n q: itemsFilters.q || \"\",\n searchType: \"query\",\n size: itemsFilters.limit,\n from: pageParam as number,\n classId5List: String(itemCategoryUid),\n filters: itemsFilters.filters?.length\n ? JSON.stringify(itemsFilters.filters)\n : undefined,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n const items: TProductItem[] = response.data?.items ?? [];\n const total: number = response.data?.totalResults ?? 0;\n const nextOffset = (pageParam as number) + itemsFilters.limit;\n return {\n data: items,\n total,\n nextCursor: nextOffset < total ? nextOffset : undefined,\n };\n },\n itemCategoryUid, itemsFilters, pageParam,\n );\n },\n initialPageParam: 0,\n getNextPageParam: (lastPage: InfiniteScrollPage) => lastPage.nextCursor,\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import {\n type TItemsFilters,\n type TProductItem,\n} from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { InfiniteScrollPage } from \"../callbacks\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nimport { stableStringify } from \"./stable-stringify\";\n\nexport const getItemSearchInfiniteKey = (\n itemsFilters: TItemsFilters,\n itemCategoryUid?: number | string,\n) => {\n return [\n \"itemSearchInfinite\",\n stableStringify(itemsFilters),\n itemCategoryUid,\n ] as const;\n};\n\n/**\n * Full infinite query options for item search.\n * Usable for server-side prefetch with `queryClient.prefetchInfiniteQuery()`.\n */\nexport const getItemSearchInfiniteOptions = (\n api: AugurApiClient,\n itemsFilters: TItemsFilters,\n itemCategoryUid?: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getItemSearchInfiniteKey(itemsFilters, itemCategoryUid),\n queryFn: async ({\n pageParam = 0,\n }: {\n pageParam?: unknown;\n }): Promise<InfiniteScrollPage> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.list\",\n async () => {\n const response = await api.openSearch.itemSearch.list({\n q: itemsFilters.q,\n searchType: \"query\",\n size: itemsFilters.limit,\n from: pageParam as number,\n classId5List: itemCategoryUid ? String(itemCategoryUid) : undefined,\n filters: itemsFilters.filters?.length\n ? JSON.stringify(itemsFilters.filters)\n : undefined,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n const items: TProductItem[] = response.data?.items ?? [];\n const total: number = response.data?.totalResults ?? 0;\n const nextOffset = (pageParam as number) + itemsFilters.limit;\n return {\n data: items,\n total,\n nextCursor: nextOffset < total ? nextOffset : undefined,\n };\n },\n itemsFilters, itemCategoryUid, pageParam,\n );\n },\n initialPageParam: 0,\n getNextPageParam: (lastPage: InfiniteScrollPage) => lastPage.nextCursor,\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n meta: { persist: true },\n };\n};\n","import type { TJoomlaContent } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getJoomlaContentKey = (articleId: number | string) => {\n return [\"joomlaContent\", articleId] as const;\n};\n\nexport const getJoomlaContentOptions = (\n api: AugurApiClient,\n articleId: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getJoomlaContentKey(articleId),\n queryFn: async (): Promise<TJoomlaContent> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"joomla.content.doc.get\",\n async () => {\n const response = await api.joomla.content.doc.get(articleId, {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Article not found\");\n return response.data;\n },\n articleId,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import {\n type TJoomlaContent,\n type TJoomlaContentFilters,\n} from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getJoomlaContentListKey = (\n categoryId: number | string,\n filters?: Partial<TJoomlaContentFilters>,\n) => {\n return [\"joomlaContentList\", categoryId, filters] as const;\n};\n\nexport const getJoomlaContentListOptions = (\n api: AugurApiClient,\n categoryId: number | string,\n filters?: Partial<TJoomlaContentFilters>,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getJoomlaContentListKey(categoryId, filters),\n queryFn: async (): Promise<TJoomlaContent[]> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"joomla.content.list\",\n async () => {\n const response = await api.joomla.content.list({\n catid: categoryId,\n ...filters,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data ?? [];\n },\n categoryId, filters,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/queries/stable-stringify.ts","../src/queries/cache-helper.ts","../src/queries/item-price.ts","../src/queries/inv-mast-doc.ts","../src/queries/item-category.ts","../src/queries/inv-mast.ts","../src/queries/inv-mast-stock.ts","../src/queries/product-category.ts","../src/queries/item-details.ts","../src/queries/item-attributes.ts","../src/queries/product-search.ts","../src/queries/search-suggestions.ts","../src/queries/cart-pricing.ts","../src/queries/category-items-infinite.ts","../src/queries/item-search-infinite.ts","../src/queries/joomla-content.ts","../src/queries/joomla-content-list.ts"],"sourcesContent":["/**\n * JSON.stringify with sorted object keys for deterministic cache keys.\n * Ensures { a: 1, b: 2 } and { b: 2, a: 1 } produce the same string.\n */\nexport function stableStringify(value: unknown): string {\n if (value === null || value === undefined) return JSON.stringify(value);\n if (typeof value !== \"object\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n const obj = value as Record<string, unknown>;\n const keys = Object.keys(obj).sort();\n const entries = keys.map(\n (key) => `${JSON.stringify(key)}:${stableStringify(obj[key])}`,\n );\n return `{${entries.join(\",\")}}`;\n}\n","import type { CacheProvider, CacheTierConfig } from \"../types\";\nimport { stableStringify } from \"./stable-stringify\";\n\n/**\n * FNV-1a 32-bit hash. Fast, cross-platform (no Node crypto needed).\n */\nfunction fnv1a(str: string): string {\n let h = 0x811c9dc5;\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i);\n h = Math.imul(h, 0x01000193);\n }\n return (h >>> 0).toString(16).padStart(8, \"0\");\n}\n\n/**\n * Wraps an async function with optional Redis caching.\n *\n * - When `provider` and `tier.redis` are both set, checks Redis before\n * calling `fn`, then caches the result on miss.\n * - When either is missing, calls `fn` directly (no-op passthrough).\n *\n * @param provider Redis-compatible get/set + prefix. Undefined = skip Redis.\n * @param tier Cache tier config. Undefined or missing `redis` = skip Redis.\n * @param methodPath Dot-separated SDK method path (used as cache key segment).\n * @param fn The async function to cache (typically the SDK call).\n * @param keyArgs Values to hash for the cache key (e.g. query params).\n */\nexport async function withCache<T>(\n provider: CacheProvider | undefined,\n tier: CacheTierConfig | undefined,\n methodPath: string,\n fn: () => Promise<T>,\n ...keyArgs: unknown[]\n): Promise<T> {\n const redisTtl = tier?.redis;\n if (!provider || !redisTtl) return fn();\n\n const key = `${provider.prefix}sdk:${methodPath}:${fnv1a(stableStringify(keyArgs))}`;\n\n try {\n const cached = await provider.get(key);\n if (cached != null) return JSON.parse(cached) as T;\n } catch {\n /* Redis read error — fall through to SDK call */\n }\n\n const result = await fn();\n\n try {\n provider.set(key, JSON.stringify(result), redisTtl).catch(() => {});\n } catch {\n /* Non-serializable or write error — skip caching */\n }\n\n return result;\n}\n","import type { TPriceData } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\n/**\n * Generates a consistent query key for item price queries.\n * Usable in both client hooks and server-side prefetch.\n */\nexport const getItemPriceKey = (\n itemId: string | undefined,\n customerId: string | number | undefined,\n quantity: number = 1,\n) => {\n return [\"price\", itemId?.toUpperCase() || \"\", customerId, quantity] as const;\n};\n\n/**\n * Query options for item price. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getItemPriceOptions = (\n api: AugurApiClient,\n itemId: string | undefined,\n customerId: string | number | undefined,\n quantity: number = 1,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getItemPriceKey(itemId, customerId, quantity),\n queryFn: async (): Promise<TPriceData> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"pricing.priceEngine.get\",\n async () => {\n const response = await api.pricing.priceEngine.get({\n itemId: itemId?.toUpperCase() || \"\",\n customerId: Number(customerId),\n quantity,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n itemId, customerId, quantity,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n refetchOnReconnect: true,\n refetchOnWindowFocus: false,\n meta: { persist: true },\n };\n};\n","import type { TInvMastDoc } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\n/**\n * Generates a consistent query key for inv mast doc queries.\n * Usable in both client hooks and server-side prefetch.\n */\nexport const getInvMastDocKey = (\n invMastUid: number,\n itemId: string,\n includePricing: \"Y\" | \"N\",\n) => {\n return [\n \"invMastDoc\",\n invMastUid,\n itemId.toUpperCase(),\n includePricing,\n ] as const;\n};\n\n/**\n * Query options for inv mast doc. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getInvMastDocOptions = (\n api: AugurApiClient,\n invMastUid: number,\n itemId: string,\n includePricing: \"Y\" | \"N\",\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getInvMastDocKey(invMastUid, itemId, includePricing),\n queryFn: async (): Promise<TInvMastDoc> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.doc.list\",\n async () => {\n const response = await api.items.invMast.doc.list(invMastUid, {\n itemId: itemId.toUpperCase(),\n includePricing,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Item not found\");\n return response.data;\n },\n invMastUid,\n itemId,\n includePricing,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TCategory } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig, GetItemCategoryApiOptions } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\ntype ItemCategoryQueryKey = readonly [\n \"itemCategory\",\n number,\n GetItemCategoryApiOptions | undefined,\n];\n\n/**\n * Generates a consistent query key for item category queries.\n * Usable in both client hooks and server-side prefetch.\n */\nexport const getItemCategoryKey = (\n itemCategoryUid: number,\n apiOptions?: GetItemCategoryApiOptions,\n): ItemCategoryQueryKey => {\n return [\"itemCategory\", itemCategoryUid, apiOptions] as const;\n};\n\n/**\n * Query options for item category. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getItemCategoryOptions = (\n api: AugurApiClient,\n itemCategoryUid: number,\n apiOptions?: GetItemCategoryApiOptions,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getItemCategoryKey(itemCategoryUid, apiOptions),\n queryFn: async (): Promise<TCategory> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.itemCategory.get\",\n async () => {\n const response = await api.items.itemCategory.get(\n itemCategoryUid,\n { ...apiOptions, ...(edgeCache != null ? { edgeCache } : {}) },\n );\n if (!response.data) throw new Error(\"Item category not found\");\n return response.data;\n },\n itemCategoryUid,\n apiOptions,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TItemDetails } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getInvMastKey = (invMastUid: number, itemId: string) => {\n return [\"invMast\", invMastUid, itemId.toUpperCase()] as const;\n};\n\nexport const getInvMastOptions = (\n api: AugurApiClient,\n invMastUid: number,\n itemId: string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getInvMastKey(invMastUid, itemId),\n queryFn: async (): Promise<TItemDetails> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.get\",\n async () => {\n const response = await api.items.invMast.get(invMastUid, {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Item not found\");\n return response.data;\n },\n invMastUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TStockData } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getInvMastStockKey = (invMastUid: number | string) => {\n return [\"invMastStock\", invMastUid] as const;\n};\n\nexport const getInvMastStockOptions = (\n api: AugurApiClient,\n invMastUid: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getInvMastStockKey(invMastUid),\n queryFn: async (): Promise<number> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.stock.list\",\n async () => {\n const response = await api.items.invMast.stock.list(Number(invMastUid), {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n const stockData: TStockData[] = response.data?.stockData ?? [];\n return stockData.reduce(\n (qty: number, stock: TStockData) => qty + stock.qtyOnHand,\n 0,\n );\n },\n invMastUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TProductCategory } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\ntype ProductCategoryResponse = {\n itemCategoryDesc: string;\n childrenTotal: number;\n children: TProductCategory[];\n categoryImage: string | null;\n};\n\nexport const getProductCategoryKey = (\n itemCategoryUid: number | string | null,\n) => {\n return [\"productCategory\", itemCategoryUid] as const;\n};\n\nexport const getProductCategoryOptions = (\n api: AugurApiClient,\n itemCategoryUid: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getProductCategoryKey(itemCategoryUid),\n queryFn: async (): Promise<ProductCategoryResponse> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.itemCategory.get\",\n async () => {\n const response = await api.items.itemCategory.get(Number(itemCategoryUid), {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n itemCategoryUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TItemDetails } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getItemDetailsKey = (itemId: number | string) => {\n const normalizedId = typeof itemId === \"string\" ? itemId.toUpperCase() : itemId;\n return [\"itemDetails\", normalizedId] as const;\n};\n\nexport const getItemDetailsOptions = (\n api: AugurApiClient,\n itemId: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getItemDetailsKey(itemId),\n queryFn: async (): Promise<TItemDetails> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"items.invMast.doc.list\",\n async () => {\n const response = await api.items.invMast.doc.list(Number(itemId), {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Item not found\");\n return response.data;\n },\n itemId,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getItemAttributesKey = (\n itemCategoryUid: number | string | null,\n) => {\n return [\"itemAttributes\", itemCategoryUid] as const;\n};\n\nexport const getItemAttributesOptions = (\n api: AugurApiClient,\n itemCategoryUid: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getItemAttributesKey(itemCategoryUid),\n queryFn: async () => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.attributes.list\",\n async () => {\n const response = await api.openSearch.itemSearch.attributes.list({\n q: \"\",\n searchType: \"query\",\n classId5List: String(itemCategoryUid),\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n itemCategoryUid,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { TProductItem } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig, PageData } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\ntype ProductSearchResponse = {\n items: TProductItem[];\n totalResults: number;\n};\n\n/**\n * Generates a consistent query key for product search queries.\n */\nexport const getProductSearchKey = (pageData: PageData) => {\n return [\n \"productSearch\",\n pageData.q,\n pageData.limit,\n pageData.offset,\n pageData.sortBy,\n pageData.itemCategoryUid,\n ] as const;\n};\n\n/**\n * Query options for product search. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getProductSearchOptions = (\n api: AugurApiClient,\n pageData: PageData,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getProductSearchKey(pageData),\n queryFn: async (): Promise<ProductSearchResponse> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.list\",\n async () => {\n const response = await api.openSearch.itemSearch.list({\n q: pageData.q,\n searchType: \"query\",\n size: pageData.limit,\n from: pageData.offset,\n classId5List: pageData.itemCategoryUid\n ? String(pageData.itemCategoryUid)\n : undefined,\n filters: pageData.filters\n ? JSON.stringify(pageData.filters)\n : undefined,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n pageData,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig, SearchSuggestionsResponse } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\n/**\n * Generates a consistent query key for search suggestion queries.\n */\nexport const getSearchSuggestionsKey = (\n query: string,\n limit: number,\n offset: number,\n) => {\n return [\"searchSuggestions\", query, limit, offset] as const;\n};\n\n/**\n * Query options for search suggestions. Accepts the SDK instance so it works\n * in both client (via provider) and server (via direct construction).\n */\nexport const getSearchSuggestionsOptions = (\n api: AugurApiClient,\n query: string,\n limit: number = 10,\n offset: number = 0,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getSearchSuggestionsKey(query, limit, offset),\n queryFn: async (): Promise<SearchSuggestionsResponse> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.suggestions.suggest.list\",\n async () => {\n const response = await api.openSearch.suggestions.suggest.list({\n q: query,\n size: limit,\n from: offset,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data;\n },\n query,\n limit,\n offset,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { getItemPriceOptions } from \"./item-price\";\n\n/**\n * Get cart pricing query options for prefetching or parent components.\n */\nexport function getCartPricingQueryOptions(\n api: AugurApiClient,\n cartLines: Array<{ itemId: string; quantity: number }>,\n customerId: string | number | undefined,\n cache?: CacheConfig,\n) {\n return cartLines.map((line) => ({\n ...getItemPriceOptions(api, line.itemId, customerId, line.quantity, cache),\n enabled: !!customerId && !!line.itemId,\n }));\n}\n","import {\n type TItemsFilters,\n type TProductItem,\n} from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { InfiniteScrollPage } from \"../callbacks\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nimport { stableStringify } from \"./stable-stringify\";\n\nexport const getCategoryItemsInfiniteKey = (\n itemCategoryUid: number,\n itemsFilters: TItemsFilters,\n) => {\n return [\n \"categoryItemsInfinite\",\n itemCategoryUid,\n stableStringify(itemsFilters),\n ] as const;\n};\n\n/**\n * Full infinite query options for category items.\n * Usable for server-side prefetch with `queryClient.prefetchInfiniteQuery()`.\n */\nexport const getCategoryItemsInfiniteOptions = (\n api: AugurApiClient,\n itemCategoryUid: number,\n itemsFilters: TItemsFilters,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getCategoryItemsInfiniteKey(itemCategoryUid, itemsFilters),\n queryFn: async ({\n pageParam = 0,\n }: {\n pageParam?: unknown;\n }): Promise<InfiniteScrollPage> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.list\",\n async () => {\n const response = await api.openSearch.itemSearch.list({\n q: itemsFilters.q || \"\",\n searchType: \"query\",\n size: itemsFilters.limit,\n from: pageParam as number,\n classId5List: String(itemCategoryUid),\n filters: itemsFilters.filters?.length\n ? JSON.stringify(itemsFilters.filters)\n : undefined,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n const items: TProductItem[] = response.data?.items ?? [];\n const total: number = response.data?.totalResults ?? 0;\n const nextOffset = (pageParam as number) + itemsFilters.limit;\n return {\n data: items,\n total,\n nextCursor: nextOffset < total ? nextOffset : undefined,\n };\n },\n itemCategoryUid, itemsFilters, pageParam,\n );\n },\n initialPageParam: 0,\n getNextPageParam: (lastPage: InfiniteScrollPage) => lastPage.nextCursor,\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import {\n type TItemsFilters,\n type TProductItem,\n} from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { InfiniteScrollPage } from \"../callbacks\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nimport { stableStringify } from \"./stable-stringify\";\n\nexport const getItemSearchInfiniteKey = (\n itemsFilters: TItemsFilters,\n itemCategoryUid?: number | string,\n) => {\n return [\n \"itemSearchInfinite\",\n stableStringify(itemsFilters),\n itemCategoryUid,\n ] as const;\n};\n\n/**\n * Full infinite query options for item search.\n * Usable for server-side prefetch with `queryClient.prefetchInfiniteQuery()`.\n */\nexport const getItemSearchInfiniteOptions = (\n api: AugurApiClient,\n itemsFilters: TItemsFilters,\n itemCategoryUid?: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getItemSearchInfiniteKey(itemsFilters, itemCategoryUid),\n queryFn: async ({\n pageParam = 0,\n }: {\n pageParam?: unknown;\n }): Promise<InfiniteScrollPage> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"openSearch.itemSearch.list\",\n async () => {\n const response = await api.openSearch.itemSearch.list({\n q: itemsFilters.q,\n searchType: \"query\",\n size: itemsFilters.limit,\n from: pageParam as number,\n classId5List: itemCategoryUid ? String(itemCategoryUid) : undefined,\n filters: itemsFilters.filters?.length\n ? JSON.stringify(itemsFilters.filters)\n : undefined,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n const items: TProductItem[] = response.data?.items ?? [];\n const total: number = response.data?.totalResults ?? 0;\n const nextOffset = (pageParam as number) + itemsFilters.limit;\n return {\n data: items,\n total,\n nextCursor: nextOffset < total ? nextOffset : undefined,\n };\n },\n itemsFilters, itemCategoryUid, pageParam,\n );\n },\n initialPageParam: 0,\n getNextPageParam: (lastPage: InfiniteScrollPage) => lastPage.nextCursor,\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n meta: { persist: true },\n };\n};\n","import type { TJoomlaContent } from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getJoomlaContentKey = (articleId: number | string) => {\n return [\"joomlaContent\", articleId] as const;\n};\n\nexport const getJoomlaContentOptions = (\n api: AugurApiClient,\n articleId: number | string,\n cache?: CacheConfig,\n) => {\n const tier = cache?.static;\n return {\n queryKey: getJoomlaContentKey(articleId),\n queryFn: async (): Promise<TJoomlaContent> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"joomla.content.doc.get\",\n async () => {\n const response = await api.joomla.content.doc.get(articleId, {\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n if (!response.data) throw new Error(\"Article not found\");\n return response.data;\n },\n articleId,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n","import {\n type TJoomlaContent,\n type TJoomlaContentFilters,\n} from \"@simpleapps-com/augur-utils\";\nimport type { AugurApiClient } from \"../provider\";\nimport type { CacheConfig } from \"../types\";\nimport { withCache } from \"./cache-helper\";\n\nexport const getJoomlaContentListKey = (\n categoryId: number | string,\n filters?: Partial<TJoomlaContentFilters>,\n) => {\n return [\"joomlaContentList\", categoryId, filters] as const;\n};\n\nexport const getJoomlaContentListOptions = (\n api: AugurApiClient,\n categoryId: number | string,\n filters?: Partial<TJoomlaContentFilters>,\n cache?: CacheConfig,\n) => {\n const tier = cache?.semiStatic;\n return {\n queryKey: getJoomlaContentListKey(categoryId, filters),\n queryFn: async (): Promise<TJoomlaContent[]> => {\n const edgeCache = tier?.edgeCache;\n return withCache(\n cache?.provider,\n tier,\n \"joomla.content.list\",\n async () => {\n const response = await api.joomla.content.list({\n catid: categoryId,\n ...filters,\n ...(edgeCache != null ? { edgeCache } : {}),\n });\n return response.data ?? [];\n },\n categoryId, filters,\n );\n },\n staleTime: tier?.staleTime,\n gcTime: tier?.gcTime,\n };\n};\n"],"mappings":"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","names":[]}