@qcobro/common 1.29.0 → 1.29.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.
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/money.d.ts +16 -0
- package/dist/utils/money.d.ts.map +1 -1
- package/dist/utils/money.js +32 -0
- package/dist/utils/money.js.map +1 -1
- package/package.json +1 -1
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { withErrorHandlingAndValidation } from "./withErrorHandlingAndValidation.js";
|
|
2
2
|
export { renderTemplate, extractTemplateTokens, buildOutreachContext, buildAutopilotContextLines, pickRandomNumber, snakeToCamel, renderWhatsAppTemplate } from "./outreach.js";
|
|
3
3
|
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM, isWithinScheduleWindow, type ScheduleWindow } from "./time.js";
|
|
4
|
-
export { formatMoney, toNumber } from "./money.js";
|
|
4
|
+
export { formatMoney, formatWorkspaceMoney, createMoneyFormatters, toNumber } from "./money.js";
|
|
5
5
|
export { bucketOf, perTickCapacity, type PacingBucket } from "./pacing.js";
|
|
6
6
|
export { normalizePhoneE164 } from "./normalizePhone.js";
|
|
7
7
|
export { createValidatePhoneE164 } from "./validatePhone.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { withErrorHandlingAndValidation } from "./withErrorHandlingAndValidation.js";
|
|
2
2
|
export { renderTemplate, extractTemplateTokens, buildOutreachContext, buildAutopilotContextLines, pickRandomNumber, snakeToCamel, renderWhatsAppTemplate } from "./outreach.js";
|
|
3
3
|
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM, isWithinScheduleWindow } from "./time.js";
|
|
4
|
-
export { formatMoney, toNumber } from "./money.js";
|
|
4
|
+
export { formatMoney, formatWorkspaceMoney, createMoneyFormatters, toNumber } from "./money.js";
|
|
5
5
|
export { bucketOf, perTickCapacity } from "./pacing.js";
|
|
6
6
|
export { normalizePhoneE164 } from "./normalizePhone.js";
|
|
7
7
|
export { createValidatePhoneE164 } from "./validatePhone.js";
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/utils/money.d.ts
CHANGED
|
@@ -12,6 +12,22 @@ import type { Locale } from "../schemas/workspaceSettings.js";
|
|
|
12
12
|
* fractional one reads "…con cincuenta" rather than "…coma cinco".
|
|
13
13
|
*/
|
|
14
14
|
export declare function formatMoney(value: number, locale: Locale): string;
|
|
15
|
+
/**
|
|
16
|
+
* The two currency-styled formatters a workspace needs — one for whole amounts, one for
|
|
17
|
+
* amounts with cents — split so a caller rendering many amounts (a console table, holding
|
|
18
|
+
* these once per render) never reconstructs an Intl.NumberFormat per row. Picking between
|
|
19
|
+
* them by Number.isInteger is what makes cents appear only when present.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createMoneyFormatters(locale: Locale, currency: string): {
|
|
22
|
+
integer: Intl.NumberFormat;
|
|
23
|
+
fractional: Intl.NumberFormat;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Formats an amount as currency for a workspace's locale — RD$32,000 for a round balance,
|
|
27
|
+
* RD$32,000.50 when there are cents. This is the console's money formatter; formatMoney
|
|
28
|
+
* above is for amounts read aloud, which carry no currency symbol.
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatWorkspaceMoney(value: number, locale: Locale, currency: string): string;
|
|
15
31
|
/**
|
|
16
32
|
* Parses a value that may be a number or a locale-formatted amount back to a number, so the
|
|
17
33
|
* template helpers keep working now that money-typed context fields render formatted. Returns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/utils/money.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQjE;AAuBD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB/D"}
|
|
1
|
+
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/utils/money.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAA;CAAE,CAc/D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI5F;AAuBD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB/D"}
|
package/dist/utils/money.js
CHANGED
|
@@ -20,6 +20,38 @@ export function formatMoney(value, locale) {
|
|
|
20
20
|
useGrouping: true
|
|
21
21
|
}).format(value);
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* The two currency-styled formatters a workspace needs — one for whole amounts, one for
|
|
25
|
+
* amounts with cents — split so a caller rendering many amounts (a console table, holding
|
|
26
|
+
* these once per render) never reconstructs an Intl.NumberFormat per row. Picking between
|
|
27
|
+
* them by Number.isInteger is what makes cents appear only when present.
|
|
28
|
+
*/
|
|
29
|
+
export function createMoneyFormatters(locale, currency) {
|
|
30
|
+
const base = { style: "currency", currency };
|
|
31
|
+
return {
|
|
32
|
+
integer: new Intl.NumberFormat(locale, {
|
|
33
|
+
...base,
|
|
34
|
+
minimumFractionDigits: 0,
|
|
35
|
+
maximumFractionDigits: 0
|
|
36
|
+
}),
|
|
37
|
+
fractional: new Intl.NumberFormat(locale, {
|
|
38
|
+
...base,
|
|
39
|
+
minimumFractionDigits: 2,
|
|
40
|
+
maximumFractionDigits: 2
|
|
41
|
+
})
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Formats an amount as currency for a workspace's locale — RD$32,000 for a round balance,
|
|
46
|
+
* RD$32,000.50 when there are cents. This is the console's money formatter; formatMoney
|
|
47
|
+
* above is for amounts read aloud, which carry no currency symbol.
|
|
48
|
+
*/
|
|
49
|
+
export function formatWorkspaceMoney(value, locale, currency) {
|
|
50
|
+
if (!Number.isFinite(value))
|
|
51
|
+
return "";
|
|
52
|
+
const { integer, fractional } = createMoneyFormatters(locale, currency);
|
|
53
|
+
return (Number.isInteger(value) ? integer : fractional).format(value);
|
|
54
|
+
}
|
|
23
55
|
/**
|
|
24
56
|
* The separators a locale uses, discovered from `Intl` rather than assumed — `9.500` is nine
|
|
25
57
|
* thousand five hundred in es-ES and nine-and-a-half in es-DO, so stripping a hardcoded comma
|
package/dist/utils/money.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.js","sourceRoot":"","sources":["../../src/utils/money.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAAc;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACnC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QAC1C,qBAAqB,EAAE,CAAC;QACxB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG;QAC1D,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG;KAC/D,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,MAAc;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAE/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,yFAAyF;IACzF,qFAAqF;IACrF,oCAAoC;IACpC,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC;SACxC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC7B,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,CAAC,OAAO,CAAC;SACd,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"money.js","sourceRoot":"","sources":["../../src/utils/money.ts"],"names":[],"mappings":"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"}
|