@digitaldefiance/i18n-lib 1.0.15 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/context.d.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import { Timezone } from './timezone';
1
2
  import { I18nContext, LanguageContext } from './types';
2
- export declare function createContext<TLanguage extends string, TContext extends string = LanguageContext>(defaultLanguage: TLanguage, defaultContext: TContext): I18nContext<TLanguage, TContext>;
3
+ export declare function createContext<TLanguage extends string, TContext extends string = LanguageContext>(defaultLanguage: TLanguage, defaultContext: TContext, defaultTimezone?: Timezone, defaultAdminTimezone?: Timezone): I18nContext<TLanguage, TContext>;
3
4
  export declare function setLanguage<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, language: TLanguage): void;
4
5
  export declare function setAdminLanguage<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, language: TLanguage): void;
5
6
  export declare function setContext<TLanguage extends string, TContext extends string = LanguageContext>(context: I18nContext<TLanguage, TContext>, languageContext: TContext): void;
package/dist/context.js CHANGED
@@ -4,11 +4,14 @@ exports.createContext = createContext;
4
4
  exports.setLanguage = setLanguage;
5
5
  exports.setAdminLanguage = setAdminLanguage;
6
6
  exports.setContext = setContext;
7
- function createContext(defaultLanguage, defaultContext) {
7
+ const timezone_1 = require("./timezone");
8
+ function createContext(defaultLanguage, defaultContext, defaultTimezone = new timezone_1.Timezone('UTC'), defaultAdminTimezone = new timezone_1.Timezone('UTC')) {
8
9
  return {
9
10
  language: defaultLanguage,
10
11
  adminLanguage: defaultLanguage,
11
12
  currentContext: defaultContext,
13
+ timezone: defaultTimezone,
14
+ adminTimezone: defaultAdminTimezone,
12
15
  };
13
16
  }
14
17
  function setLanguage(context, language) {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.I18nEngine = void 0;
4
+ const context_1 = require("./context");
4
5
  const enum_registry_1 = require("./enum-registry");
5
6
  const template_1 = require("./template");
6
7
  const utils_1 = require("./utils");
@@ -14,11 +15,7 @@ class I18nEngine {
14
15
  constructor(config, key) {
15
16
  this.config = config;
16
17
  this.enumRegistry = new enum_registry_1.EnumTranslationRegistry();
17
- this._context = {
18
- language: config.defaultLanguage,
19
- adminLanguage: config.defaultLanguage,
20
- currentContext: config.defaultContext,
21
- };
18
+ this._context = (0, context_1.createContext)(config.defaultLanguage, config.defaultContext, config.timezone, config.adminTimezone);
22
19
  const instanceKey = key || I18nEngine.DefaultInstanceKey;
23
20
  if (I18nEngine._instances.has(instanceKey)) {
24
21
  const existing = I18nEngine._instances.get(instanceKey);
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './currency';
4
4
  export * from './enum-registry';
5
5
  export * from './i18n-engine';
6
6
  export * from './template';
7
+ export * from './timezone';
7
8
  export * from './types';
8
9
  export * from './utils';
9
10
  export { I18nEngine as I18n } from './i18n-engine';
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ __exportStar(require("./currency"), exports);
21
21
  __exportStar(require("./enum-registry"), exports);
22
22
  __exportStar(require("./i18n-engine"), exports);
23
23
  __exportStar(require("./template"), exports);
24
+ __exportStar(require("./timezone"), exports);
24
25
  __exportStar(require("./types"), exports);
25
26
  __exportStar(require("./utils"), exports);
26
27
  // Re-export for convenience
@@ -0,0 +1,5 @@
1
+ export declare class Timezone {
2
+ private readonly _timezone;
3
+ constructor(timezone: string);
4
+ get value(): string;
5
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Timezone = void 0;
4
+ const utils_1 = require("./utils");
5
+ class Timezone {
6
+ constructor(timezone) {
7
+ if (!(0, utils_1.isValidTimezone)(timezone)) {
8
+ throw new Error(`Invalid timezone: ${timezone}`);
9
+ }
10
+ this._timezone = timezone;
11
+ }
12
+ get value() {
13
+ return this._timezone;
14
+ }
15
+ }
16
+ exports.Timezone = Timezone;
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Timezone } from './timezone';
1
2
  export type LanguageContext = 'admin' | 'user';
2
3
  export type CustomLanguageContext<T extends string = LanguageContext> = T;
3
4
  export type StringsCollection<TStringKey extends string> = Partial<Record<TStringKey, string>>;
@@ -14,11 +15,15 @@ export interface I18nConfig<TStringKey extends string, TLanguage extends string,
14
15
  constants?: TConstants;
15
16
  enumName?: string;
16
17
  enumObj?: Record<string, TStringKey>;
18
+ timezone: Timezone;
19
+ adminTimezone: Timezone;
17
20
  }
18
21
  export interface I18nContext<TLanguage extends string, TContext extends string = LanguageContext> {
19
22
  language: TLanguage;
20
23
  adminLanguage: TLanguage;
21
24
  currentContext: TContext;
25
+ timezone: Timezone;
26
+ adminTimezone: Timezone;
22
27
  }
23
28
  /**
24
29
  * Generic translation type for any enumeration
package/dist/utils.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export declare function replaceVariables(str: string, vars?: Record<string, string | number>, constants?: any): string;
2
2
  export declare function isTemplate(key: string): boolean;
3
+ export declare function isValidTimezone(timezone: string): boolean;
package/dist/utils.js CHANGED
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.replaceVariables = replaceVariables;
4
7
  exports.isTemplate = isTemplate;
8
+ exports.isValidTimezone = isValidTimezone;
9
+ const moment_timezone_1 = __importDefault(require("moment-timezone"));
5
10
  function replaceVariables(str, vars, constants) {
6
11
  const variables = str.match(/\{(.+?)\}/g);
7
12
  if (!variables)
@@ -25,3 +30,6 @@ function replaceVariables(str, vars, constants) {
25
30
  function isTemplate(key) {
26
31
  return key.toLowerCase().endsWith('template');
27
32
  }
33
+ function isValidTimezone(timezone) {
34
+ return moment_timezone_1.default.tz.zone(timezone) !== null;
35
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitaldefiance/i18n-lib",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Generic i18n library with enum translation support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -43,5 +43,9 @@
43
43
  ],
44
44
  "author": "Digital Defiance",
45
45
  "license": "MIT",
46
- "packageManager": "yarn@4.10.3"
46
+ "packageManager": "yarn@4.10.3",
47
+ "dependencies": {
48
+ "moment": "^2.30.1",
49
+ "moment-timezone": "^0.6.0"
50
+ }
47
51
  }