web-manager 3.2.56 → 3.2.57

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.
Files changed (2) hide show
  1. package/index.js +233 -226
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -549,8 +549,8 @@ Manager.prototype.init = function(configuration, callback) {
549
549
  config: {
550
550
  dsn: '',
551
551
  release: '',
552
- replaysSessionSampleRate: 0.1,
553
- replaysOnErrorSampleRate: 1.0,
552
+ replaysSessionSampleRate: 0.01,
553
+ replaysOnErrorSampleRate: 0.01,
554
554
  },
555
555
  },
556
556
  chatsy: {
@@ -655,10 +655,12 @@ Manager.prototype.init = function(configuration, callback) {
655
655
  }
656
656
  })
657
657
 
658
+ // Redirect if we have a redirect query
658
659
  if (redirect && self.isValidRedirectUrl(redirect)) {
659
660
  return window.location.href = redirect;
660
661
  }
661
662
 
663
+ // Detect if we are on a page that requires authentication
662
664
  if (pagePathname.match(/\/(authentication-required|authentication-success|authentication-token|forgot|oauth2|signin|signout|signup)/)) {
663
665
  import('./helpers/auth-pages.js')
664
666
  .then(function(mod) {
@@ -1305,40 +1307,43 @@ EXTERNAL LIBS
1305
1307
  */
1306
1308
  var load_firebase = function(self, options) {
1307
1309
  return new Promise(function(resolve, reject) {
1308
- // if (typeof window.firebase !== 'undefined') {
1309
- // return resolve();
1310
- // }
1310
+ // Set shortcuts
1311
1311
  var setting = options.libraries.firebase_app
1312
- if (setting.enabled === true) {
1313
- function _post() {
1314
- // self.log('Loaded Firebase.');
1315
- // console.log('_post.');
1316
- window.app = firebase.initializeApp(setting.config);
1317
1312
 
1318
- Promise.all([
1319
- load_firebase_auth(self, options),
1320
- load_firebase_firestore(self, options),
1321
- load_firebase_messaging(self, options),
1322
- load_firebase_appCheck(self, options),
1323
- ])
1324
- .then(resolve)
1325
- .catch(reject);
1326
- }
1327
- if (setting.load) {
1328
- setting.load(self)
1329
- .then(_post)
1330
- .catch(reject);
1331
- } else {
1332
- // import('firebase/app')
1333
- import('firebase/compat/app')
1334
- .then(function(mod) {
1335
- window.firebase = mod.default;
1336
- _post()
1337
- })
1338
- .catch(reject);
1339
- }
1313
+ // Skip if not enabled
1314
+ if (!setting.enabled) {
1315
+ return resolve();
1316
+ }
1317
+
1318
+ // Setup Firebase
1319
+ function _post() {
1320
+ // Initialize Firebase
1321
+ window.app = firebase.initializeApp(setting.config);
1322
+
1323
+ // Load Firebase libraries
1324
+ Promise.all([
1325
+ load_firebase_auth(self, options),
1326
+ load_firebase_firestore(self, options),
1327
+ load_firebase_messaging(self, options),
1328
+ load_firebase_appCheck(self, options),
1329
+ ])
1330
+ .then(resolve)
1331
+ .catch(reject);
1332
+ }
1333
+
1334
+ // Load Firebase
1335
+ if (setting.load) {
1336
+ setting.load(self)
1337
+ .then(_post)
1338
+ .catch(reject);
1340
1339
  } else {
1341
- resolve();
1340
+ // import('firebase/app')
1341
+ import('firebase/compat/app')
1342
+ .then(function(mod) {
1343
+ window.firebase = mod.default;
1344
+ _post()
1345
+ })
1346
+ .catch(reject);
1342
1347
  }
1343
1348
  });
1344
1349
  }
@@ -1346,266 +1351,268 @@ var load_firebase = function(self, options) {
1346
1351
 
1347
1352
  var load_firebase_auth = function(self, options) {
1348
1353
  return new Promise(function(resolve, reject) {
1349
- // if (typeof utilities.get(window, 'firebase.auth', undefined) !== 'undefined') {
1350
- // return resolve();
1351
- // }
1354
+ // Set shortcuts
1352
1355
  var setting = options.libraries.firebase_auth;
1353
- if (setting.enabled === true) {
1354
- if (setting.load) {
1355
- setting.load(self)
1356
- .then(resolve)
1357
- .catch(reject);
1358
- } else {
1359
- // import('firebase/auth')
1360
- import('firebase/compat/auth')
1361
- .then(resolve)
1362
- .catch(reject);
1363
- }
1364
- } else {
1365
- resolve();
1356
+
1357
+ // Skip if not enabled
1358
+ if (!setting.enabled) {
1359
+ return resolve();
1366
1360
  }
1367
1361
 
1362
+ // Load Firebase Auth
1363
+ if (setting.load) {
1364
+ setting.load(self)
1365
+ .then(resolve)
1366
+ .catch(reject);
1367
+ } else {
1368
+ // import('firebase/auth')
1369
+ import('firebase/compat/auth')
1370
+ .then(resolve)
1371
+ .catch(reject);
1372
+ }
1368
1373
  });
1369
1374
  }
1370
1375
 
1371
1376
 
1372
1377
  var load_firebase_firestore = function(self, options) {
1373
1378
  return new Promise(function(resolve, reject) {
1374
- // if (typeof utilities.get(window, 'firebase.firestore', undefined) !== 'undefined') {
1375
- // return resolve();
1376
- // }
1379
+ // Set shortcuts
1377
1380
  var setting = options.libraries.firebase_firestore;
1378
- if (setting.enabled === true) {
1379
- if (setting.load) {
1380
- setting.load(self)
1381
- .then(resolve)
1382
- .catch(reject);
1383
- } else {
1384
- // import('firebase/firestore')
1385
- import('firebase/compat/firestore')
1386
- .then(resolve)
1387
- .catch(reject);
1388
- }
1381
+
1382
+ // Skip if not enabled
1383
+ if (!setting.enabled) {
1384
+ return resolve();
1385
+ }
1386
+
1387
+ // Load Firebase Firestore
1388
+ if (setting.load) {
1389
+ setting.load(self)
1390
+ .then(resolve)
1391
+ .catch(reject);
1389
1392
  } else {
1390
- resolve();
1393
+ // import('firebase/firestore')
1394
+ import('firebase/compat/firestore')
1395
+ .then(resolve)
1396
+ .catch(reject);
1391
1397
  }
1392
1398
  });
1393
1399
  }
1394
1400
 
1395
1401
  var load_firebase_messaging = function(self, options) {
1396
1402
  return new Promise(function(resolve, reject) {
1397
- // if (typeof utilities.get(window, 'firebase.messaging', undefined) !== 'undefined') {
1398
- // return resolve();
1399
- // }
1403
+ // Set shortcuts
1400
1404
  var setting = options.libraries.firebase_messaging;
1401
- if (setting.enabled === true) {
1402
- if (setting.load) {
1403
- setting.load(self)
1404
- .then(resolve)
1405
- .catch(reject);
1406
- } else {
1407
- // import('firebase/messaging')
1408
- import('firebase/compat/messaging')
1409
- .then(resolve)
1410
- .catch(reject);
1411
- }
1405
+
1406
+ // Skip if not enabled
1407
+ if (!setting.enabled) {
1408
+ return resolve();
1409
+ }
1410
+
1411
+ // Load Firebase Messaging
1412
+ if (setting.load) {
1413
+ setting.load(self)
1414
+ .then(resolve)
1415
+ .catch(reject);
1412
1416
  } else {
1413
- resolve();
1417
+ // import('firebase/messaging')
1418
+ import('firebase/compat/messaging')
1419
+ .then(resolve)
1420
+ .catch(reject);
1414
1421
  }
1415
1422
  });
1416
1423
  }
1417
1424
 
1418
1425
  var load_firebase_appCheck = function(self, options) {
1419
1426
  return new Promise(function(resolve, reject) {
1427
+ // Set shortcuts
1420
1428
  var setting = options.libraries.firebase_appCheck;
1421
- if (setting.enabled === true) {
1422
- if (setting.load) {
1423
- setting.load(self)
1424
- .then(resolve)
1425
- .catch(reject);
1426
- } else {
1427
- // import('firebase/app-check')
1428
- import('firebase/compat/app-check')
1429
- .then(function (mod) {
1430
- var appCheck = firebase.appCheck;
1431
- var siteKey = setting.config.siteKey;
1432
-
1433
- if (!siteKey) {
1434
- return resolve();
1435
- }
1436
1429
 
1437
- appCheck().activate(
1438
- new appCheck.ReCaptchaEnterpriseProvider(siteKey),
1439
- true,
1440
- );
1430
+ // Skip if not enabled
1431
+ if (!setting.enabled) {
1432
+ return resolve();
1433
+ }
1441
1434
 
1442
- resolve();
1443
- })
1444
- .catch(reject);
1445
- }
1435
+ // Load Firebase AppCheck
1436
+ if (setting.load) {
1437
+ setting.load(self)
1438
+ .then(resolve)
1439
+ .catch(reject);
1446
1440
  } else {
1447
- resolve();
1441
+ // import('firebase/app-check')
1442
+ import('firebase/compat/app-check')
1443
+ .then(function (mod) {
1444
+ var appCheck = firebase.appCheck;
1445
+ var siteKey = setting.config.siteKey;
1446
+
1447
+ if (!siteKey) {
1448
+ return resolve();
1449
+ }
1450
+
1451
+ appCheck().activate(
1452
+ new appCheck.ReCaptchaEnterpriseProvider(siteKey),
1453
+ true,
1454
+ );
1455
+
1456
+ resolve();
1457
+ })
1458
+ .catch(reject);
1448
1459
  }
1449
1460
  });
1450
1461
  }
1451
1462
 
1452
1463
  var load_lazysizes = function(self, options) {
1453
1464
  return new Promise(function(resolve, reject) {
1454
- // if (typeof window.lazysizes !== 'undefined') {
1455
- // return resolve();
1456
- // }
1457
- if (options.libraries.lazysizes.enabled === true) {
1458
- import('lazysizes')
1459
- .then(function (mod) {
1460
- window.lazysizes = mod.default;
1461
-
1462
- // configs come from official lazysizes demo
1463
- var expand = Math.max(Math.min(document.documentElement.clientWidth, document.documentElement.clientHeight, 1222) - 1, 359);
1464
- window.lazySizesConfig = {
1465
- loadMode: 1,
1466
- expand: expand,
1467
- expFactor: expand < 380 ? 3 : 2,
1468
- };
1469
- // self.log('Loaded Lazysizes.');
1470
- })
1471
- .catch(reject);
1472
- } else {
1473
- resolve();
1465
+ // Skip if not enabled
1466
+ if (!options.libraries.lazysizes.enabled) {
1467
+ return resolve();
1474
1468
  }
1469
+
1470
+ // Load Lazysizes
1471
+ import('lazysizes')
1472
+ .then(function (mod) {
1473
+ window.lazysizes = mod.default;
1474
+
1475
+ // configs come from official lazysizes demo
1476
+ var expand = Math.max(Math.min(document.documentElement.clientWidth, document.documentElement.clientHeight, 1222) - 1, 359);
1477
+ window.lazySizesConfig = {
1478
+ loadMode: 1,
1479
+ expand: expand,
1480
+ expFactor: expand < 380 ? 3 : 2,
1481
+ };
1482
+ // self.log('Loaded Lazysizes.');
1483
+ })
1484
+ .catch(reject);
1475
1485
  });
1476
1486
  }
1477
1487
 
1478
1488
  var load_cookieconsent = function(self, options) {
1479
1489
  return new Promise(function(resolve, reject) {
1480
- // if (typeof window.cookieconsent !== 'undefined') {
1481
- // return resolve();
1482
- // }
1483
- if (options.libraries.cookieconsent.enabled === true) {
1484
- import('cookieconsent')
1485
- .then(function(mod) {
1486
- window.cookieconsent.initialise(options.libraries.cookieconsent.config);
1487
- // self.log('Loaded Cookieconsent.');
1488
- resolve();
1489
- })
1490
- .catch(reject);
1491
- } else {
1492
- resolve();
1490
+ // Skip if not enabled
1491
+ if (!options.libraries.cookieconsent.enabled) {
1492
+ return resolve();
1493
1493
  }
1494
1494
 
1495
+ // Load Cookieconsent
1496
+ import('cookieconsent')
1497
+ .then(function(mod) {
1498
+ window.cookieconsent.initialise(options.libraries.cookieconsent.config);
1499
+ // self.log('Loaded Cookieconsent.');
1500
+ resolve();
1501
+ })
1502
+ .catch(reject);
1495
1503
  });
1496
1504
  }
1497
1505
 
1498
1506
  var load_chatsy = function(self, options) {
1499
1507
  return new Promise(function(resolve, reject) {
1508
+ // Skip if not enabled or already requested
1509
+ if (!options.libraries.chatsy.enabled || self.properties.page._chatsyRequested) {
1510
+ return resolve();
1511
+ }
1500
1512
 
1501
- if (
1502
- options.libraries.chatsy.enabled === true
1503
- && !self.properties.page._chatsyRequested
1504
- ) {
1505
- var chatsyPath = 'libraries.chatsy.config';
1506
-
1507
- // Immediately hide the fake button
1508
- select('#prechat-btn').hide();
1509
-
1510
- // Load the script
1511
- loadScript({
1512
- src: 'https://app.chatsy.ai/resources/script.js',
1513
- // src: 'http://localhost:4001/resources/script.js',
1514
- attributes: [
1515
- {name: 'data-account-id', value: utilities.get(options, chatsyPath + '.accountId', '')},
1516
- {name: 'data-chat-id', value: utilities.get(options, chatsyPath + '.chatId', '')},
1517
- {name: 'data-settings', value: JSON.stringify(utilities.get(options, chatsyPath + '.settings', ''))},
1518
- ],
1519
- crossorigin: true,
1520
- })
1521
- .then(function () {
1522
- // Listen for Chatsy status
1523
- chatsy.on('status', function(event, status) {
1524
- if (status === 'loaded') {
1525
- chatsy.open();
1526
- }
1527
- })
1528
-
1529
- resolve();
1513
+ var chatsyPath = 'libraries.chatsy.config';
1514
+
1515
+ // Immediately hide the fake button
1516
+ select('#prechat-btn').hide();
1517
+
1518
+ // Load the script
1519
+ loadScript({
1520
+ src: 'https://app.chatsy.ai/resources/script.js',
1521
+ // src: 'http://localhost:4001/resources/script.js',
1522
+ attributes: [
1523
+ {name: 'data-account-id', value: utilities.get(options, chatsyPath + '.accountId', '')},
1524
+ {name: 'data-chat-id', value: utilities.get(options, chatsyPath + '.chatId', '')},
1525
+ {name: 'data-settings', value: JSON.stringify(utilities.get(options, chatsyPath + '.settings', ''))},
1526
+ ],
1527
+ crossorigin: true,
1528
+ })
1529
+ .then(function () {
1530
+ // Listen for Chatsy status
1531
+ chatsy.on('status', function(event, status) {
1532
+ if (status === 'loaded') {
1533
+ chatsy.open();
1534
+ }
1530
1535
  })
1531
1536
 
1532
- self.properties.page._chatsyRequested = true;
1533
- } else {
1534
1537
  resolve();
1535
- }
1538
+ })
1539
+
1540
+ self.properties.page._chatsyRequested = true;
1536
1541
  });
1537
1542
  }
1538
1543
 
1539
1544
  var load_sentry = function(self, options) {
1540
1545
  return new Promise(function(resolve, reject) {
1541
- if (options.libraries.sentry.enabled === true) {
1542
- import('@sentry/browser')
1543
- .then(function(mod) {
1544
- // Set global
1545
- window.Sentry = mod;
1546
+ // Skip if not enabled
1547
+ if (!options.libraries.sentry.enabled) {
1548
+ return resolve();
1549
+ }
1546
1550
 
1547
- // Set config
1548
- var config = options.libraries.sentry.config;
1549
- config.release = config.release + '@' + self.properties.global.version;
1550
- config.environment = self.properties.meta.environment;
1551
- config.integrations = config.integrations || [];
1551
+ // Import Sentry
1552
+ import('@sentry/browser')
1553
+ .then(function(mod) {
1554
+ // Set global
1555
+ window.Sentry = mod;
1552
1556
 
1553
- // if (self.isDevelopment()) {
1554
- // config.dsn = 'https://901db748bbb9469f860dc36fb07a4374@o1120154.ingest.sentry.io/6155285';
1555
- // }
1557
+ // Set config
1558
+ var config = options.libraries.sentry.config;
1559
+ config.release = config.release + '@' + self.properties.global.version;
1560
+ config.environment = self.properties.meta.environment;
1561
+ config.integrations = config.integrations || [];
1556
1562
 
1557
- // Add integration: browser tracing
1558
- config.integrations.push(Sentry.browserTracingIntegration());
1563
+ // if (self.isDevelopment()) {
1564
+ // config.dsn = 'https://901db748bbb9469f860dc36fb07a4374@o1120154.ingest.sentry.io/6155285';
1565
+ // }
1559
1566
 
1560
- // Add integration: replay
1561
- if (config.replaysSessionSampleRate > 0 || config.replaysOnErrorSampleRate > 0) {
1562
- config.integrations.push(Sentry.replayIntegration({
1563
- maskAllText: false,
1564
- blockAllMedia: false,
1565
- }));
1566
- }
1567
+ // Add integration: browser tracing
1568
+ config.integrations.push(Sentry.browserTracingIntegration());
1567
1569
 
1568
- // Setup before send
1569
- config.beforeSend = function (event, hint) {
1570
- var startTime = self.properties.page.startTime;
1571
- var hoursSinceStart = (new Date() - startTime) / (1000 * 3600);
1572
-
1573
- // Setup tags
1574
- event.tags = event.tags || {};
1575
- event.tags['process.type'] = event.tags['process.type'] || 'browser';
1576
- // event.tags['usage.total.opens'] = parseInt(usage.total.opens);
1577
- // event.tags['usage.total.hours'] = usage.total.hours;
1578
- event.tags['usage.session.hours'] = hoursSinceStart.toFixed(2);
1579
- // event.tags['store'] = self.properties().isStore();
1580
-
1581
- // Setup user
1582
- event.user = event.user || {};
1583
- event.user.email = storage.get('user.auth.email', '')
1584
- event.user.uid = storage.get('user.auth.uid', '');
1585
- // event.user.ip = storage.get('user.ip', '');
1586
-
1587
- // Log to console
1588
- console.error('[SENTRY] Caught error', event, hint);
1589
-
1590
- // Skip processing the event
1591
- if (self.isDevelopment()) {
1592
- return null;
1593
- }
1570
+ // Add integration: replay
1571
+ if (config.replaysSessionSampleRate > 0 || config.replaysOnErrorSampleRate > 0) {
1572
+ config.integrations.push(Sentry.replayIntegration({
1573
+ maskAllText: false,
1574
+ blockAllMedia: false,
1575
+ }));
1576
+ }
1594
1577
 
1595
- // Process the event
1596
- return event;
1578
+ // Setup before send
1579
+ config.beforeSend = function (event, hint) {
1580
+ var startTime = self.properties.page.startTime;
1581
+ var hoursSinceStart = (new Date() - startTime) / (1000 * 3600);
1582
+
1583
+ // Setup tags
1584
+ event.tags = event.tags || {};
1585
+ event.tags['process.type'] = event.tags['process.type'] || 'browser';
1586
+ // event.tags['usage.total.opens'] = parseInt(usage.total.opens);
1587
+ // event.tags['usage.total.hours'] = usage.total.hours;
1588
+ event.tags['usage.session.hours'] = hoursSinceStart.toFixed(2);
1589
+ // event.tags['store'] = self.properties().isStore();
1590
+
1591
+ // Setup user
1592
+ event.user = event.user || {};
1593
+ event.user.email = storage.get('user.auth.email', '')
1594
+ event.user.uid = storage.get('user.auth.uid', '');
1595
+ // event.user.ip = storage.get('user.ip', '');
1596
+
1597
+ // Log to console
1598
+ console.error('[SENTRY] Caught error', event, hint);
1599
+
1600
+ // Skip processing the event
1601
+ if (self.isDevelopment()) {
1602
+ return null;
1597
1603
  }
1598
1604
 
1599
- // Initialize
1600
- Sentry.init(config);
1605
+ // Process the event
1606
+ return event;
1607
+ }
1608
+
1609
+ // Initialize
1610
+ Sentry.init(config);
1601
1611
 
1602
- // Resolve
1603
- resolve();
1604
- })
1605
- .catch(reject);
1606
- } else {
1612
+ // Resolve
1607
1613
  resolve();
1608
- }
1614
+ })
1615
+ .catch(reject);
1609
1616
  });
1610
1617
  }
1611
1618
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-manager",
3
- "version": "3.2.56",
3
+ "version": "3.2.57",
4
4
  "description": "Easily access important variables such as the query string, current domain, and current page in a single object.",
5
5
  "main": "index.js",
6
6
  "scripts": {