@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
package/index.d.ts
CHANGED
|
@@ -466,9 +466,11 @@ declare const $unwindDelta: <K1 extends s$1, T extends doc, K2 extends s$1, U ex
|
|
|
466
466
|
type s = string;
|
|
467
467
|
declare const $unwind: <T extends doc, K extends s, U extends doc>(k: AsLiteral<K>, dict: RORec<K, "key">) => DeltaStages<O, T & Rec<K, Arr<U>>, T & Rec<K, U>>;
|
|
468
468
|
|
|
469
|
+
type OutInputE<T, E, A = T | null> = ID & Rec<'after', A> & E;
|
|
469
470
|
type Allowed$2<K extends string> = Exclude<K, keyof (TS & ID)>;
|
|
470
471
|
type Patch<V, KK extends StrKey<V>> = ((OPick<V, Allowed$2<KK>> & ID) | (Rec<Allowed$2<KK>, N> & ID)) & TS;
|
|
471
|
-
declare const $
|
|
472
|
+
declare const $simpleMerge: <V extends Model & ID>() => <KK extends StrKey<V>, Out extends doc>(out: RWCollection<Out | Replace<Out, Patch<V, KK>>, Out>, keys: ExactKeys<Allowed$2<KK>>) => RawStages<unknown, OutInputE<OPick<V, Allowed$2<KK>> & ID, unknown>, "out">;
|
|
473
|
+
declare const $merge: <V extends Model & ID>() => <KK extends StrKey<V>, Out extends doc>(out: RWCollection<Out | Replace<Out, Patch<V, KK>>, Out>, keys: ExactKeys<Allowed$2<KK>>) => RawStages<unknown, Delta<OPick<V, Allowed$2<KK>> & ID>, "out">;
|
|
472
474
|
|
|
473
475
|
type ND = {
|
|
474
476
|
readonly deletedAt?: null;
|
|
@@ -640,4 +642,4 @@ declare const enablePreAndPostImages: <T extends doc>(coll: Collection<T>) => Pr
|
|
|
640
642
|
declare const prepare: (testName?: string) => Promise<MongoClient$1>;
|
|
641
643
|
declare const makeCol: <T extends ID>(docs: readonly OptionalUnlessRequiredId<T>[], database: Db, name?: string) => Promise<Collection<T>>;
|
|
642
644
|
|
|
643
|
-
export { $accumulator, $and, $countDict, $entries, $eq, $expr, $getField, $group, $groupId, $groupMerge, $gt, $gtTs, $gte, $gteTs, $ifNull, $in, $keys, $let, $lookup, $lt, $lte, $map, $map1, $match, $matchDelta, $merge, $merge_, $ne, $nin, $nor, $or, $pushDict, $rand, $replaceWith, $set, $sum, $unwind, $unwindDelta, $upsert, type Accumulators, type Arr, type AsLiteral, type Delta, type DeltaAccumulator, type DeltaAccumulators, Expr, type ExprHKT, type Exprs, type ExprsExact, type ExprsExactHKT, type ExprsPart, Field, type ID, type Loose, Machine, type Merge, type MergeArgs, type MergeInto, type MergeMapOArgs, type Model, type N, type NoRaw, type O, type OPick, type OPickD, type RONoRaw, type RORec, type RawStages, type Rec, type Replace, type SnapshotStreamExecutionResult, type StrKey, type Strict, type TS, Type, type WriteonlyCollection, add, and, array, ceil, comp, concat, concatArray, createIndex, ctx, current, dateAdd, dateDiff, dateLt, datePart, dayAndMonthPart, divide, type doc, enablePreAndPostImages, eq, eqTyped, except, exprMapVal, field, fieldF, fieldM, filter, filterDefined, first, firstSure, floor, from, func, gt, gte, inArray, isArray, ite, last, log, lt, lte, makeCol, map1, mapVal, max, maxDate, mergeExact, mergeExact0, mergeExpr, mergeObjects, minDate, monthPart, multiply, ne, nil, noop, type notArr, notNull, now, or, pair, prepare, rand, range, root, set, setField, size, slice, sortArray, staging, startOf, str, sub, subtract, to, toInt, val, weekPart, wrap };
|
|
645
|
+
export { $accumulator, $and, $countDict, $entries, $eq, $expr, $getField, $group, $groupId, $groupMerge, $gt, $gtTs, $gte, $gteTs, $ifNull, $in, $keys, $let, $lookup, $lt, $lte, $map, $map1, $match, $matchDelta, $merge, $merge_, $ne, $nin, $nor, $or, $pushDict, $rand, $replaceWith, $set, $simpleMerge, $sum, $unwind, $unwindDelta, $upsert, type Accumulators, type Arr, type AsLiteral, type Delta, type DeltaAccumulator, type DeltaAccumulators, Expr, type ExprHKT, type Exprs, type ExprsExact, type ExprsExactHKT, type ExprsPart, Field, type ID, type Loose, Machine, type Merge, type MergeArgs, type MergeInto, type MergeMapOArgs, type Model, type N, type NoRaw, type O, type OPick, type OPickD, type RONoRaw, type RORec, type RawStages, type Rec, type Replace, type SnapshotStreamExecutionResult, type StrKey, type Strict, type TS, Type, type WriteonlyCollection, add, and, array, ceil, comp, concat, concatArray, createIndex, ctx, current, dateAdd, dateDiff, dateLt, datePart, dayAndMonthPart, divide, type doc, enablePreAndPostImages, eq, eqTyped, except, exprMapVal, field, fieldF, fieldM, filter, filterDefined, first, firstSure, floor, from, func, gt, gte, inArray, isArray, ite, last, log, lt, lte, makeCol, map1, mapVal, max, maxDate, mergeExact, mergeExact0, mergeExpr, mergeObjects, minDate, monthPart, multiply, ne, nil, noop, type notArr, notNull, now, or, pair, prepare, rand, range, root, set, setField, size, slice, sortArray, staging, startOf, str, sub, subtract, to, toInt, val, weekPart, wrap };
|
package/index.esm.js
CHANGED
|
@@ -715,53 +715,45 @@ const $unwindDelta = (k1, k2, k) => {
|
|
|
715
715
|
.with(asStages([
|
|
716
716
|
{
|
|
717
717
|
$replaceWith: {
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
`$${
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
: [
|
|
733
|
-
`$${[k1, k2].sort()[0]}.after._id`,
|
|
734
|
-
'.',
|
|
735
|
-
`$${[k1, k2].sort()[1]}.after._id`,
|
|
736
|
-
],
|
|
737
|
-
},
|
|
738
|
-
},
|
|
739
|
-
in: {
|
|
740
|
-
_id: { $ifNull: ['$$afterId', '$$beforeId'] },
|
|
741
|
-
before: {
|
|
742
|
-
$cond: {
|
|
743
|
-
if: { $or: [{ $eq: [`$${k1}.before`, null] }, { $eq: [`$${k2}.before`, null] }] },
|
|
744
|
-
then: null,
|
|
745
|
-
else: {
|
|
746
|
-
_id: '$$beforeId',
|
|
747
|
-
[k1]: `$${k1}.before`,
|
|
748
|
-
[k2]: `$${k2}.before`,
|
|
749
|
-
},
|
|
718
|
+
_id: "$_id",
|
|
719
|
+
before: {
|
|
720
|
+
$cond: {
|
|
721
|
+
if: { $or: [{ $eq: [`$${k1}.before`, null] }, { $eq: [`$${k2}.before`, null] }] },
|
|
722
|
+
then: null,
|
|
723
|
+
else: {
|
|
724
|
+
_id: {
|
|
725
|
+
$concat: k
|
|
726
|
+
? `$${k}.before._id`
|
|
727
|
+
: [
|
|
728
|
+
`$${[k1, k2].sort()[0]}.before._id`,
|
|
729
|
+
'.',
|
|
730
|
+
`$${[k1, k2].sort()[1]}.before._id`,
|
|
731
|
+
],
|
|
750
732
|
},
|
|
733
|
+
[k1]: `$${k1}.before`,
|
|
734
|
+
[k2]: `$${k2}.before`,
|
|
751
735
|
},
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
736
|
+
},
|
|
737
|
+
},
|
|
738
|
+
after: {
|
|
739
|
+
$cond: {
|
|
740
|
+
if: { $or: [{ $eq: [`$${k1}.after`, null] }, { $eq: [`$${k2}.after`, null] }] },
|
|
741
|
+
then: null,
|
|
742
|
+
else: {
|
|
743
|
+
_id: {
|
|
744
|
+
$concat: k
|
|
745
|
+
? `$${k}.after._id`
|
|
746
|
+
: [
|
|
747
|
+
`$${[k1, k2].sort()[0]}.after._id`,
|
|
748
|
+
'.',
|
|
749
|
+
`$${[k1, k2].sort()[1]}.after._id`,
|
|
750
|
+
],
|
|
761
751
|
},
|
|
752
|
+
[k1]: `$${k1}.after`,
|
|
753
|
+
[k2]: `$${k2}.after`,
|
|
762
754
|
},
|
|
763
|
-
}
|
|
764
|
-
}
|
|
755
|
+
},
|
|
756
|
+
},
|
|
765
757
|
},
|
|
766
758
|
},
|
|
767
759
|
])).stages;
|
|
@@ -1018,11 +1010,11 @@ const $replaceWith = (expr) => ({
|
|
|
1018
1010
|
lin: $replaceWith_(expr),
|
|
1019
1011
|
});
|
|
1020
1012
|
|
|
1021
|
-
const $
|
|
1013
|
+
const $mergeId = () => (out, keys, id) => {
|
|
1022
1014
|
const omRORec = omitRORec();
|
|
1023
1015
|
const patch = mapExactToObject(keys, (_, k) => [k, root().of('after').of(k).expr()]);
|
|
1024
1016
|
const replacer = ite(eqTyped(root().of('after').expr(), nil), field(omRORec.backward(spread(mapExact(keys, () => nil), {
|
|
1025
|
-
_id: ['_id',
|
|
1017
|
+
_id: ['_id', id],
|
|
1026
1018
|
touchedAt: ['touchedAt', current],
|
|
1027
1019
|
}))), field(omitPick().backward(spread(patch, {
|
|
1028
1020
|
_id: ['_id', root().of('after').of('_id').expr()],
|
|
@@ -1037,6 +1029,12 @@ const $merge = () => (out, keys) => {
|
|
|
1037
1029
|
whenMatched: 'merge',
|
|
1038
1030
|
})).stages;
|
|
1039
1031
|
};
|
|
1032
|
+
const $simpleMerge = () => (out, keys) => $mergeId()(out, keys, root().of('_id').expr());
|
|
1033
|
+
const $merge = () => (out, keys) => $mergeId()(out, keys, assertNotNull(root()
|
|
1034
|
+
.of('before')
|
|
1035
|
+
.of('_id')
|
|
1036
|
+
.expr()));
|
|
1037
|
+
const assertNotNull = (expr) => expr;
|
|
1040
1038
|
|
|
1041
1039
|
const $upsert = (out) => {
|
|
1042
1040
|
const replacer = ite(eqTyped(root().of('after').expr(), nil), field({
|
|
@@ -1623,4 +1621,4 @@ const makeCol = async (docs, database, name) => {
|
|
|
1623
1621
|
}
|
|
1624
1622
|
};
|
|
1625
1623
|
|
|
1626
|
-
export { $accumulator, $and, $countDict, $entries, $eq, $expr, $getField, $group, $groupId, $groupMerge, $gt, $gtTs, $gte, $gteTs, $ifNull, $in, $keys, $let, $lookup, $lt, $lte, $map, $map1, $match, $matchDelta, $merge, $merge_, $ne, $nin, $nor, $or, $pushDict, $rand, $replaceWith, $set, $sum, $unwind, $unwindDelta, $upsert, Field, Machine, add, and, array, ceil, comp, concat$1 as concat, concatArray, createIndex, ctx, current, dateAdd, dateDiff, dateLt, datePart, dayAndMonthPart, divide, enablePreAndPostImages, eq, eqTyped, except, exprMapVal, field, fieldF, fieldM, filter, filterDefined, first$1 as first, firstSure, floor, from, func, gt, gte, inArray, isArray, ite, last, log, lt, lte, makeCol, map1, mapVal, max, maxDate, mergeExact, mergeExact0, mergeExpr, mergeObjects, minDate, monthPart, multiply, ne, nil, noop, notNull, now, or, pair, prepare, rand, range, root, set, setField, size, slice, sortArray, staging, startOf, str, sub, subtract, to, toInt, val, weekPart, wrap };
|
|
1624
|
+
export { $accumulator, $and, $countDict, $entries, $eq, $expr, $getField, $group, $groupId, $groupMerge, $gt, $gtTs, $gte, $gteTs, $ifNull, $in, $keys, $let, $lookup, $lt, $lte, $map, $map1, $match, $matchDelta, $merge, $merge_, $ne, $nin, $nor, $or, $pushDict, $rand, $replaceWith, $set, $simpleMerge, $sum, $unwind, $unwindDelta, $upsert, Field, Machine, add, and, array, ceil, comp, concat$1 as concat, concatArray, createIndex, ctx, current, dateAdd, dateDiff, dateLt, datePart, dayAndMonthPart, divide, enablePreAndPostImages, eq, eqTyped, except, exprMapVal, field, fieldF, fieldM, filter, filterDefined, first$1 as first, firstSure, floor, from, func, gt, gte, inArray, isArray, ite, last, log, lt, lte, makeCol, map1, mapVal, max, maxDate, mergeExact, mergeExact0, mergeExpr, mergeObjects, minDate, monthPart, multiply, ne, nil, noop, notNull, now, or, pair, prepare, rand, range, root, set, setField, size, slice, sortArray, staging, startOf, str, sub, subtract, to, toInt, val, weekPart, wrap };
|
package/index.js
CHANGED
|
@@ -717,53 +717,45 @@ const $unwindDelta = (k1, k2, k) => {
|
|
|
717
717
|
.with(asStages([
|
|
718
718
|
{
|
|
719
719
|
$replaceWith: {
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
`$${
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
: [
|
|
735
|
-
`$${[k1, k2].sort()[0]}.after._id`,
|
|
736
|
-
'.',
|
|
737
|
-
`$${[k1, k2].sort()[1]}.after._id`,
|
|
738
|
-
],
|
|
739
|
-
},
|
|
740
|
-
},
|
|
741
|
-
in: {
|
|
742
|
-
_id: { $ifNull: ['$$afterId', '$$beforeId'] },
|
|
743
|
-
before: {
|
|
744
|
-
$cond: {
|
|
745
|
-
if: { $or: [{ $eq: [`$${k1}.before`, null] }, { $eq: [`$${k2}.before`, null] }] },
|
|
746
|
-
then: null,
|
|
747
|
-
else: {
|
|
748
|
-
_id: '$$beforeId',
|
|
749
|
-
[k1]: `$${k1}.before`,
|
|
750
|
-
[k2]: `$${k2}.before`,
|
|
751
|
-
},
|
|
720
|
+
_id: "$_id",
|
|
721
|
+
before: {
|
|
722
|
+
$cond: {
|
|
723
|
+
if: { $or: [{ $eq: [`$${k1}.before`, null] }, { $eq: [`$${k2}.before`, null] }] },
|
|
724
|
+
then: null,
|
|
725
|
+
else: {
|
|
726
|
+
_id: {
|
|
727
|
+
$concat: k
|
|
728
|
+
? `$${k}.before._id`
|
|
729
|
+
: [
|
|
730
|
+
`$${[k1, k2].sort()[0]}.before._id`,
|
|
731
|
+
'.',
|
|
732
|
+
`$${[k1, k2].sort()[1]}.before._id`,
|
|
733
|
+
],
|
|
752
734
|
},
|
|
735
|
+
[k1]: `$${k1}.before`,
|
|
736
|
+
[k2]: `$${k2}.before`,
|
|
753
737
|
},
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
738
|
+
},
|
|
739
|
+
},
|
|
740
|
+
after: {
|
|
741
|
+
$cond: {
|
|
742
|
+
if: { $or: [{ $eq: [`$${k1}.after`, null] }, { $eq: [`$${k2}.after`, null] }] },
|
|
743
|
+
then: null,
|
|
744
|
+
else: {
|
|
745
|
+
_id: {
|
|
746
|
+
$concat: k
|
|
747
|
+
? `$${k}.after._id`
|
|
748
|
+
: [
|
|
749
|
+
`$${[k1, k2].sort()[0]}.after._id`,
|
|
750
|
+
'.',
|
|
751
|
+
`$${[k1, k2].sort()[1]}.after._id`,
|
|
752
|
+
],
|
|
763
753
|
},
|
|
754
|
+
[k1]: `$${k1}.after`,
|
|
755
|
+
[k2]: `$${k2}.after`,
|
|
764
756
|
},
|
|
765
|
-
}
|
|
766
|
-
}
|
|
757
|
+
},
|
|
758
|
+
},
|
|
767
759
|
},
|
|
768
760
|
},
|
|
769
761
|
])).stages;
|
|
@@ -1020,11 +1012,11 @@ const $replaceWith = (expr) => ({
|
|
|
1020
1012
|
lin: $replaceWith_(expr),
|
|
1021
1013
|
});
|
|
1022
1014
|
|
|
1023
|
-
const $
|
|
1015
|
+
const $mergeId = () => (out, keys, id) => {
|
|
1024
1016
|
const omRORec = omitRORec();
|
|
1025
1017
|
const patch = mapExactToObject(keys, (_, k) => [k, root().of('after').of(k).expr()]);
|
|
1026
1018
|
const replacer = ite(eqTyped(root().of('after').expr(), nil), field(omRORec.backward(spread(mapExact(keys, () => nil), {
|
|
1027
|
-
_id: ['_id',
|
|
1019
|
+
_id: ['_id', id],
|
|
1028
1020
|
touchedAt: ['touchedAt', current],
|
|
1029
1021
|
}))), field(omitPick().backward(spread(patch, {
|
|
1030
1022
|
_id: ['_id', root().of('after').of('_id').expr()],
|
|
@@ -1039,6 +1031,12 @@ const $merge = () => (out, keys) => {
|
|
|
1039
1031
|
whenMatched: 'merge',
|
|
1040
1032
|
})).stages;
|
|
1041
1033
|
};
|
|
1034
|
+
const $simpleMerge = () => (out, keys) => $mergeId()(out, keys, root().of('_id').expr());
|
|
1035
|
+
const $merge = () => (out, keys) => $mergeId()(out, keys, assertNotNull(root()
|
|
1036
|
+
.of('before')
|
|
1037
|
+
.of('_id')
|
|
1038
|
+
.expr()));
|
|
1039
|
+
const assertNotNull = (expr) => expr;
|
|
1042
1040
|
|
|
1043
1041
|
const $upsert = (out) => {
|
|
1044
1042
|
const replacer = ite(eqTyped(root().of('after').expr(), nil), field({
|
|
@@ -1660,6 +1658,7 @@ exports.$pushDict = $pushDict;
|
|
|
1660
1658
|
exports.$rand = $rand;
|
|
1661
1659
|
exports.$replaceWith = $replaceWith;
|
|
1662
1660
|
exports.$set = $set;
|
|
1661
|
+
exports.$simpleMerge = $simpleMerge;
|
|
1663
1662
|
exports.$sum = $sum;
|
|
1664
1663
|
exports.$unwind = $unwind;
|
|
1665
1664
|
exports.$unwindDelta = $unwindDelta;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AppMap, Arr, N, O, Rec } from '../../types';
|
|
2
|
+
import type { ExprHKT } from '../expression/concat';
|
|
3
|
+
import { type NoRaw } from '../expression/val';
|
|
4
|
+
import type { DeltaAccumulator, Expr, Part } from '../types';
|
|
5
|
+
export declare const $sum: <D extends O, C = unknown>(expr: Expr<number | N, D, C>) => DeltaAccumulator<D, number, C>;
|
|
6
|
+
export declare const $accumulator: <D, T, Ctx, A extends readonly unknown[]>(init: () => NoRaw<T>, accumulateArgs: AppMap<ExprHKT<Part<D>, Ctx>, A>, accumulate: (a: NoRaw<T>, ...args: NoRaw<A>) => NoRaw<T>, merge: (...args: NoRaw<[T | N, T]>) => NoRaw<T>) => DeltaAccumulator<D, T, Ctx>;
|
|
7
|
+
export declare const $countDict: <D extends O, C = unknown>(expr: Expr<string, D, C>) => DeltaAccumulator<D, Rec<string, number>, C>;
|
|
8
|
+
export declare const $pushDict: <D extends O, V, C = unknown>(key: Expr<string, D, C>, value: Expr<V, D, C>) => DeltaAccumulator<D, Rec<string, Rec<"0" | "1", Arr<V>>>, C>;
|
|
9
|
+
export declare const $keys: <D extends O, C = unknown>(expr: Expr<Rec<string, number>, D, C>) => Expr<Arr<string>, D, C>;
|
|
10
|
+
export declare const $entries: <D extends O, V, C = unknown>(expr: Expr<Rec<string, Rec<"1" | "0", Arr<V>>>, D, C>) => Expr<Arr<Rec<"k", string> & Rec<"v", V>>, D, C>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { OPick, RWCollection } from '../../types';
|
|
2
|
+
import type { ID, N, Rec, Replace, StrKey, doc } from '../../types/json';
|
|
3
|
+
import type { Delta, Model, RawStages, TS } from '../types';
|
|
4
|
+
import { type ExactKeys } from '../utils/map-object';
|
|
5
|
+
type OutInputE<T, E, A = T | null> = ID & Rec<'after', A> & E;
|
|
6
|
+
type Allowed<K extends string> = Exclude<K, keyof (TS & ID)>;
|
|
7
|
+
type Patch<V, KK extends StrKey<V>> = ((OPick<V, Allowed<KK>> & ID) | (Rec<Allowed<KK>, N> & ID)) & TS;
|
|
8
|
+
export declare const $simpleMerge: <V extends Model & ID>() => <KK extends StrKey<V>, Out extends doc>(out: RWCollection<Out | Replace<Out, Patch<V, KK>>, Out>, keys: ExactKeys<Allowed<KK>>) => RawStages<unknown, OutInputE<OPick<V, Allowed<KK>> & ID, unknown>, "out">;
|
|
9
|
+
export declare const $merge: <V extends Model & ID>() => <KK extends StrKey<V>, Out extends doc>(out: RWCollection<Out | Replace<Out, Patch<V, KK>>, Out>, keys: ExactKeys<Allowed<KK>>) => RawStages<unknown, Delta<OPick<V, Allowed<KK>> & ID>, "out">;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RWCollection } from '../../types';
|
|
2
|
+
import type { ID, doc } from '../../types/json';
|
|
3
|
+
import type { Del, OutInput, RawStages, TS } from '../types';
|
|
4
|
+
type ND = {
|
|
5
|
+
readonly deletedAt?: null;
|
|
6
|
+
};
|
|
7
|
+
export type Merge<T extends ID> = (T & ND & TS) | Del;
|
|
8
|
+
export declare const $upsert: <T extends doc>(out: RWCollection<Merge<T>>) => RawStages<unknown, OutInput<T>, "out">;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RWCollection, WriteonlyCollection } from '../../../types';
|
|
2
|
+
import type { AsLiteral, ID, O, Rec, Replace, doc, notArr } from '../../../types/json';
|
|
3
|
+
import { type ExprsExact } from '../../expression/concat';
|
|
4
|
+
import type { Delta, DeltaAccumulators, Expr, RawStages, TS } from '../../types';
|
|
5
|
+
import type { MergeInto } from '../out';
|
|
6
|
+
import { type Extra, type IdAndTsKeys, type Loose, type Strict, type V_Grp } from './utils/sub-merge';
|
|
7
|
+
type Denied<GID = never> = keyof (TS & ID) | GID;
|
|
8
|
+
type GI<GG> = Exclude<GG, keyof TS>;
|
|
9
|
+
export declare const $groupMerge: <T extends O, Grp extends notArr, V extends O, GG extends string, EE = {}, Out extends Loose<Grp, V, GG> = Loose<Grp, V, GG>>(id: Expr<Grp, T>, args: DeltaAccumulators<T, O & Omit<V, Denied<GI<GG>>>>, out: MergeInto<Strict<Grp, V, GG, EE>, Out, WriteonlyCollection<Replace<Out, Strict<Grp, V, GG, EE>>>>, gid: AsLiteral<GI<GG>>, extra: ExprsExact<Extra<EE, V, GG>, V_Grp<V, GG, Grp>>, idPrefix?: string) => RawStages<unknown, Delta<T>, "out">;
|
|
10
|
+
export declare const $groupId: <T extends O, V extends O, EE = {}, Out extends Loose<string, V, "_id"> = Loose<string, V, "_id">>(id: Expr<string, T>, args: DeltaAccumulators<T, O & Omit<V, Denied>>, out: RWCollection<Replace<Out, Strict<string, V, "_id", EE>>, Out>, extra: ExprsExact<Omit<EE, IdAndTsKeys | keyof Omit<V, IdAndTsKeys>>, doc & Omit<V, IdAndTsKeys>>) => RawStages<unknown, Delta<T>, "out">;
|
|
11
|
+
export declare const $group: <T extends O, Grp extends notArr, V extends O, EE = {}, Out extends Loose<Grp, V, "_grp"> = Loose<Grp, V, "_grp">>(id: Expr<Grp, T>, args: DeltaAccumulators<T, O & Omit<V, Denied<"_grp">>>, out: RWCollection<Strict<Grp, V, "_grp", EE>, Out>, extra: ExprsExact<Omit<EE, IdAndTsKeys | "_grp" | keyof Omit<V, IdAndTsKeys | "_grp">>, Rec<"_grp", Grp> & Omit<V, IdAndTsKeys | "_grp">>, idPrefix?: string) => RawStages<unknown, Delta<T>, "out">;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { O, RORec, Rec } from '../../../../types';
|
|
2
|
+
import { type ExprsExact } from '../../../expression/concat';
|
|
3
|
+
import type { Delta, Expr, RawStages } from '../../../types';
|
|
4
|
+
import type { DeltaAccumulators } from '../../../types/accumulator';
|
|
5
|
+
export type WithItem<V, Grp> = Rec<'_id', Grp> & Rec<'item', O<V>>;
|
|
6
|
+
export declare const subGroup: <T extends O, Grp, V extends O, GID extends string>(id: Expr<Grp, T>, args: DeltaAccumulators<T, V>, addGrp: <D extends Rec<"_id", Grp>>(src: ExprsExact<V, D>) => ExprsExact<RORec<GID, Grp> & V, D>) => RawStages<unknown, Delta<T>, Rec<GID, Grp> & V>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AsLiteral, ID, O, Rec, Replace, WriteonlyCollection, notArr } from '../../../../types';
|
|
2
|
+
import { type ExprsExact } from '../../../expression/concat';
|
|
3
|
+
import type { RawStages, TS } from '../../../types';
|
|
4
|
+
import type { DeltaAccumulators } from '../../../types/accumulator';
|
|
5
|
+
import { type MergeInto } from '../../out';
|
|
6
|
+
type GI<GG> = Exclude<GG, keyof TS>;
|
|
7
|
+
export type IdAndTsKeys = keyof (TS & ID);
|
|
8
|
+
type V<VV, GG extends string> = Omit<VV, IdAndTsKeys | GI<GG>>;
|
|
9
|
+
export type Prepare<Grp, GG extends string> = TS & ID & Rec<GI<GG>, Grp>;
|
|
10
|
+
export type Loose<Grp, VV, GG extends string> = Prepare<Grp, GG> & Partial<V<VV, GG>>;
|
|
11
|
+
export type Strict<Grp, VV, GG extends string, EE> = Prepare<Grp, GG> & V<VV, GG> & Omit<EE, IdAndTsKeys | GI<GG> | keyof V<VV, GG>>;
|
|
12
|
+
export type V_Grp<VV, GG extends string, Grp> = Rec<GI<GG>, Grp> & V<VV, GG>;
|
|
13
|
+
export type Extra<EE, VV, GG extends string> = Omit<EE, IdAndTsKeys | GI<GG> | keyof V<VV, GG>>;
|
|
14
|
+
export declare const subMerge: <T extends O, Grp extends notArr, VV extends O, GG extends string, EE = {}, Out extends Loose<Grp, VV, GG> = Loose<Grp, VV, GG>>(args: DeltaAccumulators<T, V<VV, GG>>, out: MergeInto<Strict<Grp, VV, GG, EE>, Out, WriteonlyCollection<Replace<Out, Strict<Grp, VV, GG, EE>>>>, gid: AsLiteral<GI<GG>>, extra: ExprsExact<Extra<EE, VV, GG>, V_Grp<VV, GG, Grp>>, idPrefix: string) => RawStages<unknown, V_Grp<VV, GG, Grp>, "out">;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AsLiteral, ID, N, O, Rec } from '../../../types';
|
|
2
|
+
import { Field } from '../../field';
|
|
3
|
+
import type { BA, Before, Delta, RawStages, TStages, UBefore } from '../../types';
|
|
4
|
+
type s = string;
|
|
5
|
+
type Both<K1 extends s, LE, KK2 extends s, RE> = Delta<Rec<K1, LE> & Rec<Exclude<KK2, BA | K1>, RE> & ID>;
|
|
6
|
+
export declare const $lookupDelta: <LQ extends O, LE extends LQ & O, RQ extends O, RE extends RQ, BRB extends UBefore<RQ>, RS extends UBefore<RQ>, S, K1 extends s, KK2 extends s>({ field1, field2 }: {
|
|
7
|
+
field1: Field<LQ, S | N>;
|
|
8
|
+
field2: Field<RQ, S | N>;
|
|
9
|
+
}, { coll, exec, input }: TStages<RS, UBefore<RQ>, BRB, Before<RE>>, k1: AsLiteral<K1>, k2: AsLiteral<Exclude<KK2, BA | K1>>, k: K1 | Exclude<KK2, BA | K1> | false) => RawStages<unknown, Delta<LE>, Both<K1, LE, KK2, RE>>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { App, AsLiteral, HKT, ID, O, Rec } from '../../../types';
|
|
2
|
+
import { type Field } from '../../field';
|
|
3
|
+
import type { Before, RawStages, TStages } from '../../types';
|
|
4
|
+
type s = string;
|
|
5
|
+
export declare const $lookupRaw: <LQ extends O, LE extends LQ & ID, RQ extends O, RE extends RQ & ID, BRB extends Before<RQ>, RS, S, As extends s>({ field1, field2 }: {
|
|
6
|
+
field1: Field<LQ, S>;
|
|
7
|
+
field2: Field<RQ, S>;
|
|
8
|
+
}, { coll, exec, input }: TStages<RS, Before<RQ>, BRB, Before<RE>>, k2: AsLiteral<As>, k: "left" | "right" | false) => <F extends HKT<O, O>>(f: <T extends O>() => Field<App<F, T>, T>) => RawStages<App<F, LQ>, App<F, LE>, App<F, LE & Rec<As, RE> & ID>>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AsLiteral, O, RORec, doc, notArr } from '../../../types';
|
|
2
|
+
import { type Field } from '../../field';
|
|
3
|
+
import type { SnapshotStream, SnapshotStreamExecutionResult } from '../../types/stream';
|
|
4
|
+
type Params<As extends string, LQ extends O, RQ extends O, RE extends RQ, S extends notArr> = {
|
|
5
|
+
localField: Field<LQ, S>;
|
|
6
|
+
foreignField: Field<RQ, S>;
|
|
7
|
+
from: SnapshotStreamExecutionResult<RQ, RE>;
|
|
8
|
+
as: AsLiteral<As>;
|
|
9
|
+
};
|
|
10
|
+
export declare const $lookup: <As extends string, LQ extends doc, RQ extends O, RE extends RQ & doc, S extends notArr>(p: Params<As, LQ, RQ, RE, S>) => <LE extends LQ>(l: SnapshotStream<LQ, LE>) => SnapshotStream<LQ, LE & RORec<As, RE>>;
|
|
11
|
+
export {};
|
|
@@ -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>(k: K) => RawStages<O<T>, T & Rec<K, Arr<U>>, T & Rec<K, 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/map-object").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,34 @@
|
|
|
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?: undefined;
|
|
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
|
+
} | {
|
|
29
|
+
stages: 'ctx';
|
|
30
|
+
vars: ExprsExact<Ctx, T>;
|
|
31
|
+
into: RWCollection<In, Out>;
|
|
32
|
+
whenMatched: RawStages<unknown, Out, In, Ctx>;
|
|
33
|
+
});
|
|
34
|
+
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>;
|
|
@@ -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
|
+
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>(k: K) => FRawStages<T, T & Rec<K, Arr<R>>, T & Rec<K, R>>;
|
|
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,12 @@
|
|
|
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 $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>>;
|
|
12
|
+
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>(k1: AsLiteral<K1>, k2: AsLiteral<K2>, k: K1 | K2 | false) => RawStages<Delta<Rec<K1, T>>, Delta<Rec<K1, T> & Rec<K2, Arr<U>>>, Delta<Rec<K1, T> & Rec<K2, U> & ID>>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
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
|
+
export declare const $unwind: <T extends doc, K extends s, U extends doc>(k: AsLiteral<K>, dict: RORec<K, "key">) => DeltaStages<O, T & Rec<K, Arr<U>>, T & 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) => import("../aggregate/prefix").DeltaPipe<AllowedPick<V, KK>, AllowedPick<V, KK>, StreamRunnerHKT, StagesHKT>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { O2, O3, OPickD, 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
|
+
type Allowed<K> = Exclude<K, 'deletedAt' | '_id'>;
|
|
7
|
+
type AllowedPick<V extends Model, K extends StrKey<V>> = OPickD<V, Allowed<K>>;
|
|
8
|
+
export declare const streamNames: Record<string, string>;
|
|
9
|
+
export interface SnapshotStreamHKT extends HKT<O2> {
|
|
10
|
+
readonly out: SnapshotStreamExecutionResult<I<O2, this>[0], I<O2, this>[1]>;
|
|
11
|
+
}
|
|
12
|
+
export interface DeltaHKT extends HKT<O3> {
|
|
13
|
+
readonly out: DeltaStages<I<O3, this>[0], I<O3, this>[1], I<O3, this>[2]>;
|
|
14
|
+
}
|
|
15
|
+
export declare const staging: <V extends Model, KK extends StrKey<V>>(view: View<V, Allowed<KK>>, streamName: string) => DeltaPipe<AllowedPick<V, KK>, AllowedPick<V, KK>, SnapshotStreamHKT, DeltaHKT>;
|
|
16
|
+
export {};
|