@blackglory/structures
Advanced tools
Comparing version 0.11.6 to 0.11.7
@@ -14,2 +14,5 @@ export * from './box'; | ||
export * from './trie-map'; | ||
export * from './string-trie-map'; | ||
export { RadixTree } from './radix-tree'; | ||
export { StringRadixTree } from './string-radix-tree'; | ||
export * from './sparse-set'; | ||
@@ -16,0 +19,0 @@ export * from './sparse-map'; |
@@ -17,3 +17,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DynamicTypedArray = void 0; | ||
exports.DynamicTypedArray = exports.StringRadixTree = exports.RadixTree = void 0; | ||
__exportStar(require("./box"), exports); | ||
@@ -32,2 +32,7 @@ __exportStar(require("./cons"), exports); | ||
__exportStar(require("./trie-map"), exports); | ||
__exportStar(require("./string-trie-map"), exports); | ||
var radix_tree_1 = require("./radix-tree"); | ||
Object.defineProperty(exports, "RadixTree", { enumerable: true, get: function () { return radix_tree_1.RadixTree; } }); | ||
var string_radix_tree_1 = require("./string-radix-tree"); | ||
Object.defineProperty(exports, "StringRadixTree", { enumerable: true, get: function () { return string_radix_tree_1.StringRadixTree; } }); | ||
__exportStar(require("./sparse-set"), exports); | ||
@@ -34,0 +39,0 @@ __exportStar(require("./sparse-map"), exports); |
@@ -21,9 +21,9 @@ "use strict"; | ||
yield* dfs(this.root, []); | ||
function* dfs(node, paths) { | ||
for (const [path, childNode] of node.children) { | ||
const newPaths = [...paths, path]; | ||
function* dfs(node, path) { | ||
for (const [subPath, childNode] of node.children) { | ||
const newPath = [...path, subPath]; | ||
if ((0, extra_utils_1.isntUndefined)(childNode.value)) { | ||
yield [newPaths, childNode.value]; | ||
yield [newPath, childNode.value]; | ||
} | ||
yield* dfs(childNode, newPaths); | ||
yield* dfs(childNode, newPath); | ||
} | ||
@@ -40,7 +40,7 @@ } | ||
let node = this.root; | ||
for (const part of key) { | ||
if (!node.children.has(part)) { | ||
node.children.set(part, new TrieNode()); | ||
for (const unitOfKey of key) { | ||
if (!node.children.has(unitOfKey)) { | ||
node.children.set(unitOfKey, new TrieNode()); | ||
} | ||
node = node.children.get(part); | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -52,5 +52,5 @@ node.value = value; | ||
let node = this.root; | ||
for (const part of key) { | ||
if (node.children.has(part)) { | ||
node = node.children.get(part); | ||
for (const unitOfKey of key) { | ||
if (node.children.has(unitOfKey)) { | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -65,5 +65,5 @@ else { | ||
let node = this.root; | ||
for (const part of key) { | ||
if (node.children.has(part)) { | ||
node = node.children.get(part); | ||
for (const unitOfKey of key) { | ||
if (node.children.has(unitOfKey)) { | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -79,6 +79,6 @@ else { | ||
let node = this.root; | ||
for (const part of key) { | ||
if (node.children.has(part)) { | ||
for (const unitOfKey of key) { | ||
if (node.children.has(unitOfKey)) { | ||
parentNodes.push(node); | ||
node = node.children.get(part); | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -91,4 +91,4 @@ else { | ||
if (node.children.size === 0) { | ||
for (const [part, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) { | ||
parentNode.children.delete(part); | ||
for (const [unitOfKey, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) { | ||
parentNode.children.delete(unitOfKey); | ||
if (parentNode.children.size !== 0) | ||
@@ -95,0 +95,0 @@ break; |
@@ -14,2 +14,5 @@ export * from './box'; | ||
export * from './trie-map'; | ||
export * from './string-trie-map'; | ||
export { RadixTree } from './radix-tree'; | ||
export { StringRadixTree } from './string-radix-tree'; | ||
export * from './sparse-set'; | ||
@@ -16,0 +19,0 @@ export * from './sparse-map'; |
@@ -17,3 +17,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DynamicTypedArray = void 0; | ||
exports.DynamicTypedArray = exports.StringRadixTree = exports.RadixTree = void 0; | ||
__exportStar(require("./box"), exports); | ||
@@ -32,2 +32,7 @@ __exportStar(require("./cons"), exports); | ||
__exportStar(require("./trie-map"), exports); | ||
__exportStar(require("./string-trie-map"), exports); | ||
var radix_tree_1 = require("./radix-tree"); | ||
Object.defineProperty(exports, "RadixTree", { enumerable: true, get: function () { return radix_tree_1.RadixTree; } }); | ||
var string_radix_tree_1 = require("./string-radix-tree"); | ||
Object.defineProperty(exports, "StringRadixTree", { enumerable: true, get: function () { return string_radix_tree_1.StringRadixTree; } }); | ||
__exportStar(require("./sparse-set"), exports); | ||
@@ -34,0 +39,0 @@ __exportStar(require("./sparse-map"), exports); |
@@ -21,9 +21,9 @@ "use strict"; | ||
yield* dfs(this.root, []); | ||
function* dfs(node, paths) { | ||
for (const [path, childNode] of node.children) { | ||
const newPaths = [...paths, path]; | ||
function* dfs(node, path) { | ||
for (const [subPath, childNode] of node.children) { | ||
const newPath = [...path, subPath]; | ||
if ((0, extra_utils_1.isntUndefined)(childNode.value)) { | ||
yield [newPaths, childNode.value]; | ||
yield [newPath, childNode.value]; | ||
} | ||
yield* dfs(childNode, newPaths); | ||
yield* dfs(childNode, newPath); | ||
} | ||
@@ -40,7 +40,7 @@ } | ||
let node = this.root; | ||
for (const part of key) { | ||
if (!node.children.has(part)) { | ||
node.children.set(part, new TrieNode()); | ||
for (const unitOfKey of key) { | ||
if (!node.children.has(unitOfKey)) { | ||
node.children.set(unitOfKey, new TrieNode()); | ||
} | ||
node = node.children.get(part); | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -52,5 +52,5 @@ node.value = value; | ||
let node = this.root; | ||
for (const part of key) { | ||
if (node.children.has(part)) { | ||
node = node.children.get(part); | ||
for (const unitOfKey of key) { | ||
if (node.children.has(unitOfKey)) { | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -65,5 +65,5 @@ else { | ||
let node = this.root; | ||
for (const part of key) { | ||
if (node.children.has(part)) { | ||
node = node.children.get(part); | ||
for (const unitOfKey of key) { | ||
if (node.children.has(unitOfKey)) { | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -79,6 +79,6 @@ else { | ||
let node = this.root; | ||
for (const part of key) { | ||
if (node.children.has(part)) { | ||
for (const unitOfKey of key) { | ||
if (node.children.has(unitOfKey)) { | ||
parentNodes.push(node); | ||
node = node.children.get(part); | ||
node = node.children.get(unitOfKey); | ||
} | ||
@@ -91,4 +91,4 @@ else { | ||
if (node.children.size === 0) { | ||
for (const [part, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) { | ||
parentNode.children.delete(part); | ||
for (const [unitOfKey, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) { | ||
parentNode.children.delete(unitOfKey); | ||
if (parentNode.children.size !== 0) | ||
@@ -95,0 +95,0 @@ break; |
{ | ||
"name": "@blackglory/structures", | ||
"version": "0.11.6", | ||
"version": "0.11.7", | ||
"description": "", | ||
@@ -42,3 +42,2 @@ "files": [ | ||
"devDependencies": { | ||
"@blackglory/jest-matchers": "^0.5.0", | ||
"@commitlint/cli": "^17.3.0", | ||
@@ -48,7 +47,7 @@ "@commitlint/config-conventional": "^17.3.0", | ||
"@types/node": "14", | ||
"@typescript-eslint/eslint-plugin": "^5.45.1", | ||
"@typescript-eslint/parser": "^5.45.1", | ||
"eslint": "^8.29.0", | ||
"@typescript-eslint/eslint-plugin": "^5.47.0", | ||
"@typescript-eslint/parser": "^5.47.0", | ||
"eslint": "^8.30.0", | ||
"extra-benchmark": "^0.2.2", | ||
"extra-generator": "^0.2.21", | ||
"extra-generator": "^0.2.22", | ||
"husky": "^4.3.8", | ||
@@ -68,9 +67,9 @@ "jest": "^29.3.1", | ||
"dependencies": { | ||
"@blackglory/errors": "^2.3.0", | ||
"@blackglory/errors": "^2.4.1", | ||
"@blackglory/go": "^1.1.2", | ||
"extra-timers": "^0.2.5", | ||
"extra-utils": "^3.5.1", | ||
"extra-utils": "^4.0.0", | ||
"iterable-operator": "^2.5.0", | ||
"justypes": "^3.1.2" | ||
"justypes": "^4.0.0" | ||
} | ||
} |
@@ -268,2 +268,50 @@ # structures | ||
### StringTrieMap | ||
```ts | ||
class StringTrieMap<T> { | ||
get [Symbol.toStringTag](): string | ||
keys(): IterableIterator<string> | ||
values(): IterableIterator<T> | ||
entries(): IterableIterator<[key: string, value: T]> | ||
set(key: string, value: T): this | ||
has(key: string): boolean | ||
get(key: string): T | undefined | ||
delete(key: string): boolean | ||
} | ||
``` | ||
### RadixTree | ||
```ts | ||
class RadixTree<K extends Iterable<T>, V, T = unknown> { | ||
get [Symbol.toStringTag](): string | ||
entries(): IterableIterator<[key: T[], value: V]> | ||
keys(): IterableIterator<T[]> | ||
values(): IterableIterator<V> | ||
set(key: K, value: V): this | ||
has(key: K): boolean | ||
get(key: K): V | undefined | ||
delete(key: K): boolean | ||
} | ||
``` | ||
### StringRadixTree | ||
```ts | ||
class StringRadixTree<T> { | ||
get [Symbol.toStringTag](): string | ||
keys(): IterableIterator<string> | ||
values(): IterableIterator<T> | ||
entries(): IterableIterator<[key: string, value: T]> | ||
set(key: string, value: T): this | ||
has(key: string): boolean | ||
get(key: string): T | undefined | ||
delete(key: string): boolean | ||
} | ||
``` | ||
### SparseSet | ||
@@ -270,0 +318,0 @@ ```ts |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
307667
21
165
4920
493
+ Addedextra-utils@4.0.1(transitive)
+ Addedjustypes@4.3.0(transitive)
Updated@blackglory/errors@^2.4.1
Updatedextra-utils@^4.0.0
Updatedjustypes@^4.0.0