@thisisagile/easy-mongo 10.5.25 → 10.6.3

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.
@@ -1,4 +1,4 @@
1
- import { Condition, Database, Field, Get, Json, LogicalCondition, MapOptions, Mapper, Mapping, PropertyOptions, SortCondition, Text } from '@thisisagile/easy';
1
+ import { Condition, Database, Field, Get, Json, LogicalCondition, MapOptions, Mapper, Mapping, PropertyOptions, Sort, Text } from '@thisisagile/easy';
2
2
  import { MongoProvider } from './MongoProvider';
3
3
  export declare class Collection extends Mapper {
4
4
  protected readonly map: {
@@ -22,6 +22,6 @@ export declare class Collection extends Mapper {
22
22
  group: (...conditions: Get<Condition, this>[]) => Json;
23
23
  google: (value: unknown) => Condition;
24
24
  search: (key: Text) => Field;
25
- sort: (...conditions: SortCondition[]) => Json;
25
+ sort: (...conditions: Sort[]) => Json;
26
26
  out(to?: Json): Json;
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":";;;AAAA,4CAkB2B;AAC3B,mCAAsC;AACtC,mDAAgD;AAEhD,MAAa,UAAW,SAAQ,aAAM;IAOpC,YAAY,UAAsB,EAAE,SAAS,EAAE,QAAQ,EAAE;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAPE,QAAG,GAAG;YACvB,GAAG,eAAQ;YACX,KAAK,EAAE,CAAc,IAAY,EAAE,OAA4B,EAAS,EAAE,CAAC,IAAI,YAAK,CAAC,IAAI,EAAE,OAAO,CAAC;SACpG,CAAC;QACO,OAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAM,EAAE,CAAY,CAAC;QAchE,UAAK,GAAG,CAAC,GAAG,UAAkC,EAAQ,EAAE,CACtD,IAAI,uBAAgB,CAClB,KAAK,EACL,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,YAAK,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CACpC,CAAC,MAAM,EAAE,CAAC;QAEb,UAAK,GAAG,CAAC,SAAkD,EAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAA,YAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEpH,UAAK,GAAG,CAAC,GAAG,UAAkC,EAAQ,EAAE,CACtD,IAAI,uBAAgB,CAClB,OAAO,EACP,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,YAAK,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CACpC,CAAC,MAAM,EAAE,CAAC;QAEb,WAAM,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAA,kBAAW,EAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE9E,WAAM,GAAG,CAAC,GAAS,EAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAA,eAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,SAAI,GAAG,CAAC,GAAG,UAA2B,EAAQ,EAAE,CAC9C,UAAU,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,CAAC,EAAE,EAAE;YAC/B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IAhCT,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,eAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IA0BD,GAAG,CAAC,KAAW,EAAE;QACf,OAAO,IAAA,mBAAW,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;CACF;AA9CD,gCA8CC"}
1
+ {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":";;;AAAA,4CAkB2B;AAC3B,mCAAsC;AACtC,mDAAgD;AAEhD,MAAa,UAAW,SAAQ,aAAM;IAOpC,YAAY,UAAsB,EAAE,SAAS,EAAE,QAAQ,EAAE;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAPE,QAAG,GAAG;YACvB,GAAG,eAAQ;YACX,KAAK,EAAE,CAAc,IAAY,EAAE,OAA4B,EAAS,EAAE,CAAC,IAAI,YAAK,CAAC,IAAI,EAAE,OAAO,CAAC;SACpG,CAAC;QACO,OAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAM,EAAE,CAAY,CAAC;QAchE,UAAK,GAAG,CAAC,GAAG,UAAkC,EAAQ,EAAE,CACtD,IAAI,uBAAgB,CAClB,KAAK,EACL,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,YAAK,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CACpC,CAAC,MAAM,EAAE,CAAC;QAEb,UAAK,GAAG,CAAC,SAAkD,EAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAA,YAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEpH,UAAK,GAAG,CAAC,GAAG,UAAkC,EAAQ,EAAE,CACtD,IAAI,uBAAgB,CAClB,OAAO,EACP,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,YAAK,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CACpC,CAAC,MAAM,EAAE,CAAC;QAEb,WAAM,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAA,kBAAW,EAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE9E,WAAM,GAAG,CAAC,GAAS,EAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAA,eAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,SAAI,GAAG,CAAC,GAAG,UAAkB,EAAQ,EAAE,CACrC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,CAAC,EAAE,EAAE;YAC/B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IAhCT,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,eAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IA0BD,GAAG,CAAC,KAAW,EAAE;QACf,OAAO,IAAA,mBAAW,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;CACF;AA9CD,gCA8CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MongoGateway.js","sourceRoot":"","sources":["../src/MongoGateway.ts"],"names":[],"mappings":";;;AACA,4CAW2B;AAG3B,MAAa,YAAY;IACvB,YAAqB,UAAsB,EAAW,WAA0B,UAAU,CAAC,QAAQ;QAA9E,eAAU,GAAV,UAAU,CAAY;QAAW,aAAQ,GAAR,QAAQ,CAAqC;IACnG,CAAC;IAED,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,EAAE,CAAC,GAAW,EAAE,KAAgB,EAAE,OAAqB;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,GAAG,GAAS;QAChB,OAAO,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,UAAU,CAAC,EAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,CAA2C,EAAE,OAAqB;QACrE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,CAAC,CAAY,EAAE,OAAqB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AA3CD,oCA2CC"}
1
+ {"version":3,"file":"MongoGateway.js","sourceRoot":"","sources":["../src/MongoGateway.ts"],"names":[],"mappings":";;;AACA,4CAA0J;AAG1J,MAAa,YAAY;IACvB,YAAqB,UAAsB,EAAW,WAA0B,UAAU,CAAC,QAAQ;QAA9E,eAAU,GAAV,UAAU,CAAY;QAAW,aAAQ,GAAR,QAAQ,CAAqC;IAAG,CAAC;IAEvG,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,EAAE,CAAC,GAAW,EAAE,KAAgB,EAAE,OAAqB;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,GAAG,GAAS;QAChB,OAAO,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,UAAU,CAAC,EAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,CAA2C,EAAE,OAAqB;QACrE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,CAAC,CAAY,EAAE,OAAqB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AA1CD,oCA0CC"}
@@ -1,23 +1,20 @@
1
- import { Condition, Database, Field, Id, Json, JsonValue, LogicalCondition, PageList, PageOptions, SortCondition } from '@thisisagile/easy';
1
+ import { Condition, Database, Field, Id, Json, JsonValue, LogicalCondition, PageList, PageOptions } from '@thisisagile/easy';
2
2
  import { Collection as MongoCollection, Filter as MongoFilter, MongoClient } from 'mongodb';
3
3
  import { Collection } from './Collection';
4
- export declare type FindOptions = PageOptions & {
5
- sort?: SortCondition[];
6
- };
7
4
  export declare type Filter<T> = MongoFilter<T>;
8
5
  export declare class MongoProvider {
9
6
  readonly coll: Collection;
10
7
  private client?;
8
+ aggregate: (qs: Filter<any>[]) => Promise<PageList<Json>>;
11
9
  constructor(coll: Collection, client?: Promise<MongoClient> | undefined);
12
10
  static client(db: Database): Promise<MongoClient>;
13
11
  cluster(): Promise<MongoClient>;
14
12
  toMongoJson(query: Condition | LogicalCondition | Filter<any>): Json;
15
- find(query: Condition | LogicalCondition | Filter<any>, options?: FindOptions): Promise<PageList<Json>>;
16
- all(options?: FindOptions): Promise<PageList<Json>>;
13
+ find(query: Condition | LogicalCondition | Filter<any>, options?: PageOptions): Promise<PageList<Json>>;
14
+ all(options?: PageOptions): Promise<PageList<Json>>;
17
15
  byId(id: Id): Promise<Json>;
18
- by(key: string, value: JsonValue, options?: FindOptions): Promise<PageList<Json>>;
19
- group(qs: Filter<any>[]): Promise<Json[]>;
20
- aggregate: (qs: Filter<any>[]) => Promise<Json[]>;
16
+ by(key: string, value: JsonValue, options?: PageOptions): Promise<PageList<Json>>;
17
+ group(qs: Filter<any>[]): Promise<PageList<Json>>;
21
18
  add(item: Json): Promise<Json>;
22
19
  update(item: Json): Promise<Json>;
23
20
  remove(id: Id): Promise<boolean>;
@@ -4,11 +4,13 @@ exports.MongoProvider = void 0;
4
4
  const easy_1 = require("@thisisagile/easy");
5
5
  const mongodb_1 = require("mongodb");
6
6
  const Utils_1 = require("./Utils");
7
- const omitId = (j) => {
8
- if ((0, easy_1.isDefined)(j))
9
- delete j._id;
10
- return j;
11
- };
7
+ const omitId = (j) => easy_1.json.delete(j, '_id');
8
+ const toFindOptions = (coll, po) => ({
9
+ limit: po?.take ?? 250,
10
+ skip: po?.skip,
11
+ sort: coll.sort(...(po?.sort ?? [])),
12
+ total: (0, easy_1.isDefined)(po?.skip) || (0, easy_1.isDefined)(po?.take),
13
+ });
12
14
  class MongoProvider {
13
15
  constructor(coll, client) {
14
16
  this.coll = coll;
@@ -37,14 +39,11 @@ class MongoProvider {
37
39
  return (0, Utils_1.toMongoType)((0, easy_1.asJson)(query));
38
40
  }
39
41
  find(query, options) {
40
- return (0, easy_1.resolve)(easy_1.json.merge({ take: 250 }, options))
41
- .then(o => easy_1.json.merge(o, { limit: o.take, sort: this.coll.sort(...(options?.sort ?? [])) }))
42
- .then(o => easy_1.json.omit(o, 'take'))
43
- .then(o => (0, easy_1.tuple2)(this.collection(), o))
44
- .then(([c, o]) => c.find(this.toMongoJson(query), o))
42
+ return this.collection()
43
+ .then(c => c.find(this.toMongoJson(query), toFindOptions(this.coll, options)))
45
44
  .then(res => res.toArray())
46
45
  .then(res => res.map(i => omitId(i)))
47
- .then(res => (0, easy_1.toList)(res));
46
+ .then(res => (0, easy_1.toPageList)(res, options));
48
47
  }
49
48
  all(options) {
50
49
  return this.find({}, options);
@@ -60,7 +59,8 @@ class MongoProvider {
60
59
  group(qs) {
61
60
  return this.collection()
62
61
  .then(c => c.aggregate(qs.map(q => this.toMongoJson(q))))
63
- .then(res => res.toArray());
62
+ .then(res => res.toArray())
63
+ .then(res => (0, easy_1.toPageList)(res));
64
64
  }
65
65
  add(item) {
66
66
  return this.collection()
@@ -1 +1 @@
1
- {"version":3,"file":"MongoProvider.js","sourceRoot":"","sources":["../src/MongoProvider.ts"],"names":[],"mappings":";;;AAAA,4CAoB2B;AAC3B,qCAA4F;AAE5F,mCAAsC;AAEtC,MAAM,MAAM,GAAG,CAAC,CAAO,EAAQ,EAAE;IAC/B,IAAI,IAAA,gBAAS,EAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC;IAC/B,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAMF,MAAa,aAAa;IACxB,YAAqB,IAAgB,EAAU,MAA6B;QAAvD,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAuB;QA0D5E,cAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IAzDvB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAY;QACxB,OAAO,IAAA,WAAI,EAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;aAC7B,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAS,CAAC,UAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;aAC1F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,qBAAW,CAAC,CAAC,EAAE;YAC5B,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAA,eAAQ,EAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;gBACpC,QAAQ,EAAE,IAAA,eAAQ,EAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;aACzC;SACF,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO;QACL,OAAO,OAAO,CAAC,OAAO,EAAE;aACrB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAC,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,OAAO,IAAA,aAAM,EAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,KAAiD;QAC3D,OAAO,IAAA,mBAAW,EAAC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,KAAiD,EAAE,OAAqB;QAC3E,OAAO,IAAA,cAAO,EAAC,WAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;aAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,aAAM,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;aACpD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAA,eAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAS,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,EAAE,CAAC,GAAW,EAAE,KAAgB,EAAE,OAAqB;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,EAAiB;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAID,GAAG,CAAC,IAAU;QACZ,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACjF,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAkD;QACtD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,WAAW,CAAC,KAAmB,EAAE,MAAM,GAAG,IAAI;QAC5C,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,kBAAkB,CAAC,KAAmB,EAAE,MAAkD,EAAE,MAAM,GAAG,IAAI;QACvG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE;YACtD,uBAAuB,EAAE,IAAA,mBAAW,EAAC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC;YACpD,MAAM;YACN,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,GAAG,MAAe;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,EAAE;aAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAClC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AA1GD,sCA0GC"}
1
+ {"version":3,"file":"MongoProvider.js","sourceRoot":"","sources":["../src/MongoProvider.ts"],"names":[],"mappings":"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"}
package/dist/Utils.js CHANGED
@@ -6,7 +6,9 @@ const toMongoType = (input) => (0, easy_1.choose)(input)
6
6
  .type(easy_1.isIsoDateString, i => new easy_1.DateTime(i).toDate())
7
7
  .type(easy_1.isArray, a => a.map((i) => (0, exports.toMongoType)(i)))
8
8
  .type(easy_1.isDate, d => d)
9
- .type(easy_1.isObject, o => Object.fromEntries((0, easy_1.meta)(o).entries().map(([k, i]) => [k, (0, exports.toMongoType)(i)])))
9
+ .type(easy_1.isObject, o => Object.fromEntries((0, easy_1.meta)(o)
10
+ .entries()
11
+ .map(([k, i]) => [k, (0, exports.toMongoType)(i)])))
10
12
  .else(input);
11
13
  exports.toMongoType = toMongoType;
12
14
  //# sourceMappingURL=Utils.js.map
package/dist/Utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;;AAAA,4CAA6G;AAEtG,MAAM,WAAW,GAAG,CAAC,KAAc,EAAQ,EAAE,CAClD,IAAA,aAAM,EAAC,KAAK,CAAC;KACZ,IAAI,CAAC,sBAAe,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,eAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAS,CAAC;KAC3D,IAAI,CAAC,cAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,aAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACpB,IAAI,CAAC,eAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAA,WAAI,EAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/F,IAAI,CAAC,KAAK,CAAC,CAAC;AANF,QAAA,WAAW,eAMT"}
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;;AAAA,4CAA6G;AAEtG,MAAM,WAAW,GAAG,CAAC,KAAc,EAAQ,EAAE,CAClD,IAAA,aAAM,EAAC,KAAK,CAAC;KACV,IAAI,CAAC,sBAAe,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,eAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAS,CAAC;KAC3D,IAAI,CAAC,cAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,aAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACpB,IAAI,CAAC,eAAQ,EAAE,CAAC,CAAC,EAAE,CAClB,MAAM,CAAC,WAAW,CAChB,IAAA,WAAI,EAAC,CAAC,CAAC;KACJ,OAAO,EAAE;KACT,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CACxC,CACF;KACA,IAAI,CAAC,KAAK,CAAC,CAAC;AAZJ,QAAA,WAAW,eAYP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-mongo",
3
- "version": "10.5.25",
3
+ "version": "10.6.3",
4
4
  "description": "Add support for MongoDB",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,10 +31,10 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "10.5.25"
34
+ "@thisisagile/easy-test": "10.6.3"
35
35
  },
36
36
  "dependencies": {
37
- "@thisisagile/easy": "10.5.25",
37
+ "@thisisagile/easy": "10.6.3",
38
38
  "mongodb": "^4.5.0"
39
39
  }
40
40
  }
package/src/Collection.ts CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  mappings,
13
13
  ofGet,
14
14
  PropertyOptions,
15
- SortCondition,
15
+ Sort,
16
16
  Text,
17
17
  toCondition,
18
18
  toUuid,
@@ -42,7 +42,7 @@ export class Collection extends Mapper {
42
42
  where = (...conditions: Get<Condition, this>[]): Json =>
43
43
  new LogicalCondition(
44
44
  'and',
45
- conditions.map(c => ofGet(c, this))
45
+ conditions.map(c => ofGet(c, this)),
46
46
  ).toJSON();
47
47
 
48
48
  match = (condition: Get<Condition | LogicalCondition, this>): Json => ({ $match: ofGet(condition, this).toJSON() });
@@ -50,14 +50,14 @@ export class Collection extends Mapper {
50
50
  group = (...conditions: Get<Condition, this>[]): Json =>
51
51
  new LogicalCondition(
52
52
  'group',
53
- conditions.map(c => ofGet(c, this))
53
+ conditions.map(c => ofGet(c, this)),
54
54
  ).toJSON();
55
55
 
56
56
  google = (value: unknown): Condition => toCondition('$text', 'search', value);
57
57
 
58
58
  search = (key: Text): Field => this.map.field(asString(key));
59
59
 
60
- sort = (...conditions: SortCondition[]): Json =>
60
+ sort = (...conditions: Sort[]): Json =>
61
61
  conditions.reduce((cs: any, c) => {
62
62
  cs[c.key] = c.value;
63
63
  return cs;
@@ -1,21 +1,9 @@
1
1
  import { MongoProvider } from './MongoProvider';
2
- import {
3
- asJson,
4
- Condition,
5
- Field,
6
- Gateway,
7
- Id,
8
- ifDefined,
9
- isDefined,
10
- Json,
11
- JsonValue,
12
- LogicalCondition, PageList, PageOptions,
13
- } from '@thisisagile/easy';
2
+ import { asJson, Condition, Field, Gateway, Id, ifDefined, isDefined, Json, JsonValue, LogicalCondition, PageList, PageOptions } from '@thisisagile/easy';
14
3
  import { Collection } from './Collection';
15
4
 
16
5
  export class MongoGateway implements Gateway {
17
- constructor(readonly collection: Collection, readonly provider: MongoProvider = collection.provider) {
18
- }
6
+ constructor(readonly collection: Collection, readonly provider: MongoProvider = collection.provider) {}
19
7
 
20
8
  all(options?: PageOptions): Promise<PageList<Json>> {
21
9
  return this.provider.all(options).then(l => l.map(j => this.collection.in(j)));
@@ -6,45 +6,54 @@ import {
6
6
  Exception,
7
7
  Field,
8
8
  Id,
9
- isDefined,
10
- json,
9
+ isDefined, json,
11
10
  Json,
12
11
  JsonValue,
13
12
  LogicalCondition,
14
13
  PageList,
15
14
  PageOptions,
16
15
  reject,
17
- resolve,
18
- SortCondition,
19
- toList, tuple2,
16
+ toPageList,
20
17
  when,
21
18
  } from '@thisisagile/easy';
22
- import { Collection as MongoCollection, Filter as MongoFilter, MongoClient } from 'mongodb';
19
+ import { Collection as MongoCollection, Filter as MongoFilter, FindOptions, MongoClient } from 'mongodb';
23
20
  import { Collection } from './Collection';
24
21
  import { toMongoType } from './Utils';
25
22
 
26
- const omitId = (j: Json): Json => {
27
- if (isDefined(j)) delete j._id;
28
- return j;
29
- };
23
+ const omitId = (j: Json): Json => json.delete(j, '_id');
24
+ //
25
+ // {
26
+ // if (isDefined(j)) delete j._id;
27
+ // return j;
28
+ // };
30
29
 
31
- export type FindOptions = PageOptions & { sort?: SortCondition[] };
30
+ const toFindOptions = (coll: Collection, po?: PageOptions): FindOptions & { total: boolean } => ({
31
+ limit: po?.take ?? 250,
32
+ skip: po?.skip,
33
+ sort: coll.sort(...(po?.sort ?? [])) as any,
34
+ total: isDefined(po?.skip) || isDefined(po?.take),
35
+ });
32
36
 
33
37
  export type Filter<T> = MongoFilter<T>;
34
38
 
35
39
  export class MongoProvider {
40
+ aggregate = this.group;
41
+
36
42
  constructor(readonly coll: Collection, private client?: Promise<MongoClient>) {
37
43
  }
38
44
 
39
45
  static client(db: Database): Promise<MongoClient> {
40
46
  return when(db.options?.cluster)
41
47
  .not.isDefined.reject(Exception.IsNotValid.because('Missing cluster in database options.'))
42
- .then(u => new MongoClient(u, {
43
- auth: {
44
- username: asString(db.options?.user),
45
- password: asString(db.options?.password),
46
- },
47
- }));
48
+ .then(
49
+ u =>
50
+ new MongoClient(u, {
51
+ auth: {
52
+ username: asString(db.options?.user),
53
+ password: asString(db.options?.password),
54
+ },
55
+ }),
56
+ );
48
57
  }
49
58
 
50
59
  cluster(): Promise<MongoClient> {
@@ -60,18 +69,15 @@ export class MongoProvider {
60
69
  return toMongoType(asJson(query));
61
70
  }
62
71
 
63
- find(query: Condition | LogicalCondition | Filter<any>, options?: FindOptions): Promise<PageList<Json>> {
64
- return resolve(json.merge({ take: 250 }, options))
65
- .then(o => json.merge(o, { limit: o.take, sort: this.coll.sort(...(options?.sort ?? [])) }))
66
- .then(o => json.omit(o, 'take'))
67
- .then(o => tuple2(this.collection(), o))
68
- .then(([c, o]) => c.find(this.toMongoJson(query), o))
72
+ find(query: Condition | LogicalCondition | Filter<any>, options?: PageOptions): Promise<PageList<Json>> {
73
+ return this.collection()
74
+ .then(c => c.find(this.toMongoJson(query), toFindOptions(this.coll, options)))
69
75
  .then(res => res.toArray())
70
76
  .then(res => res.map(i => omitId(i)))
71
- .then(res => toList(res));
77
+ .then(res => toPageList(res, options));
72
78
  }
73
79
 
74
- all(options?: FindOptions): Promise<PageList<Json>> {
80
+ all(options?: PageOptions): Promise<PageList<Json>> {
75
81
  return this.find({}, options);
76
82
  }
77
83
 
@@ -81,18 +87,17 @@ export class MongoProvider {
81
87
  .then(i => omitId(i as Json));
82
88
  }
83
89
 
84
- by(key: string, value: JsonValue, options?: FindOptions): Promise<PageList<Json>> {
90
+ by(key: string, value: JsonValue, options?: PageOptions): Promise<PageList<Json>> {
85
91
  return this.find({ [key]: asString(value) }, options);
86
92
  }
87
93
 
88
- group(qs: Filter<any>[]): Promise<Json[]> {
94
+ group(qs: Filter<any>[]): Promise<PageList<Json>> {
89
95
  return this.collection()
90
96
  .then(c => c.aggregate(qs.map(q => this.toMongoJson(q))))
91
- .then(res => res.toArray());
97
+ .then(res => res.toArray())
98
+ .then(res => toPageList( res ));
92
99
  }
93
100
 
94
- aggregate = this.group;
95
-
96
101
  add(item: Json): Promise<Json> {
97
102
  return this.collection()
98
103
  .then(c => c.insertOne(omitId(item)))
@@ -120,11 +125,13 @@ export class MongoProvider {
120
125
  }
121
126
 
122
127
  createPartialIndex(field: string | any, filter: Condition | LogicalCondition | Filter<any>, unique = true): Promise<string> {
123
- return this.collection().then(c => c.createIndex(field, {
124
- partialFilterExpression: toMongoType(asJson(filter)),
125
- unique,
126
- writeConcern: { w: 1 },
127
- }));
128
+ return this.collection().then(c =>
129
+ c.createIndex(field, {
130
+ partialFilterExpression: toMongoType(asJson(filter)),
131
+ unique,
132
+ writeConcern: { w: 1 },
133
+ }),
134
+ );
128
135
  }
129
136
 
130
137
  createTextIndexes(...fields: Field[]): Promise<string> {
package/src/Utils.ts CHANGED
@@ -2,8 +2,14 @@ import { choose, DateTime, isArray, isDate, isIsoDateString, isObject, Json, met
2
2
 
3
3
  export const toMongoType = (input: unknown): Json =>
4
4
  choose(input)
5
- .type(isIsoDateString, i => new DateTime(i).toDate() as any)
6
- .type(isArray, a => a.map((i: any) => toMongoType(i)))
7
- .type(isDate, d => d)
8
- .type(isObject, o => Object.fromEntries(meta(o).entries().map(([k, i]) => [k, toMongoType(i)])))
9
- .else(input);
5
+ .type(isIsoDateString, i => new DateTime(i).toDate() as any)
6
+ .type(isArray, a => a.map((i: any) => toMongoType(i)))
7
+ .type(isDate, d => d)
8
+ .type(isObject, o =>
9
+ Object.fromEntries(
10
+ meta(o)
11
+ .entries()
12
+ .map(([k, i]) => [k, toMongoType(i)])
13
+ )
14
+ )
15
+ .else(input);