Skip to content

vtaits/krustykrab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

krustykrab

NPM dependencies status

Implementation of some helpers of Rust stdlib on JavaScript/TypeScript

Api reference

Implemented helpers

Option

import { Some, None } from "krustykrab";

const someOption = Some("foo");
const noneOption = None();

Rust reference

krustykrab reference

Result

import { Ok, Err } from "krustykrab";

const okResult = Ok("foo");
const errResult = Err("bar");

Rust reference

krustykrab reference

Additional helpers

unwrap

Panics if the value is null or undefined or returns it otherwise

import { unwrap } from "krustykrab";

const fooOrUndefined = document.getElementById('foo'); // html element or `undefined`
const foo = unwrap(fooOrUndefined); // exactly html element

unwrapOr

Returns the value if it's not null or undefined, or returns the default value

import { unwrapOr } from "krustykrab";

const foo: Partial<Record<string, string>> = { bar: 'baz' };

unwrapOr(foo.bar, 'qux'); // returns 'baz'
unwrapOr(foo.bat, 'qux'); // returns 'qux'

unwrapOrElse

Returns the value if it's not null or undefined, or computes it

import { unwrapOrElse } from "krustykrab";

const foo: Partial<Record<string, string>> = { bar: 'baz' };

unwrapOrElse(foo.bar, () => 'qux'); // returns 'baz'
unwrapOrElse(foo.bat, () => 'qux'); // returns 'qux'

getResult

Converts Promise to Result

import { getResult } from "krustykrab";

const successResult = await getResult(Promise.resolve('foo'));
successResult.unwrap(); // returns 'foo'

const errorResult = await getResult(Promise.reject('bar'));
errorResult.unwrapErr(); // returns 'bar'

toOption

Convert a nullable variable to Option

import { toOption } from "krustykrab";

const option = toOption('foo');
option.isNone(); // returns `false`;
option.unwrap(); // returns `'foo'`;

toOption(null).isNone(); // returns `true`
toOption(undefined).isNone(); // returns `true`

tryCatch

Wrap the result of a function call with Result

import { tryCatch } from "krustykrab";

const successResult = tryCatch(() => JSON.parse('{"foo": "bar"}'));
successResult.unwrap(); // returns `{ foo: "bar" }`

const errorResult = tryCatch(() => JSON.parse("{invalid json}"));
errorResult.isErr(); // returns `true`

About

Rust utils for JavaScript projects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published