@priceos/react 1.0.1 → 1.0.2

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/dist/index.cjs CHANGED
@@ -64,30 +64,32 @@ var logMessage = (currentLevel, level, message, details) => {
64
64
  }
65
65
  logger(LOG_PREFIX, message, details);
66
66
  };
67
- var requestCustomer = async (fetchFn, url, logLevel, bearerToken) => {
67
+ var requestCustomer = async (fetchFn, url, logLevel, errorOnNotFound, bearerToken) => {
68
68
  logMessage(logLevel, "debug", "Requesting customer", { url, hasBearerToken: Boolean(bearerToken) });
69
69
  const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : void 0;
70
70
  const response = await fetchFn(url, headers ? { headers } : void 0);
71
71
  logMessage(logLevel, "info", "Customer request completed", { url, status: response.status });
72
72
  const text = await response.text();
73
73
  let data = null;
74
+ let parseFailed = false;
74
75
  if (text) {
75
76
  try {
76
77
  data = JSON.parse(text);
77
78
  } catch {
79
+ parseFailed = true;
78
80
  logMessage(logLevel, "warn", "Customer response is not JSON", {
79
81
  url,
80
82
  status: response.status,
81
83
  bodyPreview: text.slice(0, 300)
82
84
  });
83
- if (!response.ok) {
84
- throw new Error(text || response.statusText || "Request failed");
85
- }
86
- throw new Error("Invalid JSON response");
87
85
  }
88
86
  }
89
87
  if (!response.ok) {
90
- const message = data && typeof data === "object" && "error" in data ? String(data.error) : text || response.statusText;
88
+ if (response.status === 404 && !errorOnNotFound) {
89
+ logMessage(logLevel, "info", "Customer not found", { url, status: response.status });
90
+ return null;
91
+ }
92
+ const message = !parseFailed && data && typeof data === "object" && "error" in data ? String(data.error) : text || response.statusText;
91
93
  logMessage(logLevel, "error", "Customer request failed", {
92
94
  url,
93
95
  status: response.status,
@@ -95,6 +97,9 @@ var requestCustomer = async (fetchFn, url, logLevel, bearerToken) => {
95
97
  });
96
98
  throw new Error(message || "Request failed");
97
99
  }
100
+ if (parseFailed) {
101
+ throw new Error("Invalid JSON response");
102
+ }
98
103
  logMessage(logLevel, "debug", "Customer request succeeded", { url, hasCustomer: Boolean(data) });
99
104
  return data;
100
105
  };
@@ -106,7 +111,7 @@ function PriceOSProvider({ children, getBearerToken, backendUrl, logLevel }) {
106
111
  );
107
112
  }
108
113
  function useCustomer(options = {}) {
109
- const { swr } = options;
114
+ const { errorOnNotFound = false, swr } = options;
110
115
  const { getBearerToken, backendUrl, logLevel = DEFAULT_LOG_LEVEL } = (0, import_react.useContext)(PriceOSContext);
111
116
  const fetcher = async (url) => {
112
117
  let bearerToken;
@@ -123,7 +128,7 @@ function useCustomer(options = {}) {
123
128
  url,
124
129
  hasBearerToken: Boolean(bearerToken)
125
130
  });
126
- return requestCustomer(fetch, url, logLevel, bearerToken);
131
+ return requestCustomer(fetch, url, logLevel, errorOnNotFound, bearerToken);
127
132
  };
128
133
  const { data, error, isLoading, mutate } = (0, import_swr.default)(
129
134
  buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createContext, createElement, useContext, type ReactNode } from \"react\";\nimport useSWR, { type SWRConfiguration } from \"swr\";\nimport type { GetCustomerResponse } from \"priceos\";\n\nexport type PriceOSLogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport type UseCustomerOptions = {\n swr?: SWRConfiguration<GetCustomerResponse | null, Error>;\n};\n\nexport type PriceOSProviderProps = {\n children: ReactNode;\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nexport type UseCustomerResult = {\n customer: GetCustomerResponse | null;\n error: Error | null;\n loading: boolean;\n refetch: () => Promise<void>;\n};\n\nconst DEFAULT_BACKEND_URL = \"/api/priceos\";\nconst DEFAULT_LOG_LEVEL: PriceOSLogLevel = \"error\";\nconst LOG_LEVEL_RANK: Record<Exclude<PriceOSLogLevel, \"none\">, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n};\nconst LOG_PREFIX = \"[priceos/react]\";\n\ntype PriceOSContextValue = {\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nconst PriceOSContext = createContext<PriceOSContextValue>({});\n\nconst normalizeBaseUrl = (baseUrl: string) => baseUrl.replace(/\\/$/, \"\");\n\nconst buildUrl = (backendUrl: string) => {\n const normalizedBase = normalizeBaseUrl(backendUrl);\n return `${normalizedBase}/v1/customer`;\n};\n\nconst shouldLog = (currentLevel: PriceOSLogLevel, targetLevel: Exclude<PriceOSLogLevel, \"none\">) => {\n if (currentLevel === \"none\") return false;\n return LOG_LEVEL_RANK[targetLevel] <= LOG_LEVEL_RANK[currentLevel];\n};\n\nconst logMessage = (\n currentLevel: PriceOSLogLevel,\n level: Exclude<PriceOSLogLevel, \"none\">,\n message: string,\n details?: unknown\n) => {\n if (!shouldLog(currentLevel, level)) return;\n const logger =\n level === \"error\" ? console.error : level === \"warn\" ? console.warn : console.info;\n if (details === undefined) {\n logger(LOG_PREFIX, message);\n return;\n }\n logger(LOG_PREFIX, message, details);\n};\n\nconst requestCustomer = async (\n fetchFn: typeof fetch,\n url: string,\n logLevel: PriceOSLogLevel,\n bearerToken?: string | null\n): Promise<GetCustomerResponse | null> => {\n logMessage(logLevel, \"debug\", \"Requesting customer\", { url, hasBearerToken: Boolean(bearerToken) });\n const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : undefined;\n const response = await fetchFn(url, headers ? { headers } : undefined);\n logMessage(logLevel, \"info\", \"Customer request completed\", { url, status: response.status });\n const text = await response.text();\n let data: unknown = null;\n if (text) {\n try {\n data = JSON.parse(text) as unknown;\n } catch {\n logMessage(logLevel, \"warn\", \"Customer response is not JSON\", {\n url,\n status: response.status,\n bodyPreview: text.slice(0, 300),\n });\n if (!response.ok) {\n throw new Error(text || response.statusText || \"Request failed\");\n }\n throw new Error(\"Invalid JSON response\");\n }\n }\n if (!response.ok) {\n const message =\n data && typeof data === \"object\" && \"error\" in data\n ? String((data as { error?: unknown }).error)\n : text || response.statusText;\n logMessage(logLevel, \"error\", \"Customer request failed\", {\n url,\n status: response.status,\n message,\n });\n throw new Error(message || \"Request failed\");\n }\n logMessage(logLevel, \"debug\", \"Customer request succeeded\", { url, hasCustomer: Boolean(data) });\n return data as GetCustomerResponse | null;\n};\n\nexport function PriceOSProvider({ children, getBearerToken, backendUrl, logLevel }: PriceOSProviderProps) {\n return createElement(\n PriceOSContext.Provider,\n { value: { getBearerToken, backendUrl, logLevel } },\n children\n );\n}\n\nexport function useCustomer(options: UseCustomerOptions = {}): UseCustomerResult {\n const { swr } = options;\n const { getBearerToken, backendUrl, logLevel = DEFAULT_LOG_LEVEL } = useContext(PriceOSContext);\n const fetcher = async (url: string) => {\n let bearerToken: string | null | undefined;\n try {\n bearerToken = getBearerToken ? await getBearerToken() : undefined;\n } catch (error) {\n logMessage(logLevel, \"error\", \"Failed to resolve bearer token\", {\n url,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n logMessage(logLevel, \"debug\", \"Resolved bearer token\", {\n url,\n hasBearerToken: Boolean(bearerToken),\n });\n return requestCustomer(fetch, url, logLevel, bearerToken);\n };\n const { data, error, isLoading, mutate } = useSWR(\n buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),\n fetcher,\n swr\n );\n\n return {\n customer: data ?? null,\n error,\n loading: isLoading,\n refetch: async () => {\n await mutate();\n },\n };\n}\n"],"mappings":"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","names":["error","useSWR"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createContext, createElement, useContext, type ReactNode } from \"react\";\nimport useSWR, { type SWRConfiguration } from \"swr\";\nimport type { GetCustomerResponse } from \"priceos\";\n\nexport type PriceOSLogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport type UseCustomerOptions = {\n errorOnNotFound?: boolean;\n swr?: SWRConfiguration<GetCustomerResponse | null, Error>;\n};\n\nexport type PriceOSProviderProps = {\n children: ReactNode;\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nexport type UseCustomerResult = {\n customer: GetCustomerResponse | null;\n error: Error | null;\n loading: boolean;\n refetch: () => Promise<void>;\n};\n\nconst DEFAULT_BACKEND_URL = \"/api/priceos\";\nconst DEFAULT_LOG_LEVEL: PriceOSLogLevel = \"error\";\nconst LOG_LEVEL_RANK: Record<Exclude<PriceOSLogLevel, \"none\">, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n};\nconst LOG_PREFIX = \"[priceos/react]\";\n\ntype PriceOSContextValue = {\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nconst PriceOSContext = createContext<PriceOSContextValue>({});\n\nconst normalizeBaseUrl = (baseUrl: string) => baseUrl.replace(/\\/$/, \"\");\n\nconst buildUrl = (backendUrl: string) => {\n const normalizedBase = normalizeBaseUrl(backendUrl);\n return `${normalizedBase}/v1/customer`;\n};\n\nconst shouldLog = (currentLevel: PriceOSLogLevel, targetLevel: Exclude<PriceOSLogLevel, \"none\">) => {\n if (currentLevel === \"none\") return false;\n return LOG_LEVEL_RANK[targetLevel] <= LOG_LEVEL_RANK[currentLevel];\n};\n\nconst logMessage = (\n currentLevel: PriceOSLogLevel,\n level: Exclude<PriceOSLogLevel, \"none\">,\n message: string,\n details?: unknown\n) => {\n if (!shouldLog(currentLevel, level)) return;\n const logger =\n level === \"error\" ? console.error : level === \"warn\" ? console.warn : console.info;\n if (details === undefined) {\n logger(LOG_PREFIX, message);\n return;\n }\n logger(LOG_PREFIX, message, details);\n};\n\nconst requestCustomer = async (\n fetchFn: typeof fetch,\n url: string,\n logLevel: PriceOSLogLevel,\n errorOnNotFound: boolean,\n bearerToken?: string | null\n): Promise<GetCustomerResponse | null> => {\n logMessage(logLevel, \"debug\", \"Requesting customer\", { url, hasBearerToken: Boolean(bearerToken) });\n const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : undefined;\n const response = await fetchFn(url, headers ? { headers } : undefined);\n logMessage(logLevel, \"info\", \"Customer request completed\", { url, status: response.status });\n const text = await response.text();\n let data: unknown = null;\n let parseFailed = false;\n if (text) {\n try {\n data = JSON.parse(text) as unknown;\n } catch {\n parseFailed = true;\n logMessage(logLevel, \"warn\", \"Customer response is not JSON\", {\n url,\n status: response.status,\n bodyPreview: text.slice(0, 300),\n });\n }\n }\n if (!response.ok) {\n if (response.status === 404 && !errorOnNotFound) {\n logMessage(logLevel, \"info\", \"Customer not found\", { url, status: response.status });\n return null;\n }\n const message =\n !parseFailed && data && typeof data === \"object\" && \"error\" in data\n ? String((data as { error?: unknown }).error)\n : text || response.statusText;\n logMessage(logLevel, \"error\", \"Customer request failed\", {\n url,\n status: response.status,\n message,\n });\n throw new Error(message || \"Request failed\");\n }\n if (parseFailed) {\n throw new Error(\"Invalid JSON response\");\n }\n logMessage(logLevel, \"debug\", \"Customer request succeeded\", { url, hasCustomer: Boolean(data) });\n return data as GetCustomerResponse | null;\n};\n\nexport function PriceOSProvider({ children, getBearerToken, backendUrl, logLevel }: PriceOSProviderProps) {\n return createElement(\n PriceOSContext.Provider,\n { value: { getBearerToken, backendUrl, logLevel } },\n children\n );\n}\n\nexport function useCustomer(options: UseCustomerOptions = {}): UseCustomerResult {\n const { errorOnNotFound = false, swr } = options;\n const { getBearerToken, backendUrl, logLevel = DEFAULT_LOG_LEVEL } = useContext(PriceOSContext);\n const fetcher = async (url: string) => {\n let bearerToken: string | null | undefined;\n try {\n bearerToken = getBearerToken ? await getBearerToken() : undefined;\n } catch (error) {\n logMessage(logLevel, \"error\", \"Failed to resolve bearer token\", {\n url,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n logMessage(logLevel, \"debug\", \"Resolved bearer token\", {\n url,\n hasBearerToken: Boolean(bearerToken),\n });\n return requestCustomer(fetch, url, logLevel, errorOnNotFound, bearerToken);\n };\n const { data, error, isLoading, mutate } = useSWR(\n buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),\n fetcher,\n swr\n );\n\n return {\n customer: data ?? null,\n error,\n loading: isLoading,\n refetch: async () => {\n await mutate();\n },\n };\n}\n"],"mappings":"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","names":["error","useSWR"]}
package/dist/index.d.cts CHANGED
@@ -5,6 +5,7 @@ import { GetCustomerResponse } from 'priceos';
5
5
 
6
6
  type PriceOSLogLevel = "none" | "error" | "warn" | "info" | "debug";
7
7
  type UseCustomerOptions = {
8
+ errorOnNotFound?: boolean;
8
9
  swr?: SWRConfiguration<GetCustomerResponse | null, Error>;
9
10
  };
10
11
  type PriceOSProviderProps = {
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ import { GetCustomerResponse } from 'priceos';
5
5
 
6
6
  type PriceOSLogLevel = "none" | "error" | "warn" | "info" | "debug";
7
7
  type UseCustomerOptions = {
8
+ errorOnNotFound?: boolean;
8
9
  swr?: SWRConfiguration<GetCustomerResponse | null, Error>;
9
10
  };
10
11
  type PriceOSProviderProps = {
package/dist/index.js CHANGED
@@ -29,30 +29,32 @@ var logMessage = (currentLevel, level, message, details) => {
29
29
  }
30
30
  logger(LOG_PREFIX, message, details);
31
31
  };
32
- var requestCustomer = async (fetchFn, url, logLevel, bearerToken) => {
32
+ var requestCustomer = async (fetchFn, url, logLevel, errorOnNotFound, bearerToken) => {
33
33
  logMessage(logLevel, "debug", "Requesting customer", { url, hasBearerToken: Boolean(bearerToken) });
34
34
  const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : void 0;
35
35
  const response = await fetchFn(url, headers ? { headers } : void 0);
36
36
  logMessage(logLevel, "info", "Customer request completed", { url, status: response.status });
37
37
  const text = await response.text();
38
38
  let data = null;
39
+ let parseFailed = false;
39
40
  if (text) {
40
41
  try {
41
42
  data = JSON.parse(text);
42
43
  } catch {
44
+ parseFailed = true;
43
45
  logMessage(logLevel, "warn", "Customer response is not JSON", {
44
46
  url,
45
47
  status: response.status,
46
48
  bodyPreview: text.slice(0, 300)
47
49
  });
48
- if (!response.ok) {
49
- throw new Error(text || response.statusText || "Request failed");
50
- }
51
- throw new Error("Invalid JSON response");
52
50
  }
53
51
  }
54
52
  if (!response.ok) {
55
- const message = data && typeof data === "object" && "error" in data ? String(data.error) : text || response.statusText;
53
+ if (response.status === 404 && !errorOnNotFound) {
54
+ logMessage(logLevel, "info", "Customer not found", { url, status: response.status });
55
+ return null;
56
+ }
57
+ const message = !parseFailed && data && typeof data === "object" && "error" in data ? String(data.error) : text || response.statusText;
56
58
  logMessage(logLevel, "error", "Customer request failed", {
57
59
  url,
58
60
  status: response.status,
@@ -60,6 +62,9 @@ var requestCustomer = async (fetchFn, url, logLevel, bearerToken) => {
60
62
  });
61
63
  throw new Error(message || "Request failed");
62
64
  }
65
+ if (parseFailed) {
66
+ throw new Error("Invalid JSON response");
67
+ }
63
68
  logMessage(logLevel, "debug", "Customer request succeeded", { url, hasCustomer: Boolean(data) });
64
69
  return data;
65
70
  };
@@ -71,7 +76,7 @@ function PriceOSProvider({ children, getBearerToken, backendUrl, logLevel }) {
71
76
  );
72
77
  }
73
78
  function useCustomer(options = {}) {
74
- const { swr } = options;
79
+ const { errorOnNotFound = false, swr } = options;
75
80
  const { getBearerToken, backendUrl, logLevel = DEFAULT_LOG_LEVEL } = useContext(PriceOSContext);
76
81
  const fetcher = async (url) => {
77
82
  let bearerToken;
@@ -88,7 +93,7 @@ function useCustomer(options = {}) {
88
93
  url,
89
94
  hasBearerToken: Boolean(bearerToken)
90
95
  });
91
- return requestCustomer(fetch, url, logLevel, bearerToken);
96
+ return requestCustomer(fetch, url, logLevel, errorOnNotFound, bearerToken);
92
97
  };
93
98
  const { data, error, isLoading, mutate } = useSWR(
94
99
  buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createContext, createElement, useContext, type ReactNode } from \"react\";\nimport useSWR, { type SWRConfiguration } from \"swr\";\nimport type { GetCustomerResponse } from \"priceos\";\n\nexport type PriceOSLogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport type UseCustomerOptions = {\n swr?: SWRConfiguration<GetCustomerResponse | null, Error>;\n};\n\nexport type PriceOSProviderProps = {\n children: ReactNode;\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nexport type UseCustomerResult = {\n customer: GetCustomerResponse | null;\n error: Error | null;\n loading: boolean;\n refetch: () => Promise<void>;\n};\n\nconst DEFAULT_BACKEND_URL = \"/api/priceos\";\nconst DEFAULT_LOG_LEVEL: PriceOSLogLevel = \"error\";\nconst LOG_LEVEL_RANK: Record<Exclude<PriceOSLogLevel, \"none\">, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n};\nconst LOG_PREFIX = \"[priceos/react]\";\n\ntype PriceOSContextValue = {\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nconst PriceOSContext = createContext<PriceOSContextValue>({});\n\nconst normalizeBaseUrl = (baseUrl: string) => baseUrl.replace(/\\/$/, \"\");\n\nconst buildUrl = (backendUrl: string) => {\n const normalizedBase = normalizeBaseUrl(backendUrl);\n return `${normalizedBase}/v1/customer`;\n};\n\nconst shouldLog = (currentLevel: PriceOSLogLevel, targetLevel: Exclude<PriceOSLogLevel, \"none\">) => {\n if (currentLevel === \"none\") return false;\n return LOG_LEVEL_RANK[targetLevel] <= LOG_LEVEL_RANK[currentLevel];\n};\n\nconst logMessage = (\n currentLevel: PriceOSLogLevel,\n level: Exclude<PriceOSLogLevel, \"none\">,\n message: string,\n details?: unknown\n) => {\n if (!shouldLog(currentLevel, level)) return;\n const logger =\n level === \"error\" ? console.error : level === \"warn\" ? console.warn : console.info;\n if (details === undefined) {\n logger(LOG_PREFIX, message);\n return;\n }\n logger(LOG_PREFIX, message, details);\n};\n\nconst requestCustomer = async (\n fetchFn: typeof fetch,\n url: string,\n logLevel: PriceOSLogLevel,\n bearerToken?: string | null\n): Promise<GetCustomerResponse | null> => {\n logMessage(logLevel, \"debug\", \"Requesting customer\", { url, hasBearerToken: Boolean(bearerToken) });\n const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : undefined;\n const response = await fetchFn(url, headers ? { headers } : undefined);\n logMessage(logLevel, \"info\", \"Customer request completed\", { url, status: response.status });\n const text = await response.text();\n let data: unknown = null;\n if (text) {\n try {\n data = JSON.parse(text) as unknown;\n } catch {\n logMessage(logLevel, \"warn\", \"Customer response is not JSON\", {\n url,\n status: response.status,\n bodyPreview: text.slice(0, 300),\n });\n if (!response.ok) {\n throw new Error(text || response.statusText || \"Request failed\");\n }\n throw new Error(\"Invalid JSON response\");\n }\n }\n if (!response.ok) {\n const message =\n data && typeof data === \"object\" && \"error\" in data\n ? String((data as { error?: unknown }).error)\n : text || response.statusText;\n logMessage(logLevel, \"error\", \"Customer request failed\", {\n url,\n status: response.status,\n message,\n });\n throw new Error(message || \"Request failed\");\n }\n logMessage(logLevel, \"debug\", \"Customer request succeeded\", { url, hasCustomer: Boolean(data) });\n return data as GetCustomerResponse | null;\n};\n\nexport function PriceOSProvider({ children, getBearerToken, backendUrl, logLevel }: PriceOSProviderProps) {\n return createElement(\n PriceOSContext.Provider,\n { value: { getBearerToken, backendUrl, logLevel } },\n children\n );\n}\n\nexport function useCustomer(options: UseCustomerOptions = {}): UseCustomerResult {\n const { swr } = options;\n const { getBearerToken, backendUrl, logLevel = DEFAULT_LOG_LEVEL } = useContext(PriceOSContext);\n const fetcher = async (url: string) => {\n let bearerToken: string | null | undefined;\n try {\n bearerToken = getBearerToken ? await getBearerToken() : undefined;\n } catch (error) {\n logMessage(logLevel, \"error\", \"Failed to resolve bearer token\", {\n url,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n logMessage(logLevel, \"debug\", \"Resolved bearer token\", {\n url,\n hasBearerToken: Boolean(bearerToken),\n });\n return requestCustomer(fetch, url, logLevel, bearerToken);\n };\n const { data, error, isLoading, mutate } = useSWR(\n buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),\n fetcher,\n swr\n );\n\n return {\n customer: data ?? null,\n error,\n loading: isLoading,\n refetch: async () => {\n await mutate();\n },\n };\n}\n"],"mappings":";AAAA,SAAS,eAAe,eAAe,kBAAkC;AACzE,OAAO,YAAuC;AAuB9C,IAAM,sBAAsB;AAC5B,IAAM,oBAAqC;AAC3C,IAAM,iBAAmE;AAAA,EACvE,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACT;AACA,IAAM,aAAa;AAQnB,IAAM,iBAAiB,cAAmC,CAAC,CAAC;AAE5D,IAAM,mBAAmB,CAAC,YAAoB,QAAQ,QAAQ,OAAO,EAAE;AAEvE,IAAM,WAAW,CAAC,eAAuB;AACvC,QAAM,iBAAiB,iBAAiB,UAAU;AAClD,SAAO,GAAG,cAAc;AAC1B;AAEA,IAAM,YAAY,CAAC,cAA+B,gBAAkD;AAClG,MAAI,iBAAiB,OAAQ,QAAO;AACpC,SAAO,eAAe,WAAW,KAAK,eAAe,YAAY;AACnE;AAEA,IAAM,aAAa,CACjB,cACA,OACA,SACA,YACG;AACH,MAAI,CAAC,UAAU,cAAc,KAAK,EAAG;AACrC,QAAM,SACJ,UAAU,UAAU,QAAQ,QAAQ,UAAU,SAAS,QAAQ,OAAO,QAAQ;AAChF,MAAI,YAAY,QAAW;AACzB,WAAO,YAAY,OAAO;AAC1B;AAAA,EACF;AACA,SAAO,YAAY,SAAS,OAAO;AACrC;AAEA,IAAM,kBAAkB,OACtB,SACA,KACA,UACA,gBACwC;AACxC,aAAW,UAAU,SAAS,uBAAuB,EAAE,KAAK,gBAAgB,QAAQ,WAAW,EAAE,CAAC;AAClG,QAAM,UAAU,cAAc,EAAE,eAAe,UAAU,WAAW,GAAG,IAAI;AAC3E,QAAM,WAAW,MAAM,QAAQ,KAAK,UAAU,EAAE,QAAQ,IAAI,MAAS;AACrE,aAAW,UAAU,QAAQ,8BAA8B,EAAE,KAAK,QAAQ,SAAS,OAAO,CAAC;AAC3F,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,OAAgB;AACpB,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,QAAQ;AACN,iBAAW,UAAU,QAAQ,iCAAiC;AAAA,QAC5D;AAAA,QACA,QAAQ,SAAS;AAAA,QACjB,aAAa,KAAK,MAAM,GAAG,GAAG;AAAA,MAChC,CAAC;AACD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,MAAM,QAAQ,SAAS,cAAc,gBAAgB;AAAA,MACjE;AACA,YAAM,IAAI,MAAM,uBAAuB;AAAA,IACzC;AAAA,EACF;AACA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,UACJ,QAAQ,OAAO,SAAS,YAAY,WAAW,OAC3C,OAAQ,KAA6B,KAAK,IAC1C,QAAQ,SAAS;AACvB,eAAW,UAAU,SAAS,2BAA2B;AAAA,MACvD;AAAA,MACA,QAAQ,SAAS;AAAA,MACjB;AAAA,IACF,CAAC;AACD,UAAM,IAAI,MAAM,WAAW,gBAAgB;AAAA,EAC7C;AACA,aAAW,UAAU,SAAS,8BAA8B,EAAE,KAAK,aAAa,QAAQ,IAAI,EAAE,CAAC;AAC/F,SAAO;AACT;AAEO,SAAS,gBAAgB,EAAE,UAAU,gBAAgB,YAAY,SAAS,GAAyB;AACxG,SAAO;AAAA,IACL,eAAe;AAAA,IACf,EAAE,OAAO,EAAE,gBAAgB,YAAY,SAAS,EAAE;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,YAAY,UAA8B,CAAC,GAAsB;AAC/E,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,EAAE,gBAAgB,YAAY,WAAW,kBAAkB,IAAI,WAAW,cAAc;AAC9F,QAAM,UAAU,OAAO,QAAgB;AACrC,QAAI;AACJ,QAAI;AACF,oBAAc,iBAAiB,MAAM,eAAe,IAAI;AAAA,IAC1D,SAASA,QAAO;AACd,iBAAW,UAAU,SAAS,kCAAkC;AAAA,QAC9D;AAAA,QACA,OAAOA,kBAAiB,QAAQA,OAAM,UAAU,OAAOA,MAAK;AAAA,MAC9D,CAAC;AACD,YAAMA;AAAA,IACR;AACA,eAAW,UAAU,SAAS,yBAAyB;AAAA,MACrD;AAAA,MACA,gBAAgB,QAAQ,WAAW;AAAA,IACrC,CAAC;AACD,WAAO,gBAAgB,OAAO,KAAK,UAAU,WAAW;AAAA,EAC1D;AACA,QAAM,EAAE,MAAM,OAAO,WAAW,OAAO,IAAI;AAAA,IACzC,SAAS,cAAc,mBAAmB;AAAA,IAC1C;AAAA,IACA;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,IACT,SAAS,YAAY;AACnB,YAAM,OAAO;AAAA,IACf;AAAA,EACF;AACF;","names":["error"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createContext, createElement, useContext, type ReactNode } from \"react\";\nimport useSWR, { type SWRConfiguration } from \"swr\";\nimport type { GetCustomerResponse } from \"priceos\";\n\nexport type PriceOSLogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport type UseCustomerOptions = {\n errorOnNotFound?: boolean;\n swr?: SWRConfiguration<GetCustomerResponse | null, Error>;\n};\n\nexport type PriceOSProviderProps = {\n children: ReactNode;\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nexport type UseCustomerResult = {\n customer: GetCustomerResponse | null;\n error: Error | null;\n loading: boolean;\n refetch: () => Promise<void>;\n};\n\nconst DEFAULT_BACKEND_URL = \"/api/priceos\";\nconst DEFAULT_LOG_LEVEL: PriceOSLogLevel = \"error\";\nconst LOG_LEVEL_RANK: Record<Exclude<PriceOSLogLevel, \"none\">, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n};\nconst LOG_PREFIX = \"[priceos/react]\";\n\ntype PriceOSContextValue = {\n getBearerToken?: () => Promise<string | null | undefined>;\n backendUrl?: string;\n logLevel?: PriceOSLogLevel;\n};\n\nconst PriceOSContext = createContext<PriceOSContextValue>({});\n\nconst normalizeBaseUrl = (baseUrl: string) => baseUrl.replace(/\\/$/, \"\");\n\nconst buildUrl = (backendUrl: string) => {\n const normalizedBase = normalizeBaseUrl(backendUrl);\n return `${normalizedBase}/v1/customer`;\n};\n\nconst shouldLog = (currentLevel: PriceOSLogLevel, targetLevel: Exclude<PriceOSLogLevel, \"none\">) => {\n if (currentLevel === \"none\") return false;\n return LOG_LEVEL_RANK[targetLevel] <= LOG_LEVEL_RANK[currentLevel];\n};\n\nconst logMessage = (\n currentLevel: PriceOSLogLevel,\n level: Exclude<PriceOSLogLevel, \"none\">,\n message: string,\n details?: unknown\n) => {\n if (!shouldLog(currentLevel, level)) return;\n const logger =\n level === \"error\" ? console.error : level === \"warn\" ? console.warn : console.info;\n if (details === undefined) {\n logger(LOG_PREFIX, message);\n return;\n }\n logger(LOG_PREFIX, message, details);\n};\n\nconst requestCustomer = async (\n fetchFn: typeof fetch,\n url: string,\n logLevel: PriceOSLogLevel,\n errorOnNotFound: boolean,\n bearerToken?: string | null\n): Promise<GetCustomerResponse | null> => {\n logMessage(logLevel, \"debug\", \"Requesting customer\", { url, hasBearerToken: Boolean(bearerToken) });\n const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : undefined;\n const response = await fetchFn(url, headers ? { headers } : undefined);\n logMessage(logLevel, \"info\", \"Customer request completed\", { url, status: response.status });\n const text = await response.text();\n let data: unknown = null;\n let parseFailed = false;\n if (text) {\n try {\n data = JSON.parse(text) as unknown;\n } catch {\n parseFailed = true;\n logMessage(logLevel, \"warn\", \"Customer response is not JSON\", {\n url,\n status: response.status,\n bodyPreview: text.slice(0, 300),\n });\n }\n }\n if (!response.ok) {\n if (response.status === 404 && !errorOnNotFound) {\n logMessage(logLevel, \"info\", \"Customer not found\", { url, status: response.status });\n return null;\n }\n const message =\n !parseFailed && data && typeof data === \"object\" && \"error\" in data\n ? String((data as { error?: unknown }).error)\n : text || response.statusText;\n logMessage(logLevel, \"error\", \"Customer request failed\", {\n url,\n status: response.status,\n message,\n });\n throw new Error(message || \"Request failed\");\n }\n if (parseFailed) {\n throw new Error(\"Invalid JSON response\");\n }\n logMessage(logLevel, \"debug\", \"Customer request succeeded\", { url, hasCustomer: Boolean(data) });\n return data as GetCustomerResponse | null;\n};\n\nexport function PriceOSProvider({ children, getBearerToken, backendUrl, logLevel }: PriceOSProviderProps) {\n return createElement(\n PriceOSContext.Provider,\n { value: { getBearerToken, backendUrl, logLevel } },\n children\n );\n}\n\nexport function useCustomer(options: UseCustomerOptions = {}): UseCustomerResult {\n const { errorOnNotFound = false, swr } = options;\n const { getBearerToken, backendUrl, logLevel = DEFAULT_LOG_LEVEL } = useContext(PriceOSContext);\n const fetcher = async (url: string) => {\n let bearerToken: string | null | undefined;\n try {\n bearerToken = getBearerToken ? await getBearerToken() : undefined;\n } catch (error) {\n logMessage(logLevel, \"error\", \"Failed to resolve bearer token\", {\n url,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n logMessage(logLevel, \"debug\", \"Resolved bearer token\", {\n url,\n hasBearerToken: Boolean(bearerToken),\n });\n return requestCustomer(fetch, url, logLevel, errorOnNotFound, bearerToken);\n };\n const { data, error, isLoading, mutate } = useSWR(\n buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),\n fetcher,\n swr\n );\n\n return {\n customer: data ?? null,\n error,\n loading: isLoading,\n refetch: async () => {\n await mutate();\n },\n };\n}\n"],"mappings":"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","names":["error"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@priceos/react",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",