npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

shapecaptcha

v0.1.7

Published

later

Downloads

29

Readme

ShapeCaptcha

Introduction

ShapeCaptcha is a not-a-bot test. Users are given an easy drawing task. They have to produce several geometric shapes: circles, triangles and rectangles. One stroke for each. The total number of the shapes is configurable, but how many particular shapes is chosen randomly. ShapeCaptcha expects very approximate similarity to those geometric shapes.

How it works

ShapeCaptcha's recognition algorithm is based on this work - just refactored and simplified.

Upon initialization ShapeCaptcha launches drawing canvas and returns a Promise to your application. If the task is completed correctly, the Promise is resolved. If time is up, the Promise is rejected.

Installation

Download the repository as an archive and grab the files in the dist folder or

npm install shapecaptcha

or

<script src="https://unpkg.com/shapecaptcha"></script>

There is no need for any external dependencies.

Setting up

Include ShapeCaptcha's script in your application in a way that fits your needs. Create an instance of ShapeCaptcha via:

const sc = ShapeCaptcha.create(options);

Then launch it when you need it and provide callbacks for the Promise:

sc.start()
    .then(() => {
        // yep, that's your beloved user here
    })
    .catch(() => {
        // either your user suddenly decided to have a cup of coffee while solving this captcha or it's not a human
    });

For your convenience, there is a possibility to combine those steps. You can create an instance and run it right away:

ShapeCaptcha.start(options)
    .then(() => {
        // ...
    })
    .catch(() => {
        // ...
    });

Options

Shapecaptcha takes just one argument - a configuration object. You can provide the following options:

const options = {
    timeout: 30, // sec, timeout before the task is rejected
    items: 5, // total number of shapes to draw
    container: '', //  css selector for the captha container. Any falsy value makes document.body to be your container.
    font: 'sans-serif', // If your font is not generic, make sure it's already loaded.
    bgColor: '#000',
    drawColor: '#FFFF00',
    acceptColor: '#00FF00',
    textColor: '#000',
    textBgColor: '#CCC',
    helperText: '', // In addition to the task, you can display a help text. For example: "Important! Draw a shape in one stroke."
    drawLineWidth: 4,
    successLineWidth: 8
};

Notes:

  • ShapeCaptcha doesn't set width and height. It takes them from the container.
  • ShapeCaptcha accepts CSS colors formats. For the background colors you can provide any falsy value as well. This makes it transparent.

You can change the options after initialization:

sc.setOptions("timeout", 60);
// or
sc.setOptions({timeout: 60});

Play with settings on the demo page

License

ShapeCaptcha is available under the MIT license. See the LICENCE file.