{"_id":"ayakashi","_rev":"40-f6990fedfc8ed44ad457042cf39dd14e","name":"ayakashi","dist-tags":{"latest":"1.0.0-beta8.4","next":"1.0.0-beta8.2"},"versions":{"1.0.0-beta1":{"name":"ayakashi","version":"1.0.0-beta1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"preferGlobal":true,"devDependencies":{"@types/app-root-path":"~1.2.4","@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.0"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","app-root-path":"~2.1.0","async":"~2.6.2","body-parser":"~1.18.3","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.1","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json"},"gitHead":"13c9a69359bc1b0086e367dadb6286568a223829","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-/Ywqqcug6AcmYE4NxLE9/6+migCLwHcTQbMc9Sn/78xw2eI4koc4e73aiOukJG8vC+jBeQfKdY17OZAV0esKgQ==","shasum":"49f199d850eb692bef52566b349b9b60d655d774","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.tgz","fileCount":63,"unpackedSize":229138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuA26CRA9TVsSAnZWagAAIvcQAKUL7EY0oaXFrnInfy4G\ny71/mv9bURyluolJLrZl5TGRqRpNTkvL7DzSM7JBKO6lGvqakgtlAHrtyhDf\nK9lDY7zTpjCO+OJEIL01hWmrtlPyUxpobBXu9y9zqNxCq+u+zQrMUsgPE+eh\nRdZ0Tvx8QsmzMWVnwOPQOKm4pdydyJS7IwPSU+q2wVldnm7QTe7KTbGzq3dS\nmnxyyWhStfXGQadaNTZ3SsGA48HkSXxhN+RnAAFBYEJ1TXobehSwmO0KCb19\nrxbOtSVH8jZUiIrd2CGtvyyz9wTjt2E4N6SDitxY/mKPUicXJX9tVsXumupA\nO8kDNMcMzpNeBUHv9Py0FAP85GLVtySjAfSqSjbe0XmG6svk1eb9BwZGZOIY\nunmh67YF9zlWgdTFqbZXNZNktpRkKtmIqCvAJNBYh0rPxUyayclRTa5n2rLQ\nGJiMa+p40yo6pNiJRwhrRO+ykfn4z5Of92gfBwysbG2WIi6MYQFuZxOpB469\n4YgpdCoq0eNNhFyuilETHtTr7wjo+FByPjUxUSSMTwNZngbkDC/oL6ORztRt\nurU5JIhYU+Unoa+fEcCXc009fcrwFy+Ffge6yPCAB+z+RGnA3CBWV3c4U2y7\nNegIyiaFRwa4XyWnEx7T+XspfybeEQEM5n4i1w1ro1zoBwgZSJCNKzbc3pxz\nEOoD\r\n=fmIU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkiZCnOa7/WHQsE/Q2gtcX+LU9ls8Nio6KzOO3hQ484QIhAJb2dhSy2tiMAIDqczC88RBokbJcpRU79rCcgdUH9/NX"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1_1555566009417_0.04791694636806709"},"_hasShrinkwrap":false},"1.0.0-beta1.1":{"name":"ayakashi","version":"1.0.0-beta1.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/app-root-path":"~1.2.4","@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.0"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","app-root-path":"~2.1.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.1","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js"},"gitHead":"1e0bf250e8c640b8a7dab53dd2cd1ee1c90bc3ff","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-k2lau1nSIzl3oNYJnZnf4TLNi5CjaZEKIEKOpitPk6M763c+jt78hH2Jq4HTMujHCG9M7AlW4MqhyOIes+TMmg==","shasum":"59f04d0bd334e834c6644ccb1a320689a928606c","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.1.tgz","fileCount":64,"unpackedSize":231492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuYrBCRA9TVsSAnZWagAAl5gQAJdlwPOPIisQfCIEStIa\nI6Cb9u6nWfK+6V0aqpMitnbXVv1NovoPY84mR3JgJvFW7QytzQZX+YM/apgU\nUSXJnLUqNamgJoR3JNZLCexnne77oKWzdG/gW0JAibNOuGvjo8KptJCA3gvc\nRGOho/Gve/CtTlwsO72V3bqscVjQntunDGcEGNWXf2ncMhxEbAYoHIW/NcAD\ndU93HjSajdjuwbkFPRwiw5qjXHw8ZfnnZxBVGctlp6U98L4GCEjUXVsU0R1M\nbdSdoP+K0fnUQVIVfMun/PcT8svqWBtUZ0baPR+ymZ+YosxmT1wv3jwDFw6j\nSgPcyIUonySFVxmph/hXEREPWEOAaGPZbBPK3ecBvAC15nGnVBIw+M5l8zhw\nDm5GoPtGeoIh/I3+zZBDdH03uLTKDuOQFdLt8+AVOp9dV2i0lzu9a7K+1hKU\nxYEa2pVlPj1khJLqNyx2Yo7meH9kG+1Y4m/Y6h0Kwn36+7RLzbhWJL0a7jlP\nShG0GVw33sgOH6/CvXsiGhMjp3fqqWLhLVWuCyJQlv1/iNFHGz7ri51XHt4w\nb0JI1gqOEMKC/YBrgtc3Eyji5OPtezngYmwG9lm6dOe33IT7mcAwaR+D1y9d\n8vYSXkO5njfl4GyERLcmFbw5wyd+czvnV3HtZtCQSD85ab/fnwUlKe5izNG2\nKkyX\r\n=66D9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQyUrHNqgqLItZo9vLdR5zFsrdTfPnfjA9kx38S3VblAIhAILp2aNs2nxF7VBx/7uuFJsD9taZcb+QIF1mOECf5g5x"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.1_1555663553115_0.8907963175704758"},"_hasShrinkwrap":false},"1.0.0-beta1.2":{"name":"ayakashi","version":"1.0.0-beta1.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.1","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js"},"gitHead":"801cea3e6fe9b94b5b95d4d90d76a0bc1ff868cb","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-LtzFHrtcH7sZI6xoDnGcFfCzVwGd3ScnDWvAJ73ghJuYl3u/Grc6e3WnBHqZZSeAxLALWejYDzV3kPk0iAtLXg==","shasum":"838084dcc85092cd94818174952ca090a720f2dd","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.2.tgz","fileCount":65,"unpackedSize":577588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvYQcCRA9TVsSAnZWagAAt0kP+wWxIvr2WCIXwt9vOrep\nLLWDfiacNbxqwNDMZoe94yJDISj8ucFhRRktzNIlUq3t/DNKSVGNSrbPATo7\nlwE61+QkluH6RbBgqbDjT2seAiKkseJcnnKixW00ixyl+enZtGnFPiw1zCHB\neZ8KFpWabXd6kV+Js+iqc4Nq4N0nM0Nft/n1JB5/GMvdeBJqYzNaiHWTxU5t\nmIICdTQNfruvNHaRfdy1JQ7wbxzz16qYm+tDD9n0DhOCYo3+xWFtpRt4WZ0T\nhqt2+1fU6kIYW3pXTbCpkGJ8w3JcwJ/o9o6Q/dJ8CL7BaZjRdj8ybPUXBF/P\nOcqpk9o7lXlxZ0vJ7A7ieEHFr4ifMszYhA+NLdhcpCDLtmiYv0qjYGYPRxfr\njcX14qAr3YnABu9jT23wOzqmQyAqxNiw72VE3/nD/O2Np5CMaXbl9gafQnxr\n1cVCaA7I17E/luyMbutqd3KKr/aiksH3cTRsAdXLEt8oajSdfZYOsrNMiWuM\nZ9mYV52Lx4yQ0yB1OpG5uX3Bd1ZT3B7Pe/ODbpkhpC6H7LOwIL6GndSx7CBG\nVIyMCMdtLhEMgrfNEqPAj3jr8sx+NHrnjjPohdKxy373GaAoH268ELRlpEd0\nAxiE5C7zF76mvlqMxSxV0lwCV6cGGL3yW6PQPWztjsarrPyeWBlRnLSE/iXu\n/rXN\r\n=spHr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFM+LSPcjD/u2njUIvpolR1YestI1L0O6OyzA25+DPoeAiEA+2wFmcxXIcwi5FE41agODuqReHaEWCXXMMG5XEwDv8Y="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.2_1555923995949_0.8974761687284412"},"_hasShrinkwrap":true},"1.0.0-beta1.3":{"name":"ayakashi","version":"1.0.0-beta1.3","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.1","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js"},"gitHead":"21bb4b08731d04cf2b22bc19da698abe0881d8d0","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-q8PLne3BBkmepCJskiloz4eJ1MhDGtcfudLFyX2qat7nvGs3oKHvMLM65GP7es8sjd7r8Vj18EbClNDsnPbaTw==","shasum":"733af92ed2e1b04bb699ffb8837520fee163d2d2","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.3.tgz","fileCount":65,"unpackedSize":578191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0aRGCRA9TVsSAnZWagAAtp0P/AzGwfZnuuu7txS6dJyI\n6DLoj2bCmmRAAWC9cf/RFlD+4pXQUMhlErumIgOcxaLT0Z5uFb95PdrBPOs+\nBNulBsICUIo5b2G6GswPuprA0sN5PS00v3bsnhdp3B1Qfg4gDMcnvbrrd0hS\nWoulwC50ORF1sV9v1ba+Oiad39rMPMcyyIrcLafdNu1OcpvflicLOQAqs6NX\nOY3DtnOCeOCLxK2YCI27SAIu1U1/miHFDLqetaMY7QueMpycoy5YrJsuwbhu\nTRtaPugT1KmevZG7BzyxFuQtMK6cF6N9GlYn746OSG3CufqFrMAcGhdScaCP\nxub/Wulz1aeNr6Vcf4dUa0ltBnrO3ckuzgIxZ0RdVPFmz28tLSqLDeb8Dvl7\nd6nAnIlGEYsfeaxizWgwcHIEoajwtAxHSZ+svbATvmAotNWhAxu0pOrsli0a\nNBRzZQG2Q0aUHcK2wXQGOcvSgMwrHt3q53nQ+XUL8FmABuYbfqoY/0371Sit\n3RmLjLXJN99pTJvbk37JIdZ0T8XLa1YPmRaQr1Gvum4pnOGUtHsQSg6OyplW\nLmiZHbn0iLg6OTmTOSZfc9A1pAa+/cn0Tm+0mwwJof21mXsA4RO4lp4Kioin\nFlZgsEfRsjPCxGWUstzw8vj8eWmqDxAqTOtxp+6QvEu1cw0UJP+d/80gRVCw\nZc00\r\n=e81q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNgpsfeTN2JvFRqUdgJ7if7Wk2pAJoGwShhhUsA7pAoAIhAOMeVRv37qhwmbfLBblrsD4TKx8g/4BubWG6D7ugakNy"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.3_1557242946892_0.28896523675836283"},"_hasShrinkwrap":true},"1.0.0-beta1.4":{"name":"ayakashi","version":"1.0.0-beta1.4","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.1","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js"},"gitHead":"c246954a877fbf9027fddfa4f6331fc5060e5236","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-5cYMTpWkOKq0oB85sOm4FqsEAOPKzErHzcs45kHFEDqMdHm++ptZov3iho/ds3ow4+bKgNK9ggZ23YiWsRat4w==","shasum":"0d77a95a43374dedff7f6f2a8ce070682faf9c11","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.4.tgz","fileCount":64,"unpackedSize":576869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0f/dCRA9TVsSAnZWagAAqgIP/Ak8RBXjSDbnPLjpgRtA\nQcmNBWnuDrmWi7FFXafySAPnd1FlKzFEdHvN3bfO4U/D3B2LpREH177OJ0Lq\ns+jFN5kdq186x9oC6+YCqyVlfWk4wzWI1MxfkTSCIrrSbsjsUJEonHmZW3Gl\niiVhcLvtxc+q9yAxXO4jmyLrXMFaJLit5qLm8XooBo3ViTc3/puHJIVboG83\nL0CORYkrUttmdb7pBztmxif54F7rRMjfqZhJgq4H8+ndTeeNNJbJsJcd70ex\n1sUDqcnymFzXOUAXi5UojvLRaNI38VhqJi/VhsKmbfoZp+pdqUB1DB61OCiE\nwyNt+LdZ3yBEHmq5ldPH41yjmy5GaAu+vWVfUwdxfzfB3GzGnK17oPF9H/Q6\nzPEnVjpMTifZ+F0UK7evGMdx4e0dkhrSh3p0aVWApuAqcg/8lH2k1y8D4MdS\n3YnsJfbXOaQoPIsdZnLDwejiRgPxE5y4Q+p51zzw6SIae7XHk6Y12RWWEkXP\nXGtlrNpSkevQ8H4RXxKP1+MxYumxrQUz2FaIedJakMe4PHIZ6q5hemEWrbll\n8SvOmlgT9dk1BgYI5VReBiez3bDB82WALAjNLmh0e2lyzWxMr+xDusGewFXg\nQJcIAof0r0dlNhxf7rU1AkpWbSszGKltFXz31q9fPfpMQvDqw6DZvyy65KzG\nZ5un\r\n=ZZHk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxv8zXjAo7gdoU1r4dleuueEmfErZgYI245F56qN18VAIgPft/C+PvBXjvhBE9APn4Tli+zr84thTTBazyneUKh7Q="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.4_1557266396521_0.5133705111905373"},"_hasShrinkwrap":true},"1.0.0-beta1.5":{"name":"ayakashi","version":"1.0.0-beta1.5","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","@types/backoff":"~2.5.1","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2","backoff":"~2.5.0"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"518aa3bd91cc1073a95dfd1a128ee493ccaf9d0e","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-Oc5KLIpYi0dWxa6YBrCgikqtvBUttvTXS9ahbf02BSaTQLRfwhl5ehL/0VYSoa5MtiqRH18CE5KSbk+lncNWew==","shasum":"0b64b9ac0456a6b0df4610c407594c4f3fc45000","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.5.tgz","fileCount":65,"unpackedSize":582228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1aEVCRA9TVsSAnZWagAAaCgP/2mH9ZBf5iNSzjooqaDA\nvvthekF6hGhQaHFUh9CPnmT5nx0+PoBurwGmkJs13TJrnVofuqGz/L8yzflg\niNo24Gy0GtrRo+jFrkGDI41pPLyfqDu+c6yofd8xs2ZSrM2X7TYuz/Ih2rVZ\nLS+DC33cbTEyZZ+rBDbevYVXCpbv4dVpBw8H5SSxBXWhm8l9223EHyEHy3YW\nQw0s/Gdp5OG1wa6PXOr/iTzward+ZBmBjsWfhX7RxfUPP8kweTlsV2EBfrsS\ny+cocWC9exd8QWp1aBv8LDGDNKzOv7JTdvvDTDTRFcXk8bMx2u5LIwRMkKr2\nwqgLEo7356Hmb9/5xNpRBI/e04IxDZzudoZQSX2BGXJKXT1SJrI6XYVwbD21\nrFUBIGMVh9WFHICoTRVBNIDZdozcT+6o1tqpqwsQsdu0lf3ovSUr3g0Dm/Dn\ntD+TUCJe+a//NyzB8ZccIaCbK42c9+Tlm51My0GxjC78/qS91iVRhVW4m2fA\n3VViSVctP4ADQTWGFrizNPyVyFzjWskt47Mm2P7Uz5eGd5ogtyFqmeoA0mYg\nx08lb+eh3pxb7Ua7CnPaZ9A3FxLiZdOepB/8IPMAB2UHOUD13ru9wtHvHlHY\n2b6ibQ2PkShNLDLlyt3waoEm8o33H34iQgcEIwbAyV0awjwUrGQhxY6tuPrt\n1mYu\r\n=k7uY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJFmjWY402iLgvyUqPbne94kjmQkpfg+nf44jnZKLZ/wIhAOmQTwNxqpBY0mfHBem3tZHxeLJmy2uPikvqM8hKFn4t"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.5_1557504276307_0.48041336566245585"},"_hasShrinkwrap":true},"1.0.0-beta1.6":{"name":"ayakashi","version":"1.0.0-beta1.6","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","@types/backoff":"~2.5.1","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2","backoff":"~2.5.0"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"2e932168671d9f43a4136c4a8b50076c59718a0c","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-ncS5wxo16tmGcsP9lX7hGB8CoPPwiIy4tQteA4bDDdXg1EInkZtKFRejaHENvj/N0cS5f9wUwzHmUhF9WuSvXg==","shasum":"ad88010358b1eb6d669268c5a2d8b1bf97d0033e","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.6.tgz","fileCount":65,"unpackedSize":582294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1uXVCRA9TVsSAnZWagAAMYAP/0eflC3/DNyvDEZq3NOm\n54E42tA7TW9CFO+O9swS6EHpVZDyim6gMq00wrDodKssxvYykEiXQAsoQgNa\n4ItJRN4HmnHKNZ6XkvPLec982q8rUxiSfdQvxxpb8Cga7cQ3+yrAGzohjOu8\n9+N1J3UOfZ3d0GwdTGDMG5rcm6f+2MQWVwQ3CIWxil9gRvGg12b09Z0u08QS\nAPUmSW7dWCKnHhs/SXzBvO/Kl+eR2blHdF2tg6cQi+aqfoxMHB54/cls3IfC\npq6yH07LyLVjGT2CZJN6TL2ILwGa1zue4DXy+GeOkd0CnCAzdIhUoV16wh8x\nY6NBZ+XtK6/00KA5bEbttdvPaREJKdmUhfVSOyXh/iZaztmu+XklBKVKFUIH\nmrXT0rmong3BAZhfCtOaKZEDB2JiNFrb25uSk6vAqxDvmHijoSgvS/qf+wId\nRe+lyiwsnohS4J51RPt6OWVncfI3q4pSFhXpTrh0V48/yRgZoWSI/WvwruHn\n1Fmj7q4eRUdovxtuTWNNsPExUfOGv3oG6pj+zuEXQqq9ctlMHArQgD+EvOXi\n/NKgMd74ufI+TrphfzDr/fp7tpartCz+BxRTbyIg73IHET+onTZ31JFI4dvC\nzrytUMTLUN3FH0GWt5Ac33MExHqC4luxK9H9CTppHnq139aGGuIkNp6XCwWt\nb7uy\r\n=y/S+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjNzOaeIKWPgOWPWfmZwwKrKhHUJc8tuhVzzMgVBUj/wIhAIIZBWrrMH45AmKEM0sndyreBwMHztiOyZROLko3WF9I"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.6_1557587413103_0.6057565498848096"},"_hasShrinkwrap":true},"1.0.0-beta1.7":{"name":"ayakashi","version":"1.0.0-beta1.7","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","@types/backoff":"~2.5.1","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2","backoff":"~2.5.0"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"91ad30c3b5cd23ca137d8c38b5e568fa57790942","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta1.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-AKf3vLIh4IqLiGmJrqUCTuUxPlwY+hgVtezbMtn3UgxCInADsfeu6vWU8kmJboP4K2hzuVyS/u8q6Ms8655vTQ==","shasum":"b9e85045efd8e4d8accb38d9a0d0729321748439","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta1.7.tgz","fileCount":65,"unpackedSize":583959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3t8QCRA9TVsSAnZWagAAaD4P/0f9sWLQwmomsP89p4Im\n6eNTQOclUsJhyHEs4LpYx9KAA87DmKkIJyRNLbO0EDQgO9kZ6HhAWruEvqva\nbp9ebVODDBSQWMFLntc0oJcyZujPeWJC3Na9ASZdK5g81ypBnpb3R57HvtjG\n6d1wu6st3RKuUTtDBr8o43tFVZ23GOt/rxvOh05/fc04gKRvGckcfg8an/VO\nDXIZXh+AWzaXH3Vw2nQKxGAQB3rM5dw/F+4pSWrqbHcIElC4ZI8SJEvef1MN\nROXoga46cU9kBUUagtQxCqzGII0lUdmx/uJBz7yMS50+/vBhW3A5nvdVOolB\nD5rwgcz0xLATkCj0rGDh+vwg6H9u88j9EXLxo7fQUCGPkgcpz7hxzlNBSi/S\nfsbbsY1H41Xm2NJT1Fu9rplhYLduji2rJbVbBLCZof8EUwqw+4GvmW89C1A4\nBuKd5pwaoM56KVSTIn9EzetRZLR3bxVawKCkWrUTtt+9h/yxVsWRJdMyc/4c\nuDcUIDfoB91I2rlsSLyW5vVlBW6Uid4JTSK+//k/wPI2M57WTBeWk4V5NwLy\nrTlMxKqAzU6qjoalWPd9Nqtzxviswx4H+z6sHSXUf00c+2UYSXg1+53OMmxn\n12rh7Je/I+UtfYKDLbZ6gRCeXY7urd3ouIpRIv4k3oe9TtJtsS9ajshbmzQ6\nXY9Z\r\n=el6N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBCiYxIi2aaAWPE/8lD7aqvax8zHzraFOn5+lsA6YYsEAiEA1KlwvAUns+S4jSPbrhUhKtpDWfVlX6zctAkKCm7kM9Y="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta1.7_1558109968263_0.6293802753030364"},"_hasShrinkwrap":true},"1.0.0-beta2":{"name":"ayakashi","version":"1.0.0-beta2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/decompress":"~4.2.3","@types/express":"~4.16.1","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","@types/backoff":"~2.5.1","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","decompress":"~4.2.0","express":"~4.16.4","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2","backoff":"~2.5.0"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"5a292f4cb9ae4c8638a5acbb8a29976778cda1a3","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-A6z72DiyoGSOwbaFD/WhkQP+aCidzO/LnJ+dJtCgOE08r1z2rsjQ2ioHJGxiy6HbzYQl39f+gJsx19jfnrW06A==","shasum":"37f6d691277344a500184910b4a462a608b32dde","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta2.tgz","fileCount":66,"unpackedSize":589726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5nEUCRA9TVsSAnZWagAA6VgQAIfNvvLxvVid5hijeVI/\nP6GFfdpkFen5I2kdFuw5pfPjcWkpzfhhb39dXAXY+Ei/JbJ2FbVZURgGYY4s\nDYibG/jBq7AaEzdBZEkW7KDcjf8KyOMIM4qBnwKn+r8d8dOfebNmP7RKUhA7\nJgDj3mMQW1rl/bPLdNEMLtHUwEl/IB3exU+p/KnsF8Y/oWcsn0YptZvr5BS1\n0FGXhF+xXVSZ54uQSZw6GqsxXq9Dk8E5G7Bk6lbDYG4mey8/AghEJOx2SdOr\nbYfJNgqhCw8H59HHXMofjGs21WsG9G0EDqypYxJVzK1fMxHLhUWsUeQ1h12v\nq6jac4OP8Sy5ssuZOoiZvE9W8n43Jcn+xannLW75fkFVoeAWgXeg+cN58s/K\njXB7NyMoIzHVd1vs99vff8dO2D0gzA/V8N56Ir1kEd/p1GmcSsCtq0z8RHh7\n9IYVCVY55RRM8lL+1dRF1EFXI45bauG5fnu9IChh1R0zh6DmvKDjEVpKezJU\nrEpAZpRtlYrOSGgLSVLBdAYaiRknm1f/Qfgz8nzO0IYxX3UDEMfXGtlO3PaO\nOVofOEJZgRhKelwEwChBi16vuXJEEfQz2Ku/9dtgqYtOzbiDgjnV7QgWg2tH\ne5R4kj9HExTSu2pxmtPkbk8DvapGBPsbeMcGoLK3tL188y7UeHGDJrKQ+QBu\n991v\r\n=/031\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6UeSFQWg1+LSheZrpECosjdgjb3zl6659BhOzzGKhmQIgS2SZIG1kWq/sA3UDmBbKxVGAqju/wP3smiyjSfB8qFY="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta2_1558606099771_0.29145480738328255"},"_hasShrinkwrap":true},"1.0.0-beta2.1":{"name":"ayakashi","version":"1.0.0-beta2.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"354e57e39863fd6a8798ffda3710d722b8e9674c","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta2.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-pq/X6U7zc9481LffC6hBN8v+GD3kUORqEdc8TkN77YQNmoet6e5dPrdw9vBozwp6e0TIt1cY+1be2TDKO7eDVQ==","shasum":"a1de039a8962d21d86b6ef61948e329d171b42a6","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta2.1.tgz","fileCount":71,"unpackedSize":603747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+iQrCRA9TVsSAnZWagAACwsP/ivam5iSAX2QXPnBE4ou\nthuaRGITqXCKEQbMBPIty4nxwbHYIIm2sM5FZahZRK4QbKHdfMKDzrUrOHGg\naSLqX+NaRFXAugVD1w5SHGnVK38cmQf8MjA9K0aDGPJxhN8BCLDUR7TT9YR4\nD3gp94vAyrHTldn+J60ilpYn7tKAGaEn7OLfD/rIppl/g4kUZD/I7x7Cutun\njlhJCuwdZecwcOQyOwiwsPsiK6sePsyBUqL9rlmZNX3kSInzmpigPyMgfKh6\nQtLTvxcxxgptRuNqcXSpUaq4GY2mdlFlDWg9aeqgzXTpsOQrEoZr5ALeZnrF\n4Zg6vSndBMN4PTce5Z4nAn6JmAKrHp1noe/a8nHxjF2J9jE49YHwuNADAGfy\nicgrr6Mx9jg4RLhhrpvL3X5zMySk4rvlN5XvEkePZeqEkH4jDLNoesiKawdl\n/U40Jg6PO3QzA5BWlJ8RGUsJsaCk3SCKefNLCzSk1ShX/2B9FkmA7TWhtqSI\nYbcSKRw87VNOkEfM1/Tuy9lFsBdRLOHNtnozNYM7jaby8xXCKAxVuftk0ch1\nVfTCJXBETyh93oiEatVazq95bukLZ8ooaA15QdfEclNzgPRUJm69r0FFGBOm\n9q5+jDGroScSS8HC0h4GcfAipo3Q3lXM5CHbrgpOm5QotFcc8j2iGWj6fbtF\nviPb\r\n=fEjL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDFAWpwUX9z26GMTtEzHpiS6VgA0IXpK51j9zVaX58TDAiEA0Vx/sFHCiyXGRu9Cr9mvVfby4ZIglY9Ro3gA4AkTWdY="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta2.1_1559897130349_0.5866088496201183"},"_hasShrinkwrap":true},"1.0.0-beta2.2":{"name":"ayakashi","version":"1.0.0-beta2.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~23.3.12","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/request-promise-native":"~1.0.15","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.27.43","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~23.6.0","jest-extended":"~0.11.0","jsdom":"~13.1.0","prettier":"~1.15.3","ts-jest":"~23.10.5","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.14.2","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","request":"~2.88.0","request-promise-native":"~1.0.7","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.1.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"b3fd76f85398de8c96c92e57e3c74d5af0c45912","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta2.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"dist":{"integrity":"sha512-CyZTYYq5rkVW//Z9mFYi+TsdjCItjUKW1u3LJ4EBiFSDO6ePj3llMhgbLsqbZyZL5cnLGinv88NYDMggsBh9LA==","shasum":"c43a5cf5fbb8be5d1d670024f293112d6e616e10","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta2.2.tgz","fileCount":71,"unpackedSize":604127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/AInCRA9TVsSAnZWagAAyUMP/RbDx94dcb/kTT2dh8fd\n7Fzm6XFc+bpSLZaNPZuGkNH6Bg8iZczNfReH4FJFHdIWp1NWQTGPfUJ6uG9Y\nyjtTpLbv8u1YnGy+g9hb7IqH6XJ2rbexZdBkXyrJEdpqxzTYDHt87xTQyRVu\nlMR4+qzRvFxTFG8GALAbOkS1kEyJ1OVJigIiian1eIUIx2Pnp1UZteRkjalN\n27JGHLYm2/PCs5KHrYABpbke+zn8NuIP62KiCXTz66WVGiP2BAcjjop3QyS7\nxPMUdxNlo6HaZ/xCuw2opT8XhpgPj6PW9JfxaDrxsZTS2L7rzi/TcbGCpPYV\nGVqdTt7qQTzTir8CuI00XTmga69VHcO6styeNfEPNBhpdwhMUrzcvLLcvuw/\n4DU3pek8x6LcrzEWcrFyMBSRkwB4OmAD3cSFNcVHPYKfae7QEE25kouCMxaC\n7CXk99oq49JRG5mXYU7fmRY6FU+53XZmHsA4Z6vVfkjFXCkfJP2bKym2HtF+\n5iXfoJTsZGVa+NBDD1ql6ocBcYvlscBqNyi5+4REULTzhxFEQs76cU2hb1/S\nxqVmKKV+SbHFJDxEkqSQRIpUgiVax2qf4mxyy62c14DKTzn3C2X9wcy4TCm1\nklyXrTzezzdU79NyknACxOlRWISRbjcpGTayC51/CsL2ailP/52Y+GSg84wf\nMiVZ\r\n=VGfj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCJHNbUJKOIq4zTLIzi/CtGT9EaPlhmZhUDnsmogup6AIgH+WiN+6yIqoUCC910Ig8dgHHN3eUNafVJLicCPOasRY="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta2.2_1560019494709_0.3341451125370747"},"_hasShrinkwrap":true},"1.0.0-beta3":{"name":"ayakashi","version":"1.0.0-beta3","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"49ee2a959b5c1f4b6f22db79543b00e780430f64","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta3","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-aXOXQQrYxeVICB6IaJluEkT1uayMlronu9FRplzmR6EV0Pc7N7wOGWwOdkrT87kCaZ4qidy28+tV18zwREkbHQ==","shasum":"ac96ffd8f23fcb428a5c56f2c1afc01d4d07c8fc","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta3.tgz","fileCount":79,"unpackedSize":628816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMJxgCRA9TVsSAnZWagAA6mQP/iNiNyqAkBSZ73O0r/qp\nqumF5JY/PtCN58S0f7F+QXMZ3BYNQ3HW9Hg7/4mAob+otAkm3gFsRkvOe9KI\nr3qC+z16AcDt5ekViMiv2MfPLAvljRhGcBfSuAdsXp1uY0u+mL9HFJGJYeZD\n+wTkRqXU9IyKrsB630lsPtjvel1VhJ7sBGxZuzWx9XCNSHntNbza521b7EJz\nvKcnJSOqJhqnnfazillktsm0+3Y8rtQwZmkfSXvMjXopr8v9xT4LhUFGhjEY\n8zxRx9G4GmnVaaQDLNrR5ggS6LxdPdqtBg5IqMoSExEa7mi9UyKBVdiJWLSu\nCPqaErfAxYx/A2M6Vf6jsQlN+YtBnuStO/hCt1bS+eSYUuNxl1SgbH9SWRiA\nvYob/1jYQRkY1UYYQnH/CauuWdZhRqn4WSjs6S+GpXNficerWJ5uFZvnUJoH\nXJCvDTjeGgeCcd+nBim6eGjDjbY/hMm1hCjFCVl0pYZtC38CiTBpmjrHJSNr\nKnp6bPCNfAWYPME2Bvhgpqi7I1BZV4YovZuk/Hyesjd+EZ9zEoCf/1rPBZr1\nFXvsmIA6EFlte74h8HcQ04wqknA+Fa01/Z96ltEltpwupSk977mEVNR3RG36\nO6fFgB4NptiaagM3tqeyDrZeDbvkLFkvNfsqwoMEp+T0UzHqzfPdvoh4Lcbm\nb4Ga\r\n=4E1j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBkGIuARTq4Irgty6CuvlbtBh3zf7yjF2hBCkUOsUgcgIgSiFsNvF5/tU0AWtzDOsPVeUhyxkk5QtrKL+641HXrM4="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta3_1563466847887_0.7630431875476815"},"_hasShrinkwrap":true},"1.0.0-beta3.1":{"name":"ayakashi","version":"1.0.0-beta3.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.2.4","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"515780282ba1d2f2b493ec48b502f9e6b319b566","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta3.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Y7gyr6sPzbfijP0uhKCqU+vH8f50IxF097J4oKOoNJZItU8jQyRO1N8Um6LGkw9yULHwD9O9SOtb4KwXI7KxeA==","shasum":"fc432c0a9eb38c82135a76155eccf0d4969c3464","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta3.1.tgz","fileCount":80,"unpackedSize":629974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNZF4CRA9TVsSAnZWagAAi6oP/i/9GCWiArOmfT5opL5c\n7GPU3mMT8RE9FvmIkntHrEorbeO9DDsI8n3XyRs1J3gByz8c5oNh8PcwpBu0\nL5zrCnnNpR3T4a08urHA08paz6noMqx8cxHtn7tH/YzVww62SsKxxnvm+qx4\nDP2VDfdxMtujb4o2SrRf5KOnO9UQ2aNwFhxq9X+RvEc8AGBWYJyu6yneTfpI\nVUtkNybw9ONKTWOkThu+x9n56fwqnfpN9ILaqUi18THnvlzddlPKjWxr7A5u\nNGCac4Ohf4iUgjDMdmXRUDCqsmAW1wzDnv8Agza8CZGsZqOXbFDq1swb060n\nrm9r3TBmDLVKNXxl3CYGyXn9WrJc4gUdYxtDGjGn/+isweTBewzDWONK7f75\nV0SgKPnFviF0nxItXi/5S5ppFufNLAs0mFjaLhXu2CpjLS+gbjPRwmBg0pka\nvYlUz2Q+J1NeeiyrvrLInSXitbSqvR5f0z587fHWCCY7Z/utDJY4MbioG711\nSc8bYW6tMdmR3uRYyDMRRjhcqJgKvq2MPxHji8gkH1nk532T59ooQxc+VwHw\nM2HZoRegIHv+ToRNyX02klUqrDYLuy5SdU0YtLBo8XzZY9DzQkQz0EdCHmqp\nAuUq4tNO56dlAL3Rte1i/zPVgFCcRz3fP6E0ftcCrkaE2J+uxvYfgw+gEpTY\nODbg\r\n=m9wF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEX1xTv7tuzPfrgRcFO9tHJM2G5oToLcm8ZGQRpWKMr0AiEAjT8g8xdzelOpSyGIL0xo0TBiKvS+xUau5G4D3E83vw4="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta3.1_1563791735513_0.6521089641558127"},"_hasShrinkwrap":true},"1.0.0-beta3.2":{"name":"ayakashi","version":"1.0.0-beta3.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.1","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"770c7ab31dacfb57436aad7a629c67a7e6e2b6ed","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta3.2","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-JU7GNqkq0a1Emel6lPOtC+gjKVnggAcbHB6yT/uEH4WGEUUsBM7XxcnruAUKjiSdp5BjORu+gha08lwXVwoi+w==","shasum":"da7db3907837b755cea3eb458ae2178101eed95c","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta3.2.tgz","fileCount":80,"unpackedSize":653739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdR1coCRA9TVsSAnZWagAAe4gP/3I6tdCO91khm1u+oPhN\nL1/AKMPR2F+WrheEl3BhfxfodZSujjC4qyKUSBb99ZYvdZHzY2DcUiM47iHC\nVlyuuNEyPpVvWvD+FJmGMb0JQYsBniJgUZNDRrMPJafg5YoGo3y+kCe+Y7kn\n25WoiF/BzXzBVqZasG7Oe4Z3NEPLXkcmZ2bHj+uavczwseM7cFGsDCTQnPoU\ndO5MX6uw0Xvh+9MK774M/6m9EfqO1S4Ejz7hyulx7hz5HViiiRIQS3Chjn4k\n0AHAYiBN8cf1hHOKzotHjjl2TD3OW3uk/XDCLPT6GXjw1wc1Tgle+VcB3oaw\n9gAbp99vbV4F9tTwjW7a4Whl1ZatizUdXatK79rDK9SeC7hgQ0lEdCIReKfZ\nZ8SuUJDz4rNhK0mhNlveOpQrG52aG3bwYJDTQ5MQbdCE1XXY3OPwrrrLYrZp\nUIt6TQkOMZGTdzPXgiB0FdNwvOnTpyTfMq5D02Y7IAdw6wX4PtGUBCVeYYfS\njfEz5q/7SIBvV7N8QNmqK96RhmAQfl4VpjL9ty6VStzMFL+ZySHGnRntz8//\nxpj5bSN8Zry5Zauyvu6muPS1q3i4Mn21iHq+n6AiU25zTDdSHvhgf5P2wd+y\nZCt+zJ+eMM46t1KDQtqmDdup/9lcaBcYv+zK5hJss0ozaMWSDYOaP+wDZieS\nAcrP\r\n=Jlsl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+4qYi5ryDDu8AOdujQpaUtuyAI6Zl1CO63y7jKkroJAiA3Tdphj+MhvWYrKHX5eVVNJ79hYr9DTxMiLpWhSh/dqw=="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta3.2_1564956456039_0.5651552531685877"},"_hasShrinkwrap":true},"1.0.0-beta3.2.1":{"name":"ayakashi","version":"1.0.0-beta3.2.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"770c7ab31dacfb57436aad7a629c67a7e6e2b6ed","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta3.2.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-JwKtLQrV1FtZ7vAM+Xyb7YOnJNJVPewAt77zJ8C7j2KYMagUHfrswE3iMOtUWoXLvEsX7RYnBMyzonUsiLrL8A==","shasum":"3561c5a9736d2cd55a8843fa05f5e51097381ae4","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta3.2.1.tgz","fileCount":80,"unpackedSize":653795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdR9vuCRA9TVsSAnZWagAAfhgP/283fLnYFIByJXfYx9i6\n39MYjWrUEBnbFdjBUU1w2cjW+QiC6zyvLtOSuuel2LK36sREBuTzWjZdd+CS\nkbB1V33kUuq5PrbN5uSlOElzjZcbMz8EnMIH8QkQ61/ZGoBbvyXysdGuoqpI\nNcYqpCaQXEIWMHtvfYHgCkhsmOQkI6h9szNeTBuzuSO12aqV1jSw6bIck7NM\nx088PlYJfJPX8Yiy/XNuF64DX4PdBppoelE8iT0RhNMh43p6H/2TeCq9JgJr\n45V3aj/DUn5jqKJIQ2aGDT5GGJT/6aczkm285wolghUldk/yJMP+TvGTY86q\nHmIef0wG86g2oK0A2+aMs2fNhSt3E2K+90/tWdq3IYNCdpzm4gFd0l7IfWH2\nCXzYSAecmP+xtsm4ySBp54SbQjGTmuM9AHpyNJt0znT6z//Q6BAKfRC+ecJa\nz69zo8OzJPzt4vG8ECO/e87iinwpaash2QVW+Avh7Mfje2LmUIqapBmgKZSp\no5x95rg5TPxhtEVmsBdryPV56bG6wIq0KJVSkAtArIQALWzGeS35G+jVWeac\nfdcig9S3kmXkapZbvaBoqzTW5rQe0IDxOAnHDs2jUZoabOAXYWlWNDaiP1VX\nThdDgLqu4LAnGO8YOnjVBdx9bf1WWV3rF95Z55s9wPPQ8QKn7cGlGVvKcz5T\nHx8n\r\n=+qGQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG04ypSHQSvdPcLC6nKxaKwCSIlhthYBsF7x53JAsOeYAiBHdHivdc81vlQVfw7zfjYFIn597xGuNK4RjNMd6vO0mQ=="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta3.2.1_1564990445398_0.04672523530987749"},"_hasShrinkwrap":true},"1.0.0-beta3.3":{"name":"ayakashi","version":"1.0.0-beta3.3","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"3fab9e1c2f393121167cc73b9d886a337bf26b99","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta3.3","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-62ekzYkQNq+LeCelI/4pPVyqNXz6skJ4cqUFTH6MpECXOWst1CXV3T34fTri84G2DWIfDp2PoSPG1MDkCY8a/w==","shasum":"2393971a88e552ba2196a2f2091ec655b9f24745","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta3.3.tgz","fileCount":81,"unpackedSize":658956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSdc4CRA9TVsSAnZWagAAowwQAI6QN9yRt/YUDMcjWOTZ\n/BHucH+vQhGzeAYPm03+0mPcBOl4M9QRx/cScwiOYgcZmBO+CHZK/BT38dIg\nMmpO9WIFwV3uIrTV1eejSibngKPoFQl7yZrMCegEmrZKC2m2qF2lF68rHGIx\nKojYw74ijaxlQnPdFRybmvlCJVrwBH/6V2i0am/rjZaDW9blStR8t8OmcWlH\ndli0x7nVax3+0QLRLBy/BdN1Egefnp4VtUcEusuPWLm6E7g8Ke6tyh4GhxNG\nI+Hes/zmQ6aOEnHDd6qykTnx/Jx/VTMJ2Ho0BLdAzEfVkWv3JelHnvqq6FyF\niEqtbi4hYEJ3M9ABM2qKXqxN2AotR6Qm3LDhBvEaYPAGN1t+DVYzdNVivJ2Y\nHZS9CUxHmFiwfi87ZkOjtE5NVUDlmSEeBEZJAsqwwi/H6KFclE53Ag11x2a1\neKaUrRMk+dW5eMBh2leP+hqKSZA07fp5KPXP9a/X5yzQpJ3McudIJEXyyRWB\nHxOUerPPpmrHCIt9djoy4qAPSEaOwNVwZzINJjUtd0PJNSiAfTG70Ay1LYVx\naBZ1I1CjW8vOVQM9hrU8+f8YusBpcuwtbWFdyiEHFYQC2BSy9g9iKp+b/3FJ\nx74s29BZe78wgCGNaYNyZ4pP85KVqYW1OZf1zPxvkKNy2xFatzi8KeBUHxfJ\ndUgD\r\n=MeVz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcoKQ9nQZ8sgmkUPJeXQOeuNhiJhks45WryDMK69SNHgIgEuaa/V4YPwqB+3ywCg6RG6uaEsWeWovJAk5MI4QEQHY="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta3.3_1565120312017_0.647068364851707"},"_hasShrinkwrap":true},"1.0.0-beta3.4":{"name":"ayakashi","version":"1.0.0-beta3.4","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"5e4d5049d075e39dd164439f6c97fc8fe88e9721","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta3.4","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-OVdr+IK+YfdUXkVl9eLEIgFx2KdiLFH0Enj08gfPcJ05PAeY8McJEVKh4CurzwGYzgx2nU9ep4v92dxBoSe+nA==","shasum":"2496c56f6bf95744af64871fa651e09820559daf","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta3.4.tgz","fileCount":81,"unpackedSize":659247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdToUjCRA9TVsSAnZWagAADIMP/1CNfIfdCSDMnR/2Qcji\ntuMAte57pBGC0diEeS9j/tE7S5I1vMFN0qjrhYL/0wwqqaOMkWhZD4knspFw\nPxAsQMl3K2usNGdBRiZiigLqBUTcUTU8Zpa7swIdJhJrabOCGIWDmcL2SXOO\nilEznCbJn0Q9UfPscCT31qzuS9W0TSrRiRorWrK43Q9PlXf6uWl27FLfC3/L\nXFowIB0mxXEbdj7AplDxQy+swIfAVPLJnYl27M91itaqVfP18ZjhW5HNbNOd\nGa26Vb3Mb2laUhwfeh9cFyc59dAj2vlmxd/EYxxT/uat8tpXVwjMOpJSRK4g\nlFWDQ8wlhntsRw99YkgUfqMRsJRvktso3iXw69j+LPg4iXqZmWLTctMTlPwL\nzL7XLvamM7gUWDd36lJweD5mk7b3N3KYFhl6xHhCx65KpObLAkxA6387Glz4\nROXDct77AEKP/il3k7Z/ypKgcN5MoMzD1RvC9VLNsqhRurD32YFPud0fJZ/S\nDZPHod/rbt5ne6N5Iy54yUYlmLW5lW+6k1jk4xsUngFBJ1w3jdB9dOzKput2\nsMbL0j/qdMp4zVPauOT6qe79RCDfMcCbx4x0x83s3mZcu1pXO0Dqtr2Eo1Kz\n1H0qvYMA2p34KBorrjnr4mdN5dUlEnuVh/Ky6zzb+dnAvqoGMQfqIBHtPoZ9\nPAQ3\r\n=Sn5D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0FzBKQEQDe4OWa6Zpi9LQ5EWxfCmWIkk6KKZKfKm3EAiBOJwj5ja89ZYynMgAKcaR9LAxAqETgiJDHWz9kR9Hswg=="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta3.4_1565426978859_0.7309763725872527"},"_hasShrinkwrap":true},"1.0.0-beta4":{"name":"ayakashi","version":"1.0.0-beta4","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"51e7d95e2789a1fe7fab8f185061110f53002459","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta4","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ZBEQTmCTLg+5eq/hDZ5uAvsO9XmgKqLmKv2EbIZm/rSKhqAFkR795xRv8gXtcahmUJcdDQ0PYQ7BlBzZi437Kw==","shasum":"42264582a53199124d2d5b78155b53c24488e80a","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta4.tgz","fileCount":81,"unpackedSize":659243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTrZJCRA9TVsSAnZWagAA8soP/3/NbVhGIn3Z0I3rZEOC\nV/lCtDkOHjH2i/uAVJ/NROKu3UnWYQJfVIfafioDfi3VH7C/Cx2kB+8i4CMX\nalXm7Kn1phEb7rL9MT5fXds18a9FrtwkLn7LNg/TkTltFF49x567IsYNCYdr\npvUE8lxRC+xj6yv1PpdEHZKOUTXA7KeiQ1gKc/qiNipI1IIHLFLxkQv+KtpC\nWANfe+trfStOdQoM6RuuhOsI8ldUCu/mmEqhiohzoaz8vN+86V2YL0HoOiet\nIYX+zUi6PYhQl+yUqg97HvSkApPnIo5rQdc10gh1zyWdjsVbaPSHRIoJNqT2\niPHKu1gaoX+PtRB1zXzp2dn3KwmKkLiJz+bKzmgvPcGVhaSgRUoxjA+XJTmh\nzjC2iKjG3gKQILJ9QeglDhxwb/hR3IGGhBzU0SQhSFjZLhqSjXUMbjnn08nm\n6HlKSqphfT6xjpGwWxi5bNwbDkJSvE4kffpanUQfsdufJFJPTY17wfF1XZmr\nk+KsINEq78MLDe5Z3xiwIqBaf+0/W1m1eAEyshwUwTwbgMat6553fNVEULJx\n3c94nmJB1pvE9lxnySLRDFitNzEui0l452+k0ilTTzG/mnSWDrPAp9qSO+QD\nUnbHGu4DNOS1RTIwC5z4qpO90EVpP17Ig28YCQq/5THDBI8ARf8KfoC8m4Z1\nIPRC\r\n=2Q8C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCENIa5tiPaOf2SnH0MLXlVPkrMNnSfD84jGdjo3ZvyVwIhAKK2FA6dC+lOoI1aNOicxRa/cLAHjLHSUdVD0upUHxRc"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta4_1565439561054_0.8424509213099982"},"_hasShrinkwrap":true},"1.0.0-beta4.1":{"name":"ayakashi","version":"1.0.0-beta4.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.3.1"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"51e7d95e2789a1fe7fab8f185061110f53002459","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta4.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Gf7/7cLgLc3p6ddXUOVi8q629G5VGH05LvE64IfEsVyidDAGLEz1tzHUQNd/YFy3vFWK+V7dZy/ZOFK3PAKeiw==","shasum":"e5dd4d6670a89bc533d14015c89a8f5cee879fcb","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta4.1.tgz","fileCount":81,"unpackedSize":659247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTrebCRA9TVsSAnZWagAASbQP+gJmhf55EGni/y7Z3BsT\nuWcr+a16CjECjIlT7A+50SyVwCRv4+agdH2AOBn70EQthjQW3b+rP/djkeCx\nINJSkp2KWXhZMtI0akKoHvcZo3b9nIJboQGCXR0RlWS79JOctogvDElLY2HW\n8j854/dwJT8ZIbbcyttXdDxVCVs+XZM4prz2h6hXIlAgdmjvMBppuG3EhHUx\nWliMvLNGffbxWEaE/WWemGYHPwu0AtBXGw8ablqVLI1rpb5PKDZqyuJQK7JW\n84x0XclKJZ2kKh7YOlRLXMbStixR+Zp8t536/vxZFulYA1iGhzi4cMZuJvKA\npffAbswn3/Kc7Y+JaClgmzq1CEy14RqPDZCpHARv0GLX01G+DnfVfHxvUxv1\nMrbEX12gZDiq3ADP/ohfRhIpFLpb1fXMkQif8hfUuWAFQE148E59H4kNRqVB\nn8MUqSlwv5aaZrLiC0Fu7dI35TXBRSF5R80b9JxkioXShs10PQFZh0u8+skq\nPXivKPOr1Ns3FnxZJj9jgmkFxRNW3Mvqdq8MS52StBxrFMLVQL56Rbge3wYS\n1K/okfwsTiAlhIUDMNcHrQW4IZYKVqAGo7ZVaASH7JrZkPC229B83baJhL70\nPFlh9I8r7CP/7OUKoG1qbrcPm6tLeFsFdwZF+Si4X9gA2AFHQACL5//uBvaa\n/ZFo\r\n=uKls\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHk88129u9/gpu4HJW+ZSJNE32fHDRg6ZFgM0csb4Ki0AiEAlTrtFporo0jSXIOOq1yZcsFRm7GuB3Mtj7e5I6bT1rU="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta4.1_1565439898794_0.7541491467988115"},"_hasShrinkwrap":true},"1.0.0-beta4.2":{"name":"ayakashi","version":"1.0.0-beta4.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.5.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"8f7ee8d23411edf29b6caa3c9277269a9f9579ac","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta4.2","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-cJuVuNOndfi25zOFg974792O+gV6XNog977ctG7EPdKbV47iNy1AH9U1aB77Z8z2f/ldPbgVpjEizXA8ndX5KQ==","shasum":"462b85e69c7ea8f1e6426e73d907ec96c3298133","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta4.2.tgz","fileCount":80,"unpackedSize":663668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVrBFCRA9TVsSAnZWagAABy0P/1AOflT8JvK6eYo98kyT\npwKNz4fmZS5QRY7xhfqwV7T/87InWpOKJl+zw2+dbdmy9kMSP94FTsrkWBpD\nJuT56mFn5+E5sGd7cTo/f4pbCbH1ogKtr73ES5hzzKa1YpUGONCqYceN7FT6\neLwUvlYRVYmCs0bLw1pECTb2uJziPV3Vl/2ALS/sqYrfh10eidjBwsc9/MTA\nVf5NUd/JJPgBHpCBETXI2XQuY0ZdaBe6iXqbMyM+7YViWcJ7jyPDjvRZ6SNW\ncvEo2ZyCtcbbowFg4XFLN39RhglKn/EcHG6dGYoLvsNaDnPwIOf6pSbVZEF5\n83CVqOD6RiAp4cJ9SfVEgKKOdwnqcojzwHS1QSacbvmPgr8B7GaupBYU6VZO\n/UAb7+r2Csbj2vH0zwdzDb3I5x6jEl6GE1Keq/qpr8uRUriRt10753/IT46m\n+D24M/0tXaLQl1BpM7IXR0hRIg+2VHJzUnl1/lURVOUSbvyfAh4k57Vgvqb2\nat3EhiWnILV8d+F0DzXHEP2Bl3CA+IaMnviCSNIgKDMVR4OaHVeqQqBi2X8+\nVNZkXs0hpSEtq7LyTe3n5cxc3hTJYkW6M6JZlIkr53ZHMT/VjKfqz3Al9ds3\nsUAlyIcRc42awxma5IDAKeJv09jofZHS/Ym4LlPZ5bwt1NL4qvkMWVt3VFlI\n2oYL\r\n=2DhX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfwAnwJRhd7J/Ej+XNVcJAvk36qTCXVz2gPdbzmRC53AIhALEASRx0XP9dSb1wcFzU+1hhBbJoort8VHm36zgMtXdT"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta4.2_1565962308471_0.8157450642449786"},"_hasShrinkwrap":true},"1.0.0-beta4.3":{"name":"ayakashi","version":"1.0.0-beta4.3","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"~5.12.0","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","@gerrit0/typedoc":"~0.15.3","typescript":"~3.5.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"8e09d72cac0954cd62ce66fce6e4da5d51d2a23f","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta4.3","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-b5f1V/8t2ZpMeE4M/A38+nbSavDH7u9i4Wap64aomqvoV02TGLO9qjvnO0dTj5h9fXWc1q+BPKgqktKV5XW3FA==","shasum":"a3c4e849523bd021362af1128ac27e4e5ba45930","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta4.3.tgz","fileCount":81,"unpackedSize":665510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdYqH5CRA9TVsSAnZWagAA0r4QAJbw07DzCag7zxkonP7M\nOTaISi8eIZEB/OyN3YgjeuEkDQuO3BfHBKq7z1mN5j8XVkOMjSX9TAiD4bXp\nVDZRK8qEP7UOhaDuKBpAoj/qTyPVY6AJGP6uzXkaA8nbeDqYJ/wxtlPbyb4O\nmQtuiyZCHwFX+q7WvY5rcfcyMHoy/oN2Cxua4lTOwPAYYDiwAzmDwPMeko/k\nrxLRSag6zR1X4WI3+P7yHl0/WzBRjEYeBRlN1+dQq7vsht+2bECPQ478NtB1\nIr2BQUo4maNt6SaFVa2etoOkt6/PEV3iKLXKO28OgG+1gxDuzzYC07qg40iC\nPMl7X+G48K2ObGxmuyhJuHifihn4s0OulS1wcSyVbg4a/8JnHoUZbQQbyyP+\nF+Ev9aqlvQAA4udo0TA7/VZARga/6yadqqHruAptyiKcuzxXUEwDSZRuUnG5\nFqhWSXAQdmXNE3mZ6mg+4vbEfY70hxzjrflcr/aeryyA+LbIi3kfxq+wUgEd\nQCKQdMZ7pi/9kLkGnEFIPjUttDpyOxs1OKhhDyt/sTLS7U4puagQLxtIQzrB\n5zCiIOr9lRCHT+tAQC+vCLQUtCS8pxX/yD2fclWx80nscM6c2TXDjrUTTr4B\nP4a+Vwd1PWNdqCi+GMhcxMebnJMcjJj+Nf0pfoLD+76DTTz6gYb+0ZaogiVG\npaf+\r\n=SVQC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwu2nEtqQWjbYZmtXdsqgcKI7x7ab8zSmYcd6YN6RQ7AiEAvHHttt/F7Mpq3Be2Xn0C0jn/o41EGm0TXZwkYoVA+Yo="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta4.3_1566745080425_0.9522778155808658"},"_hasShrinkwrap":true},"1.0.0-beta4.4":{"name":"ayakashi","version":"1.0.0-beta4.4","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"^5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.5.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"43d291b39ced2be599d661f0ac3e8418923e4110","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta4.4","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-v2hk7+0EStGRuZxvvlRj3JVc6Fgo6649iWwuqwQ5wus4RHdHw7ZiwfJCu3c9N/Bxa2UqEJhnDeAjuZuENLP7aQ==","shasum":"1a05acc20fa20740b750ee64e4fbacfbc58ebbc6","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta4.4.tgz","fileCount":81,"unpackedSize":667344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaCgmCRA9TVsSAnZWagAAWeIQAI84tU70e+p0+pNypH79\nm4WSKEnMR7u3Pa/oRYNqupuM5LFsCFif+i1qs8xUxR1+wMvTpD8y70LdH0qV\n1BmCXuMFmVZvX8ScFCnO97PbNWcbegCqx2vmd6oAuxaGXk/huBHFHLpDjaPz\nNnDXL0q0GPiECyXGR3wPNbUDYir3M8Nwk7CXi8/v3CSMNmjvZoNuFGnDlrwk\nEMjUNQO0mfJmu9DQyIX0l8wP0cBylAbvW43deGy+xXNd7DyetjZNbAVPSyb+\nxHif9svtdP4otGYGxGuftW3849hV/lmId9vga6yfqORWOj+3gKs3aM9TTWbj\n0YSSOjOK1cGsiHPxTOJKINR0v6HaEROF9X67G3Dmjvz2LKdwe/jubgyhnMMp\nZ8RFczLmo1mDxdMZX0/x6ECn00Dka4yrOAsQM2/yMF0gTrbWzfTKB3qZ+9OR\nDEzARej1hzgEFBBXlgHbPnxnpkvA07sL9+Tr5yD76QExUMTkrj0Y121gU17t\nXs8wrrLUp9Z0/3A46LKrPG2rHREvjkj8VyjVM+pUd2Z8ShEF/IH/GbH1yjHc\nStZv+fJ3kZIFm1Bh63+kVjI78CVsaff6AD6x72ifSpWFUqgt+wFfzzacZRQL\nGu8ol5X8znvpiEd1ZXljErbcm5Cv2sDwZ81+gmjR4m/cChjocvs6M32bmMwG\nG5Pq\r\n=zs3U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMrRFfAX8qxFkHJQTVsJmIeVG/9e7O0YSx+hYjUqXtqwIgPe7Hp22Y+w6tBpEDH/zGa5DtxTDUD6kSWGu9iiuMfvM="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta4.4_1567107109815_0.46157270051172206"},"_hasShrinkwrap":true},"1.0.0-beta5":{"name":"ayakashi","version":"1.0.0-beta5","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"^5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"1f8187112e090f19799d9316da0cfedff140339f","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta5","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-ie1IEHCdsHe1CO3rDRZ8frA16Z1vq5Eowy1nRjv88SDhAGo6acAlSIkx6qMTAFWRbcpBFQ1jdfkGzEbxGB5aGw==","shasum":"7756a98706875ba9a130ec16aa221b87335c1031","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta5.tgz","fileCount":81,"unpackedSize":671080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJda9cNCRA9TVsSAnZWagAAgmAP/0FDs8xPJONk2SmW4Wwz\nql9H3n5L19AgCSWZmeGKjJOubclXDEU060ewGMXyN43Lv1JThzGOvNwbk+XE\nduvLJwog8+RPUlgCN0Wl1FtEuRSCU++08wxQRNbrlfBCXNOigmvGzyYC8jpW\nHZ4Ghu6jXZN9eH4OHR1i/1Zb4zoW2pDSVjOt/go1VBbWYxbb8hHBTVtcqLdX\nqfg1DGIZbPshyKF5JEcxOjbe1p8WrnnkWXdga7pXm2fJLYcS2dOHyGIBK9Lg\nY41nQBaVfQppL2TFNI4ZRqr+ThmhaqeLkijWDNLAY+ezj5aUkmwFzINv3Gh0\nDMyWcfVEzGf82dLYUe7fmgNteLbvKa6/SGmP84soLLrMN4JmyleuwvQN15na\nWsPvqpv2y2hGeN+3UQ95YKh3SLDY+xF2vFbnEKmgyYSa+k+QyS62Kx/MwEAZ\neIVq0x+24Z9hIrdldmA9vgYTx2k+5PWDAKCmEAnkDFnaQIB2hyHkJkcGBO7N\nxNP2st2YaERo3lriKY1Yc+ZbMrXQIVA5FORnSRAuwYSK6w5XV+JP9j14AYTf\nwk6vu46RVVImY8DyhyhUv65f2u1y60unFsf0jX+EcA5zqkC9uy/uxzKlD3Wh\npHnV3vLhoMVYhcrz176bcTisE6qrIGyXpOqjYEjrQokJFtg7GG6doqBazbxM\nUTMA\r\n=yhp3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNOY7dfZ3evX85eQ77uLwFLPyvpubIYKU6X73wrHpoxAIgN7fk4Ems2J3yZGGXg+xBRc/lFAhskpPUM0qgZrTJsg4="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta5_1567348493187_0.8089573841773836"},"_hasShrinkwrap":true},"1.0.0-beta5.1":{"name":"ayakashi","version":"1.0.0-beta5.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"^5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.186","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"649997685eefba85aba57f49f1af4ad2e5ccf2f4","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta5.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-QLJcD92pAX09rj/XwL021kszc7OaKFpc624gENDldxdtQBeqAQXCttfCxCapW889QPHwHX4H3/etEQkBxirlzg==","shasum":"f302a728bd5dad59cc1cbd9a2e7c413bd420e6a2","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta5.1.tgz","fileCount":81,"unpackedSize":671360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeI7rCRA9TVsSAnZWagAATIIQAIURNvKgXtI4GDTpEFzO\nTLBWDAmn63AEgXlcU91/+jX4RZiW7rjX5J+K+IiNdRXDcc7LDNeqcztSoYrX\nzuTLgfnkFSSJ6N/6VW8WBCWnsW9DpItS0v0ZT5RDXD1xq2R9Mf/yNGOI+5O2\n30j+UsHK3eSqFH7U+KZceqG8mEKaPUtQIqvJaiuTjTFrkg4//9y4lhuvIAVh\n0Wr+lsDw2emhnvsOQ6NjYox/yKkVVpbNEP8soAcatL4bYbA3zRnoekf7FHdA\nql5iEYI6ns2BpCVaBUpUYhxhjiNDlIIVQlJGiwGJpbJyZ5JOVc0/MxwcfYby\niSaYFCgUB3fM+iGD8yOkWPdvegzIsqrLliVPKRlM1YwopDuFfRDq08o6VCv2\nZenwTE8FWPXWwbX+GYafTnL3CkuW4prt4D2nNbaKHYHq9UN0NjzRJ0C+94D7\nAWi9RyID0yvyaTD4dn9yC6vgJrJZBbstxedm5/h1ctj0AUGvGymfDqZKzGys\nYV4GqSaKaMWaT8AKccm9qw/ywOloDguX9r6tJcC2shKa1mFPQIWOxBPpgH2q\nAbNurnNY0Bq/9PFWaOFdOfuEBzmUI6jZPlqfB1pjwaYThXYxkeuS4/FSWfqp\nUBEqPXLa0/o4pPUJAtNH8KvsjnRc+NgoTHvsBxRuDmAM1wjRCQ+iWe8zbHFo\n2Q9K\r\n=5mVS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICoUlP2Nlx0pn46c+xjsKHIBUUHlJ+9CzDhYI5igFFIPAiBDpBaibSrfakdz/mGwqnshbhBmH7LudJKl1JFfzPeW/Q=="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta5.1_1568181994419_0.6025984312016368"},"_hasShrinkwrap":true},"1.0.0-beta5.2":{"name":"ayakashi","version":"1.0.0-beta5.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/sequelize":"~4.28.3","@types/uuid":"~3.4.4","@types/yargs":"~12.0.9","eslint":"^5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.10.0","sqlite3":"~4.0.6","tedious":"~5.0.3","user-agents":"~1.0.386","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"d0baf86974c409ab722a70b65140858e3e093a6b","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta5.2","_nodeVersion":"10.15.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-F3uRwQltYymBF+QvMpfFiD3CD6IWhPDa+INiE/FUhCSpyUUrMBd5J2Ubz/XZC2VG5m9dP2kqTrF7vC2pjOI8tw==","shasum":"274974c19e16e2dee842ee8c3a10576446d9e9f6","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta5.2.tgz","fileCount":82,"unpackedSize":674877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhiMsCRA9TVsSAnZWagAAHhQP/2rNE+gpI+LY2bpfsQgv\ndKbk7TnsoDPxDACcI5Be+vaDGUYqKabFdKLZf2g+Vb9UIi4eTPAmbTufM9V9\nHWulU1XjhGZKvE7s5TG9KWhCK40xLwE+ioJx0/d5xmxao5Qlwx2Id1uwV+WP\nlXAy0WoHRkoLI/9JJJjG/ACyOL9sC/GFbm8TYFe8w6Vx0yamVaGcQLMIhfZ2\nVIQPjBRzSIzX+JCsfcVYIlPjm5GFQg/7E2epqAQpOOcAGC39rru2yKN37CkN\nYS0/r+66lu4KiYDoNvdUlnPd7QKAxRW2ErFaqSaqrZ+Tn4sjpHpMDuDKuI/2\nMQsILGgg3e2cJa7f4lkJLfcwtT7OhAihkPMsBsqNgxrPABsBwfqX0STCr3d4\nzlLKv3qlm4fh8uhlP/YaDid7JQljKINs+Wo+vSnqETK+l3W54jlWIQZQuQlD\nUxDvTgORoeNKQb572SqOFruZlQxL2wE3ylE5AvaBf6NRtbBb3sD+ShymSHnc\ncyPJfrcrVK64Je7tOWPh/8+Bi/6gGTs8ykfRSfTW7wXIiatKB0QfhmvV0SVG\n0YmcrsAW+ckVX2iCiPlCRxvf5sWHatkxAN5jkb8rdyRPt0V5z9vagOIqLWgo\nKZ6nRKzUBfL2iGEW48V+AgLuoGWZLQcEndy+STRP5/ks+FnL/1sJg+elrGqx\npLk4\r\n=GpgB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDC1ABgpW++qddY2HKDxScwlWJNhZyzoDLYHVopmCvHcgIgYrN2NArZCYmgU+wLQTPxahFkDdnzQDESfYBYrtmj654="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta5.2_1569071915696_0.3002687084518001"},"_hasShrinkwrap":true},"1.0.0-beta5.3":{"name":"ayakashi","version":"1.0.0-beta5.3","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.386","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"13d82bf7a1291244e1e7bd2dcda5a5e6a2540fdc","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta5.3","_nodeVersion":"10.15.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-51jXzXCLjTTWGv4dlFGJYNnqNi8yqKbZURMAdLjlG8MZRIl291U7FMdyQYKoe7U5H5LgKljrzvcxlQMFdAPS6g==","shasum":"c476be0df24d1f34772c1a92da5a207a8397f6f5","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta5.3.tgz","fileCount":88,"unpackedSize":698754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmINyCRA9TVsSAnZWagAA4r4P/iSlw/Xc2alhLPdfrlXu\neDRJRG2R/ZV7vKC7yyLbZIudFNJNofKy/EinBmjHVxxPeFcgwYfX1WxQY8Sb\nW74Do7gbr/kvPLOr4toFtfK/tUauIysCTO2FDoSIqXkU+6x5PQGfE4S5SrOK\nN1pMgRFiRlCyy8GQKz5Kr70W9NDXSZy48bGAXAjcUYvNOoTh5VJgutAoIlhk\nho41pRM6g04PU1lkkoHtnbKoCNqQf/4mmuaeaWjsMe4hycFDskdG3FpLefxf\nvPj37B8yXENDZ0YZllaVYpdF3S1SGCkYzaqaq4z6jFy1w8gEzeHT81sItfL9\nRwd0RsJRephFlY7UbKgucI3TkVMkghjY2q6L8wXDGyTxGEaJq3Xz8zn8lp8U\nLcJinuqScifO2xdSYHeXQsifRZoLgYfT0BVsX/btyDJgfCBk93lldNAa6fbU\nmEwr4Sp23FmzGHuxjs6p+4ATqbztv5irV+RKV6IC4PzbSmVdrEF3toGtMX04\npIXhh3WYALc3WVx9rg8gvXz+pruod72Nl68KYF7FUVe3iOR910P17RHAsCwP\nQ3W5eLyNq+Ue9he8UxKf72nQvTwRZc248C5X+GzGdNZZclZbtoYzHAFyKj66\nuYDwkYKI3bfaCcraONT7ehmLHCdkzYTPQivrk4nDSSoKquCGi8+yjM9Fd5EG\nHBrC\r\n=7B1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvwNeoHII8Xt5Kp2poF6ouiUlsBgI7c2uRkBH0U1+fuAiAlpyflKwYOZbaAlEDCD5K3CE3r/sqr0fzrf45Anmu/+Q=="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta5.3_1570276209428_0.6525795102145981"},"_hasShrinkwrap":true},"1.0.0-beta5.4":{"name":"ayakashi","version":"1.0.0-beta5.4","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.386","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"9350e88f192cdd60f94834acf7f7ced86cd49048","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta5.4","_nodeVersion":"10.16.3","_npmVersion":"6.12.0","dist":{"integrity":"sha512-i7f5sq2albiP8ip4bFPZG1k/0yiOxNzs704qCT7Z/lK4IvMLh2K07+duAb1/a3Y0FLeGZw0oGlV5bML0Mrs/qg==","shasum":"5d3b5022a1676b97ebbcb80c1423394f88ba7bbe","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta5.4.tgz","fileCount":92,"unpackedSize":715338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds/fxCRA9TVsSAnZWagAA91AP/37Mt6VEKfZ5iJNy6D9G\n5SE1BdSjquZQBREWlqpW9d2C3q9/9sb2jwlRc1Cq0YK9hexC5ksgrebt3Xho\nE1vQrVqtfK26zzp3YIAmMqNjcErQSN0Cu0By0DnZYCRrDZCEwHv0zZoTqNlC\nxf3blafPkoWTNly31781wMJdu0cDkv3qFDW8sxbM19H+qcCKPdOzIWHn3b4G\nUaljr/ZIUZ2qy3V3LbvUI+V7CkO9oOTCb4yIo+12NxY1S/AU3XGqimNiy3TA\n/42k/oSUgNmP93Lb41l9DqY/uMGINQeEaOc1WRBVhaPfyY8dPfpxxW0IpTFn\n06SX1Y8NtERvVLJr8oTLdKKVr8UTEnfP4gHobphfDdYr9Ez4ldjfqxk+8iQg\ne9R8VfN0+t0u4Hsr9Ayuo/oaVu6bX+NrO7pY6qyzEjjJ96nDgLPoGLn3mEsY\n3MuDeSXyGEJeWkoKYDiyZhijTYT3gq/5VW3EyG1s5lDW0yA29E2D/en5mk+/\nbUX0FpyckkhO94I5BAotCLmng/g1VrUPOGUs9DEEq2HlqT8QhAlv8aUxKDOT\nTP8JMHHfpBSCgbgqSs+gXumk8ro/CCFH/OecNZ/BSVafDKaOapKct/BQ8KmG\nzhzp+nmfjlqWLeIxXmDm2qZe+7xWIlOPYt3Y+vFVGp/bxBDkuPNZJyVb6qqQ\nQodL\r\n=0MYJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBl3HDJ4rFcANXJnVoVa67YSxBLlifw4u/CcNnJpk4wmAiEA+uvFTR9luPQGcV3IEmuVszOsWpqc0MJ7fWaREDGY7Ls="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta5.4_1572075504988_0.6030493510314938"},"_hasShrinkwrap":true},"1.0.0-beta5.5":{"name":"ayakashi","version":"1.0.0-beta5.5","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.386","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=12\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/12/master.svg?label=Windows\" alt=\"windows build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=11\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/11/master.svg?label=macOS\" alt=\"macOs build\"></a>\n  <a href=\"https://dev.azure.com/zisismaras/Ayakashi.io/_build?definitionId=10\"><img src=\"https://img.shields.io/azure-devops/build/zisismaras/1566a1eb-ef19-4a56-b3f9-0b8cf919dfcb/10/master.svg?label=Linux\" alt=\"linux build\"></a>\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"838ef6a57a1d796e221a9f717653f1f2ad08ce99","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta5.5","_nodeVersion":"10.16.3","_npmVersion":"6.12.0","dist":{"integrity":"sha512-PyCKFfhIQgPlQeF906OGrff+rP1yh9xaZnjxkdpjqRJ8e8GgfJUh1CeL6Tlrw7YVvYL3KDRldmQnSuzpc9hiTA==","shasum":"32f9a2eb9f0f58bd8c77cbf2f75ecb3462e6b283","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta5.5.tgz","fileCount":92,"unpackedSize":715370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds/6JCRA9TVsSAnZWagAA5rwP/2otfI/gW0g5PwXtg/V4\nkwW69OVACt8lBa+K7GT20ST29nJiBP3Jp4IHBj9XCPPc1s1bmKQUX8h3meHf\nYZ592LPYA4ulUY/P6+mgi0G2dHu2kxkz3SW4GR26YD0TIhFU5W3fkv2n0reQ\ncJ8ynLDV/i+3AmQyVc2dxCL8ZLtmdyBIsiDRcNQbTSvcUtrjnyHB1IN+wfkf\ncRftUIFYmYtje6gJnmW66opqw6Xbho0B4638Z5nkK4KVWP/lS9mAPH015e0y\nDt/RPKff5y5eyrJPtIexoyM2q7cBgoX9OJYTfisbyZ5oZe4CC/MdNrZseVsO\nNxEcdczVLFNabjtQSIBmrOtZzT8wP3BSaUaWWg3NGZBaNLFwJroOdhbm6Wyx\n2nSJj99cSnUZN58J4uSBAzUNVHE6cNLNA71QBs2qeoIAtij3WYszS3dLB0eQ\nP9Ym55SGVys8i06B6kAKW8BE0svY3icKvki1Vkx/dzA2uVFss3AbhAfTlb7o\nstspSZINQ8HX5Wp5tk2HLYAZbcYG8hP4u3vxDqGJOHBIbCKSexGZ3Aha5C53\nnUMBXC1zbldrNDvqhRoCgpnOLcE/ypF9S6koPBiluNE44qIVtw1FhPSLCCoL\n/r/9J3YLlpcgPZZfqk4SkgK3JVz+FMIH0xL3uysf3PuXywV8345ZoZvZQSpr\n0u6r\r\n=AcAp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXnZSKoh1TJ+YZKAEJjlq8v1zvsAhbtxJ4qUfA9lnDJQIgVbTPBfAm513R8zwaE0FPD2BCWb/5ziP17KPWN9y4xZY="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta5.5_1572077192772_0.7202491837037828"},"_hasShrinkwrap":true},"1.0.0-beta6":{"name":"ayakashi","version":"1.0.0-beta6","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.15","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.8.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.0.2","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.6.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.3","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.386","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome ./__tests__ && node scripts/checkTypo.js && jest --forceExit","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"80df3f2d3252dae83bb7777fb49a468d99d21772","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta6","_nodeVersion":"10.16.3","_npmVersion":"6.12.0","dist":{"integrity":"sha512-hKTlRilIIQunuKPa1+4xpY2PBLGPpJi+ooQeP5RwvL4NyrzCz8h95Nha3ddyahS4BKBqiR/fJ8XjA3yLPuf+pw==","shasum":"0c6ffb89617d63eb12d4fffd20f39605cfd0470f","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta6.tgz","fileCount":92,"unpackedSize":715366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtCJBCRA9TVsSAnZWagAAfeAP/Rt+1GH/rM6pSbaUEUTO\nC6SKmaG/8rDt+nx00AzRNmDht1QSZykWZ7oHfKhedvF/JAusJtXLvA+pMn0M\n3Lwc3/5FLjrmc62GxFa3s8blLPNw9+G9V/Yyw8yYYpuQYjlMWD+iYPZKf7ps\n/J+TVrVPqLF50FVTuSLBR3lp9sW2KDXpqiJyM9bF466Isn2Nn1mLHZgtFpGk\nKU2qpscDTE0Tywsju+VQy6CkBagG6CkZ80ezZ6CI6ToblyetVpgMbjMmSq0r\nTRu8I8OOeMJv2ePv2wUb5jsi5TMC6TyrnG7+8tYle+oKrCw7GzyYX6G7i6sb\n1m1twtR8AYq0i3LhT38FnefEwPbJc2CrxwYAFqlPghb3grhDOuCxmxYrzzq0\nEecdSkF9jeNeYWtxiCUmCASaa9bBjQ4eOxEt6tGcDYMPXRtndXh1q/ZtDKoq\nSe903huNAFuz/bi0iYBfdaxOpwBohQUAUHixzMjHp9+KpKpq3atnWdBiG/Q6\njUzV9IlsctlXC8jtqW2jW7lurtrsdtzZaZJupAZCqwPzFSJUHjWjLyOMSLUV\nqU/CtKlqNBPFb3/5b5EGbaO9VNq33h293jiZ/Jed1zIM+T7I+/IVpockui3a\n+n4jNWbUJWDu1yfhEqOFnTT4u0A4qztekR0sce6ezPKJ/fn7El/QKeOdUFDB\nWA99\r\n=0g+4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDvT5gLd9GG25oY49CpzPvBB2K5uLsbpzoycVeQhhndHAiAk+t2si7jeICb7w7QtzwSVigcHFJ9vhqQ7gshavXZyuw=="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta6_1572086337125_0.08195506694819854"},"_hasShrinkwrap":true},"1.0.0-beta6.1":{"name":"ayakashi","version":"1.0.0-beta6.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.9.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.1.0","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.7.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.3.4","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.442","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"39de4b25443d7ff1ede0e85f1fc7fec379ad568b","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta6.1","_nodeVersion":"10.16.3","_npmVersion":"6.12.0","dist":{"integrity":"sha512-rYhVF3V/63QOz32YfVznZhK7gc5yzD7t8j98Gsun+8+uY9lp5qUbwYadhXLI/p5Mhhz5jLY0wZQBLLIKWxBAQQ==","shasum":"00432e1536a8b02ffd694b911ff8fe185d570a86","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta6.1.tgz","fileCount":94,"unpackedSize":765548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdz+HfCRA9TVsSAnZWagAA1/wP/2eZAD33Br6/xheO7Z4C\nF6zCbGxV2fgx0lafB++aqSqqj4Y3aocawDzXVnEiuREO0/saMKinZsfDwdb6\nW+ldZX3ebUzFTZPCrEZDwn/5sAKyDefdKeEJnFfgzThfZNe7GA+uDvppFZeT\nGDUh2n3z5KJL3lHCibyMJwU3S78Nd61ErLQlyKJuqtsVMeiE12FO92TrLFUE\n8viOShbQOEB6n4A7UaUkPW9CtjEOh29oaptL2aaUZ5ubd+g6aXak0x9TY2Wu\nfRzHjNZVqGlilXhw/L3ldsmrVEcCQv8SIWwzsHrmGSvia29xThL+mec5gF8l\nd9TczY4jlDpmY9h8oWYES+mapSPOPShJu9r+1UKnX6kXUOddM8NxTodd1mU/\nMr85RQVOXMSYpwF7QcXG4iznU96WvHR6LGwW1jCPWOpTWpEznbpX0y5zidEn\nWabCawmzNfTdCtEJLPUyvpyTB3V0oQfGoEwPcnBsIH3TXFci3BYXel0oW4qj\nuBR4jktPq/WZN+sO37mKua8ZfeUpvOWhhJBvVZ6e33Q7v0DFOz0FS472aWuv\n2E8CuAPfkwbqYehbYslN9yIMfcxBvhiYUANTNZQRk4EFYwQ8GUQgerTLqSBy\n0fj8GoYPwQZf+68fdQUKwUzVTJ1nMNAzbkugwq20t6yLOpaMxuK76WFDdKiu\nAt8c\r\n=MaRx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHgr0BmaznPQ5RMyHDvLSp2A4GIyA9Inn/WQo5akVFOAiEAvrnH0CBLg1aRgNYJlM/AITAYdxhMTv92gB47yKPYcns="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta6.1_1573904863189_0.9454760690917174"},"_hasShrinkwrap":true},"1.0.0-beta6.2":{"name":"ayakashi","version":"1.0.0-beta6.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.9.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.1.0","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.7.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.0","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.442","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"14fd791a7b9abac1b743658ae3e457ee37e27959","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta6.2","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-cCYLdnhE9nUvV4K7z1MUKeQCAqH4+jhgNuRh+lHAPFDzRyq+7jty2O/JA6mHVZOd+/tFbwHOtVCcfstPxt/7EA==","shasum":"50d7f426b1eb1deef4f7c934616aacbb8f771e08","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta6.2.tgz","fileCount":94,"unpackedSize":765617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2Pb3CRA9TVsSAnZWagAAwzQP/2ppDx6zFNKHSgsi/TjQ\nEnSKI1RvbufAtazOeRgT4htFsNXCylFnKVifRuhQQ+4IlHcebghlipttgWfL\nsgJh1Ehns6aO488epDfzTImB7guYl3FgZSazxe6prdt6aUUHL3UGskRbyqS9\nNYgaMcg848esQUPi2r93FWUBKFMSpIdBG6YfvX/cnIooqab0WU1EIhnQt3u8\nbafIB7O3KEqh8MXJAry7neMOoIZIHnyMZRsou84F4zMg1LnBqKqPrNcwVT95\nR6goVfWnnxQ06ihGPEREB5cCTSRVry5WMzRz9HTIIxY0Jqsxbr8atxI26akC\nOielUWTx/6FOncBcaS4f4zJbu7eKP2LWtKJK1jsY8/1jiyVoRqE0oQnPSHiQ\nlPNGBMPQZZperKpRWTb2QusJx2b3+ZmjXLvIlNtLjZww9LcdZ2u5ow6GsWir\nfWO4NUcPalU3elfy6OQA8K+OEBHDnVdk5JmCHQ0nL2aLfaOeXnTkQX2Qhr4I\neVV2vdjkHBbqtbtq0CM6wk5dZJ5UbWlkBQ/T138X/igmquEQX2cpvOmLbIYS\nJpfHOl0cqTsIZAQ55XF8qRw9GvdVTraQYLqRBXX7DRlNyA4JbMECqhdj1uk0\nDGexmPO1e7o7f+MWiuNmxzQAnyGafRUkqsjthvDu3AKMAwiikbBGk5oU5Ugj\nfZBD\r\n=9Qph\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+CAuSI2fkhXhqIl/dFXCO3q08FV8xemWP/kwkcKsPpgIhAIsvxWfd1pLMcGjJvdxUkqjiliZ9BQb052xC3n1bc1Jr"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta6.2_1574500086779_0.12564567819068562"},"_hasShrinkwrap":true},"1.0.0-beta6.3":{"name":"ayakashi","version":"1.0.0-beta6.3","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.9.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.1.0","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.7.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.0","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.442","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"f370fc74bc22db1c5a80504facf8a177106bc09b","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta6.3","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-+np7XYVBXwWlYfuCHHSX6izXWrljOa3YfYnBQuvdpHiOSvcSkFoyK9kyrpvSUvQld5MRn/m9UYiaRpeqgASTxg==","shasum":"a331c7bfc3eb2d5d910d91af308f3338121c90a1","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta6.3.tgz","fileCount":94,"unpackedSize":769646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5UJKCRA9TVsSAnZWagAAcOIP+wT87Rsmv7TpqYfx6axj\nms5wlHh1IqxUiSc0EGG+3Rv+yWaw5LrHUfNKtryYVTol7Bc05mG0t7gKTzI7\njRNZeE2sR4TvHG/VG7YofIEWY8Cad3R3W4i/gxUl7afU/b9KXPcPZxFyQPrJ\nKSnvACohvJtlY8OBgs9BDorRWoW0lXjHboVxrnCd6MbjoZ9UdVxNs1JQJXu3\nHwMnnXBCkKcGHgCimHo0keJb4kmFX9JUQZScksCxBlzBWNngR2hIRua8IRcz\nHfp3Udk6KvZ92oNuocA689rNdhVXxHI/6dBKqmaKSaUzzSuP1AyA8+eFysK0\nogfxIxAcpaUwKZDbloHlHbrMKEpi9N+uWIi3VFFmMQMLZUMaF6UCrJTjOZJ+\n5YRejDE/OwDzyBCNi08Otz0T6e6cpO5xesD1vwEMjf3TlyuFGQEXp1GQZk8y\n53ToYzpCciTfMcpKJQSY91ErOz+SZoZiPcneLkJtLBduAbGOFF4bScKU7TEq\n6lm46RjMn9ekktc5epubeM/zoIX11YLpbdcOq+RH207rL7oyXydkWmS7Yr1o\n9irz4fc4jhpHE6YC+TKZJe278NwgGfJUmYdFrxtKfxEMXuVbhWCYkbA1ldSZ\nihLKTfiqXKprgD/SPE4o1e2de1x47RY8BptHK6YkSRRQPmUfPxvKT0mOUD2V\nuslL\r\n=tJcK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIDeZTI2bZpo7wbfj+2q2cAtsZlj6spOjQTwvly5CVA8OAh8E/Ggw98E82PbpAKXnu6Cp+izcI25kdRNUo6xFUvze"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta6.3_1575305801890_0.519983833016811"},"_hasShrinkwrap":true},"1.0.0-beta7":{"name":"ayakashi","version":"1.0.0-beta7","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"./bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~24.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~24.9.0","jest-extended":"~0.11.2","prettier":"~1.15.3","ts-jest":"~24.1.0","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.7.2"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.3","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.27.0","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.0","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.0.6","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.471","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"a4f261ebb3a2e27fff5afdf03e201dd9c5ca33f0","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta7","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-p00wbF/wdV5w9of81RJsraMvzt2yQ2GXrYdR1pdHaB6NZHxFG1GMnEDf2+JQmglg25orGLx7U6mqWl3VOaxRrg==","shasum":"ecdf28a790076e5f8c0342d5f3571adc67189c13","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta7.tgz","fileCount":94,"unpackedSize":770196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9m8KCRA9TVsSAnZWagAA+tEQAJWJYdl58PahBAUIpY+v\nIxRN40C+u6tXa/mSH5KP7QPg4CEuMJcPjEYHwBlZNnDmXdqYwkpkg7RKQaEF\npKwO+MYfUtR6fuqPYpsdpRWuZl5k3IwZQy1Lf/kMdvRjuWM/8aekQR6UfC1/\nQC5F+lHfFP2GHGKwdIy9q6gRqhc1491S2CwI9A+uZiNX6TAkfYYFSW5YTAxa\nms2mzGiT2MXYOZslsjItWqfZ4e7onhiDRV8LsKq1xXU/RdyWFBXGgkdQOdKF\nis58oWig3nQji/VKneHiWnzaUSR/GKNXRBE/7jKNo9VNXyKwxS3aYz5BOYJW\nvdZXZNuR2I3sV5PsVf8r5tOcYApxWcxzWPjdliCciQ47/hgCsk3H08/WyW8o\n1Dan0PpzRJirWp89k3YSzvC4yxyDycfHkop6f6OZoB3tYKeD1q6WggspwSQ6\nh487Vxt57WkvBUVs5j9jzKXqYKZEbyksnetuAu0o9WR35cet4F0kRiZf7bqM\nbWdBfqQhDKeWsn6T5vs7fqIwQZb1um3qcgs/1byNt2yqRLeDI6hpb8VJxxZz\nZM/piqf0xeQy9y9AOg01VAXIM45RiMJAfp1V+eysurnkWCBpNI5CfWp0353u\nZ7QWmNlAAguxQeU/6Aig/u9swK/GMbXyG5GOMiyBi5o/Q6YEE5/r8Ir/ANou\nre2g\r\n=/VS1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGyczTpKPpMMrFRf6p5h1N2/5Dmdv20INu66dbnmmijwIgKMWONowAStrtuNguhc/Gc4wow5Oc2eeIIcdsYutYyG0="}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta7_1576431369982_0.7162961043548768"},"_hasShrinkwrap":true},"1.0.0-beta7.1":{"name":"ayakashi","version":"1.0.0-beta7.1","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@gerrit0/typedoc":"~0.15.3","@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~25.1.4","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~25.1.0","jest-extended":"~0.11.5","prettier":"~1.15.3","ts-jest":"~25.2.1","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typescript":"~3.8.3"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.5","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.28.1","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"~4.17.15","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.0","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~4.1.1","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.558","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","test":"npm run build && node lib/cli/cli.js get-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc --mode file --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"e4d83b83862e72961abad7df5e27952152a1df28","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta7.1","_nodeVersion":"13.11.0","_npmVersion":"6.13.7","dist":{"integrity":"sha512-Z5JFo8oNNRcvVxwcTdC9KhGo5+wDXabLEePMFxuFc9cghLbIO0QKUM5ZLNI617hXFBZnYEY1zznVM8glqEqaBg==","shasum":"781272135a848dc140e4679c983ac3d6d9570870","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta7.1.tgz","fileCount":94,"unpackedSize":803987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJean8wCRA9TVsSAnZWagAAKDIP/imCP+kcLbswZmXiGC6v\nHD6BDnIZhZ+L0M21t9pZq9N+QbkaMJ9KgrYtHgMpxTXx3jv7Y50vr8L/FTPu\npPW8w4NxfwpfdwW5BnMA01pPWgVMnS/EfKQuUZdgMyv3IpqzsqL92rpiuiIU\noY/UlucMQ7S3Ug7lKPvmqv4E9LRpcaSyKVaGRF/mWSo9Bbh+ABJbayrHDGmI\nj7ni6Koo1yLJcdhzGs/PxVX3TjkF/C4zjOKpYxOhCl35IRvoFtj4fzaqkPq+\neKN/z4+edX8OJrPvYUYC/5qmX6B7Kv8kVWm1899MySpCqTeJeXMftHCiby/N\nagWidb5vWVXQ1j//U/NxUFT+IiHiuWm8g0kgcUdXt28Wy7IaYtfKjJdR1pTA\nHB9ltvXLGl5fqUcpWjgtumxmpYvY42ftCScI4PNIUHTzJnxh8RVcKhOa+d/b\nXLkInELtljUMc2eZdhGOOUKhJQCr57hPghL/6jOx1BYhp9z2BdHkjix2wNW7\niLKDIUauw3caCu/j1yEoUYDPImSWCTNf6U69NJwZJflgO8XF3EYZNtvyDb1+\nSzo0v8ZZYI7ywXmWF7JCs0UNo6Vfr9WnnNzMRRRx0CKT/Q1kRPr9VrjgQfGu\njXWpOwwNH8jjBgtbTL/gRR0rK1o8unD1AgCrnHMvzU5+XnA+YtrkKM/YwNnD\nl+z1\r\n=++SS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoiXfZEPN/uNZgt16Li39KIoej3E3kfnfy/hYGHfV/WgIhAMu9u2rw0ob1pgBFMndvdZ+VblhY0Qhx4AMbNW9SlTYf"}]},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta7.1_1584037680182_0.5251355977652088"},"_hasShrinkwrap":true},"1.0.0-beta7.2":{"name":"ayakashi","version":"1.0.0-beta7.2","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~26.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~26.6.3","jest-extended":"~0.11.5","js-beautify":"~1.13.13","prettier":"~1.15.3","ts-jest":"~26.5.6","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.20.36","typescript":"~4.2.4"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.6","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.28.1","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"^4.17.21","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.1","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~5.0.2","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.656","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","lint":"tslint -p ./","test":"npm run build && node lib/cli/cli.js get-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc src/prelude/prelude.ts --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"d62be3db11771b32a910d3de39a9dd628269a655","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta7.2","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-sRcXY1G54qq1X9XMm1M1UAA67gqcyXiQ+k3F7bkYN8nyAjLO30j3+ht7kITgkngOxlvpDd7IB8cyaqlOW4Y1SA==","shasum":"4aa79c0201cf2c3359e1bbf328023decb16108fe","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta7.2.tgz","fileCount":94,"unpackedSize":1365896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo9Z5CRA9TVsSAnZWagAA20oP+wZXsxBZrBvzdITgYg7R\nw7wPjqVmyWO8jTpCKQo+WcuoB78SjVe3C0I55x59/nX4eCjOUY7wBLFiMvcr\nCMdBUqw3lBGrIDDXc1AjEZ6gJG+CWuW98EPwbum9F5eTzGYjvGDmJ6upPKYD\nMIa2aHVreKDX9774OKks54WnqwJAw7gMd0SZf2QX+F4IS8NCPt9uqblS2bbQ\nIHYrhj5nPGqgXNEy3A/qG4EplA61YyyNmEH4+nIX0l+vHxB2SMH45zR0Eosy\n7ytEcs9dnIVdyEQkLiJGdri33JRVeFRjjByXZjOOsZvTZz4UNDc3n4CpqTYg\n7d6Eqa3GdNK0YNil2zSRgm2dSyBYGNq5NYo2xp8cDa5Y2DK8wJ3ITtMlXaL7\n/AL2TkDDSFCjz0DJT8lB8eXkYKtNouuqrIunPMQ6DJSX5xjDhxgJfEzAm2k8\nz3lVKZGbzugsqrqdBsqjGIFFVspVjw5Vz+7wV98EhocAvbyLuqayaoGsQ8Nx\nASA1RV22W7RzYqnJWd0QgEOwsyJzyUguYvTIgXiHYg7t+AE2Rjm8s5mZC11M\npNBSBOHsYCyvDgvVA4/pbOMRplKms19LWtItaJDP/mQCuFZgdb1XffmyW20t\nk/HCqRbOZ9xGnM0dyTtNiBoxlhzX9B33cpAZkX3LeEI1lZP9S4Pj7/sekm/J\n9eeP\r\n=MdX7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFI3zzKUoeEFenT8PV8xgtUFqPJt5caPVLE65ADESfz3AiEAxu+90iRRVC0tK2vwpEttZsFJe4RfsZUQbxN+VS+odro="}]},"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta7.2_1621350009076_0.5849895401153002"},"_hasShrinkwrap":true},"1.0.0-beta8":{"name":"ayakashi","version":"1.0.0-beta8","description":"The next generation web scraping framework","author":{"name":"ayakashi.io","email":"hello@ayakashi.io"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~26.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~26.6.3","jest-extended":"~0.11.5","js-beautify":"~1.13.13","prettier":"~1.15.3","ts-jest":"~26.5.6","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.20.36","typescript":"~4.2.4"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.6","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.31.3","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","lodash":"^4.17.21","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.1","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~5.0.2","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.1160","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","lint":"tslint -p ./","test":"npm run build && node lib/cli/cli.js update-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc src/prelude/prelude.ts --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi.io/docs/getting_started\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi.io/docs/getting_started)!\n\n<hr/>\n\n[Documentation](https://ayakashi.io/docs/getting_started)  \n[Roadmap](https://github.com/ayakashi-io/ayakashi/milestones)  \n[Changelog](https://changelog.ayakashi.io/)  \n[Twitter](https://twitter.com/ayakashi_io)","readmeFilename":"README.md","gitHead":"f9e541cfc013a6553aa0e8298d6bb5389b40c2d7","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta8","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-+G+rAXUQij0YT7AFExTALlaIKo2eGFbKVDZGakpHWHXF1dSm519XK52HGyjRkLI8pYlArvf3BIjg2kESgsXjXg==","shasum":"81cd0a04e4f956cb4ba56039e9ded1ceae2f7204","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta8.tgz","fileCount":95,"unpackedSize":1614870,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICb5YkUL3Fg0i+iCIoBevUL4myGlnZf7HqfE0yiPxq2fAiEA/5ZSM8HSOaYpq1aIE0cIMyKyamiQPkQ85FkWCgjNqN8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjQBYEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKkA/+NdoMObHQY4uUjH0QoYIRtibQneQjfUCbcfWwpOv400UC+aXP\r\nveqrMoQPO9ozoKffzfcoQRhWYfIiGVD4sFsQlHbbYXL+S4fRV7X83BUyX2c4\r\n69yaFfNoasebdkeRJ7qsW8+AdzJlmciQX7DVNml5TKhJbtzXSBzbgtnhxYQz\r\nqFAcSDZz0QRqYpfq7CHcadm5VyfXFcTYuWO7SHWWADaKEUo9ABbzvVLKg9CJ\r\nAWz3zUn50rFVICNDapCEBOrvwAm9A2LwW6TubT4KgKS/W7sYmq4Qj+38SOsx\r\n0DhwXG7CcP6LP6jbwPOycUCLY4hrPwPYfPhJTU7MOBsP4FeCqaPGUK4CE6sC\r\nD89XujTDrBRje/ToYjqcmDwXsgfNkhm8ME8U3HetFijTbRHSLbCUHMW0SK03\r\nx8w+VoxWJw8nyiBFCJupB4OzWp5r3EDqtuL80D93X28pKy++2R2jkdJNiAvD\r\nfw6JOjkTl9NgOVGO9NH9VAkcSsVV4b3BlywqPrDBoEKmAFAmX//BciyorwzD\r\nU2qN06DSmdmawEXin5BLKVhEXKKKxu5UV3D/E4QI3bquXqeOmQwZVJJ5cMDd\r\nYvLwhC8RhlXquyaON6vbzsWQzHavWrfI71axo8GQdhB+gPwQONPxiC14lBTX\r\nQJ+2g7ry+j4P89zjBWKzs2SxkNyuMiFQQWE=\r\n=Lw0R\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta8_1665144324209_0.19031005381668709"},"_hasShrinkwrap":true},"1.0.0-beta8.1":{"name":"ayakashi","version":"1.0.0-beta8.1","description":"The next generation web scraping framework","author":{"name":"Zisis Maras","email":"contact@zisismaras.me","url":"https://github.com/ayakashi-io/ayakashi"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~26.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/prompts":"~2.4.1","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~26.6.3","jest-extended":"~0.11.5","js-beautify":"~1.13.13","prettier":"~1.15.3","ts-jest":"~26.5.6","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.20.36","typescript":"~4.2.4"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.6","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.31.3","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","json5":"~2.2.1","lodash":"^4.17.21","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.1","prompts":"~2.4.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~5.0.2","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.1160","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","lint":"tslint -p ./","test":"npm run build && node lib/cli/cli.js update-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc src/prelude/prelude.ts --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi-io.github.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi-io.github.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi-io.github.io\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi-io.github.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi-io.github.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi-io.github.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi-io.github.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi-io.github.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi-io.github.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi-io.github.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi-io.github.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi-io.github.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi-io.github.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi-io.github.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi-io.github.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi-io.github.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi-io.github.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi-io.github.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi-io.github.io)!\n","readmeFilename":"README.md","gitHead":"221af2f28dbc97e1595f79736011c1b55f5119fe","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta8.1","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-0dnFSZUEVJzGYCxfH12EJpRdXfvPDzh6DIIutLhTDjWQUUxUgfV+v2nGGkMetUjDKHggB0AC47Yz1pJfWzePng==","shasum":"eb4f331bf9e053cc1f84d0fb37d2174977021b9b","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta8.1.tgz","fileCount":96,"unpackedSize":1644132,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs23dj1tdv6td11QEABQiUhaxzIm4AL/Mg73JJTEbgiwIhANvDuKxSdj1uHsPayQNSP/57f5L9W+UJ923iWf/OVURR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjQsddACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzWw/9GMn9nGzePLcl/naH6JMTjBznKpsURVZRgdLBd9ifC8ufKaF6\r\nldhGIIwxbBGjBu54p9iOX2ek+GOdsC7Fr3QygLUFST10Qbe/JBQIk9/KSyLE\r\nS7wZnJ+8/hysSmBgsJo4Vl5SdwDXm2gw0/llgnQTUpKL2+5espW4S7cQPMB4\r\nquAnzWrF5+pLG5m7Dy6UCk5F07RgnM0vq0G/zi5RqB7OyeOPKrzXWVy0PzEQ\r\nyXWrWHosohnC3x+HMCwH9eOEbIvMa4udxh/U1A8RJHEfDUfFmMr2IHoRbHxt\r\n4y4VN79983pkmKG0hpQ+RL/04P1KOuR//51Te/oHoij1vPiL1HHbjsClQmM5\r\nIQTyWBcxyi1rnzeyqXaHy6IK/yBLtJpa4bQS+6P0kAfg0micc9OOVwFP98C9\r\nphJ+OE35IPvudsyKtenWp2jClRyZwRqwidVE0PRZE0Db9TZfwqZz9QR1TStT\r\n0jJsFvQXmAfHVkJE5bIQbfN2OQU1cBPOnDwOsZq4ftcZ1nonl0VZYqrp7zUl\r\niO0YukCJdeZaahgvOWD5G++Y2arBrc+FScSEv11csy5foOmVUMcvQ0Gy9HoS\r\nN7VVkVrqKkMHZzKwGIMfnag60tqjy6Ly4gzOzzHr2EAuN2YZ+OqaHaVyi2ya\r\npK5dnIopO8a4tuYmBGGy7wNytF/iTtwIPH4=\r\n=dLO8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta8.1_1665320797034_0.7635596587730593"},"_hasShrinkwrap":true},"1.0.0-beta8.2":{"name":"ayakashi","version":"1.0.0-beta8.2","description":"The next generation web scraping framework","author":{"name":"Zisis Maras","email":"contact@zisismaras.me","url":"https://github.com/ayakashi-io/ayakashi"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~26.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/prompts":"~2.4.1","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~26.6.3","jest-extended":"~0.11.5","js-beautify":"~1.13.13","prettier":"~1.15.3","ts-jest":"~26.5.6","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.20.36","typescript":"~4.2.4"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.6","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.31.3","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","json5":"~2.2.1","lodash":"^4.17.21","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.1","prompts":"~2.4.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~5.0.2","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.1160","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","lint":"tslint -p ./","test":"npm run build && node lib/cli/cli.js update-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc src/prelude/prelude.ts --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"readme":"<p align=\"center\"><a href=\"https://ayakashi-io.github.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi-io.github.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi-io.github.io\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi-io.github.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi-io.github.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi-io.github.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi-io.github.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi-io.github.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi-io.github.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi-io.github.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi-io.github.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi-io.github.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi-io.github.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi-io.github.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi-io.github.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi-io.github.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi-io.github.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi-io.github.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi-io.github.io)!\n","readmeFilename":"README.md","gitHead":"03f42b1ef68ef771e3f912e6a70c9caaff046239","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta8.2","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-2M+qBbeS7rmuQM+hnFmhkkHkZGdRT1u+f7Qe2pEzFgfSJz9snv5MAlmvBwo8lhMVtA08UyILkbgGh1cM3mrUsQ==","shasum":"624a12dd00acd90a0da6b964f66a0d5101944df5","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta8.2.tgz","fileCount":96,"unpackedSize":1644046,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBbmid+iHJQK+evWiL0peAS8N6SE0yhY51qiEvMFcCxbAiEA08F0z3GUpyWBINbcF7yFeNzgmZ+qaUcvImF6bfNcL1U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRBt2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQqxAAnm4cXB2p8xLzQ8BGX8xWaANdK4H5LCn0KJhn4XReaMQ14Dec\r\nxYXNN5lz5v+7RKrX/sKe6T5zTQLuc99ehkWPb8UY5pOo78CXDMscoLnXpU+A\r\n8tsz3jlsDoudxp+p7xzGcTenvV1TwViZ+8btiTSIIeFBqWcK3JQVVs4La3F9\r\niRIsQWLMt/O34DhKZkSO0mTsZnbzy6f/RQk0FV2LuFf/IeDvX5l2wDV4mS+L\r\nuAUBa48XrfPC67cXArMnh16r7suSzacY9hVUTefeyIotgEZHeoIqkPEVCsGw\r\nhWrnKr/nkf26rCE/3sLZBBHfVtWx0zGtvTMIqZEQUP1SIuGK6LPx/SMY5Dw0\r\nTWqNalx9U8bRsEFzG6CREFsQnc0D9FdJyVK1YBmcL5+aU79uwC53E5L/TNKE\r\nAF9bFEe/d9fOlStOvxtA6WHB74MpejdWNQ+gvCE7jvntrTwO9U3sb8m5VuTm\r\nXYZNHO7DWeM1h1886uXGB1VrBktmFWvWcAtrbB70F5fDH6afvQ08VFIU0AyB\r\nFXlyjkEiJF7nalXL+r5AjIY8S0+zu2H8O6g+iGqtDfnV89q15pnZZysfZbrI\r\nlgORi8mCO+oipR2jZVT0V/MVswUz9vROttR5TYruA5m4BL0PXrhoCCMo1EP4\r\noTtirXn60LzxRy1WDjsoF0isjavDfWmKnxk=\r\n=v8hV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta8.2_1665407861971_0.8060849316980447"},"_hasShrinkwrap":true},"1.0.0-beta8.3":{"name":"ayakashi","version":"1.0.0-beta8.3","description":"The next generation web scraping framework","author":{"name":"Zisis Maras","email":"contact@zisismaras.me","url":"https://github.com/ayakashi-io/ayakashi"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~26.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/prompts":"~2.4.1","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~26.6.3","jest-extended":"~0.11.5","js-beautify":"~1.13.13","prettier":"~1.15.3","ts-jest":"~26.5.6","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.20.36","typescript":"~4.2.4"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.6","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.31.3","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","json5":"~2.2.1","lodash":"^4.17.21","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.1","prompts":"~2.4.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~5.0.2","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.1160","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","lint":"tslint -p ./","test":"npm run build && node lib/cli/cli.js update-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc src/prelude/prelude.ts --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"03f42b1ef68ef771e3f912e6a70c9caaff046239","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta8.3","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-L4My/NFkKxCerbGIZUdu5RQS5PbHgQzmmpNLUNtewxwS3MKx+W7g1QqnqBogIqY2EcCkUebHbt9hWa85rHIebA==","shasum":"237559b4b8db713e1ddfcb5e2a30078cfca39d21","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta8.3.tgz","fileCount":96,"unpackedSize":1644046,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGcRsZRvc01xbzvUbqvO/a2Yk75unO1IQb1xDRM3PnWSAiBokfbgs7XL3Lm4p7wsHobFLGn18HVi2caaZvuoLx9I/A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRBv0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0zxAAk3xrwv6AtGbe5Xj8Y5boXQ+eefzWCT49waNrnugY0g68QpMB\r\nQJa3gWE9zQByaej0VoM70gg2l0w6n2wHXgS+nmr4YYM204+KCwqRwdDS4ds8\r\n1/km6+7UbJrGjmEzsSW+HJ1xGH/wi2CeGoa8VgDE1NjCeqZ2pyXaok/mbQ31\r\nMUUR2XbFYAJZxN26YkC83zudwcqdTdFp6/dEAlUBzckwLYRqGt4IJQv1hFJ/\r\nh9yEiX1L3oNxpI0PnTNLVCdYwdRxc5Nf1eUF3OMqSPUgy6B9qgFzcflw1A6y\r\nZYcjy/6VpaY2WAhIpT+ns8HPe2YTrO96YuPfHqLrRex2IzJ2rSgQfTJccdIM\r\nohh56e0lkOfiYeyoDcIHpMyWsk5V1T84PIIzscI1dA8HfpnWzd1Y4iGVu3qY\r\n47GvxlIFhou4XlHl70NYgl2Y2Y/amGEuI5l6gr4au/na3vI0fqTADaae7X4N\r\nDw01bHC2HIzs+yVW5wlxADfHLl+1+dtOMMvKERiejgIlwHH9mFlezUw0S9xI\r\nzGuCrFHqTlYr6p1s6IiWxgL+xJJQ3rTsZlDvV57AHxyzKVtnfyPg2JGMmBmr\r\neM4jaxndiBlV4wL4Vzo8lpy1/e+tUv0BC/aLqEkjKSg+tTs/YzuAj+a/SdzC\r\nAtdhKjOxU4crj0JlXevdumdUiKxIW/ANsOs=\r\n=/Gub\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta8.3_1665407988155_0.28133262938819437"},"_hasShrinkwrap":true},"1.0.0-beta8.4":{"name":"ayakashi","version":"1.0.0-beta8.4","description":"The next generation web scraping framework","author":{"name":"Zisis Maras","email":"contact@zisismaras.me","url":"https://github.com/ayakashi-io/ayakashi"},"repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"license":"AGPL-3.0-only","bin":{"ayakashi":"bin/ayakashi.js"},"keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"],"preferGlobal":true,"devDependencies":{"@types/async":"~2.4.1","@types/backoff":"~2.5.1","@types/bluebird":"~3.5.27","@types/browserify":"~12.0.36","@types/chalk":"~2.2.0","@types/cli-table":"~0.3.0","@types/debug":"~0.0.31","@types/express":"~4.16.1","@types/extract-zip":"~1.6.2","@types/jest":"~26.0.23","@types/jsdom":"~12.2.1","@types/json2csv":"~4.2.0","@types/lodash":"~4.14.138","@types/mkdirp":"~0.5.2","@types/node":"~10.12.20","@types/node-dir":"~0.0.32","@types/prompts":"~2.4.1","@types/resolve-from":"~4.0.0","@types/rimraf":"~2.0.2","@types/semver":"~6.0.0","@types/uuid":"~3.4.4","@types/validator":"~10.11.3","@types/yargs":"~12.0.9","eslint":"~5.12.1","eslint-config-google":"~0.11.0","jest":"~26.6.3","jest-extended":"~0.11.5","js-beautify":"~1.13.13","prettier":"~1.15.3","ts-jest":"~26.5.6","tslint":"~5.12.1","tslint-eslint-rules":"~5.4.0","tslint-microsoft-contrib":"~6.0.0","typedoc":"~0.20.36","typescript":"~4.2.4"},"dependencies":{"@ayakashi/get-node-selector":"^1.0.0","@ayakashi/input":"^1.0.0","@ayakashi/request":"^2.88.7","async":"~2.6.2","backoff":"~2.5.0","body-parser":"~1.18.3","boxen":"~3.1.0","browserify":"~16.2.3","browserify-incremental":"~3.1.1","chalk":"~2.4.2","chrome-remote-interface":"~0.32.2","cli-table":"~0.3.1","dayjs":"~1.8.8","debug":"~4.1.1","express":"~4.16.4","extract-zip":"~1.6.7","jsdom":"~13.1.0","json2csv":"~4.3.5","json5":"~2.2.1","lodash":"^4.17.21","mariadb":"~2.0.3","mkdirp":"~0.5.1","mysql2":"~1.6.5","node-dir":"~0.1.17","ora":"~3.2.0","pg":"~7.9.0","pipeproc":"^0.4.1","prompts":"~2.4.2","require-all":"~3.0.0","resolve-from":"~4.0.0","rimraf":"~2.6.3","semver":"~6.1.1","sequelize":"~5.19.0","sqlite3":"~5.0.2","tedious":"~5.0.3","tough-cookie":"~3.0.1","user-agents":"~1.0.1425","uuid":"~3.3.2","yargs":"~13.2.2"},"scripts":{"clean":"tsc --build --clean","build":"tsc --build --clean && tsc --build","watch":"tsc --build --clean && tsc --watch","lint":"tslint -p ./","test":"npm run build && node lib/cli/cli.js update-chrome && node scripts/checkTypo.js && jest","build-types":"rm -rf ./lib && tsc --build --clean && tsc -d --emitDeclarationOnly --allowJs false && node scripts/formatTypes.js","generate-core-action-docs":"typedoc src/prelude/prelude.ts --json ./doc.json && node ./scripts/generateCoreActionDocs.js && rm ./doc.json","postinstall":"node scripts/postInstall.js","prepublishOnly":"rm -rf ./lib && tsc --build --clean && tsc --build && npm shrinkwrap"},"gitHead":"df1cac3869e8681981dfe13408594ace3d19feb7","bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"homepage":"https://github.com/ayakashi-io/ayakashi#readme","_id":"ayakashi@1.0.0-beta8.4","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-CqLr4S/mQAzc/BOzz5NAgvf4UOfCbKmZxj9K1SZveQpvu9JBa/bPBg+ceM2DUgGJqACDVL6kc5W3OEJfYYjTGA==","shasum":"397869ccd7269ae39ebe7a9bb6e5a168cce801e6","tarball":"https://registry.npmjs.org/ayakashi/-/ayakashi-1.0.0-beta8.4.tgz","fileCount":96,"unpackedSize":1646095,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8BkKaQHMMhYyk5imM4p0+OGjtc7VM/wZNY0cyCHrlAwIgBSJZnwIsiAQwiKXUaCEzce0aqtVH/ndqZw2zu52Sj6E="}]},"_npmUser":{"name":"zisismaras","email":"contact@zisismaras.me"},"directories":{},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ayakashi_1.0.0-beta8.4_1688042232434_0.2410817135182466"},"_hasShrinkwrap":true}},"time":{"created":"2019-04-18T05:40:09.241Z","1.0.0-beta1":"2019-04-18T05:40:09.590Z","modified":"2023-06-29T12:37:12.837Z","1.0.0-beta1.1":"2019-04-19T08:45:53.265Z","1.0.0-beta1.2":"2019-04-22T09:06:36.140Z","1.0.0-beta1.3":"2019-05-07T15:29:07.067Z","1.0.0-beta1.4":"2019-05-07T21:59:56.796Z","1.0.0-beta1.5":"2019-05-10T16:04:36.489Z","1.0.0-beta1.6":"2019-05-11T15:10:13.298Z","1.0.0-beta1.7":"2019-05-17T16:19:28.421Z","1.0.0-beta2":"2019-05-23T10:08:19.922Z","1.0.0-beta2.1":"2019-06-07T08:45:30.689Z","1.0.0-beta2.2":"2019-06-08T18:44:54.822Z","1.0.0-beta3":"2019-07-18T16:20:48.105Z","1.0.0-beta3.1":"2019-07-22T10:35:35.706Z","1.0.0-beta3.2":"2019-08-04T22:07:36.190Z","1.0.0-beta3.2.1":"2019-08-05T07:34:05.578Z","1.0.0-beta3.3":"2019-08-06T19:38:32.197Z","1.0.0-beta3.4":"2019-08-10T08:49:39.027Z","1.0.0-beta4":"2019-08-10T12:19:21.208Z","1.0.0-beta4.1":"2019-08-10T12:24:58.947Z","1.0.0-beta4.2":"2019-08-16T13:31:48.642Z","1.0.0-beta4.3":"2019-08-25T14:58:00.586Z","1.0.0-beta4.4":"2019-08-29T19:31:50.090Z","1.0.0-beta5":"2019-09-01T14:34:53.368Z","1.0.0-beta5.1":"2019-09-11T06:06:34.727Z","1.0.0-beta5.2":"2019-09-21T13:18:35.825Z","1.0.0-beta5.3":"2019-10-05T11:50:09.601Z","1.0.0-beta5.4":"2019-10-26T07:38:25.123Z","1.0.0-beta5.5":"2019-10-26T08:06:32.959Z","1.0.0-beta6":"2019-10-26T10:38:57.296Z","1.0.0-beta6.1":"2019-11-16T11:47:43.344Z","1.0.0-beta6.2":"2019-11-23T09:08:06.958Z","1.0.0-beta6.3":"2019-12-02T16:56:42.162Z","1.0.0-beta7":"2019-12-15T17:36:10.254Z","1.0.0-beta7.1":"2020-03-12T18:28:00.467Z","1.0.0-beta7.2":"2021-05-18T15:00:09.298Z","1.0.0-beta8":"2022-10-07T12:05:24.577Z","1.0.0-beta8.1":"2022-10-09T13:06:37.414Z","1.0.0-beta8.2":"2022-10-10T13:17:42.123Z","1.0.0-beta8.3":"2022-10-10T13:19:48.397Z","1.0.0-beta8.4":"2023-06-29T12:37:12.693Z"},"maintainers":[{"name":"zisismaras","email":"contact@zisismaras.me"}],"description":"The next generation web scraping framework","homepage":"https://github.com/ayakashi-io/ayakashi#readme","repository":{"url":"git+https://github.com/ayakashi-io/ayakashi.git"},"author":{"name":"Zisis Maras","email":"contact@zisismaras.me","url":"https://github.com/ayakashi-io/ayakashi"},"bugs":{"url":"https://github.com/ayakashi-io/ayakashi/issues"},"license":"AGPL-3.0-only","readme":"<p align=\"center\"><a href=\"https://ayakashi-io.github.io\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://ayakashi-io.github.io/assets/img/logo_cropped.png\" alt=\"Ayakashi\"></a></p>\n\n<p align=\"center\">\n  <a href=\"https://ayakashi-io.github.io\"><img src=\"https://img.shields.io/badge/Get-Started-brightgreen.svg\" alt=\"Get Started\"></a>\n  <br/>\n  <a href=\"https://www.npmjs.com/package/ayakashi\"><img src=\"https://img.shields.io/npm/v/ayakashi.svg?label=version\" alt=\"npm\"></a>\n  <a href=\"https://github.com/ayakashi-io/ayakashi/blob/master/LICENSE\"><img src=\"https://img.shields.io/npm/l/ayakashi.svg\" alt=\"license\"></a>\n  <br/>\n  <img src=\"https://github.com/ayakashi-io/ayakashi/workflows/Test%20Suite/badge.svg\" alt=\"test suite\">\n</p>\n\n<hr/>\n\n<p align=\"center\"><img width=\"510\" height=\"463\" src=\"https://ayakashi-io.github.io/assets/img/ayakashi_demo-min.gif?raw=true\"/></p>\n\n## The next generation web scraping framework\n\nThe web has changed. Gone are the days that raw html parsing scripts were the proper tool for the job.  \nJavascript and single page applications are now the norm.  \nDemand for data scraping and automation is higher than ever,\nfrom business needs to data science and machine learning.  \nOur tools need to evolve.\n\n### Ayakashi helps you build scraping and automation systems that are\n\n* easy to build\n* simple or sophisticated\n* highly performant\n* maintainable and built for change\n\n### Powerful querying and data models\n\nAyakashi's way of finding things in the page and using them is done with [props](https://ayakashi-io.github.io/docs/guide/tour.html#props)\nand [domQL](https://ayakashi-io.github.io/docs/guide/querying-with-domql.html).  \nDirectly inspired by the relational database world (and SQL), domQL makes\nDOM access easy and readable no matter how obscure the page's structure is.  \nProps are the way to package domQL expressions as re-usable structures which\ncan then be passed around to [actions](https://ayakashi-io.github.io/docs/guide/tour.html#actions) or to be used as models for [data\nextraction](https://ayakashi-io.github.io/docs/guide/data-extraction.html).    \n\n![domql](https://ayakashi-io.github.io/assets/img/domql.png)\n\n### High level builtin actions\n\nReady made actions so you can focus on what matters.  \nEasily handle infinite scrolling, single page navigation, events\nand [more](https://ayakashi-io.github.io/docs/reference/builtin-actions.html).  \nPlus, you can always [build your own actions](https://ayakashi-io.github.io/docs/advanced/creating-your-own-actions.html),\neither from scratch or by composing other actions.\n\n### Preload code on pages\n\nNeed to include a bunch of code, a library you [made](https://ayakashi-io.github.io/docs/advanced/creating-your-own-preloaders.html)\nor a [3rd party module](https://ayakashi-io.github.io/docs/going_deeper/loading-libraries-as-preloaders.html)\nand make it available on a page?  \n[Preloaders](https://ayakashi-io.github.io/docs/guide/tour.html#preloaders) have you covered.\n\n### Control how you save your data\n\nAutomatically save your extracted data\nto [all major SQL engines, JSON and CSV.](https://ayakashi-io.github.io/docs/guide/builtin-saving-scripts.html)  \nNeed something more exotic or the ability to control exactly how the data is persisted?  \nPackage and plug your custom logic as a script.\n\n### Manage the flow with pipelines\n\nScraping the data is only one part of the deal.  \nHow about something like this:  \n\n![pipelines](https://ayakashi-io.github.io/assets/img/diagram.png)\n\nNeed it to also be clean, readable and performant?  \nIf so, [pipelines](https://ayakashi-io.github.io/docs/guide/tour.html#pipelines) can help.\n\n### Utilize all your cores\n\nAyakashi can utilize available cores as needed. Especially useful for projects that need\nto run multiple operations in parallel.\n\n### Extend it as you like\n\nAll APIs used to build the builtin functionality are properly exposed.  \nAll core entities are composable and extensible.\n\n### Use the language of the web\n\nMany argue about javascript and its quirkiness as a language but the truth is:  \nIf you want to scrape the web, you should speak its language.\n\n### Great editor support\n\nAyakashi comes bundled with a fully documented public API that you can explore\ndirectly in your editor.  \nAutocomplete any method, check signatures and examples or follow links to more documentation.  \n\n![editor support](https://ayakashi-io.github.io/assets/img/editor.png)\n\nSounds cool?  \nJust head over to the [getting started guide](https://ayakashi-io.github.io)!\n","readmeFilename":"README.md","keywords":["web-scraping","web-crawling","data-mining","automation","headless-chrome"]}