@sdg.la/wishlist-stack-hydrogen 0.9.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 +139 -0
- package/dist/index.cjs +153 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +22 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +141 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware.cjs +113 -0
- package/dist/middleware.cjs.map +1 -0
- package/dist/middleware.d.cts +17 -0
- package/dist/middleware.d.ts +17 -0
- package/dist/middleware.js +111 -0
- package/dist/middleware.js.map +1 -0
- package/dist/react.cjs +44 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +40 -0
- package/dist/react.d.ts +40 -0
- package/dist/react.js +40 -0
- package/dist/react.js.map +1 -0
- package/dist/server.cjs +103 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +9 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.js +101 -0
- package/dist/server.js.map +1 -0
- package/dist/types-7NZ9ikCG.d.cts +37 -0
- package/dist/types-7NZ9ikCG.d.ts +37 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts","../src/middleware.ts"],"names":["createWishlistStackClient"],"mappings":"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","file":"middleware.cjs","sourcesContent":["import { createWishlistStackClient, type WishlistStackClient } from \"@sdg.la/wishlist-stack-sdk\";\nimport type { WishlistStackHydrogenOptions, WishlistStackHydrogenServer } from \"./types\";\n\nfunction createLazyWishlistStackClient(getClient: () => Promise<WishlistStackClient>): WishlistStackClient {\n return {\n lists: {\n getAll: (query) => getClient().then((c) => c.lists.getAll(query)),\n getById: (listId) => getClient().then((c) => c.lists.getById(listId)),\n create: (body) => getClient().then((c) => c.lists.create(body)),\n update: (listId, body) => getClient().then((c) => c.lists.update(listId, body)),\n remove: (listId) => getClient().then((c) => c.lists.remove(listId)),\n addItems: (listId, body) => getClient().then((c) => c.lists.addItems(listId, body)),\n updateItem: (listId, itemId, body) => getClient().then((c) => c.lists.updateItem(listId, itemId, body)),\n removeItem: (listId, itemId) => getClient().then((c) => c.lists.removeItem(listId, itemId)),\n share: (listId) => getClient().then((c) => c.lists.share(listId)),\n unshare: (listId) => getClient().then((c) => c.lists.unshare(listId)),\n addItemsLegacy: (id, body) => getClient().then((c) => c.lists.addItemsLegacy(id, body)),\n },\n groups: {\n getAll: () => getClient().then((c) => c.groups.getAll()),\n getById: (groupId) => getClient().then((c) => c.groups.getById(groupId)),\n create: (body) => getClient().then((c) => c.groups.create(body)),\n update: (groupId, body) => getClient().then((c) => c.groups.update(groupId, body)),\n remove: (groupId) => getClient().then((c) => c.groups.remove(groupId)),\n reorder: (groupId, body) => getClient().then((c) => c.groups.reorder(groupId, body)),\n share: (groupId) => getClient().then((c) => c.groups.share(groupId)),\n unshare: (groupId) => getClient().then((c) => c.groups.unshare(groupId)),\n },\n shared: {\n getSharedList: (listId) => getClient().then((c) => c.shared.getSharedList(listId)),\n getSharedGroup: (groupId) => getClient().then((c) => c.shared.getSharedGroup(groupId)),\n },\n };\n}\n\nasync function defaultGetCustomerAccessToken(context: unknown): Promise<string | undefined> {\n const anyCtx = context as any;\n const customerAccount = anyCtx?.customerAccount;\n const fn = customerAccount?.getAccessToken;\n if (typeof fn !== \"function\") return undefined;\n try {\n const token = await fn.call(customerAccount);\n return typeof token === \"string\" ? token : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function createWishlistStackServerContext(options: WishlistStackHydrogenOptions) {\n return function attachToContext(context: unknown): { wishlistStack: WishlistStackHydrogenServer; wishlistStackClient: WishlistStackClient } {\n if (!options.apiKey) {\n throw new Error(\"merchant api key is required. Pass it to createWishlistStackServerContext({ apiKey })\");\n }\n\n const getToken = async () => {\n if (options.getCustomerAccessToken) {\n const token = await options.getCustomerAccessToken(context);\n return typeof token === \"string\" ? token : undefined;\n }\n return await defaultGetCustomerAccessToken(context);\n };\n\n let cachedClient: WishlistStackClient | undefined;\n let cachedToken: string | undefined;\n\n const server: WishlistStackHydrogenServer = {\n async getCustomerAccessToken() {\n return await getToken();\n },\n async getClient() {\n const token = await getToken();\n // Cache by token value so calls within a single request reuse the client.\n if (cachedClient && cachedToken === token) return cachedClient;\n cachedToken = token;\n cachedClient = createWishlistStackClient({\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n customerAccessToken: token,\n });\n return cachedClient;\n },\n async bootstrapClientConfig(opts) {\n const expose = opts?.exposeCustomerAccessToken ?? false;\n const token = expose ? await getToken() : undefined;\n return {\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n customerAccessToken: token,\n };\n },\n };\n\n const wishlistStackClient = createLazyWishlistStackClient(server.getClient);\n\n const anyCtx = context as any;\n if (anyCtx && typeof anyCtx.set === \"function\") {\n // Context map style (some React Router middleware implementations).\n anyCtx.set(\"wishlistStack\", server);\n anyCtx.set(\"wishlistStackClient\", wishlistStackClient);\n } else if (anyCtx && typeof anyCtx === \"object\") {\n // Plain object style (Hydrogen load context is an object).\n anyCtx.wishlistStack = server;\n anyCtx.wishlistStackClient = wishlistStackClient;\n }\n\n return { wishlistStack: server, wishlistStackClient };\n };\n}\n\n","import type { WishlistStackHydrogenOptions } from \"./types\";\nimport { createWishlistStackServerContext } from \"./server\";\n\ntype MiddlewareArgs = {\n request: Request;\n context: any;\n};\n\ntype MiddlewareNext = () => Promise<Response> | Response;\n\n/**\n * React Router middleware helper (Hydrogen react-router, middleware-enabled).\n *\n * We intentionally avoid importing react-router types here; we only require the\n * common shape: an object `context` that we can mutate (or that has `set()`).\n */\nexport function createWishlistStackMiddleware(options: WishlistStackHydrogenOptions) {\n const attach = createWishlistStackServerContext(options);\n return async function wishlistStackMiddleware(args: MiddlewareArgs, next: MiddlewareNext) {\n const ctxObj = args.context ?? {};\n // `attach` registers `wishlistStack` and `wishlistStackClient` onto the context (supports `set()` and mutation).\n attach(ctxObj);\n\n return await next();\n };\n}\n\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { a as WishlistStackHydrogenOptions } from './types-7NZ9ikCG.cjs';
|
|
2
|
+
import '@sdg.la/wishlist-stack-sdk';
|
|
3
|
+
|
|
4
|
+
type MiddlewareArgs = {
|
|
5
|
+
request: Request;
|
|
6
|
+
context: any;
|
|
7
|
+
};
|
|
8
|
+
type MiddlewareNext = () => Promise<Response> | Response;
|
|
9
|
+
/**
|
|
10
|
+
* React Router middleware helper (Hydrogen react-router, middleware-enabled).
|
|
11
|
+
*
|
|
12
|
+
* We intentionally avoid importing react-router types here; we only require the
|
|
13
|
+
* common shape: an object `context` that we can mutate (or that has `set()`).
|
|
14
|
+
*/
|
|
15
|
+
declare function createWishlistStackMiddleware(options: WishlistStackHydrogenOptions): (args: MiddlewareArgs, next: MiddlewareNext) => Promise<Response>;
|
|
16
|
+
|
|
17
|
+
export { createWishlistStackMiddleware };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { a as WishlistStackHydrogenOptions } from './types-7NZ9ikCG.js';
|
|
2
|
+
import '@sdg.la/wishlist-stack-sdk';
|
|
3
|
+
|
|
4
|
+
type MiddlewareArgs = {
|
|
5
|
+
request: Request;
|
|
6
|
+
context: any;
|
|
7
|
+
};
|
|
8
|
+
type MiddlewareNext = () => Promise<Response> | Response;
|
|
9
|
+
/**
|
|
10
|
+
* React Router middleware helper (Hydrogen react-router, middleware-enabled).
|
|
11
|
+
*
|
|
12
|
+
* We intentionally avoid importing react-router types here; we only require the
|
|
13
|
+
* common shape: an object `context` that we can mutate (or that has `set()`).
|
|
14
|
+
*/
|
|
15
|
+
declare function createWishlistStackMiddleware(options: WishlistStackHydrogenOptions): (args: MiddlewareArgs, next: MiddlewareNext) => Promise<Response>;
|
|
16
|
+
|
|
17
|
+
export { createWishlistStackMiddleware };
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { createWishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
2
|
+
|
|
3
|
+
// src/server.ts
|
|
4
|
+
function createLazyWishlistStackClient(getClient) {
|
|
5
|
+
return {
|
|
6
|
+
lists: {
|
|
7
|
+
getAll: (query) => getClient().then((c) => c.lists.getAll(query)),
|
|
8
|
+
getById: (listId) => getClient().then((c) => c.lists.getById(listId)),
|
|
9
|
+
create: (body) => getClient().then((c) => c.lists.create(body)),
|
|
10
|
+
update: (listId, body) => getClient().then((c) => c.lists.update(listId, body)),
|
|
11
|
+
remove: (listId) => getClient().then((c) => c.lists.remove(listId)),
|
|
12
|
+
addItems: (listId, body) => getClient().then((c) => c.lists.addItems(listId, body)),
|
|
13
|
+
updateItem: (listId, itemId, body) => getClient().then((c) => c.lists.updateItem(listId, itemId, body)),
|
|
14
|
+
removeItem: (listId, itemId) => getClient().then((c) => c.lists.removeItem(listId, itemId)),
|
|
15
|
+
share: (listId) => getClient().then((c) => c.lists.share(listId)),
|
|
16
|
+
unshare: (listId) => getClient().then((c) => c.lists.unshare(listId)),
|
|
17
|
+
addItemsLegacy: (id, body) => getClient().then((c) => c.lists.addItemsLegacy(id, body))
|
|
18
|
+
},
|
|
19
|
+
groups: {
|
|
20
|
+
getAll: () => getClient().then((c) => c.groups.getAll()),
|
|
21
|
+
getById: (groupId) => getClient().then((c) => c.groups.getById(groupId)),
|
|
22
|
+
create: (body) => getClient().then((c) => c.groups.create(body)),
|
|
23
|
+
update: (groupId, body) => getClient().then((c) => c.groups.update(groupId, body)),
|
|
24
|
+
remove: (groupId) => getClient().then((c) => c.groups.remove(groupId)),
|
|
25
|
+
reorder: (groupId, body) => getClient().then((c) => c.groups.reorder(groupId, body)),
|
|
26
|
+
share: (groupId) => getClient().then((c) => c.groups.share(groupId)),
|
|
27
|
+
unshare: (groupId) => getClient().then((c) => c.groups.unshare(groupId))
|
|
28
|
+
},
|
|
29
|
+
shared: {
|
|
30
|
+
getSharedList: (listId) => getClient().then((c) => c.shared.getSharedList(listId)),
|
|
31
|
+
getSharedGroup: (groupId) => getClient().then((c) => c.shared.getSharedGroup(groupId))
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function defaultGetCustomerAccessToken(context) {
|
|
36
|
+
const anyCtx = context;
|
|
37
|
+
const customerAccount = anyCtx?.customerAccount;
|
|
38
|
+
const fn = customerAccount?.getAccessToken;
|
|
39
|
+
if (typeof fn !== "function") return void 0;
|
|
40
|
+
try {
|
|
41
|
+
const token = await fn.call(customerAccount);
|
|
42
|
+
return typeof token === "string" ? token : void 0;
|
|
43
|
+
} catch {
|
|
44
|
+
return void 0;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function createWishlistStackServerContext(options) {
|
|
48
|
+
return function attachToContext(context) {
|
|
49
|
+
if (!options.apiKey) {
|
|
50
|
+
throw new Error("merchant api key is required. Pass it to createWishlistStackServerContext({ apiKey })");
|
|
51
|
+
}
|
|
52
|
+
const getToken = async () => {
|
|
53
|
+
if (options.getCustomerAccessToken) {
|
|
54
|
+
const token = await options.getCustomerAccessToken(context);
|
|
55
|
+
return typeof token === "string" ? token : void 0;
|
|
56
|
+
}
|
|
57
|
+
return await defaultGetCustomerAccessToken(context);
|
|
58
|
+
};
|
|
59
|
+
let cachedClient;
|
|
60
|
+
let cachedToken;
|
|
61
|
+
const server = {
|
|
62
|
+
async getCustomerAccessToken() {
|
|
63
|
+
return await getToken();
|
|
64
|
+
},
|
|
65
|
+
async getClient() {
|
|
66
|
+
const token = await getToken();
|
|
67
|
+
if (cachedClient && cachedToken === token) return cachedClient;
|
|
68
|
+
cachedToken = token;
|
|
69
|
+
cachedClient = createWishlistStackClient({
|
|
70
|
+
apiKey: options.apiKey,
|
|
71
|
+
baseUrl: options.baseUrl,
|
|
72
|
+
customerAccessToken: token
|
|
73
|
+
});
|
|
74
|
+
return cachedClient;
|
|
75
|
+
},
|
|
76
|
+
async bootstrapClientConfig(opts) {
|
|
77
|
+
const expose = opts?.exposeCustomerAccessToken ?? false;
|
|
78
|
+
const token = expose ? await getToken() : void 0;
|
|
79
|
+
return {
|
|
80
|
+
apiKey: options.apiKey,
|
|
81
|
+
baseUrl: options.baseUrl,
|
|
82
|
+
customerAccessToken: token
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const wishlistStackClient = createLazyWishlistStackClient(server.getClient);
|
|
87
|
+
const anyCtx = context;
|
|
88
|
+
if (anyCtx && typeof anyCtx.set === "function") {
|
|
89
|
+
anyCtx.set("wishlistStack", server);
|
|
90
|
+
anyCtx.set("wishlistStackClient", wishlistStackClient);
|
|
91
|
+
} else if (anyCtx && typeof anyCtx === "object") {
|
|
92
|
+
anyCtx.wishlistStack = server;
|
|
93
|
+
anyCtx.wishlistStackClient = wishlistStackClient;
|
|
94
|
+
}
|
|
95
|
+
return { wishlistStack: server, wishlistStackClient };
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// src/middleware.ts
|
|
100
|
+
function createWishlistStackMiddleware(options) {
|
|
101
|
+
const attach = createWishlistStackServerContext(options);
|
|
102
|
+
return async function wishlistStackMiddleware(args, next) {
|
|
103
|
+
const ctxObj = args.context ?? {};
|
|
104
|
+
attach(ctxObj);
|
|
105
|
+
return await next();
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { createWishlistStackMiddleware };
|
|
110
|
+
//# sourceMappingURL=middleware.js.map
|
|
111
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts","../src/middleware.ts"],"names":[],"mappings":"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","file":"middleware.js","sourcesContent":["import { createWishlistStackClient, type WishlistStackClient } from \"@sdg.la/wishlist-stack-sdk\";\nimport type { WishlistStackHydrogenOptions, WishlistStackHydrogenServer } from \"./types\";\n\nfunction createLazyWishlistStackClient(getClient: () => Promise<WishlistStackClient>): WishlistStackClient {\n return {\n lists: {\n getAll: (query) => getClient().then((c) => c.lists.getAll(query)),\n getById: (listId) => getClient().then((c) => c.lists.getById(listId)),\n create: (body) => getClient().then((c) => c.lists.create(body)),\n update: (listId, body) => getClient().then((c) => c.lists.update(listId, body)),\n remove: (listId) => getClient().then((c) => c.lists.remove(listId)),\n addItems: (listId, body) => getClient().then((c) => c.lists.addItems(listId, body)),\n updateItem: (listId, itemId, body) => getClient().then((c) => c.lists.updateItem(listId, itemId, body)),\n removeItem: (listId, itemId) => getClient().then((c) => c.lists.removeItem(listId, itemId)),\n share: (listId) => getClient().then((c) => c.lists.share(listId)),\n unshare: (listId) => getClient().then((c) => c.lists.unshare(listId)),\n addItemsLegacy: (id, body) => getClient().then((c) => c.lists.addItemsLegacy(id, body)),\n },\n groups: {\n getAll: () => getClient().then((c) => c.groups.getAll()),\n getById: (groupId) => getClient().then((c) => c.groups.getById(groupId)),\n create: (body) => getClient().then((c) => c.groups.create(body)),\n update: (groupId, body) => getClient().then((c) => c.groups.update(groupId, body)),\n remove: (groupId) => getClient().then((c) => c.groups.remove(groupId)),\n reorder: (groupId, body) => getClient().then((c) => c.groups.reorder(groupId, body)),\n share: (groupId) => getClient().then((c) => c.groups.share(groupId)),\n unshare: (groupId) => getClient().then((c) => c.groups.unshare(groupId)),\n },\n shared: {\n getSharedList: (listId) => getClient().then((c) => c.shared.getSharedList(listId)),\n getSharedGroup: (groupId) => getClient().then((c) => c.shared.getSharedGroup(groupId)),\n },\n };\n}\n\nasync function defaultGetCustomerAccessToken(context: unknown): Promise<string | undefined> {\n const anyCtx = context as any;\n const customerAccount = anyCtx?.customerAccount;\n const fn = customerAccount?.getAccessToken;\n if (typeof fn !== \"function\") return undefined;\n try {\n const token = await fn.call(customerAccount);\n return typeof token === \"string\" ? token : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function createWishlistStackServerContext(options: WishlistStackHydrogenOptions) {\n return function attachToContext(context: unknown): { wishlistStack: WishlistStackHydrogenServer; wishlistStackClient: WishlistStackClient } {\n if (!options.apiKey) {\n throw new Error(\"merchant api key is required. Pass it to createWishlistStackServerContext({ apiKey })\");\n }\n\n const getToken = async () => {\n if (options.getCustomerAccessToken) {\n const token = await options.getCustomerAccessToken(context);\n return typeof token === \"string\" ? token : undefined;\n }\n return await defaultGetCustomerAccessToken(context);\n };\n\n let cachedClient: WishlistStackClient | undefined;\n let cachedToken: string | undefined;\n\n const server: WishlistStackHydrogenServer = {\n async getCustomerAccessToken() {\n return await getToken();\n },\n async getClient() {\n const token = await getToken();\n // Cache by token value so calls within a single request reuse the client.\n if (cachedClient && cachedToken === token) return cachedClient;\n cachedToken = token;\n cachedClient = createWishlistStackClient({\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n customerAccessToken: token,\n });\n return cachedClient;\n },\n async bootstrapClientConfig(opts) {\n const expose = opts?.exposeCustomerAccessToken ?? false;\n const token = expose ? await getToken() : undefined;\n return {\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n customerAccessToken: token,\n };\n },\n };\n\n const wishlistStackClient = createLazyWishlistStackClient(server.getClient);\n\n const anyCtx = context as any;\n if (anyCtx && typeof anyCtx.set === \"function\") {\n // Context map style (some React Router middleware implementations).\n anyCtx.set(\"wishlistStack\", server);\n anyCtx.set(\"wishlistStackClient\", wishlistStackClient);\n } else if (anyCtx && typeof anyCtx === \"object\") {\n // Plain object style (Hydrogen load context is an object).\n anyCtx.wishlistStack = server;\n anyCtx.wishlistStackClient = wishlistStackClient;\n }\n\n return { wishlistStack: server, wishlistStackClient };\n };\n}\n\n","import type { WishlistStackHydrogenOptions } from \"./types\";\nimport { createWishlistStackServerContext } from \"./server\";\n\ntype MiddlewareArgs = {\n request: Request;\n context: any;\n};\n\ntype MiddlewareNext = () => Promise<Response> | Response;\n\n/**\n * React Router middleware helper (Hydrogen react-router, middleware-enabled).\n *\n * We intentionally avoid importing react-router types here; we only require the\n * common shape: an object `context` that we can mutate (or that has `set()`).\n */\nexport function createWishlistStackMiddleware(options: WishlistStackHydrogenOptions) {\n const attach = createWishlistStackServerContext(options);\n return async function wishlistStackMiddleware(args: MiddlewareArgs, next: MiddlewareNext) {\n const ctxObj = args.context ?? {};\n // `attach` registers `wishlistStack` and `wishlistStackClient` onto the context (supports `set()` and mutation).\n attach(ctxObj);\n\n return await next();\n };\n}\n\n"]}
|
package/dist/react.cjs
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var wishlistStackSdk = require('@sdg.la/wishlist-stack-sdk');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
// src/react.tsx
|
|
8
|
+
var WishlistStackContext = react.createContext(null);
|
|
9
|
+
function WishlistStackProvider(props) {
|
|
10
|
+
const mode = props.mode ?? "proxy";
|
|
11
|
+
const [state, setState] = react.useState(props.initialState ?? {});
|
|
12
|
+
const client = react.useMemo(() => {
|
|
13
|
+
return wishlistStackSdk.createWishlistStackClient({
|
|
14
|
+
apiKey: props.config.apiKey,
|
|
15
|
+
baseUrl: props.config.baseUrl,
|
|
16
|
+
customerAccessToken: mode === "direct" ? props.initialCustomerAccessToken : void 0
|
|
17
|
+
});
|
|
18
|
+
}, [props.config.apiKey, props.config.baseUrl, props.initialCustomerAccessToken, mode]);
|
|
19
|
+
const setStateStable = react.useCallback(
|
|
20
|
+
(next) => setState(next),
|
|
21
|
+
[]
|
|
22
|
+
);
|
|
23
|
+
const value = react.useMemo(
|
|
24
|
+
() => ({ client, mode, state, setState: setStateStable }),
|
|
25
|
+
[client, mode, state, setStateStable]
|
|
26
|
+
);
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsx(WishlistStackContext.Provider, { value, children: props.children });
|
|
28
|
+
}
|
|
29
|
+
function useWishlistStack() {
|
|
30
|
+
const ctx = react.useContext(WishlistStackContext);
|
|
31
|
+
if (!ctx) {
|
|
32
|
+
throw new Error("useWishlistStack must be used within <WishlistStackProvider>.");
|
|
33
|
+
}
|
|
34
|
+
return ctx;
|
|
35
|
+
}
|
|
36
|
+
function useWishlistStackClient() {
|
|
37
|
+
return useWishlistStack().client;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.WishlistStackProvider = WishlistStackProvider;
|
|
41
|
+
exports.useWishlistStack = useWishlistStack;
|
|
42
|
+
exports.useWishlistStackClient = useWishlistStackClient;
|
|
43
|
+
//# sourceMappingURL=react.cjs.map
|
|
44
|
+
//# sourceMappingURL=react.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react.tsx"],"names":["createContext","useState","useMemo","createWishlistStackClient","useCallback","useContext"],"mappings":";;;;;;;AAsCA,IAAM,oBAAA,GAAuBA,oBAAiD,IAAI,CAAA;AAE3E,SAAS,sBAAsB,KAAA,EAAmC;AACvE,EAAA,MAAM,IAAA,GAAkC,MAAM,IAAA,IAAQ,OAAA;AAEtD,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAIC,eAAmC,KAAA,CAAM,YAAA,IAAgB,EAAE,CAAA;AAErF,EAAA,MAAM,MAAA,GAASC,cAAQ,MAAM;AAC3B,IAAA,OAAOC,0CAAA,CAA0B;AAAA,MAC/B,MAAA,EAAQ,MAAM,MAAA,CAAO,MAAA;AAAA,MACrB,OAAA,EAAS,MAAM,MAAA,CAAO,OAAA;AAAA,MACtB,mBAAA,EAAqB,IAAA,KAAS,QAAA,GAAW,KAAA,CAAM,0BAAA,GAA6B;AAAA,KAC7E,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,KAAA,CAAM,MAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,MAAA,CAAO,OAAA,EAAS,KAAA,CAAM,0BAAA,EAA4B,IAAI,CAAC,CAAA;AAEtF,EAAA,MAAM,cAAA,GAAiBC,iBAAA;AAAA,IACrB,CAAC,IAAA,KAAoG,QAAA,CAAS,IAAW,CAAA;AAAA,IACzH;AAAC,GACH;AAEA,EAAA,MAAM,KAAA,GAAQF,aAAA;AAAA,IACZ,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,UAAU,cAAA,EAAe,CAAA;AAAA,IACvD,CAAC,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,cAAc;AAAA,GACtC;AAEA,EAAA,sCAAQ,oBAAA,CAAqB,QAAA,EAArB,EAA8B,KAAA,EAAe,gBAAM,QAAA,EAAS,CAAA;AACtE;AAEO,SAAS,gBAAA,GAA+C;AAC7D,EAAA,MAAM,GAAA,GAAMG,iBAAW,oBAAoB,CAAA;AAC3C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,EACjF;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,sBAAA,GAA8C;AAC5D,EAAA,OAAO,kBAAiB,CAAE,MAAA;AAC5B","file":"react.cjs","sourcesContent":["import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport { createWishlistStackClient, type WishlistStackClient } from \"@sdg.la/wishlist-stack-sdk\";\nimport type { BootstrapClientConfig } from \"./types\";\n\nexport type WishlistStackProviderMode = \"proxy\" | \"direct\";\n\n/**\n * Lightweight client-side state for convenience features (e.g. \"is this variant wishlisted?\").\n * Intentionally minimal and extendable.\n */\nexport type WishlistStackGlobalState = {\n savedVariantIds?: string[];\n savedProductIds?: string[];\n};\n\nexport type WishlistStackProviderProps = {\n children: React.ReactNode;\n config: Pick<BootstrapClientConfig, \"apiKey\" | \"baseUrl\">;\n /**\n * Only used for `mode=\"direct\"`.\n * In proxy mode, authenticated requests should be done server-side.\n */\n initialCustomerAccessToken?: string;\n mode?: WishlistStackProviderMode;\n /**\n * Optional, app-managed global state (can be hydrated from a loader).\n * You can update it via `useWishlistStack().setState(...)`.\n */\n initialState?: WishlistStackGlobalState;\n};\n\ntype WishlistStackProviderValue = {\n client: WishlistStackClient;\n mode: WishlistStackProviderMode;\n state: WishlistStackGlobalState;\n setState: (next: WishlistStackGlobalState | ((prev: WishlistStackGlobalState) => WishlistStackGlobalState)) => void;\n};\n\nconst WishlistStackContext = createContext<WishlistStackProviderValue | null>(null);\n\nexport function WishlistStackProvider(props: WishlistStackProviderProps) {\n const mode: WishlistStackProviderMode = props.mode ?? \"proxy\";\n\n const [state, setState] = useState<WishlistStackGlobalState>(props.initialState ?? {});\n\n const client = useMemo(() => {\n return createWishlistStackClient({\n apiKey: props.config.apiKey,\n baseUrl: props.config.baseUrl,\n customerAccessToken: mode === \"direct\" ? props.initialCustomerAccessToken : undefined,\n });\n }, [props.config.apiKey, props.config.baseUrl, props.initialCustomerAccessToken, mode]);\n\n const setStateStable = useCallback(\n (next: WishlistStackGlobalState | ((prev: WishlistStackGlobalState) => WishlistStackGlobalState)) => setState(next as any),\n [],\n );\n\n const value = useMemo(\n () => ({ client, mode, state, setState: setStateStable }),\n [client, mode, state, setStateStable],\n );\n\n return <WishlistStackContext.Provider value={value}>{props.children}</WishlistStackContext.Provider>;\n}\n\nexport function useWishlistStack(): WishlistStackProviderValue {\n const ctx = useContext(WishlistStackContext);\n if (!ctx) {\n throw new Error(\"useWishlistStack must be used within <WishlistStackProvider>.\");\n }\n return ctx;\n}\n\nexport function useWishlistStackClient(): WishlistStackClient {\n return useWishlistStack().client;\n}\n"]}
|
package/dist/react.d.cts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { WishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
4
|
+
import { B as BootstrapClientConfig } from './types-7NZ9ikCG.cjs';
|
|
5
|
+
|
|
6
|
+
type WishlistStackProviderMode = "proxy" | "direct";
|
|
7
|
+
/**
|
|
8
|
+
* Lightweight client-side state for convenience features (e.g. "is this variant wishlisted?").
|
|
9
|
+
* Intentionally minimal and extendable.
|
|
10
|
+
*/
|
|
11
|
+
type WishlistStackGlobalState = {
|
|
12
|
+
savedVariantIds?: string[];
|
|
13
|
+
savedProductIds?: string[];
|
|
14
|
+
};
|
|
15
|
+
type WishlistStackProviderProps = {
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
config: Pick<BootstrapClientConfig, "apiKey" | "baseUrl">;
|
|
18
|
+
/**
|
|
19
|
+
* Only used for `mode="direct"`.
|
|
20
|
+
* In proxy mode, authenticated requests should be done server-side.
|
|
21
|
+
*/
|
|
22
|
+
initialCustomerAccessToken?: string;
|
|
23
|
+
mode?: WishlistStackProviderMode;
|
|
24
|
+
/**
|
|
25
|
+
* Optional, app-managed global state (can be hydrated from a loader).
|
|
26
|
+
* You can update it via `useWishlistStack().setState(...)`.
|
|
27
|
+
*/
|
|
28
|
+
initialState?: WishlistStackGlobalState;
|
|
29
|
+
};
|
|
30
|
+
type WishlistStackProviderValue = {
|
|
31
|
+
client: WishlistStackClient;
|
|
32
|
+
mode: WishlistStackProviderMode;
|
|
33
|
+
state: WishlistStackGlobalState;
|
|
34
|
+
setState: (next: WishlistStackGlobalState | ((prev: WishlistStackGlobalState) => WishlistStackGlobalState)) => void;
|
|
35
|
+
};
|
|
36
|
+
declare function WishlistStackProvider(props: WishlistStackProviderProps): react_jsx_runtime.JSX.Element;
|
|
37
|
+
declare function useWishlistStack(): WishlistStackProviderValue;
|
|
38
|
+
declare function useWishlistStackClient(): WishlistStackClient;
|
|
39
|
+
|
|
40
|
+
export { type WishlistStackGlobalState, WishlistStackProvider, type WishlistStackProviderMode, type WishlistStackProviderProps, useWishlistStack, useWishlistStackClient };
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { WishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
4
|
+
import { B as BootstrapClientConfig } from './types-7NZ9ikCG.js';
|
|
5
|
+
|
|
6
|
+
type WishlistStackProviderMode = "proxy" | "direct";
|
|
7
|
+
/**
|
|
8
|
+
* Lightweight client-side state for convenience features (e.g. "is this variant wishlisted?").
|
|
9
|
+
* Intentionally minimal and extendable.
|
|
10
|
+
*/
|
|
11
|
+
type WishlistStackGlobalState = {
|
|
12
|
+
savedVariantIds?: string[];
|
|
13
|
+
savedProductIds?: string[];
|
|
14
|
+
};
|
|
15
|
+
type WishlistStackProviderProps = {
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
config: Pick<BootstrapClientConfig, "apiKey" | "baseUrl">;
|
|
18
|
+
/**
|
|
19
|
+
* Only used for `mode="direct"`.
|
|
20
|
+
* In proxy mode, authenticated requests should be done server-side.
|
|
21
|
+
*/
|
|
22
|
+
initialCustomerAccessToken?: string;
|
|
23
|
+
mode?: WishlistStackProviderMode;
|
|
24
|
+
/**
|
|
25
|
+
* Optional, app-managed global state (can be hydrated from a loader).
|
|
26
|
+
* You can update it via `useWishlistStack().setState(...)`.
|
|
27
|
+
*/
|
|
28
|
+
initialState?: WishlistStackGlobalState;
|
|
29
|
+
};
|
|
30
|
+
type WishlistStackProviderValue = {
|
|
31
|
+
client: WishlistStackClient;
|
|
32
|
+
mode: WishlistStackProviderMode;
|
|
33
|
+
state: WishlistStackGlobalState;
|
|
34
|
+
setState: (next: WishlistStackGlobalState | ((prev: WishlistStackGlobalState) => WishlistStackGlobalState)) => void;
|
|
35
|
+
};
|
|
36
|
+
declare function WishlistStackProvider(props: WishlistStackProviderProps): react_jsx_runtime.JSX.Element;
|
|
37
|
+
declare function useWishlistStack(): WishlistStackProviderValue;
|
|
38
|
+
declare function useWishlistStackClient(): WishlistStackClient;
|
|
39
|
+
|
|
40
|
+
export { type WishlistStackGlobalState, WishlistStackProvider, type WishlistStackProviderMode, type WishlistStackProviderProps, useWishlistStack, useWishlistStackClient };
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createContext, useState, useMemo, useCallback, useContext } from 'react';
|
|
2
|
+
import { createWishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/react.tsx
|
|
6
|
+
var WishlistStackContext = createContext(null);
|
|
7
|
+
function WishlistStackProvider(props) {
|
|
8
|
+
const mode = props.mode ?? "proxy";
|
|
9
|
+
const [state, setState] = useState(props.initialState ?? {});
|
|
10
|
+
const client = useMemo(() => {
|
|
11
|
+
return createWishlistStackClient({
|
|
12
|
+
apiKey: props.config.apiKey,
|
|
13
|
+
baseUrl: props.config.baseUrl,
|
|
14
|
+
customerAccessToken: mode === "direct" ? props.initialCustomerAccessToken : void 0
|
|
15
|
+
});
|
|
16
|
+
}, [props.config.apiKey, props.config.baseUrl, props.initialCustomerAccessToken, mode]);
|
|
17
|
+
const setStateStable = useCallback(
|
|
18
|
+
(next) => setState(next),
|
|
19
|
+
[]
|
|
20
|
+
);
|
|
21
|
+
const value = useMemo(
|
|
22
|
+
() => ({ client, mode, state, setState: setStateStable }),
|
|
23
|
+
[client, mode, state, setStateStable]
|
|
24
|
+
);
|
|
25
|
+
return /* @__PURE__ */ jsx(WishlistStackContext.Provider, { value, children: props.children });
|
|
26
|
+
}
|
|
27
|
+
function useWishlistStack() {
|
|
28
|
+
const ctx = useContext(WishlistStackContext);
|
|
29
|
+
if (!ctx) {
|
|
30
|
+
throw new Error("useWishlistStack must be used within <WishlistStackProvider>.");
|
|
31
|
+
}
|
|
32
|
+
return ctx;
|
|
33
|
+
}
|
|
34
|
+
function useWishlistStackClient() {
|
|
35
|
+
return useWishlistStack().client;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { WishlistStackProvider, useWishlistStack, useWishlistStackClient };
|
|
39
|
+
//# sourceMappingURL=react.js.map
|
|
40
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react.tsx"],"names":[],"mappings":";;;;;AAsCA,IAAM,oBAAA,GAAuB,cAAiD,IAAI,CAAA;AAE3E,SAAS,sBAAsB,KAAA,EAAmC;AACvE,EAAA,MAAM,IAAA,GAAkC,MAAM,IAAA,IAAQ,OAAA;AAEtD,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAI,SAAmC,KAAA,CAAM,YAAA,IAAgB,EAAE,CAAA;AAErF,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAA,OAAO,yBAAA,CAA0B;AAAA,MAC/B,MAAA,EAAQ,MAAM,MAAA,CAAO,MAAA;AAAA,MACrB,OAAA,EAAS,MAAM,MAAA,CAAO,OAAA;AAAA,MACtB,mBAAA,EAAqB,IAAA,KAAS,QAAA,GAAW,KAAA,CAAM,0BAAA,GAA6B;AAAA,KAC7E,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,KAAA,CAAM,MAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,MAAA,CAAO,OAAA,EAAS,KAAA,CAAM,0BAAA,EAA4B,IAAI,CAAC,CAAA;AAEtF,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,IAAA,KAAoG,QAAA,CAAS,IAAW,CAAA;AAAA,IACzH;AAAC,GACH;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,UAAU,cAAA,EAAe,CAAA;AAAA,IACvD,CAAC,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,cAAc;AAAA,GACtC;AAEA,EAAA,2BAAQ,oBAAA,CAAqB,QAAA,EAArB,EAA8B,KAAA,EAAe,gBAAM,QAAA,EAAS,CAAA;AACtE;AAEO,SAAS,gBAAA,GAA+C;AAC7D,EAAA,MAAM,GAAA,GAAM,WAAW,oBAAoB,CAAA;AAC3C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,EACjF;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,sBAAA,GAA8C;AAC5D,EAAA,OAAO,kBAAiB,CAAE,MAAA;AAC5B","file":"react.js","sourcesContent":["import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport { createWishlistStackClient, type WishlistStackClient } from \"@sdg.la/wishlist-stack-sdk\";\nimport type { BootstrapClientConfig } from \"./types\";\n\nexport type WishlistStackProviderMode = \"proxy\" | \"direct\";\n\n/**\n * Lightweight client-side state for convenience features (e.g. \"is this variant wishlisted?\").\n * Intentionally minimal and extendable.\n */\nexport type WishlistStackGlobalState = {\n savedVariantIds?: string[];\n savedProductIds?: string[];\n};\n\nexport type WishlistStackProviderProps = {\n children: React.ReactNode;\n config: Pick<BootstrapClientConfig, \"apiKey\" | \"baseUrl\">;\n /**\n * Only used for `mode=\"direct\"`.\n * In proxy mode, authenticated requests should be done server-side.\n */\n initialCustomerAccessToken?: string;\n mode?: WishlistStackProviderMode;\n /**\n * Optional, app-managed global state (can be hydrated from a loader).\n * You can update it via `useWishlistStack().setState(...)`.\n */\n initialState?: WishlistStackGlobalState;\n};\n\ntype WishlistStackProviderValue = {\n client: WishlistStackClient;\n mode: WishlistStackProviderMode;\n state: WishlistStackGlobalState;\n setState: (next: WishlistStackGlobalState | ((prev: WishlistStackGlobalState) => WishlistStackGlobalState)) => void;\n};\n\nconst WishlistStackContext = createContext<WishlistStackProviderValue | null>(null);\n\nexport function WishlistStackProvider(props: WishlistStackProviderProps) {\n const mode: WishlistStackProviderMode = props.mode ?? \"proxy\";\n\n const [state, setState] = useState<WishlistStackGlobalState>(props.initialState ?? {});\n\n const client = useMemo(() => {\n return createWishlistStackClient({\n apiKey: props.config.apiKey,\n baseUrl: props.config.baseUrl,\n customerAccessToken: mode === \"direct\" ? props.initialCustomerAccessToken : undefined,\n });\n }, [props.config.apiKey, props.config.baseUrl, props.initialCustomerAccessToken, mode]);\n\n const setStateStable = useCallback(\n (next: WishlistStackGlobalState | ((prev: WishlistStackGlobalState) => WishlistStackGlobalState)) => setState(next as any),\n [],\n );\n\n const value = useMemo(\n () => ({ client, mode, state, setState: setStateStable }),\n [client, mode, state, setStateStable],\n );\n\n return <WishlistStackContext.Provider value={value}>{props.children}</WishlistStackContext.Provider>;\n}\n\nexport function useWishlistStack(): WishlistStackProviderValue {\n const ctx = useContext(WishlistStackContext);\n if (!ctx) {\n throw new Error(\"useWishlistStack must be used within <WishlistStackProvider>.\");\n }\n return ctx;\n}\n\nexport function useWishlistStackClient(): WishlistStackClient {\n return useWishlistStack().client;\n}\n"]}
|
package/dist/server.cjs
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var wishlistStackSdk = require('@sdg.la/wishlist-stack-sdk');
|
|
4
|
+
|
|
5
|
+
// src/server.ts
|
|
6
|
+
function createLazyWishlistStackClient(getClient) {
|
|
7
|
+
return {
|
|
8
|
+
lists: {
|
|
9
|
+
getAll: (query) => getClient().then((c) => c.lists.getAll(query)),
|
|
10
|
+
getById: (listId) => getClient().then((c) => c.lists.getById(listId)),
|
|
11
|
+
create: (body) => getClient().then((c) => c.lists.create(body)),
|
|
12
|
+
update: (listId, body) => getClient().then((c) => c.lists.update(listId, body)),
|
|
13
|
+
remove: (listId) => getClient().then((c) => c.lists.remove(listId)),
|
|
14
|
+
addItems: (listId, body) => getClient().then((c) => c.lists.addItems(listId, body)),
|
|
15
|
+
updateItem: (listId, itemId, body) => getClient().then((c) => c.lists.updateItem(listId, itemId, body)),
|
|
16
|
+
removeItem: (listId, itemId) => getClient().then((c) => c.lists.removeItem(listId, itemId)),
|
|
17
|
+
share: (listId) => getClient().then((c) => c.lists.share(listId)),
|
|
18
|
+
unshare: (listId) => getClient().then((c) => c.lists.unshare(listId)),
|
|
19
|
+
addItemsLegacy: (id, body) => getClient().then((c) => c.lists.addItemsLegacy(id, body))
|
|
20
|
+
},
|
|
21
|
+
groups: {
|
|
22
|
+
getAll: () => getClient().then((c) => c.groups.getAll()),
|
|
23
|
+
getById: (groupId) => getClient().then((c) => c.groups.getById(groupId)),
|
|
24
|
+
create: (body) => getClient().then((c) => c.groups.create(body)),
|
|
25
|
+
update: (groupId, body) => getClient().then((c) => c.groups.update(groupId, body)),
|
|
26
|
+
remove: (groupId) => getClient().then((c) => c.groups.remove(groupId)),
|
|
27
|
+
reorder: (groupId, body) => getClient().then((c) => c.groups.reorder(groupId, body)),
|
|
28
|
+
share: (groupId) => getClient().then((c) => c.groups.share(groupId)),
|
|
29
|
+
unshare: (groupId) => getClient().then((c) => c.groups.unshare(groupId))
|
|
30
|
+
},
|
|
31
|
+
shared: {
|
|
32
|
+
getSharedList: (listId) => getClient().then((c) => c.shared.getSharedList(listId)),
|
|
33
|
+
getSharedGroup: (groupId) => getClient().then((c) => c.shared.getSharedGroup(groupId))
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async function defaultGetCustomerAccessToken(context) {
|
|
38
|
+
const anyCtx = context;
|
|
39
|
+
const customerAccount = anyCtx?.customerAccount;
|
|
40
|
+
const fn = customerAccount?.getAccessToken;
|
|
41
|
+
if (typeof fn !== "function") return void 0;
|
|
42
|
+
try {
|
|
43
|
+
const token = await fn.call(customerAccount);
|
|
44
|
+
return typeof token === "string" ? token : void 0;
|
|
45
|
+
} catch {
|
|
46
|
+
return void 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function createWishlistStackServerContext(options) {
|
|
50
|
+
return function attachToContext(context) {
|
|
51
|
+
if (!options.apiKey) {
|
|
52
|
+
throw new Error("merchant api key is required. Pass it to createWishlistStackServerContext({ apiKey })");
|
|
53
|
+
}
|
|
54
|
+
const getToken = async () => {
|
|
55
|
+
if (options.getCustomerAccessToken) {
|
|
56
|
+
const token = await options.getCustomerAccessToken(context);
|
|
57
|
+
return typeof token === "string" ? token : void 0;
|
|
58
|
+
}
|
|
59
|
+
return await defaultGetCustomerAccessToken(context);
|
|
60
|
+
};
|
|
61
|
+
let cachedClient;
|
|
62
|
+
let cachedToken;
|
|
63
|
+
const server = {
|
|
64
|
+
async getCustomerAccessToken() {
|
|
65
|
+
return await getToken();
|
|
66
|
+
},
|
|
67
|
+
async getClient() {
|
|
68
|
+
const token = await getToken();
|
|
69
|
+
if (cachedClient && cachedToken === token) return cachedClient;
|
|
70
|
+
cachedToken = token;
|
|
71
|
+
cachedClient = wishlistStackSdk.createWishlistStackClient({
|
|
72
|
+
apiKey: options.apiKey,
|
|
73
|
+
baseUrl: options.baseUrl,
|
|
74
|
+
customerAccessToken: token
|
|
75
|
+
});
|
|
76
|
+
return cachedClient;
|
|
77
|
+
},
|
|
78
|
+
async bootstrapClientConfig(opts) {
|
|
79
|
+
const expose = opts?.exposeCustomerAccessToken ?? false;
|
|
80
|
+
const token = expose ? await getToken() : void 0;
|
|
81
|
+
return {
|
|
82
|
+
apiKey: options.apiKey,
|
|
83
|
+
baseUrl: options.baseUrl,
|
|
84
|
+
customerAccessToken: token
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const wishlistStackClient = createLazyWishlistStackClient(server.getClient);
|
|
89
|
+
const anyCtx = context;
|
|
90
|
+
if (anyCtx && typeof anyCtx.set === "function") {
|
|
91
|
+
anyCtx.set("wishlistStack", server);
|
|
92
|
+
anyCtx.set("wishlistStackClient", wishlistStackClient);
|
|
93
|
+
} else if (anyCtx && typeof anyCtx === "object") {
|
|
94
|
+
anyCtx.wishlistStack = server;
|
|
95
|
+
anyCtx.wishlistStackClient = wishlistStackClient;
|
|
96
|
+
}
|
|
97
|
+
return { wishlistStack: server, wishlistStackClient };
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
exports.createWishlistStackServerContext = createWishlistStackServerContext;
|
|
102
|
+
//# sourceMappingURL=server.cjs.map
|
|
103
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts"],"names":["createWishlistStackClient"],"mappings":"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","file":"server.cjs","sourcesContent":["import { createWishlistStackClient, type WishlistStackClient } from \"@sdg.la/wishlist-stack-sdk\";\nimport type { WishlistStackHydrogenOptions, WishlistStackHydrogenServer } from \"./types\";\n\nfunction createLazyWishlistStackClient(getClient: () => Promise<WishlistStackClient>): WishlistStackClient {\n return {\n lists: {\n getAll: (query) => getClient().then((c) => c.lists.getAll(query)),\n getById: (listId) => getClient().then((c) => c.lists.getById(listId)),\n create: (body) => getClient().then((c) => c.lists.create(body)),\n update: (listId, body) => getClient().then((c) => c.lists.update(listId, body)),\n remove: (listId) => getClient().then((c) => c.lists.remove(listId)),\n addItems: (listId, body) => getClient().then((c) => c.lists.addItems(listId, body)),\n updateItem: (listId, itemId, body) => getClient().then((c) => c.lists.updateItem(listId, itemId, body)),\n removeItem: (listId, itemId) => getClient().then((c) => c.lists.removeItem(listId, itemId)),\n share: (listId) => getClient().then((c) => c.lists.share(listId)),\n unshare: (listId) => getClient().then((c) => c.lists.unshare(listId)),\n addItemsLegacy: (id, body) => getClient().then((c) => c.lists.addItemsLegacy(id, body)),\n },\n groups: {\n getAll: () => getClient().then((c) => c.groups.getAll()),\n getById: (groupId) => getClient().then((c) => c.groups.getById(groupId)),\n create: (body) => getClient().then((c) => c.groups.create(body)),\n update: (groupId, body) => getClient().then((c) => c.groups.update(groupId, body)),\n remove: (groupId) => getClient().then((c) => c.groups.remove(groupId)),\n reorder: (groupId, body) => getClient().then((c) => c.groups.reorder(groupId, body)),\n share: (groupId) => getClient().then((c) => c.groups.share(groupId)),\n unshare: (groupId) => getClient().then((c) => c.groups.unshare(groupId)),\n },\n shared: {\n getSharedList: (listId) => getClient().then((c) => c.shared.getSharedList(listId)),\n getSharedGroup: (groupId) => getClient().then((c) => c.shared.getSharedGroup(groupId)),\n },\n };\n}\n\nasync function defaultGetCustomerAccessToken(context: unknown): Promise<string | undefined> {\n const anyCtx = context as any;\n const customerAccount = anyCtx?.customerAccount;\n const fn = customerAccount?.getAccessToken;\n if (typeof fn !== \"function\") return undefined;\n try {\n const token = await fn.call(customerAccount);\n return typeof token === \"string\" ? token : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function createWishlistStackServerContext(options: WishlistStackHydrogenOptions) {\n return function attachToContext(context: unknown): { wishlistStack: WishlistStackHydrogenServer; wishlistStackClient: WishlistStackClient } {\n if (!options.apiKey) {\n throw new Error(\"merchant api key is required. Pass it to createWishlistStackServerContext({ apiKey })\");\n }\n\n const getToken = async () => {\n if (options.getCustomerAccessToken) {\n const token = await options.getCustomerAccessToken(context);\n return typeof token === \"string\" ? token : undefined;\n }\n return await defaultGetCustomerAccessToken(context);\n };\n\n let cachedClient: WishlistStackClient | undefined;\n let cachedToken: string | undefined;\n\n const server: WishlistStackHydrogenServer = {\n async getCustomerAccessToken() {\n return await getToken();\n },\n async getClient() {\n const token = await getToken();\n // Cache by token value so calls within a single request reuse the client.\n if (cachedClient && cachedToken === token) return cachedClient;\n cachedToken = token;\n cachedClient = createWishlistStackClient({\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n customerAccessToken: token,\n });\n return cachedClient;\n },\n async bootstrapClientConfig(opts) {\n const expose = opts?.exposeCustomerAccessToken ?? false;\n const token = expose ? await getToken() : undefined;\n return {\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n customerAccessToken: token,\n };\n },\n };\n\n const wishlistStackClient = createLazyWishlistStackClient(server.getClient);\n\n const anyCtx = context as any;\n if (anyCtx && typeof anyCtx.set === \"function\") {\n // Context map style (some React Router middleware implementations).\n anyCtx.set(\"wishlistStack\", server);\n anyCtx.set(\"wishlistStackClient\", wishlistStackClient);\n } else if (anyCtx && typeof anyCtx === \"object\") {\n // Plain object style (Hydrogen load context is an object).\n anyCtx.wishlistStack = server;\n anyCtx.wishlistStackClient = wishlistStackClient;\n }\n\n return { wishlistStack: server, wishlistStackClient };\n };\n}\n\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { WishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
2
|
+
import { a as WishlistStackHydrogenOptions, W as WishlistStackHydrogenServer } from './types-7NZ9ikCG.cjs';
|
|
3
|
+
|
|
4
|
+
declare function createWishlistStackServerContext(options: WishlistStackHydrogenOptions): (context: unknown) => {
|
|
5
|
+
wishlistStack: WishlistStackHydrogenServer;
|
|
6
|
+
wishlistStackClient: WishlistStackClient;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { createWishlistStackServerContext };
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { WishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
2
|
+
import { a as WishlistStackHydrogenOptions, W as WishlistStackHydrogenServer } from './types-7NZ9ikCG.js';
|
|
3
|
+
|
|
4
|
+
declare function createWishlistStackServerContext(options: WishlistStackHydrogenOptions): (context: unknown) => {
|
|
5
|
+
wishlistStack: WishlistStackHydrogenServer;
|
|
6
|
+
wishlistStackClient: WishlistStackClient;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { createWishlistStackServerContext };
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createWishlistStackClient } from '@sdg.la/wishlist-stack-sdk';
|
|
2
|
+
|
|
3
|
+
// src/server.ts
|
|
4
|
+
function createLazyWishlistStackClient(getClient) {
|
|
5
|
+
return {
|
|
6
|
+
lists: {
|
|
7
|
+
getAll: (query) => getClient().then((c) => c.lists.getAll(query)),
|
|
8
|
+
getById: (listId) => getClient().then((c) => c.lists.getById(listId)),
|
|
9
|
+
create: (body) => getClient().then((c) => c.lists.create(body)),
|
|
10
|
+
update: (listId, body) => getClient().then((c) => c.lists.update(listId, body)),
|
|
11
|
+
remove: (listId) => getClient().then((c) => c.lists.remove(listId)),
|
|
12
|
+
addItems: (listId, body) => getClient().then((c) => c.lists.addItems(listId, body)),
|
|
13
|
+
updateItem: (listId, itemId, body) => getClient().then((c) => c.lists.updateItem(listId, itemId, body)),
|
|
14
|
+
removeItem: (listId, itemId) => getClient().then((c) => c.lists.removeItem(listId, itemId)),
|
|
15
|
+
share: (listId) => getClient().then((c) => c.lists.share(listId)),
|
|
16
|
+
unshare: (listId) => getClient().then((c) => c.lists.unshare(listId)),
|
|
17
|
+
addItemsLegacy: (id, body) => getClient().then((c) => c.lists.addItemsLegacy(id, body))
|
|
18
|
+
},
|
|
19
|
+
groups: {
|
|
20
|
+
getAll: () => getClient().then((c) => c.groups.getAll()),
|
|
21
|
+
getById: (groupId) => getClient().then((c) => c.groups.getById(groupId)),
|
|
22
|
+
create: (body) => getClient().then((c) => c.groups.create(body)),
|
|
23
|
+
update: (groupId, body) => getClient().then((c) => c.groups.update(groupId, body)),
|
|
24
|
+
remove: (groupId) => getClient().then((c) => c.groups.remove(groupId)),
|
|
25
|
+
reorder: (groupId, body) => getClient().then((c) => c.groups.reorder(groupId, body)),
|
|
26
|
+
share: (groupId) => getClient().then((c) => c.groups.share(groupId)),
|
|
27
|
+
unshare: (groupId) => getClient().then((c) => c.groups.unshare(groupId))
|
|
28
|
+
},
|
|
29
|
+
shared: {
|
|
30
|
+
getSharedList: (listId) => getClient().then((c) => c.shared.getSharedList(listId)),
|
|
31
|
+
getSharedGroup: (groupId) => getClient().then((c) => c.shared.getSharedGroup(groupId))
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function defaultGetCustomerAccessToken(context) {
|
|
36
|
+
const anyCtx = context;
|
|
37
|
+
const customerAccount = anyCtx?.customerAccount;
|
|
38
|
+
const fn = customerAccount?.getAccessToken;
|
|
39
|
+
if (typeof fn !== "function") return void 0;
|
|
40
|
+
try {
|
|
41
|
+
const token = await fn.call(customerAccount);
|
|
42
|
+
return typeof token === "string" ? token : void 0;
|
|
43
|
+
} catch {
|
|
44
|
+
return void 0;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function createWishlistStackServerContext(options) {
|
|
48
|
+
return function attachToContext(context) {
|
|
49
|
+
if (!options.apiKey) {
|
|
50
|
+
throw new Error("merchant api key is required. Pass it to createWishlistStackServerContext({ apiKey })");
|
|
51
|
+
}
|
|
52
|
+
const getToken = async () => {
|
|
53
|
+
if (options.getCustomerAccessToken) {
|
|
54
|
+
const token = await options.getCustomerAccessToken(context);
|
|
55
|
+
return typeof token === "string" ? token : void 0;
|
|
56
|
+
}
|
|
57
|
+
return await defaultGetCustomerAccessToken(context);
|
|
58
|
+
};
|
|
59
|
+
let cachedClient;
|
|
60
|
+
let cachedToken;
|
|
61
|
+
const server = {
|
|
62
|
+
async getCustomerAccessToken() {
|
|
63
|
+
return await getToken();
|
|
64
|
+
},
|
|
65
|
+
async getClient() {
|
|
66
|
+
const token = await getToken();
|
|
67
|
+
if (cachedClient && cachedToken === token) return cachedClient;
|
|
68
|
+
cachedToken = token;
|
|
69
|
+
cachedClient = createWishlistStackClient({
|
|
70
|
+
apiKey: options.apiKey,
|
|
71
|
+
baseUrl: options.baseUrl,
|
|
72
|
+
customerAccessToken: token
|
|
73
|
+
});
|
|
74
|
+
return cachedClient;
|
|
75
|
+
},
|
|
76
|
+
async bootstrapClientConfig(opts) {
|
|
77
|
+
const expose = opts?.exposeCustomerAccessToken ?? false;
|
|
78
|
+
const token = expose ? await getToken() : void 0;
|
|
79
|
+
return {
|
|
80
|
+
apiKey: options.apiKey,
|
|
81
|
+
baseUrl: options.baseUrl,
|
|
82
|
+
customerAccessToken: token
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const wishlistStackClient = createLazyWishlistStackClient(server.getClient);
|
|
87
|
+
const anyCtx = context;
|
|
88
|
+
if (anyCtx && typeof anyCtx.set === "function") {
|
|
89
|
+
anyCtx.set("wishlistStack", server);
|
|
90
|
+
anyCtx.set("wishlistStackClient", wishlistStackClient);
|
|
91
|
+
} else if (anyCtx && typeof anyCtx === "object") {
|
|
92
|
+
anyCtx.wishlistStack = server;
|
|
93
|
+
anyCtx.wishlistStackClient = wishlistStackClient;
|
|
94
|
+
}
|
|
95
|
+
return { wishlistStack: server, wishlistStackClient };
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { createWishlistStackServerContext };
|
|
100
|
+
//# sourceMappingURL=server.js.map
|
|
101
|
+
//# sourceMappingURL=server.js.map
|