data-structure-typed 1.15.1 → 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.
Files changed (41) hide show
  1. package/README.md +378 -7
  2. package/dist/data-structures/binary-tree/binary-tree.d.ts +30 -30
  3. package/dist/data-structures/binary-tree/binary-tree.js +55 -55
  4. package/dist/data-structures/binary-tree/segment-tree.d.ts +17 -17
  5. package/dist/data-structures/binary-tree/segment-tree.js +30 -30
  6. package/dist/data-structures/graph/abstract-graph.d.ts +6 -6
  7. package/dist/data-structures/graph/abstract-graph.js +6 -6
  8. package/dist/data-structures/graph/directed-graph.d.ts +4 -4
  9. package/dist/data-structures/graph/directed-graph.js +6 -6
  10. package/dist/data-structures/graph/undirected-graph.d.ts +3 -3
  11. package/dist/data-structures/hash/coordinate-map.d.ts +2 -2
  12. package/dist/data-structures/hash/coordinate-set.d.ts +2 -2
  13. package/dist/data-structures/heap/heap.d.ts +14 -14
  14. package/dist/data-structures/heap/heap.js +12 -12
  15. package/dist/data-structures/linked-list/doubly-linked-list.d.ts +9 -9
  16. package/dist/data-structures/linked-list/doubly-linked-list.js +12 -12
  17. package/dist/data-structures/linked-list/singly-linked-list.d.ts +7 -7
  18. package/dist/data-structures/priority-queue/priority-queue.d.ts +7 -7
  19. package/dist/data-structures/priority-queue/priority-queue.js +6 -6
  20. package/dist/data-structures/queue/deque.d.ts +1 -1
  21. package/dist/utils/types/utils.d.ts +0 -3
  22. package/dist/utils/types/utils.js +0 -14
  23. package/dist/utils/utils.js +0 -197
  24. package/package.json +2 -4
  25. package/src/assets/overview-diagram-of-data-structures.png +0 -0
  26. package/src/data-structures/binary-tree/binary-tree.ts +83 -76
  27. package/src/data-structures/binary-tree/segment-tree.ts +55 -36
  28. package/src/data-structures/graph/abstract-graph.ts +21 -19
  29. package/src/data-structures/graph/directed-graph.ts +23 -18
  30. package/src/data-structures/graph/undirected-graph.ts +16 -11
  31. package/src/data-structures/hash/coordinate-map.ts +11 -8
  32. package/src/data-structures/hash/coordinate-set.ts +11 -8
  33. package/src/data-structures/heap/heap.ts +34 -28
  34. package/src/data-structures/linked-list/doubly-linked-list.ts +40 -26
  35. package/src/data-structures/linked-list/singly-linked-list.ts +32 -23
  36. package/src/data-structures/priority-queue/priority-queue.ts +17 -14
  37. package/src/data-structures/queue/deque.ts +14 -4
  38. package/src/utils/types/utils.ts +1 -173
  39. package/src/utils/utils.ts +0 -212
  40. package/tests/unit/data-structures/binary-tree/bst.test.ts +40 -31
  41. package/tests/unit/data-structures/graph/directed-graph.test.ts +31 -34
@@ -1,4 +1,5 @@
1
1
  export declare class DoublyLinkedListNode<T> {
2
+ constructor(nodeValue: T);
2
3
  protected _val: T;
3
4
  get val(): T;
4
5
  set val(v: T);
@@ -8,31 +9,30 @@ export declare class DoublyLinkedListNode<T> {
8
9
  protected _prev: DoublyLinkedListNode<T> | null;
9
10
  get prev(): DoublyLinkedListNode<T> | null;
10
11
  set prev(v: DoublyLinkedListNode<T> | null);
11
- constructor(nodeValue: T);
12
12
  }
13
13
  export declare class DoublyLinkedList<T> {
14
+ constructor();
14
15
  protected _first: DoublyLinkedListNode<T> | null;
15
16
  get first(): DoublyLinkedListNode<T> | null;
17
+ protected set first(v: DoublyLinkedListNode<T> | null);
18
+ protected _last: DoublyLinkedListNode<T> | null;
19
+ get last(): DoublyLinkedListNode<T> | null;
20
+ protected set last(v: DoublyLinkedListNode<T> | null);
21
+ protected _size: number;
22
+ get size(): number;
23
+ protected set size(v: number);
16
24
  /**
17
25
  * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
18
26
  */
19
27
  getFirst(): DoublyLinkedListNode<T> | null;
20
- protected set first(v: DoublyLinkedListNode<T> | null);
21
- protected _last: DoublyLinkedListNode<T> | null;
22
- get last(): DoublyLinkedListNode<T> | null;
23
28
  /**
24
29
  * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
25
30
  */
26
31
  getLast(): DoublyLinkedListNode<T> | null;
27
- protected set last(v: DoublyLinkedListNode<T> | null);
28
- protected _size: number;
29
- get size(): number;
30
32
  /**
31
33
  * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
32
34
  */
33
35
  getSize(): number;
34
- protected set size(v: number);
35
- constructor();
36
36
  /**
37
37
  * The function adds a new node with a given value to the beginning of a doubly linked list.
38
38
  * @param {T} val - The `val` parameter represents the value of the element that you want to add to the beginning of
@@ -56,12 +56,6 @@ var DoublyLinkedList = /** @class */ (function () {
56
56
  enumerable: false,
57
57
  configurable: true
58
58
  });
59
- /**
60
- * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
61
- */
62
- DoublyLinkedList.prototype.getFirst = function () {
63
- return this._first;
64
- };
65
59
  Object.defineProperty(DoublyLinkedList.prototype, "last", {
66
60
  get: function () {
67
61
  return this._last;
@@ -72,12 +66,6 @@ var DoublyLinkedList = /** @class */ (function () {
72
66
  enumerable: false,
73
67
  configurable: true
74
68
  });
75
- /**
76
- * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
77
- */
78
- DoublyLinkedList.prototype.getLast = function () {
79
- return this._last;
80
- };
81
69
  Object.defineProperty(DoublyLinkedList.prototype, "size", {
82
70
  get: function () {
83
71
  return this._size;
@@ -88,6 +76,18 @@ var DoublyLinkedList = /** @class */ (function () {
88
76
  enumerable: false,
89
77
  configurable: true
90
78
  });
79
+ /**
80
+ * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
81
+ */
82
+ DoublyLinkedList.prototype.getFirst = function () {
83
+ return this._first;
84
+ };
85
+ /**
86
+ * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
87
+ */
88
+ DoublyLinkedList.prototype.getLast = function () {
89
+ return this._last;
90
+ };
91
91
  /**
92
92
  * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
93
93
  */
@@ -6,6 +6,7 @@
6
6
  * @license MIT License
7
7
  */
8
8
  export declare class SinglyLinkedListNode<NodeVal = any> {
9
+ constructor(val: NodeVal, prev?: SinglyLinkedListNode<NodeVal> | null, next?: SinglyLinkedListNode<NodeVal> | null, list?: SinglyLinkedList<NodeVal> | null);
9
10
  protected _val: NodeVal;
10
11
  get val(): NodeVal;
11
12
  set val(value: NodeVal);
@@ -18,7 +19,6 @@ export declare class SinglyLinkedListNode<NodeVal = any> {
18
19
  protected _list: SinglyLinkedList<NodeVal> | null;
19
20
  get list(): SinglyLinkedList<NodeVal> | null;
20
21
  set list(value: SinglyLinkedList<NodeVal> | null);
21
- constructor(val: NodeVal, prev?: SinglyLinkedListNode<NodeVal> | null, next?: SinglyLinkedListNode<NodeVal> | null, list?: SinglyLinkedList<NodeVal> | null);
22
22
  get index(): number | undefined;
23
23
  /**
24
24
  * The `insertBefore` function inserts a new node with the given value before the current node in a singly linked list.
@@ -40,6 +40,12 @@ export declare class SinglyLinkedListNode<NodeVal = any> {
40
40
  remove(): SinglyLinkedListNode<NodeVal>;
41
41
  }
42
42
  export declare class SinglyLinkedList<NodeVal = any> {
43
+ /**
44
+ * The constructor initializes a linked list with the given arguments as nodes.
45
+ * @param {NodeVal[]} args - args is a rest parameter that allows the constructor to accept an arbitrary number of
46
+ * arguments of type NodeVal.
47
+ */
48
+ constructor(...args: NodeVal[]);
43
49
  protected _head: SinglyLinkedListNode<NodeVal> | null;
44
50
  get head(): SinglyLinkedListNode<NodeVal> | null;
45
51
  set head(value: SinglyLinkedListNode<NodeVal> | null);
@@ -49,12 +55,6 @@ export declare class SinglyLinkedList<NodeVal = any> {
49
55
  protected _size: number;
50
56
  get size(): number;
51
57
  set size(value: number);
52
- /**
53
- * The constructor initializes a linked list with the given arguments as nodes.
54
- * @param {NodeVal[]} args - args is a rest parameter that allows the constructor to accept an arbitrary number of
55
- * arguments of type NodeVal.
56
- */
57
- constructor(...args: NodeVal[]);
58
58
  /**
59
59
  * The `from` function in TypeScript creates a new SinglyLinkedList instance from an iterable object.
60
60
  * @param iterable - The `iterable` parameter is an object that can be iterated over, such as an array or a string. It
@@ -7,19 +7,15 @@
7
7
  */
8
8
  import type { PriorityQueueComparator, PriorityQueueDFSOrderPattern, PriorityQueueOptions } from '../types';
9
9
  export declare class PriorityQueue<T = number> {
10
- protected _nodes: T[];
11
- get nodes(): T[];
12
- /**
13
- * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
14
- */
15
- getNodes(): T[];
16
- protected set nodes(value: T[]);
17
10
  /**
18
11
  * The constructor initializes a priority queue with the given options, including an array of nodes and a comparator
19
12
  * function.
20
13
  * @param options - The `options` parameter is an object that contains the following properties:
21
14
  */
22
15
  constructor(options: PriorityQueueOptions<T>);
16
+ protected _nodes: T[];
17
+ get nodes(): T[];
18
+ protected set nodes(value: T[]);
23
19
  get size(): number;
24
20
  /**
25
21
  * The `heapify` function creates a new PriorityQueue instance and fixes the heap property.
@@ -37,6 +33,10 @@ export declare class PriorityQueue<T = number> {
37
33
  * @returns the result of calling the `isValid()` method on a new instance of the `PriorityQueue` class.
38
34
  */
39
35
  static isPriorityQueueified<T>(options: Omit<PriorityQueueOptions<T>, 'isFix'>): boolean;
36
+ /**
37
+ * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
38
+ */
39
+ getNodes(): T[];
40
40
  /**
41
41
  * The "add" function adds a node to the heap and ensures that the heap property is maintained.
42
42
  * @param {T} node - The parameter "node" is of type T, which means it can be any data type. It represents the node
@@ -67,12 +67,6 @@ var PriorityQueue = /** @class */ (function () {
67
67
  enumerable: false,
68
68
  configurable: true
69
69
  });
70
- /**
71
- * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
72
- */
73
- PriorityQueue.prototype.getNodes = function () {
74
- return this._nodes;
75
- };
76
70
  Object.defineProperty(PriorityQueue.prototype, "size", {
77
71
  get: function () {
78
72
  return this.nodes.length;
@@ -102,6 +96,12 @@ var PriorityQueue = /** @class */ (function () {
102
96
  PriorityQueue.isPriorityQueueified = function (options) {
103
97
  return new PriorityQueue(__assign(__assign({}, options), { isFix: true })).isValid();
104
98
  };
99
+ /**
100
+ * Starting from TypeScript version 5.0 and onwards, the use of distinct access modifiers for Getters and Setters is not permitted. As an alternative, to ensure compatibility, it is necessary to adopt a Java-style approach for Setters (using the same name as the property) while utilizing separate method names for Getters.
101
+ */
102
+ PriorityQueue.prototype.getNodes = function () {
103
+ return this._nodes;
104
+ };
105
105
  /**
106
106
  * The "add" function adds a node to the heap and ensures that the heap property is maintained.
107
107
  * @param {T} node - The parameter "node" is of type T, which means it can be any data type. It represents the node
@@ -9,6 +9,7 @@ import { DoublyLinkedList } from '../linked-list';
9
9
  export declare class Deque<T> extends DoublyLinkedList<T> {
10
10
  }
11
11
  export declare class ObjectDeque<T> {
12
+ constructor(capacity?: number);
12
13
  private _nodes;
13
14
  get nodes(): {
14
15
  [p: number]: T;
@@ -28,7 +29,6 @@ export declare class ObjectDeque<T> {
28
29
  private _size;
29
30
  get size(): number;
30
31
  protected set size(value: number);
31
- constructor(capacity?: number);
32
32
  addFirst(value: T): void;
33
33
  addLast(value: T): void;
34
34
  pollFirst(): T | undefined;
@@ -1,6 +1,3 @@
1
- /**
2
- * A function that emits a side effect and does not return anything.
3
- */
4
1
  export type ToThunkFn = () => ReturnType<TrlFn>;
5
2
  export type Thunk = () => ReturnType<ToThunkFn> & {
6
3
  __THUNK__: Symbol;
@@ -1,16 +1,2 @@
1
1
  "use strict";
2
- // export type JSONSerializable = {
3
- // [key: string]: any
4
- // }
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- // export type CaseType =
7
- // 'camel'
8
- // | 'snake'
9
- // | 'pascal'
10
- // | 'constant'
11
- // | 'kebab'
12
- // | 'lower'
13
- // | 'title'
14
- // | 'sentence'
15
- // | 'path'
16
- // | 'dot';
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- // import _ from 'lodash';
3
- // import type {AnyFunction, CaseType, JSONObject, JSONSerializable} from './types';
4
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -71,201 +69,6 @@ var uuidV4 = function () {
71
69
  });
72
70
  };
73
71
  exports.uuidV4 = uuidV4;
74
- // export const isObject = (object: string | JSONObject | boolean | AnyFunction | number) => object != null && typeof object === 'object';
75
- // export const deepObjectStrictEqual = (object1: JSONSerializable, object2: JSONSerializable) => {
76
- // const keys1 = Object.keys(object1);
77
- // const keys2 = Object.keys(object2);
78
- // if (keys1.length !== keys2.length) {
79
- // return false;
80
- // }
81
- // for (const key of keys1) {
82
- // const val1 = object1[key];
83
- // const val2 = object2[key];
84
- // const areObjects = isObject(val1) && isObject(val2);
85
- // if (
86
- // areObjects && !deepObjectStrictEqual(val1, val2) ||
87
- // !areObjects && val1 !== val2
88
- // ) {
89
- // return false;
90
- // }
91
- // }
92
- // return true;
93
- // };
94
- // export class StringUtil {
95
- // // camelCase
96
- // static toCamelCase(str: string) {
97
- // return _.camelCase(str);
98
- // }
99
- //
100
- // // snake_case
101
- // static toSnakeCase(str: string) {
102
- // return _.snakeCase(str);
103
- // }
104
- //
105
- // // PascalCase
106
- // static toPascalCase(str: string) {
107
- // return _.startCase(_.camelCase(str)).replace(/ /g, '');
108
- // }
109
- //
110
- // // CONSTANT_CASE
111
- // static toConstantCase(str: string) {
112
- // return _.upperCase(str).replace(/ /g, '_');
113
- // }
114
- //
115
- // // kebab-case
116
- // static toKebabCase(str: string) {
117
- // return _.kebabCase(str);
118
- // }
119
- //
120
- // // lowercase
121
- // static toLowerCase(str: string) {
122
- // return _.lowerCase(str).replace(/ /g, '');
123
- // }
124
- //
125
- // // Title Case
126
- // static toTitleCase(str: string) {
127
- // return _.startCase(_.camelCase(str));
128
- // }
129
- //
130
- // // Sentence case
131
- // static toSentenceCase(str: string) {
132
- // return _.upperFirst(_.lowerCase(str));
133
- // }
134
- //
135
- // // path/case
136
- // static toPathCase(str: string) {
137
- // return _.lowerCase(str).replace(/ /g, '/');
138
- // }
139
- //
140
- // // dot.case
141
- // static toDotCase(str: string) {
142
- // return _.lowerCase(str).replace(/ /g, '.');
143
- // }
144
- // }
145
- // export const deepKeysConvert = (obj: any, toType?: CaseType): any => {
146
- // const _toType = toType || 'snake';
147
- // if (Array.isArray(obj)) {
148
- // return obj.map(v => deepKeysConvert(v, _toType));
149
- // } else if (obj !== null && obj.constructor === Object) {
150
- // return Object.keys(obj).reduce(
151
- // (result, key) => {
152
- // let newKey = '';
153
- // switch (_toType) {
154
- // case 'camel':
155
- // newKey = StringUtil.toCamelCase(key);
156
- // break;
157
- // case 'snake':
158
- // newKey = StringUtil.toSnakeCase(key);
159
- // break;
160
- // case 'pascal':
161
- // newKey = StringUtil.toPascalCase(key);
162
- // break;
163
- // case 'constant':
164
- // newKey = StringUtil.toConstantCase(key);
165
- // break;
166
- // case 'kebab':
167
- // newKey = StringUtil.toKebabCase(key);
168
- // break;
169
- // case 'lower':
170
- // newKey = StringUtil.toLowerCase(key);
171
- // break;
172
- // case 'title':
173
- // newKey = StringUtil.toTitleCase(key);
174
- // break;
175
- // case 'sentence':
176
- // newKey = StringUtil.toSentenceCase(key);
177
- // break;
178
- // case 'path':
179
- // newKey = StringUtil.toPathCase(key);
180
- // break;
181
- // case 'dot':
182
- // newKey = StringUtil.toDotCase(key);
183
- // break;
184
- // default:
185
- // newKey = StringUtil.toDotCase(key);
186
- // break;
187
- // }
188
- // return {
189
- // ...result,
190
- // [newKey]: deepKeysConvert(obj[key], _toType),
191
- // };
192
- // },
193
- // {},
194
- // );
195
- // }
196
- // return obj;
197
- // };
198
- // export const deepRemoveByKey = (obj: any, keysToBeRemoved: string[]) => {
199
- // const result = _.transform(obj, function (result: JSONSerializable, value: any, key: string) {
200
- // if (_.isObject(value)) {
201
- // value = deepRemoveByKey(value, keysToBeRemoved);
202
- // }
203
- // if (!keysToBeRemoved.includes(key)) {
204
- // _.isArray(obj) ? result.push(value) : result[key] = value;
205
- // }
206
- // });
207
- // return result as typeof obj;
208
- // };
209
- // export const deepRenameKeys = (obj: JSONSerializable, keysMap: { [key in string]: string }) => {
210
- // return _.transform(obj, function (result: JSONSerializable, value: any, key: string | number) {
211
- // const currentKey = keysMap[key] || key;
212
- // result[currentKey] = _.isObject(value) ? deepRenameKeys(value, keysMap) : value;
213
- // });
214
- // };
215
- // export const deepReplaceValues = (obj: JSONSerializable, keyReducerMap: { [key in string]: (item: JSONSerializable) => any }) => {
216
- // const newObject = _.clone(obj) as JSONSerializable;
217
- // _.each(obj, (val: any, key: string) => {
218
- // for (const item in keyReducerMap) {
219
- // if (key === item) {
220
- // newObject[key] = keyReducerMap[item](newObject);
221
- // } else if (typeof (val) === 'object' || val instanceof Array) {
222
- // newObject[key] = deepReplaceValues(val, keyReducerMap);
223
- // }
224
- // }
225
- // });
226
- // return newObject;
227
- // };
228
- // TODO determine depth and pass root node as a param through callback
229
- // export const deepAdd = (obj: JSONSerializable, keyReducerMap: { [key in string]: (item: JSONSerializable) => any }, isItemRootParent?: boolean) => {
230
- // const newObject = _.clone(obj) as JSONObject | [];
231
- // if (_.isObject(newObject) && !_.isArray(newObject)) {
232
- // for (const item in keyReducerMap) {
233
- // newObject[item] = keyReducerMap[item](newObject);
234
- // }
235
- // }
236
- // _.each(obj, (val: any, key: string | number) => {
237
- // if (_.isObject(val)) {
238
- // for (const item in keyReducerMap) {
239
- // // @ts-ignore
240
- // newObject[key] = deepAdd(val, keyReducerMap, isItemRootParent);
241
- // }
242
- // }
243
- // });
244
- // return newObject;
245
- // };
246
- // const styleString = (color: string) => `color: ${color}; font-weight: bold`;
247
- // const styleHeader = (header: string) => `%c[${header}]`;
248
- // export const bunnyConsole = {
249
- // log: (headerLog = 'bunny', ...args: any[]) => {
250
- // return console.log(styleHeader(headerLog), styleString('black'), ...args);
251
- // },
252
- // warn: (headerLog = 'bunny', ...args: any[]) => {
253
- // return console.warn(styleHeader(headerLog), styleString('orange'), ...args);
254
- // },
255
- // error: (headerLog = 'bunny', ...args: any[]) => {
256
- // return console.error(styleHeader(headerLog), styleString('red'), ...args);
257
- // }
258
- // };
259
- // export const timeStart = () => {
260
- // return performance ? performance.now() : new Date().getTime();
261
- // };
262
- // export const timeEnd = (startTime: number, headerLog?: string, consoleConditionFn?: (timeSpent: number) => boolean) => {
263
- // const timeSpent = (performance ? performance.now() : new Date().getTime()) - startTime;
264
- // const isPassCondition = consoleConditionFn ? consoleConditionFn(timeSpent) : true;
265
- // if (isPassCondition) {
266
- // bunnyConsole.log(headerLog ? headerLog : 'time spent', timeSpent.toFixed(2));
267
- // }
268
- // };
269
72
  var arrayRemove = function (array, predicate) {
270
73
  var i = -1, len = array ? array.length : 0;
271
74
  var result = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-structure-typed",
3
- "version": "1.15.1",
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": {
@@ -8,7 +8,7 @@
8
8
  "test": "jest",
9
9
  "build:docs": "typedoc --out docs ./src",
10
10
  "deps:check": "dependency-cruiser src",
11
- "build:publish": "npm run test && npm run build && npm run build:docs && npm run publish"
11
+ "build:publish": "npm run test && npm run build && npm run build:docs && npm publish"
12
12
  },
13
13
  "repository": {
14
14
  "type": "git",
@@ -49,7 +49,6 @@
49
49
  "types": "dist/index.d.ts",
50
50
  "devDependencies": {
51
51
  "@types/jest": "^29.5.3",
52
- "@types/lodash": "^4.14.197",
53
52
  "@types/node": "^20.4.9",
54
53
  "dependency-cruiser": "^13.1.2",
55
54
  "jest": "^29.6.2",
@@ -58,6 +57,5 @@
58
57
  "typescript": "^4.9.5"
59
58
  },
60
59
  "dependencies": {
61
- "lodash": "^4.17.21"
62
60
  }
63
61
  }