@asteby/metacore-lib 0.6.0 → 0.7.0

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/dist/format.d.ts CHANGED
@@ -23,4 +23,17 @@ export declare function formatPercentage(value: number, options?: FormatNumberOp
23
23
  * @example truncate('hello world', 5) -> "hello…"
24
24
  */
25
25
  export declare function truncate(value: string, maxLength: number, suffix?: string): string;
26
+ export interface FormatDurationOptions {
27
+ /** BCP-47 locale for the unit labels. Default 'es-MX'. */
28
+ locale?: string;
29
+ /** Text for invalid or negative input. Default '—'. */
30
+ invalid?: string;
31
+ }
32
+ /**
33
+ * Human duration from seconds, at most two units, locale-aware via
34
+ * Intl unit formatting: "45 s", "12 min", "3 h 20 min", "2 días 5 h".
35
+ * @example formatDuration(12000) -> "3 h 20 min" (es-MX)
36
+ * @example formatDuration(12000, { locale: 'en-US' }) -> "3 hr 20 min"
37
+ */
38
+ export declare function formatDuration(seconds: number, options?: FormatDurationOptions): string;
26
39
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,mBAAmB;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAQrF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;CAAO,GACtD,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,CAKvF"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,mBAAmB;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAQrF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;CAAO,GACtD,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,CAKvF;AAED,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAWD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAa3F"}
package/dist/format.js CHANGED
@@ -52,4 +52,37 @@ export function truncate(value, maxLength, suffix = '…') {
52
52
  return '';
53
53
  return value.slice(0, maxLength) + suffix;
54
54
  }
55
+ function unitPart(value, unit, locale) {
56
+ try {
57
+ return new Intl.NumberFormat(locale, { style: 'unit', unit, unitDisplay: 'short', maximumFractionDigits: 0 }).format(value);
58
+ }
59
+ catch {
60
+ const fallback = { second: 's', minute: 'min', hour: 'h', day: 'd' }[unit];
61
+ return `${value} ${fallback}`;
62
+ }
63
+ }
64
+ /**
65
+ * Human duration from seconds, at most two units, locale-aware via
66
+ * Intl unit formatting: "45 s", "12 min", "3 h 20 min", "2 días 5 h".
67
+ * @example formatDuration(12000) -> "3 h 20 min" (es-MX)
68
+ * @example formatDuration(12000, { locale: 'en-US' }) -> "3 hr 20 min"
69
+ */
70
+ export function formatDuration(seconds, options = {}) {
71
+ const { locale = 'es-MX', invalid = '—' } = options;
72
+ if (!Number.isFinite(seconds) || seconds < 0)
73
+ return invalid;
74
+ const s = Math.round(seconds);
75
+ if (s < 60)
76
+ return unitPart(s, 'second', locale);
77
+ const min = Math.round(s / 60);
78
+ if (min < 60)
79
+ return unitPart(min, 'minute', locale);
80
+ const h = Math.floor(min / 60);
81
+ const restMin = min % 60;
82
+ if (h < 24)
83
+ return restMin ? `${unitPart(h, 'hour', locale)} ${unitPart(restMin, 'minute', locale)}` : unitPart(h, 'hour', locale);
84
+ const d = Math.floor(h / 24);
85
+ const restH = h % 24;
86
+ return restH ? `${unitPart(d, 'day', locale)} ${unitPart(restH, 'hour', locale)}` : unitPart(d, 'day', locale);
87
+ }
55
88
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,UAA+B,EAAE;IAC3E,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,UAAqD,EAAE;IAEvD,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAC1G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,qBAAqB;YACrB,qBAAqB;YACrB,GAAG,IAAI;SACR,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC5C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,SAAiB,EAAE,SAAiB,GAAG;IAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxC,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAAA;AAC3C,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,UAA+B,EAAE;IAC3E,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,UAAqD,EAAE;IAEvD,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAC1G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,qBAAqB;YACrB,qBAAqB;YACrB,GAAG,IAAI;SACR,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC5C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,SAAiB,EAAE,SAAiB,GAAG;IAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxC,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAAA;AAC3C,CAAC;AASD,SAAS,QAAQ,CAAC,KAAa,EAAE,IAA0C,EAAE,MAAc;IACzF,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7H,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAC1E,OAAO,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAA;IAC/B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,UAAiC,EAAE;IACjF,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IAC5D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7B,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC9B,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACpD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAG,GAAG,GAAG,EAAE,CAAA;IACxB,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAA;IACpB,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAChH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { formatDate, formatDistance, formatRelative, getAllTimezones, detectTimezone, } from './date';
2
2
  export type { TimezoneInfo } from './date';
3
- export { formatNumber, formatPercentage, truncate } from './format';
4
- export type { FormatNumberOptions } from './format';
3
+ export { formatNumber, formatPercentage, formatDuration, truncate } from './format';
4
+ export type { FormatNumberOptions, FormatDurationOptions } from './format';
5
5
  export { formatCurrency, getCurrencySymbol, parseCurrency, SPANISH_SYMBOLS, } from './currency';
6
6
  export type { CurrencyInfo } from './currency';
7
7
  export { handleServerError } from './errors';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAElE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnF,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAElE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { formatDate, formatDistance, formatRelative, getAllTimezones, detectTimezone, } from './date';
2
- export { formatNumber, formatPercentage, truncate } from './format';
2
+ export { formatNumber, formatPercentage, formatDuration, truncate } from './format';
3
3
  export { formatCurrency, getCurrencySymbol, parseCurrency, SPANISH_SYMBOLS, } from './currency';
4
4
  export { handleServerError } from './errors';
5
5
  export { HtmlResponseError, HTML_RESPONSE_ERROR_CODE, detectHtmlResponse, isHtmlResponseError, looksLikeHtml, isHtmlContentType, htmlTitle, htmlSnippet, newCorrelationId, } from './http-errors';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AAGf,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAG5C,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AAGf,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAG5C,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asteby/metacore-lib",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Metacore utilities — date/currency/number formatting, error handling, cookies",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {