typescript-ds-lib 0.4.0 → 0.4.6

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 (45) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -7
  3. package/dist/algorithms/binary-search.d.ts +14 -0
  4. package/dist/algorithms/binary-search.js +36 -0
  5. package/dist/algorithms/binary-search.js.map +1 -0
  6. package/dist/algorithms/shuffle.d.ts +1 -0
  7. package/dist/algorithms/shuffle.js +20 -0
  8. package/dist/algorithms/shuffle.js.map +1 -0
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.js +9 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/lib/binary-search-tree.js +2 -2
  13. package/dist/lib/binary-search-tree.js.map +1 -1
  14. package/dist/lib/deque.js.map +1 -1
  15. package/dist/lib/graph/base.d.ts +167 -0
  16. package/dist/lib/graph/base.js +233 -0
  17. package/dist/lib/graph/base.js.map +1 -0
  18. package/dist/lib/graph/linked-list-graph.d.ts +18 -0
  19. package/dist/lib/graph/linked-list-graph.js +71 -0
  20. package/dist/lib/graph/linked-list-graph.js.map +1 -0
  21. package/dist/lib/graph/matrix-graph.d.ts +18 -0
  22. package/dist/lib/graph/matrix-graph.js +102 -0
  23. package/dist/lib/graph/matrix-graph.js.map +1 -0
  24. package/dist/lib/hash-table.js.map +1 -1
  25. package/dist/lib/hash-utils.js +3 -2
  26. package/dist/lib/hash-utils.js.map +1 -1
  27. package/dist/lib/heap.js +2 -4
  28. package/dist/lib/heap.js.map +1 -1
  29. package/dist/lib/linked-list.js.map +1 -1
  30. package/dist/lib/map.js.map +1 -1
  31. package/dist/lib/matrix.js +14 -6
  32. package/dist/lib/matrix.js.map +1 -1
  33. package/dist/lib/priority-queue.js.map +1 -1
  34. package/dist/lib/queue.js.map +1 -1
  35. package/dist/lib/red-black-tree.js +1 -2
  36. package/dist/lib/red-black-tree.js.map +1 -1
  37. package/dist/lib/set.js.map +1 -1
  38. package/dist/lib/stack.d.ts +1 -1
  39. package/dist/lib/stack.js.map +1 -1
  40. package/dist/lib/utils.js +13 -17
  41. package/dist/lib/utils.js.map +1 -1
  42. package/package.json +10 -6
  43. package/dist/lib/graph.d.ts +0 -14
  44. package/dist/lib/graph.js +0 -3
  45. package/dist/lib/graph.js.map +0 -1
package/dist/lib/utils.js CHANGED
@@ -11,23 +11,26 @@ class Utils {
11
11
  if (typeof key1.equals === 'function') {
12
12
  return key1.equals(key2);
13
13
  }
14
- const type1 = typeof key1;
15
- const type2 = typeof key2;
16
- // Handle primitives
17
- if (type1 !== 'object' && type2 !== 'object') {
18
- if (type1 === 'number' && type2 === 'number') {
19
- return key1 === key2 || (isNaN(key1) && isNaN(key2));
20
- }
21
- return key1 === key2;
14
+ // Handle NaN values
15
+ if (typeof key1 === 'number' && typeof key2 === 'number') {
16
+ // NaN is the only value that isn't equal to itself.
17
+ return key1 === key2 || (isNaN(key1) && isNaN(key2));
22
18
  }
23
19
  // Handle special object types
24
20
  if (key1 instanceof Date) {
25
- return key2 instanceof Date &&
26
- (key1.getTime() === key2.getTime() || (isNaN(key1.getTime()) && isNaN(key2.getTime())));
21
+ return (key2 instanceof Date &&
22
+ (key1.getTime() === key2.getTime() || (isNaN(key1.getTime()) && isNaN(key2.getTime()))));
27
23
  }
28
24
  if (key1 instanceof RegExp) {
29
25
  return key2 instanceof RegExp && key1.toString() === key2.toString();
30
26
  }
27
+ // Handle plain objects
28
+ if (typeof key1 === 'object' && typeof key2 === 'object') {
29
+ const keys1 = Object.keys(key1);
30
+ const keys2 = Object.keys(key2);
31
+ return (keys1.length === keys2.length &&
32
+ keys1.every((k) => k in key2 && Utils.equals(key1[k], key2[k])));
33
+ }
31
34
  if (Array.isArray(key1)) {
32
35
  if (!Array.isArray(key2) || key1.length !== key2.length)
33
36
  return false;
@@ -37,13 +40,6 @@ class Utils {
37
40
  }
38
41
  return true;
39
42
  }
40
- // Handle plain objects
41
- if (typeof key1 === 'object' && typeof key2 === 'object') {
42
- const keys1 = Object.keys(key1);
43
- const keys2 = Object.keys(key2);
44
- return keys1.length === keys2.length &&
45
- keys1.every(k => k in key2 && Utils.equals(key1[k], key2[k]));
46
- }
47
43
  return false;
48
44
  }
49
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IAChB,MAAM,CAAC,MAAM,CAAI,IAAO,EAAE,IAAO;QAC/B,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,IAAI,KAAK,IAAI,CAAC;QAEvD,iCAAiC;QACjC,IAAI,OAAQ,IAAY,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAQ,IAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC;QAC1B,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC;QAE1B,oBAAoB;QACpB,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,IAAI,KAAK,CAAC,IAAc,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,IAAI,KAAK,IAAI,CAAC;QACvB,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,YAAY,IAAI;gBACzB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAC3B,OAAO,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACpD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBAClC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,CAAE,IAAY,CAAC,CAAC,CAAC,EAAG,IAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAhDD,sBAgDC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IAChB,MAAM,CAAC,MAAM,CAAI,IAAO,EAAE,IAAO;QAC/B,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,IAAI,KAAK,IAAI,CAAC;QAEvD,iCAAiC;QACjC,IAAI,OAAQ,IAAY,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAQ,IAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzD,oDAAoD;YACpD,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,IAAI,KAAK,CAAC,IAAc,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YACzB,OAAO,CACL,IAAI,YAAY,IAAI;gBACpB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CACxF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAC3B,OAAO,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,CAAE,IAAY,CAAC,CAAC,CAAC,EAAG,IAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACpD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA/CD,sBA+CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-ds-lib",
3
- "version": "0.4.0",
3
+ "version": "0.4.6",
4
4
  "description": "A collection of TypeScript data structure implementations",
5
5
  "author": "Artiom Baloian <artiom.baloian@gmail.com>",
6
6
  "license": "MIT",
@@ -13,6 +13,7 @@
13
13
  ],
14
14
  "scripts": {
15
15
  "build": "rm -rf dist && tsc",
16
+ "format": "prettier --write \"lib/**/*.ts\" \"tests/**/*.ts\"",
16
17
  "prepare": "npm run build",
17
18
  "test": "rm -rf dist && tsc && jest",
18
19
  "benchmark": "ts-node benchmarks/run.ts"
@@ -22,11 +23,11 @@
22
23
  "url": "https://github.com/baloian/typescript-ds.git"
23
24
  },
24
25
  "devDependencies": {
25
- "ts-node": "^10.9.2",
26
26
  "@types/jest": "^29.5.14",
27
- "@types/node": "^22.10.1",
28
- "ts-jest": "^29.2.5",
29
- "typescript": "^5.7.2"
27
+ "@types/node": "^25.0.3",
28
+ "ts-jest": "^29.4.1",
29
+ "ts-node": "^10.9.2",
30
+ "typescript": "^5.9.3"
30
31
  },
31
32
  "keywords": [
32
33
  "typescript",
@@ -43,5 +44,8 @@
43
44
  "set",
44
45
  "map",
45
46
  "matrix"
46
- ]
47
+ ],
48
+ "dependencies": {
49
+ "prettier": "^3.6.2"
50
+ }
47
51
  }
@@ -1,14 +0,0 @@
1
- export interface Graph<V, W> {
2
- addVertex(vertex: V): void;
3
- removeVertex(vertex: V): void;
4
- addEdge(from: V, to: V, weight?: W): void;
5
- removeEdge(from: V, to: V): void;
6
- getNeighbors(vertex: V): V[];
7
- getEdgeWeight(from: V, to: V): W;
8
- getVertices(): V[];
9
- hasVertex(vertex: V): boolean;
10
- hasEdge(from: V, to: V): boolean;
11
- vertexCount(): number;
12
- edgeCount(): number;
13
- clear(): void;
14
- }
package/dist/lib/graph.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../lib/graph.ts"],"names":[],"mappings":""}