Comparing version 98.0.0 to 99.0.0
@@ -17,3 +17,3 @@ import type { AsyncFunction, ElementOf, Func, ParamOf, Reducer, ReturnTypeUnwrapped, Unary } from "./typing.js"; | ||
export declare const edgesToGraph: (_: Edge[]) => Record<Primitive, Set<Primitive>>; | ||
export declare const entryMap: (f: import("./typing.js").UnaryFnUntyped) => [<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>] extends import("./typing.js").AnyAsync<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]> ? Promise<ReturnTypeUnwrapped<import("./typing.js").Last<never>>> : ReturnType<import("./typing.js").Last<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]>>; | ||
export declare const entryMap: (f: import("./typing.js").UnaryFnUntyped) => [<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<globalThis.Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>] extends import("./typing.js").AnyAsync<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<globalThis.Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]> ? Promise<ReturnTypeUnwrapped<import("./typing.js").Last<never>>> : ReturnType<import("./typing.js").Last<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<globalThis.Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]>>; | ||
export declare const entryFilter: <Function extends (((kv: [any, any]) => any))>(f: Function) => (Obj: Record<ParamOf<Function>[0], ParamOf<Function>[1]>) => ((_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[]) extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<AsyncFunction & ((_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[])>>>[0], ElementOf<Awaited<ReturnType<AsyncFunction & ((_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[])>>>[1]>> : Record<ElementOf<Awaited<ReturnType<(_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[]>>>[0], ElementOf<Awaited<ReturnType<(_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[]>>>[1]>; | ||
@@ -29,4 +29,12 @@ type RecordKey = string | number | symbol; | ||
export declare const mapTerminals: <Terminal extends (string | boolean | number | Func)>(terminalMapper: (_: Terminal) => unknown) => (obj: Tree<Terminal>) => Tree<unknown>; | ||
export declare const applySpec: <Args extends unknown[]>(spec: Tree<(..._: Args) => unknown>) => (...args: Args) => unknown; | ||
type Awaited<T> = T extends PromiseLike<infer U> ? U : T; | ||
type SpecType<T> = { | ||
[K in keyof T]: T[K] extends (...args: any[]) => infer R ? Awaited<R> : T[K] extends object ? SpecType<T[K]> : never; | ||
}; | ||
type IsAsync<T> = { | ||
[K in keyof T]: T[K] extends (...args: any[]) => Promise<any> ? true : T[K] extends object ? IsAsync<T[K]> : false; | ||
}[keyof T] extends true ? true : false; | ||
type FinalSpecType<T> = IsAsync<T> extends true ? Promise<SpecType<T>> : SpecType<T>; | ||
export declare const applySpec: <T>(spec: T) => (...args: unknown[]) => FinalSpecType<T>; | ||
export {}; | ||
//# sourceMappingURL=mapping.d.ts.map |
@@ -64,2 +64,4 @@ import { applyTo, identity, pipe } from "./composition.js"; | ||
: terminalMapper(obj); | ||
export const applySpec = (spec) => (...args) => mapTerminals(applyTo(...args))(spec); | ||
export const applySpec = (spec) => (...args) => | ||
// @ts-expect-error too to bother. | ||
mapTerminals(applyTo(...args))(spec); |
{ | ||
"name": "gamla", | ||
"version": "98.0.0", | ||
"version": "99.0.0", | ||
"description": "Functional programming with async and type safety", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -17,3 +17,3 @@ import type { AsyncFunction, ElementOf, Func, ParamOf, Reducer, ReturnTypeUnwrapped, Unary } from "./typing.js"; | ||
export declare const edgesToGraph: (_: Edge[]) => Record<Primitive, Set<Primitive>>; | ||
export declare const entryMap: (f: import("./typing.js").UnaryFnUntyped) => [<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>] extends import("./typing.js").AnyAsync<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]> ? Promise<ReturnTypeUnwrapped<import("./typing.js").Last<never>>> : ReturnType<import("./typing.js").Last<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]>>; | ||
export declare const entryMap: (f: import("./typing.js").UnaryFnUntyped) => [<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<globalThis.Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>] extends import("./typing.js").AnyAsync<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<globalThis.Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]> ? Promise<ReturnTypeUnwrapped<import("./typing.js").Last<never>>> : ReturnType<import("./typing.js").Last<[<F extends import("./typing.js").UnaryFnUntyped>(f: F) => (xs: Parameters<F>[0][]) => F extends AsyncFunction ? Promise<globalThis.Awaited<ReturnType<F>>[]> : ReturnType<F>[], <Function extends (kvs: [any, any][]) => [any, any][] | Promise<[any, any][]>>(transformation: Function) => (Obj: Record<ElementOf<ParamOf<Function>>[0], ElementOf<ParamOf<Function>>[1]>) => Function extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>> : Record<ElementOf<Awaited<ReturnType<Function>>>[0], ElementOf<Awaited<ReturnType<Function>>>[1]>]>>; | ||
export declare const entryFilter: <Function extends (((kv: [any, any]) => any))>(f: Function) => (Obj: Record<ParamOf<Function>[0], ParamOf<Function>[1]>) => ((_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[]) extends AsyncFunction ? Promise<Record<ElementOf<Awaited<ReturnType<AsyncFunction & ((_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[])>>>[0], ElementOf<Awaited<ReturnType<AsyncFunction & ((_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[])>>>[1]>> : Record<ElementOf<Awaited<ReturnType<(_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[]>>>[0], ElementOf<Awaited<ReturnType<(_: ParamOf<Function>[]) => Function extends AsyncFunction ? Promise<ParamOf<Function>[]> : ParamOf<Function>[]>>>[1]>; | ||
@@ -29,4 +29,12 @@ type RecordKey = string | number | symbol; | ||
export declare const mapTerminals: <Terminal extends (string | boolean | number | Func)>(terminalMapper: (_: Terminal) => unknown) => (obj: Tree<Terminal>) => Tree<unknown>; | ||
export declare const applySpec: <Args extends unknown[]>(spec: Tree<(..._: Args) => unknown>) => (...args: Args) => unknown; | ||
type Awaited<T> = T extends PromiseLike<infer U> ? U : T; | ||
type SpecType<T> = { | ||
[K in keyof T]: T[K] extends (...args: any[]) => infer R ? Awaited<R> : T[K] extends object ? SpecType<T[K]> : never; | ||
}; | ||
type IsAsync<T> = { | ||
[K in keyof T]: T[K] extends (...args: any[]) => Promise<any> ? true : T[K] extends object ? IsAsync<T[K]> : false; | ||
}[keyof T] extends true ? true : false; | ||
type FinalSpecType<T> = IsAsync<T> extends true ? Promise<SpecType<T>> : SpecType<T>; | ||
export declare const applySpec: <T>(spec: T) => (...args: unknown[]) => FinalSpecType<T>; | ||
export {}; | ||
//# sourceMappingURL=mapping.d.ts.map |
@@ -79,3 +79,5 @@ "use strict"; | ||
exports.mapTerminals = mapTerminals; | ||
const applySpec = (spec) => (...args) => (0, exports.mapTerminals)((0, composition_js_1.applyTo)(...args))(spec); | ||
const applySpec = (spec) => (...args) => | ||
// @ts-expect-error too to bother. | ||
(0, exports.mapTerminals)((0, composition_js_1.applyTo)(...args))(spec); | ||
exports.applySpec = applySpec; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
354868
2606