@omegup/msync 0.1.7 → 0.1.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 +33 -23
- package/index.esm.js +63 -75
- package/index.js +63 -74
- package/lib/accumulators/index.d.ts +10 -0
- package/lib/aggregate/$merge.d.ts +27 -0
- package/lib/aggregate/$upsert.d.ts +15 -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 +18 -0
- package/lib/aggregate/index.d.ts +9 -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 +12 -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 +37 -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 +13 -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 +6 -0
- package/lib/boot/boot-simpl.d.ts +14 -0
- package/lib/boot/boot-utils.d.ts +26 -0
- package/lib/boot/boot.d.ts +16 -0
- package/lib/boot/first-stages.d.ts +12 -0
- package/lib/boot/index.d.ts +3 -0
- package/lib/boot/single.d.ts +11 -0
- package/lib/expression/arith.d.ts +32 -0
- package/lib/expression/array.d.ts +30 -0
- package/lib/expression/concat.d.ts +34 -0
- package/lib/expression/date.d.ts +17 -0
- package/lib/expression/expr-base.d.ts +5 -0
- package/lib/expression/index.d.ts +7 -0
- package/lib/expression/logic.d.ts +23 -0
- package/lib/expression/range.d.ts +11 -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 +24 -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 +11 -0
- package/lib/types/query.d.ts +12 -0
- package/lib/types/stream.d.ts +71 -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 +19 -0
- package/lib/utils/index.d.ts +4 -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 +50 -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,13 @@
|
|
|
1
|
+
import type { Arr, O, Rec } from '../../types';
|
|
2
|
+
import type { Accumulators, Expr, LookupArgs, Query, RawStages } from '../types';
|
|
3
|
+
import type { Updater } from '../update/updater';
|
|
4
|
+
export * from './raws';
|
|
5
|
+
type s = string;
|
|
6
|
+
export declare const $match_: <Q, T extends Q & O, C = unknown>(query?: Query<T, C>) => RawStages<O<T>, T, T, C>;
|
|
7
|
+
export declare const $set_: <Q, T extends Q & O, V extends Q & O, C = unknown>(updater: Updater<T, T, V, C>) => RawStages<O<Q>, T, V, C, 1>;
|
|
8
|
+
export declare const $replaceWith_: <T extends O, V extends O, C = unknown>(expr: Expr<V, T, C>) => RawStages<O, T, V, C, 1>;
|
|
9
|
+
export declare const $unwind_: <T extends O, K extends s, U, Null extends null = never>(k: K, includeNull?: Null) => RawStages<O<T>, T & Rec<K, Arr<U>>, T & Rec<K, Null | U>>;
|
|
10
|
+
export declare const $group_: <V extends O>() => <ID, T extends O, C = unknown>(id: Expr<ID, T, C>, args: Accumulators<T, V, C>) => RawStages<O, T, Rec<"_id", ID> & V, C, 1>;
|
|
11
|
+
export declare const $documents_: <T extends O, C>(docs: Expr<Arr<T>, unknown, C>) => RawStages<unknown, null, T, C, 1>;
|
|
12
|
+
export declare const $project_: <T extends O, K extends import("../..").StrKey<T>>(projection: import("../utils").ExactKeys<K>) => RawStages<T, T, T, unknown, 1>;
|
|
13
|
+
export declare const $simpleLookup_: <T extends O, U extends O, R, K extends s, Ctx, C = unknown, S = string>(args: LookupArgs<T, U, R, K, Ctx, C, S>) => RawStages<O<T>, T, T & Rec<K, Arr<U>>, C, 1>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { O, RWCollection, ReadonlyCollection, Replace, jsonItem } from '../../types';
|
|
2
|
+
import type { ExprsExact } from '../expression/concat';
|
|
3
|
+
import { type Field } from '../field';
|
|
4
|
+
import type { RawStages } from '../types';
|
|
5
|
+
export type MergeInto<T extends O, Out extends O, E = unknown> = {
|
|
6
|
+
whenNotMatched: 'insert';
|
|
7
|
+
into: RWCollection<T, Out>;
|
|
8
|
+
} | {
|
|
9
|
+
whenNotMatched: 'discard' | 'fail';
|
|
10
|
+
into: ReadonlyCollection<Out> & E;
|
|
11
|
+
};
|
|
12
|
+
export type MergeArgs<T extends O, Out extends O, Ctx, In extends O> = {
|
|
13
|
+
on: Field<T, jsonItem> & Field<Out, jsonItem>;
|
|
14
|
+
} & MergeInto<T, Out> & (({
|
|
15
|
+
stages?: never;
|
|
16
|
+
} & ({
|
|
17
|
+
whenMatched: 'keepExisting' | 'fail';
|
|
18
|
+
} | {
|
|
19
|
+
whenMatched: 'replace';
|
|
20
|
+
into: RWCollection<T, Out>;
|
|
21
|
+
} | {
|
|
22
|
+
whenMatched: 'merge';
|
|
23
|
+
into: RWCollection<Replace<Out, T>, Out>;
|
|
24
|
+
})) | {
|
|
25
|
+
stages: true;
|
|
26
|
+
into: RWCollection<In, Out>;
|
|
27
|
+
whenMatched: RawStages<unknown, Out, In, {
|
|
28
|
+
new: T;
|
|
29
|
+
}>;
|
|
30
|
+
} | {
|
|
31
|
+
stages: 'ctx';
|
|
32
|
+
vars: ExprsExact<Ctx, T>;
|
|
33
|
+
into: RWCollection<In, Out>;
|
|
34
|
+
whenMatched: RawStages<unknown, Out, In, Ctx>;
|
|
35
|
+
});
|
|
36
|
+
export declare const $merge_: <T extends O, Out extends O = T, Ctx = unknown, In extends O = Out>({ into, on, whenNotMatched, ...notMatched }: MergeArgs<T, Out, Ctx, In>) => RawStages<unknown, T, "out", unknown, number>;
|
|
37
|
+
export declare const $merge2: <T extends O, Out extends O = T, Ctx = unknown, In extends O = Out>(args: MergeArgs<T, Out, Ctx, In>) => RawStages<unknown, T, "out", unknown, number>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { App, HKT, O2, O3, O, RawObj } from '../../types';
|
|
2
|
+
import type { Delta, DeltaStages, FRawStages, RawStages, Stream, TStages } from '../types';
|
|
3
|
+
import type { Equal } from '../utils/guard';
|
|
4
|
+
type n = number;
|
|
5
|
+
export declare const asStages: <Q, T extends Q, V extends Q, C = unknown, M extends n = number>(x: readonly RawObj[]) => RawStages<Q, T, V, C, M>;
|
|
6
|
+
export declare const same: <T extends Dom, V extends Dom, F extends HKT<Dom, Q>, Dom = unknown, Q = unknown, C = unknown, M extends n = number>(_: Equal<Dom, T, V>) => RawStages<Q, App<F, T>, App<F, V>, C, M>;
|
|
7
|
+
export declare const concatStages: <Q, T extends Q, V extends Q, W extends Q, C, M extends n = number>(part1: RawStages<Q, T, V, C, M>, part2: RawStages<Q, V, W, C, M>) => RawStages<Q, T, W, C, M>;
|
|
8
|
+
export declare const concatFStages: <Q, T extends Q & O, V extends Q & O, W extends Q & O, C, M extends n = number>(part1: FRawStages<Q, T, V, C, M>, part2: FRawStages<Q, V, W, C, M>) => FRawStages<Q, T, W, C, M>;
|
|
9
|
+
export declare const concatDelta: <Q extends O, T extends Q, V extends Q, W extends Q>(part1: DeltaStages<Q, T, V>, part2: DeltaStages<Q, V, W>) => DeltaStages<Q, T, W>;
|
|
10
|
+
export type Concat<out Q, in T extends Q, out V extends Q, in out C, in out M extends n = n> = {
|
|
11
|
+
with: <Q2, W extends Q2>(extra: RawStages<Q | Q2, V, W, C, M>) => Concat<Q | Q2, T, W, C, M>;
|
|
12
|
+
stages: RawStages<Q, T, V, C, M>;
|
|
13
|
+
};
|
|
14
|
+
type FConcat<out Q, in T extends Q & O, out V extends Q & O, in out C, in out M extends n = n> = {
|
|
15
|
+
with: <Q2, W extends Q2 & O>(extra: FRawStages<Q | Q2, V, W, C, M>) => FConcat<Q | Q2, T, W, C, M>;
|
|
16
|
+
stages: FRawStages<Q, T, V, C, M>;
|
|
17
|
+
};
|
|
18
|
+
export type DeltaPipe<Q extends O, T extends Q, F extends HKT<O2>, G extends HKT<O3>> = {
|
|
19
|
+
with: <Q2 extends O, V extends Q2>(map: (a: Stream<Q, T, F, G>) => Stream<Q | Q2, V, F, G>) => DeltaPipe<Q | Q2, V, F, G>;
|
|
20
|
+
then: <Q2 extends O, V extends Q2>(next: App<G, [Q2 | T, T, V]>) => DeltaPipe<Q | Q2, V, F, G>;
|
|
21
|
+
get: () => App<F, [Q, T]>;
|
|
22
|
+
};
|
|
23
|
+
export declare const pipe: <Q extends O, S extends Q, T extends Q, F extends HKT<O2>, G extends HKT<O3>>(stream: Stream<Q, S, F, G>, s: App<G, [Q, S, T]>, concat: <Q_1 extends O, T_1 extends Q_1, V extends Q_1, W extends Q_1>(part1: App<G, [Q_1, T_1, V]>, part2: App<G, [Q_1, V, W]>) => App<G, [Q_1, T_1, W]>, empty: <T_2 extends Q>() => App<G, [Q, T_2, T_2]>) => DeltaPipe<Q, T, F, G>;
|
|
24
|
+
type Link = <T, C = unknown, M extends n = n>() => Concat<T, T, T, C, M>;
|
|
25
|
+
type FLink = <T extends O, C = unknown, M extends n = n>() => FConcat<T, T, T, C, M>;
|
|
26
|
+
export declare const link: Link;
|
|
27
|
+
export declare const flink: FLink;
|
|
28
|
+
export declare const emptyDelta: <T extends O>() => {
|
|
29
|
+
delta: RawStages<Delta<T>, Delta<T>, Delta<T>, unknown, number>;
|
|
30
|
+
raw: <F extends HKT<O>>() => RawStages<App<F, T>, App<F, T>, App<F, T>, unknown, number>;
|
|
31
|
+
};
|
|
32
|
+
export declare const concatTStages: <S, Q, B extends Q, T extends Q, V extends Q>({ coll, exec, input }: TStages<S, Q, B, T>, stages: RawStages<Q, T, V>) => TStages<S, Q, B, V>;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { App, Arr, ConstHKT, HKT, O, Rec, StrKey, rawItem } from '../../types';
|
|
2
|
+
import type { ExprsExact } from '../expression/concat';
|
|
3
|
+
import { type Field } from '../field';
|
|
4
|
+
import type { Accumulators, Expr, FRawStages, LookupArgs, Query, RawStages } from '../types';
|
|
5
|
+
import type { Updater } from '../update/updater';
|
|
6
|
+
import { type ExactKeys } from '../utils/map-object';
|
|
7
|
+
type s = string;
|
|
8
|
+
export declare const $match1: <T extends O, C = unknown>(query?: Query<T, C>) => FRawStages<T, T, T, C>;
|
|
9
|
+
export declare const $set1: <Q, T extends Q & O, V extends Q & O, C = unknown>(updater: Updater<T, T, V, C>) => FRawStages<Q, T, V, C, 1>;
|
|
10
|
+
export declare const $project1: <T extends O, K extends StrKey<T>>(projection: ExactKeys<K>) => RawStages<T, T, T, unknown, 1>;
|
|
11
|
+
export declare const $replaceWith1: <T extends O, V extends O, C = unknown>(expr: Expr<V, T, C>) => FRawStages<O, T, V, C, 1>;
|
|
12
|
+
export declare const $unwind1: <T extends O, K extends s, R, Null extends null = never>(k: K, includeNull?: Null) => FRawStages<T, T & Rec<K, Arr<R>>, T & Rec<K, R | Null>>;
|
|
13
|
+
export declare const $group1: <T extends O, ID, V extends O, C>(id: Expr<ID, T, C>, args: Accumulators<T, V, C>) => <F extends HKT<O, O>>(f: <T_1 extends O>() => Field<App<F, T_1>, T_1>) => RawStages<O, App<F, T>, Rec<"_id", ID> & V, C, 1>;
|
|
14
|
+
export declare const $documents1: <Q extends O, T extends Q & O, C>(docs: Expr<Arr<T>, unknown, C>) => <F extends HKT<O, O>>(f: <T_1 extends O>() => Field<App<F, T_1>, T_1>) => RawStages<unknown, null, App<F, T>, C, 1>;
|
|
15
|
+
export declare const rawVars: <T, Ctx, C, V extends O>(vars: ExprsExact<Ctx, T, C>, f: Field<V, T, unknown>) => import("../utils/map-object").ExactPart1<Ctx, ConstHKT<rawItem, unknown>>;
|
|
16
|
+
export declare const $simpleLookup1: <T extends O, U extends O, R, K extends s, Ctx, C = unknown, S = string>(args: LookupArgs<T, U, R, K, Ctx, C, S>) => FRawStages<T, T, T & Rec<K, Arr<U>>, C, 1>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ConstHKT, HKT, I, N, O, RORec, Rec, jsonItem } from '../../../types';
|
|
2
|
+
import type { BA, Delta, Expr, FRawStages, RawStages } from '../../types';
|
|
3
|
+
import { type Updater } from '../../update/updater';
|
|
4
|
+
import { type MapK } from '../../utils/map-object';
|
|
5
|
+
export interface ParDeltaHKT<K extends BA, T extends jsonItem, E> extends HKT<jsonItem> {
|
|
6
|
+
readonly out: RORec<K, I<jsonItem, this>> & Delta<T> & E;
|
|
7
|
+
}
|
|
8
|
+
type Delta2<T extends jsonItem, BA2 extends string> = Delta<T> & Partial<RORec<BA2, T | null>>;
|
|
9
|
+
export declare const $setEach1: <T extends jsonItem, V extends jsonItem, BA2 extends string, E = unknown, C = unknown>(updater: (k: BA) => Updater<Delta<T> & Partial<RORec<BA2, T | null>> & E, T | N, V | null, C>, dict: MapK<BA2, ConstHKT<BA>>) => FRawStages<unknown, Delta2<T, BA2> & E, Rec<BA2, V | null> & Omit<Delta<T> & E, BA2>, C, 1>;
|
|
10
|
+
export declare const $setEach: <T extends O, V extends jsonItem, BA2 extends string, E = unknown, C = unknown>(updater: (k: BA) => Updater<Delta<T> & E, T | N, V | null, C>, dict: MapK<BA2, ConstHKT<BA>>) => RawStages<unknown, Delta2<T, BA2> & E, Rec<BA2, V | null> & Omit<Delta<T> & E, BA2>, C, 1>;
|
|
11
|
+
export declare const $replaceWithEach1: <T extends O, V extends jsonItem, E = unknown>(t: <K extends BA>(field: K) => Expr<V | null, Delta<T> & E>) => RawStages<unknown, Delta<T> & E, Delta<V> & Omit<E, BA>>;
|
|
12
|
+
export declare const $replaceWithEach: <T extends O, V extends jsonItem, E = unknown>(expr: <K extends BA>(field: K) => Expr<V | null, Rec<K, T> & Delta<T> & E>) => RawStages<unknown, Delta<T> & E, Delta<V> & Omit<E, BA>>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { O, jsonItem } from '../../../types';
|
|
2
|
+
import type { Delta, Expr, RawStages } from '../../types';
|
|
3
|
+
import { type Updater } from '../../update/updater';
|
|
4
|
+
export declare const $replaceWithDelta: <T extends O, V extends jsonItem>(expr: Expr<V, T>) => RawStages<unknown, Delta<T>, Delta<V>>;
|
|
5
|
+
export declare const $setDelta: <T extends O, V extends O, C = unknown>(updater: Updater<T, T, V, C>) => RawStages<unknown, Delta<T>, Delta<V>, C, number>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { O, Replace } from '../../../types';
|
|
2
|
+
import type { DeltaStages, Expr, LinStages } from '../../types';
|
|
3
|
+
import { type UpdaterHKT } from '../../update/updater';
|
|
4
|
+
import type { MapO } from '../../utils/map-object';
|
|
5
|
+
export declare const $set: <V extends O>() => <R extends O, C = unknown>(fields: MapO<V, UpdaterHKT<R, R, V, C>>) => DeltaStages<O, R, Replace<R, V>, C> & LinStages<O, R, Replace<R, V>, C>;
|
|
6
|
+
export declare const $replaceWith: <T extends O, V extends O>(expr: Expr<V, T>) => DeltaStages<O, T, V> & LinStages<O, T, V>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { $replaceWith, $set } from './$set';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Arr, AsLiteral, ID, Rec, doc } from '../../../types';
|
|
2
|
+
import type { Delta, RawStages } from '../../types';
|
|
3
|
+
type s = string;
|
|
4
|
+
export declare const $unwindDelta: <K1 extends s, T extends doc, K2 extends s, U extends doc, N1 extends null = never, N2 extends null = never>(k1: AsLiteral<K1>, k2: AsLiteral<K2>, k: K1 | K2 | false, middle?: string, includeNull1?: N1, includeNull2?: N2) => RawStages<Delta<Rec<K1, T | N1>>, Delta<Rec<K1, T | N1> & Rec<K2, Arr<U>>>, Delta<Rec<K1, T | N1> & Rec<K2, U | N2> & ID>>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Arr, AsLiteral, doc, O, Rec, RORec } from '../../../types';
|
|
2
|
+
import type { DeltaStages } from '../../types';
|
|
3
|
+
export { $unwindDelta } from './$unwind-delta';
|
|
4
|
+
type s = string;
|
|
5
|
+
type TOf<TT, K extends string> = doc & Omit<TT, K>;
|
|
6
|
+
export declare const $unwind: <TT extends O, K extends s, U extends doc>(k: AsLiteral<K>, dict: RORec<K, "key"> & RORec<"_id", "id">, middle?: string) => DeltaStages<O, TOf<TT, K> & Rec<K, Arr<U>>, TOf<TT, K> & Rec<K, U>>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { O2, O3, OPickD, RORec, StrKey, View } from '../../types';
|
|
2
|
+
import type { HKT, I } from '../../types/hkt';
|
|
3
|
+
import type { RawStages } from '../types';
|
|
4
|
+
import type { Model, SimpleStreamExecutionResult } from '../types/stream';
|
|
5
|
+
type Allowed<K> = Exclude<K, 'deletedAt' | '_id'>;
|
|
6
|
+
type AllowedPick<V extends Model, K extends StrKey<V>> = OPickD<V, Allowed<K>>;
|
|
7
|
+
interface StreamRunnerHKT extends HKT<O2> {
|
|
8
|
+
readonly out: SimpleStreamExecutionResult<I<O2, this>[0], I<O2, this>[1]>;
|
|
9
|
+
}
|
|
10
|
+
interface StagesHKT extends HKT<O3> {
|
|
11
|
+
readonly out: RORec<'lin', RawStages<I<O3, this>[0], I<O3, this>[1], I<O3, this>[2], unknown, 1>>;
|
|
12
|
+
}
|
|
13
|
+
export declare const from: <V extends Model, KK extends StrKey<V>>(view: View<V, Allowed<KK>>, streamName: string, needs?: Partial<Record<KK, 0 | 1>>) => import("../aggregate/prefix").DeltaPipe<AllowedPick<V, KK>, AllowedPick<V, KK>, StreamRunnerHKT, StagesHKT>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Collection, type Timestamp } from 'mongodb';
|
|
2
|
+
import type { BSON, OPickD, rawItem, RawObj, StrKey } from '../../types';
|
|
3
|
+
import type { Actions, Model } from '../types/stream';
|
|
4
|
+
export type AllowedPick<V extends Model, K extends StrKey<V>> = OPickD<V, Allowed<K>>;
|
|
5
|
+
export type Allowed<K> = Exclude<K, 'deletedAt' | '_id'>;
|
|
6
|
+
export type Teardown = {
|
|
7
|
+
collection: string;
|
|
8
|
+
method: string;
|
|
9
|
+
params: unknown[];
|
|
10
|
+
};
|
|
11
|
+
export type TsData = {
|
|
12
|
+
input: readonly RawObj[];
|
|
13
|
+
finalInput: readonly RawObj[];
|
|
14
|
+
finalInputFirst: readonly RawObj[];
|
|
15
|
+
project: rawItem;
|
|
16
|
+
match: rawItem;
|
|
17
|
+
teardown: Teardown;
|
|
18
|
+
};
|
|
19
|
+
export type Last = {
|
|
20
|
+
_id: string;
|
|
21
|
+
ts: Timestamp;
|
|
22
|
+
data?: TsData;
|
|
23
|
+
};
|
|
24
|
+
export declare const actions: {
|
|
25
|
+
[K in keyof Actions<unknown>]: <W extends BSON.Document>(col: Collection<W>, x: Actions<W>[K]) => [Promise<unknown>, unknown[]];
|
|
26
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { O2, O3, StrKey, View } from '../../types';
|
|
2
|
+
import type { HKT, I } from '../../types/hkt';
|
|
3
|
+
import { type DeltaPipe } from '../aggregate/prefix';
|
|
4
|
+
import type { SnapshotStreamExecutionResult } from '../types';
|
|
5
|
+
import type { DeltaStages, Model } from '../types/stream';
|
|
6
|
+
import type { Allowed, AllowedPick } from './boot-utils';
|
|
7
|
+
export declare const streamNames: Record<string, string>;
|
|
8
|
+
export interface SnapshotStreamHKT extends HKT<O2> {
|
|
9
|
+
readonly out: SnapshotStreamExecutionResult<I<O2, this>[0], I<O2, this>[1]>;
|
|
10
|
+
}
|
|
11
|
+
export interface DeltaHKT extends HKT<O3> {
|
|
12
|
+
readonly out: DeltaStages<I<O3, this>[0], I<O3, this>[1], I<O3, this>[2]>;
|
|
13
|
+
}
|
|
14
|
+
export declare const staging: <V extends Model, KK extends StrKey<V>>(view: View<V, Allowed<KK>> & {
|
|
15
|
+
needs?: Partial<Record<KK, 0 | 1>>;
|
|
16
|
+
}, streamName: string, skip?: boolean, after?: () => Promise<void>) => DeltaPipe<AllowedPick<V, KK>, AllowedPick<V, KK>, SnapshotStreamHKT, DeltaHKT>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Timestamp } from 'mongodb';
|
|
2
|
+
import type { O, StrKey, View } from '../../types';
|
|
3
|
+
import { type Concat } from '../aggregate/prefix';
|
|
4
|
+
import type { Query } from '../types';
|
|
5
|
+
import type { Del, Model } from '../types/stream';
|
|
6
|
+
import type { Allowed } from './boot-utils';
|
|
7
|
+
export declare const getFirstStages: <V extends Model, KK extends StrKey<V>>(view: View<V, Allowed<KK>>, needs: Partial<Record<KK, 0 | 1>>) => {
|
|
8
|
+
firstStages: (lastTS: {
|
|
9
|
+
ts: Timestamp;
|
|
10
|
+
} | null, keepNulls?: boolean) => Concat<V | O | Del, Del | V, V, unknown>;
|
|
11
|
+
hardMatch: Query<V> | undefined;
|
|
12
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { O2, StrKey, View } from '../../types';
|
|
2
|
+
import type { HKT, I } from '../../types/hkt';
|
|
3
|
+
import { type DeltaPipe } from '../aggregate/prefix';
|
|
4
|
+
import type { Model, RawStages, Stages } from '../types/stream';
|
|
5
|
+
import type { DeltaHKT } from './boot';
|
|
6
|
+
import type { Allowed, AllowedPick } from './boot-utils';
|
|
7
|
+
export type SingleResult<out Result> = <Result2>(finalInput: RawStages<unknown, Result, Result2>) => Stages<unknown, Result2, unknown>;
|
|
8
|
+
export interface SnapshotStreamHKT2 extends HKT<O2> {
|
|
9
|
+
readonly out: SingleResult<I<O2, this>[1]>;
|
|
10
|
+
}
|
|
11
|
+
export declare const single: <V extends Model, KK extends StrKey<V>>(view: View<V, Allowed<KK>>, needs?: Partial<Record<KK, 0 | 1>>) => DeltaPipe<AllowedPick<V, KK>, AllowedPick<V, KK>, SnapshotStreamHKT2, DeltaHKT>;
|
|
@@ -0,0 +1,32 @@
|
|
|
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: {
|
|
4
|
+
<D, C>(...expr: [Expr<Date, D, C>, Expr<Date, D, C>]): Expr<boolean, D, C>;
|
|
5
|
+
<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<boolean, D, C>;
|
|
6
|
+
};
|
|
7
|
+
export declare const gt: {
|
|
8
|
+
<D, C>(...expr: [Expr<Date, D, C>, Expr<Date, D, C>]): Expr<boolean, D, C>;
|
|
9
|
+
<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<boolean, D, C>;
|
|
10
|
+
};
|
|
11
|
+
export declare const lte: {
|
|
12
|
+
<D, C>(...expr: [Expr<Date, D, C>, Expr<Date, D, C>]): Expr<boolean, D, C>;
|
|
13
|
+
<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<boolean, D, C>;
|
|
14
|
+
};
|
|
15
|
+
export declare const gte: {
|
|
16
|
+
<D, C>(...expr: [Expr<Date, D, C>, Expr<Date, D, C>]): Expr<boolean, D, C>;
|
|
17
|
+
<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<boolean, D, C>;
|
|
18
|
+
};
|
|
19
|
+
type Num = number | null | undefined;
|
|
20
|
+
export declare function subtract<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
21
|
+
export declare function subtract<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
22
|
+
export declare function add<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
23
|
+
export declare function add<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
24
|
+
export declare function divide<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
25
|
+
export declare function divide<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
26
|
+
export declare function multiply<D, C>(...expr: [Expr<number, D, C>, Expr<number, D, C>]): Expr<number, D, C>;
|
|
27
|
+
export declare function multiply<D, C>(...expr: [Expr<Num, D, C>, Expr<Num, D, C>]): Expr<Num, D, C>;
|
|
28
|
+
export declare function floor<D, C>(expr: Expr<number, D, C>): Expr<number, D, C>;
|
|
29
|
+
export declare function floor<D, C>(expr: Expr<Num, D, C>): Expr<Num, D, C>;
|
|
30
|
+
export declare function ceil<D, C>(expr: Expr<number, D, C>): Expr<number, D, C>;
|
|
31
|
+
export declare function ceil<D, C>(expr: Expr<Num, D, C>): Expr<Num, D, C>;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { App, Arr, HKT, N, O, 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 inArray: <T, D, C>(item: Expr<T, D, C>, expr: Expr<Arr<T>, D, C>) => Expr<boolean, D, C>;
|
|
18
|
+
export declare const array: <T, D, C = unknown>(...exprs: Expr<T, D, C>[]) => Expr<Arr<T>, D, C>;
|
|
19
|
+
export declare const concatArray: <T, D, C>(...exprs: Expr<Arr<T>, D, C>[]) => Expr<Arr<T>, D, C>;
|
|
20
|
+
export declare const first: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<T | null, D, C>;
|
|
21
|
+
export declare const firstSure: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<T, D, C>;
|
|
22
|
+
export declare const last: <T, D, C>(expr: Expr<Arr<T>, D, C>) => Expr<T | null, D, C>;
|
|
23
|
+
export type NullToOBJ<N extends null> = N extends null ? O : N;
|
|
24
|
+
export declare const mergeObjects: <T1, T2, D, C = unknown, N extends null = never>(...exprs: readonly [Expr<T1 | N, D, C>, ...[...Expr<T1 | T2 | N, D, C>[], Expr<T2, D, C>]]) => Expr<(T1 | NullToOBJ<N>) & T2, D, C>;
|
|
25
|
+
export declare const anyElementTrue: <D, C = unknown>(expr: Expr<Arr<boolean>, D, C>) => Expr<boolean, D, C>;
|
|
26
|
+
type Reduce<T, V> = RORec<'value', V> & RORec<'this', T>;
|
|
27
|
+
export declare const $reduce: <T, V, D, C>(input: Expr<Arr<T>, D, C>, initialValue: Expr<V, D, C>, inExpr: Expr<V, D, C & Reduce<T, V>>) => Expr<V, D, C>;
|
|
28
|
+
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>;
|
|
29
|
+
export declare const except: <T, D, C>(a: Expr<Arr<T>, D, C>, b: Expr<Arr<T>, D, C>) => Expr<Arr<T>, D, C>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { App, HKT, I, IdHKT, N, 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: {
|
|
5
|
+
<D, C>(...expr: Expr<string, D, C>[]): Expr<string, D, C>;
|
|
6
|
+
<D, C>(...expr: Expr<string | N, D, C>[]): Expr<string | N, D, C>;
|
|
7
|
+
};
|
|
8
|
+
export declare const regex: <D, C>(expr: Expr<string, D, C>, regex: Expr<string, D, C>, options?: Expr<string, D, C>) => Expr<boolean, D, C>;
|
|
9
|
+
export declare const str: <D, C>(expr: Expr<unknown, D, C>) => Expr<string, D, C>;
|
|
10
|
+
export declare const toInt: <D, C>(expr: Expr<unknown, D, C>) => Expr<number, D, C>;
|
|
11
|
+
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>;
|
|
12
|
+
export type Exprs<out T, in D, in C = unknown> = {
|
|
13
|
+
readonly [K in StrKey<T>]: Expr<T[K], D, C>;
|
|
14
|
+
};
|
|
15
|
+
type MergeExactArgs<T1, T2, F extends HKT<T1[StrKey<T1>] | T2[StrKey<T2>]>> = readonly [
|
|
16
|
+
Exact<Omit<T1, keyof T2>, F>,
|
|
17
|
+
Exact<T2, F>
|
|
18
|
+
];
|
|
19
|
+
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>;
|
|
20
|
+
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>];
|
|
21
|
+
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>>>;
|
|
22
|
+
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>;
|
|
23
|
+
export type ExprsPart<T, D, C> = ExactPart<T, ExprHKT<D, C>>;
|
|
24
|
+
export interface ExprHKT<D, C = unknown, F extends HKT = IdHKT> extends HKT<unknown> {
|
|
25
|
+
readonly out: Expr<App<F, I<unknown, this>>, D, C>;
|
|
26
|
+
}
|
|
27
|
+
export type ExprsExact<T, D, C = unknown, F extends HKT = IdHKT> = Exact<T, ExprHKT<D, C, F>>;
|
|
28
|
+
export interface ExprsExactHKT<E, D, C = unknown, F extends HKT = IdHKT> extends HKT {
|
|
29
|
+
readonly out: ExprsExact<E & I<unknown, this>, D, C, F>;
|
|
30
|
+
}
|
|
31
|
+
export declare const pair: <T, D, C, P extends StrKey<T>>(k: P, v: Expr<T[P], D, C>) => ExprsExact<T, D, C>[P];
|
|
32
|
+
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>;
|
|
33
|
+
export declare const field: <T extends object, D, C = unknown>(exprs: ExprsExact<T, D, C>) => Expr<O<T>, D, C>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
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 year: <D, C>(date: Expr<Date, D, C>) => Expr<number, D, C>;
|
|
8
|
+
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>;
|
|
9
|
+
export declare const maxDate: <D, C>(expr: Expr<Arr<Date>, D, C>) => Expr<Date, D, C>;
|
|
10
|
+
export declare const minDate: <D, C>(expr: Expr<Arr<Date>, D, C>) => Expr<Date, D, C>;
|
|
11
|
+
export declare const datePart: <D, C>(date: Expr<Date, D, C>) => Expr<string, D, C>;
|
|
12
|
+
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>;
|
|
13
|
+
export declare const dateDiff: <D, C>({ end, unit, start, }: {
|
|
14
|
+
start: Expr<Date, D, C>;
|
|
15
|
+
end: Expr<Date, D, C>;
|
|
16
|
+
unit: Expr<"week" | "day" | "month" | "year", D, C>;
|
|
17
|
+
}) => 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,23 @@
|
|
|
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 not: <D, C = unknown>(expr: Expr<boolean, D, C>) => Expr<boolean, D, C>;
|
|
11
|
+
export declare const eq: <T, D, C = unknown>(a: Expr<T, D, C>) => (b: Expr<T, D, C>) => Expr<boolean, D, C>;
|
|
12
|
+
export declare const sub: <T, D, Ctx, P extends O>(a: Expr<T, D, Ctx>, f: Field<P, D, Ctx>) => Expr<T, P, Ctx>;
|
|
13
|
+
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>;
|
|
14
|
+
export declare const ne: <T, D, C>(a: Expr<T, D, C>) => <K>(b: Expr<K, D, C>) => Expr<boolean, D, C>;
|
|
15
|
+
export declare const notNull: <T, D, C>(a: Expr<T, D, C>) => Expr<boolean, D, C>;
|
|
16
|
+
export declare const $ifNull: <R, D, C>(...expr: [...Expr<R | null | undefined, D, C>[], Expr<R, D, C>]) => Expr<R, D, C>;
|
|
17
|
+
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>;
|
|
18
|
+
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>;
|
|
19
|
+
export declare const setField: <K extends string, T, V, D, C>({ field, input, value, }: {
|
|
20
|
+
field: Expr<K, D, C>;
|
|
21
|
+
input: Expr<T, D, C>;
|
|
22
|
+
value: Expr<V, D, C>;
|
|
23
|
+
}) => Expr<T & Record<K, V>, D, C>;
|
|
@@ -0,0 +1,11 @@
|
|
|
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 $map0: <K extends string, T, R, D, C>({ as, expr, input, }: {
|
|
6
|
+
input: Expr<Arr<T>, D, C>;
|
|
7
|
+
as: K;
|
|
8
|
+
expr: Expr<R, D, RORec<K, T> & C>;
|
|
9
|
+
}) => Expr<Arr<R>, D, C>;
|
|
10
|
+
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>;
|
|
11
|
+
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,24 @@
|
|
|
1
|
+
import type { Timestamp } from 'mongodb';
|
|
2
|
+
import type { N, rawItem, RawObj } from '../../types';
|
|
3
|
+
export declare const $eq: <T extends unknown>(operand: rawItem & T) => import("../types").Predicate<T>;
|
|
4
|
+
export declare const $ne: <T extends unknown>(operand: rawItem & T) => import("../types").Predicate<T>;
|
|
5
|
+
type Numeric = number | Timestamp | Date;
|
|
6
|
+
export declare const comp: <D2 extends Numeric = Numeric>(op: "$lt" | "$gt" | "$lte" | "$gte") => <T extends Numeric>(operand: rawItem & D2) => import("../types").Predicate<D2>;
|
|
7
|
+
export declare const $gt: <T extends Numeric>(operand: rawItem & Numeric) => import("../types").Predicate<Numeric>;
|
|
8
|
+
export declare const $gtTs: <T extends Numeric>(operand: rawItem & Timestamp) => import("../types").Predicate<Timestamp>;
|
|
9
|
+
export declare const $gteTs: <T extends Numeric>(operand: rawItem & Timestamp) => import("../types").Predicate<Timestamp>;
|
|
10
|
+
export declare const $lt: <T extends Numeric>(operand: rawItem & number) => import("../types").Predicate<number>;
|
|
11
|
+
export declare const dateLt: <T extends Numeric>(operand: rawItem & Date) => import("../types").Predicate<Date>;
|
|
12
|
+
export declare const $gte: <T extends Numeric>(operand: rawItem & number) => import("../types").Predicate<number>;
|
|
13
|
+
export declare const $lte: <T extends Numeric>(operand: rawItem & number) => import("../types").Predicate<number>;
|
|
14
|
+
type MongoTypes = {
|
|
15
|
+
number: number;
|
|
16
|
+
array: readonly rawItem[];
|
|
17
|
+
string: string;
|
|
18
|
+
object: RawObj;
|
|
19
|
+
[i: number]: unknown;
|
|
20
|
+
};
|
|
21
|
+
export type MongoTypeNames = keyof MongoTypes;
|
|
22
|
+
export declare const $type: <T extends keyof MongoTypes>(operand: rawItem & readonly T[]) => import("../types").Predicate<N | MongoTypes[T]>;
|
|
23
|
+
export declare const $exists: <T extends keyof MongoTypes>(operand: rawItem & boolean) => import("../types").Predicate<unknown>;
|
|
24
|
+
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' | '$type' | '$exists';
|
|
4
|
+
export declare const operator: <K extends Operators, F extends HKT<Dom2, HKT<Dom1, unknown>>, Dom1, Dom2 = Dom1, G extends HKT<Dom2, HKT<Dom1, unknown>> = F>() => <D2 extends Dom2 = Dom2>(op: K) => <T extends Dom1>(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>(streamName: string, 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>>;
|