@tiledev/sdk-shopify 0.5.0 → 0.7.0
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/README.md +114 -1
- package/dist/blogs.d.ts.map +1 -1
- package/dist/blogs.js +3 -3
- package/dist/blogs.js.map +1 -1
- package/dist/cart.d.ts.map +1 -1
- package/dist/cart.js +27 -22
- package/dist/cart.js.map +1 -1
- package/dist/client.d.ts +20 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +80 -19
- package/dist/client.js.map +1 -1
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js +8 -5
- package/dist/collections.js.map +1 -1
- package/dist/customer.d.ts.map +1 -1
- package/dist/customer.js +3 -3
- package/dist/customer.js.map +1 -1
- package/dist/deviceStore.d.ts +9 -0
- package/dist/deviceStore.d.ts.map +1 -0
- package/dist/deviceStore.js +77 -0
- package/dist/deviceStore.js.map +1 -0
- package/dist/deviceStore.native.d.ts +14 -0
- package/dist/deviceStore.native.d.ts.map +1 -0
- package/dist/deviceStore.native.js +47 -0
- package/dist/deviceStore.native.js.map +1 -0
- package/dist/deviceStoreCore.d.ts +24 -0
- package/dist/deviceStoreCore.d.ts.map +1 -0
- package/dist/deviceStoreCore.js +40 -0
- package/dist/deviceStoreCore.js.map +1 -0
- package/dist/filters.d.ts +32 -0
- package/dist/filters.d.ts.map +1 -0
- package/dist/filters.js +67 -0
- package/dist/filters.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -1
- package/dist/index.js.map +1 -1
- package/dist/productStore.d.ts +43 -0
- package/dist/productStore.d.ts.map +1 -0
- package/dist/productStore.js +309 -0
- package/dist/productStore.js.map +1 -0
- package/dist/products.d.ts.map +1 -1
- package/dist/products.js +28 -19
- package/dist/products.js.map +1 -1
- package/dist/queries.d.ts +24 -24
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +4 -3
- package/dist/queries.js.map +1 -1
- package/dist/react/ShopifyProvider.d.ts +2 -0
- package/dist/react/ShopifyProvider.d.ts.map +1 -1
- package/dist/react/ShopifyProvider.js +18 -1
- package/dist/react/ShopifyProvider.js.map +1 -1
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +9 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/useCollectionProducts.d.ts +12 -20
- package/dist/react/useCollectionProducts.d.ts.map +1 -1
- package/dist/react/useCollectionProducts.js +36 -137
- package/dist/react/useCollectionProducts.js.map +1 -1
- package/dist/react/useProduct.d.ts +36 -0
- package/dist/react/useProduct.d.ts.map +1 -0
- package/dist/react/useProduct.js +126 -0
- package/dist/react/useProduct.js.map +1 -0
- package/dist/react/useProductFeed.d.ts +57 -0
- package/dist/react/useProductFeed.d.ts.map +1 -0
- package/dist/react/useProductFeed.js +231 -0
- package/dist/react/useProductFeed.js.map +1 -0
- package/dist/react/useSearch.d.ts +30 -0
- package/dist/react/useSearch.d.ts.map +1 -0
- package/dist/react/useSearch.js +61 -0
- package/dist/react/useSearch.js.map +1 -0
- package/dist/requestCache.d.ts +48 -0
- package/dist/requestCache.d.ts.map +1 -0
- package/dist/requestCache.js +173 -0
- package/dist/requestCache.js.map +1 -0
- package/dist/types.d.ts +67 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/variants.js +1 -1
- package/dist/variants.js.map +1 -1
- package/dist/wishlist.d.ts.map +1 -1
- package/dist/wishlist.js +4 -1
- package/dist/wishlist.js.map +1 -1
- package/package.json +9 -3
package/dist/customer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer.js","sourceRoot":"","sources":["../src/customer.ts"],"names":[],"mappings":";;;AAAA,qCAAuD;AACvD,uCAQmB;
|
|
1
|
+
{"version":3,"file":"customer.js","sourceRoot":"","sources":["../src/customer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device storage — WEB build (the editor preview, browsers, tests): `localStorage`, which is
|
|
3
|
+
* synchronous like MMKV. See `deviceStoreCore.ts`; the native build is `deviceStore.native.ts`.
|
|
4
|
+
*/
|
|
5
|
+
import { type DeviceStore } from './deviceStoreCore';
|
|
6
|
+
export declare function deviceStore(): DeviceStore;
|
|
7
|
+
/** Tests only: swap the backend (null re-opens the default on next use). */
|
|
8
|
+
export declare function setDeviceStore(next: DeviceStore | null): void;
|
|
9
|
+
//# sourceMappingURL=deviceStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStore.d.ts","sourceRoot":"","sources":["../src/deviceStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsDlE,wBAAgB,WAAW,IAAI,WAAW,CAGzC;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAE7D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deviceStore = deviceStore;
|
|
4
|
+
exports.setDeviceStore = setDeviceStore;
|
|
5
|
+
/**
|
|
6
|
+
* Device storage — WEB build (the editor preview, browsers, tests): `localStorage`, which is
|
|
7
|
+
* synchronous like MMKV. See `deviceStoreCore.ts`; the native build is `deviceStore.native.ts`.
|
|
8
|
+
*/
|
|
9
|
+
const deviceStoreCore_1 = require("./deviceStoreCore");
|
|
10
|
+
const PREFIX = 'tiledev.sdk-shopify:';
|
|
11
|
+
function openLocalStorage() {
|
|
12
|
+
try {
|
|
13
|
+
const ls = globalThis.localStorage;
|
|
14
|
+
if (!ls)
|
|
15
|
+
return null;
|
|
16
|
+
// Private modes and blocked storage throw on write, not on access.
|
|
17
|
+
ls.setItem(`${PREFIX}probe`, '1');
|
|
18
|
+
ls.removeItem(`${PREFIX}probe`);
|
|
19
|
+
return {
|
|
20
|
+
kind: 'localStorage',
|
|
21
|
+
get: (key) => {
|
|
22
|
+
var _a;
|
|
23
|
+
try {
|
|
24
|
+
return (_a = ls.getItem(PREFIX + key)) !== null && _a !== void 0 ? _a : undefined;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
set: (key, value) => {
|
|
31
|
+
try {
|
|
32
|
+
ls.setItem(PREFIX + key, value);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Quota exceeded: the entry is simply not kept. Caps upstream keep this rare.
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
remove: (key) => {
|
|
39
|
+
try {
|
|
40
|
+
ls.removeItem(PREFIX + key);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
/* ignore */
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
keys: () => {
|
|
47
|
+
const out = [];
|
|
48
|
+
try {
|
|
49
|
+
for (let i = 0; i < ls.length; i++) {
|
|
50
|
+
const k = ls.key(i);
|
|
51
|
+
if (k && k.startsWith(PREFIX))
|
|
52
|
+
out.push(k.slice(PREFIX.length));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
/* ignore */
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
let store = null;
|
|
67
|
+
function deviceStore() {
|
|
68
|
+
var _a;
|
|
69
|
+
if (!store)
|
|
70
|
+
store = (_a = openLocalStorage()) !== null && _a !== void 0 ? _a : (0, deviceStoreCore_1.memoryStore)();
|
|
71
|
+
return store;
|
|
72
|
+
}
|
|
73
|
+
/** Tests only: swap the backend (null re-opens the default on next use). */
|
|
74
|
+
function setDeviceStore(next) {
|
|
75
|
+
store = next;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=deviceStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStore.js","sourceRoot":"","sources":["../src/deviceStore.ts"],"names":[],"mappings":";;AA0DA,kCAGC;AAGD,wCAEC;AAlED;;;GAGG;AACH,uDAAkE;AAElE,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAEtC,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,GAAI,UAAyC,CAAC,YAAY,CAAC;QACnE,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACrB,mEAAmE;QACnE,EAAE,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,EAAE,GAAG,CAAC,CAAC;QAClC,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;;gBACX,IAAI,CAAC;oBACH,OAAO,MAAA,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,mCAAI,SAAS,CAAC;gBAC/C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC;oBACH,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,8EAA8E;gBAChF,CAAC;YACH,CAAC;YACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;gBACd,IAAI,CAAC;oBACH,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,GAAG,GAAa,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACnC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACpB,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;4BAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAI,KAAK,GAAuB,IAAI,CAAC;AAErC,SAAgB,WAAW;;IACzB,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAA,gBAAgB,EAAE,mCAAI,IAAA,6BAAW,GAAE,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,SAAgB,cAAc,CAAC,IAAwB;IACrD,KAAK,GAAG,IAAI,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device storage — NATIVE build (iOS/Android): MMKV 3, synchronous and memory-mapped, so reading a
|
|
3
|
+
* product by key costs microseconds inside a render. See `deviceStoreCore.ts`.
|
|
4
|
+
*
|
|
5
|
+
* `react-native-mmkv` is an optional peer: required lazily inside `try`, which Expo's Metro config
|
|
6
|
+
* (`allowOptionalDependencies: true`) bundles as optional. An app without it in its binary (Expo
|
|
7
|
+
* Go, or a build from before it was added) gets the memory fallback instead of a crash. The app
|
|
8
|
+
* lists it in its own dependencies only so the native module is compiled in.
|
|
9
|
+
*/
|
|
10
|
+
import { type DeviceStore } from './deviceStoreCore';
|
|
11
|
+
export declare function deviceStore(): DeviceStore;
|
|
12
|
+
/** Tests only: swap the backend (null re-opens the default on next use). */
|
|
13
|
+
export declare function setDeviceStore(next: DeviceStore | null): void;
|
|
14
|
+
//# sourceMappingURL=deviceStore.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStore.native.d.ts","sourceRoot":"","sources":["../src/deviceStore.native.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiClE,wBAAgB,WAAW,IAAI,WAAW,CAGzC;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAE7D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deviceStore = deviceStore;
|
|
4
|
+
exports.setDeviceStore = setDeviceStore;
|
|
5
|
+
/**
|
|
6
|
+
* Device storage — NATIVE build (iOS/Android): MMKV 3, synchronous and memory-mapped, so reading a
|
|
7
|
+
* product by key costs microseconds inside a render. See `deviceStoreCore.ts`.
|
|
8
|
+
*
|
|
9
|
+
* `react-native-mmkv` is an optional peer: required lazily inside `try`, which Expo's Metro config
|
|
10
|
+
* (`allowOptionalDependencies: true`) bundles as optional. An app without it in its binary (Expo
|
|
11
|
+
* Go, or a build from before it was added) gets the memory fallback instead of a crash. The app
|
|
12
|
+
* lists it in its own dependencies only so the native module is compiled in.
|
|
13
|
+
*/
|
|
14
|
+
const deviceStoreCore_1 = require("./deviceStoreCore");
|
|
15
|
+
/** Its own instance id, so the SDK's keys never mix with an app's own MMKV data. */
|
|
16
|
+
const INSTANCE_ID = 'tiledev.sdk-shopify';
|
|
17
|
+
function openMmkv() {
|
|
18
|
+
try {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
20
|
+
const mod = require('react-native-mmkv');
|
|
21
|
+
if (!(mod === null || mod === void 0 ? void 0 : mod.MMKV))
|
|
22
|
+
return null;
|
|
23
|
+
const mmkv = new mod.MMKV({ id: INSTANCE_ID });
|
|
24
|
+
return {
|
|
25
|
+
kind: 'mmkv',
|
|
26
|
+
get: (key) => mmkv.getString(key),
|
|
27
|
+
set: (key, value) => mmkv.set(key, value),
|
|
28
|
+
remove: (key) => mmkv.delete(key),
|
|
29
|
+
keys: () => mmkv.getAllKeys(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
let store = null;
|
|
37
|
+
function deviceStore() {
|
|
38
|
+
var _a;
|
|
39
|
+
if (!store)
|
|
40
|
+
store = (_a = openMmkv()) !== null && _a !== void 0 ? _a : (0, deviceStoreCore_1.memoryStore)();
|
|
41
|
+
return store;
|
|
42
|
+
}
|
|
43
|
+
/** Tests only: swap the backend (null re-opens the default on next use). */
|
|
44
|
+
function setDeviceStore(next) {
|
|
45
|
+
store = next;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=deviceStore.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStore.native.js","sourceRoot":"","sources":["../src/deviceStore.native.ts"],"names":[],"mappings":";;AA0CA,kCAGC;AAGD,wCAEC;AAlDD;;;;;;;;GAQG;AACH,uDAAkE;AAUlE,oFAAoF;AACpF,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C,SAAS,QAAQ;IACf,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAA4D,CAAC;QACpG,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAA;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACjC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;SAC9B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAI,KAAK,GAAuB,IAAI,CAAC;AAErC,SAAgB,WAAW;;IACzB,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAA,QAAQ,EAAE,mCAAI,IAAA,6BAAW,GAAE,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,SAAgB,cAAc,CAAC,IAAwB;IACrD,KAAK,GAAG,IAAI,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SDK's own device storage: synchronous, so a hook can read it during render and a product page
|
|
3
|
+
* can open with data on its first frame.
|
|
4
|
+
*
|
|
5
|
+
* Two builds pick the backend. `deviceStore.native.ts` (iOS/Android) uses MMKV; `deviceStore.ts`
|
|
6
|
+
* (web, the editor preview, tests) uses `localStorage`. Metro resolves the right file per platform,
|
|
7
|
+
* so a web bundle never sees MMKV. Either falls back to memory when its backend is missing, so the
|
|
8
|
+
* cache only ever gets slower, never breaks the app.
|
|
9
|
+
*
|
|
10
|
+
* Only public catalogue data goes here: no cart, customer, order or wallet data, ever.
|
|
11
|
+
*/
|
|
12
|
+
export interface DeviceStore {
|
|
13
|
+
readonly kind: 'mmkv' | 'localStorage' | 'memory';
|
|
14
|
+
get(key: string): string | undefined;
|
|
15
|
+
set(key: string, value: string): void;
|
|
16
|
+
remove(key: string): void;
|
|
17
|
+
/** Every key this store holds (its own namespace only). */
|
|
18
|
+
keys(): string[];
|
|
19
|
+
}
|
|
20
|
+
/** A store that lives as long as the JS process: the fallback when the device has none. */
|
|
21
|
+
export declare function memoryStore(): DeviceStore;
|
|
22
|
+
/** FNV-1a 32-bit as 8 hex digits: short, stable keys for long inputs. */
|
|
23
|
+
export declare function hashKey(input: string): string;
|
|
24
|
+
//# sourceMappingURL=deviceStoreCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStoreCore.d.ts","sourceRoot":"","sources":["../src/deviceStoreCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2DAA2D;IAC3D,IAAI,IAAI,MAAM,EAAE,CAAC;CAClB;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,IAAI,WAAW,CAazC;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO7C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The SDK's own device storage: synchronous, so a hook can read it during render and a product page
|
|
4
|
+
* can open with data on its first frame.
|
|
5
|
+
*
|
|
6
|
+
* Two builds pick the backend. `deviceStore.native.ts` (iOS/Android) uses MMKV; `deviceStore.ts`
|
|
7
|
+
* (web, the editor preview, tests) uses `localStorage`. Metro resolves the right file per platform,
|
|
8
|
+
* so a web bundle never sees MMKV. Either falls back to memory when its backend is missing, so the
|
|
9
|
+
* cache only ever gets slower, never breaks the app.
|
|
10
|
+
*
|
|
11
|
+
* Only public catalogue data goes here: no cart, customer, order or wallet data, ever.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.memoryStore = memoryStore;
|
|
15
|
+
exports.hashKey = hashKey;
|
|
16
|
+
/** A store that lives as long as the JS process: the fallback when the device has none. */
|
|
17
|
+
function memoryStore() {
|
|
18
|
+
const map = new Map();
|
|
19
|
+
return {
|
|
20
|
+
kind: 'memory',
|
|
21
|
+
get: (key) => map.get(key),
|
|
22
|
+
set: (key, value) => {
|
|
23
|
+
map.set(key, value);
|
|
24
|
+
},
|
|
25
|
+
remove: (key) => {
|
|
26
|
+
map.delete(key);
|
|
27
|
+
},
|
|
28
|
+
keys: () => Array.from(map.keys()),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** FNV-1a 32-bit as 8 hex digits: short, stable keys for long inputs. */
|
|
32
|
+
function hashKey(input) {
|
|
33
|
+
let h = 0x811c9dc5;
|
|
34
|
+
for (let i = 0; i < input.length; i++) {
|
|
35
|
+
h ^= input.charCodeAt(i);
|
|
36
|
+
h = Math.imul(h, 0x01000193) >>> 0;
|
|
37
|
+
}
|
|
38
|
+
return h.toString(16).padStart(8, '0');
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=deviceStoreCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStoreCore.js","sourceRoot":"","sources":["../src/deviceStoreCore.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAYH,kCAaC;AAGD,0BAOC;AAxBD,2FAA2F;AAC3F,SAAgB,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAClB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAgB,OAAO,CAAC,KAAa;IACnC,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Price filters: the one Shopify facet whose input the app builds itself.
|
|
3
|
+
*
|
|
4
|
+
* Every other facet value arrives with a ready `FilterValue.input` the shopper just picks. A
|
|
5
|
+
* `PRICE_RANGE` facet instead carries one value whose input is the collection's whole range
|
|
6
|
+
* (`{"price":{"min":0,"max":3132.99}}`), and the shopper's own range has to be encoded in that
|
|
7
|
+
* shape to be sent back. These helpers keep that format in one place.
|
|
8
|
+
*/
|
|
9
|
+
import type { Filter } from './types';
|
|
10
|
+
export interface PriceRange {
|
|
11
|
+
min: number;
|
|
12
|
+
max: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The `{ min, max }` a price input encodes, or null when the input isn't a price filter. Either
|
|
16
|
+
* bound may be missing: Shopify reads an absent `min` as 0 and an absent `max` as no ceiling.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parsePriceFilterInput(input: string): {
|
|
19
|
+
min?: number;
|
|
20
|
+
max?: number;
|
|
21
|
+
} | null;
|
|
22
|
+
/** True for a `FilterValue.input` (or a built one) that is a price filter. */
|
|
23
|
+
export declare function isPriceFilterInput(input: string): boolean;
|
|
24
|
+
/** The bounds of a `PRICE_RANGE` facet, from its one value. Null for any other facet. */
|
|
25
|
+
export declare function priceRange(filter: Filter): PriceRange | null;
|
|
26
|
+
/**
|
|
27
|
+
* The input for a range the shopper chose, to pass to `setFilters` with the other inputs. Null
|
|
28
|
+
* when it wouldn't narrow anything: no bounds, or bounds covering the whole `range`. Bounds given
|
|
29
|
+
* the wrong way round are swapped rather than sent as an empty range.
|
|
30
|
+
*/
|
|
31
|
+
export declare function priceFilterInput(min: number | null | undefined, max: number | null | undefined, range?: PriceRange | null): string | null;
|
|
32
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAOD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ1F;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GACxB,MAAM,GAAG,IAAI,CAcf"}
|
package/dist/filters.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parsePriceFilterInput = parsePriceFilterInput;
|
|
4
|
+
exports.isPriceFilterInput = isPriceFilterInput;
|
|
5
|
+
exports.priceRange = priceRange;
|
|
6
|
+
exports.priceFilterInput = priceFilterInput;
|
|
7
|
+
function finite(value) {
|
|
8
|
+
const n = typeof value === 'string' && value.trim() !== '' ? Number(value) : value;
|
|
9
|
+
return typeof n === 'number' && Number.isFinite(n) ? n : undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The `{ min, max }` a price input encodes, or null when the input isn't a price filter. Either
|
|
13
|
+
* bound may be missing: Shopify reads an absent `min` as 0 and an absent `max` as no ceiling.
|
|
14
|
+
*/
|
|
15
|
+
function parsePriceFilterInput(input) {
|
|
16
|
+
try {
|
|
17
|
+
const parsed = JSON.parse(input);
|
|
18
|
+
if (!parsed || typeof parsed !== 'object' || !parsed.price || typeof parsed.price !== 'object')
|
|
19
|
+
return null;
|
|
20
|
+
return { min: finite(parsed.price.min), max: finite(parsed.price.max) };
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** True for a `FilterValue.input` (or a built one) that is a price filter. */
|
|
27
|
+
function isPriceFilterInput(input) {
|
|
28
|
+
return parsePriceFilterInput(input) !== null;
|
|
29
|
+
}
|
|
30
|
+
/** The bounds of a `PRICE_RANGE` facet, from its one value. Null for any other facet. */
|
|
31
|
+
function priceRange(filter) {
|
|
32
|
+
var _a;
|
|
33
|
+
if (filter.type !== 'PRICE_RANGE')
|
|
34
|
+
return null;
|
|
35
|
+
const bounds = filter.values.length ? parsePriceFilterInput(filter.values[0].input) : null;
|
|
36
|
+
if (!bounds || bounds.max === undefined)
|
|
37
|
+
return null;
|
|
38
|
+
return { min: (_a = bounds.min) !== null && _a !== void 0 ? _a : 0, max: bounds.max };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The input for a range the shopper chose, to pass to `setFilters` with the other inputs. Null
|
|
42
|
+
* when it wouldn't narrow anything: no bounds, or bounds covering the whole `range`. Bounds given
|
|
43
|
+
* the wrong way round are swapped rather than sent as an empty range.
|
|
44
|
+
*/
|
|
45
|
+
function priceFilterInput(min, max, range) {
|
|
46
|
+
let lo = finite(min);
|
|
47
|
+
let hi = finite(max);
|
|
48
|
+
if (lo !== undefined && lo < 0)
|
|
49
|
+
lo = 0;
|
|
50
|
+
if (lo !== undefined && hi !== undefined && lo > hi)
|
|
51
|
+
[lo, hi] = [hi, lo];
|
|
52
|
+
if (range) {
|
|
53
|
+
if (lo !== undefined && lo <= range.min)
|
|
54
|
+
lo = undefined;
|
|
55
|
+
if (hi !== undefined && hi >= range.max)
|
|
56
|
+
hi = undefined;
|
|
57
|
+
}
|
|
58
|
+
if (lo === undefined && hi === undefined)
|
|
59
|
+
return null;
|
|
60
|
+
const price = {};
|
|
61
|
+
if (lo !== undefined)
|
|
62
|
+
price.min = lo;
|
|
63
|
+
if (hi !== undefined)
|
|
64
|
+
price.max = hi;
|
|
65
|
+
return JSON.stringify({ price });
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export { shopify, shopify as default } from './shopify';
|
|
2
2
|
export { formatMoney, applyMoneyFormat, shop } from './money';
|
|
3
3
|
export { getMoneyFormat, getCurrencyCode } from './client';
|
|
4
|
+
export { clearRequestCache, DEFAULT_CACHE_TTL_MS, type RequestCacheOptions } from './requestCache';
|
|
5
|
+
export { PRODUCT_BASE_KEYS, peekProduct, forgetProduct, clearProductStore, toProductBase, type ProductBase, type CachedProduct, } from './productStore';
|
|
4
6
|
export { toLineSnapshot } from './cart';
|
|
7
|
+
export { priceRange, priceFilterInput, parsePriceFilterInput, isPriceFilterInput, type PriceRange, } from './filters';
|
|
5
8
|
export { DEFAULT_MESSAGES, message, getMessages, setMessages, patchMessages, setMessageResolver, limitExceededMessage, } from './messages';
|
|
6
9
|
export { setCartPolicy, getCartPolicy, maxLineItems, projectedLineCount, wouldExceedLineLimit, } from './cartPolicy';
|
|
7
10
|
export { classifyAuthFailure, isOutOfStockError, isUserErrorRejection, userErrorsOf, } from './errors';
|
|
@@ -9,5 +12,5 @@ export { TileCreditClient, configureTileCredit, getTileCreditClient, redeemAndAp
|
|
|
9
12
|
export { setProductMetafields, getProductMetafields, productMetafield, } from './metafields';
|
|
10
13
|
export { TileCreditError } from './types';
|
|
11
14
|
export type * from './types';
|
|
12
|
-
export { ShopifyProvider, useShopify, useCart, useWishlist, useCustomer, useCheckout, useShopifyMessage, useTileCredit, useCollectionProducts, COLLECTION_PAGE_SIZE, type ShopifyProviderProps, type ShopifyEvent, type ShopifyEventType, type CartState, type WishlistState, type CustomerState, type CheckoutState, type UseTileCreditOptions, type UseTileCreditState, type CollectionSort, type UseCollectionProductsOptions, type CollectionProductsState, type UseCollectionProductsResult, } from './react';
|
|
15
|
+
export { ShopifyProvider, useShopify, useCart, useWishlist, useCustomer, useCheckout, useShopifyMessage, useTileCredit, useCollectionProducts, COLLECTION_PAGE_SIZE, useSearch, SEARCH_PAGE_SIZE, SEARCH_DEBOUNCE_MS, useProduct, REVALIDATE_AFTER_MS, type ShopifyProviderProps, type ShopifyEvent, type ShopifyEventType, type CartState, type WishlistState, type CustomerState, type CheckoutState, type UseTileCreditOptions, type UseTileCreditState, type CollectionSort, type UseCollectionProductsOptions, type CollectionProductsState, type UseCollectionProductsResult, type SearchSort, type UseSearchOptions, type UseSearchResult, type SearchState, type UseProductOptions, type UseProductState, type UseProductResult, type ProductFeedState, type ProductFeedResult, } from './react';
|
|
13
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,mBAAmB,SAAS,CAAC;AAO7B,OAAO,EACL,eAAe,EACf,UAAU,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,mBAAmB,SAAS,CAAC;AAO7B,OAAO,EACL,eAAe,EACf,UAAU,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.useCustomer = exports.useWishlist = exports.useCart = exports.useShopify = exports.ShopifyProvider = exports.TileCreditError = exports.productMetafield = exports.getProductMetafields = exports.setProductMetafields = exports.moneyToCents = exports.centsToMoney = exports.redeemAndApplyToCart = exports.getTileCreditClient = exports.configureTileCredit = exports.TileCreditClient = exports.userErrorsOf = exports.isUserErrorRejection = exports.isOutOfStockError = exports.classifyAuthFailure = exports.wouldExceedLineLimit = exports.projectedLineCount = exports.maxLineItems = exports.getCartPolicy = exports.setCartPolicy = exports.limitExceededMessage = exports.setMessageResolver = exports.patchMessages = exports.setMessages = exports.getMessages = exports.message = exports.DEFAULT_MESSAGES = exports.isPriceFilterInput = exports.parsePriceFilterInput = exports.priceFilterInput = exports.priceRange = exports.toLineSnapshot = exports.toProductBase = exports.clearProductStore = exports.forgetProduct = exports.peekProduct = exports.PRODUCT_BASE_KEYS = exports.DEFAULT_CACHE_TTL_MS = exports.clearRequestCache = exports.getCurrencyCode = exports.getMoneyFormat = exports.shop = exports.applyMoneyFormat = exports.formatMoney = exports.default = exports.shopify = void 0;
|
|
4
|
+
exports.REVALIDATE_AFTER_MS = exports.useProduct = exports.SEARCH_DEBOUNCE_MS = exports.SEARCH_PAGE_SIZE = exports.useSearch = exports.COLLECTION_PAGE_SIZE = exports.useCollectionProducts = exports.useTileCredit = exports.useShopifyMessage = exports.useCheckout = void 0;
|
|
4
5
|
var shopify_1 = require("./shopify");
|
|
5
6
|
Object.defineProperty(exports, "shopify", { enumerable: true, get: function () { return shopify_1.shopify; } });
|
|
6
7
|
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return shopify_1.shopify; } });
|
|
@@ -11,8 +12,22 @@ Object.defineProperty(exports, "shop", { enumerable: true, get: function () { re
|
|
|
11
12
|
var client_1 = require("./client");
|
|
12
13
|
Object.defineProperty(exports, "getMoneyFormat", { enumerable: true, get: function () { return client_1.getMoneyFormat; } });
|
|
13
14
|
Object.defineProperty(exports, "getCurrencyCode", { enumerable: true, get: function () { return client_1.getCurrencyCode; } });
|
|
15
|
+
var requestCache_1 = require("./requestCache");
|
|
16
|
+
Object.defineProperty(exports, "clearRequestCache", { enumerable: true, get: function () { return requestCache_1.clearRequestCache; } });
|
|
17
|
+
Object.defineProperty(exports, "DEFAULT_CACHE_TTL_MS", { enumerable: true, get: function () { return requestCache_1.DEFAULT_CACHE_TTL_MS; } });
|
|
18
|
+
var productStore_1 = require("./productStore");
|
|
19
|
+
Object.defineProperty(exports, "PRODUCT_BASE_KEYS", { enumerable: true, get: function () { return productStore_1.PRODUCT_BASE_KEYS; } });
|
|
20
|
+
Object.defineProperty(exports, "peekProduct", { enumerable: true, get: function () { return productStore_1.peekProduct; } });
|
|
21
|
+
Object.defineProperty(exports, "forgetProduct", { enumerable: true, get: function () { return productStore_1.forgetProduct; } });
|
|
22
|
+
Object.defineProperty(exports, "clearProductStore", { enumerable: true, get: function () { return productStore_1.clearProductStore; } });
|
|
23
|
+
Object.defineProperty(exports, "toProductBase", { enumerable: true, get: function () { return productStore_1.toProductBase; } });
|
|
14
24
|
var cart_1 = require("./cart");
|
|
15
25
|
Object.defineProperty(exports, "toLineSnapshot", { enumerable: true, get: function () { return cart_1.toLineSnapshot; } });
|
|
26
|
+
var filters_1 = require("./filters");
|
|
27
|
+
Object.defineProperty(exports, "priceRange", { enumerable: true, get: function () { return filters_1.priceRange; } });
|
|
28
|
+
Object.defineProperty(exports, "priceFilterInput", { enumerable: true, get: function () { return filters_1.priceFilterInput; } });
|
|
29
|
+
Object.defineProperty(exports, "parsePriceFilterInput", { enumerable: true, get: function () { return filters_1.parsePriceFilterInput; } });
|
|
30
|
+
Object.defineProperty(exports, "isPriceFilterInput", { enumerable: true, get: function () { return filters_1.isPriceFilterInput; } });
|
|
16
31
|
var messages_1 = require("./messages");
|
|
17
32
|
Object.defineProperty(exports, "DEFAULT_MESSAGES", { enumerable: true, get: function () { return messages_1.DEFAULT_MESSAGES; } });
|
|
18
33
|
Object.defineProperty(exports, "message", { enumerable: true, get: function () { return messages_1.message; } });
|
|
@@ -61,4 +76,9 @@ Object.defineProperty(exports, "useShopifyMessage", { enumerable: true, get: fun
|
|
|
61
76
|
Object.defineProperty(exports, "useTileCredit", { enumerable: true, get: function () { return react_1.useTileCredit; } });
|
|
62
77
|
Object.defineProperty(exports, "useCollectionProducts", { enumerable: true, get: function () { return react_1.useCollectionProducts; } });
|
|
63
78
|
Object.defineProperty(exports, "COLLECTION_PAGE_SIZE", { enumerable: true, get: function () { return react_1.COLLECTION_PAGE_SIZE; } });
|
|
79
|
+
Object.defineProperty(exports, "useSearch", { enumerable: true, get: function () { return react_1.useSearch; } });
|
|
80
|
+
Object.defineProperty(exports, "SEARCH_PAGE_SIZE", { enumerable: true, get: function () { return react_1.SEARCH_PAGE_SIZE; } });
|
|
81
|
+
Object.defineProperty(exports, "SEARCH_DEBOUNCE_MS", { enumerable: true, get: function () { return react_1.SEARCH_DEBOUNCE_MS; } });
|
|
82
|
+
Object.defineProperty(exports, "useProduct", { enumerable: true, get: function () { return react_1.useProduct; } });
|
|
83
|
+
Object.defineProperty(exports, "REVALIDATE_AFTER_MS", { enumerable: true, get: function () { return react_1.REVALIDATE_AFTER_MS; } });
|
|
64
84
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAwD;AAA/C,kGAAA,OAAO,OAAA;AAAE,kGAAA,OAAO,OAAW;AACpC,iCAA8D;AAArD,oGAAA,WAAW,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AAAE,6FAAA,IAAI,OAAA;AAC5C,mCAA2D;AAAlD,wGAAA,cAAc,OAAA;AAAE,yGAAA,eAAe,OAAA;AACxC,+CAAmG;AAA1F,iHAAA,iBAAiB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAChD,+CAQwB;AAPtB,iHAAA,iBAAiB,OAAA;AACjB,2GAAA,WAAW,OAAA;AACX,6GAAA,aAAa,OAAA;AACb,iHAAA,iBAAiB,OAAA;AACjB,6GAAA,aAAa,OAAA;AAIf,+BAAwC;AAA/B,sGAAA,cAAc,OAAA;AACvB,qCAMmB;AALjB,qGAAA,UAAU,OAAA;AACV,2GAAA,gBAAgB,OAAA;AAChB,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAGpB,uCAQoB;AAPlB,4GAAA,gBAAgB,OAAA;AAChB,mGAAA,OAAO,OAAA;AACP,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,yGAAA,aAAa,OAAA;AACb,8GAAA,kBAAkB,OAAA;AAClB,gHAAA,oBAAoB,OAAA;AAEtB,2CAMsB;AALpB,2GAAA,aAAa,OAAA;AACb,2GAAA,aAAa,OAAA;AACb,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,kHAAA,oBAAoB,OAAA;AAEtB,mCAKkB;AAJhB,6GAAA,mBAAmB,OAAA;AACnB,2GAAA,iBAAiB,OAAA;AACjB,8GAAA,oBAAoB,OAAA;AACpB,sGAAA,YAAY,OAAA;AAEd,2CAOsB;AANpB,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AAEd,2CAIsB;AAHpB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AACpB,8GAAA,gBAAgB,OAAA;AAElB,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAGxB,uEAAuE;AACvE,qEAAqE;AACrE,yEAAyE;AACzE,kEAAkE;AAClE,gEAAgE;AAChE,iCAsCiB;AArCf,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AACV,gGAAA,OAAO,OAAA;AACP,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AACjB,sGAAA,aAAa,OAAA;AACb,8GAAA,qBAAqB,OAAA;AACrB,6GAAA,oBAAoB,OAAA;AACpB,kGAAA,SAAS,OAAA;AACT,yGAAA,gBAAgB,OAAA;AAChB,2GAAA,kBAAkB,OAAA;AAClB,mGAAA,UAAU,OAAA;AACV,4GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Filter, PageInfo, Product } from './types';
|
|
2
|
+
/** What any product read records, and what a product page can render before its own read lands. */
|
|
3
|
+
export declare const PRODUCT_BASE_KEYS: readonly ["id", "handle", "title", "featuredImage", "priceRange", "compareAtPriceRange"];
|
|
4
|
+
export type ProductBase = Pick<Product, (typeof PRODUCT_BASE_KEYS)[number]>;
|
|
5
|
+
export interface CachedProduct {
|
|
6
|
+
id: string;
|
|
7
|
+
handle: string;
|
|
8
|
+
base: ProductBase;
|
|
9
|
+
baseAt: number;
|
|
10
|
+
/** The full product, once `byHandle` / `byId` has read it. */
|
|
11
|
+
full: Product | null;
|
|
12
|
+
fullAt: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CachedList {
|
|
15
|
+
products: Product[];
|
|
16
|
+
pageInfo: PageInfo;
|
|
17
|
+
title: string | null;
|
|
18
|
+
filters: Filter[];
|
|
19
|
+
totalCount?: number;
|
|
20
|
+
at: number;
|
|
21
|
+
}
|
|
22
|
+
/** Older than this, an entry is dropped rather than shown. */
|
|
23
|
+
export declare const MAX_AGE_MS: number;
|
|
24
|
+
/** Tests only: forget memory but keep the device store, which is what a cold start looks like. */
|
|
25
|
+
export declare function resetProductStoreMemory(): void;
|
|
26
|
+
export declare function toProductBase(p: Product): ProductBase;
|
|
27
|
+
/**
|
|
28
|
+
* Record products a read returned. `level: 'full'` is for `byHandle` / `byId`: the whole product,
|
|
29
|
+
* kept for a return visit. Every read records the base keys.
|
|
30
|
+
*/
|
|
31
|
+
export declare function rememberProducts(list: Array<Product | null | undefined>, level: 'base' | 'full'): void;
|
|
32
|
+
/**
|
|
33
|
+
* What is known about a product, by handle or GID: memory first, then the device. Synchronous, so a
|
|
34
|
+
* product page can call it during its first render. Null when nothing is known, or it is too old.
|
|
35
|
+
*/
|
|
36
|
+
export declare function peekProduct(handleOrId: string | null | undefined): CachedProduct | null;
|
|
37
|
+
/** Drop one product, e.g. after the cart reports it out of stock. */
|
|
38
|
+
export declare function forgetProduct(id: string): void;
|
|
39
|
+
export declare function peekList(listKey: string): CachedList | null;
|
|
40
|
+
export declare function rememberList(listKey: string, list: Omit<CachedList, 'at'>): void;
|
|
41
|
+
/** Forget everything this SDK stored, in memory and on the device, for every store and market. */
|
|
42
|
+
export declare function clearProductStore(): void;
|
|
43
|
+
//# sourceMappingURL=productStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productStore.d.ts","sourceRoot":"","sources":["../src/productStore.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzD,mGAAmG;AACnG,eAAO,MAAM,iBAAiB,0FAA2F,CAAC;AAC1H,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAID,8DAA8D;AAC9D,eAAO,MAAM,UAAU,QAAU,CAAC;AAqElC,kGAAkG;AAClG,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,CASrD;AAoCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgCtG;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAkCvF;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAY9C;AAWD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAgB3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAahF;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC"}
|