[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3268":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":22,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":16,"starSnapshotCount":16,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},3268,"superagent","forwardemail\u002Fsuperagent","forwardemail","Ajax for Node.js and browsers (JS HTTP client). Maintained for @forwardemail, @ladjs, @spamscanner, @breejs, @cabinjs, and @lassjs.","https:\u002F\u002Fforwardemail.github.io\u002Fsuperagent\u002F",null,"JavaScript",16646,1321,217,179,0,6,44.36,"MIT License",false,"master",true,[],"2026-06-12 02:00:48","# superagent\n\n[![build status](https:\u002F\u002Fgithub.com\u002Fforwardemail\u002Fsuperagent\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fforwardemail\u002Fsuperagent\u002Factions\u002Fworkflows\u002Fci.yml)\n[![code coverage](https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fladjs\u002Fsuperagent.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fladjs\u002Fsuperagent)\n[![code style](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode_style-XO-5ed9c7.svg)](https:\u002F\u002Fgithub.com\u002Fsindresorhus\u002Fxo)\n[![styled with prettier](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstyled_with-prettier-ff69b4.svg)](https:\u002F\u002Fgithub.com\u002Fprettier\u002Fprettier)\n[![made with lass](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmade_with-lass-95CC28.svg)](https:\u002F\u002Flass.js.org)\n[![license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fladjs\u002Fsuperagent.svg)](LICENSE)\n\n> Small progressive client-side HTTP request library, and Node.js module with the same API, supporting many high-level HTTP client features.  Maintained for [Forward Email](https:\u002F\u002Fgithub.com\u002Fforwardemail) and [Lad](https:\u002F\u002Fgithub.com\u002Fladjs).\n\n\n## Table of Contents\n\n* [Install](#install)\n* [Usage](#usage)\n  * [Node](#node)\n  * [Browser](#browser)\n* [Supported Platforms](#supported-platforms)\n  * [Required Browser Features](#required-browser-features)\n* [Plugins](#plugins)\n* [Upgrading from previous versions](#upgrading-from-previous-versions)\n* [Contributors](#contributors)\n* [License](#license)\n\n\n## Install\n\n[npm][]:\n\n```sh\nnpm install superagent\n```\n\n[yarn][]:\n\n```sh\nyarn add superagent\n```\n\n\n## Usage\n\n### Node\n\n```js\nconst superagent = require('superagent');\n\n\u002F\u002F callback\nsuperagent\n  .post('\u002Fapi\u002Fpet')\n  .send({ name: 'Manny', species: 'cat' }) \u002F\u002F sends a JSON post body\n  .set('X-API-Key', 'foobar')\n  .set('accept', 'json')\n  .end((err, res) => {\n    \u002F\u002F Calling the end function will send the request\n  });\n\n\u002F\u002F promise with then\u002Fcatch\nsuperagent.post('\u002Fapi\u002Fpet').then(console.log).catch(console.error);\n\n\u002F\u002F promise with async\u002Fawait\n(async () => {\n  try {\n    const res = await superagent.post('\u002Fapi\u002Fpet');\n    console.log(res);\n  } catch (err) {\n    console.error(err);\n  }\n})();\n```\n\n### Browser\n\n**The browser-ready, minified version of `superagent` is only 50 KB (minified and gzipped).**\n\nBrowser-ready versions of this module are available via [jsdelivr][], [unpkg][], and also in the `node_modules\u002Fsuperagent\u002Fdist` folder in downloads of the `superagent` package.\n\n> Note that we also provide unminified versions with `.js` instead of `.min.js` file extensions.\n\n#### VanillaJS\n\nThis is the solution for you if you're just using `\u003Cscript>` tags everywhere!\n\n```html\n\u003Cscript src=\"https:\u002F\u002Fcdnjs.cloudflare.com\u002Fpolyfill\u002Fv3\u002Fpolyfill.min.js?features=WeakRef,BigInt\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fsuperagent\">\u003C\u002Fscript>\n\u003C!-- if you wish to use unpkg.com instead: -->\n\u003C!-- \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Fsuperagent\">\u003C\u002Fscript> -->\n\u003Cscript type=\"text\u002Fjavascript\">\n  (function() {\n    \u002F\u002F superagent is exposed as `window.superagent`\n    \u002F\u002F if you wish to use \"request\" instead please\n    \u002F\u002F uncomment the following line of code:\n    \u002F\u002F `window.request = superagent;`\n    superagent\n      .post('\u002Fapi\u002Fpet')\n      .send({ name: 'Manny', species: 'cat' }) \u002F\u002F sends a JSON post body\n      .set('X-API-Key', 'foobar')\n      .set('accept', 'json')\n      .end(function (err, res) {\n        \u002F\u002F Calling the end function will send the request\n      });\n  })();\n\u003C\u002Fscript>\n```\n\n#### Bundler\n\nIf you are using [browserify][], [webpack][], [rollup][], or another bundler, then you can follow the same usage as [Node](#node) above.\n\n\n## Supported Platforms\n\n* Node: v14.18.0+\n* Browsers (see [.browserslistrc](.browserslistrc)):\n\n  ```sh\n  npx browserslist\n  ```\n\n  ```sh\n  and_chr 102\n  and_ff 101\n  and_qq 10.4\n  and_uc 12.12\n  android 101\n  chrome 103\n  chrome 102\n  chrome 101\n  chrome 100\n  edge 103\n  edge 102\n  edge 101\n  firefox 101\n  firefox 100\n  firefox 91\n  ios_saf 15.5\n  ios_saf 15.4\n  ios_saf 15.2-15.3\n  ios_saf 15.0-15.1\n  ios_saf 14.5-14.8\n  ios_saf 14.0-14.4\n  ios_saf 12.2-12.5\n  kaios 2.5\n  op_mini all\n  op_mob 64\n  opera 86\n  opera 85\n  safari 15.5\n  safari 15.4\n  samsung 17.0\n  samsung 16.0\n  ```\n\n### Required Browser Features\n\nWe recommend using \u003Chttps:\u002F\u002Fcdnjs.cloudflare.com\u002Fpolyfill\u002F> (specifically with the bundle mentioned in [VanillaJS](#vanillajs) above):\n\n```html\n\u003Cscript src=\"https:\u002F\u002Fcdnjs.cloudflare.com\u002Fpolyfill\u002Fv3\u002Fpolyfill.min.js?features=WeakRef,BigInt\">\u003C\u002Fscript>\n```\n\n* WeakRef is not supported in Opera 85, iOS Safari 12.2-12.5\n* BigInt is not supported in iOS Safari 12.2-12.5\n\n\n## Plugins\n\nSuperAgent is easily extended via plugins.\n\n```js\nconst nocache = require('superagent-no-cache');\nconst superagent = require('superagent');\nconst prefix = require('superagent-prefix')('\u002Fstatic');\n\nsuperagent\n  .get('\u002Fsome-url')\n  .query({ action: 'edit', city: 'London' }) \u002F\u002F query string\n  .use(prefix) \u002F\u002F Prefixes *only* this request\n  .use(nocache) \u002F\u002F Prevents caching of *only* this request\n  .end((err, res) => {\n    \u002F\u002F Do something\n  });\n```\n\nExisting plugins:\n\n* [superagent-no-cache](https:\u002F\u002Fgithub.com\u002Fjohntron\u002Fsuperagent-no-cache) - prevents caching by including Cache-Control header\n* [superagent-prefix](https:\u002F\u002Fgithub.com\u002Fjohntron\u002Fsuperagent-prefix) - prefixes absolute URLs (useful in test environment)\n* [superagent-suffix](https:\u002F\u002Fgithub.com\u002Ftimneutkens1\u002Fsuperagent-suffix) - suffix URLs with a given path\n* [superagent-mock](https:\u002F\u002Fgithub.com\u002FM6Web\u002Fsuperagent-mock) - simulate HTTP calls by returning data fixtures based on the requested URL\n* [superagent-mocker](https:\u002F\u002Fgithub.com\u002Fshuvalov-anton\u002Fsuperagent-mocker) — simulate REST API\n* [superagent-cache](https:\u002F\u002Fgithub.com\u002Fjpodwys\u002Fsuperagent-cache) - A global SuperAgent patch with built-in, flexible caching\n* [superagent-cache-plugin](https:\u002F\u002Fgithub.com\u002Fjpodwys\u002Fsuperagent-cache-plugin) - A SuperAgent plugin with built-in, flexible caching\n* [superagent-jsonapify](https:\u002F\u002Fgithub.com\u002Falex94puchades\u002Fsuperagent-jsonapify) - A lightweight [json-api](http:\u002F\u002Fjsonapi.org\u002Fformat\u002F) client addon for superagent\n* [superagent-serializer](https:\u002F\u002Fgithub.com\u002Fzzarcon\u002Fsuperagent-serializer) - Converts server payload into different cases\n* [superagent-httpbackend](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fsuperagent-httpbackend) - stub out requests using AngularJS' $httpBackend syntax\n* [superagent-throttle](https:\u002F\u002Fgithub.com\u002Fleviwheatcroft\u002Fsuperagent-throttle) - queues and intelligently throttles requests\n* [superagent-charset](https:\u002F\u002Fgithub.com\u002Fmagicdawn\u002Fsuperagent-charset) - add charset support for node's SuperAgent\n* [superagent-verbose-errors](https:\u002F\u002Fgithub.com\u002Fjcoreio\u002Fsuperagent-verbose-errors) - include response body in error messages for failed requests\n* [superagent-declare](https:\u002F\u002Fgithub.com\u002Fdamoclark\u002Fsuperagent-declare) - A simple [declarative](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDeclarative_programming) API for SuperAgent\n* [superagent-node-http-timings](https:\u002F\u002Fgithub.com\u002Fwebuniverseio\u002Fsuperagent-node-http-timings) - measure http timings in node.js\n* [superagent-cheerio](https:\u002F\u002Fgithub.com\u002Fmmmmmrob\u002Fsuperagent-cheerio) - add [cheerio](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcheerio) to your response content automatically. Adds `res.$` for HTML and XML response bodies.\n* [@certible\u002Fsuperagent-aws-sign](https:\u002F\u002Fgithub.com\u002Fcertible\u002Fsuperagent-aws-sign) - Sign AWS endpoint requests, it uses the aws4 to authenticate the SuperAgent requests\n\nPlease prefix your plugin with `superagent-*` so that it can easily be found by others.\n\nFor SuperAgent extensions such as couchdb and oauth visit the [wiki](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Fwiki).\n\n\n## Upgrading from previous versions\n\nPlease see [GitHub releases page](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases) for the current changelog.\n\nOur breaking changes are mostly in rarely used functionality and from stricter error handling.\n\n* [6.0 to 6.1](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases\u002Ftag\u002Fv6.1.0)\n  * Browser behaviour changed to match Node when serializing `application\u002Fx-www-form-urlencoded`, using `arrayFormat: 'indices'` semantics of `qs` library. (See: \u003Chttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fqs#stringifying>)\n* [5.x to 6.x](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases\u002Ftag\u002Fv6.0.0):\n  * Retry behavior is still opt-in, however we now have a more fine-grained list of status codes and error codes that we retry against (see updated docs)\n  * A specific issue with Content-Type matching not being case-insensitive is fixed\n  * Set is now required for IE 9, see [Required Browser Features](#required-browser-features) for more insight\n* [4.x to 5.x](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases\u002Ftag\u002Fv5.0.0):\n  * We've implemented the build setup of [Lass](https:\u002F\u002Flass.js.org) to simplify our stack and linting\n  * Unminified browserified build size has been reduced from 48KB to 20KB (via `tinyify` and the latest version of Babel using `@babel\u002Fpreset-env` and `.browserslistrc`)\n  * Linting support has been added using `caniuse-lite` and `eslint-plugin-compat`\n  * We can now target what versions of Node we wish to support more easily using `.babelrc`\n* [3.x to 4.x](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases\u002Ftag\u002Fv4.0.0-alpha.1):\n  * Ensure you're running Node 6 or later. We've dropped support for Node 4.\n  * We've started using ES6 and for compatibility with Internet Explorer you may need to use Babel.\n  * We suggest migrating from `.end()` callbacks to `.then()` or `await`.\n* [2.x to 3.x](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases\u002Ftag\u002Fv3.0.0):\n  * Ensure you're running Node 4 or later. We've dropped support for Node 0.x.\n  * Test code that calls `.send()` multiple times. Invalid calls to `.send()` will now throw instead of sending garbage.\n* [1.x to 2.x](https:\u002F\u002Fgithub.com\u002Fladjs\u002Fsuperagent\u002Freleases\u002Ftag\u002Fv2.0.0):\n  * If you use `.parse()` in the *browser* version, rename it to `.serialize()`.\n  * If you rely on `undefined` in query-string values being sent literally as the text \"undefined\", switch to checking for missing value instead. `?key=undefined` is now `?key` (without a value).\n  * If you use `.then()` in Internet Explorer, ensure that you have a polyfill that adds a global `Promise` object.\n* 0.x to 1.x:\n  * Instead of 1-argument callback `.end(function(res){})` use `.then(res => {})`.\n\n\n## Contributors\n\n| Name                |\n| ------------------- |\n| **Kornel Lesiński** |\n| **Peter Lyons**     |\n| **Hunter Loftis**   |\n| **Nick Baugh**      |\n\n\n## License\n\n[MIT](LICENSE) © TJ Holowaychuk\n\n\n##\n\n[npm]: https:\u002F\u002Fwww.npmjs.com\u002F\n\n[yarn]: https:\u002F\u002Fyarnpkg.com\u002F\n\n[jsdelivr]: https:\u002F\u002Fwww.jsdelivr.com\u002F\n\n[unpkg]: https:\u002F\u002Funpkg.com\u002F\n\n[browserify]: https:\u002F\u002Fgithub.com\u002Fbrowserify\u002Fbrowserify\n\n[webpack]: https:\u002F\u002Fgithub.com\u002Fwebpack\u002Fwebpack\n\n[rollup]: https:\u002F\u002Fgithub.com\u002Frollup\u002Frollup\n","superagent 是一个轻量级的HTTP客户端库，适用于Node.js和浏览器环境。它支持多种高级HTTP客户端特性，如请求方法链式调用、响应处理等，并且提供了统一的API接口，使得开发者可以在不同平台之间无缝切换代码。此外，superagent还具有良好的插件扩展能力，允许用户根据需求添加自定义功能。此库非常适合需要进行前后端数据交互的应用场景，尤其是对于那些希望简化网络请求逻辑同时保持代码可维护性的项目来说是一个理想的选择。",2,"2026-06-11 02:53:16","top_language"]