@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.
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=date.types.js.map
@@ -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":"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"}