@gatewayfm/ups-sdk 0.1.13
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/account/index.d.mts +18 -0
- package/dist/account/index.d.ts +18 -0
- package/dist/account/index.js +12 -0
- package/dist/account/index.js.map +1 -0
- package/dist/account/index.mjs +3 -0
- package/dist/account/index.mjs.map +1 -0
- package/dist/chunk-2S2KS5ZI.js +150 -0
- package/dist/chunk-2S2KS5ZI.js.map +1 -0
- package/dist/chunk-BH5YEAE6.mjs +47 -0
- package/dist/chunk-BH5YEAE6.mjs.map +1 -0
- package/dist/chunk-BUSFZFJS.mjs +55 -0
- package/dist/chunk-BUSFZFJS.mjs.map +1 -0
- package/dist/chunk-G525R6AV.js +54 -0
- package/dist/chunk-G525R6AV.js.map +1 -0
- package/dist/chunk-PMX24TXY.js +138 -0
- package/dist/chunk-PMX24TXY.js.map +1 -0
- package/dist/chunk-S65V52WZ.mjs +148 -0
- package/dist/chunk-S65V52WZ.mjs.map +1 -0
- package/dist/chunk-VORGSH76.mjs +136 -0
- package/dist/chunk-VORGSH76.mjs.map +1 -0
- package/dist/chunk-XKQI2VMJ.js +57 -0
- package/dist/chunk-XKQI2VMJ.js.map +1 -0
- package/dist/http-client-D9JtkvUx.d.mts +22 -0
- package/dist/http-client-D9JtkvUx.d.ts +22 -0
- package/dist/index-1p5DSytk.d.mts +35 -0
- package/dist/index-Csrh5-dl.d.mts +160 -0
- package/dist/index-Csrh5-dl.d.ts +160 -0
- package/dist/index-D_ytPgEV.d.ts +35 -0
- package/dist/index.d.mts +130 -0
- package/dist/index.d.ts +130 -0
- package/dist/index.js +485 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +445 -0
- package/dist/index.mjs.map +1 -0
- package/dist/payment/index.d.mts +25 -0
- package/dist/payment/index.d.ts +25 -0
- package/dist/payment/index.js +13 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/payment/index.mjs +4 -0
- package/dist/payment/index.mjs.map +1 -0
- package/dist/wallet/index.d.mts +2 -0
- package/dist/wallet/index.d.ts +2 -0
- package/dist/wallet/index.js +13 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/index.mjs +4 -0
- package/dist/wallet/index.mjs.map +1 -0
- package/package.json +56 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import { AccountModule } from './chunk-BUSFZFJS.mjs';
|
|
2
|
+
export { AccountModule } from './chunk-BUSFZFJS.mjs';
|
|
3
|
+
import { PaymentModule } from './chunk-VORGSH76.mjs';
|
|
4
|
+
export { PaymentModule } from './chunk-VORGSH76.mjs';
|
|
5
|
+
import { WalletModule } from './chunk-S65V52WZ.mjs';
|
|
6
|
+
export { WalletModule } from './chunk-S65V52WZ.mjs';
|
|
7
|
+
import { AuthError, NetworkError, UPSError, WalletError } from './chunk-BH5YEAE6.mjs';
|
|
8
|
+
export { AuthError, NetworkError, PaymentError, RateLimitError, UPSError, WalletError } from './chunk-BH5YEAE6.mjs';
|
|
9
|
+
|
|
10
|
+
// src/types/index.ts
|
|
11
|
+
var PaymentType = /* @__PURE__ */ ((PaymentType2) => {
|
|
12
|
+
PaymentType2["UNSPECIFIED"] = "UNSPECIFIED";
|
|
13
|
+
PaymentType2["DIRECT"] = "DIRECT";
|
|
14
|
+
PaymentType2["ESCROW"] = "ESCROW";
|
|
15
|
+
return PaymentType2;
|
|
16
|
+
})(PaymentType || {});
|
|
17
|
+
|
|
18
|
+
// src/core/http-client.ts
|
|
19
|
+
var HttpClient = class {
|
|
20
|
+
baseUrl;
|
|
21
|
+
timeout;
|
|
22
|
+
retryAttempts;
|
|
23
|
+
getToken;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
26
|
+
this.timeout = config.timeout || 3e4;
|
|
27
|
+
this.retryAttempts = config.retryAttempts || 3;
|
|
28
|
+
this.getToken = config.getToken;
|
|
29
|
+
}
|
|
30
|
+
async request(path, options = {}) {
|
|
31
|
+
const url = `${this.baseUrl}${path.startsWith("/") ? path : "/" + path}`;
|
|
32
|
+
const headers = new Headers(options.headers);
|
|
33
|
+
if (!headers.has("Content-Type")) {
|
|
34
|
+
headers.set("Content-Type", "application/json");
|
|
35
|
+
}
|
|
36
|
+
if (!options.skipAuth && this.getToken) {
|
|
37
|
+
const token = this.getToken();
|
|
38
|
+
if (token) {
|
|
39
|
+
headers.set("Authorization", `Bearer ${token}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const config = {
|
|
43
|
+
...options,
|
|
44
|
+
headers
|
|
45
|
+
};
|
|
46
|
+
let lastError = null;
|
|
47
|
+
for (let attempt = 0; attempt <= this.retryAttempts; attempt++) {
|
|
48
|
+
try {
|
|
49
|
+
const controller = new AbortController();
|
|
50
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
51
|
+
try {
|
|
52
|
+
const response = await fetch(url, {
|
|
53
|
+
...config,
|
|
54
|
+
signal: controller.signal
|
|
55
|
+
});
|
|
56
|
+
if (response.status === 429) {
|
|
57
|
+
const retryAfter = response.headers.get("Retry-After");
|
|
58
|
+
const waitTime = retryAfter ? parseInt(retryAfter, 10) * 1e3 : Math.pow(2, attempt) * 1e3;
|
|
59
|
+
await this.delay(waitTime);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (response.status === 401) {
|
|
63
|
+
throw new AuthError("Authentication failed");
|
|
64
|
+
}
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
let errorDetails;
|
|
67
|
+
const text = await response.text();
|
|
68
|
+
try {
|
|
69
|
+
errorDetails = JSON.parse(text);
|
|
70
|
+
} catch {
|
|
71
|
+
errorDetails = text;
|
|
72
|
+
}
|
|
73
|
+
const detailsStr = typeof errorDetails === "string" ? errorDetails : JSON.stringify(errorDetails);
|
|
74
|
+
throw new NetworkError(`Request failed with status ${response.status}: ${detailsStr}`, errorDetails, response.status);
|
|
75
|
+
}
|
|
76
|
+
if (response.status === 204) {
|
|
77
|
+
return void 0;
|
|
78
|
+
}
|
|
79
|
+
return await response.json();
|
|
80
|
+
} finally {
|
|
81
|
+
clearTimeout(timeoutId);
|
|
82
|
+
}
|
|
83
|
+
} catch (error) {
|
|
84
|
+
lastError = error;
|
|
85
|
+
if (error instanceof AuthError) {
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
if (error.name === "AbortError") {
|
|
89
|
+
lastError = new NetworkError("Request timed out", error);
|
|
90
|
+
} else if (!(error instanceof NetworkError) && !(error instanceof UPSError)) {
|
|
91
|
+
lastError = new NetworkError(error.message || "Unknown error", error);
|
|
92
|
+
}
|
|
93
|
+
if (attempt < this.retryAttempts) {
|
|
94
|
+
const waitTime = Math.pow(2, attempt) * 1e3;
|
|
95
|
+
await this.delay(waitTime);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
throw lastError || new NetworkError("Request failed after retries");
|
|
101
|
+
}
|
|
102
|
+
async get(path, options) {
|
|
103
|
+
return this.request(path, { ...options, method: "GET" });
|
|
104
|
+
}
|
|
105
|
+
async post(path, body, options) {
|
|
106
|
+
return this.request(path, {
|
|
107
|
+
...options,
|
|
108
|
+
method: "POST",
|
|
109
|
+
body: JSON.stringify(body)
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
delay(ms) {
|
|
113
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// src/core/event-bus.ts
|
|
118
|
+
var EventBus = class {
|
|
119
|
+
listeners = /* @__PURE__ */ new Map();
|
|
120
|
+
emit(event, payload) {
|
|
121
|
+
const callbacks = this.listeners.get(event);
|
|
122
|
+
if (callbacks) {
|
|
123
|
+
callbacks.forEach((callback) => {
|
|
124
|
+
try {
|
|
125
|
+
callback(payload);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
console.error(`Error in event handler for ${event}:`, error);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
on(event, callback) {
|
|
133
|
+
if (!this.listeners.has(event)) {
|
|
134
|
+
this.listeners.set(event, /* @__PURE__ */ new Set());
|
|
135
|
+
}
|
|
136
|
+
this.listeners.get(event).add(callback);
|
|
137
|
+
return () => this.off(event, callback);
|
|
138
|
+
}
|
|
139
|
+
once(event, callback) {
|
|
140
|
+
const unsubscribe = this.on(event, (payload) => {
|
|
141
|
+
unsubscribe();
|
|
142
|
+
callback(payload);
|
|
143
|
+
});
|
|
144
|
+
return unsubscribe;
|
|
145
|
+
}
|
|
146
|
+
off(event, callback) {
|
|
147
|
+
const callbacks = this.listeners.get(event);
|
|
148
|
+
if (callbacks) {
|
|
149
|
+
callbacks.delete(callback);
|
|
150
|
+
if (callbacks.size === 0) {
|
|
151
|
+
this.listeners.delete(event);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
clear() {
|
|
156
|
+
this.listeners.clear();
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// src/core/auth-manager.ts
|
|
161
|
+
var AuthManager = class {
|
|
162
|
+
constructor(http, eventBus, refreshInterval = 6e4) {
|
|
163
|
+
this.http = http;
|
|
164
|
+
this.eventBus = eventBus;
|
|
165
|
+
this.refreshInterval = refreshInterval;
|
|
166
|
+
}
|
|
167
|
+
_state = {
|
|
168
|
+
isAuthenticated: false,
|
|
169
|
+
token: null,
|
|
170
|
+
expiresAt: null,
|
|
171
|
+
address: null
|
|
172
|
+
};
|
|
173
|
+
refreshTimer = null;
|
|
174
|
+
refreshInterval;
|
|
175
|
+
get state() {
|
|
176
|
+
return { ...this._state };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Unified connect method - creates user if new, authenticates if existing
|
|
180
|
+
* This is the preferred authentication method.
|
|
181
|
+
*/
|
|
182
|
+
async connect(walletAddress, message, signature) {
|
|
183
|
+
const result = await this.http.post("/auth/connect", {
|
|
184
|
+
wallet_address: walletAddress,
|
|
185
|
+
message,
|
|
186
|
+
signature
|
|
187
|
+
}, { skipAuth: true });
|
|
188
|
+
const connectResult = {
|
|
189
|
+
user: this.mapUser(result.user),
|
|
190
|
+
token: result.token,
|
|
191
|
+
expiresAt: result.expires_at,
|
|
192
|
+
isNewUser: result.is_new_user ?? false
|
|
193
|
+
};
|
|
194
|
+
this.handleAuthSuccess({ token: result.token, expiresAt: result.expires_at }, walletAddress);
|
|
195
|
+
return connectResult;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* @deprecated Use connect() instead
|
|
199
|
+
*/
|
|
200
|
+
async login(walletAddress, message, signature) {
|
|
201
|
+
const result = await this.http.post("/auth/login", {
|
|
202
|
+
wallet_address: walletAddress,
|
|
203
|
+
message,
|
|
204
|
+
signature
|
|
205
|
+
}, { skipAuth: true });
|
|
206
|
+
const authResult = {
|
|
207
|
+
token: result.token,
|
|
208
|
+
expiresAt: result.expires_at || result.expiresAt
|
|
209
|
+
};
|
|
210
|
+
this.handleAuthSuccess(authResult, walletAddress);
|
|
211
|
+
return authResult;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* @deprecated Use connect() instead
|
|
215
|
+
*/
|
|
216
|
+
async register(walletAddress, message, signature) {
|
|
217
|
+
const result = await this.http.post("/auth/register", {
|
|
218
|
+
wallet_address: walletAddress,
|
|
219
|
+
message,
|
|
220
|
+
signature
|
|
221
|
+
}, { skipAuth: true });
|
|
222
|
+
const authResult = {
|
|
223
|
+
token: result.token,
|
|
224
|
+
expiresAt: result.expires_at || result.expiresAt || new Date(Date.now() + 24 * 60 * 60 * 1e3).toISOString()
|
|
225
|
+
};
|
|
226
|
+
this.handleAuthSuccess(authResult, walletAddress);
|
|
227
|
+
return authResult;
|
|
228
|
+
}
|
|
229
|
+
handleAuthSuccess(result, walletAddress) {
|
|
230
|
+
this.updateState({
|
|
231
|
+
isAuthenticated: true,
|
|
232
|
+
token: result.token,
|
|
233
|
+
expiresAt: new Date(result.expiresAt),
|
|
234
|
+
address: walletAddress
|
|
235
|
+
});
|
|
236
|
+
this.scheduleRefresh();
|
|
237
|
+
}
|
|
238
|
+
async refresh() {
|
|
239
|
+
if (!this._state.token) return;
|
|
240
|
+
try {
|
|
241
|
+
const result = await this.http.post("/auth/refresh");
|
|
242
|
+
this.updateState({
|
|
243
|
+
...this._state,
|
|
244
|
+
token: result.token,
|
|
245
|
+
expiresAt: new Date(result.expires_at)
|
|
246
|
+
});
|
|
247
|
+
this.scheduleRefresh();
|
|
248
|
+
} catch (error) {
|
|
249
|
+
console.error("Token refresh failed:", error);
|
|
250
|
+
this.logout();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
mapUser(data) {
|
|
254
|
+
return {
|
|
255
|
+
id: data.id,
|
|
256
|
+
walletAddress: data.wallet_address,
|
|
257
|
+
status: data.status,
|
|
258
|
+
createdAt: data.created_at
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
logout() {
|
|
262
|
+
if (this.refreshTimer) {
|
|
263
|
+
clearTimeout(this.refreshTimer);
|
|
264
|
+
this.refreshTimer = null;
|
|
265
|
+
}
|
|
266
|
+
this.updateState({
|
|
267
|
+
isAuthenticated: false,
|
|
268
|
+
token: null,
|
|
269
|
+
expiresAt: null,
|
|
270
|
+
address: null
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
getToken() {
|
|
274
|
+
return this._state.token;
|
|
275
|
+
}
|
|
276
|
+
isAuthenticated() {
|
|
277
|
+
return this._state.isAuthenticated;
|
|
278
|
+
}
|
|
279
|
+
onStateChange(callback) {
|
|
280
|
+
return this.eventBus.on("auth:changed", callback);
|
|
281
|
+
}
|
|
282
|
+
updateState(newState) {
|
|
283
|
+
this._state = newState;
|
|
284
|
+
this.eventBus.emit("auth:changed", this._state);
|
|
285
|
+
}
|
|
286
|
+
scheduleRefresh() {
|
|
287
|
+
if (this.refreshTimer) {
|
|
288
|
+
clearTimeout(this.refreshTimer);
|
|
289
|
+
}
|
|
290
|
+
if (!this._state.expiresAt) return;
|
|
291
|
+
const expiresAt = this._state.expiresAt.getTime();
|
|
292
|
+
const now = Date.now();
|
|
293
|
+
if (expiresAt <= now) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
const timeUntilExpiry = expiresAt - now;
|
|
297
|
+
const refreshTime = Math.min(this.refreshInterval, timeUntilExpiry - 6e4);
|
|
298
|
+
if (refreshTime > 0) {
|
|
299
|
+
this.refreshTimer = setTimeout(() => this.refresh(), refreshTime);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
// src/escrow/index.ts
|
|
305
|
+
var EscrowModule = class {
|
|
306
|
+
constructor(http) {
|
|
307
|
+
this.http = http;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get escrow details by ID
|
|
311
|
+
* @param escrowId Escrow ID
|
|
312
|
+
*/
|
|
313
|
+
async get(escrowId) {
|
|
314
|
+
return this.http.get(`/x402/escrow/${escrowId}`, { skipAuth: false });
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Release escrow funds (Payer or Arbiter only)
|
|
318
|
+
* @param escrowId Escrow ID
|
|
319
|
+
*/
|
|
320
|
+
async release(escrowId, network) {
|
|
321
|
+
return this.http.post(`/x402/escrow/${escrowId}/release`, {
|
|
322
|
+
network
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Refund escrow funds (Arbiter only)
|
|
327
|
+
* @param escrowId Escrow ID
|
|
328
|
+
*/
|
|
329
|
+
async refund(escrowId, network) {
|
|
330
|
+
return this.http.post(`/x402/escrow/${escrowId}/refund`, {
|
|
331
|
+
network
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
// src/user/index.ts
|
|
337
|
+
var UserModule = class {
|
|
338
|
+
constructor(http) {
|
|
339
|
+
this.http = http;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Get the current authenticated user's profile.
|
|
343
|
+
* Requires authentication.
|
|
344
|
+
*/
|
|
345
|
+
async getCurrentUser() {
|
|
346
|
+
const response = await this.http.get("/users/me");
|
|
347
|
+
return this.mapUser(response.user);
|
|
348
|
+
}
|
|
349
|
+
mapUser(data) {
|
|
350
|
+
return {
|
|
351
|
+
id: data.id,
|
|
352
|
+
walletAddress: data.wallet_address,
|
|
353
|
+
status: data.status,
|
|
354
|
+
createdAt: data.created_at
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
// src/client.ts
|
|
360
|
+
var UPSClient = class {
|
|
361
|
+
config;
|
|
362
|
+
wallet;
|
|
363
|
+
auth;
|
|
364
|
+
account;
|
|
365
|
+
payment;
|
|
366
|
+
escrow;
|
|
367
|
+
user;
|
|
368
|
+
http;
|
|
369
|
+
eventBus;
|
|
370
|
+
constructor(config) {
|
|
371
|
+
this.config = config;
|
|
372
|
+
if (!this.config.chainId && this.config.network.startsWith("eip155:")) {
|
|
373
|
+
this.config.chainId = parseInt(this.config.network.split(":")[1], 10);
|
|
374
|
+
}
|
|
375
|
+
this.eventBus = new EventBus();
|
|
376
|
+
this.http = new HttpClient({
|
|
377
|
+
baseUrl: config.baseUrl,
|
|
378
|
+
timeout: config.timeout,
|
|
379
|
+
retryAttempts: config.retryAttempts,
|
|
380
|
+
getToken: () => this.auth.getToken()
|
|
381
|
+
});
|
|
382
|
+
this.auth = new AuthManager(this.http, this.eventBus, config.refreshInterval);
|
|
383
|
+
this.wallet = new WalletModule(this.eventBus);
|
|
384
|
+
this.account = new AccountModule(this.http);
|
|
385
|
+
this.payment = new PaymentModule(this.http, this.wallet);
|
|
386
|
+
this.escrow = new EscrowModule(this.http);
|
|
387
|
+
this.user = new UserModule(this.http);
|
|
388
|
+
}
|
|
389
|
+
async connect(provider) {
|
|
390
|
+
return this.wallet.connect(provider);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Authenticate with the UPS backend using the unified /auth/connect endpoint.
|
|
394
|
+
* This will create a new user if one doesn't exist, or authenticate an existing user.
|
|
395
|
+
*
|
|
396
|
+
* @returns ConnectResult containing user info and whether this is a new user
|
|
397
|
+
*/
|
|
398
|
+
async authenticate() {
|
|
399
|
+
if (!this.wallet.isConnected()) {
|
|
400
|
+
throw new WalletError("Wallet must be connected to authenticate");
|
|
401
|
+
}
|
|
402
|
+
const address = this.wallet.getAddress();
|
|
403
|
+
if (!address) throw new WalletError("No wallet address available");
|
|
404
|
+
const message = `Connect to UPSx402`;
|
|
405
|
+
const signature = await this.wallet.signMessage(message);
|
|
406
|
+
return this.auth.connect(address, message, signature);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* @deprecated Use authenticate() instead which uses the unified /auth/connect endpoint.
|
|
410
|
+
* This method uses the legacy login/register flow.
|
|
411
|
+
*/
|
|
412
|
+
async authenticateLegacy() {
|
|
413
|
+
if (!this.wallet.isConnected()) {
|
|
414
|
+
throw new WalletError("Wallet must be connected to authenticate");
|
|
415
|
+
}
|
|
416
|
+
const address = this.wallet.getAddress();
|
|
417
|
+
if (!address) throw new WalletError("No wallet address available");
|
|
418
|
+
const loginMessage = `Login to UPSx402`;
|
|
419
|
+
try {
|
|
420
|
+
const signature = await this.wallet.signMessage(loginMessage);
|
|
421
|
+
await this.auth.login(address, loginMessage, signature);
|
|
422
|
+
} catch (error) {
|
|
423
|
+
const isAuthError = error.status === 404 || error.status === 401 || error.status === 400 || error.message?.includes("not found") || error.details?.message?.includes("not found");
|
|
424
|
+
if (isAuthError) {
|
|
425
|
+
const registerMessage = `Register for UPSx402`;
|
|
426
|
+
const signature = await this.wallet.signMessage(registerMessage);
|
|
427
|
+
await this.auth.register(address, registerMessage, signature);
|
|
428
|
+
} else {
|
|
429
|
+
throw error;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
async disconnect() {
|
|
434
|
+
await this.wallet.disconnect();
|
|
435
|
+
this.auth.logout();
|
|
436
|
+
}
|
|
437
|
+
destroy() {
|
|
438
|
+
this.auth.logout();
|
|
439
|
+
this.eventBus.clear();
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
export { AuthManager, EscrowModule, EventBus, HttpClient, PaymentType, UPSClient, UserModule };
|
|
444
|
+
//# sourceMappingURL=index.mjs.map
|
|
445
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/index.ts","../src/core/http-client.ts","../src/core/event-bus.ts","../src/core/auth-manager.ts","../src/escrow/index.ts","../src/user/index.ts","../src/client.ts"],"names":["PaymentType"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface UPSConfig {\n baseUrl: string; // API base URL\n network: string; // CAIP-2 format: \"eip155:737998412\"\n chainId?: number; // Optional, parsed from network if not provided\n timeout?: number; // Request timeout (default: 30000)\n retryAttempts?: number; // Retry count (default: 3)\n refreshInterval?: number; // Token refresh interval in ms (default: 60000 = 1 min)\n}\n\n// Authentication\nexport interface AuthState {\n isAuthenticated: boolean;\n token: string | null;\n expiresAt: Date | null;\n address: string | null;\n}\n\nexport interface AuthResult {\n token: string;\n expiresAt: string;\n}\n\n// User (from /auth/connect and /users/me)\nexport interface User {\n id: string;\n walletAddress: string;\n status: string;\n createdAt: string;\n}\n\n// Connect auth result (unified auth flow)\nexport interface ConnectResult {\n user: User;\n token: string;\n expiresAt: string;\n isNewUser: boolean;\n}\n\n// Wallet\nexport type EIP1193Provider = {\n request: (args: { method: string; params?: unknown[] }) => Promise<unknown>;\n on?: (event: string, handler: (...args: any[]) => void) => void;\n removeListener?: (event: string, handler: (...args: any[]) => void) => void;\n};\n\nexport interface WalletState {\n isConnected: boolean;\n address: string | null;\n chainId: number | null;\n provider: EIP1193Provider | null;\n}\n\nexport interface ConnectedWallet {\n address: string;\n chainId: number;\n provider: EIP1193Provider;\n}\n\n// Account\nexport type AccountStatus = 'pending' | 'kyc_in_progress' | 'active' | 'frozen' | 'closed';\n\nexport interface Account {\n id: string;\n ownerAddress: string;\n walletAddress: string;\n status: AccountStatus;\n kycLevel: number;\n userId?: string;\n createdAt: string;\n updatedAt?: string;\n}\n\nexport interface CreateAccountParams {\n ownerAddress: string;\n salt: string; // 0x-prefixed 32-byte hex\n}\n\nexport interface CreateAccountResponse {\n account: Account;\n txHash: string;\n}\n\n// Payment (x402)\nexport interface PaymentRequirements {\n scheme: string;\n network: string;\n maxAmountRequired: string;\n asset: string;\n payTo: string;\n maxTimeoutSeconds: number;\n resource?: string;\n description?: string;\n\n extra?: PaymentExtra;\n from?: string;\n}\n\nexport enum PaymentType {\n UNSPECIFIED = 'UNSPECIFIED',\n DIRECT = 'DIRECT',\n ESCROW = 'ESCROW'\n}\n\nexport interface PaymentExtra {\n name?: string;\n version?: string;\n payment_type?: PaymentType; // snake_case from API\n arbiter?: string;\n release_time?: number; // snake_case from API\n payee?: string; // intended recipient for escrow\n}\n\nexport interface PaymentAuthorization {\n from: string;\n to: string;\n value: string;\n validAfter: number;\n validBefore: number;\n nonce: string; // bytes32 hex\n}\n\nexport interface SignedAuthorization extends PaymentAuthorization {\n signature: string;\n}\n\nexport interface VerifyResponse {\n isValid: boolean;\n invalidReason?: string;\n payer?: string;\n}\n\nexport interface SettleResponse {\n success: boolean;\n errorReason?: string;\n transaction?: string;\n network?: string;\n payer?: string;\n}\n\n// x402 Supported Schemes\nexport interface SupportedScheme {\n x402Version: number;\n scheme: string;\n network: string;\n}\n\nexport interface SupportedSchemesResponse {\n kinds: SupportedScheme[];\n extensions?: string[];\n signers?: Record<string, string[]>;\n}\n\n// EIP-712 Typed Data\nexport interface EIP712Domain {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n}\n\nexport interface EIP712Type {\n name: string;\n type: string;\n}\n\nexport interface EIP712TypedData {\n domain: EIP712Domain;\n types: Record<string, EIP712Type[]>;\n primaryType: string;\n message: Record<string, unknown>;\n}\n\n// Escrow\nexport interface Escrow {\n escrowId: string;\n payer: string;\n payee: string;\n amount: string;\n arbiter: string;\n releaseTime: number;\n status: EscrowStatus;\n}\n\nexport type EscrowStatus = 'ACTIVE' | 'RELEASED' | 'REFUNDED';\n\nexport interface EscrowActionResponse {\n success: boolean;\n errorReason?: string;\n transaction?: string;\n network?: string;\n}\n\n\n","import { NetworkError, AuthError, UPSError } from './errors';\n\ninterface HttpClientConfig {\n baseUrl: string;\n timeout?: number;\n retryAttempts?: number;\n getToken?: () => string | null;\n}\n\ninterface RequestOptions extends RequestInit {\n skipAuth?: boolean;\n}\n\nexport class HttpClient {\n private baseUrl: string;\n private timeout: number;\n private retryAttempts: number;\n private getToken?: () => string | null;\n\n constructor(config: HttpClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, '');\n this.timeout = config.timeout || 30000;\n this.retryAttempts = config.retryAttempts || 3;\n this.getToken = config.getToken;\n }\n\n async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const url = `${this.baseUrl}${path.startsWith('/') ? path : '/' + path}`;\n const headers = new Headers(options.headers);\n\n if (!headers.has('Content-Type')) {\n headers.set('Content-Type', 'application/json');\n }\n\n if (!options.skipAuth && this.getToken) {\n const token = this.getToken();\n if (token) {\n headers.set('Authorization', `Bearer ${token}`);\n }\n }\n\n const config: RequestInit = {\n ...options,\n headers,\n };\n\n let lastError: Error | null = null;\n for (let attempt = 0; attempt <= this.retryAttempts; attempt++) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await fetch(url, {\n ...config,\n signal: controller.signal,\n });\n\n if (response.status === 429) {\n const retryAfter = response.headers.get('Retry-After');\n const waitTime = retryAfter ? parseInt(retryAfter, 10) * 1000 : Math.pow(2, attempt) * 1000;\n await this.delay(waitTime);\n continue;\n }\n\n if (response.status === 401) {\n throw new AuthError('Authentication failed');\n }\n\n if (!response.ok) {\n let errorDetails;\n const text = await response.text();\n try {\n errorDetails = JSON.parse(text);\n } catch {\n errorDetails = text;\n }\n const detailsStr = typeof errorDetails === 'string' ? errorDetails : JSON.stringify(errorDetails);\n throw new NetworkError(`Request failed with status ${response.status}: ${detailsStr}`, errorDetails, response.status);\n }\n\n // Handle 204 No Content\n if (response.status === 204) {\n return undefined as unknown as T;\n }\n\n return await response.json();\n } finally {\n clearTimeout(timeoutId);\n }\n } catch (error: any) {\n lastError = error;\n\n if (error instanceof AuthError) {\n throw error;\n }\n\n if (error.name === 'AbortError') {\n lastError = new NetworkError('Request timed out', error);\n } else if (!(error instanceof NetworkError) && !(error instanceof UPSError)) {\n // Wrap unknown errors\n lastError = new NetworkError(error.message || 'Unknown error', error);\n }\n\n if (attempt < this.retryAttempts) {\n const waitTime = Math.pow(2, attempt) * 1000;\n await this.delay(waitTime);\n continue;\n }\n }\n }\n\n throw lastError || new NetworkError('Request failed after retries');\n }\n\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: 'GET' });\n }\n\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, {\n ...options,\n method: 'POST',\n body: JSON.stringify(body),\n });\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n","type Callback<T = any> = (payload: T) => void;\ntype Unsubscribe = () => void;\n\nexport class EventBus {\n private listeners: Map<string, Set<Callback>> = new Map();\n\n emit<T>(event: string, payload: T): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.forEach((callback) => {\n try {\n callback(payload);\n } catch (error) {\n console.error(`Error in event handler for ${event}:`, error);\n }\n });\n }\n }\n\n on<T>(event: string, callback: Callback<T>): Unsubscribe {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(callback);\n\n return () => this.off(event, callback);\n }\n\n once<T>(event: string, callback: Callback<T>): Unsubscribe {\n const unsubscribe = this.on<T>(event, (payload) => {\n unsubscribe();\n callback(payload);\n });\n return unsubscribe;\n }\n\n off(event: string, callback: Callback): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.delete(callback);\n if (callbacks.size === 0) {\n this.listeners.delete(event);\n }\n }\n }\n\n clear(): void {\n this.listeners.clear();\n }\n}\n","import { HttpClient } from './http-client';\nimport { EventBus } from './event-bus';\nimport { AuthState, AuthResult, ConnectResult, User } from '../types';\n\nexport class AuthManager {\n private _state: AuthState = {\n isAuthenticated: false,\n token: null,\n expiresAt: null,\n address: null,\n };\n private refreshTimer: NodeJS.Timeout | null = null;\n private refreshInterval: number;\n\n constructor(\n private http: HttpClient,\n private eventBus: EventBus,\n refreshInterval: number = 60000 // Default 1 minute\n ) {\n this.refreshInterval = refreshInterval;\n }\n\n get state(): AuthState {\n return { ...this._state };\n }\n\n /**\n * Unified connect method - creates user if new, authenticates if existing\n * This is the preferred authentication method.\n */\n async connect(walletAddress: string, message: string, signature: string): Promise<ConnectResult> {\n const result = await this.http.post<any>('/auth/connect', {\n wallet_address: walletAddress,\n message,\n signature,\n }, { skipAuth: true });\n\n const connectResult: ConnectResult = {\n user: this.mapUser(result.user),\n token: result.token,\n expiresAt: result.expires_at,\n isNewUser: result.is_new_user ?? false,\n };\n\n this.handleAuthSuccess({ token: result.token, expiresAt: result.expires_at }, walletAddress);\n return connectResult;\n }\n\n /**\n * @deprecated Use connect() instead\n */\n async login(walletAddress: string, message: string, signature: string): Promise<AuthResult> {\n const result = await this.http.post<any>('/auth/login', {\n wallet_address: walletAddress,\n message,\n signature,\n }, { skipAuth: true });\n\n const authResult: AuthResult = {\n token: result.token,\n expiresAt: result.expires_at || result.expiresAt,\n };\n\n this.handleAuthSuccess(authResult, walletAddress);\n return authResult;\n }\n\n /**\n * @deprecated Use connect() instead\n */\n async register(walletAddress: string, message: string, signature: string): Promise<AuthResult> {\n const result = await this.http.post<any>('/auth/register', {\n wallet_address: walletAddress,\n message,\n signature,\n }, { skipAuth: true });\n\n const authResult: AuthResult = {\n token: result.token,\n expiresAt: result.expires_at || result.expiresAt || new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),\n };\n\n this.handleAuthSuccess(authResult, walletAddress);\n return authResult;\n }\n\n private handleAuthSuccess(result: AuthResult, walletAddress: string) {\n this.updateState({\n isAuthenticated: true,\n token: result.token,\n expiresAt: new Date(result.expiresAt),\n address: walletAddress,\n });\n this.scheduleRefresh();\n }\n\n async refresh(): Promise<void> {\n if (!this._state.token) return;\n\n try {\n const result = await this.http.post<{ token: string; expires_at: string }>('/auth/refresh');\n\n this.updateState({\n ...this._state,\n token: result.token,\n expiresAt: new Date(result.expires_at),\n });\n\n this.scheduleRefresh();\n } catch (error) {\n console.error('Token refresh failed:', error);\n this.logout();\n }\n }\n\n private mapUser(data: any): User {\n return {\n id: data.id,\n walletAddress: data.wallet_address,\n status: data.status,\n createdAt: data.created_at,\n };\n }\n\n logout(): void {\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.refreshTimer = null;\n }\n\n this.updateState({\n isAuthenticated: false,\n token: null,\n expiresAt: null,\n address: null,\n });\n }\n\n getToken(): string | null {\n return this._state.token;\n }\n\n isAuthenticated(): boolean {\n return this._state.isAuthenticated;\n }\n\n onStateChange(callback: (state: AuthState) => void): () => void {\n return this.eventBus.on('auth:changed', callback);\n }\n\n private updateState(newState: AuthState) {\n this._state = newState;\n this.eventBus.emit('auth:changed', this._state);\n }\n\n private scheduleRefresh() {\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n }\n\n if (!this._state.expiresAt) return;\n\n const expiresAt = this._state.expiresAt.getTime();\n const now = Date.now();\n\n // If token is already expired, don't schedule refresh\n if (expiresAt <= now) {\n return;\n }\n\n // Schedule refresh at the configured interval (e.g., 1 hour)\n // But ensure we refresh before the token expires\n const timeUntilExpiry = expiresAt - now;\n const refreshTime = Math.min(this.refreshInterval, timeUntilExpiry - 60000); // At least 1 min buffer\n\n if (refreshTime > 0) {\n this.refreshTimer = setTimeout(() => this.refresh(), refreshTime);\n }\n }\n}\n","import { HttpClient } from '../core/http-client';\nimport { Escrow, EscrowActionResponse } from '../types';\n\nexport class EscrowModule {\n constructor(private http: HttpClient) { }\n\n /**\n * Get escrow details by ID\n * @param escrowId Escrow ID\n */\n async get(escrowId: string): Promise<Escrow> {\n return this.http.get<Escrow>(`/x402/escrow/${escrowId}`, { skipAuth: false });\n }\n\n /**\n * Release escrow funds (Payer or Arbiter only)\n * @param escrowId Escrow ID\n */\n async release(escrowId: string, network: string): Promise<EscrowActionResponse> {\n return this.http.post<EscrowActionResponse>(`/x402/escrow/${escrowId}/release`, {\n network\n });\n }\n\n /**\n * Refund escrow funds (Arbiter only)\n * @param escrowId Escrow ID\n */\n async refund(escrowId: string, network: string): Promise<EscrowActionResponse> {\n return this.http.post<EscrowActionResponse>(`/x402/escrow/${escrowId}/refund`, {\n network\n });\n }\n}\n","import { HttpClient } from '../core/http-client';\nimport { User } from '../types';\n\n/**\n * UserModule provides access to user profile operations.\n * \n * @example\n * ```typescript\n * const user = await client.user.getCurrentUser();\n * console.log(user.id, user.walletAddress);\n * ```\n */\nexport class UserModule {\n constructor(private http: HttpClient) { }\n\n /**\n * Get the current authenticated user's profile.\n * Requires authentication.\n */\n async getCurrentUser(): Promise<User> {\n const response = await this.http.get<{ user: any }>('/users/me');\n return this.mapUser(response.user);\n }\n\n private mapUser(data: any): User {\n return {\n id: data.id,\n walletAddress: data.wallet_address,\n status: data.status,\n createdAt: data.created_at,\n };\n }\n}\n","import { HttpClient } from './core/http-client';\nimport { EventBus } from './core/event-bus';\nimport { AuthManager } from './core/auth-manager';\nimport { WalletModule } from './wallet';\nimport { AccountModule } from './account';\nimport { PaymentModule } from './payment';\nimport { EscrowModule } from './escrow';\nimport { UserModule } from './user';\nimport { UPSConfig, ConnectedWallet, EIP1193Provider, ConnectResult } from './types';\nimport { WalletError } from './core/errors';\n\nexport class UPSClient {\n readonly config: UPSConfig;\n readonly wallet: WalletModule;\n readonly auth: AuthManager;\n readonly account: AccountModule;\n readonly payment: PaymentModule;\n readonly escrow: EscrowModule;\n readonly user: UserModule;\n\n private http: HttpClient;\n private eventBus: EventBus;\n\n constructor(config: UPSConfig) {\n this.config = config;\n\n // Parse chainId if not provided but network is \"eip155:123\"\n if (!this.config.chainId && this.config.network.startsWith('eip155:')) {\n this.config.chainId = parseInt(this.config.network.split(':')[1], 10);\n }\n\n this.eventBus = new EventBus();\n\n this.http = new HttpClient({\n baseUrl: config.baseUrl,\n timeout: config.timeout,\n retryAttempts: config.retryAttempts,\n getToken: () => this.auth.getToken(),\n });\n\n this.auth = new AuthManager(this.http, this.eventBus, config.refreshInterval);\n this.wallet = new WalletModule(this.eventBus);\n this.account = new AccountModule(this.http);\n this.payment = new PaymentModule(this.http, this.wallet);\n this.escrow = new EscrowModule(this.http);\n this.user = new UserModule(this.http);\n }\n\n async connect(provider: EIP1193Provider): Promise<ConnectedWallet> {\n return this.wallet.connect(provider);\n }\n\n /**\n * Authenticate with the UPS backend using the unified /auth/connect endpoint.\n * This will create a new user if one doesn't exist, or authenticate an existing user.\n * \n * @returns ConnectResult containing user info and whether this is a new user\n */\n async authenticate(): Promise<ConnectResult> {\n if (!this.wallet.isConnected()) {\n throw new WalletError('Wallet must be connected to authenticate');\n }\n\n const address = this.wallet.getAddress();\n if (!address) throw new WalletError('No wallet address available');\n\n const message = `Connect to UPSx402`;\n const signature = await this.wallet.signMessage(message);\n\n return this.auth.connect(address, message, signature);\n }\n\n /**\n * @deprecated Use authenticate() instead which uses the unified /auth/connect endpoint.\n * This method uses the legacy login/register flow.\n */\n async authenticateLegacy(): Promise<void> {\n if (!this.wallet.isConnected()) {\n throw new WalletError('Wallet must be connected to authenticate');\n }\n\n const address = this.wallet.getAddress();\n if (!address) throw new WalletError('No wallet address available');\n\n // Try Login\n const loginMessage = `Login to UPSx402`;\n try {\n const signature = await this.wallet.signMessage(loginMessage);\n await this.auth.login(address, loginMessage, signature);\n } catch (error: any) {\n // If related to \"User not found\" or 404/401/400, try Register\n const isAuthError = error.status === 404 || error.status === 401 || error.status === 400 || error.message?.includes('not found') || error.details?.message?.includes('not found');\n\n if (isAuthError) {\n const registerMessage = `Register for UPSx402`;\n const signature = await this.wallet.signMessage(registerMessage);\n await this.auth.register(address, registerMessage, signature);\n } else {\n throw error;\n }\n }\n }\n\n async disconnect(): Promise<void> {\n await this.wallet.disconnect();\n this.auth.logout();\n }\n\n destroy(): void {\n this.auth.logout(); // Clears refresh timer\n this.eventBus.clear();\n }\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { H as HttpClient } from '../http-client-D9JtkvUx.mjs';
|
|
2
|
+
import { W as WalletModule } from '../index-1p5DSytk.mjs';
|
|
3
|
+
import { o as PaymentRequirements, S as SettleResponse, P as PaymentAuthorization, q as SignedAuthorization, V as VerifyResponse, s as SupportedSchemesResponse } from '../index-Csrh5-dl.mjs';
|
|
4
|
+
|
|
5
|
+
declare class PaymentModule {
|
|
6
|
+
private http;
|
|
7
|
+
private wallet;
|
|
8
|
+
constructor(http: HttpClient, wallet: WalletModule);
|
|
9
|
+
pay(request: {
|
|
10
|
+
requirements: PaymentRequirements;
|
|
11
|
+
from?: string;
|
|
12
|
+
}): Promise<SettleResponse>;
|
|
13
|
+
buildAuthorization(requirements: PaymentRequirements, from: string): PaymentAuthorization;
|
|
14
|
+
signAuthorization(authorization: PaymentAuthorization, requirements: PaymentRequirements): Promise<SignedAuthorization>;
|
|
15
|
+
encodePaymentHeader(signed: SignedAuthorization, requirements: PaymentRequirements): string;
|
|
16
|
+
verify(signed: SignedAuthorization, requirements: PaymentRequirements): Promise<VerifyResponse>;
|
|
17
|
+
settle(signed: SignedAuthorization, requirements: PaymentRequirements): Promise<SettleResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Get supported payment schemes from the facilitator.
|
|
20
|
+
* This endpoint does not require authentication.
|
|
21
|
+
*/
|
|
22
|
+
getSupportedSchemes(): Promise<SupportedSchemesResponse>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { PaymentModule };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { H as HttpClient } from '../http-client-D9JtkvUx.js';
|
|
2
|
+
import { W as WalletModule } from '../index-D_ytPgEV.js';
|
|
3
|
+
import { o as PaymentRequirements, S as SettleResponse, P as PaymentAuthorization, q as SignedAuthorization, V as VerifyResponse, s as SupportedSchemesResponse } from '../index-Csrh5-dl.js';
|
|
4
|
+
|
|
5
|
+
declare class PaymentModule {
|
|
6
|
+
private http;
|
|
7
|
+
private wallet;
|
|
8
|
+
constructor(http: HttpClient, wallet: WalletModule);
|
|
9
|
+
pay(request: {
|
|
10
|
+
requirements: PaymentRequirements;
|
|
11
|
+
from?: string;
|
|
12
|
+
}): Promise<SettleResponse>;
|
|
13
|
+
buildAuthorization(requirements: PaymentRequirements, from: string): PaymentAuthorization;
|
|
14
|
+
signAuthorization(authorization: PaymentAuthorization, requirements: PaymentRequirements): Promise<SignedAuthorization>;
|
|
15
|
+
encodePaymentHeader(signed: SignedAuthorization, requirements: PaymentRequirements): string;
|
|
16
|
+
verify(signed: SignedAuthorization, requirements: PaymentRequirements): Promise<VerifyResponse>;
|
|
17
|
+
settle(signed: SignedAuthorization, requirements: PaymentRequirements): Promise<SettleResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Get supported payment schemes from the facilitator.
|
|
20
|
+
* This endpoint does not require authentication.
|
|
21
|
+
*/
|
|
22
|
+
getSupportedSchemes(): Promise<SupportedSchemesResponse>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { PaymentModule };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPMX24TXY_js = require('../chunk-PMX24TXY.js');
|
|
4
|
+
require('../chunk-G525R6AV.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "PaymentModule", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkPMX24TXY_js.PaymentModule; }
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk2S2KS5ZI_js = require('../chunk-2S2KS5ZI.js');
|
|
4
|
+
require('../chunk-G525R6AV.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "WalletModule", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunk2S2KS5ZI_js.WalletModule; }
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|