@eternl/tools 0.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 (94) hide show
  1. package/README.md +36 -0
  2. package/dist/index.cjs +72 -0
  3. package/dist/index.d.cts +12 -0
  4. package/dist/index.d.mts +12 -0
  5. package/dist/index.mjs +13 -0
  6. package/dist/lib/array.cjs +53 -0
  7. package/dist/lib/array.cjs.map +1 -0
  8. package/dist/lib/array.d.cts +10 -0
  9. package/dist/lib/array.d.cts.map +1 -0
  10. package/dist/lib/array.d.mts +10 -0
  11. package/dist/lib/array.d.mts.map +1 -0
  12. package/dist/lib/array.mjs +46 -0
  13. package/dist/lib/array.mjs.map +1 -0
  14. package/dist/lib/crc8.cjs +270 -0
  15. package/dist/lib/crc8.cjs.map +1 -0
  16. package/dist/lib/crc8.d.cts +5 -0
  17. package/dist/lib/crc8.d.cts.map +1 -0
  18. package/dist/lib/crc8.d.mts +5 -0
  19. package/dist/lib/crc8.d.mts.map +1 -0
  20. package/dist/lib/crc8.mjs +268 -0
  21. package/dist/lib/crc8.mjs.map +1 -0
  22. package/dist/lib/hex.cjs +87 -0
  23. package/dist/lib/hex.cjs.map +1 -0
  24. package/dist/lib/hex.d.cts +26 -0
  25. package/dist/lib/hex.d.cts.map +1 -0
  26. package/dist/lib/hex.d.mts +26 -0
  27. package/dist/lib/hex.d.mts.map +1 -0
  28. package/dist/lib/hex.mjs +64 -0
  29. package/dist/lib/hex.mjs.map +1 -0
  30. package/dist/lib/id.cjs +10 -0
  31. package/dist/lib/id.cjs.map +1 -0
  32. package/dist/lib/id.d.cts +6 -0
  33. package/dist/lib/id.d.cts.map +1 -0
  34. package/dist/lib/id.d.mts +6 -0
  35. package/dist/lib/id.d.mts.map +1 -0
  36. package/dist/lib/id.mjs +7 -0
  37. package/dist/lib/id.mjs.map +1 -0
  38. package/dist/lib/json.cjs +92 -0
  39. package/dist/lib/json.cjs.map +1 -0
  40. package/dist/lib/json.d.cts +14 -0
  41. package/dist/lib/json.d.cts.map +1 -0
  42. package/dist/lib/json.d.mts +14 -0
  43. package/dist/lib/json.d.mts.map +1 -0
  44. package/dist/lib/json.mjs +87 -0
  45. package/dist/lib/json.mjs.map +1 -0
  46. package/dist/lib/math.cjs +25 -0
  47. package/dist/lib/math.cjs.map +1 -0
  48. package/dist/lib/math.d.cts +8 -0
  49. package/dist/lib/math.d.cts.map +1 -0
  50. package/dist/lib/math.d.mts +8 -0
  51. package/dist/lib/math.d.mts.map +1 -0
  52. package/dist/lib/math.mjs +23 -0
  53. package/dist/lib/math.mjs.map +1 -0
  54. package/dist/lib/number.cjs +8 -0
  55. package/dist/lib/number.cjs.map +1 -0
  56. package/dist/lib/number.d.cts +5 -0
  57. package/dist/lib/number.d.cts.map +1 -0
  58. package/dist/lib/number.d.mts +5 -0
  59. package/dist/lib/number.d.mts.map +1 -0
  60. package/dist/lib/number.mjs +6 -0
  61. package/dist/lib/number.mjs.map +1 -0
  62. package/dist/lib/sleep.cjs +19 -0
  63. package/dist/lib/sleep.cjs.map +1 -0
  64. package/dist/lib/sleep.d.cts +10 -0
  65. package/dist/lib/sleep.d.cts.map +1 -0
  66. package/dist/lib/sleep.d.mts +10 -0
  67. package/dist/lib/sleep.d.mts.map +1 -0
  68. package/dist/lib/sleep.mjs +13 -0
  69. package/dist/lib/sleep.mjs.map +1 -0
  70. package/dist/lib/string.cjs +64 -0
  71. package/dist/lib/string.cjs.map +1 -0
  72. package/dist/lib/string.d.cts +18 -0
  73. package/dist/lib/string.d.cts.map +1 -0
  74. package/dist/lib/string.d.mts +18 -0
  75. package/dist/lib/string.d.mts.map +1 -0
  76. package/dist/lib/string.mjs +56 -0
  77. package/dist/lib/string.mjs.map +1 -0
  78. package/dist/lib/time.cjs +27 -0
  79. package/dist/lib/time.cjs.map +1 -0
  80. package/dist/lib/time.d.cts +7 -0
  81. package/dist/lib/time.d.cts.map +1 -0
  82. package/dist/lib/time.d.mts +7 -0
  83. package/dist/lib/time.d.mts.map +1 -0
  84. package/dist/lib/time.mjs +23 -0
  85. package/dist/lib/time.mjs.map +1 -0
  86. package/dist/log/index.cjs +23 -0
  87. package/dist/log/index.cjs.map +1 -0
  88. package/dist/log/index.d.cts +11 -0
  89. package/dist/log/index.d.cts.map +1 -0
  90. package/dist/log/index.d.mts +11 -0
  91. package/dist/log/index.d.mts.map +1 -0
  92. package/dist/log/index.mjs +17 -0
  93. package/dist/log/index.mjs.map +1 -0
  94. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.cjs","names":["decodeHex","prefix0x"],"sources":["../../src/lib/json.ts"],"sourcesContent":["import {\n decodeHex,\n prefix0x\n} from './hex'\n\nexport const json = (obj: any) => JSON.parse(JSON.stringify(obj))\n\n// https://github.com/saikojosh/Object-Assign-Deep/blob/master/objectAssignDeep.js\n\nexport const getErrorMsg = (err: any): string => err?.message ?? (typeof err === 'string' ? err : JSON.stringify(err))\n\nexport const deepMerge = (target: any, _objects: any[] = [], _options?: { arrayBehaviour: 'replace' | 'merge' }) => {\n\n const options = {\n\n arrayBehaviour: _options?.arrayBehaviour ?? 'replace',\n\n };\n\n const objects = _objects.map(object => object || {})\n const output = target || {}\n\n for (let i = 0; i < objects.length; i++) {\n\n const object = objects[i]\n const keys = Object.keys(object)\n\n for (let k = 0; k < keys.length; k++) {\n\n const key = keys[k]!\n const value = object[key]\n const type = getTypeOf(value)\n\n const existingValueType = getTypeOf(output[key])\n\n if (type === 'object') {\n\n if (existingValueType !== 'undefined') {\n\n const existingValue = (existingValueType === 'object' ? output[key] : {})\n\n output[key] = deepMerge({}, [existingValue, quickCloneObject(value)], options)\n\n } else {\n\n output[key] = quickCloneObject(value)\n }\n\n } else if (type === 'array') {\n\n if (existingValueType === 'array') {\n\n const newValue = quickCloneArray(value)\n\n output[key] = (options.arrayBehaviour === 'merge' ? output[key].concat(newValue) : newValue)\n\n } else {\n\n output[key] = quickCloneArray(value)\n }\n\n } else {\n\n output[key] = value\n }\n }\n }\n\n return output\n\n}\n\nconst getTypeOf = (input: any) => {\n\n if ( input === null) { return 'null' }\n else if (typeof input === 'undefined') { return 'undefined' }\n else if (typeof input === 'object') { return (Array.isArray(input) ? 'array' : 'object') }\n\n return typeof input\n}\n\nconst quickCloneObject = (input: any) => {\n\n const output: any = {}\n\n for (const key in input) {\n\n if (!input.hasOwnProperty(key)) { continue }\n\n output[key] = cloneValue(input[key])\n }\n\n return output\n}\n\nconst quickCloneArray = (input: any[]): any[] => {\n\n return input.map(cloneValue)\n}\n\nconst cloneValue = (value: any) => {\n\n if (getTypeOf(value) === 'object') { return quickCloneObject(value) }\n else if (getTypeOf(value) === 'array') { return quickCloneArray( value) }\n\n return value\n}\n\nexport const createJsonFromCborJson = (source: any, target: any, index?: number, doDecodeHex: boolean = true): void => {\n\n try {\n\n if ('bytes' in source && !Number.isNaN(index)) { // raw bytes value, must be an array, decode hex\n\n target[index!] = doDecodeHex ? decodeHex(source.bytes) : prefix0x(source.bytes)\n\n } else if ('int' in source && !Number.isNaN(index)) { // raw int value, must be an array\n\n target[index!] = source.int\n\n } else if ('string' in source && !Number.isNaN(index)) { // raw string value, must be an array\n\n target[index!] = source.string\n\n } else if (source?.k?.bytes || source?.k?.string || source?.k?.int) { // key/value pair\n\n const key = source?.k?.bytes ? (doDecodeHex ? decodeHex(source.k.bytes) : source.k.bytes) : source?.k?.string || source?.k?.int.toString()\n const value = source.v\n\n if ('bytes' in value) { // bytes value, decode hex\n\n target[key] = doDecodeHex ? decodeHex(value.bytes) : prefix0x(value.bytes)\n\n } else if ('int' in value) { // int value\n\n target[key] = value.int\n\n } else if ('string' in value) { // string value\n\n target[key] = value.string\n\n } else if ('list' in value) { // array, init array and recursively add entries\n\n target[key] = new Array(value.list.length)\n\n createJsonFromCborJson(value, target[key], index, doDecodeHex)\n\n } else if ('map' in value) { // map, init object and recursively parse\n\n target[key] = {}\n\n createJsonFromCborJson(value, target[key], index, doDecodeHex)\n }\n\n } else if ('map' in source) { // object in list format\n\n for (let i = 0; i < source.map.length; i++) {\n\n createJsonFromCborJson(source.map[i], target, index, doDecodeHex)\n }\n\n } else if ('list' in source) { // array\n\n for (let i = 0; i < source.list.length; i++) {\n\n if ('map' in source.list[i]) { // array of objects\n\n target[i] = {}\n\n createJsonFromCborJson(source.list[i], target[i], index, doDecodeHex)\n\n } else { // array of raw values\n\n createJsonFromCborJson(source.list[i], target, i, doDecodeHex)\n }\n }\n }\n\n } catch (e: any) { }\n}\n\nexport const getKeyValue = (input: string | null) => {\n\n if (!input) { return null }\n\n const value = input.match(/\"(.*?)\":\"(.*)\"/)\n\n return value ? { key: value[1], value: value[2] } : null\n}\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ //#region src/lib/json.d.ts
2
+ declare const json: (obj: any) => any;
3
+ declare const getErrorMsg: (err: any) => string;
4
+ declare const deepMerge: (target: any, _objects?: any[], _options?: {
5
+ arrayBehaviour: "replace" | "merge";
6
+ }) => any;
7
+ declare const createJsonFromCborJson: (source: any, target: any, index?: number, doDecodeHex?: boolean) => void;
8
+ declare const getKeyValue: (input: string | null) => {
9
+ key: string | undefined;
10
+ value: string | undefined;
11
+ } | null;
12
+ //#endregion
13
+ export { createJsonFromCborJson, deepMerge, getErrorMsg, getKeyValue, json };
14
+ //# sourceMappingURL=json.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.cts","names":[],"sources":["../../src/lib/json.ts"],"mappings":";cAKa,IAAA,GAAoB,GAAA;AAAA,cAIpB,WAAA,GAAoB,GAAA;AAAA,cAEpB,SAAA,GAAqB,MAAA,OAAa,QAAA,UAAsB,QAAA;EAAa,cAAA;AAAA;AAAA,cAiGrE,sBAAA,GAA0B,MAAA,OAAa,MAAA,OAAa,KAAA,WAAgB,WAAA;AAAA,cAyEpE,WAAA,GAAoB,KAAA"}
@@ -0,0 +1,14 @@
1
+ //#region src/lib/json.d.ts
2
+ declare const json: (obj: any) => any;
3
+ declare const getErrorMsg: (err: any) => string;
4
+ declare const deepMerge: (target: any, _objects?: any[], _options?: {
5
+ arrayBehaviour: "replace" | "merge";
6
+ }) => any;
7
+ declare const createJsonFromCborJson: (source: any, target: any, index?: number, doDecodeHex?: boolean) => void;
8
+ declare const getKeyValue: (input: string | null) => {
9
+ key: string | undefined;
10
+ value: string | undefined;
11
+ } | null;
12
+ //#endregion
13
+ export { createJsonFromCborJson, deepMerge, getErrorMsg, getKeyValue, json };
14
+ //# sourceMappingURL=json.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.mts","names":[],"sources":["../../src/lib/json.ts"],"mappings":";cAKa,IAAA,GAAoB,GAAA;AAAA,cAIpB,WAAA,GAAoB,GAAA;AAAA,cAEpB,SAAA,GAAqB,MAAA,OAAa,QAAA,UAAsB,QAAA;EAAa,cAAA;AAAA;AAAA,cAiGrE,sBAAA,GAA0B,MAAA,OAAa,MAAA,OAAa,KAAA,WAAgB,WAAA;AAAA,cAyEpE,WAAA,GAAoB,KAAA"}
@@ -0,0 +1,87 @@
1
+ import { decodeHex, prefix0x } from "./hex.mjs";
2
+
3
+ //#region src/lib/json.ts
4
+ const json = (obj) => JSON.parse(JSON.stringify(obj));
5
+ const getErrorMsg = (err) => err?.message ?? (typeof err === "string" ? err : JSON.stringify(err));
6
+ const deepMerge = (target, _objects = [], _options) => {
7
+ const options = { arrayBehaviour: _options?.arrayBehaviour ?? "replace" };
8
+ const objects = _objects.map((object) => object || {});
9
+ const output = target || {};
10
+ for (let i = 0; i < objects.length; i++) {
11
+ const object = objects[i];
12
+ const keys = Object.keys(object);
13
+ for (let k = 0; k < keys.length; k++) {
14
+ const key = keys[k];
15
+ const value = object[key];
16
+ const type = getTypeOf(value);
17
+ const existingValueType = getTypeOf(output[key]);
18
+ if (type === "object") if (existingValueType !== "undefined") output[key] = deepMerge({}, [existingValueType === "object" ? output[key] : {}, quickCloneObject(value)], options);
19
+ else output[key] = quickCloneObject(value);
20
+ else if (type === "array") if (existingValueType === "array") {
21
+ const newValue = quickCloneArray(value);
22
+ output[key] = options.arrayBehaviour === "merge" ? output[key].concat(newValue) : newValue;
23
+ } else output[key] = quickCloneArray(value);
24
+ else output[key] = value;
25
+ }
26
+ }
27
+ return output;
28
+ };
29
+ const getTypeOf = (input) => {
30
+ if (input === null) return "null";
31
+ else if (typeof input === "undefined") return "undefined";
32
+ else if (typeof input === "object") return Array.isArray(input) ? "array" : "object";
33
+ return typeof input;
34
+ };
35
+ const quickCloneObject = (input) => {
36
+ const output = {};
37
+ for (const key in input) {
38
+ if (!input.hasOwnProperty(key)) continue;
39
+ output[key] = cloneValue(input[key]);
40
+ }
41
+ return output;
42
+ };
43
+ const quickCloneArray = (input) => {
44
+ return input.map(cloneValue);
45
+ };
46
+ const cloneValue = (value) => {
47
+ if (getTypeOf(value) === "object") return quickCloneObject(value);
48
+ else if (getTypeOf(value) === "array") return quickCloneArray(value);
49
+ return value;
50
+ };
51
+ const createJsonFromCborJson = (source, target, index, doDecodeHex = true) => {
52
+ try {
53
+ if ("bytes" in source && !Number.isNaN(index)) target[index] = doDecodeHex ? decodeHex(source.bytes) : prefix0x(source.bytes);
54
+ else if ("int" in source && !Number.isNaN(index)) target[index] = source.int;
55
+ else if ("string" in source && !Number.isNaN(index)) target[index] = source.string;
56
+ else if (source?.k?.bytes || source?.k?.string || source?.k?.int) {
57
+ const key = source?.k?.bytes ? doDecodeHex ? decodeHex(source.k.bytes) : source.k.bytes : source?.k?.string || source?.k?.int.toString();
58
+ const value = source.v;
59
+ if ("bytes" in value) target[key] = doDecodeHex ? decodeHex(value.bytes) : prefix0x(value.bytes);
60
+ else if ("int" in value) target[key] = value.int;
61
+ else if ("string" in value) target[key] = value.string;
62
+ else if ("list" in value) {
63
+ target[key] = new Array(value.list.length);
64
+ createJsonFromCborJson(value, target[key], index, doDecodeHex);
65
+ } else if ("map" in value) {
66
+ target[key] = {};
67
+ createJsonFromCborJson(value, target[key], index, doDecodeHex);
68
+ }
69
+ } else if ("map" in source) for (let i = 0; i < source.map.length; i++) createJsonFromCborJson(source.map[i], target, index, doDecodeHex);
70
+ else if ("list" in source) for (let i = 0; i < source.list.length; i++) if ("map" in source.list[i]) {
71
+ target[i] = {};
72
+ createJsonFromCborJson(source.list[i], target[i], index, doDecodeHex);
73
+ } else createJsonFromCborJson(source.list[i], target, i, doDecodeHex);
74
+ } catch (e) {}
75
+ };
76
+ const getKeyValue = (input) => {
77
+ if (!input) return null;
78
+ const value = input.match(/"(.*?)":"(.*)"/);
79
+ return value ? {
80
+ key: value[1],
81
+ value: value[2]
82
+ } : null;
83
+ };
84
+
85
+ //#endregion
86
+ export { createJsonFromCborJson, deepMerge, getErrorMsg, getKeyValue, json };
87
+ //# sourceMappingURL=json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.mjs","names":[],"sources":["../../src/lib/json.ts"],"sourcesContent":["import {\n decodeHex,\n prefix0x\n} from './hex'\n\nexport const json = (obj: any) => JSON.parse(JSON.stringify(obj))\n\n// https://github.com/saikojosh/Object-Assign-Deep/blob/master/objectAssignDeep.js\n\nexport const getErrorMsg = (err: any): string => err?.message ?? (typeof err === 'string' ? err : JSON.stringify(err))\n\nexport const deepMerge = (target: any, _objects: any[] = [], _options?: { arrayBehaviour: 'replace' | 'merge' }) => {\n\n const options = {\n\n arrayBehaviour: _options?.arrayBehaviour ?? 'replace',\n\n };\n\n const objects = _objects.map(object => object || {})\n const output = target || {}\n\n for (let i = 0; i < objects.length; i++) {\n\n const object = objects[i]\n const keys = Object.keys(object)\n\n for (let k = 0; k < keys.length; k++) {\n\n const key = keys[k]!\n const value = object[key]\n const type = getTypeOf(value)\n\n const existingValueType = getTypeOf(output[key])\n\n if (type === 'object') {\n\n if (existingValueType !== 'undefined') {\n\n const existingValue = (existingValueType === 'object' ? output[key] : {})\n\n output[key] = deepMerge({}, [existingValue, quickCloneObject(value)], options)\n\n } else {\n\n output[key] = quickCloneObject(value)\n }\n\n } else if (type === 'array') {\n\n if (existingValueType === 'array') {\n\n const newValue = quickCloneArray(value)\n\n output[key] = (options.arrayBehaviour === 'merge' ? output[key].concat(newValue) : newValue)\n\n } else {\n\n output[key] = quickCloneArray(value)\n }\n\n } else {\n\n output[key] = value\n }\n }\n }\n\n return output\n\n}\n\nconst getTypeOf = (input: any) => {\n\n if ( input === null) { return 'null' }\n else if (typeof input === 'undefined') { return 'undefined' }\n else if (typeof input === 'object') { return (Array.isArray(input) ? 'array' : 'object') }\n\n return typeof input\n}\n\nconst quickCloneObject = (input: any) => {\n\n const output: any = {}\n\n for (const key in input) {\n\n if (!input.hasOwnProperty(key)) { continue }\n\n output[key] = cloneValue(input[key])\n }\n\n return output\n}\n\nconst quickCloneArray = (input: any[]): any[] => {\n\n return input.map(cloneValue)\n}\n\nconst cloneValue = (value: any) => {\n\n if (getTypeOf(value) === 'object') { return quickCloneObject(value) }\n else if (getTypeOf(value) === 'array') { return quickCloneArray( value) }\n\n return value\n}\n\nexport const createJsonFromCborJson = (source: any, target: any, index?: number, doDecodeHex: boolean = true): void => {\n\n try {\n\n if ('bytes' in source && !Number.isNaN(index)) { // raw bytes value, must be an array, decode hex\n\n target[index!] = doDecodeHex ? decodeHex(source.bytes) : prefix0x(source.bytes)\n\n } else if ('int' in source && !Number.isNaN(index)) { // raw int value, must be an array\n\n target[index!] = source.int\n\n } else if ('string' in source && !Number.isNaN(index)) { // raw string value, must be an array\n\n target[index!] = source.string\n\n } else if (source?.k?.bytes || source?.k?.string || source?.k?.int) { // key/value pair\n\n const key = source?.k?.bytes ? (doDecodeHex ? decodeHex(source.k.bytes) : source.k.bytes) : source?.k?.string || source?.k?.int.toString()\n const value = source.v\n\n if ('bytes' in value) { // bytes value, decode hex\n\n target[key] = doDecodeHex ? decodeHex(value.bytes) : prefix0x(value.bytes)\n\n } else if ('int' in value) { // int value\n\n target[key] = value.int\n\n } else if ('string' in value) { // string value\n\n target[key] = value.string\n\n } else if ('list' in value) { // array, init array and recursively add entries\n\n target[key] = new Array(value.list.length)\n\n createJsonFromCborJson(value, target[key], index, doDecodeHex)\n\n } else if ('map' in value) { // map, init object and recursively parse\n\n target[key] = {}\n\n createJsonFromCborJson(value, target[key], index, doDecodeHex)\n }\n\n } else if ('map' in source) { // object in list format\n\n for (let i = 0; i < source.map.length; i++) {\n\n createJsonFromCborJson(source.map[i], target, index, doDecodeHex)\n }\n\n } else if ('list' in source) { // array\n\n for (let i = 0; i < source.list.length; i++) {\n\n if ('map' in source.list[i]) { // array of objects\n\n target[i] = {}\n\n createJsonFromCborJson(source.list[i], target[i], index, doDecodeHex)\n\n } else { // array of raw values\n\n createJsonFromCborJson(source.list[i], target, i, doDecodeHex)\n }\n }\n }\n\n } catch (e: any) { }\n}\n\nexport const getKeyValue = (input: string | null) => {\n\n if (!input) { return null }\n\n const value = input.match(/\"(.*?)\":\"(.*)\"/)\n\n return value ? { key: value[1], value: value[2] } : null\n}\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/lib/math.ts
4
+ const gcd = (a, b) => b ? gcd(b, a % b) : a;
5
+ const toFraction = (_decimal) => {
6
+ if (_decimal === parseInt(_decimal.toString())) return {
7
+ numerator: _decimal,
8
+ denominator: 1
9
+ };
10
+ else {
11
+ let numerator = _decimal.toString().includes(".") ? _decimal.toString().replace(/\d+[.]/, "") : 0;
12
+ const denominator = Math.pow(10, numerator.toString().replace("-", "").length);
13
+ if (_decimal >= 1) numerator = +numerator + Math.floor(_decimal) * denominator;
14
+ else if (_decimal <= -1) numerator = +numerator + Math.ceil(_decimal) * denominator;
15
+ const x = Math.abs(gcd(+numerator, denominator));
16
+ return {
17
+ numerator: +numerator / x,
18
+ denominator: denominator / x
19
+ };
20
+ }
21
+ };
22
+
23
+ //#endregion
24
+ exports.toFraction = toFraction;
25
+ //# sourceMappingURL=math.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.cjs","names":[],"sources":["../../src/lib/math.ts"],"sourcesContent":["// https://github.com/Karakatiza666/ts-practical-fp/blob/8b5ea69208c8b0682e8ff98da7ca0cf4d2b24f6f/src/math.ts\nconst gcd = (a: number, b: number): number => b ? gcd(b, a % b) : a\n\nexport const toFraction = (_decimal: number): { numerator: number, denominator: number } => {\n\n if (_decimal === parseInt(_decimal.toString())) {\n\n return {\n\n numerator: _decimal,\n denominator: 1\n }\n\n } else {\n\n let numerator = _decimal.toString().includes('.') ? _decimal.toString().replace(/\\d+[.]/, '') : 0\n const denominator = Math.pow(10, numerator.toString().replace('-', '').length)\n\n if (_decimal >= 1) {\n\n numerator = +numerator + (Math.floor(_decimal) * denominator)\n }\n else if (_decimal <= -1) {\n\n numerator = +numerator + (Math.ceil(_decimal) * denominator)\n }\n\n const x = Math.abs(gcd(+numerator, denominator))\n\n return {\n\n numerator: +numerator / x,\n denominator: denominator / x\n }\n }\n}\n"],"mappings":";;;AACA,MAAM,OAA2B,GAAW,MAAsB,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG;AAEtF,MAAa,cAAoB,aAAiE;AAEhG,KAAI,aAAa,SAAS,SAAS,UAAU,CAAC,CAE5C,QAAO;EAEL,WAAwB;EACxB,aAAwB;EACzB;MAEI;EAEL,IAAI,YAAwB,SAAS,UAAU,CAAC,SAAS,IAAI,GAAG,SAAS,UAAU,CAAC,QAAQ,UAAU,GAAG,GAAG;EAC5G,MAAM,cAAsB,KAAK,IAAI,IAAI,UAAU,UAAU,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO;AAEtF,MAAI,YAAY,EAEd,aAA0B,CAAC,YAAa,KAAK,MAAM,SAAS,GAAG;WAExD,YAAY,GAEnB,aAA0B,CAAC,YAAa,KAAK,KAAK,SAAS,GAAG;EAGhE,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,YAAY,CAAC;AAEhD,SAAO;GAEL,WAAwB,CAAC,YAAa;GACtC,aAAwB,cAAc;GACvC"}
@@ -0,0 +1,8 @@
1
+ //#region src/lib/math.d.ts
2
+ declare const toFraction: (_decimal: number) => {
3
+ numerator: number;
4
+ denominator: number;
5
+ };
6
+ //#endregion
7
+ export { toFraction };
8
+ //# sourceMappingURL=math.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.cts","names":[],"sources":["../../src/lib/math.ts"],"mappings":";cAGa,UAAA,GAAoB,QAAA;EAAqB,SAAA;EAAmB,WAAA;AAAA"}
@@ -0,0 +1,8 @@
1
+ //#region src/lib/math.d.ts
2
+ declare const toFraction: (_decimal: number) => {
3
+ numerator: number;
4
+ denominator: number;
5
+ };
6
+ //#endregion
7
+ export { toFraction };
8
+ //# sourceMappingURL=math.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.mts","names":[],"sources":["../../src/lib/math.ts"],"mappings":";cAGa,UAAA,GAAoB,QAAA;EAAqB,SAAA;EAAmB,WAAA;AAAA"}
@@ -0,0 +1,23 @@
1
+ //#region src/lib/math.ts
2
+ const gcd = (a, b) => b ? gcd(b, a % b) : a;
3
+ const toFraction = (_decimal) => {
4
+ if (_decimal === parseInt(_decimal.toString())) return {
5
+ numerator: _decimal,
6
+ denominator: 1
7
+ };
8
+ else {
9
+ let numerator = _decimal.toString().includes(".") ? _decimal.toString().replace(/\d+[.]/, "") : 0;
10
+ const denominator = Math.pow(10, numerator.toString().replace("-", "").length);
11
+ if (_decimal >= 1) numerator = +numerator + Math.floor(_decimal) * denominator;
12
+ else if (_decimal <= -1) numerator = +numerator + Math.ceil(_decimal) * denominator;
13
+ const x = Math.abs(gcd(+numerator, denominator));
14
+ return {
15
+ numerator: +numerator / x,
16
+ denominator: denominator / x
17
+ };
18
+ }
19
+ };
20
+
21
+ //#endregion
22
+ export { toFraction };
23
+ //# sourceMappingURL=math.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.mjs","names":[],"sources":["../../src/lib/math.ts"],"sourcesContent":["// https://github.com/Karakatiza666/ts-practical-fp/blob/8b5ea69208c8b0682e8ff98da7ca0cf4d2b24f6f/src/math.ts\nconst gcd = (a: number, b: number): number => b ? gcd(b, a % b) : a\n\nexport const toFraction = (_decimal: number): { numerator: number, denominator: number } => {\n\n if (_decimal === parseInt(_decimal.toString())) {\n\n return {\n\n numerator: _decimal,\n denominator: 1\n }\n\n } else {\n\n let numerator = _decimal.toString().includes('.') ? _decimal.toString().replace(/\\d+[.]/, '') : 0\n const denominator = Math.pow(10, numerator.toString().replace('-', '').length)\n\n if (_decimal >= 1) {\n\n numerator = +numerator + (Math.floor(_decimal) * denominator)\n }\n else if (_decimal <= -1) {\n\n numerator = +numerator + (Math.ceil(_decimal) * denominator)\n }\n\n const x = Math.abs(gcd(+numerator, denominator))\n\n return {\n\n numerator: +numerator / x,\n denominator: denominator / x\n }\n }\n}\n"],"mappings":";AACA,MAAM,OAA2B,GAAW,MAAsB,IAAI,IAAI,GAAG,IAAI,EAAE,GAAG;AAEtF,MAAa,cAAoB,aAAiE;AAEhG,KAAI,aAAa,SAAS,SAAS,UAAU,CAAC,CAE5C,QAAO;EAEL,WAAwB;EACxB,aAAwB;EACzB;MAEI;EAEL,IAAI,YAAwB,SAAS,UAAU,CAAC,SAAS,IAAI,GAAG,SAAS,UAAU,CAAC,QAAQ,UAAU,GAAG,GAAG;EAC5G,MAAM,cAAsB,KAAK,IAAI,IAAI,UAAU,UAAU,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO;AAEtF,MAAI,YAAY,EAEd,aAA0B,CAAC,YAAa,KAAK,MAAM,SAAS,GAAG;WAExD,YAAY,GAEnB,aAA0B,CAAC,YAAa,KAAK,KAAK,SAAS,GAAG;EAGhE,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,YAAY,CAAC;AAEhD,SAAO;GAEL,WAAwB,CAAC,YAAa;GACtC,aAAwB,cAAc;GACvC"}
@@ -0,0 +1,8 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/lib/number.ts
4
+ const isNumber = (n) => Number(n) === n;
5
+
6
+ //#endregion
7
+ exports.isNumber = isNumber;
8
+ //# sourceMappingURL=number.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.cjs","names":[],"sources":["../../src/lib/number.ts"],"sourcesContent":["export const isNumber = (n: any): boolean => Number(n) === n\n"],"mappings":";;;AAAA,MAAa,YAAoB,MAAoB,OAAO,EAAE,KAAK"}
@@ -0,0 +1,5 @@
1
+ //#region src/lib/number.d.ts
2
+ declare const isNumber: (n: any) => boolean;
3
+ //#endregion
4
+ export { isNumber };
5
+ //# sourceMappingURL=number.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.cts","names":[],"sources":["../../src/lib/number.ts"],"mappings":";cAAa,QAAA,GAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ //#region src/lib/number.d.ts
2
+ declare const isNumber: (n: any) => boolean;
3
+ //#endregion
4
+ export { isNumber };
5
+ //# sourceMappingURL=number.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.mts","names":[],"sources":["../../src/lib/number.ts"],"mappings":";cAAa,QAAA,GAAoB,CAAA"}
@@ -0,0 +1,6 @@
1
+ //#region src/lib/number.ts
2
+ const isNumber = (n) => Number(n) === n;
3
+
4
+ //#endregion
5
+ export { isNumber };
6
+ //# sourceMappingURL=number.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.mjs","names":[],"sources":["../../src/lib/number.ts"],"sourcesContent":["export const isNumber = (n: any): boolean => Number(n) === n\n"],"mappings":";AAAA,MAAa,YAAoB,MAAoB,OAAO,EAAE,KAAK"}
@@ -0,0 +1,19 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_lib_time = require('./time.cjs');
3
+
4
+ //#region src/lib/sleep.ts
5
+ const DEFAULT_SLEEP_MS = 240;
6
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
7
+ const sleepDefault = () => new Promise((resolve) => setTimeout(resolve, DEFAULT_SLEEP_MS));
8
+ const elapsedTime = (msStart) => require_lib_time.now() - msStart;
9
+ const elapsedSeconds = (msStart) => elapsedTime(msStart) / 1e3;
10
+ const canUpdate = (msStart, delay) => require_lib_time.now() - msStart > delay;
11
+
12
+ //#endregion
13
+ exports.DEFAULT_SLEEP_MS = DEFAULT_SLEEP_MS;
14
+ exports.canUpdate = canUpdate;
15
+ exports.elapsedSeconds = elapsedSeconds;
16
+ exports.elapsedTime = elapsedTime;
17
+ exports.sleep = sleep;
18
+ exports.sleepDefault = sleepDefault;
19
+ //# sourceMappingURL=sleep.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.cjs","names":["now"],"sources":["../../src/lib/sleep.ts"],"sourcesContent":["import { now } from './time'\n\nexport const DEFAULT_SLEEP_MS = 240\n\nexport const sleep = (ms: number) => ( new Promise(resolve => setTimeout(resolve, ms)) )\nexport const sleepDefault = () => ( new Promise(resolve => setTimeout(resolve, DEFAULT_SLEEP_MS)) )\nexport const elapsedTime = (msStart: number) => ( now() - msStart )\nexport const elapsedSeconds = (msStart: number) => ( elapsedTime(msStart) / 1000 )\n\nexport const canUpdate = (msStart: number, delay: number) => ( ( now() - msStart ) > delay )\n"],"mappings":";;;;AAEA,MAAa,mBAAmB;AAEhC,MAAa,SAAoB,OAAsB,IAAI,SAAQ,YAAW,WAAW,SAAS,GAAG,CAAC;AACtG,MAAa,qBAA0C,IAAI,SAAQ,YAAW,WAAW,SAAS,iBAAiB,CAAC;AACpH,MAAa,eAAoB,YAAsBA,sBAAK,GAAG;AAC/D,MAAa,kBAAoB,YAAsB,YAAY,QAAQ,GAAG;AAE9E,MAAa,aAAoB,SAAiB,UAAsBA,sBAAK,GAAG,UAAY"}
@@ -0,0 +1,10 @@
1
+ //#region src/lib/sleep.d.ts
2
+ declare const DEFAULT_SLEEP_MS = 240;
3
+ declare const sleep: (ms: number) => Promise<unknown>;
4
+ declare const sleepDefault: () => Promise<unknown>;
5
+ declare const elapsedTime: (msStart: number) => number;
6
+ declare const elapsedSeconds: (msStart: number) => number;
7
+ declare const canUpdate: (msStart: number, delay: number) => boolean;
8
+ //#endregion
9
+ export { DEFAULT_SLEEP_MS, canUpdate, elapsedSeconds, elapsedTime, sleep, sleepDefault };
10
+ //# sourceMappingURL=sleep.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.d.cts","names":[],"sources":["../../src/lib/sleep.ts"],"mappings":";cAEa,gBAAA;AAAA,cAEA,KAAA,GAAoB,EAAA,aAAU,OAAA;AAAA,cAC9B,YAAA,QAAY,OAAA;AAAA,cACZ,WAAA,GAAoB,OAAA;AAAA,cACpB,cAAA,GAAoB,OAAA;AAAA,cAEpB,SAAA,GAAoB,OAAA,UAAiB,KAAA"}
@@ -0,0 +1,10 @@
1
+ //#region src/lib/sleep.d.ts
2
+ declare const DEFAULT_SLEEP_MS = 240;
3
+ declare const sleep: (ms: number) => Promise<unknown>;
4
+ declare const sleepDefault: () => Promise<unknown>;
5
+ declare const elapsedTime: (msStart: number) => number;
6
+ declare const elapsedSeconds: (msStart: number) => number;
7
+ declare const canUpdate: (msStart: number, delay: number) => boolean;
8
+ //#endregion
9
+ export { DEFAULT_SLEEP_MS, canUpdate, elapsedSeconds, elapsedTime, sleep, sleepDefault };
10
+ //# sourceMappingURL=sleep.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.d.mts","names":[],"sources":["../../src/lib/sleep.ts"],"mappings":";cAEa,gBAAA;AAAA,cAEA,KAAA,GAAoB,EAAA,aAAU,OAAA;AAAA,cAC9B,YAAA,QAAY,OAAA;AAAA,cACZ,WAAA,GAAoB,OAAA;AAAA,cACpB,cAAA,GAAoB,OAAA;AAAA,cAEpB,SAAA,GAAoB,OAAA,UAAiB,KAAA"}
@@ -0,0 +1,13 @@
1
+ import { now } from "./time.mjs";
2
+
3
+ //#region src/lib/sleep.ts
4
+ const DEFAULT_SLEEP_MS = 240;
5
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
6
+ const sleepDefault = () => new Promise((resolve) => setTimeout(resolve, DEFAULT_SLEEP_MS));
7
+ const elapsedTime = (msStart) => now() - msStart;
8
+ const elapsedSeconds = (msStart) => elapsedTime(msStart) / 1e3;
9
+ const canUpdate = (msStart, delay) => now() - msStart > delay;
10
+
11
+ //#endregion
12
+ export { DEFAULT_SLEEP_MS, canUpdate, elapsedSeconds, elapsedTime, sleep, sleepDefault };
13
+ //# sourceMappingURL=sleep.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.mjs","names":[],"sources":["../../src/lib/sleep.ts"],"sourcesContent":["import { now } from './time'\n\nexport const DEFAULT_SLEEP_MS = 240\n\nexport const sleep = (ms: number) => ( new Promise(resolve => setTimeout(resolve, ms)) )\nexport const sleepDefault = () => ( new Promise(resolve => setTimeout(resolve, DEFAULT_SLEEP_MS)) )\nexport const elapsedTime = (msStart: number) => ( now() - msStart )\nexport const elapsedSeconds = (msStart: number) => ( elapsedTime(msStart) / 1000 )\n\nexport const canUpdate = (msStart: number, delay: number) => ( ( now() - msStart ) > delay )\n"],"mappings":";;;AAEA,MAAa,mBAAmB;AAEhC,MAAa,SAAoB,OAAsB,IAAI,SAAQ,YAAW,WAAW,SAAS,GAAG,CAAC;AACtG,MAAa,qBAA0C,IAAI,SAAQ,YAAW,WAAW,SAAS,iBAAiB,CAAC;AACpH,MAAa,eAAoB,YAAsB,KAAK,GAAG;AAC/D,MAAa,kBAAoB,YAAsB,YAAY,QAAQ,GAAG;AAE9E,MAAa,aAAoB,SAAiB,UAAsB,KAAK,GAAG,UAAY"}
@@ -0,0 +1,64 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/lib/string.ts
4
+ const ensureLength = (str, length, char = " ", right = true) => {
5
+ let i = 0;
6
+ while (str.length < length && i++ < 100) if (right) str = char + str;
7
+ else str = str + char;
8
+ return str;
9
+ };
10
+ const truncateAddress = (fullAddr, strLen, separator) => {
11
+ if (fullAddr.length <= strLen) return fullAddr;
12
+ separator = separator || "...";
13
+ const charsToShow = strLen - separator.length;
14
+ const frontChars = Math.ceil(charsToShow / 2);
15
+ const backChars = Math.floor(charsToShow / 2);
16
+ return fullAddr.slice(0, frontChars) + separator + fullAddr.slice(fullAddr.length - backChars);
17
+ };
18
+ const truncateString = (str, strLen, suffix = "...") => {
19
+ if (str.length <= strLen) return str;
20
+ return str.slice(0, strLen) + suffix;
21
+ };
22
+ /**
23
+ * Simple fast string hash implementation.
24
+ *
25
+ * See: https://stackoverflow.com/a/52171480/85737
26
+ * @param str
27
+ * @param seed
28
+ */
29
+ const createHash = (str, seed = 42) => {
30
+ let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;
31
+ for (let i = 0, ch; i < str.length; i++) {
32
+ ch = str.charCodeAt(i);
33
+ h1 = Math.imul(h1 ^ ch, 2654435761);
34
+ h2 = Math.imul(h2 ^ ch, 1597334677);
35
+ }
36
+ h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);
37
+ h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);
38
+ return String(4294967296 * (2097151 & h2) + (h1 >>> 0));
39
+ };
40
+ const trimAllStrings = (list) => {
41
+ for (let i = list.length - 1; i >= 0; i--) {
42
+ list[i] = list[i].trim();
43
+ if (list[i] === "") list.splice(i, 1);
44
+ }
45
+ return list;
46
+ };
47
+ const trimQuotes = (str) => {
48
+ if (str.startsWith("\"")) str = str.slice(1);
49
+ if (str.endsWith("\"")) str = str.slice(0, -1);
50
+ return str;
51
+ };
52
+ const reverseString = (str, delimiter = "") => {
53
+ return str.split(delimiter).reverse().join(delimiter);
54
+ };
55
+
56
+ //#endregion
57
+ exports.createHash = createHash;
58
+ exports.ensureLength = ensureLength;
59
+ exports.reverseString = reverseString;
60
+ exports.trimAllStrings = trimAllStrings;
61
+ exports.trimQuotes = trimQuotes;
62
+ exports.truncateAddress = truncateAddress;
63
+ exports.truncateString = truncateString;
64
+ //# sourceMappingURL=string.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.cjs","names":[],"sources":["../../src/lib/string.ts"],"sourcesContent":["export const ensureLength = (str: string, length: number, char: string = ' ', right: boolean = true) => {\n\n let i = 0\n\n while (str.length < length && i++ < 100) {\n\n if (right) { str = char + str }\n else { str = str + char }\n }\n\n return str\n}\nexport const truncateAddress = (fullAddr: string, strLen: number, separator?: string | null) => {\n\n if (fullAddr.length <= strLen) return fullAddr;\n\n separator = separator || '...';\n\n const sepLen = separator.length\n const charsToShow = strLen - sepLen\n const frontChars = Math.ceil( charsToShow / 2)\n const backChars = Math.floor(charsToShow / 2)\n\n return fullAddr.slice(0, frontChars) +\n separator +\n fullAddr.slice(fullAddr.length - backChars);\n}\n\nexport const truncateString = (str: string, strLen: number, suffix: string = '...') => {\n\n if (str.length <= strLen) { return str }\n\n return str.slice(0, strLen) + suffix\n}\n\n/**\n * Simple fast string hash implementation.\n *\n * See: https://stackoverflow.com/a/52171480/85737\n * @param str\n * @param seed\n */\nexport const createHash = (str: string, seed: number = 42) => {\n\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed\n\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1>>>16), 2246822507) ^ Math.imul(h2 ^ (h2>>>13), 3266489909);\n h2 = Math.imul(h2 ^ (h2>>>16), 2246822507) ^ Math.imul(h1 ^ (h1>>>13), 3266489909);\n return String(4294967296 * (2097151 & h2) + (h1>>>0))\n}\n\nexport const trimAllStrings = (list: string[]) => {\n\n for (let i = list.length - 1; i >= 0; i--) {\n\n list[i] = list[i]!.trim()\n\n if (list[i] === '') { list.splice(i, 1) }\n }\n\n return list\n}\n\nexport const trimQuotes = (str: string) => {\n\n if (str.startsWith('\"')) { str = str.slice(1) }\n if (str.endsWith('\"')) { str = str.slice(0, -1) }\n\n return str\n}\n\nexport const reverseString = (str: string, delimiter: string = '') => {\n\n return str.split(delimiter).reverse().join(delimiter)\n}\n"],"mappings":";;;AAAA,MAAa,gBAAoB,KAAa,QAAgB,OAAe,KAAK,QAAiB,SAAS;CAE1G,IAAI,IAA0B;AAE9B,QAAO,IAAI,SAAS,UAAU,MAAM,IAElC,KAAI,MAAwB,OAAM,OAAO;KACb,OAAM,MAAM;AAG1C,QAAO;;AAET,MAAa,mBAAmB,UAAkB,QAAgB,cAA8B;AAE9F,KAAI,SAAS,UAAU,OAAQ,QAAO;AAEtC,aAA0B,aAAa;CAGvC,MAAM,cAAoB,SADA,UAAU;CAEpC,MAAM,aAAoB,KAAK,KAAM,cAAc,EAAE;CACrD,MAAM,YAAoB,KAAK,MAAM,cAAc,EAAE;AAErD,QAAO,SAAS,MAAM,GAAG,WAAW,GAClC,YACA,SAAS,MAAM,SAAS,SAAS,UAAU;;AAG/C,MAAa,kBAAkB,KAAa,QAAgB,SAAiB,UAAU;AAErF,KAAI,IAAI,UAAU,OAAU,QAAO;AAEnC,QAAO,IAAI,MAAM,GAAG,OAAO,GAAG;;;;;;;;;AAUhC,MAAa,cAAoB,KAAa,OAAe,OAAO;CAElE,IAAI,KAAK,aAAa,MAAM,KAAK,aAAa;AAE9C,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,KAAK;AACvC,OAA4B,IAAI,WAAW,EAAE;AAC7C,OAA4B,KAAK,KAAK,KAAK,IAAI,WAAW;AAC1D,OAA4B,KAAK,KAAK,KAAK,IAAI,WAAW;;AAG5D,MAA8B,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW,GAAG,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW;AAC3G,MAA8B,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW,GAAG,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW;AAC3G,QAAO,OAAO,cAAc,UAAU,OAAO,OAAK,GAAG;;AAGvD,MAAa,kBAAoB,SAAmB;AAElD,MAAK,IAAI,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AAEzC,OAAK,KAAuB,KAAK,GAAI,MAAM;AAE3C,MAAI,KAAK,OAAO,GAAY,MAAK,OAAO,GAAG,EAAE;;AAG/C,QAAO;;AAGT,MAAa,cAAoB,QAAgB;AAE/C,KAAI,IAAI,WAAW,KAAI,CAAO,OAAM,IAAI,MAAM,EAAE;AAChD,KAAI,IAAI,SAAS,KAAI,CAAS,OAAM,IAAI,MAAM,GAAG,GAAG;AAEpD,QAAO;;AAGT,MAAa,iBAAoB,KAAa,YAAoB,OAAO;AAEvE,QAAO,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,UAAU"}
@@ -0,0 +1,18 @@
1
+ //#region src/lib/string.d.ts
2
+ declare const ensureLength: (str: string, length: number, char?: string, right?: boolean) => string;
3
+ declare const truncateAddress: (fullAddr: string, strLen: number, separator?: string | null) => string;
4
+ declare const truncateString: (str: string, strLen: number, suffix?: string) => string;
5
+ /**
6
+ * Simple fast string hash implementation.
7
+ *
8
+ * See: https://stackoverflow.com/a/52171480/85737
9
+ * @param str
10
+ * @param seed
11
+ */
12
+ declare const createHash: (str: string, seed?: number) => string;
13
+ declare const trimAllStrings: (list: string[]) => string[];
14
+ declare const trimQuotes: (str: string) => string;
15
+ declare const reverseString: (str: string, delimiter?: string) => string;
16
+ //#endregion
17
+ export { createHash, ensureLength, reverseString, trimAllStrings, trimQuotes, truncateAddress, truncateString };
18
+ //# sourceMappingURL=string.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.cts","names":[],"sources":["../../src/lib/string.ts"],"mappings":";cAAa,YAAA,GAAoB,GAAA,UAAa,MAAA,UAAgB,IAAA,WAAoB,KAAA;AAAA,cAYrE,eAAA,GAAmB,QAAA,UAAkB,MAAA,UAAgB,SAAA;AAAA,cAgBrD,cAAA,GAAkB,GAAA,UAAa,MAAA,UAAgB,MAAA;;;;;;;;cAc/C,UAAA,GAAoB,GAAA,UAAa,IAAA;AAAA,cAejC,cAAA,GAAoB,IAAA;AAAA,cAYpB,UAAA,GAAoB,GAAA;AAAA,cAQpB,aAAA,GAAoB,GAAA,UAAa,SAAA"}
@@ -0,0 +1,18 @@
1
+ //#region src/lib/string.d.ts
2
+ declare const ensureLength: (str: string, length: number, char?: string, right?: boolean) => string;
3
+ declare const truncateAddress: (fullAddr: string, strLen: number, separator?: string | null) => string;
4
+ declare const truncateString: (str: string, strLen: number, suffix?: string) => string;
5
+ /**
6
+ * Simple fast string hash implementation.
7
+ *
8
+ * See: https://stackoverflow.com/a/52171480/85737
9
+ * @param str
10
+ * @param seed
11
+ */
12
+ declare const createHash: (str: string, seed?: number) => string;
13
+ declare const trimAllStrings: (list: string[]) => string[];
14
+ declare const trimQuotes: (str: string) => string;
15
+ declare const reverseString: (str: string, delimiter?: string) => string;
16
+ //#endregion
17
+ export { createHash, ensureLength, reverseString, trimAllStrings, trimQuotes, truncateAddress, truncateString };
18
+ //# sourceMappingURL=string.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.mts","names":[],"sources":["../../src/lib/string.ts"],"mappings":";cAAa,YAAA,GAAoB,GAAA,UAAa,MAAA,UAAgB,IAAA,WAAoB,KAAA;AAAA,cAYrE,eAAA,GAAmB,QAAA,UAAkB,MAAA,UAAgB,SAAA;AAAA,cAgBrD,cAAA,GAAkB,GAAA,UAAa,MAAA,UAAgB,MAAA;;;;;;;;cAc/C,UAAA,GAAoB,GAAA,UAAa,IAAA;AAAA,cAejC,cAAA,GAAoB,IAAA;AAAA,cAYpB,UAAA,GAAoB,GAAA;AAAA,cAQpB,aAAA,GAAoB,GAAA,UAAa,SAAA"}
@@ -0,0 +1,56 @@
1
+ //#region src/lib/string.ts
2
+ const ensureLength = (str, length, char = " ", right = true) => {
3
+ let i = 0;
4
+ while (str.length < length && i++ < 100) if (right) str = char + str;
5
+ else str = str + char;
6
+ return str;
7
+ };
8
+ const truncateAddress = (fullAddr, strLen, separator) => {
9
+ if (fullAddr.length <= strLen) return fullAddr;
10
+ separator = separator || "...";
11
+ const charsToShow = strLen - separator.length;
12
+ const frontChars = Math.ceil(charsToShow / 2);
13
+ const backChars = Math.floor(charsToShow / 2);
14
+ return fullAddr.slice(0, frontChars) + separator + fullAddr.slice(fullAddr.length - backChars);
15
+ };
16
+ const truncateString = (str, strLen, suffix = "...") => {
17
+ if (str.length <= strLen) return str;
18
+ return str.slice(0, strLen) + suffix;
19
+ };
20
+ /**
21
+ * Simple fast string hash implementation.
22
+ *
23
+ * See: https://stackoverflow.com/a/52171480/85737
24
+ * @param str
25
+ * @param seed
26
+ */
27
+ const createHash = (str, seed = 42) => {
28
+ let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;
29
+ for (let i = 0, ch; i < str.length; i++) {
30
+ ch = str.charCodeAt(i);
31
+ h1 = Math.imul(h1 ^ ch, 2654435761);
32
+ h2 = Math.imul(h2 ^ ch, 1597334677);
33
+ }
34
+ h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);
35
+ h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);
36
+ return String(4294967296 * (2097151 & h2) + (h1 >>> 0));
37
+ };
38
+ const trimAllStrings = (list) => {
39
+ for (let i = list.length - 1; i >= 0; i--) {
40
+ list[i] = list[i].trim();
41
+ if (list[i] === "") list.splice(i, 1);
42
+ }
43
+ return list;
44
+ };
45
+ const trimQuotes = (str) => {
46
+ if (str.startsWith("\"")) str = str.slice(1);
47
+ if (str.endsWith("\"")) str = str.slice(0, -1);
48
+ return str;
49
+ };
50
+ const reverseString = (str, delimiter = "") => {
51
+ return str.split(delimiter).reverse().join(delimiter);
52
+ };
53
+
54
+ //#endregion
55
+ export { createHash, ensureLength, reverseString, trimAllStrings, trimQuotes, truncateAddress, truncateString };
56
+ //# sourceMappingURL=string.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.mjs","names":[],"sources":["../../src/lib/string.ts"],"sourcesContent":["export const ensureLength = (str: string, length: number, char: string = ' ', right: boolean = true) => {\n\n let i = 0\n\n while (str.length < length && i++ < 100) {\n\n if (right) { str = char + str }\n else { str = str + char }\n }\n\n return str\n}\nexport const truncateAddress = (fullAddr: string, strLen: number, separator?: string | null) => {\n\n if (fullAddr.length <= strLen) return fullAddr;\n\n separator = separator || '...';\n\n const sepLen = separator.length\n const charsToShow = strLen - sepLen\n const frontChars = Math.ceil( charsToShow / 2)\n const backChars = Math.floor(charsToShow / 2)\n\n return fullAddr.slice(0, frontChars) +\n separator +\n fullAddr.slice(fullAddr.length - backChars);\n}\n\nexport const truncateString = (str: string, strLen: number, suffix: string = '...') => {\n\n if (str.length <= strLen) { return str }\n\n return str.slice(0, strLen) + suffix\n}\n\n/**\n * Simple fast string hash implementation.\n *\n * See: https://stackoverflow.com/a/52171480/85737\n * @param str\n * @param seed\n */\nexport const createHash = (str: string, seed: number = 42) => {\n\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed\n\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1>>>16), 2246822507) ^ Math.imul(h2 ^ (h2>>>13), 3266489909);\n h2 = Math.imul(h2 ^ (h2>>>16), 2246822507) ^ Math.imul(h1 ^ (h1>>>13), 3266489909);\n return String(4294967296 * (2097151 & h2) + (h1>>>0))\n}\n\nexport const trimAllStrings = (list: string[]) => {\n\n for (let i = list.length - 1; i >= 0; i--) {\n\n list[i] = list[i]!.trim()\n\n if (list[i] === '') { list.splice(i, 1) }\n }\n\n return list\n}\n\nexport const trimQuotes = (str: string) => {\n\n if (str.startsWith('\"')) { str = str.slice(1) }\n if (str.endsWith('\"')) { str = str.slice(0, -1) }\n\n return str\n}\n\nexport const reverseString = (str: string, delimiter: string = '') => {\n\n return str.split(delimiter).reverse().join(delimiter)\n}\n"],"mappings":";AAAA,MAAa,gBAAoB,KAAa,QAAgB,OAAe,KAAK,QAAiB,SAAS;CAE1G,IAAI,IAA0B;AAE9B,QAAO,IAAI,SAAS,UAAU,MAAM,IAElC,KAAI,MAAwB,OAAM,OAAO;KACb,OAAM,MAAM;AAG1C,QAAO;;AAET,MAAa,mBAAmB,UAAkB,QAAgB,cAA8B;AAE9F,KAAI,SAAS,UAAU,OAAQ,QAAO;AAEtC,aAA0B,aAAa;CAGvC,MAAM,cAAoB,SADA,UAAU;CAEpC,MAAM,aAAoB,KAAK,KAAM,cAAc,EAAE;CACrD,MAAM,YAAoB,KAAK,MAAM,cAAc,EAAE;AAErD,QAAO,SAAS,MAAM,GAAG,WAAW,GAClC,YACA,SAAS,MAAM,SAAS,SAAS,UAAU;;AAG/C,MAAa,kBAAkB,KAAa,QAAgB,SAAiB,UAAU;AAErF,KAAI,IAAI,UAAU,OAAU,QAAO;AAEnC,QAAO,IAAI,MAAM,GAAG,OAAO,GAAG;;;;;;;;;AAUhC,MAAa,cAAoB,KAAa,OAAe,OAAO;CAElE,IAAI,KAAK,aAAa,MAAM,KAAK,aAAa;AAE9C,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,KAAK;AACvC,OAA4B,IAAI,WAAW,EAAE;AAC7C,OAA4B,KAAK,KAAK,KAAK,IAAI,WAAW;AAC1D,OAA4B,KAAK,KAAK,KAAK,IAAI,WAAW;;AAG5D,MAA8B,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW,GAAG,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW;AAC3G,MAA8B,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW,GAAG,KAAK,KAAK,KAAM,OAAK,IAAK,WAAW;AAC3G,QAAO,OAAO,cAAc,UAAU,OAAO,OAAK,GAAG;;AAGvD,MAAa,kBAAoB,SAAmB;AAElD,MAAK,IAAI,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AAEzC,OAAK,KAAuB,KAAK,GAAI,MAAM;AAE3C,MAAI,KAAK,OAAO,GAAY,MAAK,OAAO,GAAG,EAAE;;AAG/C,QAAO;;AAGT,MAAa,cAAoB,QAAgB;AAE/C,KAAI,IAAI,WAAW,KAAI,CAAO,OAAM,IAAI,MAAM,EAAE;AAChD,KAAI,IAAI,SAAS,KAAI,CAAS,OAAM,IAAI,MAAM,GAAG,GAAG;AAEpD,QAAO;;AAGT,MAAa,iBAAoB,KAAa,YAAoB,OAAO;AAEvE,QAAO,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,UAAU"}
@@ -0,0 +1,27 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/lib/time.ts
4
+ let _offsetFromServer = 0;
5
+ const now = () => Date.now() - _offsetFromServer;
6
+ const setOffsetFromServer = (ts) => {
7
+ _offsetFromServer = Date.now() - ts;
8
+ };
9
+ const changeTimezone = (date, ianaTimezone) => {
10
+ const invDate = new Date(date.toLocaleString("en-US", {
11
+ timeZone: ianaTimezone,
12
+ year: "2-digit",
13
+ month: "2-digit",
14
+ day: "2-digit",
15
+ hour: "2-digit",
16
+ minute: "2-digit",
17
+ second: "2-digit"
18
+ }));
19
+ const ts = date.getTime();
20
+ return new Date(ts + (ts - invDate.getTime()));
21
+ };
22
+
23
+ //#endregion
24
+ exports.changeTimezone = changeTimezone;
25
+ exports.now = now;
26
+ exports.setOffsetFromServer = setOffsetFromServer;
27
+ //# sourceMappingURL=time.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.cjs","names":[],"sources":["../../src/lib/time.ts"],"sourcesContent":["let _offsetFromServer = 0\n\nexport const now = () => Date.now() - _offsetFromServer\n\nexport const setOffsetFromServer = (ts: number) => {\n\n _offsetFromServer = Date.now() - ts\n}\n\nexport const changeTimezone = (date: Date, ianaTimezone: string) => {\n\n // Created to get the time difference between the local timezone and the ianaTimezone.\n // eg. Europe/Berlin to Asia/Tokyo is +8 hours.\n const invDate = new Date(date.toLocaleString('en-US', { timeZone: ianaTimezone,\n year: '2-digit', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }))\n\n // console.log('slots: invDate:', ianaTimezone, invDate)\n // console.log('slots: invDate:', ianaTimezone, date.getTime())\n // console.log('slots: invDate:', ianaTimezone, invDate.getTime())\n\n const ts = date.getTime()\n return new Date(ts + (ts - invDate.getTime()))\n}\n"],"mappings":";;;AAAA,IAAI,oBAA4B;AAEhC,MAAa,YAAyB,KAAK,KAAK,GAAG;AAEnD,MAAa,uBAAuB,OAAe;AAEjD,qBAA8B,KAAK,KAAK,GAAG;;AAG7C,MAAa,kBAAoB,MAAY,iBAAyB;CAIpE,MAAM,UAAwB,IAAI,KAAK,KAAK,eAAe,SAAS;EAAE,UAAU;EAC9E,MAAM;EAAW,OAAO;EAAW,KAAK;EAAW,MAAM;EAAW,QAAQ;EAAW,QAAQ;EAAW,CAAC,CAAC;CAM9G,MAAM,KAAwB,KAAK,SAAS;AAC5C,QAAO,IAAI,KAAK,MAAM,KAAK,QAAQ,SAAS,EAAE"}
@@ -0,0 +1,7 @@
1
+ //#region src/lib/time.d.ts
2
+ declare const now: () => number;
3
+ declare const setOffsetFromServer: (ts: number) => void;
4
+ declare const changeTimezone: (date: Date, ianaTimezone: string) => Date;
5
+ //#endregion
6
+ export { changeTimezone, now, setOffsetFromServer };
7
+ //# sourceMappingURL=time.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.cts","names":[],"sources":["../../src/lib/time.ts"],"mappings":";cAEa,GAAA;AAAA,cAEA,mBAAA,GAAuB,EAAA;AAAA,cAKvB,cAAA,GAAoB,IAAA,EAAM,IAAA,EAAM,YAAA,aAAoB,IAAA"}