@cimplify/sdk 0.3.6 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ads-BOUIrN73.d.mts +3190 -0
- package/dist/ads-BOUIrN73.d.ts +3190 -0
- package/dist/index.d.mts +3 -2948
- package/dist/index.d.ts +3 -2948
- package/dist/index.js +416 -45
- package/dist/index.mjs +409 -46
- package/dist/react.d.mts +105 -0
- package/dist/react.d.ts +105 -0
- package/dist/react.js +447 -0
- package/dist/react.mjs +436 -0
- package/package.json +25 -3
package/dist/index.js
CHANGED
|
@@ -521,6 +521,15 @@ var AUTHORIZATION_TYPE = {
|
|
|
521
521
|
BIRTHDAY: "birthday",
|
|
522
522
|
ADDRESS: "address"
|
|
523
523
|
};
|
|
524
|
+
var DEVICE_TYPE = {
|
|
525
|
+
MOBILE: "mobile",
|
|
526
|
+
DESKTOP: "desktop",
|
|
527
|
+
TABLET: "tablet"
|
|
528
|
+
};
|
|
529
|
+
var CONTACT_TYPE = {
|
|
530
|
+
PHONE: "phone",
|
|
531
|
+
EMAIL: "email"
|
|
532
|
+
};
|
|
524
533
|
var LINK_QUERY = {
|
|
525
534
|
DATA: "link.data",
|
|
526
535
|
ADDRESSES: "link.addresses",
|
|
@@ -1058,6 +1067,9 @@ var InventoryService = class {
|
|
|
1058
1067
|
};
|
|
1059
1068
|
|
|
1060
1069
|
// src/scheduling.ts
|
|
1070
|
+
function toVariables(input) {
|
|
1071
|
+
return Object.fromEntries(Object.entries(input));
|
|
1072
|
+
}
|
|
1061
1073
|
function toCimplifyError9(error) {
|
|
1062
1074
|
if (error instanceof CimplifyError) return error;
|
|
1063
1075
|
if (error instanceof Error) {
|
|
@@ -1090,17 +1102,14 @@ var SchedulingService = class {
|
|
|
1090
1102
|
}
|
|
1091
1103
|
async getAvailableSlots(input) {
|
|
1092
1104
|
return safe9(
|
|
1093
|
-
this.client.query(
|
|
1094
|
-
"scheduling.slots",
|
|
1095
|
-
input
|
|
1096
|
-
)
|
|
1105
|
+
this.client.query("scheduling.slots", toVariables(input))
|
|
1097
1106
|
);
|
|
1098
1107
|
}
|
|
1099
1108
|
async checkSlotAvailability(input) {
|
|
1100
1109
|
return safe9(
|
|
1101
1110
|
this.client.query(
|
|
1102
1111
|
"scheduling.check_availability",
|
|
1103
|
-
input
|
|
1112
|
+
toVariables(input)
|
|
1104
1113
|
)
|
|
1105
1114
|
);
|
|
1106
1115
|
}
|
|
@@ -1108,7 +1117,7 @@ var SchedulingService = class {
|
|
|
1108
1117
|
return safe9(
|
|
1109
1118
|
this.client.query(
|
|
1110
1119
|
"scheduling.availability",
|
|
1111
|
-
params
|
|
1120
|
+
toVariables(params)
|
|
1112
1121
|
)
|
|
1113
1122
|
);
|
|
1114
1123
|
}
|
|
@@ -1221,9 +1230,359 @@ var LiteService = class {
|
|
|
1221
1230
|
}
|
|
1222
1231
|
};
|
|
1223
1232
|
|
|
1233
|
+
// src/types/elements.ts
|
|
1234
|
+
var ELEMENT_TYPES = {
|
|
1235
|
+
AUTH: "auth",
|
|
1236
|
+
ADDRESS: "address",
|
|
1237
|
+
PAYMENT: "payment"
|
|
1238
|
+
};
|
|
1239
|
+
var MESSAGE_TYPES = {
|
|
1240
|
+
// Parent → Iframe
|
|
1241
|
+
INIT: "init",
|
|
1242
|
+
SET_TOKEN: "set_token",
|
|
1243
|
+
GET_DATA: "get_data",
|
|
1244
|
+
REFRESH_TOKEN: "refresh_token",
|
|
1245
|
+
LOGOUT: "logout",
|
|
1246
|
+
// Iframe → Parent
|
|
1247
|
+
READY: "ready",
|
|
1248
|
+
HEIGHT_CHANGE: "height_change",
|
|
1249
|
+
AUTHENTICATED: "authenticated",
|
|
1250
|
+
REQUIRES_OTP: "requires_otp",
|
|
1251
|
+
ERROR: "error",
|
|
1252
|
+
ADDRESS_CHANGED: "address_changed",
|
|
1253
|
+
ADDRESS_SELECTED: "address_selected",
|
|
1254
|
+
PAYMENT_METHOD_SELECTED: "payment_method_selected",
|
|
1255
|
+
TOKEN_REFRESHED: "token_refreshed",
|
|
1256
|
+
LOGOUT_COMPLETE: "logout_complete"
|
|
1257
|
+
};
|
|
1258
|
+
var EVENT_TYPES = {
|
|
1259
|
+
READY: "ready",
|
|
1260
|
+
AUTHENTICATED: "authenticated",
|
|
1261
|
+
REQUIRES_OTP: "requires_otp",
|
|
1262
|
+
ERROR: "error",
|
|
1263
|
+
CHANGE: "change",
|
|
1264
|
+
BLUR: "blur",
|
|
1265
|
+
FOCUS: "focus"
|
|
1266
|
+
};
|
|
1267
|
+
|
|
1268
|
+
// src/elements.ts
|
|
1269
|
+
function mapOrderType(orderType) {
|
|
1270
|
+
if (orderType === "dine_in") return "dine-in";
|
|
1271
|
+
return orderType ?? "delivery";
|
|
1272
|
+
}
|
|
1273
|
+
function toCheckoutFormData(data) {
|
|
1274
|
+
return {
|
|
1275
|
+
cart_id: data.cart_id,
|
|
1276
|
+
customer: {
|
|
1277
|
+
name: "",
|
|
1278
|
+
email: "",
|
|
1279
|
+
phone: "",
|
|
1280
|
+
save_details: false
|
|
1281
|
+
},
|
|
1282
|
+
order_type: mapOrderType(data.order_type),
|
|
1283
|
+
address_info: data.address ? {
|
|
1284
|
+
street_address: data.address.street_address,
|
|
1285
|
+
apartment: data.address.apartment,
|
|
1286
|
+
city: data.address.city,
|
|
1287
|
+
region: data.address.region,
|
|
1288
|
+
postal_code: data.address.postal_code,
|
|
1289
|
+
country: data.address.country,
|
|
1290
|
+
delivery_instructions: data.address.delivery_instructions,
|
|
1291
|
+
phone_for_delivery: data.address.phone_for_delivery
|
|
1292
|
+
} : {},
|
|
1293
|
+
payment_method: data.payment_method?.type ?? "mobile_money",
|
|
1294
|
+
mobile_money_details: data.payment_method?.type === "mobile_money" && data.payment_method.phone_number ? {
|
|
1295
|
+
phone_number: data.payment_method.phone_number,
|
|
1296
|
+
provider: data.payment_method.provider ?? "mtn"
|
|
1297
|
+
} : void 0,
|
|
1298
|
+
special_instructions: data.notes,
|
|
1299
|
+
link_address_id: data.address?.id,
|
|
1300
|
+
link_payment_method_id: data.payment_method?.id
|
|
1301
|
+
};
|
|
1302
|
+
}
|
|
1303
|
+
var DEFAULT_LINK_URL = "https://link.cimplify.io";
|
|
1304
|
+
function isAllowedOrigin(origin) {
|
|
1305
|
+
try {
|
|
1306
|
+
const url = new URL(origin);
|
|
1307
|
+
const hostname = url.hostname;
|
|
1308
|
+
if (hostname === "localhost" || hostname === "127.0.0.1") {
|
|
1309
|
+
return true;
|
|
1310
|
+
}
|
|
1311
|
+
if (url.protocol !== "https:") {
|
|
1312
|
+
return false;
|
|
1313
|
+
}
|
|
1314
|
+
return hostname === "cimplify.io" || hostname.endsWith(".cimplify.io");
|
|
1315
|
+
} catch {
|
|
1316
|
+
return false;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
var CimplifyElements = class {
|
|
1320
|
+
constructor(client, businessId, options = {}) {
|
|
1321
|
+
this.elements = /* @__PURE__ */ new Map();
|
|
1322
|
+
this.accessToken = null;
|
|
1323
|
+
this.accountId = null;
|
|
1324
|
+
this.customerId = null;
|
|
1325
|
+
this.addressData = null;
|
|
1326
|
+
this.paymentData = null;
|
|
1327
|
+
this.client = client;
|
|
1328
|
+
this.businessId = businessId;
|
|
1329
|
+
this.linkUrl = options.linkUrl || DEFAULT_LINK_URL;
|
|
1330
|
+
this.options = options;
|
|
1331
|
+
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
1332
|
+
if (typeof window !== "undefined") {
|
|
1333
|
+
window.addEventListener("message", this.boundHandleMessage);
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
create(type, options = {}) {
|
|
1337
|
+
const existing = this.elements.get(type);
|
|
1338
|
+
if (existing) return existing;
|
|
1339
|
+
const element = new CimplifyElement(type, this.businessId, this.linkUrl, options, this);
|
|
1340
|
+
this.elements.set(type, element);
|
|
1341
|
+
return element;
|
|
1342
|
+
}
|
|
1343
|
+
getElement(type) {
|
|
1344
|
+
return this.elements.get(type);
|
|
1345
|
+
}
|
|
1346
|
+
destroy() {
|
|
1347
|
+
this.elements.forEach((element) => element.destroy());
|
|
1348
|
+
this.elements.clear();
|
|
1349
|
+
if (typeof window !== "undefined") {
|
|
1350
|
+
window.removeEventListener("message", this.boundHandleMessage);
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
async submitCheckout(data) {
|
|
1354
|
+
const addressElement = this.elements.get(ELEMENT_TYPES.ADDRESS);
|
|
1355
|
+
if (addressElement) await addressElement.getData();
|
|
1356
|
+
const paymentElement = this.elements.get(ELEMENT_TYPES.PAYMENT);
|
|
1357
|
+
if (paymentElement) await paymentElement.getData();
|
|
1358
|
+
const internalData = {
|
|
1359
|
+
...data,
|
|
1360
|
+
customer: this.accountId ? { account_id: this.accountId, customer_id: this.customerId } : void 0,
|
|
1361
|
+
address: this.addressData,
|
|
1362
|
+
payment_method: this.paymentData
|
|
1363
|
+
};
|
|
1364
|
+
const checkoutFormData = toCheckoutFormData(internalData);
|
|
1365
|
+
const result = await this.client.checkout.process(checkoutFormData);
|
|
1366
|
+
if (result.ok) {
|
|
1367
|
+
return {
|
|
1368
|
+
success: true,
|
|
1369
|
+
order: {
|
|
1370
|
+
id: result.value.order_id,
|
|
1371
|
+
status: result.value.payment_status,
|
|
1372
|
+
total: ""
|
|
1373
|
+
// Total is not returned by checkout result
|
|
1374
|
+
}
|
|
1375
|
+
};
|
|
1376
|
+
}
|
|
1377
|
+
return {
|
|
1378
|
+
success: false,
|
|
1379
|
+
error: {
|
|
1380
|
+
code: result.error.code || "CHECKOUT_FAILED",
|
|
1381
|
+
message: result.error.message || "Checkout failed"
|
|
1382
|
+
}
|
|
1383
|
+
};
|
|
1384
|
+
}
|
|
1385
|
+
isAuthenticated() {
|
|
1386
|
+
return this.accessToken !== null;
|
|
1387
|
+
}
|
|
1388
|
+
getAccessToken() {
|
|
1389
|
+
return this.accessToken;
|
|
1390
|
+
}
|
|
1391
|
+
handleMessage(event) {
|
|
1392
|
+
if (!isAllowedOrigin(event.origin)) {
|
|
1393
|
+
return;
|
|
1394
|
+
}
|
|
1395
|
+
const message = event.data;
|
|
1396
|
+
if (!message?.type) return;
|
|
1397
|
+
switch (message.type) {
|
|
1398
|
+
case MESSAGE_TYPES.AUTHENTICATED:
|
|
1399
|
+
this.accessToken = message.token;
|
|
1400
|
+
this.accountId = message.accountId;
|
|
1401
|
+
this.customerId = message.customerId;
|
|
1402
|
+
this.elements.forEach((element, type) => {
|
|
1403
|
+
if (type !== ELEMENT_TYPES.AUTH) {
|
|
1404
|
+
element.sendMessage({ type: MESSAGE_TYPES.SET_TOKEN, token: message.token });
|
|
1405
|
+
}
|
|
1406
|
+
});
|
|
1407
|
+
break;
|
|
1408
|
+
case MESSAGE_TYPES.TOKEN_REFRESHED:
|
|
1409
|
+
this.accessToken = message.token;
|
|
1410
|
+
break;
|
|
1411
|
+
case MESSAGE_TYPES.ADDRESS_CHANGED:
|
|
1412
|
+
case MESSAGE_TYPES.ADDRESS_SELECTED:
|
|
1413
|
+
this.addressData = message.address;
|
|
1414
|
+
break;
|
|
1415
|
+
case MESSAGE_TYPES.PAYMENT_METHOD_SELECTED:
|
|
1416
|
+
this.paymentData = message.method;
|
|
1417
|
+
break;
|
|
1418
|
+
case MESSAGE_TYPES.LOGOUT_COMPLETE:
|
|
1419
|
+
this.accessToken = null;
|
|
1420
|
+
this.accountId = null;
|
|
1421
|
+
this.customerId = null;
|
|
1422
|
+
this.addressData = null;
|
|
1423
|
+
this.paymentData = null;
|
|
1424
|
+
break;
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
_setAddressData(data) {
|
|
1428
|
+
this.addressData = data;
|
|
1429
|
+
}
|
|
1430
|
+
_setPaymentData(data) {
|
|
1431
|
+
this.paymentData = data;
|
|
1432
|
+
}
|
|
1433
|
+
};
|
|
1434
|
+
var CimplifyElement = class {
|
|
1435
|
+
constructor(type, businessId, linkUrl, options, parent) {
|
|
1436
|
+
this.iframe = null;
|
|
1437
|
+
this.container = null;
|
|
1438
|
+
this.mounted = false;
|
|
1439
|
+
this.eventHandlers = /* @__PURE__ */ new Map();
|
|
1440
|
+
this.resolvers = /* @__PURE__ */ new Map();
|
|
1441
|
+
this.type = type;
|
|
1442
|
+
this.businessId = businessId;
|
|
1443
|
+
this.linkUrl = linkUrl;
|
|
1444
|
+
this.options = options;
|
|
1445
|
+
this.parent = parent;
|
|
1446
|
+
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
1447
|
+
if (typeof window !== "undefined") {
|
|
1448
|
+
window.addEventListener("message", this.boundHandleMessage);
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
mount(container) {
|
|
1452
|
+
if (this.mounted) {
|
|
1453
|
+
console.warn(`Element ${this.type} is already mounted`);
|
|
1454
|
+
return;
|
|
1455
|
+
}
|
|
1456
|
+
const target = typeof container === "string" ? document.querySelector(container) : container;
|
|
1457
|
+
if (!target) {
|
|
1458
|
+
console.error(`Container not found: ${container}`);
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1461
|
+
this.container = target;
|
|
1462
|
+
this.createIframe();
|
|
1463
|
+
this.mounted = true;
|
|
1464
|
+
}
|
|
1465
|
+
destroy() {
|
|
1466
|
+
if (this.iframe) {
|
|
1467
|
+
this.iframe.remove();
|
|
1468
|
+
this.iframe = null;
|
|
1469
|
+
}
|
|
1470
|
+
this.container = null;
|
|
1471
|
+
this.mounted = false;
|
|
1472
|
+
this.eventHandlers.clear();
|
|
1473
|
+
if (typeof window !== "undefined") {
|
|
1474
|
+
window.removeEventListener("message", this.boundHandleMessage);
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
on(event, handler) {
|
|
1478
|
+
if (!this.eventHandlers.has(event)) {
|
|
1479
|
+
this.eventHandlers.set(event, /* @__PURE__ */ new Set());
|
|
1480
|
+
}
|
|
1481
|
+
this.eventHandlers.get(event).add(handler);
|
|
1482
|
+
}
|
|
1483
|
+
off(event, handler) {
|
|
1484
|
+
this.eventHandlers.get(event)?.delete(handler);
|
|
1485
|
+
}
|
|
1486
|
+
async getData() {
|
|
1487
|
+
return new Promise((resolve) => {
|
|
1488
|
+
const id = Math.random().toString(36).slice(2);
|
|
1489
|
+
this.resolvers.set(id, resolve);
|
|
1490
|
+
this.sendMessage({ type: MESSAGE_TYPES.GET_DATA });
|
|
1491
|
+
setTimeout(() => {
|
|
1492
|
+
if (this.resolvers.has(id)) {
|
|
1493
|
+
this.resolvers.delete(id);
|
|
1494
|
+
resolve(null);
|
|
1495
|
+
}
|
|
1496
|
+
}, 5e3);
|
|
1497
|
+
});
|
|
1498
|
+
}
|
|
1499
|
+
sendMessage(message) {
|
|
1500
|
+
if (this.iframe?.contentWindow) {
|
|
1501
|
+
this.iframe.contentWindow.postMessage(message, this.linkUrl);
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
createIframe() {
|
|
1505
|
+
if (!this.container) return;
|
|
1506
|
+
const iframe = document.createElement("iframe");
|
|
1507
|
+
const url = new URL(`${this.linkUrl}/elements/${this.type}`);
|
|
1508
|
+
url.searchParams.set("businessId", this.businessId);
|
|
1509
|
+
if (this.options.prefillEmail) url.searchParams.set("email", this.options.prefillEmail);
|
|
1510
|
+
if (this.options.mode) url.searchParams.set("mode", this.options.mode);
|
|
1511
|
+
iframe.src = url.toString();
|
|
1512
|
+
iframe.style.border = "none";
|
|
1513
|
+
iframe.style.width = "100%";
|
|
1514
|
+
iframe.style.display = "block";
|
|
1515
|
+
iframe.style.overflow = "hidden";
|
|
1516
|
+
iframe.setAttribute("allowtransparency", "true");
|
|
1517
|
+
iframe.setAttribute("frameborder", "0");
|
|
1518
|
+
iframe.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms allow-popups");
|
|
1519
|
+
this.iframe = iframe;
|
|
1520
|
+
this.container.appendChild(iframe);
|
|
1521
|
+
iframe.onload = () => {
|
|
1522
|
+
this.sendMessage({
|
|
1523
|
+
type: MESSAGE_TYPES.INIT,
|
|
1524
|
+
businessId: this.businessId,
|
|
1525
|
+
prefillEmail: this.options.prefillEmail
|
|
1526
|
+
});
|
|
1527
|
+
const token = this.parent.getAccessToken();
|
|
1528
|
+
if (token && this.type !== ELEMENT_TYPES.AUTH) {
|
|
1529
|
+
this.sendMessage({ type: MESSAGE_TYPES.SET_TOKEN, token });
|
|
1530
|
+
}
|
|
1531
|
+
};
|
|
1532
|
+
}
|
|
1533
|
+
handleMessage(event) {
|
|
1534
|
+
if (!isAllowedOrigin(event.origin)) {
|
|
1535
|
+
return;
|
|
1536
|
+
}
|
|
1537
|
+
const message = event.data;
|
|
1538
|
+
if (!message?.type) return;
|
|
1539
|
+
switch (message.type) {
|
|
1540
|
+
case MESSAGE_TYPES.READY:
|
|
1541
|
+
this.emit(EVENT_TYPES.READY, { height: message.height });
|
|
1542
|
+
break;
|
|
1543
|
+
case MESSAGE_TYPES.HEIGHT_CHANGE:
|
|
1544
|
+
if (this.iframe) this.iframe.style.height = `${message.height}px`;
|
|
1545
|
+
break;
|
|
1546
|
+
case MESSAGE_TYPES.AUTHENTICATED:
|
|
1547
|
+
this.emit(EVENT_TYPES.AUTHENTICATED, {
|
|
1548
|
+
accountId: message.accountId,
|
|
1549
|
+
customerId: message.customerId,
|
|
1550
|
+
token: message.token
|
|
1551
|
+
});
|
|
1552
|
+
break;
|
|
1553
|
+
case MESSAGE_TYPES.REQUIRES_OTP:
|
|
1554
|
+
this.emit(EVENT_TYPES.REQUIRES_OTP, { contactMasked: message.contactMasked });
|
|
1555
|
+
break;
|
|
1556
|
+
case MESSAGE_TYPES.ERROR:
|
|
1557
|
+
this.emit(EVENT_TYPES.ERROR, { code: message.code, message: message.message });
|
|
1558
|
+
break;
|
|
1559
|
+
case MESSAGE_TYPES.ADDRESS_CHANGED:
|
|
1560
|
+
case MESSAGE_TYPES.ADDRESS_SELECTED:
|
|
1561
|
+
this.parent._setAddressData(message.address);
|
|
1562
|
+
this.emit(EVENT_TYPES.CHANGE, { address: message.address });
|
|
1563
|
+
this.resolveData(message.address);
|
|
1564
|
+
break;
|
|
1565
|
+
case MESSAGE_TYPES.PAYMENT_METHOD_SELECTED:
|
|
1566
|
+
this.parent._setPaymentData(message.method);
|
|
1567
|
+
this.emit(EVENT_TYPES.CHANGE, { paymentMethod: message.method });
|
|
1568
|
+
this.resolveData(message.method);
|
|
1569
|
+
break;
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
emit(event, data) {
|
|
1573
|
+
this.eventHandlers.get(event)?.forEach((handler) => handler(data));
|
|
1574
|
+
}
|
|
1575
|
+
resolveData(data) {
|
|
1576
|
+
this.resolvers.forEach((resolve) => resolve(data));
|
|
1577
|
+
this.resolvers.clear();
|
|
1578
|
+
}
|
|
1579
|
+
};
|
|
1580
|
+
function createElements(client, businessId, options) {
|
|
1581
|
+
return new CimplifyElements(client, businessId, options);
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1224
1584
|
// src/client.ts
|
|
1225
|
-
var
|
|
1226
|
-
var SESSION_STORAGE_KEY = "cimplify_session_token";
|
|
1585
|
+
var ACCESS_TOKEN_STORAGE_KEY = "cimplify_access_token";
|
|
1227
1586
|
var DEFAULT_TIMEOUT_MS = 3e4;
|
|
1228
1587
|
var DEFAULT_MAX_RETRIES = 3;
|
|
1229
1588
|
var DEFAULT_RETRY_DELAY_MS = 1e3;
|
|
@@ -1285,7 +1644,7 @@ function deriveUrls() {
|
|
|
1285
1644
|
}
|
|
1286
1645
|
var CimplifyClient = class {
|
|
1287
1646
|
constructor(config = {}) {
|
|
1288
|
-
this.
|
|
1647
|
+
this.accessToken = null;
|
|
1289
1648
|
this.inflightRequests = /* @__PURE__ */ new Map();
|
|
1290
1649
|
this.publicKey = config.publicKey || "";
|
|
1291
1650
|
const urls = deriveUrls();
|
|
@@ -1296,15 +1655,23 @@ var CimplifyClient = class {
|
|
|
1296
1655
|
this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
1297
1656
|
this.retryDelay = config.retryDelay ?? DEFAULT_RETRY_DELAY_MS;
|
|
1298
1657
|
this.hooks = config.hooks ?? {};
|
|
1299
|
-
this.
|
|
1658
|
+
this.accessToken = this.loadAccessToken();
|
|
1300
1659
|
}
|
|
1660
|
+
/** @deprecated Use getAccessToken() instead */
|
|
1301
1661
|
getSessionToken() {
|
|
1302
|
-
return this.
|
|
1662
|
+
return this.accessToken;
|
|
1303
1663
|
}
|
|
1664
|
+
/** @deprecated Use setAccessToken() instead */
|
|
1304
1665
|
setSessionToken(token) {
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1666
|
+
this.setAccessToken(token);
|
|
1667
|
+
}
|
|
1668
|
+
getAccessToken() {
|
|
1669
|
+
return this.accessToken;
|
|
1670
|
+
}
|
|
1671
|
+
setAccessToken(token) {
|
|
1672
|
+
const previous = this.accessToken;
|
|
1673
|
+
this.accessToken = token;
|
|
1674
|
+
this.saveAccessToken(token);
|
|
1308
1675
|
this.hooks.onSessionChange?.({
|
|
1309
1676
|
previousToken: previous,
|
|
1310
1677
|
newToken: token,
|
|
@@ -1312,27 +1679,27 @@ var CimplifyClient = class {
|
|
|
1312
1679
|
});
|
|
1313
1680
|
}
|
|
1314
1681
|
clearSession() {
|
|
1315
|
-
const previous = this.
|
|
1316
|
-
this.
|
|
1317
|
-
this.
|
|
1682
|
+
const previous = this.accessToken;
|
|
1683
|
+
this.accessToken = null;
|
|
1684
|
+
this.saveAccessToken(null);
|
|
1318
1685
|
this.hooks.onSessionChange?.({
|
|
1319
1686
|
previousToken: previous,
|
|
1320
1687
|
newToken: null,
|
|
1321
1688
|
source: "clear"
|
|
1322
1689
|
});
|
|
1323
1690
|
}
|
|
1324
|
-
|
|
1691
|
+
loadAccessToken() {
|
|
1325
1692
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
1326
|
-
return localStorage.getItem(
|
|
1693
|
+
return localStorage.getItem(ACCESS_TOKEN_STORAGE_KEY);
|
|
1327
1694
|
}
|
|
1328
1695
|
return null;
|
|
1329
1696
|
}
|
|
1330
|
-
|
|
1697
|
+
saveAccessToken(token) {
|
|
1331
1698
|
if (typeof window !== "undefined" && window.localStorage) {
|
|
1332
1699
|
if (token) {
|
|
1333
|
-
localStorage.setItem(
|
|
1700
|
+
localStorage.setItem(ACCESS_TOKEN_STORAGE_KEY, token);
|
|
1334
1701
|
} else {
|
|
1335
|
-
localStorage.removeItem(
|
|
1702
|
+
localStorage.removeItem(ACCESS_TOKEN_STORAGE_KEY);
|
|
1336
1703
|
}
|
|
1337
1704
|
}
|
|
1338
1705
|
}
|
|
@@ -1341,24 +1708,11 @@ var CimplifyClient = class {
|
|
|
1341
1708
|
"Content-Type": "application/json",
|
|
1342
1709
|
"X-API-Key": this.publicKey
|
|
1343
1710
|
};
|
|
1344
|
-
if (this.
|
|
1345
|
-
headers[
|
|
1711
|
+
if (this.accessToken) {
|
|
1712
|
+
headers["Authorization"] = `Bearer ${this.accessToken}`;
|
|
1346
1713
|
}
|
|
1347
1714
|
return headers;
|
|
1348
1715
|
}
|
|
1349
|
-
updateSessionFromResponse(response) {
|
|
1350
|
-
const newToken = response.headers.get(SESSION_TOKEN_HEADER);
|
|
1351
|
-
if (newToken && newToken !== this.sessionToken) {
|
|
1352
|
-
const previous = this.sessionToken;
|
|
1353
|
-
this.sessionToken = newToken;
|
|
1354
|
-
this.saveSessionToken(newToken);
|
|
1355
|
-
this.hooks.onSessionChange?.({
|
|
1356
|
-
previousToken: previous,
|
|
1357
|
-
newToken,
|
|
1358
|
-
source: "response"
|
|
1359
|
-
});
|
|
1360
|
-
}
|
|
1361
|
-
}
|
|
1362
1716
|
async resilientFetch(url, options) {
|
|
1363
1717
|
const method = options.method || "GET";
|
|
1364
1718
|
const path = url.replace(this.baseUrl, "").replace(this.linkApiUrl, "");
|
|
@@ -1470,7 +1824,6 @@ var CimplifyClient = class {
|
|
|
1470
1824
|
headers: this.getHeaders(),
|
|
1471
1825
|
body: JSON.stringify(body)
|
|
1472
1826
|
});
|
|
1473
|
-
this.updateSessionFromResponse(response);
|
|
1474
1827
|
return this.handleResponse(response);
|
|
1475
1828
|
});
|
|
1476
1829
|
}
|
|
@@ -1485,7 +1838,6 @@ var CimplifyClient = class {
|
|
|
1485
1838
|
headers: this.getHeaders(),
|
|
1486
1839
|
body: JSON.stringify(body)
|
|
1487
1840
|
});
|
|
1488
|
-
this.updateSessionFromResponse(response);
|
|
1489
1841
|
return this.handleResponse(response);
|
|
1490
1842
|
}
|
|
1491
1843
|
async get(path) {
|
|
@@ -1496,7 +1848,6 @@ var CimplifyClient = class {
|
|
|
1496
1848
|
credentials: this.credentials,
|
|
1497
1849
|
headers: this.getHeaders()
|
|
1498
1850
|
});
|
|
1499
|
-
this.updateSessionFromResponse(response);
|
|
1500
1851
|
return this.handleRestResponse(response);
|
|
1501
1852
|
});
|
|
1502
1853
|
}
|
|
@@ -1507,7 +1858,6 @@ var CimplifyClient = class {
|
|
|
1507
1858
|
headers: this.getHeaders(),
|
|
1508
1859
|
body: body ? JSON.stringify(body) : void 0
|
|
1509
1860
|
});
|
|
1510
|
-
this.updateSessionFromResponse(response);
|
|
1511
1861
|
return this.handleRestResponse(response);
|
|
1512
1862
|
}
|
|
1513
1863
|
async delete(path) {
|
|
@@ -1516,7 +1866,6 @@ var CimplifyClient = class {
|
|
|
1516
1866
|
credentials: this.credentials,
|
|
1517
1867
|
headers: this.getHeaders()
|
|
1518
1868
|
});
|
|
1519
|
-
this.updateSessionFromResponse(response);
|
|
1520
1869
|
return this.handleRestResponse(response);
|
|
1521
1870
|
}
|
|
1522
1871
|
async linkGet(path) {
|
|
@@ -1527,7 +1876,6 @@ var CimplifyClient = class {
|
|
|
1527
1876
|
credentials: this.credentials,
|
|
1528
1877
|
headers: this.getHeaders()
|
|
1529
1878
|
});
|
|
1530
|
-
this.updateSessionFromResponse(response);
|
|
1531
1879
|
return this.handleRestResponse(response);
|
|
1532
1880
|
});
|
|
1533
1881
|
}
|
|
@@ -1538,7 +1886,6 @@ var CimplifyClient = class {
|
|
|
1538
1886
|
headers: this.getHeaders(),
|
|
1539
1887
|
body: body ? JSON.stringify(body) : void 0
|
|
1540
1888
|
});
|
|
1541
|
-
this.updateSessionFromResponse(response);
|
|
1542
1889
|
return this.handleRestResponse(response);
|
|
1543
1890
|
}
|
|
1544
1891
|
async linkDelete(path) {
|
|
@@ -1547,7 +1894,6 @@ var CimplifyClient = class {
|
|
|
1547
1894
|
credentials: this.credentials,
|
|
1548
1895
|
headers: this.getHeaders()
|
|
1549
1896
|
});
|
|
1550
|
-
this.updateSessionFromResponse(response);
|
|
1551
1897
|
return this.handleRestResponse(response);
|
|
1552
1898
|
}
|
|
1553
1899
|
async handleRestResponse(response) {
|
|
@@ -1632,6 +1978,23 @@ var CimplifyClient = class {
|
|
|
1632
1978
|
}
|
|
1633
1979
|
return this._lite;
|
|
1634
1980
|
}
|
|
1981
|
+
/**
|
|
1982
|
+
* Create a CimplifyElements instance for embedding checkout components.
|
|
1983
|
+
* Like Stripe's stripe.elements().
|
|
1984
|
+
*
|
|
1985
|
+
* @param businessId - The business ID for checkout context
|
|
1986
|
+
* @param options - Optional configuration for elements
|
|
1987
|
+
*
|
|
1988
|
+
* @example
|
|
1989
|
+
* ```ts
|
|
1990
|
+
* const elements = client.elements('bus_xxx');
|
|
1991
|
+
* const authElement = elements.create('auth');
|
|
1992
|
+
* authElement.mount('#auth-container');
|
|
1993
|
+
* ```
|
|
1994
|
+
*/
|
|
1995
|
+
elements(businessId, options) {
|
|
1996
|
+
return createElements(this, businessId, options);
|
|
1997
|
+
}
|
|
1635
1998
|
};
|
|
1636
1999
|
function createCimplifyClient(config) {
|
|
1637
2000
|
return new CimplifyClient(config);
|
|
@@ -2195,21 +2558,28 @@ exports.BusinessService = BusinessService;
|
|
|
2195
2558
|
exports.CHECKOUT_MODE = CHECKOUT_MODE;
|
|
2196
2559
|
exports.CHECKOUT_MUTATION = CHECKOUT_MUTATION;
|
|
2197
2560
|
exports.CHECKOUT_STEP = CHECKOUT_STEP;
|
|
2561
|
+
exports.CONTACT_TYPE = CONTACT_TYPE;
|
|
2198
2562
|
exports.CURRENCY_SYMBOLS = CURRENCY_SYMBOLS;
|
|
2199
2563
|
exports.CartOperations = CartOperations;
|
|
2200
2564
|
exports.CatalogueQueries = CatalogueQueries;
|
|
2201
2565
|
exports.CheckoutOperations = CheckoutService;
|
|
2202
2566
|
exports.CheckoutService = CheckoutService;
|
|
2203
2567
|
exports.CimplifyClient = CimplifyClient;
|
|
2568
|
+
exports.CimplifyElement = CimplifyElement;
|
|
2569
|
+
exports.CimplifyElements = CimplifyElements;
|
|
2204
2570
|
exports.CimplifyError = CimplifyError;
|
|
2205
2571
|
exports.DEFAULT_COUNTRY = DEFAULT_COUNTRY;
|
|
2206
2572
|
exports.DEFAULT_CURRENCY = DEFAULT_CURRENCY;
|
|
2573
|
+
exports.DEVICE_TYPE = DEVICE_TYPE;
|
|
2574
|
+
exports.ELEMENT_TYPES = ELEMENT_TYPES;
|
|
2575
|
+
exports.EVENT_TYPES = EVENT_TYPES;
|
|
2207
2576
|
exports.ErrorCode = ErrorCode;
|
|
2208
2577
|
exports.InventoryService = InventoryService;
|
|
2209
2578
|
exports.LINK_MUTATION = LINK_MUTATION;
|
|
2210
2579
|
exports.LINK_QUERY = LINK_QUERY;
|
|
2211
2580
|
exports.LinkService = LinkService;
|
|
2212
2581
|
exports.LiteService = LiteService;
|
|
2582
|
+
exports.MESSAGE_TYPES = MESSAGE_TYPES;
|
|
2213
2583
|
exports.MOBILE_MONEY_PROVIDER = MOBILE_MONEY_PROVIDER;
|
|
2214
2584
|
exports.MOBILE_MONEY_PROVIDERS = MOBILE_MONEY_PROVIDERS;
|
|
2215
2585
|
exports.ORDER_MUTATION = ORDER_MUTATION;
|
|
@@ -2225,6 +2595,7 @@ exports.categorizePaymentError = categorizePaymentError;
|
|
|
2225
2595
|
exports.combine = combine;
|
|
2226
2596
|
exports.combineObject = combineObject;
|
|
2227
2597
|
exports.createCimplifyClient = createCimplifyClient;
|
|
2598
|
+
exports.createElements = createElements;
|
|
2228
2599
|
exports.detectMobileMoneyProvider = detectMobileMoneyProvider;
|
|
2229
2600
|
exports.err = err;
|
|
2230
2601
|
exports.extractPriceInfo = extractPriceInfo;
|