{"_id":"@ad2302/slider-captcha-react","_rev":"2-92c5aead9f391f29830534d0bb619ea2","name":"@ad2302/slider-captcha-react","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@ad2302/slider-captcha-react","version":"1.0.0","description":"User-friendly puzzle slider captcha for React and Express","main":"dist/index.js","module":"dist/index.mjs","types":"dist/typing","scripts":{"test":"echo 0","lint":"eslint --ext .ts,.tsx src","lint:fix":"eslint --ext .ts,tsx --fix src","build":"rollup --config rollup.config.js"},"repository":{"type":"git","url":"git+https://github.com/adrsch/slider-captcha.git"},"keywords":["react","captcha","component","slider","puzzle","slide"],"author":{"name":"adrsch"},"license":"MIT","bugs":{"url":"https://github.com/adrsch/slider-captcha/issues"},"homepage":"https://github.com/adrsch/slider-captcha#readme","publishConfig":{"access":"public"},"dependencies":{"buffer":"^6.0.3","prop-types":"^15.7.2","react":">=16.8.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.10.5","@babel/core":"^7.11.1","@babel/preset-env":"^7.11.0","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.16.7","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-commonjs":"^22.0.0","@rollup/plugin-image":"^2.1.1","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.3.0","@rollup/plugin-typescript":"^8.3.2","@types/jest":"^27.5.0","@types/prop-types":"^15.7.5","@types/react":"^18.0.8","@types/react-dom":"^18.0.3","@types/rollup-plugin-peer-deps-external":"^2.2.1","@types/rollup-plugin-postcss":"^3.1.4","jest":"^26.4.2","postcss":"^8.4.13","react-dom":"^18.1.0","rollup":"^2.71.1","rollup-plugin-peer-deps-external":"^2.2.4","rollup-plugin-postcss":"^4.0.2","sass":"^1.26.10","ts-jest":"^28.0.1"},"@parcel/transformer-css":{"cssModules":false},"gitHead":"e8a94677244b9cd91276d951ba0ba3dd7e8fca1a","_id":"@ad2302/slider-captcha-react@1.0.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-z31WPNGZjwU1O7dXpxvXlj4yZRVBJffybZCWnyCtTKGdGfEwitbItKUA9d01RrEI0of8E1c78QFdWZwYyjDRPQ==","shasum":"79be1592e22b0367c769cd91f275289fcfa9b7e8","tarball":"https://registry.npmjs.org/@ad2302/slider-captcha-react/-/slider-captcha-react-1.0.0.tgz","fileCount":30,"unpackedSize":816543,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDUJCcW5YTAzOKoXmk4ivIyaqM7tLZAbfpqG8MKxKuAaAiEA2tJC+h3LXEPhEMjIsMbFGI3pxiToKgjEBQlMqun8ho8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJid+QhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqTQ/9EotNz4zTFDMCKvY0N0KT8HnCUwcFVGt5iDpE+Qyx/xHJV38N\r\nZ7WNDsKK+ZXvilqPbnhQeKconu4NuzewZTh2hDq7GRvziMtQbPLPA0tobS54\r\ntmMxrzRUv9hasqlw3D43OtiVebYS0G4XgTmxG1dMc72zRYc8MUdrzoD9wYIe\r\ndDpz5TNe9oQIJCFxCYROIWf1IFPNOWyiTDPbG5YpAuqwcDykSh02YGE87cYQ\r\nFUIU4lAp+IFMOl+rXpvETjgUxA9yiQv9h/s8x6eJ3QUExT2M5M47qafob7S+\r\nbQCNlW4iaLLGIet54w9C/WNEpUZ5dCQOWSMkL3prrnoVk8Dg7wszJSOy0HjS\r\nlWfYlv7pdORo7tkwJ/CBF20BE7DGwkdswVbJDEtk+Vj8H/OpEkohpv1zl8Ta\r\np6l653rkn/otHc42KPGifN+AMVUg9t4Xj8cWK6CCE7t3+oYqb07w092lu97X\r\nr8Ug5r5+xbFYZ/IGCHAwTbIHprvh5pLAovBXfMN9Wgdiaqnf6wqrOJQcHBUJ\r\np0wWdIfWjIdSlo4RMBGJQhj+VBswkTS994IUJrcoS6+gmr2FDQltcXslyuGn\r\n/eir3P2nKdm/r6lxviYXg7DCX7Q0qW1Rc9mX4Uwo+6oqAzTtHYVFTLkA8w0E\r\nldm6k2/MAFxCfKQj8CytRK9SabXr5SlJlH0=\r\n=Whj9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bung87","email":"crc32@qq.com"},"directories":{},"maintainers":[{"name":"bung87","email":"crc32@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/slider-captcha-react_1.0.0_1652024353357_0.8252952592095986"},"_hasShrinkwrap":false},"1.0.1":{"name":"@ad2302/slider-captcha-react","version":"1.0.1","description":"User-friendly puzzle slider captcha for React and Express","main":"dist/index.js","module":"dist/index.mjs","types":"dist/typing","scripts":{"test":"echo 0","lint":"eslint --ext .ts,.tsx src","lint:fix":"eslint --ext .ts,tsx --fix src","build":"rollup --config rollup.config.js"},"repository":{"type":"git","url":"git+https://github.com/adrsch/slider-captcha.git"},"keywords":["react","captcha","component","slider","puzzle","slide"],"author":{"name":"adrsch"},"license":"MIT","bugs":{"url":"https://github.com/adrsch/slider-captcha/issues"},"homepage":"https://github.com/adrsch/slider-captcha#readme","publishConfig":{"access":"public"},"dependencies":{"buffer":"^6.0.3","prop-types":"^15.7.2","react":">=16.8.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.10.5","@babel/core":"^7.11.1","@babel/preset-env":"^7.11.0","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.16.7","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-commonjs":"^22.0.0","@rollup/plugin-image":"^2.1.1","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.3.0","@rollup/plugin-typescript":"^8.3.2","@types/jest":"^27.5.0","@types/prop-types":"^15.7.5","@types/react":"^18.0.8","@types/react-dom":"^18.0.3","@types/rollup-plugin-peer-deps-external":"^2.2.1","@types/rollup-plugin-postcss":"^3.1.4","jest":"^26.4.2","postcss":"^8.4.13","react-dom":"^18.1.0","rollup":"^2.71.1","rollup-plugin-peer-deps-external":"^2.2.4","rollup-plugin-postcss":"^4.0.2","sass":"^1.26.10","ts-jest":"^28.0.1"},"@parcel/transformer-css":{"cssModules":false},"gitHead":"d1ca98e4ec1290720937850028dab2ec965a5418","_id":"@ad2302/slider-captcha-react@1.0.1","_nodeVersion":"16.10.0","_npmVersion":"8.9.0","dist":{"integrity":"sha512-K2Zi4g0ITVo9dsuYuU6LpbyibZ7hAKyCwrSYHl26/Mxu5lxc8ddJy/Rsh7U7DE7hH5vF9ETOonYKj+wMG1SDvA==","shasum":"b9e88f4043e46d096cc9bc395b94353815441305","tarball":"https://registry.npmjs.org/@ad2302/slider-captcha-react/-/slider-captcha-react-1.0.1.tgz","fileCount":30,"unpackedSize":816543,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGN9XA8QFTN+ZVmtzMz+HzhPMXTdf99mi9Phpse28LnWAiEAj21EuLlRhT0sNZE8g5vyXbIELVX11/izLc/4kxu1IMI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJid+1vACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEfg/+Pe7tW3SUhN86Qc7Z+1Gvu+qIeJ50ZMuoJemYdBGxG+aB7G52\r\ngZoMO+uHtk2fvFRsMxURb1lLDVDvW1oisL8jdx8J7Jd5VsVCSYw6u3WeN56N\r\nmDFNS4X8ohogRyYB3AOc2MtidVvD6xAhgZQt1CtXtqLMc+F8dFT6A+p9pq0v\r\n/2xQk4ioaY+bkgI3VuSCs6xKpOvp8fk0dwcUwBAcbIA7QXFPI/UEb4ypP8L6\r\nZeylq+xchBPn3nmajqu9pfvP228k1aULXRFu+Ou4gMWvQds+JANewQ323kPM\r\nQV5svsXGjndKio7/HDtATqIHjGvBTn+nEd/YQQXR7QFXGSclcKvTcEZE34ps\r\nrQg82NIN9qHYj67aPJgkLRgDodrMeTO1alN4xrTf1TnK3mY210hIgC+MvZCq\r\nb4kT5m6IrnAaf+6Q06qA9RUBDkyqfdWqpYztQh3cVUIwMRbYlnZCVNXLQ/dW\r\nh/dmDWifp7ktZtbBN0rj+bpY+n+hKU7vWP6gdcNZj6qNwdZlKiMLoIODWonE\r\nl9x+FAwCdestQRlMz/eUyCuznYmAEnGc5KJR7PQWT9BlTmvEUM/zEMfjCubr\r\ntvDxfRDivjWhoiiPT+3qKLsEi3tYv0FLBlBOy6ezJMwTHB3JxKRlf5C5c1uq\r\nbm0/Q/IkGIZNgQ8GIgtr10MHCrxFbK27JyQ=\r\n=nmvl\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bung87","email":"crc32@qq.com"},"directories":{},"maintainers":[{"name":"bung87","email":"crc32@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/slider-captcha-react_1.0.1_1652026734814_0.035011936026299706"},"_hasShrinkwrap":false},"1.0.2":{"name":"@ad2302/slider-captcha-react","version":"1.0.2","description":"User-friendly puzzle slider captcha for React and Express","main":"dist/index.js","module":"dist/index.mjs","types":"dist/typing","scripts":{"test":"echo 0","lint":"eslint --ext .ts,.tsx src","lint:fix":"eslint --ext .ts,tsx --fix src","build":"rollup --config rollup.config.js"},"repository":{"type":"git","url":"git+https://github.com/adrsch/slider-captcha.git"},"keywords":["react","captcha","component","slider","puzzle","slide"],"author":{"name":"adrsch"},"license":"MIT","bugs":{"url":"https://github.com/adrsch/slider-captcha/issues"},"homepage":"https://github.com/adrsch/slider-captcha#readme","publishConfig":{"access":"public"},"dependencies":{"buffer":"^6.0.3","prop-types":"^15.7.2","react":">=16.8.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.10.5","@babel/core":"^7.11.1","@babel/preset-env":"^7.11.0","@babel/preset-react":"^7.10.4","@babel/preset-typescript":"^7.16.7","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-commonjs":"^22.0.0","@rollup/plugin-image":"^2.1.1","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.3.0","@rollup/plugin-typescript":"^8.3.2","@types/jest":"^27.5.0","@types/prop-types":"^15.7.5","@types/react":"^18.0.8","@types/react-dom":"^18.0.3","@types/rollup-plugin-peer-deps-external":"^2.2.1","@types/rollup-plugin-postcss":"^3.1.4","jest":"^26.4.2","postcss":"^8.4.13","react-dom":"^18.1.0","rollup":"^2.71.1","rollup-plugin-peer-deps-external":"^2.2.4","rollup-plugin-postcss":"^4.0.2","sass":"^1.26.10","ts-jest":"^28.0.1"},"@parcel/transformer-css":{"cssModules":false},"gitHead":"874337955ab3dab5256242a9111f5c26762fa0fe","_id":"@ad2302/slider-captcha-react@1.0.2","_nodeVersion":"16.10.0","_npmVersion":"8.9.0","dist":{"integrity":"sha512-HujnGjh7WNc51bMquVle5gBVHtyu32/CTKCODF7hKFFMAmIrKnkSJlbuhtGSzeaQAxrN41ZdZpeLoYcF2QzALQ==","shasum":"b055eaa7347884e7fc13448c1a51c0133ac277b1","tarball":"https://registry.npmjs.org/@ad2302/slider-captcha-react/-/slider-captcha-react-1.0.2.tgz","fileCount":30,"unpackedSize":816591,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBtMOuejm13Jds/626km5Kt7ew3rDHa7kYRuFWovEr3YAiEAl0wURvPo5Mpoi1yjMzSS8dXcYfkzuzraLBoh4XfXbXI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJid/AVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+8A//byMJKeD3WY1zCXz12yszdOoIIVjBAmX0e8kFd7AobzxAwpYq\r\ngWRoUauS8enzdML7LBxMM1Ea64l/6PnuC+t40lHMTPZUs8PglMok7DmuCI31\r\nBxmca146TJtVKR5oMg1jeLkVnnHEl/HYkCb4OF5MWDhr6zxCq589+0KPhwpY\r\niJqiNfm7IKErK/R/NGBy9niGB6kFgNqp8AYXBBaSUm49Cxm9NuQEo880eFf9\r\nvipbaKLUDzkn8jgsl0IIzju4ZIBDmxb/FHSCMfyLHqFCPo14oBspaOpfmbmX\r\n41UiCDCorpUkHG8PA2xFCiYZGJOfFb97Ixw0nXnOY7sH9H5GbK/uwYac8vyS\r\nc+NRZoAGVOz2QTvQIB7lyQqzxNwmUBuUOdGonWTWjtL/IbdgLziPANXpCAqV\r\nvnN8N5MHfNRHZZ8bCi+vIDVxSQneu0adPsh2fXCXGU1N3mHrrUxowdfoDPhd\r\nJ8SuAWKNR6dvIOultKWxrfWNbc8ed78xzaq9Cls2WJjNExgJ8MgayWZxDwQA\r\nAHil/FCEysQXqAc4LuLbZu5vjHntrOAvHvzmGX6qLgl96deFBfcw1Sqzm8QL\r\nLlTBbWZDPTLBNoFJbH1Bme4xh1inX4rzclHogVh//bTdgs2xKueuQBJVZAf5\r\ntwC4BXkG1oVj3di9VvoZDGJUBkZlsWXDuJg=\r\n=nPHI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bung87","email":"crc32@qq.com"},"directories":{},"maintainers":[{"name":"bung87","email":"crc32@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/slider-captcha-react_1.0.2_1652027413497_0.039612583068423524"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-08T15:39:13.300Z","1.0.0":"2022-05-08T15:39:13.582Z","modified":"2022-05-08T16:30:13.872Z","1.0.1":"2022-05-08T16:18:55.103Z","1.0.2":"2022-05-08T16:30:13.786Z"},"maintainers":[{"name":"bung87","email":"crc32@qq.com"}],"description":"User-friendly puzzle slider captcha for React and Express","homepage":"https://github.com/adrsch/slider-captcha#readme","keywords":["react","captcha","component","slider","puzzle","slide"],"repository":{"type":"git","url":"git+https://github.com/adrsch/slider-captcha.git"},"author":{"name":"adrsch"},"bugs":{"url":"https://github.com/adrsch/slider-captcha/issues"},"license":"MIT","readme":"# @slider-captcha\nGenerate a puzzle slider captcha and display with React component.\\\n![](https://raw.githubusercontent.com/adrsch/slider-captcha/master/demo.gif)\n## Installation\nReact frontend:\n```\nnpm i @slider-captcha/react\n```\nBackend:\n```\nnpm i @slider-captcha/core\n```\n## Usage\nReact:\n```\nimport SliderCaptcha from '@slider-captcha/react';\n\nfunction verifiedCallback(token) {\n  console.log('Captcha token: ' + token);\n}\n\nfunction App() {\n  return (\n    <SliderCaptcha\n      create=\"https://example.com/captcha/create\"\n      verify=\"https://example.com/captcha/verify\"\n      callback={verifiedCallback}\n    />\n  );\n}\n```\nExpress:\n```\nvar sliderCaptcha = require('@slider-captcha/core');\n\napp.get('/captcha/create', function (req, res) {\n  sliderCaptcha.create()\n    .then(function ({data, solution}) {\n      req.session.captcha = solution;\n      req.session.save();\n      res.status(200).send(data);\n    });\n});\n\napp.post('/captcha/verify', function (req, res) {\n  sliderCaptcha.verify(req.session.captcha, req.body)\n    .then(function (verification) {\n      if (verification.result === 'success') {\n        req.session.token = verification.token;\n        req.session.save();\n      }\n      res.status(200).send(verification);\n    });\n});\n```\n### React component props\n\n| Name | Type | Default | Description |\n|:---- | ---- | ---- | ------ |\n| callback | func | `(token) => console.log(token)` | Called with token on successful verification |\n| create | string or func | `captcha/create` | Either the URL to fetch data from or a `function ()` returning a promise which resolves with `{ background, slider }` as PNG buffers |\n| verify | string or func | `captcha/verify` | Either the URL to fetch data from or a `function (response, trail)` returning a promise which resolves with `{ result, token }` |\n| text | { anchor: string, challenge: string } | `{ anchor: 'I am human', challenge: 'Slide to finish the puzzle' }` | Text used for captcha |\n| variant | string | `light` | Use `'light'` for light theme, `'dark'` for dark theme |\n\nLight:\\\n![](https://raw.githubusercontent.com/adrsch/slider-captcha/master/light.png)\\\nDark:\\\n![](https://raw.githubusercontent.com/adrsch/slider-captcha/master/dark.png)\n\n### Create captcha options\n`sliderCaptcha.create({option: value})`\n\n| Name | Type | Default | Description |\n|:---- | ---- | ---- | ------ |\n| image | buffer | randomly generated pattern | Background image used for captcha - resized to 250x150 |\n| fill | string | `#000` | Color used in overlay of puzzle piece on background |\n| stroke | string | `#fff` | Color for outline of puzzle piece |\n| strokeWidth | string | `0.4` | Puzzle piece outline width |\n| opacity | string | `0.5` | Opacity of puzzle piece overlay on background |\n| distort | bool | false | Apply distortion to the puzzle piece |\n| rotate | bool | false | Apply a random rotation to the puzzle piece |\n\nWith rotation and distortion: \\\n![](https://raw.githubusercontent.com/adrsch/slider-captcha/master/distortrotate.png)\n\n### Verify captcha options\n`sliderCaptcha.verify(captcha, {response, trail: {x, y}}, {option: value})`\n\n\n| Name | Type | Default | Description |\n|:---- | ---- | ---- | ------ |\n| tolerance | number | 7 | Allowed deviation from true captcha value |\n","readmeFilename":"README.md"}