@silvermine/toolbox 0.1.0 → 0.3.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.
Files changed (117) hide show
  1. package/.github/workflows/ci.yml +49 -0
  2. package/.markdownlint.json +3 -0
  3. package/.nvmrc +1 -1
  4. package/CHANGELOG.md +20 -0
  5. package/README.md +7 -3
  6. package/commitlint.config.js +1 -1
  7. package/dist/commonjs/index.js +15 -1
  8. package/dist/commonjs/index.js.map +1 -1
  9. package/dist/commonjs/types/KeyValueStringObject.js +8 -8
  10. package/dist/commonjs/types/KeyValueStringObject.js.map +1 -1
  11. package/dist/commonjs/types/StrictUnion.js +4 -0
  12. package/dist/commonjs/types/StrictUnion.js.map +1 -0
  13. package/dist/commonjs/types/StringArrayOfStringsMap.js +6 -6
  14. package/dist/commonjs/types/StringArrayOfStringsMap.js.map +1 -1
  15. package/dist/commonjs/types/StringMap.js +6 -6
  16. package/dist/commonjs/types/StringMap.js.map +1 -1
  17. package/dist/commonjs/types/StringUnknownMap.js +4 -3
  18. package/dist/commonjs/types/StringUnknownMap.js.map +1 -1
  19. package/dist/commonjs/utils/chunk.js +3 -2
  20. package/dist/commonjs/utils/chunk.js.map +1 -1
  21. package/dist/commonjs/utils/delay.js +3 -2
  22. package/dist/commonjs/utils/delay.js.map +1 -1
  23. package/dist/commonjs/utils/escape-html.js +23 -0
  24. package/dist/commonjs/utils/escape-html.js.map +1 -0
  25. package/dist/commonjs/utils/flatten.js +3 -6
  26. package/dist/commonjs/utils/flatten.js.map +1 -1
  27. package/dist/commonjs/utils/get-tag-string.js +1 -0
  28. package/dist/commonjs/utils/get-tag-string.js.map +1 -1
  29. package/dist/commonjs/utils/get.js +99 -0
  30. package/dist/commonjs/utils/get.js.map +1 -0
  31. package/dist/commonjs/utils/has-defined.js +2 -1
  32. package/dist/commonjs/utils/has-defined.js.map +1 -1
  33. package/dist/commonjs/utils/is-arguments.js +2 -1
  34. package/dist/commonjs/utils/is-arguments.js.map +1 -1
  35. package/dist/commonjs/utils/is-array-of-strings.js +4 -4
  36. package/dist/commonjs/utils/is-array-of-strings.js.map +1 -1
  37. package/dist/commonjs/utils/is-array.js +1 -0
  38. package/dist/commonjs/utils/is-array.js.map +1 -1
  39. package/dist/commonjs/utils/is-empty.js +5 -4
  40. package/dist/commonjs/utils/is-empty.js.map +1 -1
  41. package/dist/commonjs/utils/is-enum-value.js +3 -2
  42. package/dist/commonjs/utils/is-enum-value.js.map +1 -1
  43. package/dist/commonjs/utils/is-map-with-values-of-type.js +3 -3
  44. package/dist/commonjs/utils/is-map-with-values-of-type.js.map +1 -1
  45. package/dist/commonjs/utils/is-not-null-or-undefined.js +13 -0
  46. package/dist/commonjs/utils/is-not-null-or-undefined.js.map +1 -0
  47. package/dist/commonjs/utils/is-null.js +8 -0
  48. package/dist/commonjs/utils/is-null.js.map +1 -0
  49. package/dist/commonjs/utils/is-number.js +3 -2
  50. package/dist/commonjs/utils/is-number.js.map +1 -1
  51. package/dist/commonjs/utils/is-object.js +2 -1
  52. package/dist/commonjs/utils/is-object.js.map +1 -1
  53. package/dist/commonjs/utils/is-promise-like.js +3 -2
  54. package/dist/commonjs/utils/is-promise-like.js.map +1 -1
  55. package/dist/commonjs/utils/is-promise.js +3 -2
  56. package/dist/commonjs/utils/is-promise.js.map +1 -1
  57. package/dist/commonjs/utils/is-string.js +3 -2
  58. package/dist/commonjs/utils/is-string.js.map +1 -1
  59. package/dist/commonjs/utils/is-undefined.js +1 -0
  60. package/dist/commonjs/utils/is-undefined.js.map +1 -1
  61. package/dist/commonjs/utils/make-template.js +73 -0
  62. package/dist/commonjs/utils/make-template.js.map +1 -0
  63. package/dist/commonjs/utils/pick.js +15 -0
  64. package/dist/commonjs/utils/pick.js.map +1 -0
  65. package/dist/commonjs/utils/pluck.js +2 -1
  66. package/dist/commonjs/utils/pluck.js.map +1 -1
  67. package/dist/commonjs/utils/uniq.js +49 -0
  68. package/dist/commonjs/utils/uniq.js.map +1 -0
  69. package/dist/esm/index.js +14 -0
  70. package/dist/esm/index.js.map +1 -1
  71. package/dist/esm/types/StrictUnion.js +2 -0
  72. package/dist/esm/types/StrictUnion.js.map +1 -0
  73. package/dist/esm/utils/chunk.js.map +1 -1
  74. package/dist/esm/utils/escape-html.js +19 -0
  75. package/dist/esm/utils/escape-html.js.map +1 -0
  76. package/dist/esm/utils/flatten.js.map +1 -1
  77. package/dist/esm/utils/get.js +96 -0
  78. package/dist/esm/utils/get.js.map +1 -0
  79. package/dist/esm/utils/is-not-null-or-undefined.js +9 -0
  80. package/dist/esm/utils/is-not-null-or-undefined.js.map +1 -0
  81. package/dist/esm/utils/is-null.js +4 -0
  82. package/dist/esm/utils/is-null.js.map +1 -0
  83. package/dist/esm/utils/is-undefined.js.map +1 -1
  84. package/dist/esm/utils/make-template.js +69 -0
  85. package/dist/esm/utils/make-template.js.map +1 -0
  86. package/dist/esm/utils/pick.js +11 -0
  87. package/dist/esm/utils/pick.js.map +1 -0
  88. package/dist/esm/utils/pluck.js.map +1 -1
  89. package/dist/esm/utils/uniq.js +46 -0
  90. package/dist/esm/utils/uniq.js.map +1 -0
  91. package/dist/types/index.d.ts +8 -0
  92. package/dist/types/types/StrictUnion.d.ts +15 -0
  93. package/dist/types/utils/chunk.d.ts +1 -1
  94. package/dist/types/utils/escape-html.d.ts +1 -0
  95. package/dist/types/utils/flatten.d.ts +1 -1
  96. package/dist/types/utils/get.d.ts +8 -0
  97. package/dist/types/utils/is-not-null-or-undefined.d.ts +4 -0
  98. package/dist/types/utils/is-null.d.ts +1 -0
  99. package/dist/types/utils/is-undefined.d.ts +1 -1
  100. package/dist/types/utils/make-template.d.ts +41 -0
  101. package/dist/types/utils/pick.d.ts +2 -0
  102. package/dist/types/utils/pluck.d.ts +1 -1
  103. package/dist/types/utils/uniq.d.ts +8 -0
  104. package/package.json +18 -21
  105. package/src/index.ts +8 -0
  106. package/src/types/StrictUnion.ts +15 -0
  107. package/src/utils/chunk.ts +1 -1
  108. package/src/utils/escape-html.ts +24 -0
  109. package/src/utils/flatten.ts +2 -2
  110. package/src/utils/get.ts +156 -0
  111. package/src/utils/is-not-null-or-undefined.ts +10 -0
  112. package/src/utils/is-null.ts +3 -0
  113. package/src/utils/is-undefined.ts +1 -1
  114. package/src/utils/make-template.ts +90 -0
  115. package/src/utils/pick.ts +24 -0
  116. package/src/utils/pluck.ts +1 -1
  117. package/src/utils/uniq.ts +59 -0
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var StringUnknownMap_1 = require("../types/StringUnknownMap");
3
+ exports.isMapWithValuesOfType = void 0;
4
+ const StringUnknownMap_1 = require("../types/StringUnknownMap");
4
5
  /**
5
6
  * Type guard for `Record<string, TypeThatYouSpecify>`.
6
7
  *
@@ -11,8 +12,7 @@ function isMapWithValuesOfType(guard, o) {
11
12
  if (!StringUnknownMap_1.isStringUnknownMap(o)) {
12
13
  return false;
13
14
  }
14
- for (var _i = 0, _a = Object.keys(o); _i < _a.length; _i++) {
15
- var k = _a[_i];
15
+ for (let k of Object.keys(o)) {
16
16
  if (!guard(o[k])) {
17
17
  return false;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"is-map-with-values-of-type.js","sourceRoot":"","sources":["../../../src/utils/is-map-with-values-of-type.ts"],"names":[],"mappings":";;AAAA,8DAA+D;AAE/D;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,KAAyB,EAAE,CAAM;IACvE,IAAI,CAAC,qCAAkB,CAAC,CAAC,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACf;IAED,KAAc,UAAc,EAAd,KAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAd,cAAc,EAAd,IAAc,EAAE;QAAzB,IAAI,CAAC,SAAA;QACP,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SACf;KACH;IAED,OAAO,IAAI,CAAC;AACf,CAAC;AAZD,sDAYC"}
1
+ {"version":3,"file":"is-map-with-values-of-type.js","sourceRoot":"","sources":["../../../src/utils/is-map-with-values-of-type.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAE/D;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,KAAyB,EAAE,CAAM;IACvE,IAAI,CAAC,qCAAkB,CAAC,CAAC,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACf;IAED,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC3B,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SACf;KACH;IAED,OAAO,IAAI,CAAC;AACf,CAAC;AAZD,sDAYC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNotNullOrUndefined = void 0;
4
+ const is_null_1 = require("./is-null");
5
+ const is_undefined_1 = require("./is-undefined");
6
+ /**
7
+ * Checks if `o` is not either null or undefined
8
+ */
9
+ function isNotNullOrUndefined(o) {
10
+ return !(is_null_1.isNull(o) || is_undefined_1.isUndefined(o));
11
+ }
12
+ exports.isNotNullOrUndefined = isNotNullOrUndefined;
13
+ //# sourceMappingURL=is-not-null-or-undefined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-not-null-or-undefined.js","sourceRoot":"","sources":["../../../src/utils/is-not-null-or-undefined.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,iDAA6C;AAG7C;;GAEG;AACH,SAAgB,oBAAoB,CAAI,CAAuB;IAC5D,OAAO,CAAC,CAAC,gBAAM,CAAC,CAAC,CAAC,IAAI,0BAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,oDAEC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNull = void 0;
4
+ function isNull(val) {
5
+ return val === null;
6
+ }
7
+ exports.isNull = isNull;
8
+ //# sourceMappingURL=is-null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-null.js","sourceRoot":"","sources":["../../../src/utils/is-null.ts"],"names":[],"mappings":";;;AAAA,SAAgB,MAAM,CAAC,GAAY;IAChC,OAAO,GAAG,KAAK,IAAI,CAAC;AACvB,CAAC;AAFD,wBAEC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var get_tag_string_1 = require("./get-tag-string");
4
- var is_object_1 = require("./is-object");
3
+ exports.isNumber = void 0;
4
+ const get_tag_string_1 = require("./get-tag-string");
5
+ const is_object_1 = require("./is-object");
5
6
  /**
6
7
  * Type guard for `number`s.
7
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"is-number.js","sourceRoot":"","sources":["../../../src/utils/is-number.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAChD,yCAAuC;AAEvC;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,CAAM;IAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC;AAC1F,CAAC;AAFD,4BAEC"}
1
+ {"version":3,"file":"is-number.js","sourceRoot":"","sources":["../../../src/utils/is-number.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAChD,2CAAuC;AAEvC;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,CAAM;IAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC;AAC1F,CAAC;AAFD,4BAEC"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isObject = void 0;
3
4
  /**
4
5
  * Type guard for `object`s.
5
6
  *
@@ -12,7 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
13
  * @returns `true` if `o` is an `object`
13
14
  */
14
15
  function isObject(o) {
15
- var type = typeof o;
16
+ let type = typeof o;
16
17
  return o !== null && (type === 'object' || type === 'function');
17
18
  }
18
19
  exports.isObject = isObject;
@@ -1 +1 @@
1
- {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../src/utils/is-object.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;GAUG;AACH,SAAgB,QAAQ,CAAC,CAAM;IAC5B,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;IAEpB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;AACnE,CAAC;AAJD,4BAIC"}
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../src/utils/is-object.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,SAAgB,QAAQ,CAAC,CAAM;IAC5B,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;IAEpB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;AACnE,CAAC;AAJD,4BAIC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var is_promise_1 = require("./is-promise");
4
- var is_object_1 = require("./is-object");
3
+ exports.isPromiseLike = void 0;
4
+ const is_promise_1 = require("./is-promise");
5
+ const is_object_1 = require("./is-object");
5
6
  /**
6
7
  * Type guard for the `PromiseLike` interface. Simply checks to see if `o` is an `object`
7
8
  * and has a `then` function. It does *not* guarantee that the `then` function returns a
@@ -1 +1 @@
1
- {"version":3,"file":"is-promise-like.js","sourceRoot":"","sources":["../../../src/utils/is-promise-like.ts"],"names":[],"mappings":";;AAAA,2CAAyC;AACzC,yCAAuC;AAEvC;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,CAAM;IACjC,OAAO,sBAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,OAAQ,CAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACjF,CAAC;AAFD,sCAEC"}
1
+ {"version":3,"file":"is-promise-like.js","sourceRoot":"","sources":["../../../src/utils/is-promise-like.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,2CAAuC;AAEvC;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,CAAM;IACjC,OAAO,sBAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,OAAQ,CAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACjF,CAAC;AAFD,sCAEC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var is_object_1 = require("./is-object");
4
- var get_tag_string_1 = require("./get-tag-string");
3
+ exports.isPromise = void 0;
4
+ const is_object_1 = require("./is-object");
5
+ const get_tag_string_1 = require("./get-tag-string");
5
6
  /**
6
7
  * Type guard for `Promise`s.
7
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"is-promise.js","sourceRoot":"","sources":["../../../src/utils/is-promise.ts"],"names":[],"mappings":";;AAAA,yCAAuC;AACvC,mDAAgD;AAEhD;;;;GAIG;AACH,SAAgB,SAAS,CAAC,CAAM;IAC7B,OAAO,oBAAQ,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC;AAChE,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"is-promise.js","sourceRoot":"","sources":["../../../src/utils/is-promise.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,qDAAgD;AAEhD;;;;GAIG;AACH,SAAgB,SAAS,CAAC,CAAM;IAC7B,OAAO,oBAAQ,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC;AAChE,CAAC;AAFD,8BAEC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var is_object_1 = require("./is-object");
4
- var get_tag_string_1 = require("./get-tag-string");
3
+ exports.isString = void 0;
4
+ const is_object_1 = require("./is-object");
5
+ const get_tag_string_1 = require("./get-tag-string");
5
6
  /**
6
7
  * Type guard for `string`s.
7
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"is-string.js","sourceRoot":"","sources":["../../../src/utils/is-string.ts"],"names":[],"mappings":";;AAAA,yCAAuC;AACvC,mDAAgD;AAEhD;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,CAAM;IAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC;AAC1F,CAAC;AAFD,4BAEC"}
1
+ {"version":3,"file":"is-string.js","sourceRoot":"","sources":["../../../src/utils/is-string.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,qDAAgD;AAEhD;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,CAAM;IAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC;AAC1F,CAAC;AAFD,4BAEC"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUndefined = void 0;
3
4
  function isUndefined(val) {
4
5
  return (typeof val === 'undefined');
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"is-undefined.js","sourceRoot":"","sources":["../../../src/utils/is-undefined.ts"],"names":[],"mappings":";;AAAA,SAAgB,WAAW,CAAC,GAAQ;IACjC,OAAO,CAAC,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC;AACvC,CAAC;AAFD,kCAEC"}
1
+ {"version":3,"file":"is-undefined.js","sourceRoot":"","sources":["../../../src/utils/is-undefined.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,GAAY;IACrC,OAAO,CAAC,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC;AACvC,CAAC;AAFD,kCAEC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeTemplate = void 0;
4
+ const get_1 = require("./get");
5
+ const escape_html_1 = require("./escape-html");
6
+ const DEFAULT_SETTINGS = {
7
+ escape: /<%-([\s\S]+?)%>/g,
8
+ interpolate: /<%=([\s\S]+?)%>/g,
9
+ };
10
+ function getValue(path, data) {
11
+ return get_1.get(data, (path || '').trim(), '');
12
+ }
13
+ /**
14
+ * A simple replacement for _.template from either Underscore or Lodash that removes the
15
+ * features that make those libraries incompatible with Content Security Policy (CSP).
16
+ * Specifically, this implementation supports only interpolation (escaped and unescaped)
17
+ * and does not support JS evaluation.
18
+ *
19
+ * Use this function just like you would have used _.template:
20
+ *
21
+ * ```ts
22
+ * template = template('Hello <%= name %>');
23
+ * console.log(template({ name: 'John Smith' }));
24
+ * ```
25
+ *
26
+ * This function only supports:
27
+ *
28
+ * `<%= … %>`: interpolate a value
29
+ * `<%- … %>`: interpolate and HTML escape a value
30
+ *
31
+ * The following are NOT supported:
32
+ *
33
+ * `<% … %>`: JS evaluation
34
+ * `<% print('Hello ' + epithet); %>`: JS evaluation with the print function
35
+ *
36
+ * Templating in Underscore/Lodash works by building/evaluation a JS function using a
37
+ * string, essentially using `eval()` to evaluate the string as JS. This meant that if
38
+ * your template referred to a variable that did not exist, you would see a JS error
39
+ * thrown. In this function, however, undefined variables in the template will result in
40
+ * an empty string placed in that location.
41
+ */
42
+ function makeTemplate(text, userSettings) {
43
+ let parts = [], index = 0, settings = Object.assign({}, DEFAULT_SETTINGS, userSettings || {}), regExpPattern, matcher;
44
+ regExpPattern = [
45
+ settings.escape.source,
46
+ settings.interpolate.source,
47
+ ];
48
+ matcher = new RegExp(regExpPattern.join('|') + '|$', 'g');
49
+ text.replace(matcher, (match, escape, interpolate, offset) => {
50
+ parts.push(text.slice(index, offset));
51
+ index = offset + match.length;
52
+ if (escape) {
53
+ parts.push((data) => {
54
+ return escape_html_1.escapeHTML(getValue(escape, data));
55
+ });
56
+ }
57
+ else if (interpolate) {
58
+ parts.push(getValue.bind(null, interpolate));
59
+ }
60
+ // The types for this callback require us to return a string, but we don't really
61
+ // care about the result of the call to `replace`, so we just return an empty string
62
+ // here.
63
+ return '';
64
+ });
65
+ return (data) => {
66
+ return parts.reduce((memo, part) => {
67
+ const result = (typeof part === 'function') ? `${part(data)}` : part;
68
+ return memo + result;
69
+ }, '');
70
+ };
71
+ }
72
+ exports.makeTemplate = makeTemplate;
73
+ //# sourceMappingURL=make-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-template.js","sourceRoot":"","sources":["../../../src/utils/make-template.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,+CAA2C;AAE3C,MAAM,gBAAgB,GAA4B;IAC/C,MAAM,EAAE,kBAAkB;IAC1B,WAAW,EAAE,kBAAkB;CACjC,CAAC;AAEF,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAS;IACtC,OAAO,SAAG,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,SAAgB,YAAY,CAAC,IAAY,EAAE,YAAsC;IAG9E,IAAI,KAAK,GAAkC,EAAE,EACzC,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,IAAI,EAAE,CAAC,EAClE,aAAa,EAAE,OAAO,CAAC;IAE3B,aAAa,GAAG;QACb,QAAQ,CAAC,MAAM,CAAC,MAAM;QACtB,QAAQ,CAAC,WAAW,CAAC,MAAM;KAC7B,CAAC;IACF,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;QAC1D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE9B,IAAI,MAAM,EAAE;YACT,KAAK,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;gBACtB,OAAO,wBAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;SACL;aAAM,IAAI,WAAW,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;SAC/C;QAED,iFAAiF;QACjF,oFAAoF;QACpF,QAAQ;QACR,OAAO,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAa,EAAU,EAAE;QAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAU,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAErE,OAAO,IAAI,GAAG,MAAM,CAAC;QACxB,CAAC,EAAE,EAAE,CAAW,CAAC;IACpB,CAAC,CAAC;AACL,CAAC;AAvCD,oCAuCC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pick = void 0;
4
+ const is_array_1 = require("./is-array");
5
+ function pick(obj, ...args) {
6
+ const props = ((args.length === 1 && is_array_1.isArray(args[0])) ? args[0] : args);
7
+ return props.reduce((memo, prop) => {
8
+ if (prop in obj) {
9
+ memo[prop] = obj[prop];
10
+ }
11
+ return memo;
12
+ }, {});
13
+ }
14
+ exports.pick = pick;
15
+ //# sourceMappingURL=pick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../../src/utils/pick.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAcrC,SAAgB,IAAI,CAAsC,GAAM,EAAE,GAAG,IAAmB;IACrF,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAQ,CAAC;IAEhF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,IAAI,IAAI,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACf,CAAC,EAAE,EAAgB,CAAC,CAAC;AACxB,CAAC;AATD,oBASC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pluck = void 0;
3
4
  function pluck(sources, key) {
4
- return sources.map(function (o) {
5
+ return sources.map((o) => {
5
6
  return o[key];
6
7
  });
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pluck.js","sourceRoot":"","sources":["../../../src/utils/pluck.ts"],"names":[],"mappings":";;AAAA,SAAgB,KAAK,CAAuB,OAAY,EAAE,GAAM;IAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,CAAC;QAClB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAJD,sBAIC"}
1
+ {"version":3,"file":"pluck.js","sourceRoot":"","sources":["../../../src/utils/pluck.ts"],"names":[],"mappings":";;;AAAA,SAAgB,KAAK,CAAuB,OAAqB,EAAE,GAAM;IACtE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAJD,sBAIC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uniq = void 0;
4
+ const iterateeUniq = (arr, iteratee) => {
5
+ const result = [], seen = [];
6
+ for (let i = 0, length = arr.length; i < length; i++) {
7
+ let value = arr[i], computed = iteratee(value, i, arr);
8
+ if (seen.indexOf(computed) === -1) {
9
+ seen.push(computed);
10
+ result.push(value);
11
+ }
12
+ }
13
+ return result;
14
+ };
15
+ const sortedUniq = (arr) => {
16
+ const result = [];
17
+ let lastSeen;
18
+ for (let i = 0, length = arr.length; i < length; i++) {
19
+ let value = arr[i];
20
+ if (i === 0 || lastSeen !== value) {
21
+ result.push(value);
22
+ }
23
+ lastSeen = value;
24
+ }
25
+ return result;
26
+ };
27
+ const standardUniq = (arr) => {
28
+ const result = arr.filter((value, index, _arr) => {
29
+ return _arr.indexOf(value) === index;
30
+ });
31
+ return result;
32
+ };
33
+ /**
34
+ * Produce a duplicate-free version of the array. If the array has already
35
+ * been sorted, you have the option of using a faster algorithm.
36
+ * The faster algorithm will not work with an iteratee if the iteratee
37
+ * is not a one-to-one function, so providing an iteratee will disable
38
+ * the faster algorithm.
39
+ */
40
+ exports.uniq = (arr, isSorted, iteratee) => {
41
+ if (iteratee) {
42
+ return iterateeUniq(arr, iteratee);
43
+ }
44
+ if (isSorted) {
45
+ return sortedUniq(arr);
46
+ }
47
+ return standardUniq(arr);
48
+ };
49
+ //# sourceMappingURL=uniq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniq.js","sourceRoot":"","sources":["../../../src/utils/uniq.ts"],"names":[],"mappings":";;;AAAA,MAAM,YAAY,GAAG,CAAO,GAAQ,EAAE,QAA8C,EAAO,EAAE;IAC1F,MAAM,MAAM,GAAQ,EAAE,EAChB,IAAI,GAAQ,EAAE,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QACnD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EACd,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;KACH;IACD,OAAO,MAAM,CAAC;AACjB,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,CAAO,GAAQ,EAAO,EAAE;IACxC,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,IAAI,QAA2B,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QACnD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,KAAK,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;QACD,QAAQ,GAAG,KAAK,CAAC;KACnB;IACD,OAAO,MAAM,CAAC;AACjB,CAAC,CAAC;AAGF,MAAM,YAAY,GAAG,CAAI,GAAQ,EAAO,EAAE;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACjB,CAAC,CAAC;AAGF;;;;;;GAMG;AACU,QAAA,IAAI,GAAG,CAAO,GAAQ,EAAE,QAAkB,EAAE,QAA+C,EAAO,EAAE;IAC9G,IAAI,QAAQ,EAAE;QACX,OAAO,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACrC;IACD,IAAI,QAAQ,EAAE;QACX,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;KACzB;IACD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,14 @@
1
1
  export * from './types/KeyValueStringObject';
2
+ export * from './types/Omit';
3
+ export * from './types/Optional';
4
+ export * from './types/PropsWithType';
5
+ export * from './types/RequireDefined';
6
+ export * from './types/RequireOptional';
7
+ export * from './types/StrictUnion';
2
8
  export * from './types/StringArrayOfStringsMap';
3
9
  export * from './types/StringMap';
4
10
  export * from './types/StringUnknownMap';
11
+ export * from './types/Writable';
5
12
  export * from './utils/has-defined';
6
13
  export * from './utils/is-arguments';
7
14
  export * from './utils/is-array';
@@ -15,8 +22,15 @@ export * from './utils/is-promise';
15
22
  export * from './utils/is-promise-like';
16
23
  export * from './utils/is-string';
17
24
  export * from './utils/is-undefined';
25
+ export * from './utils/is-null';
26
+ export * from './utils/is-not-null-or-undefined';
18
27
  export * from './utils/chunk';
19
28
  export * from './utils/flatten';
29
+ export * from './utils/pick';
20
30
  export * from './utils/pluck';
21
31
  export * from './utils/delay';
32
+ export * from './utils/get';
33
+ export * from './utils/escape-html';
34
+ export * from './utils/make-template';
35
+ export * from './utils/uniq';
22
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAM7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AAErC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kCAAkC,CAAC;AAEjD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ /* eslint-disable @typescript-eslint/no-type-alias */
2
+ //# sourceMappingURL=StrictUnion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrictUnion.js","sourceRoot":"","sources":["../../../src/types/StrictUnion.ts"],"names":[],"mappings":"AAAA,qDAAqD"}
@@ -1 +1 @@
1
- {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../../src/utils/chunk.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAI,IAAS,EAAE,IAAY;IAC7C,IAAI,IAAI,GAAG,CAAC,EAAE;QACX,OAAO,EAAE,CAAC;KACZ;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KACf;IAED,OAAO,MAAM,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../../src/utils/chunk.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAI,IAAkB,EAAE,IAAY;IACtD,IAAI,IAAI,GAAG,CAAC,EAAE;QACX,OAAO,EAAE,CAAC;KACZ;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KACf;IAED,OAAO,MAAM,CAAC;AACjB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { isString } from './is-string';
2
+ const ESCAPE_ENTITIES = {
3
+ '&': '&amp;',
4
+ '<': '&lt;',
5
+ '>': '&gt;',
6
+ '"': '&quot;',
7
+ "'": '&#x27;',
8
+ '`': '&#x60;',
9
+ };
10
+ const ESCAPE_ENTITIES_PATTERN = '(?:' + Object.keys(ESCAPE_ENTITIES).join('|') + ')', ESCAPE_ENTITIES_REGEX = new RegExp(ESCAPE_ENTITIES_PATTERN), ESCAPE_ENTITIES_REPLACE_REGEX = new RegExp(ESCAPE_ENTITIES_PATTERN, 'g');
11
+ export function escapeHTML(str) {
12
+ if (isString(str) && ESCAPE_ENTITIES_REGEX.test(str)) {
13
+ return str.replace(ESCAPE_ENTITIES_REPLACE_REGEX, (match) => {
14
+ return ESCAPE_ENTITIES[match];
15
+ });
16
+ }
17
+ return str;
18
+ }
19
+ //# sourceMappingURL=escape-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-html.js","sourceRoot":"","sources":["../../../src/utils/escape-html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,eAAe,GAA2B;IAC7C,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;CACf,CAAC;AAEF,MAAM,uBAAuB,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAC9E,qBAAqB,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC,EAC3D,6BAA6B,GAAG,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAE/E,MAAM,UAAU,UAAU,CAAC,GAAY;IACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACnD,OAAO,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,EAAE;YACzD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;KACL;IAED,OAAO,GAAG,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../../src/utils/flatten.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAI,GAAG,KAAY;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAS,CAAC,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../../src/utils/flatten.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAI,GAAG,KAAgC;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,IAAI,EAAE,EAAE;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAS,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Much of the code in this file is adapted from Lodash's _.get implementation:
3
+ *
4
+ * https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/get.js
5
+ * https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/.internal/baseGet.js
6
+ * https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/.internal/castPath.js
7
+ * https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/.internal/stringToPath.js
8
+ * https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/.internal/toKey.js
9
+ */
10
+ import { getTagString } from './get-tag-string';
11
+ import { isObject } from './is-object';
12
+ function isSymbol(value) {
13
+ const type = typeof value;
14
+ return (type === 'symbol') || (type === 'object' &&
15
+ value !== undefined &&
16
+ value !== null &&
17
+ getTagString(value) === '[object Symbol]');
18
+ }
19
+ function toKey(value) {
20
+ if (typeof value === 'string' || isSymbol(value)) {
21
+ return value;
22
+ }
23
+ return Object.is(value, -0) ? '-0' : `${value}`;
24
+ }
25
+ const IS_DEEP_PROP_REGEX = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, IS_PLAIN_PROP_REGEX = /^\w*$/;
26
+ function isKey(value, object) {
27
+ if (Array.isArray(value)) {
28
+ return false;
29
+ }
30
+ const type = typeof value;
31
+ if (type === 'number' || type === 'boolean' || value === null || value === undefined || isSymbol(value)) {
32
+ return true;
33
+ }
34
+ return IS_PLAIN_PROP_REGEX.test(value) || !IS_DEEP_PROP_REGEX.test(value) ||
35
+ (object !== null && object !== undefined && value in Object(object));
36
+ }
37
+ const DOT_CHAR_CODE = '.'.charCodeAt(0), ESCAPE_CHAR_REGEX = /\\(\\)?/g;
38
+ /* eslint-disable no-useless-concat */
39
+ const PROP_NAME_REGEX = RegExp(
40
+ // Match anything that isn't a dot or bracket.
41
+ '[^.[\\]]+' + '|' +
42
+ // Or match property names within brackets.
43
+ '\\[(?:' +
44
+ // Match a non-string expression.
45
+ '([^"\'][^[]*)' + '|' +
46
+ // Or match strings (supports escaping characters).
47
+ '(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2' +
48
+ ')\\]' + '|' +
49
+ // Or match "" as the space between consecutive dots or empty brackets.
50
+ '(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g');
51
+ /* eslint-enable no-useless-concat */
52
+ function stringToPath(str) {
53
+ const result = [];
54
+ if (str.charCodeAt(0) === DOT_CHAR_CODE) {
55
+ result.push('');
56
+ }
57
+ str.replace(PROP_NAME_REGEX, (match, expression, quote, subString) => {
58
+ let key = match;
59
+ if (quote) {
60
+ key = subString.replace(ESCAPE_CHAR_REGEX, '$1');
61
+ }
62
+ else if (expression) {
63
+ key = expression;
64
+ }
65
+ result.push(key);
66
+ // The types for this callback require us to return a string, but we don't really
67
+ // care about the result of the call to `replace`, so we just return an empty string
68
+ // here.
69
+ return '';
70
+ });
71
+ return result;
72
+ }
73
+ function createPathArray(value, object) {
74
+ if (Array.isArray(value)) {
75
+ return value;
76
+ }
77
+ return isKey(value, object) ? [value] : stringToPath(value);
78
+ }
79
+ function get(obj, path, defaultValue) {
80
+ if (!isObject(obj)) {
81
+ return defaultValue;
82
+ }
83
+ const pathArray = createPathArray(path, obj), length = pathArray.length;
84
+ let index = 0, resultObj = obj;
85
+ while (resultObj !== null && resultObj !== undefined && index < length) {
86
+ resultObj = resultObj[toKey(pathArray[index])];
87
+ index += 1;
88
+ }
89
+ const result = (index > 0 && index === length) ? resultObj : undefined;
90
+ if (result === undefined) {
91
+ return defaultValue;
92
+ }
93
+ return result;
94
+ }
95
+ export { get };
96
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/utils/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { isNull } from './is-null';
2
+ import { isUndefined } from './is-undefined';
3
+ /**
4
+ * Checks if `o` is not either null or undefined
5
+ */
6
+ export function isNotNullOrUndefined(o) {
7
+ return !(isNull(o) || isUndefined(o));
8
+ }
9
+ //# sourceMappingURL=is-not-null-or-undefined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-not-null-or-undefined.js","sourceRoot":"","sources":["../../../src/utils/is-not-null-or-undefined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAI,CAAuB;IAC5D,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function isNull(val) {
2
+ return val === null;
3
+ }
4
+ //# sourceMappingURL=is-null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-null.js","sourceRoot":"","sources":["../../../src/utils/is-null.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,GAAY;IAChC,OAAO,GAAG,KAAK,IAAI,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-undefined.js","sourceRoot":"","sources":["../../../src/utils/is-undefined.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,GAAQ;IACjC,OAAO,CAAC,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"is-undefined.js","sourceRoot":"","sources":["../../../src/utils/is-undefined.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,GAAY;IACrC,OAAO,CAAC,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { get } from './get';
2
+ import { escapeHTML } from './escape-html';
3
+ const DEFAULT_SETTINGS = {
4
+ escape: /<%-([\s\S]+?)%>/g,
5
+ interpolate: /<%=([\s\S]+?)%>/g,
6
+ };
7
+ function getValue(path, data) {
8
+ return get(data, (path || '').trim(), '');
9
+ }
10
+ /**
11
+ * A simple replacement for _.template from either Underscore or Lodash that removes the
12
+ * features that make those libraries incompatible with Content Security Policy (CSP).
13
+ * Specifically, this implementation supports only interpolation (escaped and unescaped)
14
+ * and does not support JS evaluation.
15
+ *
16
+ * Use this function just like you would have used _.template:
17
+ *
18
+ * ```ts
19
+ * template = template('Hello <%= name %>');
20
+ * console.log(template({ name: 'John Smith' }));
21
+ * ```
22
+ *
23
+ * This function only supports:
24
+ *
25
+ * `<%= … %>`: interpolate a value
26
+ * `<%- … %>`: interpolate and HTML escape a value
27
+ *
28
+ * The following are NOT supported:
29
+ *
30
+ * `<% … %>`: JS evaluation
31
+ * `<% print('Hello ' + epithet); %>`: JS evaluation with the print function
32
+ *
33
+ * Templating in Underscore/Lodash works by building/evaluation a JS function using a
34
+ * string, essentially using `eval()` to evaluate the string as JS. This meant that if
35
+ * your template referred to a variable that did not exist, you would see a JS error
36
+ * thrown. In this function, however, undefined variables in the template will result in
37
+ * an empty string placed in that location.
38
+ */
39
+ export function makeTemplate(text, userSettings) {
40
+ let parts = [], index = 0, settings = Object.assign({}, DEFAULT_SETTINGS, userSettings || {}), regExpPattern, matcher;
41
+ regExpPattern = [
42
+ settings.escape.source,
43
+ settings.interpolate.source,
44
+ ];
45
+ matcher = new RegExp(regExpPattern.join('|') + '|$', 'g');
46
+ text.replace(matcher, (match, escape, interpolate, offset) => {
47
+ parts.push(text.slice(index, offset));
48
+ index = offset + match.length;
49
+ if (escape) {
50
+ parts.push((data) => {
51
+ return escapeHTML(getValue(escape, data));
52
+ });
53
+ }
54
+ else if (interpolate) {
55
+ parts.push(getValue.bind(null, interpolate));
56
+ }
57
+ // The types for this callback require us to return a string, but we don't really
58
+ // care about the result of the call to `replace`, so we just return an empty string
59
+ // here.
60
+ return '';
61
+ });
62
+ return (data) => {
63
+ return parts.reduce((memo, part) => {
64
+ const result = (typeof part === 'function') ? `${part(data)}` : part;
65
+ return memo + result;
66
+ }, '');
67
+ };
68
+ }
69
+ //# sourceMappingURL=make-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-template.js","sourceRoot":"","sources":["../../../src/utils/make-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,gBAAgB,GAA4B;IAC/C,MAAM,EAAE,kBAAkB;IAC1B,WAAW,EAAE,kBAAkB;CACjC,CAAC;AAEF,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAS;IACtC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,YAAsC;IAG9E,IAAI,KAAK,GAAkC,EAAE,EACzC,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,IAAI,EAAE,CAAC,EAClE,aAAa,EAAE,OAAO,CAAC;IAE3B,aAAa,GAAG;QACb,QAAQ,CAAC,MAAM,CAAC,MAAM;QACtB,QAAQ,CAAC,WAAW,CAAC,MAAM;KAC7B,CAAC;IACF,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;QAC1D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE9B,IAAI,MAAM,EAAE;YACT,KAAK,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;gBACtB,OAAO,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;SACL;aAAM,IAAI,WAAW,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;SAC/C;QAED,iFAAiF;QACjF,oFAAoF;QACpF,QAAQ;QACR,OAAO,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAa,EAAU,EAAE;QAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAU,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAErE,OAAO,IAAI,GAAG,MAAM,CAAC;QACxB,CAAC,EAAE,EAAE,CAAW,CAAC;IACpB,CAAC,CAAC;AACL,CAAC"}