@zohodesk/i18n 1.0.0-beta.34 → 1.0.0-beta.35-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 (51) hide show
  1. package/docs/murphy/01-MURPHY_OVERVIEW.md +148 -0
  2. package/docs/murphy/02-MURPHY_ARCHITECTURE.md +283 -0
  3. package/docs/murphy/03-MURPHY_BACKEND_CONFIG.md +337 -0
  4. package/docs/murphy/04-MURPHY_FRONTEND_INIT.md +437 -0
  5. package/docs/murphy/05-MURPHY_DESK_CLIENT_USAGE.md +467 -0
  6. package/docs/murphy/06-MURPHY_I18N_INTEGRATION.md +402 -0
  7. package/docs/murphy/07-MURPHY_WHY_I18N_APPROACH.md +391 -0
  8. package/es/components/DateTimeDiffFormat.js +5 -19
  9. package/es/components/FormatText.js +2 -2
  10. package/es/components/HOCI18N.js +32 -43
  11. package/es/components/I18N.js +2 -13
  12. package/es/components/I18NProvider.js +0 -9
  13. package/es/components/PluralFormat.js +3 -5
  14. package/es/components/UserTimeDiffFormat.js +5 -9
  15. package/es/components/__tests__/DateTimeDiffFormat.spec.js +157 -221
  16. package/es/components/__tests__/FormatText.spec.js +2 -2
  17. package/es/components/__tests__/HOCI18N.spec.js +2 -4
  18. package/es/components/__tests__/I18N.spec.js +6 -4
  19. package/es/components/__tests__/I18NProvider.spec.js +4 -4
  20. package/es/components/__tests__/PluralFormat.spec.js +2 -2
  21. package/es/components/__tests__/UserTimeDiffFormat.spec.js +249 -348
  22. package/es/index.js +1 -0
  23. package/es/utils/__tests__/jsxTranslations.spec.js +3 -7
  24. package/es/utils/errorReporter.js +31 -0
  25. package/es/utils/index.js +42 -92
  26. package/es/utils/jsxTranslations.js +34 -52
  27. package/lib/I18NContext.js +2 -7
  28. package/lib/components/DateTimeDiffFormat.js +46 -87
  29. package/lib/components/FormatText.js +18 -41
  30. package/lib/components/HOCI18N.js +24 -59
  31. package/lib/components/I18N.js +27 -64
  32. package/lib/components/I18NProvider.js +27 -63
  33. package/lib/components/PluralFormat.js +24 -50
  34. package/lib/components/UserTimeDiffFormat.js +43 -72
  35. package/lib/components/__tests__/DateTimeDiffFormat.spec.js +95 -165
  36. package/lib/components/__tests__/FormatText.spec.js +3 -10
  37. package/lib/components/__tests__/HOCI18N.spec.js +3 -14
  38. package/lib/components/__tests__/I18N.spec.js +4 -12
  39. package/lib/components/__tests__/I18NProvider.spec.js +8 -23
  40. package/lib/components/__tests__/PluralFormat.spec.js +3 -11
  41. package/lib/components/__tests__/UserTimeDiffFormat.spec.js +157 -225
  42. package/lib/index.js +25 -23
  43. package/lib/utils/__tests__/jsxTranslations.spec.js +1 -12
  44. package/lib/utils/errorReporter.js +39 -0
  45. package/lib/utils/index.js +49 -125
  46. package/lib/utils/jsxTranslations.js +61 -100
  47. package/package.json +1 -1
  48. package/src/index.js +5 -0
  49. package/src/utils/errorReporter.js +36 -0
  50. package/src/utils/index.js +8 -1
  51. package/src/utils/jsxTranslations.js +8 -1
package/lib/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
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); }
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -41,6 +40,12 @@ Object.defineProperty(exports, "I18NProvider", {
41
40
  return _I18NProvider["default"];
42
41
  }
43
42
  });
43
+ Object.defineProperty(exports, "I18N_ERROR_TYPES", {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _errorReporter.I18N_ERROR_TYPES;
47
+ }
48
+ });
44
49
  Object.defineProperty(exports, "PluralFormat", {
45
50
  enumerable: true,
46
51
  get: function get() {
@@ -53,6 +58,12 @@ Object.defineProperty(exports, "UserTimeDiffFormat", {
53
58
  return _UserTimeDiffFormat["default"];
54
59
  }
55
60
  });
61
+ Object.defineProperty(exports, "clearReportedKeys", {
62
+ enumerable: true,
63
+ get: function get() {
64
+ return _errorReporter.clearReportedKeys;
65
+ }
66
+ });
56
67
  Object.defineProperty(exports, "dayi18n", {
57
68
  enumerable: true,
58
69
  get: function get() {
@@ -162,6 +173,12 @@ Object.defineProperty(exports, "replaceI18NValuesWithRegex", {
162
173
  return _utils.replaceI18NValuesWithRegex;
163
174
  }
164
175
  });
176
+ Object.defineProperty(exports, "reportI18NError", {
177
+ enumerable: true,
178
+ get: function get() {
179
+ return _errorReporter.reportI18NError;
180
+ }
181
+ });
165
182
  Object.defineProperty(exports, "setI18NKeyMapping", {
166
183
  enumerable: true,
167
184
  get: function get() {
@@ -192,35 +209,20 @@ Object.defineProperty(exports, "userDateFormat", {
192
209
  return _utils.userDateFormat;
193
210
  }
194
211
  });
195
-
196
212
  var _utils = require("./utils");
197
-
213
+ var _errorReporter = require("./utils/errorReporter");
198
214
  var _I18NContext = require("./I18NContext");
199
-
200
215
  var _I18NProvider = _interopRequireWildcard(require("./components/I18NProvider"));
201
-
202
216
  var _I18N = _interopRequireDefault(require("./components/I18N"));
203
-
204
217
  var _HOCI18N = _interopRequireDefault(require("./components/HOCI18N"));
205
-
206
218
  var _FormatText = _interopRequireDefault(require("./components/FormatText"));
207
-
208
219
  var _PluralFormat = _interopRequireDefault(require("./components/PluralFormat"));
209
-
210
220
  var _DateTimeDiffFormat = _interopRequireDefault(require("./components/DateTimeDiffFormat"));
211
-
212
221
  var _UserTimeDiffFormat = _interopRequireDefault(require("./components/UserTimeDiffFormat"));
213
-
214
222
  var _jsxTranslations = require("./utils/jsxTranslations");
215
-
216
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
217
-
218
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
219
-
220
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
221
-
222
- var getI18NValue = function getI18NValue(i18n, key, values) {
223
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
224
+ 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); }
225
+ 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; }
226
+ var getI18NValue = exports.getI18NValue = function getI18NValue(i18n, key, values) {
223
227
  return (0, _utils.getI18NValue)(i18n)(key, values);
224
- };
225
-
226
- exports.getI18NValue = getI18NValue;
228
+ };
@@ -1,20 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _react = _interopRequireDefault(require("react"));
4
-
5
4
  var _jsxTranslations = require("../jsxTranslations");
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
-
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
6
  function Bold(_ref) {
10
7
  var children = _ref.children;
11
8
  return /*#__PURE__*/_react["default"].createElement("b", null, children);
12
9
  }
13
-
14
10
  function Simple(props) {
15
11
  return /*#__PURE__*/_react["default"].createElement("span", null, props.children);
16
12
  }
17
-
18
13
  describe('Verifying splitMatchedExp method', function () {
19
14
  it('A string with no match test', function () {
20
15
  var response = (0, _jsxTranslations.splitMatchedExp)({
@@ -117,9 +112,7 @@ describe('Verifying the createElement method', function () {
117
112
  },
118
113
  values: ['Zoho Desk']
119
114
  });
120
-
121
115
  var expected = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Hi Zoho Desk,", /*#__PURE__*/_react["default"].createElement(Simple, null, "Greetings"), " for the day");
122
-
123
116
  expect(JSON.stringify(response)).toEqual(JSON.stringify(expected));
124
117
  });
125
118
  });
@@ -138,9 +131,7 @@ describe('Verifying the prepareI18NFunc method', function () {
138
131
  }
139
132
  }
140
133
  });
141
-
142
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"));
143
-
144
135
  expect(JSON.stringify(response)).toEqual(JSON.stringify(expected));
145
136
  });
146
137
  });
@@ -160,9 +151,7 @@ describe('Verifying getI18NComponent method', function () {
160
151
  }
161
152
  }
162
153
  });
163
-
164
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"));
165
-
166
155
  expect(JSON.stringify(response)).toEqual(JSON.stringify(expected));
167
156
  });
168
157
  it('Testing absence of i18n object', function () {
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.I18N_ERROR_TYPES = void 0;
7
+ exports.clearReportedKeys = clearReportedKeys;
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 isMurphyAvailable() {
16
+ return typeof murphy !== 'undefined' && typeof murphy.error === 'function';
17
+ }
18
+ function reportI18NError(type, key) {
19
+ var dedupeKey = "".concat(type, ":").concat(key);
20
+ if (reportedKeys.has(dedupeKey)) {
21
+ return;
22
+ }
23
+ reportedKeys.add(dedupeKey);
24
+ if (isMurphyAvailable()) {
25
+ var error = new Error("i18n ".concat(type, ": ").concat(key));
26
+ error.name = type;
27
+ murphy.error(error, undefined, {
28
+ customTags: {
29
+ errorType: type,
30
+ i18nKey: key,
31
+ category: 'i18n'
32
+ },
33
+ preventClientGrouping: true
34
+ });
35
+ }
36
+ }
37
+ function clearReportedKeys() {
38
+ reportedKeys.clear();
39
+ }