@coinbase/cdp-api-client 0.0.87 → 0.0.89

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.
@@ -1,185 +1,201 @@
1
- import c from "axios";
2
- import { ERROR_DOCS_PAGE_URL as d } from "./index9.js";
3
- import { UnknownApiError as m, HttpErrorType as u, isOpenAPIError as v, APIError as i, UnknownError as y } from "./index8.js";
4
- const h = () => typeof window < "u" && typeof document < "u";
5
- let a = c.create({
1
+ import { Analytics as d } from "./index2.js";
2
+ import "./index3.js";
3
+ import h from "axios";
4
+ import { ERROR_DOCS_PAGE_URL as c } from "./index9.js";
5
+ import { UnknownApiError as v, HttpErrorType as i, isOpenAPIError as R, APIError as u, UnknownError as g } from "./index8.js";
6
+ const l = () => typeof window < "u" && typeof document < "u";
7
+ let a = h.create({
6
8
  baseURL: "https://api.cdp.coinbase.com/platform"
7
- }), n = null;
8
- const $ = (r) => {
9
- a = c.create({
9
+ }), o = null;
10
+ const x = (r) => {
11
+ a = h.create({
10
12
  baseURL: r.basePath || "https://api.cdp.coinbase.com/platform",
11
13
  // Only enable cookies in browser environments where they're supported
12
- withCredentials: h()
13
- }), a.interceptors.request.use(async (e) => {
14
- const t = g(e), s = l(e);
15
- if (!n || p(s.pathname) || f(s.pathname) && !await n.isSignedIn() || !T(s.pathname))
16
- return e;
17
- const o = await n.getXWalletAuth({
18
- requestMethod: t,
14
+ withCredentials: l()
15
+ }), a.interceptors.request.use(async (t) => {
16
+ const e = U(t), s = p(t);
17
+ if (!o || f(s.pathname) || m(s.pathname) && !await o.isSignedIn() || !b(s.pathname))
18
+ return t;
19
+ const n = await o.getXWalletAuth({
20
+ requestMethod: e,
19
21
  requestHost: s.host,
20
22
  requestPath: s.pathname,
21
- requestData: e.data
23
+ requestData: t.data
22
24
  });
23
- return o && (e.headers["X-Wallet-Auth"] = o), e;
24
- }), a.interceptors.request.use(async (e) => {
25
- const t = l(e);
26
- if (!n || p(t.pathname) || f(t.pathname) && !await n.isSignedIn())
27
- return e;
28
- const s = await n.getToken();
29
- return s && s !== "" && (e.headers.Authorization = `Bearer ${s}`), e;
30
- }), h() || a.interceptors.request.use(async (e) => {
31
- let t = e.headers["User-Agent"];
32
- return t = t ? `${t} CDP/reactnative` : "CDP/reactnative", e.headers["User-Agent"] = t, e;
33
- }), r.refreshTokenStorage && R(r.refreshTokenStorage), r.debugging && (a.interceptors.request.use((e) => (console.log("Request:", e), e)), a.interceptors.response.use((e) => (console.log("Response:", e), e)));
34
- }, x = (r) => {
35
- n = r;
36
- }, A = (r, e) => ({
25
+ return n && (t.headers["X-Wallet-Auth"] = n), t;
26
+ }), a.interceptors.request.use(async (t) => {
27
+ const e = p(t);
28
+ if (!o || f(e.pathname) || m(e.pathname) && !await o.isSignedIn())
29
+ return t;
30
+ const s = await o.getToken();
31
+ return s && s !== "" && (t.headers.Authorization = `Bearer ${s}`), t;
32
+ }), l() || a.interceptors.request.use(async (t) => {
33
+ let e = t.headers["User-Agent"];
34
+ return e = e ? `${e} CDP/reactnative` : "CDP/reactnative", t.headers["User-Agent"] = e, t;
35
+ }), r.refreshTokenStorage && A(r.refreshTokenStorage), r.debugging && (a.interceptors.request.use((t) => (console.log("Request:", t), t)), a.interceptors.response.use((t) => (console.log("Response:", t), t)));
36
+ }, j = (r) => {
37
+ o = r;
38
+ }, y = (r, t) => ({
37
39
  ...r,
38
40
  headers: {
39
41
  ...r.headers || {},
40
- "X-Idempotency-Key": e
42
+ "X-Idempotency-Key": t
41
43
  }
42
- }), j = async (r, e) => {
43
- b(r), e && e !== "" && (r = A(r, e));
44
+ }), I = async (r, t) => {
45
+ P(r), t && t !== "" && (r = y(r, t));
44
46
  try {
45
47
  return (await a(r)).data;
46
- } catch (t) {
47
- if (c.isAxiosError(t) && !t.response)
48
- throw new m(
49
- u.unknown,
50
- t.cause instanceof Error ? t.cause.message : t.message,
51
- t.cause
48
+ } catch (e) {
49
+ if (h.isAxiosError(e) && !e.response)
50
+ throw new v(
51
+ i.unknown,
52
+ e.cause instanceof Error ? e.cause.message : e.message,
53
+ e.cause
52
54
  );
53
- if (c.isAxiosError(t) && t.response) {
54
- if (v(t.response.data))
55
- throw new i(
56
- t.response.status,
57
- t.response.data.errorType,
58
- t.response.data.errorMessage,
59
- t.response.data.correlationId,
60
- t.response.data.errorLink,
61
- t.cause
55
+ if (h.isAxiosError(e) && e.response) {
56
+ if (R(e.response.data))
57
+ throw new u(
58
+ e.response.status,
59
+ e.response.data.errorType,
60
+ e.response.data.errorMessage,
61
+ e.response.data.correlationId,
62
+ e.response.data.errorLink,
63
+ e.cause
62
64
  );
63
65
  {
64
- const s = t.response.status;
66
+ const s = e.response.status;
65
67
  switch (s) {
66
68
  case 401:
67
- throw new i(
69
+ throw new u(
68
70
  s,
69
- u.unauthorized,
71
+ i.unauthorized,
70
72
  "Unauthorized.",
71
73
  void 0,
72
- `${d}#unauthorized`,
73
- t.cause
74
+ `${c}#unauthorized`,
75
+ e.cause
74
76
  );
75
77
  case 404:
76
- throw new i(
78
+ throw new u(
77
79
  s,
78
- u.not_found,
80
+ i.not_found,
79
81
  "API not found.",
80
82
  void 0,
81
- `${d}#not_found`,
82
- t.cause
83
+ `${c}#not_found`,
84
+ e.cause
83
85
  );
84
86
  case 502:
85
- throw new i(
87
+ throw new u(
86
88
  s,
87
- u.bad_gateway,
89
+ i.bad_gateway,
88
90
  "Bad gateway.",
89
91
  void 0,
90
- `${d}`,
91
- t.cause
92
+ `${c}`,
93
+ e.cause
92
94
  );
93
95
  case 503:
94
- throw new i(
96
+ throw new u(
95
97
  s,
96
- u.service_unavailable,
98
+ i.service_unavailable,
97
99
  "Service unavailable. Please try again later.",
98
100
  void 0,
99
- `${d}`,
100
- t.cause
101
+ `${c}`,
102
+ e.cause
101
103
  );
102
104
  default: {
103
- let o = "";
104
- if (t.response.data)
105
+ let n = "";
106
+ if (e.response.data)
105
107
  try {
106
- o = JSON.stringify(t.response.data);
108
+ n = JSON.stringify(e.response.data);
107
109
  } catch {
108
- o = String(t.response.data);
110
+ n = String(e.response.data);
109
111
  }
110
- const w = o ? `An unexpected error occurred: ${o}` : "An unexpected error occurred.";
111
- throw new i(
112
+ const w = n ? `An unexpected error occurred: ${n}` : "An unexpected error occurred.";
113
+ throw new u(
112
114
  s,
113
- u.unexpected_error,
115
+ i.unexpected_error,
114
116
  w,
115
117
  void 0,
116
- `${d}`,
117
- t.cause
118
+ `${c}`,
119
+ e.cause
118
120
  );
119
121
  }
120
122
  }
121
123
  }
122
124
  }
123
- throw new y(
125
+ throw new g(
124
126
  "Something went wrong. Please reach out at https://discord.com/channels/1220414409550336183/1271495764580896789 for help.",
125
- t instanceof Error ? t : void 0
127
+ e instanceof Error ? e : void 0
126
128
  );
127
129
  }
128
- }, R = (r) => {
130
+ }, A = (r) => {
129
131
  a.interceptors.response.use(
130
- async (e) => {
132
+ async (t) => {
131
133
  try {
132
- if (U(e)) {
133
- const t = e.data?.refreshToken;
134
- t && await r.setRefreshToken(t);
134
+ if (_(t)) {
135
+ const e = t.data?.refreshToken;
136
+ e && (await r.setRefreshToken(e), d.sendSessionRefreshEvent({
137
+ name: "refresh_token_stored"
138
+ }));
135
139
  }
136
- } catch (t) {
137
- console.warn("Failed to store refresh token:", t);
140
+ } catch (e) {
141
+ const s = e instanceof Error ? e.message : String(e);
142
+ d.sendSessionRefreshEvent({
143
+ name: "refresh_token_store_failed",
144
+ error_message: s
145
+ }), console.warn("Failed to store refresh token:", e);
138
146
  }
139
- return e;
147
+ return t;
140
148
  },
141
- (e) => Promise.reject(e)
142
- ), a.interceptors.request.use(async (e) => {
149
+ (t) => Promise.reject(t)
150
+ ), a.interceptors.request.use(async (t) => {
143
151
  try {
144
- if (k(e.url)) {
145
- const t = await r.getRefreshToken();
146
- t && (e.data = {
147
- ...e.data,
148
- refreshToken: t
152
+ if (E(t.url)) {
153
+ const e = await r.getRefreshToken();
154
+ e ? (d.sendSessionRefreshEvent({
155
+ name: "refresh_token_retrieved"
156
+ }), t.data = {
157
+ ...t.data,
158
+ refreshToken: e
159
+ }) : d.sendSessionRefreshEvent({
160
+ name: "refresh_token_missing"
149
161
  });
150
162
  }
151
- P(e.url) && await r.removeRefreshToken();
152
- } catch (t) {
153
- console.warn("Failed to retrieve refresh token:", t);
163
+ k(t.url) && await r.removeRefreshToken();
164
+ } catch (e) {
165
+ const s = e instanceof Error ? e.message : String(e);
166
+ d.sendSessionRefreshEvent({
167
+ name: "refresh_token_retrieve_failed",
168
+ error_message: s
169
+ }), console.warn("Failed to retrieve refresh token:", e);
154
170
  }
155
- return e;
171
+ return t;
156
172
  });
157
- }, P = (r) => r ? /^\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/logout$/.test(r) : !1, k = (r) => r ? /^\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(refresh|logout)$/.test(r) : !1, U = (r) => {
158
- const e = r.config.url;
159
- return e ? /^\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(verify\/(email|sms|oauth\/.*)|refresh)$/.test(
160
- e
173
+ }, k = (r) => r ? /^\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/logout$/.test(r) : !1, E = (r) => r ? /^\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(refresh|logout)$/.test(r) : !1, _ = (r) => {
174
+ const t = r.config.url;
175
+ return t ? /^\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(verify\/(email|sms|oauth\/.*)|refresh)$/.test(
176
+ t
161
177
  ) : !1;
162
- }, b = (r) => {
178
+ }, P = (r) => {
163
179
  if (!a.getUri() || a.getUri() === "")
164
180
  throw new Error("CDP client URI not configured. Call configure() first.");
165
181
  if (!r.url || r.url === "")
166
182
  throw new Error("AxiosRequestConfig URL is empty. This should never happen.");
167
183
  if (!r.method || r.method === "")
168
184
  throw new Error("AxiosRequestConfig method is empty. This should never happen.");
169
- }, g = (r) => r.method?.toString().toUpperCase() || "GET", l = (r) => {
185
+ }, U = (r) => r.method?.toString().toUpperCase() || "GET", p = (r) => {
170
186
  if (!r.url)
171
187
  throw new Error("URL is required for authentication");
172
- const e = a.getUri() + r.url;
173
- return new URL(e);
174
- }, p = (r) => {
175
- const e = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(refresh|logout)$/, t = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(mfa)$/, s = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/config$/;
176
- return e.test(r) || t.test(r) || s.test(r);
177
- }, T = (r) => !/^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/custom\/authenticate$/.test(r), f = (r) => {
178
- const e = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(init)$/, t = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/verify\//;
179
- return e.test(r) || t.test(r);
188
+ const t = a.getUri() + r.url;
189
+ return new URL(t);
190
+ }, f = (r) => {
191
+ const t = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(refresh|logout)$/, e = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(mfa)$/, s = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/config$/;
192
+ return t.test(r) || e.test(r) || s.test(r);
193
+ }, b = (r) => !/^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/custom\/authenticate$/.test(r), m = (r) => {
194
+ const t = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/(init)$/, e = /^\/platform\/v2\/embedded-wallet-api\/projects\/[^/]+\/auth\/verify\//;
195
+ return t.test(r) || e.test(r);
180
196
  };
181
197
  export {
182
- j as cdpApiClient,
183
- $ as configureCdpApiClient,
184
- x as setAuthManager
198
+ I as cdpApiClient,
199
+ x as configureCdpApiClient,
200
+ j as setAuthManager
185
201
  };