@entropic-bond/localize-react 1.0.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './locale';
2
2
  export * from './localized-component';
3
+ export * from './utils';
package/lib/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -12,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./locale"), exports);
14
18
  __exportStar(require("./localized-component"), exports);
19
+ __exportStar(require("./utils"), exports);
15
20
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAwB;AACxB,wDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,wDAAqC;AACrC,0CAAuB"}
package/lib/locale.d.ts CHANGED
@@ -5,16 +5,22 @@ interface LocaleConfig {
5
5
  export interface LocaleEntries {
6
6
  [key: string]: string;
7
7
  }
8
+ declare type Rule = (word: string, locale: string) => string;
8
9
  export declare class Locale {
9
10
  private constructor();
10
11
  static get instance(): Locale;
11
- static pluralize(word: string, amount: number, pluralizer: string): string;
12
+ pluralize(word: string, amount?: number, pluralizer?: (word: string, locale: string) => string): Promise<any>;
12
13
  static config(config: LocaleConfig): void;
13
14
  get(component: string): Promise<{}>;
14
15
  private fetchCache;
15
16
  private getLocaleFilePath;
17
+ static useRule(rule: Rule, locale: string): void;
18
+ static rules: {
19
+ endsY: (word: string, locale: string) => string;
20
+ };
16
21
  private static _instance;
17
22
  private static _registeredConfig;
23
+ private static _registeredRules;
18
24
  private _lang;
19
25
  private _localePath;
20
26
  private _pendingPromise;
package/lib/locale.js CHANGED
@@ -67,11 +67,31 @@ var Locale = /** @class */ (function () {
67
67
  enumerable: false,
68
68
  configurable: true
69
69
  });
70
- Locale.pluralize = function (word, amount, pluralizer) {
71
- if (amount > 1) {
72
- return word + pluralizer;
73
- }
74
- return word;
70
+ Locale.prototype.pluralize = function (word, amount, pluralizer) {
71
+ var _a;
72
+ if (amount === void 0) { amount = 0; }
73
+ return __awaiter(this, void 0, void 0, function () {
74
+ var plural, i, rules;
75
+ return __generator(this, function (_b) {
76
+ switch (_b.label) {
77
+ case 0:
78
+ if (amount === 1)
79
+ return [2 /*return*/, word];
80
+ return [4 /*yield*/, this.get('pluralizeExceptions')];
81
+ case 1:
82
+ plural = (_a = (_b.sent())) === null || _a === void 0 ? void 0 : _a[word];
83
+ if (plural)
84
+ return [2 /*return*/, plural];
85
+ plural = pluralizer === null || pluralizer === void 0 ? void 0 : pluralizer(word, this._lang);
86
+ i = 0;
87
+ rules = Locale._registeredRules[this._lang];
88
+ while (!plural && rules && i < rules.length) {
89
+ plural = rules[i++](word, this._lang);
90
+ }
91
+ return [2 /*return*/, plural || word + 's'];
92
+ }
93
+ });
94
+ });
75
95
  };
76
96
  Locale.config = function (config) {
77
97
  this._registeredConfig = __assign(__assign({}, this._registeredConfig), config);
@@ -118,12 +138,25 @@ var Locale = /** @class */ (function () {
118
138
  };
119
139
  Locale.prototype.getLocaleFilePath = function (locale) {
120
140
  if (this._lang.indexOf('http') < 0) {
121
- return this._localePath + "/" + (locale || this._lang) + ".json";
141
+ return "".concat(this._localePath, "/").concat(locale || this._lang, ".json");
122
142
  }
123
143
  return this._lang;
124
144
  };
145
+ Locale.useRule = function (rule, locale) {
146
+ if (!Locale._registeredRules[locale])
147
+ Locale._registeredRules[locale] = [];
148
+ Locale._registeredRules[locale].push(rule);
149
+ };
150
+ Locale.rules = {
151
+ endsY: function (word, locale) {
152
+ if (locale !== 'en')
153
+ return;
154
+ return word.slice(-1) === 'y' ? word.slice(0, -1) + 'ies' : word;
155
+ }
156
+ };
125
157
  Locale._instance = null;
126
158
  Locale._registeredConfig = {};
159
+ Locale._registeredRules = {};
127
160
  return Locale;
128
161
  }());
129
162
  exports.Locale = Locale;
package/lib/locale.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;IACC,gBAAqB,MAAoB;QAgEjC,oBAAe,GAAG,IAAI,CAAA;QACtB,WAAM,GAAO,IAAI,CAAA;QAhExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAA;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAA;IAC3C,CAAC;IAED,sBAAkB,kBAAQ;aAA1B;YACC,IAAK,CAAC,IAAI,CAAC,SAAS,EAAG;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAE,IAAI,CAAC,iBAAiB,CAAE,CAAA;aACrD;YACD,OAAO,IAAI,CAAC,SAAS,CAAA;QACtB,CAAC;;;OAAA;IAEM,gBAAS,GAAhB,UAAkB,IAAY,EAAE,MAAc,EAAE,UAAkB;QACjE,IAAK,MAAM,GAAG,CAAC,EAAG;YACjB,OAAO,IAAI,GAAG,UAAU,CAAA;SACxB;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,aAAM,GAAb,UAAe,MAAoB;QAClC,IAAI,CAAC,iBAAiB,yBAClB,IAAI,CAAC,iBAAiB,GACtB,MAAM,CACT,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACtB,CAAC;IAEK,oBAAG,GAAT,UAAW,SAAiB;;;;;;;6BACtB,CAAC,IAAI,CAAC,MAAM,EAAZ,wBAAY;wBAChB,KAAA,IAAI,CAAA;wBAAU,qBAAM,IAAI,CAAC,UAAU,CAClC;;;;;;4CAEW,qBAAM,KAAK,CAAE,IAAI,CAAC,iBAAiB,EAAE,CAAE,EAAA;gDAAhD,sBAAO,CAAE,SAAuC,CAAE,CAAC,IAAI,EAAE,EAAA;;;4CAGhD,qBAAM,KAAK,CAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAE,EAAA;gDAApD,sBAAO,CAAE,SAA2C,CAAE,CAAC,IAAI,EAAE,EAAA;;;;iCAE9D,CACD,EAAA;;wBATD,GAAK,MAAM,GAAG,SASb,CAAA;;4BAEF,sBAAO,IAAI,CAAC,MAAM,CAAE,SAAS,CAAE,EAAA;;;;KAC/B;IAEO,2BAAU,GAAlB,UAAyB,aAA+B;QACvD,IAAK,CAAC,IAAI,CAAC,eAAe,EAAG;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAO,UAAA,OAAO,IAAI,OAAA,OAAO,CAAE,aAAa,EAAE,CAAE,EAA1B,CAA0B,CAAE,CAAA;SAChF;QACD,OAAO,IAAI,CAAC,eAAe,CAAA;IAC5B,CAAC;IAEO,kCAAiB,GAAzB,UAA2B,MAAe;QACzC,IAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAG;YACrC,OAAW,IAAI,CAAC,WAAW,UAAM,MAAM,IAAI,IAAI,CAAC,KAAK,WAAQ,CAAA;SAC7D;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAEc,gBAAS,GAAW,IAAI,CAAA;IACxB,wBAAiB,GAAiB,EAAkB,CAAA;IAKpE,aAAC;CAAA,AAnED,IAmEC;AAnEY,wBAAM"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,10 @@ describe('Locale', function () {
52
52
  "moduleA": {
53
53
  "bye": "Bye",
54
54
  "goodMorning": "Good Morning"
55
+ },
56
+ "pluralizeExceptions": {
57
+ "mouse": "mice",
58
+ "foot": "feet"
55
59
  }
56
60
  };
57
61
  });
@@ -114,5 +118,124 @@ describe('Locale', function () {
114
118
  return [2 /*return*/];
115
119
  });
116
120
  }); });
121
+ describe('Pluralizer', function () {
122
+ it('should pluralize by default', function () { return __awaiter(void 0, void 0, void 0, function () {
123
+ var _a;
124
+ return __generator(this, function (_b) {
125
+ switch (_b.label) {
126
+ case 0:
127
+ _a = expect;
128
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple')];
129
+ case 1:
130
+ _a.apply(void 0, [_b.sent()]).toEqual('apples');
131
+ return [2 /*return*/];
132
+ }
133
+ });
134
+ }); });
135
+ it('should pluralize exceptions', function () { return __awaiter(void 0, void 0, void 0, function () {
136
+ var _a;
137
+ return __generator(this, function (_b) {
138
+ switch (_b.label) {
139
+ case 0:
140
+ _a = expect;
141
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('mouse')];
142
+ case 1:
143
+ _a.apply(void 0, [_b.sent()]).toEqual('mice');
144
+ return [2 /*return*/];
145
+ }
146
+ });
147
+ }); });
148
+ it('should not pluralize on amount equal to 1', function () { return __awaiter(void 0, void 0, void 0, function () {
149
+ var _a;
150
+ return __generator(this, function (_b) {
151
+ switch (_b.label) {
152
+ case 0:
153
+ _a = expect;
154
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 1)];
155
+ case 1:
156
+ _a.apply(void 0, [_b.sent()]).toEqual('apple');
157
+ return [2 /*return*/];
158
+ }
159
+ });
160
+ }); });
161
+ it('should pluralize on amounts greather than 1', function () { return __awaiter(void 0, void 0, void 0, function () {
162
+ var _a, _b;
163
+ return __generator(this, function (_c) {
164
+ switch (_c.label) {
165
+ case 0:
166
+ _a = expect;
167
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 2)];
168
+ case 1:
169
+ _a.apply(void 0, [_c.sent()]).toEqual('apples');
170
+ _b = expect;
171
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 3)];
172
+ case 2:
173
+ _b.apply(void 0, [_c.sent()]).toEqual('apples');
174
+ return [2 /*return*/];
175
+ }
176
+ });
177
+ }); });
178
+ it('should pluralize on negative amounts', function () { return __awaiter(void 0, void 0, void 0, function () {
179
+ var _a, _b, _c;
180
+ return __generator(this, function (_d) {
181
+ switch (_d.label) {
182
+ case 0:
183
+ _a = expect;
184
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -1)];
185
+ case 1:
186
+ _a.apply(void 0, [_d.sent()]).toEqual('apples');
187
+ _b = expect;
188
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -2)];
189
+ case 2:
190
+ _b.apply(void 0, [_d.sent()]).toEqual('apples');
191
+ _c = expect;
192
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -3)];
193
+ case 3:
194
+ _c.apply(void 0, [_d.sent()]).toEqual('apples');
195
+ return [2 /*return*/];
196
+ }
197
+ });
198
+ }); });
199
+ it('should pluralize on 0 amount', function () { return __awaiter(void 0, void 0, void 0, function () {
200
+ var _a;
201
+ return __generator(this, function (_b) {
202
+ switch (_b.label) {
203
+ case 0:
204
+ _a = expect;
205
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 0)];
206
+ case 1:
207
+ _a.apply(void 0, [_b.sent()]).toEqual('apples');
208
+ return [2 /*return*/];
209
+ }
210
+ });
211
+ }); });
212
+ it('should use provided pluralize function', function () { return __awaiter(void 0, void 0, void 0, function () {
213
+ var _a;
214
+ return __generator(this, function (_b) {
215
+ switch (_b.label) {
216
+ case 0:
217
+ _a = expect;
218
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('city', 0, locale_1.Locale.rules.endsY)];
219
+ case 1:
220
+ _a.apply(void 0, [_b.sent()]).toEqual('cities');
221
+ return [2 /*return*/];
222
+ }
223
+ });
224
+ }); });
225
+ it('should use rules', function () { return __awaiter(void 0, void 0, void 0, function () {
226
+ var _a;
227
+ return __generator(this, function (_b) {
228
+ switch (_b.label) {
229
+ case 0:
230
+ locale_1.Locale.useRule(locale_1.Locale.rules.endsY, 'en');
231
+ _a = expect;
232
+ return [4 /*yield*/, locale_1.Locale.instance.pluralize('city')];
233
+ case 1:
234
+ _a.apply(void 0, [_b.sent()]).toEqual('cities');
235
+ return [2 /*return*/];
236
+ }
237
+ });
238
+ }); });
239
+ });
117
240
  });
118
241
  //# sourceMappingURL=locale.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale.spec.js","sourceRoot":"","sources":["../src/locale.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,mCAAiC;AAEjC,QAAQ,CAAE,QAAQ,EAAE;IACnB,UAAU,CAAC;QACV,eAAM,CAAC,MAAM,CAAC;YACb,UAAU,EAAE,SAAS;SACrB,CAAC,CAAA;QACF,oBAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAO,OAAO;gBAC/C,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE;oBACV,KAAK,EAAE,KAAK;oBACZ,aAAa,EAAE,cAAc;iBAC7B;aACD,CAAA;QAAA,CAAC,CAAC,CAAA;QACH,oBAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAO,OAAO;gBAC/C,IAAI,EAAE,SAAS;aACf,CAAA;QAAA,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,SAAS,CAAE,cAAM,OAAA,oBAAS,CAAC,OAAO,EAAE,EAAnB,CAAmB,CAAE,CAAA;IAEtC,EAAE,CAAE,yBAAyB,EAAE;;;;;oBAC9B,KAAA,MAAM,CAAA;oBAAE,qBAAM,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAA;;oBAAvC,kBAAQ,SAA+B,EAAE,CAAC,OAAO,CAAE,OAAO,CAAE,CAAA;;;;SAC5D,CAAC,CAAA;IAEF,EAAE,CAAE,sBAAsB,EAAE;;;;;oBAC3B,eAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC/B,KAAA,MAAM,CAAA;oBAAE,qBAAM,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAA;;oBAAvC,kBAAQ,SAA+B,EAAE,CAAC,OAAO,CAAE,SAAS,CAAE,CAAA;;;;SAC9D,CAAC,CAAA;IAEF,EAAE,CAAE,+BAA+B,EAAE;;;;;oBACpC,eAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBACb,qBAAM,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE,EAAA;;oBAAlD,MAAM,GAAM,SAAsC;oBACxD,MAAM,CAAE,MAAM,CAAE,KAAK,CAAE,CAAE,CAAC,OAAO,CAAE,KAAK,CAAE,CAAA;oBAC1C,MAAM,CAAE,MAAM,CAAE,aAAa,CAAE,CAAE,CAAC,OAAO,CAAE,cAAc,CAAE,CAAA;;;;SAC3D,CAAC,CAAA;IAEF,EAAE,CAAE,yEAAyE,EAAE;;YAC9E,MAAM,CAAE,oBAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAE,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;YAC5C,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE,CAAA;YAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;YAC3B,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE,CAAC,KAAK,CAAC,CAAA;YACvC,MAAM,CAAE,oBAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAE,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;;;SAC7D,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"locale.spec.js","sourceRoot":"","sources":["../src/locale.spec.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,11 @@ export declare abstract class LocalizedComponent<P = {}, S extends LocalizedStat
22
22
  * with the class name.
23
23
  */
24
24
  abstract className(): string;
25
+ /**
26
+ * Override this method to get a notification when the locale has been loaded
27
+ * @param locale the loaded locale
28
+ */
29
+ onLoadLocale(locale: LocaleEntries): void;
25
30
  }
26
31
  /**
27
32
  * Decorator to inject locale capabilities. The decorator will set the component
@@ -38,7 +43,7 @@ export declare abstract class LocalizedComponent<P = {}, S extends LocalizedStat
38
43
  export declare function localize(className: string): <T extends new (...args: any[]) => {}>(constructor: T) => {
39
44
  new (...args: any[]): {
40
45
  state: any;
41
- loadLocale: Promise<any>;
46
+ loadLocale: Promise<void>;
42
47
  };
43
48
  } & T;
44
49
  /**
@@ -48,9 +48,18 @@ var LocalizedComponent = /** @class */ (function (_super) {
48
48
  Promise.all([
49
49
  locale_1.Locale.instance.get(_this.className()),
50
50
  locale_1.Locale.instance.get('Generic')
51
- ]).then(function (resp) { return _this.setState({ locale: __assign(__assign({}, resp[0]), resp[1]) }); });
51
+ ]).then(function (resp) {
52
+ var locale = __assign(__assign({}, resp[0]), resp[1]);
53
+ _this.setState({ locale: locale });
54
+ _this.onLoadLocale(locale);
55
+ });
52
56
  return _this;
53
57
  }
58
+ /**
59
+ * Override this method to get a notification when the locale has been loaded
60
+ * @param locale the loaded locale
61
+ */
62
+ LocalizedComponent.prototype.onLoadLocale = function (locale) { };
54
63
  return LocalizedComponent;
55
64
  }(react_1.Component));
56
65
  exports.LocalizedComponent = LocalizedComponent;
@@ -76,7 +85,11 @@ function localize(className) {
76
85
  _this.loadLocale = Promise.all([
77
86
  locale_1.Locale.instance.get(className),
78
87
  locale_1.Locale.instance.get('Generic')
79
- ]).then(function (resp) { return _this['setState']({ locale: __assign(__assign({}, resp[0]), resp[1]) }); });
88
+ ]).then(function (resp) {
89
+ var locale = __assign(__assign({}, resp[0]), resp[1]);
90
+ _this['setState']({ locale: locale });
91
+ _this['onLoadLocale'] && _this['onLoadLocale'](locale);
92
+ });
80
93
  return _this;
81
94
  }
82
95
  return class_1;
@@ -92,8 +105,8 @@ exports.localize = localize;
92
105
  * @returns an object with the localized strings
93
106
  */
94
107
  function useLocale(componentName) {
95
- var _a = react_1.useState({}), locale = _a[0], setLocale = _a[1];
96
- react_1.useEffect(function () {
108
+ var _a = (0, react_1.useState)({}), locale = _a[0], setLocale = _a[1];
109
+ (0, react_1.useEffect)(function () {
97
110
  Promise.all([
98
111
  locale_1.Locale.instance.get(componentName),
99
112
  locale_1.Locale.instance.get('Generic')
@@ -1 +1 @@
1
- {"version":3,"file":"localized-component.js","sourceRoot":"","sources":["../src/localized-component.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAsD;AACtD,mCAAgD;AAQhD;;;;;;;;;;GAUG;AACH;IAAgG,sCAAe;IAC9G,4BAAa,KAAQ;QAArB,YACC,kBAAO,KAAK,CAAE,SAQd;QANA,KAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAO,CAAA;QAEhC,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,KAAI,CAAC,SAAS,EAAE,CAAE;YACvC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,wBAAO,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,EAAE,CAAE,EAAtD,CAAsD,CAAC,CAAA;;IACzE,CAAC;IAOF,yBAAC;AAAD,CAAC,AAjBD,CAAgG,iBAAS,GAiBxG;AAjBqB,gDAAkB;AAmBxC;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAE,SAAiB;IAC1C,OAAO,UAAiD,WAAc;QACrE;YAAqB,2BAAW;YAAzB;gBAAA,qEAMN;gBALC,WAAK,cAAK,MAAM,EAAE,EAAE,IAAK,KAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,gBAAU,GAAG,OAAO,CAAC,GAAG,CAAC;oBACxB,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;oBAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;iBAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,wBAAO,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,EAAE,CAAE,EAAzD,CAAyD,CAAC,CAAA;;YAC7E,CAAC;YAAD,cAAC;QAAD,CAAC,AANM,CAAc,WAAW,GAM/B;IACF,CAAC,CAAA;AACF,CAAC;AAVD,4BAUC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAE,aAAqB;IACzC,IAAA,KAAwB,gBAAQ,CAAC,EAA+B,CAAC,EAA/D,MAAM,QAAA,EAAE,SAAS,QAA8C,CAAA;IAEvE,iBAAS,CAAE;QAEV,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,aAAa,CAAE;YACpC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI,IAAI,OAAA,SAAS,uBAAM,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,EAAG,EAArC,CAAqC,CAAC,CAAA;IAExD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,MAAM,CAAA;AACd,CAAC;AAbD,8BAaC"}
1
+ {"version":3,"file":"localized-component.js","sourceRoot":"","sources":["../src/localized-component.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAsD;AACtD,mCAAgD;AAQhD;;;;;;;;;;GAUG;AACH;IAAgG,sCAAe;IAC9G,4BAAa,KAAQ;QAArB,YACC,kBAAO,KAAK,CAAE,SAad;QAXA,KAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAO,CAAA;QAEhC,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,KAAI,CAAC,SAAS,EAAE,CAAE;YACvC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI;YACZ,IAAM,MAAM,yBAAQ,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA;YAEzC,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAG,CAAC,CAAA;YAC1B,KAAI,CAAC,YAAY,CAAE,MAAM,CAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;;IACH,CAAC;IAQD;;;OAGG;IACH,yCAAY,GAAZ,UAAc,MAAqB,IAAI,CAAC;IACzC,yBAAC;AAAD,CAAC,AA5BD,CAAgG,iBAAS,GA4BxG;AA5BqB,gDAAkB;AA8BxC;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAE,SAAiB;IAC1C,OAAO,UAAiD,WAAc;QACrE;YAAqB,2BAAW;YAAzB;gBAAA,qEAUN;gBATC,WAAK,cAAK,MAAM,EAAE,EAAE,IAAK,KAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,gBAAU,GAAG,OAAO,CAAC,GAAG,CAAC;oBACxB,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;oBAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;iBAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI;oBACZ,IAAM,MAAM,yBAAQ,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA;oBACzC,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;oBAC5B,KAAI,CAAC,cAAc,CAAC,IAAI,KAAI,CAAC,cAAc,CAAC,CAAE,MAAM,CAAE,CAAA;gBACvD,CAAC,CAAC,CAAA;;YACJ,CAAC;YAAD,cAAC;QAAD,CAAC,AAVM,CAAc,WAAW,GAU/B;IACF,CAAC,CAAA;AACF,CAAC;AAdD,4BAcC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAE,aAAqB;IACzC,IAAA,KAAwB,IAAA,gBAAQ,EAAC,EAA+B,CAAC,EAA/D,MAAM,QAAA,EAAE,SAAS,QAA8C,CAAA;IAEvE,IAAA,iBAAS,EAAE;QAEV,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,aAAa,CAAE;YACpC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI,IAAI,OAAA,SAAS,uBAAM,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,EAAG,EAArC,CAAqC,CAAC,CAAA;IAExD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,MAAM,CAAA;AACd,CAAC;AAbD,8BAaC"}
@@ -27,7 +27,11 @@ var __assign = (this && this.__assign) || function () {
27
27
  };
28
28
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
29
  if (k2 === undefined) k2 = k;
30
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
30
+ var desc = Object.getOwnPropertyDescriptor(m, k);
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = { enumerable: true, get: function() { return m[k]; } };
33
+ }
34
+ Object.defineProperty(o, k2, desc);
31
35
  }) : (function(o, m, k, k2) {
32
36
  if (k2 === undefined) k2 = k;
33
37
  o[k2] = m[k];
@@ -95,6 +99,7 @@ var react_2 = require("@testing-library/react");
95
99
  var fetch_mock_1 = __importDefault(require("fetch-mock"));
96
100
  var locale_1 = require("./locale");
97
101
  var localized_component_1 = require("./localized-component");
102
+ var loadedSpy = jest.fn();
98
103
  var LocalizedWithDecorator = /** @class */ (function (_super) {
99
104
  __extends(LocalizedWithDecorator, _super);
100
105
  function LocalizedWithDecorator(props) {
@@ -104,6 +109,9 @@ var LocalizedWithDecorator = /** @class */ (function (_super) {
104
109
  };
105
110
  return _this;
106
111
  }
112
+ LocalizedWithDecorator.prototype.onLoadLocale = function (locale) {
113
+ loadedSpy(locale);
114
+ };
107
115
  LocalizedWithDecorator.prototype.render = function () {
108
116
  return (react_1.default.createElement("div", null,
109
117
  react_1.default.createElement("p", { "data-testid": "casa" },
@@ -112,7 +120,7 @@ var LocalizedWithDecorator = /** @class */ (function (_super) {
112
120
  react_1.default.createElement("span", null, this.state.someState)));
113
121
  };
114
122
  LocalizedWithDecorator = __decorate([
115
- localized_component_1.localize('LocalizedWithDecorator')
123
+ (0, localized_component_1.localize)('LocalizedWithDecorator')
116
124
  ], LocalizedWithDecorator);
117
125
  return LocalizedWithDecorator;
118
126
  }(react_1.Component));
@@ -123,6 +131,9 @@ var LocalizedWithClass = /** @class */ (function (_super) {
123
131
  _this.state = __assign({ someState: 'a class nice starting point' }, _this.state);
124
132
  return _this;
125
133
  }
134
+ LocalizedWithClass.prototype.onLoadLocale = function (locale) {
135
+ loadedSpy(locale);
136
+ };
126
137
  LocalizedWithClass.prototype.render = function () {
127
138
  return (react_1.default.createElement("div", null,
128
139
  react_1.default.createElement("p", { "data-testid": "casa" },
@@ -136,44 +147,42 @@ var LocalizedWithClass = /** @class */ (function (_super) {
136
147
  return LocalizedWithClass;
137
148
  }(localized_component_1.LocalizedComponent));
138
149
  function LocalizedWithHook() {
139
- var locale = localized_component_1.useLocale('LocalizedWithHook');
150
+ var locale = (0, localized_component_1.useLocale)('LocalizedWithHook');
140
151
  return (react_1.default.createElement("div", null,
141
152
  react_1.default.createElement("p", { "data-testid": "casa" },
142
153
  "Casa es ",
143
154
  locale.house)));
144
155
  }
145
156
  describe('React Component Localizer', function () {
146
- beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
147
- return __generator(this, function (_a) {
148
- locale_1.Locale.config({
149
- localePath: 'locales'
150
- });
151
- fetch_mock_1.default.mock('locales/en.json', function () {
152
- return {
153
- "hi": "Hello",
154
- "LocalizedWithClass": {
155
- "house": "albergo"
156
- },
157
- "LocalizedWithDecorator": {
158
- "house": "maison"
159
- },
160
- "LocalizedWithHook": {
161
- "house": "morada"
162
- }
163
- };
164
- });
165
- return [2 /*return*/];
157
+ beforeEach(function () {
158
+ fetch_mock_1.default.mock('locales/en.json', function () {
159
+ return {
160
+ "hi": "Hello",
161
+ "LocalizedWithClass": {
162
+ "house": "albergo"
163
+ },
164
+ "LocalizedWithDecorator": {
165
+ "house": "maison"
166
+ },
167
+ "LocalizedWithHook": {
168
+ "house": "morada"
169
+ }
170
+ };
166
171
  });
167
- }); });
172
+ locale_1.Locale.config({
173
+ localePath: 'locales'
174
+ });
175
+ });
168
176
  afterEach(function () {
169
177
  fetch_mock_1.default.restore();
178
+ loadedSpy.mockReset();
170
179
  });
171
180
  it('should render localized word with decorator', function () { return __awaiter(void 0, void 0, void 0, function () {
172
181
  var wrapper, elem;
173
182
  return __generator(this, function (_a) {
174
183
  switch (_a.label) {
175
184
  case 0:
176
- wrapper = react_2.render(react_1.default.createElement(LocalizedWithDecorator, null));
185
+ wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
177
186
  return [4 /*yield*/, wrapper.findByText('Casa es maison')];
178
187
  case 1:
179
188
  elem = _a.sent();
@@ -187,7 +196,7 @@ describe('React Component Localizer', function () {
187
196
  return __generator(this, function (_a) {
188
197
  switch (_a.label) {
189
198
  case 0:
190
- wrapper = react_2.render(react_1.default.createElement(LocalizedWithClass, null));
199
+ wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
191
200
  return [4 /*yield*/, wrapper.findByText('Casa es albergo')];
192
201
  case 1:
193
202
  elem = _a.sent();
@@ -201,8 +210,8 @@ describe('React Component Localizer', function () {
201
210
  return __generator(this, function (_c) {
202
211
  switch (_c.label) {
203
212
  case 0:
204
- classWrapper = react_2.render(react_1.default.createElement(LocalizedWithClass, null));
205
- decoratorWrapper = react_2.render(react_1.default.createElement(LocalizedWithDecorator, null));
213
+ classWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
214
+ decoratorWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
206
215
  _a = expect;
207
216
  return [4 /*yield*/, classWrapper.findByText('a class nice starting point')];
208
217
  case 1:
@@ -220,7 +229,7 @@ describe('React Component Localizer', function () {
220
229
  return __generator(this, function (_a) {
221
230
  switch (_a.label) {
222
231
  case 0:
223
- wrapper = react_2.render(react_1.default.createElement(LocalizedWithHook, null));
232
+ wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithHook, null));
224
233
  return [4 /*yield*/, wrapper.findByText('Casa es morada')];
225
234
  case 1:
226
235
  elem = _a.sent();
@@ -229,5 +238,50 @@ describe('React Component Localizer', function () {
229
238
  }
230
239
  });
231
240
  }); });
241
+ it('should wait locale json to load', function () { return __awaiter(void 0, void 0, void 0, function () {
242
+ var wrapper, elem;
243
+ return __generator(this, function (_a) {
244
+ switch (_a.label) {
245
+ case 0:
246
+ locale_1.Locale.config({
247
+ locale: 'en'
248
+ });
249
+ wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
250
+ return [4 /*yield*/, wrapper.findByText('Casa es maison')];
251
+ case 1:
252
+ elem = _a.sent();
253
+ expect(elem).toBeInTheDocument();
254
+ return [2 /*return*/];
255
+ }
256
+ });
257
+ }); });
258
+ it('should notify on locale loaded with decorator', function () { return __awaiter(void 0, void 0, void 0, function () {
259
+ var wrapper;
260
+ return __generator(this, function (_a) {
261
+ switch (_a.label) {
262
+ case 0:
263
+ wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
264
+ return [4 /*yield*/, wrapper.findByText('Casa es maison')];
265
+ case 1:
266
+ _a.sent();
267
+ expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'maison' }));
268
+ return [2 /*return*/];
269
+ }
270
+ });
271
+ }); });
272
+ it('should notify on locale loaded with class', function () { return __awaiter(void 0, void 0, void 0, function () {
273
+ var wrapper;
274
+ return __generator(this, function (_a) {
275
+ switch (_a.label) {
276
+ case 0:
277
+ wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
278
+ return [4 /*yield*/, wrapper.findByText('Casa es albergo')];
279
+ case 1:
280
+ _a.sent();
281
+ expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'albergo' }));
282
+ return [2 /*return*/];
283
+ }
284
+ });
285
+ }); });
232
286
  });
233
287
  //# sourceMappingURL=react-localizer.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-localizer.spec.js","sourceRoot":"","sources":["../src/react-localizer.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-localizer.spec.js","sourceRoot":"","sources":["../src/react-localizer.spec.tsx"],"names":[],"mappings":"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"}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export interface TemplateValues {
2
+ [templateName: string]: string;
3
+ }
4
+ export declare function fillTemplate(text: string, values: TemplateValues): string;
package/lib/utils.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fillTemplate = void 0;
4
+ function fillTemplate(text, values) {
5
+ if (!text)
6
+ return '';
7
+ return text.replace(/\${\s*(\w*)\s*}/g, function (_match, group) {
8
+ return values[group] || '';
9
+ });
10
+ }
11
+ exports.fillTemplate = fillTemplate;
12
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,YAAY,CAAE,IAAY,EAAE,MAAsB;IACjE,IAAK,CAAC,IAAI;QAAG,OAAO,EAAE,CAAA;IAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,MAAM,EAAG,KAAK;QAC/D,OAAO,MAAM,CAAE,KAAK,CAAE,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACJ,CAAC;AAND,oCAMC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var utils_1 = require("./utils");
4
+ describe('Utils', function () {
5
+ describe('fillTemplates', function () {
6
+ var text = 'The population of ${country} is ${ people} million \
7
+ and the GDP is $${ gdpValue } million';
8
+ var expected = 'The population of U.S.A. is 100 million \
9
+ and the GDP is $1000 million';
10
+ var vars = {
11
+ country: 'U.S.A.',
12
+ people: '100',
13
+ gdpValue: '1000'
14
+ };
15
+ it('should replace vars as a template literal', function () {
16
+ expect((0, utils_1.fillTemplate)(text, vars)).toEqual(expected);
17
+ });
18
+ it('should replace vars with empty value', function () {
19
+ vars.country = '';
20
+ vars.people = undefined;
21
+ expect((0, utils_1.fillTemplate)('The population of ${country} is ${ people} million', vars)).toEqual('The population of is million');
22
+ });
23
+ it('should resturn empty string on falsy', function () {
24
+ expect((0, utils_1.fillTemplate)(undefined, vars)).toEqual('');
25
+ expect((0, utils_1.fillTemplate)(null, vars)).toEqual('');
26
+ expect((0, utils_1.fillTemplate)('', vars)).toEqual('');
27
+ });
28
+ });
29
+ });
30
+ //# sourceMappingURL=utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":";;AAAA,iCAAsC;AAEtC,QAAQ,CAAE,OAAO,EAAE;IAClB,QAAQ,CAAE,eAAe,EAAE;QAC1B,IAAM,IAAI,GAAG;iDACkC,CAAA;QAC/C,IAAM,QAAQ,GAAG;wCACqB,CAAA;QACtC,IAAM,IAAI,GAAG;YACZ,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;SAChB,CAAA;QAED,EAAE,CAAE,2CAA2C,EAAE;YAChD,MAAM,CAAE,IAAA,oBAAY,EAAE,IAAI,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,QAAQ,CAAE,CAAA;QACzD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAE,sCAAsC,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;YAEvB,MAAM,CACL,IAAA,oBAAY,EACX,oDAAoD,EACpD,IAAI,CACJ,CACD,CAAC,OAAO,CAAE,gCAAgC,CAAE,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAE,sCAAsC,EAAE;YAC3C,MAAM,CAAE,IAAA,oBAAY,EAAE,SAAS,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;YACvD,MAAM,CAAE,IAAA,oBAAY,EAAE,IAAI,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;YAClD,MAAM,CAAE,IAAA,oBAAY,EAAE,EAAE,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;QACjD,CAAC,CAAC,CAAA;IAEH,CAAC,CAAC,CAAA;AAEH,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entropic-bond/localize-react",
3
- "version": "1.0.1",
3
+ "version": "1.3.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "branches": [
@@ -44,23 +44,23 @@
44
44
  },
45
45
  "homepage": "https://github.com/entropic-bond/localize-react#readme",
46
46
  "devDependencies": {
47
- "@semantic-release/changelog": "^5.0.1",
48
- "@semantic-release/git": "^9.0.0",
49
- "@testing-library/jest-dom": "^5.14.1",
50
- "@testing-library/react": "^12.0.0",
51
- "@testing-library/user-event": "^13.2.1",
52
- "@types/jest": "^26.0.23",
53
- "@types/react": "^17.0.15",
54
- "@types/react-dom": "^17.0.9",
47
+ "@semantic-release/changelog": "^6.0.1",
48
+ "@semantic-release/git": "^10.0.1",
49
+ "@testing-library/jest-dom": "^5.16.2",
50
+ "@testing-library/react": "^12.1.3",
51
+ "@testing-library/user-event": "^13.5.0",
52
+ "@types/jest": "^27.4.1",
53
+ "@types/react": "^17.0.39",
54
+ "@types/react-dom": "^17.0.13",
55
55
  "fetch-mock": "^9.11.0",
56
56
  "git-branch-is": "^4.0.0",
57
- "husky": "^6.0.0",
58
- "jest": "^27.0.5",
57
+ "husky": "^7.0.4",
58
+ "jest": "^27.5.1",
59
59
  "react": "^17.0.2",
60
60
  "react-dom": "^17.0.2",
61
- "semantic-release": "^17.4.4",
62
- "ts-jest": "^27.0.3",
63
- "typescript": "^4.3.4"
61
+ "semantic-release": "^19.0.2",
62
+ "ts-jest": "^27.1.3",
63
+ "typescript": "^4.6.2"
64
64
  },
65
65
  "husky": {
66
66
  "hooks": {