
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
fixed-size-list
Advanced tools
Immutable fixed-length list (a.k.a circular buffer) with an event emitter for Typescript and Javascript
Immutable fixed-length list (a.k.a circular buffer) with an event emitter for Typescript and Javascript
npm i fixed-size-list
import { FixedSizeList } from 'fixed-size-list'
const maxSize = 3
const fixedSizeList = new FixedSizeList<number>(maxSize)
// Now it's empty
fixedSizeList.add(1)
// Not it's [ 1 ]
fixedSizeList.add(2)
// Now it's [ 2, 1 ]
fixedSizeList.add(3)
// Now it's [ 3, 2, 1 ]
fixedSizeList.add(4)
// Now it's [ 4, 3, 2 ]
console.log(fixedSizeList.data)
// logs [4,3,2]
fixedSizeList.reset()
// Now it's []
You can set initial values easily passing them to the constructor
import { FixedSizeList } from 'fixed-size-list'
const maxSize = 3
const list = [1, 2, 3]
const fixedSizeList = new FixedSizeList<number>(maxSize, list)
// Now it's [ 1, 2, 3 ]
Be aware that the initial list is truncated if it's longer than maxSize
import { FixedSizeList } from 'fixed-size-list'
const maxSize = 2
const list = [1, 2, 3]
const fixedSizeList = new FixedSizeList<number>(maxSize, list)
// Now it's [ 1, 2 ]
// 3 was truncated
FixedSizeList has an event emitter. You can listen to specific events. WARNING! on
returns an unsubscribe function. Do not forget to call it when you no longer need the subscription to unsubscribe.
It emits an added item
import { FixedSizeList, eventNewItem } from 'fixed-size-list'
const maxSize = 2
const fixedSizeList = new FixedSizeList<number>(maxSize)
const unsubscribe = fixedSizeList.on(eventNewItem, (newItem) => console.log('item added', newItem))
fixedSizeList.add(5)
// logs 'item added 5'
// later on
unsubscribe()
It emits an array of removed items
import { FixedSizeList, eventTruncate } from 'fixed-size-list'
const maxSize = 2
const fixedSizeList = new FixedSizeList<number>(maxSize)
const unsubscribe = fixedSizeList.on(eventTruncate, (removedItems) =>
console.log('items removed', removedItems.toString()),
)
fixedSizeList.add(5)
fixedSizeList.add(4)
fixedSizeList.add(3)
// logs 'items removed [ 5 ]'
// later on
unsubscribe()
import { FixedSizeList, eventReset } from 'fixed-size-list'
const maxSize = 2
const fixedSizeList = new FixedSizeList<number>(maxSize)
const unsubscribe = fixedSizeList.on(eventReset, () => console.log('list reset'))
fixedSizeList.reset()
// logs 'list reset'
// later on
unsubscribe()
We can add the third optional parameter of FixedSizeList's constructor and pass a custom event emitter
import { FixedSizeList, eventCreated, IFixedSizeListEvents } from 'fixed-size-list'
import mitt from 'mitt'
const maxSize = 2
const list = []
const emitter = mitt()
const unsubscribe = emitter.on(eventCreated, () => console.log('list created'))
const fixedSizeList = new FixedSizeList<number>(maxSize, list, emitter)
// logs 'list created'
// later on
unsubscribe()
We can subscribe to all events at once
import { FixedSizeList, eventCreated, IFixedSizeListEvents } from 'fixed-size-list'
const fixedSizeList = new FixedSizeList<number>(10)
const unsubscribe = emitter.on('*', () => console.log('Any event'))
// later on
unsubscribe()
FAQs
Immutable fixed-length list (a.k.a circular buffer) with an event emitter for Typescript and Javascript
The npm package fixed-size-list receives a total of 222 weekly downloads. As such, fixed-size-list popularity was classified as not popular.
We found that fixed-size-list 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.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.