
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
@vovikilelik/task-queue-js
Advanced tools
Library for organizing client API based on Set theory.
git clone http://git.vovikilelik.com/Clu/task-queue-js.git
npm i @vovikilelik/task-queue-js
import { join, all, put } './task-queue.js';
Base scenarios
join(...f)(x)
- like y = await f[0](x); z = await f[1](y); ... f[n];
all(...f)(x)
- like Promise.all([...f.map(fn => fn(x))])
put(key, f)(x)
- like f(x[key]).then(a => ({ [key]: a }))
Each scenario does not call requests immediately after creation, but only creates a script described in ...tasks
.
In order for the request has been executed, you need to call the ready-made scenario, like the function:
/* Create scenario */
const scenario = join(task1, task2, ..., taskn);
/* Execute scenario with various initial data */
scenario(initData).then(...).catch(...);
Each task
is a function that takes the result of the previous task
and returns a Promise
.
const task = (data) => doPromise(data);
const scenario = join(task);
/* execute with data */
scenario(data);
The result of the task
will merged to the result of the previous one. It can complement the previous object or overwrite some of the fields.
const task = (prev) => makeRequest(prev).then(items => ({ items }));
join(task)({ id: 1 }).then(console.log);
> { id: 1, items: [] }
Scenarios and tasks can be combined, and conditions can be specified directly when declaring arguments:
join(
all(
join(
all(),
...
),
),
isValid() && task
);
If there is no need for requests to the server, you can immediately transfer the finished data, both in scripts and in tasks, or return nothing:
const task1 = () => ({ one: 'Hello!' });
const task2 = () => false; // Will be ignored
const scenario = join(task1, task2, { two: 'Hi!' });
scenario().then(console.log);
> { one: 'Hello!', two: 'Hi!' }
/* An function for make request, do not mind... */
const myFetch = (url) => fetch(`https://${url}`).then(response => response.json());
import { join } './task-queue.js';
/* First task needs to id */
const loadUser = (response) => {
const { id } = response;
return myFetch(`user/${id}`)
.then(json => ({ user: json }));
}
/* Second task needs to wait result of first task */
const loadItems = (response) => {
const { id, user } = response;
return myFetch(`metadata/${id}/${user.id}`)
.then(json => ({ items: json }));
}
/* This tasks will call consistently
and next task will be accept previous result. */
const scenario = join(loadUser, loadItems);
Using
/* It able to various requesting */
scenario({ id: 1 }).then(setData);
// { id: 1, user: {...}, items: [] }
scenario({ id: 2 }).then(setData);
// { id: 2, user: {...}, items: [] }
...
FAQs
The easy way to implement a client-server API
We found that @vovikilelik/task-queue-js 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
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.