@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.
Files changed (134) hide show
  1. package/dist/browser/cjs/browser/utils/UUID.js +2 -171
  2. package/dist/browser/cjs/shared/managers/SessionManager.js +10 -0
  3. package/dist/browser/cjs/shared/services/time/TimeService.js +16 -0
  4. package/dist/browser/cjs/shared/utils/ArrayUtils.js +5 -0
  5. package/dist/browser/cjs/shared/utils/AxiosUtils.js +2 -0
  6. package/dist/browser/cjs/shared/utils/Calc.js +1 -1
  7. package/dist/browser/cjs/shared/utils/DateUtils.js +1 -0
  8. package/dist/browser/cjs/shared/utils/JuminNumberUtils.js +4 -1
  9. package/dist/browser/cjs/shared/utils/Sequencer.js +6 -0
  10. package/dist/browser/cjs/shared/utils/StringUtils.js +3 -1
  11. package/dist/browser/cjs/shared/utils/UUID.js +314 -0
  12. package/dist/browser/cjs/shared/utils/UUID.types.js +2 -0
  13. package/dist/browser/cjs/shared/utils/UuidUtils.js +3 -0
  14. package/dist/browser/cjs/shared/utils/Validator.js +11 -0
  15. package/dist/browser/cjs/shared/utils/global/{fallbackIfEqual.js → fallbackIfMatch.js} +2 -2
  16. package/dist/browser/cjs/shared/utils/global/fallbackIfNull.js +2 -2
  17. package/dist/browser/cjs/shared/utils/global/fallbackIfNullish.js +9 -0
  18. package/dist/browser/cjs/shared/utils/global/fallbackIfUndefined.js +2 -2
  19. package/dist/browser/cjs/shared/utils/global/firstNonNullish.js +1 -0
  20. package/dist/browser/cjs/shared/utils/global/flat.js +1 -0
  21. package/dist/browser/cjs/shared/utils/global/index.js +2 -1
  22. package/dist/browser/cjs/shared/utils/global/pureEnum.js +9 -0
  23. package/dist/browser/cjs/shared/utils/index.js +2 -0
  24. package/dist/browser/cjs/shared/utils/try-catch/TryCatch.js +20 -0
  25. package/dist/browser/esm/browser/utils/UUID.mjs +2 -171
  26. package/dist/browser/esm/shared/managers/SessionManager.mjs +10 -0
  27. package/dist/browser/esm/shared/services/time/TimeService.mjs +16 -0
  28. package/dist/browser/esm/shared/utils/ArrayUtils.mjs +5 -0
  29. package/dist/browser/esm/shared/utils/AxiosUtils.mjs +2 -0
  30. package/dist/browser/esm/shared/utils/Calc.mjs +1 -1
  31. package/dist/browser/esm/shared/utils/DateUtils.mjs +1 -0
  32. package/dist/browser/esm/shared/utils/JuminNumberUtils.mjs +4 -1
  33. package/dist/browser/esm/shared/utils/Sequencer.mjs +6 -0
  34. package/dist/browser/esm/shared/utils/StringUtils.mjs +3 -1
  35. package/dist/browser/esm/shared/utils/UUID.mjs +310 -0
  36. package/dist/browser/esm/shared/utils/UUID.types.mjs +1 -0
  37. package/dist/browser/esm/shared/utils/UuidUtils.mjs +3 -0
  38. package/dist/browser/esm/shared/utils/Validator.mjs +11 -0
  39. package/dist/browser/esm/shared/utils/global/{fallbackIfEqual.mjs → fallbackIfMatch.mjs} +1 -1
  40. package/dist/browser/esm/shared/utils/global/fallbackIfNull.mjs +2 -2
  41. package/dist/browser/esm/shared/utils/global/fallbackIfNullish.mjs +6 -0
  42. package/dist/browser/esm/shared/utils/global/fallbackIfUndefined.mjs +2 -2
  43. package/dist/browser/esm/shared/utils/global/firstNonNullish.mjs +1 -0
  44. package/dist/browser/esm/shared/utils/global/flat.mjs +1 -0
  45. package/dist/browser/esm/shared/utils/global/index.mjs +2 -1
  46. package/dist/browser/esm/shared/utils/global/pureEnum.mjs +9 -0
  47. package/dist/browser/esm/shared/utils/index.mjs +2 -0
  48. package/dist/browser/esm/shared/utils/try-catch/TryCatch.mjs +20 -0
  49. package/dist/browser/types/browser/utils/UUID.d.ts +2 -34
  50. package/dist/browser/types/shared/utils/ArrayUtils.d.ts +5 -0
  51. package/dist/browser/types/shared/utils/UUID.d.ts +145 -0
  52. package/dist/browser/types/shared/utils/UUID.types.d.ts +2 -0
  53. package/dist/browser/types/shared/utils/UuidUtils.d.ts +6 -0
  54. package/dist/browser/types/shared/utils/global/fallbackIfMatch.d.ts +1 -0
  55. package/dist/browser/types/shared/utils/global/fallbackIfNullish.d.ts +1 -0
  56. package/dist/browser/types/shared/utils/global/index.d.ts +2 -1
  57. package/dist/browser/types/shared/utils/global/pureEnum.d.ts +9 -0
  58. package/dist/browser/types/shared/utils/index.d.ts +1 -0
  59. package/dist/browser/types/shared/utils/try-catch/TryCatch.d.ts +20 -0
  60. package/dist/node/cjs/nodejs/managers/TransactionManager.js +3 -0
  61. package/dist/node/cjs/nodejs/services/redis/RedisClient.js +2 -0
  62. package/dist/node/cjs/nodejs/services/redis/RedisPublisher.js +1 -0
  63. package/dist/node/cjs/nodejs/services/redis/index.js +1 -0
  64. package/dist/node/cjs/nodejs/utils/UUID.js +1 -1
  65. package/dist/node/cjs/nodejs/utils/sequelize-utils/SequelizeUtils.js +5 -6
  66. package/dist/node/cjs/shared/managers/SessionManager.js +10 -0
  67. package/dist/node/cjs/shared/services/time/TimeService.js +16 -0
  68. package/dist/node/cjs/shared/utils/ArrayUtils.js +5 -0
  69. package/dist/node/cjs/shared/utils/AxiosUtils.js +2 -0
  70. package/dist/node/cjs/shared/utils/Calc.js +1 -1
  71. package/dist/node/cjs/shared/utils/DateUtils.js +1 -0
  72. package/dist/node/cjs/shared/utils/JuminNumberUtils.js +4 -1
  73. package/dist/node/cjs/shared/utils/Sequencer.js +6 -0
  74. package/dist/node/cjs/shared/utils/StringUtils.js +3 -1
  75. package/dist/node/cjs/shared/utils/UUID.js +314 -0
  76. package/dist/node/cjs/shared/utils/UUID.types.js +2 -0
  77. package/dist/node/cjs/shared/utils/UuidUtils.js +3 -0
  78. package/dist/node/cjs/shared/utils/Validator.js +11 -0
  79. package/dist/node/cjs/shared/utils/global/{fallbackIfEqual.js → fallbackIfMatch.js} +2 -2
  80. package/dist/node/cjs/shared/utils/global/fallbackIfNull.js +2 -2
  81. package/dist/node/cjs/shared/utils/global/fallbackIfNullish.js +9 -0
  82. package/dist/node/cjs/shared/utils/global/fallbackIfUndefined.js +2 -2
  83. package/dist/node/cjs/shared/utils/global/firstNonNullish.js +1 -0
  84. package/dist/node/cjs/shared/utils/global/flat.js +1 -0
  85. package/dist/node/cjs/shared/utils/global/index.js +2 -1
  86. package/dist/node/cjs/shared/utils/global/pureEnum.js +9 -0
  87. package/dist/node/cjs/shared/utils/index.js +2 -0
  88. package/dist/node/cjs/shared/utils/try-catch/TryCatch.js +20 -0
  89. package/dist/node/esm/nodejs/managers/TransactionManager.mjs +3 -0
  90. package/dist/node/esm/nodejs/services/redis/RedisClient.mjs +2 -0
  91. package/dist/node/esm/nodejs/services/redis/RedisPublisher.mjs +1 -0
  92. package/dist/node/esm/nodejs/services/redis/index.mjs +1 -0
  93. package/dist/node/esm/nodejs/utils/UUID.mjs +1 -1
  94. package/dist/node/esm/nodejs/utils/sequelize-utils/SequelizeUtils.mjs +5 -6
  95. package/dist/node/esm/shared/managers/SessionManager.mjs +10 -0
  96. package/dist/node/esm/shared/services/time/TimeService.mjs +16 -0
  97. package/dist/node/esm/shared/utils/ArrayUtils.mjs +5 -0
  98. package/dist/node/esm/shared/utils/AxiosUtils.mjs +2 -0
  99. package/dist/node/esm/shared/utils/Calc.mjs +1 -1
  100. package/dist/node/esm/shared/utils/DateUtils.mjs +1 -0
  101. package/dist/node/esm/shared/utils/JuminNumberUtils.mjs +4 -1
  102. package/dist/node/esm/shared/utils/Sequencer.mjs +6 -0
  103. package/dist/node/esm/shared/utils/StringUtils.mjs +3 -1
  104. package/dist/node/esm/shared/utils/UUID.mjs +310 -0
  105. package/dist/node/esm/shared/utils/UUID.types.mjs +1 -0
  106. package/dist/node/esm/shared/utils/UuidUtils.mjs +3 -0
  107. package/dist/node/esm/shared/utils/Validator.mjs +11 -0
  108. package/dist/node/esm/shared/utils/global/{fallbackIfEqual.mjs → fallbackIfMatch.mjs} +1 -1
  109. package/dist/node/esm/shared/utils/global/fallbackIfNull.mjs +2 -2
  110. package/dist/node/esm/shared/utils/global/fallbackIfNullish.mjs +6 -0
  111. package/dist/node/esm/shared/utils/global/fallbackIfUndefined.mjs +2 -2
  112. package/dist/node/esm/shared/utils/global/firstNonNullish.mjs +1 -0
  113. package/dist/node/esm/shared/utils/global/flat.mjs +1 -0
  114. package/dist/node/esm/shared/utils/global/index.mjs +2 -1
  115. package/dist/node/esm/shared/utils/global/pureEnum.mjs +9 -0
  116. package/dist/node/esm/shared/utils/index.mjs +2 -0
  117. package/dist/node/esm/shared/utils/try-catch/TryCatch.mjs +20 -0
  118. package/dist/node/types/nodejs/utils/UUID.d.ts +1 -1
  119. package/dist/node/types/shared/utils/ArrayUtils.d.ts +5 -0
  120. package/dist/node/types/shared/utils/UUID.d.ts +145 -0
  121. package/dist/node/types/shared/utils/UUID.types.d.ts +2 -0
  122. package/dist/node/types/shared/utils/UuidUtils.d.ts +6 -0
  123. package/dist/node/types/shared/utils/global/fallbackIfMatch.d.ts +1 -0
  124. package/dist/node/types/shared/utils/global/fallbackIfNullish.d.ts +1 -0
  125. package/dist/node/types/shared/utils/global/index.d.ts +2 -1
  126. package/dist/node/types/shared/utils/global/pureEnum.d.ts +9 -0
  127. package/dist/node/types/shared/utils/index.d.ts +1 -0
  128. package/dist/node/types/shared/utils/try-catch/TryCatch.d.ts +20 -0
  129. package/package.json +1 -1
  130. package/dist/browser/types/shared/utils/global/fallbackIfEqual.d.ts +0 -1
  131. package/dist/node/cjs/browser/utils/UUID.js +0 -176
  132. package/dist/node/esm/browser/utils/UUID.mjs +0 -172
  133. package/dist/node/types/browser/utils/UUID.d.ts +0 -35
  134. 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 shared_1 = require("../../shared");
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, track[j - 1][i] + 1, track[j - 1][i - 1] + indicator);
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];