@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 +1 -0
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/locale.d.ts +7 -1
- package/lib/locale.js +39 -6
- package/lib/locale.js.map +1 -1
- package/lib/locale.spec.js +123 -0
- package/lib/locale.spec.js.map +1 -1
- package/lib/localized-component.d.ts +6 -1
- package/lib/localized-component.js +17 -4
- package/lib/localized-component.js.map +1 -1
- package/lib/react-localizer.spec.js +83 -29
- package/lib/react-localizer.spec.js.map +1 -1
- package/lib/utils.d.ts +4 -0
- package/lib/utils.js +12 -0
- package/lib/utils.js.map +1 -0
- package/lib/utils.spec.d.ts +1 -0
- package/lib/utils.spec.js +30 -0
- package/lib/utils.spec.js.map +1 -0
- package/package.json +14 -14
package/lib/index.d.ts
CHANGED
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.
|
|
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":"
|
|
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
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
|
package/lib/locale.spec.js
CHANGED
|
@@ -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
|
package/lib/locale.spec.js.map
CHANGED
|
@@ -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<
|
|
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) {
|
|
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) {
|
|
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,
|
|
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.
|
|
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 () {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
"
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
"
|
|
158
|
-
|
|
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":"
|
|
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
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
|
package/lib/utils.js.map
ADDED
|
@@ -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
|
|
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": "^
|
|
48
|
-
"@semantic-release/git": "^
|
|
49
|
-
"@testing-library/jest-dom": "^5.
|
|
50
|
-
"@testing-library/react": "^12.
|
|
51
|
-
"@testing-library/user-event": "^13.
|
|
52
|
-
"@types/jest": "^
|
|
53
|
-
"@types/react": "^17.0.
|
|
54
|
-
"@types/react-dom": "^17.0.
|
|
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": "^
|
|
58
|
-
"jest": "^27.
|
|
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": "^
|
|
62
|
-
"ts-jest": "^27.
|
|
63
|
-
"typescript": "^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": {
|