Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
exact-trie
Advanced tools
Node.js implementation of a trie and a radix tree tailored towards exact matches.
new ExactTrie([options])
Used to create the trie: const trie = new ExactTrie();
.
options
(optional)
ignoreCase
(true
, optional) set to true
to convert all keys to lower case.trie.put(key, value, [reverse])
Used to insert single element into the trie. Returns the same instance of ExactTrie
to allow chaining.
key
search key, must be a string.value
value to be inserted, can by any type.reverse
(false
, optional) set to true
to reverse the key before inserting.trie.putAll(keys, values, [reverse])
Used to insert multiple elements into the trie. Returns the same instance of ExactTrie
to allow chaining.
keys
search keys, must be an array of strings.values
values to be inserted, can be an array of values of any type or a single value. If an array is provided, each key from keys
will be assigned a corresponding value from values
. Otherwise all keys will receive the same value.reverse
(false
, optional) set to true
to reverse the key before inserting.trie.get(key, [reverse])
Used to retrieve elements from the trie. Returns undefined
if the key is not present in the trie.
key
search key, must be a string.reverse
(false
, optional) set to true
to reverse the key before searching.trie.getAll(keys, [reverse])
Same as get(...)
, except this function takes an array of keys and returns an array of values.
trie.has(key, [reverse])
Used to check if the key is present in the true. Returns a boolean.
key
search key, must be a string.reverse
(false
, optional) set to true
to reverse the key before searching.trie.hasAll(keys, [reverse])
Same as has(...)
, except this function takes an array of keys and returns an array of booleans.
trie.getWithCheckpoints(string, [checkpointChar], [reverse])
Used to retrieve the value corresponding to they key that matches the longest prefix of string
. If there are no
matches, undefined
is returned.
string
string to check for prefixes, must be a string.checkpointChar
(null
, optional) character used to separate potential prefixes. When set to null
, every possible
prefix is considered.reverse
(false
, optional) set to true
to reverse the string before searching.trie.getAllWithCheckpoints(keys, [checkpointChar], [reverse])
Same as getWithCheckpoints(...)
, except this function takes an array of keys and returns an array of values.
trie.hasWithCheckpoints(string, [checkpointChar], [reverse])
Used to check if any key matches relevant prefixes from string
. Returns a boolean
string
string to check for prefixes, must be a string.checkpointChar
(null
, optional) character used to separate potential prefixes. When set to null
, every possible
prefix is considered.reverse
(false
, optional) set to true
to reverse the string before searching.trie.hasAllWithCheckpoints(keys, [checkpointChar], [reverse])
Same as hasWithCheckpoints(...)
, except this function takes an array of keys and returns an array of booleans.
const ExactTrie = require('exact-trie');
// Creating a trie instance
const trie = new ExactTrie({ignoreCase: true}); // `ignoreCase` is `true` by default
// Basic API and exact key matches
trie.put('life', 32);
console.log(trie.has('life')); // prints `true`
console.log(trie.get('life')); // prints `32`
console.log(trie.has('lif')); // prints `false`
console.log(trie.get('lif')); // prints `undefined`
// Multiple values with changing
trie
.putAll(['a', 'b'], [1, 2])
.putAll(['c', 'd'], 34)
.put('e', 5);
console.log(trie.getAll(['a', 'b', 'c', 'd', 'e', 'f']));
// -> prints `[1, 2, 34, 34, 5, undefined]`
// Various values and overwriting
const world = {response: 'world'};
trie.put('hello', world);
console.log(trie.get('hello')); // prints `{ response: 'world' }`
trie.put('hello', 3);
console.log(trie.get('hello')); // prints `3`
// Reversing keys
trie.put('oxygen', 8, true);
console.log(trie.has('oxygen')); // prints `false`
console.log(trie.has('negyxo')); // prints `true`
console.log(trie.has('oxygen', true)); // prints `true`
// Matching with checkpoints
trie.put('tim', 'Name is Tim');
trie.put('tim.kuzh', 'Tim Kuzh is the name');
console.log(trie.getWithCheckpoints('tim.kuzh', '.'));
// -> prints `Tim Kuzh is the name`
console.log(trie.getWithCheckpoints('tim.cook', '.'));
// -> prints `Name is Tim`
// Matching file extensions
trie.put('tar.gz', 'archive', true);
trie.put('gz', 'gzipped file', true);
console.log(trie.getWithCheckpoints('MyArchive.tar.gz', '.', true));
// -> prints `archive`
console.log(trie.getWithCheckpoints('DataSet.gz', '.', true));
// -> prints `gzipped file`
FAQs
Trie and radix tree implementation tailored towards exact matches.
The npm package exact-trie receives a total of 8,828 weekly downloads. As such, exact-trie popularity was classified as popular.
We found that exact-trie demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.