{"_id":"@ad2302/slider-captcha-core","name":"@ad2302/slider-captcha-core","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ad2302/slider-captcha-core","version":"1.0.0","description":"User-friendly puzzle slider captcha for React and Express","main":"dist/index.js","module":"dist/index.mjs","rollupVersion":"","types":"dist/typing","scripts":{"test":"jest","lint":"eslint --ext .ts,tsx src","lint:fix":"eslint --ext .ts,tsx --fix src","build":"rollup --config rollup.config.mjs"},"repository":{"type":"git","url":"git+https://github.com/adrsch/slider-captcha.git"},"keywords":["react","slider","captcha","component","puzzle","slide","express"],"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":{"nanoid":"^3.3.4","sharp":"^0.25.4"},"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-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.3.0","@rollup/plugin-typescript":"^8.3.2","@types/jest":"^27.5.0","@types/sharp":"^0.25.1","jest":"^26.4.2","rollup":"^2.71.1","rollup-plugin-native":"^1.2.16","ts-jest":"^28.0.1"},"gitHead":"e8a94677244b9cd91276d951ba0ba3dd7e8fca1a","_id":"@ad2302/slider-captcha-core@1.0.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-TL171oGTlA4KjbafomyQvYbD5cvWMEyEbCgNV/r2w3B+PO+a7McOGTpWAvlpilo+NCL2UlwalAZ8QP+9P19IaA==","shasum":"ab723b93732f1773ec1781c9d77aab1d819986b6","tarball":"https://registry.npmjs.org/@ad2302/slider-captcha-core/-/slider-captcha-core-1.0.0.tgz","fileCount":22,"unpackedSize":36512,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhrqpKIen65Q0cIdbG8Zu1geKM7xIAr9QOc14HpsvgLAIgXeTgeKm5UXqV7VrMHS/xX1f9NvN8XaDgXlpu6HRvQqI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJid+QgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9tQ//T+YB74PhzLc5zMiTC3dAcGkLtvXB0lKixe1bcK1CNR+A8v0B\r\neW8Pw5Ot+y3ZJMsTrNTDD6YFDPNg52UTDt9JoGyujFD4v0UBcOZ37XbKbv47\r\nGQY2x4XhCbdfwLPFSRFVKzM00jLTYMAhwbfrv5p/wrHxR6Ai4VEZUYMTacyP\r\n7r6mlmn+aarApkPGoMh8aZ2/x9cZnnUOIZJBXnBg9u4+wiFOItshEzGaXpyQ\r\nvff0lFhwZYeelnm7LNb12q7KQLGVRjsqeCpzi3AVgMMZLb8LcOlL22yzQh/F\r\niMglvMmpLoRX8a3Jy+RjwXGjuiy5uPIdbYrS2QWeor+gutTu7gaXerhDL9H9\r\nliUqvl+bEfhATg2bpuUAXfacsjk5CCrutySPooagBY6Lt14y2cYIjnRV+fac\r\np5Aehq4cDT9z85ScLb7yvy1hJGNVCxQvNF2tx9Kf+Ru7rktVF2R8E6uduWIz\r\nyv40sMYvzGUC+SuOUzZ5A03G/aoiUkYqkiS4vQHU06vK35mhLG/YEJ8ZBU3S\r\nCS2S4wQ8tI7CgSDZ+ugDZk6h+cAONtrZXy+00B9XZgQ7DUNExVwuw7fyu0Eg\r\nfmteBHD6pbIyzMybbBjfhNN51G025FUyGOFJFcIqIG9zZRrZkTprQyLSf5DY\r\nqOikm+jyfwHUvIYz3oWm7EkUsLREN0/tgM0=\r\n=26ud\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-core_1.0.0_1652024352378_0.8912547251214367"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-08T15:39:12.328Z","1.0.0":"2022-05-08T15:39:12.563Z","modified":"2022-05-08T15:39:12.710Z"},"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","slider","captcha","component","puzzle","slide","express"],"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"}