@chaoswise/intl 2.1.3 → 2.1.4

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.js CHANGED
@@ -25,5 +25,5 @@ _Object$defineProperty(exports, "useIntl", {
25
25
  });
26
26
  var _useIntl = _interopRequireDefault(require("./useIntl"));
27
27
  var _context = _interopRequireDefault(require("./useIntl/context"));
28
- var _reactIntlUniversal = _interopRequireDefault(require("react-intl-universal"));
28
+ var _reactIntlUniversal = _interopRequireDefault(require("./react-intl-universal"));
29
29
  _reactIntlUniversal["default"].options.escapeHtml = false;
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ _Object$defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports["default"] = void 0;
12
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
13
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
14
+ var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
15
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
16
+ var _urlSearchParams = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/url-search-params"));
17
+ var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
18
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
19
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
20
+ var _react = _interopRequireDefault(require("react"));
21
+ var _intlMessageformat = _interopRequireDefault(require("intl-messageformat"));
22
+ var _escapeHtml = _interopRequireDefault(require("escape-html"));
23
+ var _cookie = _interopRequireDefault(require("cookie"));
24
+ var _invariant = _interopRequireDefault(require("invariant"));
25
+ var constants = _interopRequireWildcard(require("./constants"));
26
+ var _lodash = _interopRequireDefault(require("lodash.merge"));
27
+ 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); }
28
+ 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 && Object.prototype.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; }
29
+ String.prototype.defaultMessage = String.prototype.d = function (msg) {
30
+ return this || msg || "";
31
+ };
32
+ var ReactIntlUniversal = /*#__PURE__*/function () {
33
+ function ReactIntlUniversal() {
34
+ (0, _classCallCheck2["default"])(this, ReactIntlUniversal);
35
+ this.options = {
36
+ currentLocale: null,
37
+ // Current locale such as 'en-US'
38
+ locales: {},
39
+ // app locale data like {"en-US":{"key1":"value1"},"zh-CN":{"key1":"值1"}}
40
+ warningHandler: function warn() {
41
+ var _console;
42
+ (_console = console).warn.apply(_console, arguments);
43
+ },
44
+ // ability to accumulate missing messages using third party services
45
+ escapeHtml: true,
46
+ // disable escape html in variable mode
47
+ fallbackLocale: null,
48
+ // Locale to use if a key is not found in the current locale
49
+ debug: false,
50
+ // If debugger mode is on, the message will be wrapped by a span
51
+ dataKey: 'data-i18n-key' // If debugger mode is on, the message will be wrapped by a span with this data key
52
+ };
53
+ }
54
+
55
+ /**
56
+ * Get the formatted message by key
57
+ * @param {string} key The string representing key in locale data file
58
+ * @param {Object} variables Variables in message
59
+ * @returns {string} message
60
+ */
61
+ (0, _createClass2["default"])(ReactIntlUniversal, [{
62
+ key: "_getFormattedMessage",
63
+ value: function _getFormattedMessage(key, variables) {
64
+ if (this.options.intlGetHook) {
65
+ try {
66
+ this.options.intlGetHook(key, this.options.currentLocale);
67
+ } catch (e) {
68
+ console.log('intl get hook error: ', e);
69
+ }
70
+ }
71
+ (0, _invariant["default"])(key, "key is required");
72
+ var _this$options = this.options,
73
+ locales = _this$options.locales,
74
+ currentLocale = _this$options.currentLocale,
75
+ formats = _this$options.formats;
76
+
77
+ // 1. check if the locale data and key exists
78
+ if (!locales || !locales[currentLocale]) {
79
+ var errorMsg = "react-intl-universal locales data \"".concat(currentLocale, "\" not exists.");
80
+ if (!currentLocale) {
81
+ errorMsg += ' More info: https://github.com/alibaba/react-intl-universal/issues/144#issuecomment-1345193138';
82
+ }
83
+ this.options.warningHandler(errorMsg);
84
+ return "";
85
+ }
86
+ var msg = this.getDescendantProp(locales[currentLocale], key);
87
+ if (msg == null) {
88
+ if (this.options.fallbackLocale) {
89
+ msg = this.getDescendantProp(locales[this.options.fallbackLocale], key);
90
+ if (msg == null) {
91
+ var _context, _context2;
92
+ this.options.warningHandler((0, _concat["default"])(_context = (0, _concat["default"])(_context2 = "react-intl-universal key \"".concat(key, "\" not defined in ")).call(_context2, currentLocale, " or the fallback locale, ")).call(_context, this.options.fallbackLocale));
93
+ return "";
94
+ }
95
+ } else {
96
+ var _context3;
97
+ this.options.warningHandler((0, _concat["default"])(_context3 = "react-intl-universal key \"".concat(key, "\" not defined in ")).call(_context3, currentLocale));
98
+ return "";
99
+ }
100
+ }
101
+ // Fixed 处理翻译为空串的时候显示.d()中默认翻译的情况
102
+ if (msg == "") {
103
+ var nullStr = new String("");
104
+ nullStr.defaultMessage = nullStr.d = function () {
105
+ return "";
106
+ };
107
+ return nullStr;
108
+ }
109
+
110
+ // 2. handle security issue for variables
111
+ if (variables) {
112
+ variables = (0, _assign["default"])({}, variables);
113
+ // HTML message with variables. Escape it to avoid XSS attack.
114
+ for (var i in variables) {
115
+ var value = variables[i];
116
+ if (this.options.escapeHtml === true && (typeof value === "string" || value instanceof String) && (0, _indexOf["default"])(value).call(value, "<") >= 0) {
117
+ value = (0, _escapeHtml["default"])(value);
118
+ }
119
+ variables[i] = value;
120
+ }
121
+ }
122
+
123
+ // 3. resolve variables
124
+ try {
125
+ var finalMsg;
126
+ if (variables) {
127
+ // format message with variables
128
+ var msgFormatter = new _intlMessageformat["default"](msg, currentLocale, formats);
129
+ finalMsg = msgFormatter.format(variables);
130
+ } else {
131
+ // no variables, just return the message
132
+ finalMsg = msg;
133
+ }
134
+ return finalMsg;
135
+ } catch (err) {
136
+ this.options.warningHandler("react-intl-universal format message failed for key='".concat(key, "'."), err.message);
137
+ return msg;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * Get the formatted message by key
143
+ * @param {string} key The string representing key in locale data file
144
+ * @param {Object} [variables] Variables in message
145
+ * @returns {string} message
146
+ */
147
+ }, {
148
+ key: "get",
149
+ value: function get(key, variables) {
150
+ var msg = this._getFormattedMessage(key, variables);
151
+ return this.options.debug ? this._getSpanElementMessage(key, msg) : msg;
152
+ }
153
+
154
+ /**
155
+ * Get the formatted html message by key.
156
+ * @param {string} key The string representing key in locale data file
157
+ * @param {Object} [variables] Variables in message
158
+ * @returns {React.ReactElement} html message
159
+ */
160
+ }, {
161
+ key: "getHTML",
162
+ value: function getHTML(key, variables) {
163
+ var msg = this._getFormattedMessage(key, variables);
164
+ if (msg) {
165
+ return this._getSpanElementMessage(key, msg);
166
+ }
167
+ return "";
168
+ }
169
+
170
+ /**
171
+ * As same as get(...) API
172
+ * @param {Object} options
173
+ * @param {string} options.id
174
+ * @param {string} options.defaultMessage
175
+ * @param {Object} variables Variables in message
176
+ * @returns {string} message
177
+ */
178
+ }, {
179
+ key: "formatMessage",
180
+ value: function formatMessage(messageDescriptor, variables) {
181
+ var id = messageDescriptor.id,
182
+ defaultMessage = messageDescriptor.defaultMessage;
183
+ return this.get(id, variables).defaultMessage(defaultMessage);
184
+ }
185
+
186
+ /**
187
+ * As same as getHTML(...) API
188
+ * @param {Object} options
189
+ * @param {string} options.id
190
+ * @param {React.Element} options.defaultMessage
191
+ * @param {Object} variables Variables in message
192
+ * @returns {React.Element} message
193
+ */
194
+ }, {
195
+ key: "formatHTMLMessage",
196
+ value: function formatHTMLMessage(messageDescriptor, variables) {
197
+ var id = messageDescriptor.id,
198
+ defaultMessage = messageDescriptor.defaultMessage;
199
+ return this.getHTML(id, variables).defaultMessage(defaultMessage);
200
+ }
201
+
202
+ /**
203
+ * Helper: determine user's locale via URL, cookie, localStorage, and browser's language.
204
+ * You may not need this API, if you have other rules to determine user's locale.
205
+ * @param {string} options.urlLocaleKey URL's query Key to determine locale. Example: if URL=http://localhost?lang=en-US, then set it 'lang'
206
+ * @param {string} options.cookieLocaleKey Cookie's Key to determine locale. Example: if cookie=lang:en-US, then set it 'lang'
207
+ * @param {string} options.localStorageLocaleKey LocalStorage's Key to determine locale such as 'lang'
208
+ * @returns {string} determined locale such as 'en-US'
209
+ */
210
+ }, {
211
+ key: "determineLocale",
212
+ value: function determineLocale() {
213
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
214
+ return this.getLocaleFromURL(options) || this.getLocaleFromCookie(options) || this.getLocaleFromLocalStorage(options) || this.getLocaleFromBrowser();
215
+ }
216
+
217
+ /**
218
+ * Initialize properties and load CLDR locale data according to currentLocale
219
+ * @param {Object} options
220
+ * @param {string} options.currentLocale Current locale such as 'en-US'
221
+ * @param {any} options.locales App locale data like {"en-US":{"key1":"value1"},"zh-CN":{"key1":"值1"}}
222
+ * @param {boolean} [options.debug] debug mode
223
+ * @returns {Promise}
224
+ */
225
+ }, {
226
+ key: "init",
227
+ value: function init() {
228
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
229
+ (0, _invariant["default"])(options.currentLocale, "options.currentLocale is required");
230
+ (0, _invariant["default"])(options.locales, "options.locales is required");
231
+ (0, _assign["default"])(this.options, options);
232
+ this.options.formats = (0, _assign["default"])({}, this.options.formats, constants.defaultFormats);
233
+ return new _promise["default"](function (resolve, reject) {
234
+ // init() will not load external common locale data anymore.
235
+ // But, it still return a Promise for backward compatibility.
236
+ resolve();
237
+ });
238
+ }
239
+
240
+ /**
241
+ * Get the inital options
242
+ */
243
+ }, {
244
+ key: "getInitOptions",
245
+ value: function getInitOptions() {
246
+ return this.options;
247
+ }
248
+
249
+ /**
250
+ * Load more locales after init
251
+ */
252
+ }, {
253
+ key: "load",
254
+ value: function load(locales) {
255
+ (0, _lodash["default"])(this.options.locales, locales);
256
+ }
257
+ }, {
258
+ key: "getLocaleFromCookie",
259
+ value: function getLocaleFromCookie(options) {
260
+ var cookieLocaleKey = options.cookieLocaleKey;
261
+ if (cookieLocaleKey) {
262
+ var params = _cookie["default"].parse(document.cookie);
263
+ return params && params[cookieLocaleKey];
264
+ }
265
+ }
266
+ }, {
267
+ key: "getLocaleFromLocalStorage",
268
+ value: function getLocaleFromLocalStorage(options) {
269
+ var localStorageLocaleKey = options.localStorageLocaleKey;
270
+ if (localStorageLocaleKey && window.localStorage) {
271
+ return localStorage.getItem(localStorageLocaleKey);
272
+ }
273
+ }
274
+ }, {
275
+ key: "getLocaleFromURL",
276
+ value: function getLocaleFromURL(options) {
277
+ var urlLocaleKey = options.urlLocaleKey;
278
+ if (urlLocaleKey) {
279
+ var query = location.search.split("?");
280
+ if (query.length >= 2) {
281
+ var params = new _urlSearchParams["default"](query[1]);
282
+ if (params.has(urlLocaleKey)) {
283
+ return params.get(urlLocaleKey);
284
+ }
285
+ }
286
+ }
287
+ }
288
+ }, {
289
+ key: "getDescendantProp",
290
+ value: function getDescendantProp(locale, key) {
291
+ var _context4;
292
+ if (locale[key]) {
293
+ return locale[key];
294
+ }
295
+ var msg = (0, _reduce["default"])(_context4 = key.split(".")).call(_context4, function (a, b) {
296
+ return a != undefined ? a[b] : a;
297
+ }, locale);
298
+ return msg;
299
+ }
300
+ }, {
301
+ key: "getLocaleFromBrowser",
302
+ value: function getLocaleFromBrowser() {
303
+ return navigator.language || navigator.userLanguage;
304
+ }
305
+ }, {
306
+ key: "_getSpanElementMessage",
307
+ value: function _getSpanElementMessage(key, msg) {
308
+ var options = {
309
+ dangerouslySetInnerHTML: {
310
+ __html: msg
311
+ }
312
+ };
313
+ if (this.options.debug) {
314
+ options[this.options.dataKey] = key;
315
+ }
316
+ var el = _react["default"].createElement('span', options);
317
+ // when key exists, it should still return element if there's defaultMessage() after getHTML()
318
+ var defaultMessage = function defaultMessage() {
319
+ return el;
320
+ };
321
+ return (0, _assign["default"])({
322
+ defaultMessage: defaultMessage,
323
+ d: defaultMessage
324
+ }, el);
325
+ }
326
+ }]);
327
+ return ReactIntlUniversal;
328
+ }();
329
+ var _default = exports["default"] = ReactIntlUniversal;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.defaultFormats = void 0;
8
+ /**
9
+ * Currency code list
10
+ * https://www.currency-iso.org/en/home/tables/table-a1.html
11
+ */
12
+ var currency = ["AFN", "EUR", "ALL", "DZD", "USD", "AOA", "XCD", "ARS", "AMD", "AWG", "AUD", "AZN", "BSD", "BHD", "BDT", "BBD", "BYN", "BZD", "XOF", "BMD", "INR", "BTN", "BOB", "BOV", "BAM", "BWP", "NOK", "BRL", "BND", "BGN", "BIF", "CVE", "KHR", "XAF", "CAD", "KYD", "CLP", "CLF", "CNY", "COP", "COU", "KMF", "CDF", "NZD", "CRC", "HRK", "CUP", "CUC", "ANG", "CZK", "DKK", "DJF", "DOP", "EGP", "SVC", "ERN", "ETB", "FKP", "FJD", "XPF", "GMD", "GEL", "GHS", "GIP", "GTQ", "GBP", "GNF", "GYD", "HTG", "HNL", "HKD", "HUF", "ISK", "IDR", "XDR", "IRR", "IQD", "ILS", "JMD", "JPY", "JOD", "KZT", "KES", "KPW", "KRW", "KWD", "KGS", "LAK", "LBP", "LSL", "ZAR", "LRD", "LYD", "CHF", "MOP", "MKD", "MGA", "MWK", "MYR", "MVR", "MRO", "MUR", "XUA", "MXN", "MXV", "MDL", "MNT", "MAD", "MZN", "MMK", "NAD", "NPR", "NIO", "NGN", "OMR", "PKR", "PAB", "PGK", "PYG", "PEN", "PHP", "PLN", "QAR", "RON", "RUB", "RWF", "SHP", "WST", "STD", "SAR", "RSD", "SCR", "SLL", "SGD", "XSU", "SBD", "SOS", "SSP", "LKR", "SDG", "SRD", "SZL", "SEK", "CHE", "CHW", "SYP", "TWD", "TJS", "TZS", "THB", "TOP", "TTD", "TND", "TRY", "TMT", "UGX", "UAH", "AED", "USN", "UYU", "UYI", "UZS", "VUV", "VEF", "VND", "YER", "ZMW", "ZWL", "XBA", "XBB", "XBC", "XBD", "XTS", "XXX", "XAU", "XPD", "XPT", "XAG"];
13
+ var numberFormat = {};
14
+ for (var i = 0; i < currency.length; i++) {
15
+ numberFormat[currency[i]] = {
16
+ style: 'currency',
17
+ currency: currency[i]
18
+ };
19
+ }
20
+ var defaultFormats = exports.defaultFormats = {
21
+ number: numberFormat
22
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ _Object$defineProperty(exports, "ReactIntlUniversal", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _ReactIntlUniversal["default"];
12
+ }
13
+ });
14
+ exports.load = exports.init = exports.getLocaleFromURL = exports.getLocaleFromLocalStorage = exports.getLocaleFromCookie = exports.getLocaleFromBrowser = exports.getInitOptions = exports.getHTML = exports.getDescendantProp = exports.get = exports.formatMessage = exports.formatHTMLMessage = exports.determineLocale = exports["default"] = void 0;
15
+ var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
16
+ var _ReactIntlUniversal = _interopRequireDefault(require("./ReactIntlUniversal"));
17
+ var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13;
18
+ var defaultInstance = exports["default"] = new _ReactIntlUniversal["default"]();
19
+ // resolved by CommonJS module loader
20
+ defaultInstance.ReactIntlUniversal = _ReactIntlUniversal["default"];
21
+ // react pattern: https://github.com/facebook/react/blob/main/packages/react/src/React.js
22
+ var get = exports.get = (0, _bind["default"])(_context = defaultInstance.get).call(_context, defaultInstance);
23
+ var getHTML = exports.getHTML = (0, _bind["default"])(_context2 = defaultInstance.getHTML).call(_context2, defaultInstance);
24
+ var formatMessage = exports.formatMessage = (0, _bind["default"])(_context3 = defaultInstance.formatMessage).call(_context3, defaultInstance);
25
+ var formatHTMLMessage = exports.formatHTMLMessage = (0, _bind["default"])(_context4 = defaultInstance.formatHTMLMessage).call(_context4, defaultInstance);
26
+ var determineLocale = exports.determineLocale = (0, _bind["default"])(_context5 = defaultInstance.determineLocale).call(_context5, defaultInstance);
27
+ var init = exports.init = (0, _bind["default"])(_context6 = defaultInstance.init).call(_context6, defaultInstance);
28
+ var getInitOptions = exports.getInitOptions = (0, _bind["default"])(_context7 = defaultInstance.getInitOptions).call(_context7, defaultInstance);
29
+ var load = exports.load = (0, _bind["default"])(_context8 = defaultInstance.load).call(_context8, defaultInstance);
30
+ var getLocaleFromCookie = exports.getLocaleFromCookie = (0, _bind["default"])(_context9 = defaultInstance.getLocaleFromCookie).call(_context9, defaultInstance);
31
+ var getLocaleFromLocalStorage = exports.getLocaleFromLocalStorage = (0, _bind["default"])(_context10 = defaultInstance.getLocaleFromLocalStorage).call(_context10, defaultInstance);
32
+ var getLocaleFromURL = exports.getLocaleFromURL = (0, _bind["default"])(_context11 = defaultInstance.getLocaleFromURL).call(_context11, defaultInstance);
33
+ var getDescendantProp = exports.getDescendantProp = (0, _bind["default"])(_context12 = defaultInstance.getDescendantProp).call(_context12, defaultInstance);
34
+ var getLocaleFromBrowser = exports.getLocaleFromBrowser = (0, _bind["default"])(_context13 = defaultInstance.getLocaleFromBrowser).call(_context13, defaultInstance);
35
+ // resolved by ECMAScript module loader
@@ -8,7 +8,7 @@ _Object$defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
10
10
  var _react = require("react");
11
- var _reactIntlUniversal = _interopRequireDefault(require("react-intl-universal"));
11
+ var _reactIntlUniversal = _interopRequireDefault(require("../react-intl-universal"));
12
12
  var _useForceUpdate = _interopRequireDefault(require("./use-force-update"));
13
13
  var _context = _interopRequireDefault(require("./context"));
14
14
  var useIntl = function useIntl() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chaoswise/intl",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "author": "cloudwiser",
5
5
  "description": "intl",
6
6
  "main": "lib/index.js",
@@ -84,5 +84,5 @@
84
84
  "react-dom": "^16.13.1"
85
85
  },
86
86
  "license": "MIT",
87
- "gitHead": "422bbd1a0545e50a6e8a6e41240536bbc5274e20"
87
+ "gitHead": "d62d0e15a28dad6c4a531ed72724210d3bacc453"
88
88
  }