{"_id":"@00f2ff/result","_rev":"1-0caa1ab3cdc00ee1828113d04a9d56d9","name":"@00f2ff/result","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@00f2ff/result","version":"0.1.0","description":"Safe promise handling with Results, implemented with ES2020 features","author":{"name":"Duncan McIsaac"},"license":"MIT","main":"dist/result.js","types":"dist/result.d.ts","scripts":{"build":"tsc","prepare":"husky install","check":"tsc --noEmit","prettify":"prettier --write --ignore-unknown","lint":"eslint ./src --ext .ts .","lint-stage":"npm run check && npm run prettify && npm run lint"},"devDependencies":{"@typescript-eslint/eslint-plugin":"5.51.0","@typescript-eslint/parser":"5.51.0","eslint":"8.33.0","eslint-config-prettier":"8.6.0","eslint-plugin-import":"2.27.5","eslint-plugin-n":"15.6.1","eslint-plugin-prettier":"4.2.1","eslint-plugin-promise":"6.1.1","husky":"8.0.3","prettier":"2.8.3","typescript":"4.9.5"},"repository":{"type":"git","url":"git+https://github.com/00f2ff/result.git"},"keywords":["result"],"bugs":{"url":"https://github.com/00f2ff/result/issues"},"homepage":"https://github.com/00f2ff/result#readme","gitHead":"4e1953a714b875bc6484f55eede6220e495ff9fd","_id":"@00f2ff/result@0.1.0","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-u936ycSRMJs7TluD3IemkQJyrfu2PQWG+g6WvAygQFPXCezuW9Ejo4OCvCsOBbj2+mozlkAFgBF4EKUkH6aaaQ==","shasum":"92002b97dfe8a1869a01006f071b64bbc8316610","tarball":"https://registry.npmjs.org/@00f2ff/result/-/result-0.1.0.tgz","fileCount":7,"unpackedSize":7693,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEnMsJa6EcX41Rm0gglYps9NKjU0S9K6Y/fCuEi1P6VAAiEAgLcRckefrMI+7h5J5yKiVwC382OzdQ/FpmUpJhHdBqw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/Au7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUpxAAl6wk1xwScnDX/2SMBSFEEPZOwy3Yu0TV4TEOMh3vv9cyng+j\r\nR0+mykBQn/HDXslw+cuiNJbWbgU/5F3Z+zuJmGuugFI/rr/654PAQ1lIqHE1\r\nO6lM+mDFmYWxQ+eLZYwLWC5dAxRhk7zM2UtBAwL+17VEHYIkW746c0aAMrJ0\r\nSDFgb5uxOx9qe+leo4SLIL/bHyFvcG32PkuXZPov6z9tRKL9RiMjPCYJz+uK\r\nulsU7JnZkYRvpwLjOGE1qXMFherX+bQgGEvwvgpb7/NmdE7bTAdQqwgVan8q\r\nxzFfmc0QaDBjP8pBSjO4nFnMET3jptMKdgMiwbvQOVWUP07zL5mP31UOnCIB\r\nGWF1MfLwXeMMb56H8bAv/FC1U/cJtLj4LCl5wcY+X1WVTZmdf6MQLxn6TdV9\r\nimrEkvO+DGl+0k51kG6Kc+az4sSG8z4sL3hQV7CPmXmS7SxbjkOlOH/E9FZ3\r\n2g73fieKpD22i5lbEM4Njn2nN6riDs2h9sFZazvgEyTR7VU85ApZ6RLFtbgi\r\nJkS7m73fPRs3UhJydhlMvUfDjRLQ1mgKuMTQ7PpiVaxEv1Ho6cVTTvN6OFrD\r\nxGmiA5t+qiopUcuEYlfFsQNMDtn6012ieOctPkpdxO5+/pqK+7jG8CsG5NQk\r\naB5tnAhsjuuM9/wxC9BPyiUxXicJjDa+WVM=\r\n=T0cW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"00f2ff","email":"dbmcisaac1@gmail.com"},"directories":{},"maintainers":[{"name":"00f2ff","email":"dbmcisaac1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/result_0.1.0_1677462459064_0.0997540436394746"},"_hasShrinkwrap":false},"1.0.0":{"name":"@00f2ff/result","version":"1.0.0","description":"Safe promise handling with Results, implemented with ES2020 features","author":{"name":"Duncan McIsaac"},"license":"MIT","main":"dist/result.js","types":"dist/result.d.ts","scripts":{"build":"tsc","prepare":"husky install","check":"tsc --noEmit","prettify":"prettier --write --ignore-unknown","publish":"npm publish --access public","lint":"eslint ./src --ext .ts .","lint-stage":"npm run check && npm run prettify && npm run lint","test":"jest"},"devDependencies":{"@types/jest":"29.4.0","@typescript-eslint/eslint-plugin":"5.51.0","@typescript-eslint/parser":"5.51.0","eslint":"8.33.0","eslint-config-prettier":"8.6.0","eslint-plugin-import":"2.27.5","eslint-plugin-n":"15.6.1","eslint-plugin-prettier":"4.2.1","eslint-plugin-promise":"6.1.1","husky":"8.0.3","jest":"29.4.3","prettier":"2.8.3","ts-jest":"29.0.5","typescript":"4.9.5"},"repository":{"type":"git","url":"git+https://github.com/00f2ff/result.git"},"keywords":["result"],"bugs":{"url":"https://github.com/00f2ff/result/issues"},"homepage":"https://github.com/00f2ff/result#readme","gitHead":"a0ea239ef5fab42e448c1e9739c1e2b48b0daa53","_id":"@00f2ff/result@1.0.0","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-MSaDtI80VF0ZFoSyaKumJryoFRJZ/O9r5ZM36u7GFt3J/EDwlClasViWWodnLJOFhzxP7y7iWkErqlj5oLEzkQ==","shasum":"78c3e788bf301bea453f1d9bb9d734c07917014d","tarball":"https://registry.npmjs.org/@00f2ff/result/-/result-1.0.0.tgz","fileCount":8,"unpackedSize":9670,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEfjs2pguvEBR5Ag0TvcQ7+Cxh7ZkzG3YR6fWVtYG4gRAiA6/1W8ud8HgEZfJ6EOqJzwGJSww3lWbw6X6ismA0vlKQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/CSqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFuw//bcRNwKZKVEyZ4ZwhwMtOIJdZWzfNh204na+ASCcAfAMvmuSB\r\ns60mJkMdYcfZ+t8rFSGSOs3ld5Dz5T2J3CIORjGd1ZTKp4zpjdOHhvdnryUh\r\nJJpdAzV2+9uANf+SaaRgumvivI16fCdtxXq99u2bfMCka5nG39iwVmwucgga\r\nN8A1vxJO0hjC6a7T2r9CONNcgEbKg++97VG4AbZff6kvuYSrw7JwGmyQsVU5\r\nWc27Rw0MqU3AhXGe637DhB+0EaezGlL6oSph1QsJWlBE366z6NSUQwkfEteR\r\nMUVOFQWY/nmjLgAx3lJuVMGADf11JO0xJw1YPiwWrKOK3pMAroB1p0S7j6Jy\r\nCCXkFOZLEj6jBqLs5YyAKYTnoQGF9xJkYZRWcDjzMaLIMlHfrCUO3NtTkBDV\r\n1R8KI9seQ0hNN7z0ybmPZJWGltFVb4djToSjdcFQsdFiYH8Ez/aWPaAQQPQU\r\ncPjhsg8XNc3XNZDw2NxrO3Ll1cX0b3rUh/1lXFvqdz050di0m/+tq421Efvs\r\nmIJ8PFPKACEGw7SlLjqR/VmBQTDeZ3p4x2lfBTF7SJvgZDZKQWDMlMm7NwCN\r\njAqEZbnVL/S9NlBtukxU4AzDPawgJJV5r6b2D1XhaPge0jc87htHg7NrlGYH\r\nGosqwc7ceOlEVY3WxmMmSm1Yc3hpRIZ6mTY=\r\n=JfiR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"00f2ff","email":"dbmcisaac1@gmail.com"},"directories":{},"maintainers":[{"name":"00f2ff","email":"dbmcisaac1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/result_1.0.0_1677468841988_0.6573228198743288"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-27T01:47:38.987Z","0.1.0":"2023-02-27T01:47:39.201Z","modified":"2023-02-27T03:34:02.224Z","1.0.0":"2023-02-27T03:34:02.125Z"},"maintainers":[{"name":"00f2ff","email":"dbmcisaac1@gmail.com"}],"description":"Safe promise handling with Results, implemented with ES2020 features","homepage":"https://github.com/00f2ff/result#readme","keywords":["result"],"repository":{"type":"git","url":"git+https://github.com/00f2ff/result.git"},"author":{"name":"Duncan McIsaac"},"bugs":{"url":"https://github.com/00f2ff/result/issues"},"license":"MIT","readme":"# Result\n\nSafely handle asynchronous errors with `Result`. Inspired by [neverthrow](https://github.com/supermacro/neverthrow)'s core `ResultAsync` types, but is intended for use in sequential imperative statements using `async/await`, rather than functional pipelining.\n\nAkin to Rust's [`std::result`](https://doc.rust-lang.org/std/result/) and Scala's [`scala.util.Either`](https://www.scala-lang.org/api/2.13.6/scala/util/Either.html). Uses ES2020's [`Promise.allSettled`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) under the hood and mostly follows its naming convention. \n\n## Installation\n\n```\nnpm i @00f2ff/result\n```\n\n## API\n\n`E` defaults to `Error`.\n\n### `settle<T, E>`\n\nSettles a promise into `Result<T, E>` that can be narrowed to `Fulfilled<T, E>` or `Rejected<T, E>`.\n\n```ts\nconst result: Result<boolean, Error> = await settle(Promise.resolve(true));\nif (result.isFulfilled()) { \n  console.log(result.value); // true\n}\n```\n\n```ts\nconst result: Result<boolean, Error> = await settle(Promise.reject(new Error(\"oh no\"));\nif (result.isRejected()) { \n  console.log(result.error); // Error(\"oh no\")\n}\n```\n\n### `settleAll<T, E>`\n\nSettles an array of promises into a tuple of `[Fulfilled<T, E>[], Rejected<T, E>[]]`. \n\n```ts\nconst resolvingPromises = [Promise.resolve(true), Promise.resolve(\"hello\")];\nconst rejectingPromises = [Promise.reject(new Error(\"oh no\"), Promise.reject(new DbError(\"ruh roh\"))];\n\nconst [fulfilled, rejected] = await settleAll<boolean | string, Error | DbError>([...resolvingPromises, ...rejectingPromises]);\n```\n\n## Test\n\n```\nnpm run test\n```\n","readmeFilename":"README.md"}