diff --git a/src/option.js b/src/option.js index f0f72b2..3a1b681 100644 --- a/src/option.js +++ b/src/option.js @@ -82,24 +82,12 @@ export class Option { static lte(other, self) { return self.lte(other) } - - /** - * @template T - * @returns {this is Some} - */ - isSome() { - return this instanceof Some - } - - /** - * @returns {this is None} - */ - isNone() { - return this == None || this instanceof _None - } } -/** @template T */ +/** + * @template T + * @augments Option + */ export class Some extends Option { /** @type T */ #value @@ -157,7 +145,6 @@ export class Some extends Option { } /** - * @template T * @param {(value: T) => boolean} predicate * @returns {Option} */ @@ -170,7 +157,7 @@ export class Some extends Option { * @returns {boolean} */ equals(other) { - return other.isSome() && this.#value === other.#value + return other instanceof Some && this.#value === other.#value } /** @@ -178,7 +165,7 @@ export class Some extends Option { * @returns {boolean} */ lte(other) { - return other.isSome() && this.#value <= other.#value + return other instanceof Some && this.#value <= other.#value } /** @@ -242,8 +229,7 @@ export class Some extends Option { /** * @template E - * @template {() => E} F - * @param {F} _err + * @param {() => E} _err * @returns {Result} */ okOrElse(_err) { @@ -289,23 +275,26 @@ export class Some extends Option { } } +/** + * @template T + * @augments Option + */ class _None extends Option { /** - * @returns {this is Some} + * @returns {this is Some} */ isSome() { return false } /** - * @returns {this is _None} + * @returns {this is _None} */ isNone() { return true } /** - * @template T * @param {Option} _other * @returns {Option} */ @@ -314,7 +303,6 @@ class _None extends Option { } /** - * @template T * @template {Option} R * @param {(value: T) => R} _fn * @returns {R} @@ -324,7 +312,6 @@ class _None extends Option { } /** - * @template T * @param {Option} other * @returns {Option} */ @@ -333,7 +320,6 @@ class _None extends Option { } /** - * @template T * @param {() => Option} fn * @returns {Option} */ @@ -342,7 +328,6 @@ class _None extends Option { } /** - * @template T * @param {(value: T) => boolean} _predicate * @returns {Option} */ @@ -351,7 +336,6 @@ class _None extends Option { } /** - * @template T * @param {Option} other * @returns {boolean} */ @@ -360,7 +344,6 @@ class _None extends Option { } /** - * @template T * @param {Option} _other * @returns {boolean} */ @@ -369,7 +352,7 @@ class _None extends Option { } /** - * @template T, [V=T] + * @template [V=T] * @param {(acc: V, value: T) => V} _reducer * @param {V} init * @returns {V} @@ -379,7 +362,6 @@ class _None extends Option { } /** - * @template T * @template {Option} R * @returns {R} */ @@ -388,17 +370,16 @@ class _None extends Option { } /** - * @template T, V - * @template {Option} R + * @template V * @param {(value: T) => V} _fn - * @returns {R} + * @returns {Option} */ map(_fn) { return this } /** - * @template T, V + * @template V * @param {V} defaultValue * @param {(value: T) => V} _fn * @returns {V} @@ -408,7 +389,7 @@ class _None extends Option { } /** - * @template T, V + * @template V * @param {() => V} defaultFn * @param {(value: T) => V} _fn * @returns {V} @@ -418,7 +399,7 @@ class _None extends Option { } /** - * @template T, E + * @template E * @template {Result} R * @param {E} err * @returns {R} @@ -428,18 +409,15 @@ class _None extends Option { } /** - * @template T, E - * @template {Result} R - * @template {() => E} F - * @param {F} err - * @returns {R} + * @template E + * @param {() => E} err + * @returns {Result} */ okOrElse(err) { return Result.err(err()) } /** - * @template T * @param {(value: T) => void} _fn * @returns {this} */ @@ -448,7 +426,6 @@ class _None extends Option { } /** - * @template T * @returns {T} * @throws {UnwrapError} */ @@ -457,7 +434,6 @@ class _None extends Option { } /** - * @template T * @param {T} value * @returns {T} */ @@ -466,7 +442,6 @@ class _None extends Option { } /** - * @template T * @param {() => T} fn * @returns {T} */ diff --git a/src/result.js b/src/result.js index d5387d5..c8e12b6 100644 --- a/src/result.js +++ b/src/result.js @@ -45,20 +45,6 @@ export class Result { static lte(other, self) { return self.lte(other) } - - /** - * @returns {this is Ok} - */ - isOk() { - return this instanceof Ok - } - - /** - * @returns {this is Err} - */ - isErr() { - return this instanceof Err - } } /** @template T, E */ @@ -97,9 +83,8 @@ export class Ok extends Result { /** * @template V - * @template {Result} R * @param {(value: T) => V} fn - * @returns {R} + * @returns {Result} */ map(fn) { return Result.ok(fn(this.#value)) @@ -121,7 +106,7 @@ export class Ok extends Result { * @param {(value: T) => V} fn * @returns {V} */ - mapOr(_defaultFn, fn) { + mapOrElse(_defaultFn, fn) { return this.map(fn) } @@ -155,7 +140,7 @@ export class Ok extends Result { * @returns {boolean} */ equals(other) { - return other.isOk() && this.#value === other.#value + return other instanceof Ok && this.#value === other.#value } /** @@ -163,7 +148,7 @@ export class Ok extends Result { * @returns {boolean} */ lte(other) { - return other.isOk() && this.#value <= other.#value + return other instanceof Ok && this.#value <= other.#value } /** @@ -285,9 +270,8 @@ export class Err extends Result { /** * @template V - * @template {Result} R * @param {(value: T) => V} _fn - * @returns {R} + * @returns {Result} */ map(_fn) { return this @@ -346,7 +330,7 @@ export class Err extends Result { * @returns {boolean} */ equals(other) { - return other.isErr() && this.#error === other.#error + return other instanceof Err && this.#error === other.#error } /** @@ -355,7 +339,7 @@ export class Err extends Result { * @returns {boolean} */ lte(other) { - return other.isErr() && this.#error <= other.#error + return other instanceof Err && this.#error <= other.#error } /** diff --git a/types/option.d.ts b/types/option.d.ts index b9dec28..4ba2ad5 100644 --- a/types/option.d.ts +++ b/types/option.d.ts @@ -9,7 +9,7 @@ export class Option { */ static some(value: T_1): Some; /** @returns {None} */ - static none(): _None; + static none(): _None; /** * @template T * @param {(value: T) => Option} fn @@ -56,6 +56,10 @@ export class Option { * @returns {this is Some} */ isSome(): this is Some; + /** + * @returns {this is _None} + */ + isNone(): this is _None; /** * @param {(value: T) => Option} fn * @returns {Option} @@ -77,11 +81,10 @@ export class Option { */ orElse(_fn: () => Option): Option; /** - * @template T * @param {(value: T) => boolean} predicate * @returns {Option} */ - filter(predicate: (value: T_1) => boolean): Option; + filter(predicate: (value: T) => boolean): Option; /** * @param {Option} other * @returns {boolean} @@ -157,15 +160,21 @@ export class Option { unwrapOrElse(_fn: () => T): T; #private; } - -/** @template T */ -export class Some extends Option { +/** + * @template T + * @augments Option + */ +export class Some extends Option { /** @param {T} value */ constructor(value: T); /** * @returns {this is Some} */ isSome(): this is Some; + /** + * @returns {this is _None} + */ + isNone(): this is _None; /** * @param {(value: T) => Option} fn * @returns {Option} @@ -187,11 +196,10 @@ export class Some extends Option { */ orElse(_fn: () => Option): Option; /** - * @template T * @param {(value: T) => boolean} predicate * @returns {Option} */ - filter(predicate: (value: T_1) => boolean): Option; + filter(predicate: (value: T) => boolean): Option; /** * @param {Option} other * @returns {boolean} @@ -267,127 +275,121 @@ export class Some extends Option { unwrapOrElse(_fn: () => T): T; #private; } -export const None: _None; -declare class _None extends Option { - constructor(); +export const None: _None; +/** + * @template T + * @augments Option + */ +declare class _None extends Option { /** - * @returns {this is Some} + * @returns {this is Some} */ - isSome(): this is Some; + isSome(): this is Some; + /** + * @returns {this is _None} + */ + isNone(): this is _None; /** - * @template T * @param {Option} _other * @returns {Option} */ - and(_other: Option): Option; + and(_other: Option): Option; /** - * @template T * @template {Option} R * @param {(value: T) => R} _fn * @returns {R} */ - andThen>(_fn: (value: T) => R): R; + andThen>(_fn: (value: T) => R): R; /** - * @template T * @param {Option} other * @returns {Option} */ - or(other: Option): Option; + or(other: Option): Option; /** - * @template T * @param {() => Option} fn * @returns {Option} */ - orElse(fn: () => Option): Option; + orElse(fn: () => Option): Option; /** - * @template T * @param {(value: T) => boolean} _predicate * @returns {Option} */ - filter(_predicate: (value: T) => boolean): Option; + filter(_predicate: (value: T) => boolean): Option; /** - * @template T * @param {Option} other * @returns {boolean} */ - equals(other: Option): boolean; + equals(other: Option): boolean; /** - * @template T * @param {Option} _other * @returns {boolean} */ - lte(_other: Option): boolean; + lte(_other: Option): boolean; /** - * @template T, [V=T] + * @template [V=T] * @param {(acc: V, value: T) => V} _reducer * @param {V} init * @returns {V} */ - reduce(_reducer: (acc: V, value: T) => V, init: V): V; + reduce(_reducer: (acc: V, value: T) => V, init: V): V; /** - * @template T * @template {Option} R * @returns {R} */ - flatten>(): R; + flatten>(): R; /** - * @template T, V - * @template {Option} R + * @template V * @param {(value: T) => V} _fn - * @returns {R} + * @returns {Option} */ - map>(_fn: (value: T) => V): R; + map(_fn: (value: T) => V): Option; /** - * @template T, V + * @template V * @param {V} defaultValue * @param {(value: T) => V} _fn * @returns {V} */ - mapOr(defaultValue: V, _fn: (value: T) => V): V; + mapOr(defaultValue: V, _fn: (value: T) => V): V; /** - * @template T, V + * @template V * @param {() => V} defaultFn * @param {(value: T) => V} _fn * @returns {V} */ - mapOrElse(defaultFn: () => V, _fn: (value: T) => V): V; + mapOrElse(defaultFn: () => V, _fn: (value: T) => V): V; /** - * @template T, E + * @template E * @template {Result} R * @param {E} err * @returns {R} */ - okOr>(err: E): R; + okOr>(err: E): R; /** - * @template T, E + * @template E * @param {() => E} err - * @returns {R} + * @returns {Result} */ - okOrElse(err: () => E): Result; + okOrElse(err: () => E): Result; /** - * @template T * @param {(value: T) => void} _fn * @returns {this} */ - inspect(_fn: (value: T) => void): this; + inspect(_fn: (value: T) => void): this; /** - * @template T * @returns {T} * @throws {UnwrapError} */ - unwrap(): T; + unwrap(): T; /** - * @template T * @param {T} value * @returns {T} */ - unwrapOr(value: T): T; + unwrapOr(value: T): T; /** - * @template T * @param {() => T} fn * @returns {T} */ - unwrapOrElse(fn: () => T): T; + unwrapOrElse(fn: () => T): T; } import { Result } from './result.js'; export { }; diff --git a/types/option.d.ts.map b/types/option.d.ts.map index 116ec7b..e0561ae 100644 --- a/types/option.d.ts.map +++ b/types/option.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../src/option.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../src/option.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/result.d.ts b/types/result.d.ts index 638b3ef..92a7049 100644 --- a/types/result.d.ts +++ b/types/result.d.ts @@ -25,6 +25,104 @@ export class Result { * @returns {this is Err} */ isErr(): this is Err; + /** + * @template {Result} R + * @param {(value: T) => R} fn + * @returns {R} + */ + andThen>(fn: (value: T) => R): R; + /** + * @template V + * @param {(value: T) => V} fn + * @returns {Result} + */ + map(fn: (value: T) => V): Result; + /** + * @template V + * @param {V} _defaultValue + * @param {(value: T) => V} fn + * @returns {V} + */ + mapOr(_defaultValue: V, fn: (value: T) => V): V; + /** + * @template V + * @param {() => V} _defaultFn + * @param {(value: T) => V} fn + * @returns {V} + */ + mapOrElse(_defaultFn: () => V, fn: (value: T) => V): V; + /** + * @param {Result} other + * @returns {Result} + */ + and(other: Result): Result; + /** + * @param {Result} _other + * @returns {Result} + */ + or(_other: Result): Result; + /** + * @template F + * @param {(error: E) => Result} _fn + * @returns {Result} + */ + orElse(_fn: (error: E) => Result): Result; + /** + * @param {Result} other + * @returns {boolean} + */ + equals(other: Result): boolean; + /** + * @param {Result} other + * @returns {boolean} + */ + lte(other: Result): boolean; + /** + * @template [V=T] + * @param {(acc: V, value: T) => V} reducer + * @param {V} init + * @returns {V} + */ + reduce(reducer: (acc: V, value: T) => V, init: V): V; + /** + * @template {Result} R + * @returns {R} + */ + flatten>(): R; + /** + * @returns {Option} + */ + ok(): Option; + /** + * @returns {Option} + */ + err(): Option; + /** + * @param {(value: T) => void} fn + * @returns {this} + */ + inspect(fn: (value: T) => void): this; + /** + * @returns {T} + * @throws {UnwrapError} + */ + unwrap(): T; + /** + * @returns {E} + * @throws {UnwrapError} + */ + unwrapErr(): E; + /** + * @param {T} _value + * @returns {T} + */ + unwrapOr(_value: T): T; + /** + * @param {() => T} _fn + * @returns {T} + */ + unwrapOrElse(_fn: () => T): T; + #private; } /** @template T, E */ export class Ok extends Result { @@ -46,11 +144,10 @@ export class Ok extends Result { andThen>(fn: (value: T) => R): R; /** * @template V - * @template {Result} R * @param {(value: T) => V} fn - * @returns {R} + * @returns {Result} */ - map>(fn: (value: T) => V): R; + map(fn: (value: T) => V): Result; /** * @template V * @param {V} _defaultValue @@ -58,6 +155,13 @@ export class Ok extends Result { * @returns {V} */ mapOr(_defaultValue: V, fn: (value: T) => V): V; + /** + * @template V + * @param {() => V} _defaultFn + * @param {(value: T) => V} fn + * @returns {V} + */ + mapOrElse(_defaultFn: () => V, fn: (value: T) => V): V; /** * @param {Result} other * @returns {Result} @@ -151,11 +255,10 @@ export class Err extends Result { andThen>(_fn: (value: T) => R): R; /** * @template V - * @template {Result} R * @param {(value: T) => V} _fn - * @returns {R} + * @returns {Result} */ - map>(_fn: (value: T) => V): R; + map(_fn: (value: T) => V): Result; /** * @template V * @param {V} defaultValue @@ -251,4 +354,4 @@ export class Err extends Result { #private; } import { Option } from './option.js'; -//# sourceMappingURL=result.d.ts.map \ No newline at end of file +//# sourceMappingURL=result.d.ts.map diff --git a/types/result.d.ts.map b/types/result.d.ts.map index f64861a..0d09f72 100644 --- a/types/result.d.ts.map +++ b/types/result.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.js"],"names":[],"mappings":"AAOA;;GAEG;AACH,oBAFa,CAAC,EAAE,CAAC;IAGf;;;OAGG;IACH,sBAFW,GAAC,gBAIX;IAED;;;OAGG;IACH,uBAFW,GAAC,iBAIX;IAGD,sCAEC;IAED,oCAEC;IAED,uCAEC;IAED,0CAEC;IAED,uCAEC;IAED;;OAEG;IACH,QAFa,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAI5B;IAED;;OAEG;IACH,SAFa,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAI7B;CACF;AAED,qBAAqB;AACrB,gBADc,CAAC,EAAE,CAAC;IAKhB,uBAAuB;IACvB,mBADY,CAAC,EAIZ;IAED;;OAEG;IACH,QAFa,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAI5B;IAED;;OAEG;IACH,SAFa,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAI7B;IAED;;;;OAIG;IACH,QAJ4B,CAAC,SAAf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,MAChB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAED;;;;;OAKG;IACH,IALa,CAAC,EACc,CAAC,SAAf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,MAChB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAED;;;;;OAKG;IACH,MALa,CAAC,iBACH,CAAC,MACD,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAYD;;;OAGG;IACH,WAHW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAIxB;IAED;;;OAGG;IACH,WAHW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAIxB;IAED;;;;OAIG;IACH,OAJa,CAAC,OACH,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACxB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAIxB;IAED;;;OAGG;IACH,cAHW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,OAAO,CAInB;IAED;;;OAGG;IACH,WAHW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,OAAO,CAInB;IAED;;;;;OAKG;IACH,OALc,CAAC,eACJ,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,QACvB,CAAC,GACC,CAAC,CAIb;IAED;;;OAGG;IACH,QAH4B,CAAC,SAAf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,KACd,CAAC,CAQb;IAED;;OAEG;IACH,MAFa,MAAM,CAAC,CAAC,CAAC,CAIrB;IAED;;OAEG;IACH,OAFa,MAAM,CAAC,CAAC,CAAC,CAIrB;IAED;;;OAGG;IACH,YAHW,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAChB,IAAI,CAKhB;IAED;;;OAGG;IACH,UAHa,CAAC,CAKb;IAED;;;OAGG;IACH,aAHa,CAAC,CAKb;IAED;;;OAGG;IACH,iBAHW,CAAC,GACC,CAAC,CAIb;IAED;;;OAGG;IACH,kBAHW,MAAM,CAAC,GACL,CAAC,CAIb;;CAMF;AAED,qBAAqB;AACrB,iBADc,CAAC,EAAE,CAAC;IAKhB,uBAAuB;IACvB,mBADY,CAAC,EAIZ;IAED;;OAEG;IACH,QAFa,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAI5B;IAED;;OAEG;IACH,SAFa,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAI7B;IAED;;;;OAIG;IACH,QAJ4B,CAAC,SAAf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,OAChB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAED;;;;;OAKG;IACH,IALa,CAAC,EACc,CAAC,SAAf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,OAChB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAED;;;;;OAKG;IACH,MALa,CAAC,gBACH,CAAC,OACD,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAED;;;;;OAKG;IACH,UALa,CAAC,aACH,MAAM,CAAC,OACP,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACb,CAAC,CAIb;IAED;;;;OAIG;IACH,iBAHW,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,GACV,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,CAIxB;IAED;;;;OAIG;IACH,eAHW,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,GACV,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,CAIxB;IAED;;;;OAIG;IACH,YAJgB,CAAC,MACN,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,GACxB,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,CAIxB;IAED;;;;OAIG;IACH,mBAHW,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,GACV,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,CAAC,GAAC,EAAE,CAAC,CAAC,GACV,OAAO,CAInB;IAED;;;;;OAKG;IACH,OALc,CAAC,gBACJ,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,QACvB,CAAC,GACC,CAAC,CAIb;IAED;;;OAGG;IACH,QAH4B,CAAC,SAAf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,KACd,CAAC,CAQb;IAED;;OAEG;IACH,MAFa,MAAM,CAAC,CAAC,CAAC,CAIrB;IAED;;OAEG;IACH,OAFa,MAAM,CAAC,CAAC,CAAC,CAIrB;IAED;;;;OAIG;IACH,kBAHW,CAAC,KAAK,EAAE,GAAC,KAAK,IAAI,GAChB,IAAI,CAIhB;IAED;;;;OAIG;IACH,eAHa,GAAC,CAKb;IAED;;;OAGG;IACH,aAHa,CAAC,CAKb;IAED;;;OAGG;IACH,gBAHW,CAAC,GACC,CAAC,CAIb;IAED;;;;OAIG;IACH,sBAHW,MAAM,GAAC,GACL,GAAC,CAIb;;CAMF;uBAtb4B,aAAa"} \ No newline at end of file +{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.js"],"names":[],"mappings":"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"} \ No newline at end of file