{"id":23789967,"url":"https://github.com/blackglory/extra-abort","last_synced_at":"2026-04-02T01:08:42.760Z","repository":{"id":44955854,"uuid":"439269933","full_name":"BlackGlory/extra-abort","owner":"BlackGlory","description":"🌲","archived":false,"fork":false,"pushed_at":"2025-06-15T16:12:01.000Z","size":634,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-22T21:42:51.273Z","etag":null,"topics":["browser","esm","library","nodejs","npm-package"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/extra-abort","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/BlackGlory.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}},"created_at":"2021-12-17T08:57:55.000Z","updated_at":"2025-06-15T16:12:04.000Z","dependencies_parsed_at":"2024-06-21T04:19:23.646Z","dependency_job_id":"e7168383-740c-415a-b8b1-7b7588f0ac1a","html_url":"https://github.com/BlackGlory/extra-abort","commit_stats":{"total_commits":57,"total_committers":2,"mean_commits":28.5,"dds":"0.14035087719298245","last_synced_commit":"f638c78af0898f6acb70261671f64fc36826acc1"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/BlackGlory/extra-abort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackGlory%2Fextra-abort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackGlory%2Fextra-abort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackGlory%2Fextra-abort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackGlory%2Fextra-abort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlackGlory","download_url":"https://codeload.github.com/BlackGlory/extra-abort/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackGlory%2Fextra-abort/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262933321,"owners_count":23386784,"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","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":["browser","esm","library","nodejs","npm-package"],"created_at":"2025-01-01T17:17:50.187Z","updated_at":"2026-04-02T01:08:42.717Z","avatar_url":"https://github.com/BlackGlory.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# extra-abort\n## Install\n```sh\nnpm install --save extra-abort\n# or\nyarn add extra-abort\n```\n\n## API\n### AbortController, AbortSignal\nThe WHATWG `AbortController` and `AbortSignal`.\n\n### AbortError\n```ts\nclass AbortError extends CustomError {}\n```\n\nIt is not the real `AbortError` of `fetch`,\nbut you can do `err instance AbortError` like it is,\nbecause it can recognizes other errors that match the pattern of `AbortError`.\n\n### LinkedAbortController\n```ts\nclass LinkedAbortController extends AbortController {\n  constructor(signal: AbortSignal)\n}\n```\n\nIt is a special `AbortController` that takes an `AbortSignal` as a parameter.\nIt will abort itself when its parameter signal aborts,\nyou can make it abort by calling its `abort` method too.\n\n### timeoutSignal\n```ts\nfunction timeoutSignal(ms: number): AbortSignal\n```\n\nIt will abort after `ms` milliseconds.\n\n```ts\nawait fetch('http://example.com', { signal: timeoutSignal(5000) })\n```\n\n### withAbortSignal\n```ts\n/**\n * @throws {AbortError}\n */\nfunction withAbortSignal\u003cT\u003e(signal: AbortSignal | Falsy, fn: () =\u003e PromiseLike\u003cT\u003e): Promise\u003cT\u003e\n```\n\nIf `AbortSignal` is aborted, the promise will be rejected with `AbortError`.\n\n### raceAbortSignals\n```ts\nfunction raceAbortSignals(signals: Array\u003cAbortSignal | Falsy\u003e): AbortSignal\n```\n\nThe `Promise.race` function for `AbortSignal`.\n\n### isAbortSignal\n```ts\nfunction isAbortSignal(val: unknown): val is AbortSignal\n```\n\n### lastCallOnly\n```ts\nfunction lastCallOnly\u003cT, Args extends unknown[]\u003e(\n  fn: (...args: [...args: Args, signal: AbortSignal]) =\u003e PromiseLike\u003cT\u003e\n): (...args: [...args: Args, signal: AbortSignal | Falsy]) =\u003e Promise\u003cT\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackglory%2Fextra-abort","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblackglory%2Fextra-abort","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackglory%2Fextra-abort/lists"}