@expressms/smartapp-sdk 1.9.0-alpha.2 → 1.10.0-alpha.1
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/build/umd/index.js +104 -92
- package/package.json +2 -2
package/build/umd/index.js
CHANGED
|
@@ -1343,30 +1343,88 @@
|
|
|
1343
1343
|
}
|
|
1344
1344
|
}
|
|
1345
1345
|
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1346
|
+
const DATA_MASK = '***';
|
|
1347
|
+
class Logger {
|
|
1348
|
+
logsEnabled;
|
|
1349
|
+
hideRecvLogPayload;
|
|
1350
|
+
constructor() {
|
|
1351
|
+
this.logsEnabled = false;
|
|
1352
|
+
this.hideRecvLogPayload = new Map();
|
|
1353
|
+
}
|
|
1354
|
+
/** @ignore */
|
|
1355
|
+
alert(...args) {
|
|
1356
|
+
const text = args.map((arg) => (typeof arg === 'string' ? arg : JSON.stringify(arg))).join(' ');
|
|
1357
|
+
alert(text);
|
|
1358
|
+
}
|
|
1359
|
+
/**
|
|
1360
|
+
* Enabling logs.
|
|
1361
|
+
*
|
|
1362
|
+
* ```js
|
|
1363
|
+
* bridge
|
|
1364
|
+
* .enableLogs()
|
|
1365
|
+
* ```
|
|
1366
|
+
*/
|
|
1367
|
+
enableLogs() {
|
|
1368
|
+
this.logsEnabled = true;
|
|
1369
|
+
}
|
|
1370
|
+
/**
|
|
1371
|
+
* Disabling logs.
|
|
1372
|
+
*
|
|
1373
|
+
* ```js
|
|
1374
|
+
* bridge
|
|
1375
|
+
* .disableLogs()
|
|
1376
|
+
* ```
|
|
1377
|
+
*/
|
|
1378
|
+
disableLogs() {
|
|
1379
|
+
this.logsEnabled = false;
|
|
1380
|
+
}
|
|
1381
|
+
/**
|
|
1382
|
+
* Log outgouing event
|
|
1383
|
+
* @param event Bridge event
|
|
1384
|
+
*/
|
|
1385
|
+
logSendEvent(event) {
|
|
1386
|
+
this.hideRecvLogPayload.set(event.ref, !!event.hide_recv_event_data);
|
|
1387
|
+
if (!this.logsEnabled)
|
|
1388
|
+
return;
|
|
1389
|
+
const logEvent = event.hide_send_event_data
|
|
1390
|
+
? {
|
|
1391
|
+
...event,
|
|
1392
|
+
payload: DATA_MASK,
|
|
1393
|
+
}
|
|
1394
|
+
: event;
|
|
1395
|
+
console.log('Bridge ~ Outgoing event', JSON.stringify(logEvent, null, ' '));
|
|
1396
|
+
}
|
|
1397
|
+
logRecvEvent(event) {
|
|
1398
|
+
const hideRecvLogPayload = !!this.hideRecvLogPayload.get(event.ref);
|
|
1399
|
+
this.hideRecvLogPayload.delete(event.ref);
|
|
1400
|
+
if (!this.logsEnabled)
|
|
1401
|
+
return;
|
|
1402
|
+
const logEvent = hideRecvLogPayload
|
|
1403
|
+
? {
|
|
1404
|
+
...event,
|
|
1405
|
+
data: DATA_MASK,
|
|
1406
|
+
}
|
|
1407
|
+
: event;
|
|
1408
|
+
console.log('Bridge ~ Incoming event', JSON.stringify(logEvent, null, 2));
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1351
1411
|
|
|
1352
|
-
class AndroidBridge {
|
|
1412
|
+
class AndroidBridge extends Logger {
|
|
1353
1413
|
eventEmitter;
|
|
1354
1414
|
hasCommunicationObject;
|
|
1355
|
-
logsEnabled;
|
|
1356
1415
|
isRenameParamsEnabledForBotx;
|
|
1357
1416
|
constructor() {
|
|
1417
|
+
super();
|
|
1358
1418
|
this.hasCommunicationObject = typeof window.express !== 'undefined' && !!window.express.handleSmartAppEvent;
|
|
1359
1419
|
this.eventEmitter = new ExtendedEventEmitter();
|
|
1360
|
-
this.logsEnabled = false;
|
|
1361
1420
|
this.isRenameParamsEnabledForBotx = true;
|
|
1362
1421
|
if (!this.hasCommunicationObject) {
|
|
1363
|
-
|
|
1422
|
+
this.alert('No method "express.handleSmartAppEvent", cannot send message to Android');
|
|
1364
1423
|
return;
|
|
1365
1424
|
}
|
|
1366
1425
|
// Expect json data as string
|
|
1367
1426
|
window.handleAndroidEvent = ({ ref, data, files, }) => {
|
|
1368
|
-
|
|
1369
|
-
console.log('Bridge ~ Incoming event', JSON.stringify({ ref, data, files }, null, 2));
|
|
1427
|
+
this.logRecvEvent({ ref, data, files });
|
|
1370
1428
|
const { type, ...payload } = data;
|
|
1371
1429
|
const emitterType = ref || EVENT_TYPE.RECEIVE;
|
|
1372
1430
|
// const isRenameParamsEnabled = data.handler === HANDLER.BOTX ? this.isRenameParamsEnabledForBotx : true // TODO uncomment when client is ready
|
|
@@ -1396,7 +1454,7 @@
|
|
|
1396
1454
|
onReceive(callback) {
|
|
1397
1455
|
this.eventEmitter.on(EVENT_TYPE.RECEIVE, callback);
|
|
1398
1456
|
}
|
|
1399
|
-
sendEvent({ handler, method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required = false, sync_request = false, sync_request_timeout = SYNC_RESPONSE_TIMEOUT, }) {
|
|
1457
|
+
sendEvent({ handler, method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required = false, sync_request = false, sync_request_timeout = SYNC_RESPONSE_TIMEOUT, hide_send_event_data = false, hide_recv_event_data = false, }) {
|
|
1400
1458
|
if (!this.hasCommunicationObject)
|
|
1401
1459
|
return Promise.reject();
|
|
1402
1460
|
const isRenameParamsEnabled = handler === HANDLER.BOTX ? this.isRenameParamsEnabledForBotx : true;
|
|
@@ -1410,13 +1468,14 @@
|
|
|
1410
1468
|
guaranteed_delivery_required,
|
|
1411
1469
|
sync_request,
|
|
1412
1470
|
sync_request_timeout,
|
|
1471
|
+
hide_send_event_data,
|
|
1472
|
+
hide_recv_event_data,
|
|
1413
1473
|
};
|
|
1414
1474
|
const eventFiles = isRenameParamsEnabled ?
|
|
1415
1475
|
files?.map((file) => camelCaseToSnakeCase(file)) : files;
|
|
1416
|
-
const event =
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
window.express.handleSmartAppEvent(event);
|
|
1476
|
+
const event = files ? { ...eventParams, files: eventFiles } : eventParams;
|
|
1477
|
+
this.logSendEvent(event);
|
|
1478
|
+
window.express.handleSmartAppEvent(JSON.stringify(event));
|
|
1420
1479
|
return this.eventEmitter.onceWithTimeout(ref, timeout);
|
|
1421
1480
|
}
|
|
1422
1481
|
/**
|
|
@@ -1443,9 +1502,13 @@
|
|
|
1443
1502
|
* @param files
|
|
1444
1503
|
* @param timeout - Timeout in ms.
|
|
1445
1504
|
* @param guaranteed_delivery_required - boolean.
|
|
1505
|
+
* @param sync_request - boolean, default false
|
|
1506
|
+
* @param sync_request_timeout - number
|
|
1507
|
+
* @param hide_send_event_data - boolean, default false
|
|
1508
|
+
* @param hide_recv_event_data - boolean, default false
|
|
1446
1509
|
* @returns Promise.
|
|
1447
1510
|
*/
|
|
1448
|
-
sendBotEvent({ method, params, files, timeout, guaranteed_delivery_required, sync_request, sync_request_timeout, }) {
|
|
1511
|
+
sendBotEvent({ method, params, files, timeout, guaranteed_delivery_required, sync_request, sync_request_timeout, hide_send_event_data, hide_recv_event_data, }) {
|
|
1449
1512
|
return this.sendEvent({
|
|
1450
1513
|
handler: HANDLER.BOTX,
|
|
1451
1514
|
method,
|
|
@@ -1455,6 +1518,8 @@
|
|
|
1455
1518
|
guaranteed_delivery_required,
|
|
1456
1519
|
sync_request,
|
|
1457
1520
|
sync_request_timeout,
|
|
1521
|
+
hide_send_event_data,
|
|
1522
|
+
hide_recv_event_data,
|
|
1458
1523
|
});
|
|
1459
1524
|
}
|
|
1460
1525
|
/**
|
|
@@ -1484,28 +1549,6 @@
|
|
|
1484
1549
|
sendClientEvent({ method, params, timeout }) {
|
|
1485
1550
|
return this.sendEvent({ handler: HANDLER.EXPRESS, method, params, timeout });
|
|
1486
1551
|
}
|
|
1487
|
-
/**
|
|
1488
|
-
* Enabling logs.
|
|
1489
|
-
*
|
|
1490
|
-
* ```js
|
|
1491
|
-
* bridge
|
|
1492
|
-
* .enableLogs()
|
|
1493
|
-
* ```
|
|
1494
|
-
*/
|
|
1495
|
-
enableLogs() {
|
|
1496
|
-
this.logsEnabled = true;
|
|
1497
|
-
}
|
|
1498
|
-
/**
|
|
1499
|
-
* Disabling logs.
|
|
1500
|
-
*
|
|
1501
|
-
* ```js
|
|
1502
|
-
* bridge
|
|
1503
|
-
* .disableLogs()
|
|
1504
|
-
* ```
|
|
1505
|
-
*/
|
|
1506
|
-
disableLogs() {
|
|
1507
|
-
this.logsEnabled = false;
|
|
1508
|
-
}
|
|
1509
1552
|
/**
|
|
1510
1553
|
* Enabling renaming event params from camelCase to snake_case and vice versa
|
|
1511
1554
|
* ```js
|
|
@@ -1536,28 +1579,26 @@
|
|
|
1536
1579
|
}
|
|
1537
1580
|
}
|
|
1538
1581
|
|
|
1539
|
-
class IosBridge {
|
|
1582
|
+
class IosBridge extends Logger {
|
|
1540
1583
|
eventEmitter;
|
|
1541
1584
|
hasCommunicationObject;
|
|
1542
|
-
logsEnabled;
|
|
1543
1585
|
isRenameParamsEnabledForBotx;
|
|
1544
1586
|
constructor() {
|
|
1587
|
+
super();
|
|
1545
1588
|
this.hasCommunicationObject =
|
|
1546
1589
|
window.webkit &&
|
|
1547
1590
|
window.webkit.messageHandlers &&
|
|
1548
1591
|
window.webkit.messageHandlers.express &&
|
|
1549
1592
|
!!window.webkit.messageHandlers.express.postMessage;
|
|
1550
1593
|
this.eventEmitter = new ExtendedEventEmitter();
|
|
1551
|
-
this.logsEnabled = false;
|
|
1552
1594
|
this.isRenameParamsEnabledForBotx = true;
|
|
1553
1595
|
if (!this.hasCommunicationObject) {
|
|
1554
|
-
|
|
1596
|
+
this.alert('No method "express.postMessage", cannot send message to iOS');
|
|
1555
1597
|
return;
|
|
1556
1598
|
}
|
|
1557
1599
|
// Expect json data as string
|
|
1558
1600
|
window.handleIosEvent = ({ ref, data, files, }) => {
|
|
1559
|
-
|
|
1560
|
-
console.log('Bridge ~ Incoming event', JSON.stringify({ ref, data, files }, null, 2));
|
|
1601
|
+
this.logRecvEvent({ ref, data, files });
|
|
1561
1602
|
const { type, ...payload } = data;
|
|
1562
1603
|
const emitterType = ref || EVENT_TYPE.RECEIVE;
|
|
1563
1604
|
// const isRenameParamsEnabled = data.handler === HANDLER.BOTX ? this.isRenameParamsEnabledForBotx : true // TODO uncomment when client is ready
|
|
@@ -1586,7 +1627,7 @@
|
|
|
1586
1627
|
onReceive(callback) {
|
|
1587
1628
|
this.eventEmitter.on(EVENT_TYPE.RECEIVE, callback);
|
|
1588
1629
|
}
|
|
1589
|
-
sendEvent({ handler, method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required = false, sync_request = false, sync_request_timeout = SYNC_RESPONSE_TIMEOUT, }) {
|
|
1630
|
+
sendEvent({ handler, method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required = false, sync_request = false, sync_request_timeout = SYNC_RESPONSE_TIMEOUT, hide_send_event_data = false, hide_recv_event_data = false, }) {
|
|
1590
1631
|
if (!this.hasCommunicationObject)
|
|
1591
1632
|
return Promise.reject();
|
|
1592
1633
|
const ref = v4(); // UUID to detect express response.
|
|
@@ -1600,12 +1641,13 @@
|
|
|
1600
1641
|
guaranteed_delivery_required,
|
|
1601
1642
|
sync_request,
|
|
1602
1643
|
sync_request_timeout,
|
|
1644
|
+
hide_send_event_data,
|
|
1645
|
+
hide_recv_event_data,
|
|
1603
1646
|
};
|
|
1604
1647
|
const eventFiles = isRenameParamsEnabled ?
|
|
1605
1648
|
files?.map((file) => camelCaseToSnakeCase(file)) : files;
|
|
1606
1649
|
const event = files ? { ...eventProps, files: eventFiles } : eventProps;
|
|
1607
|
-
|
|
1608
|
-
console.log('Bridge ~ Outgoing event', JSON.stringify(event, null, ' '));
|
|
1650
|
+
this.logSendEvent(event);
|
|
1609
1651
|
window.webkit.messageHandlers.express.postMessage(event);
|
|
1610
1652
|
return this.eventEmitter.onceWithTimeout(ref, timeout);
|
|
1611
1653
|
}
|
|
@@ -1629,7 +1671,7 @@
|
|
|
1629
1671
|
* })
|
|
1630
1672
|
* ```
|
|
1631
1673
|
*/
|
|
1632
|
-
sendBotEvent({ method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required, sync_request, sync_request_timeout, }) {
|
|
1674
|
+
sendBotEvent({ method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required, sync_request, sync_request_timeout, hide_send_event_data, hide_recv_event_data, }) {
|
|
1633
1675
|
return this.sendEvent({
|
|
1634
1676
|
handler: HANDLER.BOTX,
|
|
1635
1677
|
method,
|
|
@@ -1639,6 +1681,8 @@
|
|
|
1639
1681
|
guaranteed_delivery_required,
|
|
1640
1682
|
sync_request,
|
|
1641
1683
|
sync_request_timeout,
|
|
1684
|
+
hide_send_event_data,
|
|
1685
|
+
hide_recv_event_data,
|
|
1642
1686
|
});
|
|
1643
1687
|
}
|
|
1644
1688
|
/**
|
|
@@ -1669,28 +1713,6 @@
|
|
|
1669
1713
|
timeout,
|
|
1670
1714
|
});
|
|
1671
1715
|
}
|
|
1672
|
-
/**
|
|
1673
|
-
* Enabling logs.
|
|
1674
|
-
*
|
|
1675
|
-
* ```js
|
|
1676
|
-
* bridge
|
|
1677
|
-
* .enableLogs()
|
|
1678
|
-
* ```
|
|
1679
|
-
*/
|
|
1680
|
-
enableLogs() {
|
|
1681
|
-
this.logsEnabled = true;
|
|
1682
|
-
}
|
|
1683
|
-
/**
|
|
1684
|
-
* Disabling logs.
|
|
1685
|
-
*
|
|
1686
|
-
* ```js
|
|
1687
|
-
* bridge
|
|
1688
|
-
* .disableLogs()
|
|
1689
|
-
* ```
|
|
1690
|
-
*/
|
|
1691
|
-
disableLogs() {
|
|
1692
|
-
this.logsEnabled = false;
|
|
1693
|
-
}
|
|
1694
1716
|
/**
|
|
1695
1717
|
* Enabling renaming event params from camelCase to snake_case and vice versa
|
|
1696
1718
|
* ```js
|
|
@@ -1729,14 +1751,13 @@
|
|
|
1729
1751
|
}
|
|
1730
1752
|
}
|
|
1731
1753
|
|
|
1732
|
-
class WebBridge {
|
|
1754
|
+
class WebBridge extends Logger {
|
|
1733
1755
|
eventEmitter;
|
|
1734
|
-
logsEnabled;
|
|
1735
1756
|
isRenameParamsEnabledForBotx;
|
|
1736
1757
|
constructor() {
|
|
1758
|
+
super();
|
|
1737
1759
|
this.eventEmitter = new ExtendedEventEmitter();
|
|
1738
1760
|
this.addGlobalListener();
|
|
1739
|
-
this.logsEnabled = false;
|
|
1740
1761
|
this.isRenameParamsEnabledForBotx = true;
|
|
1741
1762
|
}
|
|
1742
1763
|
addGlobalListener() {
|
|
@@ -1747,8 +1768,7 @@
|
|
|
1747
1768
|
return;
|
|
1748
1769
|
const { ref, data: { type, ...payload }, files, } = event.data;
|
|
1749
1770
|
const isRenameParamsEnabled = this.isRenameParamsEnabledForBotx; // TODO fix when handler is passed
|
|
1750
|
-
|
|
1751
|
-
console.log('Bridge ~ Incoming event', event.data);
|
|
1771
|
+
this.logRecvEvent(event.data);
|
|
1752
1772
|
const emitterType = ref || EVENT_TYPE.RECEIVE;
|
|
1753
1773
|
const eventFiles = isRenameParamsEnabled ?
|
|
1754
1774
|
files?.map((file) => snakeCaseToCamelCase(file)) : files;
|
|
@@ -1774,7 +1794,7 @@
|
|
|
1774
1794
|
onReceive(callback) {
|
|
1775
1795
|
this.eventEmitter.on(EVENT_TYPE.RECEIVE, callback);
|
|
1776
1796
|
}
|
|
1777
|
-
sendEvent({ handler, method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required = false, sync_request = false, sync_request_timeout = SYNC_RESPONSE_TIMEOUT, }) {
|
|
1797
|
+
sendEvent({ handler, method, params, files, timeout = RESPONSE_TIMEOUT, guaranteed_delivery_required = false, sync_request = false, sync_request_timeout = SYNC_RESPONSE_TIMEOUT, hide_send_event_data = false, hide_recv_event_data = false, }) {
|
|
1778
1798
|
const isRenameParamsEnabled = handler === HANDLER.BOTX ? this.isRenameParamsEnabledForBotx : false;
|
|
1779
1799
|
const ref = v4(); // UUID to detect express response.
|
|
1780
1800
|
const payload = {
|
|
@@ -1786,12 +1806,13 @@
|
|
|
1786
1806
|
guaranteed_delivery_required,
|
|
1787
1807
|
sync_request,
|
|
1788
1808
|
sync_request_timeout,
|
|
1809
|
+
hide_send_event_data,
|
|
1810
|
+
hide_recv_event_data,
|
|
1789
1811
|
};
|
|
1790
1812
|
const eventFiles = isRenameParamsEnabled ?
|
|
1791
1813
|
files?.map((file) => camelCaseToSnakeCase(file)) : files;
|
|
1792
1814
|
const event = files ? { ...payload, files: eventFiles } : payload;
|
|
1793
|
-
|
|
1794
|
-
console.log('Bridge ~ Outgoing event', event);
|
|
1815
|
+
this.logSendEvent(event);
|
|
1795
1816
|
window.parent.postMessage({
|
|
1796
1817
|
type: WEB_COMMAND_TYPE,
|
|
1797
1818
|
payload: event,
|
|
@@ -1817,7 +1838,7 @@
|
|
|
1817
1838
|
* })
|
|
1818
1839
|
* ```
|
|
1819
1840
|
*/
|
|
1820
|
-
sendBotEvent({ method, params, files, timeout, guaranteed_delivery_required, sync_request, sync_request_timeout, }) {
|
|
1841
|
+
sendBotEvent({ method, params, files, timeout, guaranteed_delivery_required, sync_request, sync_request_timeout, hide_send_event_data, hide_recv_event_data, }) {
|
|
1821
1842
|
return this.sendEvent({
|
|
1822
1843
|
handler: HANDLER.BOTX,
|
|
1823
1844
|
method,
|
|
@@ -1827,6 +1848,8 @@
|
|
|
1827
1848
|
guaranteed_delivery_required,
|
|
1828
1849
|
sync_request,
|
|
1829
1850
|
sync_request_timeout,
|
|
1851
|
+
hide_send_event_data,
|
|
1852
|
+
hide_recv_event_data,
|
|
1830
1853
|
});
|
|
1831
1854
|
}
|
|
1832
1855
|
/**
|
|
@@ -1875,17 +1898,6 @@
|
|
|
1875
1898
|
_log.apply(console, rest);
|
|
1876
1899
|
};
|
|
1877
1900
|
}
|
|
1878
|
-
/**
|
|
1879
|
-
* Disabling logs.
|
|
1880
|
-
*
|
|
1881
|
-
* ```js
|
|
1882
|
-
* bridge
|
|
1883
|
-
* .disableLogs()
|
|
1884
|
-
* ```
|
|
1885
|
-
*/
|
|
1886
|
-
disableLogs() {
|
|
1887
|
-
this.logsEnabled = false;
|
|
1888
|
-
}
|
|
1889
1901
|
/**
|
|
1890
1902
|
* Enabling renaming event params from camelCase to snake_case and vice versa
|
|
1891
1903
|
* ```js
|
|
@@ -1910,7 +1922,7 @@
|
|
|
1910
1922
|
}
|
|
1911
1923
|
}
|
|
1912
1924
|
|
|
1913
|
-
const LIB_VERSION = "1.
|
|
1925
|
+
const LIB_VERSION = "1.4.0-alpha.1";
|
|
1914
1926
|
|
|
1915
1927
|
const getBridge = () => {
|
|
1916
1928
|
if (process.env.NODE_ENV === 'test')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expressms/smartapp-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0-alpha.1",
|
|
4
4
|
"description": "Smartapp SDK",
|
|
5
5
|
"main": "build/main/index.js",
|
|
6
6
|
"typings": "build/main/index.d.ts",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"typescript": "^4.9.5"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@expressms/smartapp-bridge": "1.
|
|
41
|
+
"@expressms/smartapp-bridge": "1.4.0-alpha.1"
|
|
42
42
|
},
|
|
43
43
|
"files": [
|
|
44
44
|
"build/main",
|