list-toolkit 2.2.6 → 2.3.1
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 +37 -54
- package/llms-full.txt +743 -0
- package/llms.txt +100 -0
- package/package.json +39 -30
- package/src/cache/cache-fifo.d.ts +6 -0
- package/src/cache/cache-fifo.js +7 -4
- package/src/cache/cache-lfu.d.ts +18 -0
- package/src/cache/cache-lfu.js +18 -6
- package/src/cache/cache-lru.d.ts +74 -0
- package/src/cache/cache-lru.js +60 -5
- package/src/cache/cache-random.d.ts +20 -0
- package/src/cache/cache-random.js +17 -6
- package/src/cache/decorator.d.ts +46 -0
- package/src/cache/decorator.js +26 -2
- package/src/cache.d.ts +13 -0
- package/src/cache.js +7 -2
- package/src/ext-list.d.ts +3 -0
- package/src/ext-list.js +0 -2
- package/src/ext-slist.d.ts +3 -0
- package/src/ext-slist.js +0 -2
- package/src/ext-value-list.d.ts +3 -0
- package/src/ext-value-list.js +0 -2
- package/src/ext-value-slist.d.ts +3 -0
- package/src/ext-value-slist.js +0 -2
- package/src/heap/basics.d.ts +89 -0
- package/src/heap/basics.js +42 -5
- package/src/heap/leftist-heap.d.ts +107 -0
- package/src/heap/leftist-heap.js +54 -4
- package/src/heap/min-heap.d.ts +264 -0
- package/src/heap/min-heap.js +186 -2
- package/src/heap/skew-heap.d.ts +105 -0
- package/src/heap/skew-heap.js +54 -2
- package/src/heap.d.ts +3 -0
- package/src/heap.js +0 -2
- package/src/list/basics.d.ts +43 -0
- package/src/list/basics.js +26 -8
- package/src/list/core.d.ts +271 -0
- package/src/list/core.js +162 -7
- package/src/list/ext-value.d.ts +253 -0
- package/src/list/ext-value.js +40 -6
- package/src/list/ext.d.ts +242 -0
- package/src/list/ext.js +149 -11
- package/src/list/nodes.d.ts +336 -0
- package/src/list/nodes.js +141 -3
- package/src/list/ptr.d.ts +72 -0
- package/src/list/ptr.js +44 -2
- package/src/list/value.d.ts +292 -0
- package/src/list/value.js +47 -6
- package/src/list-helpers.d.ts +44 -0
- package/src/list-helpers.js +36 -3
- package/src/list-utils.d.ts +141 -0
- package/src/list-utils.js +89 -3
- package/src/list.d.ts +3 -0
- package/src/list.js +0 -2
- package/src/meta-utils.d.ts +212 -0
- package/src/meta-utils.js +152 -1
- package/src/nt-utils.d.ts +91 -0
- package/src/nt-utils.js +65 -4
- package/src/queue.d.ts +74 -0
- package/src/queue.js +28 -2
- package/src/slist/basics.d.ts +47 -0
- package/src/slist/basics.js +23 -8
- package/src/slist/core.d.ts +251 -0
- package/src/slist/core.js +158 -10
- package/src/slist/ext-value.d.ts +188 -0
- package/src/slist/ext-value.js +36 -7
- package/src/slist/ext.d.ts +182 -0
- package/src/slist/ext.js +115 -13
- package/src/slist/nodes.d.ts +361 -0
- package/src/slist/nodes.js +156 -3
- package/src/slist/ptr.d.ts +73 -0
- package/src/slist/ptr.js +45 -2
- package/src/slist/value.d.ts +246 -0
- package/src/slist/value.js +38 -6
- package/src/slist.d.ts +3 -0
- package/src/slist.js +0 -2
- package/src/stack.d.ts +59 -0
- package/src/stack.js +29 -3
- package/src/tree/splay-tree.d.ts +151 -0
- package/src/tree/splay-tree.js +94 -3
- package/src/value-list.d.ts +3 -0
- package/src/value-list.js +0 -2
- package/src/value-slist.d.ts +3 -0
- package/src/value-slist.js +0 -2
- package/cjs/cache/cache-fifo.js +0 -37
- package/cjs/cache/cache-lfu.js +0 -76
- package/cjs/cache/cache-lru.js +0 -100
- package/cjs/cache/cache-random.js +0 -77
- package/cjs/cache/decorator.js +0 -47
- package/cjs/cache.js +0 -27
- package/cjs/ext-list.js +0 -21
- package/cjs/ext-slist.js +0 -21
- package/cjs/ext-value-list.js +0 -21
- package/cjs/ext-value-slist.js +0 -21
- package/cjs/heap/basics.js +0 -63
- package/cjs/heap/leftist-heap.js +0 -124
- package/cjs/heap/min-heap.js +0 -294
- package/cjs/heap/skew-heap.js +0 -114
- package/cjs/heap.js +0 -21
- package/cjs/list/basics.js +0 -88
- package/cjs/list/core.js +0 -305
- package/cjs/list/ext-value.js +0 -88
- package/cjs/list/ext.js +0 -356
- package/cjs/list/nodes.js +0 -240
- package/cjs/list/ptr.js +0 -61
- package/cjs/list/value.js +0 -99
- package/cjs/list-helpers.js +0 -91
- package/cjs/list-utils.js +0 -141
- package/cjs/list.js +0 -21
- package/cjs/meta-utils.js +0 -171
- package/cjs/nt-utils.js +0 -132
- package/cjs/package.json +0 -1
- package/cjs/queue.js +0 -58
- package/cjs/slist/basics.js +0 -71
- package/cjs/slist/core.js +0 -362
- package/cjs/slist/ext-value.js +0 -82
- package/cjs/slist/ext.js +0 -336
- package/cjs/slist/nodes.js +0 -276
- package/cjs/slist/ptr.js +0 -87
- package/cjs/slist/value.js +0 -90
- package/cjs/slist.js +0 -21
- package/cjs/stack.js +0 -55
- package/cjs/tree/splay-tree.js +0 -362
- package/cjs/value-list.js +0 -21
- package/cjs/value-slist.js +0 -21
package/README.md
CHANGED
|
@@ -3,50 +3,31 @@
|
|
|
3
3
|
[npm-img]: https://img.shields.io/npm/v/list-toolkit.svg
|
|
4
4
|
[npm-url]: https://npmjs.org/package/list-toolkit
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
suitable to use in all environments including browsers.
|
|
6
|
+
Efficient list-based data structures for JavaScript.
|
|
7
|
+
Pure ESM, zero dependencies, works in Node.js, Bun, Deno, and browsers.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
Data structures included:
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* Various list-based data structures:
|
|
20
|
-
* Caches with various eviction algorithms: least recently used (LRU), least frequently used (LFU), first in first out (FIFO), and random.
|
|
21
|
-
* A decorator is provided to decorate functions, methods, and getters with a cache of your choice.
|
|
22
|
-
* Queue: an adapter for lists.
|
|
23
|
-
* Numerous list utilities.
|
|
11
|
+
- **Linked lists** — doubly and singly linked, circular. Node-based (link properties on your objects) or value-based (wraps values in nodes). Hosted (sentinel head) or headless (external pointer).
|
|
12
|
+
- **NT list converters** — convert null-terminated lists to/from circular lists in place.
|
|
13
|
+
- **Heaps** — min heap, leftist heap, skew heap.
|
|
14
|
+
- **Caches** — LRU, LFU, FIFO, random eviction. Includes a decorator for functions, methods, and getters.
|
|
15
|
+
- **Queue and Stack** — list-backed adapters.
|
|
16
|
+
- **Splay tree** — self-adjusting binary search tree.
|
|
17
|
+
- **Utilities** — push/append values, find, remove, validate, and more.
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
can be used. The toolkit provides a few utilities that you would write yourself if you wanted to use them.
|
|
19
|
+
Works with your existing linked lists — no wrapper objects required.
|
|
27
20
|
|
|
28
|
-
|
|
21
|
+
- Flexible, efficient, simple.
|
|
22
|
+
- Zero dependencies, no surprises.
|
|
23
|
+
- Pay only for what you use.
|
|
24
|
+
- Usable as a foundation for other data structures.
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
* No dependencies. No unexpected surprises.
|
|
32
|
-
* You never pay for what you don't use.
|
|
33
|
-
* Suitable for all environments.
|
|
34
|
-
* Should be usable with already existing lists.
|
|
35
|
-
* Could be used as a foundation for other list-based data structures.
|
|
26
|
+
**Read all about the implemented ideas in the [Backgrounder](https://github.com/uhop/list-toolkit/wiki/Backgrounder).**
|
|
36
27
|
|
|
37
|
-
|
|
28
|
+
All lists share a consistent API: create from iterables, push/pop, insert/extract/remove, forward and reverse iterators, sort, reverse, and customizable link names.
|
|
38
29
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
* Creating from existing objects.
|
|
42
|
-
* Adding, inserting, extracting and removing nodes.
|
|
43
|
-
* Forward and reverse iterators.
|
|
44
|
-
* General manipulations like reversing and sorting.
|
|
45
|
-
* Link names for the next and previous links (for doubly linked lists) are customizable.
|
|
46
|
-
|
|
47
|
-
All facilities are efficient, well-debugged, and battle-tested.
|
|
48
|
-
|
|
49
|
-
**All documentation is in the [wiki](https://github.com/uhop/list-toolkit/wiki).**
|
|
30
|
+
**Full documentation: [wiki](https://github.com/uhop/list-toolkit/wiki).**
|
|
50
31
|
|
|
51
32
|
## Installation
|
|
52
33
|
|
|
@@ -56,9 +37,9 @@ npm install list-toolkit
|
|
|
56
37
|
|
|
57
38
|
## Introduction
|
|
58
39
|
|
|
59
|
-
|
|
40
|
+
See the [wiki](https://github.com/uhop/list-toolkit/wiki) for full documentation. Quick examples below.
|
|
60
41
|
|
|
61
|
-
Value lists
|
|
42
|
+
Value lists wrap arbitrary values:
|
|
62
43
|
|
|
63
44
|
```js
|
|
64
45
|
import ValueList from 'list-toolkit/value-list.js';
|
|
@@ -79,7 +60,7 @@ for (const value of list) {
|
|
|
79
60
|
list.pushBack(4);
|
|
80
61
|
list.pushFront(0);
|
|
81
62
|
|
|
82
|
-
console.log(list.popFront()
|
|
63
|
+
console.log(list.popFront()); // 0
|
|
83
64
|
console.log(list.front.value); // 1
|
|
84
65
|
```
|
|
85
66
|
|
|
@@ -92,7 +73,7 @@ class Person {
|
|
|
92
73
|
constructor(name) {
|
|
93
74
|
this.name = name;
|
|
94
75
|
}
|
|
95
|
-
}
|
|
76
|
+
}
|
|
96
77
|
|
|
97
78
|
const john = new Person('John'),
|
|
98
79
|
jane = new Person('Jane'),
|
|
@@ -126,14 +107,14 @@ for (const node of people) {
|
|
|
126
107
|
}
|
|
127
108
|
|
|
128
109
|
// let's extract all people from Jill to Jim
|
|
129
|
-
const ji = people.
|
|
110
|
+
const ji = people.extractRange({from: jill, to: jim});
|
|
130
111
|
for (const node of people) console.log(node.name); // Jane, John
|
|
131
|
-
for (const node of ji) console.log(node.name); //
|
|
112
|
+
for (const node of ji) console.log(node.name); // Jill, Jim
|
|
132
113
|
|
|
133
114
|
// add them back:
|
|
134
115
|
people.append(ji);
|
|
135
116
|
for (const node of people.getReverseIterator()) {
|
|
136
|
-
console.log(node.name); //
|
|
117
|
+
console.log(node.name); // Jim, Jill, John, Jane
|
|
137
118
|
}
|
|
138
119
|
ji.isEmpty === true;
|
|
139
120
|
|
|
@@ -146,15 +127,17 @@ BSD 3-Clause "New" or "Revised" License. See the LICENSE file for details.
|
|
|
146
127
|
|
|
147
128
|
## Release History
|
|
148
129
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
130
|
+
- 2.3.1 _Bugfixes. Improved TS typing tests. Updated docs. Updated dev dependencies._
|
|
131
|
+
- 2.3.0 _Added TypeScript declarations for all modules. Added JSDoc. Removed CJS build. Bugfixes. Added missing methods._
|
|
132
|
+
- 2.2.6 _Updated dev dependencies._
|
|
133
|
+
- 2.2.5 _Updated dev dependencies._
|
|
134
|
+
- 2.2.4 _Updated dev dependencies._
|
|
135
|
+
- 2.2.3 _Updated dev dependencies._
|
|
136
|
+
- 2.2.2 _Updated dev dependencies._
|
|
137
|
+
- 2.2.1 _Technical release: updated deps, added more tests._
|
|
138
|
+
- 2.2.0 _Added leftist and skew heaps._
|
|
139
|
+
- 2.1.1 _Allowed functions to be used as nodes. Updated deps._
|
|
140
|
+
- 2.1.0 _Added splay tree. Updated deps._
|
|
141
|
+
- 2.0.0 _New major release._
|
|
159
142
|
|
|
160
143
|
For more info consult full [release notes](https://github.com/uhop/list-toolkit/wiki/Release-notes).
|