@tiledev/sdk-shopify 0.4.1 → 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 +7 -1
- package/dist/cart.d.ts.map +1 -1
- package/dist/cart.js +49 -24
- 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 +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -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 +5 -3
- package/dist/queries.js.map +1 -1
- package/dist/react/ShopifyProvider.d.ts +8 -0
- package/dist/react/ShopifyProvider.d.ts.map +1 -1
- package/dist/react/ShopifyProvider.js +134 -3
- 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 +80 -21
- 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
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_AGE_MS = exports.PRODUCT_BASE_KEYS = void 0;
|
|
4
|
+
exports.resetProductStoreMemory = resetProductStoreMemory;
|
|
5
|
+
exports.toProductBase = toProductBase;
|
|
6
|
+
exports.rememberProducts = rememberProducts;
|
|
7
|
+
exports.peekProduct = peekProduct;
|
|
8
|
+
exports.forgetProduct = forgetProduct;
|
|
9
|
+
exports.peekList = peekList;
|
|
10
|
+
exports.rememberList = rememberList;
|
|
11
|
+
exports.clearProductStore = clearProductStore;
|
|
12
|
+
/**
|
|
13
|
+
* The product store: what every product read has seen, kept so a product page can open with data on
|
|
14
|
+
* its first frame, and a list can show its last first page before the network answers.
|
|
15
|
+
*
|
|
16
|
+
* - **Base** keys (`PRODUCT_BASE_KEYS`) are recorded from EVERY read that returns products:
|
|
17
|
+
* collections, search, recommendations, lists, `byIds`, the wishlist. They are what a product page
|
|
18
|
+
* shows instantly: title, image and price.
|
|
19
|
+
* - **Full** products are recorded by `byHandle` / `byId`, for returning to a product page.
|
|
20
|
+
* - **Lists**: the first page of each collection or search, for `useCollectionProducts` /
|
|
21
|
+
* `useSearch` to show before revalidating.
|
|
22
|
+
*
|
|
23
|
+
* Memory is the working copy (capped, least recently used first out). The device store behind it
|
|
24
|
+
* (`deviceStore`: MMKV on native, `localStorage` on web) keeps it across cold starts, one small key
|
|
25
|
+
* per product, so nothing is loaded in bulk at launch: a key is read the moment something asks.
|
|
26
|
+
*
|
|
27
|
+
* Keys carry a schema version and a scope (store, market, API version, metafields), so a store,
|
|
28
|
+
* market or SDK change never shows mismatched data. Entries older than `MAX_AGE_MS` are dropped.
|
|
29
|
+
* Public catalogue data only: nothing personal is ever written here.
|
|
30
|
+
*/
|
|
31
|
+
const client_1 = require("./client");
|
|
32
|
+
const deviceStore_1 = require("./deviceStore");
|
|
33
|
+
const deviceStoreCore_1 = require("./deviceStoreCore");
|
|
34
|
+
/** What any product read records, and what a product page can render before its own read lands. */
|
|
35
|
+
exports.PRODUCT_BASE_KEYS = ['id', 'handle', 'title', 'featuredImage', 'priceRange', 'compareAtPriceRange'];
|
|
36
|
+
const VERSION = 'v1';
|
|
37
|
+
const DAY = 24 * 60 * 60 * 1000;
|
|
38
|
+
/** Older than this, an entry is dropped rather than shown. */
|
|
39
|
+
exports.MAX_AGE_MS = 7 * DAY;
|
|
40
|
+
const MEMORY_PRODUCTS = 300;
|
|
41
|
+
const MEMORY_LISTS = 30;
|
|
42
|
+
/** Device caps. A base entry is ~0.5 KB, so 2,500 is ~1.25 MB: a whole mid-size catalogue. */
|
|
43
|
+
const DEVICE_BASES = 2500;
|
|
44
|
+
const DEVICE_FULLS = 30;
|
|
45
|
+
const DEVICE_LISTS = 20;
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Scope and keys
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
/** Store, market, API version and metafields: anything that changes what a product read returns. */
|
|
50
|
+
function scope() {
|
|
51
|
+
var _a;
|
|
52
|
+
const c = (0, client_1.getConfig)();
|
|
53
|
+
return (0, deviceStoreCore_1.hashKey)([
|
|
54
|
+
c.storeDomain,
|
|
55
|
+
(c.country || '').toUpperCase(),
|
|
56
|
+
(c.language || '').toUpperCase(),
|
|
57
|
+
c.apiVersion || '',
|
|
58
|
+
JSON.stringify((_a = c.productMetafields) !== null && _a !== void 0 ? _a : []),
|
|
59
|
+
].join('|'));
|
|
60
|
+
}
|
|
61
|
+
const key = {
|
|
62
|
+
base: (s, id) => `${VERSION}:${s}:b:${id}`,
|
|
63
|
+
handle: (s, handle) => `${VERSION}:${s}:h:${handle}`,
|
|
64
|
+
full: (s, id) => `${VERSION}:${s}:f:${id}`,
|
|
65
|
+
fullIndex: (s) => `${VERSION}:${s}:fi`,
|
|
66
|
+
list: (s, listKey) => `${VERSION}:${s}:l:${(0, deviceStoreCore_1.hashKey)(listKey)}`,
|
|
67
|
+
listIndex: (s) => `${VERSION}:${s}:li`,
|
|
68
|
+
};
|
|
69
|
+
function parse(text) {
|
|
70
|
+
if (!text)
|
|
71
|
+
return null;
|
|
72
|
+
try {
|
|
73
|
+
return JSON.parse(text);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const fresh = (at, now) => Number.isFinite(at) && now - at < exports.MAX_AGE_MS;
|
|
80
|
+
/** Off when not configured yet, or when the app turned reuse off with `cache: false`. */
|
|
81
|
+
function enabled() {
|
|
82
|
+
return (0, client_1.isConfigured)() && (0, client_1.getConfig)().cache !== false;
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Memory (least recently used first out: Map order is insertion order, a hit re-inserts)
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
const products = new Map();
|
|
88
|
+
const handles = new Map();
|
|
89
|
+
const lists = new Map();
|
|
90
|
+
function touch(map, k, v, cap) {
|
|
91
|
+
map.delete(k);
|
|
92
|
+
map.set(k, v);
|
|
93
|
+
while (map.size > cap) {
|
|
94
|
+
const oldest = map.keys().next();
|
|
95
|
+
if (oldest.done)
|
|
96
|
+
break;
|
|
97
|
+
map.delete(oldest.value);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Tests only: forget memory but keep the device store, which is what a cold start looks like. */
|
|
101
|
+
function resetProductStoreMemory() {
|
|
102
|
+
products.clear();
|
|
103
|
+
handles.clear();
|
|
104
|
+
lists.clear();
|
|
105
|
+
}
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
// Products
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
function toProductBase(p) {
|
|
110
|
+
var _a, _b;
|
|
111
|
+
return {
|
|
112
|
+
id: p.id,
|
|
113
|
+
handle: p.handle,
|
|
114
|
+
title: p.title,
|
|
115
|
+
featuredImage: (_a = p.featuredImage) !== null && _a !== void 0 ? _a : null,
|
|
116
|
+
priceRange: p.priceRange,
|
|
117
|
+
compareAtPriceRange: (_b = p.compareAtPriceRange) !== null && _b !== void 0 ? _b : null,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Move `id` to the end of a capped index, returning the ids it pushed out. */
|
|
121
|
+
function bumpIndex(indexKey, id, cap) {
|
|
122
|
+
var _a;
|
|
123
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
124
|
+
const ids = ((_a = parse(store.get(indexKey))) !== null && _a !== void 0 ? _a : []).filter((x) => x !== id);
|
|
125
|
+
ids.push(id);
|
|
126
|
+
const evicted = ids.length > cap ? ids.splice(0, ids.length - cap) : [];
|
|
127
|
+
store.set(indexKey, JSON.stringify(ids));
|
|
128
|
+
return evicted;
|
|
129
|
+
}
|
|
130
|
+
let pruneScheduled = false;
|
|
131
|
+
/** Trim the base entries past the device cap, once per session and off the hot path. */
|
|
132
|
+
function schedulePrune(s) {
|
|
133
|
+
if (pruneScheduled)
|
|
134
|
+
return;
|
|
135
|
+
pruneScheduled = true;
|
|
136
|
+
setTimeout(() => {
|
|
137
|
+
var _a;
|
|
138
|
+
try {
|
|
139
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
140
|
+
const prefix = `${VERSION}:${s}:b:`;
|
|
141
|
+
const baseKeys = store.keys().filter((k) => k.startsWith(prefix));
|
|
142
|
+
if (baseKeys.length <= DEVICE_BASES)
|
|
143
|
+
return;
|
|
144
|
+
const aged = baseKeys
|
|
145
|
+
.map((k) => ({ k, e: parse(store.get(k)) }))
|
|
146
|
+
.sort((a, b) => { var _a, _b, _c, _d; return ((_b = (_a = a.e) === null || _a === void 0 ? void 0 : _a.t) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = b.e) === null || _c === void 0 ? void 0 : _c.t) !== null && _d !== void 0 ? _d : 0); });
|
|
147
|
+
for (const { k, e } of aged.slice(0, baseKeys.length - DEVICE_BASES)) {
|
|
148
|
+
store.remove(k);
|
|
149
|
+
if ((_a = e === null || e === void 0 ? void 0 : e.b) === null || _a === void 0 ? void 0 : _a.handle)
|
|
150
|
+
store.remove(key.handle(s, e.b.handle));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
/* pruning is best effort */
|
|
155
|
+
}
|
|
156
|
+
}, 3000);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Record products a read returned. `level: 'full'` is for `byHandle` / `byId`: the whole product,
|
|
160
|
+
* kept for a return visit. Every read records the base keys.
|
|
161
|
+
*/
|
|
162
|
+
function rememberProducts(list, level) {
|
|
163
|
+
var _a, _b;
|
|
164
|
+
if (!enabled() || !list.length)
|
|
165
|
+
return;
|
|
166
|
+
const s = scope();
|
|
167
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
168
|
+
const now = Date.now();
|
|
169
|
+
for (const p of list) {
|
|
170
|
+
if (!p || !p.id || !p.handle)
|
|
171
|
+
continue;
|
|
172
|
+
const mk = `${s}|${p.id}`;
|
|
173
|
+
const prev = products.get(mk);
|
|
174
|
+
const base = toProductBase(p);
|
|
175
|
+
const entry = {
|
|
176
|
+
id: p.id,
|
|
177
|
+
handle: p.handle,
|
|
178
|
+
base,
|
|
179
|
+
baseAt: now,
|
|
180
|
+
full: level === 'full' ? p : (_a = prev === null || prev === void 0 ? void 0 : prev.full) !== null && _a !== void 0 ? _a : null,
|
|
181
|
+
fullAt: level === 'full' ? now : (_b = prev === null || prev === void 0 ? void 0 : prev.fullAt) !== null && _b !== void 0 ? _b : 0,
|
|
182
|
+
};
|
|
183
|
+
touch(products, mk, entry, MEMORY_PRODUCTS);
|
|
184
|
+
handles.set(`${s}|${p.handle}`, p.id);
|
|
185
|
+
try {
|
|
186
|
+
store.set(key.base(s, p.id), JSON.stringify({ b: base, t: now }));
|
|
187
|
+
if ((prev === null || prev === void 0 ? void 0 : prev.handle) !== p.handle)
|
|
188
|
+
store.set(key.handle(s, p.handle), p.id);
|
|
189
|
+
if (level === 'full') {
|
|
190
|
+
store.set(key.full(s, p.id), JSON.stringify({ p, t: now }));
|
|
191
|
+
for (const gone of bumpIndex(key.fullIndex(s), p.id, DEVICE_FULLS))
|
|
192
|
+
store.remove(key.full(s, gone));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
/* the device copy is best effort; memory still has it */
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
schedulePrune(s);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* What is known about a product, by handle or GID: memory first, then the device. Synchronous, so a
|
|
203
|
+
* product page can call it during its first render. Null when nothing is known, or it is too old.
|
|
204
|
+
*/
|
|
205
|
+
function peekProduct(handleOrId) {
|
|
206
|
+
var _a;
|
|
207
|
+
if (!handleOrId || !enabled())
|
|
208
|
+
return null;
|
|
209
|
+
const s = scope();
|
|
210
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
211
|
+
const now = Date.now();
|
|
212
|
+
const byGid = handleOrId.startsWith('gid://');
|
|
213
|
+
const id = byGid ? handleOrId : (_a = handles.get(`${s}|${handleOrId}`)) !== null && _a !== void 0 ? _a : store.get(key.handle(s, handleOrId));
|
|
214
|
+
if (!id)
|
|
215
|
+
return null;
|
|
216
|
+
const mk = `${s}|${id}`;
|
|
217
|
+
const hit = products.get(mk);
|
|
218
|
+
if (hit && fresh(hit.baseAt, now)) {
|
|
219
|
+
touch(products, mk, hit, MEMORY_PRODUCTS);
|
|
220
|
+
return hit;
|
|
221
|
+
}
|
|
222
|
+
const base = parse(store.get(key.base(s, id)));
|
|
223
|
+
if (!base || !fresh(base.t, now)) {
|
|
224
|
+
if (base)
|
|
225
|
+
store.remove(key.base(s, id));
|
|
226
|
+
if (!byGid)
|
|
227
|
+
store.remove(key.handle(s, handleOrId));
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
const full = parse(store.get(key.full(s, id)));
|
|
231
|
+
const entry = {
|
|
232
|
+
id,
|
|
233
|
+
handle: base.b.handle,
|
|
234
|
+
base: base.b,
|
|
235
|
+
baseAt: base.t,
|
|
236
|
+
full: full && fresh(full.t, now) ? full.p : null,
|
|
237
|
+
fullAt: full && fresh(full.t, now) ? full.t : 0,
|
|
238
|
+
};
|
|
239
|
+
touch(products, mk, entry, MEMORY_PRODUCTS);
|
|
240
|
+
handles.set(`${s}|${entry.handle}`, id);
|
|
241
|
+
return entry;
|
|
242
|
+
}
|
|
243
|
+
/** Drop one product, e.g. after the cart reports it out of stock. */
|
|
244
|
+
function forgetProduct(id) {
|
|
245
|
+
if (!enabled())
|
|
246
|
+
return;
|
|
247
|
+
const s = scope();
|
|
248
|
+
const entry = products.get(`${s}|${id}`);
|
|
249
|
+
products.delete(`${s}|${id}`);
|
|
250
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
251
|
+
store.remove(key.base(s, id));
|
|
252
|
+
store.remove(key.full(s, id));
|
|
253
|
+
if (entry) {
|
|
254
|
+
handles.delete(`${s}|${entry.handle}`);
|
|
255
|
+
store.remove(key.handle(s, entry.handle));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
// Lists (first pages)
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
/** A list's products without the long descriptions no card shows: a fraction of the size. */
|
|
262
|
+
function forCard(p) {
|
|
263
|
+
return { ...p, description: '', descriptionHtml: '' };
|
|
264
|
+
}
|
|
265
|
+
function peekList(listKey) {
|
|
266
|
+
if (!enabled())
|
|
267
|
+
return null;
|
|
268
|
+
const s = scope();
|
|
269
|
+
const mk = `${s}|${listKey}`;
|
|
270
|
+
const now = Date.now();
|
|
271
|
+
const hit = lists.get(mk);
|
|
272
|
+
if (hit && fresh(hit.at, now)) {
|
|
273
|
+
touch(lists, mk, hit, MEMORY_LISTS);
|
|
274
|
+
return hit;
|
|
275
|
+
}
|
|
276
|
+
const stored = parse((0, deviceStore_1.deviceStore)().get(key.list(s, listKey)));
|
|
277
|
+
// `k` guards against two list keys sharing a hash.
|
|
278
|
+
if (!stored || stored.k !== listKey || !fresh(stored.at, now))
|
|
279
|
+
return null;
|
|
280
|
+
const { k: _k, ...list } = stored;
|
|
281
|
+
touch(lists, mk, list, MEMORY_LISTS);
|
|
282
|
+
return list;
|
|
283
|
+
}
|
|
284
|
+
function rememberList(listKey, list) {
|
|
285
|
+
if (!enabled())
|
|
286
|
+
return;
|
|
287
|
+
const s = scope();
|
|
288
|
+
const entry = { ...list, products: list.products.map(forCard), at: Date.now() };
|
|
289
|
+
touch(lists, `${s}|${listKey}`, entry, MEMORY_LISTS);
|
|
290
|
+
try {
|
|
291
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
292
|
+
const dk = key.list(s, listKey);
|
|
293
|
+
store.set(dk, JSON.stringify({ ...entry, k: listKey }));
|
|
294
|
+
for (const gone of bumpIndex(key.listIndex(s), dk, DEVICE_LISTS))
|
|
295
|
+
store.remove(gone);
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
/* best effort */
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/** Forget everything this SDK stored, in memory and on the device, for every store and market. */
|
|
302
|
+
function clearProductStore() {
|
|
303
|
+
resetProductStoreMemory();
|
|
304
|
+
const store = (0, deviceStore_1.deviceStore)();
|
|
305
|
+
for (const k of store.keys())
|
|
306
|
+
if (k.startsWith(`${VERSION}:`))
|
|
307
|
+
store.remove(k);
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=productStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productStore.js","sourceRoot":"","sources":["../src/productStore.ts"],"names":[],"mappings":"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"}
|
package/dist/products.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAKV,OAAO,EAGP,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAmBjB,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAExE;AAgHD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAsChD;AAED,eAAO,MAAM,QAAQ,EAAE,kBAyDtB,CAAC"}
|
package/dist/products.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.products = void 0;
|
|
|
4
4
|
exports.hasVideoContentType = hasVideoContentType;
|
|
5
5
|
exports.normalizeProduct = normalizeProduct;
|
|
6
6
|
const client_1 = require("./client");
|
|
7
|
+
const productStore_1 = require("./productStore");
|
|
7
8
|
const metafields_1 = require("./metafields");
|
|
8
9
|
const types_1 = require("./types");
|
|
9
10
|
const queries_1 = require("./queries");
|
|
@@ -91,7 +92,7 @@ async function byIds(ids, opts) {
|
|
|
91
92
|
const out = [];
|
|
92
93
|
for (let i = 0; i < ids.length; i += batchSize) {
|
|
93
94
|
const chunk = ids.slice(i, i + batchSize);
|
|
94
|
-
const data = await (0, client_1.request)((0, queries_1.nodesAsProductsQuery)(), { ids: chunk });
|
|
95
|
+
const data = await (0, client_1.request)((0, queries_1.nodesAsProductsQuery)(), { ids: chunk }, { imageTransform: opts === null || opts === void 0 ? void 0 : opts.imageTransform });
|
|
95
96
|
const nodes = Array.isArray(data.nodes) ? data.nodes : [];
|
|
96
97
|
for (let j = 0; j < chunk.length; j++) {
|
|
97
98
|
const node = nodes[j];
|
|
@@ -102,6 +103,7 @@ async function byIds(ids, opts) {
|
|
|
102
103
|
out.push(null);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
(0, productStore_1.rememberProducts)(out, 'base');
|
|
105
107
|
return out;
|
|
106
108
|
}
|
|
107
109
|
function normalizeProduct(p) {
|
|
@@ -152,19 +154,22 @@ exports.products = {
|
|
|
152
154
|
query: opts === null || opts === void 0 ? void 0 : opts.query,
|
|
153
155
|
sortKey: opts === null || opts === void 0 ? void 0 : opts.sortKey,
|
|
154
156
|
reverse: (_b = opts === null || opts === void 0 ? void 0 : opts.reverse) !== null && _b !== void 0 ? _b : false,
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
};
|
|
157
|
+
}, { imageTransform: opts === null || opts === void 0 ? void 0 : opts.imageTransform });
|
|
158
|
+
const nodes = data.products.nodes.map(normalizeProduct);
|
|
159
|
+
(0, productStore_1.rememberProducts)(nodes, 'base');
|
|
160
|
+
return { nodes, pageInfo: data.products.pageInfo };
|
|
160
161
|
},
|
|
161
|
-
async byHandle(handle) {
|
|
162
|
-
const data = await (0, client_1.request)((0, queries_1.productByHandleQuery)(), { handle });
|
|
163
|
-
|
|
162
|
+
async byHandle(handle, opts) {
|
|
163
|
+
const data = await (0, client_1.request)((0, queries_1.productByHandleQuery)(), { handle }, { fresh: opts === null || opts === void 0 ? void 0 : opts.fresh, imageTransform: opts === null || opts === void 0 ? void 0 : opts.imageTransform });
|
|
164
|
+
const product = data.product ? normalizeProduct(data.product) : null;
|
|
165
|
+
(0, productStore_1.rememberProducts)([product], 'full');
|
|
166
|
+
return product;
|
|
164
167
|
},
|
|
165
|
-
async byId(id) {
|
|
166
|
-
const data = await (0, client_1.request)((0, queries_1.productByIdQuery)(), { id });
|
|
167
|
-
|
|
168
|
+
async byId(id, opts) {
|
|
169
|
+
const data = await (0, client_1.request)((0, queries_1.productByIdQuery)(), { id }, { fresh: opts === null || opts === void 0 ? void 0 : opts.fresh, imageTransform: opts === null || opts === void 0 ? void 0 : opts.imageTransform });
|
|
170
|
+
const product = data.product ? normalizeProduct(data.product) : null;
|
|
171
|
+
(0, productStore_1.rememberProducts)([product], 'full');
|
|
172
|
+
return product;
|
|
168
173
|
},
|
|
169
174
|
byIds: byIds,
|
|
170
175
|
async search(query, opts) {
|
|
@@ -176,20 +181,24 @@ exports.products = {
|
|
|
176
181
|
productFilters: opts === null || opts === void 0 ? void 0 : opts.filters,
|
|
177
182
|
sortKey: toSearchSortKey(opts === null || opts === void 0 ? void 0 : opts.sortKey),
|
|
178
183
|
reverse: opts === null || opts === void 0 ? void 0 : opts.reverse,
|
|
179
|
-
});
|
|
184
|
+
}, { fresh: opts === null || opts === void 0 ? void 0 : opts.fresh, imageTransform: opts === null || opts === void 0 ? void 0 : opts.imageTransform });
|
|
185
|
+
// `types: [PRODUCT]` still yields a union: a non-Product arrives as an empty object
|
|
186
|
+
// rather than being dropped, and would map to a card with no title and no price.
|
|
187
|
+
const nodes = ((_b = data.search.nodes) !== null && _b !== void 0 ? _b : []).filter((node) => node && 'id' in node).map(normalizeProduct);
|
|
188
|
+
(0, productStore_1.rememberProducts)(nodes, 'base');
|
|
180
189
|
return {
|
|
181
|
-
|
|
182
|
-
// rather than being dropped, and would map to a card with no title and no price.
|
|
183
|
-
nodes: ((_b = data.search.nodes) !== null && _b !== void 0 ? _b : []).filter((node) => node && 'id' in node).map(normalizeProduct),
|
|
190
|
+
nodes,
|
|
184
191
|
pageInfo: data.search.pageInfo,
|
|
185
192
|
filters: (_c = data.search.productFilters) !== null && _c !== void 0 ? _c : [],
|
|
186
193
|
totalCount: data.search.totalCount,
|
|
187
194
|
};
|
|
188
195
|
},
|
|
189
|
-
async recommended(productId) {
|
|
196
|
+
async recommended(productId, opts) {
|
|
190
197
|
var _a;
|
|
191
|
-
const data = await (0, client_1.request)((0, queries_1.productRecommendationsQuery)(), { productId });
|
|
192
|
-
|
|
198
|
+
const data = await (0, client_1.request)((0, queries_1.productRecommendationsQuery)(), { productId }, { imageTransform: opts === null || opts === void 0 ? void 0 : opts.imageTransform });
|
|
199
|
+
const list = ((_a = data.productRecommendations) !== null && _a !== void 0 ? _a : []).map(normalizeProduct);
|
|
200
|
+
(0, productStore_1.rememberProducts)(list, 'base');
|
|
201
|
+
return list;
|
|
193
202
|
},
|
|
194
203
|
};
|
|
195
204
|
//# sourceMappingURL=products.js.map
|
package/dist/products.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.js","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"products.js","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"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"}
|