algebraic-captcha

NodeJS math captcha package with algebraic formulas

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
algebraic-captcha
961.0.15 years ago5 years agoMinified + gzip package size for algebraic-captcha in KB

Readme

algebraic-captcha
Generate CAPTCHA from algebraic equation
version npm license Build Status Commitizen friendly
DEMO

Install

Install package as yet another npm package:
npm install algebraic-captcha

Also yarn package manager can be used:
yarn add algebraic-captcha

Usage

Simple example.
const {AlgebraicCaptcha} = require('algebraic-captcha');

async function generateCaptcha() {
    const algebraicCaptcha = new AlgebraicCaptcha({
        width: 200,
        height: 200,
        background: '#ffffff',
        noise: 1,
        minValue: 1,
        maxValue: 10,
        operandAmount: 1,
        operandTypes: ['+', '-'],
        mode: 'formula',
        targetSymbol: '?'
    });

    const {image, answer} = await algebraicCaptcha.generateCaptcha();
}

Here:
  • answer - is numeric answer for given equation (10 for this case).
  • image - svg image string
![image](./docs/default.svg)
Using inside express middleware.
const express = require('express');
const session = require('express-session');
const {AlgebraicCaptcha} = require('algebraic-captcha');

const app = express();
const algebraicCaptcha = new AlgebraicCaptcha({});

app.use(session({secret: 'my awesome session', resave: true}));

app.get('/captcha', async (req, res) => {
    const {image, answer} = await algebraicCaptcha.generateCaptcha();
    req.session.captcha = answer;
    res.writeHead(200, {'Content-Type': 'image/svg+xml'});
    res.end(image);
});

app.listen(3000);

Options

Available options:

width.

Width of generated image in pixels
  • minimal value: 20
  • minimal value: 1000
  • default value: 200

height

Height of generated image in pixels
  • minimal value: 20
  • minimal value: 1000
  • default value: 100

minValue

Min operand value used in equation
  • minimal value: 1
  • minimal value: 10000
  • default value: 1

maxValue

Max operand value used in equation
  • minimal value: 1
  • minimal value: 10000
  • default value: 1

background

Background color of captcha image
  • default value: '#ffffff'

noise

Number of noise lines
  • default value: 1

operandAmount

Number of equation operations
  • default value: 1

operandTypes

Array of used math operators

mode

Can have two available values: formula, equation
In formula mode anwer placeholder will be put to the last position of generated string, such as:
5 + 2 = ?

In equation mode answer placeholder will be put on random operand position except last:
5 + ? = 7 //(or ? + 2 = 7)

  • default value: 'formula'

targetSymbol

Symbol which is used as placeholder for answer
  • default value: '?'

Development

Clone repository or its fork to local filesystem
git clone https://github.com/tormozz48/algebraic-captcha.git

Install npm dependencies:
npm install

Here are some suitable commands that can be used during development:
  • npm run build - compile typescript files
  • npm run lint - run tslint verification tool
  • npm test - run tests with mocha
  • npm run watch - launch watcher for compile source files during development

Important Use command npm run cm for commit your changes instead of git commit.

License

Apache-2.0

Support

Bugs, PRs, comments, suggestions welcomed!
Maintainer: Andrey Kuznetsov