Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tormozz48/algebraic-captcha
Generate CAPTCHA from algebraic formula
https://github.com/tormozz48/algebraic-captcha
algebraic captcha equation express formula image math middleware typescript
Last synced: 20 days ago
JSON representation
Generate CAPTCHA from algebraic formula
- Host: GitHub
- URL: https://github.com/tormozz48/algebraic-captcha
- Owner: tormozz48
- License: apache-2.0
- Created: 2018-12-21T22:15:40.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-05T21:18:49.000Z (over 1 year ago)
- Last Synced: 2024-10-10T18:24:47.757Z (about 1 month ago)
- Topics: algebraic, captcha, equation, express, formula, image, math, middleware, typescript
- Language: TypeScript
- Size: 894 KB
- Stars: 9
- Watchers: 2
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# algebraic-captcha
Generate CAPTCHA from algebraic equation
[![version](https://img.shields.io/npm/v/algebraic-captcha.svg)](https://www.npmjs.org/package/algebraic-captcha)
[![npm license](https://img.shields.io/npm/l/algebraic-captcha.svg)](https://www.npmjs.com/package/algebraic-captcha)
[![Build Status](https://travis-ci.org/tormozz48/algebraic-captcha.svg?branch=master)](https://travis-ci.org/tormozz48/algebraic-captcha)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)[DEMO](https://tormozz48.github.io/algebraic-captcha)
## Install
Install package as yet another npm package:
```bash
npm install algebraic-captcha
```Also [yarn](https://yarnpkg.com/en/) package manager can be used:
```bash
yarn add algebraic-captcha
```## Usage
Simple example.
```js
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.
```js
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
- default value: ['+', '-']
#### `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
```bash
git clone https://github.com/tormozz48/algebraic-captcha.git
```Install npm dependencies:
```bash
npm install
```Here are some suitable commands that can be used during development:
- `npm run build` - compile [typescript](https://www.typescriptlang.org/index.html) files
- `npm run lint` - run [tslint](https://palantir.github.io/tslint/) verification tool
- `npm test` - run tests with [mocha](https://mochajs.org)
- `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]([email protected])