
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
settle-itDeal with code that can throw.
npm install settle-it
Most commonly I use try/catch, but in some cases it's great:
try/catch statementstry/catch statements get in the way because you need to use let if you need the variable outside of the try/catch scope:
let todos;
try {
todos = JSON.parse(localStorage.getItem('todos'))
} catch {}
return todos.filter(todo => todo.done)
Also:
err is always an Error object — great for TypeScript & unexpected cases when someone throw 'error'fallback value.fallback can be a function that accepts the Error — great for working with itSafely parse JSON & specify the type (one-liner):
import settle from 'settle-it'
const [parsed] = settle<State>(() => JSON.parse(value))
// parsed is State | undefined
Prefer const:
const isOnline = settle(async () => {
const response = await fetch('https://status.com/check')
const json = response.json()
return json.isOnline
}, false)
Safely fetch & on error, send to error tracking service (one-liner):
import settle from 'settle-it'
const [response] = await settle(fetch('https://todos.com/get'), sendToErrorTrackingService)
// response is Response | undefined
Safely read a file & fallback to empty string (one-liner):
import { readFile } from 'node:fs/promises'
const [content] = await settle(readFile(path), '')
// content is string
Avoid nesting try/catch statements:
const user = settle(() => JSON.parse(json), () => showDialog('failed to parse'))
const contents = settle(fetch(`http://example.com/${user.id}`), () => showDialog('failed to fetch'))
// to show different errors to the user you need to nest try/catch statements
I usually prefer source code or examples ↑.
settle<T, F>(
value: Promise | (() => T) | (() => Promise<T>),
fallback: F | ((err: Error) => F | void)
): [T, undefined] | [F, Error]
[value, undefined] if no error was thrown while executing the function.[fallback, Error] is an error was thrown.FAQs
Deal with code that can throw
We found that settle-it demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.