@bitfiber/utils 1.0.4 → 1.1.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 (142) hide show
  1. package/README.md +74 -127
  2. package/dist/cjs/arr/cnd/cnd.js +12 -4
  3. package/dist/cjs/arr/cnd/cnd.js.map +1 -1
  4. package/dist/cjs/arr/fill/fill.js.map +1 -1
  5. package/dist/cjs/arr/index-by/index-by.js.map +1 -1
  6. package/dist/cjs/arr/index.js.map +1 -1
  7. package/dist/cjs/common/copy/copy.js +4 -3
  8. package/dist/cjs/common/copy/copy.js.map +1 -1
  9. package/dist/cjs/common/equals/equals.js +2 -2
  10. package/dist/cjs/common/equals/equals.js.map +1 -1
  11. package/dist/cjs/common/for-each/for-each.js.map +1 -1
  12. package/dist/cjs/common/index.js.map +1 -1
  13. package/dist/cjs/common/is/is.js +6 -3
  14. package/dist/cjs/common/is/is.js.map +1 -1
  15. package/dist/cjs/common/is-empty/is-empty.js.map +1 -1
  16. package/dist/cjs/common/to-sorted-string/to-sorted-string.js +11 -9
  17. package/dist/cjs/common/to-sorted-string/to-sorted-string.js.map +1 -1
  18. package/dist/cjs/dom/download-file/download-file.js +17 -18
  19. package/dist/cjs/dom/download-file/download-file.js.map +1 -1
  20. package/dist/cjs/dom/for-each-elements/for-each-elements.js.map +1 -1
  21. package/dist/cjs/dom/for-each-nodes/for-each-nodes.js.map +1 -1
  22. package/dist/cjs/dom/get-offset-from-parent/get-offset-from-parent.js.map +1 -1
  23. package/dist/cjs/dom/get-styles/get-styles.js.map +1 -1
  24. package/dist/cjs/dom/set-offset-from-parent/set-offset-from-parent.js +2 -1
  25. package/dist/cjs/dom/set-offset-from-parent/set-offset-from-parent.js.map +1 -1
  26. package/dist/cjs/env/get-browser/get-browser.js +36 -8
  27. package/dist/cjs/env/get-browser/get-browser.js.map +1 -1
  28. package/dist/cjs/env/get-os/get-os.js +15 -4
  29. package/dist/cjs/env/get-os/get-os.js.map +1 -1
  30. package/dist/cjs/env/get-platform/get-platform.js +11 -5
  31. package/dist/cjs/env/get-platform/get-platform.js.map +1 -1
  32. package/dist/cjs/env/index.js.map +1 -1
  33. package/dist/cjs/env/private/private.js +3 -1
  34. package/dist/cjs/env/private/private.js.map +1 -1
  35. package/dist/cjs/num/in-range/in-range.js +5 -1
  36. package/dist/cjs/num/in-range/in-range.js.map +1 -1
  37. package/dist/cjs/obj/extend/extend.js.map +1 -1
  38. package/dist/cjs/obj/for-each-obj/for-each-obj.js.map +1 -1
  39. package/dist/cjs/obj/map-obj/map-obj.js.map +1 -1
  40. package/dist/cjs/obj/map-obj-to-arr/map-obj-to-arr.js.map +1 -1
  41. package/dist/esm/arr/cnd/cnd.js +13 -5
  42. package/dist/esm/arr/cnd/cnd.js.map +1 -1
  43. package/dist/esm/arr/fill/fill.js.map +1 -1
  44. package/dist/esm/arr/index-by/index-by.js.map +1 -1
  45. package/dist/esm/arr/index.js.map +1 -1
  46. package/dist/esm/common/copy/copy.js +4 -3
  47. package/dist/esm/common/copy/copy.js.map +1 -1
  48. package/dist/esm/common/equals/equals.js +2 -2
  49. package/dist/esm/common/equals/equals.js.map +1 -1
  50. package/dist/esm/common/for-each/for-each.js +1 -1
  51. package/dist/esm/common/for-each/for-each.js.map +1 -1
  52. package/dist/esm/common/index.js.map +1 -1
  53. package/dist/esm/common/is/is.js +6 -3
  54. package/dist/esm/common/is/is.js.map +1 -1
  55. package/dist/esm/common/is-empty/is-empty.js +1 -1
  56. package/dist/esm/common/is-empty/is-empty.js.map +1 -1
  57. package/dist/esm/common/to-sorted-string/to-sorted-string.js +12 -10
  58. package/dist/esm/common/to-sorted-string/to-sorted-string.js.map +1 -1
  59. package/dist/esm/dom/download-file/download-file.js +17 -18
  60. package/dist/esm/dom/download-file/download-file.js.map +1 -1
  61. package/dist/esm/dom/for-each-elements/for-each-elements.js.map +1 -1
  62. package/dist/esm/dom/for-each-nodes/for-each-nodes.js.map +1 -1
  63. package/dist/esm/dom/get-offset-from-parent/get-offset-from-parent.js +1 -1
  64. package/dist/esm/dom/get-offset-from-parent/get-offset-from-parent.js.map +1 -1
  65. package/dist/esm/dom/get-styles/get-styles.js.map +1 -1
  66. package/dist/esm/dom/set-offset-from-parent/set-offset-from-parent.js +2 -1
  67. package/dist/esm/dom/set-offset-from-parent/set-offset-from-parent.js.map +1 -1
  68. package/dist/esm/env/get-browser/get-browser.js +36 -8
  69. package/dist/esm/env/get-browser/get-browser.js.map +1 -1
  70. package/dist/esm/env/get-os/get-os.js +15 -4
  71. package/dist/esm/env/get-os/get-os.js.map +1 -1
  72. package/dist/esm/env/get-platform/get-platform.js +11 -5
  73. package/dist/esm/env/get-platform/get-platform.js.map +1 -1
  74. package/dist/esm/env/index.js.map +1 -1
  75. package/dist/esm/env/private/private.js +3 -1
  76. package/dist/esm/env/private/private.js.map +1 -1
  77. package/dist/esm/num/in-range/in-range.js +5 -1
  78. package/dist/esm/num/in-range/in-range.js.map +1 -1
  79. package/dist/esm/obj/extend/extend.js.map +1 -1
  80. package/dist/esm/obj/for-each-obj/for-each-obj.js.map +1 -1
  81. package/dist/esm/obj/map-obj/map-obj.js.map +1 -1
  82. package/dist/esm/obj/map-obj-to-arr/map-obj-to-arr.js.map +1 -1
  83. package/dist/types/arr/cnd/cnd.d.ts.map +1 -1
  84. package/dist/types/arr/fill/fill.d.ts.map +1 -1
  85. package/dist/types/arr/index-by/index-by.d.ts.map +1 -1
  86. package/dist/types/arr/index.d.ts.map +1 -1
  87. package/dist/types/common/copy/copy.d.ts.map +1 -1
  88. package/dist/types/common/equals/equals.d.ts.map +1 -1
  89. package/dist/types/common/for-each/for-each.d.ts.map +1 -1
  90. package/dist/types/common/index.d.ts.map +1 -1
  91. package/dist/types/common/is/is.d.ts.map +1 -1
  92. package/dist/types/common/is-empty/is-empty.d.ts.map +1 -1
  93. package/dist/types/common/types.d.ts +12 -0
  94. package/dist/types/common/types.d.ts.map +1 -1
  95. package/dist/types/dom/download-file/download-file.d.ts +2 -1
  96. package/dist/types/dom/download-file/download-file.d.ts.map +1 -1
  97. package/dist/types/dom/for-each-elements/for-each-elements.d.ts.map +1 -1
  98. package/dist/types/dom/for-each-nodes/for-each-nodes.d.ts.map +1 -1
  99. package/dist/types/dom/get-offset-from-parent/get-offset-from-parent.d.ts.map +1 -1
  100. package/dist/types/dom/get-styles/get-styles.d.ts.map +1 -1
  101. package/dist/types/dom/set-offset-from-parent/set-offset-from-parent.d.ts.map +1 -1
  102. package/dist/types/env/get-browser/get-browser.d.ts.map +1 -1
  103. package/dist/types/env/get-os/get-os.d.ts.map +1 -1
  104. package/dist/types/env/get-platform/get-platform.d.ts.map +1 -1
  105. package/dist/types/env/index.d.ts.map +1 -1
  106. package/dist/types/env/private/private.d.ts.map +1 -1
  107. package/dist/types/env/types.d.ts.map +1 -1
  108. package/dist/types/num/in-range/in-range.d.ts.map +1 -1
  109. package/dist/types/obj/extend/extend.d.ts.map +1 -1
  110. package/dist/types/obj/for-each-obj/for-each-obj.d.ts.map +1 -1
  111. package/dist/types/obj/map-obj/map-obj.d.ts.map +1 -1
  112. package/dist/types/obj/map-obj-to-arr/map-obj-to-arr.d.ts.map +1 -1
  113. package/package.json +1 -1
  114. package/src/arr/cnd/cnd.ts +21 -8
  115. package/src/arr/fill/fill.ts +5 -1
  116. package/src/arr/index-by/index-by.ts +4 -1
  117. package/src/arr/index.ts +2 -1
  118. package/src/common/copy/copy.ts +7 -5
  119. package/src/common/equals/equals.ts +10 -4
  120. package/src/common/for-each/for-each.ts +8 -2
  121. package/src/common/index.ts +6 -4
  122. package/src/common/is/is.ts +6 -5
  123. package/src/common/is-empty/is-empty.ts +3 -1
  124. package/src/common/to-sorted-string/to-sorted-string.ts +12 -14
  125. package/src/common/types.ts +16 -6
  126. package/src/dom/download-file/download-file.ts +22 -22
  127. package/src/dom/for-each-elements/for-each-elements.ts +4 -2
  128. package/src/dom/for-each-nodes/for-each-nodes.ts +4 -1
  129. package/src/dom/get-offset-from-parent/get-offset-from-parent.ts +7 -2
  130. package/src/dom/get-styles/get-styles.ts +4 -2
  131. package/src/dom/set-offset-from-parent/set-offset-from-parent.ts +2 -1
  132. package/src/env/get-browser/get-browser.ts +36 -8
  133. package/src/env/get-os/get-os.ts +15 -4
  134. package/src/env/get-platform/get-platform.ts +11 -5
  135. package/src/env/index.ts +3 -2
  136. package/src/env/private/private.ts +3 -1
  137. package/src/env/types.ts +19 -10
  138. package/src/num/in-range/in-range.ts +5 -1
  139. package/src/obj/extend/extend.ts +8 -4
  140. package/src/obj/for-each-obj/for-each-obj.ts +4 -2
  141. package/src/obj/map-obj/map-obj.ts +4 -2
  142. package/src/obj/map-obj-to-arr/map-obj-to-arr.ts +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"private.d.ts","sourceRoot":"","sources":["../../../../src/env/private/private.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAcxD,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAMD,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAMD,wBAAgB,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,WAAW,UAAQ,GAAG,OAAO,CAyCnF"}
1
+ {"version":3,"file":"private.d.ts","sourceRoot":"","sources":["../../../../src/env/private/private.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAcxD,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAMD,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAMD,wBAAgB,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,WAAW,UAAQ,GAAG,OAAO,CA2CnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/env/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/env/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"in-range.d.ts","sourceRoot":"","sources":["../../../../src/num/in-range/in-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAC,MAAM,cAAc,CAAC;AAG/C;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,GAAG,IAAI,CAgB5F"}
1
+ {"version":3,"file":"in-range.d.ts","sourceRoot":"","sources":["../../../../src/num/in-range/in-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAC,MAAM,cAAc,CAAC;AAG/C;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,GAAG,IAAI,CAoB5F"}
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../../src/obj/extend/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,GAAG,EAAE,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAGpF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAC9D,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,OAAO,CAAC,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EACjE,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,OAAO,CAAC,CAEtD"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../../src/obj/extend/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,GAAG,EAAE,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAGpF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,EACnD,MAAM,EAAE,CAAC,EACT,GAAG,OAAO,EAAE,CAAC,GACZ,CAAC,GAAG,iBAAiB,CAAC,OAAO,OAAO,CAAC,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,EACtD,MAAM,EAAE,CAAC,EACT,GAAG,OAAO,EAAE,CAAC,GACZ,CAAC,GAAG,iBAAiB,CAAC,OAAO,OAAO,CAAC,CAEvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"for-each-obj.d.ts","sourceRoot":"","sources":["../../../../src/obj/for-each-obj/for-each-obj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAa,UAAU,EAAC,MAAM,cAAc,CAAC;AAGxD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EACjE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,CAM9D"}
1
+ {"version":3,"file":"for-each-obj.d.ts","sourceRoot":"","sources":["../../../../src/obj/for-each-obj/for-each-obj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAa,UAAU,EAAC,MAAM,cAAc,CAAC;AAGxD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,MAAM,CAAC,EACzD,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,GACrD,IAAI,CAMN"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-obj.d.ts","sourceRoot":"","sources":["../../../../src/obj/map-obj/map-obj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7C;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAChE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAIpE"}
1
+ {"version":3,"file":"map-obj.d.ts","sourceRoot":"","sources":["../../../../src/obj/map-obj/map-obj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7C;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,EACxD,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GACnD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAId"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-obj-to-arr.d.ts","sourceRoot":"","sources":["../../../../src/obj/map-obj-to-arr/map-obj-to-arr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EACrE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAI3D"}
1
+ {"version":3,"file":"map-obj-to-arr.d.ts","sourceRoot":"","sources":["../../../../src/obj/map-obj-to-arr/map-obj-to-arr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,EAC7D,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GACnD,CAAC,EAAE,CAIL"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bitfiber/utils",
3
3
  "description": "Collection of versatile utility functions for Javascript",
4
- "version": "1.0.4",
4
+ "version": "1.1.0",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
7
7
  "es2015": "./dist/esm/index.js",
@@ -1,4 +1,6 @@
1
- import {BfError, isFunction, isObject, isRegExp, isString, same, equals, isArray} from '../../common';
1
+ import {
2
+ BfError, isFunction, isObject, isRegExp, isString, same, equals, isArray,
3
+ } from '../../common';
2
4
  import {hasOwn} from '../../obj';
3
5
 
4
6
  /**
@@ -47,8 +49,8 @@ export type MatchConditionNotEqual = {notEqual: any[]};
47
49
  * Represents a group of all object condition types
48
50
  * Used for the cnd function
49
51
  */
50
- export type MatchConditionObj = MatchConditionIs | MatchConditionOr | MatchConditionNot | MatchConditionEqual
51
- | MatchConditionOrEqual | MatchConditionNotEqual;
52
+ export type MatchConditionObj = MatchConditionIs | MatchConditionOr | MatchConditionNot
53
+ | MatchConditionEqual | MatchConditionOrEqual | MatchConditionNotEqual;
52
54
 
53
55
  /**
54
56
  * Represents a condition that is true if the value of each field matches each field condition
@@ -122,15 +124,23 @@ export function cnd(conditions: MatchConditions): MatchConditionFn {
122
124
  } else if ('is' in conditions) {
123
125
  return value => same(conditions.is, value);
124
126
  } else if ('or' in conditions) {
125
- return value => (isArray(conditions.or) ? conditions.or.some(item => same(item, value)) : cndErr());
127
+ return value => (isArray(conditions.or)
128
+ ? conditions.or.some(item => same(item, value))
129
+ : cndErr());
126
130
  } else if ('not' in conditions) {
127
- return value => (isArray(conditions.not) ? !conditions.not.some(item => same(item, value)) : cndErr());
131
+ return value => (isArray(conditions.not)
132
+ ? !conditions.not.some(item => same(item, value))
133
+ : cndErr());
128
134
  } else if ('equal' in conditions) {
129
135
  return value => fit(conditions.equal, value);
130
136
  } else if ('orEqual' in conditions) {
131
- return value => (isArray(conditions.orEqual) ? conditions.orEqual.some(item => fit(item, value)) : cndErr());
137
+ return value => (isArray(conditions.orEqual)
138
+ ? conditions.orEqual.some(item => fit(item, value))
139
+ : cndErr());
132
140
  } else if ('notEqual' in conditions) {
133
- return value => (isArray(conditions.notEqual) ? !conditions.notEqual.some(item => fit(item, value)) : cndErr());
141
+ return value => (isArray(conditions.notEqual)
142
+ ? !conditions.notEqual.some(item => fit(item, value))
143
+ : cndErr());
134
144
  } else {
135
145
  return obj => {
136
146
  if (isObject(obj)) {
@@ -184,5 +194,8 @@ function fit(condition: any, value: any): boolean {
184
194
  }
185
195
 
186
196
  function cndErr(): never {
187
- throw new BfError('"or", "not", "orEqual" and "notEqual" must be an array', {code: 'bf_utils_arr_cnd_1'});
197
+ throw new BfError(
198
+ '"or", "not", "orEqual" and "notEqual" must be an array',
199
+ {code: 'bf_utils_arr_cnd_1'},
200
+ );
188
201
  }
@@ -5,6 +5,10 @@
5
5
  * @param handler - a function that should return a new array item
6
6
  * @param offset - offset for the index, which is passed to the handler
7
7
  */
8
- export function fill<T>(quantity: number, handler: (offsetIndex: number, index: number) => T, offset = 1): T[] {
8
+ export function fill<T>(
9
+ quantity: number,
10
+ handler: (offsetIndex: number, index: number) => T,
11
+ offset = 1,
12
+ ): T[] {
9
13
  return Array(quantity).fill(null).map((item, index) => handler(index + offset, index));
10
14
  }
@@ -7,7 +7,10 @@ import {isFunction, Obj, Index} from '../../common';
7
7
  * @param fieldOrFn - the name of the field from which the index value should be taken,
8
8
  * or the function that should return the index value
9
9
  */
10
- export function indexBy<T extends Obj>(arr: T[], fieldOrFn: string | ((item: T) => string)): Index<T> {
10
+ export function indexBy<T extends Obj>(
11
+ arr: T[],
12
+ fieldOrFn: string | ((item: T) => string),
13
+ ): Index<T> {
11
14
  const result: Index<T> = {};
12
15
  arr.forEach(item => {
13
16
  const key = isFunction(fieldOrFn) ? fieldOrFn(item) : item[fieldOrFn];
package/src/arr/index.ts CHANGED
@@ -7,5 +7,6 @@ export {diffArr, ArrDiff} from './diff-arr/diff-arr';
7
7
  export {forEachArr} from './for-each-arr/for-each-arr';
8
8
  export {
9
9
  cnd, MatchConditionFn, MatchConditionIs, MatchConditionOr, MatchConditionNot, MatchConditionEqual,
10
- MatchConditionOrEqual, MatchConditionNotEqual, MatchConditionObj, MatchConditionsByFields, MatchConditions,
10
+ MatchConditionOrEqual, MatchConditionNotEqual, MatchConditionObj, MatchConditionsByFields,
11
+ MatchConditions,
11
12
  } from './cnd/cnd';
@@ -1,6 +1,7 @@
1
1
  import {
2
- isNumber, isBigInt, isBoolean, isString, isDate, isRegExp, isFunction, isMap, isSet, isObject, isArray, isTypedArray,
3
- isBlob, isArrayBuffer, isWindow, isDocument, isFile, isFormData, isPromise, isObservable,
2
+ isNumber, isBigInt, isBoolean, isString, isDate, isRegExp, isFunction, isMap, isSet, isObject,
3
+ isArray, isTypedArray, isBlob, isArrayBuffer, isWindow, isDocument, isFile, isFormData, isPromise,
4
+ isObservable,
4
5
  } from '../';
5
6
  import {forEachObj} from '../../obj';
6
7
 
@@ -14,7 +15,8 @@ export function copy<T>(value: T): T {
14
15
  }
15
16
 
16
17
  function _copy(value: any, visited: Map<any, any>): any {
17
- if (!value || isString(value) || isNumber(value) || isBigInt(value) || isBoolean(value) || isFunction(value)) {
18
+ if (!value || isString(value) || isNumber(value) || isBigInt(value) || isBoolean(value)
19
+ || isFunction(value)) {
18
20
  return value;
19
21
  } else if (isDate(value)) {
20
22
  return new Date(value.getTime());
@@ -61,8 +63,8 @@ function _copy(value: any, visited: Map<any, any>): any {
61
63
  } else if (isTypedArray(value)) {
62
64
  // @ts-ignore
63
65
  return new value.constructor(value.buffer.slice(0), value.byteOffset, value.length);
64
- } else if (isWindow(value) || isDocument(value) || isFile(value) || isFormData(value) || isPromise(value)
65
- || isObservable(value)) {
66
+ } else if (isWindow(value) || isDocument(value) || isFile(value) || isFormData(value)
67
+ || isPromise(value) || isObservable(value)) {
66
68
  return value;
67
69
  } else if (isObject(value)) {
68
70
  if (visited.has(value)) {
@@ -1,5 +1,6 @@
1
1
  import {
2
- Index, isNaN, isDate, isRegExp, isFunction, isDefined, isMap, isSet, isObject, isArray, isTypedArray,
2
+ Index, isNaN, isDate, isRegExp, isFunction, isDefined, isMap, isSet, isObject, isArray,
3
+ isTypedArray,
3
4
  } from '../';
4
5
  import {hasOwn} from '../../obj';
5
6
 
@@ -18,7 +19,12 @@ export function equals(value1: any, value2: any, sortFn?: (a: any, b: any) => nu
18
19
  return _equals(value1, value2, new Map<any, true>(), sortFn);
19
20
  }
20
21
 
21
- function _equals(obj1: any, obj2: any, visited: Map<any, true>, sortFn?: (a: any, b: any) => number): boolean {
22
+ function _equals(
23
+ obj1: any,
24
+ obj2: any,
25
+ visited: Map<any, true>,
26
+ sortFn?: (a: any, b: any) => number,
27
+ ): boolean {
22
28
  if (obj1 === obj2 || (isNaN(obj1) && isNaN(obj2))) {
23
29
  return true;
24
30
  } else if (isArray(obj1) || isTypedArray(obj1)) {
@@ -110,8 +116,8 @@ function _equals(obj1: any, obj2: any, visited: Map<any, true>, sortFn?: (a: any
110
116
  }
111
117
  visited.set(obj1, true);
112
118
 
113
- if (!isObject(obj2) || isArray(obj2) || isTypedArray(obj2) || isDate(obj2) || isRegExp(obj2) || isMap(obj2)
114
- || isSet(obj2)) {
119
+ if (!isObject(obj2) || isArray(obj2) || isTypedArray(obj2) || isDate(obj2) || isRegExp(obj2)
120
+ || isMap(obj2) || isSet(obj2)) {
115
121
  return false;
116
122
  }
117
123
 
@@ -1,4 +1,6 @@
1
- import {NumStr, BfError, INTERRUPT, isNumber, isFunction, isMap, isSet, isObject, hasIterator} from '../';
1
+ import {
2
+ NumStr, BfError, INTERRUPT, isNumber, isFunction, isMap, isSet, isObject, hasIterator,
3
+ } from '../';
2
4
  import {forEachArr} from '../../arr';
3
5
  import {forEachObj} from '../../obj';
4
6
 
@@ -9,7 +11,11 @@ import {forEachObj} from '../../obj';
9
11
  * @param handler - function called for each item
10
12
  * @param reverse - iterates in reverse order if true
11
13
  */
12
- export function forEach(obj: any, handler: (value: any, key: NumStr, obj: any) => any, reverse?: boolean): void {
14
+ export function forEach(
15
+ obj: any,
16
+ handler: (value: any, key: NumStr, obj: any) => any,
17
+ reverse?: boolean,
18
+ ): void {
13
19
  if (hasIterator(obj)) {
14
20
  if (isMap(obj)) {
15
21
  const iterable = Array.from(obj);
@@ -1,13 +1,15 @@
1
1
  export {
2
- Nullish, NumStr, NumStrSym, Fn, Arr, TypedArr, Obj, Index, ArrObj, UnionToIntersection, ValueUnion, ValueIntersection,
2
+ Nullish, NumStr, NumStrSym, Fn, Arr, TypedArr, Obj, Index, ArrObj, UnionToIntersection,
3
+ ValueUnion, ValueIntersection,
3
4
  } from './types';
4
5
  export {INTERRUPT} from './interrupt';
5
6
  export {BfError, BfErrorOptions} from './error';
6
7
  export {stub} from './stub/stub';
7
8
  export {
8
- isNull, isUndefined, isDefined, isNullish, isNaN, isString, isNumber, isBigInt, isBoolean, isSymbol, isFunction,
9
- isObject, isArray, isSet, isMap, isDate, isRegExp, isFile, isBlob, isFormData, isArrayBuffer, isDocument, isWindow,
10
- isPromise, isObservable, isTypedArray, isUsualObject,
9
+ isNull, isUndefined, isDefined, isNullish, isNaN, isString, isNumber, isBigInt, isBoolean,
10
+ isSymbol, isFunction, isObject, isArray, isSet, isMap, isDate, isRegExp, isFile, isBlob,
11
+ isFormData, isArrayBuffer, isDocument, isWindow, isPromise, isObservable, isTypedArray,
12
+ isUsualObject,
11
13
  } from './is/is';
12
14
  export {isEmpty} from './is-empty/is-empty';
13
15
  export {same} from './same/same';
@@ -198,7 +198,8 @@ export function isWindow(value: any): value is Window {
198
198
  * @param value - anything
199
199
  */
200
200
  export function isPromise(value: any): value is Promise<any> {
201
- return !!value && (value.constructor === Promise || (isFunction(value.then) && isFunction(value.catch)));
201
+ return !!value && (value.constructor === Promise || (isFunction(value.then)
202
+ && isFunction(value.catch)));
202
203
  }
203
204
 
204
205
  /**
@@ -237,8 +238,8 @@ export function isTypedArray(value: any): value is TypedArr {
237
238
  * @param value - anything
238
239
  */
239
240
  export function isUsualObject(value: any): value is Obj {
240
- return isObject(value) && !isArray(value) && !isTypedArray(value) && !isSet(value) && !isMap(value) && !isDate(value)
241
- && !isRegExp(value) && !isFile(value) && !isBlob(value) && !isFormData(value) && !isArrayBuffer(value) && !isWindow(
242
- value,
243
- ) && !isDocument(value) && !isPromise(value) && !isObservable(value);
241
+ return isObject(value) && !isArray(value) && !isTypedArray(value) && !isSet(value)
242
+ && !isMap(value) && !isDate(value) && !isRegExp(value) && !isFile(value) && !isBlob(value)
243
+ && !isFormData(value) && !isArrayBuffer(value) && !isWindow(value) && !isDocument(value)
244
+ && !isPromise(value) && !isObservable(value);
244
245
  }
@@ -1,4 +1,6 @@
1
- import {isNumber, isBigInt, isBoolean, isSymbol, isString, isDate, isRegExp, isFunction, isDefined} from '../';
1
+ import {
2
+ isNumber, isBigInt, isBoolean, isSymbol, isString, isDate, isRegExp, isFunction, isDefined,
3
+ } from '../';
2
4
  import {hasOwn} from '../../obj';
3
5
 
4
6
  /**
@@ -1,4 +1,4 @@
1
- import {NumStr, isString, isDate, isRegExp, isFunction, isMap, isSet, isObject, isArray, isTypedArray} from '../';
1
+ import {isDate, isRegExp, isFunction, isMap, isSet, isObject, isArray, isTypedArray} from '../';
2
2
 
3
3
  /**
4
4
  * Converts any value to a sorted string.
@@ -7,18 +7,17 @@ import {NumStr, isString, isDate, isRegExp, isFunction, isMap, isSet, isObject,
7
7
  * @param value - anything
8
8
  */
9
9
  export function toSortedString(value: any): string {
10
- return _toSortedString(value, null, 0, new Map<any, true>());
10
+ return _toSortedString(value, new Map<any, true>());
11
11
  }
12
12
 
13
- function _toSortedString(value: any, index: number | null, field: NumStr, visited: Map<any, true>): string {
14
- let str = index === null ? '' : ((index === 0 ? '' : ',') + (isString(field) ? field + ':' : ''));
13
+ function _toSortedString(value: any, visited: Map<any, true>): string {
14
+ let str = '';
15
15
 
16
16
  if (isMap(value) || isSet(value)) {
17
17
  if (visited.has(value)) {
18
18
  return '';
19
19
  }
20
20
  visited.set(value, true);
21
-
22
21
  value = Array.from(value);
23
22
  }
24
23
 
@@ -26,13 +25,13 @@ function _toSortedString(value: any, index: number | null, field: NumStr, visite
26
25
  if (visited.has(value)) {
27
26
  return '';
28
27
  }
28
+ const arr: string[] = [];
29
29
  visited.set(value, true);
30
-
31
30
  str += '[';
32
- value.sort();
33
- value.forEach((value: any, i: number) => {
34
- str += _toSortedString(value, i, i, visited);
31
+ value.forEach(item => {
32
+ arr.push(_toSortedString(item, visited));
35
33
  });
34
+ str = arr.sort().reduce((acc, item, i) => `${acc}${item}${i < arr.length - 1 ? ',' : ''}`, str);
36
35
  str += ']';
37
36
  } else if (isFunction(value)) {
38
37
  str += value.toString();
@@ -40,14 +39,13 @@ function _toSortedString(value: any, index: number | null, field: NumStr, visite
40
39
  if (visited.has(value)) {
41
40
  return '';
42
41
  }
42
+ const fields = Object.keys(value).sort();
43
43
  visited.set(value, true);
44
-
45
- const fields = Object.keys(value);
46
-
47
44
  str += '{';
48
- fields.sort();
49
45
  fields.forEach((field, i) => {
50
- str += _toSortedString(value[field], i, field, visited);
46
+ str += `${field}:${_toSortedString(value[field], visited)}${i < fields.length - 1
47
+ ? ','
48
+ : ''}`;
51
49
  });
52
50
  str += '}';
53
51
  } else {
@@ -26,8 +26,8 @@ export type Arr<T = any> = ReadonlyArray<T> | ArrayLike<T>;
26
26
  /**
27
27
  * Represents all typed array types
28
28
  */
29
- export type TypedArr = Int8Array | Int16Array | Int32Array | Float32Array | Float64Array | Uint8Array
30
- | Uint8ClampedArray | Uint16Array | Uint32Array | BigInt64Array | BigUint64Array;
29
+ export type TypedArr = Int8Array | Int16Array | Int32Array | Float32Array | Float64Array
30
+ | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigInt64Array | BigUint64Array;
31
31
 
32
32
  /**
33
33
  * Represents any object
@@ -48,17 +48,27 @@ export interface Index<T = any> {
48
48
  */
49
49
  export type ArrObj<T = any> = Arr<T> | Obj<T>;
50
50
 
51
+ /**
52
+ * Returns an object type with fields of any type except the specified type
53
+ */
54
+ export type OmitType<T, V> = {[K in keyof T as T[K] extends V ? never : K]: T[K]};
55
+
56
+ /**
57
+ * Returns the type of object with fields of a certain type
58
+ */
59
+ export type PickType<T, V> = {[K in keyof T as T[K] extends V ? K : never]: T[K]};
60
+
51
61
  /**
52
62
  * Converts a type union to a type intersection
53
63
  */
54
- export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends ((x: infer I) => void) ? I
55
- : never;
64
+ export type UnionToIntersection<U> = (U extends any
65
+ ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
56
66
 
57
67
  /**
58
68
  * Represents the union of object value types or array value types
59
69
  */
60
- export type ValueUnion<T extends ArrObj, K extends keyof T = keyof T> = T extends ReadonlyArray<any> ? T[number]
61
- : T extends ArrayLike<any> ? T[number] : T extends object ? T[K] : never;
70
+ export type ValueUnion<T extends ArrObj, K extends keyof T = keyof T> = T extends ReadonlyArray<any>
71
+ ? T[number] : T extends ArrayLike<any> ? T[number] : T extends object ? T[K] : never;
62
72
 
63
73
  /**
64
74
  * Represents the intersection of object value types or array value types
@@ -5,27 +5,27 @@ import {getBody, getDocument, getWindow} from '../';
5
5
  * Creates an offer to download a file from URL in the browser.
6
6
  * Returns a promise that returns a blob if the download is successful
7
7
  * @param url - file URL
8
+ * @param fetchOptions - fetch options
8
9
  */
9
- export function downloadFile(url: string): Promise<Blob> {
10
- return fetch(url)
11
- .then(response => {
12
- if (response.ok) {
13
- return response.blob();
14
- } else {
15
- return Promise.reject(new BfError('Network response was not ok', {code: 'bf_utils_dom_downloadFile_1'}));
16
- }
17
- })
18
- .then(blob => {
19
- const doc = getDocument();
20
- const win = getWindow();
21
- const body = getBody();
22
- const url = win.URL.createObjectURL(blob);
23
- const link = doc.createElement('a');
24
- link.href = url;
25
- link.download = 'downloaded_file';
26
- body.appendChild(link);
27
- link.click();
28
- body.removeChild(link);
29
- return blob;
30
- });
10
+ export async function downloadFile(url: string, fetchOptions?: RequestInit): Promise<Blob> {
11
+ const res = await fetch(url, fetchOptions);
12
+ if (res.ok) {
13
+ const blob = await res.blob();
14
+ const doc = getDocument();
15
+ const win = getWindow();
16
+ const body = getBody();
17
+ const url = win.URL.createObjectURL(blob);
18
+ const link = doc.createElement('a');
19
+ link.href = url;
20
+ link.download = 'downloaded_file';
21
+ body.appendChild(link);
22
+ link.click();
23
+ body.removeChild(link);
24
+ return blob;
25
+ } else {
26
+ return Promise.reject(new BfError(
27
+ 'Network response was not ok',
28
+ {code: 'bf_utils_dom_downloadFile_1'},
29
+ ));
30
+ }
31
31
  }
@@ -7,8 +7,10 @@ import {forEach, INTERRUPT} from '../../common';
7
7
  * @param parent - a parent element
8
8
  * @param handler - function called for each element
9
9
  */
10
- export function forEachElements(parent: Element,
11
- handler: (child: Element, index: number, parent: Element) => any): void {
10
+ export function forEachElements(
11
+ parent: Element,
12
+ handler: (child: Element, index: number, parent: Element) => any,
13
+ ): void {
12
14
  forEach(parent.children, (child, i) => {
13
15
  if (handler(child, <number>i, parent) !== INTERRUPT) {
14
16
  forEachElements(child, handler);
@@ -6,7 +6,10 @@ import {INTERRUPT} from '../../common';
6
6
  * @param parent - a parent node
7
7
  * @param handler - function called for each node (Text, Comment, Element)
8
8
  */
9
- export function forEachNodes(parent: Node, handler: (child: Node, index: number, parent: Node) => any): void {
9
+ export function forEachNodes(
10
+ parent: Node,
11
+ handler: (child: Node, index: number, parent: Node) => any,
12
+ ): void {
10
13
  parent.childNodes.forEach((child, i) => {
11
14
  if (handler(child, i, parent) !== INTERRUPT) {
12
15
  forEachNodes(child, handler);
@@ -1,5 +1,7 @@
1
1
  import {BfError, toFloat} from '../../common';
2
- import {Offset, hasName, getNonStaticParent, getOffsetFromWin, getOffsetFromDoc, getStyle} from '../';
2
+ import {
3
+ Offset, hasName, getNonStaticParent, getOffsetFromWin, getOffsetFromDoc, getStyle,
4
+ } from '../';
3
5
 
4
6
  /**
5
7
  * Returns the offset relative to the closest non-static parent element.
@@ -11,7 +13,10 @@ export function getOffsetFromParent(element: HTMLElement): Offset {
11
13
  let parentOffset: Offset;
12
14
 
13
15
  if (hasName(element, 'html') || hasName(element, 'body')) {
14
- throw new BfError('Element cannot be html or body', {code: 'bf_utils_dom_getOffsetFromParent_1'});
16
+ throw new BfError(
17
+ 'Element cannot be html or body',
18
+ {code: 'bf_utils_dom_getOffsetFromParent_1'},
19
+ );
15
20
  }
16
21
 
17
22
  if (getStyle(element, 'position') === 'fixed') {
@@ -6,8 +6,10 @@ import {getStyle} from '../';
6
6
  * @param element - any HTML element
7
7
  * @param styleNames - list of certain style names
8
8
  */
9
- export function getStyles<A extends string[]>(element: HTMLElement,
10
- ...styleNames: A): {[K in ValueUnion<A>]: string} {
9
+ export function getStyles<A extends string[]>(
10
+ element: HTMLElement,
11
+ ...styleNames: A
12
+ ): {[K in ValueUnion<A>]: string} {
11
13
  const styles: {[K in ValueUnion<A>]: string} = <any>{};
12
14
  styleNames.forEach(name => (<any>styles)[name] = getStyle(element, name));
13
15
  return styles;
@@ -23,7 +23,8 @@ export function setOffsetFromParent(element: HTMLElement, offset: Partial<TopLef
23
23
  }
24
24
 
25
25
  // If top or left is auto, need calculate real top and left relative to a non-static parent
26
- if ((position === 'absolute' || position === 'fixed') && (styleTop === 'auto' || styleLeft === 'auto')) {
26
+ if ((position === 'absolute' || position === 'fixed')
27
+ && (styleTop === 'auto' || styleLeft === 'auto')) {
27
28
  const offsetFromParent = getOffsetFromParent(element);
28
29
  top = offsetFromParent.top;
29
30
  left = offsetFromParent.left;
@@ -5,14 +5,42 @@ import {getBot, getEnvData} from '../private/private';
5
5
  let browser: BrowserData | null = null;
6
6
 
7
7
  const browserConditions: EnvCondition[] = [
8
- ['opera', '(?:opera|opr\\/|opios)'], ['operaCoast', 'coast\\/'], ['operaTouch', 'opt\\/'],
9
- ['samsung', 'SamsungBrowser'], ['mz', 'MZBrowser'], ['yandex', 'YaBrowser'], ['uc', 'UcBrowser'],
10
- ['maxthon', '(?:Maxthon|mxios)'], ['kmeleon', 'k-meleon'], ['wechat', 'MicroMessenger'], ['qqLite', 'qqBrowserLite'],
11
- ['qq', 'qqBrowser'], ['edge', 'edg(?:[ea/]|ios)'], ['sailfish', 'sailfish\\s?(?:browser)?'],
12
- ['webOS', 'w(?:eb)?[o0]sbrowser'], ['tizen', 'tizen\\s?(?:browser)?'], ['miui', 'MiuiBrowser'], 'silk', 'phantomjs',
13
- 'slimerjs', 'qupzilla', 'electron', 'whale', 'focus', 'swing', 'epiphany', 'puffin', 'sleipnir', 'vivaldi',
14
- 'seamonkey', ['playstation4', 'playstation 4'], ['playstation5', 'playstation 5'], ['googleSearch', 'GSA'],
15
- ['firefox', '(?:firefox|FxiOS)'], ['chrome', '(?:chrome|chromium|crios|crmo)'], 'android',
8
+ ['opera', '(?:opera|opr\\/|opios)'],
9
+ ['operaCoast', 'coast\\/'],
10
+ ['operaTouch', 'opt\\/'],
11
+ ['samsung', 'SamsungBrowser'],
12
+ ['mz', 'MZBrowser'],
13
+ ['yandex', 'YaBrowser'],
14
+ ['uc', 'UcBrowser'],
15
+ ['maxthon', '(?:Maxthon|mxios)'],
16
+ ['kmeleon', 'k-meleon'],
17
+ ['wechat', 'MicroMessenger'],
18
+ ['qqLite', 'qqBrowserLite'],
19
+ ['qq', 'qqBrowser'],
20
+ ['edge', 'edg(?:[ea/]|ios)'],
21
+ ['sailfish', 'sailfish\\s?(?:browser)?'],
22
+ ['webOS', 'w(?:eb)?[o0]sbrowser'],
23
+ ['tizen', 'tizen\\s?(?:browser)?'],
24
+ ['miui', 'MiuiBrowser'],
25
+ 'silk',
26
+ 'phantomjs',
27
+ 'slimerjs',
28
+ 'qupzilla',
29
+ 'electron',
30
+ 'whale',
31
+ 'focus',
32
+ 'swing',
33
+ 'epiphany',
34
+ 'puffin',
35
+ 'sleipnir',
36
+ 'vivaldi',
37
+ 'seamonkey',
38
+ ['playstation4', 'playstation 4'],
39
+ ['playstation5', 'playstation 5'],
40
+ ['googleSearch', 'GSA'],
41
+ ['firefox', '(?:firefox|FxiOS)'],
42
+ ['chrome', '(?:chrome|chromium|crios|crmo)'],
43
+ 'android',
16
44
  ['safari', '(?:safari|AppleWebKit)'],
17
45
  ];
18
46
 
@@ -5,10 +5,21 @@ import {getBot, getEnvData} from '../private/private';
5
5
  let os: OSData | null = null;
6
6
 
7
7
  const osConditions: EnvCondition[] = [
8
- 'xbox', ['windows', 'Windows (?:NT|XP)'], ['ios', '(?:iphone|ipad|FxiOS)', 'OS'], ['macOS', 'Macintosh', 'Mac OS X'],
9
- ['webOS', '(?:web|hpw)[o0]s'], 'tizen', ['appleTV', 'apple[\\s_-]?TV', 'OS'], ['roku', 'Roku[\\w]{0,8}/DVP'],
10
- ['chromeOS', 'CrOS(?: x86_64)?'], ['playstation4', 'PlayStation 4'], ['playstation5', 'PlayStation 5'],
11
- ['nintendoSwitch', 'Nintendo Switch'], ['likeAndroid', 'like android'], 'android', ['linux', 'linux', 'rv:'],
8
+ 'xbox',
9
+ ['windows', 'Windows (?:NT|XP)'],
10
+ ['ios', '(?:iphone|ipad|FxiOS)', 'OS'],
11
+ ['macOS', 'Macintosh', 'Mac OS X'],
12
+ ['webOS', '(?:web|hpw)[o0]s'],
13
+ 'tizen',
14
+ ['appleTV', 'apple[\\s_-]?TV', 'OS'],
15
+ ['roku', 'Roku[\\w]{0,8}/DVP'],
16
+ ['chromeOS', 'CrOS(?: x86_64)?'],
17
+ ['playstation4', 'PlayStation 4'],
18
+ ['playstation5', 'PlayStation 5'],
19
+ ['nintendoSwitch', 'Nintendo Switch'],
20
+ ['likeAndroid', 'like android'],
21
+ 'android',
22
+ ['linux', 'linux', 'rv:'],
12
23
  ];
13
24
 
14
25
  /**