@frame-kit/utils 0.2.9 → 0.2.11
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/CHANGELOG.md +16 -0
- package/README.md +8 -2
- package/cjs/index.js +11 -0
- package/cjs/index.js.map +1 -0
- package/cjs/lib/color/color.js +393 -0
- package/cjs/lib/color/color.js.map +1 -0
- package/cjs/lib/color/color.types.js +3 -0
- package/cjs/lib/color/color.types.js.map +1 -0
- package/cjs/lib/date/date.js +399 -0
- package/cjs/lib/date/date.js.map +1 -0
- package/cjs/lib/date/date.types.js +3 -0
- package/cjs/lib/date/date.types.js.map +1 -0
- package/cjs/lib/i18n/i18n.js +179 -0
- package/cjs/lib/i18n/i18n.js.map +1 -0
- package/cjs/lib/i18n/i18n.locale.js +68 -0
- package/cjs/lib/i18n/i18n.locale.js.map +1 -0
- package/cjs/lib/i18n/i18n.types.js +3 -0
- package/cjs/lib/i18n/i18n.types.js.map +1 -0
- package/cjs/package.json +3 -0
- package/package.json +12 -4
- package/src/index.d.ts +3 -0
- package/src/index.js +3 -0
- package/src/index.js.map +1 -1
- package/src/lib/i18n/i18n.d.ts +55 -0
- package/src/lib/i18n/i18n.js +175 -0
- package/src/lib/i18n/i18n.js.map +1 -0
- package/src/lib/i18n/i18n.locale.d.ts +34 -0
- package/src/lib/i18n/i18n.locale.js +62 -0
- package/src/lib/i18n/i18n.locale.js.map +1 -0
- package/src/lib/i18n/i18n.types.d.ts +17 -0
- package/src/lib/i18n/i18n.types.js +2 -0
- package/src/lib/i18n/i18n.types.js.map +1 -0
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DateUtil = void 0;
|
|
4
|
+
const date_fns_1 = require("date-fns");
|
|
5
|
+
/**
|
|
6
|
+
* Lightweight date utility class built on date-fns.
|
|
7
|
+
*
|
|
8
|
+
* All methods accept flexible input (Date, string, number, null) and
|
|
9
|
+
* return a safe fallback for invalid values. No Angular dependency —
|
|
10
|
+
* can be used standalone or via the DateService injectable wrapper.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const d = new DateUtil("2026-03-28T14:45:00Z");
|
|
15
|
+
*
|
|
16
|
+
* d.shortDate(); // "Mar 28, 2026"
|
|
17
|
+
* d.longDate(); // "March 28, 2026"
|
|
18
|
+
* d.shortDateTime(); // "Mar 28, 2026, 2:45 PM"
|
|
19
|
+
* d.timeAgo(); // "3 hours ago"
|
|
20
|
+
* d.smartRelative(); // "3 hours ago" or "Mar 25, 2026"
|
|
21
|
+
* d.sinceDate(); // "Member since Mar 2026"
|
|
22
|
+
* d.expiryStatus(); // { label: "Expires in 5 days", severity: "warning", expired: false }
|
|
23
|
+
*
|
|
24
|
+
* // Static helpers
|
|
25
|
+
* DateUtil.isToday(someDate);
|
|
26
|
+
* DateUtil.isPast(someDate);
|
|
27
|
+
* DateUtil.parse("2026-03-28");
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
class DateUtil {
|
|
31
|
+
constructor(input) {
|
|
32
|
+
this._date = DateUtil.parse(input);
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Static parsing & validation
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Parse any date-like input into a Date object.
|
|
39
|
+
* Returns null for invalid/null/undefined values.
|
|
40
|
+
*/
|
|
41
|
+
static parse(input) {
|
|
42
|
+
if (input == null) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (input instanceof Date) {
|
|
46
|
+
return (0, date_fns_1.isValid)(input) ? input : null;
|
|
47
|
+
}
|
|
48
|
+
if (typeof input === 'number') {
|
|
49
|
+
const d = new Date(input);
|
|
50
|
+
return (0, date_fns_1.isValid)(d) ? d : null;
|
|
51
|
+
}
|
|
52
|
+
if (typeof input === 'string') {
|
|
53
|
+
const d = (0, date_fns_1.parseISO)(input);
|
|
54
|
+
if ((0, date_fns_1.isValid)(d)) {
|
|
55
|
+
return d;
|
|
56
|
+
}
|
|
57
|
+
const fallback = new Date(input);
|
|
58
|
+
return (0, date_fns_1.isValid)(fallback) ? fallback : null;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if a value is a valid, parseable date.
|
|
64
|
+
*/
|
|
65
|
+
static isValidDate(input) {
|
|
66
|
+
return DateUtil.parse(input) !== null;
|
|
67
|
+
}
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Static boolean checks
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
static isToday(input) {
|
|
72
|
+
const d = DateUtil.parse(input);
|
|
73
|
+
return d !== null && (0, date_fns_1.isToday)(d);
|
|
74
|
+
}
|
|
75
|
+
static isYesterday(input) {
|
|
76
|
+
const d = DateUtil.parse(input);
|
|
77
|
+
return d !== null && (0, date_fns_1.isYesterday)(d);
|
|
78
|
+
}
|
|
79
|
+
static isTomorrow(input) {
|
|
80
|
+
const d = DateUtil.parse(input);
|
|
81
|
+
return d !== null && (0, date_fns_1.isTomorrow)(d);
|
|
82
|
+
}
|
|
83
|
+
static isPast(input) {
|
|
84
|
+
const d = DateUtil.parse(input);
|
|
85
|
+
return d !== null && (0, date_fns_1.isPast)(d);
|
|
86
|
+
}
|
|
87
|
+
static isFuture(input) {
|
|
88
|
+
const d = DateUtil.parse(input);
|
|
89
|
+
return d !== null && (0, date_fns_1.isFuture)(d);
|
|
90
|
+
}
|
|
91
|
+
static isWithinDays(input, days) {
|
|
92
|
+
const d = DateUtil.parse(input);
|
|
93
|
+
if (!d) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return Math.abs((0, date_fns_1.differenceInDays)(new Date(), d)) <= days;
|
|
97
|
+
}
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Static boundary helpers
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
static startOfDay(input) {
|
|
102
|
+
const d = DateUtil.parse(input);
|
|
103
|
+
return d ? (0, date_fns_1.startOfDay)(d) : null;
|
|
104
|
+
}
|
|
105
|
+
static endOfDay(input) {
|
|
106
|
+
const d = DateUtil.parse(input);
|
|
107
|
+
return d ? (0, date_fns_1.endOfDay)(d) : null;
|
|
108
|
+
}
|
|
109
|
+
static toISOString(input) {
|
|
110
|
+
const d = DateUtil.parse(input);
|
|
111
|
+
return d ? d.toISOString() : '';
|
|
112
|
+
}
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// Instance — absolute formats
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
/**
|
|
117
|
+
* "Mar 28, 2026"
|
|
118
|
+
*/
|
|
119
|
+
shortDate() {
|
|
120
|
+
return this._date ? (0, date_fns_1.format)(this._date, 'MMM d, yyyy') : DateUtil.FALLBACK;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* "March 28, 2026"
|
|
124
|
+
*/
|
|
125
|
+
longDate() {
|
|
126
|
+
return this._date ? (0, date_fns_1.format)(this._date, 'MMMM d, yyyy') : DateUtil.FALLBACK;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* "03/28/2026"
|
|
130
|
+
*/
|
|
131
|
+
numericDate() {
|
|
132
|
+
return this._date ? (0, date_fns_1.format)(this._date, 'MM/dd/yyyy') : DateUtil.FALLBACK;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* "2026-03-28"
|
|
136
|
+
*/
|
|
137
|
+
isoDate() {
|
|
138
|
+
return this._date ? (0, date_fns_1.format)(this._date, 'yyyy-MM-dd') : DateUtil.FALLBACK;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* "Mar 28, 2026, 2:45 PM"
|
|
142
|
+
*/
|
|
143
|
+
shortDateTime() {
|
|
144
|
+
return this._date
|
|
145
|
+
? (0, date_fns_1.format)(this._date, 'MMM d, yyyy, h:mm a')
|
|
146
|
+
: DateUtil.FALLBACK;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* "March 28, 2026 at 2:45:30 PM"
|
|
150
|
+
*/
|
|
151
|
+
longDateTime() {
|
|
152
|
+
return this._date
|
|
153
|
+
? (0, date_fns_1.format)(this._date, "MMMM d, yyyy 'at' h:mm:ss a")
|
|
154
|
+
: DateUtil.FALLBACK;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* "2:45 PM"
|
|
158
|
+
*/
|
|
159
|
+
time() {
|
|
160
|
+
return this._date ? (0, date_fns_1.format)(this._date, 'h:mm a') : DateUtil.FALLBACK;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* "2:45:30 PM"
|
|
164
|
+
*/
|
|
165
|
+
timePrecise() {
|
|
166
|
+
return this._date ? (0, date_fns_1.format)(this._date, 'h:mm:ss a') : DateUtil.FALLBACK;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Format using a preset name.
|
|
170
|
+
*/
|
|
171
|
+
format(preset) {
|
|
172
|
+
switch (preset) {
|
|
173
|
+
case 'shortDate':
|
|
174
|
+
return this.shortDate();
|
|
175
|
+
case 'longDate':
|
|
176
|
+
return this.longDate();
|
|
177
|
+
case 'numericDate':
|
|
178
|
+
return this.numericDate();
|
|
179
|
+
case 'isoDate':
|
|
180
|
+
return this.isoDate();
|
|
181
|
+
case 'shortDateTime':
|
|
182
|
+
return this.shortDateTime();
|
|
183
|
+
case 'longDateTime':
|
|
184
|
+
return this.longDateTime();
|
|
185
|
+
case 'time':
|
|
186
|
+
return this.time();
|
|
187
|
+
case 'timePrecise':
|
|
188
|
+
return this.timePrecise();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Format using a custom date-fns format string.
|
|
193
|
+
*/
|
|
194
|
+
custom(formatStr) {
|
|
195
|
+
return this._date ? (0, date_fns_1.format)(this._date, formatStr) : DateUtil.FALLBACK;
|
|
196
|
+
}
|
|
197
|
+
// ---------------------------------------------------------------------------
|
|
198
|
+
// Instance — relative formats
|
|
199
|
+
// ---------------------------------------------------------------------------
|
|
200
|
+
/**
|
|
201
|
+
* "3 hours ago", "2 days ago", "about 1 month ago"
|
|
202
|
+
*/
|
|
203
|
+
timeAgo() {
|
|
204
|
+
return this._date
|
|
205
|
+
? (0, date_fns_1.formatDistanceToNow)(this._date, { addSuffix: true })
|
|
206
|
+
: DateUtil.FALLBACK;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* "3h", "2d", "1mo" — compact relative time.
|
|
210
|
+
*/
|
|
211
|
+
timeAgoShort() {
|
|
212
|
+
if (!this._date) {
|
|
213
|
+
return DateUtil.FALLBACK;
|
|
214
|
+
}
|
|
215
|
+
const now = new Date();
|
|
216
|
+
const mins = Math.abs((0, date_fns_1.differenceInMinutes)(now, this._date));
|
|
217
|
+
if (mins < 1) {
|
|
218
|
+
return 'now';
|
|
219
|
+
}
|
|
220
|
+
if (mins < 60) {
|
|
221
|
+
return `${mins}m`;
|
|
222
|
+
}
|
|
223
|
+
const hours = Math.abs((0, date_fns_1.differenceInHours)(now, this._date));
|
|
224
|
+
if (hours < 24) {
|
|
225
|
+
return `${hours}h`;
|
|
226
|
+
}
|
|
227
|
+
const days = Math.abs((0, date_fns_1.differenceInDays)(now, this._date));
|
|
228
|
+
if (days < 30) {
|
|
229
|
+
return `${days}d`;
|
|
230
|
+
}
|
|
231
|
+
if (days < 365) {
|
|
232
|
+
return `${Math.floor(days / 30)}mo`;
|
|
233
|
+
}
|
|
234
|
+
return `${Math.floor(days / 365)}y`;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* "in 5 days", "in 2 hours"
|
|
238
|
+
*/
|
|
239
|
+
timeUntil() {
|
|
240
|
+
return this._date
|
|
241
|
+
? (0, date_fns_1.formatDistanceToNow)(this._date, { addSuffix: true })
|
|
242
|
+
: DateUtil.FALLBACK;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Auto-switches from relative to absolute after a threshold.
|
|
246
|
+
* Recent: "3 hours ago" | Older: "Mar 25, 2026"
|
|
247
|
+
*/
|
|
248
|
+
smartRelative(thresholdDays = DateUtil.RELATIVE_THRESHOLD_DAYS) {
|
|
249
|
+
if (!this._date) {
|
|
250
|
+
return DateUtil.FALLBACK;
|
|
251
|
+
}
|
|
252
|
+
const days = Math.abs((0, date_fns_1.differenceInDays)(new Date(), this._date));
|
|
253
|
+
if (days <= thresholdDays) {
|
|
254
|
+
return this.timeAgo();
|
|
255
|
+
}
|
|
256
|
+
return this.shortDate();
|
|
257
|
+
}
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
// Instance — contextual formats
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
/**
|
|
262
|
+
* "Today", "Yesterday", "Tomorrow", "Last Tuesday", "Mar 20, 2026"
|
|
263
|
+
*/
|
|
264
|
+
calendarDate() {
|
|
265
|
+
if (!this._date) {
|
|
266
|
+
return DateUtil.FALLBACK;
|
|
267
|
+
}
|
|
268
|
+
if ((0, date_fns_1.isToday)(this._date)) {
|
|
269
|
+
return 'Today';
|
|
270
|
+
}
|
|
271
|
+
if ((0, date_fns_1.isYesterday)(this._date)) {
|
|
272
|
+
return 'Yesterday';
|
|
273
|
+
}
|
|
274
|
+
if ((0, date_fns_1.isTomorrow)(this._date)) {
|
|
275
|
+
return 'Tomorrow';
|
|
276
|
+
}
|
|
277
|
+
const days = (0, date_fns_1.differenceInDays)(new Date(), this._date);
|
|
278
|
+
if (days > 0 && days < 7) {
|
|
279
|
+
return (0, date_fns_1.format)(this._date, "'Last' EEEE");
|
|
280
|
+
}
|
|
281
|
+
return this.shortDate();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* "Member since Mar 2026"
|
|
285
|
+
*/
|
|
286
|
+
sinceDate(prefix = 'Member since') {
|
|
287
|
+
return this._date
|
|
288
|
+
? `${prefix} ${(0, date_fns_1.format)(this._date, 'MMM yyyy')}`
|
|
289
|
+
: DateUtil.FALLBACK;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Expiry status with label and severity.
|
|
293
|
+
*/
|
|
294
|
+
expiryStatus(warningDays = 7) {
|
|
295
|
+
if (!this._date) {
|
|
296
|
+
return { label: DateUtil.FALLBACK, severity: 'default', expired: false };
|
|
297
|
+
}
|
|
298
|
+
if ((0, date_fns_1.isPast)(this._date)) {
|
|
299
|
+
const ago = (0, date_fns_1.formatDistanceToNow)(this._date, { addSuffix: true });
|
|
300
|
+
return { label: `Expired ${ago}`, severity: 'danger', expired: true };
|
|
301
|
+
}
|
|
302
|
+
const days = (0, date_fns_1.differenceInDays)(this._date, new Date());
|
|
303
|
+
if (days <= warningDays) {
|
|
304
|
+
const until = (0, date_fns_1.formatDistanceToNow)(this._date, { addSuffix: true });
|
|
305
|
+
return { label: `Expires ${until}`, severity: 'warning', expired: false };
|
|
306
|
+
}
|
|
307
|
+
return { label: 'Active', severity: 'success', expired: false };
|
|
308
|
+
}
|
|
309
|
+
// ---------------------------------------------------------------------------
|
|
310
|
+
// Instance — range & duration
|
|
311
|
+
// ---------------------------------------------------------------------------
|
|
312
|
+
/**
|
|
313
|
+
* "Mar 15 – Mar 28, 2026" or "Mar 15 – Jun 30, 2026"
|
|
314
|
+
*/
|
|
315
|
+
rangeTo(endInput) {
|
|
316
|
+
if (!this._date) {
|
|
317
|
+
return DateUtil.FALLBACK;
|
|
318
|
+
}
|
|
319
|
+
const end = DateUtil.parse(endInput);
|
|
320
|
+
if (!end) {
|
|
321
|
+
return this.shortDate();
|
|
322
|
+
}
|
|
323
|
+
const sameYear = this._date.getFullYear() === end.getFullYear();
|
|
324
|
+
const sameMonth = sameYear && this._date.getMonth() === end.getMonth();
|
|
325
|
+
if (sameMonth) {
|
|
326
|
+
return `${(0, date_fns_1.format)(this._date, 'MMM d')} – ${(0, date_fns_1.format)(end, 'd, yyyy')}`;
|
|
327
|
+
}
|
|
328
|
+
if (sameYear) {
|
|
329
|
+
return `${(0, date_fns_1.format)(this._date, 'MMM d')} – ${(0, date_fns_1.format)(end, 'MMM d, yyyy')}`;
|
|
330
|
+
}
|
|
331
|
+
return `${(0, date_fns_1.format)(this._date, 'MMM d, yyyy')} – ${(0, date_fns_1.format)(end, 'MMM d, yyyy')}`;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* "13 days", "2 hours", "45 minutes"
|
|
335
|
+
*/
|
|
336
|
+
durationTo(endInput) {
|
|
337
|
+
if (!this._date) {
|
|
338
|
+
return DateUtil.FALLBACK;
|
|
339
|
+
}
|
|
340
|
+
const end = DateUtil.parse(endInput);
|
|
341
|
+
if (!end) {
|
|
342
|
+
return DateUtil.FALLBACK;
|
|
343
|
+
}
|
|
344
|
+
return (0, date_fns_1.formatDistance)(this._date, end);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* "13d", "2h 15m"
|
|
348
|
+
*/
|
|
349
|
+
durationToShort(endInput) {
|
|
350
|
+
if (!this._date) {
|
|
351
|
+
return DateUtil.FALLBACK;
|
|
352
|
+
}
|
|
353
|
+
const end = DateUtil.parse(endInput);
|
|
354
|
+
if (!end) {
|
|
355
|
+
return DateUtil.FALLBACK;
|
|
356
|
+
}
|
|
357
|
+
const mins = Math.abs((0, date_fns_1.differenceInMinutes)(this._date, end));
|
|
358
|
+
if (mins < 60) {
|
|
359
|
+
return `${mins}m`;
|
|
360
|
+
}
|
|
361
|
+
const hours = Math.abs((0, date_fns_1.differenceInHours)(this._date, end));
|
|
362
|
+
if (hours < 24) {
|
|
363
|
+
const remainMins = mins % 60;
|
|
364
|
+
return remainMins > 0 ? `${hours}h ${remainMins}m` : `${hours}h`;
|
|
365
|
+
}
|
|
366
|
+
const days = Math.abs((0, date_fns_1.differenceInDays)(this._date, end));
|
|
367
|
+
return `${days}d`;
|
|
368
|
+
}
|
|
369
|
+
// ---------------------------------------------------------------------------
|
|
370
|
+
// Instance — access underlying Date
|
|
371
|
+
// ---------------------------------------------------------------------------
|
|
372
|
+
/**
|
|
373
|
+
* The underlying Date object, or null if input was invalid.
|
|
374
|
+
*/
|
|
375
|
+
toDate() {
|
|
376
|
+
return this._date;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* ISO string, or empty string if invalid.
|
|
380
|
+
*/
|
|
381
|
+
toISOString() {
|
|
382
|
+
return this._date ? this._date.toISOString() : '';
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Unix timestamp in milliseconds, or 0 if invalid.
|
|
386
|
+
*/
|
|
387
|
+
valueOf() {
|
|
388
|
+
return this._date ? this._date.getTime() : 0;
|
|
389
|
+
}
|
|
390
|
+
toString() {
|
|
391
|
+
return this.shortDateTime();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
exports.DateUtil = DateUtil;
|
|
395
|
+
/** Default fallback string for null/invalid dates. */
|
|
396
|
+
DateUtil.FALLBACK = '—';
|
|
397
|
+
/** Threshold in days for switching from relative to absolute in smartRelative. */
|
|
398
|
+
DateUtil.RELATIVE_THRESHOLD_DAYS = 7;
|
|
399
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../../../packages/utils/src/lib/date/date.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.types.js","sourceRoot":"","sources":["../../../../../../packages/utils/src/lib/date/date.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.I18nService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Dot-path message lookup with `{{var}}` interpolation, a minimal ICU plural
|
|
6
|
+
* subset, and deep merge across several sources.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately free of any framework or DOM dependency, so the same instance
|
|
9
|
+
* works in a browser app, in server-side rendering, and in a backend that
|
|
10
|
+
* renders emails or hosted pages — the three places a product's copy has to
|
|
11
|
+
* agree. The Angular wrapper that adds signal reactivity and browser locale
|
|
12
|
+
* detection lives in `@frame-kit/ui-ng/services/i18n`.
|
|
13
|
+
*/
|
|
14
|
+
class I18nService {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
var _a, _b, _c, _d, _e;
|
|
17
|
+
this.supportedLocaleList = (_a = config.supportedLocales) !== null && _a !== void 0 ? _a : ['en'];
|
|
18
|
+
this.localeMaps = (_b = config.localeMaps) !== null && _b !== void 0 ? _b : [];
|
|
19
|
+
this.staticSources = (_c = config.sources) !== null && _c !== void 0 ? _c : [];
|
|
20
|
+
// No detection here: the caller passes an explicit locale. A browser app
|
|
21
|
+
// resolves it from storage or `navigator`, a backend from `Accept-Language`
|
|
22
|
+
// — neither of which this base should know about.
|
|
23
|
+
this.localeValue = (_e = (_d = config.locale) !== null && _d !== void 0 ? _d : this.supportedLocaleList[0]) !== null && _e !== void 0 ? _e : 'en';
|
|
24
|
+
this.messages = this.buildMessages(this.localeValue);
|
|
25
|
+
}
|
|
26
|
+
getLocale() {
|
|
27
|
+
return this.localeValue;
|
|
28
|
+
}
|
|
29
|
+
getSupportedLocales() {
|
|
30
|
+
return [...this.supportedLocaleList];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A message by dot-path, with optional interpolation.
|
|
34
|
+
*
|
|
35
|
+
* Returns the key itself when nothing is found. That is deliberate: a missing
|
|
36
|
+
* message renders as `auth.signIn.title` rather than as an empty space, so it
|
|
37
|
+
* is visible in review instead of silently disappearing.
|
|
38
|
+
*/
|
|
39
|
+
get(key, vars) {
|
|
40
|
+
const value = getByPath(this.currentMessages(), key);
|
|
41
|
+
if (value === undefined) {
|
|
42
|
+
return key;
|
|
43
|
+
}
|
|
44
|
+
const str = String(value);
|
|
45
|
+
if (!vars || Object.keys(vars).length === 0) {
|
|
46
|
+
return str;
|
|
47
|
+
}
|
|
48
|
+
return interpolate(str, vars);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A non-string value by dot-path — a list of steps, a table of rows.
|
|
52
|
+
*
|
|
53
|
+
* With `vars`, every string reachable inside is interpolated and the shape is
|
|
54
|
+
* preserved. Content of this kind mixes strings, arrays and objects, and a
|
|
55
|
+
* placeholder left in any one of them renders literally, so substitution has
|
|
56
|
+
* to follow the data rather than assume a shape.
|
|
57
|
+
*/
|
|
58
|
+
getRaw(path, vars) {
|
|
59
|
+
const value = getByPath(this.currentMessages(), path);
|
|
60
|
+
if (value === undefined || !vars || Object.keys(vars).length === 0) {
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
return interpolateDeep(value, vars);
|
|
64
|
+
}
|
|
65
|
+
/** No-ops on an unsupported locale rather than rendering keys. */
|
|
66
|
+
setLocale(locale) {
|
|
67
|
+
if (!this.supportedLocaleList.includes(locale)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.localeValue = locale;
|
|
71
|
+
this.messages = this.buildMessages(locale);
|
|
72
|
+
this.onLocaleChanged();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Add a locale map after construction — for a lazily loaded feature that
|
|
76
|
+
* ships its own copy and should not be paid for at boot.
|
|
77
|
+
*/
|
|
78
|
+
registerLocaleMap(map) {
|
|
79
|
+
this.localeMaps.push(map);
|
|
80
|
+
this.messages = this.buildMessages(this.localeValue);
|
|
81
|
+
this.onLocaleChanged();
|
|
82
|
+
}
|
|
83
|
+
/** Overridden by the reactive subclass to read from a signal. */
|
|
84
|
+
currentMessages() {
|
|
85
|
+
return this.messages;
|
|
86
|
+
}
|
|
87
|
+
/** Fires after messages are rebuilt; the reactive subclass syncs signals. */
|
|
88
|
+
onLocaleChanged() {
|
|
89
|
+
// no-op in the framework-agnostic base
|
|
90
|
+
}
|
|
91
|
+
buildMessages(locale) {
|
|
92
|
+
const sources = [];
|
|
93
|
+
for (const map of this.localeMaps) {
|
|
94
|
+
if (map[locale]) {
|
|
95
|
+
sources.push(map[locale]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
for (const source of this.staticSources) {
|
|
99
|
+
sources.push(source);
|
|
100
|
+
}
|
|
101
|
+
return mergeMessages(...sources);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.I18nService = I18nService;
|
|
105
|
+
// ── internals ────────────────────────────────────────────────────────────
|
|
106
|
+
function getByPath(obj, path) {
|
|
107
|
+
let current = obj;
|
|
108
|
+
for (const key of path.split('.')) {
|
|
109
|
+
if (current === null ||
|
|
110
|
+
current === undefined ||
|
|
111
|
+
typeof current !== 'object') {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
current = current[key];
|
|
115
|
+
}
|
|
116
|
+
return current;
|
|
117
|
+
}
|
|
118
|
+
function interpolateDeep(value, vars) {
|
|
119
|
+
if (typeof value === 'string') {
|
|
120
|
+
return interpolate(value, vars);
|
|
121
|
+
}
|
|
122
|
+
if (Array.isArray(value)) {
|
|
123
|
+
return value.map((entry) => interpolateDeep(entry, vars));
|
|
124
|
+
}
|
|
125
|
+
if (value !== null && typeof value === 'object') {
|
|
126
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
|
|
127
|
+
key,
|
|
128
|
+
interpolateDeep(entry, vars),
|
|
129
|
+
]));
|
|
130
|
+
}
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
function interpolate(str, vars) {
|
|
134
|
+
// An unknown placeholder is left as written rather than blanked: `{{name}}`
|
|
135
|
+
// on the page says which variable was not passed.
|
|
136
|
+
return applyPlurals(str, vars).replace(/\{\{(\w+)}}/g, (match, key) => (key in vars ? String(vars[key]) : match));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* A minimal ICU plural subset: `{count, plural, =0 {none} other {# items}}`.
|
|
140
|
+
*
|
|
141
|
+
* Exact selectors plus `other`, with no nested braces in branch bodies. Enough
|
|
142
|
+
* for the counts copy actually contains, without pulling in a full ICU parser.
|
|
143
|
+
*/
|
|
144
|
+
function applyPlurals(str, vars) {
|
|
145
|
+
const PLURAL = /\{(\w+),\s*plural,\s*((?:[^{}]+|\{[^{}]*\})*)\}/g;
|
|
146
|
+
return str.replace(PLURAL, (match, name, cases) => {
|
|
147
|
+
if (!(name in vars)) {
|
|
148
|
+
return match;
|
|
149
|
+
}
|
|
150
|
+
const count = Number(vars[name]);
|
|
151
|
+
const exact = new RegExp(`=${count}\\s*\\{([^{}]*)\\}`).exec(cases);
|
|
152
|
+
if (exact) {
|
|
153
|
+
return exact[1].replace(/#/g, String(count));
|
|
154
|
+
}
|
|
155
|
+
const other = /other\s*\{([^{}]*)\}/.exec(cases);
|
|
156
|
+
return other ? other[1].replace(/#/g, String(count)) : match;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function isObject(value) {
|
|
160
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
161
|
+
}
|
|
162
|
+
function deepMerge(target, source) {
|
|
163
|
+
const result = Object.assign({}, target);
|
|
164
|
+
for (const key of Object.keys(source)) {
|
|
165
|
+
result[key] =
|
|
166
|
+
isObject(result[key]) && isObject(source[key])
|
|
167
|
+
? deepMerge(result[key], source[key])
|
|
168
|
+
: source[key];
|
|
169
|
+
}
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
function mergeMessages(...sources) {
|
|
173
|
+
let merged = {};
|
|
174
|
+
for (const source of sources) {
|
|
175
|
+
merged = deepMerge(merged, source);
|
|
176
|
+
}
|
|
177
|
+
return merged;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../../../../packages/utils/src/lib/i18n/i18n.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;GASG;AACH,MAAa,WAAW;IAOtB,YAAY,MAKX;;QACC,IAAI,CAAC,mBAAmB,GAAG,MAAA,MAAM,CAAC,gBAAgB,mCAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC;QAE1C,yEAAyE;QACzE,4EAA4E;QAC5E,kDAAkD;QAClD,IAAI,CAAC,WAAW,GAAG,MAAA,MAAA,MAAM,CAAC,MAAM,mCAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAe,EAAE,IAAsC;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAa,CAAC,CAAC;QAE/D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,GAAa,CAAC;QACvB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CACJ,IAAY,EACZ,IAAsC;QAEtC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,KAAsB,CAAC;QAChC,CAAC;QAED,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAM,CAAC;IAC3C,CAAC;IAED,kEAAkE;IAClE,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,GAAc;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,iEAAiE;IACvD,eAAe;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,6EAA6E;IACnE,eAAe;QACvB,uCAAuC;IACzC,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,MAAM,OAAO,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;IACnC,CAAC;CACF;AA1HD,kCA0HC;AAED,4EAA4E;AAE5E,SAAS,SAAS,CAAC,GAAa,EAAE,IAAY;IAC5C,IAAI,OAAO,GAAY,GAAG,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,IACE,OAAO,KAAK,IAAI;YAChB,OAAO,KAAK,SAAS;YACrB,OAAO,OAAO,KAAK,QAAQ,EAC3B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,GAAI,OAAoB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CACtB,KAAc,EACd,IAAqC;IAErC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC1C,GAAG;YACH,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;SAC7B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,GAAW,EACX,IAAqC;IAErC,4EAA4E;IAC5E,kDAAkD;IAClD,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CACpC,cAAc,EACd,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAClE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,GAAW,EACX,IAAqC;IAErC,MAAM,MAAM,GAAG,kDAAkD,CAAC;IAElE,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;QAChE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,MAAgB,EAAE,MAAgB;IACnD,MAAM,MAAM,qBAAkB,MAAM,CAAE,CAAC;IAEvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC;YACT,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAa,EAAE,MAAM,CAAC,GAAG,CAAa,CAAC;gBAC7D,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,GAAG,OAAmB;IAC3C,IAAI,MAAM,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|