modern-ms 0.1.1
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.
- package/.github/workflows/npm-publish.yml +46 -0
- package/LICENSE +21 -0
- package/README.md +1165 -0
- package/dist/adapters/adapters/react.d.ts +14 -0
- package/dist/adapters/adapters/react.d.ts.map +1 -0
- package/dist/adapters/adapters/solid.d.ts +3 -0
- package/dist/adapters/adapters/solid.d.ts.map +1 -0
- package/dist/adapters/adapters/svelte.d.ts +10 -0
- package/dist/adapters/adapters/svelte.d.ts.map +1 -0
- package/dist/adapters/adapters/vue.d.ts +7 -0
- package/dist/adapters/adapters/vue.d.ts.map +1 -0
- package/dist/adapters/advanced/streaming.d.ts +13 -0
- package/dist/adapters/advanced/streaming.d.ts.map +1 -0
- package/dist/adapters/advanced/worker.d.ts +14 -0
- package/dist/adapters/advanced/worker.d.ts.map +1 -0
- package/dist/adapters/browser/index.d.ts +9 -0
- package/dist/adapters/browser/index.d.ts.map +1 -0
- package/dist/adapters/cli/index.d.ts +3 -0
- package/dist/adapters/cli/index.d.ts.map +1 -0
- package/dist/adapters/core/cache.d.ts +15 -0
- package/dist/adapters/core/cache.d.ts.map +1 -0
- package/dist/adapters/core/constants.d.ts +18 -0
- package/dist/adapters/core/constants.d.ts.map +1 -0
- package/dist/adapters/core/formatter.d.ts +3 -0
- package/dist/adapters/core/formatter.d.ts.map +1 -0
- package/dist/adapters/core/index.d.ts +11 -0
- package/dist/adapters/core/index.d.ts.map +1 -0
- package/dist/adapters/core/parser.d.ts +4 -0
- package/dist/adapters/core/parser.d.ts.map +1 -0
- package/dist/adapters/core/types.d.ts +27 -0
- package/dist/adapters/core/types.d.ts.map +1 -0
- package/dist/adapters/react.cjs +86 -0
- package/dist/adapters/react.cjs.map +1 -0
- package/dist/adapters/react.d.ts +15 -0
- package/dist/adapters/react.js +78 -0
- package/dist/adapters/react.js.map +1 -0
- package/dist/adapters/solid.cjs +25 -0
- package/dist/adapters/solid.cjs.map +1 -0
- package/dist/adapters/solid.js +22 -0
- package/dist/adapters/solid.js.map +1 -0
- package/dist/adapters/svelte.cjs +35 -0
- package/dist/adapters/svelte.cjs.map +1 -0
- package/dist/adapters/svelte.js +32 -0
- package/dist/adapters/svelte.js.map +1 -0
- package/dist/adapters/vue.cjs +44 -0
- package/dist/adapters/vue.cjs.map +1 -0
- package/dist/adapters/vue.d.ts +9 -0
- package/dist/adapters/vue.js +40 -0
- package/dist/adapters/vue.js.map +1 -0
- package/dist/advanced/adapters/react.d.ts +14 -0
- package/dist/advanced/adapters/react.d.ts.map +1 -0
- package/dist/advanced/adapters/solid.d.ts +3 -0
- package/dist/advanced/adapters/solid.d.ts.map +1 -0
- package/dist/advanced/adapters/svelte.d.ts +10 -0
- package/dist/advanced/adapters/svelte.d.ts.map +1 -0
- package/dist/advanced/adapters/vue.d.ts +7 -0
- package/dist/advanced/adapters/vue.d.ts.map +1 -0
- package/dist/advanced/advanced/streaming.d.ts +13 -0
- package/dist/advanced/advanced/streaming.d.ts.map +1 -0
- package/dist/advanced/advanced/worker.d.ts +14 -0
- package/dist/advanced/advanced/worker.d.ts.map +1 -0
- package/dist/advanced/browser/index.d.ts +9 -0
- package/dist/advanced/browser/index.d.ts.map +1 -0
- package/dist/advanced/cli/index.d.ts +3 -0
- package/dist/advanced/cli/index.d.ts.map +1 -0
- package/dist/advanced/core/cache.d.ts +15 -0
- package/dist/advanced/core/cache.d.ts.map +1 -0
- package/dist/advanced/core/constants.d.ts +18 -0
- package/dist/advanced/core/constants.d.ts.map +1 -0
- package/dist/advanced/core/formatter.d.ts +3 -0
- package/dist/advanced/core/formatter.d.ts.map +1 -0
- package/dist/advanced/core/index.d.ts +11 -0
- package/dist/advanced/core/index.d.ts.map +1 -0
- package/dist/advanced/core/parser.d.ts +4 -0
- package/dist/advanced/core/parser.d.ts.map +1 -0
- package/dist/advanced/core/types.d.ts +27 -0
- package/dist/advanced/core/types.d.ts.map +1 -0
- package/dist/advanced/streaming.cjs +48 -0
- package/dist/advanced/streaming.cjs.map +1 -0
- package/dist/advanced/streaming.js +45 -0
- package/dist/advanced/streaming.js.map +1 -0
- package/dist/advanced/worker.cjs +78 -0
- package/dist/advanced/worker.cjs.map +1 -0
- package/dist/advanced/worker.js +76 -0
- package/dist/advanced/worker.js.map +1 -0
- package/dist/browser/adapters/react.d.ts +14 -0
- package/dist/browser/adapters/react.d.ts.map +1 -0
- package/dist/browser/adapters/solid.d.ts +3 -0
- package/dist/browser/adapters/solid.d.ts.map +1 -0
- package/dist/browser/adapters/svelte.d.ts +10 -0
- package/dist/browser/adapters/svelte.d.ts.map +1 -0
- package/dist/browser/adapters/vue.d.ts +7 -0
- package/dist/browser/adapters/vue.d.ts.map +1 -0
- package/dist/browser/advanced/streaming.d.ts +13 -0
- package/dist/browser/advanced/streaming.d.ts.map +1 -0
- package/dist/browser/advanced/worker.d.ts +14 -0
- package/dist/browser/advanced/worker.d.ts.map +1 -0
- package/dist/browser/browser/index.d.ts +9 -0
- package/dist/browser/browser/index.d.ts.map +1 -0
- package/dist/browser/cli/index.d.ts +3 -0
- package/dist/browser/cli/index.d.ts.map +1 -0
- package/dist/browser/core/cache.d.ts +15 -0
- package/dist/browser/core/cache.d.ts.map +1 -0
- package/dist/browser/core/constants.d.ts +18 -0
- package/dist/browser/core/constants.d.ts.map +1 -0
- package/dist/browser/core/formatter.d.ts +3 -0
- package/dist/browser/core/formatter.d.ts.map +1 -0
- package/dist/browser/core/index.d.ts +11 -0
- package/dist/browser/core/index.d.ts.map +1 -0
- package/dist/browser/core/parser.d.ts +4 -0
- package/dist/browser/core/parser.d.ts.map +1 -0
- package/dist/browser/core/types.d.ts +27 -0
- package/dist/browser/core/types.d.ts.map +1 -0
- package/dist/browser/index.d.ts +29 -0
- package/dist/browser/index.js +289 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/cli/adapters/react.d.ts +14 -0
- package/dist/cli/adapters/react.d.ts.map +1 -0
- package/dist/cli/adapters/solid.d.ts +3 -0
- package/dist/cli/adapters/solid.d.ts.map +1 -0
- package/dist/cli/adapters/svelte.d.ts +10 -0
- package/dist/cli/adapters/svelte.d.ts.map +1 -0
- package/dist/cli/adapters/vue.d.ts +7 -0
- package/dist/cli/adapters/vue.d.ts.map +1 -0
- package/dist/cli/advanced/streaming.d.ts +13 -0
- package/dist/cli/advanced/streaming.d.ts.map +1 -0
- package/dist/cli/advanced/worker.d.ts +14 -0
- package/dist/cli/advanced/worker.d.ts.map +1 -0
- package/dist/cli/browser/index.d.ts +9 -0
- package/dist/cli/browser/index.d.ts.map +1 -0
- package/dist/cli/cli/index.d.ts +3 -0
- package/dist/cli/cli/index.d.ts.map +1 -0
- package/dist/cli/core/cache.d.ts +15 -0
- package/dist/cli/core/cache.d.ts.map +1 -0
- package/dist/cli/core/constants.d.ts +18 -0
- package/dist/cli/core/constants.d.ts.map +1 -0
- package/dist/cli/core/formatter.d.ts +3 -0
- package/dist/cli/core/formatter.d.ts.map +1 -0
- package/dist/cli/core/index.d.ts +11 -0
- package/dist/cli/core/index.d.ts.map +1 -0
- package/dist/cli/core/parser.d.ts +4 -0
- package/dist/cli/core/parser.d.ts.map +1 -0
- package/dist/cli/core/types.d.ts +27 -0
- package/dist/cli/core/types.d.ts.map +1 -0
- package/dist/cli/index.js +320 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/adapters/react.d.ts +14 -0
- package/dist/core/adapters/react.d.ts.map +1 -0
- package/dist/core/adapters/solid.d.ts +3 -0
- package/dist/core/adapters/solid.d.ts.map +1 -0
- package/dist/core/adapters/svelte.d.ts +10 -0
- package/dist/core/adapters/svelte.d.ts.map +1 -0
- package/dist/core/adapters/vue.d.ts +7 -0
- package/dist/core/adapters/vue.d.ts.map +1 -0
- package/dist/core/advanced/streaming.d.ts +13 -0
- package/dist/core/advanced/streaming.d.ts.map +1 -0
- package/dist/core/advanced/worker.d.ts +14 -0
- package/dist/core/advanced/worker.d.ts.map +1 -0
- package/dist/core/browser/index.d.ts +9 -0
- package/dist/core/browser/index.d.ts.map +1 -0
- package/dist/core/cli/index.d.ts +3 -0
- package/dist/core/cli/index.d.ts.map +1 -0
- package/dist/core/core/cache.d.ts +15 -0
- package/dist/core/core/cache.d.ts.map +1 -0
- package/dist/core/core/constants.d.ts +18 -0
- package/dist/core/core/constants.d.ts.map +1 -0
- package/dist/core/core/formatter.d.ts +3 -0
- package/dist/core/core/formatter.d.ts.map +1 -0
- package/dist/core/core/index.d.ts +11 -0
- package/dist/core/core/index.d.ts.map +1 -0
- package/dist/core/core/parser.d.ts +4 -0
- package/dist/core/core/parser.d.ts.map +1 -0
- package/dist/core/core/types.d.ts +27 -0
- package/dist/core/core/types.d.ts.map +1 -0
- package/dist/core/index.cjs +283 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.ts +30 -0
- package/dist/core/index.js +277 -0
- package/dist/core/index.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type TimeUnit = 'nanoseconds' | 'ns' | 'microseconds' | 'μs' | 'us' | 'milliseconds' | 'ms' | 'seconds' | 's' | 'sec' | 'minutes' | 'm' | 'min' | 'hours' | 'h' | 'hr' | 'days' | 'd' | 'weeks' | 'w' | 'months' | 'mo' | 'years' | 'y' | 'decades' | 'dec' | 'centuries' | 'c';
|
|
2
|
+
export type TimePattern = `${number}${TimeUnit}` | `${number} ${TimeUnit}` | `${number}.${number}${TimeUnit}` | `${number}.${number} ${TimeUnit}`;
|
|
3
|
+
export interface FormatOptions {
|
|
4
|
+
long?: boolean;
|
|
5
|
+
compact?: boolean;
|
|
6
|
+
maxUnits?: number;
|
|
7
|
+
minUnit?: TimeUnit;
|
|
8
|
+
separator?: string;
|
|
9
|
+
locale?: string;
|
|
10
|
+
digits?: number;
|
|
11
|
+
round?: 'floor' | 'ceil' | 'round';
|
|
12
|
+
}
|
|
13
|
+
export interface ParseOptions {
|
|
14
|
+
strict?: boolean;
|
|
15
|
+
cache?: boolean;
|
|
16
|
+
locale?: string;
|
|
17
|
+
fuzzy?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface CacheStats {
|
|
20
|
+
hits: number;
|
|
21
|
+
misses: number;
|
|
22
|
+
size: number;
|
|
23
|
+
maxSize: number;
|
|
24
|
+
}
|
|
25
|
+
export interface LocaleData {
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,aAAa,GAAG,IAAI,GACpB,cAAc,GAAG,IAAI,GAAG,IAAI,GAC5B,cAAc,GAAG,IAAI,GACrB,SAAS,GAAG,GAAG,GAAG,KAAK,GACvB,SAAS,GAAG,GAAG,GAAG,KAAK,GACvB,OAAO,GAAG,GAAG,GAAG,IAAI,GACpB,MAAM,GAAG,GAAG,GACZ,OAAO,GAAG,GAAG,GACb,QAAQ,GAAG,IAAI,GACf,OAAO,GAAG,GAAG,GACb,SAAS,GAAG,KAAK,GACjB,WAAW,GAAG,GAAG,CAAC;AAEtB,MAAM,MAAM,WAAW,GACnB,GAAG,MAAM,GAAG,QAAQ,EAAE,GACtB,GAAG,MAAM,IAAI,QAAQ,EAAE,GACvB,GAAG,MAAM,IAAI,MAAM,GAAG,QAAQ,EAAE,GAChC,GAAG,MAAM,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;CAM1B"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const UNIT_TO_NANOSECONDS = {
|
|
6
|
+
nanoseconds: 1n,
|
|
7
|
+
ns: 1n,
|
|
8
|
+
microseconds: 1000n,
|
|
9
|
+
μs: 1000n,
|
|
10
|
+
us: 1000n,
|
|
11
|
+
milliseconds: 1000000n,
|
|
12
|
+
ms: 1000000n,
|
|
13
|
+
seconds: 1000000000n,
|
|
14
|
+
s: 1000000000n,
|
|
15
|
+
sec: 1000000000n,
|
|
16
|
+
minutes: 60000000000n,
|
|
17
|
+
m: 60000000000n,
|
|
18
|
+
min: 60000000000n,
|
|
19
|
+
hours: 3600000000000n,
|
|
20
|
+
h: 3600000000000n,
|
|
21
|
+
hr: 3600000000000n,
|
|
22
|
+
days: 86400000000000n,
|
|
23
|
+
d: 86400000000000n,
|
|
24
|
+
weeks: 604800000000000n,
|
|
25
|
+
w: 604800000000000n,
|
|
26
|
+
months: 2592000000000000n,
|
|
27
|
+
mo: 2592000000000000n,
|
|
28
|
+
years: 31557600000000000n,
|
|
29
|
+
y: 31557600000000000n,
|
|
30
|
+
decades: 315576000000000000n,
|
|
31
|
+
dec: 315576000000000000n,
|
|
32
|
+
centuries: 3155760000000000000n,
|
|
33
|
+
c: 3155760000000000000n
|
|
34
|
+
};
|
|
35
|
+
Object.fromEntries(Object.entries(UNIT_TO_NANOSECONDS).map(([unit, ns]) => [unit, Number(1000000000n / ns)]));
|
|
36
|
+
const CACHE_CONFIG = {
|
|
37
|
+
maxSize: 10_000,
|
|
38
|
+
ttl: 3600000,
|
|
39
|
+
cleanupInterval: 300000
|
|
40
|
+
};
|
|
41
|
+
const UNITS_ORDER = [
|
|
42
|
+
'centuries', 'decades', 'years', 'months', 'weeks',
|
|
43
|
+
'days', 'hours', 'minutes', 'seconds', 'milliseconds',
|
|
44
|
+
'microseconds', 'nanoseconds'
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
class LRUCache {
|
|
48
|
+
cache = new Map();
|
|
49
|
+
maxSize;
|
|
50
|
+
ttl;
|
|
51
|
+
stats = { hits: 0, misses: 0, size: 0, maxSize: 0 };
|
|
52
|
+
constructor(maxSize = CACHE_CONFIG.maxSize, ttl = CACHE_CONFIG.ttl) {
|
|
53
|
+
this.maxSize = maxSize;
|
|
54
|
+
this.ttl = ttl;
|
|
55
|
+
this.stats.maxSize = maxSize;
|
|
56
|
+
this.startCleanup();
|
|
57
|
+
}
|
|
58
|
+
set(key, value) {
|
|
59
|
+
if (this.cache.size >= this.maxSize) {
|
|
60
|
+
const firstKey = this.cache.keys().next().value;
|
|
61
|
+
this.cache.delete(firstKey);
|
|
62
|
+
}
|
|
63
|
+
this.cache.set(key, {
|
|
64
|
+
value,
|
|
65
|
+
expires: Date.now() + this.ttl
|
|
66
|
+
});
|
|
67
|
+
this.stats.size = this.cache.size;
|
|
68
|
+
}
|
|
69
|
+
get(key) {
|
|
70
|
+
const item = this.cache.get(key);
|
|
71
|
+
if (!item) {
|
|
72
|
+
this.stats.misses++;
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
if (Date.now() > item.expires) {
|
|
76
|
+
this.cache.delete(key);
|
|
77
|
+
this.stats.misses++;
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
this.stats.hits++;
|
|
81
|
+
this.cache.delete(key);
|
|
82
|
+
this.cache.set(key, item);
|
|
83
|
+
return item.value;
|
|
84
|
+
}
|
|
85
|
+
startCleanup() {
|
|
86
|
+
if (typeof setInterval === 'undefined')
|
|
87
|
+
return;
|
|
88
|
+
setInterval(() => {
|
|
89
|
+
const now = Date.now();
|
|
90
|
+
for (const [key, item] of this.cache.entries()) {
|
|
91
|
+
if (now > item.expires)
|
|
92
|
+
this.cache.delete(key);
|
|
93
|
+
}
|
|
94
|
+
this.stats.size = this.cache.size;
|
|
95
|
+
}, CACHE_CONFIG.cleanupInterval);
|
|
96
|
+
}
|
|
97
|
+
clear() {
|
|
98
|
+
this.cache.clear();
|
|
99
|
+
this.stats = { hits: 0, misses: 0, size: 0, maxSize: this.maxSize };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const globalCache = new LRUCache();
|
|
103
|
+
|
|
104
|
+
const TIME_PATTERN = new RegExp(`^([+-]?\\d+(?:\\.\\d+)?)\\s*(${Object.keys(UNIT_TO_NANOSECONDS).join('|')})$`, 'i');
|
|
105
|
+
const COMPLEX_PATTERN = new RegExp(`(\\d+(?:\\.\\d+)?)\\s*(${Object.keys(UNIT_TO_NANOSECONDS).join('|')})`, 'gi');
|
|
106
|
+
const NATURAL_PATTERNS = {
|
|
107
|
+
half: 0.5,
|
|
108
|
+
quarter: 0.25,
|
|
109
|
+
dozen: 12,
|
|
110
|
+
score: 20,
|
|
111
|
+
couple: 2,
|
|
112
|
+
few: 3,
|
|
113
|
+
several: 5
|
|
114
|
+
};
|
|
115
|
+
function parse(input, options = {}) {
|
|
116
|
+
const cacheKey = `${input}_${options.strict}_${options.locale}`;
|
|
117
|
+
if (options.cache !== false) {
|
|
118
|
+
const cached = globalCache.get(cacheKey);
|
|
119
|
+
if (cached !== undefined)
|
|
120
|
+
return cached;
|
|
121
|
+
}
|
|
122
|
+
let result;
|
|
123
|
+
if (typeof input === 'bigint') {
|
|
124
|
+
result = Number(input / 1000000n);
|
|
125
|
+
}
|
|
126
|
+
else if (typeof input === 'number') {
|
|
127
|
+
result = input;
|
|
128
|
+
}
|
|
129
|
+
else if (typeof input === 'string') {
|
|
130
|
+
result = parseString(input, options);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
throw new TypeError(`Unsupported input type: ${typeof input}`);
|
|
134
|
+
}
|
|
135
|
+
if (options.cache !== false) {
|
|
136
|
+
globalCache.set(cacheKey, result);
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
function parseString(input, options) {
|
|
141
|
+
const trimmed = input.trim().toLowerCase();
|
|
142
|
+
if (!trimmed)
|
|
143
|
+
throw new Error('Empty string');
|
|
144
|
+
if (/^[+-]?\d+(?:\.\d+)?$/.test(trimmed)) {
|
|
145
|
+
return parseFloat(trimmed);
|
|
146
|
+
}
|
|
147
|
+
if (options.fuzzy) {
|
|
148
|
+
for (const [word, multiplier] of Object.entries(NATURAL_PATTERNS)) {
|
|
149
|
+
if (trimmed.includes(word)) {
|
|
150
|
+
const numericMatch = trimmed.match(/\d+(?:\.\d+)?/);
|
|
151
|
+
const base = numericMatch ? parseFloat(numericMatch[0]) : 1;
|
|
152
|
+
return parseFloat((base * multiplier).toString());
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
let totalNanoseconds = 0n;
|
|
157
|
+
let match;
|
|
158
|
+
while ((match = COMPLEX_PATTERN.exec(trimmed)) !== null) {
|
|
159
|
+
const [, valueStr, unit] = match;
|
|
160
|
+
const value = parseFloat(valueStr);
|
|
161
|
+
const unitKey = unit.toLowerCase();
|
|
162
|
+
const nsPerUnit = UNIT_TO_NANOSECONDS[unitKey];
|
|
163
|
+
if (nsPerUnit) {
|
|
164
|
+
totalNanoseconds += BigInt(Math.floor(value * Number(nsPerUnit)));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (totalNanoseconds !== 0n) {
|
|
168
|
+
return Number(totalNanoseconds / 1000000n);
|
|
169
|
+
}
|
|
170
|
+
const simpleMatch = TIME_PATTERN.exec(trimmed);
|
|
171
|
+
if (simpleMatch) {
|
|
172
|
+
const [, valueStr, unit] = simpleMatch;
|
|
173
|
+
const value = parseFloat(valueStr);
|
|
174
|
+
const unitKey = unit.toLowerCase();
|
|
175
|
+
const nsPerUnit = UNIT_TO_NANOSECONDS[unitKey];
|
|
176
|
+
if (nsPerUnit) {
|
|
177
|
+
return Number((BigInt(Math.floor(value * Number(nsPerUnit)))) / 1000000n);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
throw new Error(`Unable to parse time string: ${input}`);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function format(ms, options = {}) {
|
|
184
|
+
const nanoseconds = typeof ms === 'bigint'
|
|
185
|
+
? ms
|
|
186
|
+
: BigInt(Math.abs(ms)) * 1000000n;
|
|
187
|
+
const sign = (typeof ms === 'number' && ms < 0) || (typeof ms === 'bigint' && ms < 0n) ? '-' : '';
|
|
188
|
+
let remaining = nanoseconds < 0n ? -nanoseconds : nanoseconds;
|
|
189
|
+
const parts = [];
|
|
190
|
+
const { long = false, compact = false, maxUnits = 2, minUnit = 'nanoseconds', separator = long ? ' ' : '', digits = 1, round = 'round' } = options;
|
|
191
|
+
for (const unit of UNITS_ORDER) {
|
|
192
|
+
if (parts.length >= maxUnits)
|
|
193
|
+
break;
|
|
194
|
+
if (shouldSkipUnit(unit, minUnit))
|
|
195
|
+
continue;
|
|
196
|
+
const unitNs = UNIT_TO_NANOSECONDS[unit];
|
|
197
|
+
if (!unitNs || remaining < unitNs)
|
|
198
|
+
continue;
|
|
199
|
+
let value = Number(remaining / unitNs);
|
|
200
|
+
remaining %= unitNs;
|
|
201
|
+
if (round !== 'floor' && remaining > 0n && parts.length === maxUnits - 1) {
|
|
202
|
+
const nextUnit = UNITS_ORDER[UNITS_ORDER.indexOf(unit) + 1];
|
|
203
|
+
if (nextUnit) {
|
|
204
|
+
const nextUnitNs = UNIT_TO_NANOSECONDS[nextUnit];
|
|
205
|
+
const remainderInNextUnit = Number(remaining / nextUnitNs);
|
|
206
|
+
if (remainderInNextUnit >= 0.5) {
|
|
207
|
+
value += 1;
|
|
208
|
+
remaining = 0n;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
let finalValue = value;
|
|
213
|
+
if (round === 'floor')
|
|
214
|
+
finalValue = Math.floor(value);
|
|
215
|
+
else if (round === 'ceil')
|
|
216
|
+
finalValue = Math.ceil(value);
|
|
217
|
+
else if (round === 'round')
|
|
218
|
+
finalValue = Math.round(value);
|
|
219
|
+
if (finalValue === 0)
|
|
220
|
+
continue;
|
|
221
|
+
const unitName = getUnitName(unit, finalValue, long, compact);
|
|
222
|
+
const formattedValue = formatNumber(finalValue, digits, compact);
|
|
223
|
+
parts.push(compact ? `${formattedValue}${unitName}` : `${formattedValue}${separator}${unitName}`);
|
|
224
|
+
}
|
|
225
|
+
if (parts.length === 0) {
|
|
226
|
+
const zeroUnit = getUnitName('milliseconds', 0, long, compact);
|
|
227
|
+
return `${sign}0${compact ? zeroUnit : separator + zeroUnit}`;
|
|
228
|
+
}
|
|
229
|
+
return sign + (compact ? parts.join('') : parts.join(separator));
|
|
230
|
+
}
|
|
231
|
+
function shouldSkipUnit(unit, minUnit) {
|
|
232
|
+
const unitIndex = UNITS_ORDER.indexOf(unit);
|
|
233
|
+
const minIndex = UNITS_ORDER.indexOf(minUnit);
|
|
234
|
+
return unitIndex > minIndex;
|
|
235
|
+
}
|
|
236
|
+
function getUnitName(unit, value, long, compact) {
|
|
237
|
+
if (compact) {
|
|
238
|
+
const compactMap = {
|
|
239
|
+
centuries: 'c', decades: 'dec', years: 'y', months: 'mo', weeks: 'w',
|
|
240
|
+
days: 'd', hours: 'h', minutes: 'm', seconds: 's', milliseconds: 'ms',
|
|
241
|
+
microseconds: 'μs', nanoseconds: 'ns'
|
|
242
|
+
};
|
|
243
|
+
return compactMap[unit];
|
|
244
|
+
}
|
|
245
|
+
if (!long) {
|
|
246
|
+
const shortMap = {
|
|
247
|
+
centuries: 'c', decades: 'dec', years: 'yr', months: 'mo', weeks: 'wk',
|
|
248
|
+
days: 'd', hours: 'hr', minutes: 'min', seconds: 'sec', milliseconds: 'ms',
|
|
249
|
+
microseconds: 'μs', nanoseconds: 'ns'
|
|
250
|
+
};
|
|
251
|
+
return shortMap[unit];
|
|
252
|
+
}
|
|
253
|
+
const longNames = {
|
|
254
|
+
centuries: 'century', decades: 'decade', years: 'year', months: 'month',
|
|
255
|
+
weeks: 'week', days: 'day', hours: 'hour', minutes: 'minute',
|
|
256
|
+
seconds: 'second', milliseconds: 'millisecond', microseconds: 'microsecond',
|
|
257
|
+
nanoseconds: 'nanosecond'
|
|
258
|
+
};
|
|
259
|
+
const base = longNames[unit];
|
|
260
|
+
return value === 1 ? base : `${base}s`;
|
|
261
|
+
}
|
|
262
|
+
function formatNumber(value, digits, compact) {
|
|
263
|
+
if (compact && value >= 1000) {
|
|
264
|
+
if (value >= 1_000_000)
|
|
265
|
+
return (value / 1_000_000).toFixed(digits) + 'M';
|
|
266
|
+
if (value >= 1_000)
|
|
267
|
+
return (value / 1_000).toFixed(digits) + 'k';
|
|
268
|
+
}
|
|
269
|
+
return digits === 0 ? Math.round(value).toString() : value.toFixed(digits);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
function ms(value, options) {
|
|
273
|
+
if (typeof value === 'string')
|
|
274
|
+
return parse(value, options);
|
|
275
|
+
return format(value, options);
|
|
276
|
+
}
|
|
277
|
+
ms.parse = parse;
|
|
278
|
+
ms.format = format;
|
|
279
|
+
|
|
280
|
+
exports.default = ms;
|
|
281
|
+
exports.format = format;
|
|
282
|
+
exports.parse = parse;
|
|
283
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/core/constants.ts","../../src/core/cache.ts","../../src/core/parser.ts","../../src/core/formatter.ts","../../src/core/index.ts"],"sourcesContent":[null,null,null,null,null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
type TimeUnit = 'nanoseconds' | 'ns' | 'microseconds' | 'μs' | 'us' | 'milliseconds' | 'ms' | 'seconds' | 's' | 'sec' | 'minutes' | 'm' | 'min' | 'hours' | 'h' | 'hr' | 'days' | 'd' | 'weeks' | 'w' | 'months' | 'mo' | 'years' | 'y' | 'decades' | 'dec' | 'centuries' | 'c';
|
|
2
|
+
interface FormatOptions {
|
|
3
|
+
long?: boolean;
|
|
4
|
+
compact?: boolean;
|
|
5
|
+
maxUnits?: number;
|
|
6
|
+
minUnit?: TimeUnit;
|
|
7
|
+
separator?: string;
|
|
8
|
+
locale?: string;
|
|
9
|
+
digits?: number;
|
|
10
|
+
round?: 'floor' | 'ceil' | 'round';
|
|
11
|
+
}
|
|
12
|
+
interface ParseOptions {
|
|
13
|
+
strict?: boolean;
|
|
14
|
+
cache?: boolean;
|
|
15
|
+
locale?: string;
|
|
16
|
+
fuzzy?: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare function format(ms: number | bigint, options?: FormatOptions): string;
|
|
20
|
+
|
|
21
|
+
declare function parse(input: string | number | bigint, options?: ParseOptions): number;
|
|
22
|
+
|
|
23
|
+
declare function ms(value: string | number, options?: FormatOptions | ParseOptions): string | number;
|
|
24
|
+
declare namespace ms {
|
|
25
|
+
var parse: typeof parse;
|
|
26
|
+
var format: typeof format;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { ms as default, format, parse };
|
|
30
|
+
export type { FormatOptions, ParseOptions, TimeUnit };
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
const UNIT_TO_NANOSECONDS = {
|
|
2
|
+
nanoseconds: 1n,
|
|
3
|
+
ns: 1n,
|
|
4
|
+
microseconds: 1000n,
|
|
5
|
+
μs: 1000n,
|
|
6
|
+
us: 1000n,
|
|
7
|
+
milliseconds: 1000000n,
|
|
8
|
+
ms: 1000000n,
|
|
9
|
+
seconds: 1000000000n,
|
|
10
|
+
s: 1000000000n,
|
|
11
|
+
sec: 1000000000n,
|
|
12
|
+
minutes: 60000000000n,
|
|
13
|
+
m: 60000000000n,
|
|
14
|
+
min: 60000000000n,
|
|
15
|
+
hours: 3600000000000n,
|
|
16
|
+
h: 3600000000000n,
|
|
17
|
+
hr: 3600000000000n,
|
|
18
|
+
days: 86400000000000n,
|
|
19
|
+
d: 86400000000000n,
|
|
20
|
+
weeks: 604800000000000n,
|
|
21
|
+
w: 604800000000000n,
|
|
22
|
+
months: 2592000000000000n,
|
|
23
|
+
mo: 2592000000000000n,
|
|
24
|
+
years: 31557600000000000n,
|
|
25
|
+
y: 31557600000000000n,
|
|
26
|
+
decades: 315576000000000000n,
|
|
27
|
+
dec: 315576000000000000n,
|
|
28
|
+
centuries: 3155760000000000000n,
|
|
29
|
+
c: 3155760000000000000n
|
|
30
|
+
};
|
|
31
|
+
Object.fromEntries(Object.entries(UNIT_TO_NANOSECONDS).map(([unit, ns]) => [unit, Number(1000000000n / ns)]));
|
|
32
|
+
const CACHE_CONFIG = {
|
|
33
|
+
maxSize: 10_000,
|
|
34
|
+
ttl: 3600000,
|
|
35
|
+
cleanupInterval: 300000
|
|
36
|
+
};
|
|
37
|
+
const UNITS_ORDER = [
|
|
38
|
+
'centuries', 'decades', 'years', 'months', 'weeks',
|
|
39
|
+
'days', 'hours', 'minutes', 'seconds', 'milliseconds',
|
|
40
|
+
'microseconds', 'nanoseconds'
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
class LRUCache {
|
|
44
|
+
cache = new Map();
|
|
45
|
+
maxSize;
|
|
46
|
+
ttl;
|
|
47
|
+
stats = { hits: 0, misses: 0, size: 0, maxSize: 0 };
|
|
48
|
+
constructor(maxSize = CACHE_CONFIG.maxSize, ttl = CACHE_CONFIG.ttl) {
|
|
49
|
+
this.maxSize = maxSize;
|
|
50
|
+
this.ttl = ttl;
|
|
51
|
+
this.stats.maxSize = maxSize;
|
|
52
|
+
this.startCleanup();
|
|
53
|
+
}
|
|
54
|
+
set(key, value) {
|
|
55
|
+
if (this.cache.size >= this.maxSize) {
|
|
56
|
+
const firstKey = this.cache.keys().next().value;
|
|
57
|
+
this.cache.delete(firstKey);
|
|
58
|
+
}
|
|
59
|
+
this.cache.set(key, {
|
|
60
|
+
value,
|
|
61
|
+
expires: Date.now() + this.ttl
|
|
62
|
+
});
|
|
63
|
+
this.stats.size = this.cache.size;
|
|
64
|
+
}
|
|
65
|
+
get(key) {
|
|
66
|
+
const item = this.cache.get(key);
|
|
67
|
+
if (!item) {
|
|
68
|
+
this.stats.misses++;
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
if (Date.now() > item.expires) {
|
|
72
|
+
this.cache.delete(key);
|
|
73
|
+
this.stats.misses++;
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
this.stats.hits++;
|
|
77
|
+
this.cache.delete(key);
|
|
78
|
+
this.cache.set(key, item);
|
|
79
|
+
return item.value;
|
|
80
|
+
}
|
|
81
|
+
startCleanup() {
|
|
82
|
+
if (typeof setInterval === 'undefined')
|
|
83
|
+
return;
|
|
84
|
+
setInterval(() => {
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
for (const [key, item] of this.cache.entries()) {
|
|
87
|
+
if (now > item.expires)
|
|
88
|
+
this.cache.delete(key);
|
|
89
|
+
}
|
|
90
|
+
this.stats.size = this.cache.size;
|
|
91
|
+
}, CACHE_CONFIG.cleanupInterval);
|
|
92
|
+
}
|
|
93
|
+
clear() {
|
|
94
|
+
this.cache.clear();
|
|
95
|
+
this.stats = { hits: 0, misses: 0, size: 0, maxSize: this.maxSize };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const globalCache = new LRUCache();
|
|
99
|
+
|
|
100
|
+
const TIME_PATTERN = new RegExp(`^([+-]?\\d+(?:\\.\\d+)?)\\s*(${Object.keys(UNIT_TO_NANOSECONDS).join('|')})$`, 'i');
|
|
101
|
+
const COMPLEX_PATTERN = new RegExp(`(\\d+(?:\\.\\d+)?)\\s*(${Object.keys(UNIT_TO_NANOSECONDS).join('|')})`, 'gi');
|
|
102
|
+
const NATURAL_PATTERNS = {
|
|
103
|
+
half: 0.5,
|
|
104
|
+
quarter: 0.25,
|
|
105
|
+
dozen: 12,
|
|
106
|
+
score: 20,
|
|
107
|
+
couple: 2,
|
|
108
|
+
few: 3,
|
|
109
|
+
several: 5
|
|
110
|
+
};
|
|
111
|
+
function parse(input, options = {}) {
|
|
112
|
+
const cacheKey = `${input}_${options.strict}_${options.locale}`;
|
|
113
|
+
if (options.cache !== false) {
|
|
114
|
+
const cached = globalCache.get(cacheKey);
|
|
115
|
+
if (cached !== undefined)
|
|
116
|
+
return cached;
|
|
117
|
+
}
|
|
118
|
+
let result;
|
|
119
|
+
if (typeof input === 'bigint') {
|
|
120
|
+
result = Number(input / 1000000n);
|
|
121
|
+
}
|
|
122
|
+
else if (typeof input === 'number') {
|
|
123
|
+
result = input;
|
|
124
|
+
}
|
|
125
|
+
else if (typeof input === 'string') {
|
|
126
|
+
result = parseString(input, options);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
throw new TypeError(`Unsupported input type: ${typeof input}`);
|
|
130
|
+
}
|
|
131
|
+
if (options.cache !== false) {
|
|
132
|
+
globalCache.set(cacheKey, result);
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
function parseString(input, options) {
|
|
137
|
+
const trimmed = input.trim().toLowerCase();
|
|
138
|
+
if (!trimmed)
|
|
139
|
+
throw new Error('Empty string');
|
|
140
|
+
if (/^[+-]?\d+(?:\.\d+)?$/.test(trimmed)) {
|
|
141
|
+
return parseFloat(trimmed);
|
|
142
|
+
}
|
|
143
|
+
if (options.fuzzy) {
|
|
144
|
+
for (const [word, multiplier] of Object.entries(NATURAL_PATTERNS)) {
|
|
145
|
+
if (trimmed.includes(word)) {
|
|
146
|
+
const numericMatch = trimmed.match(/\d+(?:\.\d+)?/);
|
|
147
|
+
const base = numericMatch ? parseFloat(numericMatch[0]) : 1;
|
|
148
|
+
return parseFloat((base * multiplier).toString());
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
let totalNanoseconds = 0n;
|
|
153
|
+
let match;
|
|
154
|
+
while ((match = COMPLEX_PATTERN.exec(trimmed)) !== null) {
|
|
155
|
+
const [, valueStr, unit] = match;
|
|
156
|
+
const value = parseFloat(valueStr);
|
|
157
|
+
const unitKey = unit.toLowerCase();
|
|
158
|
+
const nsPerUnit = UNIT_TO_NANOSECONDS[unitKey];
|
|
159
|
+
if (nsPerUnit) {
|
|
160
|
+
totalNanoseconds += BigInt(Math.floor(value * Number(nsPerUnit)));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (totalNanoseconds !== 0n) {
|
|
164
|
+
return Number(totalNanoseconds / 1000000n);
|
|
165
|
+
}
|
|
166
|
+
const simpleMatch = TIME_PATTERN.exec(trimmed);
|
|
167
|
+
if (simpleMatch) {
|
|
168
|
+
const [, valueStr, unit] = simpleMatch;
|
|
169
|
+
const value = parseFloat(valueStr);
|
|
170
|
+
const unitKey = unit.toLowerCase();
|
|
171
|
+
const nsPerUnit = UNIT_TO_NANOSECONDS[unitKey];
|
|
172
|
+
if (nsPerUnit) {
|
|
173
|
+
return Number((BigInt(Math.floor(value * Number(nsPerUnit)))) / 1000000n);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
throw new Error(`Unable to parse time string: ${input}`);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function format(ms, options = {}) {
|
|
180
|
+
const nanoseconds = typeof ms === 'bigint'
|
|
181
|
+
? ms
|
|
182
|
+
: BigInt(Math.abs(ms)) * 1000000n;
|
|
183
|
+
const sign = (typeof ms === 'number' && ms < 0) || (typeof ms === 'bigint' && ms < 0n) ? '-' : '';
|
|
184
|
+
let remaining = nanoseconds < 0n ? -nanoseconds : nanoseconds;
|
|
185
|
+
const parts = [];
|
|
186
|
+
const { long = false, compact = false, maxUnits = 2, minUnit = 'nanoseconds', separator = long ? ' ' : '', digits = 1, round = 'round' } = options;
|
|
187
|
+
for (const unit of UNITS_ORDER) {
|
|
188
|
+
if (parts.length >= maxUnits)
|
|
189
|
+
break;
|
|
190
|
+
if (shouldSkipUnit(unit, minUnit))
|
|
191
|
+
continue;
|
|
192
|
+
const unitNs = UNIT_TO_NANOSECONDS[unit];
|
|
193
|
+
if (!unitNs || remaining < unitNs)
|
|
194
|
+
continue;
|
|
195
|
+
let value = Number(remaining / unitNs);
|
|
196
|
+
remaining %= unitNs;
|
|
197
|
+
if (round !== 'floor' && remaining > 0n && parts.length === maxUnits - 1) {
|
|
198
|
+
const nextUnit = UNITS_ORDER[UNITS_ORDER.indexOf(unit) + 1];
|
|
199
|
+
if (nextUnit) {
|
|
200
|
+
const nextUnitNs = UNIT_TO_NANOSECONDS[nextUnit];
|
|
201
|
+
const remainderInNextUnit = Number(remaining / nextUnitNs);
|
|
202
|
+
if (remainderInNextUnit >= 0.5) {
|
|
203
|
+
value += 1;
|
|
204
|
+
remaining = 0n;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
let finalValue = value;
|
|
209
|
+
if (round === 'floor')
|
|
210
|
+
finalValue = Math.floor(value);
|
|
211
|
+
else if (round === 'ceil')
|
|
212
|
+
finalValue = Math.ceil(value);
|
|
213
|
+
else if (round === 'round')
|
|
214
|
+
finalValue = Math.round(value);
|
|
215
|
+
if (finalValue === 0)
|
|
216
|
+
continue;
|
|
217
|
+
const unitName = getUnitName(unit, finalValue, long, compact);
|
|
218
|
+
const formattedValue = formatNumber(finalValue, digits, compact);
|
|
219
|
+
parts.push(compact ? `${formattedValue}${unitName}` : `${formattedValue}${separator}${unitName}`);
|
|
220
|
+
}
|
|
221
|
+
if (parts.length === 0) {
|
|
222
|
+
const zeroUnit = getUnitName('milliseconds', 0, long, compact);
|
|
223
|
+
return `${sign}0${compact ? zeroUnit : separator + zeroUnit}`;
|
|
224
|
+
}
|
|
225
|
+
return sign + (compact ? parts.join('') : parts.join(separator));
|
|
226
|
+
}
|
|
227
|
+
function shouldSkipUnit(unit, minUnit) {
|
|
228
|
+
const unitIndex = UNITS_ORDER.indexOf(unit);
|
|
229
|
+
const minIndex = UNITS_ORDER.indexOf(minUnit);
|
|
230
|
+
return unitIndex > minIndex;
|
|
231
|
+
}
|
|
232
|
+
function getUnitName(unit, value, long, compact) {
|
|
233
|
+
if (compact) {
|
|
234
|
+
const compactMap = {
|
|
235
|
+
centuries: 'c', decades: 'dec', years: 'y', months: 'mo', weeks: 'w',
|
|
236
|
+
days: 'd', hours: 'h', minutes: 'm', seconds: 's', milliseconds: 'ms',
|
|
237
|
+
microseconds: 'μs', nanoseconds: 'ns'
|
|
238
|
+
};
|
|
239
|
+
return compactMap[unit];
|
|
240
|
+
}
|
|
241
|
+
if (!long) {
|
|
242
|
+
const shortMap = {
|
|
243
|
+
centuries: 'c', decades: 'dec', years: 'yr', months: 'mo', weeks: 'wk',
|
|
244
|
+
days: 'd', hours: 'hr', minutes: 'min', seconds: 'sec', milliseconds: 'ms',
|
|
245
|
+
microseconds: 'μs', nanoseconds: 'ns'
|
|
246
|
+
};
|
|
247
|
+
return shortMap[unit];
|
|
248
|
+
}
|
|
249
|
+
const longNames = {
|
|
250
|
+
centuries: 'century', decades: 'decade', years: 'year', months: 'month',
|
|
251
|
+
weeks: 'week', days: 'day', hours: 'hour', minutes: 'minute',
|
|
252
|
+
seconds: 'second', milliseconds: 'millisecond', microseconds: 'microsecond',
|
|
253
|
+
nanoseconds: 'nanosecond'
|
|
254
|
+
};
|
|
255
|
+
const base = longNames[unit];
|
|
256
|
+
return value === 1 ? base : `${base}s`;
|
|
257
|
+
}
|
|
258
|
+
function formatNumber(value, digits, compact) {
|
|
259
|
+
if (compact && value >= 1000) {
|
|
260
|
+
if (value >= 1_000_000)
|
|
261
|
+
return (value / 1_000_000).toFixed(digits) + 'M';
|
|
262
|
+
if (value >= 1_000)
|
|
263
|
+
return (value / 1_000).toFixed(digits) + 'k';
|
|
264
|
+
}
|
|
265
|
+
return digits === 0 ? Math.round(value).toString() : value.toFixed(digits);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function ms(value, options) {
|
|
269
|
+
if (typeof value === 'string')
|
|
270
|
+
return parse(value, options);
|
|
271
|
+
return format(value, options);
|
|
272
|
+
}
|
|
273
|
+
ms.parse = parse;
|
|
274
|
+
ms.format = format;
|
|
275
|
+
|
|
276
|
+
export { ms as default, format, parse };
|
|
277
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/core/constants.ts","../../src/core/cache.ts","../../src/core/parser.ts","../../src/core/formatter.ts","../../src/core/index.ts"],"sourcesContent":[null,null,null,null,null],"names":[],"mappings":"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"}
|