UNPKG

declarations

Version:

[![npm version](https://badge.fury.io/js/declarations.svg)](https://www.npmjs.com/package/declarations)

270 lines (262 loc) 10.7 kB
// Type definitions for scalike API // Project: https://github.com/ryoppy/scalike-typescript // Definitions by: ryoppy <https://github.com/ryoppy> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare namespace scalike { export interface Either<A, B> { value: A | B; isLeft: boolean; isRight: boolean; left(): LeftProjection<A, B>; right(): RightProjection<A, B>; fold<X>(fa: (a: A) => X, fb: (b: B) => X): X; swap(): Either<B, A>; } export function Right<A, B>(b: B): Either<A, B>; export function Left<A, B>(a: A): Either<A, B>; export class LeftProjection<A, B> { private self; constructor(self: Either<A, B>); toString(): string; get(): A; foreach(f: (a: A) => void): void; getOrElse<X extends A>(x: X): A; forall(f: (a: A) => boolean): boolean; exists(f: (a: A) => boolean): boolean; filter(f: (a: A) => boolean): Optional<Either<A, B>>; map<X>(f: (a: A) => X): Either<X | A, B>; flatMap<X>(f: (a: A) => Either<X, B>): Either<X | A, B>; toOptional(): Optional<A>; } export class RightProjection<A, B> { private self; constructor(self: Either<A, B>); toString(): string; get(): B; foreach(f: (b: B) => void): void; getOrElse<X extends B>(x: X): B; forall(f: (b: B) => boolean): boolean; exists(f: (b: B) => boolean): boolean; filter(f: (b: B) => boolean): Optional<Either<A, B>>; map<X>(f: (b: B) => X): Either<A, X | B>; flatMap<X>(f: (a: B) => Either<A, X>): Either<A, X | B>; toOptional(): Optional<B>; } export interface Optional<A> { isEmpty: boolean; nonEmpty: boolean; get(): A; getOrElse<B extends A>(a: B): A; map<B>(f: (a: A) => B): Optional<B>; fold<B>(ifEmpty: B, f: (a: A) => B): B; flatten(): Optional<A>; filter(f: (a: A) => boolean): Optional<A>; contains<B extends A>(b: B): boolean; exists(f: (a: A) => boolean): boolean; forall(f: (a: A) => boolean): boolean; flatMap<B>(f: (a: A) => Optional<B>): Optional<B>; foreach(f: (a: A) => void): void; orElse<B extends A>(ob: Optional<B>): Optional<A>; apply1<B, C>(ob: Optional<B>, f: (a: A, b: B) => C): Optional<C>; apply2<B, C, D>(ob: Optional<B>, oc: Optional<C>, f: (a: A, b: B, c: C) => D): Optional<D>; chain<B>(ob: Optional<B>): OptionalBuilder1<A, B>; } export const None: Optional<any>; export function Optional<A>(a: A): Optional<A>; export function Some<A>(a: A): Optional<A>; export class OptionalBuilder1<A, B> { private oa; private ob; constructor(oa: Optional<A>, ob: Optional<B>); run<C>(f: (a: A, b: B) => C): Optional<C>; chain<C>(oc: Optional<C>): OptionalBuilder2<A, B, C>; } export class OptionalBuilder2<A, B, C> { private oa; private ob; private oc; constructor(oa: Optional<A>, ob: Optional<B>, oc: Optional<C>); run<D>(f: (a: A, b: B, c: C) => D): Optional<D>; chain<D>(od: Optional<D>): OptionalBuilder3<A, B, C, D>; } export class OptionalBuilder3<A, B, C, D> { private oa; private ob; private oc; private od; constructor(oa: Optional<A>, ob: Optional<B>, oc: Optional<C>, od: Optional<D>); run<E>(f: (a: A, b: B, c: C, d: D) => E): Optional<E>; chain<E>(oe: Optional<E>): OptionalBuilder4<A, B, C, D, E>; } export class OptionalBuilder4<A, B, C, D, E> { private oa; private ob; private oc; private od; private oe; constructor(oa: Optional<A>, ob: Optional<B>, oc: Optional<C>, od: Optional<D>, oe: Optional<E>); run<F>(f: (a: A, b: B, c: C, d: D, e: E) => F): Optional<F>; chain<F>(of: Optional<F>): OptionalBuilder5<A, B, C, D, E, F>; } export class OptionalBuilder5<A, B, C, D, E, F> { private oa; private ob; private oc; private od; private oe; private of; constructor(oa: Optional<A>, ob: Optional<B>, oc: Optional<C>, od: Optional<D>, oe: Optional<E>, of: Optional<F>); run<G>(f: (a: A, b: B, c: C, d: D, e: E, f: F) => G): Optional<G>; } export interface Try<A> { isSuccess: boolean; isFailure: boolean; get(): A; getError(): Error; fold<B>(fe: (e: Error) => B, ff: (a: A) => B): B; getOrElse<B extends A>(a: B): A; orElse<B extends A>(a: Try<B>): Try<A>; foreach<B>(f: (a: A) => void): void; flatMap<B>(f: (a: A) => Try<B>): Try<B>; map<B>(f: (a: A) => B): Try<B>; filter(f: (a: A) => boolean): Try<A>; toOptional(): Optional<A>; failed(): Try<A>; transform<B>(fs: (a: A) => Try<B>, ff: (e: Error) => Try<B>): Try<B>; recover<B extends A>(f: (e: Error) => Optional<Try<B>>): Try<A>; apply1<B, C>(ob: Try<B>, f: (a: A, b: B) => C): Try<C>; apply2<B, C, D>(ob: Try<B>, oc: Try<C>, f: (a: A, b: B, c: C) => D): Try<D>; chain<B>(ob: Try<B>): TryBuilder1<A, B>; } export function Try<A>(f: () => A): Try<A>; export function Success<A>(a: A): Try<A>; export function Failure<A>(e: Error): Try<A>; export class TryBuilder1<A, B> { private oa; private ob; constructor(oa: Try<A>, ob: Try<B>); run<C>(f: (a: A, b: B) => C): Try<C>; chain<C>(oc: Try<C>): TryBuilder2<A, B, C>; } export class TryBuilder2<A, B, C> { private oa; private ob; private oc; constructor(oa: Try<A>, ob: Try<B>, oc: Try<C>); run<D>(f: (a: A, b: B, c: C) => D): Try<D>; chain<D>(od: Try<D>): TryBuilder3<A, B, C, D>; } export class TryBuilder3<A, B, C, D> { private oa; private ob; private oc; private od; constructor(oa: Try<A>, ob: Try<B>, oc: Try<C>, od: Try<D>); run<E>(f: (a: A, b: B, c: C, d: D) => E): Try<E>; chain<E>(oe: Try<E>): TryBuilder4<A, B, C, D, E>; } export class TryBuilder4<A, B, C, D, E> { private oa; private ob; private oc; private od; private oe; constructor(oa: Try<A>, ob: Try<B>, oc: Try<C>, od: Try<D>, oe: Try<E>); run<F>(f: (a: A, b: B, c: C, d: D, e: E) => F): Try<F>; chain<F>(of: Try<F>): TryBuilder5<A, B, C, D, E, F>; } export class TryBuilder5<A, B, C, D, E, F> { private oa; private ob; private oc; private od; private oe; private of; constructor(oa: Try<A>, ob: Try<B>, oc: Try<C>, od: Try<D>, oe: Try<E>, of: Try<F>); run<G>(f: (a: A, b: B, c: C, d: D, e: E, f: F) => G): Try<G>; } export interface Future<A> { getPromise(): Promise<A>; onComplete<B>(f: (t: Try<A>) => B): void; isCompleted(): boolean; value(): Optional<Try<A>>; failed(): Future<Error>; foreach<B>(f: (a: A) => B): void; transform<B>(f: (t: Try<A>) => Try<B>): Future<B>; transform1<B>(fs: (a: A) => B, ff: (e: Error) => Error): Future<B>; transformWith<B>(f: (t: Try<A>) => Future<B>): Future<B>; map<B>(f: (a: A) => B): Future<B>; flatMap<B>(f: (a: A) => Future<B>): Future<B>; filter(f: (a: A) => boolean): Future<A>; recover<B extends A>(f: (e: Error) => Optional<B>): Future<A>; recoverWith<B extends A>(f: (e: Error) => Optional<Future<B>>): Future<A>; zip<B>(fu: Future<B>): Future<[A, B]>; zipWith<B, C>(fu: Future<B>, f: (a: A, b: B) => C): Future<C>; fallbackTo<B extends A>(fu: Future<B>): Future<A>; andThen<B>(f: (t: Try<A>) => B): Future<A>; apply1<B, C>(ob: Future<B>, f: (a: A, b: B) => C): Future<C>; apply2<B, C, D>(ob: Future<B>, oc: Future<C>, f: (a: A, b: B, c: C) => D): Future<D>; chain<B>(ob: Future<B>): FutureBuilder1<A, B>; } export function Future<A>(f: Promise<A> | (() => A)): Future<A>; export namespace Future { function fromPromise<A>(p: Promise<A>): Future<A>; function unit(): Future<void>; function failed<A>(e: Error): Future<A>; function successful<A>(a: A): Future<A>; function fromTry<A>(t: Try<A>): Future<A>; function sequence<A>(fus: Array<Future<A>>): Future<Array<A>>; function firstCompletedOf<A>(fus: Array<Future<A>>): Future<A>; function find<A>(fus: Array<Future<A>>, f: (a: A) => boolean): Future<Optional<A>>; function foldLeft<A, B>(fu: Array<Future<A>>, zero: B, f: (b: B, a: A) => B): Future<B>; function reduceLeft<A, B>(fu: Array<Future<A>>, f: (b: B, a: A) => B): Future<B>; function traverse<A, B>(fu: Array<A>, f: (a: A) => Future<B>): Future<Array<B>>; } export class FutureBuilder1<A, B> { private oa; private ob; constructor(oa: Future<A>, ob: Future<B>); run<C>(f: (a: A, b: B) => C): Future<C>; chain<C>(oc: Future<C>): FutureBuilder2<A, B, C>; } export class FutureBuilder2<A, B, C> { private oa; private ob; private oc; constructor(oa: Future<A>, ob: Future<B>, oc: Future<C>); run<D>(f: (a: A, b: B, c: C) => D): Future<D>; chain<D>(od: Future<D>): FutureBuilder3<A, B, C, D>; } export class FutureBuilder3<A, B, C, D> { private oa; private ob; private oc; private od; constructor(oa: Future<A>, ob: Future<B>, oc: Future<C>, od: Future<D>); run<E>(f: (a: A, b: B, c: C, d: D) => E): Future<E>; chain<E>(oe: Future<E>): FutureBuilder4<A, B, C, D, E>; } export class FutureBuilder4<A, B, C, D, E> { private oa; private ob; private oc; private od; private oe; constructor(oa: Future<A>, ob: Future<B>, oc: Future<C>, od: Future<D>, oe: Future<E>); run<F>(f: (a: A, b: B, c: C, d: D, e: E) => F): Future<F>; chain<F>(of: Future<F>): FutureBuilder5<A, B, C, D, E, F>; } export class FutureBuilder5<A, B, C, D, E, F> { private oa; private ob; private oc; private od; private oe; private of; constructor(oa: Future<A>, ob: Future<B>, oc: Future<C>, od: Future<D>, oe: Future<E>, of: Future<F>); run<G>(f: (a: A, b: B, c: C, d: D, e: E, f: F) => G): Future<G>; } } declare module "scalike" { export = scalike }