@powfix/core-js 0.19.1 → 0.20.0
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/browser/utils/UUID.js +2 -171
- package/dist/browser/cjs/shared/managers/SessionManager.js +10 -0
- package/dist/browser/cjs/shared/services/time/TimeService.js +16 -0
- package/dist/browser/cjs/shared/utils/ArrayUtils.js +5 -0
- package/dist/browser/cjs/shared/utils/AxiosUtils.js +2 -0
- package/dist/browser/cjs/shared/utils/Calc.js +1 -1
- package/dist/browser/cjs/shared/utils/DateUtils.js +1 -0
- package/dist/browser/cjs/shared/utils/JuminNumberUtils.js +4 -1
- package/dist/browser/cjs/shared/utils/Sequencer.js +6 -0
- package/dist/browser/cjs/shared/utils/StringUtils.js +3 -1
- package/dist/browser/cjs/shared/utils/UUID.js +314 -0
- package/dist/browser/cjs/shared/utils/UUID.types.js +2 -0
- package/dist/browser/cjs/shared/utils/UuidUtils.js +3 -0
- package/dist/browser/cjs/shared/utils/Validator.js +11 -0
- package/dist/browser/cjs/shared/utils/global/{fallbackIfEqual.js → fallbackIfMatch.js} +2 -2
- package/dist/browser/cjs/shared/utils/global/fallbackIfNull.js +2 -2
- package/dist/browser/cjs/shared/utils/global/fallbackIfNullish.js +9 -0
- package/dist/browser/cjs/shared/utils/global/fallbackIfUndefined.js +2 -2
- package/dist/browser/cjs/shared/utils/global/firstNonNullish.js +1 -0
- package/dist/browser/cjs/shared/utils/global/flat.js +1 -0
- package/dist/browser/cjs/shared/utils/global/index.js +2 -1
- package/dist/browser/cjs/shared/utils/global/pureEnum.js +9 -0
- package/dist/browser/cjs/shared/utils/index.js +2 -0
- package/dist/browser/cjs/shared/utils/try-catch/TryCatch.js +20 -0
- package/dist/browser/esm/browser/utils/UUID.mjs +2 -171
- package/dist/browser/esm/shared/managers/SessionManager.mjs +10 -0
- package/dist/browser/esm/shared/services/time/TimeService.mjs +16 -0
- package/dist/browser/esm/shared/utils/ArrayUtils.mjs +5 -0
- package/dist/browser/esm/shared/utils/AxiosUtils.mjs +2 -0
- package/dist/browser/esm/shared/utils/Calc.mjs +1 -1
- package/dist/browser/esm/shared/utils/DateUtils.mjs +1 -0
- package/dist/browser/esm/shared/utils/JuminNumberUtils.mjs +4 -1
- package/dist/browser/esm/shared/utils/Sequencer.mjs +6 -0
- package/dist/browser/esm/shared/utils/StringUtils.mjs +3 -1
- package/dist/browser/esm/shared/utils/UUID.mjs +310 -0
- package/dist/browser/esm/shared/utils/UUID.types.mjs +1 -0
- package/dist/browser/esm/shared/utils/UuidUtils.mjs +3 -0
- package/dist/browser/esm/shared/utils/Validator.mjs +11 -0
- package/dist/browser/esm/shared/utils/global/{fallbackIfEqual.mjs → fallbackIfMatch.mjs} +1 -1
- package/dist/browser/esm/shared/utils/global/fallbackIfNull.mjs +2 -2
- package/dist/browser/esm/shared/utils/global/fallbackIfNullish.mjs +6 -0
- package/dist/browser/esm/shared/utils/global/fallbackIfUndefined.mjs +2 -2
- package/dist/browser/esm/shared/utils/global/firstNonNullish.mjs +1 -0
- package/dist/browser/esm/shared/utils/global/flat.mjs +1 -0
- package/dist/browser/esm/shared/utils/global/index.mjs +2 -1
- package/dist/browser/esm/shared/utils/global/pureEnum.mjs +9 -0
- package/dist/browser/esm/shared/utils/index.mjs +2 -0
- package/dist/browser/esm/shared/utils/try-catch/TryCatch.mjs +20 -0
- package/dist/browser/types/browser/utils/UUID.d.ts +2 -34
- package/dist/browser/types/shared/utils/ArrayUtils.d.ts +5 -0
- package/dist/browser/types/shared/utils/UUID.d.ts +145 -0
- package/dist/browser/types/shared/utils/UUID.types.d.ts +2 -0
- package/dist/browser/types/shared/utils/UuidUtils.d.ts +6 -0
- package/dist/browser/types/shared/utils/global/fallbackIfMatch.d.ts +1 -0
- package/dist/browser/types/shared/utils/global/fallbackIfNullish.d.ts +1 -0
- package/dist/browser/types/shared/utils/global/index.d.ts +2 -1
- package/dist/browser/types/shared/utils/global/pureEnum.d.ts +9 -0
- package/dist/browser/types/shared/utils/index.d.ts +1 -0
- package/dist/browser/types/shared/utils/try-catch/TryCatch.d.ts +20 -0
- package/dist/node/cjs/nodejs/managers/TransactionManager.js +3 -0
- package/dist/node/cjs/nodejs/services/redis/RedisClient.js +2 -0
- package/dist/node/cjs/nodejs/services/redis/RedisPublisher.js +1 -0
- package/dist/node/cjs/nodejs/services/redis/index.js +1 -0
- package/dist/node/cjs/nodejs/utils/UUID.js +1 -1
- package/dist/node/cjs/nodejs/utils/sequelize-utils/SequelizeUtils.js +5 -6
- package/dist/node/cjs/shared/managers/SessionManager.js +10 -0
- package/dist/node/cjs/shared/services/time/TimeService.js +16 -0
- package/dist/node/cjs/shared/utils/ArrayUtils.js +5 -0
- package/dist/node/cjs/shared/utils/AxiosUtils.js +2 -0
- package/dist/node/cjs/shared/utils/Calc.js +1 -1
- package/dist/node/cjs/shared/utils/DateUtils.js +1 -0
- package/dist/node/cjs/shared/utils/JuminNumberUtils.js +4 -1
- package/dist/node/cjs/shared/utils/Sequencer.js +6 -0
- package/dist/node/cjs/shared/utils/StringUtils.js +3 -1
- package/dist/node/cjs/shared/utils/UUID.js +314 -0
- package/dist/node/cjs/shared/utils/UUID.types.js +2 -0
- package/dist/node/cjs/shared/utils/UuidUtils.js +3 -0
- package/dist/node/cjs/shared/utils/Validator.js +11 -0
- package/dist/node/cjs/shared/utils/global/{fallbackIfEqual.js → fallbackIfMatch.js} +2 -2
- package/dist/node/cjs/shared/utils/global/fallbackIfNull.js +2 -2
- package/dist/node/cjs/shared/utils/global/fallbackIfNullish.js +9 -0
- package/dist/node/cjs/shared/utils/global/fallbackIfUndefined.js +2 -2
- package/dist/node/cjs/shared/utils/global/firstNonNullish.js +1 -0
- package/dist/node/cjs/shared/utils/global/flat.js +1 -0
- package/dist/node/cjs/shared/utils/global/index.js +2 -1
- package/dist/node/cjs/shared/utils/global/pureEnum.js +9 -0
- package/dist/node/cjs/shared/utils/index.js +2 -0
- package/dist/node/cjs/shared/utils/try-catch/TryCatch.js +20 -0
- package/dist/node/esm/nodejs/managers/TransactionManager.mjs +3 -0
- package/dist/node/esm/nodejs/services/redis/RedisClient.mjs +2 -0
- package/dist/node/esm/nodejs/services/redis/RedisPublisher.mjs +1 -0
- package/dist/node/esm/nodejs/services/redis/index.mjs +1 -0
- package/dist/node/esm/nodejs/utils/UUID.mjs +1 -1
- package/dist/node/esm/nodejs/utils/sequelize-utils/SequelizeUtils.mjs +5 -6
- package/dist/node/esm/shared/managers/SessionManager.mjs +10 -0
- package/dist/node/esm/shared/services/time/TimeService.mjs +16 -0
- package/dist/node/esm/shared/utils/ArrayUtils.mjs +5 -0
- package/dist/node/esm/shared/utils/AxiosUtils.mjs +2 -0
- package/dist/node/esm/shared/utils/Calc.mjs +1 -1
- package/dist/node/esm/shared/utils/DateUtils.mjs +1 -0
- package/dist/node/esm/shared/utils/JuminNumberUtils.mjs +4 -1
- package/dist/node/esm/shared/utils/Sequencer.mjs +6 -0
- package/dist/node/esm/shared/utils/StringUtils.mjs +3 -1
- package/dist/node/esm/shared/utils/UUID.mjs +310 -0
- package/dist/node/esm/shared/utils/UUID.types.mjs +1 -0
- package/dist/node/esm/shared/utils/UuidUtils.mjs +3 -0
- package/dist/node/esm/shared/utils/Validator.mjs +11 -0
- package/dist/node/esm/shared/utils/global/{fallbackIfEqual.mjs → fallbackIfMatch.mjs} +1 -1
- package/dist/node/esm/shared/utils/global/fallbackIfNull.mjs +2 -2
- package/dist/node/esm/shared/utils/global/fallbackIfNullish.mjs +6 -0
- package/dist/node/esm/shared/utils/global/fallbackIfUndefined.mjs +2 -2
- package/dist/node/esm/shared/utils/global/firstNonNullish.mjs +1 -0
- package/dist/node/esm/shared/utils/global/flat.mjs +1 -0
- package/dist/node/esm/shared/utils/global/index.mjs +2 -1
- package/dist/node/esm/shared/utils/global/pureEnum.mjs +9 -0
- package/dist/node/esm/shared/utils/index.mjs +2 -0
- package/dist/node/esm/shared/utils/try-catch/TryCatch.mjs +20 -0
- package/dist/node/types/nodejs/utils/UUID.d.ts +1 -1
- package/dist/node/types/shared/utils/ArrayUtils.d.ts +5 -0
- package/dist/node/types/shared/utils/UUID.d.ts +145 -0
- package/dist/node/types/shared/utils/UUID.types.d.ts +2 -0
- package/dist/node/types/shared/utils/UuidUtils.d.ts +6 -0
- package/dist/node/types/shared/utils/global/fallbackIfMatch.d.ts +1 -0
- package/dist/node/types/shared/utils/global/fallbackIfNullish.d.ts +1 -0
- package/dist/node/types/shared/utils/global/index.d.ts +2 -1
- package/dist/node/types/shared/utils/global/pureEnum.d.ts +9 -0
- package/dist/node/types/shared/utils/index.d.ts +1 -0
- package/dist/node/types/shared/utils/try-catch/TryCatch.d.ts +20 -0
- package/package.json +1 -1
- package/dist/browser/types/shared/utils/global/fallbackIfEqual.d.ts +0 -1
- package/dist/node/cjs/browser/utils/UUID.js +0 -176
- package/dist/node/esm/browser/utils/UUID.mjs +0 -172
- package/dist/node/types/browser/utils/UUID.d.ts +0 -35
- package/dist/node/types/shared/utils/global/fallbackIfEqual.d.ts +0 -1
|
@@ -1,176 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UUID = void 0;
|
|
4
|
-
const
|
|
5
|
-
class UUID {
|
|
6
|
-
static isValidHex(hex) {
|
|
7
|
-
if (typeof hex !== 'string') {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
return UUID.REGEX_HEX.test(hex);
|
|
11
|
-
}
|
|
12
|
-
static isValidString(str) {
|
|
13
|
-
if (typeof str !== 'string') {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
return UUID.REGEX_RFC4122.test(str);
|
|
17
|
-
}
|
|
18
|
-
static isValidBytes(bytes) {
|
|
19
|
-
return bytes.byteLength === UUID.BYTE_LENGTH;
|
|
20
|
-
}
|
|
21
|
-
static isValid(input) {
|
|
22
|
-
if (typeof input === 'string') {
|
|
23
|
-
const length = input.length;
|
|
24
|
-
switch (length) {
|
|
25
|
-
case UUID.STR_LENGTH:
|
|
26
|
-
return UUID.isValidString(input);
|
|
27
|
-
case UUID.HEX_STR_LENGTH:
|
|
28
|
-
return UUID.isValidHex(input);
|
|
29
|
-
default:
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else if (ArrayBuffer.isView(input)) {
|
|
34
|
-
return UUID.isValidBytes(input);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
static formatHex(hex) {
|
|
41
|
-
if (hex.length !== UUID.HEX_STR_LENGTH) {
|
|
42
|
-
throw new Error(`hex length should be ${UUID.HEX_STR_LENGTH}`);
|
|
43
|
-
}
|
|
44
|
-
return hex.slice(0, 8) + '-' +
|
|
45
|
-
hex.slice(8, 12) + '-' +
|
|
46
|
-
hex.slice(12, 16) + '-' +
|
|
47
|
-
hex.slice(16, 20) + '-' +
|
|
48
|
-
hex.slice(20);
|
|
49
|
-
}
|
|
50
|
-
static stripHyphens(str) {
|
|
51
|
-
return str.replace(/-/g, "");
|
|
52
|
-
}
|
|
53
|
-
static parseHex(hex) {
|
|
54
|
-
if (hex.length !== UUID.HEX_STR_LENGTH) {
|
|
55
|
-
throw new Error(`Invalid hex string, length should be ${UUID.HEX_STR_LENGTH}`);
|
|
56
|
-
}
|
|
57
|
-
return shared_1.Uint8ArrayUtils.fromHex(hex);
|
|
58
|
-
}
|
|
59
|
-
static parseString(str) {
|
|
60
|
-
if (str.length !== UUID.STR_LENGTH) {
|
|
61
|
-
throw new Error(`Invalid UUID string, invalid character length should be ${UUID.STR_LENGTH}`);
|
|
62
|
-
}
|
|
63
|
-
if (!UUID.isValid(str)) {
|
|
64
|
-
throw new Error('Invalid UUID string, should be RFC 4122 format');
|
|
65
|
-
}
|
|
66
|
-
const hex = UUID.stripHyphens(str);
|
|
67
|
-
if (hex.length !== UUID.HEX_STR_LENGTH) {
|
|
68
|
-
throw new Error('Invalid UUID string, invalid character length after strip hyphens');
|
|
69
|
-
}
|
|
70
|
-
return shared_1.Uint8ArrayUtils.fromHex(hex);
|
|
71
|
-
}
|
|
72
|
-
static parseBytes(bytes) {
|
|
73
|
-
const view = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
74
|
-
if (view.length !== UUID.BYTE_LENGTH) {
|
|
75
|
-
throw new Error(`Expected ${UUID.BYTE_LENGTH} bytes`);
|
|
76
|
-
}
|
|
77
|
-
return new Uint8Array(view);
|
|
78
|
-
}
|
|
79
|
-
static fromHex(hex) {
|
|
80
|
-
return new UUID(UUID.parseHex(hex));
|
|
81
|
-
}
|
|
82
|
-
static fromString(str) {
|
|
83
|
-
return new UUID(UUID.parseString(str));
|
|
84
|
-
}
|
|
85
|
-
static fromBytes(bytes) {
|
|
86
|
-
return new UUID(UUID.parseBytes(bytes));
|
|
87
|
-
}
|
|
88
|
-
static parse(input) {
|
|
89
|
-
if (typeof input === 'string') {
|
|
90
|
-
const length = input.length;
|
|
91
|
-
switch (length) {
|
|
92
|
-
case UUID.STR_LENGTH:
|
|
93
|
-
return UUID.parseString(input);
|
|
94
|
-
case UUID.HEX_STR_LENGTH:
|
|
95
|
-
return UUID.parseHex(input);
|
|
96
|
-
default:
|
|
97
|
-
throw new Error(`Invalid input string, length should be ${UUID.STR_LENGTH} or ${UUID.HEX_STR_LENGTH}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else if (ArrayBuffer.isView(input)) {
|
|
101
|
-
return UUID.parseBytes(input);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
throw new Error("Invalid input, Expected string or ArrayBufferView");
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
static from(input) {
|
|
108
|
-
return UUID.fromBytes(UUID.parse(input));
|
|
109
|
-
}
|
|
110
|
-
static nil() {
|
|
111
|
-
return UUID.fromBytes(new Uint8Array(UUID.BYTE_LENGTH));
|
|
112
|
-
}
|
|
113
|
-
static max() {
|
|
114
|
-
return UUID.fromBytes((new Uint8Array(UUID.BYTE_LENGTH)).fill(0xFF));
|
|
115
|
-
}
|
|
116
|
-
static equals(...uuids) {
|
|
117
|
-
const n = uuids.length;
|
|
118
|
-
if (n < 2) {
|
|
119
|
-
throw new Error('At least two UUIDs required for comparison');
|
|
120
|
-
}
|
|
121
|
-
const ref = uuids[0].bytes;
|
|
122
|
-
for (let i = 1; i < n; ++i) {
|
|
123
|
-
const b = uuids[i].bytes;
|
|
124
|
-
for (let j = 0; j < UUID.BYTE_LENGTH; ++j) {
|
|
125
|
-
if (ref[j] !== b[j])
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
static compare(uuid1, uuid2) {
|
|
132
|
-
const a = uuid1.bytes;
|
|
133
|
-
const b = uuid2.bytes;
|
|
134
|
-
for (let i = 0; i < UUID.BYTE_LENGTH; i++) {
|
|
135
|
-
if (a[i] !== b[i])
|
|
136
|
-
return a[i] < b[i] ? -1 : 1;
|
|
137
|
-
}
|
|
138
|
-
return 0;
|
|
139
|
-
}
|
|
140
|
-
constructor(input) {
|
|
141
|
-
this.bytes = UUID.parse(input);
|
|
142
|
-
}
|
|
143
|
-
equals(...uuids) {
|
|
144
|
-
return UUID.equals(this, ...uuids);
|
|
145
|
-
}
|
|
146
|
-
compare(other) {
|
|
147
|
-
return UUID.compare(this, other);
|
|
148
|
-
}
|
|
149
|
-
toString() {
|
|
150
|
-
if (this._str != null) {
|
|
151
|
-
return this._str;
|
|
152
|
-
}
|
|
153
|
-
const hex = this.toHex();
|
|
154
|
-
this._str = UUID.formatHex(hex);
|
|
155
|
-
return this._str;
|
|
156
|
-
}
|
|
157
|
-
toHex() {
|
|
158
|
-
if (this._hex != null) {
|
|
159
|
-
return this._hex;
|
|
160
|
-
}
|
|
161
|
-
this._hex = shared_1.Uint8ArrayUtils.toHex(this.bytes);
|
|
162
|
-
return this._hex;
|
|
163
|
-
}
|
|
164
|
-
toBytes() {
|
|
165
|
-
return new Uint8Array(this.bytes);
|
|
166
|
-
}
|
|
167
|
-
toJSON() {
|
|
168
|
-
return this.toString();
|
|
169
|
-
}
|
|
4
|
+
const UUID_1 = require("../../shared/utils/UUID");
|
|
5
|
+
class UUID extends UUID_1.UUID {
|
|
170
6
|
}
|
|
171
7
|
exports.UUID = UUID;
|
|
172
|
-
UUID.REGEX_HEX = /^[0-9a-fA-F]{8}[0-9a-fA-F]{4}[1-5][0-9a-fA-F]{3}[89abAB][0-9a-fA-F]{3}[0-9a-fA-F]{12}$/;
|
|
173
|
-
UUID.REGEX_RFC4122 = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
|
|
174
|
-
UUID.BYTE_LENGTH = 16;
|
|
175
|
-
UUID.STR_LENGTH = 36;
|
|
176
|
-
UUID.HEX_STR_LENGTH = 32;
|
|
@@ -19,8 +19,10 @@ const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
|
19
19
|
class SessionManager extends eventemitter3_1.default {
|
|
20
20
|
constructor(options) {
|
|
21
21
|
super();
|
|
22
|
+
// Init service parameters
|
|
22
23
|
this.api = options.api;
|
|
23
24
|
this.storageProvider = options.storageProvider;
|
|
25
|
+
// Logging
|
|
24
26
|
console.log('SessionManager initialized', Date.now(), options.api);
|
|
25
27
|
}
|
|
26
28
|
get key() {
|
|
@@ -61,6 +63,7 @@ class SessionManager extends eventemitter3_1.default {
|
|
|
61
63
|
return null;
|
|
62
64
|
}
|
|
63
65
|
try {
|
|
66
|
+
// Replace Bearer prefix
|
|
64
67
|
nextAuthorization = nextAuthorization.replace(/^Bearer\s+/, '');
|
|
65
68
|
const decoded = (0, jwt_decode_1.jwtDecode)(nextAuthorization);
|
|
66
69
|
if (!decoded) {
|
|
@@ -101,9 +104,13 @@ class SessionManager extends eventemitter3_1.default {
|
|
|
101
104
|
return [decoded.exp, exp.format(), exp.diff(Date.now(), 'days'), 'days left'];
|
|
102
105
|
})());
|
|
103
106
|
})();
|
|
107
|
+
// AsyncStorage 에 토큰 저장
|
|
104
108
|
yield this.storageProvider.set(this.key, nextAuthorization);
|
|
109
|
+
// API Instance header 설정
|
|
105
110
|
this.api.defaults.headers.common.Authorization = `Bearer ${nextAuthorization}`;
|
|
111
|
+
// Emit
|
|
106
112
|
this.emit('AUTHORIZATION_CHANGED', nextAuthorization);
|
|
113
|
+
// Return
|
|
107
114
|
return nextAuthorization;
|
|
108
115
|
}
|
|
109
116
|
catch (e) {
|
|
@@ -114,8 +121,11 @@ class SessionManager extends eventemitter3_1.default {
|
|
|
114
121
|
}
|
|
115
122
|
removeAuthorization() {
|
|
116
123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
// API Instance header 에서 토큰 제거
|
|
117
125
|
delete this.api.defaults.headers.common.Authorization;
|
|
126
|
+
// 스토리지에서 authorization 제거
|
|
118
127
|
yield this.storageProvider.remove(this.key);
|
|
128
|
+
// Emit
|
|
119
129
|
this.emit('AUTHORIZATION_CHANGED', null);
|
|
120
130
|
});
|
|
121
131
|
}
|
|
@@ -22,9 +22,11 @@ class TimeService extends eventemitter3_1.default {
|
|
|
22
22
|
}
|
|
23
23
|
constructor(options) {
|
|
24
24
|
super();
|
|
25
|
+
// Options
|
|
25
26
|
this.syncInterval = options === null || options === void 0 ? void 0 : options.syncInterval;
|
|
26
27
|
this.clientTimeProvider = options === null || options === void 0 ? void 0 : options.clientTimeProvider;
|
|
27
28
|
this.serverTimeProvider = options === null || options === void 0 ? void 0 : options.serverTimeProvider;
|
|
29
|
+
// Bind
|
|
28
30
|
this.sync = this.sync.bind(this);
|
|
29
31
|
this.fetchServerNTPResult = this.fetchServerNTPResult.bind(this);
|
|
30
32
|
}
|
|
@@ -51,6 +53,7 @@ class TimeService extends eventemitter3_1.default {
|
|
|
51
53
|
}
|
|
52
54
|
setSyncInterval(interval) {
|
|
53
55
|
this.syncInterval = interval;
|
|
56
|
+
// Emit
|
|
54
57
|
this.emit('SYNC_INTERVAL_CHANGED', interval);
|
|
55
58
|
if (this.syncHandler !== undefined) {
|
|
56
59
|
this.stopSync();
|
|
@@ -105,22 +108,32 @@ class TimeService extends eventemitter3_1.default {
|
|
|
105
108
|
sync() {
|
|
106
109
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
110
|
try {
|
|
111
|
+
// T1 (Client Request Time)
|
|
108
112
|
const requestedAt = Date.now();
|
|
113
|
+
// Fetch server time from server
|
|
109
114
|
const serverNtpResult = yield this.fetchServerNTPResult(requestedAt);
|
|
115
|
+
// Check is null
|
|
110
116
|
if (serverNtpResult === null) {
|
|
111
117
|
console.warn(LOG_TAG, 'Failed to get server time');
|
|
112
118
|
return null;
|
|
113
119
|
}
|
|
120
|
+
// T2 (Server Receive Time)
|
|
114
121
|
const { t2 } = serverNtpResult;
|
|
122
|
+
// Check is not a number
|
|
115
123
|
if (isNaN(Number(t2))) {
|
|
124
|
+
// Not a Number
|
|
116
125
|
console.error(LOG_TAG, 'invalid server time(t2), not a number', t2);
|
|
117
126
|
return null;
|
|
118
127
|
}
|
|
128
|
+
// T3 (Server Transmit Time)
|
|
119
129
|
const { t3 } = serverNtpResult;
|
|
130
|
+
// Check is not a number
|
|
120
131
|
if (isNaN(Number(t3))) {
|
|
132
|
+
// Not a Number
|
|
121
133
|
console.error(LOG_TAG, 'invalid server time(t2), not a number', t2);
|
|
122
134
|
return null;
|
|
123
135
|
}
|
|
136
|
+
// T4 (Client Receive Time)
|
|
124
137
|
const receivedAt = Date.now();
|
|
125
138
|
const ntpResult = {
|
|
126
139
|
t1: requestedAt,
|
|
@@ -128,8 +141,11 @@ class TimeService extends eventemitter3_1.default {
|
|
|
128
141
|
t3: t3,
|
|
129
142
|
t4: receivedAt,
|
|
130
143
|
};
|
|
144
|
+
// Calculate offset
|
|
131
145
|
const offset = TimeService.calculateNTPResultOffset(ntpResult);
|
|
146
|
+
// Save calculated offset
|
|
132
147
|
this.setOffset(offset);
|
|
148
|
+
// Mark synced timestamp
|
|
133
149
|
const syncedAt = Date.now();
|
|
134
150
|
this.setSyncedAt(syncedAt);
|
|
135
151
|
this.emit('SYNCED', offset, syncedAt);
|
|
@@ -6,6 +6,11 @@ class ArrayUtils {
|
|
|
6
6
|
static castArray(value) {
|
|
7
7
|
return (0, global_1.castArray)(value);
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* 객체를 요소로 가지는 배열에서 가장 큰 값(Property)를 가지는 객체를 반환한다
|
|
11
|
+
* @param e 객체 배열
|
|
12
|
+
* @param key 값을 비교할 Property 키
|
|
13
|
+
*/
|
|
9
14
|
static getGreatestObject(e, key) {
|
|
10
15
|
return e.reduce((prev, current) => ((prev[key] > current[key] ? prev : current)));
|
|
11
16
|
}
|
|
@@ -16,6 +16,7 @@ class AxiosUtils {
|
|
|
16
16
|
return e;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
// There is no any values having string type
|
|
19
20
|
return null;
|
|
20
21
|
}
|
|
21
22
|
else {
|
|
@@ -38,6 +39,7 @@ class AxiosUtils {
|
|
|
38
39
|
return e;
|
|
39
40
|
}
|
|
40
41
|
}
|
|
42
|
+
// There is no any values having string type
|
|
41
43
|
return null;
|
|
42
44
|
}
|
|
43
45
|
else {
|
|
@@ -17,7 +17,7 @@ class Calc {
|
|
|
17
17
|
const len = values.length;
|
|
18
18
|
if (len === 0)
|
|
19
19
|
return NaN;
|
|
20
|
-
const sorted = values.slice().sort((a, b) => a - b);
|
|
20
|
+
const sorted = values.slice().sort((a, b) => a - b); // O(n log n)
|
|
21
21
|
const mid = len >> 1;
|
|
22
22
|
return len % 2 === 0
|
|
23
23
|
? (sorted[mid - 1] + sorted[mid]) / 2
|
|
@@ -107,6 +107,7 @@ class DateUtils {
|
|
|
107
107
|
}
|
|
108
108
|
exports.DateUtils = DateUtils;
|
|
109
109
|
DateUtils.relativeDate = (input, base = Date.now()) => {
|
|
110
|
+
// Create new moment instance to apply new locale
|
|
110
111
|
const datetime = moment_1.default.isMoment(input) ? (0, moment_1.default)(input.toDate()) : (0, moment_1.default)(input);
|
|
111
112
|
if (!datetime.isValid()) {
|
|
112
113
|
console.error('core-js:DateUtils.relativeDate() datetime is invalid', datetime);
|
|
@@ -19,9 +19,10 @@ class JuminNumberUtils {
|
|
|
19
19
|
if (replacedJuminNumber.length !== 13) {
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
|
+
// 연도에 해당하는 숫자와 성별에 해당하는 숫자 비교
|
|
22
23
|
const TODAY_YEAR = parseInt(new Date().getFullYear().toString().slice(-2), 10);
|
|
23
24
|
const yearNum = parseInt(replacedJuminNumber.slice(0, 2), 10);
|
|
24
|
-
const sexNum = replacedJuminNumber.slice(6, 7);
|
|
25
|
+
const sexNum = replacedJuminNumber.slice(6, 7); // 대시 있는경우 7로 변경
|
|
25
26
|
if (sexNum === '1' || sexNum === '2') {
|
|
26
27
|
if (yearNum < TODAY_YEAR)
|
|
27
28
|
return false;
|
|
@@ -32,9 +33,11 @@ class JuminNumberUtils {
|
|
|
32
33
|
}
|
|
33
34
|
else
|
|
34
35
|
return false;
|
|
36
|
+
// 월과 일에 해당하는 숫자 조건 검사 (정규식으로)
|
|
35
37
|
const regex = /^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{7}$/;
|
|
36
38
|
if (!regex.test(replacedJuminNumber))
|
|
37
39
|
return false;
|
|
40
|
+
// Validation X
|
|
38
41
|
const currentX = parseInt(replacedJuminNumber.slice(-1), 10);
|
|
39
42
|
const calculatedX = JuminNumberUtils.calculateX(replacedJuminNumber);
|
|
40
43
|
if (currentX !== calculatedX) {
|
|
@@ -34,9 +34,11 @@ class Sequencer {
|
|
|
34
34
|
this.sequences = [];
|
|
35
35
|
this.status = SequencerStatus.IDLE;
|
|
36
36
|
this.minimumExecutionTime = 0;
|
|
37
|
+
// Reset variables task is done
|
|
37
38
|
this.currentSequence = null;
|
|
38
39
|
this.startTimestamp = null;
|
|
39
40
|
this.endTimestamp = null;
|
|
41
|
+
// Emitter
|
|
40
42
|
this.eventEmitter = new eventemitter3_1.default();
|
|
41
43
|
this.pushSequence = (sequence) => {
|
|
42
44
|
this.sequences.push(sequence);
|
|
@@ -55,6 +57,7 @@ class Sequencer {
|
|
|
55
57
|
console.log('Currently total execution time', this.executionTime);
|
|
56
58
|
const sequenceStartTimeStamp = this.getCurrentTimeStamp;
|
|
57
59
|
this.currentSequence = sequence;
|
|
60
|
+
// Emitter
|
|
58
61
|
this.eventEmitter.emit(SequencerEvent.SEQUENCE_START, sequence);
|
|
59
62
|
try {
|
|
60
63
|
yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -98,6 +101,7 @@ class Sequencer {
|
|
|
98
101
|
}
|
|
99
102
|
}));
|
|
100
103
|
console.log('Out of Promise');
|
|
104
|
+
// Emitter
|
|
101
105
|
this.eventEmitter.emit(SequencerEvent.SEQUENCE_END, sequence);
|
|
102
106
|
}
|
|
103
107
|
catch (e) {
|
|
@@ -106,12 +110,14 @@ class Sequencer {
|
|
|
106
110
|
this.status = SequencerStatus.ERROR;
|
|
107
111
|
this.currentSequence = null;
|
|
108
112
|
this.endTimestamp = this.currentSequence;
|
|
113
|
+
// IMPORTANT
|
|
109
114
|
return Promise.reject({
|
|
110
115
|
sequence,
|
|
111
116
|
reason: e,
|
|
112
117
|
});
|
|
113
118
|
}
|
|
114
119
|
console.log(`Sequence ${sequence.key} failed`, e);
|
|
120
|
+
// Emitter
|
|
115
121
|
this.eventEmitter.emit(SequencerEvent.SEQUENCE_END, sequence);
|
|
116
122
|
}
|
|
117
123
|
}
|
|
@@ -28,7 +28,9 @@ StringUtils.levenshteinDistance = (str1 = '', str2 = '') => {
|
|
|
28
28
|
for (let j = 1; j <= str2.length; j += 1) {
|
|
29
29
|
for (let i = 1; i <= str1.length; i += 1) {
|
|
30
30
|
const indicator = str1[i - 1] === str2[j - 1] ? 0 : 1;
|
|
31
|
-
track[j][i] = Math.min(track[j][i - 1] + 1,
|
|
31
|
+
track[j][i] = Math.min(track[j][i - 1] + 1, // deletion
|
|
32
|
+
track[j - 1][i] + 1, // insertion
|
|
33
|
+
track[j - 1][i - 1] + indicator);
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
36
|
return track[str2.length][str1.length];
|