@koine/utils 2.0.0-beta.72 → 2.0.0-beta.74

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 (333) hide show
  1. package/Defer.d.ts +1 -0
  2. package/Defer.js +11 -0
  3. package/Emitter.d.ts +1 -0
  4. package/Emitter.js +20 -0
  5. package/accentSets.d.ts +1 -0
  6. package/accentSets.js +30 -0
  7. package/addOrReplaceAtIdx.d.ts +1 -0
  8. package/addOrReplaceAtIdx.js +15 -0
  9. package/areEqual.d.ts +1 -1
  10. package/areEqual.js +46 -0
  11. package/arrayFilterFalsy.d.ts +1 -0
  12. package/arrayFilterFalsy.js +2 -0
  13. package/arrayFindLastIndex.d.ts +1 -0
  14. package/arrayFindLastIndex.js +9 -0
  15. package/arrayOfAll.d.ts +1 -0
  16. package/arrayOfAll.js +2 -0
  17. package/arraySum.d.ts +1 -0
  18. package/arraySum.js +2 -0
  19. package/arrayToLookup.d.ts +1 -0
  20. package/arrayToLookup.js +5 -0
  21. package/arrayUniqueByProperties.d.ts +1 -0
  22. package/arrayUniqueByProperties.js +2 -0
  23. package/buildUrlQueryString.d.ts +1 -0
  24. package/buildUrlQueryString.js +21 -0
  25. package/capitalize.d.ts +1 -0
  26. package/capitalize.js +3 -0
  27. package/changeCaseCamel.d.ts +1 -0
  28. package/changeCaseCamel.js +19 -0
  29. package/changeCaseCapital.d.ts +1 -0
  30. package/changeCaseCapital.js +12 -0
  31. package/changeCaseConstant.d.ts +1 -0
  32. package/changeCaseConstant.js +8 -0
  33. package/changeCaseDot.d.ts +1 -0
  34. package/changeCaseDot.js +3 -0
  35. package/changeCaseHelpers.d.ts +0 -5
  36. package/changeCaseHelpers.js +71 -0
  37. package/changeCaseKebab.d.ts +1 -0
  38. package/changeCaseKebab.js +3 -0
  39. package/changeCaseNone.d.ts +1 -0
  40. package/changeCaseNone.js +8 -0
  41. package/changeCasePascal.d.ts +1 -0
  42. package/changeCasePascal.js +11 -0
  43. package/changeCasePascalSnake.d.ts +1 -0
  44. package/changeCasePascalSnake.js +3 -0
  45. package/changeCasePath.d.ts +1 -0
  46. package/changeCasePath.js +3 -0
  47. package/changeCaseSentence.d.ts +1 -0
  48. package/changeCaseSentence.js +17 -0
  49. package/changeCaseSnake.d.ts +1 -0
  50. package/changeCaseSnake.js +3 -0
  51. package/changeCaseTrain.d.ts +1 -0
  52. package/changeCaseTrain.js +3 -0
  53. package/chunkByChunks.d.ts +1 -0
  54. package/chunkByChunks.js +32 -0
  55. package/chunkBySize.d.ts +1 -0
  56. package/chunkBySize.js +8 -0
  57. package/clamp.d.ts +1 -0
  58. package/clamp.js +2 -0
  59. package/clsx.d.ts +1 -1
  60. package/clsx.js +40 -0
  61. package/convertRange.d.ts +1 -0
  62. package/convertRange.js +2 -0
  63. package/cookie.d.ts +0 -3
  64. package/cookie.js +1 -0
  65. package/createPalette.d.ts +1 -1
  66. package/createPalette.js +12 -0
  67. package/debounce.d.ts +1 -0
  68. package/debounce.js +18 -0
  69. package/debouncePromise.d.ts +1 -0
  70. package/debouncePromise.js +52 -0
  71. package/debounceRaf.d.ts +1 -0
  72. package/debounceRaf.js +13 -0
  73. package/decode.d.ts +1 -0
  74. package/decode.js +2 -0
  75. package/encode.d.ts +1 -0
  76. package/encode.js +2 -0
  77. package/ensureInt.d.ts +1 -0
  78. package/ensureInt.js +2 -0
  79. package/env.js +1 -0
  80. package/errorToString.d.ts +1 -0
  81. package/errorToString.js +3 -0
  82. package/escapeRegExp.d.ts +1 -0
  83. package/escapeRegExp.js +2 -0
  84. package/findDuplicatedIndexes.d.ts +1 -0
  85. package/findDuplicatedIndexes.js +11 -0
  86. package/forin.d.ts +1 -0
  87. package/forin.js +6 -0
  88. package/gbToBytes.d.ts +1 -0
  89. package/gbToBytes.js +2 -0
  90. package/getEmptyArray.d.ts +1 -0
  91. package/getEmptyArray.js +5 -0
  92. package/getKeys.d.ts +1 -0
  93. package/getKeys.js +2 -0
  94. package/getMediaQueryWidthResolvers.d.ts +1 -0
  95. package/getMediaQueryWidthResolvers.js +42 -0
  96. package/getMediaQueryWidthTailwindScreens.d.ts +1 -0
  97. package/getMediaQueryWidthTailwindScreens.js +27 -0
  98. package/getNonce.d.ts +1 -0
  99. package/getNonce.js +3 -0
  100. package/getParamAmong.d.ts +1 -0
  101. package/getParamAmong.js +6 -0
  102. package/getParamAsInt.d.ts +1 -0
  103. package/getParamAsInt.js +9 -0
  104. package/getParamAsString.d.ts +1 -0
  105. package/getParamAsString.js +3 -0
  106. package/getType.d.ts +1 -0
  107. package/getType.js +2 -0
  108. package/getUrlHashParams.d.ts +1 -0
  109. package/getUrlHashParams.js +9 -0
  110. package/getUrlHashPathname.d.ts +1 -0
  111. package/getUrlHashPathname.js +2 -0
  112. package/getUrlPathnameParts.d.ts +1 -0
  113. package/getUrlPathnameParts.js +6 -0
  114. package/getUrlQueryParams.d.ts +1 -0
  115. package/getUrlQueryParams.js +22 -0
  116. package/imgEmptyPixel.d.ts +1 -0
  117. package/imgEmptyPixel.js +2 -0
  118. package/index.cjs.js +69 -69
  119. package/index.d.ts +1 -1
  120. package/index.esm.js +69 -69
  121. package/index.js +156 -0
  122. package/invariant.d.ts +1 -0
  123. package/invariant.js +17 -0
  124. package/isAbsoluteUrl.d.ts +1 -0
  125. package/isAbsoluteUrl.js +3 -0
  126. package/isAnyObject.d.ts +1 -0
  127. package/isAnyObject.js +3 -0
  128. package/isArray.d.ts +1 -0
  129. package/isArray.js +3 -0
  130. package/isBlob.d.ts +1 -0
  131. package/isBlob.js +3 -0
  132. package/isBoolean.d.ts +1 -0
  133. package/isBoolean.js +3 -0
  134. package/isBrowser.d.ts +1 -0
  135. package/isBrowser.js +2 -0
  136. package/isBrowserNow.d.ts +1 -0
  137. package/isBrowserNow.js +3 -0
  138. package/isDate.d.ts +1 -0
  139. package/isDate.js +3 -0
  140. package/isEmptyArray.d.ts +1 -0
  141. package/isEmptyArray.js +3 -0
  142. package/isEmptyObject.d.ts +1 -0
  143. package/isEmptyObject.js +3 -0
  144. package/isEmptyString.d.ts +1 -0
  145. package/isEmptyString.js +2 -0
  146. package/isError.d.ts +1 -0
  147. package/isError.js +3 -0
  148. package/isExternalUrl.d.ts +1 -0
  149. package/isExternalUrl.js +11 -0
  150. package/isFile.d.ts +1 -0
  151. package/isFile.js +3 -0
  152. package/isFloat.d.ts +1 -0
  153. package/isFloat.js +3 -0
  154. package/isFormData.d.ts +1 -0
  155. package/isFormData.js +3 -0
  156. package/isFullArray.d.ts +1 -0
  157. package/isFullArray.js +3 -0
  158. package/isFullObject.d.ts +1 -0
  159. package/isFullObject.js +3 -0
  160. package/isFullString.d.ts +1 -0
  161. package/isFullString.js +3 -0
  162. package/isFunction.d.ts +1 -0
  163. package/isFunction.js +2 -0
  164. package/isInt.d.ts +1 -0
  165. package/isInt.js +3 -0
  166. package/isMap.d.ts +1 -0
  167. package/isMap.js +3 -0
  168. package/isNaNValue.d.ts +1 -0
  169. package/isNaNValue.js +3 -0
  170. package/isNegativeNumber.d.ts +1 -0
  171. package/isNegativeNumber.js +3 -0
  172. package/isNull.d.ts +1 -0
  173. package/isNull.js +3 -0
  174. package/isNullOrUndefined.d.ts +1 -0
  175. package/isNullOrUndefined.js +5 -0
  176. package/isNumber.d.ts +1 -0
  177. package/isNumber.js +3 -0
  178. package/isNumericLiteral.d.ts +1 -0
  179. package/isNumericLiteral.js +2 -0
  180. package/isObject.d.ts +1 -0
  181. package/isObject.js +3 -0
  182. package/isObjectLike.d.ts +1 -0
  183. package/isObjectLike.js +3 -0
  184. package/isObjectStringKeyed.d.ts +1 -0
  185. package/isObjectStringKeyed.js +3 -0
  186. package/isOneOf.d.ts +1 -0
  187. package/isOneOf.js +8 -0
  188. package/isPlainObject.d.ts +1 -0
  189. package/isPlainObject.js +6 -0
  190. package/isPositiveNumber.d.ts +1 -0
  191. package/isPositiveNumber.js +3 -0
  192. package/isPrimitive.d.ts +1 -0
  193. package/isPrimitive.js +13 -0
  194. package/isPromise.d.ts +1 -0
  195. package/isPromise.js +3 -0
  196. package/isRegExp.d.ts +1 -0
  197. package/isRegExp.js +3 -0
  198. package/isServer.d.ts +1 -0
  199. package/isServer.js +3 -0
  200. package/isServerNow.d.ts +1 -0
  201. package/isServerNow.js +3 -0
  202. package/isSet.d.ts +1 -0
  203. package/isSet.js +3 -0
  204. package/isString.d.ts +1 -0
  205. package/isString.js +3 -0
  206. package/isSymbol.d.ts +1 -0
  207. package/isSymbol.js +3 -0
  208. package/isType.d.ts +1 -0
  209. package/isType.js +13 -0
  210. package/isUndefined.d.ts +1 -0
  211. package/isUndefined.js +3 -0
  212. package/isWeakMap.d.ts +1 -0
  213. package/isWeakMap.js +3 -0
  214. package/isWeakSet.d.ts +1 -0
  215. package/isWeakSet.js +3 -0
  216. package/kbToBytes.d.ts +1 -0
  217. package/kbToBytes.js +2 -0
  218. package/location.js +1 -0
  219. package/lowercase.d.ts +1 -0
  220. package/lowercase.js +2 -0
  221. package/mapListBy.d.ts +1 -0
  222. package/mapListBy.js +5 -0
  223. package/matchSorter.d.ts +1 -0
  224. package/matchSorter.js +239 -0
  225. package/mbToBytes.d.ts +1 -0
  226. package/mbToBytes.js +2 -0
  227. package/mergeObjects.d.ts +1 -0
  228. package/mergeObjects.js +29 -0
  229. package/mergeUrlQueryParams.d.ts +1 -0
  230. package/mergeUrlQueryParams.js +14 -0
  231. package/moveSortableArrayItemByKey.d.ts +1 -0
  232. package/moveSortableArrayItemByKey.js +9 -0
  233. package/noop.d.ts +1 -0
  234. package/noop.js +2 -0
  235. package/normaliseUrl.d.ts +1 -0
  236. package/normaliseUrl.js +3 -0
  237. package/normaliseUrlPathname.d.ts +1 -0
  238. package/normaliseUrlPathname.js +3 -0
  239. package/objectFlat.d.ts +1 -0
  240. package/objectFlat.js +17 -0
  241. package/objectFlip.d.ts +1 -0
  242. package/objectFlip.js +5 -0
  243. package/objectMergeWithDefaults.d.ts +1 -0
  244. package/objectMergeWithDefaults.js +21 -0
  245. package/objectOmit.d.ts +1 -0
  246. package/objectOmit.js +8 -0
  247. package/objectPick.d.ts +1 -0
  248. package/objectPick.js +9 -0
  249. package/objectSort.d.ts +1 -0
  250. package/objectSort.js +2 -0
  251. package/objectSortByKeysMatching.d.ts +1 -0
  252. package/objectSortByKeysMatching.js +3 -0
  253. package/objectToArray.d.ts +1 -0
  254. package/objectToArray.js +2 -0
  255. package/package.json +1 -1
  256. package/parseCookie.d.ts +1 -0
  257. package/parseCookie.js +33 -0
  258. package/parseURL.d.ts +1 -0
  259. package/parseURL.js +14 -0
  260. package/quaranteneProps.d.ts +1 -1
  261. package/quaranteneProps.js +16 -0
  262. package/randomInt.d.ts +1 -0
  263. package/randomInt.js +2 -0
  264. package/randomKey.d.ts +1 -0
  265. package/randomKey.js +5 -0
  266. package/readCookie.d.ts +1 -0
  267. package/readCookie.js +34 -0
  268. package/removeAccents.d.ts +1 -0
  269. package/removeAccents.js +10 -0
  270. package/removeCookie.d.ts +1 -0
  271. package/removeCookie.js +10 -0
  272. package/removeDuplicates.d.ts +2 -0
  273. package/removeDuplicates.js +2 -0
  274. package/removeDuplicatesByKey.d.ts +1 -0
  275. package/removeDuplicatesByKey.js +13 -0
  276. package/removeDuplicatesComparing.d.ts +1 -0
  277. package/removeDuplicatesComparing.js +7 -0
  278. package/removeIndexesFromArray.d.ts +1 -0
  279. package/removeIndexesFromArray.js +10 -0
  280. package/removeTrailingSlash.d.ts +2 -1
  281. package/removeTrailingSlash.js +2 -0
  282. package/removeUrlQueryParams.d.ts +1 -0
  283. package/removeUrlQueryParams.js +14 -0
  284. package/render.d.ts +1 -1
  285. package/render.js +113 -0
  286. package/round.d.ts +1 -0
  287. package/round.js +4 -0
  288. package/roundTo.d.ts +1 -0
  289. package/roundTo.js +11 -0
  290. package/serializeCookie.d.ts +1 -0
  291. package/serializeCookie.js +69 -0
  292. package/setCookie.d.ts +1 -0
  293. package/setCookie.js +45 -0
  294. package/shuffle.d.ts +1 -0
  295. package/shuffle.js +17 -0
  296. package/slugify.d.ts +1 -0
  297. package/slugify.js +11 -0
  298. package/split.d.ts +1 -0
  299. package/split.js +2 -0
  300. package/splitReverse.d.ts +1 -0
  301. package/splitReverse.js +2 -0
  302. package/swapMap.d.ts +1 -0
  303. package/swapMap.js +8 -0
  304. package/throttle.d.ts +1 -0
  305. package/throttle.js +15 -0
  306. package/titleCase.d.ts +1 -0
  307. package/titleCase.js +4 -0
  308. package/toNumber.d.ts +1 -0
  309. package/toNumber.js +3 -0
  310. package/toRgba.d.ts +1 -0
  311. package/toRgba.js +8 -0
  312. package/transformToUrlPathname.d.ts +1 -0
  313. package/transformToUrlPathname.js +5 -0
  314. package/truncate.d.ts +1 -0
  315. package/truncate.js +6 -0
  316. package/tryUntil.d.ts +1 -0
  317. package/tryUntil.js +15 -0
  318. package/types.js +1 -0
  319. package/uid.d.ts +1 -0
  320. package/uid.js +6 -0
  321. package/updateLinkParams.d.ts +1 -0
  322. package/updateLinkParams.js +7 -0
  323. package/updateUrlQueryParams.d.ts +1 -0
  324. package/updateUrlQueryParams.js +11 -0
  325. package/uppercase.d.ts +1 -0
  326. package/uppercase.js +2 -0
  327. package/uuid.d.ts +1 -0
  328. package/uuid.js +5 -0
  329. package/uuidNumeric.d.ts +1 -0
  330. package/uuidNumeric.js +2 -0
  331. package/wait.d.ts +1 -0
  332. package/wait.js +2 -0
  333. package/without.js +1 -0
@@ -0,0 +1,2 @@
1
+ export declare let removeDuplicates: <T extends any[]>(arr: T) => any[];
2
+ export default removeDuplicates;
@@ -0,0 +1,2 @@
1
+ export let removeDuplicates = (arr) => [...new Set(arr)];
2
+ export default removeDuplicates;
@@ -1 +1,2 @@
1
1
  export declare let removeDuplicatesByKey: <T extends Record<string | number | symbol, any>>(array: T[] | undefined, key: keyof T) => T[];
2
+ export default removeDuplicatesByKey;
@@ -0,0 +1,13 @@
1
+ export let removeDuplicatesByKey = (array = [], key) => {
2
+ const keysMap = {};
3
+ const output = [];
4
+ for (let i = 0; i < array.length; i++) {
5
+ const item = array[i];
6
+ if (!keysMap[item[key]]) {
7
+ output.push(item);
8
+ keysMap[item[key]] = true;
9
+ }
10
+ }
11
+ return output;
12
+ };
13
+ export default removeDuplicatesByKey;
@@ -1 +1,2 @@
1
1
  export declare let removeDuplicatesComparing: <T>(from: any[], to: T[]) => T[];
2
+ export default removeDuplicatesComparing;
@@ -0,0 +1,7 @@
1
+ import { findDuplicatedIndexes } from "./findDuplicatedIndexes";
2
+ import { removeIndexesFromArray } from "./removeIndexesFromArray";
3
+ export let removeDuplicatesComparing = (from, to) => {
4
+ const indexes = findDuplicatedIndexes(from);
5
+ return removeIndexesFromArray(to, indexes);
6
+ };
7
+ export default removeDuplicatesComparing;
@@ -1 +1,2 @@
1
1
  export declare let removeIndexesFromArray: <T>(arr: T[], indexes: Record<number, true>) => T[];
2
+ export default removeIndexesFromArray;
@@ -0,0 +1,10 @@
1
+ export let removeIndexesFromArray = (arr, indexes) => {
2
+ const output = [];
3
+ for (let i = 0; i < arr.length; i++) {
4
+ if (!indexes.hasOwnProperty(i)) {
5
+ output.push(arr[i]);
6
+ }
7
+ }
8
+ return output;
9
+ };
10
+ export default removeIndexesFromArray;
@@ -1 +1,2 @@
1
- export declare let removeTralingSlash: (urlLike?: string | null) => string;
1
+ export declare let removeTrailingSlash: (urlLike?: string | null) => string;
2
+ export default removeTrailingSlash;
@@ -0,0 +1,2 @@
1
+ export let removeTrailingSlash = (urlLike) => (urlLike || "").replace(/\/*$/, "");
2
+ export default removeTrailingSlash;
@@ -1 +1,2 @@
1
1
  export declare let removeUrlQueryParams: (url: string, paramsToRemove?: string[]) => string;
2
+ export default removeUrlQueryParams;
@@ -0,0 +1,14 @@
1
+ import { buildUrlQueryString } from "./buildUrlQueryString";
2
+ import { getUrlQueryParams } from "./getUrlQueryParams";
3
+ export let removeUrlQueryParams = (url, paramsToRemove = []) => {
4
+ const parts = url.split("?");
5
+ const allParams = getUrlQueryParams(url);
6
+ const params = {};
7
+ for (const key in allParams) {
8
+ if (!paramsToRemove.includes(key)) {
9
+ params[key] = allParams[key];
10
+ }
11
+ }
12
+ return parts[0] + buildUrlQueryString(params);
13
+ };
14
+ export default removeUrlQueryParams;
package/render.d.ts CHANGED
@@ -10,4 +10,4 @@ type Definitions = {
10
10
  } & DefinitionExtended;
11
11
  type RenderFunction = (data: object) => string;
12
12
  export declare let render: (tmpl: string, def?: Definitions) => RenderFunction;
13
- export {};
13
+ export default render;
package/render.js ADDED
@@ -0,0 +1,113 @@
1
+ let varname = "data";
2
+ let evaluate = /<%([\s\S]+?(\}?)+)%>/g;
3
+ let interpolate = /<%=([\s\S]+?)%>/g;
4
+ let conditional = /<%\?(\?)?\s*([\s\S]*?)\s*%>/g;
5
+ let iterate = /<%~\s*(?:%>|([\s\S]+?)\s*:\s*([\w$]+)\s*(?::\s*([\w$]+))?\s*%>)/g;
6
+ let use = /<%#([\s\S]+?)%>/g;
7
+ let useParams = /(^|[^\w$])def(?:\.|\[['"])([\w$.]+)(?:['"]\])?\s*:\s*([\w$.]+|"[^"]+"|'[^']+'|\{[^}]+\})/g;
8
+ let define = /<%##\s*([\w.$]+)\s*(:|=)([\s\S]+?)#%>/g;
9
+ let defineParams = /^\s*([\w$]+):([\s\S]+)/;
10
+ let start = "'+(";
11
+ let end = ")+'";
12
+ let skip = /$^/;
13
+ let resolveDefs = (block, def) => (typeof block === "string" ? block : block.toString())
14
+ .replace(define || skip, (_, code, assign, value) => {
15
+ if (code.indexOf("def.") === 0) {
16
+ code = code.substring(4);
17
+ }
18
+ if (!(code in def)) {
19
+ if (assign === ":") {
20
+ value.replace(defineParams, (_, param, v) => {
21
+ def[code] = { arg: param, text: v };
22
+ });
23
+ if (!(code in def))
24
+ def[code] = value;
25
+ }
26
+ else {
27
+ new Function("def", "def['" + code + "']=" + value)(def);
28
+ }
29
+ }
30
+ return "";
31
+ })
32
+ .replace(use || skip, (_, code) => {
33
+ code = code.replace(useParams, (_, s, d, param) => {
34
+ if (def[d] && def[d].arg && param) {
35
+ let rw = (d + ":" + param).replace(/'|\\/g, "_");
36
+ def.__exp = def.__exp || {};
37
+ def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
38
+ return s + "def.__exp['" + rw + "']";
39
+ }
40
+ return s;
41
+ });
42
+ let v = new Function("def", "return " + code)(def);
43
+ return v ? resolveDefs(v, def) : v;
44
+ });
45
+ let unescape = (code) => code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, " ");
46
+ export let render = (tmpl, def) => {
47
+ let sid = 0;
48
+ let indv;
49
+ let str = use || define ? resolveDefs(tmpl, def || {}) : tmpl;
50
+ str = ("var X='" +
51
+ str
52
+ .replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g, " ")
53
+ .replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g, "")
54
+ .replace(/'|\\/g, "\\$&")
55
+ .replace(interpolate || skip, (_, code) => start + unescape(code) + end)
56
+ .replace(conditional || skip, (_, elseCase, code) => elseCase
57
+ ? code
58
+ ? "';}else if(" + unescape(code) + "){X+='"
59
+ : "';}else{X+='"
60
+ : code
61
+ ? "';if(" + unescape(code) + "){X+='"
62
+ : "';}X+='")
63
+ .replace(iterate || skip, (_, arr, vName, iName) => {
64
+ if (!arr)
65
+ return "';} } X+='";
66
+ sid++;
67
+ indv = iName || "i" + sid;
68
+ arr = unescape(arr);
69
+ return ("';var arr" +
70
+ sid +
71
+ "=" +
72
+ arr +
73
+ ";if(arr" +
74
+ sid +
75
+ "){var " +
76
+ vName +
77
+ "," +
78
+ indv +
79
+ "=-1,l" +
80
+ sid +
81
+ "=arr" +
82
+ sid +
83
+ ".length-1;while(" +
84
+ indv +
85
+ "<l" +
86
+ sid +
87
+ "){" +
88
+ vName +
89
+ "=arr" +
90
+ sid +
91
+ "[" +
92
+ indv +
93
+ "+=1];X+='");
94
+ })
95
+ .replace(evaluate || skip, (_, code) => "';" + unescape(code) + "X+='") +
96
+ "';return X;")
97
+ .replace(/\n/g, "\\n")
98
+ .replace(/\t/g, "\\t")
99
+ .replace(/\r/g, "\\r")
100
+ .replace(/(\s|;|\}|^|\{)X\+='';/g, "$1")
101
+ .replace(/\+''/g, "");
102
+ try {
103
+ return new Function(varname, str);
104
+ }
105
+ catch (e) {
106
+ if (process.env["NODE_ENV"] === "development") {
107
+ console.log("Could not create a template function: " + str);
108
+ throw e;
109
+ }
110
+ }
111
+ return () => "";
112
+ };
113
+ export default render;
package/round.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import type { AnythingFalsy } from "./types";
2
2
  export declare let round: (number: number, decimals?: AnythingFalsy | number, trailingZeroes?: 1 | boolean | AnythingFalsy) => number;
3
+ export default round;
package/round.js ADDED
@@ -0,0 +1,4 @@
1
+ export let round = (number, decimals, trailingZeroes) => decimals
2
+ ? parseFloat(number.toFixed(decimals).replace(trailingZeroes ? "" : /\.+0*$/, ""))
3
+ : parseInt(number + "", 10);
4
+ export default round;
package/roundTo.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let roundTo: (num: number, decimals?: number) => string;
2
+ export default roundTo;
package/roundTo.js ADDED
@@ -0,0 +1,11 @@
1
+ export let roundTo = (num, decimals = 2) => {
2
+ if (isFinite(num) && !isNaN(num)) {
3
+ const multiplicator = Math.pow(10, decimals);
4
+ return Math.round(num * multiplicator) / multiplicator + "";
5
+ }
6
+ if (process.env["NODE_ENV"] === "development") {
7
+ console.warn("[@koine/utils] math:roundTo -> given not a finite number as first arg");
8
+ }
9
+ return "";
10
+ };
11
+ export default roundTo;
@@ -1,2 +1,3 @@
1
1
  import type { CookieAttributesServer } from "./cookie";
2
2
  export declare let serializeCookie: (name: string, val: string, attributes?: CookieAttributesServer) => string;
3
+ export default serializeCookie;
@@ -0,0 +1,69 @@
1
+ import { isNumber } from "./isNumber";
2
+ const fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
3
+ export let serializeCookie = (name, val, attributes = {}) => {
4
+ const { encode = encodeURIComponent, domain, path, httpOnly, secure, sameSite, } = attributes;
5
+ let { maxAge, expires } = attributes;
6
+ const value = encode(val);
7
+ if (process.env["NODE_ENV"] === "development") {
8
+ if (!fieldContentRegExp.test(name)) {
9
+ throw new TypeError("argument name is invalid");
10
+ }
11
+ if (typeof attributes.encode !== "function") {
12
+ throw new TypeError("option encode is invalid");
13
+ }
14
+ if (value && !fieldContentRegExp.test(value)) {
15
+ throw new TypeError("argument val is invalid");
16
+ }
17
+ }
18
+ let str = name + "=" + value;
19
+ if (null != maxAge) {
20
+ maxAge = maxAge - 0;
21
+ if (isNaN(maxAge) || !isFinite(maxAge)) {
22
+ throw new TypeError("option maxAge is invalid");
23
+ }
24
+ str += "; Max-Age=" + Math.floor(maxAge);
25
+ }
26
+ if (domain) {
27
+ if (process.env["NODE_ENV"] === "development") {
28
+ if (!fieldContentRegExp.test(domain)) {
29
+ throw new TypeError("option domain is invalid");
30
+ }
31
+ }
32
+ str += "; Domain=" + domain;
33
+ }
34
+ if (path) {
35
+ if (process.env["NODE_ENV"] === "development") {
36
+ if (!fieldContentRegExp.test(path)) {
37
+ throw new TypeError("option path is invalid");
38
+ }
39
+ }
40
+ str += "; Path=" + path;
41
+ }
42
+ if (expires) {
43
+ if (isNumber(expires)) {
44
+ expires = new Date(Date.now() + expires * 864e5);
45
+ }
46
+ str += "; Expires=" + expires.toUTCString();
47
+ }
48
+ if (httpOnly) {
49
+ str += "; HttpOnly";
50
+ }
51
+ if (secure) {
52
+ str += "; Secure";
53
+ }
54
+ if (sameSite) {
55
+ switch (sameSite.toLowerCase()) {
56
+ case "lax":
57
+ str += "; SameSite=Lax";
58
+ break;
59
+ case "strict":
60
+ str += "; SameSite=Strict";
61
+ break;
62
+ case "none":
63
+ str += "; SameSite=None";
64
+ break;
65
+ }
66
+ }
67
+ return str;
68
+ };
69
+ export default serializeCookie;
package/setCookie.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { type CookieAttributesClient } from "./cookie";
2
2
  export declare let setCookie: <T extends string = string>(name: string, value: string | T, attributes?: CookieAttributesClient) => string | undefined;
3
+ export default setCookie;
package/setCookie.js ADDED
@@ -0,0 +1,45 @@
1
+ import { defaultAttributesClient } from "./cookie";
2
+ import { isNumber } from "./isNumber";
3
+ import { isUndefined } from "./isUndefined";
4
+ let converterWrite = (value) => {
5
+ return encodeURIComponent(value).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);
6
+ };
7
+ export let setCookie = (name, value, attributes = {}) => {
8
+ let { expires, ...restAttrs } = attributes;
9
+ const cleanedAttrs = {
10
+ expires: "",
11
+ ...defaultAttributesClient,
12
+ ...restAttrs,
13
+ };
14
+ if (isUndefined(document)) {
15
+ if (process.env["NODE_ENV"] === "development") {
16
+ console.warn("[@koine/utils:setCookie] document is undefined");
17
+ }
18
+ return undefined;
19
+ }
20
+ if (isNumber(expires)) {
21
+ expires = new Date(Date.now() + expires * 864e5);
22
+ }
23
+ if (expires) {
24
+ cleanedAttrs.expires = expires.toUTCString();
25
+ }
26
+ name = encodeURIComponent(name)
27
+ .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)
28
+ .replace(/[()]/g, escape);
29
+ let stringifiedAttributes = "";
30
+ for (const name in attributes) {
31
+ const attrName = name;
32
+ if (!attributes[attrName]) {
33
+ continue;
34
+ }
35
+ stringifiedAttributes += "; " + attrName;
36
+ if (attributes[attrName] === true) {
37
+ continue;
38
+ }
39
+ stringifiedAttributes +=
40
+ "=" + String(attributes[attrName]).split(";")[0];
41
+ }
42
+ return (document.cookie =
43
+ name + "=" + converterWrite(value) + stringifiedAttributes);
44
+ };
45
+ export default setCookie;
package/shuffle.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let shuffle: <T>(array: T[]) => T[];
2
+ export default shuffle;
package/shuffle.js ADDED
@@ -0,0 +1,17 @@
1
+ export let shuffle = (array) => {
2
+ const length = array == null ? 0 : array.length;
3
+ if (!length) {
4
+ return [];
5
+ }
6
+ let index = -1;
7
+ const lastIndex = length - 1;
8
+ const result = [...array];
9
+ while (++index < length) {
10
+ const rand = index + Math.floor(Math.random() * (lastIndex - index + 1));
11
+ const value = result[rand];
12
+ result[rand] = result[index];
13
+ result[index] = value;
14
+ }
15
+ return result;
16
+ };
17
+ export default shuffle;
package/slugify.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let slugify: (text: string, separator?: string) => string;
2
+ export default slugify;
package/slugify.js ADDED
@@ -0,0 +1,11 @@
1
+ import { accentsSets } from "./accentSets";
2
+ import { removeAccents } from "./removeAccents";
3
+ export let slugify = (text, separator = "-") => removeAccents(text.toString().toLowerCase().trim(), accentsSets.concat([["-", "[·/_,:;']"]]))
4
+ .replace(/\s+/g, "-")
5
+ .replace(/&/g, "-and-")
6
+ .replace(/[^\w-]+/g, "")
7
+ .replace(/--+/g, "-")
8
+ .replace(/^-+/, "")
9
+ .replace(/-+$/, "")
10
+ .replace(/-/g, separator);
11
+ export default slugify;
package/split.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export type Split<S extends string, D extends string> = string extends S ? string[] : S extends "" ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];
2
2
  export declare let split: <T extends string, D extends string>(string: T, delimiter: D) => Split<T, D>;
3
+ export default split;
package/split.js ADDED
@@ -0,0 +1,2 @@
1
+ export let split = (string, delimiter) => string.split(delimiter);
2
+ export default split;
package/splitReverse.d.ts CHANGED
@@ -2,3 +2,4 @@ import type { Split } from "./split";
2
2
  import type { Reverse } from "./types";
3
3
  export type SplitReverse<S extends string, D extends string> = Reverse<Split<S, D>>;
4
4
  export declare let splitReverse: <T extends string, D extends string>(string: T, delimiter: D) => Reverse<Split<T, D>>;
5
+ export default splitReverse;
@@ -0,0 +1,2 @@
1
+ export let splitReverse = (string, delimiter) => string.split(delimiter).reverse();
2
+ export default splitReverse;
package/swapMap.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let swapMap: <T extends Record<string, string | number | symbol> = Record<string, string | number | symbol>>(map?: T) => Record<T[keyof T], keyof T>;
2
+ export default swapMap;
package/swapMap.js ADDED
@@ -0,0 +1,8 @@
1
+ export let swapMap = (map = {}) => {
2
+ const output = {};
3
+ for (const key in map) {
4
+ output[map[key]] = key;
5
+ }
6
+ return output;
7
+ };
8
+ export default swapMap;
package/throttle.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  /// <reference types="node" />
2
2
  export declare let throttle: <TFn extends Function, TContext>(fn: TFn, limit: number, context?: TContext | undefined) => (this: TContext, ...args: any[]) => NodeJS.Timeout | undefined;
3
+ export default throttle;
package/throttle.js ADDED
@@ -0,0 +1,15 @@
1
+ export let throttle = (fn, limit, context) => {
2
+ let wait;
3
+ return function (...args) {
4
+ context = context || this;
5
+ if (!wait) {
6
+ fn.apply(context, ...args);
7
+ wait = true;
8
+ return setTimeout(function () {
9
+ wait = false;
10
+ }, limit);
11
+ }
12
+ return;
13
+ };
14
+ };
15
+ export default throttle;
package/titleCase.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let titleCase: (input?: null | string) => string;
2
+ export default titleCase;
package/titleCase.js ADDED
@@ -0,0 +1,4 @@
1
+ export let titleCase = (input) => input
2
+ ? input.replace(/\w\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase())
3
+ : "";
4
+ export default titleCase;
package/toNumber.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let toNumber: (input?: string | number, fallback?: number) => number;
2
+ export default toNumber;
package/toNumber.js ADDED
@@ -0,0 +1,3 @@
1
+ import { isNumber } from "./isNumber";
2
+ export let toNumber = (input, fallback) => isNumber(input) ? input : input ? parseFloat(input) : fallback || 0;
3
+ export default toNumber;
package/toRgba.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let toRgba: (hex: string, alpha?: number) => string;
2
+ export default toRgba;
package/toRgba.js ADDED
@@ -0,0 +1,8 @@
1
+ export let toRgba = (hex, alpha = 1) => {
2
+ const r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
3
+ if (r) {
4
+ return `rgba(${parseInt(r[1], 16)},${parseInt(r[2], 16)},${parseInt(r[3], 16)},${alpha})`;
5
+ }
6
+ return "";
7
+ };
8
+ export default toRgba;
@@ -1 +1,2 @@
1
1
  export declare let transformToUrlPathname: (toPathname?: string) => string;
2
+ export default transformToUrlPathname;
@@ -0,0 +1,5 @@
1
+ import { isString } from "./isString";
2
+ export let transformToUrlPathname = (toPathname) => isString(toPathname)
3
+ ? `/${encodeURIComponent(toPathname.replace(/\s/g, "-").toLowerCase())}`
4
+ : "";
5
+ export default transformToUrlPathname;
package/truncate.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let truncate: (input: undefined | null | string, length: number) => string;
2
+ export default truncate;
package/truncate.js ADDED
@@ -0,0 +1,6 @@
1
+ export let truncate = (input, length) => input
2
+ ? input.length > length
3
+ ? input.substring(0, length) + "..."
4
+ : input
5
+ : "";
6
+ export default truncate;
package/tryUntil.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let tryUntil: (test: () => boolean, timeout: number, interval: number, resolve: () => void, reject?: () => void) => void;
2
+ export default tryUntil;
package/tryUntil.js ADDED
@@ -0,0 +1,15 @@
1
+ export let tryUntil = (test, timeout, interval, resolve, reject) => {
2
+ const timeWas = new Date();
3
+ const wait = setInterval(function () {
4
+ if (test()) {
5
+ clearInterval(wait);
6
+ resolve();
7
+ }
8
+ else if (new Date() - timeWas > timeout) {
9
+ clearInterval(wait);
10
+ if (reject)
11
+ reject();
12
+ }
13
+ }, interval);
14
+ };
15
+ export default tryUntil;
package/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/uid.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let uid: (prefix?: string) => string;
2
+ export default uid;
package/uid.js ADDED
@@ -0,0 +1,6 @@
1
+ let lastId = 0;
2
+ export let uid = (prefix = "id") => {
3
+ lastId++;
4
+ return `${prefix}-${lastId}`;
5
+ };
6
+ export default uid;
@@ -1,2 +1,3 @@
1
1
  import type { AnyQueryParams } from "./location";
2
2
  export declare let updateLinkParams: ($anchor: HTMLAnchorElement, newParams: NonNullable<AnyQueryParams>) => string;
3
+ export default updateLinkParams;
@@ -0,0 +1,7 @@
1
+ import { updateUrlQueryParams } from "./updateUrlQueryParams";
2
+ export let updateLinkParams = ($anchor, newParams) => {
3
+ const href = updateUrlQueryParams($anchor.href, newParams);
4
+ $anchor.href = href;
5
+ return href;
6
+ };
7
+ export default updateLinkParams;
@@ -1,2 +1,3 @@
1
1
  import type { AnyQueryParams } from "./location";
2
2
  export declare let updateUrlQueryParams: (url: string, newParams?: NonNullable<AnyQueryParams>) => string;
3
+ export default updateUrlQueryParams;
@@ -0,0 +1,11 @@
1
+ import { buildUrlQueryString } from "./buildUrlQueryString";
2
+ import { getUrlQueryParams } from "./getUrlQueryParams";
3
+ import { mergeUrlQueryParams } from "./mergeUrlQueryParams";
4
+ export let updateUrlQueryParams = (url, newParams = {}) => {
5
+ const parts = url.split("?");
6
+ const allParams = parts[1]
7
+ ? mergeUrlQueryParams(getUrlQueryParams(url), newParams)
8
+ : newParams;
9
+ return parts[0] + buildUrlQueryString(allParams);
10
+ };
11
+ export default updateUrlQueryParams;
package/uppercase.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let uppercase: <T extends string>(str?: T | null | undefined) => Uppercase<T>;
2
+ export default uppercase;
package/uppercase.js ADDED
@@ -0,0 +1,2 @@
1
+ export let uppercase = (str) => (str || "").toUpperCase();
2
+ export default uppercase;
package/uuid.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let uuid: () => string;
2
+ export default uuid;
package/uuid.js ADDED
@@ -0,0 +1,5 @@
1
+ export let uuid = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
2
+ const r = (Math.random() * 16) | 0, v = c == "x" ? r : (r & 0x3) | 0x8;
3
+ return v.toString(16);
4
+ });
5
+ export default uuid;
package/uuidNumeric.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let uuidNumeric: () => number;
2
+ export default uuidNumeric;
package/uuidNumeric.js ADDED
@@ -0,0 +1,2 @@
1
+ export let uuidNumeric = () => new Date().valueOf();
2
+ export default uuidNumeric;
package/wait.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare let wait: (milliseconds: number) => Promise<unknown>;
2
+ export default wait;
package/wait.js ADDED
@@ -0,0 +1,2 @@
1
+ export let wait = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds));
2
+ export default wait;
package/without.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";