{
  "name": "@degen/twitter-autohook",
  "version": "2.0.1",
  "description": "Automatically setup and serve webhooks for the Twitter Account Activity API",
  "repository": {
    "type": "git",
    "url": "https://github.com/degen-workgroup/autohook"
  },
  "main": "index.js",
  "bin": {
    "autohook": "./cli.js"
  },
  "author": "Twitter",
  "license": "MIT",
  "keywords": [
    "twitter",
    "twitter-api",
    "webhooks"
  ],
  "dependencies": {
    "commander": "^2.20.0",
    "dotenv": "^16.0.0",
    "fastify": "^3.27.4",
    "fastify-raw-body": "^3.2.0",
    "needle": "^2.3.3",
    "ngrok": "^3.2.1",
    "nock": "^12.0.2"
  },
  "devDependencies": {
    "eslint": "^7.6.0",
    "standard-version": "^9.3.2"
  },
  "scripts": {
    "start": "node examples/standalone-server.js",
    "release": "standard-version"
  },
  "readme": "# Autohook 🎣 + Fastify \n\nThis is a fork of [Autohook](https://github.com/twitterdev/autohook) that uses [Fastify](https://www.fastify.io/) instead of needle.\n\n![Demo](https://github.com/twitterdev/autohook/raw/master/demo.gif)\n\n* 🚀 Spawns a server for you\n* ⚙️ Registers a webhook (it removes existing webhooks if you want, and you can add more than one webhook if your Premium subscription supports it)\n* ✅ Performs the CRC validation when needed\n* 📝 Subscribes to your current user's context (you can always subscribe more users if you need)\n* 🎧 Exposes a listener so you can pick up Account Activity events and process the ones you care about\n\n## Usage\n\nYou can use Autohook as a module or as a command-line tool.\n\n### Node.js module\n\n```js\nconst { Autohook } = require('twitter-autohook');\n\n(async ƛ => {\n  const webhook = new Autohook();\n  \n  // Removes existing webhooks\n  await webhook.removeWebhooks();\n  \n  // Listens to incoming activity\n  webhook.on('event', event => console.log('Something happened:', event));\n  \n  // Starts a server and adds a new webhook\n  await webhook.start();\n  \n  // Subscribes to a user's activity\n  await webhook.subscribe({oauth_token, oauth_token_secret});\n})();\n```\n\n### Command line\n\nStarting Autohook from the command line is useful when you need to test your connection and subscriptions.\n\nWhen started from the command line, Autohook simply provisions a webhook, subscribes your user (unless you specify `--do-not-subscribe-me`), and echoes incoming events to `stdout`.\n\n```bash\n# Starts a server, removes any existing webhook, adds a new webhook, and subscribes to the authenticating user's activity.\n$ autohook -rs\n\n# All the options\n$ autohook --help\n```\n\n## OAuth\n\nAutohook works only when you pass your OAuth credentials. You won't have to figure out OAuth by yourself – Autohook will work that out for you.\n\nYou can pass your OAuth credentials in a bunch of ways.\n\n## Dotenv (~/.env.twitter)\n\nCreate a file named `~/.env.twitter` (sits in your home dir) with the following variables:\n\n```bash\nTWITTER_CONSUMER_KEY= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ API key\nTWITTER_CONSUMER_SECRET= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ API secret key\nTWITTER_ACCESS_TOKEN= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ Access token\nTWITTER_ACCESS_TOKEN_SECRET= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ Access token secret\nTWITTER_WEBHOOK_ENV= # https://developer.twitter.com/en/account/environments ➡️ One of 'Dev environment label' or 'Prod environment label'\nNGROK_AUTH_TOKEN= # https://ngrok.com/ - (optional) Create a free account to get your auth token for stable tunnels\n```\n\nAutohook will pick up these details automatically, so you won't have to specify anything in code or via CLI.\n\n## Env variables\n\nUseful when you're deploying to remote servers, and can be used in conjunction with your dotenv file.\n\n```bash\n\n# To your current environment\nexport TWITTER_CONSUMER_KEY= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ API key\nexport TWITTER_CONSUMER_SECRET= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ API secret key\nexport TWITTER_ACCESS_TOKEN= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ Access token\nexport TWITTER_ACCESS_TOKEN_SECRET= # https://developer.twitter.com/en/apps ➡️ Your app ID ➡️ Details ➡️ Access token secret\nexport TWITTER_WEBHOOK_ENV= # https://developer.twitter.com/en/account/environments ➡️ One of 'Dev environment label' or 'Prod environment label'\nexport NGROK_AUTH_TOKEN= # https://ngrok.com/ - (optional) Create a free account to get your auth token for stable tunnels\n\n# To other services, e.g. Heroku\nheroku config:set TWITTER_CONSUMER_KEY=value TWITTER_CONSUMER_SECRET=value TWITTER_ACCESS_TOKEN=value TWITTER_ACCESS_TOKEN_SECRET=value TWITTER_WEBHOOK_ENV=value NGROK_AUTH_TOKEN=value\n```\n## Directly\n\nNot recommended, because you should always [secure your credentials](https://developer.twitter.com/en/docs/basics/authentication/guides/securing-keys-and-tokens.html).\n\n### Node.js\n\n```js\nnew Autohook({\n  token: 'value',\n  token_secret: 'value',\n  consumer_key: 'value',\n  consumer_secret: 'value',\n  ngrok_secret: 'value', // optional\n  env: 'env',\n  port: 1337\n});\n```\n\n### CLI\n\n```bash\n$ autohook \\\n  --token $TWITTER_ACCESS_TOKEN \\\n  --secret $TWITTER_ACCESS_TOKEN_SECRET \\\n  --consumer-key $TWITTER_CONSUMER_KEY \\\n  --consumer-secret $TWITTER_CONSUMER_SECRET \\\n  --env $TWITTER_WEBHOOK_ENV \\\n  --ngrok-secret $NGROK_AUTH_TOKEN # optional\n```\n\n## Install\n\n```bash\n# npm\n$ npm i -g twitter-autohook\n\n# Yarn\n$ yarn global add twitter-autohook\n```\n"
}