@omegup/msync 0.0.44 → 0.0.46

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.
Files changed (88) hide show
  1. package/index.esm.js +18 -12
  2. package/index.js +18 -12
  3. package/package.json +1 -1
  4. package/lib/accumulators/index.d.ts +0 -10
  5. package/lib/aggregate/$merge.d.ts +0 -10
  6. package/lib/aggregate/$upsert.d.ts +0 -11
  7. package/lib/aggregate/group/$group-merge.d.ts +0 -12
  8. package/lib/aggregate/group/index.d.ts +0 -2
  9. package/lib/aggregate/group/utils/sub-group.d.ts +0 -6
  10. package/lib/aggregate/group/utils/sub-merge.d.ts +0 -15
  11. package/lib/aggregate/index.d.ts +0 -8
  12. package/lib/aggregate/lookup/$lookup-delta.d.ts +0 -10
  13. package/lib/aggregate/lookup/$lookup-raw.d.ts +0 -9
  14. package/lib/aggregate/lookup/index.d.ts +0 -16
  15. package/lib/aggregate/match/$match-delta.d.ts +0 -3
  16. package/lib/aggregate/match/$match.d.ts +0 -3
  17. package/lib/aggregate/match/index.d.ts +0 -2
  18. package/lib/aggregate/mongo-stages.d.ts +0 -13
  19. package/lib/aggregate/out.d.ts +0 -34
  20. package/lib/aggregate/prefix.d.ts +0 -33
  21. package/lib/aggregate/raws.d.ts +0 -17
  22. package/lib/aggregate/set/$replace-with-each.d.ts +0 -12
  23. package/lib/aggregate/set/$set-delta.d.ts +0 -5
  24. package/lib/aggregate/set/$set.d.ts +0 -6
  25. package/lib/aggregate/set/index.d.ts +0 -1
  26. package/lib/aggregate/unwind/$unwind-delta.d.ts +0 -5
  27. package/lib/aggregate/unwind/index.d.ts +0 -5
  28. package/lib/boot/boot-simpl.d.ts +0 -14
  29. package/lib/boot/boot.d.ts +0 -36
  30. package/lib/boot/index.d.ts +0 -2
  31. package/lib/expression/arith.d.ts +0 -26
  32. package/lib/expression/array.d.ts +0 -26
  33. package/lib/expression/concat.d.ts +0 -30
  34. package/lib/expression/date.d.ts +0 -17
  35. package/lib/expression/expr-base.d.ts +0 -5
  36. package/lib/expression/index.d.ts +0 -7
  37. package/lib/expression/logic.d.ts +0 -22
  38. package/lib/expression/range.d.ts +0 -6
  39. package/lib/expression/val.d.ts +0 -25
  40. package/lib/field/field.d.ts +0 -25
  41. package/lib/field/index.d.ts +0 -1
  42. package/lib/machine.d.ts +0 -9
  43. package/lib/predicate/$eq.d.ts +0 -13
  44. package/lib/predicate/$expr.d.ts +0 -3
  45. package/lib/predicate/$in.d.ts +0 -2
  46. package/lib/predicate/index.d.ts +0 -3
  47. package/lib/predicate/utils.d.ts +0 -5
  48. package/lib/query/index.d.ts +0 -1
  49. package/lib/query/logic.d.ts +0 -11
  50. package/lib/stream/aggregate.d.ts +0 -7
  51. package/lib/types/accumulator.d.ts +0 -30
  52. package/lib/types/aggregate.d.ts +0 -9
  53. package/lib/types/expr.d.ts +0 -27
  54. package/lib/types/extern.d.ts +0 -3
  55. package/lib/types/index.d.ts +0 -8
  56. package/lib/types/lookup.d.ts +0 -19
  57. package/lib/types/machine.d.ts +0 -17
  58. package/lib/types/predicate.d.ts +0 -14
  59. package/lib/types/query.d.ts +0 -12
  60. package/lib/types/stream.d.ts +0 -67
  61. package/lib/update/index.d.ts +0 -1
  62. package/lib/update/updater.d.ts +0 -19
  63. package/lib/utils/before.d.ts +0 -3
  64. package/lib/utils/coll.d.ts +0 -5
  65. package/lib/utils/db-indexes.d.ts +0 -4
  66. package/lib/utils/guard.d.ts +0 -18
  67. package/lib/utils/index.d.ts +0 -3
  68. package/lib/utils/json.d.ts +0 -9
  69. package/lib/utils/log.d.ts +0 -1
  70. package/lib/utils/map-object.d.ts +0 -41
  71. package/lib/utils/merge/combiners.d.ts +0 -6
  72. package/lib/utils/merge/index.d.ts +0 -2
  73. package/lib/utils/merge/merge.d.ts +0 -7
  74. package/lib/utils/merge/next-winner.d.ts +0 -3
  75. package/lib/utils/merge/types.d.ts +0 -19
  76. package/lib/utils/merge/utils.d.ts +0 -4
  77. package/lib/utils/tear-down.d.ts +0 -2
  78. package/lib/watch.d.ts +0 -15
  79. package/test/mongodb.d.ts +0 -9
  80. package/test/uri.d.ts +0 -1
  81. package/types/class.d.ts +0 -1
  82. package/types/extern.d.ts +0 -3
  83. package/types/global.d.ts +0 -50
  84. package/types/hkt.d.ts +0 -56
  85. package/types/index.d.ts +0 -6
  86. package/types/json.d.ts +0 -54
  87. package/types/mongo.d.ts +0 -24
  88. package/types/view.d.ts +0 -35
package/index.esm.js CHANGED
@@ -1122,6 +1122,7 @@ const createIndex = async (collection, indexSpec, options) => {
1122
1122
  await new Promise(res => setTimeout(res, 300));
1123
1123
  continue;
1124
1124
  }
1125
+ console.error('Error creating index', e);
1125
1126
  throw e;
1126
1127
  }
1127
1128
  break;
@@ -1275,18 +1276,18 @@ const $outerLookup = (p, outer) => (l) => $lookup1({
1275
1276
  left: l(emptyDelta()),
1276
1277
  }, outer);
1277
1278
 
1278
- const make = (alter) => {
1279
- return (op, args) => alter(op, args.filter(defined));
1279
+ const filterUndefined = (applyOperator) => {
1280
+ return (op, args) => applyOperator(op, args.filter(defined));
1280
1281
  };
1281
- const combine = (op, make) => (...args) => {
1282
- const q = make(op, args);
1283
- return q && { raw: field => q(x => x.raw(field)) };
1282
+ const combine = (op, applyOperatorToPreItems) => (...args) => {
1283
+ const mapToItems = applyOperatorToPreItems(op, args);
1284
+ return mapToItems && { raw: field => mapToItems(x => x.raw(field)) };
1284
1285
  };
1285
- const all = (op, x) => (x.length === 0 ? undefined : f => ({ [op]: x.map(f) }));
1286
+ const all = (op, x) => x.length === 0 ? undefined : f => ({ [op]: x.map(f) });
1286
1287
  const first = (op, x) => (x.length === 1 ? f => f(x[0]) : all(op, x));
1287
- const $and = combine('$and', make(first));
1288
- const $nor = combine('$nor', make(all));
1289
- const $or = combine('$or', make(first));
1288
+ const $and = combine('$and', filterUndefined(first));
1289
+ const $nor = combine('$nor', filterUndefined(all));
1290
+ const $or = combine('$or', filterUndefined(first));
1290
1291
 
1291
1292
  const $matchDelta = (query) => concatStages($replaceWithDelta(ite(query, root().expr(), nil)), $match_($or(root().of('after').has($ne(null)), root().of('before').has($ne(null)))));
1292
1293
 
@@ -1483,7 +1484,9 @@ const executes$1 = (view, input, streamName) => {
1483
1484
  streamNames[streamName] = hash;
1484
1485
  else if (streamNames[streamName] != hash)
1485
1486
  throw new Error(`streamName ${streamName} already used`);
1486
- const { collection, projection, hardMatch, match } = view;
1487
+ const { collection, projection, hardMatch: pre, match } = view;
1488
+ const removeNotYetSynchronizedFields = Object.values(mapExactToObject(projection, (_, k) => k.startsWith('_') ? root().of(k).has($ne(null)) : null));
1489
+ const hardMatch = $and(pre, ...removeNotYetSynchronizedFields);
1487
1490
  const job = {};
1488
1491
  const db = collection.s.db, coll = collection.collectionName;
1489
1492
  db.command({
@@ -1492,7 +1495,7 @@ const executes$1 = (view, input, streamName) => {
1492
1495
  });
1493
1496
  createIndex(collection, { touchedAt: 1 }, hardMatch
1494
1497
  ? {
1495
- partialFilterExpression: hardMatch,
1498
+ partialFilterExpression: hardMatch.raw(root()),
1496
1499
  name: 'touchedAt_hard_' + new UUID().toString('base64'),
1497
1500
  }
1498
1501
  : {}).catch(e => e.code == 86 || Promise.reject(e));
@@ -1636,7 +1639,10 @@ const executes$1 = (view, input, streamName) => {
1636
1639
  const step8 = (l) => {
1637
1640
  return nextData(l.aggResult.cursor.firstBatch)(() => l.stream
1638
1641
  .tryNext()
1639
- .catch(err => { log('restarting', err); return 1; })
1642
+ .catch(err => {
1643
+ log('restarting', err);
1644
+ return 1;
1645
+ })
1640
1646
  .then(doc => (doc ? next(step2, 'restart') : step8(l))), 'wait for change');
1641
1647
  };
1642
1648
  return stop;
package/index.js CHANGED
@@ -1124,6 +1124,7 @@ const createIndex = async (collection, indexSpec, options) => {
1124
1124
  await new Promise(res => setTimeout(res, 300));
1125
1125
  continue;
1126
1126
  }
1127
+ console.error('Error creating index', e);
1127
1128
  throw e;
1128
1129
  }
1129
1130
  break;
@@ -1277,18 +1278,18 @@ const $outerLookup = (p, outer) => (l) => $lookup1({
1277
1278
  left: l(emptyDelta()),
1278
1279
  }, outer);
1279
1280
 
1280
- const make = (alter) => {
1281
- return (op, args) => alter(op, args.filter(defined));
1281
+ const filterUndefined = (applyOperator) => {
1282
+ return (op, args) => applyOperator(op, args.filter(defined));
1282
1283
  };
1283
- const combine = (op, make) => (...args) => {
1284
- const q = make(op, args);
1285
- return q && { raw: field => q(x => x.raw(field)) };
1284
+ const combine = (op, applyOperatorToPreItems) => (...args) => {
1285
+ const mapToItems = applyOperatorToPreItems(op, args);
1286
+ return mapToItems && { raw: field => mapToItems(x => x.raw(field)) };
1286
1287
  };
1287
- const all = (op, x) => (x.length === 0 ? undefined : f => ({ [op]: x.map(f) }));
1288
+ const all = (op, x) => x.length === 0 ? undefined : f => ({ [op]: x.map(f) });
1288
1289
  const first = (op, x) => (x.length === 1 ? f => f(x[0]) : all(op, x));
1289
- const $and = combine('$and', make(first));
1290
- const $nor = combine('$nor', make(all));
1291
- const $or = combine('$or', make(first));
1290
+ const $and = combine('$and', filterUndefined(first));
1291
+ const $nor = combine('$nor', filterUndefined(all));
1292
+ const $or = combine('$or', filterUndefined(first));
1292
1293
 
1293
1294
  const $matchDelta = (query) => concatStages($replaceWithDelta(ite(query, root().expr(), nil)), $match_($or(root().of('after').has($ne(null)), root().of('before').has($ne(null)))));
1294
1295
 
@@ -1485,7 +1486,9 @@ const executes$1 = (view, input, streamName) => {
1485
1486
  streamNames[streamName] = hash;
1486
1487
  else if (streamNames[streamName] != hash)
1487
1488
  throw new Error(`streamName ${streamName} already used`);
1488
- const { collection, projection, hardMatch, match } = view;
1489
+ const { collection, projection, hardMatch: pre, match } = view;
1490
+ const removeNotYetSynchronizedFields = Object.values(mapExactToObject(projection, (_, k) => k.startsWith('_') ? root().of(k).has($ne(null)) : null));
1491
+ const hardMatch = $and(pre, ...removeNotYetSynchronizedFields);
1489
1492
  const job = {};
1490
1493
  const db = collection.s.db, coll = collection.collectionName;
1491
1494
  db.command({
@@ -1494,7 +1497,7 @@ const executes$1 = (view, input, streamName) => {
1494
1497
  });
1495
1498
  createIndex(collection, { touchedAt: 1 }, hardMatch
1496
1499
  ? {
1497
- partialFilterExpression: hardMatch,
1500
+ partialFilterExpression: hardMatch.raw(root()),
1498
1501
  name: 'touchedAt_hard_' + new mongodb.UUID().toString('base64'),
1499
1502
  }
1500
1503
  : {}).catch(e => e.code == 86 || Promise.reject(e));
@@ -1638,7 +1641,10 @@ const executes$1 = (view, input, streamName) => {
1638
1641
  const step8 = (l) => {
1639
1642
  return nextData(l.aggResult.cursor.firstBatch)(() => l.stream
1640
1643
  .tryNext()
1641
- .catch(err => { log('restarting', err); return 1; })
1644
+ .catch(err => {
1645
+ log('restarting', err);
1646
+ return 1;
1647
+ })
1642
1648
  .then(doc => (doc ? next(step2, 'restart') : step8(l))), 'wait for change');
1643
1649
  };
1644
1650
  return stop;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "module": "index.esm.js",
4
4
  "typings": "index.d.ts",
5
5
  "name": "@omegup/msync",
6
- "version": "0.0.44",
6
+ "version": "0.0.46",
7
7
  "dependencies": {
8
8
  "dayjs": "^1.11.9",
9
9
  "dotenv": "^16.3.1",
@@ -1,10 +0,0 @@
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>;
@@ -1,10 +0,0 @@
1
- import type { OPick, RWCollection } from '../../types';
2
- import type { ID, N, O, Rec, Replace, StrKey, doc } from '../../types/json';
3
- import { type ExprsExact } from '../expression/concat';
4
- import type { Delta, StreamRunnerParam, TS } from '../types';
5
- type Allowed<K extends string> = Exclude<K, keyof (TS & ID)>;
6
- type Patch<V, KK extends StrKey<V> = StrKey<V>> = ((OPick<V, Allowed<KK>> & ID) | (Rec<Allowed<KK>, N> & ID)) & TS;
7
- type TakeDoc<V, E = ID, KK extends StrKey<V> = StrKey<V>> = OPick<V, Allowed<KK>> & E;
8
- export declare const $simpleMerge: <V extends O>() => <Source extends doc, Out extends doc>(out: RWCollection<Out | Replace<Out, Patch<V>>, Out>, keys: ExprsExact<TakeDoc<V, unknown>, Source>) => StreamRunnerParam<Source, "out">;
9
- export declare const $merge: <V extends O>() => <Out extends doc, SourcePart extends doc>(out: RWCollection<Out | Replace<Out, Patch<V>>, Out>, keys: ExprsExact<TakeDoc<V, unknown>, SourcePart>) => StreamRunnerParam<Delta<SourcePart>, "out">;
10
- export {};
@@ -1,11 +0,0 @@
1
- import type { RWCollection } from '../../types';
2
- import type { ID, O, doc } from '../../types/json';
3
- import type { Del, Delta, Expr, StreamRunnerParam, 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 $insertX: <T extends doc, D extends O>(out: RWCollection<Merge<T>>, expr: Expr<T, D>, map: (x: Expr<T & ND & TS, D>) => Expr<Merge<T>, D>) => StreamRunnerParam<D, "out">;
9
- export declare const $simpleInsert: <T extends doc>(out: RWCollection<Merge<T>>) => StreamRunnerParam<T, "out">;
10
- export declare const $insert: <T extends doc>(out: RWCollection<Merge<T>>) => StreamRunnerParam<Delta<T>, "out">;
11
- export {};
@@ -1,12 +0,0 @@
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, StreamRunnerParam, 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) => StreamRunnerParam<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>>) => StreamRunnerParam<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) => StreamRunnerParam<Delta<T>, "out">;
12
- export {};
@@ -1,2 +0,0 @@
1
- export { $groupMerge, $groupId, $group } from './$group-merge';
2
- export type { Loose, Strict } from './utils/sub-merge';
@@ -1,6 +0,0 @@
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>;
@@ -1,15 +0,0 @@
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, first: boolean) => RawStages<unknown, V_Grp<VV, GG, Grp>, "out">;
15
- export {};
@@ -1,8 +0,0 @@
1
- export * from './group';
2
- export * from './lookup';
3
- export * from './match';
4
- export * from './set';
5
- export * from './unwind';
6
- export * from './$merge';
7
- export * from './$upsert';
8
- export * from './out';
@@ -1,10 +0,0 @@
1
- import type { AsLiteral, ID, N, O, Rec, doc } 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, Null extends null = never> = Delta<Rec<K1, LE> & Rec<Exclude<KK2, BA | K1>, RE | Null> & ID>;
6
- export declare const $lookupDelta: <LQ extends O, LE extends LQ & doc, RQ extends O, RE extends RQ & doc, BRB extends UBefore<RQ>, RS extends UBefore<RQ>, S, K1 extends s, KK2 extends s, Null extends null = never>({ 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, includeNull?: Null) => RawStages<unknown, Delta<LE>, Both<K1, LE, KK2, RE, Null>>;
10
- export {};
@@ -1,9 +0,0 @@
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 {};
@@ -1,16 +0,0 @@
1
- import type { AsLiteral, O, RORec, doc, notArr } from '../../../types';
2
- import { type NullToOBJ } from '../../expression/array';
3
- import { type Field } from '../../field';
4
- import type { SnapshotStream, SnapshotStreamExecutionResult } from '../../types/stream';
5
- type Params<As extends string, LQ extends O, RQ extends O, RE extends RQ, S extends notArr> = {
6
- localField: Field<LQ, S>;
7
- foreignField: Field<RQ, S>;
8
- from: SnapshotStreamExecutionResult<RQ, RE>;
9
- as: AsLiteral<As>;
10
- };
11
- 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>>;
12
- export declare const $outerLookup: <As extends string, LQ extends doc, RQ extends O, RE extends RQ & doc, S extends notArr, LNull extends null = never, RNull extends null = never>(p: Params<As, LQ, RQ, RE, S>, outer: {
13
- left?: LNull;
14
- right?: RNull;
15
- }) => <LE extends LQ>(l: SnapshotStream<LQ, LE>) => SnapshotStream<LQ | NullToOBJ<RNull>, (LE | NullToOBJ<RNull>) & RORec<As, RE | LNull>>;
16
- export {};
@@ -1,3 +0,0 @@
1
- import type { doc } from '../../../types';
2
- import type { Delta, Expr } from '../../types';
3
- export declare const $matchDelta: <T extends doc>(query: Expr<boolean, T>) => import("../../types").RawStages<unknown, Delta<T>, Delta<T>, unknown, number>;
@@ -1,3 +0,0 @@
1
- import type { doc } from '../../../types';
2
- import type { DeltaStages, Expr } from '../../types';
3
- export declare const $match: <T extends doc>(query: Expr<boolean, T>) => DeltaStages<T, T, T>;
@@ -1,2 +0,0 @@
1
- export { $matchDelta } from './$match-delta';
2
- export { $match } from './$match';
@@ -1,13 +0,0 @@
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/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>;
@@ -1,34 +0,0 @@
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>;
@@ -1,33 +0,0 @@
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 {};
@@ -1,17 +0,0 @@
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 {};
@@ -1,12 +0,0 @@
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 {};
@@ -1,5 +0,0 @@
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>;
@@ -1,6 +0,0 @@
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>;
@@ -1 +0,0 @@
1
- export { $replaceWith, $set } from './$set';
@@ -1,5 +0,0 @@
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, Null extends null = never>(k1: AsLiteral<K1>, k2: AsLiteral<K2>, k: K1 | K2 | false, includeNull?: Null) => RawStages<Delta<Rec<K1, T>>, Delta<Rec<K1, T> & Rec<K2, Arr<U>>>, Delta<Rec<K1, T> & Rec<K2, U | Null> & ID>>;
5
- export {};
@@ -1,5 +0,0 @@
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>>;
@@ -1,14 +0,0 @@
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 {};
@@ -1,36 +0,0 @@
1
- import { Collection, type Timestamp } from 'mongodb';
2
- import type { BSON, O2, O3, OPickD, RawObj, StrKey, View } from '../../types';
3
- import type { HKT, I } from '../../types/hkt';
4
- import { type DeltaPipe } from '../aggregate/prefix';
5
- import type { SnapshotStreamExecutionResult } from '../types';
6
- import type { Actions, DeltaStages, Model } from '../types/stream';
7
- type Allowed<K> = Exclude<K, 'deletedAt' | '_id'>;
8
- type AllowedPick<V extends Model, K extends StrKey<V>> = OPickD<V, Allowed<K>>;
9
- export type Teardown = {
10
- collection: string;
11
- method: string;
12
- params: unknown[];
13
- };
14
- export type TsData = {
15
- input: readonly RawObj[];
16
- finalInput: readonly RawObj[];
17
- finalInputFirst: readonly RawObj[];
18
- teardown: Teardown;
19
- };
20
- export type Last = {
21
- _id: string;
22
- ts: Timestamp;
23
- data?: TsData;
24
- };
25
- export declare const actions: {
26
- [K in keyof Actions<unknown>]: <W extends BSON.Document>(col: Collection<W>, x: Actions<W>[K]) => [Promise<unknown>, unknown[]];
27
- };
28
- export declare const streamNames: Record<string, string>;
29
- export interface SnapshotStreamHKT extends HKT<O2> {
30
- readonly out: SnapshotStreamExecutionResult<I<O2, this>[0], I<O2, this>[1]>;
31
- }
32
- export interface DeltaHKT extends HKT<O3> {
33
- readonly out: DeltaStages<I<O3, this>[0], I<O3, this>[1], I<O3, this>[2]>;
34
- }
35
- 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>;
36
- export {};
@@ -1,2 +0,0 @@
1
- export { staging } from './boot';
2
- export { from } from './boot-simpl';
@@ -1,26 +0,0 @@
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 {};
@@ -1,26 +0,0 @@
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 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 type NullToOBJ<N extends null> = N extends null ? O : N;
23
- export declare const mergeObjects: <T1, T2, D, C = unknown, N extends null = never>(exprs_0: Expr<T1 | N, D, C>, exprs_1: Expr<T2, D, C>) => Expr<(T1 | NullToOBJ<N>) & T2, D, C>;
24
- 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>;
25
- 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>;
26
- export declare const except: <T, D, C>(a: Expr<Arr<T>, D, C>, b: Expr<Arr<T>, D, C>) => Expr<Arr<T>, D, C>;
@@ -1,30 +0,0 @@
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 {};