
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
@sapphire/result
Advanced tools
A TypeScript port of Nightly Rust's Result and Option structs
When having many try-catch
blocks after one another, or multiple try-catch
blocks nested in one another then code can become very chaotic very quickly. To alleviate that issue we have made the @sapphire/result
which offers two structures based on Rust's Result<T, E>
and Option<T>
with full Nightly coverage and extra convenience methods. This code has been branched off of @sapphire/framework
into its own package after we saw great success with the code there.
Result<T, E>
and Option<T>
You can use the following command to install this package, or replace npm install
with your package manager of choice.
npm install @sapphire/result
Note 1: While this section uses require
, the imports match 1:1 with ESM imports. For example const { Result } = require('@sapphire/result')
equals import { Result } from '@sapphire/result'
.
Note 2: For more thorough examples check out the generated documentation on our website here
try-catch
blocksOld code without Result.from
:
try {
const returnCode = someFunctionThatMightThrow();
return returnCode;
} catch (error) {
// Handle the error:
console.error(error);
return null;
}
New Code with Result.from
:
const { Result } = require('@sapphire/result');
const returnCode = Result.from(() => someFunctionThatMightThrow());
return returnCode.unwrapOrElse((error) => {
console.error(error);
return null;
});
try-catch
blocksOld code without Result.fromAsync
:
try {
const returnCode = await someFunctionThatReturnsAPromiseAndMightReject();
return returnCode;
} catch (error) {
// Handle the error:
console.error(error);
return null;
}
New Code with Result.fromAsync
:
const { Result } = require('@sapphire/result');
const returnCode = await Result.fromAsync(async () => someFunctionThatReturnsAPromiseAndMightReject());
return returnCode.unwrapOrElse((error) => {
console.error(error);
return null;
});
Sapphire Community is and always will be open source, even if we don't get donations. That being said, we know there are amazing people who may still want to donate just to show their appreciation. Thank you very much in advance!
We accept donations through Open Collective, Ko-fi, Paypal, Patreon and GitHub Sponsorships. You can use the buttons below to donate through your method of choice.
Donate With | Address |
---|---|
Open Collective | Click Here |
Ko-fi | Click Here |
Patreon | Click Here |
PayPal | Click Here |
Please make sure to read the Contributing Guide before making a pull request.
Thank you to all the people who already contributed to Sapphire!
FAQs
A TypeScript port of Nightly Rust's Result and Option structs
The npm package @sapphire/result receives a total of 6,125 weekly downloads. As such, @sapphire/result popularity was classified as popular.
We found that @sapphire/result demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 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 researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.