data-structure-typed 1.15.0 → 1.15.2
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/README.md +378 -7
- package/dist/data-structures/binary-tree/binary-tree.d.ts +30 -30
- package/dist/data-structures/binary-tree/binary-tree.js +55 -55
- package/dist/data-structures/binary-tree/segment-tree.d.ts +17 -17
- package/dist/data-structures/binary-tree/segment-tree.js +30 -30
- package/dist/data-structures/graph/abstract-graph.d.ts +6 -6
- package/dist/data-structures/graph/abstract-graph.js +6 -6
- package/dist/data-structures/graph/directed-graph.d.ts +4 -4
- package/dist/data-structures/graph/directed-graph.js +6 -6
- package/dist/data-structures/graph/undirected-graph.d.ts +3 -3
- package/dist/data-structures/hash/coordinate-map.d.ts +2 -2
- package/dist/data-structures/hash/coordinate-set.d.ts +2 -2
- package/dist/data-structures/heap/heap.d.ts +14 -14
- package/dist/data-structures/heap/heap.js +12 -12
- package/dist/data-structures/linked-list/doubly-linked-list.d.ts +9 -9
- package/dist/data-structures/linked-list/doubly-linked-list.js +12 -12
- package/dist/data-structures/linked-list/singly-linked-list.d.ts +7 -7
- package/dist/data-structures/priority-queue/priority-queue.d.ts +7 -7
- package/dist/data-structures/priority-queue/priority-queue.js +6 -6
- package/dist/data-structures/queue/deque.d.ts +1 -1
- package/dist/utils/types/utils.d.ts +0 -52
- package/dist/utils/types/utils.js +0 -52
- package/dist/utils/utils.d.ts +1 -97
- package/dist/utils/utils.js +1 -547
- package/package.json +3 -4
- package/src/assets/overview-diagram-of-data-structures.png +0 -0
- package/src/data-structures/binary-tree/binary-tree.ts +83 -76
- package/src/data-structures/binary-tree/segment-tree.ts +55 -36
- package/src/data-structures/graph/abstract-graph.ts +21 -19
- package/src/data-structures/graph/directed-graph.ts +23 -18
- package/src/data-structures/graph/undirected-graph.ts +16 -11
- package/src/data-structures/hash/coordinate-map.ts +11 -8
- package/src/data-structures/hash/coordinate-set.ts +11 -8
- package/src/data-structures/heap/heap.ts +34 -28
- package/src/data-structures/linked-list/doubly-linked-list.ts +40 -26
- package/src/data-structures/linked-list/singly-linked-list.ts +32 -23
- package/src/data-structures/priority-queue/priority-queue.ts +17 -14
- package/src/data-structures/queue/deque.ts +14 -4
- package/src/utils/types/utils.ts +1 -175
- package/src/utils/utils.ts +1 -484
- package/tests/unit/data-structures/binary-tree/bst.test.ts +40 -31
- package/tests/unit/data-structures/graph/directed-graph.test.ts +31 -34
package/dist/utils/utils.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -46,17 +35,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
46
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
36
|
}
|
|
48
37
|
};
|
|
49
|
-
var __values = (this && this.__values) || function(o) {
|
|
50
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
51
|
-
if (m) return m.call(o);
|
|
52
|
-
if (o && typeof o.length === "number") return {
|
|
53
|
-
next: function () {
|
|
54
|
-
if (o && i >= o.length) o = void 0;
|
|
55
|
-
return { value: o && o[i++], done: !o };
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
59
|
-
};
|
|
60
38
|
var __read = (this && this.__read) || function (o, n) {
|
|
61
39
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
62
40
|
if (!m) return o;
|
|
@@ -82,22 +60,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
82
60
|
}
|
|
83
61
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
84
62
|
};
|
|
85
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
86
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
87
|
-
};
|
|
88
63
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
89
|
-
exports.trampolineAsync = exports.trampoline = exports.toThunk = exports.isThunk = exports.THUNK_SYMBOL = exports.
|
|
90
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
91
|
-
function randomText(length) {
|
|
92
|
-
var result = '';
|
|
93
|
-
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
94
|
-
var charactersLength = characters.length;
|
|
95
|
-
for (var i = 0; i < length; i++) {
|
|
96
|
-
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
97
|
-
}
|
|
98
|
-
return result;
|
|
99
|
-
}
|
|
100
|
-
exports.randomText = randomText;
|
|
64
|
+
exports.trampolineAsync = exports.trampoline = exports.toThunk = exports.isThunk = exports.THUNK_SYMBOL = exports.arrayRemove = exports.uuidV4 = void 0;
|
|
101
65
|
var uuidV4 = function () {
|
|
102
66
|
return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {
|
|
103
67
|
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
|
|
@@ -105,481 +69,6 @@ var uuidV4 = function () {
|
|
|
105
69
|
});
|
|
106
70
|
};
|
|
107
71
|
exports.uuidV4 = uuidV4;
|
|
108
|
-
var IncrementId = /** @class */ (function () {
|
|
109
|
-
function IncrementId(prefix) {
|
|
110
|
-
this._prefix = prefix ? prefix : '';
|
|
111
|
-
this._id = this._prefix + '0';
|
|
112
|
-
}
|
|
113
|
-
IncrementId.prototype.getId = function () {
|
|
114
|
-
var _a = this, _id = _a._id, _prefix = _a._prefix;
|
|
115
|
-
if (!_id) {
|
|
116
|
-
this._id = _prefix + '0';
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
var idNumStr = _id.substr(_prefix.length, _id.length - _prefix.length);
|
|
120
|
-
var newIdNum = parseInt(idNumStr, 10) + 1;
|
|
121
|
-
this._id = _prefix + newIdNum.toString();
|
|
122
|
-
}
|
|
123
|
-
return this._id;
|
|
124
|
-
};
|
|
125
|
-
return IncrementId;
|
|
126
|
-
}());
|
|
127
|
-
exports.IncrementId = IncrementId;
|
|
128
|
-
function incrementId(prefix) {
|
|
129
|
-
var _prefix = prefix ? prefix : '';
|
|
130
|
-
var _id = _prefix + '0';
|
|
131
|
-
return function id() {
|
|
132
|
-
var idNumStr = _id.substr(_prefix.length, _id.length - _prefix.length);
|
|
133
|
-
var newIdNum = parseInt(idNumStr, 10) + 1;
|
|
134
|
-
_id = _prefix + newIdNum.toString();
|
|
135
|
-
return _id;
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
exports.incrementId = incrementId;
|
|
139
|
-
var getValue = function (obj, names) { return names.map(function (i) { return obj[i]; }); };
|
|
140
|
-
exports.getValue = getValue;
|
|
141
|
-
var isObject = function (object) { return object != null && typeof object === 'object'; };
|
|
142
|
-
exports.isObject = isObject;
|
|
143
|
-
var looseEqual = function (a, b) { return a == b; };
|
|
144
|
-
exports.looseEqual = looseEqual;
|
|
145
|
-
var strictEqual = function (a, b) { return a === b; };
|
|
146
|
-
exports.strictEqual = strictEqual;
|
|
147
|
-
var strictObjectIsEqual = function (a, b) { return Object.is(a, b); };
|
|
148
|
-
exports.strictObjectIsEqual = strictObjectIsEqual;
|
|
149
|
-
var deepObjectStrictEqual = function (object1, object2) {
|
|
150
|
-
var e_1, _a;
|
|
151
|
-
var keys1 = Object.keys(object1);
|
|
152
|
-
var keys2 = Object.keys(object2);
|
|
153
|
-
if (keys1.length !== keys2.length) {
|
|
154
|
-
return false;
|
|
155
|
-
}
|
|
156
|
-
try {
|
|
157
|
-
for (var keys1_1 = __values(keys1), keys1_1_1 = keys1_1.next(); !keys1_1_1.done; keys1_1_1 = keys1_1.next()) {
|
|
158
|
-
var key = keys1_1_1.value;
|
|
159
|
-
var val1 = object1[key];
|
|
160
|
-
var val2 = object2[key];
|
|
161
|
-
var areObjects = (0, exports.isObject)(val1) && (0, exports.isObject)(val2);
|
|
162
|
-
if (areObjects && !(0, exports.deepObjectStrictEqual)(val1, val2) ||
|
|
163
|
-
!areObjects && val1 !== val2) {
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
169
|
-
finally {
|
|
170
|
-
try {
|
|
171
|
-
if (keys1_1_1 && !keys1_1_1.done && (_a = keys1_1.return)) _a.call(keys1_1);
|
|
172
|
-
}
|
|
173
|
-
finally { if (e_1) throw e_1.error; }
|
|
174
|
-
}
|
|
175
|
-
return true;
|
|
176
|
-
};
|
|
177
|
-
exports.deepObjectStrictEqual = deepObjectStrictEqual;
|
|
178
|
-
function reverseColor(oldColor) {
|
|
179
|
-
var oldColorTemp = '0x' + oldColor.replace(/#/g, '');
|
|
180
|
-
var str = '000000' + (0xFFFFFF - Number(oldColorTemp)).toString(16);
|
|
181
|
-
return '#' + str.substring(str.length - 6, str.length);
|
|
182
|
-
}
|
|
183
|
-
exports.reverseColor = reverseColor;
|
|
184
|
-
var isSameStructure = function (objA, objB) {
|
|
185
|
-
var objATraversable = objA;
|
|
186
|
-
var objBTraversable = objB;
|
|
187
|
-
var objAKeys = Object.keys(objATraversable);
|
|
188
|
-
var objBKeys = Object.keys(objBTraversable);
|
|
189
|
-
var isSame = true;
|
|
190
|
-
if (objAKeys.length !== objBKeys.length) {
|
|
191
|
-
return isSame = false;
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
objAKeys.forEach(function (i) {
|
|
195
|
-
if (!objBKeys.includes(i)) {
|
|
196
|
-
return isSame = false;
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
return isSame;
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
exports.isSameStructure = isSameStructure;
|
|
203
|
-
var isLeafParent = function (obj) {
|
|
204
|
-
var isLeaf = true;
|
|
205
|
-
Object.values(obj).forEach(function (value) {
|
|
206
|
-
if (typeof value === 'object' && value instanceof Array) {
|
|
207
|
-
value.forEach(function (item) {
|
|
208
|
-
if (typeof item === 'object') {
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
return isLeaf = true;
|
|
213
|
-
}
|
|
214
|
-
if (!['string', 'boolean', 'number', 'undefined', 'function'].includes(typeof value) && (value !== null)) {
|
|
215
|
-
return isLeaf = false;
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
return isLeaf;
|
|
219
|
-
};
|
|
220
|
-
exports.isLeafParent = isLeafParent;
|
|
221
|
-
var addDays = function (date, days) {
|
|
222
|
-
date.setDate(date.getDate() + days);
|
|
223
|
-
return date;
|
|
224
|
-
};
|
|
225
|
-
exports.addDays = addDays;
|
|
226
|
-
var WaitManager = /** @class */ (function () {
|
|
227
|
-
function WaitManager(nXSpeed) {
|
|
228
|
-
this._time30 = 20000;
|
|
229
|
-
this._nXSpeed = 1;
|
|
230
|
-
this._time1 = 1000;
|
|
231
|
-
this._time2 = 2000;
|
|
232
|
-
this._time3 = 3000;
|
|
233
|
-
this._time4 = 4000;
|
|
234
|
-
this._time10 = 10000;
|
|
235
|
-
this._time20 = 20000;
|
|
236
|
-
this._time60 = 60000;
|
|
237
|
-
this._cusTime = 1000;
|
|
238
|
-
if (nXSpeed === undefined)
|
|
239
|
-
nXSpeed = 1;
|
|
240
|
-
this._nXSpeed = nXSpeed;
|
|
241
|
-
}
|
|
242
|
-
Object.defineProperty(WaitManager.prototype, "time1", {
|
|
243
|
-
get: function () {
|
|
244
|
-
return this._time1 / this._nXSpeed;
|
|
245
|
-
},
|
|
246
|
-
enumerable: false,
|
|
247
|
-
configurable: true
|
|
248
|
-
});
|
|
249
|
-
Object.defineProperty(WaitManager.prototype, "time2", {
|
|
250
|
-
get: function () {
|
|
251
|
-
return this._time2 / this._nXSpeed;
|
|
252
|
-
},
|
|
253
|
-
enumerable: false,
|
|
254
|
-
configurable: true
|
|
255
|
-
});
|
|
256
|
-
Object.defineProperty(WaitManager.prototype, "time3", {
|
|
257
|
-
get: function () {
|
|
258
|
-
return this._time3 / this._nXSpeed;
|
|
259
|
-
},
|
|
260
|
-
enumerable: false,
|
|
261
|
-
configurable: true
|
|
262
|
-
});
|
|
263
|
-
Object.defineProperty(WaitManager.prototype, "time4", {
|
|
264
|
-
get: function () {
|
|
265
|
-
return this._time4 / this._nXSpeed;
|
|
266
|
-
},
|
|
267
|
-
enumerable: false,
|
|
268
|
-
configurable: true
|
|
269
|
-
});
|
|
270
|
-
Object.defineProperty(WaitManager.prototype, "time10", {
|
|
271
|
-
get: function () {
|
|
272
|
-
return this._time10 / this._nXSpeed;
|
|
273
|
-
},
|
|
274
|
-
enumerable: false,
|
|
275
|
-
configurable: true
|
|
276
|
-
});
|
|
277
|
-
Object.defineProperty(WaitManager.prototype, "time20", {
|
|
278
|
-
get: function () {
|
|
279
|
-
return this._time20 / this._nXSpeed;
|
|
280
|
-
},
|
|
281
|
-
enumerable: false,
|
|
282
|
-
configurable: true
|
|
283
|
-
});
|
|
284
|
-
Object.defineProperty(WaitManager.prototype, "time50", {
|
|
285
|
-
get: function () {
|
|
286
|
-
return this._time30 / this._nXSpeed;
|
|
287
|
-
},
|
|
288
|
-
enumerable: false,
|
|
289
|
-
configurable: true
|
|
290
|
-
});
|
|
291
|
-
Object.defineProperty(WaitManager.prototype, "time60", {
|
|
292
|
-
get: function () {
|
|
293
|
-
return this._time60 / this._nXSpeed;
|
|
294
|
-
},
|
|
295
|
-
enumerable: false,
|
|
296
|
-
configurable: true
|
|
297
|
-
});
|
|
298
|
-
Object.defineProperty(WaitManager.prototype, "cusTime", {
|
|
299
|
-
get: function () {
|
|
300
|
-
return this._cusTime / this._nXSpeed;
|
|
301
|
-
},
|
|
302
|
-
set: function (v) {
|
|
303
|
-
this._cusTime = v;
|
|
304
|
-
},
|
|
305
|
-
enumerable: false,
|
|
306
|
-
configurable: true
|
|
307
|
-
});
|
|
308
|
-
return WaitManager;
|
|
309
|
-
}());
|
|
310
|
-
exports.WaitManager = WaitManager;
|
|
311
|
-
var wait = function (ms, resolveValue) { return __awaiter(void 0, void 0, void 0, function () {
|
|
312
|
-
return __generator(this, function (_a) {
|
|
313
|
-
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
314
|
-
setTimeout(function () {
|
|
315
|
-
var finalResolveValue = resolveValue || true;
|
|
316
|
-
resolve(finalResolveValue);
|
|
317
|
-
}, ms);
|
|
318
|
-
})];
|
|
319
|
-
});
|
|
320
|
-
}); };
|
|
321
|
-
exports.wait = wait;
|
|
322
|
-
function extractValue(data) {
|
|
323
|
-
var result = [];
|
|
324
|
-
if (data && data.length > 0) {
|
|
325
|
-
result = data.map(function (item) { return item.value; });
|
|
326
|
-
}
|
|
327
|
-
return result;
|
|
328
|
-
}
|
|
329
|
-
exports.extractValue = extractValue;
|
|
330
|
-
function keyValueToArray(data) {
|
|
331
|
-
var e_2, _a;
|
|
332
|
-
var itemArray = [];
|
|
333
|
-
var keys = Object.keys(data);
|
|
334
|
-
try {
|
|
335
|
-
for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
|
|
336
|
-
var i = keys_1_1.value;
|
|
337
|
-
itemArray.push(__assign(__assign({}, data[i]), { _id: i }));
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
341
|
-
finally {
|
|
342
|
-
try {
|
|
343
|
-
if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
|
|
344
|
-
}
|
|
345
|
-
finally { if (e_2) throw e_2.error; }
|
|
346
|
-
}
|
|
347
|
-
return itemArray;
|
|
348
|
-
}
|
|
349
|
-
exports.keyValueToArray = keyValueToArray;
|
|
350
|
-
function minuted(time) {
|
|
351
|
-
var minutes = Math.floor(time / 60000).toString();
|
|
352
|
-
var seconds = Math.floor((time % 60000) / 1000).toString().padStart(2, '0');
|
|
353
|
-
return "".concat(minutes, ":").concat(seconds);
|
|
354
|
-
}
|
|
355
|
-
exports.minuted = minuted;
|
|
356
|
-
function randomDate(start, end, specificProbabilityStart, specificProbability) {
|
|
357
|
-
if (!start)
|
|
358
|
-
start = new Date('1970-1-1');
|
|
359
|
-
if (!end)
|
|
360
|
-
end = new Date();
|
|
361
|
-
if (specificProbabilityStart) {
|
|
362
|
-
if (!specificProbability)
|
|
363
|
-
specificProbability = 0.5;
|
|
364
|
-
if (Math.random() <= specificProbability) {
|
|
365
|
-
return new Date(specificProbabilityStart.getTime() + Math.random() * (end.getTime() - specificProbabilityStart.getTime()));
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
|
|
369
|
-
}
|
|
370
|
-
exports.randomDate = randomDate;
|
|
371
|
-
var capitalizeWords = function (str) { return str.replace(/(?:^|\s)\S/g, function (a) { return a.toUpperCase(); }); };
|
|
372
|
-
exports.capitalizeWords = capitalizeWords;
|
|
373
|
-
var capitalizeFirstLetter = function (str) { return str.charAt(0).toUpperCase() + str.slice(1); };
|
|
374
|
-
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
375
|
-
var comparerArray = function (otherArray, limitKeys) {
|
|
376
|
-
return function (current) {
|
|
377
|
-
return otherArray.filter(function (other) {
|
|
378
|
-
if (!limitKeys) {
|
|
379
|
-
return lodash_1.default.isEqual(current, other);
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
// TODO
|
|
383
|
-
}
|
|
384
|
-
}).length == 0;
|
|
385
|
-
};
|
|
386
|
-
};
|
|
387
|
-
exports.comparerArray = comparerArray;
|
|
388
|
-
var onlyInA = function (a, b) { return a.filter((0, exports.comparerArray)(b)); };
|
|
389
|
-
exports.onlyInA = onlyInA;
|
|
390
|
-
var onlyInB = function (a, b) { return b.filter((0, exports.comparerArray)(a)); };
|
|
391
|
-
exports.onlyInB = onlyInB;
|
|
392
|
-
var diffAB = function (a, b) { return (0, exports.onlyInA)(a, b).concat((0, exports.onlyInB)(a, b)); };
|
|
393
|
-
exports.diffAB = diffAB;
|
|
394
|
-
var StringUtil = /** @class */ (function () {
|
|
395
|
-
function StringUtil() {
|
|
396
|
-
}
|
|
397
|
-
// camelCase
|
|
398
|
-
StringUtil.toCamelCase = function (str) {
|
|
399
|
-
return lodash_1.default.camelCase(str);
|
|
400
|
-
};
|
|
401
|
-
// snake_case
|
|
402
|
-
StringUtil.toSnakeCase = function (str) {
|
|
403
|
-
return lodash_1.default.snakeCase(str);
|
|
404
|
-
};
|
|
405
|
-
// PascalCase
|
|
406
|
-
StringUtil.toPascalCase = function (str) {
|
|
407
|
-
return lodash_1.default.startCase(lodash_1.default.camelCase(str)).replace(/ /g, '');
|
|
408
|
-
};
|
|
409
|
-
// CONSTANT_CASE
|
|
410
|
-
StringUtil.toConstantCase = function (str) {
|
|
411
|
-
return lodash_1.default.upperCase(str).replace(/ /g, '_');
|
|
412
|
-
};
|
|
413
|
-
// kebab-case
|
|
414
|
-
StringUtil.toKebabCase = function (str) {
|
|
415
|
-
return lodash_1.default.kebabCase(str);
|
|
416
|
-
};
|
|
417
|
-
// lowercase
|
|
418
|
-
StringUtil.toLowerCase = function (str) {
|
|
419
|
-
return lodash_1.default.lowerCase(str).replace(/ /g, '');
|
|
420
|
-
};
|
|
421
|
-
// Title Case
|
|
422
|
-
StringUtil.toTitleCase = function (str) {
|
|
423
|
-
return lodash_1.default.startCase(lodash_1.default.camelCase(str));
|
|
424
|
-
};
|
|
425
|
-
// Sentence case
|
|
426
|
-
StringUtil.toSentenceCase = function (str) {
|
|
427
|
-
return lodash_1.default.upperFirst(lodash_1.default.lowerCase(str));
|
|
428
|
-
};
|
|
429
|
-
// path/case
|
|
430
|
-
StringUtil.toPathCase = function (str) {
|
|
431
|
-
return lodash_1.default.lowerCase(str).replace(/ /g, '/');
|
|
432
|
-
};
|
|
433
|
-
// dot.case
|
|
434
|
-
StringUtil.toDotCase = function (str) {
|
|
435
|
-
return lodash_1.default.lowerCase(str).replace(/ /g, '.');
|
|
436
|
-
};
|
|
437
|
-
return StringUtil;
|
|
438
|
-
}());
|
|
439
|
-
exports.StringUtil = StringUtil;
|
|
440
|
-
var deepKeysConvert = function (obj, toType) {
|
|
441
|
-
var _toType = toType || 'snake';
|
|
442
|
-
if (Array.isArray(obj)) {
|
|
443
|
-
return obj.map(function (v) { return (0, exports.deepKeysConvert)(v, _toType); });
|
|
444
|
-
}
|
|
445
|
-
else if (obj !== null && obj.constructor === Object) {
|
|
446
|
-
return Object.keys(obj).reduce(function (result, key) {
|
|
447
|
-
var _a;
|
|
448
|
-
var newKey = '';
|
|
449
|
-
switch (_toType) {
|
|
450
|
-
case 'camel':
|
|
451
|
-
newKey = StringUtil.toCamelCase(key);
|
|
452
|
-
break;
|
|
453
|
-
case 'snake':
|
|
454
|
-
newKey = StringUtil.toSnakeCase(key);
|
|
455
|
-
break;
|
|
456
|
-
case 'pascal':
|
|
457
|
-
newKey = StringUtil.toPascalCase(key);
|
|
458
|
-
break;
|
|
459
|
-
case 'constant':
|
|
460
|
-
newKey = StringUtil.toConstantCase(key);
|
|
461
|
-
break;
|
|
462
|
-
case 'kebab':
|
|
463
|
-
newKey = StringUtil.toKebabCase(key);
|
|
464
|
-
break;
|
|
465
|
-
case 'lower':
|
|
466
|
-
newKey = StringUtil.toLowerCase(key);
|
|
467
|
-
break;
|
|
468
|
-
case 'title':
|
|
469
|
-
newKey = StringUtil.toTitleCase(key);
|
|
470
|
-
break;
|
|
471
|
-
case 'sentence':
|
|
472
|
-
newKey = StringUtil.toSentenceCase(key);
|
|
473
|
-
break;
|
|
474
|
-
case 'path':
|
|
475
|
-
newKey = StringUtil.toPathCase(key);
|
|
476
|
-
break;
|
|
477
|
-
case 'dot':
|
|
478
|
-
newKey = StringUtil.toDotCase(key);
|
|
479
|
-
break;
|
|
480
|
-
default:
|
|
481
|
-
newKey = StringUtil.toDotCase(key);
|
|
482
|
-
break;
|
|
483
|
-
}
|
|
484
|
-
return __assign(__assign({}, result), (_a = {}, _a[newKey] = (0, exports.deepKeysConvert)(obj[key], _toType), _a));
|
|
485
|
-
}, {});
|
|
486
|
-
}
|
|
487
|
-
return obj;
|
|
488
|
-
};
|
|
489
|
-
exports.deepKeysConvert = deepKeysConvert;
|
|
490
|
-
var deepRemoveByKey = function (obj, keysToBeRemoved) {
|
|
491
|
-
var result = lodash_1.default.transform(obj, function (result, value, key) {
|
|
492
|
-
if (lodash_1.default.isObject(value)) {
|
|
493
|
-
value = (0, exports.deepRemoveByKey)(value, keysToBeRemoved);
|
|
494
|
-
}
|
|
495
|
-
if (!keysToBeRemoved.includes(key)) {
|
|
496
|
-
lodash_1.default.isArray(obj) ? result.push(value) : result[key] = value;
|
|
497
|
-
}
|
|
498
|
-
});
|
|
499
|
-
return result;
|
|
500
|
-
};
|
|
501
|
-
exports.deepRemoveByKey = deepRemoveByKey;
|
|
502
|
-
var deepRenameKeys = function (obj, keysMap) {
|
|
503
|
-
return lodash_1.default.transform(obj, function (result, value, key) {
|
|
504
|
-
var currentKey = keysMap[key] || key;
|
|
505
|
-
result[currentKey] = lodash_1.default.isObject(value) ? (0, exports.deepRenameKeys)(value, keysMap) : value;
|
|
506
|
-
});
|
|
507
|
-
};
|
|
508
|
-
exports.deepRenameKeys = deepRenameKeys;
|
|
509
|
-
var deepReplaceValues = function (obj, keyReducerMap) {
|
|
510
|
-
var newObject = lodash_1.default.clone(obj);
|
|
511
|
-
lodash_1.default.each(obj, function (val, key) {
|
|
512
|
-
for (var item in keyReducerMap) {
|
|
513
|
-
if (key === item) {
|
|
514
|
-
newObject[key] = keyReducerMap[item](newObject);
|
|
515
|
-
}
|
|
516
|
-
else if (typeof (val) === 'object' || val instanceof Array) {
|
|
517
|
-
newObject[key] = (0, exports.deepReplaceValues)(val, keyReducerMap);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
});
|
|
521
|
-
return newObject;
|
|
522
|
-
};
|
|
523
|
-
exports.deepReplaceValues = deepReplaceValues;
|
|
524
|
-
// TODO determine depth and pass root node as a param through callback
|
|
525
|
-
var deepAdd = function (obj, keyReducerMap, isItemRootParent) {
|
|
526
|
-
var newObject = lodash_1.default.clone(obj);
|
|
527
|
-
if (lodash_1.default.isObject(newObject) && !lodash_1.default.isArray(newObject)) {
|
|
528
|
-
for (var item in keyReducerMap) {
|
|
529
|
-
newObject[item] = keyReducerMap[item](newObject);
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
lodash_1.default.each(obj, function (val, key) {
|
|
533
|
-
if (lodash_1.default.isObject(val)) {
|
|
534
|
-
for (var item in keyReducerMap) {
|
|
535
|
-
// @ts-ignore
|
|
536
|
-
newObject[key] = (0, exports.deepAdd)(val, keyReducerMap, isItemRootParent);
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
});
|
|
540
|
-
return newObject;
|
|
541
|
-
};
|
|
542
|
-
exports.deepAdd = deepAdd;
|
|
543
|
-
var styleString = function (color) { return "color: ".concat(color, "; font-weight: bold"); };
|
|
544
|
-
var styleHeader = function (header) { return "%c[".concat(header, "]"); };
|
|
545
|
-
exports.bunnyConsole = {
|
|
546
|
-
log: function (headerLog) {
|
|
547
|
-
if (headerLog === void 0) { headerLog = 'bunny'; }
|
|
548
|
-
var args = [];
|
|
549
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
550
|
-
args[_i - 1] = arguments[_i];
|
|
551
|
-
}
|
|
552
|
-
return console.log.apply(console, __spreadArray([styleHeader(headerLog), styleString('black')], __read(args), false));
|
|
553
|
-
},
|
|
554
|
-
warn: function (headerLog) {
|
|
555
|
-
if (headerLog === void 0) { headerLog = 'bunny'; }
|
|
556
|
-
var args = [];
|
|
557
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
558
|
-
args[_i - 1] = arguments[_i];
|
|
559
|
-
}
|
|
560
|
-
return console.warn.apply(console, __spreadArray([styleHeader(headerLog), styleString('orange')], __read(args), false));
|
|
561
|
-
},
|
|
562
|
-
error: function (headerLog) {
|
|
563
|
-
if (headerLog === void 0) { headerLog = 'bunny'; }
|
|
564
|
-
var args = [];
|
|
565
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
566
|
-
args[_i - 1] = arguments[_i];
|
|
567
|
-
}
|
|
568
|
-
return console.error.apply(console, __spreadArray([styleHeader(headerLog), styleString('red')], __read(args), false));
|
|
569
|
-
}
|
|
570
|
-
};
|
|
571
|
-
var timeStart = function () {
|
|
572
|
-
return performance ? performance.now() : new Date().getTime();
|
|
573
|
-
};
|
|
574
|
-
exports.timeStart = timeStart;
|
|
575
|
-
var timeEnd = function (startTime, headerLog, consoleConditionFn) {
|
|
576
|
-
var timeSpent = (performance ? performance.now() : new Date().getTime()) - startTime;
|
|
577
|
-
var isPassCondition = consoleConditionFn ? consoleConditionFn(timeSpent) : true;
|
|
578
|
-
if (isPassCondition) {
|
|
579
|
-
exports.bunnyConsole.log(headerLog ? headerLog : 'time spent', timeSpent.toFixed(2));
|
|
580
|
-
}
|
|
581
|
-
};
|
|
582
|
-
exports.timeEnd = timeEnd;
|
|
583
72
|
var arrayRemove = function (array, predicate) {
|
|
584
73
|
var i = -1, len = array ? array.length : 0;
|
|
585
74
|
var result = [];
|
|
@@ -594,41 +83,6 @@ var arrayRemove = function (array, predicate) {
|
|
|
594
83
|
return result;
|
|
595
84
|
};
|
|
596
85
|
exports.arrayRemove = arrayRemove;
|
|
597
|
-
function memo() {
|
|
598
|
-
var cache = {};
|
|
599
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
600
|
-
return function (target, propertyKey, descriptor) {
|
|
601
|
-
var originalMethod = descriptor.value;
|
|
602
|
-
descriptor.value = function () {
|
|
603
|
-
var args = [];
|
|
604
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
605
|
-
args[_i] = arguments[_i];
|
|
606
|
-
}
|
|
607
|
-
var cacheKey = "__cacheKey__".concat(args.toString());
|
|
608
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
609
|
-
if (!cache.hasOwnProperty(cacheKey)) {
|
|
610
|
-
cache[cacheKey] = originalMethod.apply(this, args);
|
|
611
|
-
}
|
|
612
|
-
return cache[cacheKey];
|
|
613
|
-
};
|
|
614
|
-
};
|
|
615
|
-
}
|
|
616
|
-
exports.memo = memo;
|
|
617
|
-
function zip(array1, array2, options) {
|
|
618
|
-
var zipped = [];
|
|
619
|
-
var zippedObjCoords = [];
|
|
620
|
-
var isToObj = (options ? options : { isToObj: false }).isToObj;
|
|
621
|
-
for (var i = 0; i < array1.length; i++) {
|
|
622
|
-
if (isToObj) {
|
|
623
|
-
zippedObjCoords.push({ x: array1[i], y: array2[i] });
|
|
624
|
-
}
|
|
625
|
-
else {
|
|
626
|
-
zipped.push([array1[i], array2[i]]);
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
return isToObj ? zippedObjCoords : zipped;
|
|
630
|
-
}
|
|
631
|
-
exports.zip = zip;
|
|
632
86
|
exports.THUNK_SYMBOL = Symbol('thunk');
|
|
633
87
|
var isThunk = function (fnOrValue) {
|
|
634
88
|
return typeof fnOrValue === 'function' && fnOrValue.__THUNK__ === exports.THUNK_SYMBOL;
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "data-structure-typed",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.2",
|
|
4
4
|
"description": "Explore our comprehensive Javascript Data Structure / TypeScript Data Structure Library, meticulously crafted to empower developers with a versatile set of essential data structures. Our library includes a wide range of data structures, such as Binary Tree, AVL Tree, Binary Search Tree (BST), Tree Multiset, Segment Tree, Binary Indexed Tree, Graph, Directed Graph, Undirected Graph, Singly Linked List, Hash, CoordinateSet, CoordinateMap, Heap, Doubly Linked List, Priority Queue, Max Priority Queue, Min Priority Queue, Queue, ObjectDeque, ArrayDeque, Stack, and Trie. Each data structure is thoughtfully designed and implemented using TypeScript to provide efficient, reliable, and easy-to-use solutions for your programming needs. Whether you're optimizing algorithms, managing data, or enhancing performance, our TypeScript Data Structure Library is your go-to resource. Elevate your coding experience with these fundamental building blocks for software development.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "rm -rf dist && npx tsc",
|
|
8
8
|
"test": "jest",
|
|
9
9
|
"build:docs": "typedoc --out docs ./src",
|
|
10
|
-
"deps:check": "dependency-cruiser src"
|
|
10
|
+
"deps:check": "dependency-cruiser src",
|
|
11
|
+
"build:publish": "npm run test && npm run build && npm run build:docs && npm publish"
|
|
11
12
|
},
|
|
12
13
|
"repository": {
|
|
13
14
|
"type": "git",
|
|
@@ -48,7 +49,6 @@
|
|
|
48
49
|
"types": "dist/index.d.ts",
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"@types/jest": "^29.5.3",
|
|
51
|
-
"@types/lodash": "^4.14.197",
|
|
52
52
|
"@types/node": "^20.4.9",
|
|
53
53
|
"dependency-cruiser": "^13.1.2",
|
|
54
54
|
"jest": "^29.6.2",
|
|
@@ -57,6 +57,5 @@
|
|
|
57
57
|
"typescript": "^4.9.5"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"lodash": "^4.17.21"
|
|
61
60
|
}
|
|
62
61
|
}
|
|
Binary file
|