@omegup/msync 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +4 -2
- package/index.esm.js +44 -46
- package/index.js +44 -45
- package/lib/accumulators/index.d.ts +10 -0
- package/lib/aggregate/$merge.d.ts +10 -0
- package/lib/aggregate/$upsert.d.ts +9 -0
- package/lib/aggregate/group/$group-merge.d.ts +12 -0
- package/lib/aggregate/group/index.d.ts +2 -0
- package/lib/aggregate/group/utils/sub-group.d.ts +6 -0
- package/lib/aggregate/group/utils/sub-merge.d.ts +15 -0
- package/lib/aggregate/index.d.ts +8 -0
- package/lib/aggregate/lookup/$lookup-delta.d.ts +10 -0
- package/lib/aggregate/lookup/$lookup-raw.d.ts +9 -0
- package/lib/aggregate/lookup/index.d.ts +11 -0
- package/lib/aggregate/match/$match-delta.d.ts +3 -0
- package/lib/aggregate/match/$match.d.ts +3 -0
- package/lib/aggregate/match/index.d.ts +2 -0
- package/lib/aggregate/mongo-stages.d.ts +13 -0
- package/lib/aggregate/out.d.ts +34 -0
- package/lib/aggregate/prefix.d.ts +33 -0
- package/lib/aggregate/raws.d.ts +17 -0
- package/lib/aggregate/set/$replace-with-each.d.ts +12 -0
- package/lib/aggregate/set/$set-delta.d.ts +5 -0
- package/lib/aggregate/set/$set.d.ts +6 -0
- package/lib/aggregate/set/index.d.ts +1 -0
- package/lib/aggregate/unwind/$unwind-delta.d.ts +5 -0
- package/lib/aggregate/unwind/index.d.ts +5 -0
- package/lib/boot/boot-simpl.d.ts +14 -0
- package/lib/boot/boot.d.ts +16 -0
- package/lib/boot/index.d.ts +2 -0
- package/lib/expression/arith.d.ts +26 -0
- package/lib/expression/array.d.ts +25 -0
- package/lib/expression/concat.d.ts +30 -0
- package/lib/expression/date.d.ts +16 -0
- package/lib/expression/expr-base.d.ts +5 -0
- package/lib/expression/index.d.ts +7 -0
- package/lib/expression/logic.d.ts +22 -0
- package/lib/expression/range.d.ts +6 -0
- package/lib/expression/val.d.ts +25 -0
- package/lib/field/field.d.ts +25 -0
- package/lib/field/index.d.ts +1 -0
- package/lib/machine.d.ts +9 -0
- package/lib/predicate/$eq.d.ts +13 -0
- package/lib/predicate/$expr.d.ts +3 -0
- package/lib/predicate/$in.d.ts +2 -0
- package/lib/predicate/index.d.ts +3 -0
- package/lib/predicate/utils.d.ts +5 -0
- package/lib/query/index.d.ts +1 -0
- package/lib/query/logic.d.ts +11 -0
- package/lib/stream/aggregate.d.ts +7 -0
- package/lib/types/accumulator.d.ts +30 -0
- package/lib/types/aggregate.d.ts +9 -0
- package/lib/types/expr.d.ts +27 -0
- package/lib/types/extern.d.ts +3 -0
- package/lib/types/index.d.ts +8 -0
- package/lib/types/lookup.d.ts +19 -0
- package/lib/types/machine.d.ts +17 -0
- package/lib/types/predicate.d.ts +14 -0
- package/lib/types/query.d.ts +12 -0
- package/lib/types/stream.d.ts +55 -0
- package/lib/update/index.d.ts +1 -0
- package/lib/update/updater.d.ts +19 -0
- package/lib/utils/before.d.ts +3 -0
- package/lib/utils/coll.d.ts +5 -0
- package/lib/utils/db-indexes.d.ts +4 -0
- package/lib/utils/guard.d.ts +18 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/json.d.ts +9 -0
- package/lib/utils/log.d.ts +1 -0
- package/lib/utils/map-object.d.ts +41 -0
- package/lib/utils/merge/combiners.d.ts +6 -0
- package/lib/utils/merge/index.d.ts +2 -0
- package/lib/utils/merge/merge.d.ts +7 -0
- package/lib/utils/merge/next-winner.d.ts +3 -0
- package/lib/utils/merge/types.d.ts +19 -0
- package/lib/utils/merge/utils.d.ts +4 -0
- package/lib/utils/tear-down.d.ts +2 -0
- package/lib/watch.d.ts +15 -0
- package/package.json +1 -1
- package/test/mongodb.d.ts +9 -0
- package/test/uri.d.ts +1 -0
- package/types/class.d.ts +1 -0
- package/types/extern.d.ts +3 -0
- package/types/global.d.ts +44 -0
- package/types/hkt.d.ts +56 -0
- package/types/index.d.ts +6 -0
- package/types/json.d.ts +54 -0
- package/types/mongo.d.ts +24 -0
- package/types/view.d.ts +35 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Expr } from '../types';
|
|
2
|
+
export declare const max: <D, C>(...expr: Expr<number, D, C>[]) => Expr<number, D, C>;
|
|
3
|
+
export declare const lt: <D, C>(expr_0: Expr<number, D, C>, expr_1: Expr<number, D, C>) => Expr<boolean, D, C>;
|
|
4
|
+
export declare const gt: <D, C>(expr_0: Expr<number, D, C>, expr_1: Expr<number, D, C>) => Expr<boolean, D, C>;
|
|
5
|
+
export declare const lte: {
|
|
6
|
+
<D, C>(...expr: [Expr<Date, D, C>, Expr<Date, D, C>]): Expr<boolean, D, C>;
|
|
7
|
+
<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<boolean, D, C>;
|
|
8
|
+
};
|
|
9
|
+
export declare const gte: {
|
|
10
|
+
<D, C>(...expr: [Expr<Date, D, C>, Expr<Date, D, C>]): Expr<boolean, D, C>;
|
|
11
|
+
<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<boolean, D, C>;
|
|
12
|
+
};
|
|
13
|
+
type Num = number | null | undefined;
|
|
14
|
+
export declare function subtract<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
15
|
+
export declare function subtract<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
16
|
+
export declare function add<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
17
|
+
export declare function add<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
18
|
+
export declare function divide<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
19
|
+
export declare function divide<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
20
|
+
export declare function multiply<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
21
|
+
export declare function multiply<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
22
|
+
export declare function floor<D, C>(expr: Expr<number, D, C>): Expr<number, D, C>;
|
|
23
|
+
export declare function floor<D, C>(expr: Expr<Num, D, C>): Expr<Num, D, C>;
|
|
24
|
+
export declare function ceil<D, C>(expr: Expr<number, D, C>): Expr<number, D, C>;
|
|
25
|
+
export declare function ceil<D, C>(expr: Expr<Num, D, C>): Expr<Num, D, C>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { App, Arr, HKT, N, RORec, notArr } from '../../types';
|
|
2
|
+
import type { Expr } from '../types';
|
|
3
|
+
export declare const size: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<number, D, C>;
|
|
4
|
+
export declare const filterDefined: <T, D, C = unknown>(expr: Expr<Arr<T | N>, D, C>) => Expr<Arr<T>, D, C>;
|
|
5
|
+
export declare const filter: <T, D, K extends string, C = unknown>({ as, cond, expr, limit, }: {
|
|
6
|
+
expr: Expr<Arr<T>, D, C>;
|
|
7
|
+
as: K;
|
|
8
|
+
cond: Expr<unknown, D, C & RORec<K, T>>;
|
|
9
|
+
limit?: Expr<number, D, C>;
|
|
10
|
+
}) => Expr<Arr<T>, D, C>;
|
|
11
|
+
export declare const sortArray: <T, D, C, K extends keyof T>({ sortBy, expr, order, }: {
|
|
12
|
+
expr: Expr<Arr<T>, D, C>;
|
|
13
|
+
sortBy: K;
|
|
14
|
+
order?: 1 | -1;
|
|
15
|
+
}) => Expr<Arr<T>, D, C>;
|
|
16
|
+
export declare const isArray: <T extends notArr, D, C, F extends HKT<T | Arr<T>>>(expr: Expr<T | Arr<T>, D & (App<F, T> | App<F, Arr<T>>), C>) => import("../types").BoolExpr<D & App<F, Arr<T>>, D & App<F, T>, C>;
|
|
17
|
+
export declare const array: <T, D, C = unknown>(...exprs: Expr<T, D, C>[]) => Expr<Arr<T>, D, C>;
|
|
18
|
+
export declare const concatArray: <T, D, C>(...exprs: Expr<Arr<T>, D, C>[]) => Expr<Arr<T>, D, C>;
|
|
19
|
+
export declare const first: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<T | null, D, C>;
|
|
20
|
+
export declare const firstSure: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<T, D, C>;
|
|
21
|
+
export declare const last: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<T | null, D, C>;
|
|
22
|
+
export declare const mergeObjects: <T1, T2, D, C = unknown>(exprs_0: Expr<T1, D, C>, exprs_1: Expr<T2, D, C>) => Expr<T1 & T2, D, C>;
|
|
23
|
+
export declare const inArray: <T, D, C = unknown>(exprs_0: Expr<T, D, C>, exprs_1: Expr<Arr<T>, D, C>) => Expr<boolean, D, C>;
|
|
24
|
+
export declare const slice: <T, D, C>(array: Expr<Arr<T>, D, C>, start: Expr<number, D, C>, end: Expr<number, D, C>) => Expr<Arr<T>, D, C>;
|
|
25
|
+
export declare const except: <T, D, C>(a: Expr<Arr<T>, D, C>, b: Expr<Arr<T>, D, C>) => Expr<Arr<T>, D, C>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { App, HKT, I, IdHKT, O, RORec, StrKey } from '../../types';
|
|
2
|
+
import type { Expr } from '../types';
|
|
3
|
+
import { type Exact, type ExactPart, type MapO, type MergeHKT } from '../utils/map-object';
|
|
4
|
+
export declare const concat: <D, C>(...expr: Expr<string, D, C>[]) => Expr<string, D, C>;
|
|
5
|
+
export declare const str: <D, C>(expr: Expr<unknown, D, C>) => Expr<string, D, C>;
|
|
6
|
+
export declare const toInt: <D, C>(expr: Expr<unknown, D, C>) => Expr<number, D, C>;
|
|
7
|
+
export declare const fieldM: <M extends RORec<Dom, Ref>, T extends RORec<Ref, unknown>, D, Dom extends string = StrKey<M>, Ref extends string = StrKey<T>, C = unknown>(expr: { readonly [K in Ref]: Expr<T[K], D, C>; }, m: Pick<M, Dom>) => Expr<O<{ readonly [K in Dom]: T[M[K]]; }>, D, C>;
|
|
8
|
+
export type Exprs<out T, in D, in C = unknown> = {
|
|
9
|
+
readonly [K in StrKey<T>]: Expr<T[K], D, C>;
|
|
10
|
+
};
|
|
11
|
+
type MergeExactArgs<T1, T2, F extends HKT<T1[StrKey<T1>] | T2[StrKey<T2>]>> = readonly [
|
|
12
|
+
Exact<Omit<T1, keyof T2>, F>,
|
|
13
|
+
Exact<T2, F>
|
|
14
|
+
];
|
|
15
|
+
export declare const mergeExact: <T1, T2, F extends HKT<T1[StrKey<T1>] | T2[StrKey<T2>]>, E = unknown>(exprsExact1: Exact<Omit<T1, keyof T2>, F>, exprsExact2: Exact<T2, F>) => Exact<T2 & Omit<T1, keyof T2> & Pick<E, symbol & keyof E>, F>;
|
|
16
|
+
export type MergeMapOArgs<T1, T2, F1 extends HKT<StrKey<Omit<T1, StrKey<T2>>>>, F2 extends HKT<StrKey<T2>>> = readonly [MapO<Omit<T1, StrKey<T2>>, F1>, MapO<T2, F2>];
|
|
17
|
+
export declare const mergeExact0: <T1, T2, F1 extends HKT<StrKey<Omit<T1, StrKey<T2>>>>, F2 extends HKT<StrKey<T2>>, E = unknown>(exprsExact1: MapO<Omit<T1, StrKey<T2>>, F1>, exprsExact2: MapO<T2, F2>) => MapO<T2 & Omit<T1, StrKey<T2>> & Pick<E, symbol & keyof E>, MergeHKT<T1, T2, F1, F2, StrKey<T2>>>;
|
|
18
|
+
export declare const mergeExpr: <T1, T2, D, C = unknown, E = unknown>(exprs_0: Exact<Omit<T1, keyof T2>, ExprHKT<D, C, IdHKT<unknown>>>, exprs_1: Exact<T2, ExprHKT<D, C, IdHKT<unknown>>>) => ExprsExact<T2 & Omit<T1, keyof T2> & Pick<E, symbol & keyof E>, D, C>;
|
|
19
|
+
export type ExprsPart<T, D, C> = ExactPart<T, ExprHKT<D, C>>;
|
|
20
|
+
export interface ExprHKT<D, C = unknown, F extends HKT = IdHKT> extends HKT<unknown> {
|
|
21
|
+
readonly out: Expr<App<F, I<unknown, this>>, D, C>;
|
|
22
|
+
}
|
|
23
|
+
export type ExprsExact<T, D, C = unknown, F extends HKT = IdHKT> = Exact<T, ExprHKT<D, C, F>>;
|
|
24
|
+
export interface ExprsExactHKT<E, D, C = unknown, F extends HKT = IdHKT> extends HKT {
|
|
25
|
+
readonly out: ExprsExact<E & I<unknown, this>, D, C, F>;
|
|
26
|
+
}
|
|
27
|
+
export declare const pair: <T, D, C, P extends StrKey<T>>(k: P, v: Expr<T[P], D, C>) => ExprsExact<T, D, C>[P];
|
|
28
|
+
export declare const fieldF: <F extends HKT>() => <T extends object, D, C = unknown>(exprs: ExprsExact<T, D, C, F>) => Expr<O<{ [K in keyof T]: App<F, T[K]>; }>, D, C>;
|
|
29
|
+
export declare const field: <T extends object, D, C = unknown>(exprs: ExprsExact<T, D, C>) => Expr<O<T>, D, C>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Arr } from '../../types';
|
|
2
|
+
import type { Expr } from '../types';
|
|
3
|
+
export declare const dayAndMonthPart: <D, C>(date: Expr<Date, D, C>) => Expr<string, D, C>;
|
|
4
|
+
export declare const now: <D, C>() => Expr<Date, D, C>;
|
|
5
|
+
export declare const monthPart: <D, C>(date: Expr<Date, D, C>) => Expr<string, D, C>;
|
|
6
|
+
export declare const weekPart: <D, C>(date: Expr<Date, D, C>) => Expr<string, D, C>;
|
|
7
|
+
export declare const dateAdd: <D, C>(date: Expr<Date, D, C>, amount: Expr<number, D, C>, unit: Expr<"year" | "week" | "month" | "day" | "hour" | "minute" | "second", D, C>) => Expr<Date, D, C>;
|
|
8
|
+
export declare const maxDate: <D, C>(expr: Expr<Arr<Date>, D, C>) => Expr<Date, D, C>;
|
|
9
|
+
export declare const minDate: <D, C>(expr: Expr<Arr<Date>, D, C>) => Expr<Date, D, C>;
|
|
10
|
+
export declare const datePart: <D, C>(date: Expr<Date, D, C>) => Expr<string, D, C>;
|
|
11
|
+
export declare const startOf: <D, C>(startDate: Expr<Date, D, C>, freq: Expr<"week" | "day" | "month" | "year", D, C>, offset: Expr<number, D, C>) => Expr<Date, D, C>;
|
|
12
|
+
export declare const dateDiff: <D, C>({ end, unit, start, }: {
|
|
13
|
+
start: Expr<Date, D, C>;
|
|
14
|
+
end: Expr<Date, D, C>;
|
|
15
|
+
unit: Expr<"week" | "day" | "month" | "year", D, C>;
|
|
16
|
+
}) => Expr<number, D, C>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { rawItem } from '../../types';
|
|
2
|
+
import type { BoolExpr, Expr, ExprRaw } from '../types';
|
|
3
|
+
export declare const asExprRaw: <T, Doc, Ctx>(raw: rawItem) => ExprRaw<T, Doc, Ctx>;
|
|
4
|
+
export declare const asExpr: <T, Doc, Ctx = unknown>(r: Pick<Expr<T, Doc, Ctx>, "raw">) => Expr<T, Doc, Ctx>;
|
|
5
|
+
export declare const asBoolExpr: <D1, D2, Ctx = unknown>(r: Pick<BoolExpr<D1, D2, Ctx>, "raw">) => BoolExpr<D1, D2, Ctx>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { App, HKT, O, jsonItem, rawItem } from '../../types';
|
|
2
|
+
import type { Field } from '../field';
|
|
3
|
+
import type { BoolExpr, Expr } from '../types';
|
|
4
|
+
export declare const ite: {
|
|
5
|
+
<T, D, C = unknown>(cond: Expr<unknown, D, C>, then: Expr<T, D, C>, orelse: Expr<T, D, C>): Expr<T, D, C>;
|
|
6
|
+
<T, R1, R2, F extends HKT<R1 | R2>, C = unknown>(cond: BoolExpr<App<F, R1>, App<F, R2>, C>, then: Expr<T, App<F, R1>, C>, orelse: Expr<T, App<F, R2>, C>): Expr<T, App<F, R1 | R2>, C>;
|
|
7
|
+
};
|
|
8
|
+
export declare const and: <D, C = unknown>(...expr: Expr<boolean, D, C>[]) => Expr<boolean, D, C>;
|
|
9
|
+
export declare const or: <D, C = unknown>(...expr: Expr<boolean, D, C>[]) => Expr<boolean, D, C>;
|
|
10
|
+
export declare const eq: <T, D, C = unknown>(a: Expr<T, D, C>) => (b: Expr<T, D, C>) => Expr<boolean, D, C>;
|
|
11
|
+
export declare const sub: <T, D, Ctx, P extends O>(a: Expr<T, D, Ctx>, f: Field<P, D, Ctx>) => Expr<T, P, Ctx>;
|
|
12
|
+
export declare const eqTyped: <T1 extends Dom, T2 extends Dom, F extends HKT<Dom>, C = unknown, Dom = unknown>(a: Expr<T1 | T2, App<F, T1 | T2>, C>, b: Expr<T1, App<F, T1 | T2>, C>) => BoolExpr<App<F, T1>, App<F, T2>, C>;
|
|
13
|
+
export declare const ne: <T, K, D, C>(a: Expr<T, D, C>) => (b: Expr<K, D, C>) => Expr<boolean, D, C>;
|
|
14
|
+
export declare const notNull: <T, K, D, C>(a: Expr<T, D, C>) => Expr<boolean, D, C>;
|
|
15
|
+
export declare const $ifNull: <R, D, C>(...expr: [...Expr<R | null | undefined, D, C>[], Expr<R, D, C>]) => Expr<R, D, C>;
|
|
16
|
+
export declare const exprMapVal: <K extends string, T extends Partial<Record<K, rawItem>>, D, C>(expr: Expr<K, D, C>, map: { readonly [P in K]: Expr<T[P], D, C>; }, or?: Expr<T[K], D, C>) => Expr<T[K & keyof T], D, C>;
|
|
17
|
+
export declare const mapVal: <K extends string, T extends Partial<Record<K, rawItem>>, D, C>(expr: Expr<K, D, C>, map: T, or: T[K & keyof T]) => Expr<T[K & keyof T], D, C>;
|
|
18
|
+
export declare const setField: <K extends string, T, V, D, C>({ field, input, value, }: {
|
|
19
|
+
field: Expr<K, D, C>;
|
|
20
|
+
input: Expr<T, D, C>;
|
|
21
|
+
value: Expr<V, D, C>;
|
|
22
|
+
}) => Expr<T & Record<K, V>, D, C>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Arr, RORec } from '../../types';
|
|
2
|
+
import { Field } from '../field';
|
|
3
|
+
import type { Expr } from '../types';
|
|
4
|
+
export declare const range: <D, C>(start: Expr<number, D, C>, end: Expr<number, D, C>, step?: Expr<number, D, C>) => Expr<Arr<number>, D, C>;
|
|
5
|
+
export declare const $map1: <T, R, D, C>(ex: Expr<Arr<T>, D, C>, map: (i: Field<unknown, T, RORec<"item", T>>) => Expr<R, D, RORec<"item", T> & C>) => Expr<Arr<R>, D, C>;
|
|
6
|
+
export declare const $map: <T, R, D, C = unknown>(ex: Expr<Arr<T>, D, C>, map: (i: Expr<T, D, RORec<"item", T>>) => Expr<R, D, RORec<"item", T> & C>) => Expr<Arr<R>, D, C>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Timestamp } from 'mongodb';
|
|
2
|
+
import type { Arr, N, O, RORec, StrKey, jsonItem, rawItem } from '../../types';
|
|
3
|
+
import type { Expr } from '../types';
|
|
4
|
+
import type { ExprsExact } from './concat';
|
|
5
|
+
export declare const val: <T extends rawItem>(val: T) => Expr<T, unknown>;
|
|
6
|
+
export declare const current: Expr<Timestamp, unknown>;
|
|
7
|
+
export declare const $let: <T, D, C, V extends RORec<string, jsonItem>>(vars: ExprsExact<V, D, C>, inExpr: Expr<T, D, C & V>) => Expr<T, D, C>;
|
|
8
|
+
export declare const nil: Expr<null, unknown>;
|
|
9
|
+
export declare const $getField: {
|
|
10
|
+
<T, K extends StrKey<T>, D, C = unknown>(expr: Expr<T, D, C>, field: K): Expr<T[K], D, C>;
|
|
11
|
+
<T, K extends StrKey<T>, D, C = unknown>(expr: Expr<T | N, D, C>, field: K): Expr<T[K] | null, D, C>;
|
|
12
|
+
};
|
|
13
|
+
export type NoRaw<T> = T extends Arr<infer U> ? NoRaw<U>[] : T extends readonly unknown[] ? {
|
|
14
|
+
[K in keyof T]: NoRaw<T[K]>;
|
|
15
|
+
} : T extends O ? {
|
|
16
|
+
[K in StrKey<T>]: NoRaw<T[K]>;
|
|
17
|
+
} : T;
|
|
18
|
+
export type RONoRaw<T> = T extends Arr<infer U> ? readonly RONoRaw<U>[] : T extends readonly unknown[] ? {
|
|
19
|
+
readonly [K in keyof T]: RONoRaw<T[K]>;
|
|
20
|
+
} : T extends O ? {
|
|
21
|
+
readonly [K in StrKey<T>]: RONoRaw<T[K]>;
|
|
22
|
+
} : T;
|
|
23
|
+
export declare const func: <T extends jsonItem, A extends readonly jsonItem[], D, C = unknown>(f: (...args: NoRaw<A>) => RONoRaw<T>, ...args: { [X in keyof A]: Expr<A[X], D, C>; }) => Expr<T, D, C>;
|
|
24
|
+
export declare const rand: () => string;
|
|
25
|
+
export declare const $rand: Expr<string, unknown, unknown>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Arr, AsLiteral, N, O, RORec, Undef } from '../../types';
|
|
2
|
+
import type { Expr, Query } from '../types';
|
|
3
|
+
import type { Predicate } from '../types/predicate';
|
|
4
|
+
export declare class Field<in R, out V, in C = unknown> {
|
|
5
|
+
private field;
|
|
6
|
+
private raw;
|
|
7
|
+
private concat;
|
|
8
|
+
has<R extends O>(this: Field<R, V>, p: Predicate<V>): Query<R, C>;
|
|
9
|
+
has<R extends O, V>(this: Field<R, Arr<V>>, p: Predicate<V>): Query<R, C>;
|
|
10
|
+
private constructor();
|
|
11
|
+
static root: <T extends O>() => Field<T, T, unknown>;
|
|
12
|
+
static ctx: <T>() => <K extends string>(k: K) => Field<unknown, T, RORec<K, T>>;
|
|
13
|
+
of<V, K extends keyof V, _ extends 0 = 0>(this: Field<R, Arr<V>, C>, k: AsLiteral<K>): Field<R, Arr<V[K]>, C>;
|
|
14
|
+
of<V, K extends keyof V, _ extends 1 = 1>(this: Field<R, O<V>, C>, k: K): Field<R, V[K], C>;
|
|
15
|
+
of<V, K extends keyof V, I extends N = never, _ extends 2 = 2>(this: Field<R, Arr<V> | Undef<I>, C>, k: K): Field<R, Arr<V[K]> | I, C>;
|
|
16
|
+
of<V, K extends keyof V, I extends N = never, _ extends 3 = 3>(this: Field<R, O<V> | Undef<I>, C>, k: K): Field<R, V[K] | I, C>;
|
|
17
|
+
with<V, W, C2 = unknown, _ extends 0 = 0>(this: Field<R, O<V>, C>, k: Field<O<V>, W, C2>): Field<R, W, C & C2>;
|
|
18
|
+
with<V, W, C2 = unknown, _ extends 1 = 1>(this: Field<R, Arr<V>, C>, k: Field<O<V>, Arr<W> | O<W>, C2>): Field<R, Arr<W>, C & C2>;
|
|
19
|
+
with<V, W, I extends N = never, C2 = unknown, _ extends 2 = 2>(this: Field<R, O<V> | Undef<I>, C>, k: Field<O<V>, W, C2>): Field<R, W | I, C & C2>;
|
|
20
|
+
with<V, W, I extends N = never, C2 = unknown, _ extends 3 = 3>(this: Field<R, Arr<V> | Undef<I>, C>, k: Field<O<V>, Arr<W> | O<W>, C2>): Field<R, Arr<W> | I, C & C2>;
|
|
21
|
+
str(this: Field<R, V>): string;
|
|
22
|
+
private exprRaw;
|
|
23
|
+
expr<R, V, C = unknown>(this: Field<R, V, C>): Expr<V, R, C>;
|
|
24
|
+
}
|
|
25
|
+
export declare const root: <T extends O>() => Field<T, T, unknown>, ctx: <T>() => <K extends string>(k: K) => Field<unknown, T, RORec<K, T>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './field';
|
package/lib/machine.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Iterator, HasJob } from './types';
|
|
2
|
+
export declare class Machine<Result = unknown> {
|
|
3
|
+
private sources;
|
|
4
|
+
constructor(root?: Iterator<Result, HasJob>);
|
|
5
|
+
add(x: Iterator<Result, HasJob>): void;
|
|
6
|
+
runner(): Iterator<Result, HasJob>;
|
|
7
|
+
start(cb?: (info: HasJob) => void | boolean): Promise<never>;
|
|
8
|
+
}
|
|
9
|
+
export declare const wrap: <Result>(root: Machine<Result>) => Machine<Result>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Timestamp } from 'mongodb';
|
|
2
|
+
export declare const $eq: <T extends unknown>(operand: import("../../types").rawItem & T) => import("../types").Predicate<T>;
|
|
3
|
+
export declare const $ne: <T extends unknown>(operand: import("../../types").rawItem & T) => import("../types").Predicate<T>;
|
|
4
|
+
type Numeric = number | Timestamp | Date;
|
|
5
|
+
export declare const comp: <D2 extends Numeric = number>(op: "$lte" | "$gte" | "$lt" | "$gt") => <T extends D2>(operand: import("../../types").rawItem & D2) => import("../types").Predicate<D2>;
|
|
6
|
+
export declare const $gt: <T extends number>(operand: import("../../types").rawItem & number) => import("../types").Predicate<number>;
|
|
7
|
+
export declare const $gtTs: <T extends Timestamp>(operand: import("../../types").rawItem & Timestamp) => import("../types").Predicate<Timestamp>;
|
|
8
|
+
export declare const $gteTs: <T extends Timestamp>(operand: import("../../types").rawItem & Timestamp) => import("../types").Predicate<Timestamp>;
|
|
9
|
+
export declare const $lt: <T extends number>(operand: import("../../types").rawItem & number) => import("../types").Predicate<number>;
|
|
10
|
+
export declare const dateLt: <T extends Date>(operand: import("../../types").rawItem & Date) => import("../types").Predicate<Date>;
|
|
11
|
+
export declare const $gte: <T extends number>(operand: import("../../types").rawItem & number) => import("../types").Predicate<number>;
|
|
12
|
+
export declare const $lte: <T extends number>(operand: import("../../types").rawItem & number) => import("../types").Predicate<number>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { App, HKT, rawItem } from '../../types';
|
|
2
|
+
import type { Predicate } from '../types';
|
|
3
|
+
type Operators = '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$in' | '$nin';
|
|
4
|
+
export declare const operator: <K extends Operators, F extends HKT<Dom, HKT<Dom, Dom>>, Dom extends unknown, Default extends Dom = Dom, G extends HKT<Dom, HKT<Dom, Dom>> = F>() => <D2 extends Dom = Default>(op: K) => <T extends D2>(operand: rawItem & App<App<F, D2>, T>) => Predicate<App<App<G, D2>, T>>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { $and, $nor, $or } from './logic';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { N, O } from '../../types';
|
|
2
|
+
import type { Query } from '../types';
|
|
3
|
+
type Many<T> = readonly (T | N)[];
|
|
4
|
+
type Combiner = {
|
|
5
|
+
<T extends O, C = unknown>(first: Query<T, C>, ...args: Many<Query<T, C>>): Query<T, C>;
|
|
6
|
+
<T extends O, C = unknown>(...args: Many<Query<T, C>>): Query<T, C> | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare const $and: Combiner;
|
|
9
|
+
export declare const $nor: Combiner;
|
|
10
|
+
export declare const $or: Combiner;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AggregateCommand } from '../types/aggregate';
|
|
2
|
+
import type { ReadonlyCollection } from '../../types';
|
|
3
|
+
import type { RawStages } from '../types';
|
|
4
|
+
export declare const aggregate: <Result>(input: <E>(consume: <S, B>(value: {
|
|
5
|
+
coll: ReadonlyCollection<S>;
|
|
6
|
+
input: RawStages<unknown, B, Result>;
|
|
7
|
+
}) => E) => E, snapshot?: boolean, start?: number) => Promise<AggregateCommand<Result>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Expr } from './expr';
|
|
2
|
+
import type { HKT, I, N, O, RORec, RawObj, Rec, Type, U, Undef, jsonItem } from '../../types';
|
|
3
|
+
import type { Field } from '../field';
|
|
4
|
+
import type { Exact } from '../utils/map-object';
|
|
5
|
+
declare const AccumulatorRaw: unique symbol;
|
|
6
|
+
declare const Accumulator: unique symbol;
|
|
7
|
+
export interface AccumulatorRaw<in Doc, out T, in C = unknown> extends RawObj {
|
|
8
|
+
[Type](_: typeof AccumulatorRaw, source: Doc, ctx: C): readonly [typeof AccumulatorRaw, T];
|
|
9
|
+
}
|
|
10
|
+
export interface AccumulatorHKT<T, C = unknown> extends HKT<unknown> {
|
|
11
|
+
readonly out: Accumulator<T, I<unknown, this>, C>;
|
|
12
|
+
}
|
|
13
|
+
export type Accumulators<T, V extends RORec<string, jsonItem>, C = unknown> = Exact<V, AccumulatorHKT<T, C>>;
|
|
14
|
+
export interface DeltaAccumulatorHKT<T, C = unknown> extends HKT<unknown> {
|
|
15
|
+
readonly out: DeltaAccumulator<T, I<unknown, this>, C>;
|
|
16
|
+
}
|
|
17
|
+
export type DeltaAccumulators<T, V extends RORec<string, jsonItem>, C = unknown> = Exact<V, DeltaAccumulatorHKT<T, C>>;
|
|
18
|
+
export type AccumulatorsRoot<Acc extends Accumulators<never, RORec<string, jsonItem>, never>> = Acc extends Accumulators<infer T extends O, RORec<string, jsonItem>, never> ? T : never;
|
|
19
|
+
export type Accumulator<in Doc, out T, in Ctx = unknown> = {
|
|
20
|
+
[Type]?(_: typeof Accumulator): typeof Accumulator;
|
|
21
|
+
raw: {
|
|
22
|
+
<DeltaD extends O, I extends U>(f: Field<DeltaD, Doc | Undef<I>>): AccumulatorRaw<T | I, DeltaD, Ctx>;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type Part<Doc> = Rec<'v', Doc> & RORec<'old', boolean>;
|
|
26
|
+
export type DeltaAccumulator<in out Doc, in out T, in out Ctx = unknown> = {
|
|
27
|
+
group: Accumulator<Part<Doc>, T, Ctx>;
|
|
28
|
+
merge: <D, C = Ctx>(a: Expr<T | N, D, C>, b: Expr<T, D, C>) => Expr<T, D, C>;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { O, Type, U, Undef, rawItem } from '../../types';
|
|
2
|
+
import type { Field } from '../field';
|
|
3
|
+
declare const Expr: unique symbol;
|
|
4
|
+
declare const ExprRaw: unique symbol;
|
|
5
|
+
export type ExprRaw<out T, in Doc, in Ctx = unknown> = {
|
|
6
|
+
[Type]?(x: typeof ExprRaw): void;
|
|
7
|
+
[ExprRaw]?(doc: Doc, ctx: Ctx): T;
|
|
8
|
+
get: () => rawItem;
|
|
9
|
+
};
|
|
10
|
+
export type Expr<out T, in Doc, in Ctx = unknown> = {
|
|
11
|
+
[Type]?(x: typeof Expr): void;
|
|
12
|
+
[Expr]?(doc: Doc, ctx: Ctx): T;
|
|
13
|
+
raw: {
|
|
14
|
+
<DeltaD extends O, I extends U, C = unknown>(f: Field<DeltaD, Doc | Undef<I>, C>): ExprRaw<T | I, DeltaD, Ctx & C>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export type BoolExpr<in D1, in D2, in Ctx = unknown> = {
|
|
18
|
+
[Type]?(x: typeof Expr): void;
|
|
19
|
+
[Expr](doc: D1, ctx: Ctx): true;
|
|
20
|
+
[Expr](doc: D2, ctx: Ctx): false;
|
|
21
|
+
raw: {
|
|
22
|
+
<DeltaD extends O, I extends U, C = unknown>(f: Field<DeltaD, D1 | D2 | Undef<I>, C>): ExprRaw<boolean, DeltaD, Ctx & C>;
|
|
23
|
+
<DeltaD extends O, I extends U, C = unknown>(f: Field<DeltaD, D1 | Undef<I>, C>): ExprRaw<true, DeltaD, Ctx & C>;
|
|
24
|
+
<DeltaD extends O, I extends U, C = unknown>(f: Field<DeltaD, D2 | Undef<I>, C>): ExprRaw<false, DeltaD, Ctx & C>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AsLiteral, O, ReadonlyCollection } from '../../types';
|
|
2
|
+
import type { ExprsExact } from '../expression/concat';
|
|
3
|
+
import type { Field } from '../field';
|
|
4
|
+
import type { RawStages } from '../types';
|
|
5
|
+
export type LookupArgs<T extends O, U extends O, R, K extends string, Ctx, C, s = string> = {
|
|
6
|
+
vars: ExprsExact<Ctx, T, C>;
|
|
7
|
+
k: AsLiteral<K>;
|
|
8
|
+
} & ({
|
|
9
|
+
coll: ReadonlyCollection<R>;
|
|
10
|
+
pipeline: RawStages<unknown, R, U, Ctx & C>;
|
|
11
|
+
fields?: {
|
|
12
|
+
foreign: Field<R, s>;
|
|
13
|
+
local: Field<T, s>;
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
coll?: never;
|
|
17
|
+
pipeline: RawStages<unknown, null, U, Ctx & C>;
|
|
18
|
+
fields?: never;
|
|
19
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type HasJob = {
|
|
2
|
+
job: object | undefined;
|
|
3
|
+
};
|
|
4
|
+
export type Runner<T, Info extends HasJob> = Iterator<T, Info>;
|
|
5
|
+
export type NextFrame<T, Info> = PromiseLike<Frame<T, Info>>;
|
|
6
|
+
export type Frame<T, Info> = {
|
|
7
|
+
data: T;
|
|
8
|
+
info: Info;
|
|
9
|
+
cont: Iterator<T, Info>;
|
|
10
|
+
};
|
|
11
|
+
export type IteratorResult<out T, out Info> = {
|
|
12
|
+
next: NextFrame<T, Info>;
|
|
13
|
+
stop: Iterator<T, Info>;
|
|
14
|
+
clear: () => Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
export type Iterator<out T, out Info> = () => IteratorResult<T, Info>;
|
|
17
|
+
export type AsynIter<T> = readonly [T, () => PromiseLike<AsynIter<T>>];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Expr } from '../types';
|
|
2
|
+
import type { Type, RawObj, O } from '../../types';
|
|
3
|
+
import type { Field } from '../field';
|
|
4
|
+
declare const Predicate: unique symbol;
|
|
5
|
+
declare const PredicateRaw: unique symbol;
|
|
6
|
+
export type PredicateRaw = RawObj & {
|
|
7
|
+
[Type]?(x: typeof PredicateRaw): void;
|
|
8
|
+
};
|
|
9
|
+
export interface Predicate<in V> {
|
|
10
|
+
[Type]?(x: typeof Predicate, _: V): void;
|
|
11
|
+
raw: PredicateRaw;
|
|
12
|
+
expr: <D extends O, C>(field: Field<D, V, C>) => Expr<boolean, D, C>;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { O, RawObj, Type } from '../../types';
|
|
2
|
+
import type { Field } from '../field';
|
|
3
|
+
declare const Query: unique symbol;
|
|
4
|
+
declare const QueryRaw: unique symbol;
|
|
5
|
+
export type QueryRaw<T, C> = RawObj & {
|
|
6
|
+
[Type]?(x: typeof QueryRaw, y: T, c: C): void;
|
|
7
|
+
};
|
|
8
|
+
export type Query<in T extends O, in C = unknown> = {
|
|
9
|
+
[Type]?(x: typeof Query, y: T, c: C): void;
|
|
10
|
+
raw: <DeltaT extends O>(f: Field<DeltaT, T>) => QueryRaw<DeltaT, C>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Timestamp } from 'mongodb';
|
|
2
|
+
import type { App, HKT, ID, O, RawObj, ReadonlyCollection, Rec, Type } from '../../types';
|
|
3
|
+
import type { Field } from '../field';
|
|
4
|
+
import type { HasJob, Runner } from './machine';
|
|
5
|
+
declare const RawStage: unique symbol;
|
|
6
|
+
type RawArr = readonly RawObj[];
|
|
7
|
+
export interface RawStages<out Q, in S extends Q, out R extends Q, in C = unknown, out M = number> extends RawArr {
|
|
8
|
+
[Type]?(_: typeof RawStage, source: S, ctx: C, q: Q): readonly [typeof RawStage, R, M, Q];
|
|
9
|
+
}
|
|
10
|
+
export type FRawStages<out Q, in S extends Q & O, out R extends Q & O, in C = unknown, out M extends number = number> = <F extends HKT<O, O>>(f: <T extends O>() => Field<App<F, T>, T>) => RawStages<App<F, Q & O>, App<F, S>, App<F, R>, C, M>;
|
|
11
|
+
export type DeltaStages<out Q, in S extends Q & O, out R extends Q & O, in C = unknown> = {
|
|
12
|
+
delta: RawStages<unknown, Delta<S>, Delta<R>, C>;
|
|
13
|
+
raw: FRawStages<Q, S, R, C>;
|
|
14
|
+
};
|
|
15
|
+
export type LinStages<out Q, in S extends Q, out R extends Q, in C = unknown> = {
|
|
16
|
+
lin: RawStages<Q, S, R, C, 1>;
|
|
17
|
+
};
|
|
18
|
+
export type TStages<in out S, out Q, in out B extends Q, out R extends Q, M extends number = number> = {
|
|
19
|
+
coll: ReadonlyCollection<S>;
|
|
20
|
+
input: RawStages<unknown, S, B, unknown, M>;
|
|
21
|
+
exec: RawStages<Q, B, R, unknown, M>;
|
|
22
|
+
};
|
|
23
|
+
export type Stages<out Q, out R extends Q, out SDom> = <E>(consume: <S extends SDom, B extends Q>(value: TStages<S, Q, B, R>) => E) => E;
|
|
24
|
+
export type StreamRunner<out V> = <Result>(input: RawStages<unknown, V, Result>) => Runner<readonly Result[], HasJob>;
|
|
25
|
+
export type SimpleStreamExecutionResult<out Q, out V extends Q> = {
|
|
26
|
+
readonly out: StreamRunner<V>;
|
|
27
|
+
};
|
|
28
|
+
export type SnapshotStreamExecutionResult<out Q, out V extends Q> = {
|
|
29
|
+
readonly out: StreamRunner<Delta<V>>;
|
|
30
|
+
readonly stages: Stages<Before<Q>, Before<V>, UBefore<Q>>;
|
|
31
|
+
};
|
|
32
|
+
export type Stream<out Q extends O, in out T extends Q, in out F extends HKT<[O, O]>, in out G extends HKT<[O, O, O]>> = <Q2 extends O, Result extends Q2>(input: App<G, [Q2 | T, T, Result]>) => App<F, [Q | Q2, Result]>;
|
|
33
|
+
export type TS = {
|
|
34
|
+
readonly touchedAt: Timestamp;
|
|
35
|
+
};
|
|
36
|
+
export type Del = O<{
|
|
37
|
+
readonly deletedAt: Timestamp;
|
|
38
|
+
} & ID & TS>;
|
|
39
|
+
export type D = O<{
|
|
40
|
+
readonly deletedAt?: Timestamp | null | undefined;
|
|
41
|
+
} & ID>;
|
|
42
|
+
export type Model = D & TS;
|
|
43
|
+
export type OutInput<T, A = T | null> = ID & Rec<'after', A>;
|
|
44
|
+
export type SimpleStream<in out Q extends O, out T extends Q> = <Q2 extends O, Result extends Q2>(input: LinStages<Q2 | T, T, Result>) => SimpleStreamExecutionResult<Q | Q2, Result>;
|
|
45
|
+
export type BA = 'before' | 'after';
|
|
46
|
+
export type PreDelta<T, K extends BA = BA, E = unknown> = Rec<K, T> & E;
|
|
47
|
+
export type Delta<T, K extends BA = BA, E = ID> = PreDelta<T | null, K, E>;
|
|
48
|
+
export type Before<T> = PreDelta<T, 'before'>;
|
|
49
|
+
export type After<T> = Delta<T, 'after'>;
|
|
50
|
+
export type UBefore<T> = O & Partial<Delta<T | null, 'before'>>;
|
|
51
|
+
export type UDelta<T, E = {
|
|
52
|
+
readonly updated: boolean;
|
|
53
|
+
}> = Delta<T, 'after', ID> & UBefore<T> & E;
|
|
54
|
+
export type SnapshotStream<out Q extends O, in out T extends Q> = <Q2 extends O, Result extends Q2>(input: DeltaStages<Q2 | T, T, Result>) => SnapshotStreamExecutionResult<Q | Q2, Result>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { set, to } from './updater';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Arr, HKT, I, N, O, StrKey, Type, notArr, rawItem } from '../../types';
|
|
2
|
+
import { Field } from '../field';
|
|
3
|
+
import type { Expr } from '../types';
|
|
4
|
+
import { type MapO } from '../utils/map-object';
|
|
5
|
+
declare const Updater: unique symbol;
|
|
6
|
+
export type Updater<in R, in T, out V, in C = unknown> = {
|
|
7
|
+
[Type]?(x: typeof Updater, r: R, t: T, c: C): V;
|
|
8
|
+
readonly raw: <D extends O>(f: Field<D, R | N>) => readonly (readonly [string, rawItem])[];
|
|
9
|
+
};
|
|
10
|
+
export declare const subUpdater: <P extends O, D, T, V, Ctx>(a: Updater<D, T, V, Ctx>, f: Field<P, D>) => Updater<P, T, V, Ctx>;
|
|
11
|
+
export interface UpdaterHKT<R, Old, V, C, K extends keyof Old = keyof Old, V2 extends V = V> extends HKT<StrKey<V>> {
|
|
12
|
+
readonly out: Updater<R, Get<Old, I<StrKey<V>, this>, K>, V2[I<StrKey<V>, this>], C>;
|
|
13
|
+
}
|
|
14
|
+
export type Get<T, P extends string, K extends keyof T = never> = P extends K ? T[P] : P extends keyof T ? T[P] : undefined;
|
|
15
|
+
export declare const set: <V>() => <R, Old extends notArr, C = unknown, K extends keyof Old = never>(fields: MapO<V, UpdaterHKT<R, Old, V, C, K>>) => Updater<R, Old, O & Omit<Old, StrKey<V>> & V, C> & Updater<R, Arr<Old>, Arr<Omit<Old, StrKey<V>> & V>, C>;
|
|
16
|
+
export declare const weaken: <R, T, V, C = unknown>(updater: Updater<R, T, V, C>) => Updater<R | null, T | N, V | null, C>;
|
|
17
|
+
export declare const to: <R, V, C = unknown, T = unknown>(expr: Expr<V, R, C>) => Updater<R, T, V, C>;
|
|
18
|
+
export declare const items: <R, T, V, C = unknown>(x: Updater<R, T, V, C>) => Updater<R, Arr<T>, Arr<V>, C>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { App, HKT, jsonItem, Literal, Par, Rec, RORec } from '../../types';
|
|
2
|
+
export type Equal<Dom, T extends Dom, V extends Dom> = {
|
|
3
|
+
forward: <F extends HKT<Dom>>(x: App<F, T>) => App<F, V>;
|
|
4
|
+
forward1: (x: T) => V;
|
|
5
|
+
backward: <F extends HKT<Dom>>(x: App<F, V>) => App<F, T>;
|
|
6
|
+
backward1: (x: V) => T;
|
|
7
|
+
};
|
|
8
|
+
export declare const sym: <Dom, T extends Dom, V extends Dom>(eq: Equal<Dom, T, V>) => Equal<Dom, V, T>;
|
|
9
|
+
export declare const omitRORec: <K extends string, E extends string, R extends string, T extends unknown>() => Equal<unknown, RORec<Exclude<K, E | R>, T>, Omit<RORec<Exclude<K, E | R>, T>, R>>;
|
|
10
|
+
type s = keyof any;
|
|
11
|
+
export declare const omitPick: <K extends s, E extends s, R extends s, T extends RORec<Exclude<K, E | R>, unknown>>() => Equal<unknown, Pick<T, Exclude<K, E | R>>, Omit<Pick<T, Exclude<K, E | R>>, R>>;
|
|
12
|
+
export declare const omitExclude: <K extends s, E extends s, R extends s, T extends RORec<Exclude<K, E | R>, unknown>>() => Equal<unknown, Omit<T, E & Exclude<K, keyof T>>, Omit<Pick<T, Exclude<K, E | R>>, R>>;
|
|
13
|
+
export declare const renamedFields: <K extends s, F extends HKT<K, s>, G extends HKT<App<F, K>>>() => Equal<string | number | symbol, keyof { [P in K as App<F, P>]: App<G, P>; }, App<F, K>>;
|
|
14
|
+
export declare const doubleExclude: <K extends string, E extends s, R extends s>() => Equal<K, K, Exclude<K, E & Exclude<Literal<R>, K>>>;
|
|
15
|
+
export declare const excludeIdem: <K extends s, E extends s, S extends E = E>() => Equal<Exclude<K, E>, Exclude<K, E>, Exclude<Exclude<K, E>, S>>;
|
|
16
|
+
export declare const eqPar: <K extends string, T extends Rec<K, jsonItem>, K2 extends K>() => Equal<unknown, Par<K2, T>, Par<K, T>>;
|
|
17
|
+
export declare const notExtendExcluded: <Key extends keyof any, Others extends keyof any, Source extends keyof any, Denied extends keyof any, F extends HKT<Others | Exclude<Source, Denied | Key>, Dom>, Else extends Dom, Dom = unknown>() => Equal<Dom, Key extends Others | Exclude<Source, Key | Denied> ? App<F, Key> : Else, Key extends Others ? App<F, Key> : Else>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AsLiteral, Rec } from '../../types';
|
|
2
|
+
export declare const id: <T>(x: T) => T;
|
|
3
|
+
export declare const defined: <T>(x: T | undefined | null) => x is T;
|
|
4
|
+
export declare const noop: () => void;
|
|
5
|
+
export declare const anoop: () => Promise<void>;
|
|
6
|
+
export declare const asRec: <K extends string, T>(x: Record<K, T>) => Rec<K, T>;
|
|
7
|
+
export declare const map1: <K extends string, Im>(k: AsLiteral<K>, to: Im) => { readonly [P in K]: [P, Im]; } & {
|
|
8
|
+
readonly [_: string]: [K, Im];
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const log: (...args: unknown[]) => void;
|