UNPKG

canary-js

Version:

A minimalist, functional JavaScript toolkit for mere mortals. Curried, data-last, and easy to learn.

116 lines (106 loc) 5.54 kB
// CanaryJS TypeScript Definitions (partial) // Array export declare const flat: <T>(xs: T[][]) => T[] export declare const concat: <T>(ys: T[]) => (xs: T[]) => T[] export declare const join: (sep: string) => (xs: string[]) => string export declare const indexOf: <T>(val: T) => (xs: T[]) => number export declare const lastIndexOf: <T>(val: T) => (xs: T[]) => number export declare const flatMap: <T, U>(fn: (x: T) => U[]) => (xs: T[]) => U[] export declare const map: <T, U>(fn: (x: T) => U) => (xs: T[]) => U[] export declare const filter: <T>(fn: (x: T) => boolean) => (xs: T[]) => T[] export declare const reduce: <T, U>( fn: (acc: U, x: T) => U ) => (init: U) => (xs: T[]) => U export declare const slice: (start: number) => (end: number) => <T>(xs: T[]) => T[] export declare const find: <T>(fn: (x: T) => boolean) => (xs: T[]) => T | undefined export declare const findIndex: <T>(fn: (x: T) => boolean) => (xs: T[]) => number export declare const findLast: <T>(fn: (x: T) => boolean) => (xs: T[]) => T | undefined export declare const some: <T>(fn: (x: T) => boolean) => (xs: T[]) => boolean export { some as any } export declare const every: <T>(fn: (x: T) => boolean) => (xs: T[]) => boolean export { every as all } export declare const at: (idx: number) => <T>(xs: T[]) => T | undefined export { at as nth } export declare const includes: <T>(val: T) => (xs: T[]) => boolean export declare const sort: <T>(fn: (a: T, b: T) => number) => (xs: T[]) => T[] export declare const reverse: <T>(xs: T[]) => T[] export declare function length(val: string): number export declare function length<T extends { length: number }>(val: T): number // String export declare const startsWith: (substr: string) => (str: string) => boolean export declare const endsWith: (substr: string) => (str: string) => boolean export declare const split: (sep: string) => (str: string) => string[] export declare const toLower: (str: string) => string export declare const toUpper: (str: string) => string export declare const trim: (str: string) => string export declare const trimStart: (str: string) => string export declare const trimEnd: (str: string) => string export declare const repeat: (n: number) => (str: string) => string export declare const padStart: (length: number) => (str: string) => string export declare const padEnd: (length: number) => (str: string) => string // Object export declare const keys: (obj: object) => string[] export declare const values: (obj: object) => any[] export declare const entries: (obj: object) => [string, any][] export declare const fromEntries: (entries: [string, any][]) => object export declare const prop: <T, K extends keyof T>(key: K) => (obj: T) => T[K] export declare const freeze: <T>(obj: T) => Readonly<T> export declare const seal: <T>(obj: T) => T export declare const is: (a: unknown) => (b: unknown) => boolean // Math & Logic export declare const add: (a: number) => (b: number) => number export declare const subtract: (a: number) => (b: number) => number export declare const multiply: (a: number) => (b: number) => number export declare const divide: (a: number) => (b: number) => number export declare const modulo: (a: number) => (b: number) => number export declare const abs: (x: number) => number export declare const pow: (a: number) => (b: number) => number export declare const floor: (x: number) => number export declare const ceil: (x: number) => number export declare const round: (x: number) => number export declare const equals: <T>(a: T) => (b: T) => boolean export declare const not: (x: any) => boolean export declare const negate: <T>(fn: (x: T) => boolean) => (x: T) => boolean export declare const lt: (a: number) => (b: number) => boolean export declare const lte: (a: number) => (b: number) => boolean export declare const gt: (a: number) => (b: number) => boolean export declare const gte: (a: number) => (b: number) => boolean // Control Flow export declare const ifElse: <T>(pred: (x: T) => boolean) => (onTrue: (x: T) => any) => (onFalse: (x: T) => any) => (x: T) => any export declare const cond: <T>(pairs: Array<[(x: T) => boolean, (x: T) => any]>) => (x: T) => any export function tryCatch<A, B>( tryFn: (x: A) => B, catchFn: (err: unknown, x: A) => B ): (x: A) => B // Function export declare const pipe: (...fns: Array<(x: any) => any>) => (x: any) => any export declare const compose: (...fns: Array<(x: any) => any>) => (x: any) => any export declare const identity: <T>(x: T) => T export declare const converge: <A, B, C>( fn: (x: B) => (y: C) => any ) => ( g: (a: A) => B ) => (h: (a: A) => C) => (a: A) => ReturnType<ReturnType<typeof fn>> export declare const always: <T>(x: T) => () => T export declare const tap: <T>(fn: (x: T) => any) => (x: T) => T export declare const addIndex: <T>(fn: (f: (x: T, i: number) => any) => (xs: T[]) => any) => (f: (x: T, i: number) => any) => (xs: T[]) => any export declare const flip: <A, B, C>( fn: (a: A) => (b: B) => C ) => (b: B) => (a: A) => C export function binary<A, B, C>(fn: (a: A) => (b: B) => C): (a: A, b: B) => C export function trinary<A, B, C, D>( fn: (a: A) => (b: B) => (c: C) => D ): (a: A, b: B, c: C) => D // --- Pattern Matching for Discriminated Unions --- export declare function match<T extends { kind: string }, R>( state: T, cases: { [K in T['kind']]?: (s: Extract<T, { kind: K }>) => R } & { _?: (s: T) => R } ): R export declare function matchStrict<T extends { kind: PropertyKey }, R>( state: T, cases: { [K in T['kind']]: (s: Extract<T, { kind: K }>) => R } ): R