Socket
Socket
Sign inDemoInstall

@blackglory/structures

Package Overview
Dependencies
24
Maintainers
1
Versions
95
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.12.3 to 0.13.0

15

lib/array.js

@@ -1,14 +0,9 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.truncateArrayRight = exports.truncateArrayLeft = exports.sliceArrayRight = exports.sliceArrayLeft = void 0;
function sliceArrayLeft(arr, num) {
export function sliceArrayLeft(arr, num) {
return arr.slice(0, num);
}
exports.sliceArrayLeft = sliceArrayLeft;
function sliceArrayRight(arr, num) {
export function sliceArrayRight(arr, num) {
const startIndex = arr.length - num;
return arr.slice(startIndex >= 0 ? startIndex : 0);
}
exports.sliceArrayRight = sliceArrayRight;
function truncateArrayLeft(arr, num) {
export function truncateArrayLeft(arr, num) {
if (arr.length > num) {

@@ -18,8 +13,6 @@ arr.length = num;

}
exports.truncateArrayLeft = truncateArrayLeft;
function truncateArrayRight(arr, num) {
export function truncateArrayRight(arr, num) {
const startIndex = arr.length - num;
arr.splice(0, startIndex);
}
exports.truncateArrayRight = truncateArrayRight;
//# sourceMappingURL=array.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BigMap = void 0;
class BigMap {
export class BigMap {
constructor() {

@@ -85,3 +82,2 @@ this._maps = [];

}
exports.BigMap = BigMap;
//# sourceMappingURL=big-map.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BigSet = void 0;
class BigSet {
export class BigSet {
constructor() {

@@ -63,3 +60,2 @@ this._sets = [];

}
exports.BigSet = BigSet;
//# sourceMappingURL=big-set.js.map

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BitSet = void 0;
const errors_1 = require("@blackglory/errors");
const trailing_zeros_1 = require("./utils/trailing-zeros");
class BitSet {
import { assert } from '@blackglory/errors';
import { trailingZeros } from "./utils/trailing-zeros.js";
export class BitSet {
constructor(bitsPerElement = 8) {

@@ -12,5 +9,5 @@ this.bitsPerElement = bitsPerElement;

this._size = 0;
(0, errors_1.assert)(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
(0, errors_1.assert)(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
(0, errors_1.assert)(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
assert(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
assert(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
assert(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
}

@@ -33,3 +30,3 @@ get [Symbol.toStringTag]() {

let indexOfBit;
while ((indexOfBit = (0, trailing_zeros_1.trailingZeros)(element)) !== 32) {
while ((indexOfBit = trailingZeros(element)) !== 32) {
yield index * this.bitsPerElement + offset + indexOfBit;

@@ -62,3 +59,3 @@ offset += indexOfBit + 1;

var _a;
(0, errors_1.assert)(value >= 0, 'value must be greater than or equal to 0');
assert(value >= 0, 'value must be greater than or equal to 0');
if (value >= this.length) {

@@ -102,3 +99,2 @@ this.length = value + 1;

}
exports.BitSet = BitSet;
//# sourceMappingURL=bit-set.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Box = void 0;
class Box {
export class Box {
get [Symbol.toStringTag]() {

@@ -18,3 +15,2 @@ return this.constructor.name;

}
exports.Box = Box;
//# sourceMappingURL=box.js.map

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertArrayToCons = exports.convertConsToArray = void 0;
const extra_utils_1 = require("extra-utils");
function convertConsToArray([value, next]) {
if ((0, extra_utils_1.isNull)(next)) {
import { isNull } from 'extra-utils';
export function convertConsToArray([value, next]) {
if (isNull(next)) {
return [value];

@@ -13,7 +10,5 @@ }

}
exports.convertConsToArray = convertConsToArray;
function convertArrayToCons([value, ...next]) {
export function convertArrayToCons([value, ...next]) {
return [value, next.length ? convertArrayToCons(next) : null];
}
exports.convertArrayToCons = convertArrayToCons;
//# sourceMappingURL=cons.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeNewCapacity = exports.DynamicTypedArray = void 0;
const errors_1 = require("@blackglory/errors");
class DynamicTypedArray {
import { assert } from '@blackglory/errors';
export class DynamicTypedArray {
get internalTypedArray() {

@@ -24,5 +21,5 @@ return this.array;

this._length = 0;
(0, errors_1.assert)(Number.isInteger(capacity), 'capacity must be an integer');
(0, errors_1.assert)(capacity >= 0, 'capacity must be greater than or equal to 0');
(0, errors_1.assert)(growthFactor >= 1, 'growthFactory must be greater than or equal to 1');
assert(Number.isInteger(capacity), 'capacity must be an integer');
assert(capacity >= 0, 'capacity must be greater than or equal to 0');
assert(growthFactor >= 1, 'growthFactory must be greater than or equal to 1');
this.initialCapacity = capacity;

@@ -108,4 +105,3 @@ this.array = new typedArrayConstructor(capacity);

}
exports.DynamicTypedArray = DynamicTypedArray;
function computeNewCapacity(oldCapacity, targetLength, growthFactor) {
export function computeNewCapacity(oldCapacity, targetLength, growthFactor) {
if (growthFactor === 1) {

@@ -145,3 +141,2 @@ return targetLength;

}
exports.computeNewCapacity = computeNewCapacity;
//# sourceMappingURL=dynamic-typed-array.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Emitter = void 0;
const go_1 = require("@blackglory/go");
class Emitter {
import { go } from '@blackglory/go';
export class Emitter {
constructor() {

@@ -13,3 +10,3 @@ this.map = new Map();

on(event, listener) {
const set = (0, go_1.go)(() => {
const set = go(() => {
const set = this.map.get(event);

@@ -51,3 +48,2 @@ if (set) {

}
exports.Emitter = Emitter;
//# sourceMappingURL=emitter.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpirableMap = void 0;
const extra_timers_1 = require("extra-timers");
class ExpirableMap {
import { setSchedule } from 'extra-timers';
export class ExpirableMap {
constructor() {

@@ -81,3 +78,3 @@ this.map = new Map();

if (Number.isFinite(item.expirationTime)) {
this.cancelScheduledCleaner = (0, extra_timers_1.setSchedule)(item.expirationTime, () => {
this.cancelScheduledCleaner = setSchedule(item.expirationTime, () => {
var _a;

@@ -99,3 +96,2 @@ this.clearExpiredItems(Date.now());

}
exports.ExpirableMap = ExpirableMap;
//# sourceMappingURL=expirable-map.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HashMap = void 0;
class HashMap {
export class HashMap {
get [Symbol.toStringTag]() {

@@ -32,3 +29,2 @@ return this.constructor.name;

}
exports.HashMap = HashMap;
//# sourceMappingURL=hash-map.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HashSet = void 0;
class HashSet {
export class HashSet {
get [Symbol.toStringTag]() {

@@ -35,3 +32,2 @@ return this.constructor.name;

}
exports.HashSet = HashSet;
//# sourceMappingURL=hash-set.js.map

@@ -1,24 +0,24 @@

export * from './box';
export * from './cons';
export * from './array';
export * from './emitter';
export * from './big-map';
export * from './big-set';
export * from './hash-map';
export * from './hash-set';
export * from './queue';
export * from './lru-map';
export * from './expirable-map';
export * from './tlru-map';
export * from './trie-map';
export * from './string-trie-map';
export { RadixTree } from './radix-tree';
export { StringRadixTree } from './string-radix-tree';
export * from './sparse-set';
export * from './sparse-map';
export * from './typed-sparse-map';
export * from './typed-sparse-set';
export { DynamicTypedArray } from './dynamic-typed-array';
export * from './sorted-set';
export * from './bit-set';
export * from './typed-bit-set';
export * from './box.js';
export * from './cons.js';
export * from './array.js';
export * from './emitter.js';
export * from './big-map.js';
export * from './big-set.js';
export * from './hash-map.js';
export * from './hash-set.js';
export * from './queue.js';
export * from './lru-map.js';
export * from './expirable-map.js';
export * from './tlru-map.js';
export * from './trie-map.js';
export * from './string-trie-map.js';
export { RadixTree } from './radix-tree.js';
export { StringRadixTree } from './string-radix-tree.js';
export * from './sparse-set.js';
export * from './sparse-map.js';
export * from './typed-sparse-map.js';
export * from './typed-sparse-set.js';
export { DynamicTypedArray } from './dynamic-typed-array.js';
export * from './sorted-set.js';
export * from './bit-set.js';
export * from './typed-bit-set.js';

@@ -1,45 +0,25 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamicTypedArray = exports.StringRadixTree = exports.RadixTree = void 0;
__exportStar(require("./box"), exports);
__exportStar(require("./cons"), exports);
__exportStar(require("./array"), exports);
__exportStar(require("./emitter"), exports);
__exportStar(require("./big-map"), exports);
__exportStar(require("./big-set"), exports);
__exportStar(require("./hash-map"), exports);
__exportStar(require("./hash-set"), exports);
__exportStar(require("./queue"), exports);
__exportStar(require("./lru-map"), exports);
__exportStar(require("./expirable-map"), exports);
__exportStar(require("./tlru-map"), 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);
__exportStar(require("./sparse-map"), exports);
__exportStar(require("./typed-sparse-map"), exports);
__exportStar(require("./typed-sparse-set"), exports);
var dynamic_typed_array_1 = require("./dynamic-typed-array");
Object.defineProperty(exports, "DynamicTypedArray", { enumerable: true, get: function () { return dynamic_typed_array_1.DynamicTypedArray; } });
__exportStar(require("./sorted-set"), exports);
__exportStar(require("./bit-set"), exports);
__exportStar(require("./typed-bit-set"), exports);
export * from './box.js';
export * from './cons.js';
export * from './array.js';
export * from './emitter.js';
export * from './big-map.js';
export * from './big-set.js';
export * from './hash-map.js';
export * from './hash-set.js';
export * from './queue.js';
export * from './lru-map.js';
export * from './expirable-map.js';
export * from './tlru-map.js';
export * from './trie-map.js';
export * from './string-trie-map.js';
export { RadixTree } from './radix-tree.js';
export { StringRadixTree } from './string-radix-tree.js';
export * from './sparse-set.js';
export * from './sparse-map.js';
export * from './typed-sparse-map.js';
export * from './typed-sparse-set.js';
export { DynamicTypedArray } from './dynamic-typed-array.js';
export * from './sorted-set.js';
export * from './bit-set.js';
export * from './typed-bit-set.js';
//# sourceMappingURL=index.js.map

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LRUMap = void 0;
const errors_1 = require("@blackglory/errors");
const iterable_operator_1 = require("iterable-operator");
class LRUMap {
import { assert } from '@blackglory/errors';
import { first } from 'iterable-operator';
export class LRUMap {
get [Symbol.toStringTag]() {

@@ -15,4 +12,4 @@ return this.constructor.name;

this.map = new Map();
(0, errors_1.assert)(Number.isInteger(limit), 'The parameter limit must be an integer');
(0, errors_1.assert)(limit > 0, 'The parameter limit must be a positive value');
assert(Number.isInteger(limit), 'The parameter limit must be an integer');
assert(limit > 0, 'The parameter limit must be a positive value');
this.limit = limit;

@@ -53,6 +50,5 @@ }

getColdestKey() {
return (0, iterable_operator_1.first)(this.map.keys());
return first(this.map.keys());
}
}
exports.LRUMap = LRUMap;
//# sourceMappingURL=lru-map.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Queue = void 0;
class Queue {
export class Queue {
constructor() {

@@ -30,3 +27,2 @@ this.items = [];

}
exports.Queue = Queue;
//# sourceMappingURL=queue.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCommonPrefix = exports.findCommonPrefix = exports.matchPrefix = exports.RadixTree = void 0;
const iterable_operator_1 = require("iterable-operator");
const extra_utils_1 = require("extra-utils");
import { toArray, first, map, find } from 'iterable-operator';
import { isntUndefined } from 'extra-utils';
class TreeNode {

@@ -12,3 +9,3 @@ constructor(value) {

}
class RadixTree {
export class RadixTree {
constructor() {

@@ -25,3 +22,3 @@ this.root = new TreeNode();

const newPath = [...path, ...prefix];
if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
if (isntUndefined(childNode.value)) {
yield [newPath, childNode.value];

@@ -34,13 +31,13 @@ }

keys() {
return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
return map(this.entries(), ([key]) => key);
}
values() {
return (0, iterable_operator_1.map)(this.entries(), ([, value]) => value);
return map(this.entries(), ([, value]) => value);
}
set(key, value) {
set((0, iterable_operator_1.toArray)(key), value, this.root);
set(toArray(key), value, this.root);
return this;
function set(key, value, node) {
const commonPrefix = findCommonPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(commonPrefix)) {
if (isntUndefined(commonPrefix)) {
const { prefix, commonPartLength } = commonPrefix;

@@ -73,6 +70,6 @@ if (prefix.length === commonPartLength) {

has(key) {
return has((0, iterable_operator_1.toArray)(key), this.root);
return has(toArray(key), this.root);
function has(key, node) {
const matchedPrefix = matchPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
if (isntUndefined(matchedPrefix)) {
const restKey = key.slice(matchedPrefix.length);

@@ -92,6 +89,6 @@ if (restKey.length === 0) {

get(key) {
return get((0, iterable_operator_1.toArray)(key), this.root);
return get(toArray(key), this.root);
function get(key, node) {
const matchedPrefix = matchPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
if (isntUndefined(matchedPrefix)) {
const restKey = key.slice(matchedPrefix.length);

@@ -112,6 +109,6 @@ const nextNode = node.children.get(matchedPrefix);

delete(key) {
return _delete((0, iterable_operator_1.toArray)(key), this.root);
return _delete(toArray(key), this.root);
function _delete(key, node) {
const matchedPrefix = matchPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
if (isntUndefined(matchedPrefix)) {
if (key.length === matchedPrefix.length) {

@@ -125,3 +122,3 @@ const targetNode = node.children.get(matchedPrefix);

if (targetNode.children.size === 1) {
const [key, value] = (0, iterable_operator_1.first)(targetNode.children.entries());
const [key, value] = first(targetNode.children.entries());
node.children.set([...matchedPrefix, ...key], value);

@@ -145,3 +142,3 @@ node.children.delete(matchedPrefix);

case 1: {
const [key, value] = (0, iterable_operator_1.first)(nextNode.children.entries());
const [key, value] = first(nextNode.children.entries());
node.children.set([...matchedPrefix, ...key], value);

@@ -152,3 +149,3 @@ node.children.delete(matchedPrefix);

default: {
const entries = (0, iterable_operator_1.toArray)(nextNode.children.entries());
const entries = toArray(nextNode.children.entries());
const keys = entries.map(([key]) => key);

@@ -181,8 +178,6 @@ const commonPrefix = getCommonPrefix(keys);

}
exports.RadixTree = RadixTree;
function matchPrefix(prefixes, path) {
return (0, iterable_operator_1.find)(prefixes, prefix => path[0] === prefix[0]);
export function matchPrefix(prefixes, path) {
return find(prefixes, prefix => path[0] === prefix[0]);
}
exports.matchPrefix = matchPrefix;
function findCommonPrefix(prefixes, path) {
export function findCommonPrefix(prefixes, path) {
for (const prefix of prefixes) {

@@ -205,4 +200,3 @@ let commonPartLength = 0;

}
exports.findCommonPrefix = findCommonPrefix;
function getCommonPrefix(paths) {
export function getCommonPrefix(paths) {
if (paths.length > 0) {

@@ -231,3 +225,2 @@ const commonPrefix = [];

}
exports.getCommonPrefix = getCommonPrefix;
//# sourceMappingURL=radix-tree.js.map

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SortedSet = void 0;
const skip_list_1 = require("./utils/skip-list");
const iterable_operator_1 = require("iterable-operator");
class SortedSet {
import { SkipList } from "./utils/skip-list.js";
import { map } from 'iterable-operator';
export class SortedSet {
get [Symbol.toStringTag]() {

@@ -14,6 +11,6 @@ return this.constructor.name;

constructor(compare) {
this.skipList = new skip_list_1.SkipList(compare);
this.skipList = new SkipList(compare);
}
values() {
return (0, iterable_operator_1.map)(this.skipList.elements(), node => node.value);
return map(this.skipList.elements(), node => node.value);
}

@@ -30,3 +27,2 @@ has(value) {

}
exports.SortedSet = SortedSet;
//# sourceMappingURL=sorted-set.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SparseMap = void 0;
class SparseMap {
export class SparseMap {
constructor() {

@@ -79,3 +76,2 @@ this.keyToIndex = [];

}
exports.SparseMap = SparseMap;
//# sourceMappingURL=sparse-map.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SparseSet = void 0;
class SparseSet {
export class SparseSet {
get [Symbol.toStringTag]() {

@@ -60,3 +57,2 @@ return this.constructor.name;

}
exports.SparseSet = SparseSet;
//# sourceMappingURL=sparse-set.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCommonPrefix = exports.findCommonPrefix = exports.matchPrefix = exports.StringRadixTree = void 0;
const iterable_operator_1 = require("iterable-operator");
const extra_utils_1 = require("extra-utils");
import { toArray, first, map, find } from 'iterable-operator';
import { isntUndefined } from 'extra-utils';
class TreeNode {

@@ -12,3 +9,3 @@ constructor(value) {

}
class StringRadixTree {
export class StringRadixTree {
constructor() {

@@ -25,3 +22,3 @@ this.root = new TreeNode();

const newPath = path + prefix;
if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
if (isntUndefined(childNode.value)) {
yield [newPath, childNode.value];

@@ -34,6 +31,6 @@ }

keys() {
return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
return map(this.entries(), ([key]) => key);
}
values() {
return (0, iterable_operator_1.map)(this.entries(), ([, value]) => value);
return map(this.entries(), ([, value]) => value);
}

@@ -45,3 +42,3 @@ set(key, value) {

const commonPrefix = findCommonPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(commonPrefix)) {
if (isntUndefined(commonPrefix)) {
const { prefix, commonPartLength } = commonPrefix;

@@ -77,3 +74,3 @@ if (prefix.length === commonPartLength) {

const matchedPrefix = matchPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
if (isntUndefined(matchedPrefix)) {
const restKey = key.slice(matchedPrefix.length);

@@ -96,3 +93,3 @@ if (restKey.length === 0) {

const matchedPrefix = matchPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
if (isntUndefined(matchedPrefix)) {
const restKey = key.slice(matchedPrefix.length);

@@ -116,3 +113,3 @@ const nextNode = node.children.get(matchedPrefix);

const matchedPrefix = matchPrefix(node.children.keys(), key);
if ((0, extra_utils_1.isntUndefined)(matchedPrefix)) {
if (isntUndefined(matchedPrefix)) {
if (key.length === matchedPrefix.length) {

@@ -126,3 +123,3 @@ const targetNode = node.children.get(matchedPrefix);

if (targetNode.children.size === 1) {
const [key, value] = (0, iterable_operator_1.first)(targetNode.children.entries());
const [key, value] = first(targetNode.children.entries());
node.children.set(matchedPrefix + key, value);

@@ -146,3 +143,3 @@ node.children.delete(matchedPrefix);

case 1: {
const [key, value] = (0, iterable_operator_1.first)(nextNode.children.entries());
const [key, value] = first(nextNode.children.entries());
node.children.set(matchedPrefix + key, value);

@@ -153,3 +150,3 @@ node.children.delete(matchedPrefix);

default: {
const entries = (0, iterable_operator_1.toArray)(nextNode.children.entries());
const entries = toArray(nextNode.children.entries());
const keys = entries.map(([key]) => key);

@@ -182,8 +179,6 @@ const commonPrefix = getCommonPrefix(keys);

}
exports.StringRadixTree = StringRadixTree;
function matchPrefix(prefixes, path) {
return (0, iterable_operator_1.find)(prefixes, prefix => path.startsWith(prefix));
export function matchPrefix(prefixes, path) {
return find(prefixes, prefix => path.startsWith(prefix));
}
exports.matchPrefix = matchPrefix;
function findCommonPrefix(prefixes, path) {
export function findCommonPrefix(prefixes, path) {
for (const prefix of prefixes) {

@@ -206,4 +201,3 @@ let commonPartLength = 0;

}
exports.findCommonPrefix = findCommonPrefix;
function getCommonPrefix(paths) {
export function getCommonPrefix(paths) {
if (paths.length > 0) {

@@ -232,3 +226,2 @@ const commonPrefix = [];

}
exports.getCommonPrefix = getCommonPrefix;
//# sourceMappingURL=string-radix-tree.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.StringTrieMap = void 0;
const iterable_operator_1 = require("iterable-operator");
const extra_utils_1 = require("extra-utils");
import { zip, toArray, map } from 'iterable-operator';
import { isntUndefined } from 'extra-utils';
class TrieNode {

@@ -12,3 +9,3 @@ constructor(value) {

}
class StringTrieMap {
export class StringTrieMap {
constructor() {

@@ -25,3 +22,3 @@ this.root = new TrieNode();

const newPath = path + char;
if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
if (isntUndefined(childNode.value)) {
yield [newPath, childNode.value];

@@ -34,6 +31,6 @@ }

keys() {
return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
return map(this.entries(), ([key]) => key);
}
values() {
return (0, iterable_operator_1.map)(this.entries(), ([_, value]) => value);
return map(this.entries(), ([_, value]) => value);
}

@@ -89,3 +86,3 @@ set(key, value) {

if (node.children.size === 0) {
for (const [char, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) {
for (const [char, parentNode] of toArray(zip(key, parentNodes)).reverse()) {
parentNode.children.delete(char);

@@ -99,3 +96,2 @@ if (parentNode.children.size !== 0)

}
exports.StringTrieMap = StringTrieMap;
//# sourceMappingURL=string-trie-map.js.map

@@ -1,8 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TLRUMap = void 0;
const errors_1 = require("@blackglory/errors");
const iterable_operator_1 = require("iterable-operator");
const extra_timers_1 = require("extra-timers");
class TLRUMap {
import { assert } from '@blackglory/errors';
import { first } from 'iterable-operator';
import { setSchedule } from 'extra-timers';
export class TLRUMap {
get [Symbol.toStringTag]() {

@@ -17,4 +14,4 @@ return this.constructor.name;

this.itemMetadataSortedByExpirationTime = [];
(0, errors_1.assert)(Number.isInteger(limit), 'The parameter limit must be an integer');
(0, errors_1.assert)(limit > 0, 'The parameter limit must be a positive value');
assert(Number.isInteger(limit), 'The parameter limit must be an integer');
assert(limit > 0, 'The parameter limit must be a positive value');
this.limit = limit;

@@ -109,3 +106,3 @@ }

if (Number.isFinite(item.expirationTime)) {
const cancel = (0, extra_timers_1.setSchedule)(item.expirationTime, () => {
const cancel = setSchedule(item.expirationTime, () => {
this.clearExpiredItems(Date.now());

@@ -122,6 +119,5 @@ this.rescheduleClearTimeout();

getColdestKey() {
return (0, iterable_operator_1.first)(this.map.keys());
return first(this.map.keys());
}
}
exports.TLRUMap = TLRUMap;
//# sourceMappingURL=tlru-map.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TrieMap = void 0;
const iterable_operator_1 = require("iterable-operator");
const extra_utils_1 = require("extra-utils");
import { zip, toArray, map } from 'iterable-operator';
import { isntUndefined } from 'extra-utils';
class TrieNode {

@@ -12,3 +9,3 @@ constructor(value) {

}
class TrieMap {
export class TrieMap {
constructor() {

@@ -25,3 +22,3 @@ this.root = new TrieNode();

const newPath = [...path, subPath];
if ((0, extra_utils_1.isntUndefined)(childNode.value)) {
if (isntUndefined(childNode.value)) {
yield [newPath, childNode.value];

@@ -34,6 +31,6 @@ }

keys() {
return (0, iterable_operator_1.map)(this.entries(), ([key]) => key);
return map(this.entries(), ([key]) => key);
}
values() {
return (0, iterable_operator_1.map)(this.entries(), ([_, value]) => value);
return map(this.entries(), ([_, value]) => value);
}

@@ -89,3 +86,3 @@ set(key, value) {

if (node.children.size === 0) {
for (const [unitOfKey, parentNode] of (0, iterable_operator_1.toArray)((0, iterable_operator_1.zip)(key, parentNodes)).reverse()) {
for (const [unitOfKey, parentNode] of toArray(zip(key, parentNodes)).reverse()) {
parentNode.children.delete(unitOfKey);

@@ -99,3 +96,2 @@ if (parentNode.children.size !== 0)

}
exports.TrieMap = TrieMap;
//# sourceMappingURL=trie-map.js.map

@@ -1,3 +0,3 @@

import { DynamicTypedArray } from './dynamic-typed-array';
import { UnsignedTypedArrayConstructor } from 'justypes';
import { DynamicTypedArray } from './dynamic-typed-array.js';
export declare class TypedBitSet<T extends UnsignedTypedArrayConstructor> {

@@ -4,0 +4,0 @@ private array;

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypedBitSet = void 0;
const errors_1 = require("@blackglory/errors");
const trailing_zeros_1 = require("./utils/trailing-zeros");
class TypedBitSet {
import { assert } from '@blackglory/errors';
import { trailingZeros } from "./utils/trailing-zeros.js";
export class TypedBitSet {
constructor(array) {

@@ -12,5 +9,5 @@ this.array = array;

const bitsPerElement = array.BYTES_PER_ELEMENT * 8;
(0, errors_1.assert)(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
(0, errors_1.assert)(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
(0, errors_1.assert)(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
assert(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
assert(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
assert(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
this.bitsPerElement = bitsPerElement;

@@ -34,3 +31,3 @@ }

let indexOfBit;
while ((indexOfBit = (0, trailing_zeros_1.trailingZeros)(element)) !== 32) {
while ((indexOfBit = trailingZeros(element)) !== 32) {
yield index * this.bitsPerElement + offset + indexOfBit;

@@ -63,3 +60,3 @@ offset += indexOfBit + 1;

var _a;
(0, errors_1.assert)(value >= 0, 'value must be greater than or equal to 0');
assert(value >= 0, 'value must be greater than or equal to 0');
if (value >= this.length) {

@@ -103,3 +100,2 @@ this.length = value + 1;

}
exports.TypedBitSet = TypedBitSet;
//# sourceMappingURL=typed-bit-set.js.map
import { TypedArrayConstructor, TypedArrayOfConstructor } from 'justypes';
import { DynamicTypedArray } from './dynamic-typed-array';
import { DynamicTypedArray } from './dynamic-typed-array.js';
export declare class TypedSparseMap<T extends TypedArrayConstructor> {

@@ -4,0 +4,0 @@ private keyToIndex;

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypedSparseMap = void 0;
const errors_1 = require("@blackglory/errors");
class TypedSparseMap {
import { assert } from '@blackglory/errors';
export class TypedSparseMap {
get [Symbol.toStringTag]() {

@@ -18,3 +15,3 @@ return this.constructor.name;

this.indexToKey = [];
(0, errors_1.assert)(array.length === 0, 'array should be empty');
assert(array.length === 0, 'array should be empty');
this.indexToValue = array;

@@ -87,3 +84,2 @@ }

}
exports.TypedSparseMap = TypedSparseMap;
//# sourceMappingURL=typed-sparse-map.js.map
import { UnsignedTypedArrayConstructor } from 'justypes';
import { DynamicTypedArray } from './dynamic-typed-array';
import { DynamicTypedArray } from './dynamic-typed-array.js';
export declare class TypedSparseSet<T extends UnsignedTypedArrayConstructor> implements Iterable<number> {

@@ -4,0 +4,0 @@ private valueToIndex;

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypedSparseSet = void 0;
class TypedSparseSet {
export class TypedSparseSet {
constructor(array) {

@@ -59,3 +56,2 @@ const valueToIndex = [];

}
exports.TypedSparseSet = TypedSparseSet;
//# sourceMappingURL=typed-sparse-set.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SkipList = exports.SkipListNode = void 0;
const extra_utils_1 = require("extra-utils");
class SkipListNode {
import { isntNull } from 'extra-utils';
export class SkipListNode {
constructor(value) {

@@ -14,4 +11,3 @@ this.value = value;

}
exports.SkipListNode = SkipListNode;
class SkipList {
export class SkipList {
get size() {

@@ -34,3 +30,3 @@ return this._size;

}
while (currentNode.next && (0, extra_utils_1.isntNull)(currentNode.next.value)) {
while (currentNode.next && isntNull(currentNode.next.value)) {
currentNode = currentNode.next;

@@ -63,3 +59,3 @@ yield currentNode;

has(value) {
return (0, extra_utils_1.isntNull)(this.findNode(value));
return isntNull(this.findNode(value));
}

@@ -69,3 +65,3 @@ findNode(value) {

while (true) {
while (currentNode.next && (0, extra_utils_1.isntNull)(currentNode.next.value)) {
while (currentNode.next && isntNull(currentNode.next.value)) {
const result = this.compare(currentNode.next.value, value);

@@ -93,3 +89,3 @@ if (result === 0) {

if (previousNode.next &&
(0, extra_utils_1.isntNull)(previousNode.next.value) &&
isntNull(previousNode.next.value) &&
this.compare(previousNode.next.value, value) === 0) {

@@ -141,3 +137,3 @@ return;

while (true) {
while (currentNode.next && (0, extra_utils_1.isntNull)(currentNode.next.value)) {
while (currentNode.next && isntNull(currentNode.next.value)) {
const result = this.compare(currentNode.next.value, value);

@@ -160,3 +156,2 @@ if (result >= 0) {

}
exports.SkipList = SkipList;
//# sourceMappingURL=skip-list.js.map

@@ -1,4 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.trailingZeros = void 0;
const mod37BitPositions = [

@@ -10,6 +7,5 @@ 32, 0, 1, 26, 2, 23, 27, 0, 3, 16,

];
function trailingZeros(value) {
export function trailingZeros(value) {
return mod37BitPositions[(-value & value) % 37];
}
exports.trailingZeros = trailingZeros;
//# sourceMappingURL=trailing-zeros.js.map
{
"name": "@blackglory/structures",
"version": "0.12.3",
"version": "0.13.0",
"description": "",

@@ -8,2 +8,3 @@ "files": [

],
"type": "module",
"main": "lib/index.js",

@@ -19,11 +20,10 @@ "types": "lib/index.d.ts",

"scripts": {
"prepare": "ts-patch install -s",
"lint": "eslint --ext .js,.jsx,.ts,.tsx --quiet src __tests__",
"test": "jest --runInBand --config jest.config.js",
"test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand --config jest.config.js",
"test:coverage": "jest --coverage --config jest.config.js",
"prepublishOnly": "run-s clean build",
"test": "jest --runInBand --config jest.config.cjs",
"test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand --config jest.config.cjs",
"test:coverage": "jest --coverage --config jest.config.cjs",
"prepublishOnly": "run-s prepare clean build",
"clean": "rimraf lib",
"build": "run-s build:*",
"build:compile": "tsc --project tsconfig.build.json --module commonjs --target es2018 --outDir lib",
"build:patch": "tscpaths -p tsconfig.build.json -s ./src -o ./lib",
"build": "tsc --project tsconfig.build.json --outDir lib",
"bench": "run-s bench:*",

@@ -41,2 +41,3 @@ "bench:bit-set": "ts-node --require tsconfig-paths/register benches/bit-set.ts",

"devDependencies": {
"@blackglory/jest-resolver": "^0.3.0",
"@commitlint/cli": "^17.4.2",

@@ -53,2 +54,3 @@ "@commitlint/config-conventional": "^17.4.2",

"jest": "^29.3.1",
"jest-resolve": "^29.3.1",
"npm-run-all": "^4.1.5",

@@ -60,6 +62,7 @@ "return-style": "^1.0.1",

"ts-node": "^10.9.1",
"ts-patch": "^2.1.0",
"tsconfig-paths": "^4.1.2",
"tscpaths": "^0.0.9",
"tslib": "^2.4.1",
"typescript": "^4.9.4"
"typescript": "^4.9.4",
"typescript-transform-paths": "^3.4.6"
},

@@ -70,3 +73,3 @@ "dependencies": {

"extra-timers": "^0.2.5",
"extra-utils": "^4.0.0",
"extra-utils": "^4.0.1",
"iterable-operator": "^3.1.1",

@@ -73,0 +76,0 @@ "justypes": "^4.1.0"

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

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

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

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

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

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

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc