{"id":31850504,"url":"https://github.com/sanity-io/get-it","last_synced_at":"2025-10-24T22:02:48.915Z","repository":{"id":14286649,"uuid":"75225761","full_name":"sanity-io/get-it","owner":"sanity-io","description":"Composable HTTP request library for node and browsers","archived":false,"fork":false,"pushed_at":"2025-10-01T02:29:29.000Z","size":5087,"stargazers_count":36,"open_issues_count":7,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-10-01T04:22:10.906Z","etag":null,"topics":["http","http-client","nodejs","request"],"latest_commit_sha":null,"homepage":"https://get-it-test-next.sanity.build","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sanity-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-11-30T20:46:39.000Z","updated_at":"2025-06-30T22:13:13.000Z","dependencies_parsed_at":"2024-02-01T18:57:43.553Z","dependency_job_id":"2511ef94-6999-4eea-b0d3-41f8bc187596","html_url":"https://github.com/sanity-io/get-it","commit_stats":{"total_commits":306,"total_committers":10,"mean_commits":30.6,"dds":"0.43137254901960786","last_synced_commit":"5e84efa49e2fca395162155ceff597d2ebde81bd"},"previous_names":[],"tags_count":121,"template":false,"template_full_name":null,"purl":"pkg:github/sanity-io/get-it","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanity-io%2Fget-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanity-io%2Fget-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanity-io%2Fget-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanity-io%2Fget-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanity-io","download_url":"https://codeload.github.com/sanity-io/get-it/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanity-io%2Fget-it/sbom","scorecard":{"id":799632,"data":{"date":"2025-08-11","repo":{"name":"github.com/sanity-io/get-it","commit":"e0533f66e2b6506bd82f482c3fb3713615613e9f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.6,"checks":[{"name":"Code-Review","score":2,"reason":"Found 2/7 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"27 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/browserslist.yml:10","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:25","Info: topLevel 'contents' permission set to 'read': .github/workflows/prettier.yml:14","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":6,"reason":"dependency not pinned by hash detected -- score normalized to 6","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/browserslist.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/browserslist.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/browserslist.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/browserslist.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/browserslist.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/browserslist.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:125: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:126: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:138: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:139: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:154: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:159: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:168: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prettier.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/prettier.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prettier.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/prettier.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prettier.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/prettier.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prettier.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/sanity-io/get-it/prettier.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:74","Info:   0 out of  22 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   4 third-party GitHubAction dependencies pinned","Info:   7 out of   8 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v8.6.10 not signed: https://api.github.com/repos/sanity-io/get-it/releases/228934948","Warn: release artifact v8.6.9 not signed: https://api.github.com/repos/sanity-io/get-it/releases/219433651","Warn: release artifact v8.6.8 not signed: https://api.github.com/repos/sanity-io/get-it/releases/216837874","Warn: release artifact v8.6.7 not signed: https://api.github.com/repos/sanity-io/get-it/releases/197017278","Warn: release artifact v8.6.6 not signed: https://api.github.com/repos/sanity-io/get-it/releases/193863837","Warn: release artifact v8.6.10 does not have provenance: https://api.github.com/repos/sanity-io/get-it/releases/228934948","Warn: release artifact v8.6.9 does not have provenance: https://api.github.com/repos/sanity-io/get-it/releases/219433651","Warn: release artifact v8.6.8 does not have provenance: https://api.github.com/repos/sanity-io/get-it/releases/216837874","Warn: release artifact v8.6.7 does not have provenance: https://api.github.com/repos/sanity-io/get-it/releases/197017278","Warn: release artifact v8.6.6 does not have provenance: https://api.github.com/repos/sanity-io/get-it/releases/193863837"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/sanity-io/.github/SECURITY.md:1","Info: Found linked content: github.com/sanity-io/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/sanity-io/.github/SECURITY.md:1","Info: Found text in security policy: github.com/sanity-io/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Warn: codeowners review is not required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Warn: 'up-to-date branches' is disabled on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/ci.yml:146"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T10:03:43.095Z","repository_id":14286649,"created_at":"2025-08-23T10:03:43.095Z","updated_at":"2025-08-23T10:03:43.095Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011192,"owners_count":26084900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["http","http-client","nodejs","request"],"created_at":"2025-10-12T11:55:08.161Z","updated_at":"2025-10-12T11:55:18.798Z","avatar_url":"https://github.com/sanity-io.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# get-it\n\n[![npm stat](https://img.shields.io/npm/dm/get-it.svg?style=flat-square)](https://npm-stat.com/charts.html?package=get-it)\n[![npm version](https://img.shields.io/npm/v/get-it.svg?style=flat-square)](https://www.npmjs.com/package/get-it)\n[![gzip size][gzip-badge]][bundlephobia]\n[![size][size-badge]][bundlephobia]\n\nGeneric HTTP request library for node.js (\u003e= 14) and [modern browsers].\n\n## Motivation\n\nWe wanted an HTTP request library that worked transparently in Node.js and browsers with a small browser bundle footprint.\n\nTo be able to use the same library in a range of different applications with varying requirements, but still keep the bundle size down, we took inspiration from [http-client](https://github.com/mjackson/http-client) which cleverly composes functionality into the client.\n\n## Features\n\nUsing a middleware approach, `get-it` has the following feature set:\n\n- Promise, observable and low-level event-emitter patterns\n- Automatic retrying with customizable number of attempts and filtering functionality\n- Cancellation of requests\n- Configurable connect/socket timeouts\n- Automatic parsing of JSON responses\n- Automatic stringifying of JSON request bodies\n- Automatic gzip unwrapping in Node\n- Automatically prepend base URL\n- Automatically follow redirects (configurable number of retries)\n- Upload/download progress events\n- Treat HTTP status codes \u003e=400 as errors\n- Debug requests with environment variables/localStorage setting\n\n## Usage\n\nHow `get-it` behaves depends on which middleware you've loaded, but common to all approaches is the setup process.\n\n```js\n// Import the core get-it package, which is used to generate a requester\nimport {getIt} from 'get-it'\n\n// And import whatever middleware you want to use\nimport {base, jsonResponse, promise} from 'get-it/middleware'\n\n// Now compose the middleware you want to use\nconst request = getIt([base('https://api.your.service/v1'), jsonResponse()])\n\n// You can also register middleware using `.use(middleware)`\nrequest.use(promise())\n\n// Now you're ready to use the requester:\nrequest({url: '/projects'})\n  .then((response) =\u003e console.log(response.body))\n  .catch((err) =\u003e console.error(err))\n```\n\nIn most larger projects, you'd probably make a `httpClient.js` or similar, where you would instantiate the requester and export it for other modules to reuse.\n\n## Options\n\n- `url` - URL to the resource you want to reach.\n- `method` - HTTP method to use for request. Default: `GET`, unless a body is provided, in which case the default is `POST`.\n- `headers` - Object of HTTP headers to send. Note that cross-origin requests in IE9 will not be able to set these headers.\n- `body` - The request body. If the `jsonRequest` middleware is used, it will serialize to a JSON string before sending. Otherwise, it tries to send whatever is passed to it using the underlying adapter. Supported types:\n  - _Browser_: `string`, `ArrayBufferView`, `Blob`, `Document`, `FormData` (deprecated: `ArrayBuffer`)\n  - _Node_: `string`, `Buffer`, `Iterable`, `AsyncIterable`, `stream.Readable`\n- `bodySize` - Size of body, in bytes. Only used in Node when passing a `ReadStream` as body, in order for progress events to emit status on upload progress.\n- `timeout` - Timeout in millisecond for the request. Takes an object with `connect` and `socket` properties.\n- `maxRedirects` - Maximum number of redirects to follow before giving up. Note that this is only used in Node, as browsers have built-in redirect handling which cannot be adjusted. Default: `5`\n- `rawBody` - Set to `true` to return the raw value of the response body, instead of a string. The type returned differs based on the underlying adapter:\n  - _Browser_: `ArrayBuffer`\n  - _Node_: `Buffer`\n\n## Return values\n\nBy default, `get-it` will return an object of single-channel event emitters. This is done in order to provide a low-level API surface that others can build upon, which is what the `promise` and `observable` middlewares do. Unless you really know what you're doing, you'll probably want to use those middlewares.\n\n## Response objects\n\n`get-it` does not expose the low-level primitives such as the `XMLHttpRequest` or `http.IncomingMessage` instances. Instead, it provides a response object with the following properties:\n\n```js\n{\n  // body is `string` by default. When `rawBody` is set to true, will return `ArrayBuffer` in browsers and `Buffer` in Node.js.\n  body: 'Response body'\n  // The final URL, after following redirects (configure `maxRedirects` to change the number of redirects to follow)\n  url: 'http://foo.bar/baz',\n  method: 'GET',\n  statusCode: 200,\n  statusMessage: 'OK',\n  headers: {\n    'Date': 'Fri, 09 Dec 2016 14:55:32 GMT',\n    'Cache-Control': 'public, max-age=120'\n  }\n}\n```\n\n## Promise API\n\nFor the most part, you simply have to register the middleware and you should be good to go. Sometimes you only need the response body, in which case you can set the `onlyBody` option to `true`. Otherwise the promise will be resolved with the response object mentioned earlier.\n\n```js\nimport {getIt} from 'get-it'\nimport {promise} from 'get-it/middleware'\n\nconst request = getIt([promise({onlyBody: true})])\n\nrequest({url: 'http://foo.bar/api/projects'})\n  .then((projects) =\u003e console.log(projects))\n  .catch((err) =\u003e console.error(err))\n```\n\n### Cancelling promise-based requests\n\nWith the Promise API, you can cancel requests using a _cancel token_. This API is based on the [Cancelable Promises proposal](https://github.com/tc39/proposal-cancelable-promises), which was at Stage 1 before it was withdrawn.\n\nYou can create a cancel token using the `CancelToken.source` factory as shown below:\n\n```js\nimport {promise} from 'get-it/middleware'\n\nconst request = getIt([promise()])\n\nconst source = promise.CancelToken.source()\n\nrequest\n  .get({\n    url: 'http://foo.bar/baz',\n    cancelToken: source.token,\n  })\n  .catch((err) =\u003e {\n    if (promise.isCancel(err)) {\n      console.log('Request canceled', err.message)\n    } else {\n      // handle error\n    }\n  })\n\n// Cancel the request (the message parameter is optional)\nsource.cancel('Operation canceled by the user')\n```\n\n## Observable API\n\nThe observable API requires you to pass an Observable-implementation that you want to use. Optionally, you can register it under the global `Observable`, but this is not recommended.\n\n```js\nimport {getIt} from 'get-it'\nimport {observable} from 'get-it/middleware'\nimport {Observable as RxjsObservable} from 'rxjs'\n\nconst request = getIt()\n\nrequest.use(\n  observable({\n    implementation: RxjsObservable,\n  }),\n)\n\nconst observer = request({url: 'http://foo.bar/baz'})\n  .filter((ev) =\u003e ev.type === 'response')\n  .subscribe({\n    next: (res) =\u003e console.log(res.body),\n    error: (err) =\u003e console.error(err),\n  })\n\n// If you want to cancel the request, simply unsubscribe:\nobserver.unsubscribe()\n```\n\nIt's important to note that the observable middleware does not only emit `response` objects, but also `progress` events. You should always filter to specify what you're interested in receiving. Every emitted value has a `type` property.\n\n## Prior art\n\nThis module was inspired by the great work of others:\n\n- [got](https://github.com/sindresorhus/got)\n- [simple-get](https://github.com/feross/simple-get)\n- [xhr](https://github.com/naugtur/xhr)\n- [Axios](https://github.com/mzabriskie/axios/)\n- [http-client](https://github.com/mjackson/http-client)\n- [request](https://github.com/request/request)\n\n## License\n\nMIT-licensed. See LICENSE.\n\n## Release new version\n\nRun the [\"CI \u0026 Release\" workflow](https://github.com/sanity-io/get-it/actions).\nMake sure to select the main branch and check \"Release new version\".\n\nSemantic release will only release on configured branches, so it is safe to run release on any branch.\n\n[gzip-badge]: https://img.shields.io/bundlephobia/minzip/get-it?label=gzip%20size\u0026style=flat-square\n[size-badge]: https://img.shields.io/bundlephobia/min/get-it?label=size\u0026style=flat-square\n[bundlephobia]: https://bundlephobia.com/package/get-it\n[modern browsers]: https://browsersl.ist/#q=%3E+0.2%25+and+supports+es6-module+and+supports+es6-module-dynamic-import+and+not+dead+and+not+IE+11\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanity-io%2Fget-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanity-io%2Fget-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanity-io%2Fget-it/lists"}