micro-wishes v0.5.0
micro-wishes
Core library for building Wishes microservices.
What is a Wishes microservice?
In short: an easily-deployable HTTP microservice for collecting user feedback about your apps.
Installation
Requires Node>=7.
npm install micro-wishes --save
# OR
yarn add micro-wishesUsage
The micro-wishes function is the only public API. It takes a backend function which contains the code user feedback (e.g. post a GitHub issue, send an email). The second argument, attributes, is an Object that describes the backend (e.g. name, version, description).
The first argument to the backend function is the parsed client input which will contain--at a minimum--an entry named body with the feedback content. The backend function also receives the request (req) and response (res) objects. See the micro docs for more information about these objects.
The micro-wishes function returns a micro request handler.
// index.js
const { createError } = require('micro');
const wishes = require('micro-wishes');
const sendEmail = require('./email-library');
const EmailBackend = async ({ name, body }, req, res) => {
const email = process.env.FEEDBACK_EMAIL; // where to receive feedback
const subject = `[wishes] Feedback from ${name}`;
const content = `${name} posted feedback on your app:
${body}
Cheers,
The Wishes Robot`;
try {
const result = await sendEmail(email, { subject, content });
return { status: result.status };
} catch (err) {
throw new createError(400, 'Could not send email', err);
}
};
module.exports = wishes(EmailBackend, {
name: 'email',
version: '1.0.0',
});The service can then be run with the micro CLI via npm start.
{
"name": "micro-wishes-email",
"dependencies": {
"micro": "x.y.z",
"micro-wishes": "x.y.z"
},
"main": "index.js",
"scripts": {
"start": "micro"
}
}npm startBackends
Development
- Fork and clone this repo.
cdinto the project directory. yarn install- To run tests:
npm test - To run the example server with auto-reloading:
npm run dev
Debugging in tests with iron-node
Add debugger statements, then run the following:
yarn global add iron-node
npm run test:debugLicense
MIT Licensed.