@priceos/react 1.0.1 → 1.0.3

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 { enabled = true, 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,10 +128,11 @@ 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
  };
133
+ const key = enabled ? buildUrl(backendUrl ?? DEFAULT_BACKEND_URL) : null;
128
134
  const { data, error, isLoading, mutate } = (0, import_swr.default)(
129
- buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),
135
+ key,
130
136
  fetcher,
131
137
  swr
132
138
  );
@@ -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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAyE;AACzE,iBAA8C;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,qBAAiB,4BAAmC,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,aAAO;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,QAAI,yBAAW,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,QAAI,WAAAC;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","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 enabled?: boolean;\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 { enabled = true, 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 key = enabled ? buildUrl(backendUrl ?? DEFAULT_BACKEND_URL) : null;\n const { data, error, isLoading, mutate } = useSWR(\n key,\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,8 @@ import { GetCustomerResponse } from 'priceos';
5
5
 
6
6
  type PriceOSLogLevel = "none" | "error" | "warn" | "info" | "debug";
7
7
  type UseCustomerOptions = {
8
+ enabled?: boolean;
9
+ errorOnNotFound?: boolean;
8
10
  swr?: SWRConfiguration<GetCustomerResponse | null, Error>;
9
11
  };
10
12
  type PriceOSProviderProps = {
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ import { GetCustomerResponse } from 'priceos';
5
5
 
6
6
  type PriceOSLogLevel = "none" | "error" | "warn" | "info" | "debug";
7
7
  type UseCustomerOptions = {
8
+ enabled?: boolean;
9
+ errorOnNotFound?: boolean;
8
10
  swr?: SWRConfiguration<GetCustomerResponse | null, Error>;
9
11
  };
10
12
  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 { enabled = true, 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,10 +93,11 @@ 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
  };
98
+ const key = enabled ? buildUrl(backendUrl ?? DEFAULT_BACKEND_URL) : null;
93
99
  const { data, error, isLoading, mutate } = useSWR(
94
- buildUrl(backendUrl ?? DEFAULT_BACKEND_URL),
100
+ key,
95
101
  fetcher,
96
102
  swr
97
103
  );
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":"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","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 enabled?: boolean;\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 { enabled = true, 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 key = enabled ? buildUrl(backendUrl ?? DEFAULT_BACKEND_URL) : null;\n const { data, error, isLoading, mutate } = useSWR(\n key,\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.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",