@smess/networking 2.0.0 → 2.2.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/CHANGELOG.md +25 -0
- package/README.md +43 -2
- package/dist/core/hosts.d.ts +4 -0
- package/dist/core/hosts.d.ts.map +1 -1
- package/dist/core/hosts.js +4 -0
- package/dist/core/hosts.js.map +1 -1
- package/dist/modules/authentication/index.d.ts +19 -0
- package/dist/modules/authentication/index.d.ts.map +1 -1
- package/dist/modules/authentication/index.js +15 -0
- package/dist/modules/authentication/index.js.map +1 -1
- package/dist/modules/messenger/index.d.ts +92 -0
- package/dist/modules/messenger/index.d.ts.map +1 -0
- package/dist/modules/messenger/index.js +44 -0
- package/dist/modules/messenger/index.js.map +1 -0
- package/dist/modules/storefront/index.d.ts +160 -0
- package/dist/modules/storefront/index.d.ts.map +1 -0
- package/dist/modules/storefront/index.js +176 -0
- package/dist/modules/storefront/index.js.map +1 -0
- package/dist/modules/storefront/types.d.ts +499 -0
- package/dist/modules/storefront/types.d.ts.map +1 -0
- package/dist/modules/storefront/types.js +8 -0
- package/dist/modules/storefront/types.js.map +1 -0
- package/dist/modules/storefront-admin/index.d.ts +85 -0
- package/dist/modules/storefront-admin/index.d.ts.map +1 -0
- package/dist/modules/storefront-admin/index.js +80 -0
- package/dist/modules/storefront-admin/index.js.map +1 -0
- package/dist/modules/storefront-admin/types.d.ts +295 -0
- package/dist/modules/storefront-admin/types.d.ts.map +1 -0
- package/dist/modules/storefront-admin/types.js +2 -0
- package/dist/modules/storefront-admin/types.js.map +1 -0
- package/package.json +14 -2
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { unwrapData } from '../../core/decoders.js';
|
|
2
|
+
import { defineEndpoint } from '../../core/endpoint.js';
|
|
3
|
+
const route = () => (method, path, auth) => defineEndpoint()({ service: 'storefront', method, path, auth, decode: unwrapData });
|
|
4
|
+
const P = '/v1/storefront';
|
|
5
|
+
export const storefrontEndpoints = {
|
|
6
|
+
products: route()('GET', `${P}/products/collection`, 'none'),
|
|
7
|
+
/** Numeric id or slug. */
|
|
8
|
+
product: route()('GET', `${P}/products/{identifier}`, 'none'),
|
|
9
|
+
categories: route()('GET', `${P}/products/categories`, 'none'),
|
|
10
|
+
stores: route()('GET', `${P}/stores/list`, 'none'),
|
|
11
|
+
store: route()('GET', `${P}/stores/{uuid}/information`, 'none'),
|
|
12
|
+
promos: route()('GET', `${P}/promo/list`, 'none'),
|
|
13
|
+
cart: route()('GET', `${P}/cart`, 'optional'),
|
|
14
|
+
updateCart: route()('PUT', `${P}/cart`, 'optional'),
|
|
15
|
+
addToCart: route()('POST', `${P}/cart/items`, 'optional'),
|
|
16
|
+
batchCartItems: route()('POST', `${P}/cart/items/batch`, 'optional'),
|
|
17
|
+
updateCartItem: route()('PUT', `${P}/cart/items/{cartItemId}`, 'optional'),
|
|
18
|
+
removeCartItem: route()('DELETE', `${P}/cart/items/{cartItemId}`, 'optional'),
|
|
19
|
+
clearCart: route()('DELETE', `${P}/cart/items`, 'optional'),
|
|
20
|
+
calculateShipping: route()('POST', `${P}/cart/calculate-shipping`, 'optional'),
|
|
21
|
+
validateCheckout: route()('POST', `${P}/checkout/validate`, 'optional'),
|
|
22
|
+
checkout: route()('POST', `${P}/checkout/process`, 'optional'),
|
|
23
|
+
orders: route()('GET', `${P}/orders/collection`, 'required'),
|
|
24
|
+
order: route()('GET', `${P}/orders/{id}`, 'required'),
|
|
25
|
+
trackOrder: route()('POST', `${P}/orders/track`, 'required'),
|
|
26
|
+
reorder: route()('POST', `${P}/orders/{id}/reorder`, 'required'),
|
|
27
|
+
cancelOrder: route()('POST', `${P}/orders/{id}/cancel`, 'required'),
|
|
28
|
+
profile: route()('GET', `${P}/customer/profile`, 'required'),
|
|
29
|
+
updateProfile: route()('PUT', `${P}/customer/profile`, 'required'),
|
|
30
|
+
saveShippingAddress: route()('POST', `${P}/customer/shipping-addresses`, 'required'),
|
|
31
|
+
deleteShippingAddress: route()('DELETE', `${P}/customer/shipping-addresses/{id}`, 'required'),
|
|
32
|
+
saveBillingAddress: route()('POST', `${P}/customer/billing-addresses`, 'required'),
|
|
33
|
+
deleteBillingAddress: route()('DELETE', `${P}/customer/billing-addresses/{id}`, 'required'),
|
|
34
|
+
metadata: route()('GET', `${P}/customer/metadata`, 'required'),
|
|
35
|
+
updatePreferences: route()('PUT', `${P}/customer/preferences`, 'required'),
|
|
36
|
+
recordProductView: defineEndpoint()({
|
|
37
|
+
service: 'storefront',
|
|
38
|
+
method: 'POST',
|
|
39
|
+
path: `${P}/customer/product-view`,
|
|
40
|
+
auth: 'required',
|
|
41
|
+
}),
|
|
42
|
+
recentSearches: route()('GET', `${P}/customer/recent-searches`, 'required'),
|
|
43
|
+
recentlyViewed: route()('GET', `${P}/customer/recently-viewed`, 'required'),
|
|
44
|
+
favorites: route()('GET', `${P}/customer/favorites/collection`, 'required'),
|
|
45
|
+
addFavorite: route()('POST', `${P}/customer/favorites`, 'required'),
|
|
46
|
+
renameFavoriteCategory: route()('PUT', `${P}/customer/favorites/category`, 'required'),
|
|
47
|
+
removeFavorite: defineEndpoint()({
|
|
48
|
+
service: 'storefront',
|
|
49
|
+
method: 'DELETE',
|
|
50
|
+
path: `${P}/customer/favorites/{productId}`,
|
|
51
|
+
auth: 'required',
|
|
52
|
+
}),
|
|
53
|
+
favoriteCategories: route()('GET', `${P}/customer/favorites/categories`, 'required'),
|
|
54
|
+
batchFavorites: route()('POST', `${P}/customer/favorites-batch`, 'required'),
|
|
55
|
+
sendMessage: defineEndpoint()({
|
|
56
|
+
service: 'storefront',
|
|
57
|
+
method: 'POST',
|
|
58
|
+
path: `${P}/messenger/send`,
|
|
59
|
+
auth: 'none',
|
|
60
|
+
requiresTenant: true,
|
|
61
|
+
decode: unwrapData,
|
|
62
|
+
}),
|
|
63
|
+
};
|
|
64
|
+
/** A cart token kept in memory (lost on reload). */
|
|
65
|
+
export function memoryCartToken(initial = null) {
|
|
66
|
+
let token = initial;
|
|
67
|
+
return {
|
|
68
|
+
get: () => token,
|
|
69
|
+
set: (next) => {
|
|
70
|
+
token = next;
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function storefront(client, options = {}) {
|
|
75
|
+
const e = storefrontEndpoints;
|
|
76
|
+
const cartToken = options.cartToken ?? memoryCartToken();
|
|
77
|
+
const storeHeader = () => {
|
|
78
|
+
const raw = typeof options.storeId === 'function' ? options.storeId() : options.storeId;
|
|
79
|
+
return raw === undefined || raw === null || raw === '' ? {} : { 'X-Store-Id': String(raw) };
|
|
80
|
+
};
|
|
81
|
+
/** Per-call options with the store header (call headers win). */
|
|
82
|
+
const scoped = (o) => ({ ...o, headers: { ...storeHeader(), ...o?.headers } });
|
|
83
|
+
/** Store scope plus, while signed out, the guest cart token. */
|
|
84
|
+
const cartScoped = async (o) => {
|
|
85
|
+
const signedIn = (await client.session.get()) !== null;
|
|
86
|
+
const token = signedIn ? null : await cartToken.get();
|
|
87
|
+
return { ...o, headers: { ...storeHeader(), ...(token ? { 'X-Nonce-Token': token } : {}), ...o?.headers } };
|
|
88
|
+
};
|
|
89
|
+
const keepToken = async (cart) => {
|
|
90
|
+
if (cart?.sessionToken && cart.sessionToken !== (await cartToken.get()))
|
|
91
|
+
await cartToken.set(cart.sessionToken);
|
|
92
|
+
return cart;
|
|
93
|
+
};
|
|
94
|
+
return {
|
|
95
|
+
products: {
|
|
96
|
+
list: (query, o) => client.call(e.products, { ...scoped(o), query }),
|
|
97
|
+
/** By numeric id or slug. */
|
|
98
|
+
get: (identifier, o) => client.call(e.product, { ...scoped(o), path: { identifier } }),
|
|
99
|
+
/** Category counts of the whole catalog. */
|
|
100
|
+
categories: (o) => client.call(e.categories, scoped(o)),
|
|
101
|
+
},
|
|
102
|
+
stores: {
|
|
103
|
+
/** The tenant's stores (every active store without a tenant). */
|
|
104
|
+
list: (o) => client.call(e.stores, scoped(o)),
|
|
105
|
+
/** One store with its shipping rules. */
|
|
106
|
+
get: (uuid, o) => client.call(e.store, { ...scoped(o), path: { uuid } }),
|
|
107
|
+
},
|
|
108
|
+
promos: {
|
|
109
|
+
list: (query, o) => client.call(e.promos, { ...scoped(o), query }),
|
|
110
|
+
},
|
|
111
|
+
cart: {
|
|
112
|
+
/** The current cart; a guest call without a token starts a new draft cart. */
|
|
113
|
+
get: async (o) => keepToken(await client.call(e.cart, await cartScoped(o))),
|
|
114
|
+
/** Notes, delivery fee and contact blocks. */
|
|
115
|
+
update: async (input, o) => keepToken(await client.call(e.updateCart, { ...(await cartScoped(o)), body: input })),
|
|
116
|
+
/** Adds a product (201). The guest token goes in the body, as the route reads it there. */
|
|
117
|
+
addItem: async (input, o) => {
|
|
118
|
+
const scope = await cartScoped(o);
|
|
119
|
+
const token = input.session_token ?? scope.headers?.['X-Nonce-Token'];
|
|
120
|
+
return keepToken(await client.call(e.addToCart, { ...scope, body: token ? { ...input, session_token: token } : input }));
|
|
121
|
+
},
|
|
122
|
+
/** Adds and updates by product id in one call; updates win over adds for the same product. */
|
|
123
|
+
batch: async (input, o) => keepToken(await client.call(e.batchCartItems, { ...(await cartScoped(o)), body: input })),
|
|
124
|
+
updateItem: async (cartItemId, input, o) => keepToken(await client.call(e.updateCartItem, { ...(await cartScoped(o)), path: { cartItemId }, body: input })),
|
|
125
|
+
removeItem: async (cartItemId, o) => keepToken(await client.call(e.removeCartItem, { ...(await cartScoped(o)), path: { cartItemId } })),
|
|
126
|
+
/** Removes every item. */
|
|
127
|
+
clear: async (o) => keepToken(await client.call(e.clearCart, await cartScoped(o))),
|
|
128
|
+
/** Needs a cart (token or session) and a store, otherwise 400. */
|
|
129
|
+
calculateShipping: async (input, o) => client.call(e.calculateShipping, { ...(await cartScoped(o)), body: input }),
|
|
130
|
+
/** The guest cart token store, e.g. to forget the cart after an order. */
|
|
131
|
+
token: cartToken,
|
|
132
|
+
},
|
|
133
|
+
checkout: {
|
|
134
|
+
validate: async (o) => client.call(e.validateCheckout, await cartScoped(o)),
|
|
135
|
+
/** Places the order from `items` (201). `clientSecret` is set when the payment needs a confirmation. */
|
|
136
|
+
process: async (input, o) => client.call(e.checkout, { ...(await cartScoped(o)), body: input }),
|
|
137
|
+
},
|
|
138
|
+
orders: {
|
|
139
|
+
list: (query, o) => client.call(e.orders, { ...scoped(o), query }),
|
|
140
|
+
get: (id, o) => client.call(e.order, { ...scoped(o), path: { id } }),
|
|
141
|
+
track: (input, o) => client.call(e.trackOrder, { ...scoped(o), body: input }),
|
|
142
|
+
/** The order's products as they are now, ready to add to the cart. */
|
|
143
|
+
reorder: (id, o) => client.call(e.reorder, { ...scoped(o), path: { id } }),
|
|
144
|
+
cancel: (id, o) => client.call(e.cancelOrder, { ...scoped(o), path: { id } }),
|
|
145
|
+
},
|
|
146
|
+
customer: {
|
|
147
|
+
/** Also counts a visit to the store when one is set. */
|
|
148
|
+
profile: (o) => client.call(e.profile, scoped(o)),
|
|
149
|
+
updateProfile: (input, o) => client.call(e.updateProfile, { ...scoped(o), body: input }),
|
|
150
|
+
/** Creates the address, or updates it when `id` is set. Returns the whole profile. */
|
|
151
|
+
saveShippingAddress: (input, o) => client.call(e.saveShippingAddress, { ...scoped(o), body: input }),
|
|
152
|
+
deleteShippingAddress: (id, o) => client.call(e.deleteShippingAddress, { ...scoped(o), path: { id } }),
|
|
153
|
+
saveBillingAddress: (input, o) => client.call(e.saveBillingAddress, { ...scoped(o), body: input }),
|
|
154
|
+
deleteBillingAddress: (id, o) => client.call(e.deleteBillingAddress, { ...scoped(o), path: { id } }),
|
|
155
|
+
/** The customer's stats in the current store (needs a store). */
|
|
156
|
+
metadata: (o) => client.call(e.metadata, scoped(o)),
|
|
157
|
+
updatePreferences: (preferences, o) => client.call(e.updatePreferences, { ...scoped(o), body: { preferences } }),
|
|
158
|
+
recordProductView: (productId, o) => client.call(e.recordProductView, { ...scoped(o), body: { product_id: productId } }),
|
|
159
|
+
recentSearches: (o) => client.call(e.recentSearches, scoped(o)),
|
|
160
|
+
/** Default limit 100. */
|
|
161
|
+
recentlyViewed: (limit, o) => client.call(e.recentlyViewed, { ...scoped(o), query: limit === undefined ? undefined : { limit } }),
|
|
162
|
+
},
|
|
163
|
+
favorites: {
|
|
164
|
+
list: (query, o) => client.call(e.favorites, { ...scoped(o), query }),
|
|
165
|
+
/** 201. */
|
|
166
|
+
add: (input, o) => client.call(e.addFavorite, { ...scoped(o), body: input }),
|
|
167
|
+
renameCategory: (input, o) => client.call(e.renameFavoriteCategory, { ...scoped(o), body: input }),
|
|
168
|
+
remove: (productId, o) => client.call(e.removeFavorite, { ...scoped(o), path: { productId } }),
|
|
169
|
+
categories: (o) => client.call(e.favoriteCategories, scoped(o)),
|
|
170
|
+
batch: (input, o) => client.call(e.batchFavorites, { ...scoped(o), body: input }),
|
|
171
|
+
},
|
|
172
|
+
/** A contact message for the tenant (needs `clientId`). */
|
|
173
|
+
sendMessage: (input, o) => client.call(e.sendMessage, { ...scoped(o), body: input }),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/storefront/index.ts"],"names":[],"mappings":"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"}
|