@digitaldefiance/i18n-lib 3.8.0 → 3.8.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/LICENSE +21 -0
- package/README.md +182 -0
- package/package.json +12 -4
- package/src/{active-context.d.ts → active-context.ts} +0 -1
- package/src/builders/i18n-builder.ts +82 -0
- package/src/builders/{index.d.ts → index.ts} +1 -1
- package/src/component-definition.ts +11 -0
- package/src/component-registration.ts +29 -0
- package/src/component-registry.ts +432 -0
- package/src/context-error-type.ts +7 -0
- package/src/core/component-store.ts +241 -0
- package/src/core/context-manager.ts +113 -0
- package/src/core/enum-registry.ts +106 -0
- package/src/core/i18n-engine.ts +710 -0
- package/src/core/{index.d.ts → index.ts} +4 -1
- package/src/core/language-registry.ts +345 -0
- package/src/{core-component-id.d.ts → core-component-id.ts} +1 -2
- package/src/core-i18n.ts +270 -0
- package/src/core-plugin-factory.ts +111 -0
- package/src/core-string-key.ts +59 -0
- package/src/create-translation-adapter.ts +93 -0
- package/src/enum-registry.ts +152 -0
- package/src/errors/{base.d.ts → base.ts} +1 -1
- package/src/errors/context-error.ts +122 -0
- package/src/errors/enhanced-error-base.ts +260 -0
- package/src/errors/handleable.ts +152 -0
- package/src/errors/i18n-error.ts +494 -0
- package/src/errors/{index.d.ts → index.ts} +4 -1
- package/src/errors/simple-typed-error.ts +81 -0
- package/src/errors/{translatable-exports.d.ts → translatable-exports.ts} +1 -1
- package/src/errors/translatable-generic.ts +245 -0
- package/src/errors/translatable-handleable-generic.ts +222 -0
- package/src/errors/translatable.ts +138 -0
- package/src/errors/typed-handleable.ts +138 -0
- package/src/errors/typed.ts +617 -0
- package/src/gender/{gender-categories.d.ts → gender-categories.ts} +6 -2
- package/src/gender/gender-resolver.ts +40 -0
- package/src/gender/{index.d.ts → index.ts} +0 -1
- package/src/global-active-context.ts +266 -0
- package/src/icu/ast.ts +56 -0
- package/src/icu/compiler.ts +96 -0
- package/src/icu/formatter-registry.ts +36 -0
- package/src/icu/formatters/base-formatter.ts +8 -0
- package/src/icu/formatters/date-formatter.ts +30 -0
- package/src/icu/formatters/number-formatter.ts +32 -0
- package/src/icu/formatters/plural-formatter.ts +12 -0
- package/src/icu/formatters/select-formatter.ts +7 -0
- package/src/icu/formatters/selectordinal-formatter.ts +17 -0
- package/src/icu/formatters/time-formatter.ts +30 -0
- package/src/icu/helpers.ts +34 -0
- package/src/icu/parser.ts +242 -0
- package/src/icu/runtime.ts +37 -0
- package/src/icu/tokenizer.ts +212 -0
- package/src/icu/validator.ts +163 -0
- package/src/{index.d.ts → index.ts} +38 -6
- package/src/interfaces/active-context.interface.ts +41 -0
- package/src/interfaces/component-config.interface.ts +17 -0
- package/src/interfaces/engine-config.interface.ts +22 -0
- package/src/interfaces/global-active-context.ts +39 -0
- package/src/interfaces/handleable-error-options.ts +13 -0
- package/src/interfaces/handleable.ts +20 -0
- package/src/interfaces/i18n-engine.interface.ts +57 -0
- package/src/interfaces/{index.d.ts → index.ts} +1 -1
- package/src/interfaces/language-definition.interface.ts +17 -0
- package/src/interfaces/translation-options.interface.ts +15 -0
- package/src/interfaces/validation-result.interface.ts +24 -0
- package/src/language-codes.ts +40 -0
- package/src/language-definition.ts +13 -0
- package/src/plugin-i18n-engine.ts +707 -0
- package/src/pluralization/{index.d.ts → index.ts} +1 -1
- package/src/pluralization/language-plural-map.ts +186 -0
- package/src/pluralization/{plural-categories.d.ts → plural-categories.ts} +5 -3
- package/src/pluralization/plural-rules.ts +228 -0
- package/src/registry-config.ts +16 -0
- package/src/registry-error-type.ts +19 -0
- package/src/registry-error.ts +100 -0
- package/src/strict-types.ts +35 -0
- package/src/strings/de.ts +75 -0
- package/src/strings/en-GB.ts +74 -0
- package/src/strings/en-US.ts +74 -0
- package/src/strings/es.ts +74 -0
- package/src/strings/fr.ts +75 -0
- package/src/strings/ja.ts +73 -0
- package/src/strings/uk.ts +73 -0
- package/src/strings/zh-CN.ts +72 -0
- package/src/template.ts +72 -0
- package/src/translation-engine.ts +18 -0
- package/src/translation-request.ts +12 -0
- package/src/translation-response.ts +8 -0
- package/src/types/engine.ts +55 -0
- package/src/types/{index.d.ts → index.ts} +1 -1
- package/src/types/{plural-types.d.ts → plural-types.ts} +29 -3
- package/src/{types.d.ts → types.ts} +72 -21
- package/src/utils/currency.ts +141 -0
- package/src/utils/html-escape.ts +55 -0
- package/src/utils/{index.d.ts → index.ts} +0 -1
- package/src/utils/lru-cache.ts +76 -0
- package/src/utils/{plural-helpers.d.ts → plural-helpers.ts} +14 -4
- package/src/utils/{safe-object.js → safe-object.ts} +37 -34
- package/src/utils/string-utils.ts +77 -0
- package/src/utils/timezone.ts +76 -0
- package/src/utils/validation.ts +66 -0
- package/src/utils.ts +215 -0
- package/src/validation/{index.d.ts → index.ts} +0 -1
- package/src/validation/plural-validator.ts +168 -0
- package/src/validation-config.ts +11 -0
- package/src/validation-result.ts +12 -0
- package/src/active-context.d.ts.map +0 -1
- package/src/active-context.js +0 -3
- package/src/active-context.js.map +0 -1
- package/src/builders/i18n-builder.d.ts +0 -26
- package/src/builders/i18n-builder.d.ts.map +0 -1
- package/src/builders/i18n-builder.js +0 -70
- package/src/builders/i18n-builder.js.map +0 -1
- package/src/builders/index.d.ts.map +0 -1
- package/src/builders/index.js +0 -8
- package/src/builders/index.js.map +0 -1
- package/src/component-definition.d.ts +0 -12
- package/src/component-definition.d.ts.map +0 -1
- package/src/component-definition.js +0 -3
- package/src/component-definition.js.map +0 -1
- package/src/component-registration.d.ts +0 -22
- package/src/component-registration.d.ts.map +0 -1
- package/src/component-registration.js +0 -3
- package/src/component-registration.js.map +0 -1
- package/src/component-registry.d.ts +0 -102
- package/src/component-registry.d.ts.map +0 -1
- package/src/component-registry.js +0 -282
- package/src/component-registry.js.map +0 -1
- package/src/context-error-type.d.ts +0 -8
- package/src/context-error-type.d.ts.map +0 -1
- package/src/context-error-type.js +0 -12
- package/src/context-error-type.js.map +0 -1
- package/src/core/component-store.d.ts +0 -93
- package/src/core/component-store.d.ts.map +0 -1
- package/src/core/component-store.js +0 -198
- package/src/core/component-store.js.map +0 -1
- package/src/core/context-manager.d.ts +0 -72
- package/src/core/context-manager.d.ts.map +0 -1
- package/src/core/context-manager.js +0 -98
- package/src/core/context-manager.js.map +0 -1
- package/src/core/enum-registry.d.ts +0 -48
- package/src/core/enum-registry.d.ts.map +0 -1
- package/src/core/enum-registry.js +0 -85
- package/src/core/enum-registry.js.map +0 -1
- package/src/core/i18n-engine.d.ts +0 -241
- package/src/core/i18n-engine.d.ts.map +0 -1
- package/src/core/i18n-engine.js +0 -568
- package/src/core/i18n-engine.js.map +0 -1
- package/src/core/index.d.ts.map +0 -1
- package/src/core/index.js +0 -21
- package/src/core/index.js.map +0 -1
- package/src/core/language-registry.d.ts +0 -180
- package/src/core/language-registry.d.ts.map +0 -1
- package/src/core/language-registry.js +0 -298
- package/src/core/language-registry.js.map +0 -1
- package/src/core-component-id.d.ts.map +0 -1
- package/src/core-component-id.js +0 -9
- package/src/core-component-id.js.map +0 -1
- package/src/core-i18n.d.ts +0 -69
- package/src/core-i18n.d.ts.map +0 -1
- package/src/core-i18n.js +0 -219
- package/src/core-i18n.js.map +0 -1
- package/src/core-plugin-factory.d.ts +0 -28
- package/src/core-plugin-factory.d.ts.map +0 -1
- package/src/core-plugin-factory.js +0 -80
- package/src/core-plugin-factory.js.map +0 -1
- package/src/core-string-key.d.ts +0 -52
- package/src/core-string-key.d.ts.map +0 -1
- package/src/core-string-key.js +0 -61
- package/src/core-string-key.js.map +0 -1
- package/src/create-translation-adapter.d.ts +0 -33
- package/src/create-translation-adapter.d.ts.map +0 -1
- package/src/create-translation-adapter.js +0 -72
- package/src/create-translation-adapter.js.map +0 -1
- package/src/enum-registry.d.ts +0 -65
- package/src/enum-registry.d.ts.map +0 -1
- package/src/enum-registry.js +0 -123
- package/src/enum-registry.js.map +0 -1
- package/src/errors/base.d.ts.map +0 -1
- package/src/errors/base.js +0 -11
- package/src/errors/base.js.map +0 -1
- package/src/errors/context-error.d.ts +0 -50
- package/src/errors/context-error.d.ts.map +0 -1
- package/src/errors/context-error.js +0 -93
- package/src/errors/context-error.js.map +0 -1
- package/src/errors/enhanced-error-base.d.ts +0 -125
- package/src/errors/enhanced-error-base.d.ts.map +0 -1
- package/src/errors/enhanced-error-base.js +0 -165
- package/src/errors/enhanced-error-base.js.map +0 -1
- package/src/errors/handleable.d.ts +0 -83
- package/src/errors/handleable.d.ts.map +0 -1
- package/src/errors/handleable.js +0 -136
- package/src/errors/handleable.js.map +0 -1
- package/src/errors/i18n-error.d.ts +0 -211
- package/src/errors/i18n-error.d.ts.map +0 -1
- package/src/errors/i18n-error.js +0 -358
- package/src/errors/i18n-error.js.map +0 -1
- package/src/errors/index.d.ts.map +0 -1
- package/src/errors/index.js +0 -17
- package/src/errors/index.js.map +0 -1
- package/src/errors/simple-typed-error.d.ts +0 -53
- package/src/errors/simple-typed-error.d.ts.map +0 -1
- package/src/errors/simple-typed-error.js +0 -51
- package/src/errors/simple-typed-error.js.map +0 -1
- package/src/errors/translatable-exports.d.ts.map +0 -1
- package/src/errors/translatable-exports.js +0 -15
- package/src/errors/translatable-exports.js.map +0 -1
- package/src/errors/translatable-generic.d.ts +0 -87
- package/src/errors/translatable-generic.d.ts.map +0 -1
- package/src/errors/translatable-generic.js +0 -139
- package/src/errors/translatable-generic.js.map +0 -1
- package/src/errors/translatable-handleable-generic.d.ts +0 -116
- package/src/errors/translatable-handleable-generic.d.ts.map +0 -1
- package/src/errors/translatable-handleable-generic.js +0 -121
- package/src/errors/translatable-handleable-generic.js.map +0 -1
- package/src/errors/translatable.d.ts +0 -63
- package/src/errors/translatable.d.ts.map +0 -1
- package/src/errors/translatable.js +0 -85
- package/src/errors/translatable.js.map +0 -1
- package/src/errors/typed-handleable.d.ts +0 -62
- package/src/errors/typed-handleable.d.ts.map +0 -1
- package/src/errors/typed-handleable.js +0 -108
- package/src/errors/typed-handleable.js.map +0 -1
- package/src/errors/typed.d.ts +0 -206
- package/src/errors/typed.d.ts.map +0 -1
- package/src/errors/typed.js +0 -458
- package/src/errors/typed.js.map +0 -1
- package/src/gender/gender-categories.d.ts.map +0 -1
- package/src/gender/gender-categories.js +0 -15
- package/src/gender/gender-categories.js.map +0 -1
- package/src/gender/gender-resolver.d.ts +0 -14
- package/src/gender/gender-resolver.d.ts.map +0 -1
- package/src/gender/gender-resolver.js +0 -35
- package/src/gender/gender-resolver.js.map +0 -1
- package/src/gender/index.d.ts.map +0 -1
- package/src/gender/index.js +0 -6
- package/src/gender/index.js.map +0 -1
- package/src/global-active-context.d.ts +0 -50
- package/src/global-active-context.d.ts.map +0 -1
- package/src/global-active-context.js +0 -185
- package/src/global-active-context.js.map +0 -1
- package/src/icu/ast.d.ts +0 -48
- package/src/icu/ast.d.ts.map +0 -1
- package/src/icu/ast.js +0 -16
- package/src/icu/ast.js.map +0 -1
- package/src/icu/compiler.d.ts +0 -16
- package/src/icu/compiler.d.ts.map +0 -1
- package/src/icu/compiler.js +0 -87
- package/src/icu/compiler.js.map +0 -1
- package/src/icu/formatter-registry.d.ts +0 -10
- package/src/icu/formatter-registry.d.ts.map +0 -1
- package/src/icu/formatter-registry.js +0 -34
- package/src/icu/formatter-registry.js.map +0 -1
- package/src/icu/formatters/base-formatter.d.ts +0 -8
- package/src/icu/formatters/base-formatter.d.ts.map +0 -1
- package/src/icu/formatters/base-formatter.js +0 -3
- package/src/icu/formatters/base-formatter.js.map +0 -1
- package/src/icu/formatters/date-formatter.d.ts +0 -5
- package/src/icu/formatters/date-formatter.d.ts.map +0 -1
- package/src/icu/formatters/date-formatter.js +0 -31
- package/src/icu/formatters/date-formatter.js.map +0 -1
- package/src/icu/formatters/number-formatter.d.ts +0 -5
- package/src/icu/formatters/number-formatter.d.ts.map +0 -1
- package/src/icu/formatters/number-formatter.js +0 -33
- package/src/icu/formatters/number-formatter.js.map +0 -1
- package/src/icu/formatters/plural-formatter.d.ts +0 -5
- package/src/icu/formatters/plural-formatter.d.ts.map +0 -1
- package/src/icu/formatters/plural-formatter.js +0 -15
- package/src/icu/formatters/plural-formatter.js.map +0 -1
- package/src/icu/formatters/select-formatter.d.ts +0 -5
- package/src/icu/formatters/select-formatter.d.ts.map +0 -1
- package/src/icu/formatters/select-formatter.js +0 -10
- package/src/icu/formatters/select-formatter.js.map +0 -1
- package/src/icu/formatters/selectordinal-formatter.d.ts +0 -5
- package/src/icu/formatters/selectordinal-formatter.d.ts.map +0 -1
- package/src/icu/formatters/selectordinal-formatter.js +0 -22
- package/src/icu/formatters/selectordinal-formatter.js.map +0 -1
- package/src/icu/formatters/time-formatter.d.ts +0 -5
- package/src/icu/formatters/time-formatter.d.ts.map +0 -1
- package/src/icu/formatters/time-formatter.js +0 -31
- package/src/icu/formatters/time-formatter.js.map +0 -1
- package/src/icu/helpers.d.ts +0 -9
- package/src/icu/helpers.d.ts.map +0 -1
- package/src/icu/helpers.js +0 -31
- package/src/icu/helpers.js.map +0 -1
- package/src/icu/parser.d.ts +0 -31
- package/src/icu/parser.d.ts.map +0 -1
- package/src/icu/parser.js +0 -203
- package/src/icu/parser.js.map +0 -1
- package/src/icu/runtime.d.ts +0 -10
- package/src/icu/runtime.d.ts.map +0 -1
- package/src/icu/runtime.js +0 -33
- package/src/icu/runtime.js.map +0 -1
- package/src/icu/tokenizer.d.ts +0 -37
- package/src/icu/tokenizer.d.ts.map +0 -1
- package/src/icu/tokenizer.js +0 -187
- package/src/icu/tokenizer.js.map +0 -1
- package/src/icu/validator.d.ts +0 -11
- package/src/icu/validator.d.ts.map +0 -1
- package/src/icu/validator.js +0 -140
- package/src/icu/validator.js.map +0 -1
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -76
- package/src/index.js.map +0 -1
- package/src/interfaces/active-context.interface.d.ts +0 -36
- package/src/interfaces/active-context.interface.d.ts.map +0 -1
- package/src/interfaces/active-context.interface.js +0 -3
- package/src/interfaces/active-context.interface.js.map +0 -1
- package/src/interfaces/component-config.interface.d.ts +0 -16
- package/src/interfaces/component-config.interface.d.ts.map +0 -1
- package/src/interfaces/component-config.interface.js +0 -6
- package/src/interfaces/component-config.interface.js.map +0 -1
- package/src/interfaces/engine-config.interface.d.ts +0 -22
- package/src/interfaces/engine-config.interface.d.ts.map +0 -1
- package/src/interfaces/engine-config.interface.js +0 -6
- package/src/interfaces/engine-config.interface.js.map +0 -1
- package/src/interfaces/global-active-context.d.ts +0 -23
- package/src/interfaces/global-active-context.d.ts.map +0 -1
- package/src/interfaces/global-active-context.js +0 -3
- package/src/interfaces/global-active-context.js.map +0 -1
- package/src/interfaces/handleable-error-options.d.ts +0 -14
- package/src/interfaces/handleable-error-options.d.ts.map +0 -1
- package/src/interfaces/handleable-error-options.js +0 -3
- package/src/interfaces/handleable-error-options.js.map +0 -1
- package/src/interfaces/handleable.d.ts +0 -21
- package/src/interfaces/handleable.d.ts.map +0 -1
- package/src/interfaces/handleable.js +0 -3
- package/src/interfaces/handleable.js.map +0 -1
- package/src/interfaces/i18n-engine.interface.d.ts +0 -46
- package/src/interfaces/i18n-engine.interface.d.ts.map +0 -1
- package/src/interfaces/i18n-engine.interface.js +0 -6
- package/src/interfaces/i18n-engine.interface.js.map +0 -1
- package/src/interfaces/index.d.ts.map +0 -1
- package/src/interfaces/index.js +0 -7
- package/src/interfaces/index.js.map +0 -1
- package/src/interfaces/language-definition.interface.d.ts +0 -17
- package/src/interfaces/language-definition.interface.d.ts.map +0 -1
- package/src/interfaces/language-definition.interface.js +0 -6
- package/src/interfaces/language-definition.interface.js.map +0 -1
- package/src/interfaces/translation-options.interface.d.ts +0 -15
- package/src/interfaces/translation-options.interface.d.ts.map +0 -1
- package/src/interfaces/translation-options.interface.js +0 -6
- package/src/interfaces/translation-options.interface.js.map +0 -1
- package/src/interfaces/validation-result.interface.d.ts +0 -24
- package/src/interfaces/validation-result.interface.d.ts.map +0 -1
- package/src/interfaces/validation-result.interface.js +0 -6
- package/src/interfaces/validation-result.interface.js.map +0 -1
- package/src/language-codes.d.ts +0 -28
- package/src/language-codes.d.ts.map +0 -1
- package/src/language-codes.js +0 -32
- package/src/language-codes.js.map +0 -1
- package/src/language-definition.d.ts +0 -14
- package/src/language-definition.d.ts.map +0 -1
- package/src/language-definition.js +0 -3
- package/src/language-definition.js.map +0 -1
- package/src/plugin-i18n-engine.d.ts +0 -164
- package/src/plugin-i18n-engine.d.ts.map +0 -1
- package/src/plugin-i18n-engine.js +0 -493
- package/src/plugin-i18n-engine.js.map +0 -1
- package/src/pluralization/index.d.ts.map +0 -1
- package/src/pluralization/index.js +0 -10
- package/src/pluralization/index.js.map +0 -1
- package/src/pluralization/language-plural-map.d.ts +0 -29
- package/src/pluralization/language-plural-map.d.ts.map +0 -1
- package/src/pluralization/language-plural-map.js +0 -155
- package/src/pluralization/language-plural-map.js.map +0 -1
- package/src/pluralization/plural-categories.d.ts.map +0 -1
- package/src/pluralization/plural-categories.js +0 -8
- package/src/pluralization/plural-categories.js.map +0 -1
- package/src/pluralization/plural-rules.d.ts +0 -102
- package/src/pluralization/plural-rules.d.ts.map +0 -1
- package/src/pluralization/plural-rules.js +0 -263
- package/src/pluralization/plural-rules.js.map +0 -1
- package/src/registry-config.d.ts +0 -16
- package/src/registry-config.d.ts.map +0 -1
- package/src/registry-config.js +0 -3
- package/src/registry-config.js.map +0 -1
- package/src/registry-error-type.d.ts +0 -20
- package/src/registry-error-type.d.ts.map +0 -1
- package/src/registry-error-type.js +0 -24
- package/src/registry-error-type.js.map +0 -1
- package/src/registry-error.d.ts +0 -25
- package/src/registry-error.d.ts.map +0 -1
- package/src/registry-error.js +0 -63
- package/src/registry-error.js.map +0 -1
- package/src/strict-types.d.ts +0 -19
- package/src/strict-types.d.ts.map +0 -1
- package/src/strict-types.js +0 -18
- package/src/strict-types.js.map +0 -1
- package/src/strings/de.d.ts +0 -3
- package/src/strings/de.d.ts.map +0 -1
- package/src/strings/de.js +0 -57
- package/src/strings/de.js.map +0 -1
- package/src/strings/en-GB.d.ts +0 -3
- package/src/strings/en-GB.d.ts.map +0 -1
- package/src/strings/en-GB.js +0 -57
- package/src/strings/en-GB.js.map +0 -1
- package/src/strings/en-US.d.ts +0 -3
- package/src/strings/en-US.d.ts.map +0 -1
- package/src/strings/en-US.js +0 -57
- package/src/strings/en-US.js.map +0 -1
- package/src/strings/es.d.ts +0 -3
- package/src/strings/es.d.ts.map +0 -1
- package/src/strings/es.js +0 -57
- package/src/strings/es.js.map +0 -1
- package/src/strings/fr.d.ts +0 -3
- package/src/strings/fr.d.ts.map +0 -1
- package/src/strings/fr.js +0 -57
- package/src/strings/fr.js.map +0 -1
- package/src/strings/ja.d.ts +0 -3
- package/src/strings/ja.d.ts.map +0 -1
- package/src/strings/ja.js +0 -57
- package/src/strings/ja.js.map +0 -1
- package/src/strings/uk.d.ts +0 -3
- package/src/strings/uk.d.ts.map +0 -1
- package/src/strings/uk.js +0 -57
- package/src/strings/uk.js.map +0 -1
- package/src/strings/zh-CN.d.ts +0 -3
- package/src/strings/zh-CN.d.ts.map +0 -1
- package/src/strings/zh-CN.js +0 -57
- package/src/strings/zh-CN.js.map +0 -1
- package/src/template.d.ts +0 -13
- package/src/template.d.ts.map +0 -1
- package/src/template.js +0 -40
- package/src/template.js.map +0 -1
- package/src/translation-engine.d.ts +0 -9
- package/src/translation-engine.d.ts.map +0 -1
- package/src/translation-engine.js +0 -3
- package/src/translation-engine.js.map +0 -1
- package/src/translation-request.d.ts +0 -10
- package/src/translation-request.d.ts.map +0 -1
- package/src/translation-request.js +0 -3
- package/src/translation-request.js.map +0 -1
- package/src/translation-response.d.ts +0 -9
- package/src/translation-response.d.ts.map +0 -1
- package/src/translation-response.js +0 -3
- package/src/translation-response.js.map +0 -1
- package/src/types/engine.d.ts +0 -47
- package/src/types/engine.d.ts.map +0 -1
- package/src/types/engine.js +0 -8
- package/src/types/engine.js.map +0 -1
- package/src/types/index.d.ts.map +0 -1
- package/src/types/index.js +0 -9
- package/src/types/index.js.map +0 -1
- package/src/types/plural-types.d.ts.map +0 -1
- package/src/types/plural-types.js +0 -39
- package/src/types/plural-types.js.map +0 -1
- package/src/types.d.ts.map +0 -1
- package/src/types.js +0 -23
- package/src/types.js.map +0 -1
- package/src/utils/currency.d.ts +0 -81
- package/src/utils/currency.d.ts.map +0 -1
- package/src/utils/currency.js +0 -99
- package/src/utils/currency.js.map +0 -1
- package/src/utils/html-escape.d.ts +0 -22
- package/src/utils/html-escape.d.ts.map +0 -1
- package/src/utils/html-escape.js +0 -53
- package/src/utils/html-escape.js.map +0 -1
- package/src/utils/index.d.ts.map +0 -1
- package/src/utils/index.js +0 -12
- package/src/utils/index.js.map +0 -1
- package/src/utils/lru-cache.d.ts +0 -42
- package/src/utils/lru-cache.d.ts.map +0 -1
- package/src/utils/lru-cache.js +0 -73
- package/src/utils/lru-cache.js.map +0 -1
- package/src/utils/plural-helpers.d.ts.map +0 -1
- package/src/utils/plural-helpers.js +0 -35
- package/src/utils/plural-helpers.js.map +0 -1
- package/src/utils/safe-object.d.ts +0 -39
- package/src/utils/safe-object.d.ts.map +0 -1
- package/src/utils/safe-object.js.map +0 -1
- package/src/utils/string-utils.d.ts +0 -28
- package/src/utils/string-utils.d.ts.map +0 -1
- package/src/utils/string-utils.js +0 -63
- package/src/utils/string-utils.js.map +0 -1
- package/src/utils/timezone.d.ts +0 -50
- package/src/utils/timezone.d.ts.map +0 -1
- package/src/utils/timezone.js +0 -74
- package/src/utils/timezone.js.map +0 -1
- package/src/utils/validation.d.ts +0 -40
- package/src/utils/validation.d.ts.map +0 -1
- package/src/utils/validation.js +0 -69
- package/src/utils/validation.js.map +0 -1
- package/src/utils.d.ts +0 -65
- package/src/utils.d.ts.map +0 -1
- package/src/utils.js +0 -129
- package/src/utils.js.map +0 -1
- package/src/validation/index.d.ts.map +0 -1
- package/src/validation/index.js +0 -5
- package/src/validation/index.js.map +0 -1
- package/src/validation/plural-validator.d.ts +0 -46
- package/src/validation/plural-validator.d.ts.map +0 -1
- package/src/validation/plural-validator.js +0 -123
- package/src/validation/plural-validator.js.map +0 -1
- package/src/validation-config.d.ts +0 -12
- package/src/validation-config.d.ts.map +0 -1
- package/src/validation-config.js +0 -3
- package/src/validation-config.js.map +0 -1
- package/src/validation-result.d.ts +0 -13
- package/src/validation-result.d.ts.map +0 -1
- package/src/validation-result.js +0 -3
- package/src/validation-result.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enum-registry.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/enum-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,uBAAuB,CAClC,UAAU,SAAS,MAAM,EACzB,SAAS,SAAS,MAAM;IAExB,SAAS,CAAC,YAAY,mFAA2D;IACjF,SAAS,CAAC,SAAS,uBAA8B;IACjD,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7C,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAEhF;;;;;OAKG;gBAED,kBAAkB,EAAE,SAAS,EAAE,EAC/B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM;IAMvE;;;;;;;;OAQG;IACI,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC9B,YAAY,EAAE,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,QAAQ,EAAE,MAAM,GACf,IAAI;IAMP;;;;;;;;;OASG;IACI,SAAS,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,SAAS,GAClB,MAAM;IA2CT;;;;;OAKG;IACI,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAIjC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAInB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;CAgB7B"}
|
package/src/enum-registry.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EnumTranslationRegistry = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Registry for managing translations of enum values across multiple languages.
|
|
6
|
-
*
|
|
7
|
-
* @template TStringKey Type of translation key used in error messages.
|
|
8
|
-
* @template TLanguage Type of supported language codes.
|
|
9
|
-
*/
|
|
10
|
-
class EnumTranslationRegistry {
|
|
11
|
-
translations = new Map();
|
|
12
|
-
enumNames = new WeakMap();
|
|
13
|
-
availableLanguages;
|
|
14
|
-
translateFn;
|
|
15
|
-
/**
|
|
16
|
-
* Creates a new EnumTranslationRegistry.
|
|
17
|
-
*
|
|
18
|
-
* @param availableLanguages Array of supported language codes.
|
|
19
|
-
* @param translateFn Optional translation function for error templates.
|
|
20
|
-
*/
|
|
21
|
-
constructor(availableLanguages, translateFn) {
|
|
22
|
-
this.availableLanguages = new Set(availableLanguages);
|
|
23
|
-
this.translateFn = translateFn;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Registers an enum and its language-specific translations.
|
|
27
|
-
*
|
|
28
|
-
* @template TEnum Enum value type (string or number).
|
|
29
|
-
* @param enumObj The enum object to register.
|
|
30
|
-
* @param translations Mapping of language codes to value-to-string translations.
|
|
31
|
-
* @param enumName Human-readable name of the enum (used in errors).
|
|
32
|
-
* @throws {Error} If translations contain languages not in availableLanguages.
|
|
33
|
-
*/
|
|
34
|
-
register(enumObj, translations, enumName) {
|
|
35
|
-
this.validateTranslations(translations, enumName);
|
|
36
|
-
this.translations.set(enumObj, translations);
|
|
37
|
-
this.enumNames.set(enumObj, enumName);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Translates a specific enum value into the target language.
|
|
41
|
-
*
|
|
42
|
-
* @template TEnum Enum value type.
|
|
43
|
-
* @param enumObj The enum object registered previously.
|
|
44
|
-
* @param value The enum value to translate.
|
|
45
|
-
* @param language The target language code.
|
|
46
|
-
* @returns The translated string.
|
|
47
|
-
* @throws {Error} If the enum or language or value is not found.
|
|
48
|
-
*/
|
|
49
|
-
translate(enumObj, value, language) {
|
|
50
|
-
const translations = this.translations.get(enumObj);
|
|
51
|
-
if (!translations) {
|
|
52
|
-
const message = this.translateFn
|
|
53
|
-
? this.translateFn('Error_EnumNotFoundTemplate', {
|
|
54
|
-
enumName: this.getEnumName(enumObj),
|
|
55
|
-
})
|
|
56
|
-
: `No translations found for enum: ${this.getEnumName(enumObj)}`;
|
|
57
|
-
throw new Error(message);
|
|
58
|
-
}
|
|
59
|
-
const langTranslations = translations[language];
|
|
60
|
-
if (!langTranslations) {
|
|
61
|
-
const message = this.translateFn
|
|
62
|
-
? this.translateFn('Error_EnumLanguageNotFoundTemplate', {
|
|
63
|
-
language,
|
|
64
|
-
})
|
|
65
|
-
: `No translations found for language: ${language}`;
|
|
66
|
-
throw new Error(message);
|
|
67
|
-
}
|
|
68
|
-
let result = langTranslations[value];
|
|
69
|
-
if (!result && typeof value === 'number') {
|
|
70
|
-
const stringKey = Object.keys(enumObj).find((key) => enumObj[key] === value);
|
|
71
|
-
if (stringKey) {
|
|
72
|
-
result = langTranslations[stringKey];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (!result) {
|
|
76
|
-
const message = this.translateFn
|
|
77
|
-
? this.translateFn('Error_EnumValueNotFoundTemplate', {
|
|
78
|
-
value: String(value),
|
|
79
|
-
})
|
|
80
|
-
: `No translation found for value: ${String(value)}`;
|
|
81
|
-
throw new Error(message);
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Checks whether translations exist for the given enum object.
|
|
87
|
-
*
|
|
88
|
-
* @param enumObj The enum object to check.
|
|
89
|
-
* @returns True if registered, false otherwise.
|
|
90
|
-
*/
|
|
91
|
-
has(enumObj) {
|
|
92
|
-
return this.translations.has(enumObj);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Internal: Retrieves the human-readable name of the enum.
|
|
96
|
-
*
|
|
97
|
-
* @param enumObj The enum object.
|
|
98
|
-
* @returns Registered enum name or 'UnknownEnum' if not set.
|
|
99
|
-
*/
|
|
100
|
-
getEnumName(enumObj) {
|
|
101
|
-
return this.enumNames.get(enumObj) || 'UnknownEnum';
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Internal: Validates that translation entries only use available languages.
|
|
105
|
-
*
|
|
106
|
-
* @template TEnum Enum value type.
|
|
107
|
-
* @param translations Mapping of language codes to translations.
|
|
108
|
-
* @param enumName Enum name for error reporting.
|
|
109
|
-
* @throws {Error} If a translation language is not available.
|
|
110
|
-
*/
|
|
111
|
-
validateTranslations(translations, enumName) {
|
|
112
|
-
for (const language of Object.keys(translations)) {
|
|
113
|
-
if (!this.availableLanguages.has(language)) {
|
|
114
|
-
const message = this.translateFn
|
|
115
|
-
? this.translateFn('Error_EnumLanguageNotAvailableTemplate', { language, enumName })
|
|
116
|
-
: `Language '${language}' in enum '${enumName}' is not available in this registry`;
|
|
117
|
-
throw new Error(message);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
exports.EnumTranslationRegistry = EnumTranslationRegistry;
|
|
123
|
-
//# sourceMappingURL=enum-registry.js.map
|
package/src/enum-registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enum-registry.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/enum-registry.ts"],"names":[],"mappings":"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"}
|
package/src/errors/base.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
|
package/src/errors/base.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Base error exports that don't depend on core modules
|
|
4
|
-
* These can be imported without triggering core module initialization
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const tslib_1 = require("tslib");
|
|
8
|
-
tslib_1.__exportStar(require("./enhanced-error-base"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./handleable"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./simple-typed-error"), exports);
|
|
11
|
-
//# sourceMappingURL=base.js.map
|
package/src/errors/base.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/base.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gEAAsC;AACtC,uDAA6B;AAC7B,+DAAqC"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { ContextErrorType } from '../context-error-type';
|
|
2
|
-
/**
|
|
3
|
-
* Error class for context-related failures in the i18n system.
|
|
4
|
-
* Thrown when attempting to access or manipulate an invalid or non-existent context.
|
|
5
|
-
*
|
|
6
|
-
* **i18n Feature Support:**
|
|
7
|
-
* - ICU MessageFormat variable substitution
|
|
8
|
-
* - Nested message paths detection
|
|
9
|
-
* - Number formatting for context depths/positions
|
|
10
|
-
* - SelectOrdinal for context priority levels
|
|
11
|
-
*
|
|
12
|
-
* **Translation String Examples:**
|
|
13
|
-
* ```typescript
|
|
14
|
-
* // ICU plural
|
|
15
|
-
* "Context has {count, plural, one {# issue} other {# issues}}"
|
|
16
|
-
*
|
|
17
|
-
* // ICU select + nested
|
|
18
|
-
* "{severity, select, low {Minor context issue} high {Critical context error}}"
|
|
19
|
-
*
|
|
20
|
-
* // Number formatting
|
|
21
|
-
* "Context exceeded {limit, number, integer} maximum depth"
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare class ContextError extends Error {
|
|
25
|
-
/** The type of context error */
|
|
26
|
-
readonly type: ContextErrorType;
|
|
27
|
-
/** The context key that caused the error, if applicable */
|
|
28
|
-
readonly contextKey?: string;
|
|
29
|
-
/** Additional context metadata */
|
|
30
|
-
readonly metadata?: Record<string, any>;
|
|
31
|
-
/**
|
|
32
|
-
* Creates a new ContextError instance.
|
|
33
|
-
* @param type - The type of context error
|
|
34
|
-
* @param contextKey - Optional context key that caused the error
|
|
35
|
-
* @param variables - Additional variables for ICU message formatting
|
|
36
|
-
* @param language - Optional language code
|
|
37
|
-
*/
|
|
38
|
-
constructor(type: ContextErrorType, contextKey?: string, variables?: Record<string, string | number>, language?: string);
|
|
39
|
-
/**
|
|
40
|
-
* Create context error with nested path information
|
|
41
|
-
* Demonstrates selectordinal for depth level
|
|
42
|
-
*/
|
|
43
|
-
static withNestedPath(type: ContextErrorType, contextPath: string, language?: string): ContextError;
|
|
44
|
-
/**
|
|
45
|
-
* Create context error with count information
|
|
46
|
-
* Demonstrates plural formatting
|
|
47
|
-
*/
|
|
48
|
-
static withCount(type: ContextErrorType, contextKey: string, count: number, language?: string): ContextError;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=context-error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-error.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/context-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,gCAAgC;IAChC,SAAyB,IAAI,EAAE,gBAAgB,CAAC;IAChD,2DAA2D;IAC3D,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,kCAAkC;IAClC,SAAyB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAExD;;;;;;OAMG;gBAED,IAAI,EAAE,gBAAgB,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM;IAuCnB;;;OAGG;IACH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,MAAM,EACnB,QAAQ,SAAU,GACjB,YAAY;IAaf;;;OAGG;IACH,MAAM,CAAC,SAAS,CACd,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,SAAU,GACjB,YAAY;CAGhB"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContextError = void 0;
|
|
4
|
-
const core_component_id_1 = require("../core-component-id");
|
|
5
|
-
const core_string_key_1 = require("../core-string-key");
|
|
6
|
-
const enhanced_error_base_1 = require("./enhanced-error-base");
|
|
7
|
-
// Lazy reference to I18nEngine to avoid circular dependencies
|
|
8
|
-
let engineGetter;
|
|
9
|
-
/**
|
|
10
|
-
* Error class for context-related failures in the i18n system.
|
|
11
|
-
* Thrown when attempting to access or manipulate an invalid or non-existent context.
|
|
12
|
-
*
|
|
13
|
-
* **i18n Feature Support:**
|
|
14
|
-
* - ICU MessageFormat variable substitution
|
|
15
|
-
* - Nested message paths detection
|
|
16
|
-
* - Number formatting for context depths/positions
|
|
17
|
-
* - SelectOrdinal for context priority levels
|
|
18
|
-
*
|
|
19
|
-
* **Translation String Examples:**
|
|
20
|
-
* ```typescript
|
|
21
|
-
* // ICU plural
|
|
22
|
-
* "Context has {count, plural, one {# issue} other {# issues}}"
|
|
23
|
-
*
|
|
24
|
-
* // ICU select + nested
|
|
25
|
-
* "{severity, select, low {Minor context issue} high {Critical context error}}"
|
|
26
|
-
*
|
|
27
|
-
* // Number formatting
|
|
28
|
-
* "Context exceeded {limit, number, integer} maximum depth"
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
class ContextError extends Error {
|
|
32
|
-
/** The type of context error */
|
|
33
|
-
type;
|
|
34
|
-
/** The context key that caused the error, if applicable */
|
|
35
|
-
contextKey;
|
|
36
|
-
/** Additional context metadata */
|
|
37
|
-
metadata;
|
|
38
|
-
/**
|
|
39
|
-
* Creates a new ContextError instance.
|
|
40
|
-
* @param type - The type of context error
|
|
41
|
-
* @param contextKey - Optional context key that caused the error
|
|
42
|
-
* @param variables - Additional variables for ICU message formatting
|
|
43
|
-
* @param language - Optional language code
|
|
44
|
-
*/
|
|
45
|
-
constructor(type, contextKey, variables, language) {
|
|
46
|
-
// Lazy initialization: get engine instance at runtime to avoid circular dependencies
|
|
47
|
-
let message;
|
|
48
|
-
try {
|
|
49
|
-
// Lazy load I18nEngine to break circular dependency
|
|
50
|
-
if (!engineGetter) {
|
|
51
|
-
// Dynamically import at runtime
|
|
52
|
-
const coreModule = eval('require')('../core');
|
|
53
|
-
engineGetter = () => coreModule.I18nEngine.getInstance('default');
|
|
54
|
-
}
|
|
55
|
-
const engine = engineGetter();
|
|
56
|
-
const allVars = { ...variables, contextKey: contextKey || '' };
|
|
57
|
-
message = contextKey
|
|
58
|
-
? engine.safeTranslate(core_component_id_1.CoreI18nComponentId, core_string_key_1.CoreStringKey.Error_InvalidContextTemplate, allVars, language)
|
|
59
|
-
: engine.safeTranslate(core_component_id_1.CoreI18nComponentId, core_string_key_1.CoreStringKey.Error_InvalidContext, allVars, language);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
// Fallback if engine not available
|
|
63
|
-
message = contextKey
|
|
64
|
-
? `Invalid context: ${contextKey}`
|
|
65
|
-
: 'Invalid context';
|
|
66
|
-
}
|
|
67
|
-
super(message);
|
|
68
|
-
this.name = 'ContextError';
|
|
69
|
-
this.type = type;
|
|
70
|
-
this.contextKey = contextKey;
|
|
71
|
-
this.metadata = variables;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Create context error with nested path information
|
|
75
|
-
* Demonstrates selectordinal for depth level
|
|
76
|
-
*/
|
|
77
|
-
static withNestedPath(type, contextPath, language = 'en-US') {
|
|
78
|
-
const analysis = enhanced_error_base_1.EnhancedErrorHelper.analyzeKeyPath(contextPath);
|
|
79
|
-
return new ContextError(type, contextPath, {
|
|
80
|
-
depth: analysis.depth,
|
|
81
|
-
isNested: analysis.isNested ? 'true' : 'false',
|
|
82
|
-
}, language);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Create context error with count information
|
|
86
|
-
* Demonstrates plural formatting
|
|
87
|
-
*/
|
|
88
|
-
static withCount(type, contextKey, count, language = 'en-US') {
|
|
89
|
-
return new ContextError(type, contextKey, { count }, language);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.ContextError = ContextError;
|
|
93
|
-
//# sourceMappingURL=context-error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-error.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/context-error.ts"],"names":[],"mappings":";;;AACA,4DAA2D;AAC3D,wDAAmD;AACnD,+DAA4D;AAE5D,8DAA8D;AAC9D,IAAI,YAAqC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,gCAAgC;IACP,IAAI,CAAmB;IAChD,2DAA2D;IAC3C,UAAU,CAAU;IACpC,kCAAkC;IACT,QAAQ,CAAuB;IAExD;;;;;;OAMG;IACH,YACE,IAAsB,EACtB,UAAmB,EACnB,SAA2C,EAC3C,QAAiB;QAEjB,qFAAqF;QACrF,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,oDAAoD;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,gCAAgC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC9C,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;YAC/D,OAAO,GAAG,UAAU;gBAClB,CAAC,CAAC,MAAM,CAAC,aAAa,CAClB,uCAAmB,EACnB,+BAAa,CAAC,4BAA4B,EAC1C,OAAO,EACP,QAAQ,CACT;gBACH,CAAC,CAAC,MAAM,CAAC,aAAa,CAClB,uCAAmB,EACnB,+BAAa,CAAC,oBAAoB,EAClC,OAAO,EACP,QAAQ,CACT,CAAC;QACR,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;YACnC,OAAO,GAAG,UAAU;gBAClB,CAAC,CAAC,oBAAoB,UAAU,EAAE;gBAClC,CAAC,CAAC,iBAAiB,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CACnB,IAAsB,EACtB,WAAmB,EACnB,QAAQ,GAAG,OAAO;QAElB,MAAM,QAAQ,GAAG,yCAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjE,OAAO,IAAI,YAAY,CACrB,IAAI,EACJ,WAAW,EACX;YACE,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;SAC/C,EACD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,CACd,IAAsB,EACtB,UAAkB,EAClB,KAAa,EACb,QAAQ,GAAG,OAAO;QAElB,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;CACF;AA3FD,oCA2FC"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enhanced error base with i18n 3.0/3.5 feature support
|
|
3
|
-
* Provides helper methods for ICU MessageFormat, pluralization, gender, and advanced features
|
|
4
|
-
*/
|
|
5
|
-
import { GenderCategory } from '../gender/gender-categories';
|
|
6
|
-
/**
|
|
7
|
-
* Options for enhanced error message formatting
|
|
8
|
-
*/
|
|
9
|
-
export interface EnhancedErrorOptions {
|
|
10
|
-
/** Variables for ICU substitution */
|
|
11
|
-
variables?: Record<string, string | number | boolean>;
|
|
12
|
-
/** Language code for message formatting */
|
|
13
|
-
language?: string;
|
|
14
|
-
/** Count for plural formatting */
|
|
15
|
-
count?: number;
|
|
16
|
-
/** Gender for gender-aware formatting */
|
|
17
|
-
gender?: GenderCategory;
|
|
18
|
-
/** Additional metadata */
|
|
19
|
-
metadata?: Record<string, any>;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Helper class providing advanced i18n features for error messages
|
|
23
|
-
* This can be used as a mixin or utility class for error classes
|
|
24
|
-
*/
|
|
25
|
-
export declare class EnhancedErrorHelper {
|
|
26
|
-
/**
|
|
27
|
-
* Format error message with ICU MessageFormat
|
|
28
|
-
* @param pattern - ICU message pattern
|
|
29
|
-
* @param options - Formatting options
|
|
30
|
-
* @returns Formatted message string
|
|
31
|
-
*/
|
|
32
|
-
static formatMessage(pattern: string, options?: EnhancedErrorOptions): string;
|
|
33
|
-
/**
|
|
34
|
-
* Create a plural-aware error message
|
|
35
|
-
* @param singularPattern - Pattern for singular form
|
|
36
|
-
* @param pluralPattern - Pattern for plural form
|
|
37
|
-
* @param count - Count value
|
|
38
|
-
* @param options - Additional formatting options
|
|
39
|
-
* @returns Formatted message
|
|
40
|
-
*/
|
|
41
|
-
static formatPlural(singularPattern: string, pluralPattern: string, count: number, options?: Omit<EnhancedErrorOptions, 'count'>): string;
|
|
42
|
-
/**
|
|
43
|
-
* Create a gender-aware error message
|
|
44
|
-
* @param patterns - Patterns for different genders
|
|
45
|
-
* @param gender - Gender value
|
|
46
|
-
* @param options - Additional formatting options
|
|
47
|
-
* @returns Formatted message
|
|
48
|
-
*/
|
|
49
|
-
static formatGender(patterns: Partial<Record<GenderCategory, string>>, gender: GenderCategory, options?: Omit<EnhancedErrorOptions, 'gender'>): string;
|
|
50
|
-
/**
|
|
51
|
-
* Format ordinal numbers (1st, 2nd, 3rd, etc.)
|
|
52
|
-
* @param number - The number to format
|
|
53
|
-
* @param pattern - Pattern with {number} placeholder
|
|
54
|
-
* @param options - Additional formatting options
|
|
55
|
-
* @returns Formatted message with ordinal
|
|
56
|
-
*/
|
|
57
|
-
static formatOrdinal(number: number, pattern: string, options?: EnhancedErrorOptions): string;
|
|
58
|
-
/**
|
|
59
|
-
* Format numbers with specific formatting (integer, currency, percent)
|
|
60
|
-
* @param value - Number value
|
|
61
|
-
* @param format - Format type
|
|
62
|
-
* @param pattern - Pattern with {value} placeholder
|
|
63
|
-
* @param options - Additional formatting options
|
|
64
|
-
* @returns Formatted message
|
|
65
|
-
*/
|
|
66
|
-
static formatNumber(value: number, format: 'integer' | 'currency' | 'percent', pattern: string, options?: EnhancedErrorOptions): string;
|
|
67
|
-
/**
|
|
68
|
-
* Create nested messages with multiple levels of ICU formatting
|
|
69
|
-
* @param pattern - Complex nested ICU pattern
|
|
70
|
-
* @param options - Formatting options
|
|
71
|
-
* @returns Formatted message
|
|
72
|
-
*/
|
|
73
|
-
static formatNested(pattern: string, options?: EnhancedErrorOptions): string;
|
|
74
|
-
/**
|
|
75
|
-
* Detect if a string key represents a nested path
|
|
76
|
-
* @param key - String key to check
|
|
77
|
-
* @returns Object with nesting information
|
|
78
|
-
*/
|
|
79
|
-
static analyzeKeyPath(key: string): {
|
|
80
|
-
isNested: boolean;
|
|
81
|
-
depth: number;
|
|
82
|
-
parts: string[];
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Create metadata object with count information for debugging
|
|
86
|
-
* @param count - Count value
|
|
87
|
-
* @param additionalMetadata - Additional metadata to include
|
|
88
|
-
* @returns Metadata object
|
|
89
|
-
*/
|
|
90
|
-
static createCountMetadata(count: number, additionalMetadata?: Record<string, any>): Record<string, any>;
|
|
91
|
-
/**
|
|
92
|
-
* Validate that all required ICU variables are provided
|
|
93
|
-
* @param pattern - ICU pattern
|
|
94
|
-
* @param variables - Provided variables
|
|
95
|
-
* @returns Object with validation result
|
|
96
|
-
*/
|
|
97
|
-
static validateVariables(pattern: string, variables: Record<string, any>): {
|
|
98
|
-
valid: boolean;
|
|
99
|
-
missing: string[];
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Mixin function to add enhanced i18n features to error classes
|
|
104
|
-
* @param Base - Base error class
|
|
105
|
-
* @returns Enhanced error class
|
|
106
|
-
*/
|
|
107
|
-
export declare function withEnhancedI18n<T extends new (...args: any[]) => Error>(Base: T): {
|
|
108
|
-
new (...args: any[]): {
|
|
109
|
-
formatMessage(pattern: string, options?: EnhancedErrorOptions): string;
|
|
110
|
-
formatPlural(singularPattern: string, pluralPattern: string, count: number, options?: Omit<EnhancedErrorOptions, "count">): string;
|
|
111
|
-
formatGender(patterns: Partial<Record<GenderCategory, string>>, gender: GenderCategory, options?: Omit<EnhancedErrorOptions, "gender">): string;
|
|
112
|
-
formatOrdinal(number: number, pattern: string, options?: EnhancedErrorOptions): string;
|
|
113
|
-
formatNumber(value: number, format: "integer" | "currency" | "percent", pattern: string, options?: EnhancedErrorOptions): string;
|
|
114
|
-
name: string;
|
|
115
|
-
message: string;
|
|
116
|
-
stack?: string;
|
|
117
|
-
cause?: unknown;
|
|
118
|
-
disposedAt?: string;
|
|
119
|
-
type?: string;
|
|
120
|
-
componentId?: string;
|
|
121
|
-
reasonMap?: Record<string, unknown>;
|
|
122
|
-
metadata?: Record<string, unknown>;
|
|
123
|
-
};
|
|
124
|
-
} & T;
|
|
125
|
-
//# sourceMappingURL=enhanced-error-base.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-error-base.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/enhanced-error-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Enhanced error base with i18n 3.0/3.5 feature support
|
|
4
|
-
* Provides helper methods for ICU MessageFormat, pluralization, gender, and advanced features
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.EnhancedErrorHelper = void 0;
|
|
8
|
-
exports.withEnhancedI18n = withEnhancedI18n;
|
|
9
|
-
const helpers_1 = require("../icu/helpers");
|
|
10
|
-
/**
|
|
11
|
-
* Helper class providing advanced i18n features for error messages
|
|
12
|
-
* This can be used as a mixin or utility class for error classes
|
|
13
|
-
*/
|
|
14
|
-
class EnhancedErrorHelper {
|
|
15
|
-
/**
|
|
16
|
-
* Format error message with ICU MessageFormat
|
|
17
|
-
* @param pattern - ICU message pattern
|
|
18
|
-
* @param options - Formatting options
|
|
19
|
-
* @returns Formatted message string
|
|
20
|
-
*/
|
|
21
|
-
static formatMessage(pattern, options = {}) {
|
|
22
|
-
const { variables = {}, language = 'en-US', count, gender } = options;
|
|
23
|
-
// Add count and gender to variables if provided
|
|
24
|
-
const allVars = {
|
|
25
|
-
...variables,
|
|
26
|
-
...(count !== undefined ? { count } : {}),
|
|
27
|
-
...(gender ? { gender } : {}),
|
|
28
|
-
};
|
|
29
|
-
return (0, helpers_1.formatICUMessage)(pattern, allVars, language);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Create a plural-aware error message
|
|
33
|
-
* @param singularPattern - Pattern for singular form
|
|
34
|
-
* @param pluralPattern - Pattern for plural form
|
|
35
|
-
* @param count - Count value
|
|
36
|
-
* @param options - Additional formatting options
|
|
37
|
-
* @returns Formatted message
|
|
38
|
-
*/
|
|
39
|
-
static formatPlural(singularPattern, pluralPattern, count, options = {}) {
|
|
40
|
-
const pattern = `{count, plural, one {${singularPattern}} other {${pluralPattern}}}`;
|
|
41
|
-
return this.formatMessage(pattern, { ...options, count });
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Create a gender-aware error message
|
|
45
|
-
* @param patterns - Patterns for different genders
|
|
46
|
-
* @param gender - Gender value
|
|
47
|
-
* @param options - Additional formatting options
|
|
48
|
-
* @returns Formatted message
|
|
49
|
-
*/
|
|
50
|
-
static formatGender(patterns, gender, options = {}) {
|
|
51
|
-
const { male, female, neutral, other } = patterns;
|
|
52
|
-
const selectPattern = `{gender, select, ${male ? `male {${male}}` : ''} ${female ? `female {${female}}` : ''} ${neutral ? `neutral {${neutral}}` : ''} other {${other || patterns.male || patterns.female || patterns.neutral || 'Error'}}}`;
|
|
53
|
-
return this.formatMessage(selectPattern, { ...options, gender });
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Format ordinal numbers (1st, 2nd, 3rd, etc.)
|
|
57
|
-
* @param number - The number to format
|
|
58
|
-
* @param pattern - Pattern with {number} placeholder
|
|
59
|
-
* @param options - Additional formatting options
|
|
60
|
-
* @returns Formatted message with ordinal
|
|
61
|
-
*/
|
|
62
|
-
static formatOrdinal(number, pattern, options = {}) {
|
|
63
|
-
const ordinalPattern = pattern.replace('{number}', `{number, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}`);
|
|
64
|
-
return this.formatMessage(ordinalPattern, {
|
|
65
|
-
...options,
|
|
66
|
-
variables: { ...options.variables, number },
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Format numbers with specific formatting (integer, currency, percent)
|
|
71
|
-
* @param value - Number value
|
|
72
|
-
* @param format - Format type
|
|
73
|
-
* @param pattern - Pattern with {value} placeholder
|
|
74
|
-
* @param options - Additional formatting options
|
|
75
|
-
* @returns Formatted message
|
|
76
|
-
*/
|
|
77
|
-
static formatNumber(value, format, pattern, options = {}) {
|
|
78
|
-
const numberPattern = pattern.replace('{value}', `{value, number, ${format}}`);
|
|
79
|
-
return this.formatMessage(numberPattern, {
|
|
80
|
-
...options,
|
|
81
|
-
variables: { ...options.variables, value },
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Create nested messages with multiple levels of ICU formatting
|
|
86
|
-
* @param pattern - Complex nested ICU pattern
|
|
87
|
-
* @param options - Formatting options
|
|
88
|
-
* @returns Formatted message
|
|
89
|
-
*/
|
|
90
|
-
static formatNested(pattern, options = {}) {
|
|
91
|
-
return this.formatMessage(pattern, options);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Detect if a string key represents a nested path
|
|
95
|
-
* @param key - String key to check
|
|
96
|
-
* @returns Object with nesting information
|
|
97
|
-
*/
|
|
98
|
-
static analyzeKeyPath(key) {
|
|
99
|
-
const parts = key.split('.');
|
|
100
|
-
return {
|
|
101
|
-
isNested: parts.length > 1,
|
|
102
|
-
depth: parts.length,
|
|
103
|
-
parts,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Create metadata object with count information for debugging
|
|
108
|
-
* @param count - Count value
|
|
109
|
-
* @param additionalMetadata - Additional metadata to include
|
|
110
|
-
* @returns Metadata object
|
|
111
|
-
*/
|
|
112
|
-
static createCountMetadata(count, additionalMetadata = {}) {
|
|
113
|
-
return {
|
|
114
|
-
count,
|
|
115
|
-
...additionalMetadata,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Validate that all required ICU variables are provided
|
|
120
|
-
* @param pattern - ICU pattern
|
|
121
|
-
* @param variables - Provided variables
|
|
122
|
-
* @returns Object with validation result
|
|
123
|
-
*/
|
|
124
|
-
static validateVariables(pattern, variables) {
|
|
125
|
-
// Extract variable names from ICU pattern
|
|
126
|
-
const variableMatches = pattern.match(/\{([a-zA-Z_][a-zA-Z0-9_]*)/g);
|
|
127
|
-
if (!variableMatches) {
|
|
128
|
-
return { valid: true, missing: [] };
|
|
129
|
-
}
|
|
130
|
-
const required = variableMatches
|
|
131
|
-
.map(match => match.substring(1))
|
|
132
|
-
.filter((name, index, self) => self.indexOf(name) === index);
|
|
133
|
-
const missing = required.filter(name => !(name in variables));
|
|
134
|
-
return {
|
|
135
|
-
valid: missing.length === 0,
|
|
136
|
-
missing,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
exports.EnhancedErrorHelper = EnhancedErrorHelper;
|
|
141
|
-
/**
|
|
142
|
-
* Mixin function to add enhanced i18n features to error classes
|
|
143
|
-
* @param Base - Base error class
|
|
144
|
-
* @returns Enhanced error class
|
|
145
|
-
*/
|
|
146
|
-
function withEnhancedI18n(Base) {
|
|
147
|
-
return class extends Base {
|
|
148
|
-
formatMessage(pattern, options = {}) {
|
|
149
|
-
return EnhancedErrorHelper.formatMessage(pattern, options);
|
|
150
|
-
}
|
|
151
|
-
formatPlural(singularPattern, pluralPattern, count, options = {}) {
|
|
152
|
-
return EnhancedErrorHelper.formatPlural(singularPattern, pluralPattern, count, options);
|
|
153
|
-
}
|
|
154
|
-
formatGender(patterns, gender, options = {}) {
|
|
155
|
-
return EnhancedErrorHelper.formatGender(patterns, gender, options);
|
|
156
|
-
}
|
|
157
|
-
formatOrdinal(number, pattern, options = {}) {
|
|
158
|
-
return EnhancedErrorHelper.formatOrdinal(number, pattern, options);
|
|
159
|
-
}
|
|
160
|
-
formatNumber(value, format, pattern, options = {}) {
|
|
161
|
-
return EnhancedErrorHelper.formatNumber(value, format, pattern, options);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=enhanced-error-base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-error-base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/errors/enhanced-error-base.ts"],"names":[],"mappings":"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"}
|