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

doublell

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

doublell - npm Package Compare versions

Comparing version 1.0.6 to 1.1.0

36

lib/cjs/DoubleLinkedList/index.js

@@ -95,2 +95,38 @@ "use strict";

};
this.insertAfterNode = (node, item) => {
if (node.list !== this) {
return undefined; // Nothing to do -- wrong list
}
const newNode = new DoubleLinkedListNode(this, item);
if (node.list.lastNode === node) {
this.lastNode = newNode;
}
newNode.previousNode = node;
if (node.nextNode !== undefined) {
newNode.nextNode = node.nextNode;
node.nextNode.previousNode = newNode;
}
node.nextNode = newNode;
this.allValues = undefined;
this.length += 1;
return newNode;
};
this.insertBeforeNode = (node, item) => {
if (node.list !== this) {
return undefined; // Nothing to do -- wrong list
}
const newNode = new DoubleLinkedListNode(this, item);
if (node.list.firstNode === node) {
this.firstNode = newNode;
}
newNode.nextNode = node;
if (node.previousNode !== undefined) {
newNode.previousNode = node.previousNode;
node.previousNode.nextNode = newNode;
}
node.previousNode = newNode;
this.allValues = undefined;
this.length += 1;
return newNode;
};
for (const item of items) {

@@ -97,0 +133,0 @@ this.append(item);

2

lib/DoubleLinkedList/index.d.ts

@@ -17,2 +17,4 @@ export declare class DoubleLinkedList<ItemT> {

readonly remove: (node: DoubleLinkedListNode<ItemT>) => boolean;
readonly insertAfterNode: (node: DoubleLinkedListNode<ItemT>, item: ItemT) => Readonly<DoubleLinkedListNode<ItemT>> | undefined;
readonly insertBeforeNode: (node: DoubleLinkedListNode<ItemT>, item: ItemT) => Readonly<DoubleLinkedListNode<ItemT>> | undefined;
}

@@ -19,0 +21,0 @@ export declare class DoubleLinkedListNode<ItemT> {

2

package.json
{
"name": "doublell",
"version": "1.0.6",
"version": "1.1.0",
"description": "A very minimal double linked list",

@@ -5,0 +5,0 @@ "keywords": [

@@ -18,9 +18,11 @@ # doublell

const node1 = list.append(1);
const node2 = list.prepend(2);
const node0 = list.prepend(0);
const node0_5 = list.insertBeforeNode(node1, 0.5);
const node1_5 = list.insertAfterNode(node1, 1.5);
console.log(list.getLength());
console.log(list.getHead()?.value);
console.log(list.getTail()?.value);
console.log(node2.nextNode?.value);
console.log(node0.nextNode?.value);
console.log(node1.previousNode?.value);
list.remove(node2);
list.remove(node0);
list.clear();

@@ -27,0 +29,0 @@ ```

@@ -55,2 +55,86 @@ import { DoubleLinkedList } from '../index.js';

it('insertAfterNode should work', () => {
const list = new DoubleLinkedList<number>();
const node1 = list.append(1);
const node2 = list.append(2);
const node3 = list.append(3);
const node2_5 = list.insertAfterNode(node2, 2.5);
expect(list.getLength()).toEqual(4);
expect(list.getHead()).toBe(node1);
expect(list.getTail()).toBe(node3);
expect(node1.previousNode).toBeUndefined();
expect(node2.previousNode).toBe(node1);
expect(node2_5?.previousNode).toBe(node2);
expect(node3.previousNode).toBe(node2_5);
expect(node1.nextNode).toBe(node2);
expect(node2.nextNode).toBe(node2_5);
expect(node2_5?.nextNode).toBe(node3);
expect(node3.nextNode).toBeUndefined();
const node1_5 = list.insertAfterNode(node1, 1.5);
expect(list.getLength()).toEqual(5);
expect(list.getHead()).toBe(node1);
expect(list.getTail()).toBe(node3);
expect(node1.previousNode).toBeUndefined();
expect(node1_5?.previousNode).toBe(node1);
expect(node2.previousNode).toBe(node1_5);
expect(node1.nextNode).toBe(node1_5);
expect(node1_5?.nextNode).toBe(node2);
expect(node2.nextNode).toBe(node2_5);
const node3_5 = list.insertAfterNode(node3, 3.5);
expect(list.getLength()).toEqual(6);
expect(list.getHead()).toBe(node1);
expect(list.getTail()).toBe(node3_5);
expect(node2_5?.previousNode).toBe(node2);
expect(node3.previousNode).toBe(node2_5);
expect(node3_5?.previousNode).toBe(node3);
expect(node2_5?.nextNode).toBe(node3);
expect(node3.nextNode).toBe(node3_5);
expect(node3_5?.nextNode).toBeUndefined();
});
it('insertBeforeNode should work', () => {
const list = new DoubleLinkedList<number>();
const node1 = list.append(1);
const node2 = list.append(2);
const node3 = list.append(3);
const node1_5 = list.insertBeforeNode(node2, 1.5);
expect(list.getLength()).toEqual(4);
expect(list.getHead()).toBe(node1);
expect(list.getTail()).toBe(node3);
expect(node1.previousNode).toBeUndefined();
expect(node1_5?.previousNode).toBe(node1);
expect(node2.previousNode).toBe(node1_5);
expect(node3.previousNode).toBe(node2);
expect(node1.nextNode).toBe(node1_5);
expect(node1_5?.nextNode).toBe(node2);
expect(node2.nextNode).toBe(node3);
expect(node3.nextNode).toBeUndefined();
const node0_5 = list.insertBeforeNode(node1, 0.5);
expect(list.getLength()).toEqual(5);
expect(list.getHead()).toBe(node0_5);
expect(list.getTail()).toBe(node3);
expect(node0_5?.previousNode).toBeUndefined();
expect(node1.previousNode).toBe(node0_5);
expect(node1_5?.previousNode).toBe(node1);
expect(node2.previousNode).toBe(node1_5);
expect(node0_5?.nextNode).toBe(node1);
expect(node1.nextNode).toBe(node1_5);
expect(node1_5?.nextNode).toBe(node2);
expect(node2.nextNode).toBe(node3);
const node2_5 = list.insertBeforeNode(node3, 2.5);
expect(list.getLength()).toEqual(6);
expect(list.getHead()).toBe(node0_5);
expect(list.getTail()).toBe(node3);
expect(node2.previousNode).toBe(node1_5);
expect(node2_5?.previousNode).toBe(node2);
expect(node3.previousNode).toBe(node2_5);
expect(node2.nextNode).toBe(node2_5);
expect(node2_5?.nextNode).toBe(node3);
expect(node3.nextNode).toBeUndefined();
});
it('remove head should work', () => {

@@ -57,0 +141,0 @@ const list = new DoubleLinkedList<number>();

@@ -119,2 +119,57 @@ export class DoubleLinkedList<ItemT> {

};
public readonly insertAfterNode = (node: DoubleLinkedListNode<ItemT>, item: ItemT): Readonly<DoubleLinkedListNode<ItemT>> | undefined => {
if (node.list !== this) {
return undefined; // Nothing to do -- wrong list
}
const newNode = new DoubleLinkedListNode<ItemT>(this, item);
if (node.list.lastNode === node) {
this.lastNode = newNode;
}
newNode.previousNode = node;
if (node.nextNode !== undefined) {
newNode.nextNode = node.nextNode;
node.nextNode.previousNode = newNode;
}
node.nextNode = newNode;
this.allValues = undefined;
this.length += 1;
return newNode;
};
public readonly insertBeforeNode = (
node: DoubleLinkedListNode<ItemT>,
item: ItemT
): Readonly<DoubleLinkedListNode<ItemT>> | undefined => {
if (node.list !== this) {
return undefined; // Nothing to do -- wrong list
}
const newNode = new DoubleLinkedListNode<ItemT>(this, item);
if (node.list.firstNode === node) {
this.firstNode = newNode;
}
newNode.nextNode = node;
if (node.previousNode !== undefined) {
newNode.previousNode = node.previousNode;
node.previousNode.nextNode = newNode;
}
node.previousNode = newNode;
this.allValues = undefined;
this.length += 1;
return newNode;
};
}

@@ -121,0 +176,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

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