Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@crawly/superagent
Advanced tools
Small progressive client-side HTTP request library, and Node.js module with the same API, supporting many high-level HTTP client features
npm:
npm install superagent
yarn:
yarn add superagent
const superagent = require('superagent');
// callback
superagent
.post('/api/pet')
.send({ name: 'Manny', species: 'cat' }) // sends a JSON post body
.set('X-API-Key', 'foobar')
.set('accept', 'json')
.end((err, res) => {
// Calling the end function will send the request
});
// promise with then/catch
superagent.post('/api/pet').then(console.log).catch(console.error);
// promise with async/await
(async () => {
try {
const res = await superagent.post('/api/pet');
console.log(res);
} catch (err) {
console.error(err);
}
})();
The browser-ready, minified version of superagent
is only 6 KB (minified and gzipped)!
Browser-ready versions of this module are available via jsdelivr, unpkg, and also in the node_modules/superagent/dist
folder in downloads of the superagent
package.
Note that we also provide unminified versions with
.js
instead of.min.js
file extensions.
This is the solution for you if you're just using <script>
tags everywhere!
<script src="https://polyfill.io/v3/polyfill.min.js?features=Array.from,Promise,Symbol,Object.setPrototypeOf,Object.getOwnPropertySymbols"></script>
<script src="https://cdn.jsdelivr.net/npm/superagent"></script>
<!-- if you wish to use unpkg.com instead: -->
<!-- <script src="https://unpkg.com/superagent"></script> -->
<script type="text/javascript">
(function() {
// superagent is exposed as `window.superagent`
// if you wish to use "request" instead please
// uncomment the following line of code:
// `window.request = superagent;`
superagent
.post('/api/pet')
.send({ name: 'Manny', species: 'cat' }) // sends a JSON post body
.set('X-API-Key', 'foobar')
.set('accept', 'json')
.end(function (err, res) {
// Calling the end function will send the request
});
})();
</script>
If you are using browserify, webpack, rollup, or another bundler, then you can follow the same usage as Node above.
Node: v6.x+
Browsers (see .browserslistrc):
npx browserslist
and_chr 71
and_ff 64
and_qq 1.2
and_uc 11.8
android 67
android 4.4.3-4.4.4
baidu 7.12
bb 10
bb 7
chrome 73
chrome 72
chrome 71
edge 18
edge 17
firefox 66
firefox 65
ie 11
ie 10
ie 9
ie_mob 11
ie_mob 10
ios_saf 12.0-12.1
ios_saf 11.3-11.4
op_mini all
op_mob 46
op_mob 12.1
opera 58
opera 57
safari 12
safari 11.1
samsung 8.2
samsung 7.2-7.4
We recommend using https://polyfill.io (specifically with the bundle mentioned in VanillaJS above):
<script src="https://polyfill.io/v3/polyfill.min.js?features=Array.from,Promise,Symbol,Object.setPrototypeOf,Object.getOwnPropertySymbols"></script>
Promise
, Array.from
, Symbol
, Object.getOwnPropertySymbols
, and Object.setPrototypeOf
window.FormData
(we recommend formdata-polyfill)SuperAgent is easily extended via plugins.
const nocache = require('superagent-no-cache');
const superagent = require('superagent');
const prefix = require('superagent-prefix')('/static');
superagent
.get('/some-url')
.query({ action: 'edit', city: 'London' }) // query string
.use(prefix) // Prefixes *only* this request
.use(nocache) // Prevents caching of *only* this request
.end((err, res) => {
// Do something
});
Existing plugins:
Please prefix your plugin with superagent-*
so that it can easily be found by others.
For SuperAgent extensions such as couchdb and oauth visit the wiki.
Our breaking changes are mostly in rarely used functionality and from stricter error handling.
tinyify
and the latest version of Babel using @babel/preset-env
and .browserslistrc
)caniuse-lite
and eslint-plugin-compat
.babelrc
.end()
callbacks to .then()
or await
..send()
multiple times. Invalid calls to .send()
will now throw instead of sending garbage..parse()
in the browser version, rename it to .serialize()
.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)..then()
in Internet Explorer, ensure that you have a polyfill that adds a global Promise
object..end(function(res){})
use .then(res => {})
.Name |
---|
Kornel Lesiński |
Peter Lyons |
Hunter Loftis |
Nick Baugh |
MIT © TJ Holowaychuk
FAQs
elegant & feature rich browser / node HTTP with a fluent API
We found that @crawly/superagent demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.