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.
Files changed (180) hide show
  1. package/.github/workflows/npm-publish.yml +46 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1165 -0
  4. package/dist/adapters/adapters/react.d.ts +14 -0
  5. package/dist/adapters/adapters/react.d.ts.map +1 -0
  6. package/dist/adapters/adapters/solid.d.ts +3 -0
  7. package/dist/adapters/adapters/solid.d.ts.map +1 -0
  8. package/dist/adapters/adapters/svelte.d.ts +10 -0
  9. package/dist/adapters/adapters/svelte.d.ts.map +1 -0
  10. package/dist/adapters/adapters/vue.d.ts +7 -0
  11. package/dist/adapters/adapters/vue.d.ts.map +1 -0
  12. package/dist/adapters/advanced/streaming.d.ts +13 -0
  13. package/dist/adapters/advanced/streaming.d.ts.map +1 -0
  14. package/dist/adapters/advanced/worker.d.ts +14 -0
  15. package/dist/adapters/advanced/worker.d.ts.map +1 -0
  16. package/dist/adapters/browser/index.d.ts +9 -0
  17. package/dist/adapters/browser/index.d.ts.map +1 -0
  18. package/dist/adapters/cli/index.d.ts +3 -0
  19. package/dist/adapters/cli/index.d.ts.map +1 -0
  20. package/dist/adapters/core/cache.d.ts +15 -0
  21. package/dist/adapters/core/cache.d.ts.map +1 -0
  22. package/dist/adapters/core/constants.d.ts +18 -0
  23. package/dist/adapters/core/constants.d.ts.map +1 -0
  24. package/dist/adapters/core/formatter.d.ts +3 -0
  25. package/dist/adapters/core/formatter.d.ts.map +1 -0
  26. package/dist/adapters/core/index.d.ts +11 -0
  27. package/dist/adapters/core/index.d.ts.map +1 -0
  28. package/dist/adapters/core/parser.d.ts +4 -0
  29. package/dist/adapters/core/parser.d.ts.map +1 -0
  30. package/dist/adapters/core/types.d.ts +27 -0
  31. package/dist/adapters/core/types.d.ts.map +1 -0
  32. package/dist/adapters/react.cjs +86 -0
  33. package/dist/adapters/react.cjs.map +1 -0
  34. package/dist/adapters/react.d.ts +15 -0
  35. package/dist/adapters/react.js +78 -0
  36. package/dist/adapters/react.js.map +1 -0
  37. package/dist/adapters/solid.cjs +25 -0
  38. package/dist/adapters/solid.cjs.map +1 -0
  39. package/dist/adapters/solid.js +22 -0
  40. package/dist/adapters/solid.js.map +1 -0
  41. package/dist/adapters/svelte.cjs +35 -0
  42. package/dist/adapters/svelte.cjs.map +1 -0
  43. package/dist/adapters/svelte.js +32 -0
  44. package/dist/adapters/svelte.js.map +1 -0
  45. package/dist/adapters/vue.cjs +44 -0
  46. package/dist/adapters/vue.cjs.map +1 -0
  47. package/dist/adapters/vue.d.ts +9 -0
  48. package/dist/adapters/vue.js +40 -0
  49. package/dist/adapters/vue.js.map +1 -0
  50. package/dist/advanced/adapters/react.d.ts +14 -0
  51. package/dist/advanced/adapters/react.d.ts.map +1 -0
  52. package/dist/advanced/adapters/solid.d.ts +3 -0
  53. package/dist/advanced/adapters/solid.d.ts.map +1 -0
  54. package/dist/advanced/adapters/svelte.d.ts +10 -0
  55. package/dist/advanced/adapters/svelte.d.ts.map +1 -0
  56. package/dist/advanced/adapters/vue.d.ts +7 -0
  57. package/dist/advanced/adapters/vue.d.ts.map +1 -0
  58. package/dist/advanced/advanced/streaming.d.ts +13 -0
  59. package/dist/advanced/advanced/streaming.d.ts.map +1 -0
  60. package/dist/advanced/advanced/worker.d.ts +14 -0
  61. package/dist/advanced/advanced/worker.d.ts.map +1 -0
  62. package/dist/advanced/browser/index.d.ts +9 -0
  63. package/dist/advanced/browser/index.d.ts.map +1 -0
  64. package/dist/advanced/cli/index.d.ts +3 -0
  65. package/dist/advanced/cli/index.d.ts.map +1 -0
  66. package/dist/advanced/core/cache.d.ts +15 -0
  67. package/dist/advanced/core/cache.d.ts.map +1 -0
  68. package/dist/advanced/core/constants.d.ts +18 -0
  69. package/dist/advanced/core/constants.d.ts.map +1 -0
  70. package/dist/advanced/core/formatter.d.ts +3 -0
  71. package/dist/advanced/core/formatter.d.ts.map +1 -0
  72. package/dist/advanced/core/index.d.ts +11 -0
  73. package/dist/advanced/core/index.d.ts.map +1 -0
  74. package/dist/advanced/core/parser.d.ts +4 -0
  75. package/dist/advanced/core/parser.d.ts.map +1 -0
  76. package/dist/advanced/core/types.d.ts +27 -0
  77. package/dist/advanced/core/types.d.ts.map +1 -0
  78. package/dist/advanced/streaming.cjs +48 -0
  79. package/dist/advanced/streaming.cjs.map +1 -0
  80. package/dist/advanced/streaming.js +45 -0
  81. package/dist/advanced/streaming.js.map +1 -0
  82. package/dist/advanced/worker.cjs +78 -0
  83. package/dist/advanced/worker.cjs.map +1 -0
  84. package/dist/advanced/worker.js +76 -0
  85. package/dist/advanced/worker.js.map +1 -0
  86. package/dist/browser/adapters/react.d.ts +14 -0
  87. package/dist/browser/adapters/react.d.ts.map +1 -0
  88. package/dist/browser/adapters/solid.d.ts +3 -0
  89. package/dist/browser/adapters/solid.d.ts.map +1 -0
  90. package/dist/browser/adapters/svelte.d.ts +10 -0
  91. package/dist/browser/adapters/svelte.d.ts.map +1 -0
  92. package/dist/browser/adapters/vue.d.ts +7 -0
  93. package/dist/browser/adapters/vue.d.ts.map +1 -0
  94. package/dist/browser/advanced/streaming.d.ts +13 -0
  95. package/dist/browser/advanced/streaming.d.ts.map +1 -0
  96. package/dist/browser/advanced/worker.d.ts +14 -0
  97. package/dist/browser/advanced/worker.d.ts.map +1 -0
  98. package/dist/browser/browser/index.d.ts +9 -0
  99. package/dist/browser/browser/index.d.ts.map +1 -0
  100. package/dist/browser/cli/index.d.ts +3 -0
  101. package/dist/browser/cli/index.d.ts.map +1 -0
  102. package/dist/browser/core/cache.d.ts +15 -0
  103. package/dist/browser/core/cache.d.ts.map +1 -0
  104. package/dist/browser/core/constants.d.ts +18 -0
  105. package/dist/browser/core/constants.d.ts.map +1 -0
  106. package/dist/browser/core/formatter.d.ts +3 -0
  107. package/dist/browser/core/formatter.d.ts.map +1 -0
  108. package/dist/browser/core/index.d.ts +11 -0
  109. package/dist/browser/core/index.d.ts.map +1 -0
  110. package/dist/browser/core/parser.d.ts +4 -0
  111. package/dist/browser/core/parser.d.ts.map +1 -0
  112. package/dist/browser/core/types.d.ts +27 -0
  113. package/dist/browser/core/types.d.ts.map +1 -0
  114. package/dist/browser/index.d.ts +29 -0
  115. package/dist/browser/index.js +289 -0
  116. package/dist/browser/index.js.map +1 -0
  117. package/dist/cli/adapters/react.d.ts +14 -0
  118. package/dist/cli/adapters/react.d.ts.map +1 -0
  119. package/dist/cli/adapters/solid.d.ts +3 -0
  120. package/dist/cli/adapters/solid.d.ts.map +1 -0
  121. package/dist/cli/adapters/svelte.d.ts +10 -0
  122. package/dist/cli/adapters/svelte.d.ts.map +1 -0
  123. package/dist/cli/adapters/vue.d.ts +7 -0
  124. package/dist/cli/adapters/vue.d.ts.map +1 -0
  125. package/dist/cli/advanced/streaming.d.ts +13 -0
  126. package/dist/cli/advanced/streaming.d.ts.map +1 -0
  127. package/dist/cli/advanced/worker.d.ts +14 -0
  128. package/dist/cli/advanced/worker.d.ts.map +1 -0
  129. package/dist/cli/browser/index.d.ts +9 -0
  130. package/dist/cli/browser/index.d.ts.map +1 -0
  131. package/dist/cli/cli/index.d.ts +3 -0
  132. package/dist/cli/cli/index.d.ts.map +1 -0
  133. package/dist/cli/core/cache.d.ts +15 -0
  134. package/dist/cli/core/cache.d.ts.map +1 -0
  135. package/dist/cli/core/constants.d.ts +18 -0
  136. package/dist/cli/core/constants.d.ts.map +1 -0
  137. package/dist/cli/core/formatter.d.ts +3 -0
  138. package/dist/cli/core/formatter.d.ts.map +1 -0
  139. package/dist/cli/core/index.d.ts +11 -0
  140. package/dist/cli/core/index.d.ts.map +1 -0
  141. package/dist/cli/core/parser.d.ts +4 -0
  142. package/dist/cli/core/parser.d.ts.map +1 -0
  143. package/dist/cli/core/types.d.ts +27 -0
  144. package/dist/cli/core/types.d.ts.map +1 -0
  145. package/dist/cli/index.js +320 -0
  146. package/dist/cli/index.js.map +1 -0
  147. package/dist/core/adapters/react.d.ts +14 -0
  148. package/dist/core/adapters/react.d.ts.map +1 -0
  149. package/dist/core/adapters/solid.d.ts +3 -0
  150. package/dist/core/adapters/solid.d.ts.map +1 -0
  151. package/dist/core/adapters/svelte.d.ts +10 -0
  152. package/dist/core/adapters/svelte.d.ts.map +1 -0
  153. package/dist/core/adapters/vue.d.ts +7 -0
  154. package/dist/core/adapters/vue.d.ts.map +1 -0
  155. package/dist/core/advanced/streaming.d.ts +13 -0
  156. package/dist/core/advanced/streaming.d.ts.map +1 -0
  157. package/dist/core/advanced/worker.d.ts +14 -0
  158. package/dist/core/advanced/worker.d.ts.map +1 -0
  159. package/dist/core/browser/index.d.ts +9 -0
  160. package/dist/core/browser/index.d.ts.map +1 -0
  161. package/dist/core/cli/index.d.ts +3 -0
  162. package/dist/core/cli/index.d.ts.map +1 -0
  163. package/dist/core/core/cache.d.ts +15 -0
  164. package/dist/core/core/cache.d.ts.map +1 -0
  165. package/dist/core/core/constants.d.ts +18 -0
  166. package/dist/core/core/constants.d.ts.map +1 -0
  167. package/dist/core/core/formatter.d.ts +3 -0
  168. package/dist/core/core/formatter.d.ts.map +1 -0
  169. package/dist/core/core/index.d.ts +11 -0
  170. package/dist/core/core/index.d.ts.map +1 -0
  171. package/dist/core/core/parser.d.ts +4 -0
  172. package/dist/core/core/parser.d.ts.map +1 -0
  173. package/dist/core/core/types.d.ts +27 -0
  174. package/dist/core/core/types.d.ts.map +1 -0
  175. package/dist/core/index.cjs +283 -0
  176. package/dist/core/index.cjs.map +1 -0
  177. package/dist/core/index.d.ts +30 -0
  178. package/dist/core/index.js +277 -0
  179. package/dist/core/index.js.map +1 -0
  180. package/package.json +73 -0
@@ -0,0 +1,14 @@
1
+ export declare function useLiveTime(formatOptions?: any): string;
2
+ export declare function useMs(value: string | number | Promise<string | number>, options?: any): string | number;
3
+ export declare function useAsyncMs(value: string | number, options?: any): {
4
+ result: string | number;
5
+ isPending: boolean;
6
+ };
7
+ export declare function MsProvider({ children, ...config }: any): any;
8
+ export declare function useMsConfig(): {
9
+ locale?: string;
10
+ long?: boolean;
11
+ };
12
+ export declare function useMsWithConfig(value: string | number): string | number;
13
+ export declare function SuspenseMs({ value, options, children }: any): any;
14
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/adapters/react.ts"],"names":[],"mappings":"AAsBA,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,UAG9C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,mBAMrF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;;;EAgB/D;AAID,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,OAEtD;AAED,wBAAgB,WAAW;aANgB,MAAM;WAAS,OAAO;EAQhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,mBAMrD;AAID,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,OAU3D"}
@@ -0,0 +1,3 @@
1
+ export declare function useMs(value: () => string | number, options?: any): any;
2
+ export declare function useLiveTime(formatOptions?: any): any;
3
+ //# sourceMappingURL=solid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/adapters/solid.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAMhE;AAED,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,OAU9C"}
@@ -0,0 +1,10 @@
1
+ export declare function createMsStore(value: string | number, options?: any): {
2
+ subscribe: any;
3
+ set: (newValue: string | number) => void;
4
+ };
5
+ export declare function createLiveTimeStore(formatOptions?: any): {
6
+ subscribe: any;
7
+ start: () => void;
8
+ stop: () => void;
9
+ };
10
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../src/adapters/svelte.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;;oBAK/C,MAAM,GAAG,MAAM;EAKlC;AAED,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG;;;;EAgBtD"}
@@ -0,0 +1,7 @@
1
+ import { type Ref } from 'vue';
2
+ export declare function useMs(value: Ref<string | number> | string | number, options?: any): any;
3
+ export declare function useLiveTime(formatOptions?: any): any;
4
+ export declare function createMsPlugin(options?: any): {
5
+ install(app: any): void;
6
+ };
7
+ //# sourceMappingURL=vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/adapters/vue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAG7E,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAUjF;AAED,wBAAgB,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,OAe9C;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG;iBAE3B,GAAG;EAOnB"}
@@ -0,0 +1,13 @@
1
+ import { Transform, type TransformCallback } from 'stream';
2
+ export declare class TimeTransformStream extends Transform {
3
+ private mode;
4
+ private options;
5
+ constructor(mode?: 'parse' | 'format', options?: {});
6
+ _transform(chunk: any, encoding: string, callback: TransformCallback): void;
7
+ }
8
+ export declare function createTimePipeline(): {
9
+ parse: () => TimeTransformStream;
10
+ format: () => TimeTransformStream;
11
+ processFile(inputPath: string, outputPath: string, mode: "parse" | "format"): Promise<unknown>;
12
+ };
13
+ //# sourceMappingURL=streaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/advanced/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAG3D,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,OAAO,CAAM;gBAET,IAAI,GAAE,OAAO,GAAG,QAAkB,EAAE,OAAO,KAAK;IAM5D,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB;CAUrE;AAED,wBAAgB,kBAAkB;;;2BAKD,MAAM,cAAc,MAAM,QAAQ,OAAO,GAAG,QAAQ;EAepF"}
@@ -0,0 +1,14 @@
1
+ export declare class TimeWorkerPool {
2
+ poolSize: number;
3
+ private workers;
4
+ private taskQueue;
5
+ private activeWorkers;
6
+ constructor(poolSize?: number);
7
+ private initializeWorkers;
8
+ private handleWorkerMessage;
9
+ private processQueue;
10
+ parse(input: string, options?: any): Promise<number>;
11
+ format(ms: number, options?: any): Promise<string>;
12
+ destroy(): void;
13
+ }
14
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/advanced/worker.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IASN,QAAQ;IAR3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAIT;IACR,OAAO,CAAC,aAAa,CAAK;gBAEP,QAAQ,SAAwG;IAInI,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;IAWd,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAOxD,OAAO;CAKR"}
@@ -0,0 +1,9 @@
1
+ import { parse, format } from '../core/index.js';
2
+ declare const modernMs: {
3
+ parse: typeof parse;
4
+ format: typeof format;
5
+ version: string;
6
+ };
7
+ export default modernMs;
8
+ export { parse, format };
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEjD,QAAA,MAAM,QAAQ;;;;CAIb,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { CacheStats } from './types';
2
+ declare class LRUCache<K, V> {
3
+ private cache;
4
+ private maxSize;
5
+ private ttl;
6
+ stats: CacheStats;
7
+ constructor(maxSize?: number, ttl?: number);
8
+ set(key: K, value: V): void;
9
+ get(key: K): V | undefined;
10
+ private startCleanup;
11
+ clear(): void;
12
+ }
13
+ export declare const globalCache: LRUCache<string, number>;
14
+ export {};
15
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,cAAM,QAAQ,CAAC,CAAC,EAAE,CAAC;IACjB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,GAAG,CAAS;IACb,KAAK,EAAE,UAAU,CAA+C;gBAE3D,OAAO,SAAuB,EAAE,GAAG,SAAmB;IAOlE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAoB1B,OAAO,CAAC,YAAY;IAWpB,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,WAAW,0BAAiC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { TimeUnit } from './types';
2
+ export declare const UNIT_TO_NANOSECONDS: Record<TimeUnit, bigint>;
3
+ export declare const NANOSECONDS_TO_UNIT: {
4
+ [k: string]: number;
5
+ };
6
+ export declare const ASTRONOMICAL_UNITS: {
7
+ lunarMonth: bigint;
8
+ julianYear: bigint;
9
+ gregorianYear: bigint;
10
+ siderealYear: bigint;
11
+ };
12
+ export declare const CACHE_CONFIG: {
13
+ maxSize: number;
14
+ ttl: number;
15
+ cleanupInterval: number;
16
+ };
17
+ export declare const UNITS_ORDER: TimeUnit[];
18
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CA6BxD,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAAQ,EAIjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FormatOptions } from './types';
2
+ export declare function format(ms: number | bigint, options?: FormatOptions): string;
3
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/core/formatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,SAAS,CAAC;AAEvD,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CA4D/E"}
@@ -0,0 +1,11 @@
1
+ import { parse } from './parser';
2
+ import { format } from './formatter';
3
+ import type { FormatOptions, ParseOptions, TimeUnit } from './types';
4
+ declare function ms(value: string | number, options?: FormatOptions | ParseOptions): string | number;
5
+ declare namespace ms {
6
+ var parse: typeof import("./parser").parse;
7
+ var format: typeof import("./formatter").format;
8
+ }
9
+ export { ms as default, parse, format };
10
+ export type { FormatOptions, ParseOptions, TimeUnit };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAErE,iBAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAG3F;kBAHQ,EAAE;;;;AASX,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ParseOptions } from './types';
2
+ export declare function parse(input: string | number | bigint, options?: ParseOptions): number;
3
+ export declare function parseBigInt(input: string | number): bigint;
4
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,SAAS,CAAC;AAsBtD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAwBzF;AAsDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAI1D"}
@@ -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,86 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var index_js = require('../core/index.js');
5
+
6
+ let currentTime = Date.now();
7
+ const listeners = new Set();
8
+ if (typeof setInterval !== 'undefined') {
9
+ setInterval(() => {
10
+ currentTime = Date.now();
11
+ listeners.forEach(listener => listener());
12
+ }, 1000);
13
+ }
14
+ function subscribe(listener) {
15
+ listeners.add(listener);
16
+ return () => listeners.delete(listener);
17
+ }
18
+ function getSnapshot() {
19
+ return currentTime;
20
+ }
21
+ function useLiveTime(formatOptions) {
22
+ const timestamp = react.useSyncExternalStore(subscribe, getSnapshot);
23
+ return index_js.format(timestamp, formatOptions);
24
+ }
25
+ function useMs(value, options) {
26
+ const resolvedValue = value instanceof Promise ? react.use(value) : value;
27
+ return react.useMemo(() => {
28
+ if (typeof resolvedValue === 'string')
29
+ return index_js.parse(resolvedValue, options);
30
+ return index_js.format(resolvedValue, options);
31
+ }, [resolvedValue, options]);
32
+ }
33
+ function useAsyncMs(value, options) {
34
+ const [isPending, startTransition] = react.useTransition();
35
+ const [result, setResult] = react.useState(() => typeof value === 'string' ? index_js.parse(value, options) : index_js.format(value, options));
36
+ react.useEffect(() => {
37
+ startTransition(() => {
38
+ const newResult = typeof value === 'string'
39
+ ? index_js.parse(value, options)
40
+ : index_js.format(value, options);
41
+ setResult(newResult);
42
+ });
43
+ }, [value, options]);
44
+ return { result, isPending };
45
+ }
46
+ const MsContext = react.createContext({});
47
+ function MsProvider({ children, ...config }) {
48
+ return createElement(MsContext.Provider, { value: config }, children);
49
+ }
50
+ function useMsConfig() {
51
+ return react.useContext(MsContext);
52
+ }
53
+ function useMsWithConfig(value) {
54
+ const config = useMsConfig();
55
+ return react.useMemo(() => {
56
+ if (typeof value === 'string')
57
+ return index_js.parse(value, config);
58
+ return index_js.format(value, config);
59
+ }, [value, config]);
60
+ }
61
+ const msCache = new Map();
62
+ function SuspenseMs({ value, options, children }) {
63
+ let promise = msCache.get(value);
64
+ if (!promise) {
65
+ promise = Promise.resolve(index_js.parse(value, options));
66
+ msCache.set(value, promise);
67
+ }
68
+ const result = react.use(promise);
69
+ return children(result);
70
+ }
71
+ // Helper function to avoid JSX
72
+ function createElement(type, props, ...children) {
73
+ if (typeof type === 'function') {
74
+ return type({ ...props, children });
75
+ }
76
+ return { type, props, children };
77
+ }
78
+
79
+ exports.MsProvider = MsProvider;
80
+ exports.SuspenseMs = SuspenseMs;
81
+ exports.useAsyncMs = useAsyncMs;
82
+ exports.useLiveTime = useLiveTime;
83
+ exports.useMs = useMs;
84
+ exports.useMsConfig = useMsConfig;
85
+ exports.useMsWithConfig = useMsWithConfig;
86
+ //# sourceMappingURL=react.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.cjs","sources":["../../src/adapters/react.ts"],"sourcesContent":[null],"names":["useSyncExternalStore","format","use","useMemo","parse","useTransition","useState","useEffect","createContext","useContext"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ declare function useLiveTime(formatOptions?: any): string;
2
+ declare function useMs(value: string | number | Promise<string | number>, options?: any): string | number;
3
+ declare function useAsyncMs(value: string | number, options?: any): {
4
+ result: string | number;
5
+ isPending: boolean;
6
+ };
7
+ declare function MsProvider({ children, ...config }: any): any;
8
+ declare function useMsConfig(): {
9
+ locale?: string;
10
+ long?: boolean;
11
+ };
12
+ declare function useMsWithConfig(value: string | number): string | number;
13
+ declare function SuspenseMs({ value, options, children }: any): any;
14
+
15
+ export { MsProvider, SuspenseMs, useAsyncMs, useLiveTime, useMs, useMsConfig, useMsWithConfig };
@@ -0,0 +1,78 @@
1
+ import { createContext, useSyncExternalStore, use, useMemo, useTransition, useState, useEffect, useContext } from 'react';
2
+ import { format, parse } from '../core/index.js';
3
+
4
+ let currentTime = Date.now();
5
+ const listeners = new Set();
6
+ if (typeof setInterval !== 'undefined') {
7
+ setInterval(() => {
8
+ currentTime = Date.now();
9
+ listeners.forEach(listener => listener());
10
+ }, 1000);
11
+ }
12
+ function subscribe(listener) {
13
+ listeners.add(listener);
14
+ return () => listeners.delete(listener);
15
+ }
16
+ function getSnapshot() {
17
+ return currentTime;
18
+ }
19
+ function useLiveTime(formatOptions) {
20
+ const timestamp = useSyncExternalStore(subscribe, getSnapshot);
21
+ return format(timestamp, formatOptions);
22
+ }
23
+ function useMs(value, options) {
24
+ const resolvedValue = value instanceof Promise ? use(value) : value;
25
+ return useMemo(() => {
26
+ if (typeof resolvedValue === 'string')
27
+ return parse(resolvedValue, options);
28
+ return format(resolvedValue, options);
29
+ }, [resolvedValue, options]);
30
+ }
31
+ function useAsyncMs(value, options) {
32
+ const [isPending, startTransition] = useTransition();
33
+ const [result, setResult] = useState(() => typeof value === 'string' ? parse(value, options) : format(value, options));
34
+ useEffect(() => {
35
+ startTransition(() => {
36
+ const newResult = typeof value === 'string'
37
+ ? parse(value, options)
38
+ : format(value, options);
39
+ setResult(newResult);
40
+ });
41
+ }, [value, options]);
42
+ return { result, isPending };
43
+ }
44
+ const MsContext = createContext({});
45
+ function MsProvider({ children, ...config }) {
46
+ return createElement(MsContext.Provider, { value: config }, children);
47
+ }
48
+ function useMsConfig() {
49
+ return useContext(MsContext);
50
+ }
51
+ function useMsWithConfig(value) {
52
+ const config = useMsConfig();
53
+ return useMemo(() => {
54
+ if (typeof value === 'string')
55
+ return parse(value, config);
56
+ return format(value, config);
57
+ }, [value, config]);
58
+ }
59
+ const msCache = new Map();
60
+ function SuspenseMs({ value, options, children }) {
61
+ let promise = msCache.get(value);
62
+ if (!promise) {
63
+ promise = Promise.resolve(parse(value, options));
64
+ msCache.set(value, promise);
65
+ }
66
+ const result = use(promise);
67
+ return children(result);
68
+ }
69
+ // Helper function to avoid JSX
70
+ function createElement(type, props, ...children) {
71
+ if (typeof type === 'function') {
72
+ return type({ ...props, children });
73
+ }
74
+ return { type, props, children };
75
+ }
76
+
77
+ export { MsProvider, SuspenseMs, useAsyncMs, useLiveTime, useMs, useMsConfig, useMsWithConfig };
78
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sources":["../../src/adapters/react.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var solidJs = require('solid-js');
4
+ var index_js = require('../core/index.js');
5
+
6
+ function useMs(value, options) {
7
+ return solidJs.createMemo(() => {
8
+ const val = value();
9
+ if (typeof val === 'string')
10
+ return index_js.parse(val, options);
11
+ return index_js.format(val, options);
12
+ });
13
+ }
14
+ function useLiveTime(formatOptions) {
15
+ const [time, setTime] = solidJs.createSignal(Date.now());
16
+ const interval = setInterval(() => {
17
+ setTime(Date.now());
18
+ }, 1000);
19
+ solidJs.onCleanup(() => clearInterval(interval));
20
+ return solidJs.createMemo(() => index_js.format(time(), formatOptions));
21
+ }
22
+
23
+ exports.useLiveTime = useLiveTime;
24
+ exports.useMs = useMs;
25
+ //# sourceMappingURL=solid.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.cjs","sources":["../../src/adapters/solid.ts"],"sourcesContent":[null],"names":["createMemo","parse","format","createSignal","onCleanup"],"mappings":";;;;;AAGM,SAAU,KAAK,CAAC,KAA4B,EAAE,OAAa,EAAA;IAC/D,OAAOA,kBAAU,CAAC,MAAK;AACrB,QAAA,MAAM,GAAG,GAAG,KAAK,EAAE;QACnB,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAOC,cAAK,CAAC,GAAG,EAAE,OAAO,CAAC;AACvD,QAAA,OAAOC,eAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,WAAW,CAAC,aAAmB,EAAA;AAC7C,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGC,oBAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAEhD,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;AAChC,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC,EAAE,IAAI,CAAC;IAERC,iBAAS,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAExC,IAAA,OAAOJ,kBAAU,CAAC,MAAME,eAAM,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AACxD;;;;;"}
@@ -0,0 +1,22 @@
1
+ import { createMemo, createSignal, onCleanup } from 'solid-js';
2
+ import { parse, format } from '../core/index.js';
3
+
4
+ function useMs(value, options) {
5
+ return createMemo(() => {
6
+ const val = value();
7
+ if (typeof val === 'string')
8
+ return parse(val, options);
9
+ return format(val, options);
10
+ });
11
+ }
12
+ function useLiveTime(formatOptions) {
13
+ const [time, setTime] = createSignal(Date.now());
14
+ const interval = setInterval(() => {
15
+ setTime(Date.now());
16
+ }, 1000);
17
+ onCleanup(() => clearInterval(interval));
18
+ return createMemo(() => format(time(), formatOptions));
19
+ }
20
+
21
+ export { useLiveTime, useMs };
22
+ //# sourceMappingURL=solid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.js","sources":["../../src/adapters/solid.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,SAAU,KAAK,CAAC,KAA4B,EAAE,OAAa,EAAA;IAC/D,OAAO,UAAU,CAAC,MAAK;AACrB,QAAA,MAAM,GAAG,GAAG,KAAK,EAAE;QACnB,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;AACvD,QAAA,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,WAAW,CAAC,aAAmB,EAAA;AAC7C,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAEhD,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;AAChC,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC,EAAE,IAAI,CAAC;IAER,SAAS,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAExC,IAAA,OAAO,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AACxD;;;;"}
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var store = require('svelte/store');
4
+ var index_js = require('../core/index.js');
5
+
6
+ function createMsStore(value, options) {
7
+ const store$1 = store.writable(typeof value === 'string' ? index_js.parse(value, options) : index_js.format(value, options));
8
+ return {
9
+ subscribe: store$1.subscribe,
10
+ set: (newValue) => {
11
+ const result = typeof newValue === 'string' ? index_js.parse(newValue, options) : index_js.format(newValue, options);
12
+ store$1.set(result);
13
+ }
14
+ };
15
+ }
16
+ function createLiveTimeStore(formatOptions) {
17
+ const { subscribe, set } = store.writable(index_js.format(Date.now(), formatOptions));
18
+ let interval;
19
+ return {
20
+ subscribe,
21
+ start: () => {
22
+ interval = setInterval(() => {
23
+ set(index_js.format(Date.now(), formatOptions));
24
+ }, 1000);
25
+ },
26
+ stop: () => {
27
+ if (interval)
28
+ clearInterval(interval);
29
+ }
30
+ };
31
+ }
32
+
33
+ exports.createLiveTimeStore = createLiveTimeStore;
34
+ exports.createMsStore = createMsStore;
35
+ //# sourceMappingURL=svelte.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.cjs","sources":["../../src/adapters/svelte.ts"],"sourcesContent":[null],"names":["store","writable","parse","format"],"mappings":";;;;;AAGM,SAAU,aAAa,CAAC,KAAsB,EAAE,OAAa,EAAA;IACjE,MAAMA,OAAK,GAAGC,cAAQ,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAGC,cAAK,CAAC,KAAK,EAAE,OAAO,CAAC,GAAGC,eAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAElG,OAAO;QACL,SAAS,EAAEH,OAAK,CAAC,SAAS;AAC1B,QAAA,GAAG,EAAE,CAAC,QAAyB,KAAI;YACjC,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAGE,cAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAGC,eAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAClG,YAAAH,OAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QACnB;KACD;AACH;AAEM,SAAU,mBAAmB,CAAC,aAAmB,EAAA;AACrD,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAGC,cAAQ,CAACE,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAEtE,IAAA,IAAI,QAAwC;IAE5C,OAAO;QACL,SAAS;QACT,KAAK,EAAE,MAAK;AACV,YAAA,QAAQ,GAAG,WAAW,CAAC,MAAK;gBAC1B,GAAG,CAACA,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;YACxC,CAAC,EAAE,IAAI,CAAC;QACV,CAAC;QACD,IAAI,EAAE,MAAK;AACT,YAAA,IAAI,QAAQ;gBAAE,aAAa,CAAC,QAAQ,CAAC;QACvC;KACD;AACH;;;;;"}
@@ -0,0 +1,32 @@
1
+ import { writable } from 'svelte/store';
2
+ import { parse, format } from '../core/index.js';
3
+
4
+ function createMsStore(value, options) {
5
+ const store = writable(typeof value === 'string' ? parse(value, options) : format(value, options));
6
+ return {
7
+ subscribe: store.subscribe,
8
+ set: (newValue) => {
9
+ const result = typeof newValue === 'string' ? parse(newValue, options) : format(newValue, options);
10
+ store.set(result);
11
+ }
12
+ };
13
+ }
14
+ function createLiveTimeStore(formatOptions) {
15
+ const { subscribe, set } = writable(format(Date.now(), formatOptions));
16
+ let interval;
17
+ return {
18
+ subscribe,
19
+ start: () => {
20
+ interval = setInterval(() => {
21
+ set(format(Date.now(), formatOptions));
22
+ }, 1000);
23
+ },
24
+ stop: () => {
25
+ if (interval)
26
+ clearInterval(interval);
27
+ }
28
+ };
29
+ }
30
+
31
+ export { createLiveTimeStore, createMsStore };
32
+ //# sourceMappingURL=svelte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.js","sources":["../../src/adapters/svelte.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,SAAU,aAAa,CAAC,KAAsB,EAAE,OAAa,EAAA;IACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAElG,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;AAC1B,QAAA,GAAG,EAAE,CAAC,QAAyB,KAAI;YACjC,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAClG,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QACnB;KACD;AACH;AAEM,SAAU,mBAAmB,CAAC,aAAmB,EAAA;AACrD,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAEtE,IAAA,IAAI,QAAwC;IAE5C,OAAO;QACL,SAAS;QACT,KAAK,EAAE,MAAK;AACV,YAAA,QAAQ,GAAG,WAAW,CAAC,MAAK;gBAC1B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;YACxC,CAAC,EAAE,IAAI,CAAC;QACV,CAAC;QACD,IAAI,EAAE,MAAK;AACT,YAAA,IAAI,QAAQ;gBAAE,aAAa,CAAC,QAAQ,CAAC;QACvC;KACD;AACH;;;;"}
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var index_js = require('../core/index.js');
5
+
6
+ function useMs(value, options) {
7
+ const source = typeof value === 'object' && 'value' in value ? value : vue.ref(value);
8
+ const result = vue.computed(() => {
9
+ const val = source.value;
10
+ if (typeof val === 'string')
11
+ return index_js.parse(val, options);
12
+ return index_js.format(val, options);
13
+ });
14
+ return result;
15
+ }
16
+ function useLiveTime(formatOptions) {
17
+ const time = vue.ref(Date.now());
18
+ let interval;
19
+ vue.onMounted(() => {
20
+ interval = setInterval(() => {
21
+ time.value = Date.now();
22
+ }, 1000);
23
+ });
24
+ vue.onUnmounted(() => {
25
+ if (interval)
26
+ clearInterval(interval);
27
+ });
28
+ return vue.computed(() => index_js.format(time.value, formatOptions));
29
+ }
30
+ function createMsPlugin(options) {
31
+ return {
32
+ install(app) {
33
+ app.config.globalProperties.$ms = {
34
+ parse: (val) => index_js.parse(val, options),
35
+ format: (val) => index_js.format(val, options)
36
+ };
37
+ }
38
+ };
39
+ }
40
+
41
+ exports.createMsPlugin = createMsPlugin;
42
+ exports.useLiveTime = useLiveTime;
43
+ exports.useMs = useMs;
44
+ //# sourceMappingURL=vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.cjs","sources":["../../src/adapters/vue.ts"],"sourcesContent":[null],"names":["ref","computed","parse","format","onMounted","onUnmounted"],"mappings":";;;;;AAGM,SAAU,KAAK,CAAC,KAA6C,EAAE,OAAa,EAAA;IAChF,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,GAAG,KAAK,GAAGA,OAAG,CAAC,KAAK,CAAC;AAEjF,IAAA,MAAM,MAAM,GAAGC,YAAQ,CAAC,MAAK;AAC3B,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK;QACxB,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAOC,cAAK,CAAC,GAAG,EAAE,OAAO,CAAC;AACvD,QAAA,OAAOC,eAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,WAAW,CAAC,aAAmB,EAAA;IAC7C,MAAM,IAAI,GAAGH,OAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,IAAA,IAAI,QAAwC;IAE5CI,aAAS,CAAC,MAAK;AACb,QAAA,QAAQ,GAAG,WAAW,CAAC,MAAK;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;QACzB,CAAC,EAAE,IAAI,CAAC;AACV,IAAA,CAAC,CAAC;IAEFC,eAAW,CAAC,MAAK;AACf,QAAA,IAAI,QAAQ;YAAE,aAAa,CAAC,QAAQ,CAAC;AACvC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAOJ,YAAQ,CAAC,MAAME,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC1D;AAEM,SAAU,cAAc,CAAC,OAAa,EAAA;IAC1C,OAAO;AACL,QAAA,OAAO,CAAC,GAAQ,EAAA;AACd,YAAA,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,GAAG;gBAChC,KAAK,EAAE,CAAC,GAAW,KAAKD,cAAK,CAAC,GAAG,EAAE,OAAO,CAAC;gBAC3C,MAAM,EAAE,CAAC,GAAW,KAAKC,eAAM,CAAC,GAAG,EAAE,OAAO;aAC7C;QACH;KACD;AACH;;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { Ref } from 'vue';
2
+
3
+ declare function useMs(value: Ref<string | number> | string | number, options?: any): any;
4
+ declare function useLiveTime(formatOptions?: any): any;
5
+ declare function createMsPlugin(options?: any): {
6
+ install(app: any): void;
7
+ };
8
+
9
+ export { createMsPlugin, useLiveTime, useMs };