@staffbase/plugins-client-sdk 1.2.0 → 1.2.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.
@@ -2,20 +2,20 @@
2
2
  * Bundle of @staffbase/plugins-client-sdk
3
3
  * @file Staffbase plugins client SDK for JavaScript
4
4
  * @see https://github.com/Staffbase/plugins-client-sdk#readme
5
- * @version 1.1.2
5
+ * @version 1.2.0
6
6
  *
7
7
  * @author Stefan Staude <stefan.staude@staffbase.com>
8
8
  * @author Daniel Große <daniel.grosse@staffbase.com>
9
9
  *
10
- * @copyright 2021
10
+ * @copyright 2022
11
11
  * @license Apache-2.0
12
12
  */
13
13
 
14
14
  (function (global, factory) {
15
15
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
16
16
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
17
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['plugins-client-sdk'] = {}));
18
- }(this, (function (exports) { 'use strict';
17
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["plugins-client-sdk"] = {}));
18
+ })(this, (function (exports) { 'use strict';
19
19
 
20
20
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
21
21
 
@@ -128,6 +128,7 @@
128
128
  function Logger(name, defaultLevel, factory) {
129
129
  var self = this;
130
130
  var currentLevel;
131
+ defaultLevel = defaultLevel == null ? "WARN" : defaultLevel;
131
132
  var storageKey = "loglevel";
132
133
 
133
134
  if (typeof name === "string") {
@@ -178,6 +179,20 @@
178
179
 
179
180
  return storedLevel;
180
181
  }
182
+
183
+ function clearPersistedLevel() {
184
+ if (typeof window === undefinedType || !storageKey) return; // Use localStorage if available
185
+
186
+ try {
187
+ window.localStorage.removeItem(storageKey);
188
+ return;
189
+ } catch (ignore) {} // Use session cookie as fallback
190
+
191
+
192
+ try {
193
+ window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
194
+ } catch (ignore) {}
195
+ }
181
196
  /*
182
197
  *
183
198
  * Public logger API - see https://github.com/pimterry/loglevel for details
@@ -224,11 +239,18 @@
224
239
  };
225
240
 
226
241
  self.setDefaultLevel = function (level) {
242
+ defaultLevel = level;
243
+
227
244
  if (!getPersistedLevel()) {
228
245
  self.setLevel(level, false);
229
246
  }
230
247
  };
231
248
 
249
+ self.resetLevel = function () {
250
+ self.setLevel(defaultLevel, false);
251
+ clearPersistedLevel();
252
+ };
253
+
232
254
  self.disableAll = function (persist) {
233
255
  self.setLevel(self.levels.SILENT, persist);
234
256
  }; // Initialize with the right level
@@ -237,7 +259,7 @@
237
259
  var initialLevel = getPersistedLevel();
238
260
 
239
261
  if (initialLevel == null) {
240
- initialLevel = defaultLevel == null ? "WARN" : defaultLevel;
262
+ initialLevel = defaultLevel;
241
263
  }
242
264
 
243
265
  self.setLevel(initialLevel, false);
@@ -311,7 +333,7 @@
311
333
  }
312
334
 
313
335
  function _iterableToArrayLimit(arr, i) {
314
- var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
336
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
315
337
 
316
338
  if (_i == null) return;
317
339
  var _arr = [];
@@ -1535,113 +1557,117 @@
1535
1557
  });
1536
1558
  };
1537
1559
 
1538
- var compareVersions$1 = {exports: {}};
1560
+ function compareVersions(v1, v2) {
1561
+ // validate input and split into segments
1562
+ const n1 = validateAndParse(v1);
1563
+ const n2 = validateAndParse(v2); // pop off the patch
1539
1564
 
1540
- /* global define */
1565
+ const p1 = n1.pop();
1566
+ const p2 = n2.pop(); // validate numbers
1541
1567
 
1542
- (function (module, exports) {
1543
- (function (root, factory) {
1544
- /* istanbul ignore next */
1545
- {
1546
- module.exports = factory();
1547
- }
1548
- })(commonjsGlobal, function () {
1549
- var semver = /^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;
1568
+ const r = compareSegments(n1, n2);
1569
+ if (r !== 0) return r; // validate pre-release
1550
1570
 
1551
- function indexOrEnd(str, q) {
1552
- return str.indexOf(q) === -1 ? str.length : str.indexOf(q);
1553
- }
1571
+ if (p1 && p2) {
1572
+ return compareSegments(p1.split('.'), p2.split('.'));
1573
+ } else if (p1 || p2) {
1574
+ return p1 ? -1 : 1;
1575
+ }
1554
1576
 
1555
- function split(v) {
1556
- var c = v.replace(/^v/, '').replace(/\+.*$/, '');
1557
- var patchIndex = indexOrEnd(c, '-');
1558
- var arr = c.substring(0, patchIndex).split('.');
1559
- arr.push(c.substring(patchIndex + 1));
1560
- return arr;
1561
- }
1577
+ return 0;
1578
+ }
1579
+ const validate = v => typeof v === 'string' && /^[v\d]/.test(v) && semver.test(v);
1580
+ const compare = (v1, v2, operator) => {
1581
+ // validate input operator
1582
+ assertValidOperator(operator); // since result of compareVersions can only be -1 or 0 or 1
1583
+ // a simple map can be used to replace switch
1562
1584
 
1563
- function tryParse(v) {
1564
- return isNaN(Number(v)) ? v : Number(v);
1565
- }
1585
+ const res = compareVersions(v1, v2);
1586
+ return operatorResMap[operator].includes(res);
1587
+ };
1588
+ const satisfies = (v, r) => {
1589
+ // if no range operator then "="
1590
+ const m = r.match(/^([<>=~^]+)/);
1591
+ const op = m ? m[1] : '='; // if gt/lt/eq then operator compare
1566
1592
 
1567
- function validate(version) {
1568
- if (typeof version !== 'string') {
1569
- throw new TypeError('Invalid argument expected string');
1570
- }
1593
+ if (op !== '^' && op !== '~') return compare(v, r, op); // else range of either "~" or "^" is assumed
1571
1594
 
1572
- if (!semver.test(version)) {
1573
- throw new Error('Invalid argument not valid semver (\'' + version + '\' received)');
1574
- }
1575
- }
1595
+ const [v1, v2, v3] = validateAndParse(v);
1596
+ const [r1, r2, r3] = validateAndParse(r);
1597
+ if (compareStrings(v1, r1) !== 0) return false;
1576
1598
 
1577
- function compareVersions(v1, v2) {
1578
- [v1, v2].forEach(validate);
1579
- var s1 = split(v1);
1580
- var s2 = split(v2);
1599
+ if (op === '^') {
1600
+ return compareSegments([v2, v3], [r2, r3]) >= 0;
1601
+ }
1581
1602
 
1582
- for (var i = 0; i < Math.max(s1.length - 1, s2.length - 1); i++) {
1583
- var n1 = parseInt(s1[i] || 0, 10);
1584
- var n2 = parseInt(s2[i] || 0, 10);
1585
- if (n1 > n2) return 1;
1586
- if (n2 > n1) return -1;
1587
- }
1603
+ if (compareStrings(v2, r2) !== 0) return false;
1604
+ return compareStrings(v3, r3) >= 0;
1605
+ }; // export CJS style for parity
1588
1606
 
1589
- var sp1 = s1[s1.length - 1];
1590
- var sp2 = s2[s2.length - 1];
1607
+ compareVersions.validate = validate;
1608
+ compareVersions.compare = compare;
1609
+ compareVersions.sastisfies = satisfies;
1610
+ const semver = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;
1591
1611
 
1592
- if (sp1 && sp2) {
1593
- var p1 = sp1.split('.').map(tryParse);
1594
- var p2 = sp2.split('.').map(tryParse);
1612
+ const validateAndParse = v => {
1613
+ if (typeof v !== 'string') {
1614
+ throw new TypeError('Invalid argument expected string');
1615
+ }
1595
1616
 
1596
- for (i = 0; i < Math.max(p1.length, p2.length); i++) {
1597
- if (p1[i] === undefined || typeof p2[i] === 'string' && typeof p1[i] === 'number') return -1;
1598
- if (p2[i] === undefined || typeof p1[i] === 'string' && typeof p2[i] === 'number') return 1;
1599
- if (p1[i] > p2[i]) return 1;
1600
- if (p2[i] > p1[i]) return -1;
1601
- }
1602
- } else if (sp1 || sp2) {
1603
- return sp1 ? -1 : 1;
1604
- }
1617
+ const match = v.match(semver);
1605
1618
 
1606
- return 0;
1607
- }
1608
- var allowedOperators = ['>', '>=', '=', '<', '<='];
1609
- var operatorResMap = {
1610
- '>': [1],
1611
- '>=': [0, 1],
1612
- '=': [0],
1613
- '<=': [-1, 0],
1614
- '<': [-1]
1615
- };
1619
+ if (!match) {
1620
+ throw new Error(`Invalid argument not valid semver ('${v}' received)`);
1621
+ }
1616
1622
 
1617
- function validateOperator(op) {
1618
- if (typeof op !== 'string') {
1619
- throw new TypeError('Invalid operator type, expected string but got ' + typeof op);
1620
- }
1623
+ match.shift();
1624
+ return match;
1625
+ };
1621
1626
 
1622
- if (allowedOperators.indexOf(op) === -1) {
1623
- throw new TypeError('Invalid operator, expected one of ' + allowedOperators.join('|'));
1624
- }
1625
- }
1627
+ const isWildcard = s => s === '*' || s === 'x' || s === 'X';
1626
1628
 
1627
- compareVersions.validate = function (version) {
1628
- return typeof version === 'string' && semver.test(version);
1629
- };
1629
+ const tryParse = v => {
1630
+ const n = parseInt(v, 10);
1631
+ return isNaN(n) ? v : n;
1632
+ };
1630
1633
 
1631
- compareVersions.compare = function (v1, v2, operator) {
1632
- // Validate operator
1633
- validateOperator(operator); // since result of compareVersions can only be -1 or 0 or 1
1634
- // a simple map can be used to replace switch
1634
+ const forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];
1635
1635
 
1636
- var res = compareVersions(v1, v2);
1637
- return operatorResMap[operator].indexOf(res) > -1;
1638
- };
1636
+ const compareStrings = (a, b) => {
1637
+ if (isWildcard(a) || isWildcard(b)) return 0;
1638
+ const [ap, bp] = forceType(tryParse(a), tryParse(b));
1639
+ if (ap > bp) return 1;
1640
+ if (ap < bp) return -1;
1641
+ return 0;
1642
+ };
1639
1643
 
1640
- return compareVersions;
1641
- });
1642
- })(compareVersions$1);
1644
+ const compareSegments = (a, b) => {
1645
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
1646
+ const r = compareStrings(a[i] || 0, b[i] || 0);
1647
+ if (r !== 0) return r;
1648
+ }
1649
+
1650
+ return 0;
1651
+ };
1643
1652
 
1644
- var compareVersions = compareVersions$1.exports;
1653
+ const operatorResMap = {
1654
+ '>': [1],
1655
+ '>=': [0, 1],
1656
+ '=': [0],
1657
+ '<=': [-1, 0],
1658
+ '<': [-1]
1659
+ };
1660
+ const allowedOperators = Object.keys(operatorResMap);
1661
+
1662
+ const assertValidOperator = op => {
1663
+ if (typeof op !== 'string') {
1664
+ throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);
1665
+ }
1666
+
1667
+ if (allowedOperators.indexOf(op) === -1) {
1668
+ throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);
1669
+ }
1670
+ };
1645
1671
 
1646
1672
  /**
1647
1673
  * Check if device is using ios.
@@ -1893,5 +1919,5 @@
1893
1919
 
1894
1920
  Object.defineProperty(exports, '__esModule', { value: true });
1895
1921
 
1896
- })));
1922
+ }));
1897
1923
  //# sourceMappingURL=plugins-client-sdk.umd.js.map