@silvermine/toolbox 0.4.0 → 0.5.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.
Files changed (87) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/CHANGELOG.md +24 -0
  3. package/dist/commonjs/types/KeyValueStringObject.js +4 -6
  4. package/dist/commonjs/types/KeyValueStringObject.js.map +1 -1
  5. package/dist/commonjs/types/StrictUnion.js +0 -1
  6. package/dist/commonjs/types/StrictUnion.js.map +1 -1
  7. package/dist/commonjs/types/StringArrayOfStringsMap.js +3 -5
  8. package/dist/commonjs/types/StringArrayOfStringsMap.js.map +1 -1
  9. package/dist/commonjs/types/StringMap.js +3 -5
  10. package/dist/commonjs/types/StringMap.js.map +1 -1
  11. package/dist/commonjs/types/StringUnknownMap.js.map +1 -1
  12. package/dist/commonjs/types/UnionKeys.js +3 -0
  13. package/dist/commonjs/types/UnionKeys.js.map +1 -0
  14. package/dist/commonjs/utils/get-tag-string.js.map +1 -1
  15. package/dist/commonjs/utils/get.js +3 -0
  16. package/dist/commonjs/utils/get.js.map +1 -1
  17. package/dist/commonjs/utils/has-defined.js.map +1 -1
  18. package/dist/commonjs/utils/is-array-of-strings.js +1 -1
  19. package/dist/commonjs/utils/is-array-of-strings.js.map +1 -1
  20. package/dist/commonjs/utils/is-empty.js +10 -11
  21. package/dist/commonjs/utils/is-empty.js.map +1 -1
  22. package/dist/commonjs/utils/is-map-with-values-of-type.js +1 -1
  23. package/dist/commonjs/utils/is-map-with-values-of-type.js.map +1 -1
  24. package/dist/commonjs/utils/is-object.js +1 -1
  25. package/dist/commonjs/utils/is-object.js.map +1 -1
  26. package/dist/commonjs/utils/is-promise-like.js.map +1 -1
  27. package/dist/commonjs/utils/make-template.js +3 -6
  28. package/dist/commonjs/utils/make-template.js.map +1 -1
  29. package/dist/commonjs/utils/uniq.js +2 -2
  30. package/dist/commonjs/utils/uniq.js.map +1 -1
  31. package/dist/esm/types/KeyValueStringObject.js +4 -6
  32. package/dist/esm/types/KeyValueStringObject.js.map +1 -1
  33. package/dist/esm/types/StrictUnion.js +0 -1
  34. package/dist/esm/types/StrictUnion.js.map +1 -1
  35. package/dist/esm/types/StringArrayOfStringsMap.js +3 -5
  36. package/dist/esm/types/StringArrayOfStringsMap.js.map +1 -1
  37. package/dist/esm/types/StringMap.js +3 -5
  38. package/dist/esm/types/StringMap.js.map +1 -1
  39. package/dist/esm/types/StringUnknownMap.js.map +1 -1
  40. package/dist/esm/types/UnionKeys.js +1 -0
  41. package/dist/esm/types/UnionKeys.js.map +1 -0
  42. package/dist/esm/utils/get-tag-string.js.map +1 -1
  43. package/dist/esm/utils/get.js +3 -0
  44. package/dist/esm/utils/get.js.map +1 -1
  45. package/dist/esm/utils/has-defined.js.map +1 -1
  46. package/dist/esm/utils/is-array-of-strings.js +1 -1
  47. package/dist/esm/utils/is-array-of-strings.js.map +1 -1
  48. package/dist/esm/utils/is-empty.js +10 -11
  49. package/dist/esm/utils/is-empty.js.map +1 -1
  50. package/dist/esm/utils/is-map-with-values-of-type.js +1 -1
  51. package/dist/esm/utils/is-map-with-values-of-type.js.map +1 -1
  52. package/dist/esm/utils/is-object.js +1 -1
  53. package/dist/esm/utils/is-object.js.map +1 -1
  54. package/dist/esm/utils/is-promise-like.js.map +1 -1
  55. package/dist/esm/utils/make-template.js +3 -6
  56. package/dist/esm/utils/make-template.js.map +1 -1
  57. package/dist/esm/utils/uniq.js +2 -2
  58. package/dist/esm/utils/uniq.js.map +1 -1
  59. package/dist/types/types/KeyValueStringObject.d.ts +1 -1
  60. package/dist/types/types/StrictUnion.d.ts +1 -1
  61. package/dist/types/types/StringArrayOfStringsMap.d.ts +1 -1
  62. package/dist/types/types/StringMap.d.ts +1 -1
  63. package/dist/types/types/StringUnknownMap.d.ts +1 -1
  64. package/dist/types/types/UnionKeys.d.ts +9 -0
  65. package/dist/types/utils/get-tag-string.d.ts +1 -1
  66. package/dist/types/utils/has-defined.d.ts +4 -1
  67. package/dist/types/utils/is-empty.d.ts +11 -1
  68. package/dist/types/utils/is-map-with-values-of-type.d.ts +1 -1
  69. package/dist/types/utils/make-template.d.ts +1 -1
  70. package/eslint.config.js +15 -0
  71. package/package.json +5 -5
  72. package/src/types/KeyValueStringObject.ts +5 -7
  73. package/src/types/StrictUnion.ts +1 -2
  74. package/src/types/StringArrayOfStringsMap.ts +5 -7
  75. package/src/types/StringMap.ts +5 -7
  76. package/src/types/StringUnknownMap.ts +1 -1
  77. package/src/types/UnionKeys.ts +9 -0
  78. package/src/utils/get-tag-string.ts +1 -1
  79. package/src/utils/get.ts +3 -0
  80. package/src/utils/has-defined.ts +2 -1
  81. package/src/utils/is-array-of-strings.ts +1 -1
  82. package/src/utils/is-empty.ts +35 -3
  83. package/src/utils/is-map-with-values-of-type.ts +3 -3
  84. package/src/utils/is-object.ts +1 -1
  85. package/src/utils/is-promise-like.ts +1 -1
  86. package/src/utils/make-template.ts +8 -11
  87. package/src/utils/uniq.ts +3 -3
@@ -9,7 +9,7 @@ export function isMapWithValuesOfType(guard, o) {
9
9
  if (!isStringUnknownMap(o)) {
10
10
  return false;
11
11
  }
12
- for (let k of Object.keys(o)) {
12
+ for (const k of Object.keys(o)) {
13
13
  if (!guard(o[k])) {
14
14
  return false;
15
15
  }
@@ -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,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAI,KAAyB,EAAE,CAAM;IACvE,IAAI,CAAC,kBAAkB,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"}
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,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAI,KAA6B,EAAE,CAAU;IAC/E,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACf;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACf,OAAO,KAAK,CAAC;SACf;KACH;IAED,OAAO,IAAI,CAAC;AACf,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * @returns `true` if `o` is an `object`
11
11
  */
12
12
  export function isObject(o) {
13
- let type = typeof o;
13
+ const type = typeof o;
14
14
  return o !== null && (type === 'object' || type === 'function');
15
15
  }
16
16
  //# sourceMappingURL=is-object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../src/utils/is-object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAU;IAChC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;IAEpB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../src/utils/is-object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAU;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC;IAEtB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;AACnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-promise-like.js","sourceRoot":"","sources":["../../../src/utils/is-promise-like.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,CAAU;IACrC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAQ,CAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"is-promise-like.js","sourceRoot":"","sources":["../../../src/utils/is-promise-like.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,CAAU;IACrC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAQ,CAA0B,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAClG,CAAC"}
@@ -4,6 +4,7 @@ const DEFAULT_SETTINGS = {
4
4
  escape: /<%-([\s\S]+?)%>/g,
5
5
  interpolate: /<%=([\s\S]+?)%>/g,
6
6
  };
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
8
  function getValue(path, data) {
8
9
  return get(data, (path || '').trim(), '');
9
10
  }
@@ -37,12 +38,8 @@ function getValue(path, data) {
37
38
  * an empty string placed in that location.
38
39
  */
39
40
  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');
41
+ let index = 0;
42
+ const parts = [], settings = Object.assign({}, DEFAULT_SETTINGS, userSettings || {}), regExpPattern = [settings.escape.source, settings.interpolate.source], matcher = new RegExp(regExpPattern.join('|') + '|$', 'g');
46
43
  text.replace(matcher, (match, escape, interpolate, offset) => {
47
44
  parts.push(text.slice(index, offset));
48
45
  index = offset + match.length;
@@ -1 +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"}
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,8DAA8D;AAC9D,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,GAAG,CAAC,CAAC;IAEd,MAAM,KAAK,GAAkC,EAAE,EACzC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,IAAI,EAAE,CAAC,EAClE,aAAa,GAAG,CAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAE,EACvE,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAEhE,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,IAAa,EAAE,EAAE;gBAC1B,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"}
@@ -1,7 +1,7 @@
1
1
  const iterateeUniq = (arr, iteratee) => {
2
2
  const result = [], seen = [];
3
3
  for (let i = 0, length = arr.length; i < length; i++) {
4
- let value = arr[i], computed = iteratee(value, i, arr);
4
+ const value = arr[i], computed = iteratee(value, i, arr);
5
5
  if (seen.indexOf(computed) === -1) {
6
6
  seen.push(computed);
7
7
  result.push(value);
@@ -13,7 +13,7 @@ const sortedUniq = (arr) => {
13
13
  const result = [];
14
14
  let lastSeen;
15
15
  for (let i = 0, length = arr.length; i < length; i++) {
16
- let value = arr[i];
16
+ const value = arr[i];
17
17
  if (i === 0 || lastSeen !== value) {
18
18
  result.push(value);
19
19
  }
@@ -1 +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;AACH,MAAM,CAAC,MAAM,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"}
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,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EACd,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAEzC,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,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAErB,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;AACH,MAAM,CAAC,MAAM,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"}
@@ -27,4 +27,4 @@ export interface KeyValueStringObject {
27
27
  *
28
28
  * @returns `true` if `o` is a `KeyValueStringObject`
29
29
  */
30
- export declare function isKeyValueStringObject(o: any): o is KeyValueStringObject;
30
+ export declare function isKeyValueStringObject(o: unknown): o is KeyValueStringObject;
@@ -1,4 +1,4 @@
1
- declare type UnionKeys<T> = T extends unknown ? keyof T : never;
1
+ import { UnionKeys } from './UnionKeys';
2
2
  declare type InvalidKeys<K extends string | number | symbol> = {
3
3
  [P in K]?: never;
4
4
  };
@@ -17,4 +17,4 @@ export interface StringArrayOfStringsMap {
17
17
  *
18
18
  * @returns `true` if `o` is a `StringArrayOfStringsMap`
19
19
  */
20
- export declare function isStringArrayOfStringsMap(o: any): o is StringArrayOfStringsMap;
20
+ export declare function isStringArrayOfStringsMap(o: unknown): o is StringArrayOfStringsMap;
@@ -15,4 +15,4 @@ export interface StringMap {
15
15
  *
16
16
  * @returns `true` if `o` is a `StringMap`
17
17
  */
18
- export declare function isStringMap(o: any): o is StringMap;
18
+ export declare function isStringMap(o: unknown): o is StringMap;
@@ -54,4 +54,4 @@ export interface StringUnknownMap {
54
54
  *
55
55
  * @returns `true` if `o` is a `StringUnknownMap`
56
56
  */
57
- export declare function isStringUnknownMap(o: any): o is StringUnknownMap;
57
+ export declare function isStringUnknownMap(o: unknown): o is StringUnknownMap;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Extracts all the keys of a union type. For example:
3
+ *
4
+ * ```
5
+ * type Union = { a: number } | { b: string };
6
+ * type Keys = UnionKeys<Union>; // 'a' | 'b'
7
+ * ```
8
+ */
9
+ export declare type UnionKeys<T> = T extends T ? keyof T : never;
@@ -34,4 +34,4 @@
34
34
  * @see https://github.com/jashkenas/underscore/blob/d5fe0fd4060f13b40608cb9d92eda6d857e8752c/underscore.js#L1326
35
35
  * @see https://github.com/lodash/lodash/blob/750067f42d3aa5f927604ece2c6df0ff2b2e9d72/isNumber.js#L31
36
36
  */
37
- export declare function getTagString(o: any): string;
37
+ export declare function getTagString(o: unknown): string;
@@ -1,4 +1,5 @@
1
1
  import { RequireDefined } from '../types/RequireDefined';
2
+ import { UnionKeys } from '../types/UnionKeys';
2
3
  /**
3
4
  * Tests that an optional or possibly-undefined property on type `T` is defined (that is,
4
5
  * not undefined) on object `o`. This is necessary if you want to pass an object that is
@@ -16,4 +17,6 @@ import { RequireDefined } from '../types/RequireDefined';
16
17
  * @param propName the name of the optional or possibly-undefined property that you want
17
18
  * to be required
18
19
  */
19
- export declare function hasDefined<T, U extends keyof T>(o: T, propName: U): o is RequireDefined<T, U>;
20
+ export declare function hasDefined<T extends object, U extends keyof T | UnionKeys<T>>(o: T, propName: U): o is RequireDefined<Extract<T, {
21
+ [key in U]?: unknown;
22
+ }>, U>;
@@ -1,3 +1,10 @@
1
+ interface IEmptyArguments extends IArguments {
2
+ length: 0;
3
+ }
4
+ interface IEmptyObj {
5
+ [s: string]: never;
6
+ }
7
+ declare type IEmptyTypes = (null | undefined | boolean | number | never[] | '' | IEmptyArguments | Set<never> | IEmptyObj);
1
8
  /**
2
9
  * Checks if `o` is an empty object. An object is "empty" if it:
3
10
  *
@@ -7,4 +14,7 @@
7
14
  *
8
15
  * @returns `true` if `o` is empty
9
16
  */
10
- export declare function isEmpty(o: any): boolean;
17
+ export declare function isEmpty(o: unknown[]): boolean;
18
+ export declare function isEmpty(o: object): boolean;
19
+ export declare function isEmpty(o: unknown): o is IEmptyTypes;
20
+ export {};
@@ -4,4 +4,4 @@
4
4
  * @returns `true` if `o` is a map with `string` keys and values that pass the provided
5
5
  * type guard.
6
6
  */
7
- export declare function isMapWithValuesOfType<T>(guard: (x: any) => x is T, o: any): o is Record<string, T>;
7
+ export declare function isMapWithValuesOfType<T>(guard: (x: unknown) => x is T, o: unknown): o is Record<string, T>;
@@ -7,7 +7,7 @@ export interface ToolboxTemplateSettings {
7
7
  };
8
8
  }
9
9
  export interface ToolboxTemplateFunction {
10
- (data: Record<string, any>): string;
10
+ (data: Record<string, unknown>): string;
11
11
  }
12
12
  /**
13
13
  * A simple replacement for _.template from either Underscore or Lodash that removes the
@@ -0,0 +1,15 @@
1
+ const config = require('@silvermine/eslint-config'),
2
+ node = require('@silvermine/eslint-config/partials/node'),
3
+ nodeTests = require('@silvermine/eslint-config/partials/node-tests');
4
+
5
+ module.exports = [
6
+ ...config,
7
+ {
8
+ files: [ 'tests/**.ts' ],
9
+ ...nodeTests,
10
+ },
11
+ {
12
+ files: [ '**/*.ts', '**/*.js' ],
13
+ ...node,
14
+ },
15
+ ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silvermine/toolbox",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "A library of common TypeScript types, custom type guards, and utility functions.",
5
5
  "main": "./dist/commonjs/index",
6
6
  "types": "./dist/types/index.d.ts",
@@ -37,19 +37,19 @@
37
37
  },
38
38
  "devDependencies": {
39
39
  "@silvermine/chai-strictly-equal": "1.1.1",
40
- "@silvermine/eslint-config": "github:silvermine/eslint-config-silvermine#aa8ecacb12ab778078fd195d3b15f09ecac76c11",
40
+ "@silvermine/eslint-config": "github:silvermine/eslint-config-silvermine#634db8f6cfb2314070ba59339faf86f089c8e65d",
41
41
  "@silvermine/standardization": "2.0.0",
42
42
  "@silvermine/typescript-config": "git+https://github.com/silvermine/typescript-config#23213e33077089e723629dead5342abe6f3b3c8c",
43
- "@types/chai": "4.3.18",
43
+ "@types/chai": "4.3.20",
44
44
  "@types/mocha": "5.2.7",
45
45
  "@types/node": "12.20.45",
46
46
  "@types/sinon": "5.0.7",
47
47
  "chai": "4.5.0",
48
48
  "check-node-version": "4.2.1",
49
49
  "coveralls": "3.1.1",
50
- "eslint": "8.57.0",
50
+ "eslint": "8.57.1",
51
51
  "grunt": "1.6.1",
52
- "grunt-cli": "1.3.2",
52
+ "grunt-cli": "1.5.0",
53
53
  "grunt-concurrent": "3.0.0",
54
54
  "grunt-contrib-clean": "2.0.1",
55
55
  "grunt-contrib-watch": "1.1.0",
@@ -1,8 +1,6 @@
1
- import { isObject } from '../utils/is-object';
2
- import { isArray } from '../utils/is-array';
3
- import { isArguments } from '../utils/is-arguments';
4
1
  import { isArrayOfStrings } from '../utils/is-array-of-strings';
5
2
  import { isString } from '../utils/is-string';
3
+ import { isStringUnknownMap } from './StringUnknownMap';
6
4
 
7
5
  /**
8
6
  * `KeyValueStringObject`s have `string`s as keys and one of:
@@ -32,15 +30,15 @@ export interface KeyValueStringObject { [k: string]: (string | string[] | KeyVal
32
30
  *
33
31
  * @returns `true` if `o` is a `KeyValueStringObject`
34
32
  */
35
- export function isKeyValueStringObject(o: any): o is KeyValueStringObject {
33
+ export function isKeyValueStringObject(o: unknown): o is KeyValueStringObject {
36
34
  // Arrays and the array-like `arguments` variable are objects, so they would not be
37
35
  // caught by an `isObject` check
38
- if (!isObject(o) || isArray(o) || isArguments(o)) {
36
+ if (!isStringUnknownMap(o)) {
39
37
  return false;
40
38
  }
41
39
 
42
- for (let k of Object.keys(o)) {
43
- let v: any = (o as any)[k];
40
+ for (const k of Object.keys(o)) {
41
+ const v: unknown = o[k];
44
42
 
45
43
  if (!isString(v) && !isArrayOfStrings(v) && !isKeyValueStringObject(v)) {
46
44
  return false;
@@ -1,6 +1,5 @@
1
- /* eslint-disable @typescript-eslint/no-type-alias */
1
+ import { UnionKeys } from './UnionKeys';
2
2
 
3
- type UnionKeys<T> = T extends unknown ? keyof T : never;
4
3
  type InvalidKeys<K extends string | number | symbol> = { [P in K]?: never };
5
4
  type StrictUnionHelper<T, TAll> = T extends unknown ? (T & InvalidKeys<Exclude<UnionKeys<TAll>, keyof T>>) : never;
6
5
 
@@ -1,7 +1,5 @@
1
- import { isArguments } from '../utils/is-arguments';
2
1
  import { isArrayOfStrings } from '../utils/is-array-of-strings';
3
- import { isObject } from '../utils/is-object';
4
- import { isArray } from '../utils/is-array';
2
+ import { isStringUnknownMap } from './StringUnknownMap';
5
3
 
6
4
  /**
7
5
  * `StringArrayOfStringsMap`s have `string`s as keys and `string[]` as values. For
@@ -21,15 +19,15 @@ export interface StringArrayOfStringsMap { [s: string]: string[] }
21
19
  *
22
20
  * @returns `true` if `o` is a `StringArrayOfStringsMap`
23
21
  */
24
- export function isStringArrayOfStringsMap(o: any): o is StringArrayOfStringsMap {
22
+ export function isStringArrayOfStringsMap(o: unknown): o is StringArrayOfStringsMap {
25
23
  // Arrays and the array-like `arguments` variable are objects, so they would not be
26
24
  // caught by an `isObject` check
27
- if (!isObject(o) || isArray(o) || isArguments(o)) {
25
+ if (!isStringUnknownMap(o)) {
28
26
  return false;
29
27
  }
30
28
 
31
- for (let k of Object.keys(o)) {
32
- if (!isArrayOfStrings((o as any)[k])) {
29
+ for (const k of Object.keys(o)) {
30
+ if (!isArrayOfStrings(o[k])) {
33
31
  return false;
34
32
  }
35
33
  }
@@ -1,7 +1,5 @@
1
- import { isObject } from '../utils/is-object';
2
- import { isArray } from '../utils/is-array';
3
- import { isArguments } from '../utils/is-arguments';
4
1
  import { isString } from '../utils/is-string';
2
+ import { isStringUnknownMap } from './StringUnknownMap';
5
3
 
6
4
  /**
7
5
  * `StringMap`s have `string`s as keys and `string`s as values. For example:
@@ -19,15 +17,15 @@ export interface StringMap { [s: string]: string }
19
17
  *
20
18
  * @returns `true` if `o` is a `StringMap`
21
19
  */
22
- export function isStringMap(o: any): o is StringMap {
20
+ export function isStringMap(o: unknown): o is StringMap {
23
21
  // Arrays and the array-like `arguments` variable are objects, so they would not be
24
22
  // caught by an `isObject` check
25
- if (!isObject(o) || isArray(o) || isArguments(o)) {
23
+ if (!isStringUnknownMap(o)) {
26
24
  return false;
27
25
  }
28
26
 
29
- for (let k of Object.keys(o)) {
30
- if (!isString((o as any)[k])) {
27
+ for (const k of Object.keys(o)) {
28
+ if (!isString(o[k])) {
31
29
  return false;
32
30
  }
33
31
  }
@@ -57,6 +57,6 @@ export interface StringUnknownMap { [s: string]: unknown }
57
57
  *
58
58
  * @returns `true` if `o` is a `StringUnknownMap`
59
59
  */
60
- export function isStringUnknownMap(o: any): o is StringUnknownMap {
60
+ export function isStringUnknownMap(o: unknown): o is StringUnknownMap {
61
61
  return isObject(o) && !isArray(o) && !isArguments(o);
62
62
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Extracts all the keys of a union type. For example:
3
+ *
4
+ * ```
5
+ * type Union = { a: number } | { b: string };
6
+ * type Keys = UnionKeys<Union>; // 'a' | 'b'
7
+ * ```
8
+ */
9
+ export type UnionKeys<T> = T extends T ? keyof T : never;
@@ -34,6 +34,6 @@
34
34
  * @see https://github.com/jashkenas/underscore/blob/d5fe0fd4060f13b40608cb9d92eda6d857e8752c/underscore.js#L1326
35
35
  * @see https://github.com/lodash/lodash/blob/750067f42d3aa5f927604ece2c6df0ff2b2e9d72/isNumber.js#L31
36
36
  */
37
- export function getTagString(o: any): string {
37
+ export function getTagString(o: unknown): string {
38
38
  return Object.prototype.toString.call(o);
39
39
  }
package/src/utils/get.ts CHANGED
@@ -32,6 +32,7 @@ function toKey(value: unknown): string | symbol {
32
32
  const IS_DEEP_PROP_REGEX = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
33
33
  IS_PLAIN_PROP_REGEX = /^\w*$/;
34
34
 
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
36
  function isKey(value: any, object: any): boolean {
36
37
  if (Array.isArray(value)) {
37
38
  return false;
@@ -93,6 +94,7 @@ function stringToPath(str: string): string[] {
93
94
  return result;
94
95
  }
95
96
 
97
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
98
  function createPathArray(value: any, object: any): string[] {
97
99
  if (Array.isArray(value)) {
98
100
  return value;
@@ -139,6 +141,7 @@ function get<TResult = unknown>(
139
141
  resultObj: unknown = obj;
140
142
 
141
143
  while (resultObj !== null && resultObj !== undefined && index < length) {
144
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
142
145
  resultObj = (resultObj as any)[toKey(pathArray[index])];
143
146
 
144
147
  index += 1;
@@ -1,5 +1,6 @@
1
1
  import { isUndefined } from './is-undefined';
2
2
  import { RequireDefined } from '../types/RequireDefined';
3
+ import { UnionKeys } from '../types/UnionKeys';
3
4
 
4
5
  /**
5
6
  * Tests that an optional or possibly-undefined property on type `T` is defined (that is,
@@ -18,6 +19,6 @@ import { RequireDefined } from '../types/RequireDefined';
18
19
  * @param propName the name of the optional or possibly-undefined property that you want
19
20
  * to be required
20
21
  */
21
- export function hasDefined<T, U extends keyof T>(o: T, propName: U): o is RequireDefined<T, U> {
22
+ export function hasDefined<T extends object, U extends keyof T | UnionKeys<T>>(o: T, propName: U): o is RequireDefined<Extract<T, { [key in U]?: unknown }>, U> {
22
23
  return Object.prototype.hasOwnProperty.call(o, propName) && !isUndefined(o[propName]);
23
24
  }
@@ -13,7 +13,7 @@ export function isArrayOfStrings(values: unknown): values is string[] {
13
13
  return false;
14
14
  }
15
15
 
16
- for (let v of values) {
16
+ for (const v of values) {
17
17
  if (!isString(v)) {
18
18
  return false;
19
19
  }
@@ -2,6 +2,32 @@ import { isArray } from './is-array';
2
2
  import { isString } from './is-string';
3
3
  import { isArguments } from './is-arguments';
4
4
  import { isUndefined } from './is-undefined';
5
+ import { isNull } from './is-null';
6
+ import { isBoolean } from './is-boolean';
7
+ import { isNumber } from './is-number';
8
+ import { isSet } from './is-set';
9
+ import { isObject } from './is-object';
10
+
11
+
12
+ interface IEmptyArguments extends IArguments {
13
+ length: 0;
14
+ }
15
+
16
+ interface IEmptyObj {
17
+ [s: string]: never;
18
+ }
19
+
20
+ type IEmptyTypes = (
21
+ null |
22
+ undefined |
23
+ boolean |
24
+ number |
25
+ never[] |
26
+ '' |
27
+ IEmptyArguments |
28
+ Set<never> |
29
+ IEmptyObj
30
+ );
5
31
 
6
32
  /**
7
33
  * Checks if `o` is an empty object. An object is "empty" if it:
@@ -12,12 +38,18 @@ import { isUndefined } from './is-undefined';
12
38
  *
13
39
  * @returns `true` if `o` is empty
14
40
  */
15
- export function isEmpty(o: any): boolean {
16
- if (o === null || isUndefined(o)) {
41
+ export function isEmpty(o: unknown[]): boolean;
42
+ export function isEmpty(o: object): boolean;
43
+ export function isEmpty(o: unknown): o is IEmptyTypes;
44
+ export function isEmpty(o: unknown): boolean {
45
+ if (isNull(o) || isUndefined(o) || isBoolean(o) || isNumber(o)) {
17
46
  return true;
18
47
  }
19
48
  if (isArray(o) || isString(o) || isArguments(o)) {
20
49
  return o.length === 0;
21
50
  }
22
- return Object.keys(o).length === 0;
51
+ if (isSet(o)) {
52
+ return o.size === 0;
53
+ }
54
+ return isObject(o) && Object.keys(o).length === 0;
23
55
  }
@@ -6,13 +6,13 @@ import { isStringUnknownMap } from '../types/StringUnknownMap';
6
6
  * @returns `true` if `o` is a map with `string` keys and values that pass the provided
7
7
  * type guard.
8
8
  */
9
- export function isMapWithValuesOfType<T>(guard: (x: any) => x is T, o: any): o is Record<string, T> {
9
+ export function isMapWithValuesOfType<T>(guard: (x: unknown) => x is T, o: unknown): o is Record<string, T> {
10
10
  if (!isStringUnknownMap(o)) {
11
11
  return false;
12
12
  }
13
13
 
14
- for (let k of Object.keys(o)) {
15
- if (!guard((o as any)[k])) {
14
+ for (const k of Object.keys(o)) {
15
+ if (!guard(o[k])) {
16
16
  return false;
17
17
  }
18
18
  }
@@ -10,7 +10,7 @@
10
10
  * @returns `true` if `o` is an `object`
11
11
  */
12
12
  export function isObject(o: unknown): o is object {
13
- let type = typeof o;
13
+ const type = typeof o;
14
14
 
15
15
  return o !== null && (type === 'object' || type === 'function');
16
16
  }
@@ -9,5 +9,5 @@ import { isObject } from './is-object';
9
9
  * @returns `true` if `o` is `Promise`-like (i.e. has a `then` function)
10
10
  */
11
11
  export function isPromiseLike(o: unknown): o is PromiseLike<unknown> {
12
- return isPromise(o) || (isObject(o) && typeof (o as any).then === 'function');
12
+ return isPromise(o) || (isObject(o) && typeof (o as PromiseLike<unknown>).then === 'function');
13
13
  }
@@ -6,6 +6,7 @@ const DEFAULT_SETTINGS: ToolboxTemplateSettings = {
6
6
  interpolate: /<%=([\s\S]+?)%>/g,
7
7
  };
8
8
 
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
10
  function getValue(path: string, data: any): unknown {
10
11
  return get(data, (path || '').trim(), '');
11
12
  }
@@ -16,7 +17,7 @@ export interface ToolboxTemplateSettings {
16
17
  }
17
18
 
18
19
  export interface ToolboxTemplateFunction {
19
- (data: Record<string, any>): string;
20
+ (data: Record<string, unknown>): string;
20
21
  }
21
22
 
22
23
  /**
@@ -51,23 +52,19 @@ export interface ToolboxTemplateFunction {
51
52
  export function makeTemplate(text: string, userSettings?: ToolboxTemplateSettings): (data: unknown) => string {
52
53
  type TemplateFunction = (data: unknown) => unknown;
53
54
 
54
- let parts: (TemplateFunction | string)[] = [],
55
- index = 0,
56
- settings = Object.assign({}, DEFAULT_SETTINGS, userSettings || {}),
57
- regExpPattern, matcher;
55
+ let index = 0;
58
56
 
59
- regExpPattern = [
60
- settings.escape.source,
61
- settings.interpolate.source,
62
- ];
63
- matcher = new RegExp(regExpPattern.join('|') + '|$', 'g');
57
+ const parts: (TemplateFunction | string)[] = [],
58
+ settings = Object.assign({}, DEFAULT_SETTINGS, userSettings || {}),
59
+ regExpPattern = [ settings.escape.source, settings.interpolate.source ],
60
+ matcher = new RegExp(regExpPattern.join('|') + '|$', 'g');
64
61
 
65
62
  text.replace(matcher, (match, escape, interpolate, offset) => {
66
63
  parts.push(text.slice(index, offset));
67
64
  index = offset + match.length;
68
65
 
69
66
  if (escape) {
70
- parts.push((data: any) => {
67
+ parts.push((data: unknown) => {
71
68
  return escapeHTML(getValue(escape, data));
72
69
  });
73
70
  } else if (interpolate) {
package/src/utils/uniq.ts CHANGED
@@ -3,8 +3,8 @@ const iterateeUniq = <T, U>(arr: T[], iteratee: (value: T, i: number, arr: T[])
3
3
  seen: U[] = [];
4
4
 
5
5
  for (let i = 0, length = arr.length; i < length; i++) {
6
- let value = arr[i],
7
- computed = iteratee(value, i, arr);
6
+ const value = arr[i],
7
+ computed = iteratee(value, i, arr);
8
8
 
9
9
  if (seen.indexOf(computed) === -1) {
10
10
  seen.push(computed);
@@ -21,7 +21,7 @@ const sortedUniq = <T, U>(arr: T[]): T[] => {
21
21
  let lastSeen: T | U | undefined;
22
22
 
23
23
  for (let i = 0, length = arr.length; i < length; i++) {
24
- let value = arr[i];
24
+ const value = arr[i];
25
25
 
26
26
  if (i === 0 || lastSeen !== value) {
27
27
  result.push(value);