@zag-js/i18n-utils 1.34.1 → 1.35.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 (53) hide show
  1. package/dist/cache.d.mts +4 -0
  2. package/dist/cache.d.ts +4 -0
  3. package/dist/cache.js +41 -0
  4. package/dist/cache.mjs +16 -0
  5. package/dist/collator.d.mts +3 -0
  6. package/dist/collator.d.ts +3 -0
  7. package/dist/collator.js +34 -0
  8. package/dist/collator.mjs +9 -0
  9. package/dist/filter.d.mts +11 -0
  10. package/dist/filter.d.ts +11 -0
  11. package/dist/filter.js +73 -0
  12. package/dist/filter.mjs +48 -0
  13. package/dist/format-bytes.d.mts +32 -0
  14. package/dist/format-bytes.d.ts +32 -0
  15. package/dist/format-bytes.js +54 -0
  16. package/dist/format-bytes.mjs +29 -0
  17. package/dist/format-date.d.mts +7 -0
  18. package/dist/format-date.d.ts +7 -0
  19. package/dist/format-date.js +262 -0
  20. package/dist/format-date.mjs +237 -0
  21. package/dist/format-list.d.mts +3 -0
  22. package/dist/format-list.d.ts +3 -0
  23. package/dist/format-list.js +35 -0
  24. package/dist/format-list.mjs +10 -0
  25. package/dist/format-number.d.mts +3 -0
  26. package/dist/format-number.d.ts +3 -0
  27. package/dist/format-number.js +35 -0
  28. package/dist/format-number.mjs +10 -0
  29. package/dist/format-relative-time.d.mts +3 -0
  30. package/dist/format-relative-time.d.ts +3 -0
  31. package/dist/format-relative-time.js +65 -0
  32. package/dist/format-relative-time.mjs +40 -0
  33. package/dist/format-time.d.mts +13 -0
  34. package/dist/format-time.d.ts +13 -0
  35. package/dist/format-time.js +77 -0
  36. package/dist/format-time.mjs +52 -0
  37. package/dist/index.d.mts +11 -90
  38. package/dist/index.d.ts +11 -90
  39. package/dist/index.js +53 -509
  40. package/dist/index.mjs +17 -497
  41. package/dist/is-rtl.d.mts +4 -0
  42. package/dist/is-rtl.d.ts +4 -0
  43. package/dist/is-rtl.js +77 -0
  44. package/dist/is-rtl.mjs +51 -0
  45. package/dist/locale.d.mts +13 -0
  46. package/dist/locale.d.ts +13 -0
  47. package/dist/locale.js +42 -0
  48. package/dist/locale.mjs +17 -0
  49. package/dist/track-locale.d.mts +10 -0
  50. package/dist/track-locale.d.ts +10 -0
  51. package/dist/track-locale.js +43 -0
  52. package/dist/track-locale.mjs +18 -0
  53. package/package.json +2 -2
@@ -0,0 +1,262 @@
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/format-date.ts
21
+ var format_date_exports = {};
22
+ __export(format_date_exports, {
23
+ formatDate: () => formatDate
24
+ });
25
+ module.exports = __toCommonJS(format_date_exports);
26
+ var symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
27
+ function createRegEx(sign) {
28
+ return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
29
+ }
30
+ var FORMATS = [
31
+ "G",
32
+ "GG",
33
+ "GGG",
34
+ "GGGG",
35
+ "GGGGG",
36
+ "y",
37
+ "yo",
38
+ "yy",
39
+ "yyy",
40
+ "yyyy",
41
+ "Y",
42
+ "Yo",
43
+ "YY",
44
+ "YYY",
45
+ "YYYY",
46
+ "Q",
47
+ "Qo",
48
+ "QQ",
49
+ "QQQ",
50
+ "QQQQ",
51
+ "QQQQQ",
52
+ "M",
53
+ "Mo",
54
+ "MM",
55
+ "MMM",
56
+ "MMMM",
57
+ "MMMMM",
58
+ "E",
59
+ "EE",
60
+ "EEE",
61
+ "EEEE",
62
+ "EEEEE",
63
+ "EEEEEE",
64
+ "a",
65
+ "aa",
66
+ "aaa",
67
+ "aaaa",
68
+ "aaaaa",
69
+ "d",
70
+ "do",
71
+ "dd",
72
+ "D",
73
+ "Do",
74
+ "DD",
75
+ "DDD",
76
+ "w",
77
+ "wo",
78
+ "ww",
79
+ "s",
80
+ "so",
81
+ "ss",
82
+ "m",
83
+ "mo",
84
+ "mm",
85
+ "h",
86
+ "ho",
87
+ "hh",
88
+ "H",
89
+ "Ho",
90
+ "HH",
91
+ "z",
92
+ "zz",
93
+ "zzz",
94
+ "zzzz",
95
+ "T"
96
+ ];
97
+ function ordinal(num) {
98
+ const n = typeof num === "string" ? parseFloat(num) : num;
99
+ let suffix = "th";
100
+ if (n % 10 === 1 && n % 100 !== 11) {
101
+ suffix = "st";
102
+ } else if (n % 10 === 2 && n % 100 !== 12) {
103
+ suffix = "nd";
104
+ } else if (n % 10 === 3 && n % 100 !== 13) {
105
+ suffix = "rd";
106
+ }
107
+ return `${n}${suffix}`;
108
+ }
109
+ function pad(num, length) {
110
+ return String(num).padStart(length, "0");
111
+ }
112
+ function zone(str) {
113
+ return str.split(/AM|PM/)[1].trim();
114
+ }
115
+ function getFormat(date, options) {
116
+ const { locale, format, timeZone } = options;
117
+ switch (format) {
118
+ // era
119
+ case "G":
120
+ case "GG":
121
+ case "GGG":
122
+ return date.toLocaleString(locale, { era: "short" });
123
+ case "GGGG":
124
+ return date.toLocaleString(locale, { era: "long" });
125
+ case "GGGGG":
126
+ return date.toLocaleString(locale, { era: "narrow" });
127
+ // year
128
+ case "y":
129
+ case "Y":
130
+ return date.getFullYear();
131
+ case "yo":
132
+ case "Yo":
133
+ return ordinal(date.toLocaleString(locale, { year: "numeric" }));
134
+ case "yy":
135
+ case "YY":
136
+ return date.toLocaleString(locale, { year: "2-digit" });
137
+ case "yyy":
138
+ case "YYY":
139
+ return date.toLocaleString(locale, { year: "numeric" }).padStart(3, "0");
140
+ case "yyyy":
141
+ case "YYYY":
142
+ return date.toLocaleString(locale, { year: "numeric" }).padStart(4, "0");
143
+ // quarter
144
+ case "Q":
145
+ case "QQQQQ":
146
+ return Math.ceil((date.getMonth() + 1) / 3);
147
+ case "Qo":
148
+ return ordinal(Math.ceil((date.getMonth() + 1) / 3));
149
+ case "QQ":
150
+ return pad(Math.ceil((date.getMonth() + 1) / 3), 2);
151
+ case "QQQ":
152
+ return `Q${Math.ceil((date.getMonth() + 1) / 3)}`;
153
+ case "QQQQ": {
154
+ const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)));
155
+ return `${base} quarter`;
156
+ }
157
+ // month
158
+ case "M":
159
+ return date.getMonth() + 1;
160
+ case "Mo":
161
+ return ordinal(date.getMonth() + 1);
162
+ case "MM":
163
+ return date.toLocaleString(locale, { month: "2-digit" });
164
+ case "MMM":
165
+ return date.toLocaleString(locale, { month: "short" });
166
+ case "MMMM":
167
+ return date.toLocaleString(locale, { month: "long" });
168
+ case "MMMMM":
169
+ return date.toLocaleString(locale, { month: "narrow" });
170
+ // week
171
+ case "w":
172
+ return Math.ceil(date.getDate() / 7);
173
+ case "wo":
174
+ return ordinal(Math.ceil(date.getDate() / 7));
175
+ case "ww":
176
+ return pad(Math.ceil(date.getDate() / 7), 2);
177
+ // day
178
+ case "d":
179
+ case "D":
180
+ return date.getDate();
181
+ case "do":
182
+ case "Do":
183
+ return ordinal(date.getDate());
184
+ case "dd":
185
+ case "DD":
186
+ return date.toLocaleString(locale, { day: "2-digit" });
187
+ case "DDD":
188
+ return pad(date.getDate(), 3);
189
+ // weekday
190
+ case "E":
191
+ case "EE":
192
+ case "EEE":
193
+ return date.toLocaleString(locale, { weekday: "short" });
194
+ case "EEEE":
195
+ return date.toLocaleString(locale, { weekday: "long" });
196
+ case "EEEEE":
197
+ return date.toLocaleString(locale, { weekday: "narrow" });
198
+ case "EEEEEE":
199
+ return date.toLocaleString(locale, { weekday: "short" }).slice(0, 2);
200
+ // hour
201
+ case "h":
202
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true });
203
+ case "ho":
204
+ return ordinal(date.toLocaleString(locale, { hour: "2-digit", hour12: true }));
205
+ case "hh":
206
+ return date.toLocaleString(locale, { hour: "2-digit", hour12: true });
207
+ case "H":
208
+ return date.toLocaleString(locale, { hour: "numeric", hour12: false });
209
+ case "Ho":
210
+ return ordinal(+date.toLocaleString(locale, { hour: "numeric", hour12: false }));
211
+ case "HH":
212
+ return date.toLocaleString(locale, { hour: "2-digit", hour12: false });
213
+ // minute
214
+ case "m":
215
+ return date.toLocaleString(locale, { minute: "numeric" });
216
+ case "mo":
217
+ return ordinal(date.toLocaleString(locale, { minute: "numeric" }));
218
+ case "mm":
219
+ return date.toLocaleString(locale, { minute: "2-digit" });
220
+ // second
221
+ case "s":
222
+ return date.toLocaleString(locale, { second: "numeric" });
223
+ case "so":
224
+ return ordinal(date.toLocaleString(locale, { second: "numeric" }));
225
+ case "ss":
226
+ return date.toLocaleString(locale, { second: "2-digit" });
227
+ // timestamp
228
+ case "T":
229
+ return date.getTime();
230
+ // day period
231
+ case "a":
232
+ case "aa":
233
+ case "aaa":
234
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLocaleUpperCase();
235
+ case "aaaa":
236
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLocaleLowerCase();
237
+ case "aaaaa":
238
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true }).charAt(0);
239
+ // TODO:Revise this
240
+ case "z":
241
+ case "zz":
242
+ case "zzz": {
243
+ return zone(date.toLocaleString(locale, { timeZone, timeZoneName: "shortOffset" }));
244
+ }
245
+ case "zzzz":
246
+ return zone(date.toLocaleString(locale, { timeZone, timeZoneName: "longOffset" }));
247
+ default:
248
+ throw new Error(`Unknown format: ${format}`);
249
+ }
250
+ }
251
+ function formatDate(date, format, locale, timeZone) {
252
+ let result = format;
253
+ for (const key of FORMATS) {
254
+ const res = getFormat(date, { locale, format: key, timeZone });
255
+ result = result.replace(createRegEx(key), "$1" + res + "$3");
256
+ }
257
+ return result;
258
+ }
259
+ // Annotate the CommonJS export names for ESM import in node:
260
+ 0 && (module.exports = {
261
+ formatDate
262
+ });
@@ -0,0 +1,237 @@
1
+ // src/format-date.ts
2
+ var symbols = "\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";
3
+ function createRegEx(sign) {
4
+ return new RegExp("(^|>|" + symbols + ")(" + sign + ")($|<|" + symbols + ")", "g");
5
+ }
6
+ var FORMATS = [
7
+ "G",
8
+ "GG",
9
+ "GGG",
10
+ "GGGG",
11
+ "GGGGG",
12
+ "y",
13
+ "yo",
14
+ "yy",
15
+ "yyy",
16
+ "yyyy",
17
+ "Y",
18
+ "Yo",
19
+ "YY",
20
+ "YYY",
21
+ "YYYY",
22
+ "Q",
23
+ "Qo",
24
+ "QQ",
25
+ "QQQ",
26
+ "QQQQ",
27
+ "QQQQQ",
28
+ "M",
29
+ "Mo",
30
+ "MM",
31
+ "MMM",
32
+ "MMMM",
33
+ "MMMMM",
34
+ "E",
35
+ "EE",
36
+ "EEE",
37
+ "EEEE",
38
+ "EEEEE",
39
+ "EEEEEE",
40
+ "a",
41
+ "aa",
42
+ "aaa",
43
+ "aaaa",
44
+ "aaaaa",
45
+ "d",
46
+ "do",
47
+ "dd",
48
+ "D",
49
+ "Do",
50
+ "DD",
51
+ "DDD",
52
+ "w",
53
+ "wo",
54
+ "ww",
55
+ "s",
56
+ "so",
57
+ "ss",
58
+ "m",
59
+ "mo",
60
+ "mm",
61
+ "h",
62
+ "ho",
63
+ "hh",
64
+ "H",
65
+ "Ho",
66
+ "HH",
67
+ "z",
68
+ "zz",
69
+ "zzz",
70
+ "zzzz",
71
+ "T"
72
+ ];
73
+ function ordinal(num) {
74
+ const n = typeof num === "string" ? parseFloat(num) : num;
75
+ let suffix = "th";
76
+ if (n % 10 === 1 && n % 100 !== 11) {
77
+ suffix = "st";
78
+ } else if (n % 10 === 2 && n % 100 !== 12) {
79
+ suffix = "nd";
80
+ } else if (n % 10 === 3 && n % 100 !== 13) {
81
+ suffix = "rd";
82
+ }
83
+ return `${n}${suffix}`;
84
+ }
85
+ function pad(num, length) {
86
+ return String(num).padStart(length, "0");
87
+ }
88
+ function zone(str) {
89
+ return str.split(/AM|PM/)[1].trim();
90
+ }
91
+ function getFormat(date, options) {
92
+ const { locale, format, timeZone } = options;
93
+ switch (format) {
94
+ // era
95
+ case "G":
96
+ case "GG":
97
+ case "GGG":
98
+ return date.toLocaleString(locale, { era: "short" });
99
+ case "GGGG":
100
+ return date.toLocaleString(locale, { era: "long" });
101
+ case "GGGGG":
102
+ return date.toLocaleString(locale, { era: "narrow" });
103
+ // year
104
+ case "y":
105
+ case "Y":
106
+ return date.getFullYear();
107
+ case "yo":
108
+ case "Yo":
109
+ return ordinal(date.toLocaleString(locale, { year: "numeric" }));
110
+ case "yy":
111
+ case "YY":
112
+ return date.toLocaleString(locale, { year: "2-digit" });
113
+ case "yyy":
114
+ case "YYY":
115
+ return date.toLocaleString(locale, { year: "numeric" }).padStart(3, "0");
116
+ case "yyyy":
117
+ case "YYYY":
118
+ return date.toLocaleString(locale, { year: "numeric" }).padStart(4, "0");
119
+ // quarter
120
+ case "Q":
121
+ case "QQQQQ":
122
+ return Math.ceil((date.getMonth() + 1) / 3);
123
+ case "Qo":
124
+ return ordinal(Math.ceil((date.getMonth() + 1) / 3));
125
+ case "QQ":
126
+ return pad(Math.ceil((date.getMonth() + 1) / 3), 2);
127
+ case "QQQ":
128
+ return `Q${Math.ceil((date.getMonth() + 1) / 3)}`;
129
+ case "QQQQ": {
130
+ const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)));
131
+ return `${base} quarter`;
132
+ }
133
+ // month
134
+ case "M":
135
+ return date.getMonth() + 1;
136
+ case "Mo":
137
+ return ordinal(date.getMonth() + 1);
138
+ case "MM":
139
+ return date.toLocaleString(locale, { month: "2-digit" });
140
+ case "MMM":
141
+ return date.toLocaleString(locale, { month: "short" });
142
+ case "MMMM":
143
+ return date.toLocaleString(locale, { month: "long" });
144
+ case "MMMMM":
145
+ return date.toLocaleString(locale, { month: "narrow" });
146
+ // week
147
+ case "w":
148
+ return Math.ceil(date.getDate() / 7);
149
+ case "wo":
150
+ return ordinal(Math.ceil(date.getDate() / 7));
151
+ case "ww":
152
+ return pad(Math.ceil(date.getDate() / 7), 2);
153
+ // day
154
+ case "d":
155
+ case "D":
156
+ return date.getDate();
157
+ case "do":
158
+ case "Do":
159
+ return ordinal(date.getDate());
160
+ case "dd":
161
+ case "DD":
162
+ return date.toLocaleString(locale, { day: "2-digit" });
163
+ case "DDD":
164
+ return pad(date.getDate(), 3);
165
+ // weekday
166
+ case "E":
167
+ case "EE":
168
+ case "EEE":
169
+ return date.toLocaleString(locale, { weekday: "short" });
170
+ case "EEEE":
171
+ return date.toLocaleString(locale, { weekday: "long" });
172
+ case "EEEEE":
173
+ return date.toLocaleString(locale, { weekday: "narrow" });
174
+ case "EEEEEE":
175
+ return date.toLocaleString(locale, { weekday: "short" }).slice(0, 2);
176
+ // hour
177
+ case "h":
178
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true });
179
+ case "ho":
180
+ return ordinal(date.toLocaleString(locale, { hour: "2-digit", hour12: true }));
181
+ case "hh":
182
+ return date.toLocaleString(locale, { hour: "2-digit", hour12: true });
183
+ case "H":
184
+ return date.toLocaleString(locale, { hour: "numeric", hour12: false });
185
+ case "Ho":
186
+ return ordinal(+date.toLocaleString(locale, { hour: "numeric", hour12: false }));
187
+ case "HH":
188
+ return date.toLocaleString(locale, { hour: "2-digit", hour12: false });
189
+ // minute
190
+ case "m":
191
+ return date.toLocaleString(locale, { minute: "numeric" });
192
+ case "mo":
193
+ return ordinal(date.toLocaleString(locale, { minute: "numeric" }));
194
+ case "mm":
195
+ return date.toLocaleString(locale, { minute: "2-digit" });
196
+ // second
197
+ case "s":
198
+ return date.toLocaleString(locale, { second: "numeric" });
199
+ case "so":
200
+ return ordinal(date.toLocaleString(locale, { second: "numeric" }));
201
+ case "ss":
202
+ return date.toLocaleString(locale, { second: "2-digit" });
203
+ // timestamp
204
+ case "T":
205
+ return date.getTime();
206
+ // day period
207
+ case "a":
208
+ case "aa":
209
+ case "aaa":
210
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLocaleUpperCase();
211
+ case "aaaa":
212
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true }).toLocaleLowerCase();
213
+ case "aaaaa":
214
+ return date.toLocaleString(locale, { hour: "numeric", hour12: true }).charAt(0);
215
+ // TODO:Revise this
216
+ case "z":
217
+ case "zz":
218
+ case "zzz": {
219
+ return zone(date.toLocaleString(locale, { timeZone, timeZoneName: "shortOffset" }));
220
+ }
221
+ case "zzzz":
222
+ return zone(date.toLocaleString(locale, { timeZone, timeZoneName: "longOffset" }));
223
+ default:
224
+ throw new Error(`Unknown format: ${format}`);
225
+ }
226
+ }
227
+ function formatDate(date, format, locale, timeZone) {
228
+ let result = format;
229
+ for (const key of FORMATS) {
230
+ const res = getFormat(date, { locale, format: key, timeZone });
231
+ result = result.replace(createRegEx(key), "$1" + res + "$3");
232
+ }
233
+ return result;
234
+ }
235
+ export {
236
+ formatDate
237
+ };
@@ -0,0 +1,3 @@
1
+ declare function formatList(list: string[], locale: string, options?: Intl.ListFormatOptions): string;
2
+
3
+ export { formatList };
@@ -0,0 +1,3 @@
1
+ declare function formatList(list: string[], locale: string, options?: Intl.ListFormatOptions): string;
2
+
3
+ export { formatList };
@@ -0,0 +1,35 @@
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/format-list.ts
21
+ var format_list_exports = {};
22
+ __export(format_list_exports, {
23
+ formatList: () => formatList
24
+ });
25
+ module.exports = __toCommonJS(format_list_exports);
26
+ var import_cache = require("./cache.cjs");
27
+ var getListFormatter = (0, import_cache.i18nCache)(Intl.ListFormat);
28
+ function formatList(list, locale, options = {}) {
29
+ const formatter = getListFormatter(locale, options);
30
+ return formatter.format(list);
31
+ }
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ formatList
35
+ });
@@ -0,0 +1,10 @@
1
+ // src/format-list.ts
2
+ import { i18nCache } from "./cache.mjs";
3
+ var getListFormatter = i18nCache(Intl.ListFormat);
4
+ function formatList(list, locale, options = {}) {
5
+ const formatter = getListFormatter(locale, options);
6
+ return formatter.format(list);
7
+ }
8
+ export {
9
+ formatList
10
+ };
@@ -0,0 +1,3 @@
1
+ declare function formatNumber(v: number, locale: string, options?: Intl.NumberFormatOptions): string;
2
+
3
+ export { formatNumber };
@@ -0,0 +1,3 @@
1
+ declare function formatNumber(v: number, locale: string, options?: Intl.NumberFormatOptions): string;
2
+
3
+ export { formatNumber };
@@ -0,0 +1,35 @@
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/format-number.ts
21
+ var format_number_exports = {};
22
+ __export(format_number_exports, {
23
+ formatNumber: () => formatNumber
24
+ });
25
+ module.exports = __toCommonJS(format_number_exports);
26
+ var import_cache = require("./cache.cjs");
27
+ var getNumberFormatter = (0, import_cache.i18nCache)(Intl.NumberFormat);
28
+ function formatNumber(v, locale, options = {}) {
29
+ const formatter = getNumberFormatter(locale, options);
30
+ return formatter.format(v);
31
+ }
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ formatNumber
35
+ });
@@ -0,0 +1,10 @@
1
+ // src/format-number.ts
2
+ import { i18nCache } from "./cache.mjs";
3
+ var getNumberFormatter = i18nCache(Intl.NumberFormat);
4
+ function formatNumber(v, locale, options = {}) {
5
+ const formatter = getNumberFormatter(locale, options);
6
+ return formatter.format(v);
7
+ }
8
+ export {
9
+ formatNumber
10
+ };
@@ -0,0 +1,3 @@
1
+ declare function formatRelativeTime(value: Date, locale: string, options?: Intl.RelativeTimeFormatOptions): string;
2
+
3
+ export { formatRelativeTime };
@@ -0,0 +1,3 @@
1
+ declare function formatRelativeTime(value: Date, locale: string, options?: Intl.RelativeTimeFormatOptions): string;
2
+
3
+ export { formatRelativeTime };
@@ -0,0 +1,65 @@
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/format-relative-time.ts
21
+ var format_relative_time_exports = {};
22
+ __export(format_relative_time_exports, {
23
+ formatRelativeTime: () => formatRelativeTime
24
+ });
25
+ module.exports = __toCommonJS(format_relative_time_exports);
26
+ var import_cache = require("./cache.cjs");
27
+ var getRelativeTimeFormatter = (0, import_cache.i18nCache)(Intl.RelativeTimeFormat);
28
+ function formatRelativeTime(value, locale, options = {}) {
29
+ const rtf = getRelativeTimeFormatter(locale, options);
30
+ const now = /* @__PURE__ */ new Date();
31
+ const diff = getDistance(now, value);
32
+ if (diff.years > 0) return rtf.format(diff.years * diff.sign, "year");
33
+ if (diff.months > 0) return rtf.format(diff.months * diff.sign, "month");
34
+ if (diff.weeks > 0) return rtf.format(diff.weeks * diff.sign, "week");
35
+ if (diff.days > 0) return rtf.format(diff.days * diff.sign, "day");
36
+ if (diff.hours > 0) return rtf.format(diff.hours * diff.sign, "hour");
37
+ if (diff.minutes > 0) return rtf.format(diff.minutes * diff.sign, "minute");
38
+ return rtf.format(diff.seconds * diff.sign, "second");
39
+ }
40
+ var SECOND_TO_MS = 1e3;
41
+ var MINUTE_TO_MS = 1e3 * 60;
42
+ var HOUR_TO_MS = 1e3 * 60 * 60;
43
+ var DAY_TO_MS = 1e3 * 60 * 60 * 24;
44
+ var WEEK_TO_MS = 1e3 * 60 * 60 * 24 * 7;
45
+ var MONTH_TO_MS = 1e3 * 60 * 60 * 24 * 30;
46
+ var YEAR_TO_MS = 1e3 * 60 * 60 * 24 * 365;
47
+ function getDistance(startDate, endDate) {
48
+ const endTime = endDate.getTime();
49
+ const startTime = startDate.getTime();
50
+ const distance = Math.abs(endTime - startTime);
51
+ return {
52
+ sign: Math.sign(endTime - startTime),
53
+ days: Math.floor(distance / DAY_TO_MS),
54
+ hours: Math.floor(distance % DAY_TO_MS / HOUR_TO_MS),
55
+ minutes: Math.floor(distance % HOUR_TO_MS / MINUTE_TO_MS),
56
+ seconds: Math.floor(distance % MINUTE_TO_MS / SECOND_TO_MS),
57
+ weeks: Math.floor(distance / WEEK_TO_MS),
58
+ months: Math.floor(distance / MONTH_TO_MS),
59
+ years: Math.floor(distance / YEAR_TO_MS)
60
+ };
61
+ }
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ formatRelativeTime
65
+ });