typescript-ds-lib 0.1.2 → 0.1.3

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 CHANGED
@@ -3,7 +3,9 @@
3
3
 
4
4
  Native TypeScript data structure implementations without external dependencies.
5
5
 
6
- - Fast, Light and Tested
6
+ 1. Fast
7
+ 2. Native & Light
8
+ 3. Fully Tested
7
9
 
8
10
  ## Install
9
11
  ```
@@ -21,7 +23,8 @@ stack.push(2);
21
23
  stack.push(3);
22
24
 
23
25
  console.log(stack.top()); // 3
24
- console.log(stack.pop()); // 3
26
+ stack.pop();
27
+ console.log(stack.top()); // 2
25
28
  console.log(stack.size()); // 2
26
29
  ```
27
30
 
@@ -35,6 +38,7 @@ console.log(stack.size()); // 2
35
38
  - Deque
36
39
  - Set
37
40
  - Map
41
+ - Hash Table
38
42
 
39
43
 
40
44
  ## Contributions
package/dist/index.d.ts CHANGED
@@ -8,3 +8,4 @@ export { LinkedList } from './lib/linked-list';
8
8
  export { Set } from './lib/set';
9
9
  export { Map } from './lib/map';
10
10
  export { RedBlackTree } from './lib/red-black-tree';
11
+ export { HashTable } from './lib/hash-table';
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.RedBlackTree = exports.Map = exports.Set = exports.LinkedList = exports.Deque = exports.BinarySearchTree = exports.PriorityQueue = exports.Queue = exports.Stack = void 0;
17
+ exports.HashTable = exports.RedBlackTree = exports.Map = exports.Set = exports.LinkedList = exports.Deque = exports.BinarySearchTree = exports.PriorityQueue = exports.Queue = exports.Stack = void 0;
18
18
  __exportStar(require("./types"), exports);
19
19
  var stack_1 = require("./lib/stack");
20
20
  Object.defineProperty(exports, "Stack", { enumerable: true, get: function () { return stack_1.Stack; } });
@@ -34,4 +34,6 @@ var map_1 = require("./lib/map");
34
34
  Object.defineProperty(exports, "Map", { enumerable: true, get: function () { return map_1.Map; } });
35
35
  var red_black_tree_1 = require("./lib/red-black-tree");
36
36
  Object.defineProperty(exports, "RedBlackTree", { enumerable: true, get: function () { return red_black_tree_1.RedBlackTree; } });
37
+ var hash_table_1 = require("./lib/hash-table");
38
+ Object.defineProperty(exports, "HashTable", { enumerable: true, get: function () { return hash_table_1.HashTable; } });
37
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,uDAAqD;AAA5C,+GAAA,aAAa,OAAA;AACtB,+DAA4D;AAAnD,sHAAA,gBAAgB,OAAA;AACzB,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AACnB,iCAAgC;AAAvB,0FAAA,GAAG,OAAA;AACZ,iCAAgC;AAAvB,0FAAA,GAAG,OAAA;AACZ,uDAAoD;AAA3C,8GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,uDAAqD;AAA5C,+GAAA,aAAa,OAAA;AACtB,+DAA4D;AAAnD,sHAAA,gBAAgB,OAAA;AACzB,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AACnB,iCAAgC;AAAvB,0FAAA,GAAG,OAAA;AACZ,iCAAgC;AAAvB,0FAAA,GAAG,OAAA;AACZ,uDAAoD;AAA3C,8GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,uGAAA,SAAS,OAAA"}
@@ -0,0 +1,15 @@
1
+ import { HashTableTy } from '../types';
2
+ export declare class HashTable<K, V> implements HashTableTy<K, V> {
3
+ private table;
4
+ private count;
5
+ private readonly capacity;
6
+ constructor(capacity?: number);
7
+ private hash;
8
+ insert(key: K, value: V): void;
9
+ get(key: K): V | undefined;
10
+ remove(key: K): boolean;
11
+ private keysEqual;
12
+ size(): number;
13
+ empty(): boolean;
14
+ clear(): void;
15
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HashTable = void 0;
4
+ class HashNode {
5
+ key;
6
+ value;
7
+ next;
8
+ constructor(key, value) {
9
+ this.key = key;
10
+ this.value = value;
11
+ this.next = null;
12
+ }
13
+ }
14
+ class HashTable {
15
+ table;
16
+ count;
17
+ capacity;
18
+ constructor(capacity = 16) {
19
+ this.table = new Array(capacity).fill(null);
20
+ this.count = 0;
21
+ this.capacity = capacity;
22
+ }
23
+ hash(key) {
24
+ let stringKey;
25
+ if (key === null || key === undefined) {
26
+ stringKey = 'null';
27
+ }
28
+ else if (typeof key === 'object') {
29
+ if (key instanceof Date) {
30
+ stringKey = key.getTime().toString();
31
+ }
32
+ else if (key instanceof RegExp) {
33
+ stringKey = key.toString();
34
+ }
35
+ stringKey = JSON.stringify(key);
36
+ }
37
+ else if (typeof key === 'symbol') {
38
+ stringKey = key.toString();
39
+ }
40
+ else if (typeof key === 'function') {
41
+ stringKey = key.toString();
42
+ }
43
+ else {
44
+ stringKey = String(key);
45
+ }
46
+ let hash = 0;
47
+ // DJB2 hash algorithm
48
+ for (let i = 0; i < stringKey.length; i++) {
49
+ hash = ((hash << 5) + hash) + stringKey.charCodeAt(i);
50
+ hash = hash >>> 0; // Convert to 32-bit unsigned integer
51
+ }
52
+ return hash % this.capacity;
53
+ }
54
+ insert(key, value) {
55
+ const index = this.hash(key);
56
+ const newNode = new HashNode(key, value);
57
+ if (!this.table[index]) {
58
+ this.table[index] = newNode;
59
+ this.count++;
60
+ return;
61
+ }
62
+ let current = this.table[index];
63
+ while (current) {
64
+ if (this.keysEqual(current.key, key)) {
65
+ current.value = value;
66
+ return;
67
+ }
68
+ if (!current.next) {
69
+ current.next = newNode;
70
+ this.count++;
71
+ return;
72
+ }
73
+ current = current.next;
74
+ }
75
+ }
76
+ get(key) {
77
+ const index = this.hash(key);
78
+ let current = this.table[index];
79
+ while (current) {
80
+ if (this.keysEqual(current.key, key)) {
81
+ return current.value;
82
+ }
83
+ current = current.next;
84
+ }
85
+ return undefined;
86
+ }
87
+ remove(key) {
88
+ const index = this.hash(key);
89
+ let current = this.table[index];
90
+ let prev = null;
91
+ while (current) {
92
+ if (this.keysEqual(current.key, key)) {
93
+ if (prev) {
94
+ prev.next = current.next;
95
+ }
96
+ else {
97
+ this.table[index] = current.next;
98
+ }
99
+ this.count--;
100
+ return true;
101
+ }
102
+ prev = current;
103
+ current = current.next;
104
+ }
105
+ return false;
106
+ }
107
+ keysEqual(key1, key2) {
108
+ if (key1 === key2)
109
+ return true;
110
+ if (key1 == null || key2 == null)
111
+ return false;
112
+ if (typeof key1 !== 'object' && typeof key2 !== 'object') {
113
+ return key1 === key2;
114
+ }
115
+ if (key1 instanceof Date && key2 instanceof Date) {
116
+ return key1.getTime() === key2.getTime();
117
+ }
118
+ if (key1 instanceof RegExp && key2 instanceof RegExp) {
119
+ return key1.toString() === key2.toString();
120
+ }
121
+ if (Array.isArray(key1) && Array.isArray(key2)) {
122
+ return key1.length === key2.length &&
123
+ key1.every((val, idx) => this.keysEqual(val, key2[idx]));
124
+ }
125
+ if (typeof key1 === 'object' && typeof key2 === 'object') {
126
+ const keys1 = Object.keys(key1);
127
+ const keys2 = Object.keys(key2);
128
+ return keys1.length === keys2.length &&
129
+ keys1.every(k => k in key2 && this.keysEqual(key1[k], key2[k]));
130
+ }
131
+ return false;
132
+ }
133
+ size() {
134
+ return this.count;
135
+ }
136
+ empty() {
137
+ return this.count === 0;
138
+ }
139
+ clear() {
140
+ this.table = new Array(this.capacity).fill(null);
141
+ this.count = 0;
142
+ }
143
+ }
144
+ exports.HashTable = HashTable;
145
+ //# sourceMappingURL=hash-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-table.js","sourceRoot":"","sources":["../../lib/hash-table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hash_table_1 = require("../lib/hash-table");
4
+ describe('HashTable', () => {
5
+ let hashTable;
6
+ beforeEach(() => {
7
+ hashTable = new hash_table_1.HashTable();
8
+ });
9
+ test('should start empty', () => {
10
+ expect(hashTable.empty()).toBe(true);
11
+ expect(hashTable.size()).toBe(0);
12
+ });
13
+ test('should insert and retrieve values', () => {
14
+ hashTable.insert('one', 1);
15
+ hashTable.insert('two', 2);
16
+ hashTable.insert('three', 3);
17
+ expect(hashTable.get('one')).toBe(1);
18
+ expect(hashTable.get('two')).toBe(2);
19
+ expect(hashTable.get('three')).toBe(3);
20
+ expect(hashTable.size()).toBe(3);
21
+ });
22
+ test('should handle collisions', () => {
23
+ // Force collisions by using a small capacity
24
+ const smallTable = new hash_table_1.HashTable(2);
25
+ smallTable.insert('a', 1);
26
+ smallTable.insert('b', 2);
27
+ smallTable.insert('c', 3);
28
+ smallTable.insert('d', 4);
29
+ expect(smallTable.get('a')).toBe(1);
30
+ expect(smallTable.get('b')).toBe(2);
31
+ expect(smallTable.get('c')).toBe(3);
32
+ expect(smallTable.get('d')).toBe(4);
33
+ });
34
+ test('should update existing keys', () => {
35
+ hashTable.insert('key', 1);
36
+ expect(hashTable.get('key')).toBe(1);
37
+ hashTable.insert('key', 2);
38
+ expect(hashTable.get('key')).toBe(2);
39
+ expect(hashTable.size()).toBe(1);
40
+ });
41
+ test('should remove elements', () => {
42
+ hashTable.insert('one', 1);
43
+ hashTable.insert('two', 2);
44
+ expect(hashTable.remove('one')).toBe(true);
45
+ expect(hashTable.get('one')).toBeUndefined();
46
+ expect(hashTable.size()).toBe(1);
47
+ expect(hashTable.remove('nonexistent')).toBe(false);
48
+ });
49
+ test('should clear the table', () => {
50
+ hashTable.insert('one', 1);
51
+ hashTable.insert('two', 2);
52
+ hashTable.insert('three', 3);
53
+ hashTable.clear();
54
+ expect(hashTable.empty()).toBe(true);
55
+ expect(hashTable.size()).toBe(0);
56
+ expect(hashTable.get('one')).toBeUndefined();
57
+ });
58
+ test('should handle different key types', () => {
59
+ const mixedTable = new hash_table_1.HashTable();
60
+ mixedTable.insert(42, 'number');
61
+ mixedTable.insert(true, 'boolean');
62
+ mixedTable.insert({ id: 1 }, 'object');
63
+ mixedTable.insert([1, 2, 3], 'array');
64
+ expect(mixedTable.get(42)).toBe('number');
65
+ expect(mixedTable.get(true)).toBe('boolean');
66
+ expect(mixedTable.get({ id: 1 })).toBe('object');
67
+ expect(mixedTable.get([1, 2, 3])).toBe('array');
68
+ });
69
+ });
70
+ //# sourceMappingURL=hash-table.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-table.test.js","sourceRoot":"","sources":["../../tests/hash-table.test.ts"],"names":[],"mappings":"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"}
@@ -80,3 +80,11 @@ export interface RedBlackTreeTy<K, V> {
80
80
  size(): number;
81
81
  clear(): void;
82
82
  }
83
+ export interface HashTableTy<K, V> {
84
+ insert(key: K, value: V): void;
85
+ get(key: K): V | undefined;
86
+ remove(key: K): boolean;
87
+ size(): number;
88
+ empty(): boolean;
89
+ clear(): void;
90
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-ds-lib",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "A collection of TypeScript data structure implementations",
5
5
  "author": "Artiom Baloian <artiom.baloian@gmail.com>",
6
6
  "license": "MIT",