@zohodesk/i18n 1.0.0-beta.4 → 1.0.0-beta.41-murphy

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.
Files changed (70) hide show
  1. package/README.md +130 -4
  2. package/docs/murphy/01-MURPHY_OVERVIEW.md +148 -0
  3. package/docs/murphy/02-MURPHY_ARCHITECTURE.md +283 -0
  4. package/docs/murphy/03-MURPHY_BACKEND_CONFIG.md +337 -0
  5. package/docs/murphy/04-MURPHY_FRONTEND_INIT.md +437 -0
  6. package/docs/murphy/05-MURPHY_DESK_CLIENT_USAGE.md +467 -0
  7. package/docs/murphy/06-MURPHY_I18N_INTEGRATION.md +402 -0
  8. package/docs/murphy/07-MURPHY_WHY_I18N_APPROACH.md +391 -0
  9. package/es/I18NContext.js +1 -2
  10. package/es/components/DateTimeDiffFormat.js +185 -209
  11. package/es/components/FormatText.js +7 -27
  12. package/es/components/HOCI18N.js +35 -58
  13. package/es/components/I18N.js +48 -74
  14. package/es/components/I18NProvider.js +59 -93
  15. package/es/components/PluralFormat.js +28 -51
  16. package/es/components/UserTimeDiffFormat.js +66 -81
  17. package/es/components/__tests__/DateTimeDiffFormat.spec.js +810 -663
  18. package/es/components/__tests__/FormatText.spec.js +22 -19
  19. package/es/components/__tests__/HOCI18N.spec.js +19 -25
  20. package/es/components/__tests__/I18N.spec.js +23 -21
  21. package/es/components/__tests__/I18NProvider.spec.js +38 -47
  22. package/es/components/__tests__/PluralFormat.spec.js +23 -20
  23. package/es/components/__tests__/UserTimeDiffFormat.spec.js +1259 -1110
  24. package/es/index.js +13 -15
  25. package/es/utils/__tests__/jsxTranslations.spec.js +170 -0
  26. package/es/utils/errorReporter.js +41 -0
  27. package/es/utils/index.js +543 -0
  28. package/es/utils/jsxTranslations.js +185 -0
  29. package/lib/I18NContext.js +5 -10
  30. package/lib/components/DateTimeDiffFormat.js +131 -146
  31. package/lib/components/FormatText.js +29 -42
  32. package/lib/components/HOCI18N.js +34 -45
  33. package/lib/components/I18N.js +46 -57
  34. package/lib/components/I18NProvider.js +72 -95
  35. package/lib/components/PluralFormat.js +39 -55
  36. package/lib/components/UserTimeDiffFormat.js +76 -84
  37. package/lib/components/__tests__/DateTimeDiffFormat.spec.js +751 -635
  38. package/lib/components/__tests__/FormatText.spec.js +21 -30
  39. package/lib/components/__tests__/HOCI18N.spec.js +22 -41
  40. package/lib/components/__tests__/I18N.spec.js +20 -33
  41. package/lib/components/__tests__/I18NProvider.spec.js +40 -63
  42. package/lib/components/__tests__/PluralFormat.spec.js +23 -35
  43. package/lib/components/__tests__/UserTimeDiffFormat.spec.js +1195 -1046
  44. package/lib/index.js +83 -104
  45. package/lib/utils/__tests__/jsxTranslations.spec.js +172 -0
  46. package/lib/utils/errorReporter.js +49 -0
  47. package/lib/utils/index.js +583 -0
  48. package/lib/utils/jsxTranslations.js +216 -0
  49. package/package.json +4 -3
  50. package/src/components/DateTimeDiffFormat.js +84 -55
  51. package/src/components/I18N.js +2 -0
  52. package/src/components/I18NProvider.js +44 -33
  53. package/src/components/UserTimeDiffFormat.js +22 -18
  54. package/src/index.js +12 -9
  55. package/src/utils/__tests__/jsxTranslations.spec.js +213 -0
  56. package/src/utils/errorReporter.js +48 -0
  57. package/src/utils/index.js +644 -0
  58. package/src/utils/jsxTranslations.js +199 -0
  59. package/es/components/NewDateFormat.js +0 -50
  60. package/es/offset.js +0 -629
  61. package/es/timezones.js +0 -118
  62. package/es/utils.js +0 -621
  63. package/lib/components/NewDateFormat.js +0 -68
  64. package/lib/offset.js +0 -634
  65. package/lib/timezones.js +0 -129
  66. package/lib/utils.js +0 -651
  67. package/src/components/NewDateFormat.js +0 -60
  68. package/src/offset.js +0 -629
  69. package/src/timezones.js +0 -113
  70. package/src/utils.js +0 -648
package/lib/index.js CHANGED
@@ -1,243 +1,222 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.NewDateFormat = exports.getI18NValue = exports.UserTimeDiffFormat = exports.DateTimeDiffFormat = exports.PluralFormat = exports.FormatText = exports.HOCI18N = exports.I18N = exports.i18NProviderUtils = exports.I18NProvider = exports.I18NContext = exports.getTimezoneOffset = exports.unpack = exports.getFormatedDate = exports.getSuffix = exports.getLyears = exports.getDiffObj = exports.userDateFormat = exports.convertUserTzToUtc = exports.convertUtcToUserTz = exports.getUtcTimeStamp = exports.convertTimezone = exports.isTwoWeeksOrMore = exports.isWithinAWeek = exports.isTomorrow = exports.isYesterday = exports.isToday = exports.getI18NInfo = exports.getValues = exports.unescapeUnicode = exports.replaceI18NValuesWithRegex = exports.pad = exports.formatDate = exports.browserOffset = undefined;
7
-
8
- var _utils = require('./utils');
9
-
10
- Object.defineProperty(exports, 'browserOffset', {
7
+ Object.defineProperty(exports, "DateTimeDiffFormat", {
11
8
  enumerable: true,
12
9
  get: function get() {
13
- return _utils.browserOffset;
10
+ return _DateTimeDiffFormat["default"];
14
11
  }
15
12
  });
16
- Object.defineProperty(exports, 'formatDate', {
13
+ Object.defineProperty(exports, "FormatText", {
17
14
  enumerable: true,
18
15
  get: function get() {
19
- return _utils.formatDate;
16
+ return _FormatText["default"];
20
17
  }
21
18
  });
22
- Object.defineProperty(exports, 'pad', {
19
+ Object.defineProperty(exports, "HOCI18N", {
23
20
  enumerable: true,
24
21
  get: function get() {
25
- return _utils.pad;
22
+ return _HOCI18N["default"];
26
23
  }
27
24
  });
28
- Object.defineProperty(exports, 'replaceI18NValuesWithRegex', {
25
+ Object.defineProperty(exports, "I18N", {
29
26
  enumerable: true,
30
27
  get: function get() {
31
- return _utils.replaceI18NValuesWithRegex;
28
+ return _I18N["default"];
32
29
  }
33
30
  });
34
- Object.defineProperty(exports, 'unescapeUnicode', {
31
+ Object.defineProperty(exports, "I18NContext", {
35
32
  enumerable: true,
36
33
  get: function get() {
37
- return _utils.unescapeUnicode;
34
+ return _I18NContext.I18NContext;
38
35
  }
39
36
  });
40
- Object.defineProperty(exports, 'getValues', {
37
+ Object.defineProperty(exports, "I18NProvider", {
41
38
  enumerable: true,
42
39
  get: function get() {
43
- return _utils.getValues;
40
+ return _I18NProvider["default"];
44
41
  }
45
42
  });
46
- Object.defineProperty(exports, 'getI18NInfo', {
43
+ Object.defineProperty(exports, "I18N_ERROR_TYPES", {
47
44
  enumerable: true,
48
45
  get: function get() {
49
- return _utils.getI18NInfo;
46
+ return _errorReporter.I18N_ERROR_TYPES;
50
47
  }
51
48
  });
52
- Object.defineProperty(exports, 'isToday', {
49
+ Object.defineProperty(exports, "PluralFormat", {
53
50
  enumerable: true,
54
51
  get: function get() {
55
- return _utils.isToday;
52
+ return _PluralFormat["default"];
56
53
  }
57
54
  });
58
- Object.defineProperty(exports, 'isYesterday', {
55
+ Object.defineProperty(exports, "UserTimeDiffFormat", {
59
56
  enumerable: true,
60
57
  get: function get() {
61
- return _utils.isYesterday;
58
+ return _UserTimeDiffFormat["default"];
62
59
  }
63
60
  });
64
- Object.defineProperty(exports, 'isTomorrow', {
61
+ Object.defineProperty(exports, "dayi18n", {
65
62
  enumerable: true,
66
63
  get: function get() {
67
- return _utils.isTomorrow;
64
+ return _utils.dayi18n;
68
65
  }
69
66
  });
70
- Object.defineProperty(exports, 'isWithinAWeek', {
67
+ Object.defineProperty(exports, "formatDate", {
71
68
  enumerable: true,
72
69
  get: function get() {
73
- return _utils.isWithinAWeek;
70
+ return _utils.formatDate;
74
71
  }
75
72
  });
76
- Object.defineProperty(exports, 'isTwoWeeksOrMore', {
73
+ Object.defineProperty(exports, "getDatePatternWithoutYear", {
77
74
  enumerable: true,
78
75
  get: function get() {
79
- return _utils.isTwoWeeksOrMore;
76
+ return _utils.getDatePatternWithoutYear;
80
77
  }
81
78
  });
82
- Object.defineProperty(exports, 'convertTimezone', {
79
+ Object.defineProperty(exports, "getDiffObj", {
83
80
  enumerable: true,
84
81
  get: function get() {
85
- return _utils.convertTimezone;
82
+ return _utils.getDiffObj;
86
83
  }
87
84
  });
88
- Object.defineProperty(exports, 'getUtcTimeStamp', {
85
+ Object.defineProperty(exports, "getI18NInfo", {
89
86
  enumerable: true,
90
87
  get: function get() {
91
- return _utils.getUtcTimeStamp;
88
+ return _utils.getI18NInfo;
92
89
  }
93
90
  });
94
- Object.defineProperty(exports, 'convertUtcToUserTz', {
91
+ exports.getI18NValue = void 0;
92
+ Object.defineProperty(exports, "getLyears", {
95
93
  enumerable: true,
96
94
  get: function get() {
97
- return _utils.convertUtcToUserTz;
95
+ return _utils.getLyears;
98
96
  }
99
97
  });
100
- Object.defineProperty(exports, 'convertUserTzToUtc', {
98
+ Object.defineProperty(exports, "getSuffix", {
101
99
  enumerable: true,
102
100
  get: function get() {
103
- return _utils.convertUserTzToUtc;
101
+ return _utils.getSuffix;
104
102
  }
105
103
  });
106
- Object.defineProperty(exports, 'userDateFormat', {
104
+ Object.defineProperty(exports, "getValues", {
107
105
  enumerable: true,
108
106
  get: function get() {
109
- return _utils.userDateFormat;
107
+ return _utils.getValues;
110
108
  }
111
109
  });
112
- Object.defineProperty(exports, 'getDiffObj', {
110
+ Object.defineProperty(exports, "i18NProviderUtils", {
113
111
  enumerable: true,
114
112
  get: function get() {
115
- return _utils.getDiffObj;
113
+ return _I18NProvider.i18NProviderUtils;
116
114
  }
117
115
  });
118
- Object.defineProperty(exports, 'getLyears', {
116
+ Object.defineProperty(exports, "isToday", {
119
117
  enumerable: true,
120
118
  get: function get() {
121
- return _utils.getLyears;
119
+ return _utils.isToday;
122
120
  }
123
121
  });
124
- Object.defineProperty(exports, 'getSuffix', {
122
+ Object.defineProperty(exports, "isTomorrow", {
125
123
  enumerable: true,
126
124
  get: function get() {
127
- return _utils.getSuffix;
125
+ return _utils.isTomorrow;
128
126
  }
129
127
  });
130
- Object.defineProperty(exports, 'getFormatedDate', {
128
+ Object.defineProperty(exports, "isTwoWeeksOrMore", {
131
129
  enumerable: true,
132
130
  get: function get() {
133
- return _utils.getFormatedDate;
131
+ return _utils.isTwoWeeksOrMore;
134
132
  }
135
133
  });
136
-
137
- var _timezones = require('./timezones');
138
-
139
- Object.defineProperty(exports, 'unpack', {
134
+ Object.defineProperty(exports, "isWithinAWeek", {
140
135
  enumerable: true,
141
136
  get: function get() {
142
- return _timezones.unpack;
137
+ return _utils.isWithinAWeek;
143
138
  }
144
139
  });
145
- Object.defineProperty(exports, 'getTimezoneOffset', {
140
+ Object.defineProperty(exports, "isYesterday", {
146
141
  enumerable: true,
147
142
  get: function get() {
148
- return _timezones.getTimezoneOffset;
143
+ return _utils.isYesterday;
149
144
  }
150
145
  });
151
-
152
- var _I18NContext = require('./I18NContext');
153
-
154
- Object.defineProperty(exports, 'I18NContext', {
146
+ Object.defineProperty(exports, "monthi18n", {
155
147
  enumerable: true,
156
148
  get: function get() {
157
- return _I18NContext.I18NContext;
149
+ return _utils.monthi18n;
158
150
  }
159
151
  });
160
-
161
- var _I18NProvider = require('./components/I18NProvider');
162
-
163
- Object.defineProperty(exports, 'I18NProvider', {
152
+ Object.defineProperty(exports, "pad", {
164
153
  enumerable: true,
165
154
  get: function get() {
166
- return _interopRequireDefault(_I18NProvider).default;
155
+ return _utils.pad;
167
156
  }
168
157
  });
169
- Object.defineProperty(exports, 'i18NProviderUtils', {
158
+ Object.defineProperty(exports, "placeComponentForTags", {
170
159
  enumerable: true,
171
160
  get: function get() {
172
- return _I18NProvider.i18NProviderUtils;
161
+ return _jsxTranslations.placeComponentForTags;
173
162
  }
174
163
  });
175
-
176
- var _I18N = require('./components/I18N');
177
-
178
- Object.defineProperty(exports, 'I18N', {
164
+ Object.defineProperty(exports, "replaceI18NValuesWithRegex", {
179
165
  enumerable: true,
180
166
  get: function get() {
181
- return _interopRequireDefault(_I18N).default;
167
+ return _utils.replaceI18NValuesWithRegex;
182
168
  }
183
169
  });
184
-
185
- var _HOCI18N = require('./components/HOCI18N');
186
-
187
- Object.defineProperty(exports, 'HOCI18N', {
170
+ Object.defineProperty(exports, "reportI18NError", {
188
171
  enumerable: true,
189
172
  get: function get() {
190
- return _interopRequireDefault(_HOCI18N).default;
173
+ return _errorReporter.reportI18NError;
191
174
  }
192
175
  });
193
-
194
- var _FormatText = require('./components/FormatText');
195
-
196
- Object.defineProperty(exports, 'FormatText', {
176
+ Object.defineProperty(exports, "setI18NKeyMapping", {
197
177
  enumerable: true,
198
178
  get: function get() {
199
- return _interopRequireDefault(_FormatText).default;
179
+ return _utils.setI18NKeyMapping;
200
180
  }
201
181
  });
202
-
203
- var _PluralFormat = require('./components/PluralFormat');
204
-
205
- Object.defineProperty(exports, 'PluralFormat', {
182
+ Object.defineProperty(exports, "setLocalizedData", {
206
183
  enumerable: true,
207
184
  get: function get() {
208
- return _interopRequireDefault(_PluralFormat).default;
185
+ return _utils.setLocalizedData;
209
186
  }
210
187
  });
211
-
212
- var _DateTimeDiffFormat = require('./components/DateTimeDiffFormat');
213
-
214
- Object.defineProperty(exports, 'DateTimeDiffFormat', {
188
+ Object.defineProperty(exports, "timei18n", {
215
189
  enumerable: true,
216
190
  get: function get() {
217
- return _interopRequireDefault(_DateTimeDiffFormat).default;
191
+ return _utils.timei18n;
218
192
  }
219
193
  });
220
-
221
- var _UserTimeDiffFormat = require('./components/UserTimeDiffFormat');
222
-
223
- Object.defineProperty(exports, 'UserTimeDiffFormat', {
194
+ Object.defineProperty(exports, "unescapeUnicode", {
224
195
  enumerable: true,
225
196
  get: function get() {
226
- return _interopRequireDefault(_UserTimeDiffFormat).default;
197
+ return _utils.unescapeUnicode;
227
198
  }
228
199
  });
229
-
230
- var _NewDateFormat = require('./components/NewDateFormat');
231
-
232
- Object.defineProperty(exports, 'NewDateFormat', {
200
+ Object.defineProperty(exports, "userDateFormat", {
233
201
  enumerable: true,
234
202
  get: function get() {
235
- return _interopRequireDefault(_NewDateFormat).default;
203
+ return _utils.userDateFormat;
236
204
  }
237
205
  });
238
-
239
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
240
-
206
+ var _utils = require("./utils");
207
+ var _errorReporter = require("./utils/errorReporter");
208
+ var _I18NContext = require("./I18NContext");
209
+ var _I18NProvider = _interopRequireWildcard(require("./components/I18NProvider"));
210
+ var _I18N = _interopRequireDefault(require("./components/I18N"));
211
+ var _HOCI18N = _interopRequireDefault(require("./components/HOCI18N"));
212
+ var _FormatText = _interopRequireDefault(require("./components/FormatText"));
213
+ var _PluralFormat = _interopRequireDefault(require("./components/PluralFormat"));
214
+ var _DateTimeDiffFormat = _interopRequireDefault(require("./components/DateTimeDiffFormat"));
215
+ var _UserTimeDiffFormat = _interopRequireDefault(require("./components/UserTimeDiffFormat"));
216
+ var _jsxTranslations = require("./utils/jsxTranslations");
217
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
218
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
219
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
241
220
  var getI18NValue = exports.getI18NValue = function getI18NValue(i18n, key, values) {
242
221
  return (0, _utils.getI18NValue)(i18n)(key, values);
243
222
  };
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _jsxTranslations = require("../jsxTranslations");
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
6
+ function Bold(_ref) {
7
+ var children = _ref.children;
8
+ return /*#__PURE__*/_react["default"].createElement("b", null, children);
9
+ }
10
+ function Simple(props) {
11
+ return /*#__PURE__*/_react["default"].createElement("span", null, props.children);
12
+ }
13
+ describe('Verifying splitMatchedExp method', function () {
14
+ it('A string with no match test', function () {
15
+ var response = (0, _jsxTranslations.splitMatchedExp)({
16
+ expression: '{[0-9]+?}',
17
+ charLenToOmit: 1,
18
+ string: "Hello"
19
+ });
20
+ var expected = {
21
+ splitString: ['Hello'],
22
+ matchedExpKeys: []
23
+ };
24
+ expect(response).toEqual(expected);
25
+ });
26
+ it('A string with JSX Tag placeholder test', function () {
27
+ var response = (0, _jsxTranslations.splitMatchedExp)({
28
+ expression: '<[A-Za-z0-9]+?>',
29
+ charLenToOmit: 1,
30
+ string: "Hi <00Good> occurs <01Strong>"
31
+ });
32
+ var expected = {
33
+ splitString: ["Hi ", " occurs ", ""],
34
+ matchedExpKeys: ['00Good', '01Strong']
35
+ };
36
+ expect(response).toEqual(expected);
37
+ });
38
+ it('A string with String placeholder test', function () {
39
+ var response = (0, _jsxTranslations.splitMatchedExp)({
40
+ expression: '{[0-9]+?}',
41
+ charLenToOmit: 1,
42
+ string: "Hi {0} occurs {1}"
43
+ });
44
+ var expected = {
45
+ splitString: ["Hi ", " occurs ", ""],
46
+ matchedExpKeys: ['0', '1']
47
+ };
48
+ expect(response).toEqual(expected);
49
+ });
50
+ });
51
+ describe('Verifying generateChildren Method', function () {
52
+ it('A string with Tag Placeholder and String placeholders', function () {
53
+ var children = {
54
+ '00Good': function Good() {},
55
+ '01Strong': function Strong() {}
56
+ };
57
+ var response = (0, _jsxTranslations.generateChildren)({
58
+ children: children,
59
+ child: 'Hi <00Good>{0}<01Strong>'
60
+ });
61
+ var expected = {
62
+ newChildren: [['Hi '], children['00Good'], ['', ''], children['01Strong']],
63
+ stringPlaceHolders: {
64
+ 0: [],
65
+ 2: ['0']
66
+ }
67
+ };
68
+ expect(response).toEqual(expected);
69
+ });
70
+ });
71
+ describe('Verifying the replaceWithComponentPlaceHolder method', function () {
72
+ it('A JSX Tag with string', function () {
73
+ var response = (0, _jsxTranslations.replaceWithComponentPlaceHolder)({
74
+ componentId: 'Simple',
75
+ i18nKey: '<Simple>Hi everyone</Simple>',
76
+ childrenLength: 1
77
+ });
78
+ var expected = '<01Simple>';
79
+ expect(response).toBe(expected);
80
+ });
81
+ it('A string with multiple JSX Tags', function () {
82
+ var response = (0, _jsxTranslations.replaceWithComponentPlaceHolder)({
83
+ componentId: 'Simple',
84
+ i18nKey: 'Greetings <Simple>Hi everyone</Simple> for the <Simple>Day</Simple>',
85
+ childrenLength: 1
86
+ });
87
+ var expected = 'Greetings <01Simple> for the <Simple>Day</Simple>';
88
+ expect(response).toBe(expected);
89
+ });
90
+ });
91
+ describe('Verifying the createElement method', function () {
92
+ it('A component Id with JSX children and Dynamic String placeholders', function () {
93
+ var jsxChild = (0, _jsxTranslations.createElement)({
94
+ componentId: 'Simple',
95
+ children: [['Greetings']],
96
+ stringPlaceHolders: {
97
+ 0: []
98
+ }
99
+ });
100
+ var response = (0, _jsxTranslations.createElement)({
101
+ componentId: -1,
102
+ children: [['Hi ', ','], jsxChild, [' for the day']],
103
+ stringPlaceHolders: {
104
+ 0: ['0'],
105
+ 2: []
106
+ }
107
+ })({
108
+ components: {
109
+ Simple: {
110
+ type: Simple
111
+ }
112
+ },
113
+ values: ['Zoho Desk']
114
+ });
115
+ var expected = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Hi Zoho Desk,", /*#__PURE__*/_react["default"].createElement(Simple, null, "Greetings"), " for the day");
116
+ expect(JSON.stringify(response)).toEqual(JSON.stringify(expected));
117
+ });
118
+ });
119
+ describe('Verifying the prepareI18NFunc method', function () {
120
+ //Hi <Bo01ld>Gigiee</Bo01ld>,<Simple> How are you</Simple><Simple>Make it simple</Simple>
121
+ it('A text with sibling JSX tags and alphanumeric JSX Tags', function () {
122
+ var response = (0, _jsxTranslations.prepareI18NFunc)({
123
+ i18nKey: 'Hi <Bo01ld>Gigiee</Bo01ld>,<Simple>How are you</Simple><Simple>Make it simple</Simple>'
124
+ })({
125
+ components: {
126
+ 'Bo01ld': {
127
+ type: Bold
128
+ },
129
+ Simple: {
130
+ type: Simple
131
+ }
132
+ }
133
+ });
134
+ var expected = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Hi ", /*#__PURE__*/_react["default"].createElement(Bold, null, "Gigiee"), ",", /*#__PURE__*/_react["default"].createElement(Simple, null, "How are you"), /*#__PURE__*/_react["default"].createElement(Simple, null, "Make it simple"));
135
+ expect(JSON.stringify(response)).toEqual(JSON.stringify(expected));
136
+ });
137
+ });
138
+ describe('Verifying getI18NComponent method', function () {
139
+ it('An i18n key with JSX tag in its value', function () {
140
+ var i18n = {
141
+ 'support.demo': 'Hi <Bo01ld>Gigiee</Bo01ld>,<Simple>How are you</Simple><Simple>Make it simple</Simple>'
142
+ };
143
+ var I18N = (0, _jsxTranslations.getI18NComponent)(i18n);
144
+ var response = I18N('support.demo')({
145
+ components: {
146
+ 'Bo01ld': {
147
+ type: Bold
148
+ },
149
+ Simple: {
150
+ type: Simple
151
+ }
152
+ }
153
+ });
154
+ var expected = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Hi ", /*#__PURE__*/_react["default"].createElement(Bold, null, "Gigiee"), ",", /*#__PURE__*/_react["default"].createElement(Simple, null, "How are you"), /*#__PURE__*/_react["default"].createElement(Simple, null, "Make it simple"));
155
+ expect(JSON.stringify(response)).toEqual(JSON.stringify(expected));
156
+ });
157
+ it('Testing absence of i18n object', function () {
158
+ var I18N = (0, _jsxTranslations.getI18NComponent)();
159
+ var response = I18N('support.demo');
160
+ var expected = 'support.demo';
161
+ expect(expected).toBe(response);
162
+ });
163
+ it('Testing of missing i18n key', function () {
164
+ var i18n = {
165
+ 'support.demo': 'Demo'
166
+ };
167
+ var I18N = (0, _jsxTranslations.getI18NComponent)(i18n);
168
+ var response = I18N('support.need');
169
+ var expected = 'support.need';
170
+ expect(expected).toBe(response);
171
+ });
172
+ });
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.I18N_ERROR_TYPES = void 0;
7
+ exports.getFallbackText = getFallbackText;
8
+ exports.reportI18NError = reportI18NError;
9
+ var I18N_ERROR_TYPES = exports.I18N_ERROR_TYPES = {
10
+ UNDEFINED_OBJECT: 'I18N_UNDEFINED_OBJECT',
11
+ MISSING_KEY: 'I18N_MISSING_KEY',
12
+ NUMERIC_FALLBACK: 'I18N_NUMERIC_FALLBACK'
13
+ };
14
+ var reportedKeys = new Set();
15
+ function reportI18NError(type, key) {
16
+ var dedupeKey = "".concat(type, ":").concat(key);
17
+ if (reportedKeys.has(dedupeKey)) {
18
+ console.log("[i18n-reporter] SKIPPED (already reported): ".concat(dedupeKey));
19
+ return;
20
+ }
21
+ var errorMessage = "i18n ".concat(type, ": ").concat(key);
22
+ var errorData = {
23
+ errorType: type,
24
+ i18nKey: key,
25
+ category: 'i18n'
26
+ };
27
+ try {
28
+ if (typeof window._windowDeskCustomError === 'function') {
29
+ console.log("[i18n-reporter] Using DESK path (deskCustomError): ".concat(dedupeKey));
30
+ window._windowDeskCustomError(errorData, errorMessage, errorData);
31
+ } else if (window.murphy) {
32
+ console.log("[i18n-reporter] Using IM path (murphy direct): ".concat(dedupeKey));
33
+ window.murphy.addCustomTracking(errorData);
34
+ var error = new Error(errorMessage);
35
+ error.name = type;
36
+ window.murphy.error(error);
37
+ } else {
38
+ console.log("[i18n-reporter] SKIPPED (Murphy not loaded): ".concat(dedupeKey));
39
+ return;
40
+ }
41
+ } catch (err) {
42
+ console.error("[i18n-reporter] ERROR reporting: ".concat(dedupeKey), err);
43
+ }
44
+ reportedKeys.add(dedupeKey);
45
+ }
46
+ function getFallbackText(key) {
47
+ var isNumeric = /^\d+$/.test(key);
48
+ return isNumeric ? "text.unavailable.".concat(key) : key;
49
+ }