{"id":18563153,"url":"https://github.com/compulim/on-error-resume-next","last_synced_at":"2025-04-10T03:32:41.287Z","repository":{"id":38184842,"uuid":"125952871","full_name":"compulim/on-error-resume-next","owner":"compulim","description":"Run a function, synchronously or asynchronously, and ignore errors.","archived":false,"fork":false,"pushed_at":"2024-10-13T09:37:38.000Z","size":907,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-13T12:49:41.274Z","etag":null,"topics":["ignore-errors","ignoring-errors"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/on-error-resume-next","language":"JavaScript","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/compulim.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}},"created_at":"2018-03-20T03:04:26.000Z","updated_at":"2024-10-13T09:37:41.000Z","dependencies_parsed_at":"2024-06-19T00:05:25.931Z","dependency_job_id":"c4edcf7f-1a4e-4f24-b795-b95856d13b56","html_url":"https://github.com/compulim/on-error-resume-next","commit_stats":{"total_commits":26,"total_committers":2,"mean_commits":13.0,"dds":0.1923076923076923,"last_synced_commit":"657032be8dbff825b4df830ee034de97f6f4a438"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compulim%2Fon-error-resume-next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compulim%2Fon-error-resume-next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compulim%2Fon-error-resume-next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/compulim%2Fon-error-resume-next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/compulim","download_url":"https://codeload.github.com/compulim/on-error-resume-next/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223424468,"owners_count":17142744,"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":["ignore-errors","ignoring-errors"],"created_at":"2024-11-06T22:11:56.130Z","updated_at":"2024-11-06T22:11:56.687Z","avatar_url":"https://github.com/compulim.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# on-error-resume-next\n\nRun a function, synchronously or asynchronously, and ignore errors.\n\n[![npm version](https://badge.fury.io/js/on-error-resume-next.svg)](https://npmjs.com/package/on-error-resume-next)\n\nThe name come from [Visual Basic](https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/on-error-statement). The original `On Error Resume Next` statement is considered a bad error handling practice.\n\nAlthough the perception of the feature is negative, when scoped and used responsibly, it can become a very helpful utility function.\n\nWhen using `onErrorResumeNext`, please be responsible and fully understand the impact of ignoring errors.\n\n# Breaking changes\n\n## New in 2.0\n\nWe introduced named exports and removed default imports. The default is synchronous. The \"auto-detection\" version is being moved to under 'on-error-resume-next/auto'.\n\n```diff\n- import onErrorResumeNext from 'on-error-resume-next';\n+ import { onErrorResumeNext } from 'on-error-resume-next/auto';\n```\n\nIt is recommended to use either synchronous or asynchronous version for better clarity.\n\n# Usage\n\n`onErrorResumeNext` will return the result if it is a success. For example,\n\n```js\nimport { onErrorResumeNext } from 'on-error-resume-next';\n\n// Will return result on returns.\nconst returned = onErrorResumeNext(() =\u003e JSON.parse('{\"hello\":\"World!\"}'));\n\nexpect(returned).toEqual({ hello: 'World!' });\n\n// Will return undefined on throws.\nconst thrown = onErrorResumeNext(() =\u003e JSON.parse('\u003cxml /\u003e'));\n\nexpect(thrown).toBeUndefined();\n```\n\nNotes: if an asynchronous function is being passed to `onErrorResumeNext()`, it will throw to protect from false negatives. Please use `on-error-resume-next/async` for asynchronous functions.\n\n## Asynchronous using `async`/`await`\n\n`onErrorResumeNext` will capture both exceptions (synchronous) and rejections (asynchronous). The returned value is always a `Promise` object.\n\n```js\nimport { onErrorResumeNext } from 'on-error-resume-next/async';\n\n// \"async\" will return Promise on resolves.\nconst resolution = onErrorResumeNext(() =\u003e Promise.resolve('Hello, World!'));\n\nawait expect(resolution).resolves.toBe('Hello, World!');\n\n// \"async\" will return Promise on returns.\nconst returned = onErrorResumeNext(() =\u003e 'Hello, World!');\n\nawait expect(returned).resolves.toBe('Hello, World!');\n\n// \"async\" will return Promise on rejects.\nconst rejection = onErrorResumeNext(() =\u003e Promise.reject(new Error()));\n\nawait expect(rejection).resolves.toBeUndefined();\n\n// \"async\" will return Promise on throws.\nconst thrown = onErrorResumeNext(() =\u003e {\n  throw new Error();\n});\n\nawait expect(thrown).resolves.toBeUndefined();\n```\n\n## Auto-detecting synchronous/asynchronous functions\n\n\u003e For best experience, please use synchronous or asynchronous version instead.\n\n`on-error-resume-next/auto` will handle both exceptions (synchronous) and rejections (asynchronous) accordingly.\n\n```js\nimport { onErrorResumeNext } from 'on-error-resume-next/auto';\n\n// \"auto\" will return result on returns.\nconst returned = onErrorResumeNext(() =\u003e 'Hello, World!');\n\nexpect(returned).toEqual('Hello, World!');\n\n// \"auto\" will return undefined on throws.\nconst thrown = onErrorResumeNext(() =\u003e {\n  throw new Error('Hello, World!');\n});\n\nexpect(thrown).toEqual(undefined);\n\n// \"auto\" will return Promise on resolves.\nconst resolution = onErrorResumeNext(() =\u003e Promise.resolve('Hello, World!'));\n\nawait expect(resolution).resolves.toBe('Hello, World!');\n\n// \"auto\" will return Promise on rejects.\nconst rejection = onErrorResumeNext(() =\u003e Promise.reject(new Error()));\n\nawait expect(rejection).resolves.toBeUndefined();\n```\n\n## Sync vs. async vs. auto\n\nThe following table show how each version react with different passing functions.\n\n|                      | Default (sync)            | Async                        | Auto                         |\n| -------------------- | ------------------------- | ---------------------------- | ---------------------------- |\n| `return 1`           | `1`                       | `Promise.resolve(1)`         | `1`                          |\n| `throw 2`            | `undefined`               | `Promise.resolve(undefined)` | `undefined`                  |\n| `Promise.resolve(3)` | Not supported, will throw | `Promise.resolve(3)`         | `Promise.resolve(3)`         |\n| `Promise.reject(4)`  | Not supported, will throw | `Promise.resolve(undefined)` | `Promise.resolve(undefined)` |\n\n# Contributions\n\nLike us? [Star](https://github.com/compulim/on-error-resume-next/stargazers) us.\n\nWant to make it better? [File](https://github.com/compulim/on-error-resume-next/issues) us an issue.\n\nDon't like something you see? [Submit](https://github.com/compulim/on-error-resume-next/pulls) a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcompulim%2Fon-error-resume-next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcompulim%2Fon-error-resume-next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcompulim%2Fon-error-resume-next/lists"}