@digitaldefiance/i18n-lib 3.6.0 → 3.6.2
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/README.md +9 -0
- package/package.json +2 -1
- package/src/active-context.d.ts +12 -6
- package/src/active-context.d.ts.map +1 -1
- package/src/component-registry.d.ts +44 -12
- package/src/component-registry.d.ts.map +1 -1
- package/src/component-registry.js +44 -12
- package/src/component-registry.js.map +1 -1
- package/src/context-error-type.d.ts +4 -0
- package/src/context-error-type.d.ts.map +1 -1
- package/src/context-error-type.js +4 -0
- package/src/context-error-type.js.map +1 -1
- package/src/core/component-store.d.ts +69 -1
- package/src/core/component-store.d.ts.map +1 -1
- package/src/core/component-store.js +69 -1
- package/src/core/component-store.js.map +1 -1
- package/src/core/context-manager.d.ts +53 -1
- package/src/core/context-manager.d.ts.map +1 -1
- package/src/core/context-manager.js +52 -4
- package/src/core/context-manager.js.map +1 -1
- package/src/core/enum-registry.d.ts +34 -0
- package/src/core/enum-registry.d.ts.map +1 -1
- package/src/core/enum-registry.js +34 -0
- package/src/core/enum-registry.js.map +1 -1
- package/src/core/i18n-engine.d.ts +186 -0
- package/src/core/i18n-engine.d.ts.map +1 -1
- package/src/core/i18n-engine.js +189 -17
- package/src/core/i18n-engine.js.map +1 -1
- package/src/core/language-registry.d.ts +139 -0
- package/src/core/language-registry.d.ts.map +1 -1
- package/src/core/language-registry.js +138 -0
- package/src/core/language-registry.js.map +1 -1
- package/src/core-i18n.d.ts.map +1 -1
- package/src/core-i18n.js +16 -416
- package/src/core-i18n.js.map +1 -1
- package/src/enum-registry.d.ts +41 -21
- package/src/enum-registry.d.ts.map +1 -1
- package/src/enum-registry.js +44 -24
- package/src/enum-registry.js.map +1 -1
- package/src/errors/context-error.d.ts +11 -0
- package/src/errors/context-error.d.ts.map +1 -1
- package/src/errors/context-error.js +11 -0
- package/src/errors/context-error.js.map +1 -1
- package/src/errors/handleable.d.ts +33 -0
- package/src/errors/handleable.d.ts.map +1 -1
- package/src/errors/handleable.js +33 -0
- package/src/errors/handleable.js.map +1 -1
- package/src/errors/i18n-error.d.ts +107 -0
- package/src/errors/i18n-error.d.ts.map +1 -1
- package/src/errors/i18n-error.js +104 -0
- package/src/errors/i18n-error.js.map +1 -1
- package/src/gender/gender-categories.d.ts +11 -0
- package/src/gender/gender-categories.d.ts.map +1 -1
- package/src/gender/gender-categories.js +5 -0
- package/src/gender/gender-categories.js.map +1 -1
- package/src/gender/gender-resolver.d.ts +6 -1
- package/src/gender/gender-resolver.d.ts.map +1 -1
- package/src/gender/gender-resolver.js +6 -1
- package/src/gender/gender-resolver.js.map +1 -1
- package/src/index.d.ts +2 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/interfaces/component-config.interface.d.ts +6 -0
- package/src/interfaces/component-config.interface.d.ts.map +1 -1
- package/src/interfaces/engine-config.interface.d.ts +9 -0
- package/src/interfaces/engine-config.interface.d.ts.map +1 -1
- package/src/interfaces/handleable-error-options.d.ts +7 -0
- package/src/interfaces/handleable-error-options.d.ts.map +1 -1
- package/src/interfaces/handleable.d.ts +15 -0
- package/src/interfaces/handleable.d.ts.map +1 -1
- package/src/interfaces/i18n-engine.interface.d.ts +20 -0
- package/src/interfaces/i18n-engine.interface.d.ts.map +1 -1
- package/src/interfaces/language-definition.interface.d.ts +7 -0
- package/src/interfaces/language-definition.interface.d.ts.map +1 -1
- package/src/interfaces/translation-options.interface.d.ts +6 -0
- package/src/interfaces/translation-options.interface.d.ts.map +1 -1
- package/src/interfaces/validation-result.interface.d.ts +10 -0
- package/src/interfaces/validation-result.interface.d.ts.map +1 -1
- package/src/registry-error-type.d.ts +7 -0
- package/src/registry-error-type.d.ts.map +1 -1
- package/src/registry-error-type.js +7 -0
- package/src/registry-error-type.js.map +1 -1
- package/src/strings/de.d.ts +3 -0
- package/src/strings/de.d.ts.map +1 -0
- package/src/strings/de.js +57 -0
- package/src/strings/de.js.map +1 -0
- package/src/strings/en-GB.d.ts +3 -0
- package/src/strings/en-GB.d.ts.map +1 -0
- package/src/strings/en-GB.js +57 -0
- package/src/strings/en-GB.js.map +1 -0
- package/src/strings/en-US.d.ts +3 -0
- package/src/strings/en-US.d.ts.map +1 -0
- package/src/strings/en-US.js +57 -0
- package/src/strings/en-US.js.map +1 -0
- package/src/strings/es.d.ts +3 -0
- package/src/strings/es.d.ts.map +1 -0
- package/src/strings/es.js +57 -0
- package/src/strings/es.js.map +1 -0
- package/src/strings/fr.d.ts +3 -0
- package/src/strings/fr.d.ts.map +1 -0
- package/src/strings/fr.js +57 -0
- package/src/strings/fr.js.map +1 -0
- package/src/strings/ja.d.ts +3 -0
- package/src/strings/ja.d.ts.map +1 -0
- package/src/strings/ja.js +57 -0
- package/src/strings/ja.js.map +1 -0
- package/src/strings/uk.d.ts +3 -0
- package/src/strings/uk.d.ts.map +1 -0
- package/src/strings/uk.js +57 -0
- package/src/strings/uk.js.map +1 -0
- package/src/strings/zh-CN.d.ts +3 -0
- package/src/strings/zh-CN.d.ts.map +1 -0
- package/src/strings/zh-CN.js +57 -0
- package/src/strings/zh-CN.js.map +1 -0
- package/src/types/plural-types.d.ts +10 -3
- package/src/types/plural-types.d.ts.map +1 -1
- package/src/types/plural-types.js +8 -2
- package/src/types/plural-types.js.map +1 -1
- package/src/utils/currency.d.ts +61 -0
- package/src/utils/currency.d.ts.map +1 -1
- package/src/utils/currency.js +38 -0
- package/src/utils/currency.js.map +1 -1
- package/src/utils/html-escape.d.ts +14 -0
- package/src/utils/html-escape.d.ts.map +1 -1
- package/src/utils/html-escape.js +20 -0
- package/src/utils/html-escape.js.map +1 -1
- package/src/utils/lru-cache.d.ts +29 -0
- package/src/utils/lru-cache.d.ts.map +1 -1
- package/src/utils/lru-cache.js +29 -0
- package/src/utils/lru-cache.js.map +1 -1
- package/src/utils/plural-helpers.d.ts +16 -0
- package/src/utils/plural-helpers.d.ts.map +1 -1
- package/src/utils/plural-helpers.js +16 -0
- package/src/utils/plural-helpers.js.map +1 -1
- package/src/utils/safe-object.d.ts +30 -0
- package/src/utils/safe-object.d.ts.map +1 -1
- package/src/utils/safe-object.js +33 -0
- package/src/utils/safe-object.js.map +1 -1
- package/src/utils/string-utils.d.ts +19 -0
- package/src/utils/string-utils.d.ts.map +1 -1
- package/src/utils/string-utils.js +18 -1
- package/src/utils/string-utils.js.map +1 -1
- package/src/utils/timezone.d.ts +36 -0
- package/src/utils/timezone.d.ts.map +1 -1
- package/src/utils/timezone.js +36 -0
- package/src/utils/timezone.js.map +1 -1
- package/src/utils/validation.d.ts +25 -0
- package/src/utils/validation.d.ts.map +1 -1
- package/src/utils/validation.js +25 -0
- package/src/utils/validation.js.map +1 -1
- package/src/validation/plural-validator.d.ts +25 -2
- package/src/validation/plural-validator.d.ts.map +1 -1
- package/src/validation/plural-validator.js +22 -4
- package/src/validation/plural-validator.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh-CN.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/strings/zh-CN.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,22 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { PluralCategory } from '../pluralization/plural-categories';
|
|
5
5
|
/**
|
|
6
|
-
* A string value that can be either a simple string or an object with plural forms
|
|
6
|
+
* A string value that can be either a simple string or an object with plural forms.
|
|
7
|
+
* When using plural forms, the object should have keys matching PluralCategory values.
|
|
7
8
|
*/
|
|
8
9
|
export type PluralString = string | Partial<Record<PluralCategory, string>>;
|
|
9
10
|
/**
|
|
10
|
-
* Check if a value is a plural string object (not a simple string)
|
|
11
|
+
* Check if a value is a plural string object (not a simple string).
|
|
12
|
+
* @param value - The value to check
|
|
13
|
+
* @returns True if the value is a plural string object, false if it's a simple string
|
|
11
14
|
*/
|
|
12
15
|
export declare function isPluralString(value: any): value is Record<PluralCategory, string>;
|
|
13
16
|
/**
|
|
14
|
-
* Get the appropriate plural form from a PluralString
|
|
17
|
+
* Get the appropriate plural form from a PluralString based on the category.
|
|
18
|
+
* Falls back to 'other' if the exact category is not found, then to the first available form.
|
|
19
|
+
* @param value - The PluralString to resolve (either a string or plural forms object)
|
|
20
|
+
* @param category - The plural category to retrieve
|
|
21
|
+
* @returns The resolved string, or undefined if no suitable form is found
|
|
15
22
|
*/
|
|
16
23
|
export declare function resolvePluralString(value: PluralString, category: PluralCategory): string | undefined;
|
|
17
24
|
//# sourceMappingURL=plural-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plural-types.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/types/plural-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE
|
|
1
|
+
{"version":3,"file":"plural-types.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/types/plural-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAElF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,cAAc,GACvB,MAAM,GAAG,SAAS,CAkBpB"}
|
|
@@ -6,13 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.isPluralString = isPluralString;
|
|
7
7
|
exports.resolvePluralString = resolvePluralString;
|
|
8
8
|
/**
|
|
9
|
-
* Check if a value is a plural string object (not a simple string)
|
|
9
|
+
* Check if a value is a plural string object (not a simple string).
|
|
10
|
+
* @param value - The value to check
|
|
11
|
+
* @returns True if the value is a plural string object, false if it's a simple string
|
|
10
12
|
*/
|
|
11
13
|
function isPluralString(value) {
|
|
12
14
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
|
-
* Get the appropriate plural form from a PluralString
|
|
17
|
+
* Get the appropriate plural form from a PluralString based on the category.
|
|
18
|
+
* Falls back to 'other' if the exact category is not found, then to the first available form.
|
|
19
|
+
* @param value - The PluralString to resolve (either a string or plural forms object)
|
|
20
|
+
* @param category - The plural category to retrieve
|
|
21
|
+
* @returns The resolved string, or undefined if no suitable form is found
|
|
16
22
|
*/
|
|
17
23
|
function resolvePluralString(value, category) {
|
|
18
24
|
if (typeof value === 'string') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plural-types.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/types/plural-types.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"plural-types.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/types/plural-types.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAeH,wCAEC;AASD,kDAqBC;AArCD;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,KAAmB,EACnB,QAAwB;IAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC"}
|
package/src/utils/currency.d.ts
CHANGED
|
@@ -1,20 +1,81 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Currency utilities (v2)
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Position of the currency symbol relative to the amount.
|
|
6
|
+
*/
|
|
4
7
|
export type CurrencyPosition = 'prefix' | 'postfix' | 'infix';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for formatting currency values in a specific locale.
|
|
10
|
+
*/
|
|
5
11
|
export interface CurrencyFormat {
|
|
12
|
+
/** The currency symbol (e.g., "$", "€") */
|
|
6
13
|
symbol: string;
|
|
14
|
+
/** Position of the symbol relative to the amount */
|
|
7
15
|
position: CurrencyPosition;
|
|
16
|
+
/** Character used to separate thousands (e.g., ",") */
|
|
8
17
|
groupSeparator: string;
|
|
18
|
+
/** Character used to separate decimal places (e.g., ".") */
|
|
9
19
|
decimalSeparator: string;
|
|
10
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Detailed information about a currency.
|
|
23
|
+
*/
|
|
24
|
+
export interface CurrencyData {
|
|
25
|
+
/** ISO 4217 currency code (e.g., "USD") */
|
|
26
|
+
code: string;
|
|
27
|
+
/** Numeric currency code */
|
|
28
|
+
number: string;
|
|
29
|
+
/** Number of decimal digits */
|
|
30
|
+
digits: number;
|
|
31
|
+
/** Currency name */
|
|
32
|
+
currency: string;
|
|
33
|
+
/** Countries using this currency */
|
|
34
|
+
countries: string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Represents a valid ISO 4217 currency code with validation.
|
|
38
|
+
*/
|
|
11
39
|
export declare class CurrencyCode {
|
|
12
40
|
private _value;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new CurrencyCode instance.
|
|
43
|
+
* @param value - The ISO 4217 currency code (defaults to 'USD')
|
|
44
|
+
* @throws {TranslatableError} If the currency code is invalid
|
|
45
|
+
*/
|
|
13
46
|
constructor(value?: string);
|
|
47
|
+
/**
|
|
48
|
+
* Gets the currency code value.
|
|
49
|
+
* @returns The ISO 4217 currency code
|
|
50
|
+
*/
|
|
14
51
|
get value(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Gets the currency code (alias for value).
|
|
54
|
+
* @returns The ISO 4217 currency code
|
|
55
|
+
*/
|
|
15
56
|
get code(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Checks if a currency code is valid according to ISO 4217.
|
|
59
|
+
* @param code - The currency code to validate
|
|
60
|
+
* @returns True if the code is valid, false otherwise
|
|
61
|
+
*/
|
|
16
62
|
static isValid(code: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Gets all valid ISO 4217 currency codes.
|
|
65
|
+
* @returns Array of currency codes
|
|
66
|
+
*/
|
|
17
67
|
static getAll(): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Gets detailed information for all currencies.
|
|
70
|
+
* @returns Array of currency data objects
|
|
71
|
+
*/
|
|
72
|
+
static getAllData(): CurrencyData[];
|
|
18
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Gets the currency formatting rules for a specific locale and currency.
|
|
76
|
+
* @param locale - The locale code (e.g., 'en-US', 'fr-FR')
|
|
77
|
+
* @param currencyCode - The ISO 4217 currency code
|
|
78
|
+
* @returns Currency format configuration including symbol, position, and separators
|
|
79
|
+
*/
|
|
19
80
|
export declare function getCurrencyFormat(locale: string, currencyCode: string): CurrencyFormat;
|
|
20
81
|
//# sourceMappingURL=currency.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/currency.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/currency.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;OAIG;gBACS,KAAK,GAAE,MAAc;IAWjC;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;OAGG;IACH,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;IAIzB;;;OAGG;IACH,MAAM,CAAC,UAAU,IAAI,YAAY,EAAE;CAGpC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,cAAc,CA6BtF"}
|
package/src/utils/currency.js
CHANGED
|
@@ -8,28 +8,66 @@ exports.getCurrencyFormat = getCurrencyFormat;
|
|
|
8
8
|
const currency_codes_1 = require("currency-codes");
|
|
9
9
|
const translatable_1 = require("../errors/translatable");
|
|
10
10
|
const core_string_key_1 = require("../core-string-key");
|
|
11
|
+
/**
|
|
12
|
+
* Represents a valid ISO 4217 currency code with validation.
|
|
13
|
+
*/
|
|
11
14
|
class CurrencyCode {
|
|
12
15
|
_value;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new CurrencyCode instance.
|
|
18
|
+
* @param value - The ISO 4217 currency code (defaults to 'USD')
|
|
19
|
+
* @throws {TranslatableError} If the currency code is invalid
|
|
20
|
+
*/
|
|
13
21
|
constructor(value = 'USD') {
|
|
14
22
|
if (!CurrencyCode.isValid(value)) {
|
|
15
23
|
throw new translatable_1.TranslatableError('core', core_string_key_1.CoreStringKey.Error_InvalidCurrencyCodeTemplate, { value });
|
|
16
24
|
}
|
|
17
25
|
this._value = value;
|
|
18
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Gets the currency code value.
|
|
29
|
+
* @returns The ISO 4217 currency code
|
|
30
|
+
*/
|
|
19
31
|
get value() {
|
|
20
32
|
return this._value;
|
|
21
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Gets the currency code (alias for value).
|
|
36
|
+
* @returns The ISO 4217 currency code
|
|
37
|
+
*/
|
|
22
38
|
get code() {
|
|
23
39
|
return this._value;
|
|
24
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Checks if a currency code is valid according to ISO 4217.
|
|
43
|
+
* @param code - The currency code to validate
|
|
44
|
+
* @returns True if the code is valid, false otherwise
|
|
45
|
+
*/
|
|
25
46
|
static isValid(code) {
|
|
26
47
|
return (0, currency_codes_1.codes)().includes(code);
|
|
27
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Gets all valid ISO 4217 currency codes.
|
|
51
|
+
* @returns Array of currency codes
|
|
52
|
+
*/
|
|
28
53
|
static getAll() {
|
|
29
54
|
return (0, currency_codes_1.codes)();
|
|
30
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets detailed information for all currencies.
|
|
58
|
+
* @returns Array of currency data objects
|
|
59
|
+
*/
|
|
60
|
+
static getAllData() {
|
|
61
|
+
return currency_codes_1.data;
|
|
62
|
+
}
|
|
31
63
|
}
|
|
32
64
|
exports.CurrencyCode = CurrencyCode;
|
|
65
|
+
/**
|
|
66
|
+
* Gets the currency formatting rules for a specific locale and currency.
|
|
67
|
+
* @param locale - The locale code (e.g., 'en-US', 'fr-FR')
|
|
68
|
+
* @param currencyCode - The ISO 4217 currency code
|
|
69
|
+
* @returns Currency format configuration including symbol, position, and separators
|
|
70
|
+
*/
|
|
33
71
|
function getCurrencyFormat(locale, currencyCode) {
|
|
34
72
|
const formatter = new Intl.NumberFormat(locale, {
|
|
35
73
|
style: 'currency',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/currency.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/currency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTML escaping utilities for XSS prevention
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Escapes HTML special characters to prevent XSS attacks.
|
|
6
|
+
* @param str - The string to escape
|
|
7
|
+
* @returns The escaped string
|
|
8
|
+
*/
|
|
4
9
|
export declare function escapeHtml(str: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Safely converts a value to a string, optionally escaping HTML.
|
|
12
|
+
* Rejects objects to prevent toString exploits.
|
|
13
|
+
* @param value - The value to stringify
|
|
14
|
+
* @param options - Options including whether to escape HTML
|
|
15
|
+
* @param options.escapeHtml - If true, HTML-escapes the result
|
|
16
|
+
* @returns The stringified value
|
|
17
|
+
* @throws {Error} If the value is an object (to prevent exploits)
|
|
18
|
+
*/
|
|
5
19
|
export declare function safeStringify(value: any, options?: {
|
|
6
20
|
escapeHtml?: boolean;
|
|
7
21
|
}): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-escape.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/html-escape.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"html-escape.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/html-escape.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAepF"}
|
package/src/utils/html-escape.js
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.escapeHtml = escapeHtml;
|
|
7
7
|
exports.safeStringify = safeStringify;
|
|
8
|
+
/**
|
|
9
|
+
* Map of HTML characters to their escaped equivalents.
|
|
10
|
+
*/
|
|
8
11
|
const HTML_ESCAPES = {
|
|
9
12
|
'&': '&',
|
|
10
13
|
'<': '<',
|
|
@@ -13,10 +16,27 @@ const HTML_ESCAPES = {
|
|
|
13
16
|
"'": ''',
|
|
14
17
|
'/': '/',
|
|
15
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Regular expression to match characters that need HTML escaping.
|
|
21
|
+
*/
|
|
16
22
|
const HTML_ESCAPE_REGEX = /[&<>"'/]/g;
|
|
23
|
+
/**
|
|
24
|
+
* Escapes HTML special characters to prevent XSS attacks.
|
|
25
|
+
* @param str - The string to escape
|
|
26
|
+
* @returns The escaped string
|
|
27
|
+
*/
|
|
17
28
|
function escapeHtml(str) {
|
|
18
29
|
return str.replace(HTML_ESCAPE_REGEX, char => HTML_ESCAPES[char]);
|
|
19
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Safely converts a value to a string, optionally escaping HTML.
|
|
33
|
+
* Rejects objects to prevent toString exploits.
|
|
34
|
+
* @param value - The value to stringify
|
|
35
|
+
* @param options - Options including whether to escape HTML
|
|
36
|
+
* @param options.escapeHtml - If true, HTML-escapes the result
|
|
37
|
+
* @returns The stringified value
|
|
38
|
+
* @throws {Error} If the value is an object (to prevent exploits)
|
|
39
|
+
*/
|
|
20
40
|
function safeStringify(value, options) {
|
|
21
41
|
if (value === null || value === undefined) {
|
|
22
42
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-escape.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/html-escape.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"html-escape.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/html-escape.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAwBH,gCAEC;AAWD,sCAeC;AAlDD;;GAEG;AACH,MAAM,YAAY,GAA2B;IAC3C,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC;;;;GAIG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAC,KAAU,EAAE,OAAkC;IAC1E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,8CAA8C;IAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC"}
|
package/src/utils/lru-cache.d.ts
CHANGED
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Simple LRU Cache implementation for security
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Least Recently Used (LRU) cache implementation.
|
|
6
|
+
* Automatically evicts the oldest entries when the cache reaches maximum size.
|
|
7
|
+
* @template K - The type of cache keys
|
|
8
|
+
* @template V - The type of cached values
|
|
9
|
+
*/
|
|
4
10
|
export declare class LRUCache<K, V> {
|
|
5
11
|
private cache;
|
|
6
12
|
private readonly maxSize;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new LRUCache instance.
|
|
15
|
+
* @param maxSize - Maximum number of entries to store (default: 1000)
|
|
16
|
+
*/
|
|
7
17
|
constructor(maxSize?: number);
|
|
18
|
+
/**
|
|
19
|
+
* Retrieves a value from the cache by key.
|
|
20
|
+
* Accessing an item moves it to the end (marks it as most recently used).
|
|
21
|
+
* @param key - The key to look up
|
|
22
|
+
* @returns The cached value, or undefined if not found
|
|
23
|
+
*/
|
|
8
24
|
get(key: K): V | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Adds or updates a value in the cache.
|
|
27
|
+
* If the cache is at capacity, the oldest entry is removed.
|
|
28
|
+
* @param key - The key to store
|
|
29
|
+
* @param value - The value to cache
|
|
30
|
+
*/
|
|
9
31
|
set(key: K, value: V): void;
|
|
32
|
+
/**
|
|
33
|
+
* Removes all entries from the cache.
|
|
34
|
+
*/
|
|
10
35
|
clear(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Gets the current number of entries in the cache.
|
|
38
|
+
* @returns The number of cached entries
|
|
39
|
+
*/
|
|
11
40
|
size(): number;
|
|
12
41
|
}
|
|
13
42
|
//# sourceMappingURL=lru-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;OAGG;gBACS,OAAO,GAAE,MAAa;IAIlC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAiB3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,MAAM;CAGf"}
|
package/src/utils/lru-cache.js
CHANGED
|
@@ -4,12 +4,28 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LRUCache = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Least Recently Used (LRU) cache implementation.
|
|
9
|
+
* Automatically evicts the oldest entries when the cache reaches maximum size.
|
|
10
|
+
* @template K - The type of cache keys
|
|
11
|
+
* @template V - The type of cached values
|
|
12
|
+
*/
|
|
7
13
|
class LRUCache {
|
|
8
14
|
cache = new Map();
|
|
9
15
|
maxSize;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new LRUCache instance.
|
|
18
|
+
* @param maxSize - Maximum number of entries to store (default: 1000)
|
|
19
|
+
*/
|
|
10
20
|
constructor(maxSize = 1000) {
|
|
11
21
|
this.maxSize = maxSize;
|
|
12
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves a value from the cache by key.
|
|
25
|
+
* Accessing an item moves it to the end (marks it as most recently used).
|
|
26
|
+
* @param key - The key to look up
|
|
27
|
+
* @returns The cached value, or undefined if not found
|
|
28
|
+
*/
|
|
13
29
|
get(key) {
|
|
14
30
|
const value = this.cache.get(key);
|
|
15
31
|
if (value !== undefined) {
|
|
@@ -19,6 +35,12 @@ class LRUCache {
|
|
|
19
35
|
}
|
|
20
36
|
return value;
|
|
21
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Adds or updates a value in the cache.
|
|
40
|
+
* If the cache is at capacity, the oldest entry is removed.
|
|
41
|
+
* @param key - The key to store
|
|
42
|
+
* @param value - The value to cache
|
|
43
|
+
*/
|
|
22
44
|
set(key, value) {
|
|
23
45
|
// Remove if exists to update position
|
|
24
46
|
if (this.cache.has(key)) {
|
|
@@ -33,9 +55,16 @@ class LRUCache {
|
|
|
33
55
|
}
|
|
34
56
|
this.cache.set(key, value);
|
|
35
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Removes all entries from the cache.
|
|
60
|
+
*/
|
|
36
61
|
clear() {
|
|
37
62
|
this.cache.clear();
|
|
38
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Gets the current number of entries in the cache.
|
|
66
|
+
* @returns The number of cached entries
|
|
67
|
+
*/
|
|
39
68
|
size() {
|
|
40
69
|
return this.cache.size;
|
|
41
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/lru-cache.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,MAAa,QAAQ;IACX,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;IACf,OAAO,CAAS;IAEjC,YAAY,UAAkB,IAAI;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,mCAAmC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,sCAAsC;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/lru-cache.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;;;;GAKG;AACH,MAAa,QAAQ;IACX,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;IACf,OAAO,CAAS;IAEjC;;;OAGG;IACH,YAAY,UAAkB,IAAI;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,mCAAmC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,sCAAsC;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAjED,4BAiEC"}
|
|
@@ -4,7 +4,23 @@
|
|
|
4
4
|
import { PluralCategory } from '../pluralization/plural-categories';
|
|
5
5
|
import { PluralString } from '../types/plural-types';
|
|
6
6
|
import { GenderCategory, GenderedString } from '../gender/gender-categories';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a PluralString from a partial record of plural forms.
|
|
9
|
+
* @param forms - Object mapping plural categories to their string forms
|
|
10
|
+
* @returns A PluralString that can be used in translations
|
|
11
|
+
*/
|
|
7
12
|
export declare function createPluralString(forms: Partial<Record<PluralCategory, string>>): PluralString;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a GenderedString from a partial record of gender forms.
|
|
15
|
+
* @param forms - Object mapping gender categories to their string forms
|
|
16
|
+
* @returns A GenderedString that can be used in translations
|
|
17
|
+
*/
|
|
8
18
|
export declare function createGenderedString(forms: Partial<Record<GenderCategory, string>>): GenderedString;
|
|
19
|
+
/**
|
|
20
|
+
* Gets the required plural forms for a given language.
|
|
21
|
+
* Different languages have different plural rules and require different forms.
|
|
22
|
+
* @param language - The language code
|
|
23
|
+
* @returns Array of plural categories required for the language
|
|
24
|
+
*/
|
|
9
25
|
export declare function getRequiredPluralForms(language: string): PluralCategory[];
|
|
10
26
|
//# sourceMappingURL=plural-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plural-helpers.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/plural-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAE/F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,cAAc,CAEnG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAEzE"}
|
|
1
|
+
{"version":3,"file":"plural-helpers.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/plural-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAE/F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,cAAc,CAEnG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAEzE"}
|
|
@@ -7,12 +7,28 @@ exports.createPluralString = createPluralString;
|
|
|
7
7
|
exports.createGenderedString = createGenderedString;
|
|
8
8
|
exports.getRequiredPluralForms = getRequiredPluralForms;
|
|
9
9
|
const language_plural_map_1 = require("../pluralization/language-plural-map");
|
|
10
|
+
/**
|
|
11
|
+
* Creates a PluralString from a partial record of plural forms.
|
|
12
|
+
* @param forms - Object mapping plural categories to their string forms
|
|
13
|
+
* @returns A PluralString that can be used in translations
|
|
14
|
+
*/
|
|
10
15
|
function createPluralString(forms) {
|
|
11
16
|
return forms;
|
|
12
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a GenderedString from a partial record of gender forms.
|
|
20
|
+
* @param forms - Object mapping gender categories to their string forms
|
|
21
|
+
* @returns A GenderedString that can be used in translations
|
|
22
|
+
*/
|
|
13
23
|
function createGenderedString(forms) {
|
|
14
24
|
return forms;
|
|
15
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets the required plural forms for a given language.
|
|
28
|
+
* Different languages have different plural rules and require different forms.
|
|
29
|
+
* @param language - The language code
|
|
30
|
+
* @returns Array of plural categories required for the language
|
|
31
|
+
*/
|
|
16
32
|
function getRequiredPluralForms(language) {
|
|
17
33
|
return (0, language_plural_map_1.getRequiredPluralForms)(language);
|
|
18
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plural-helpers.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/plural-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"plural-helpers.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/plural-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAYH,gDAEC;AAOD,oDAEC;AAQD,wDAEC;AA5BD,8EAAyG;AAEzG;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAA8C;IAC/E,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,KAA8C;IACjF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,IAAA,4CAAuB,EAAC,QAAQ,CAAqB,CAAC;AAC/D,CAAC"}
|
|
@@ -1,9 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Safe object utilities to prevent prototype pollution
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Creates a safe object without a prototype chain.
|
|
6
|
+
* This prevents prototype pollution attacks.
|
|
7
|
+
* @template T - The type of values in the object
|
|
8
|
+
* @returns A new object without a prototype
|
|
9
|
+
*/
|
|
4
10
|
export declare function createSafeObject<T = any>(): Record<string, T>;
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a key is in the list of dangerous keys that could enable prototype pollution.
|
|
13
|
+
* @param key - The key to check
|
|
14
|
+
* @returns True if the key is dangerous, false otherwise
|
|
15
|
+
*/
|
|
5
16
|
export declare function isDangerousKey(key: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Safely assigns properties from source objects to a target object.
|
|
19
|
+
* Filters out dangerous keys to prevent prototype pollution.
|
|
20
|
+
* @template T - The type of the target object
|
|
21
|
+
* @param target - The target object to assign to
|
|
22
|
+
* @param sources - One or more source objects to copy properties from
|
|
23
|
+
* @returns The target object with properties assigned
|
|
24
|
+
*/
|
|
6
25
|
export declare function safeAssign<T extends Record<string, any>>(target: T, ...sources: Array<Record<string, any> | undefined>): T;
|
|
26
|
+
/**
|
|
27
|
+
* Gets key-value pairs from an object, filtering out dangerous keys.
|
|
28
|
+
* @template T - The type of values in the object
|
|
29
|
+
* @param obj - The object to get entries from
|
|
30
|
+
* @returns Array of [key, value] pairs, excluding dangerous keys
|
|
31
|
+
*/
|
|
7
32
|
export declare function safeObjectEntries<T>(obj: Record<string, T>): Array<[string, T]>;
|
|
33
|
+
/**
|
|
34
|
+
* Validates that an object does not contain dangerous keys.
|
|
35
|
+
* @param obj - The object to validate
|
|
36
|
+
* @throws {Error} If a dangerous key is detected
|
|
37
|
+
*/
|
|
8
38
|
export declare function validateObjectKeys(obj: Record<string, any>): void;
|
|
9
39
|
//# sourceMappingURL=safe-object.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-object.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/safe-object.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"safe-object.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/safe-object.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtD,MAAM,EAAE,CAAC,EACT,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,GACjD,CAAC,CAWH;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAUjE"}
|
package/src/utils/safe-object.js
CHANGED
|
@@ -8,13 +8,35 @@ exports.isDangerousKey = isDangerousKey;
|
|
|
8
8
|
exports.safeAssign = safeAssign;
|
|
9
9
|
exports.safeObjectEntries = safeObjectEntries;
|
|
10
10
|
exports.validateObjectKeys = validateObjectKeys;
|
|
11
|
+
/**
|
|
12
|
+
* List of dangerous keys that should never be set on objects to prevent prototype pollution.
|
|
13
|
+
*/
|
|
11
14
|
const DANGEROUS_KEYS = ['__proto__', 'constructor', 'prototype'];
|
|
15
|
+
/**
|
|
16
|
+
* Creates a safe object without a prototype chain.
|
|
17
|
+
* This prevents prototype pollution attacks.
|
|
18
|
+
* @template T - The type of values in the object
|
|
19
|
+
* @returns A new object without a prototype
|
|
20
|
+
*/
|
|
12
21
|
function createSafeObject() {
|
|
13
22
|
return Object.create(null);
|
|
14
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Checks if a key is in the list of dangerous keys that could enable prototype pollution.
|
|
26
|
+
* @param key - The key to check
|
|
27
|
+
* @returns True if the key is dangerous, false otherwise
|
|
28
|
+
*/
|
|
15
29
|
function isDangerousKey(key) {
|
|
16
30
|
return DANGEROUS_KEYS.includes(key);
|
|
17
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Safely assigns properties from source objects to a target object.
|
|
34
|
+
* Filters out dangerous keys to prevent prototype pollution.
|
|
35
|
+
* @template T - The type of the target object
|
|
36
|
+
* @param target - The target object to assign to
|
|
37
|
+
* @param sources - One or more source objects to copy properties from
|
|
38
|
+
* @returns The target object with properties assigned
|
|
39
|
+
*/
|
|
18
40
|
function safeAssign(target, ...sources) {
|
|
19
41
|
for (const source of sources) {
|
|
20
42
|
if (!source)
|
|
@@ -27,9 +49,20 @@ function safeAssign(target, ...sources) {
|
|
|
27
49
|
}
|
|
28
50
|
return target;
|
|
29
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Gets key-value pairs from an object, filtering out dangerous keys.
|
|
54
|
+
* @template T - The type of values in the object
|
|
55
|
+
* @param obj - The object to get entries from
|
|
56
|
+
* @returns Array of [key, value] pairs, excluding dangerous keys
|
|
57
|
+
*/
|
|
30
58
|
function safeObjectEntries(obj) {
|
|
31
59
|
return Object.entries(obj).filter(([key]) => !isDangerousKey(key));
|
|
32
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Validates that an object does not contain dangerous keys.
|
|
63
|
+
* @param obj - The object to validate
|
|
64
|
+
* @throws {Error} If a dangerous key is detected
|
|
65
|
+
*/
|
|
33
66
|
function validateObjectKeys(obj) {
|
|
34
67
|
if (!obj || typeof obj !== 'object')
|
|
35
68
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-object.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/safe-object.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"safe-object.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/safe-object.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAaH,4CAEC;AAOD,wCAEC;AAUD,gCAcC;AAQD,8CAEC;AAOD,gDAUC;AAzED;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,MAAS,EACT,GAAG,OAA+C;IAElD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAc,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAI,GAAsB;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,GAAwB;IACzD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IAE5C,kEAAkE;IAClE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* String utility functions
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Options for the replaceVariables function.
|
|
6
|
+
*/
|
|
4
7
|
export interface ReplaceVariablesOptions {
|
|
8
|
+
/** If true, HTML-escapes the replaced values */
|
|
5
9
|
escapeHtml?: boolean;
|
|
6
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Replaces variables in a string template with values from vars or constants.
|
|
13
|
+
* Variables are denoted by {variableName} in the template string.
|
|
14
|
+
* @param str - The template string containing variables
|
|
15
|
+
* @param vars - Optional object mapping variable names to values
|
|
16
|
+
* @param constants - Optional object containing constant values
|
|
17
|
+
* @param options - Optional configuration including HTML escaping
|
|
18
|
+
* @returns The string with variables replaced
|
|
19
|
+
*/
|
|
7
20
|
export declare function replaceVariables(str: string, vars?: Record<string, any>, constants?: Record<string, any>, options?: ReplaceVariablesOptions): string;
|
|
21
|
+
/**
|
|
22
|
+
* Checks if a string key indicates a template that expects variable replacement.
|
|
23
|
+
* Template keys end with 'template' (case-insensitive).
|
|
24
|
+
* @param key - The key to check
|
|
25
|
+
* @returns True if the key indicates a template, false otherwise
|
|
26
|
+
*/
|
|
8
27
|
export declare function isTemplate(key: string): boolean;
|
|
9
28
|
//# sourceMappingURL=string-utils.d.ts.map
|