@jumpaku/async-result
Version:
A typescript library that provides Result, Option, and AsyncResult.
1 lines • 33 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["Option.js","AsyncResult.js","Result.js"],"sourcesContent":["class Some {\n constructor(value) {\n this.value = value;\n this.length = 1;\n this[0] = this.value;\n this[Symbol.iterator] = () => {\n const value = this.value;\n return (function* () {\n yield value;\n })();\n };\n }\n isSome() {\n return true;\n }\n isNone() {\n return false;\n }\n flatMap(f) {\n return f(this.value);\n }\n map(f) {\n return new Some(f(this.value));\n }\n orDefault(value) {\n return this.value;\n }\n orBuild(f) {\n return this.value;\n }\n orThrow(f) {\n return this.value;\n }\n orNull() {\n return this.value;\n }\n orUndefined() {\n return this.value;\n }\n takeIf(f) {\n return f(this.value) ? this : none();\n }\n takeIfNotNull() {\n return nonNull(this.value);\n }\n ifPresent(f) {\n f(this.value);\n return this;\n }\n ifAbsent(f) {\n return this;\n }\n and(other) {\n return other;\n }\n or(other) {\n return this;\n }\n}\nclass None {\n constructor() {\n this.length = 0;\n this[Symbol.iterator] = () => (function* () { })();\n }\n isSome() {\n return false;\n }\n isNone() {\n return true;\n }\n flatMap(f) {\n return None.instance;\n }\n map(f) {\n return None.instance;\n }\n orDefault(value) {\n return value;\n }\n orBuild(f) {\n return f();\n }\n orThrow(f) {\n throw f != null ? f() : new Error(\"Option is None.\");\n }\n orNull() {\n return null;\n }\n orUndefined() {\n return undefined;\n }\n takeIf(f) {\n return this;\n }\n takeIfNotNull() {\n return None.instance;\n }\n ifPresent(f) {\n return this;\n }\n ifAbsent(f) {\n f();\n return this;\n }\n and(other) {\n return this;\n }\n or(other) {\n return other;\n }\n}\nNone.instance = new None();\nexport function none() {\n return None.instance;\n}\nexport function some(value) {\n return new Some(value);\n}\nexport function nonNull(nullable) {\n return ((a) => a != null)(nullable)\n ? some(nullable)\n : none();\n}\n//# sourceMappingURL=Option.js.map","import { Result } from \"./Result\";\nexport class AsyncResult {\n constructor(promise) {\n this.promise = promise;\n }\n static of(result, catchFun) {\n if (Result.isResult(result))\n return new AsyncResult(Promise.resolve(result));\n return catchFun == null\n ? new AsyncResult(result.catch((error) => Result.failure(error)))\n : new AsyncResult(result.catch((error) => Result.failure(catchFun(error))));\n }\n static make(neverThrowExecutor) {\n return AsyncResult.of(new Promise((resolve) => neverThrowExecutor((v) => resolve(Result.success(v)), (e) => resolve(Result.failure(e)))), (e) => e);\n }\n static success(v) {\n return AsyncResult.of(Result.success(v));\n }\n static failure(e) {\n return AsyncResult.of(Result.failure(e));\n }\n static try(tryFun, catchFun) {\n const promise = new Promise((resolve, reject) => {\n try {\n resolve(tryFun());\n }\n catch (error) {\n reject(error);\n }\n }).then(Result.success);\n return catchFun == null\n ? AsyncResult.of(promise)\n : AsyncResult.of(promise, catchFun);\n }\n then(onfulfilled, onrejected) {\n return this.promise.then(onfulfilled, onrejected);\n }\n match(onSuccess, onFailure) {\n return this.promise.then((result) => result.match(onSuccess, onFailure));\n }\n value() {\n return this.promise.then((r) => r.value);\n }\n error() {\n return this.promise.then((r) => r.error);\n }\n orNull() {\n return this.promise.then((r) => r.orNull());\n }\n orUndefined() {\n return this.promise.then((r) => r.orUndefined());\n }\n orReject(f) {\n return this.promise.then((r) => (f == null ? r.orThrow() : r.orThrow(f)));\n }\n orDefault(value) {\n return this.promise.then((r) => r.orDefault(value));\n }\n orRecover(neverThrowFun) {\n return this.promise.then((r) => r.orRecover(neverThrowFun));\n }\n onSuccess(neverThrowFun) {\n this.promise.then((r) => r.onSuccess(neverThrowFun));\n return this;\n }\n onFailure(neverThrowFun) {\n this.promise.then((r) => r.onFailure(neverThrowFun));\n return this;\n }\n and(other) {\n return new AsyncResult(this.promise.then((r0) => other.promise.then((r1) => r0.and(r1))));\n }\n or(other) {\n return new AsyncResult(this.promise.then((r0) => other.promise.then((r1) => r0.or(r1))));\n }\n map(neverThrowFun) {\n return new AsyncResult(this.promise.then((result) => result.map(neverThrowFun)));\n }\n tryMap(tryFun, catchFun) {\n return (catchFun == null\n ? AsyncResult.try(() => this.promise.then((it) => it.tryMap(tryFun)))\n : AsyncResult.try(() => this.promise.then((it) => it.tryMap(tryFun, catchFun)), catchFun)).flatMap((it) => AsyncResult.of(it));\n }\n flatMap(neverThrowFun) {\n const promise = new Promise(async (resolve) => {\n (await this.promise)\n .onSuccess((value) => resolve(neverThrowFun(value).promise))\n .onFailure((error) => resolve(Result.failure(error)));\n });\n return new AsyncResult(promise);\n }\n tryFlatMap(tryFun, catchFun) {\n if (catchFun == null) {\n const promise = this.promise\n .then(async (r) => r.isFailure() ? r.castValue() : tryFun(r.value).promise)\n .catch((error) => Result.failure(error));\n return AsyncResult.of(promise);\n }\n else {\n const promise = this.promise\n .then(async (r) => r.isFailure() ? r.castValue() : tryFun(r.value).promise)\n .catch((error) => Result.failure(catchFun(error)));\n return AsyncResult.of(promise);\n }\n }\n recover(neverThrowFun) {\n return new AsyncResult(this.promise.then((result) => result.recover(neverThrowFun)));\n }\n tryRecover(tryFun, catchFun) {\n return catchFun == null\n ? AsyncResult.of(this.match(Result.success, (e) => Result.try(() => tryFun(e))))\n : AsyncResult.of(this.match(Result.success, (e) => Result.try(() => tryFun(e), catchFun)));\n }\n flatRecover(neverThrowFun) {\n const promise = new Promise(async (resolve) => {\n (await this.promise)\n .onSuccess((value) => resolve(Result.success(value)))\n .onFailure((error) => resolve(neverThrowFun(error).promise));\n });\n return new AsyncResult(promise);\n }\n tryFlatRecover(tryFun, catchFun) {\n const promise = new Promise(async (resolve) => {\n (await this.promise)\n .onSuccess((value) => resolve(Result.success(value)))\n .onFailure((error) => {\n try {\n resolve(tryFun(error).promise);\n }\n catch (e) {\n if (catchFun == null)\n resolve(Result.failure(e));\n else\n resolve(Result.failure(catchFun(e)));\n }\n });\n });\n return new AsyncResult(promise);\n }\n mapError(neverThrowFun) {\n return new AsyncResult(this.promise.then((result) => result.mapError(neverThrowFun)));\n }\n tryMapError(tryFun, catchFun) {\n return (catchFun == null\n ? AsyncResult.try(() => this.promise.then((it) => it.tryMapError(tryFun)))\n : AsyncResult.try(() => this.promise.then((it) => it.tryMapError(tryFun, catchFun)), catchFun)).flatMap((it) => AsyncResult.of(it));\n }\n}\n//# sourceMappingURL=AsyncResult.js.map","import { BaseError } from \"make-error-cause\";\nimport { AsyncResult } from \"./AsyncResult\";\nexport class ResultError extends BaseError {\n constructor(error) {\n super(error instanceof Error ? error.message : \"\", error instanceof Error ? error : undefined);\n this.name = \"ResultError\";\n this.detail = error;\n }\n}\nexport const Result = {\n success(value) {\n return new Success(value);\n },\n failure(error) {\n return new Failure(error);\n },\n try: (tryFun, catchFun) => {\n try {\n return Result.success(tryFun());\n }\n catch (error) {\n return catchFun == null\n ? Result.failure(error)\n : Result.failure(catchFun(error));\n }\n },\n isResult(obj) {\n return obj instanceof AbstractResult;\n },\n};\nclass AbstractResult {\n assertsThisIsResult() {\n if (!this.isSuccess() && !this.isFailure())\n throw new Error();\n }\n match(onSuccess, onFailure) {\n this.assertsThisIsResult();\n return this.isSuccess() ? onSuccess(this.value) : onFailure(this.error);\n }\n orDefault(value) {\n return this.isSuccess() ? this.value : value;\n }\n orRecover(f) {\n this.assertsThisIsResult();\n return this.isSuccess() ? this.value : f(this.error);\n }\n orThrow(f) {\n this.assertsThisIsResult();\n if (this.isFailure())\n throw f != null ? f(this.error) : new ResultError(this.error);\n return this.value;\n }\n orNull() {\n return this.isSuccess() ? this.value : null;\n }\n orUndefined() {\n return this.isSuccess() ? this.value : undefined;\n }\n onSuccess(f) {\n if (this.isSuccess())\n f(this.value);\n this.assertsThisIsResult();\n return this;\n }\n onFailure(f) {\n this.assertsThisIsResult();\n if (this.isFailure())\n f(this.error);\n return this;\n }\n and(other) {\n return this.isFailure() ? this : other;\n }\n or(other) {\n return this.isSuccess() ? this : other;\n }\n map(neverThrowFun) {\n this.assertsThisIsResult();\n return this.isSuccess()\n ? Result.success(neverThrowFun(this.value))\n : this.castValue();\n }\n mapAsync(tryFun, catchFun) {\n return catchFun == null\n ? this.match((v) => AsyncResult.try(() => tryFun(v)), (e) => AsyncResult.failure(e))\n : this.match((v) => AsyncResult.try(() => tryFun(v), catchFun), (e) => AsyncResult.failure(e));\n }\n tryMap(tryFun, catchFun) {\n return (catchFun == null\n ? Result.try(() => this.map(tryFun))\n : Result.try(() => this.map(tryFun), catchFun)).flatMap((it) => it);\n }\n flatMap(neverThrowFun) {\n this.assertsThisIsResult();\n return this.isSuccess() ? neverThrowFun(this.value) : this.castValue();\n }\n flatMapAsync(tryFun, catchFun) {\n this.assertsThisIsResult();\n if (this.isFailure())\n return AsyncResult.of(this.castValue());\n try {\n const result = tryFun(this.value);\n return Result.isResult(result) ? AsyncResult.of(result) : result;\n }\n catch (error) {\n return catchFun == null\n ? AsyncResult.failure(error)\n : AsyncResult.failure(catchFun(error));\n }\n }\n tryFlatMap(tryFun, catchFun) {\n return (catchFun == null\n ? Result.try(() => this.flatMap(tryFun))\n : Result.try(() => this.flatMap(tryFun), catchFun)).flatMap((it) => it);\n }\n recover(neverThrowFun) {\n this.assertsThisIsResult();\n return this.isFailure()\n ? Result.success(neverThrowFun(this.error))\n : this.castError();\n }\n recoverAsync(tryFun, catchFun) {\n this.assertsThisIsResult();\n const f = async () => {\n this.assertsThisIsResult();\n return this.isSuccess() ? this.value : tryFun(this.error);\n };\n return catchFun == null ? AsyncResult.try(f) : AsyncResult.try(f, catchFun);\n }\n tryRecover(tryFun, catchFun) {\n return (catchFun == null\n ? Result.try(() => this.recover(tryFun))\n : Result.try(() => this.recover(tryFun), catchFun)).flatMap((it) => it);\n }\n flatRecover(neverThrowFun) {\n this.assertsThisIsResult();\n return this.isFailure() ? neverThrowFun(this.error) : this.castError();\n }\n flatRecoverAsync(tryFun, catchFun) {\n this.assertsThisIsResult();\n if (this.isSuccess())\n return AsyncResult.of(this);\n try {\n const result = tryFun(this.error);\n return Result.isResult(result) ? AsyncResult.of(result) : result;\n }\n catch (error) {\n return catchFun == null\n ? AsyncResult.failure(error)\n : AsyncResult.failure(catchFun(error));\n }\n }\n tryFlatRecover(tryFun, catchFun) {\n return (catchFun == null\n ? Result.try(() => this.flatRecover(tryFun))\n : Result.try(() => this.flatRecover(tryFun), catchFun)).flatMap((it) => it);\n }\n mapError(neverThrowFun) {\n this.assertsThisIsResult();\n return this.isFailure()\n ? Result.failure(neverThrowFun(this.error))\n : this.castError();\n }\n tryMapError(tryFun, catchFun) {\n return (catchFun == null\n ? Result.try(() => this.mapError(tryFun))\n : Result.try(() => this.mapError(tryFun), catchFun)).flatMap((it) => it);\n }\n}\nexport class Success extends AbstractResult {\n constructor(value) {\n super();\n this.value = value;\n this.error = undefined;\n }\n isSuccess() {\n return true;\n }\n isFailure() {\n return false;\n }\n castError() {\n return this;\n }\n}\nexport class Failure extends AbstractResult {\n constructor(error) {\n super();\n this.error = error;\n this.value = undefined;\n }\n isSuccess() {\n return false;\n }\n isFailure() {\n return true;\n }\n castValue() {\n return this;\n }\n}\n//# sourceMappingURL=Result.js.map"],"names":["BaseError"],"mappings":"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"}