@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.
Files changed (31) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +43 -2
  3. package/dist/core/hosts.d.ts +4 -0
  4. package/dist/core/hosts.d.ts.map +1 -1
  5. package/dist/core/hosts.js +4 -0
  6. package/dist/core/hosts.js.map +1 -1
  7. package/dist/modules/authentication/index.d.ts +19 -0
  8. package/dist/modules/authentication/index.d.ts.map +1 -1
  9. package/dist/modules/authentication/index.js +15 -0
  10. package/dist/modules/authentication/index.js.map +1 -1
  11. package/dist/modules/messenger/index.d.ts +92 -0
  12. package/dist/modules/messenger/index.d.ts.map +1 -0
  13. package/dist/modules/messenger/index.js +44 -0
  14. package/dist/modules/messenger/index.js.map +1 -0
  15. package/dist/modules/storefront/index.d.ts +160 -0
  16. package/dist/modules/storefront/index.d.ts.map +1 -0
  17. package/dist/modules/storefront/index.js +176 -0
  18. package/dist/modules/storefront/index.js.map +1 -0
  19. package/dist/modules/storefront/types.d.ts +499 -0
  20. package/dist/modules/storefront/types.d.ts.map +1 -0
  21. package/dist/modules/storefront/types.js +8 -0
  22. package/dist/modules/storefront/types.js.map +1 -0
  23. package/dist/modules/storefront-admin/index.d.ts +85 -0
  24. package/dist/modules/storefront-admin/index.d.ts.map +1 -0
  25. package/dist/modules/storefront-admin/index.js +80 -0
  26. package/dist/modules/storefront-admin/index.js.map +1 -0
  27. package/dist/modules/storefront-admin/types.d.ts +295 -0
  28. package/dist/modules/storefront-admin/types.d.ts.map +1 -0
  29. package/dist/modules/storefront-admin/types.js +2 -0
  30. package/dist/modules/storefront-admin/types.js.map +1 -0
  31. 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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"}