@softwareasaservice/queue
v0.1.3
Published
Maintain a queue for your React/Next App on the cloud or self-host, from @importsaas
Downloads
7
Maintainers
Readme
import "@softwareasaservice/queue"
Maintain a queue in the cloud, for your Node/React/Nextjs App.
A zero dependency npm module, by reusing fetch
in Nextjs. (on node, assumes you have installed node-fetch
)
Install
# with yarn
yarn add @softwareasaservice/queue
# or with npm
npm install @softwareasaservice/queue
Setup
var q = new Queue({EMAIL:"[email protected]");
// if you have an Enterprise account, pass in your `APIKEY`
var q = new Queue({EMAIL:"[email protected]", APIKEY:"skip_if_not_given_to_you"});
Settings
| option | value|
|--------|------|
|EMAIL
| Your email |
|APIKEY
| For enterprise customers|
|maxBuffer
| 25
|
|intervalInMs
| 5000
|
|intervalInMs
| 5000
|
Usage from Nextjs
import {Queue} from "@softwareasaservice/queue";
var q = new Queue({EMAIL:"[email protected]", APIKEY:"skip_if_not_given_to_you"},{
onSuccess: (_, worked)=> {console.log('got', worked);},
onError: (_, failed)=> {console.log('error:',failed);}
});
export default (req, res) => {
q.add({a:1, b: [2,4], c: "str", someField: `apple${Date.now()}`})
res.status(200).json(q.buff);
}
Usage from Node
Additional step for Node or an environment that does not have the fetch
function
# required for node
yarn add node-fetch
# or via npm
npm install node-fetch
Then continue with the setup
const Queue = require("@softwareasaservice/queue").Queue;
var q = new Queue({EMAIL:"[email protected]", APIKEY:"skip_if_not_given_to_you"},{
onSuccess: (_, worked)=> {console.log('got', worked);},
onError: (_, failed)=> {console.log('error:',failed);}
});
Adding to the queue
// queue an object
q.add(anyObject);
// queue the body from an express route handler
q.add(req.body);
// use any attributes you like, that can be JSON stringified
q.add({a:1, b: [2,4], c: "str", someField: `apple${Date.now()}`})
When does the queue sync to the cloud
Every 5 seconds. This is configurable via the intervalInMs
that can be passed along with the EMAIL
while creating the queue. The maxBuffer
is 25
, that can also be passed in as an option.
Events
No not listen for events
var q = new Queue({EMAIL:"[email protected]");
Listen for events to your custom function rather than push to the cloud
var q = new Queue({EMAIL:"[email protected]"},{
debugger: (payload)=> {console.log('sending:', payload);}
});
Listen for successfully sent items
var q = new Queue({EMAIL:"[email protected]", {
onSuccess: (err, payload)=> {console.log('sent:', worked);}
});
Listen for errors
var q = new Queue({EMAIL:"[email protected]"},{
onError: (err, payload)=> {console.log('error:', failed);}
});
Licence
MIT
Authors
importSaaS, a stealth startup that simplifies the SaaS journey for builders.
Email [email protected]
to see how to self-host, share feedback, or to to say hello.