utiller 1.0.23

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.
@@ -0,0 +1,1439 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
+
20
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _lodash = _interopRequireDefault(require("lodash"));
25
+
26
+ var _crypto = _interopRequireDefault(require("crypto"));
27
+
28
+ var _cryptoJs = _interopRequireDefault(require("crypto-js"));
29
+
30
+ var _configer = require("configer");
31
+
32
+ var _exceptioner = _interopRequireDefault(require("../exceptioner"));
33
+
34
+ var _moment = _interopRequireDefault(require("moment"));
35
+
36
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
37
+
38
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
+
40
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
41
+
42
+ String.format = function () {
43
+ var param = [];
44
+
45
+ for (var i = 0, l = arguments.length; i < l; i++) {
46
+ param.push(arguments[i]);
47
+ }
48
+
49
+ var statment = param[0]; // get the first element(the original statement)
50
+
51
+ param.shift(); // remove the first element from array
52
+
53
+ return statment.replace(/\{(\d+)\}/g, function (m, n) {
54
+ return param[n];
55
+ });
56
+ };
57
+
58
+ var Utiller = /*#__PURE__*/function () {
59
+ function Utiller() {
60
+ var _this = this;
61
+
62
+ (0, _classCallCheck2["default"])(this, Utiller);
63
+ (0, _defineProperty2["default"])(this, "asyncUnitTaskFunction", function () {
64
+ var millionSec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;
65
+
66
+ var _funparam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "預設的param";
67
+
68
+ var errorSimulator = arguments.length > 2 ? arguments[2] : undefined;
69
+ return /*#__PURE__*/function () {
70
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(param) {
71
+ var randomValue, symbol;
72
+ return _regenerator["default"].wrap(function _callee$(_context) {
73
+ while (1) {
74
+ switch (_context.prev = _context.next) {
75
+ case 0:
76
+ randomValue = _this.getRandomValue(millionSec, millionSec * 1.2);
77
+ _context.prev = 1;
78
+ symbol = randomValue;
79
+
80
+ _this.appendInfo("before executed ===> i'm symbol of ".concat(symbol, ", ready to be executed, inner param = ").concat(_funparam));
81
+
82
+ _context.next = 6;
83
+ return _this.syncDelay(randomValue);
84
+
85
+ case 6:
86
+ if (!(_lodash["default"].isFunction(errorSimulator) && errorSimulator(param))) {
87
+ _context.next = 8;
88
+ break;
89
+ }
90
+
91
+ throw Error("force to made error happen");
92
+
93
+ case 8:
94
+ _this.appendInfo("after executed ===> i'm symbol of ".concat(symbol, ", the task cost ").concat(randomValue, " million-seconds ").concat(param ? "i hav params ===> ".concat(param) : ""));
95
+
96
+ return _context.abrupt("return", {
97
+ randomValue: randomValue,
98
+ symbol: symbol,
99
+ param: param
100
+ });
101
+
102
+ case 12:
103
+ _context.prev = 12;
104
+ _context.t0 = _context["catch"](1);
105
+
106
+ _this.appendError(new Error("asyncUnitTask() catch error ".concat(_context.t0.message)));
107
+
108
+ case 15:
109
+ _context.prev = 15;
110
+
111
+ _this.appendInfo("wow.... finally got you");
112
+
113
+ return _context.finish(15);
114
+
115
+ case 18:
116
+ case "end":
117
+ return _context.stop();
118
+ }
119
+ }
120
+ }, _callee, null, [[1, 12, 15, 18]]);
121
+ }));
122
+
123
+ return function (_x) {
124
+ return _ref.apply(this, arguments);
125
+ };
126
+ }();
127
+ });
128
+ (0, _defineProperty2["default"])(this, "getCallersName", function () {
129
+ var callerName;
130
+
131
+ try {
132
+ throw new Error();
133
+ } catch (e) {
134
+ var re = /(\w+)@|at (\w+) \(/g,
135
+ st = e.stack,
136
+ m;
137
+ re.exec(st), m = re.exec(st);
138
+ if (!_lodash["default"].isNull(m)) callerName = m[1] || m[2];
139
+ }
140
+
141
+ if (_lodash["default"].startsWith("asyncGeneratorStep", callerName)) callerName = "";
142
+ return callerName;
143
+ });
144
+ (0, _defineProperty2["default"])(this, "getRandomValue", function (min, max) {
145
+ min = Math.ceil(min);
146
+ max = Math.floor(max);
147
+ return Math.floor(Math.random() * (max - min + 1)) + min;
148
+ });
149
+ (0, _defineProperty2["default"])(this, "insertToArray", function (array, _index) {
150
+ _index = _index + 1;
151
+ /** 植樹問題拔 我想 */
152
+
153
+ var initial = _lodash["default"].slice(array, 0, _index);
154
+
155
+ var end = _lodash["default"].slice(array, _index, array.length);
156
+
157
+ for (var _len = arguments.length, item = new Array(_len > 2 ? _len - 2 : 0), _key2 = 2; _key2 < _len; _key2++) {
158
+ item[_key2 - 2] = arguments[_key2];
159
+ }
160
+
161
+ var combine = [].concat((0, _toConsumableArray2["default"])(initial), item, (0, _toConsumableArray2["default"])(end));
162
+ array.length = 0;
163
+ array.push.apply(array, (0, _toConsumableArray2["default"])(combine));
164
+ });
165
+ this.init();
166
+ }
167
+
168
+ (0, _createClass2["default"])(Utiller, [{
169
+ key: "init",
170
+ value: function init() {// this.enrichZhTw();
171
+ }
172
+ }, {
173
+ key: "appendInfo",
174
+ value: function appendInfo() {
175
+ var _console;
176
+
177
+ (_console = console).log.apply(_console, arguments);
178
+ }
179
+ }, {
180
+ key: "appendError",
181
+ value: function appendError() {
182
+ var _console2;
183
+
184
+ (_console2 = console).error.apply(_console2, arguments);
185
+ }
186
+ }, {
187
+ key: "syncDelay",
188
+ value: function () {
189
+ var _syncDelay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
190
+ var delayInms,
191
+ _args2 = arguments;
192
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
193
+ while (1) {
194
+ switch (_context2.prev = _context2.next) {
195
+ case 0:
196
+ delayInms = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : 2000;
197
+ return _context2.abrupt("return", new Promise(function (resolve) {
198
+ setTimeout(function () {
199
+ resolve(delayInms);
200
+ }, delayInms);
201
+ }));
202
+
203
+ case 2:
204
+ case "end":
205
+ return _context2.stop();
206
+ }
207
+ }
208
+ }, _callee2);
209
+ }));
210
+
211
+ function syncDelay() {
212
+ return _syncDelay.apply(this, arguments);
213
+ }
214
+
215
+ return syncDelay;
216
+ }()
217
+ /** this is used for unit test,
218
+ * param 是給 runInBackground 用的 => param */
219
+
220
+ }, {
221
+ key: "accumulate",
222
+ value:
223
+ /** 就是把 target 放到 condition 裡面處理, 然後取代原本的target*/
224
+ function accumulate(target, conditions) {
225
+ var beginning = target;
226
+
227
+ var _iterator = _createForOfIteratorHelper(conditions),
228
+ _step;
229
+
230
+ try {
231
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
232
+ var condition = _step.value;
233
+
234
+ if (condition !== undefined && _lodash["default"].isFunction(condition)) {
235
+ beginning = condition(beginning);
236
+ }
237
+ }
238
+ } catch (err) {
239
+ _iterator.e(err);
240
+ } finally {
241
+ _iterator.f();
242
+ }
243
+
244
+ return beginning;
245
+ }
246
+ }, {
247
+ key: "isOrEquals",
248
+ value: function isOrEquals(target) {
249
+ for (var _len2 = arguments.length, several = new Array(_len2 > 1 ? _len2 - 1 : 0), _key3 = 1; _key3 < _len2; _key3++) {
250
+ several[_key3 - 1] = arguments[_key3];
251
+ }
252
+
253
+ for (var _i = 0, _several = several; _i < _several.length; _i++) {
254
+ var each = _several[_i];
255
+ if (_lodash["default"].isEqual(target, each)) return true;
256
+ }
257
+
258
+ return false;
259
+ }
260
+ }, {
261
+ key: "isAndEquals",
262
+ value: function isAndEquals() {
263
+ for (var _len3 = arguments.length, predicates = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {
264
+ predicates[_key4] = arguments[_key4];
265
+ }
266
+
267
+ for (var _i2 = 0, _predicates = predicates; _i2 < _predicates.length; _i2++) {
268
+ var predicate = _predicates[_i2];
269
+
270
+ if (!predicate()) {
271
+ return false;
272
+ }
273
+ }
274
+
275
+ return true;
276
+ }
277
+ }, {
278
+ key: "or",
279
+ value: function or() {
280
+ for (var _len4 = arguments.length, booleans = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {
281
+ booleans[_key5] = arguments[_key5];
282
+ }
283
+
284
+ for (var _i3 = 0, _booleans = booleans; _i3 < _booleans.length; _i3++) {
285
+ var boo = _booleans[_i3];
286
+ if (!!boo) return true;
287
+ }
288
+
289
+ return false;
290
+ }
291
+ }, {
292
+ key: "and",
293
+ value: function and() {
294
+ for (var _len5 = arguments.length, booleans = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {
295
+ booleans[_key6] = arguments[_key6];
296
+ }
297
+
298
+ for (var _i4 = 0, _booleans2 = booleans; _i4 < _booleans2.length; _i4++) {
299
+ var boo = _booleans2[_i4];
300
+ if (!!!boo) return false;
301
+ }
302
+
303
+ return true;
304
+ }
305
+ /** 選一個exsist的candidate回傳, 像是firebase 可以 idToken 又可以 oauthIdToken*/
306
+
307
+ }, {
308
+ key: "getExistOne",
309
+ value: function getExistOne() {
310
+ for (var _len6 = arguments.length, candidates = new Array(_len6), _key7 = 0; _key7 < _len6; _key7++) {
311
+ candidates[_key7] = arguments[_key7];
312
+ }
313
+
314
+ for (var _i5 = 0, _candidates = candidates; _i5 < _candidates.length; _i5++) {
315
+ var candidate = _candidates[_i5];
316
+ if (candidate) return candidate;
317
+ }
318
+ }
319
+ /** '###string' => 'string' */
320
+
321
+ }, {
322
+ key: "getStringOfDropHeadSign",
323
+ value: function getStringOfDropHeadSign(string, sign) {
324
+ return _lodash["default"].dropWhile(Array.from(string), function (each) {
325
+ return _lodash["default"].isEqual(each, sign);
326
+ }).join("");
327
+ }
328
+ }, {
329
+ key: "isAndWith",
330
+ value: function isAndWith(self, predicate) {
331
+ for (var _len7 = arguments.length, several = new Array(_len7 > 2 ? _len7 - 2 : 0), _key8 = 2; _key8 < _len7; _key8++) {
332
+ several[_key8 - 2] = arguments[_key8];
333
+ }
334
+
335
+ for (var _i6 = 0, _several2 = several; _i6 < _several2.length; _i6++) {
336
+ var each = _several2[_i6];
337
+ if (!predicate(self, each)) return false;
338
+ }
339
+
340
+ return true;
341
+ }
342
+ }, {
343
+ key: "syncDelayRandom",
344
+ value: function () {
345
+ var _syncDelayRandom = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
346
+ var min,
347
+ max,
348
+ random,
349
+ _args3 = arguments;
350
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
351
+ while (1) {
352
+ switch (_context3.prev = _context3.next) {
353
+ case 0:
354
+ min = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : 3000;
355
+ max = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 5000;
356
+ random = this.getRandomValue(min, max);
357
+ _context3.next = 5;
358
+ return this.syncDelay(random);
359
+
360
+ case 5:
361
+ return _context3.abrupt("return", random);
362
+
363
+ case 6:
364
+ case "end":
365
+ return _context3.stop();
366
+ }
367
+ }
368
+ }, _callee3, this);
369
+ }));
370
+
371
+ function syncDelayRandom() {
372
+ return _syncDelayRandom.apply(this, arguments);
373
+ }
374
+
375
+ return syncDelayRandom;
376
+ }()
377
+ /** 如果是array,用 indexOf檢查each
378
+ * 如果是object,看有沒有這個key
379
+ * 如果是string, 就檢查有沒有包含 */
380
+
381
+ }, {
382
+ key: "has",
383
+ value: function has(collection, item) {
384
+ if (_lodash["default"].isArray(collection)) {
385
+ return _lodash["default"].indexOf(collection, item) > -1;
386
+ }
387
+
388
+ if (_lodash["default"].isObject(item)) {
389
+ return collection[item];
390
+ }
391
+
392
+ if (_lodash["default"].isString(collection)) {
393
+ return collection.indexOf(item) > -1;
394
+ }
395
+
396
+ return false;
397
+ }
398
+ }, {
399
+ key: "getRandomHash",
400
+ value: function getRandomHash() {
401
+ var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30;
402
+
403
+ var random = _crypto["default"].randomBytes(size).toString("hex");
404
+
405
+ return random;
406
+ }
407
+ /** alwaysTheSame 就是產出的encrypt value會固定(適合用在欄位的key), 不然會產生隨機偏移量, 但皆不影響解譯 */
408
+
409
+ }, {
410
+ key: "getEncryptString",
411
+ value: function getEncryptString(texts) {
412
+ var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configer.configer.ENCRYPT_KEY;
413
+ var alwaysTheSame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
414
+ var maxLengthOfKey = 22;
415
+ if (key.length > maxLengthOfKey) throw new _exceptioner["default"](8010, _lodash["default"].size(key));
416
+ /** 帶入偏移量, keyOfkeyOfCrypto 需要是長度為22的字串, 太獵奇了*/
417
+
418
+ var ivOfCrypto = _cryptoJs["default"].enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");
419
+
420
+ var keyOfCrypto = alwaysTheSame ? _cryptoJs["default"].enc.Base64.parse("".concat(key).concat(_lodash["default"].range(0, maxLengthOfKey - key.length).join(""))) : key;
421
+ return _cryptoJs["default"].AES.encrypt(texts, keyOfCrypto, {
422
+ iv: ivOfCrypto
423
+ }).toString();
424
+ }
425
+ }, {
426
+ key: "getDecryptString",
427
+ value: function getDecryptString(ciphertext) {
428
+ var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configer.configer.ENCRYPT_KEY;
429
+ var maxLengthOfKey = 22;
430
+ if (key.length > maxLengthOfKey) throw new _exceptioner["default"](8010, _lodash["default"].size(key));
431
+
432
+ var ivOfCrypto = _cryptoJs["default"].enc.Base64.parse("thisIsIVWeNeedToGenerateTheSameValue");
433
+
434
+ try {
435
+ var value = _cryptoJs["default"].AES.decrypt(ciphertext, key, {
436
+ iv: ivOfCrypto
437
+ }).toString(_cryptoJs["default"].enc.Utf8);
438
+
439
+ if (!_lodash["default"].isEmpty(value.trim())) return value;
440
+ } catch (e) {
441
+ /** 把問題給吃掉了, 也不能紀錄, 因為用了appendError*/
442
+ }
443
+
444
+ return _cryptoJs["default"].AES.decrypt(ciphertext, _cryptoJs["default"].enc.Base64.parse("".concat(key).concat(_lodash["default"].range(0, maxLengthOfKey - key.length).join(""))), {
445
+ iv: ivOfCrypto
446
+ }).toString(_cryptoJs["default"].enc.Utf8);
447
+ }
448
+ }, {
449
+ key: "getFirebaseFormattedString",
450
+ value: function getFirebaseFormattedString(texts) {
451
+ return _lodash["default"].replace(texts, /[\.\#\$\[\]]/g, "-").trim();
452
+ }
453
+ }, {
454
+ key: "formalizeNamesToArray",
455
+ value: function formalizeNamesToArray(singerString) {
456
+ var normalize = singerString;
457
+ /** avoid this situation, 演唱:陳勢安、畢書盡 (Bii) 編曲:Jerry C */
458
+
459
+ normalize = normalize.split(_configer.configer.SEPARATE_TONE_SINGER)[0].trim();
460
+ normalize = _lodash["default"].replace(normalize, /[,\/#!$%\^&\*;:{}=_`、~()()]/g, "_").trim();
461
+ /** avoid this situation, 陳勢安_畢書盡__Bii_ */
462
+
463
+ normalize = this.getFirebaseFormattedString(normalize);
464
+ normalize = _lodash["default"].replace(normalize, /\_\_+/g, "_").trim();
465
+
466
+ while (_lodash["default"].endsWith(normalize, "_")) {
467
+ /** avoid this situation, 陳勢安_畢書盡_Bii_ */
468
+ normalize = normalize.slice(0, -1).trim();
469
+ }
470
+
471
+ var words = normalize.split("_");
472
+ /** avoid this situation, ["畢書盡 ","Bii","陳勢安 "] */
473
+
474
+ return _lodash["default"].map(words, function (word) {
475
+ return _lodash["default"].trim(word);
476
+ });
477
+ }
478
+ }, {
479
+ key: "getShuffledArrayWithLimitCountHighPerformance",
480
+ value: function getShuffledArrayWithLimitCountHighPerformance(arr, n) {
481
+ var result = new Array(n),
482
+ len = arr.length,
483
+ taken = new Array(len);
484
+ if (n > len) n = len;
485
+ if (n > len) throw new RangeError("getShuffledArrayWithLimitCount: more elements taken than available");
486
+
487
+ while (n--) {
488
+ var x = Math.floor(Math.random() * len);
489
+ result[n] = arr[x in taken ? taken[x] : x];
490
+ taken[x] = --len in taken ? taken[len] : len;
491
+ }
492
+
493
+ return result;
494
+ }
495
+ }, {
496
+ key: "getShuffledArrayWithLimitCount",
497
+ value: function getShuffledArrayWithLimitCount(arr, n) {
498
+ var shuffled = _lodash["default"].shuffle(arr);
499
+
500
+ return shuffled.slice(0, n);
501
+ }
502
+ }, {
503
+ key: "getRandomItemOfArray",
504
+ value: function getRandomItemOfArray(array) {
505
+ if (!_lodash["default"].isArray(array)) throw new _exceptioner["default"](9999, "why are you so stupid, typeof array should be array, not ==> ".concat(array, " "));
506
+ var item = this.getShuffledArrayWithLimitCount(array, 1);
507
+ return item.length > 0 ? item[0] : undefined;
508
+ }
509
+ }, {
510
+ key: "getShuffledItemFromArray",
511
+ value: function getShuffledItemFromArray(arr) {
512
+ var shuffled = _lodash["default"].shuffle(arr);
513
+
514
+ return shuffled[0];
515
+ }
516
+ }, {
517
+ key: "getShuffledArray",
518
+ value: function getShuffledArray(arr) {
519
+ var shuffled = _lodash["default"].shuffle(arr);
520
+
521
+ return shuffled;
522
+ }
523
+ }, {
524
+ key: "isJson",
525
+ value: function isJson(item) {
526
+ item = typeof item !== "string" ? JSON.stringify(item) : item;
527
+
528
+ try {
529
+ item = JSON.parse(item);
530
+ } catch (e) {
531
+ return false;
532
+ }
533
+
534
+ if ((0, _typeof2["default"])(item) === "object" && item !== null) {
535
+ return true;
536
+ }
537
+
538
+ return false;
539
+ }
540
+ }, {
541
+ key: "getObjectValue",
542
+ value: function getObjectValue(obj) {
543
+ if (_lodash["default"].isObject(obj)) {
544
+ return Object.values(obj)[0];
545
+ }
546
+
547
+ return "";
548
+ }
549
+ }, {
550
+ key: "getObjectKey",
551
+ value: function getObjectKey(obj) {
552
+ if (_lodash["default"].isObject(obj)) {
553
+ return Object.keys(obj)[0];
554
+ }
555
+
556
+ return "";
557
+ }
558
+ }, {
559
+ key: "printf",
560
+ value: function printf() {
561
+ this.appendInfo("i can use in node.js react.js");
562
+ }
563
+ }, {
564
+ key: "isKeywordRule",
565
+ value: function isKeywordRule(constraint) {
566
+ if (_lodash["default"].isUndefined(constraint) || _lodash["default"].isEmpty(constraint)) throw new Error("PARAMS CAN NOT BE EMPTY");
567
+ if (!_lodash["default"].isString(constraint)) throw new Error("PARAMS SHOULD BE STRING");
568
+ if (constraint.length > 20) throw new Error("EXCEED 20 WORDS IS NOT ALLOWED");
569
+ }
570
+ }, {
571
+ key: "getItsKeyByValue",
572
+ value: function getItsKeyByValue(object, value) {
573
+ return Object.keys(object).find(function (key) {
574
+ return object[key] === value;
575
+ });
576
+ }
577
+ }, {
578
+ key: "startWiths",
579
+ value: function startWiths(string) {
580
+ var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
581
+
582
+ var _iterator2 = _createForOfIteratorHelper(key),
583
+ _step2;
584
+
585
+ try {
586
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
587
+ var _key = _step2.value;
588
+
589
+ if (_lodash["default"].startsWith(string, _key)) {
590
+ return true;
591
+ }
592
+ }
593
+ } catch (err) {
594
+ _iterator2.e(err);
595
+ } finally {
596
+ _iterator2.f();
597
+ }
598
+
599
+ return false;
600
+ }
601
+ }, {
602
+ key: "replaceAll",
603
+ value: function replaceAll(string, patten, to) {
604
+ return _lodash["default"].replace(string, new RegExp("".concat(patten), "g"), to);
605
+ /** g就是 global */
606
+ }
607
+ }, {
608
+ key: "deepFlat",
609
+ value: function deepFlat(collection) {
610
+ var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "_";
611
+ var _self = "";
612
+
613
+ if (_lodash["default"].isArray(collection)) {
614
+ var _iterator3 = _createForOfIteratorHelper(collection),
615
+ _step3;
616
+
617
+ try {
618
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
619
+ var o = _step3.value;
620
+ _self += (_lodash["default"].isEmpty(_self) ? "" : sign) + this.deepFlat(o);
621
+ }
622
+ } catch (err) {
623
+ _iterator3.e(err);
624
+ } finally {
625
+ _iterator3.f();
626
+ }
627
+
628
+ return _self;
629
+ } else if (_lodash["default"].isObject(collection)) {
630
+ for (var key in collection) {
631
+ _self += (_lodash["default"].isEmpty(_self) ? "" : sign) + key + sign + this.deepFlat(collection[key]);
632
+ }
633
+
634
+ return _self;
635
+ } else {
636
+ return _lodash["default"].trim(collection);
637
+ }
638
+ }
639
+ }, {
640
+ key: "joinEscapeChar",
641
+ value: function joinEscapeChar(str) {
642
+ return (str + "").replace(/[\\"']/g, "\\$&").replace(/\u0000/g, "\\0");
643
+ }
644
+ }, {
645
+ key: "getValueWithIntegerType",
646
+ value: function getValueWithIntegerType(whatever) {
647
+ try {
648
+ var value = parseInt(whatever);
649
+ return isNaN(value) ? 0 : value;
650
+ } catch (error) {
651
+ return 0;
652
+ }
653
+ }
654
+ }, {
655
+ key: "asyncPool",
656
+ value: function () {
657
+ var _asyncPool = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(poolLimit, array, iteratorFn) {
658
+ var ret, executing, _iterator4, _step4, _loop;
659
+
660
+ return _regenerator["default"].wrap(function _callee4$(_context5) {
661
+ while (1) {
662
+ switch (_context5.prev = _context5.next) {
663
+ case 0:
664
+ ret = [];
665
+ executing = [];
666
+ _iterator4 = _createForOfIteratorHelper(array);
667
+ _context5.prev = 3;
668
+ _loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
669
+ var item, p, e;
670
+ return _regenerator["default"].wrap(function _loop$(_context4) {
671
+ while (1) {
672
+ switch (_context4.prev = _context4.next) {
673
+ case 0:
674
+ item = _step4.value;
675
+ p = Promise.resolve().then(function () {
676
+ return iteratorFn(item, array);
677
+ });
678
+ ret.push(p);
679
+
680
+ if (!(poolLimit <= array.length)) {
681
+ _context4.next = 9;
682
+ break;
683
+ }
684
+
685
+ e = p.then(function () {
686
+ return executing.splice(executing.indexOf(e), 1);
687
+ });
688
+ executing.push(e);
689
+
690
+ if (!(executing.length >= poolLimit)) {
691
+ _context4.next = 9;
692
+ break;
693
+ }
694
+
695
+ _context4.next = 9;
696
+ return Promise.race(executing);
697
+
698
+ case 9:
699
+ case "end":
700
+ return _context4.stop();
701
+ }
702
+ }
703
+ }, _loop);
704
+ });
705
+
706
+ _iterator4.s();
707
+
708
+ case 6:
709
+ if ((_step4 = _iterator4.n()).done) {
710
+ _context5.next = 10;
711
+ break;
712
+ }
713
+
714
+ return _context5.delegateYield(_loop(), "t0", 8);
715
+
716
+ case 8:
717
+ _context5.next = 6;
718
+ break;
719
+
720
+ case 10:
721
+ _context5.next = 15;
722
+ break;
723
+
724
+ case 12:
725
+ _context5.prev = 12;
726
+ _context5.t1 = _context5["catch"](3);
727
+
728
+ _iterator4.e(_context5.t1);
729
+
730
+ case 15:
731
+ _context5.prev = 15;
732
+
733
+ _iterator4.f();
734
+
735
+ return _context5.finish(15);
736
+
737
+ case 18:
738
+ return _context5.abrupt("return", Promise.all(ret));
739
+
740
+ case 19:
741
+ case "end":
742
+ return _context5.stop();
743
+ }
744
+ }
745
+ }, _callee4, null, [[3, 12, 15, 18]]);
746
+ }));
747
+
748
+ function asyncPool(_x2, _x3, _x4) {
749
+ return _asyncPool.apply(this, arguments);
750
+ }
751
+
752
+ return asyncPool;
753
+ }()
754
+ }, {
755
+ key: "getAttrValueInSequence",
756
+ value: function getAttrValueInSequence(info) {
757
+ for (var _len8 = arguments.length, attrs = new Array(_len8 > 1 ? _len8 - 1 : 0), _key9 = 1; _key9 < _len8; _key9++) {
758
+ attrs[_key9 - 1] = arguments[_key9];
759
+ }
760
+
761
+ for (var _i7 = 0, _attrs = attrs; _i7 < _attrs.length; _i7++) {
762
+ var attr = _attrs[_i7];
763
+
764
+ if (!_lodash["default"].isEmpty(info[attr])) {
765
+ return info[attr];
766
+ }
767
+ }
768
+
769
+ return info;
770
+ } // 半形轉化為全形
771
+
772
+ }, {
773
+ key: "toDBC",
774
+ value: function toDBC(txtstring) {
775
+ var tmp = "";
776
+
777
+ for (var i = 0; i < txtstring.length; i++) {
778
+ if (txtstring.charCodeAt(i) === 32) {
779
+ tmp = tmp + String.fromCharCode(12288);
780
+ }
781
+
782
+ if (txtstring.charCodeAt(i) < 127) {
783
+ tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248);
784
+ }
785
+ }
786
+
787
+ return tmp;
788
+ } // 全形轉換為半形
789
+
790
+ }, {
791
+ key: "toCDB",
792
+ value: function toCDB(str) {
793
+ var tmp = "";
794
+
795
+ for (var i = 0; i < str.length; i++) {
796
+ if (str.charCodeAt(i) === 12288) {
797
+ tmp += String.fromCharCode(str.charCodeAt(i) - 12256);
798
+ continue;
799
+ }
800
+
801
+ if (str.charCodeAt(i) > 65280 && str.charCodeAt(i) < 65375) {
802
+ tmp += String.fromCharCode(str.charCodeAt(i) - 65248);
803
+ } else {
804
+ tmp += String.fromCharCode(str.charCodeAt(i));
805
+ }
806
+ }
807
+
808
+ return tmp;
809
+ }
810
+ }, {
811
+ key: "indexesOf",
812
+ value: function indexesOf(arr, val) {
813
+ var indexes = [];
814
+ var i = -1;
815
+
816
+ while ((i = arr.indexOf(val, i + 1)) !== -1) {
817
+ indexes.push(i);
818
+ }
819
+
820
+ return indexes;
821
+ }
822
+ /** modify origin array */
823
+
824
+ }, {
825
+ key: "getIndexOfContext",
826
+ value: function getIndexOfContext(context, stmt) {
827
+ return _lodash["default"].findIndex(context, function (per) {
828
+ return _lodash["default"].isEqual(per.trim(), stmt);
829
+ });
830
+ }
831
+ /** 去掉文字裡討厭的換行*/
832
+
833
+ }, {
834
+ key: "toOneLineString",
835
+ value: function toOneLineString(string) {
836
+ return _lodash["default"].join(_lodash["default"].split(string, "\n"), "");
837
+ }
838
+ }, {
839
+ key: "toSpaceLessString",
840
+ value: function toSpaceLessString(string) {
841
+ return _lodash["default"].split(string, " ").map(function (each) {
842
+ return _lodash["default"].trim(each);
843
+ }).join("");
844
+ }
845
+ }, {
846
+ key: "exist",
847
+ value: function exist(obj) {
848
+ return !_lodash["default"].isNull(obj) && !_lodash["default"].isUndefined(obj);
849
+ }
850
+ }, {
851
+ key: "isUndefinedNullEmpty",
852
+ value: function isUndefinedNullEmpty(obj) {
853
+ return obj === undefined || _lodash["default"].isEmpty(obj) || obj === null;
854
+ }
855
+ /** 讓字串結尾必須是指定的 predicate, ex: `i'm good today?,,` => `i'm good today` */
856
+
857
+ }, {
858
+ key: "getNormalizedStringEndWith",
859
+ value: function getNormalizedStringEndWith(string, predicate) {
860
+ string = this.toCDB(string);
861
+ predicate = this.toCDB(predicate);
862
+
863
+ var after = _lodash["default"].join(_lodash["default"].dropRightWhile(string, function (each) {
864
+ return !_lodash["default"].isEqual(each, predicate);
865
+ }), "");
866
+
867
+ return _lodash["default"].isEmpty(after) ? string : after;
868
+ }
869
+ /** 讓字串開頭不可以是 predicate, ex: `,, \n\t\s i'm good today?` => `i'm good today?` */
870
+
871
+ }, {
872
+ key: "getNormalizedStringNotStartWith",
873
+ value: function getNormalizedStringNotStartWith(string) {
874
+ var _this2 = this;
875
+
876
+ for (var _len9 = arguments.length, predicate = new Array(_len9 > 1 ? _len9 - 1 : 0), _key10 = 1; _key10 < _len9; _key10++) {
877
+ predicate[_key10 - 1] = arguments[_key10];
878
+ }
879
+
880
+ string = this.toCDB(string);
881
+
882
+ var after = _lodash["default"].join(_lodash["default"].dropWhile(string, function (each) {
883
+ return _this2.has(predicate, each);
884
+ }), "");
885
+
886
+ return _lodash["default"].isEmpty(after) ? string : after;
887
+ }
888
+ /** 讓字串開頭不可以是 predicate, ex: `,, \n\t\s i'm good today?` => `i'm good today?` */
889
+
890
+ }, {
891
+ key: "getNormalizedStringNotEndWith",
892
+ value: function getNormalizedStringNotEndWith(string) {
893
+ var _this3 = this;
894
+
895
+ for (var _len10 = arguments.length, predicate = new Array(_len10 > 1 ? _len10 - 1 : 0), _key11 = 1; _key11 < _len10; _key11++) {
896
+ predicate[_key11 - 1] = arguments[_key11];
897
+ }
898
+
899
+ string = this.toCDB(string);
900
+
901
+ var after = _lodash["default"].join(_lodash["default"].dropRightWhile(string, function (each) {
902
+ return _this3.has(predicate, each);
903
+ }), "");
904
+
905
+ return _lodash["default"].isEmpty(after) ? string : after;
906
+ }
907
+ /** 取得 YYYY-MM-DD */
908
+
909
+ }, {
910
+ key: "getTodayTimeFormat",
911
+ value: function getTodayTimeFormat(ts) {
912
+ return (0, _moment["default"])(ts ? ts : undefined).format("YYYY-MM-DD");
913
+ }
914
+ /** 取得 YYY-MM-DD-HH-mm-ss */
915
+
916
+ }, {
917
+ key: "getCurrentTimeFormat",
918
+ value: function getCurrentTimeFormat(ts) {
919
+ return (0, _moment["default"])(ts ? ts : undefined).format("YYYY-MM-DD-HH-mm-ss");
920
+ }
921
+ }, {
922
+ key: "getCurrentMillionSecTimeFormat",
923
+ value: function getCurrentMillionSecTimeFormat(ts) {
924
+ return (0, _moment["default"])(ts ? ts : undefined).format("YYYY-MM-DD-HH-mm-ss-SSS");
925
+ }
926
+ }, {
927
+ key: "isBetweenTimeStamp",
928
+ value: function isBetweenTimeStamp() {
929
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
930
+ var min = arguments.length > 1 ? arguments[1] : undefined;
931
+ var max = arguments.length > 2 ? arguments[2] : undefined;
932
+ return (0, _moment["default"])(target).isBetween(min, max);
933
+ }
934
+ }, {
935
+ key: "isBeforeTimeStamp",
936
+ value: function isBeforeTimeStamp() {
937
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
938
+ var time = arguments.length > 1 ? arguments[1] : undefined;
939
+ return (0, _moment["default"])(target).isBefore(time);
940
+ }
941
+ }, {
942
+ key: "isAfterTimeStamp",
943
+ value: function isAfterTimeStamp() {
944
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
945
+ var time = arguments.length > 1 ? arguments[1] : undefined;
946
+ return (0, _moment["default"])(target).isAfter(time);
947
+ }
948
+ /** 獲得 幾天後的timestamp 的概念 {months: 2,days:3} =>
949
+ * ts => 1643434497341
950
+ 再利用 getCurrentTimeStamp(ts) => 2022-01-29
951
+ */
952
+
953
+ }, {
954
+ key: "getTimeStampAfterCondition",
955
+ value: function getTimeStampAfterCondition() {
956
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getCurrentTimeStamp();
957
+ var param = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
958
+ days: 0,
959
+ months: 0,
960
+ years: 0,
961
+ minutes: 0,
962
+ seconds: 0
963
+ };
964
+ var base = (0, _moment["default"])(target);
965
+
966
+ for (var each in param) {
967
+ var number = param[each];
968
+ var unit = each;
969
+
970
+ if (number !== 0) {
971
+ base = base.add(number, unit);
972
+ }
973
+ }
974
+
975
+ return base.valueOf();
976
+ }
977
+ /** 要記住timestamp 可以轉換成西元時間(timestamp),或是期間(duration) 把duration time-stamp 轉成 02:13.445 */
978
+
979
+ }, {
980
+ key: "getTimeFormatOfDurationToMillionSecond",
981
+ value: function getTimeFormatOfDurationToMillionSecond(duration) {
982
+ return _moment["default"].utc(duration).format("HH小時mm分鐘ss秒SSS");
983
+ }
984
+ /** duration是兩個timestamp相減,把duration time-stamp 轉成 02:13,moment.utc 就是不會加八小時啦幹 */
985
+
986
+ }, {
987
+ key: "getTimeFormatOfDurationToSecond",
988
+ value: function getTimeFormatOfDurationToSecond(duration) {
989
+ return _moment["default"].utc(duration).format("HH小時mm分鐘ss秒");
990
+ }
991
+ /** duration是兩個timestamp相減,把duration time-stamp 轉成 02:13,moment.utc 就是不會加八小時啦幹 , 為什麼對多1天 超怪 */
992
+
993
+ }, {
994
+ key: "getTimeFormatOfDurationToDay",
995
+ value: function getTimeFormatOfDurationToDay(duration) {
996
+ return _moment["default"].utc(duration).format("DD天HH小時mm分鐘ss秒");
997
+ }
998
+ }, {
999
+ key: "getChineseTimeFormat",
1000
+ value: function getChineseTimeFormat(ts) {
1001
+ _moment["default"].locale("zh-TW");
1002
+
1003
+ return (0, _moment["default"])(ts).format("LLLL");
1004
+ }
1005
+ }, {
1006
+ key: "getMinuteFormatOfDuration",
1007
+ value: function getMinuteFormatOfDuration(ds) {
1008
+ _moment["default"].duration(ds).asMinutes();
1009
+ }
1010
+ }, {
1011
+ key: "getSecondFormatOfDuration",
1012
+ value: function getSecondFormatOfDuration(ds) {
1013
+ _moment["default"].duration(ds).asSeconds();
1014
+ }
1015
+ }, {
1016
+ key: "getDayFormatOfDuration",
1017
+ value: function getDayFormatOfDuration(ds) {
1018
+ _moment["default"].duration(ds).asDays();
1019
+ }
1020
+ /** param可以是timeStamp,也可是date,或是string
1021
+ * timestamp : 1231231279
1022
+ * date :(new Date).now()
1023
+ * string: '2021-11-21'
1024
+ *
1025
+ * getDurationOfMillionSec('2022-01-21' || 123123112312 || (new Date).now())) */
1026
+
1027
+ }, {
1028
+ key: "getDurationOfMillionSec",
1029
+ value: function getDurationOfMillionSec(dateOrTimeStamp) {
1030
+ var currentTimestamp = this.getCurrentTimeStamp();
1031
+ var targetTimeStamp = (0, _moment["default"])(dateOrTimeStamp).valueOf();
1032
+
1033
+ var queue = _lodash["default"].sortBy([{
1034
+ ts: currentTimestamp
1035
+ }, {
1036
+ ts: targetTimeStamp
1037
+ }], function (each) {
1038
+ return each.ts;
1039
+ }).map(function (each) {
1040
+ return each.ts;
1041
+ });
1042
+
1043
+ var after = (0, _moment["default"])(queue.pop());
1044
+ var before = (0, _moment["default"])(queue.shift()); // another date
1045
+
1046
+ var duration = _moment["default"].duration(after.diff(before));
1047
+
1048
+ var ms = duration.asMilliseconds();
1049
+ return ms;
1050
+ }
1051
+ }, {
1052
+ key: "getCurrentTimeStamp",
1053
+ value: function getCurrentTimeStamp() {
1054
+ return (0, _moment["default"])().valueOf();
1055
+ }
1056
+ }, {
1057
+ key: "isStringContainInLines",
1058
+ value: function isStringContainInLines(context, key) {
1059
+ var _iterator5 = _createForOfIteratorHelper(_lodash["default"].split(context, "\n")),
1060
+ _step5;
1061
+
1062
+ try {
1063
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
1064
+ var each = _step5.value;
1065
+ if (this.has(each, key)) return true;
1066
+ }
1067
+ } catch (err) {
1068
+ _iterator5.e(err);
1069
+ } finally {
1070
+ _iterator5.f();
1071
+ }
1072
+
1073
+ return false;
1074
+ }
1075
+ }, {
1076
+ key: "camel",
1077
+ value: function camel() {
1078
+ for (var _len11 = arguments.length, words = new Array(_len11), _key12 = 0; _key12 < _len11; _key12++) {
1079
+ words[_key12] = arguments[_key12];
1080
+ }
1081
+
1082
+ return _lodash["default"].camelCase(words.join("_"));
1083
+ }
1084
+ }, {
1085
+ key: "upperCamel",
1086
+ value: function upperCamel() {
1087
+ return _lodash["default"].upperFirst(this.camel.apply(this, arguments));
1088
+ }
1089
+ /**
1090
+ * [{key1:value1},{key2:values2}]
1091
+ * =>
1092
+ * {key1:value1,key2:value2}
1093
+ *
1094
+ * */
1095
+
1096
+ }, {
1097
+ key: "array2Obj",
1098
+ value: function array2Obj(array) {
1099
+ var obj = {};
1100
+
1101
+ var _iterator6 = _createForOfIteratorHelper(array),
1102
+ _step6;
1103
+
1104
+ try {
1105
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
1106
+ var each = _step6.value;
1107
+ obj["".concat(this.getObjectKey(each))] = this.getObjectValue(each);
1108
+ }
1109
+ } catch (err) {
1110
+ _iterator6.e(err);
1111
+ } finally {
1112
+ _iterator6.f();
1113
+ }
1114
+
1115
+ return obj;
1116
+ }
1117
+ /**
1118
+ *
1119
+ * [{name:'aaa',sign:2},{name:'aaa',sign:3},{name:'b',sign:4}] =>
1120
+ * {aaa:[{{name:'aaa',sign:2},{name:'aaa',sign:3}}], b:[{name:'b',sign:4}]}
1121
+ */
1122
+
1123
+ }, {
1124
+ key: "arrayToObjWith",
1125
+ value: function arrayToObjWith(array, predicate) {
1126
+ var obj = {};
1127
+
1128
+ var _iterator7 = _createForOfIteratorHelper(array),
1129
+ _step7;
1130
+
1131
+ try {
1132
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
1133
+ var item = _step7.value;
1134
+ var key = predicate(item);
1135
+ var content = obj[key];
1136
+
1137
+ if (content && _lodash["default"].isArray(content)) {
1138
+ content.push(item);
1139
+ } else {
1140
+ obj[key] = [item];
1141
+ }
1142
+ }
1143
+ } catch (err) {
1144
+ _iterator7.e(err);
1145
+ } finally {
1146
+ _iterator7.f();
1147
+ }
1148
+
1149
+ return obj;
1150
+ }
1151
+ }, {
1152
+ key: "isEmptyString",
1153
+ value: function isEmptyString(string) {
1154
+ return _lodash["default"].isEqual(_lodash["default"].trim(string), "");
1155
+ }
1156
+ /** 放在後面的priority 越大 */
1157
+
1158
+ }, {
1159
+ key: "mergeObject",
1160
+ value: function mergeObject() {
1161
+ return _lodash["default"].merge.apply(_lodash["default"], arguments);
1162
+ }
1163
+ }, {
1164
+ key: "syncSetTimeout",
1165
+ value: function syncSetTimeout(func, ms) {
1166
+ var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
1167
+
1168
+ (function sync(done) {
1169
+ if (!done) {
1170
+ setTimeout(function () {
1171
+ func();
1172
+ sync(true);
1173
+ }, ms);
1174
+ return;
1175
+ }
1176
+
1177
+ callback();
1178
+ })();
1179
+ }
1180
+ /**
1181
+ * rootName : /free_marker/src/exam/web
1182
+ * pathName : /free_marker/src/exam/web/src/base/AlertDialog.js
1183
+ * return: /src/base/AlertDialog.js
1184
+ * */
1185
+
1186
+ }, {
1187
+ key: "getRelativePath",
1188
+ value: function getRelativePath(pathName, rootName) {
1189
+ return _lodash["default"].dropWhile(pathName, function (each, index) {
1190
+ return _lodash["default"].isEqual(each, rootName[index]);
1191
+ }).join("");
1192
+ }
1193
+ /**
1194
+ * mutated;
1195
+ const arr = [0,1,2,3,4,5,6,7,8];
1196
+ dropItemsByIndex(arr,1,3);
1197
+ this.appendInfo(arr); [ 0, 4, 5, 6, 7, 8 ]
1198
+ */
1199
+
1200
+ }, {
1201
+ key: "dropItemsByIndex",
1202
+ value: function dropItemsByIndex(array, from, end) {
1203
+ _lodash["default"].remove(array, function (value, index, array) {
1204
+ return end >= index && index >= from;
1205
+ });
1206
+ }
1207
+ }, {
1208
+ key: "isEven",
1209
+ value: function isEven(n) {
1210
+ return n % 2 === 0;
1211
+ }
1212
+ }, {
1213
+ key: "isOdd",
1214
+ value: function isOdd(n) {
1215
+ return Math.abs(n % 2) === 1;
1216
+ }
1217
+ }, {
1218
+ key: "enrichZhTw",
1219
+ value: function enrichZhTw() {
1220
+ _moment["default"].locale("zh-tw", {
1221
+ months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
1222
+ monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
1223
+ weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
1224
+ weekdaysShort: "周日_周一_周二_周三_周四_周五_周六".split("_"),
1225
+ weekdaysMin: "日_一_二_三_四_五_六".split("_"),
1226
+ longDateFormat: {
1227
+ LT: "Ah點mm分",
1228
+ LTS: "Ah點m分s秒",
1229
+ L: "YYYY-MM-DD",
1230
+ LL: "YYYY年MMMD日",
1231
+ LLL: "YYYY年MMMD日Ah點mm分",
1232
+ LLLL: "YYYY年MMMD日ddddAh點mm分",
1233
+ l: "YYYY-MM-DD",
1234
+ ll: "YYYY年MMMD日",
1235
+ lll: "YYYY年MMMD日Ah點mm分",
1236
+ llll: "YYYY年MMMD日ddddAh點mm分"
1237
+ },
1238
+ meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
1239
+ meridiemHour: function meridiemHour(h, meridiem) {
1240
+ var hour = h;
1241
+
1242
+ if (hour === 12) {
1243
+ hour = 0;
1244
+ }
1245
+
1246
+ if (meridiem === "凌晨" || meridiem === "早上" || meridiem === "上午") {
1247
+ return hour;
1248
+ } else if (meridiem === "下午" || meridiem === "晚上") {
1249
+ return hour + 12;
1250
+ } else {
1251
+ // '中午'
1252
+ return hour >= 11 ? hour : hour + 12;
1253
+ }
1254
+ },
1255
+ meridiem: function meridiem(hour, minute, isLower) {
1256
+ var hm = hour * 100 + minute;
1257
+
1258
+ if (hm < 600) {
1259
+ return "凌晨";
1260
+ } else if (hm < 900) {
1261
+ return "早上";
1262
+ } else if (hm < 1130) {
1263
+ return "上午";
1264
+ } else if (hm < 1230) {
1265
+ return "中午";
1266
+ } else if (hm < 1800) {
1267
+ return "下午";
1268
+ } else {
1269
+ return "晚上";
1270
+ }
1271
+ },
1272
+ calendar: {
1273
+ sameDay: function sameDay() {
1274
+ return this.minutes() === 0 ? "[今天]Ah[點整]" : "[今天]LT";
1275
+ },
1276
+ nextDay: function nextDay() {
1277
+ return this.minutes() === 0 ? "[明天]Ah[點整]" : "[明天]LT";
1278
+ },
1279
+ lastDay: function lastDay() {
1280
+ return this.minutes() === 0 ? "[昨天]Ah[點整]" : "[昨天]LT";
1281
+ },
1282
+ nextWeek: function nextWeek() {
1283
+ var startOfWeek, prefix;
1284
+ startOfWeek = (0, _moment["default"])().startOf("week");
1285
+ prefix = this.diff(startOfWeek, "days") >= 7 ? "[下]" : "[本]";
1286
+ return this.minutes() === 0 ? prefix + "dddA點整" : prefix + "dddAh點mm";
1287
+ },
1288
+ lastWeek: function lastWeek() {
1289
+ var startOfWeek, prefix;
1290
+ startOfWeek = (0, _moment["default"])().startOf("week");
1291
+ prefix = this.unix() < startOfWeek.unix() ? "[上]" : "[本]";
1292
+ return this.minutes() === 0 ? prefix + "dddAh點整" : prefix + "dddAh點mm";
1293
+ },
1294
+ sameElse: "LL"
1295
+ },
1296
+ ordinalParse: /\d{1,2}(日|月|周)/,
1297
+ ordinal: function ordinal(number, period) {
1298
+ switch (period) {
1299
+ case "d":
1300
+ case "D":
1301
+ case "DDD":
1302
+ return number + "日";
1303
+
1304
+ case "M":
1305
+ return number + "月";
1306
+
1307
+ case "w":
1308
+ case "W":
1309
+ return number + "周";
1310
+
1311
+ default:
1312
+ return number;
1313
+ }
1314
+ },
1315
+ relativeTime: {
1316
+ future: "%s内",
1317
+ past: "%s前",
1318
+ s: "幾秒",
1319
+ m: "1 分鐘",
1320
+ mm: "%d 分鐘",
1321
+ h: "1 小時",
1322
+ hh: "%d 小時",
1323
+ d: "1 天",
1324
+ dd: "%d 天",
1325
+ M: "1 個月",
1326
+ MM: "%d 个月",
1327
+ y: "1 年",
1328
+ yy: "%d 年"
1329
+ },
1330
+ week: {
1331
+ // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
1332
+ dow: 1,
1333
+ // Monday is the first day of the week.
1334
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
1335
+
1336
+ }
1337
+ });
1338
+ }
1339
+ /** react js Util */
1340
+
1341
+ }, {
1342
+ key: "getVisibleOrHidden",
1343
+ value: function getVisibleOrHidden(judgement) {
1344
+ return {
1345
+ visibility: judgement ? "visible" : "hidden"
1346
+ };
1347
+ }
1348
+ }, {
1349
+ key: "getVisibleOrNone",
1350
+ value: function getVisibleOrNone(judgement) {
1351
+ return {
1352
+ display: judgement ? "visible" : "none"
1353
+ };
1354
+ }
1355
+ }, {
1356
+ key: "stringToInteger",
1357
+ value: function stringToInteger(string) {
1358
+ switch (string) {
1359
+ case "A":
1360
+ return 0;
1361
+
1362
+ case "B":
1363
+ return 1;
1364
+
1365
+ case "C":
1366
+ return 2;
1367
+
1368
+ case "D":
1369
+ return 3;
1370
+
1371
+ case "E":
1372
+ return 4;
1373
+
1374
+ case "F":
1375
+ return 5;
1376
+
1377
+ case "G":
1378
+ return 6;
1379
+
1380
+ case "H":
1381
+ return 7;
1382
+
1383
+ case "I":
1384
+ return 8;
1385
+
1386
+ case "J":
1387
+ return 9;
1388
+
1389
+ case "K":
1390
+ return 10;
1391
+
1392
+ default:
1393
+ return 101;
1394
+ }
1395
+ }
1396
+ }, {
1397
+ key: "integerToString",
1398
+ value: function integerToString(integer) {
1399
+ switch (integer) {
1400
+ case 0:
1401
+ return "A";
1402
+
1403
+ case 1:
1404
+ return "B";
1405
+
1406
+ case 2:
1407
+ return "C";
1408
+
1409
+ case 3:
1410
+ return "D";
1411
+
1412
+ case 4:
1413
+ return "E";
1414
+
1415
+ case 5:
1416
+ return "F";
1417
+
1418
+ case 6:
1419
+ return "G";
1420
+
1421
+ case 7:
1422
+ return "H";
1423
+
1424
+ case 8:
1425
+ return "I";
1426
+
1427
+ case 9:
1428
+ return "J";
1429
+
1430
+ default:
1431
+ return "Z";
1432
+ }
1433
+ }
1434
+ }]);
1435
+ return Utiller;
1436
+ }();
1437
+
1438
+ var _default = Utiller;
1439
+ exports["default"] = _default;