New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@e22m4u/js-path-trie

Package Overview
Dependencies
Maintainers
0
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@e22m4u/js-path-trie - npm Package Compare versions

Comparing version 0.0.7 to 0.0.8

2

package.json
{
"name": "@e22m4u/js-path-trie",
"version": "0.0.7",
"version": "0.0.8",
"description": "A router for Node.js based on a prefix tree",

@@ -5,0 +5,0 @@ "type": "module",

@@ -126,26 +126,36 @@ import {Errorf} from '@e22m4u/js-format';

);
// если добавляемый узел является последним,
// а его токен уже существует, то проверяем
// наличие значения в существующем узле
// проверка существования узла
// по текущему токену
let child = parent.children[token];
const isLast = tokens.length - 1 === index;
let child = parent.children[token];
if (isLast && child != null) {
debug('The node %v already exist.', token);
// если существующий узел не имеет
// значения, то устанавливаем
if (child.value == null) {
child.value = value;
if (child) {
// если узел не является последним,
// то переходим к следующему
if (!isLast) {
debug('The node %v already exist.', token);
return this._createNode(tokens, index + 1, value, child);
}
// если существующий узел имеет значение
// отличное от устанавливаемого,
// то выбрасываем ошибку
else if (child.value !== value) {
throw new Errorf(
'The duplicate path %v has a different value.',
'/' + tokens.join('/'),
);
// если узел является последним,
// то проверяем наличие значения
else {
debug('The node %v already exist.', token);
// если существующий узел не имеет
// значения, то устанавливаем текущее
if (child.value == null) {
debug('The node %v has the same value.', token);
child.value = value;
}
// если существующий узел имеет
// значение отличное от текущего,
// то выбрасываем ошибку
else if (child.value !== value) {
throw new Errorf(
'The duplicate path %v has a different value.',
'/' + tokens.join('/'),
);
}
// так как данный токен является последним,
// то возвращаем существующий узел
return child;
}
// так как данный токен является последним,
// то возвращаем существующий узел
return child;
}

@@ -152,0 +162,0 @@ debug('The node %v does not exist.', token);

@@ -230,2 +230,39 @@ import {expect} from 'chai';

});
it('does not overrides value when set another one to the middle', function () {
const trie = new PathTrie();
trie.add('/foo/bar/baz', VALUE);
trie.add('/foo/bar', ANOTHER_VALUE);
expect(trie['_root']).to.be.eql({
token: '',
regexp: undefined,
names: [],
value: undefined,
children: {
foo: {
token: 'foo',
regexp: undefined,
names: [],
value: undefined,
children: {
bar: {
token: 'bar',
regexp: undefined,
names: [],
value: ANOTHER_VALUE,
children: {
baz: {
token: 'baz',
regexp: undefined,
names: [],
value: VALUE,
children: {},
},
},
},
},
},
},
});
});
});

@@ -232,0 +269,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc