@choksheak/ts-utils 0.3.2 → 0.3.4

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 (105) hide show
  1. package/{logging.cjs → asNumber.cjs} +13 -21
  2. package/asNumber.d.mts +6 -0
  3. package/asNumber.d.ts +6 -0
  4. package/asNumber.min.cjs +2 -0
  5. package/asNumber.min.cjs.map +1 -0
  6. package/asNumber.min.mjs +2 -0
  7. package/asNumber.min.mjs.map +1 -0
  8. package/asNumber.mjs +14 -0
  9. package/capLength.cjs +80 -0
  10. package/capLength.d.mts +3 -0
  11. package/capLength.d.ts +3 -0
  12. package/capLength.min.cjs +6 -0
  13. package/capLength.min.cjs.map +1 -0
  14. package/capLength.min.mjs +6 -0
  15. package/capLength.min.mjs.map +1 -0
  16. package/capLength.mjs +53 -0
  17. package/{iterators.cjs → concatIterators.cjs} +4 -4
  18. package/{iterators.min.cjs → concatIterators.min.cjs} +1 -1
  19. package/concatIterators.min.cjs.map +1 -0
  20. package/{iterators.min.mjs → concatIterators.min.mjs} +1 -1
  21. package/concatIterators.min.mjs.map +1 -0
  22. package/{iterators.mjs → concatIterators.mjs} +1 -1
  23. package/duration.min.cjs +1 -1
  24. package/duration.min.mjs +1 -1
  25. package/isPromise.cjs +40 -0
  26. package/isPromise.d.mts +19 -0
  27. package/isPromise.d.ts +19 -0
  28. package/isPromise.min.cjs +2 -0
  29. package/isPromise.min.cjs.map +1 -0
  30. package/isPromise.min.mjs +2 -0
  31. package/isPromise.min.mjs.map +1 -0
  32. package/isPromise.mjs +14 -0
  33. package/kvStore.min.cjs +1 -1
  34. package/kvStore.min.mjs +1 -1
  35. package/localStore.min.cjs +1 -1
  36. package/localStore.min.mjs +1 -1
  37. package/{average.cjs → mean.cjs} +24 -18
  38. package/mean.d.mts +7 -0
  39. package/mean.d.ts +7 -0
  40. package/mean.min.cjs +2 -0
  41. package/mean.min.cjs.map +1 -0
  42. package/mean.min.mjs +2 -0
  43. package/mean.min.mjs.map +1 -0
  44. package/mean.mjs +26 -0
  45. package/median.cjs +56 -0
  46. package/median.d.mts +7 -0
  47. package/median.d.ts +7 -0
  48. package/median.min.cjs +2 -0
  49. package/median.min.cjs.map +1 -0
  50. package/median.min.mjs +2 -0
  51. package/median.min.mjs.map +1 -0
  52. package/median.mjs +29 -0
  53. package/package.json +118 -37
  54. package/round.cjs +2 -7
  55. package/round.d.mts +2 -7
  56. package/round.d.ts +2 -7
  57. package/round.min.cjs +1 -1
  58. package/round.min.cjs.map +1 -1
  59. package/round.min.mjs +1 -1
  60. package/round.min.mjs.map +1 -1
  61. package/round.mjs +1 -5
  62. package/roundToString.cjs +43 -0
  63. package/roundToString.d.mts +8 -0
  64. package/roundToString.d.ts +8 -0
  65. package/roundToString.min.cjs +2 -0
  66. package/roundToString.min.cjs.map +1 -0
  67. package/roundToString.min.mjs +2 -0
  68. package/roundToString.min.mjs.map +1 -0
  69. package/roundToString.mjs +16 -0
  70. package/sum.cjs +17 -7
  71. package/sum.d.mts +3 -3
  72. package/sum.d.ts +3 -3
  73. package/sum.min.cjs +1 -1
  74. package/sum.min.cjs.map +1 -1
  75. package/sum.min.mjs +1 -1
  76. package/sum.min.mjs.map +1 -1
  77. package/sum.mjs +15 -7
  78. package/timer.min.cjs +1 -1
  79. package/timer.min.mjs +1 -1
  80. package/toReadableString.cjs +69 -0
  81. package/toReadableString.d.mts +10 -0
  82. package/toReadableString.d.ts +10 -0
  83. package/toReadableString.min.cjs +6 -0
  84. package/toReadableString.min.cjs.map +1 -0
  85. package/toReadableString.min.mjs +6 -0
  86. package/toReadableString.min.mjs.map +1 -0
  87. package/toReadableString.mjs +44 -0
  88. package/average.d.mts +0 -7
  89. package/average.d.ts +0 -7
  90. package/average.min.cjs +0 -2
  91. package/average.min.cjs.map +0 -1
  92. package/average.min.mjs +0 -2
  93. package/average.min.mjs.map +0 -1
  94. package/average.mjs +0 -20
  95. package/iterators.min.cjs.map +0 -1
  96. package/iterators.min.mjs.map +0 -1
  97. package/logging.d.mts +0 -4
  98. package/logging.d.ts +0 -4
  99. package/logging.min.cjs +0 -2
  100. package/logging.min.cjs.map +0 -1
  101. package/logging.min.mjs +0 -2
  102. package/logging.min.mjs.map +0 -1
  103. package/logging.mjs +0 -21
  104. /package/{iterators.d.mts → concatIterators.d.mts} +0 -0
  105. /package/{iterators.d.ts → concatIterators.d.ts} +0 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns a string with the number in the exact number of decimal places
3
+ * specified, in case the number ends with zeroes, and adding commas for each
4
+ * group of 3 significant digits.
5
+ */
6
+ declare function roundToString(n: number, numDecimalPlaces?: number): string;
7
+
8
+ export { roundToString };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns a string with the number in the exact number of decimal places
3
+ * specified, in case the number ends with zeroes, and adding commas for each
4
+ * group of 3 significant digits.
5
+ */
6
+ declare function roundToString(n: number, numDecimalPlaces?: number): string;
7
+
8
+ export { roundToString };
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var d=(n,r)=>{for(var t in r)i(n,t,{get:r[t],enumerable:!0})},b=(n,r,t,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of g(r))!p.call(n,o)&&o!==t&&i(n,o,{get:()=>r[o],enumerable:!(u=e(r,o))||u.enumerable});return n};var f=n=>b(i({},"__esModule",{value:!0}),n);var S={};d(S,{roundToString:()=>x});module.exports=f(S);function m(n,r=0){let t=Math.pow(10,r);return Math.round(n*t)/t}function x(n,r=0){return m(n,r).toLocaleString("en-US",{minimumFractionDigits:r,maximumFractionDigits:r})}0&&(module.exports={roundToString});
2
+ //# sourceMappingURL=roundToString.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/roundToString.ts","../src/round.ts"],"sourcesContent":["import { round } from \"./round\";\n\n/**\n * Returns a string with the number in the exact number of decimal places\n * specified, in case the number ends with zeroes, and adding commas for each\n * group of 3 significant digits.\n */\nexport function roundToString(n: number, numDecimalPlaces = 0): string {\n return round(n, numDecimalPlaces).toLocaleString(\"en-US\", {\n minimumFractionDigits: numDecimalPlaces,\n maximumFractionDigits: numDecimalPlaces,\n });\n}\n","/**\n * Simplifies rounding of floating point numbers. Note that if your number ends\n * with zeros, and you convert the number to string, you will lose the zeroes\n * at the end. To show the exact number of decimal places, you'll need to use\n * roundToString() or toFixed(). E.g. round(1.20, 2).toFixed(2).\n */\nexport function round(n: number, numDecimalPlaces = 0): number {\n const multipler = Math.pow(10, numDecimalPlaces);\n return Math.round(n * multipler) / multipler;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GCMO,SAASI,EAAM,EAAWC,EAAmB,EAAW,CAC7D,IAAMC,EAAY,KAAK,IAAI,GAAID,CAAgB,EAC/C,OAAO,KAAK,MAAM,EAAIC,CAAS,EAAIA,CACrC,CDFO,SAASC,EAAc,EAAWC,EAAmB,EAAW,CACrE,OAAOC,EAAM,EAAGD,CAAgB,EAAE,eAAe,QAAS,CACxD,sBAAuBA,EACvB,sBAAuBA,CACzB,CAAC,CACH","names":["roundToString_exports","__export","roundToString","__toCommonJS","round","numDecimalPlaces","multipler","roundToString","numDecimalPlaces","round"]}
@@ -0,0 +1,2 @@
1
+ function o(n,r=0){let t=Math.pow(10,r);return Math.round(n*t)/t}function m(n,r=0){return o(n,r).toLocaleString("en-US",{minimumFractionDigits:r,maximumFractionDigits:r})}export{m as roundToString};
2
+ //# sourceMappingURL=roundToString.min.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/round.ts","../src/roundToString.ts"],"sourcesContent":["/**\n * Simplifies rounding of floating point numbers. Note that if your number ends\n * with zeros, and you convert the number to string, you will lose the zeroes\n * at the end. To show the exact number of decimal places, you'll need to use\n * roundToString() or toFixed(). E.g. round(1.20, 2).toFixed(2).\n */\nexport function round(n: number, numDecimalPlaces = 0): number {\n const multipler = Math.pow(10, numDecimalPlaces);\n return Math.round(n * multipler) / multipler;\n}\n","import { round } from \"./round\";\n\n/**\n * Returns a string with the number in the exact number of decimal places\n * specified, in case the number ends with zeroes, and adding commas for each\n * group of 3 significant digits.\n */\nexport function roundToString(n: number, numDecimalPlaces = 0): string {\n return round(n, numDecimalPlaces).toLocaleString(\"en-US\", {\n minimumFractionDigits: numDecimalPlaces,\n maximumFractionDigits: numDecimalPlaces,\n });\n}\n"],"mappings":"AAMO,SAASA,EAAM,EAAWC,EAAmB,EAAW,CAC7D,IAAMC,EAAY,KAAK,IAAI,GAAID,CAAgB,EAC/C,OAAO,KAAK,MAAM,EAAIC,CAAS,EAAIA,CACrC,CCFO,SAASC,EAAc,EAAWC,EAAmB,EAAW,CACrE,OAAOC,EAAM,EAAGD,CAAgB,EAAE,eAAe,QAAS,CACxD,sBAAuBA,EACvB,sBAAuBA,CACzB,CAAC,CACH","names":["round","numDecimalPlaces","multipler","roundToString","numDecimalPlaces","round"]}
@@ -0,0 +1,16 @@
1
+ // src/round.ts
2
+ function round(n, numDecimalPlaces = 0) {
3
+ const multipler = Math.pow(10, numDecimalPlaces);
4
+ return Math.round(n * multipler) / multipler;
5
+ }
6
+
7
+ // src/roundToString.ts
8
+ function roundToString(n, numDecimalPlaces = 0) {
9
+ return round(n, numDecimalPlaces).toLocaleString("en-US", {
10
+ minimumFractionDigits: numDecimalPlaces,
11
+ maximumFractionDigits: numDecimalPlaces
12
+ });
13
+ }
14
+ export {
15
+ roundToString
16
+ };
package/sum.cjs CHANGED
@@ -23,14 +23,24 @@ __export(sum_exports, {
23
23
  sum: () => sum
24
24
  });
25
25
  module.exports = __toCommonJS(sum_exports);
26
+
27
+ // src/asNumber.ts
28
+ function asNumber(u) {
29
+ if (typeof u === "number") {
30
+ return isFinite(u) ? u : 0;
31
+ }
32
+ u = Number(u);
33
+ if (typeof u === "number" && isFinite(u)) {
34
+ return u;
35
+ }
36
+ return 0;
37
+ }
38
+
39
+ // src/sum.ts
26
40
  function sum(numbers) {
27
- return numbers.reduce(
28
- (accumulated, current) => {
29
- const value = typeof current === "number" && !isNaN(current) && isFinite(current) ? current : 0;
30
- return accumulated + value;
31
- },
32
- 0
33
- );
41
+ return numbers.reduce((accumulated, current) => {
42
+ return accumulated + asNumber(current);
43
+ }, 0);
34
44
  }
35
45
  // Annotate the CommonJS export names for ESM import in node:
36
46
  0 && (module.exports = {
package/sum.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Add all the numbers together in the given array. Treats null, undefined and
3
- * NaN as zero.
2
+ * Add all the numbers together in the given array.
3
+ * Non-numbers will be coerced into numbers if possible.
4
4
  */
5
- declare function sum(numbers: (number | null | undefined)[]): number;
5
+ declare function sum(numbers: unknown[]): number;
6
6
 
7
7
  export { sum };
package/sum.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Add all the numbers together in the given array. Treats null, undefined and
3
- * NaN as zero.
2
+ * Add all the numbers together in the given array.
3
+ * Non-numbers will be coerced into numbers if possible.
4
4
  */
5
- declare function sum(numbers: (number | null | undefined)[]): number;
5
+ declare function sum(numbers: unknown[]): number;
6
6
 
7
7
  export { sum };
package/sum.min.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var b=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var r=Object.prototype.hasOwnProperty;var f=(n,e)=>{for(var u in e)b(n,u,{get:e[u],enumerable:!0})},o=(n,e,u,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of l(e))!r.call(n,i)&&i!==u&&b(n,i,{get:()=>e[i],enumerable:!(m=d(e,i))||m.enumerable});return n};var s=n=>o(b({},"__esModule",{value:!0}),n);var a={};f(a,{sum:()=>t});module.exports=s(a);function t(n){return n.reduce((e,u)=>{let m=typeof u=="number"&&!isNaN(u)&&isFinite(u)?u:0;return e+m},0)}0&&(module.exports={sum});
1
+ "use strict";var u=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var p=(n,r)=>{for(var e in r)u(n,e,{get:r[e],enumerable:!0})},s=(n,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of b(r))!f.call(n,t)&&t!==e&&u(n,t,{get:()=>r[t],enumerable:!(i=o(r,t))||i.enumerable});return n};var c=n=>s(u({},"__esModule",{value:!0}),n);var w={};p(w,{sum:()=>k});module.exports=c(w);function m(n){return typeof n=="number"?isFinite(n)?n:0:(n=Number(n),typeof n=="number"&&isFinite(n)?n:0)}function k(n){return n.reduce((r,e)=>r+m(e),0)}0&&(module.exports={sum});
2
2
  //# sourceMappingURL=sum.min.cjs.map
package/sum.min.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sum.ts"],"sourcesContent":["/**\n * Add all the numbers together in the given array. Treats null, undefined and\n * NaN as zero.\n */\nexport function sum(numbers: (number | null | undefined)[]): number {\n return numbers.reduce(\n (accumulated: number, current: number | null | undefined) => {\n const value =\n typeof current === \"number\" && !isNaN(current) && isFinite(current)\n ? current\n : 0;\n\n return accumulated + value;\n },\n 0,\n );\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,IAAA,eAAAC,EAAAH,GAIO,SAASE,EAAIE,EAAgD,CAClE,OAAOA,EAAQ,OACb,CAACC,EAAqBC,IAAuC,CAC3D,IAAMC,EACJ,OAAOD,GAAY,UAAY,CAAC,MAAMA,CAAO,GAAK,SAASA,CAAO,EAC9DA,EACA,EAEN,OAAOD,EAAcE,CACvB,EACA,CACF,CACF","names":["sum_exports","__export","sum","__toCommonJS","numbers","accumulated","current","value"]}
1
+ {"version":3,"sources":["../src/sum.ts","../src/asNumber.ts"],"sourcesContent":["import { asNumber } from \"./asNumber\";\n\n/**\n * Add all the numbers together in the given array.\n * Non-numbers will be coerced into numbers if possible.\n */\nexport function sum(numbers: unknown[]): number {\n return numbers.reduce((accumulated: number, current: unknown) => {\n return accumulated + asNumber(current);\n }, 0);\n}\n","/**\n * Coerce `u` into a number if possible, otherwise just return 0.\n */\nexport function asNumber(u: unknown): number {\n // If u is a valid number, return it.\n if (typeof u === \"number\") {\n return isFinite(u) ? u : 0;\n }\n\n // Try to make into a number if not already a number.\n u = Number(u);\n\n // If u is a valid number, return it.\n if (typeof u === \"number\" && isFinite(u)) {\n return u;\n }\n\n // Return 0 for everything else. This is usually ok if want to just ignore\n // all other noise.\n return 0;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,IAAA,eAAAC,EAAAH,GCGO,SAASI,EAASC,EAAoB,CAE3C,OAAI,OAAOA,GAAM,SACR,SAASA,CAAC,EAAIA,EAAI,GAI3BA,EAAI,OAAOA,CAAC,EAGR,OAAOA,GAAM,UAAY,SAASA,CAAC,EAC9BA,EAKF,EACT,CDdO,SAASC,EAAIC,EAA4B,CAC9C,OAAOA,EAAQ,OAAO,CAACC,EAAqBC,IACnCD,EAAcE,EAASD,CAAO,EACpC,CAAC,CACN","names":["sum_exports","__export","sum","__toCommonJS","asNumber","u","sum","numbers","accumulated","current","asNumber"]}
package/sum.min.mjs CHANGED
@@ -1,2 +1,2 @@
1
- function m(n){return n.reduce((u,e)=>{let i=typeof e=="number"&&!isNaN(e)&&isFinite(e)?e:0;return u+i},0)}export{m as sum};
1
+ function r(n){return typeof n=="number"?isFinite(n)?n:0:(n=Number(n),typeof n=="number"&&isFinite(n)?n:0)}function m(n){return n.reduce((e,t)=>e+r(t),0)}export{m as sum};
2
2
  //# sourceMappingURL=sum.min.mjs.map
package/sum.min.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sum.ts"],"sourcesContent":["/**\n * Add all the numbers together in the given array. Treats null, undefined and\n * NaN as zero.\n */\nexport function sum(numbers: (number | null | undefined)[]): number {\n return numbers.reduce(\n (accumulated: number, current: number | null | undefined) => {\n const value =\n typeof current === \"number\" && !isNaN(current) && isFinite(current)\n ? current\n : 0;\n\n return accumulated + value;\n },\n 0,\n );\n}\n"],"mappings":"AAIO,SAASA,EAAIC,EAAgD,CAClE,OAAOA,EAAQ,OACb,CAACC,EAAqBC,IAAuC,CAC3D,IAAMC,EACJ,OAAOD,GAAY,UAAY,CAAC,MAAMA,CAAO,GAAK,SAASA,CAAO,EAC9DA,EACA,EAEN,OAAOD,EAAcE,CACvB,EACA,CACF,CACF","names":["sum","numbers","accumulated","current","value"]}
1
+ {"version":3,"sources":["../src/asNumber.ts","../src/sum.ts"],"sourcesContent":["/**\n * Coerce `u` into a number if possible, otherwise just return 0.\n */\nexport function asNumber(u: unknown): number {\n // If u is a valid number, return it.\n if (typeof u === \"number\") {\n return isFinite(u) ? u : 0;\n }\n\n // Try to make into a number if not already a number.\n u = Number(u);\n\n // If u is a valid number, return it.\n if (typeof u === \"number\" && isFinite(u)) {\n return u;\n }\n\n // Return 0 for everything else. This is usually ok if want to just ignore\n // all other noise.\n return 0;\n}\n","import { asNumber } from \"./asNumber\";\n\n/**\n * Add all the numbers together in the given array.\n * Non-numbers will be coerced into numbers if possible.\n */\nexport function sum(numbers: unknown[]): number {\n return numbers.reduce((accumulated: number, current: unknown) => {\n return accumulated + asNumber(current);\n }, 0);\n}\n"],"mappings":"AAGO,SAASA,EAASC,EAAoB,CAE3C,OAAI,OAAOA,GAAM,SACR,SAASA,CAAC,EAAIA,EAAI,GAI3BA,EAAI,OAAOA,CAAC,EAGR,OAAOA,GAAM,UAAY,SAASA,CAAC,EAC9BA,EAKF,EACT,CCdO,SAASC,EAAIC,EAA4B,CAC9C,OAAOA,EAAQ,OAAO,CAACC,EAAqBC,IACnCD,EAAcE,EAASD,CAAO,EACpC,CAAC,CACN","names":["asNumber","u","sum","numbers","accumulated","current","asNumber"]}
package/sum.mjs CHANGED
@@ -1,12 +1,20 @@
1
+ // src/asNumber.ts
2
+ function asNumber(u) {
3
+ if (typeof u === "number") {
4
+ return isFinite(u) ? u : 0;
5
+ }
6
+ u = Number(u);
7
+ if (typeof u === "number" && isFinite(u)) {
8
+ return u;
9
+ }
10
+ return 0;
11
+ }
12
+
1
13
  // src/sum.ts
2
14
  function sum(numbers) {
3
- return numbers.reduce(
4
- (accumulated, current) => {
5
- const value = typeof current === "number" && !isNaN(current) && isFinite(current) ? current : 0;
6
- return accumulated + value;
7
- },
8
- 0
9
- );
15
+ return numbers.reduce((accumulated, current) => {
16
+ return accumulated + asNumber(current);
17
+ }, 0);
10
18
  }
11
19
  export {
12
20
  sum
package/timer.min.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var h=(t,o)=>{for(var r in o)p(t,r,{get:o[r],enumerable:!0})},x=(t,o,r,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of d(o))!m.call(t,n)&&n!==r&&p(t,n,{get:()=>o[n],enumerable:!(i=S(o,n))||i.enumerable});return t};var R=t=>x(p({},"__esModule",{value:!0}),t);var A={};h(A,{Timer:()=>c,timer:()=>I});module.exports=R(A);var y=["days","hours","minutes","seconds","milliseconds"],b={days:{short:"day",shorts:"days",long:"day",longs:"days",narrow:"d"},hours:{short:"hr",shorts:"hrs",long:"hour",longs:"hours",narrow:"h"},minutes:{short:"min",shorts:"mins",long:"minute",longs:"minutes",narrow:"m"},seconds:{short:"sec",shorts:"secs",long:"second",longs:"seconds",narrow:"s"},milliseconds:{short:"ms",shorts:"ms",long:"millisecond",longs:"milliseconds",narrow:"ms"}};function P(t){return t=="short"?"shorts":t==="long"?"longs":t}function T(t){return t==="narrow"?"":" "}function U(t){return t==="narrow"?" ":", "}function N(t,o){if(t===0)return o=o??"milliseconds",{[o]:0};let r={};for(let i=0;i<1;i++){let n=Math.floor(t/1e3),a=t-n*1e3;if(a>0&&(r.milliseconds=a),n===0)break;let e=Math.floor(n/60);if(n-=e*60,n>0&&(r.seconds=n),e===0)break;let s=Math.floor(e/60);if(e-=s*60,e>0&&(r.minutes=e),s===0)break;let u=Math.floor(s/24);s-=u*24,s>0&&(r.hours=s),u>0&&(r.days=u)}return r}function O(t,o){o=o??"short";let r=P(o),i=T(o),n=[];for(let e of y){let s=t[e];if(s===void 0)continue;let u=b[e],M=s===1?u[o]:u[r];n.push(s+i+M)}let a=U(o);return n.join(a)}function w(t,o){let r=N(t,o?.durationTypeForZero);return O(r,o?.style)}function D(t){return t>6e4?w(t):t>100?`${(t/1e3).toFixed(3)}s`:t+"ms"}var c=class{startMs;endMs=0;constructor(){this.startMs=Date.now()}stop(){this.endMs=Date.now()}restart(){this.endMs=0,this.startMs=Date.now()}elapsedMs(){return(this.endMs||Date.now())-this.startMs}toString(){return D(this.elapsedMs())}};function I(){return new c}0&&(module.exports={Timer,timer});
1
+ "use strict";var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var D=(t,r)=>{for(var o in r)c(t,o,{get:r[o],enumerable:!0})},M=(t,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of m(r))!h.call(t,n)&&n!==o&&c(t,n,{get:()=>r[n],enumerable:!(i=d(r,n))||i.enumerable});return t};var g=t=>M(c({},"__esModule",{value:!0}),t);var A={};D(A,{Timer:()=>l,timer:()=>O});module.exports=g(A);var _=["days","hours","minutes","seconds","milliseconds"],T={days:{short:"day",shorts:"days",long:"day",longs:"days",narrow:"d"},hours:{short:"hr",shorts:"hrs",long:"hour",longs:"hours",narrow:"h"},minutes:{short:"min",shorts:"mins",long:"minute",longs:"minutes",narrow:"m"},seconds:{short:"sec",shorts:"secs",long:"second",longs:"seconds",narrow:"s"},milliseconds:{short:"ms",shorts:"ms",long:"millisecond",longs:"milliseconds",narrow:"ms"}};function E(t){return t=="short"?"shorts":t==="long"?"longs":t}function w(t){return t==="narrow"?"":" "}function R(t){return t==="narrow"?" ":", "}function P(t,r){if(t===0)return r=r??"milliseconds",{[r]:0};let o={};for(let i=0;i<1;i++){let n=Math.floor(t/1e3),a=t-n*1e3;if(a>0&&(o.milliseconds=a),n===0)break;let e=Math.floor(n/60);if(n-=e*60,n>0&&(o.seconds=n),e===0)break;let s=Math.floor(e/60);if(e-=s*60,e>0&&(o.minutes=e),s===0)break;let u=Math.floor(s/24);s-=u*24,s>0&&(o.hours=s),u>0&&(o.days=u)}return o}function U(t,r){r=r??"short";let o=E(r),i=w(r),n=[];for(let e of _){let s=t[e];if(s===void 0)continue;let u=T[e],f=s===1?u[r]:u[o];n.push(s+i+f)}let a=R(r);return n.join(a)}function N(t,r){let o=P(t,r?.durationTypeForZero);return U(o,r?.style)}function p(t){return t>6e4?N(t):t>100?`${(t/1e3).toFixed(3)}s`:t+"ms"}var l=class{startMs;endMs=0;constructor(){this.startMs=Date.now()}stop(){this.endMs=Date.now()}restart(){this.endMs=0,this.startMs=Date.now()}elapsedMs(){return(this.endMs||Date.now())-this.startMs}toString(){return p(this.elapsedMs())}};function O(){return new l}0&&(module.exports={Timer,timer});
2
2
  //# sourceMappingURL=timer.min.cjs.map
package/timer.min.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var S=["days","hours","minutes","seconds","milliseconds"],d={days:{short:"day",shorts:"days",long:"day",longs:"days",narrow:"d"},hours:{short:"hr",shorts:"hrs",long:"hour",longs:"hours",narrow:"h"},minutes:{short:"min",shorts:"mins",long:"minute",longs:"minutes",narrow:"m"},seconds:{short:"sec",shorts:"secs",long:"second",longs:"seconds",narrow:"s"},milliseconds:{short:"ms",shorts:"ms",long:"millisecond",longs:"milliseconds",narrow:"ms"}};function m(t){return t=="short"?"shorts":t==="long"?"longs":t}function h(t){return t==="narrow"?"":" "}function x(t){return t==="narrow"?" ":", "}function R(t,o){if(t===0)return o=o??"milliseconds",{[o]:0};let r={};for(let u=0;u<1;u++){let s=Math.floor(t/1e3),a=t-s*1e3;if(a>0&&(r.milliseconds=a),s===0)break;let e=Math.floor(s/60);if(s-=e*60,s>0&&(r.seconds=s),e===0)break;let n=Math.floor(e/60);if(e-=n*60,e>0&&(r.minutes=e),n===0)break;let i=Math.floor(n/24);n-=i*24,n>0&&(r.hours=n),i>0&&(r.days=i)}return r}function g(t,o){o=o??"short";let r=m(o),u=h(o),s=[];for(let e of S){let n=t[e];if(n===void 0)continue;let i=d[e],D=n===1?i[o]:i[r];s.push(n+u+D)}let a=x(o);return s.join(a)}function y(t,o){let r=R(t,o?.durationTypeForZero);return g(r,o?.style)}function E(t){return t>6e4?y(t):t>100?`${(t/1e3).toFixed(3)}s`:t+"ms"}var c=class{startMs;endMs=0;constructor(){this.startMs=Date.now()}stop(){this.endMs=Date.now()}restart(){this.endMs=0,this.startMs=Date.now()}elapsedMs(){return(this.endMs||Date.now())-this.startMs}toString(){return E(this.elapsedMs())}};function w(){return new c}export{c as Timer,w as timer};
1
+ var D=["days","hours","minutes","seconds","milliseconds"],M={days:{short:"day",shorts:"days",long:"day",longs:"days",narrow:"d"},hours:{short:"hr",shorts:"hrs",long:"hour",longs:"hours",narrow:"h"},minutes:{short:"min",shorts:"mins",long:"minute",longs:"minutes",narrow:"m"},seconds:{short:"sec",shorts:"secs",long:"second",longs:"seconds",narrow:"s"},milliseconds:{short:"ms",shorts:"ms",long:"millisecond",longs:"milliseconds",narrow:"ms"}};function g(t){return t=="short"?"shorts":t==="long"?"longs":t}function y(t){return t==="narrow"?"":" "}function S(t){return t==="narrow"?" ":", "}function b(t,r){if(t===0)return r=r??"milliseconds",{[r]:0};let o={};for(let u=0;u<1;u++){let s=Math.floor(t/1e3),a=t-s*1e3;if(a>0&&(o.milliseconds=a),s===0)break;let e=Math.floor(s/60);if(s-=e*60,s>0&&(o.seconds=s),e===0)break;let n=Math.floor(e/60);if(e-=n*60,e>0&&(o.minutes=e),n===0)break;let i=Math.floor(n/24);n-=i*24,n>0&&(o.hours=n),i>0&&(o.days=i)}return o}function x(t,r){r=r??"short";let o=g(r),u=y(r),s=[];for(let e of D){let n=t[e];if(n===void 0)continue;let i=M[e],p=n===1?i[r]:i[o];s.push(n+u+p)}let a=S(r);return s.join(a)}function _(t,r){let o=b(t,r?.durationTypeForZero);return x(o,r?.style)}function c(t){return t>6e4?_(t):t>100?`${(t/1e3).toFixed(3)}s`:t+"ms"}var l=class{startMs;endMs=0;constructor(){this.startMs=Date.now()}stop(){this.endMs=Date.now()}restart(){this.endMs=0,this.startMs=Date.now()}elapsedMs(){return(this.endMs||Date.now())-this.startMs}toString(){return c(this.elapsedMs())}};function R(){return new l}export{l as Timer,R as timer};
2
2
  //# sourceMappingURL=timer.min.mjs.map
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/toReadableString.ts
21
+ var toReadableString_exports = {};
22
+ __export(toReadableString_exports, {
23
+ toReadableString: () => toReadableString
24
+ });
25
+ module.exports = __toCommonJS(toReadableString_exports);
26
+ function toReadableString(u, options) {
27
+ if (typeof u === "string") {
28
+ return u;
29
+ }
30
+ if (u instanceof Error) {
31
+ const error = u;
32
+ let result = "";
33
+ const errorName = error.name || "Error";
34
+ const errorMessage = error.message || "An error occurred with no message provided.";
35
+ result += `${errorName}: ${errorMessage}`;
36
+ if (options?.includeStack && error.stack) {
37
+ const stack = error.stack.replace(new RegExp(`^${errorName}:.*\\n?`), "").trim();
38
+ if (stack) {
39
+ result += `
40
+ Stack Trace:
41
+ ${stack}`;
42
+ }
43
+ }
44
+ if (options?.includeErrorProps) {
45
+ const customProps = error;
46
+ const additionalInfo = Object.keys(customProps).filter(
47
+ (key) => key !== "name" && key !== "message" && key !== "stack" && typeof customProps[key] !== "function" && typeof customProps[key] !== "object"
48
+ ).map((key) => `
49
+ - ${key}: ${customProps[key]}`);
50
+ if (additionalInfo.length > 0) {
51
+ result += `
52
+ Additional Data:${additionalInfo.join("")}`;
53
+ }
54
+ }
55
+ return result;
56
+ }
57
+ if (u !== null && typeof u === "object" && u.toString !== Object.prototype.toString) {
58
+ return u.toString();
59
+ }
60
+ try {
61
+ return JSON.stringify(u);
62
+ } catch {
63
+ return String(u);
64
+ }
65
+ }
66
+ // Annotate the CommonJS export names for ESM import in node:
67
+ 0 && (module.exports = {
68
+ toReadableString
69
+ });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Make the given argument of unknown type into something human-readable.
3
+ * For Error objects, you can specify options to make the string more verbose.
4
+ */
5
+ declare function toReadableString(u: unknown, options?: {
6
+ includeStack?: boolean;
7
+ includeErrorProps?: boolean;
8
+ }): string;
9
+
10
+ export { toReadableString };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Make the given argument of unknown type into something human-readable.
3
+ * For Error objects, you can specify options to make the string more verbose.
4
+ */
5
+ declare function toReadableString(u: unknown, options?: {
6
+ includeStack?: boolean;
7
+ includeErrorProps?: boolean;
8
+ }): string;
9
+
10
+ export { toReadableString };
@@ -0,0 +1,6 @@
1
+ "use strict";var c=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var d=(r,t)=>{for(var n in t)c(r,n,{get:t[n],enumerable:!0})},m=(r,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of g(t))!p.call(r,e)&&e!==n&&c(r,e,{get:()=>t[e],enumerable:!(i=l(t,e))||i.enumerable});return r};var S=r=>m(c({},"__esModule",{value:!0}),r);var b={};d(b,{toReadableString:()=>u});module.exports=S(b);function u(r,t){if(typeof r=="string")return r;if(r instanceof Error){let n=r,i="",e=n.name||"Error",f=n.message||"An error occurred with no message provided.";if(i+=`${e}: ${f}`,t?.includeStack&&n.stack){let a=n.stack.replace(new RegExp(`^${e}:.*\\n?`),"").trim();a&&(i+=`
2
+ Stack Trace:
3
+ ${a}`)}if(t?.includeErrorProps){let a=n,s=Object.keys(a).filter(o=>o!=="name"&&o!=="message"&&o!=="stack"&&typeof a[o]!="function"&&typeof a[o]!="object").map(o=>`
4
+ - ${o}: ${a[o]}`);s.length>0&&(i+=`
5
+ Additional Data:${s.join("")}`)}return i}if(r!==null&&typeof r=="object"&&r.toString!==Object.prototype.toString)return r.toString();try{return JSON.stringify(r)}catch{return String(r)}}0&&(module.exports={toReadableString});
6
+ //# sourceMappingURL=toReadableString.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/toReadableString.ts"],"sourcesContent":["/**\n * Make the given argument of unknown type into something human-readable.\n * For Error objects, you can specify options to make the string more verbose.\n */\nexport function toReadableString(\n u: unknown,\n options?: { includeStack?: boolean; includeErrorProps?: boolean },\n): string {\n if (typeof u === \"string\") {\n return u;\n }\n\n if (u instanceof Error) {\n const error = u as Error;\n let result = \"\";\n\n // Always include the name and message\n const errorName = error.name || \"Error\";\n const errorMessage =\n error.message || \"An error occurred with no message provided.\";\n\n result += `${errorName}: ${errorMessage}`;\n\n // Optionally include the stack trace\n if (options?.includeStack && error.stack) {\n // Clean up the stack trace to start on a new line,\n // removing potential duplicate header lines if the browser adds them.\n const stack = error.stack\n // Remove the first line if it duplicates the name/message\n .replace(new RegExp(`^${errorName}:.*\\\\n?`), \"\")\n .trim();\n\n if (stack) {\n result += `\\nStack Trace:\\n${stack}`;\n }\n }\n\n // Add any potential custom error properties (e.g., HTTP status code)\n if (options?.includeErrorProps) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const customProps: { [key: string]: unknown } = error as any;\n\n const additionalInfo = Object.keys(customProps)\n .filter(\n (key) =>\n key !== \"name\" &&\n key !== \"message\" &&\n key !== \"stack\" &&\n typeof customProps[key] !== \"function\" &&\n typeof customProps[key] !== \"object\",\n )\n .map((key) => `\\n- ${key}: ${customProps[key]}`);\n\n if (additionalInfo.length > 0) {\n result += `\\nAdditional Data:${additionalInfo.join(\"\")}`;\n }\n }\n\n return result;\n }\n\n // If the object has a custom toString(), then use it.\n if (\n u !== null &&\n typeof u === \"object\" &&\n u.toString !== Object.prototype.toString\n ) {\n return u.toString();\n }\n\n try {\n // Attempt to JSON stringify the object for inspection.\n return JSON.stringify(u);\n } catch {\n // Fallback if the object cannot be stringified (e.g., circular references).\n return String(u);\n }\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAIO,SAASE,EACdE,EACAC,EACQ,CACR,GAAI,OAAOD,GAAM,SACf,OAAOA,EAGT,GAAIA,aAAa,MAAO,CACtB,IAAME,EAAQF,EACVG,EAAS,GAGPC,EAAYF,EAAM,MAAQ,QAC1BG,EACJH,EAAM,SAAW,8CAKnB,GAHAC,GAAU,GAAGC,CAAS,KAAKC,CAAY,GAGnCJ,GAAS,cAAgBC,EAAM,MAAO,CAGxC,IAAMI,EAAQJ,EAAM,MAEjB,QAAQ,IAAI,OAAO,IAAIE,CAAS,SAAS,EAAG,EAAE,EAC9C,KAAK,EAEJE,IACFH,GAAU;AAAA;AAAA,EAAmBG,CAAK,GAEtC,CAGA,GAAIL,GAAS,kBAAmB,CAE9B,IAAMM,EAA0CL,EAE1CM,EAAiB,OAAO,KAAKD,CAAW,EAC3C,OACEE,GACCA,IAAQ,QACRA,IAAQ,WACRA,IAAQ,SACR,OAAOF,EAAYE,CAAG,GAAM,YAC5B,OAAOF,EAAYE,CAAG,GAAM,QAChC,EACC,IAAKA,GAAQ;AAAA,IAAOA,CAAG,KAAKF,EAAYE,CAAG,CAAC,EAAE,EAE7CD,EAAe,OAAS,IAC1BL,GAAU;AAAA,kBAAqBK,EAAe,KAAK,EAAE,CAAC,GAE1D,CAEA,OAAOL,CACT,CAGA,GACEH,IAAM,MACN,OAAOA,GAAM,UACbA,EAAE,WAAa,OAAO,UAAU,SAEhC,OAAOA,EAAE,SAAS,EAGpB,GAAI,CAEF,OAAO,KAAK,UAAUA,CAAC,CACzB,MAAQ,CAEN,OAAO,OAAOA,CAAC,CACjB,CACF","names":["toReadableString_exports","__export","toReadableString","__toCommonJS","u","options","error","result","errorName","errorMessage","stack","customProps","additionalInfo","key"]}
@@ -0,0 +1,6 @@
1
+ function f(r,i){if(typeof r=="string")return r;if(r instanceof Error){let e=r,o="",a=e.name||"Error",s=e.message||"An error occurred with no message provided.";if(o+=`${a}: ${s}`,i?.includeStack&&e.stack){let n=e.stack.replace(new RegExp(`^${a}:.*\\n?`),"").trim();n&&(o+=`
2
+ Stack Trace:
3
+ ${n}`)}if(i?.includeErrorProps){let n=e,c=Object.keys(n).filter(t=>t!=="name"&&t!=="message"&&t!=="stack"&&typeof n[t]!="function"&&typeof n[t]!="object").map(t=>`
4
+ - ${t}: ${n[t]}`);c.length>0&&(o+=`
5
+ Additional Data:${c.join("")}`)}return o}if(r!==null&&typeof r=="object"&&r.toString!==Object.prototype.toString)return r.toString();try{return JSON.stringify(r)}catch{return String(r)}}export{f as toReadableString};
6
+ //# sourceMappingURL=toReadableString.min.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/toReadableString.ts"],"sourcesContent":["/**\n * Make the given argument of unknown type into something human-readable.\n * For Error objects, you can specify options to make the string more verbose.\n */\nexport function toReadableString(\n u: unknown,\n options?: { includeStack?: boolean; includeErrorProps?: boolean },\n): string {\n if (typeof u === \"string\") {\n return u;\n }\n\n if (u instanceof Error) {\n const error = u as Error;\n let result = \"\";\n\n // Always include the name and message\n const errorName = error.name || \"Error\";\n const errorMessage =\n error.message || \"An error occurred with no message provided.\";\n\n result += `${errorName}: ${errorMessage}`;\n\n // Optionally include the stack trace\n if (options?.includeStack && error.stack) {\n // Clean up the stack trace to start on a new line,\n // removing potential duplicate header lines if the browser adds them.\n const stack = error.stack\n // Remove the first line if it duplicates the name/message\n .replace(new RegExp(`^${errorName}:.*\\\\n?`), \"\")\n .trim();\n\n if (stack) {\n result += `\\nStack Trace:\\n${stack}`;\n }\n }\n\n // Add any potential custom error properties (e.g., HTTP status code)\n if (options?.includeErrorProps) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const customProps: { [key: string]: unknown } = error as any;\n\n const additionalInfo = Object.keys(customProps)\n .filter(\n (key) =>\n key !== \"name\" &&\n key !== \"message\" &&\n key !== \"stack\" &&\n typeof customProps[key] !== \"function\" &&\n typeof customProps[key] !== \"object\",\n )\n .map((key) => `\\n- ${key}: ${customProps[key]}`);\n\n if (additionalInfo.length > 0) {\n result += `\\nAdditional Data:${additionalInfo.join(\"\")}`;\n }\n }\n\n return result;\n }\n\n // If the object has a custom toString(), then use it.\n if (\n u !== null &&\n typeof u === \"object\" &&\n u.toString !== Object.prototype.toString\n ) {\n return u.toString();\n }\n\n try {\n // Attempt to JSON stringify the object for inspection.\n return JSON.stringify(u);\n } catch {\n // Fallback if the object cannot be stringified (e.g., circular references).\n return String(u);\n }\n}\n"],"mappings":"AAIO,SAASA,EACdC,EACAC,EACQ,CACR,GAAI,OAAOD,GAAM,SACf,OAAOA,EAGT,GAAIA,aAAa,MAAO,CACtB,IAAME,EAAQF,EACVG,EAAS,GAGPC,EAAYF,EAAM,MAAQ,QAC1BG,EACJH,EAAM,SAAW,8CAKnB,GAHAC,GAAU,GAAGC,CAAS,KAAKC,CAAY,GAGnCJ,GAAS,cAAgBC,EAAM,MAAO,CAGxC,IAAMI,EAAQJ,EAAM,MAEjB,QAAQ,IAAI,OAAO,IAAIE,CAAS,SAAS,EAAG,EAAE,EAC9C,KAAK,EAEJE,IACFH,GAAU;AAAA;AAAA,EAAmBG,CAAK,GAEtC,CAGA,GAAIL,GAAS,kBAAmB,CAE9B,IAAMM,EAA0CL,EAE1CM,EAAiB,OAAO,KAAKD,CAAW,EAC3C,OACEE,GACCA,IAAQ,QACRA,IAAQ,WACRA,IAAQ,SACR,OAAOF,EAAYE,CAAG,GAAM,YAC5B,OAAOF,EAAYE,CAAG,GAAM,QAChC,EACC,IAAKA,GAAQ;AAAA,IAAOA,CAAG,KAAKF,EAAYE,CAAG,CAAC,EAAE,EAE7CD,EAAe,OAAS,IAC1BL,GAAU;AAAA,kBAAqBK,EAAe,KAAK,EAAE,CAAC,GAE1D,CAEA,OAAOL,CACT,CAGA,GACEH,IAAM,MACN,OAAOA,GAAM,UACbA,EAAE,WAAa,OAAO,UAAU,SAEhC,OAAOA,EAAE,SAAS,EAGpB,GAAI,CAEF,OAAO,KAAK,UAAUA,CAAC,CACzB,MAAQ,CAEN,OAAO,OAAOA,CAAC,CACjB,CACF","names":["toReadableString","u","options","error","result","errorName","errorMessage","stack","customProps","additionalInfo","key"]}
@@ -0,0 +1,44 @@
1
+ // src/toReadableString.ts
2
+ function toReadableString(u, options) {
3
+ if (typeof u === "string") {
4
+ return u;
5
+ }
6
+ if (u instanceof Error) {
7
+ const error = u;
8
+ let result = "";
9
+ const errorName = error.name || "Error";
10
+ const errorMessage = error.message || "An error occurred with no message provided.";
11
+ result += `${errorName}: ${errorMessage}`;
12
+ if (options?.includeStack && error.stack) {
13
+ const stack = error.stack.replace(new RegExp(`^${errorName}:.*\\n?`), "").trim();
14
+ if (stack) {
15
+ result += `
16
+ Stack Trace:
17
+ ${stack}`;
18
+ }
19
+ }
20
+ if (options?.includeErrorProps) {
21
+ const customProps = error;
22
+ const additionalInfo = Object.keys(customProps).filter(
23
+ (key) => key !== "name" && key !== "message" && key !== "stack" && typeof customProps[key] !== "function" && typeof customProps[key] !== "object"
24
+ ).map((key) => `
25
+ - ${key}: ${customProps[key]}`);
26
+ if (additionalInfo.length > 0) {
27
+ result += `
28
+ Additional Data:${additionalInfo.join("")}`;
29
+ }
30
+ }
31
+ return result;
32
+ }
33
+ if (u !== null && typeof u === "object" && u.toString !== Object.prototype.toString) {
34
+ return u.toString();
35
+ }
36
+ try {
37
+ return JSON.stringify(u);
38
+ } catch {
39
+ return String(u);
40
+ }
41
+ }
42
+ export {
43
+ toReadableString
44
+ };
package/average.d.mts DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * Average all the numbers together in the given array. Treats null, undefined
3
- * and NaN as zero.
4
- */
5
- declare function average(numbers: (number | null | undefined)[]): number;
6
-
7
- export { average };
package/average.d.ts DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * Average all the numbers together in the given array. Treats null, undefined
3
- * and NaN as zero.
4
- */
5
- declare function average(numbers: (number | null | undefined)[]): number;
6
-
7
- export { average };
package/average.min.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var i=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var d=(n,e)=>{for(var u in e)i(n,u,{get:e[u],enumerable:!0})},a=(n,e,u,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of m(e))!f.call(n,t)&&t!==u&&i(n,t,{get:()=>e[t],enumerable:!(r=o(e,t))||r.enumerable});return n};var b=n=>a(i({},"__esModule",{value:!0}),n);var s={};d(s,{average:()=>p});module.exports=b(s);function l(n){return n.reduce((e,u)=>{let r=typeof u=="number"&&!isNaN(u)&&isFinite(u)?u:0;return e+r},0)}function p(n){return n.length===0?0:l(n)/n.length}0&&(module.exports={average});
2
- //# sourceMappingURL=average.min.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/average.ts","../src/sum.ts"],"sourcesContent":["import { sum } from \"./sum\";\n\n/**\n * Average all the numbers together in the given array. Treats null, undefined\n * and NaN as zero.\n */\nexport function average(numbers: (number | null | undefined)[]): number {\n if (numbers.length === 0) return 0;\n\n const total = sum(numbers);\n\n return total / numbers.length;\n}\n","/**\n * Add all the numbers together in the given array. Treats null, undefined and\n * NaN as zero.\n */\nexport function sum(numbers: (number | null | undefined)[]): number {\n return numbers.reduce(\n (accumulated: number, current: number | null | undefined) => {\n const value =\n typeof current === \"number\" && !isNaN(current) && isFinite(current)\n ? current\n : 0;\n\n return accumulated + value;\n },\n 0,\n );\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GCIO,SAASI,EAAIC,EAAgD,CAClE,OAAOA,EAAQ,OACb,CAACC,EAAqBC,IAAuC,CAC3D,IAAMC,EACJ,OAAOD,GAAY,UAAY,CAAC,MAAMA,CAAO,GAAK,SAASA,CAAO,EAC9DA,EACA,EAEN,OAAOD,EAAcE,CACvB,EACA,CACF,CACF,CDVO,SAASC,EAAQC,EAAgD,CACtE,OAAIA,EAAQ,SAAW,EAAU,EAEnBC,EAAID,CAAO,EAEVA,EAAQ,MACzB","names":["average_exports","__export","average","__toCommonJS","sum","numbers","accumulated","current","value","average","numbers","sum"]}
package/average.min.mjs DELETED
@@ -1,2 +0,0 @@
1
- function t(n){return n.reduce((u,e)=>{let r=typeof e=="number"&&!isNaN(e)&&isFinite(e)?e:0;return u+r},0)}function o(n){return n.length===0?0:t(n)/n.length}export{o as average};
2
- //# sourceMappingURL=average.min.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sum.ts","../src/average.ts"],"sourcesContent":["/**\n * Add all the numbers together in the given array. Treats null, undefined and\n * NaN as zero.\n */\nexport function sum(numbers: (number | null | undefined)[]): number {\n return numbers.reduce(\n (accumulated: number, current: number | null | undefined) => {\n const value =\n typeof current === \"number\" && !isNaN(current) && isFinite(current)\n ? current\n : 0;\n\n return accumulated + value;\n },\n 0,\n );\n}\n","import { sum } from \"./sum\";\n\n/**\n * Average all the numbers together in the given array. Treats null, undefined\n * and NaN as zero.\n */\nexport function average(numbers: (number | null | undefined)[]): number {\n if (numbers.length === 0) return 0;\n\n const total = sum(numbers);\n\n return total / numbers.length;\n}\n"],"mappings":"AAIO,SAASA,EAAIC,EAAgD,CAClE,OAAOA,EAAQ,OACb,CAACC,EAAqBC,IAAuC,CAC3D,IAAMC,EACJ,OAAOD,GAAY,UAAY,CAAC,MAAMA,CAAO,GAAK,SAASA,CAAO,EAC9DA,EACA,EAEN,OAAOD,EAAcE,CACvB,EACA,CACF,CACF,CCVO,SAASC,EAAQC,EAAgD,CACtE,OAAIA,EAAQ,SAAW,EAAU,EAEnBC,EAAID,CAAO,EAEVA,EAAQ,MACzB","names":["sum","numbers","accumulated","current","value","average","numbers","sum"]}
package/average.mjs DELETED
@@ -1,20 +0,0 @@
1
- // src/sum.ts
2
- function sum(numbers) {
3
- return numbers.reduce(
4
- (accumulated, current) => {
5
- const value = typeof current === "number" && !isNaN(current) && isFinite(current) ? current : 0;
6
- return accumulated + value;
7
- },
8
- 0
9
- );
10
- }
11
-
12
- // src/average.ts
13
- function average(numbers) {
14
- if (numbers.length === 0) return 0;
15
- const total = sum(numbers);
16
- return total / numbers.length;
17
- }
18
- export {
19
- average
20
- };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/iterators.ts"],"sourcesContent":["/** Memory-efficient way to concat two or more iterators. */\nexport function* concatIterators<T>(...iterators: Generator<T>[]) {\n for (const iterator of iterators) {\n yield* iterator;\n }\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GACO,SAAUE,KAAsBE,EAA2B,CAChE,QAAWC,KAAYD,EACrB,MAAOC,CAEX","names":["iterators_exports","__export","concatIterators","__toCommonJS","iterators","iterator"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/iterators.ts"],"sourcesContent":["/** Memory-efficient way to concat two or more iterators. */\nexport function* concatIterators<T>(...iterators: Generator<T>[]) {\n for (const iterator of iterators) {\n yield* iterator;\n }\n}\n"],"mappings":"AACO,SAAUA,KAAsBC,EAA2B,CAChE,QAAWC,KAAYD,EACrB,MAAOC,CAEX","names":["concatIterators","iterators","iterator"]}
package/logging.d.mts DELETED
@@ -1,4 +0,0 @@
1
- declare function stringify(u: unknown): string;
2
- declare function capLength(u: unknown, maxLength?: number): string;
3
-
4
- export { capLength, stringify };
package/logging.d.ts DELETED
@@ -1,4 +0,0 @@
1
- declare function stringify(u: unknown): string;
2
- declare function capLength(u: unknown, maxLength?: number): string;
3
-
4
- export { capLength, stringify };
package/logging.min.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var p=(t,n)=>{for(var r in n)o(t,r,{get:n[r],enumerable:!0})},l=(t,n,r,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of s(n))!c.call(t,i)&&i!==r&&o(t,i,{get:()=>n[i],enumerable:!(e=g(n,i))||e.enumerable});return t};var y=t=>l(o({},"__esModule",{value:!0}),t);var S={};p(S,{capLength:()=>u,stringify:()=>f});module.exports=y(S);function f(t){return typeof t=="string"?t:t!==null&&typeof t=="object"&&t.toString!==Object.prototype.toString?t.toString():JSON.stringify(t)}function u(t,n=400){let r=f(t);return r.length<=n?r:r.slice(0,n)+` ... (${r.length-n} more)`}0&&(module.exports={capLength,stringify});
2
- //# sourceMappingURL=logging.min.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/logging.ts"],"sourcesContent":["export function stringify(u: unknown): string {\n if (typeof u === \"string\") {\n return u;\n }\n\n // If the object has a custom toString(), then use it.\n if (\n u !== null &&\n typeof u === \"object\" &&\n u.toString !== Object.prototype.toString\n ) {\n return u.toString();\n }\n\n return JSON.stringify(u);\n}\n\nexport function capLength(u: unknown, maxLength = 400): string {\n const s = stringify(u);\n\n if (s.length <= maxLength) {\n return s;\n }\n\n return s.slice(0, maxLength) + ` ... (${s.length - maxLength} more)`;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,cAAAC,IAAA,eAAAC,EAAAJ,GAAO,SAASG,EAAUE,EAAoB,CAC5C,OAAI,OAAOA,GAAM,SACRA,EAKPA,IAAM,MACN,OAAOA,GAAM,UACbA,EAAE,WAAa,OAAO,UAAU,SAEzBA,EAAE,SAAS,EAGb,KAAK,UAAUA,CAAC,CACzB,CAEO,SAASH,EAAUG,EAAYC,EAAY,IAAa,CAC7D,IAAMC,EAAIJ,EAAUE,CAAC,EAErB,OAAIE,EAAE,QAAUD,EACPC,EAGFA,EAAE,MAAM,EAAGD,CAAS,EAAI,SAASC,EAAE,OAASD,CAAS,QAC9D","names":["logging_exports","__export","capLength","stringify","__toCommonJS","u","maxLength","s"]}
package/logging.min.mjs DELETED
@@ -1,2 +0,0 @@
1
- function i(t){return typeof t=="string"?t:t!==null&&typeof t=="object"&&t.toString!==Object.prototype.toString?t.toString():JSON.stringify(t)}function o(t,r=400){let n=i(t);return n.length<=r?n:n.slice(0,r)+` ... (${n.length-r} more)`}export{o as capLength,i as stringify};
2
- //# sourceMappingURL=logging.min.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/logging.ts"],"sourcesContent":["export function stringify(u: unknown): string {\n if (typeof u === \"string\") {\n return u;\n }\n\n // If the object has a custom toString(), then use it.\n if (\n u !== null &&\n typeof u === \"object\" &&\n u.toString !== Object.prototype.toString\n ) {\n return u.toString();\n }\n\n return JSON.stringify(u);\n}\n\nexport function capLength(u: unknown, maxLength = 400): string {\n const s = stringify(u);\n\n if (s.length <= maxLength) {\n return s;\n }\n\n return s.slice(0, maxLength) + ` ... (${s.length - maxLength} more)`;\n}\n"],"mappings":"AAAO,SAASA,EAAUC,EAAoB,CAC5C,OAAI,OAAOA,GAAM,SACRA,EAKPA,IAAM,MACN,OAAOA,GAAM,UACbA,EAAE,WAAa,OAAO,UAAU,SAEzBA,EAAE,SAAS,EAGb,KAAK,UAAUA,CAAC,CACzB,CAEO,SAASC,EAAUD,EAAYE,EAAY,IAAa,CAC7D,IAAMC,EAAIJ,EAAUC,CAAC,EAErB,OAAIG,EAAE,QAAUD,EACPC,EAGFA,EAAE,MAAM,EAAGD,CAAS,EAAI,SAASC,EAAE,OAASD,CAAS,QAC9D","names":["stringify","u","capLength","maxLength","s"]}
package/logging.mjs DELETED
@@ -1,21 +0,0 @@
1
- // src/logging.ts
2
- function stringify(u) {
3
- if (typeof u === "string") {
4
- return u;
5
- }
6
- if (u !== null && typeof u === "object" && u.toString !== Object.prototype.toString) {
7
- return u.toString();
8
- }
9
- return JSON.stringify(u);
10
- }
11
- function capLength(u, maxLength = 400) {
12
- const s = stringify(u);
13
- if (s.length <= maxLength) {
14
- return s;
15
- }
16
- return s.slice(0, maxLength) + ` ... (${s.length - maxLength} more)`;
17
- }
18
- export {
19
- capLength,
20
- stringify
21
- };
File without changes
File without changes