@koine/utils 2.0.0-beta.80 → 2.0.0-beta.83

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 (354) hide show
  1. package/Defer.cjs.js +20 -10
  2. package/Defer.esm.js +20 -10
  3. package/Emitter.cjs.js +18 -19
  4. package/Emitter.d.ts +1 -1
  5. package/Emitter.esm.js +18 -19
  6. package/accentsSets.cjs.d.ts +2 -0
  7. package/accentsSets.cjs.default.js +1 -0
  8. package/accentsSets.cjs.js +20 -0
  9. package/accentsSets.cjs.mjs +2 -0
  10. package/accentsSets.esm.js +15 -0
  11. package/addOrReplaceAtIdx.cjs.js +7 -14
  12. package/addOrReplaceAtIdx.esm.js +7 -14
  13. package/areEqual.cjs.js +28 -43
  14. package/areEqual.esm.js +28 -43
  15. package/arrayFilterFalsy.cjs.js +6 -1
  16. package/arrayFilterFalsy.d.ts +1 -1
  17. package/arrayFilterFalsy.esm.js +6 -1
  18. package/arrayFindLastIndex.cjs.js +13 -8
  19. package/arrayFindLastIndex.d.ts +1 -1
  20. package/arrayFindLastIndex.esm.js +13 -8
  21. package/arrayOfAll.cjs.js +16 -1
  22. package/arrayOfAll.esm.js +16 -1
  23. package/arraySum.cjs.js +6 -1
  24. package/arraySum.esm.js +6 -1
  25. package/arrayToLookup.cjs.js +5 -4
  26. package/arrayToLookup.esm.js +5 -4
  27. package/arrayUniqueByProperties.cjs.js +8 -1
  28. package/arrayUniqueByProperties.esm.js +8 -1
  29. package/buildUrlQueryString.cjs.js +10 -17
  30. package/buildUrlQueryString.esm.js +10 -17
  31. package/capitalize.cjs.js +7 -2
  32. package/capitalize.d.ts +1 -1
  33. package/capitalize.esm.js +7 -2
  34. package/changeCaseCamel.cjs.js +7 -17
  35. package/changeCaseCamel.esm.js +7 -17
  36. package/changeCaseCapital.cjs.js +7 -10
  37. package/changeCaseCapital.esm.js +7 -10
  38. package/changeCaseConstant.cjs.js +7 -6
  39. package/changeCaseConstant.esm.js +7 -6
  40. package/changeCaseDot.cjs.js +7 -1
  41. package/changeCaseDot.esm.js +7 -1
  42. package/changeCaseHelpers.cjs.js +32 -71
  43. package/changeCaseHelpers.esm.js +32 -71
  44. package/changeCaseKebab.cjs.js +7 -1
  45. package/changeCaseKebab.esm.js +7 -1
  46. package/changeCaseNone.cjs.js +7 -6
  47. package/changeCaseNone.esm.js +7 -6
  48. package/changeCasePascal.cjs.js +7 -9
  49. package/changeCasePascal.esm.js +7 -9
  50. package/changeCasePascalSnake.cjs.js +7 -1
  51. package/changeCasePascalSnake.esm.js +7 -1
  52. package/changeCasePath.cjs.js +7 -1
  53. package/changeCasePath.esm.js +7 -1
  54. package/changeCaseSentence.cjs.js +7 -15
  55. package/changeCaseSentence.esm.js +8 -16
  56. package/changeCaseSnake.cjs.js +7 -1
  57. package/changeCaseSnake.esm.js +7 -1
  58. package/changeCaseTrain.cjs.js +7 -1
  59. package/changeCaseTrain.esm.js +7 -1
  60. package/chunkByChunks.cjs.js +5 -31
  61. package/chunkByChunks.esm.js +5 -31
  62. package/chunkBySize.cjs.js +4 -7
  63. package/chunkBySize.esm.js +4 -7
  64. package/clamp.cjs.js +6 -1
  65. package/clamp.esm.js +6 -1
  66. package/clsx.cjs.js +8 -39
  67. package/clsx.esm.js +8 -39
  68. package/convertRange.cjs.js +14 -1
  69. package/convertRange.esm.js +14 -1
  70. package/cookie.cjs.js +44 -1
  71. package/cookie.esm.js +44 -1
  72. package/createPalette.cjs.js +17 -11
  73. package/createPalette.esm.js +17 -11
  74. package/debounce.cjs.js +7 -17
  75. package/debounce.esm.js +7 -17
  76. package/debouncePromise.cjs.js +16 -51
  77. package/debouncePromise.esm.js +16 -51
  78. package/debounceRaf.cjs.js +10 -12
  79. package/debounceRaf.esm.js +10 -12
  80. package/decode.cjs.js +4 -1
  81. package/decode.esm.js +4 -1
  82. package/encode.cjs.js +4 -1
  83. package/encode.esm.js +4 -1
  84. package/ensureInt.cjs.js +5 -1
  85. package/ensureInt.esm.js +5 -1
  86. package/errorToString.cjs.js +6 -1
  87. package/errorToString.esm.js +6 -1
  88. package/escapeRegExp.cjs.js +7 -1
  89. package/escapeRegExp.esm.js +7 -1
  90. package/findDuplicatedIndexes.cjs.js +3 -10
  91. package/findDuplicatedIndexes.esm.js +3 -10
  92. package/forin.cjs.js +6 -5
  93. package/forin.esm.js +6 -5
  94. package/gbToBytes.cjs.js +5 -1
  95. package/gbToBytes.esm.js +5 -1
  96. package/getEmptyArray.cjs.js +6 -3
  97. package/getEmptyArray.esm.js +6 -3
  98. package/getKeys.cjs.js +8 -1
  99. package/getKeys.d.ts +1 -1
  100. package/getKeys.esm.js +8 -1
  101. package/getMediaQueryWidthResolvers.cjs.js +27 -41
  102. package/getMediaQueryWidthResolvers.esm.js +27 -41
  103. package/getMediaQueryWidthTailwindScreens.cjs.js +6 -25
  104. package/getMediaQueryWidthTailwindScreens.esm.js +6 -25
  105. package/getNonce.cjs.js +4 -1
  106. package/getNonce.esm.js +4 -1
  107. package/getParamAmong.cjs.js +11 -4
  108. package/getParamAmong.esm.js +11 -4
  109. package/getParamAsInt.cjs.js +10 -7
  110. package/getParamAsInt.esm.js +10 -7
  111. package/getParamAsString.cjs.js +9 -1
  112. package/getParamAsString.esm.js +9 -1
  113. package/getType.cjs.js +13 -1
  114. package/getType.esm.js +13 -1
  115. package/getUrlHashParams.cjs.js +6 -8
  116. package/getUrlHashParams.esm.js +6 -8
  117. package/getUrlHashPathname.cjs.js +7 -1
  118. package/getUrlHashPathname.esm.js +7 -1
  119. package/getUrlPathnameParts.cjs.js +10 -4
  120. package/getUrlPathnameParts.esm.js +10 -4
  121. package/getUrlQueryParams.cjs.js +12 -20
  122. package/getUrlQueryParams.esm.js +12 -20
  123. package/hashAny.cjs.d.ts +2 -0
  124. package/hashAny.cjs.default.js +1 -0
  125. package/hashAny.cjs.js +40 -0
  126. package/hashAny.cjs.mjs +2 -0
  127. package/hashAny.d.ts +2 -0
  128. package/hashAny.esm.js +35 -0
  129. package/imgEmptyPixel.cjs.js +5 -1
  130. package/imgEmptyPixel.esm.js +5 -1
  131. package/index.cjs.js +5 -3
  132. package/index.d.ts +2 -1
  133. package/index.esm.js +3 -2
  134. package/invariant.cjs.js +17 -16
  135. package/invariant.esm.js +17 -16
  136. package/isAbsoluteUrl.cjs.js +5 -2
  137. package/isAbsoluteUrl.esm.js +5 -2
  138. package/isAnyObject.cjs.js +5 -1
  139. package/isAnyObject.esm.js +5 -1
  140. package/isArray.cjs.js +5 -1
  141. package/isArray.esm.js +5 -1
  142. package/isBlob.cjs.js +5 -1
  143. package/isBlob.esm.js +5 -1
  144. package/isBoolean.cjs.js +5 -1
  145. package/isBoolean.esm.js +5 -1
  146. package/isBrowser.cjs.js +4 -1
  147. package/isBrowser.esm.js +4 -1
  148. package/isBrowserNow.cjs.js +4 -1
  149. package/isBrowserNow.esm.js +4 -1
  150. package/isDate.cjs.js +5 -1
  151. package/isDate.esm.js +5 -1
  152. package/isEmptyArray.cjs.js +5 -1
  153. package/isEmptyArray.esm.js +5 -1
  154. package/isEmptyObject.cjs.js +5 -1
  155. package/isEmptyObject.esm.js +5 -1
  156. package/isEmptyString.cjs.js +5 -1
  157. package/isEmptyString.esm.js +5 -1
  158. package/isError.cjs.js +5 -1
  159. package/isError.esm.js +5 -1
  160. package/isExternalUrl.cjs.js +9 -9
  161. package/isExternalUrl.esm.js +9 -9
  162. package/isFile.cjs.js +5 -1
  163. package/isFile.esm.js +5 -1
  164. package/isFloat.cjs.js +5 -1
  165. package/isFloat.esm.js +5 -1
  166. package/isFormData.cjs.js +5 -1
  167. package/isFormData.esm.js +5 -1
  168. package/isFullArray.cjs.js +5 -1
  169. package/isFullArray.esm.js +5 -1
  170. package/isFullObject.cjs.js +5 -1
  171. package/isFullObject.esm.js +5 -1
  172. package/isFullString.cjs.js +5 -1
  173. package/isFullString.esm.js +5 -1
  174. package/isFunction.cjs.js +5 -1
  175. package/isFunction.esm.js +5 -1
  176. package/isInt.cjs.js +5 -1
  177. package/isInt.esm.js +5 -1
  178. package/isMap.cjs.js +5 -1
  179. package/isMap.esm.js +5 -1
  180. package/isNaNValue.cjs.js +5 -1
  181. package/isNaNValue.esm.js +5 -1
  182. package/isNegativeNumber.cjs.js +5 -1
  183. package/isNegativeNumber.esm.js +5 -1
  184. package/isNull.cjs.js +5 -1
  185. package/isNull.esm.js +5 -1
  186. package/isNullOrUndefined.cjs.js +5 -1
  187. package/isNullOrUndefined.esm.js +5 -1
  188. package/isNumber.cjs.js +7 -1
  189. package/isNumber.esm.js +7 -1
  190. package/isNumericLiteral.cjs.js +8 -1
  191. package/isNumericLiteral.esm.js +8 -1
  192. package/isObject.cjs.js +5 -1
  193. package/isObject.esm.js +5 -1
  194. package/isObjectLike.cjs.js +7 -1
  195. package/isObjectLike.esm.js +7 -1
  196. package/isObjectStringKeyed.cjs.js +9 -1
  197. package/isObjectStringKeyed.esm.js +9 -1
  198. package/isOneOf.cjs.js +3 -7
  199. package/isOneOf.esm.js +3 -7
  200. package/isPlainObject.cjs.js +5 -4
  201. package/isPlainObject.esm.js +5 -4
  202. package/isPositiveNumber.cjs.js +5 -1
  203. package/isPositiveNumber.esm.js +5 -1
  204. package/isPrimitive.cjs.js +5 -6
  205. package/isPrimitive.esm.js +5 -6
  206. package/isPromise.cjs.js +5 -1
  207. package/isPromise.esm.js +5 -1
  208. package/isRegExp.cjs.js +5 -1
  209. package/isRegExp.esm.js +5 -1
  210. package/isServer.cjs.js +4 -1
  211. package/isServer.esm.js +4 -1
  212. package/isServerNow.cjs.js +4 -1
  213. package/isServerNow.esm.js +4 -1
  214. package/isSet.cjs.js +5 -1
  215. package/isSet.esm.js +5 -1
  216. package/isString.cjs.js +5 -1
  217. package/isString.esm.js +5 -1
  218. package/isSymbol.cjs.js +5 -1
  219. package/isSymbol.esm.js +5 -1
  220. package/isType.cjs.js +9 -11
  221. package/isType.esm.js +9 -11
  222. package/isUndefined.cjs.js +5 -1
  223. package/isUndefined.esm.js +5 -1
  224. package/isWeakMap.cjs.js +5 -1
  225. package/isWeakMap.esm.js +5 -1
  226. package/isWeakSet.cjs.js +5 -1
  227. package/isWeakSet.esm.js +5 -1
  228. package/kbToBytes.cjs.js +5 -1
  229. package/kbToBytes.esm.js +5 -1
  230. package/lowercase.cjs.js +5 -1
  231. package/lowercase.d.ts +1 -1
  232. package/lowercase.esm.js +5 -1
  233. package/mapListBy.cjs.js +5 -4
  234. package/mapListBy.esm.js +5 -4
  235. package/matchSorter.cjs.js +94 -239
  236. package/matchSorter.d.ts +1 -1
  237. package/matchSorter.esm.js +92 -237
  238. package/mbToBytes.cjs.js +5 -1
  239. package/mbToBytes.esm.js +5 -1
  240. package/mergeObjects.cjs.js +8 -26
  241. package/mergeObjects.esm.js +8 -26
  242. package/mergeUrlQueryParams.cjs.js +5 -12
  243. package/mergeUrlQueryParams.esm.js +5 -12
  244. package/moveSortableArrayItemByKey.cjs.js +7 -8
  245. package/moveSortableArrayItemByKey.esm.js +7 -8
  246. package/noop.cjs.js +5 -1
  247. package/noop.esm.js +5 -1
  248. package/normaliseUrl.cjs.js +9 -1
  249. package/normaliseUrl.esm.js +9 -1
  250. package/normaliseUrlPathname.cjs.js +8 -1
  251. package/normaliseUrlPathname.esm.js +8 -1
  252. package/objectFlat.cjs.js +8 -16
  253. package/objectFlat.esm.js +8 -16
  254. package/objectFlip.cjs.js +4 -4
  255. package/objectFlip.esm.js +4 -4
  256. package/objectMergeWithDefaults.cjs.js +29 -19
  257. package/objectMergeWithDefaults.d.ts +1 -1
  258. package/objectMergeWithDefaults.esm.js +29 -19
  259. package/objectOmit.cjs.js +9 -7
  260. package/objectOmit.esm.js +9 -7
  261. package/objectPick.cjs.js +6 -8
  262. package/objectPick.esm.js +6 -8
  263. package/objectSort.cjs.js +8 -1
  264. package/objectSort.esm.js +8 -1
  265. package/objectSortByKeysMatching.cjs.js +9 -1
  266. package/objectSortByKeysMatching.esm.js +9 -1
  267. package/objectToArray.cjs.js +6 -1
  268. package/objectToArray.esm.js +6 -1
  269. package/package.json +10 -5
  270. package/parseCookie.cjs.js +13 -32
  271. package/parseCookie.esm.js +13 -32
  272. package/parseURL.cjs.js +6 -13
  273. package/parseURL.esm.js +6 -13
  274. package/quaranteneProps.cjs.js +17 -15
  275. package/quaranteneProps.esm.js +17 -15
  276. package/randomInt.cjs.js +5 -1
  277. package/randomInt.esm.js +5 -1
  278. package/randomKey.cjs.js +6 -4
  279. package/randomKey.esm.js +6 -4
  280. package/readCookie.cjs.js +5 -33
  281. package/readCookie.esm.js +5 -33
  282. package/removeAccents.cjs.js +4 -9
  283. package/removeAccents.d.ts +1 -1
  284. package/removeAccents.esm.js +4 -9
  285. package/removeCookie.cjs.js +3 -7
  286. package/removeCookie.esm.js +3 -7
  287. package/removeDuplicates.cjs.js +8 -1
  288. package/removeDuplicates.esm.js +8 -1
  289. package/removeDuplicatesByKey.cjs.js +6 -12
  290. package/removeDuplicatesByKey.esm.js +6 -12
  291. package/removeDuplicatesComparing.cjs.js +3 -4
  292. package/removeDuplicatesComparing.esm.js +3 -4
  293. package/removeIndexesFromArray.cjs.js +4 -9
  294. package/removeIndexesFromArray.esm.js +4 -9
  295. package/removeTrailingSlash.cjs.js +5 -1
  296. package/removeTrailingSlash.esm.js +5 -1
  297. package/removeUrlQueryParams.cjs.js +5 -11
  298. package/removeUrlQueryParams.esm.js +5 -11
  299. package/render.cjs.js +52 -112
  300. package/render.esm.js +52 -112
  301. package/round.cjs.js +11 -3
  302. package/round.esm.js +11 -3
  303. package/roundTo.cjs.js +22 -10
  304. package/roundTo.esm.js +22 -10
  305. package/serializeCookie.cjs.js +13 -67
  306. package/serializeCookie.esm.js +13 -67
  307. package/setCookie.cjs.js +11 -41
  308. package/setCookie.esm.js +11 -41
  309. package/shuffle.cjs.js +15 -16
  310. package/shuffle.esm.js +15 -16
  311. package/slugify.cjs.js +20 -9
  312. package/slugify.esm.js +20 -9
  313. package/split.cjs.js +6 -1
  314. package/split.esm.js +6 -1
  315. package/splitReverse.cjs.js +6 -1
  316. package/splitReverse.esm.js +6 -1
  317. package/swapMap.cjs.js +5 -7
  318. package/swapMap.esm.js +5 -7
  319. package/throttle.cjs.js +6 -14
  320. package/throttle.d.ts +1 -1
  321. package/throttle.esm.js +6 -14
  322. package/titleCase.cjs.js +6 -3
  323. package/titleCase.esm.js +6 -3
  324. package/toNumber.cjs.js +5 -1
  325. package/toNumber.esm.js +5 -1
  326. package/toRgba.cjs.js +5 -7
  327. package/toRgba.esm.js +5 -7
  328. package/transformToUrlPathname.cjs.js +9 -3
  329. package/transformToUrlPathname.esm.js +9 -3
  330. package/truncate.cjs.js +5 -5
  331. package/truncate.esm.js +5 -5
  332. package/tryUntil.cjs.js +14 -14
  333. package/tryUntil.esm.js +14 -14
  334. package/uid.cjs.js +5 -5
  335. package/uid.esm.js +5 -5
  336. package/updateLinkParams.cjs.js +7 -5
  337. package/updateLinkParams.esm.js +7 -5
  338. package/updateUrlQueryParams.cjs.js +5 -7
  339. package/updateUrlQueryParams.esm.js +5 -7
  340. package/uppercase.cjs.js +6 -1
  341. package/uppercase.d.ts +1 -1
  342. package/uppercase.esm.js +6 -1
  343. package/uuid.cjs.js +6 -4
  344. package/uuid.esm.js +6 -4
  345. package/uuidNumeric.cjs.js +4 -1
  346. package/uuidNumeric.esm.js +4 -1
  347. package/wait.cjs.js +5 -1
  348. package/wait.esm.js +5 -1
  349. package/accentSets.cjs.d.ts +0 -2
  350. package/accentSets.cjs.default.js +0 -1
  351. package/accentSets.cjs.js +0 -36
  352. package/accentSets.cjs.mjs +0 -2
  353. package/accentSets.esm.js +0 -31
  354. /package/{accentSets.d.ts → accentsSets.d.ts} +0 -0
package/objectFlat.cjs.js CHANGED
@@ -2,22 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let objectFlat = (obj, delimiter = ".", parent = "") => {
6
- return Object.keys(obj).reduce((acc, _key) => {
7
- const key = _key;
8
- const propName = (parent ? `${parent}${delimiter}${key}` : key);
9
- if (typeof obj[key] === "object") {
10
- acc = {
11
- ...acc,
12
- ...objectFlat(obj[key], delimiter, propName),
13
- };
14
- }
15
- else {
16
- acc[propName] = obj[key];
17
- }
18
- return acc;
19
- }, {});
20
- };
5
+ /**
6
+ * Flatten an object concatenating its nested keys with the given delimiter
7
+ *
8
+ * @category object
9
+ *
10
+ * @param obj Input object
11
+ * @param delimiter `.` dot by default
12
+ */let objectFlat=(e,t=".",o="")=>Object.keys(e).reduce((c,l)=>{let b=o?`${o}${t}${l}`:l;return "object"==typeof e[l]?c={...c,...objectFlat(e[l],t,b)}:c[b]=e[l],c},{});
21
13
 
22
14
  exports["default"] = objectFlat;
23
15
  exports.objectFlat = objectFlat;
package/objectFlat.esm.js CHANGED
@@ -1,18 +1,10 @@
1
- let objectFlat = (obj, delimiter = ".", parent = "") => {
2
- return Object.keys(obj).reduce((acc, _key) => {
3
- const key = _key;
4
- const propName = (parent ? `${parent}${delimiter}${key}` : key);
5
- if (typeof obj[key] === "object") {
6
- acc = {
7
- ...acc,
8
- ...objectFlat(obj[key], delimiter, propName),
9
- };
10
- }
11
- else {
12
- acc[propName] = obj[key];
13
- }
14
- return acc;
15
- }, {});
16
- };
1
+ /**
2
+ * Flatten an object concatenating its nested keys with the given delimiter
3
+ *
4
+ * @category object
5
+ *
6
+ * @param obj Input object
7
+ * @param delimiter `.` dot by default
8
+ */let objectFlat=(e,t=".",o="")=>Object.keys(e).reduce((c,l)=>{let b=o?`${o}${t}${l}`:l;return "object"==typeof e[l]?c={...c,...objectFlat(e[l],t,b)}:c[b]=e[l],c},{});
17
9
 
18
10
  export { objectFlat as default, objectFlat };
package/objectFlip.cjs.js CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let objectFlip = (input, keyTransformer) => Object.fromEntries(Object.entries(input).map(([key, value]) => [
6
- value,
7
- keyTransformer ? keyTransformer(key) : key,
8
- ]));
5
+ /**
6
+ * @category object
7
+ * @borrows [jacobparis.com](https://www.jacobparis.com/content/reversing-a-record-in-typescript#typescript)
8
+ */let objectFlip=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,o])=>[o,t?t(e):e]));
9
9
 
10
10
  exports["default"] = objectFlip;
11
11
  exports.objectFlip = objectFlip;
package/objectFlip.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- let objectFlip = (input, keyTransformer) => Object.fromEntries(Object.entries(input).map(([key, value]) => [
2
- value,
3
- keyTransformer ? keyTransformer(key) : key,
4
- ]));
1
+ /**
2
+ * @category object
3
+ * @borrows [jacobparis.com](https://www.jacobparis.com/content/reversing-a-record-in-typescript#typescript)
4
+ */let objectFlip=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,o])=>[o,t?t(e):e]));
5
5
 
6
6
  export { objectFlip as default, objectFlip };
@@ -6,25 +6,35 @@ var isObject = require('./isObject.cjs.js');
6
6
  require('./isPlainObject.cjs.js');
7
7
  require('./getType.cjs.js');
8
8
 
9
- let objectMergeWithDefaults = (defaults, overrides) => overrides
10
- ? Object.keys(overrides).reduce((result, _key) => {
11
- const keyDefaults = _key;
12
- const keyOverrides = _key;
13
- if (isObject.isObject(overrides[keyOverrides])) {
14
- if (!defaults[keyDefaults]) {
15
- defaults[keyDefaults] = {};
16
- }
17
- result[keyDefaults] = objectMergeWithDefaults(defaults[keyDefaults], overrides[keyOverrides]);
18
- }
19
- else {
20
- result[keyDefaults] =
21
- overrides[keyOverrides] === undefined
22
- ? defaults[keyDefaults]
23
- : overrides[keyOverrides];
24
- }
25
- return result;
26
- }, { ...defaults })
27
- : defaults;
9
+ // export type ObjectMergeWithDefaults<Defaults, Overrides> = Simplify<
10
+ // Overrides extends undefined
11
+ // ? Defaults
12
+ // : Overrides extends PlainObject
13
+ // ? {
14
+ // [K in keyof Overrides]-?: Overrides[K] extends undefined
15
+ // ? K extends keyof Defaults
16
+ // ? Defaults[K]
17
+ // : never
18
+ // : K extends keyof Defaults
19
+ // ? ObjectMergeWithDefaults<Defaults[K], Overrides[K]>
20
+ // : Overrides[K];
21
+ // } /* & (Defaults extends PlainObject
22
+ // ? {
23
+ // [K in Exclude<keyof Defaults, keyof Overrides>]: Defaults[K];
24
+ // }
25
+ // : Defaults) */
26
+ // : Overrides
27
+ // >;
28
+ /**
29
+ * Merge object _overrides_ onto object _defaults_, immutably
30
+ *
31
+ * Simple object merging utility, by design:
32
+ * - no `array` support
33
+ * - `undefined` values do not override default values, a.k.a. it makes it harder
34
+ * to remove a property defined on the defaults
35
+ *
36
+ * @category object
37
+ */let objectMergeWithDefaults=(t,o)=>o?Object.keys(o).reduce((r,c)=>(isObject.isObject(o[c])?(t[c]||(t[c]={}),r[c]=objectMergeWithDefaults(t[c],o[c])):r[c]=void 0===o[c]?t[c]:o[c],r),{...t}):t;
28
38
 
29
39
  exports["default"] = objectMergeWithDefaults;
30
40
  exports.objectMergeWithDefaults = objectMergeWithDefaults;
@@ -2,5 +2,5 @@ import type { PlainObject } from "./getType";
2
2
  export type ObjectMergeWithDefaults<Defaults, Overrides> = Overrides extends undefined ? Defaults : Overrides extends PlainObject ? {
3
3
  [K in keyof Overrides]-?: Overrides[K] extends undefined ? K extends keyof Defaults ? Defaults[K] : never : K extends keyof Defaults ? ObjectMergeWithDefaults<Defaults[K], Overrides[K]> : Overrides[K];
4
4
  } : Overrides;
5
- export declare let objectMergeWithDefaults: <D extends PlainObject, O extends PlainObject>(defaults: D, overrides?: O | undefined) => ObjectMergeWithDefaults<D, O>;
5
+ export declare let objectMergeWithDefaults: <D extends PlainObject, O extends PlainObject>(defaults: D, overrides?: O) => ObjectMergeWithDefaults<D, O>;
6
6
  export default objectMergeWithDefaults;
@@ -2,24 +2,34 @@ import { isObject } from './isObject.esm.js';
2
2
  import './isPlainObject.esm.js';
3
3
  import './getType.esm.js';
4
4
 
5
- let objectMergeWithDefaults = (defaults, overrides) => overrides
6
- ? Object.keys(overrides).reduce((result, _key) => {
7
- const keyDefaults = _key;
8
- const keyOverrides = _key;
9
- if (isObject(overrides[keyOverrides])) {
10
- if (!defaults[keyDefaults]) {
11
- defaults[keyDefaults] = {};
12
- }
13
- result[keyDefaults] = objectMergeWithDefaults(defaults[keyDefaults], overrides[keyOverrides]);
14
- }
15
- else {
16
- result[keyDefaults] =
17
- overrides[keyOverrides] === undefined
18
- ? defaults[keyDefaults]
19
- : overrides[keyOverrides];
20
- }
21
- return result;
22
- }, { ...defaults })
23
- : defaults;
5
+ // export type ObjectMergeWithDefaults<Defaults, Overrides> = Simplify<
6
+ // Overrides extends undefined
7
+ // ? Defaults
8
+ // : Overrides extends PlainObject
9
+ // ? {
10
+ // [K in keyof Overrides]-?: Overrides[K] extends undefined
11
+ // ? K extends keyof Defaults
12
+ // ? Defaults[K]
13
+ // : never
14
+ // : K extends keyof Defaults
15
+ // ? ObjectMergeWithDefaults<Defaults[K], Overrides[K]>
16
+ // : Overrides[K];
17
+ // } /* & (Defaults extends PlainObject
18
+ // ? {
19
+ // [K in Exclude<keyof Defaults, keyof Overrides>]: Defaults[K];
20
+ // }
21
+ // : Defaults) */
22
+ // : Overrides
23
+ // >;
24
+ /**
25
+ * Merge object _overrides_ onto object _defaults_, immutably
26
+ *
27
+ * Simple object merging utility, by design:
28
+ * - no `array` support
29
+ * - `undefined` values do not override default values, a.k.a. it makes it harder
30
+ * to remove a property defined on the defaults
31
+ *
32
+ * @category object
33
+ */let objectMergeWithDefaults=(t,o)=>o?Object.keys(o).reduce((r,c)=>(isObject(o[c])?(t[c]||(t[c]={}),r[c]=objectMergeWithDefaults(t[c],o[c])):r[c]=void 0===o[c]?t[c]:o[c],r),{...t}):t;
24
34
 
25
35
  export { objectMergeWithDefaults as default, objectMergeWithDefaults };
package/objectOmit.cjs.js CHANGED
@@ -2,13 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let objectOmit = (object, keys) => Object.keys(object).reduce((output, key) => {
6
- if (!keys.includes(key)) {
7
- output[key] =
8
- object[key];
9
- }
10
- return output;
11
- }, {});
5
+ /**
6
+ * Omit object properties by removing the given keys, it returns a
7
+ * new object.
8
+ *
9
+ * NOTE: most of the time using a normal [destructuring assignment](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) is enough,
10
+ * use this utility only when it makes sense.
11
+ *
12
+ * @category object
13
+ */let objectOmit=(e,t)=>Object.keys(e).reduce((c,o)=>(t.includes(o)||(c[o]=e[o]),c),{});
12
14
 
13
15
  exports["default"] = objectOmit;
14
16
  exports.objectOmit = objectOmit;
package/objectOmit.esm.js CHANGED
@@ -1,9 +1,11 @@
1
- let objectOmit = (object, keys) => Object.keys(object).reduce((output, key) => {
2
- if (!keys.includes(key)) {
3
- output[key] =
4
- object[key];
5
- }
6
- return output;
7
- }, {});
1
+ /**
2
+ * Omit object properties by removing the given keys, it returns a
3
+ * new object.
4
+ *
5
+ * NOTE: most of the time using a normal [destructuring assignment](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) is enough,
6
+ * use this utility only when it makes sense.
7
+ *
8
+ * @category object
9
+ */let objectOmit=(e,t)=>Object.keys(e).reduce((c,o)=>(t.includes(o)||(c[o]=e[o]),c),{});
8
10
 
9
11
  export { objectOmit as default, objectOmit };
package/objectPick.cjs.js CHANGED
@@ -2,14 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let objectPick = (object, keys) => {
6
- const output = {};
7
- let len = keys.length;
8
- while (len--) {
9
- output[keys[len]] = object[keys[len]];
10
- }
11
- return output;
12
- };
5
+ /**
6
+ * Pick object properties by selecting only the given keys, it returns a
7
+ * new object.
8
+ *
9
+ * @category object
10
+ */let objectPick=(e,t)=>{let o={},r=t.length;for(;r--;)o[t[r]]=e[t[r]];return o};
13
11
 
14
12
  exports["default"] = objectPick;
15
13
  exports.objectPick = objectPick;
package/objectPick.esm.js CHANGED
@@ -1,10 +1,8 @@
1
- let objectPick = (object, keys) => {
2
- const output = {};
3
- let len = keys.length;
4
- while (len--) {
5
- output[keys[len]] = object[keys[len]];
6
- }
7
- return output;
8
- };
1
+ /**
2
+ * Pick object properties by selecting only the given keys, it returns a
3
+ * new object.
4
+ *
5
+ * @category object
6
+ */let objectPick=(e,t)=>{let o={},r=t.length;for(;r--;)o[t[r]]=e[t[r]];return o};
9
7
 
10
8
  export { objectPick as default, objectPick };
package/objectSort.cjs.js CHANGED
@@ -2,7 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let objectSort = (data, compareFn) => Object.fromEntries(Object.entries(data).sort(compareFn));
5
+ /**
6
+ * @category object
7
+ *
8
+ * @pure
9
+ * @param data The object whose properties you want to sort
10
+ * @param compareFn Function used to determine the order of the elements. It is expected to return a negative value if the first argument is less than the second argument, zero if they're equal, and a positive value otherwise. If omitted, the elements are sorted in ascending, ASCII character order.
11
+ * @returns a _new_ object
12
+ */let objectSort=(t,e)=>Object.fromEntries(Object.entries(t).sort(e));
6
13
 
7
14
  exports["default"] = objectSort;
8
15
  exports.objectSort = objectSort;
package/objectSort.esm.js CHANGED
@@ -1,3 +1,10 @@
1
- let objectSort = (data, compareFn) => Object.fromEntries(Object.entries(data).sort(compareFn));
1
+ /**
2
+ * @category object
3
+ *
4
+ * @pure
5
+ * @param data The object whose properties you want to sort
6
+ * @param compareFn Function used to determine the order of the elements. It is expected to return a negative value if the first argument is less than the second argument, zero if they're equal, and a positive value otherwise. If omitted, the elements are sorted in ascending, ASCII character order.
7
+ * @returns a _new_ object
8
+ */let objectSort=(t,e)=>Object.fromEntries(Object.entries(t).sort(e));
2
9
 
3
10
  export { objectSort as default, objectSort };
@@ -4,7 +4,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var objectSort = require('./objectSort.cjs.js');
6
6
 
7
- let objectSortByKeysMatching = (data, keyMatch) => objectSort.objectSort(data, ([a], [b]) => (a === keyMatch ? -1 : a.localeCompare(b)));
7
+ /**
8
+ * @category object
9
+ *
10
+ * @pure
11
+ * @param data The object whose properties you want to sort
12
+ * @param keyMatch The value to compare to each `data` object keys, the ones
13
+ * matching it is sorted first, the rest are sorted by `localeCompare` on keys
14
+ * @returns a _new_ object
15
+ */let objectSortByKeysMatching=(o,e)=>objectSort.objectSort(o,([t],[o])=>t===e?-1:t.localeCompare(o));// Object.fromEntries(
8
16
 
9
17
  exports["default"] = objectSortByKeysMatching;
10
18
  exports.objectSortByKeysMatching = objectSortByKeysMatching;
@@ -1,5 +1,13 @@
1
1
  import { objectSort } from './objectSort.esm.js';
2
2
 
3
- let objectSortByKeysMatching = (data, keyMatch) => objectSort(data, ([a], [b]) => (a === keyMatch ? -1 : a.localeCompare(b)));
3
+ /**
4
+ * @category object
5
+ *
6
+ * @pure
7
+ * @param data The object whose properties you want to sort
8
+ * @param keyMatch The value to compare to each `data` object keys, the ones
9
+ * matching it is sorted first, the rest are sorted by `localeCompare` on keys
10
+ * @returns a _new_ object
11
+ */let objectSortByKeysMatching=(o,e)=>objectSort(o,([t],[o])=>t===e?-1:t.localeCompare(o));// Object.fromEntries(
4
12
 
5
13
  export { objectSortByKeysMatching as default, objectSortByKeysMatching };
@@ -2,7 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let objectToArray = (obj, iterator) => Object.keys(obj).map(iterator);
5
+ /**
6
+ * Quick typed replacement of `Object.keys(object).map(key => ...)`
7
+ *
8
+ * @category array
9
+ * @category object
10
+ */let objectToArray=(e,t)=>Object.keys(e).map(t);
6
11
 
7
12
  exports["default"] = objectToArray;
8
13
  exports.objectToArray = objectToArray;
@@ -1,3 +1,8 @@
1
- let objectToArray = (obj, iterator) => Object.keys(obj).map(iterator);
1
+ /**
2
+ * Quick typed replacement of `Object.keys(object).map(key => ...)`
3
+ *
4
+ * @category array
5
+ * @category object
6
+ */let objectToArray=(e,t)=>Object.keys(e).map(t);
2
7
 
3
8
  export { objectToArray as default, objectToArray };
package/package.json CHANGED
@@ -21,10 +21,10 @@
21
21
  "import": "./Emitter.cjs.mjs",
22
22
  "default": "./Emitter.cjs.js"
23
23
  },
24
- "./accentSets": {
25
- "module": "./accentSets.esm.js",
26
- "import": "./accentSets.cjs.mjs",
27
- "default": "./accentSets.cjs.js"
24
+ "./accentsSets": {
25
+ "module": "./accentsSets.esm.js",
26
+ "import": "./accentsSets.cjs.mjs",
27
+ "default": "./accentsSets.cjs.js"
28
28
  },
29
29
  "./addOrReplaceAtIdx": {
30
30
  "module": "./addOrReplaceAtIdx.esm.js",
@@ -301,6 +301,11 @@
301
301
  "import": "./getUrlQueryParams.cjs.mjs",
302
302
  "default": "./getUrlQueryParams.cjs.js"
303
303
  },
304
+ "./hashAny": {
305
+ "module": "./hashAny.esm.js",
306
+ "import": "./hashAny.cjs.mjs",
307
+ "default": "./hashAny.cjs.js"
308
+ },
304
309
  "./imgEmptyPixel": {
305
310
  "module": "./imgEmptyPixel.esm.js",
306
311
  "import": "./imgEmptyPixel.cjs.mjs",
@@ -844,5 +849,5 @@
844
849
  },
845
850
  "module": "./index.esm.js",
846
851
  "main": "./index.cjs.js",
847
- "version": "2.0.0-beta.80"
852
+ "version": "2.0.0-beta.83"
848
853
  }
@@ -2,38 +2,19 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let tryDecode = (str, decode) => {
6
- try {
7
- return decode(str);
8
- }
9
- catch (e) {
10
- return str;
11
- }
12
- };
13
- let parseCookie = (str, attributes = {}) => {
14
- if (typeof str !== "string") {
15
- throw new TypeError("argument str must be a string");
16
- }
17
- const obj = {};
18
- const pairs = str.split(";");
19
- const { decode = decodeURIComponent } = attributes;
20
- for (let i = 0; i < pairs.length; i++) {
21
- const pair = pairs[i];
22
- const index = pair.indexOf("=");
23
- if (index < 0) {
24
- continue;
25
- }
26
- const key = pair.substring(0, index).trim();
27
- if (undefined == obj[key]) {
28
- let val = pair.substring(index + 1, pair.length).trim();
29
- if (val[0] === '"') {
30
- val = val.slice(1, -1);
31
- }
32
- obj[key] = tryDecode(val, decode);
33
- }
34
- }
35
- return obj;
36
- };
5
+ /**
6
+ * Try decoding a string using a decoding function.
7
+ */let t=(t,e)=>{try{return e(t)}catch(e){return t}};/**
8
+ * Parse a cookie header.
9
+ *
10
+ * Parse the given cookie header string into an object
11
+ * The object has the various cookies as keys(names) => values
12
+ *
13
+ * @category cookie
14
+ */let parseCookie=(e,r={})=>{if("string"!=typeof e)throw TypeError("argument str must be a string");let i={},n=e.split(";"),{decode:o=decodeURIComponent}=r;for(let e=0;e<n.length;e++){let r=n[e],l=r.indexOf("=");// skip things that don't look like key=value
15
+ if(l<0)continue;let s=r.substring(0,l).trim();// only assign once
16
+ if(void 0==i[s]){let e=r.substring(l+1,r.length).trim();'"'===// quoted values
17
+ e[0]&&(e=e.slice(1,-1)),i[s]=t(e,o);}}return i};
37
18
 
38
19
  exports["default"] = parseCookie;
39
20
  exports.parseCookie = parseCookie;
@@ -1,34 +1,15 @@
1
- let tryDecode = (str, decode) => {
2
- try {
3
- return decode(str);
4
- }
5
- catch (e) {
6
- return str;
7
- }
8
- };
9
- let parseCookie = (str, attributes = {}) => {
10
- if (typeof str !== "string") {
11
- throw new TypeError("argument str must be a string");
12
- }
13
- const obj = {};
14
- const pairs = str.split(";");
15
- const { decode = decodeURIComponent } = attributes;
16
- for (let i = 0; i < pairs.length; i++) {
17
- const pair = pairs[i];
18
- const index = pair.indexOf("=");
19
- if (index < 0) {
20
- continue;
21
- }
22
- const key = pair.substring(0, index).trim();
23
- if (undefined == obj[key]) {
24
- let val = pair.substring(index + 1, pair.length).trim();
25
- if (val[0] === '"') {
26
- val = val.slice(1, -1);
27
- }
28
- obj[key] = tryDecode(val, decode);
29
- }
30
- }
31
- return obj;
32
- };
1
+ /**
2
+ * Try decoding a string using a decoding function.
3
+ */let t=(t,e)=>{try{return e(t)}catch(e){return t}};/**
4
+ * Parse a cookie header.
5
+ *
6
+ * Parse the given cookie header string into an object
7
+ * The object has the various cookies as keys(names) => values
8
+ *
9
+ * @category cookie
10
+ */let parseCookie=(e,r={})=>{if("string"!=typeof e)throw TypeError("argument str must be a string");let i={},n=e.split(";"),{decode:o=decodeURIComponent}=r;for(let e=0;e<n.length;e++){let r=n[e],l=r.indexOf("=");// skip things that don't look like key=value
11
+ if(l<0)continue;let s=r.substring(0,l).trim();// only assign once
12
+ if(void 0==i[s]){let e=r.substring(l+1,r.length).trim();'"'===// quoted values
13
+ e[0]&&(e=e.slice(1,-1)),i[s]=t(e,o);}}return i};
33
14
 
34
15
  export { parseCookie as default, parseCookie };
package/parseURL.cjs.js CHANGED
@@ -2,19 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let parseURL = (url) => {
6
- const match = url.match(/^(https?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
7
- return (match && {
8
- href: url,
9
- protocol: match[1],
10
- host: match[2],
11
- hostname: match[3],
12
- port: match[4],
13
- pathname: match[5],
14
- search: match[6],
15
- hash: match[7],
16
- });
17
- };
5
+ /**
6
+ * Solution without DOM or specific env native methods
7
+ *
8
+ * @category location
9
+ * @see https://stackoverflow.com/a/21553982/1938970
10
+ */let parseURL=t=>{let e=t.match(/^(https?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);return e&&{href:t,protocol:e[1],host:e[2],hostname:e[3],port:e[4],pathname:e[5],search:e[6],hash:e[7]}};
18
11
 
19
12
  exports["default"] = parseURL;
20
13
  exports.parseURL = parseURL;
package/parseURL.esm.js CHANGED
@@ -1,15 +1,8 @@
1
- let parseURL = (url) => {
2
- const match = url.match(/^(https?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
3
- return (match && {
4
- href: url,
5
- protocol: match[1],
6
- host: match[2],
7
- hostname: match[3],
8
- port: match[4],
9
- pathname: match[5],
10
- search: match[6],
11
- hash: match[7],
12
- });
13
- };
1
+ /**
2
+ * Solution without DOM or specific env native methods
3
+ *
4
+ * @category location
5
+ * @see https://stackoverflow.com/a/21553982/1938970
6
+ */let parseURL=t=>{let e=t.match(/^(https?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);return e&&{href:t,protocol:e[1],host:e[2],hostname:e[3],port:e[4],pathname:e[5],search:e[6],hash:e[7]}};
14
7
 
15
8
  export { parseURL as default, parseURL };
@@ -2,21 +2,23 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let quaranteneProps = (props, propsKeysToQuarantene) => {
6
- const healthyProps = {
7
- _: {},
8
- };
9
- for (const key in props) {
10
- const prop = props[key];
11
- if (propsKeysToQuarantene.includes(key)) {
12
- healthyProps._[key] = prop;
13
- }
14
- else {
15
- healthyProps[key] = prop;
16
- }
17
- }
18
- return healthyProps;
19
- };
5
+ /**
6
+ * @category impl
7
+ * @example
8
+ *
9
+ * ```ts
10
+ * const { _: { onKeyDown }, myOwnProp, ...rest } = quaranteneProps([
11
+ * "onPointerLeave",
12
+ * "onPointerMove",
13
+ * "onClick",
14
+ * "onPointerDown",
15
+ * "onPointerUp",
16
+ * "onKeyDown",
17
+ * ]);
18
+ * ```
19
+ */let quaranteneProps=(e,t)=>{// approach 1)
20
+ let r={_:{}};for(let n in e){let l=e[n];t.includes(n)?r._[n]=l:// @ts-expect-error nevermind
21
+ r[n]=l;}return r};// for these types see https://stackoverflow.com/a/65673414/1938970
20
22
 
21
23
  exports["default"] = quaranteneProps;
22
24
  exports.quaranteneProps = quaranteneProps;
@@ -1,17 +1,19 @@
1
- let quaranteneProps = (props, propsKeysToQuarantene) => {
2
- const healthyProps = {
3
- _: {},
4
- };
5
- for (const key in props) {
6
- const prop = props[key];
7
- if (propsKeysToQuarantene.includes(key)) {
8
- healthyProps._[key] = prop;
9
- }
10
- else {
11
- healthyProps[key] = prop;
12
- }
13
- }
14
- return healthyProps;
15
- };
1
+ /**
2
+ * @category impl
3
+ * @example
4
+ *
5
+ * ```ts
6
+ * const { _: { onKeyDown }, myOwnProp, ...rest } = quaranteneProps([
7
+ * "onPointerLeave",
8
+ * "onPointerMove",
9
+ * "onClick",
10
+ * "onPointerDown",
11
+ * "onPointerUp",
12
+ * "onKeyDown",
13
+ * ]);
14
+ * ```
15
+ */let quaranteneProps=(e,t)=>{// approach 1)
16
+ let r={_:{}};for(let n in e){let l=e[n];t.includes(n)?r._[n]=l:// @ts-expect-error nevermind
17
+ r[n]=l;}return r};// for these types see https://stackoverflow.com/a/65673414/1938970
16
18
 
17
19
  export { quaranteneProps as default, quaranteneProps };