@powfix/core-js 0.20.5 → 0.21.1
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/dist/browser/cjs/index.browser.js +3 -0
- package/dist/browser/cjs/shared/utils/index.js +1 -1
- package/dist/browser/esm/index.browser.mjs +1 -0
- package/dist/browser/esm/shared/utils/index.mjs +1 -1
- package/dist/browser/types/index.browser.d.ts +1 -0
- package/dist/browser/types/shared/utils/UUID.d.ts +1 -1
- package/dist/browser/types/shared/utils/index.d.ts +1 -0
- package/dist/cjs/index.js +17 -0
- package/dist/cjs/shared/constants/COORDINATE.js +10 -0
- package/dist/cjs/shared/constants/CRUD.js +22 -0
- package/dist/cjs/shared/constants/DATE.js +26 -0
- package/dist/cjs/shared/constants/DISTANCE.js +18 -0
- package/dist/cjs/shared/constants/DURATION.js +21 -0
- package/dist/cjs/shared/constants/NOT_NULL.js +4 -0
- package/dist/cjs/shared/constants/index.js +22 -0
- package/dist/cjs/shared/index.js +23 -0
- package/dist/cjs/shared/interfaces/Coordinate.js +2 -0
- package/dist/cjs/shared/interfaces/Point2.js +2 -0
- package/dist/cjs/shared/interfaces/Point3.js +2 -0
- package/dist/cjs/shared/interfaces/StorageProvider.js +2 -0
- package/dist/cjs/shared/interfaces/index.js +20 -0
- package/dist/cjs/shared/managers/SessionManager.js +134 -0
- package/dist/cjs/shared/managers/SessionManager.type.js +2 -0
- package/dist/cjs/shared/managers/index.js +18 -0
- package/dist/cjs/shared/scripts/base64Polyfill.js +18 -0
- package/dist/cjs/shared/scripts/index.js +17 -0
- package/dist/cjs/shared/services/index.js +17 -0
- package/dist/cjs/shared/services/time/TimeService.js +180 -0
- package/dist/cjs/shared/services/time/TimeService.type.js +2 -0
- package/dist/cjs/shared/services/time/index.js +18 -0
- package/dist/cjs/shared/types/IntRage.js +2 -0
- package/dist/cjs/shared/types/PartialExcept.js +2 -0
- package/dist/cjs/shared/types/index.js +18 -0
- package/dist/cjs/shared/utils/ArrayUtils.js +30 -0
- package/dist/cjs/shared/utils/AxiosUtils.js +53 -0
- package/dist/cjs/shared/utils/BooleanUtils.js +8 -0
- package/dist/cjs/shared/utils/Calc.js +27 -0
- package/dist/cjs/shared/utils/CoordinateUtils.js +42 -0
- package/dist/cjs/shared/utils/DateUtils.js +310 -0
- package/dist/cjs/shared/utils/Enum.js +36 -0
- package/dist/cjs/shared/utils/Enum.types.js +2 -0
- package/dist/cjs/shared/utils/I18nUtils.js +13 -0
- package/dist/cjs/shared/utils/JuminNumberUtils.js +50 -0
- package/dist/cjs/shared/utils/NumberUtils.js +25 -0
- package/dist/cjs/shared/utils/ObjectIdUtils.js +30 -0
- package/dist/cjs/shared/utils/Point3Utils.js +12 -0
- package/dist/cjs/shared/utils/RandomUtils.js +64 -0
- package/dist/cjs/shared/utils/Sequencer.js +148 -0
- package/dist/cjs/shared/utils/StringUtils.js +37 -0
- package/dist/cjs/shared/utils/UUID.js +320 -0
- package/dist/cjs/shared/utils/UUID.types.js +2 -0
- package/dist/cjs/shared/utils/Uint8ArrayUtils.js +13 -0
- package/dist/cjs/shared/utils/UuidUtils.js +77 -0
- package/dist/cjs/shared/utils/Validator.js +118 -0
- package/dist/cjs/shared/utils/global/atob.js +9 -0
- package/dist/cjs/shared/utils/global/base64.js +25 -0
- package/dist/cjs/shared/utils/global/between.js +7 -0
- package/dist/cjs/shared/utils/global/btoa.js +9 -0
- package/dist/cjs/shared/utils/global/castArray.js +6 -0
- package/dist/cjs/shared/utils/global/circularDistance.js +14 -0
- package/dist/cjs/shared/utils/global/fallbackIfMatch.js +9 -0
- package/dist/cjs/shared/utils/global/fallbackIfNull.js +7 -0
- package/dist/cjs/shared/utils/global/fallbackIfNullish.js +9 -0
- package/dist/cjs/shared/utils/global/fallbackIfUndefined.js +7 -0
- package/dist/cjs/shared/utils/global/firstNonNullish.js +13 -0
- package/dist/cjs/shared/utils/global/flat.js +117 -0
- package/dist/cjs/shared/utils/global/index.js +31 -0
- package/dist/cjs/shared/utils/global/processFirstNonNullish.js +11 -0
- package/dist/cjs/shared/utils/global/pureEnum.js +23 -0
- package/dist/cjs/shared/utils/global/sleep.js +5 -0
- package/dist/cjs/shared/utils/index.js +39 -0
- package/dist/cjs/shared/utils/try-catch/TryCatch.js +78 -0
- package/dist/cjs/shared/utils/try-catch/index.js +17 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/shared/constants/COORDINATE.mjs +6 -0
- package/dist/esm/shared/constants/CRUD.mjs +19 -0
- package/dist/esm/shared/constants/DATE.mjs +22 -0
- package/dist/esm/shared/constants/DISTANCE.mjs +14 -0
- package/dist/esm/shared/constants/DURATION.mjs +17 -0
- package/dist/esm/shared/constants/NOT_NULL.mjs +1 -0
- package/dist/esm/shared/constants/index.mjs +6 -0
- package/dist/esm/shared/index.mjs +7 -0
- package/dist/esm/shared/interfaces/Coordinate.mjs +1 -0
- package/dist/esm/shared/interfaces/Point2.mjs +1 -0
- package/dist/esm/shared/interfaces/Point3.mjs +1 -0
- package/dist/esm/shared/interfaces/StorageProvider.mjs +1 -0
- package/dist/esm/shared/interfaces/index.mjs +4 -0
- package/dist/esm/shared/managers/SessionManager.mjs +127 -0
- package/dist/esm/shared/managers/SessionManager.type.mjs +1 -0
- package/dist/esm/shared/managers/index.mjs +2 -0
- package/dist/esm/shared/scripts/base64Polyfill.mjs +11 -0
- package/dist/esm/shared/scripts/index.mjs +1 -0
- package/dist/esm/shared/services/index.mjs +1 -0
- package/dist/esm/shared/services/time/TimeService.mjs +173 -0
- package/dist/esm/shared/services/time/TimeService.type.mjs +1 -0
- package/dist/esm/shared/services/time/index.mjs +2 -0
- package/dist/esm/shared/types/IntRage.mjs +1 -0
- package/dist/esm/shared/types/PartialExcept.mjs +1 -0
- package/dist/esm/shared/types/index.mjs +2 -0
- package/dist/esm/shared/utils/ArrayUtils.mjs +26 -0
- package/dist/esm/shared/utils/AxiosUtils.mjs +49 -0
- package/dist/esm/shared/utils/BooleanUtils.mjs +5 -0
- package/dist/esm/shared/utils/Calc.mjs +23 -0
- package/dist/esm/shared/utils/CoordinateUtils.mjs +38 -0
- package/dist/esm/shared/utils/DateUtils.mjs +303 -0
- package/dist/esm/shared/utils/Enum.mjs +32 -0
- package/dist/esm/shared/utils/Enum.types.mjs +1 -0
- package/dist/esm/shared/utils/I18nUtils.mjs +6 -0
- package/dist/esm/shared/utils/JuminNumberUtils.mjs +46 -0
- package/dist/esm/shared/utils/NumberUtils.mjs +21 -0
- package/dist/esm/shared/utils/ObjectIdUtils.mjs +26 -0
- package/dist/esm/shared/utils/Point3Utils.mjs +8 -0
- package/dist/esm/shared/utils/RandomUtils.mjs +60 -0
- package/dist/esm/shared/utils/Sequencer.mjs +141 -0
- package/dist/esm/shared/utils/StringUtils.mjs +33 -0
- package/dist/esm/shared/utils/UUID.mjs +316 -0
- package/dist/esm/shared/utils/UUID.types.mjs +1 -0
- package/dist/esm/shared/utils/Uint8ArrayUtils.mjs +9 -0
- package/dist/esm/shared/utils/UuidUtils.mjs +40 -0
- package/dist/esm/shared/utils/Validator.mjs +114 -0
- package/dist/esm/shared/utils/global/atob.mjs +3 -0
- package/dist/esm/shared/utils/global/base64.mjs +21 -0
- package/dist/esm/shared/utils/global/between.mjs +3 -0
- package/dist/esm/shared/utils/global/btoa.mjs +3 -0
- package/dist/esm/shared/utils/global/castArray.mjs +3 -0
- package/dist/esm/shared/utils/global/circularDistance.mjs +11 -0
- package/dist/esm/shared/utils/global/fallbackIfMatch.mjs +6 -0
- package/dist/esm/shared/utils/global/fallbackIfNull.mjs +4 -0
- package/dist/esm/shared/utils/global/fallbackIfNullish.mjs +6 -0
- package/dist/esm/shared/utils/global/fallbackIfUndefined.mjs +4 -0
- package/dist/esm/shared/utils/global/firstNonNullish.mjs +10 -0
- package/dist/esm/shared/utils/global/flat.mjs +113 -0
- package/dist/esm/shared/utils/global/index.mjs +15 -0
- package/dist/esm/shared/utils/global/processFirstNonNullish.mjs +8 -0
- package/dist/esm/shared/utils/global/pureEnum.mjs +18 -0
- package/dist/esm/shared/utils/global/sleep.mjs +1 -0
- package/dist/esm/shared/utils/index.mjs +23 -0
- package/dist/esm/shared/utils/try-catch/TryCatch.mjs +74 -0
- package/dist/esm/shared/utils/try-catch/index.mjs +1 -0
- package/dist/node/cjs/index.nodejs.js +3 -0
- package/dist/node/cjs/shared/utils/index.js +1 -1
- package/dist/node/esm/index.nodejs.mjs +1 -0
- package/dist/node/esm/shared/utils/index.mjs +1 -1
- package/dist/node/types/index.nodejs.d.ts +1 -0
- package/dist/node/types/shared/utils/UUID.d.ts +1 -1
- package/dist/node/types/shared/utils/index.d.ts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/shared/constants/COORDINATE.d.ts +7 -0
- package/dist/types/shared/constants/CRUD.d.ts +9 -0
- package/dist/types/shared/constants/DATE.d.ts +13 -0
- package/dist/types/shared/constants/DISTANCE.d.ts +13 -0
- package/dist/types/shared/constants/DURATION.d.ts +16 -0
- package/dist/types/shared/constants/NOT_NULL.d.ts +1 -0
- package/dist/types/shared/constants/index.d.ts +6 -0
- package/dist/types/shared/index.d.ts +7 -0
- package/dist/types/shared/interfaces/Coordinate.d.ts +8 -0
- package/dist/types/shared/interfaces/Point2.d.ts +4 -0
- package/dist/types/shared/interfaces/Point3.d.ts +4 -0
- package/dist/types/shared/interfaces/StorageProvider.d.ts +7 -0
- package/dist/types/shared/interfaces/index.d.ts +4 -0
- package/dist/types/shared/managers/SessionManager.d.ts +15 -0
- package/dist/types/shared/managers/SessionManager.type.d.ts +9 -0
- package/dist/types/shared/managers/index.d.ts +2 -0
- package/dist/types/shared/scripts/base64Polyfill.d.ts +1 -0
- package/dist/types/shared/scripts/index.d.ts +1 -0
- package/dist/types/shared/services/index.d.ts +1 -0
- package/dist/types/shared/services/time/TimeService.d.ts +31 -0
- package/dist/types/shared/services/time/TimeService.type.d.ts +21 -0
- package/dist/types/shared/services/time/index.d.ts +2 -0
- package/dist/types/shared/types/IntRage.d.ts +3 -0
- package/dist/types/shared/types/PartialExcept.d.ts +1 -0
- package/dist/types/shared/types/index.d.ts +2 -0
- package/dist/types/shared/utils/ArrayUtils.d.ts +12 -0
- package/dist/types/shared/utils/AxiosUtils.d.ts +5 -0
- package/dist/types/shared/utils/BooleanUtils.d.ts +1 -0
- package/dist/types/shared/utils/Calc.d.ts +4 -0
- package/dist/types/shared/utils/CoordinateUtils.d.ts +8 -0
- package/dist/types/shared/utils/DateUtils.d.ts +24 -0
- package/dist/types/shared/utils/Enum.d.ts +16 -0
- package/dist/types/shared/utils/Enum.types.d.ts +6 -0
- package/dist/types/shared/utils/I18nUtils.d.ts +4 -0
- package/dist/types/shared/utils/JuminNumberUtils.d.ts +4 -0
- package/dist/types/shared/utils/NumberUtils.d.ts +4 -0
- package/dist/types/shared/utils/ObjectIdUtils.d.ts +4 -0
- package/dist/types/shared/utils/Point3Utils.d.ts +4 -0
- package/dist/types/shared/utils/RandomUtils.d.ts +8 -0
- package/dist/types/shared/utils/Sequencer.d.ts +38 -0
- package/dist/types/shared/utils/StringUtils.d.ts +5 -0
- package/dist/types/shared/utils/UUID.d.ts +147 -0
- package/dist/types/shared/utils/UUID.types.d.ts +2 -0
- package/dist/types/shared/utils/Uint8ArrayUtils.d.ts +4 -0
- package/dist/types/shared/utils/UuidUtils.d.ts +14 -0
- package/dist/types/shared/utils/Validator.d.ts +48 -0
- package/dist/types/shared/utils/global/atob.d.ts +2 -0
- package/dist/types/shared/utils/global/base64.d.ts +2 -0
- package/dist/types/shared/utils/global/between.d.ts +1 -0
- package/dist/types/shared/utils/global/btoa.d.ts +2 -0
- package/dist/types/shared/utils/global/castArray.d.ts +1 -0
- package/dist/types/shared/utils/global/circularDistance.d.ts +1 -0
- package/dist/types/shared/utils/global/fallbackIfMatch.d.ts +1 -0
- package/dist/types/shared/utils/global/fallbackIfNull.d.ts +1 -0
- package/dist/types/shared/utils/global/fallbackIfNullish.d.ts +1 -0
- package/dist/types/shared/utils/global/fallbackIfUndefined.d.ts +1 -0
- package/dist/types/shared/utils/global/firstNonNullish.d.ts +1 -0
- package/dist/types/shared/utils/global/flat.d.ts +14 -0
- package/dist/types/shared/utils/global/index.d.ts +15 -0
- package/dist/types/shared/utils/global/processFirstNonNullish.d.ts +1 -0
- package/dist/types/shared/utils/global/pureEnum.d.ts +17 -0
- package/dist/types/shared/utils/global/sleep.d.ts +1 -0
- package/dist/types/shared/utils/index.d.ts +23 -0
- package/dist/types/shared/utils/try-catch/TryCatch.d.ts +24 -0
- package/dist/types/shared/utils/try-catch/index.d.ts +1 -0
- package/package.json +10 -4
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import moment from "moment";
|
|
2
|
+
import { DATE } from "../constants/DATE.mjs";
|
|
3
|
+
export class DateUtils {
|
|
4
|
+
static isPositiveInteger(value, strict) {
|
|
5
|
+
if (strict) {
|
|
6
|
+
if (typeof value !== 'number') {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
if (typeof value === 'bigint') {
|
|
11
|
+
return value >= 0 && value <= Number.MAX_SAFE_INTEGER;
|
|
12
|
+
}
|
|
13
|
+
if (typeof value === 'number') {
|
|
14
|
+
if (!Number.isSafeInteger(value)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return value >= 0 && value <= Number.MAX_SAFE_INTEGER;
|
|
18
|
+
}
|
|
19
|
+
if (typeof value === 'string') {
|
|
20
|
+
if (!/^(0|[1-9]\d*)$/g.test(value)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return DateUtils.isPositiveInteger(Number(value), strict);
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
static isMilliseconds(value, strict) {
|
|
28
|
+
return DateUtils.isPositiveInteger(value, strict);
|
|
29
|
+
}
|
|
30
|
+
static isSeconds(value, strict) {
|
|
31
|
+
return DateUtils.isPositiveInteger(value, strict);
|
|
32
|
+
}
|
|
33
|
+
static isUnix(value, strict) {
|
|
34
|
+
return DateUtils.isSeconds(value, strict);
|
|
35
|
+
}
|
|
36
|
+
static isISO8601(value) {
|
|
37
|
+
if (typeof value !== 'string') {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (!/(Z)|(\+\d{2}:\d{2})$/g.test(value)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return !Number.isNaN((new Date(value)).getTime());
|
|
44
|
+
}
|
|
45
|
+
static isValid(value, format, strict) {
|
|
46
|
+
var _a;
|
|
47
|
+
if (format === undefined) {
|
|
48
|
+
return DateUtils.isSeconds(value, strict) || DateUtils.isMilliseconds(value, strict) || DateUtils.isISO8601(value);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
switch (format) {
|
|
52
|
+
case DATE.FORMAT.UNIX: return DateUtils.isUnix(value, strict);
|
|
53
|
+
case DATE.FORMAT.SECONDS: return DateUtils.isSeconds(value, strict);
|
|
54
|
+
case DATE.FORMAT.MILLISECONDS: return DateUtils.isMilliseconds(value, strict);
|
|
55
|
+
case DATE.FORMAT.ISO_8601: return DateUtils.isISO8601(value);
|
|
56
|
+
default: {
|
|
57
|
+
throw new Error(`unknown format: ${format}(${(_a = DATE.FORMAT.toString(format)) !== null && _a !== void 0 ? _a : 'unknown'})`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
static from(value, format, strict) {
|
|
63
|
+
var _a;
|
|
64
|
+
if (value instanceof Date) {
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
if (!DateUtils.isValid(value, format, strict)) {
|
|
68
|
+
throw new Error('invalid date');
|
|
69
|
+
}
|
|
70
|
+
if (format === undefined) {
|
|
71
|
+
if (DateUtils.isMilliseconds(value, strict)) {
|
|
72
|
+
return DateUtils.from(value, DATE.FORMAT.MILLISECONDS);
|
|
73
|
+
}
|
|
74
|
+
if (DateUtils.isISO8601(value)) {
|
|
75
|
+
return DateUtils.from(value, DATE.FORMAT.ISO_8601);
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`no option to convert value to date`);
|
|
78
|
+
}
|
|
79
|
+
switch (format) {
|
|
80
|
+
case DATE.FORMAT.UNIX: return new Date(Number(value) * 1000);
|
|
81
|
+
case DATE.FORMAT.SECONDS: return new Date(Number(value) * 1000);
|
|
82
|
+
case DATE.FORMAT.MILLISECONDS: return new Date(Number(value));
|
|
83
|
+
case DATE.FORMAT.ISO_8601: return new Date(value);
|
|
84
|
+
default: {
|
|
85
|
+
throw new Error(`unknown format: ${format}(${(_a = DATE.FORMAT.toString(format)) !== null && _a !== void 0 ? _a : 'unknown'})`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
static fromUnix(value, strict) {
|
|
90
|
+
return DateUtils.from(value, DATE.FORMAT.UNIX, strict);
|
|
91
|
+
}
|
|
92
|
+
static fromSeconds(value, strict) {
|
|
93
|
+
return DateUtils.from(value, DATE.FORMAT.SECONDS, strict);
|
|
94
|
+
}
|
|
95
|
+
static fromMilliseconds(value, strict) {
|
|
96
|
+
return DateUtils.from(value, DATE.FORMAT.MILLISECONDS, strict);
|
|
97
|
+
}
|
|
98
|
+
static fromISO8601(value) {
|
|
99
|
+
return DateUtils.from(value, DATE.FORMAT.ISO_8601);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
DateUtils.relativeDate = (input, base = Date.now()) => {
|
|
103
|
+
// Create new moment instance to apply new locale
|
|
104
|
+
const datetime = moment.isMoment(input) ? moment(input.toDate()) : moment(input);
|
|
105
|
+
if (!datetime.isValid()) {
|
|
106
|
+
console.error('core-js:DateUtils.relativeDate() datetime is invalid', datetime);
|
|
107
|
+
return '<INVALID DATE>';
|
|
108
|
+
}
|
|
109
|
+
return datetime.from(base);
|
|
110
|
+
};
|
|
111
|
+
DateUtils.setLocale = (language) => {
|
|
112
|
+
const relativeTime = DateUtils.getRelativeTimeSpec(language);
|
|
113
|
+
if (relativeTime !== undefined) {
|
|
114
|
+
moment.updateLocale(language, { relativeTime });
|
|
115
|
+
}
|
|
116
|
+
moment.locale(language);
|
|
117
|
+
};
|
|
118
|
+
DateUtils.getRelativeTimeSpec = (locale) => {
|
|
119
|
+
if (locale in DateUtils.relativeTimeSpecs) {
|
|
120
|
+
return DateUtils.relativeTimeSpecs[locale];
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
};
|
|
124
|
+
(function (DateUtils) {
|
|
125
|
+
DateUtils.relativeTimeSpecs = {
|
|
126
|
+
ko: {
|
|
127
|
+
future: "%s 후",
|
|
128
|
+
past: "%s 전",
|
|
129
|
+
s: number => `${number}초`,
|
|
130
|
+
ss: number => `${number}초`,
|
|
131
|
+
m: number => `${number}분`,
|
|
132
|
+
mm: number => `${number}분`,
|
|
133
|
+
h: number => `${number}시간`,
|
|
134
|
+
hh: number => `${number}시간`,
|
|
135
|
+
d: number => `${number}일`,
|
|
136
|
+
dd: number => `${number}일`,
|
|
137
|
+
M: number => `${number}개월`,
|
|
138
|
+
MM: number => `${number}개월`,
|
|
139
|
+
y: number => `${number}년`,
|
|
140
|
+
yy: number => `${number}년`
|
|
141
|
+
},
|
|
142
|
+
en: {
|
|
143
|
+
future: "in %s",
|
|
144
|
+
past: "%s ago",
|
|
145
|
+
s: number => number === 1 ? `${number} second` : `${number} seconds`,
|
|
146
|
+
ss: number => `${number} seconds`,
|
|
147
|
+
m: number => number === 1 ? `${number} minute` : `${number} minutes`,
|
|
148
|
+
mm: number => `${number} minutes`,
|
|
149
|
+
h: number => number === 1 ? `${number} hour` : `${number} hours`,
|
|
150
|
+
hh: number => `${number} hours`,
|
|
151
|
+
d: number => number === 1 ? `${number} day` : `${number} days`,
|
|
152
|
+
dd: number => `${number} days`,
|
|
153
|
+
M: number => number === 1 ? `${number} month` : `${number} months`,
|
|
154
|
+
MM: number => `${number} months`,
|
|
155
|
+
y: number => number === 1 ? `${number} year` : `${number} years`,
|
|
156
|
+
yy: number => `${number} years`
|
|
157
|
+
},
|
|
158
|
+
ja: {
|
|
159
|
+
future: "%s後",
|
|
160
|
+
past: "%s前",
|
|
161
|
+
s: number => `${number}秒`,
|
|
162
|
+
ss: number => `${number}秒`,
|
|
163
|
+
m: number => `${number}分`,
|
|
164
|
+
mm: number => `${number}分`,
|
|
165
|
+
h: number => `${number}時`,
|
|
166
|
+
hh: number => `${number}時`,
|
|
167
|
+
d: number => `${number}日`,
|
|
168
|
+
dd: number => `${number}日`,
|
|
169
|
+
M: number => `${number}月`,
|
|
170
|
+
MM: number => `${number}月`,
|
|
171
|
+
y: number => `${number}年`,
|
|
172
|
+
yy: number => `${number}年`
|
|
173
|
+
},
|
|
174
|
+
zh: {
|
|
175
|
+
future: "%s后",
|
|
176
|
+
past: "%s前",
|
|
177
|
+
s: number => `${number}秒`,
|
|
178
|
+
ss: number => `${number}秒`,
|
|
179
|
+
m: number => `${number}分钟`,
|
|
180
|
+
mm: number => `${number}分钟`,
|
|
181
|
+
h: number => `${number}个小时`,
|
|
182
|
+
hh: number => `${number}个小时`,
|
|
183
|
+
d: number => `${number}天`,
|
|
184
|
+
dd: number => `${number}天`,
|
|
185
|
+
M: number => `${number}个月`,
|
|
186
|
+
MM: number => `${number}个月`,
|
|
187
|
+
y: number => `${number}年`,
|
|
188
|
+
yy: number => `${number}年`
|
|
189
|
+
},
|
|
190
|
+
ru: {
|
|
191
|
+
future: "через %s",
|
|
192
|
+
past: "%s назад",
|
|
193
|
+
s: number => `${number} секунд`,
|
|
194
|
+
ss: number => `${number} секунд`,
|
|
195
|
+
m: number => `${number} минута`,
|
|
196
|
+
mm: number => `${number} минут`,
|
|
197
|
+
h: number => `${number} час`,
|
|
198
|
+
hh: number => `${number} часов`,
|
|
199
|
+
d: number => `${number} день`,
|
|
200
|
+
dd: number => `${number} дней`,
|
|
201
|
+
M: number => `${number} месяц`,
|
|
202
|
+
MM: number => `${number} месяцев`,
|
|
203
|
+
y: number => `${number} год`,
|
|
204
|
+
yy: number => `${number} лет`
|
|
205
|
+
},
|
|
206
|
+
uz: {
|
|
207
|
+
future: "%sdan keyin",
|
|
208
|
+
past: "%s avval",
|
|
209
|
+
s: number => `${number} soniya`,
|
|
210
|
+
ss: number => `${number} soniya`,
|
|
211
|
+
m: number => `${number} daqiqa`,
|
|
212
|
+
mm: number => `${number} daqiqa`,
|
|
213
|
+
h: number => `${number} soat`,
|
|
214
|
+
hh: number => `${number} soat`,
|
|
215
|
+
d: number => `${number} kun`,
|
|
216
|
+
dd: number => `${number} kun`,
|
|
217
|
+
M: number => `${number} oy`,
|
|
218
|
+
MM: number => `${number} oy`,
|
|
219
|
+
y: number => `${number} yil`,
|
|
220
|
+
yy: number => `${number} yil`
|
|
221
|
+
},
|
|
222
|
+
de: {
|
|
223
|
+
future: "in %s",
|
|
224
|
+
past: "vor %s",
|
|
225
|
+
s: number => `${number === 1 ? "einer" : number} Sekunde${number === 1 ? "" : "n"}`,
|
|
226
|
+
ss: number => `${number} Sekunde${number === 1 ? "" : "n"}`,
|
|
227
|
+
m: number => `${number === 1 ? "einer" : number} Minute${number === 1 ? "" : "n"}`,
|
|
228
|
+
mm: number => `${number} Minute${number === 1 ? "" : "n"}`,
|
|
229
|
+
h: number => `${number === 1 ? "einer" : number} Stunde${number === 1 ? "" : "n"}`,
|
|
230
|
+
hh: number => `${number} Stunde${number === 1 ? "" : "n"}`,
|
|
231
|
+
d: number => `${number === 1 ? "einem" : number} Tag${number === 1 ? "" : "en"}`,
|
|
232
|
+
dd: number => `${number} Tag${number === 1 ? "" : "en"}`,
|
|
233
|
+
M: number => `${number === 1 ? "einem" : number} Monat${number === 1 ? "" : "en"}`,
|
|
234
|
+
MM: number => `${number} Monat${number === 1 ? "" : "en"}`,
|
|
235
|
+
y: number => `${number === 1 ? "einem" : number} Jahr${number === 1 ? "" : "en"}`,
|
|
236
|
+
yy: number => `${number} Jahr${number === 1 ? "" : "en"}`
|
|
237
|
+
},
|
|
238
|
+
fr: {
|
|
239
|
+
future: "dans %s",
|
|
240
|
+
past: "il y a %s",
|
|
241
|
+
s: number => `quelques secondes`,
|
|
242
|
+
ss: number => `${number} secondes`,
|
|
243
|
+
m: number => `une minute`,
|
|
244
|
+
mm: number => `${number} minutes`,
|
|
245
|
+
h: number => `une heure`,
|
|
246
|
+
hh: number => `${number} heures`,
|
|
247
|
+
d: number => `un jour`,
|
|
248
|
+
dd: number => `${number} jours`,
|
|
249
|
+
M: number => `un mois`,
|
|
250
|
+
MM: number => `${number} mois`,
|
|
251
|
+
y: number => `un an`,
|
|
252
|
+
yy: number => `${number} ans`
|
|
253
|
+
},
|
|
254
|
+
vi: {
|
|
255
|
+
future: "sau %s",
|
|
256
|
+
past: "%s trước",
|
|
257
|
+
s: number => `${number} giây`,
|
|
258
|
+
ss: number => `${number} giây`,
|
|
259
|
+
m: number => `${number} phút`,
|
|
260
|
+
mm: number => `${number} phút`,
|
|
261
|
+
h: number => `${number} giờ`,
|
|
262
|
+
hh: number => `${number} giờ`,
|
|
263
|
+
d: number => `${number} ngày`,
|
|
264
|
+
dd: number => `${number} ngày`,
|
|
265
|
+
M: number => `${number} tháng`,
|
|
266
|
+
MM: number => `${number} tháng`,
|
|
267
|
+
y: number => `${number} năm`,
|
|
268
|
+
yy: number => `${number} năm`
|
|
269
|
+
},
|
|
270
|
+
th: {
|
|
271
|
+
future: "ใน %s",
|
|
272
|
+
past: "%s ที่แล้ว",
|
|
273
|
+
s: number => `${number} วินาที`,
|
|
274
|
+
ss: number => `${number} วินาที`,
|
|
275
|
+
m: number => `${number} นาที`,
|
|
276
|
+
mm: number => `${number} นาที`,
|
|
277
|
+
h: number => `${number} ชั่วโมง`,
|
|
278
|
+
hh: number => `${number} ชั่วโมง`,
|
|
279
|
+
d: number => `${number} วัน`,
|
|
280
|
+
dd: number => `${number} วัน`,
|
|
281
|
+
M: number => `${number} เดือน`,
|
|
282
|
+
MM: number => `${number} เดือน`,
|
|
283
|
+
y: number => `${number} ปี`,
|
|
284
|
+
yy: number => `${number} ปี`
|
|
285
|
+
},
|
|
286
|
+
fil: {
|
|
287
|
+
future: "sa loob ng %s",
|
|
288
|
+
past: "%s ang nakalipas",
|
|
289
|
+
s: number => `${number} segundo`,
|
|
290
|
+
ss: number => `${number} segundo`,
|
|
291
|
+
m: number => `${number} minuto`,
|
|
292
|
+
mm: number => `${number} minuto`,
|
|
293
|
+
h: number => `${number} oras`,
|
|
294
|
+
hh: number => `${number} oras`,
|
|
295
|
+
d: number => `${number} araw`,
|
|
296
|
+
dd: number => `${number} araw`,
|
|
297
|
+
M: number => `${number} buwan`,
|
|
298
|
+
MM: number => `${number} buwan`,
|
|
299
|
+
y: number => `${number} taon`,
|
|
300
|
+
yy: number => `${number} taon`
|
|
301
|
+
},
|
|
302
|
+
};
|
|
303
|
+
})(DateUtils || (DateUtils = {}));
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class Enum {
|
|
2
|
+
static entries(e) {
|
|
3
|
+
return Object.entries(e).filter(([key, value]) => !/^-?\d+$/g.test(key) && typeof value !== 'function');
|
|
4
|
+
}
|
|
5
|
+
static keys(e) {
|
|
6
|
+
return Enum.entries(e).map(([key,]) => key);
|
|
7
|
+
}
|
|
8
|
+
static values(e) {
|
|
9
|
+
return Enum.entries(e).map(([, value]) => value);
|
|
10
|
+
}
|
|
11
|
+
static from(e) {
|
|
12
|
+
return new Enum(e);
|
|
13
|
+
}
|
|
14
|
+
constructor(e) {
|
|
15
|
+
this._e = e;
|
|
16
|
+
this._entries = Enum.entries(e);
|
|
17
|
+
this._keys = Enum.keys(e);
|
|
18
|
+
this._values = Enum.values(e);
|
|
19
|
+
}
|
|
20
|
+
value() {
|
|
21
|
+
return this._e;
|
|
22
|
+
}
|
|
23
|
+
entries() {
|
|
24
|
+
return this._entries;
|
|
25
|
+
}
|
|
26
|
+
keys() {
|
|
27
|
+
return this._keys;
|
|
28
|
+
}
|
|
29
|
+
values() {
|
|
30
|
+
return this._values;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { between } from "./global/between.mjs";
|
|
2
|
+
export class JuminNumberUtils {
|
|
3
|
+
static calculateX(juminNumber) {
|
|
4
|
+
const replacedJuminNumber = juminNumber.replace(/\D/g, '');
|
|
5
|
+
if (!between(replacedJuminNumber.length, 12, 13)) {
|
|
6
|
+
throw new Error('Jumin number length must be 12 to 13(without dash)');
|
|
7
|
+
}
|
|
8
|
+
const numbers = replacedJuminNumber.split('').map(e => parseInt(e, 10));
|
|
9
|
+
const sum = 2 * numbers[0] + 3 * numbers[1] + 4 * numbers[2] + 5 * numbers[3]
|
|
10
|
+
+ 6 * numbers[4] + 7 * numbers[5] + 8 * numbers[6] + 9 * numbers[7]
|
|
11
|
+
+ 2 * numbers[8] + 3 * numbers[9] + 4 * numbers[10] + 5 * numbers[11];
|
|
12
|
+
return (11 - (sum % 11)) % 10;
|
|
13
|
+
}
|
|
14
|
+
static isValid(juminNumber) {
|
|
15
|
+
const replacedJuminNumber = juminNumber.replace(/\D/g, '');
|
|
16
|
+
if (replacedJuminNumber.length !== 13) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
// 연도에 해당하는 숫자와 성별에 해당하는 숫자 비교
|
|
20
|
+
const TODAY_YEAR = parseInt(new Date().getFullYear().toString().slice(-2), 10);
|
|
21
|
+
const yearNum = parseInt(replacedJuminNumber.slice(0, 2), 10);
|
|
22
|
+
const sexNum = replacedJuminNumber.slice(6, 7); // 대시 있는경우 7로 변경
|
|
23
|
+
if (sexNum === '1' || sexNum === '2') {
|
|
24
|
+
if (yearNum < TODAY_YEAR)
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
else if (sexNum === '3' || sexNum === '4') {
|
|
28
|
+
if (yearNum > TODAY_YEAR)
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
else
|
|
32
|
+
return false;
|
|
33
|
+
// 월과 일에 해당하는 숫자 조건 검사 (정규식으로)
|
|
34
|
+
const regex = /^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{7}$/;
|
|
35
|
+
if (!regex.test(replacedJuminNumber))
|
|
36
|
+
return false;
|
|
37
|
+
// Validation X
|
|
38
|
+
const currentX = parseInt(replacedJuminNumber.slice(-1), 10);
|
|
39
|
+
const calculatedX = JuminNumberUtils.calculateX(replacedJuminNumber);
|
|
40
|
+
if (currentX !== calculatedX) {
|
|
41
|
+
console.log('Invalid X', currentX, calculatedX);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class NumberUtils {
|
|
2
|
+
static formatWithThousandsSeparator(value, separator = ',') {
|
|
3
|
+
return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, separator);
|
|
4
|
+
}
|
|
5
|
+
static formatBigNumber(value, precision = 2) {
|
|
6
|
+
const map = [
|
|
7
|
+
{ suffix: 'Qi', threshold: 1e18 },
|
|
8
|
+
{ suffix: 'Q', threshold: 1e15 },
|
|
9
|
+
{ suffix: 'T', threshold: 1e12 },
|
|
10
|
+
{ suffix: 'B', threshold: 1e9 },
|
|
11
|
+
{ suffix: 'M', threshold: 1e6 },
|
|
12
|
+
{ suffix: 'K', threshold: 1e3 },
|
|
13
|
+
{ suffix: '', threshold: 1 },
|
|
14
|
+
];
|
|
15
|
+
const found = map.find(e => Math.abs(value) >= e.threshold);
|
|
16
|
+
if (found) {
|
|
17
|
+
return Number((value / found.threshold).toFixed(precision)) + found.suffix;
|
|
18
|
+
}
|
|
19
|
+
return value.toString();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { UuidUtils } from "./UuidUtils.mjs";
|
|
2
|
+
import { Uint8ArrayUtils } from "./Uint8ArrayUtils.mjs";
|
|
3
|
+
export class ObjectIdUtils {
|
|
4
|
+
static toUuid(objectId, pad = 'start') {
|
|
5
|
+
const src = Uint8ArrayUtils.fromHex(objectId);
|
|
6
|
+
if (src.length !== 12) {
|
|
7
|
+
throw new Error(`objectId must be 12 bytes (24 hex), got ${src.length} bytes`);
|
|
8
|
+
}
|
|
9
|
+
const result = new Uint8Array(16);
|
|
10
|
+
const offset = pad === 'start' ? 4 : 0;
|
|
11
|
+
result.set(src, offset);
|
|
12
|
+
return UuidUtils.toString(result);
|
|
13
|
+
}
|
|
14
|
+
static fromUuid(uuid, pad) {
|
|
15
|
+
const buffer = UuidUtils.toBuffer(uuid);
|
|
16
|
+
const isPadEnd = buffer.subarray(buffer.length - 4).every(byte => byte === 0);
|
|
17
|
+
if (isPadEnd || pad === 'end') {
|
|
18
|
+
return buffer.subarray(0, buffer.length - 4).toString('hex');
|
|
19
|
+
}
|
|
20
|
+
const isPadStart = buffer.subarray(0, 4).every(byte => byte === 0);
|
|
21
|
+
if (!isPadStart) {
|
|
22
|
+
console.warn('buffer is not pad start and pad end');
|
|
23
|
+
}
|
|
24
|
+
return buffer.subarray(4).toString('hex');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export class RandomUtils {
|
|
2
|
+
static randomNumber(min, max) {
|
|
3
|
+
min = Math.ceil(min);
|
|
4
|
+
max = Math.floor(max);
|
|
5
|
+
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
6
|
+
}
|
|
7
|
+
static randomLatinStrings(length) {
|
|
8
|
+
const strings = [];
|
|
9
|
+
for (let i = 0; i < length; ++i) {
|
|
10
|
+
const isLowerCase = RandomUtils.randomNumber(0, 1);
|
|
11
|
+
if (isLowerCase) {
|
|
12
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(97, 122)));
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(65, 90)));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return strings.join('');
|
|
19
|
+
}
|
|
20
|
+
static randomLatinLowercaseStrings(length) {
|
|
21
|
+
const strings = [];
|
|
22
|
+
for (let i = 0; i < length; ++i) {
|
|
23
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(97, 122)));
|
|
24
|
+
}
|
|
25
|
+
return strings.join('');
|
|
26
|
+
}
|
|
27
|
+
static randomLatinUppercaseStrings(length) {
|
|
28
|
+
const strings = [];
|
|
29
|
+
for (let i = 0; i < length; ++i) {
|
|
30
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(65, 90)));
|
|
31
|
+
}
|
|
32
|
+
return strings.join('');
|
|
33
|
+
}
|
|
34
|
+
static randomNumberStrings(length) {
|
|
35
|
+
const strings = [];
|
|
36
|
+
for (let i = 0; i < length; ++i) {
|
|
37
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(48, 57)));
|
|
38
|
+
}
|
|
39
|
+
return strings.join('');
|
|
40
|
+
}
|
|
41
|
+
static randomStrings(length) {
|
|
42
|
+
const strings = [];
|
|
43
|
+
for (let i = 0; i < length; ++i) {
|
|
44
|
+
const isNumber = RandomUtils.randomNumber(0, 1);
|
|
45
|
+
if (isNumber) {
|
|
46
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(48, 57)));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const isLowerCase = RandomUtils.randomNumber(0, 1);
|
|
50
|
+
if (isLowerCase) {
|
|
51
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(97, 122)));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
strings.push(String.fromCharCode(RandomUtils.randomNumber(65, 90)));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return strings.join('');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import moment from "moment";
|
|
11
|
+
import EventEmitter3 from 'eventemitter3';
|
|
12
|
+
export var SequencerStatus;
|
|
13
|
+
(function (SequencerStatus) {
|
|
14
|
+
SequencerStatus[SequencerStatus["IDLE"] = 0] = "IDLE";
|
|
15
|
+
SequencerStatus[SequencerStatus["RUNNING"] = 1] = "RUNNING";
|
|
16
|
+
SequencerStatus[SequencerStatus["ERROR"] = 2] = "ERROR";
|
|
17
|
+
SequencerStatus[SequencerStatus["DONE"] = 3] = "DONE";
|
|
18
|
+
})(SequencerStatus || (SequencerStatus = {}));
|
|
19
|
+
export var SequencerEvent;
|
|
20
|
+
(function (SequencerEvent) {
|
|
21
|
+
SequencerEvent["START"] = "START";
|
|
22
|
+
SequencerEvent["END"] = "END";
|
|
23
|
+
SequencerEvent["SEQUENCE_START"] = "SEQUENCE_START";
|
|
24
|
+
SequencerEvent["SEQUENCE_END"] = "SEQUENCE_END";
|
|
25
|
+
})(SequencerEvent || (SequencerEvent = {}));
|
|
26
|
+
export class Sequencer {
|
|
27
|
+
constructor(option) {
|
|
28
|
+
this.sequences = [];
|
|
29
|
+
this.status = SequencerStatus.IDLE;
|
|
30
|
+
this.minimumExecutionTime = 0;
|
|
31
|
+
// Reset variables task is done
|
|
32
|
+
this.currentSequence = null;
|
|
33
|
+
this.startTimestamp = null;
|
|
34
|
+
this.endTimestamp = null;
|
|
35
|
+
// Emitter
|
|
36
|
+
this.eventEmitter = new EventEmitter3();
|
|
37
|
+
this.pushSequence = (sequence) => {
|
|
38
|
+
this.sequences.push(sequence);
|
|
39
|
+
};
|
|
40
|
+
this.start = () => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
if (this.status === SequencerStatus.RUNNING) {
|
|
42
|
+
console.warn('Sequencer status is', this.status);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.status = SequencerStatus.RUNNING;
|
|
46
|
+
this.currentSequence = null;
|
|
47
|
+
this.startTimestamp = this.getCurrentTimeStamp;
|
|
48
|
+
this.endTimestamp = null;
|
|
49
|
+
console.log(`Sequence started, started at ${this.startTimestamp}, MINIMUM_EXECUTION_TIME is ${this.minimumExecutionTime}`);
|
|
50
|
+
for (let sequence of this.sequences) {
|
|
51
|
+
console.log('Currently total execution time', this.executionTime);
|
|
52
|
+
const sequenceStartTimeStamp = this.getCurrentTimeStamp;
|
|
53
|
+
this.currentSequence = sequence;
|
|
54
|
+
// Emitter
|
|
55
|
+
this.eventEmitter.emit(SequencerEvent.SEQUENCE_START, sequence);
|
|
56
|
+
try {
|
|
57
|
+
yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
var _a;
|
|
59
|
+
try {
|
|
60
|
+
console.log(`Sequence ${sequence.key} start`);
|
|
61
|
+
yield ((_a = sequence.task) === null || _a === void 0 ? void 0 : _a.call(sequence));
|
|
62
|
+
const sequenceEndTimeStamp = this.getCurrentTimeStamp;
|
|
63
|
+
const sequenceExecutionTime = sequenceEndTimeStamp - sequenceStartTimeStamp;
|
|
64
|
+
console.log(`✅ Sequence ${sequence.key} done at`, sequenceEndTimeStamp);
|
|
65
|
+
console.log('Sequence execution time', sequenceExecutionTime, 'ms');
|
|
66
|
+
if (sequence.minimumExecutionTime) {
|
|
67
|
+
console.log(`Sequence has minimumExecutionTime`, sequence.minimumExecutionTime, 'ms');
|
|
68
|
+
if (sequenceExecutionTime < sequence.minimumExecutionTime) {
|
|
69
|
+
const delay = sequence.minimumExecutionTime - sequenceExecutionTime;
|
|
70
|
+
console.log(`Sequence will delay`, delay, 'ms');
|
|
71
|
+
let dotInterpreterBlocked = false;
|
|
72
|
+
const dotInterpreter = setInterval(() => {
|
|
73
|
+
if (dotInterpreterBlocked) {
|
|
74
|
+
console.log('!');
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
console.log('.');
|
|
78
|
+
}, 100);
|
|
79
|
+
setTimeout(() => {
|
|
80
|
+
dotInterpreterBlocked = true;
|
|
81
|
+
clearInterval(dotInterpreter);
|
|
82
|
+
console.log('done');
|
|
83
|
+
resolve();
|
|
84
|
+
}, delay);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
console.log('Sequence execution time is greater than minimum execution time');
|
|
88
|
+
resolve();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
resolve();
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
reject(e);
|
|
95
|
+
}
|
|
96
|
+
}));
|
|
97
|
+
console.log('Out of Promise');
|
|
98
|
+
// Emitter
|
|
99
|
+
this.eventEmitter.emit(SequencerEvent.SEQUENCE_END, sequence);
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
if (sequence.required) {
|
|
103
|
+
console.error(`🚫 Sequence ${sequence.key} failed`, e);
|
|
104
|
+
this.status = SequencerStatus.ERROR;
|
|
105
|
+
this.currentSequence = null;
|
|
106
|
+
this.endTimestamp = this.currentSequence;
|
|
107
|
+
// IMPORTANT
|
|
108
|
+
return Promise.reject({
|
|
109
|
+
sequence,
|
|
110
|
+
reason: e,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
console.log(`Sequence ${sequence.key} failed`, e);
|
|
114
|
+
// Emitter
|
|
115
|
+
this.eventEmitter.emit(SequencerEvent.SEQUENCE_END, sequence);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
this.status = SequencerStatus.DONE;
|
|
119
|
+
this.currentSequence = null;
|
|
120
|
+
this.endTimestamp = this.currentSequence;
|
|
121
|
+
});
|
|
122
|
+
if (option === null || option === void 0 ? void 0 : option.sequences) {
|
|
123
|
+
this.sequences.push(...option.sequences);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
get getCurrentTimeStamp() {
|
|
127
|
+
return parseInt(moment().format('x'), 10);
|
|
128
|
+
}
|
|
129
|
+
get executionTime() {
|
|
130
|
+
if (this.status === SequencerStatus.IDLE) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
if (!this.startTimestamp) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
if (this.startTimestamp && this.endTimestamp) {
|
|
137
|
+
return this.endTimestamp - this.startTimestamp;
|
|
138
|
+
}
|
|
139
|
+
return this.getCurrentTimeStamp - this.startTimestamp;
|
|
140
|
+
}
|
|
141
|
+
}
|