
Security News
Package Maintainers Call for Improvements to GitHub’s New npm Security Plan
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
@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
The npm package @vovikilelik/task-queue-js receives a total of 1 weekly downloads. As such, @vovikilelik/task-queue-js popularity was classified as not popular.
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.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.