@thisisagile/easy 10.11.0 → 10.11.5

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 { Constructor, Gateway, Id, Json, JsonValue, Key, PageList, PageOptions } from '../types';
1
+ import { Constructor, Gateway, Id, Json, JsonValue, Key, List, PageList, PageOptions } from '../types';
2
2
  import { Struct } from './Struct';
3
3
  export declare class Repo<T extends Struct> {
4
4
  protected ctor: Constructor<T>;
@@ -7,7 +7,7 @@ export declare class Repo<T extends Struct> {
7
7
  create: (item: T | Json) => T;
8
8
  all(options?: PageOptions): Promise<PageList<T>>;
9
9
  byId(id: Id): Promise<T>;
10
- byIds(...ids: Id[]): Promise<PageList<T>>;
10
+ byIds(...ids: Id[]): Promise<List<T>>;
11
11
  byKey(key: Key, options?: PageOptions): Promise<PageList<T>>;
12
12
  by(key: keyof T, value: JsonValue, options?: PageOptions): Promise<PageList<T>>;
13
13
  search(q: JsonValue, options?: PageOptions): Promise<PageList<T>>;
@@ -11,7 +11,7 @@ class Repo {
11
11
  this.create = (item) => ((0, types_1.isValidatable)(item) ? item : new this.ctor(item));
12
12
  }
13
13
  all(options) {
14
- return this.gateway.all(options).then(js => js.map(j => new this.ctor(j)));
14
+ return this.gateway.all(options).then(js => (0, types_1.asPageList)(this.ctor, js));
15
15
  }
16
16
  byId(id) {
17
17
  return this.gateway
@@ -23,13 +23,13 @@ class Repo {
23
23
  return this.gateway.byIds(...ids).then(j => (0, types_1.asList)(this.ctor, j));
24
24
  }
25
25
  byKey(key, options) {
26
- return this.gateway.by('key', key, options).then(js => js.map(j => new this.ctor(j)));
26
+ return this.gateway.by('key', key, options).then(js => (0, types_1.asPageList)(this.ctor, js));
27
27
  }
28
28
  by(key, value, options) {
29
- return this.gateway.by(key.toString(), value, options).then(js => js.map(j => new this.ctor(j)));
29
+ return this.gateway.by(key.toString(), value, options).then(js => (0, types_1.asPageList)(this.ctor, js));
30
30
  }
31
31
  search(q, options) {
32
- return this.gateway.search(q, options).then(js => js.map(j => new this.ctor(j)));
32
+ return this.gateway.search(q, options).then(js => (0, types_1.asPageList)(this.ctor, js));
33
33
  }
34
34
  exists(id) {
35
35
  return this.gateway.exists(id);
@@ -1 +1 @@
1
- {"version":3,"file":"Repo.js","sourceRoot":"","sources":["../../src/domain/Repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Repo.js","sourceRoot":"","sources":["../../src/domain/Repo.ts"],"names":[],"mappings":";;;AAAA,oCAekB;AAClB,8CAAqC;AACrC,oCAA2C;AAG3C,MAAa,IAAI;IACf,YAAsB,IAAoB,EAAmB,OAAgB;QAAvD,SAAI,GAAJ,IAAI,CAAgB;QAAmB,YAAO,GAAP,OAAO,CAAS;QAG7E,WAAM,GAAG,CAAC,IAAc,EAAK,EAAE,CAAC,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAFnF,CAAC;IAID,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAI,CAAC,OAAO;aAChB,IAAI,CAAC,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAI,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAS,CAAC,YAAY,CAAC,CAAC;aAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,GAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,GAAQ,EAAE,OAAqB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,EAAE,CAAC,GAAY,EAAE,KAAgB,EAAE,OAAqB;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,CAAY,EAAE,OAAqB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,CAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAI,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC;aACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAM,EAAE,IAAU;QACvB,OAAO,IAAI,CAAC,OAAO;aAChB,IAAI,CAAC,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAI,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAS,CAAC,YAAY,CAAC,CAAC;aAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAM,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAI,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,IAAO;QACZ,OAAO,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,IAAO;QACd,OAAO,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,EAAM,EAAE,IAAU;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;CACF;AAxED,oBAwEC"}
@@ -1,11 +1,13 @@
1
- import { Id, Json, JsonValue, Text } from '../types';
2
- export declare class Req {
1
+ import { Id, Json, JsonValue, PageOptions, Text } from '../types';
2
+ export declare class Req implements Omit<PageOptions, 'sort'> {
3
3
  readonly path: Json;
4
4
  readonly query: Json;
5
5
  readonly body: unknown;
6
6
  constructor(path: Json, query: Json, body: unknown);
7
7
  get id(): Id;
8
8
  get q(): JsonValue;
9
+ readonly skip: number;
10
+ readonly take: number;
9
11
  get: (key: Text) => any;
10
12
  }
11
13
  export declare const toReq: (req: {
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toReq = exports.Req = void 0;
4
+ const types_1 = require("../types");
4
5
  class Req {
5
6
  constructor(path = {}, query = {}, body) {
6
7
  this.path = path;
7
8
  this.query = query;
8
9
  this.body = body;
10
+ this.skip = (0, types_1.asNumber)(this.query?.skip);
11
+ this.take = (0, types_1.asNumber)(this.query?.take);
9
12
  this.get = (key) => this.path[key.toString()] ?? this.query[key.toString()];
10
13
  }
11
14
  get id() {
@@ -1 +1 @@
1
- {"version":3,"file":"Req.js","sourceRoot":"","sources":["../../src/resources/Req.ts"],"names":[],"mappings":";;;AAEA,MAAa,GAAG;IACd,YAAqB,OAAa,EAAE,EAAW,QAAc,EAAE,EAAW,IAAa;QAAlE,SAAI,GAAJ,IAAI,CAAW;QAAW,UAAK,GAAL,KAAK,CAAW;QAAW,SAAI,GAAJ,IAAI,CAAS;QAUvF,QAAG,GAAG,CAAC,GAAS,EAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAVQ,CAAC;IAE3F,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CAGF;AAZD,kBAYC;AAEM,MAAM,KAAK,GAAG,CAAC,GAA2E,EAAO,EAAE,CACxG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAc,EAAE,GAAG,CAAC,KAAa,EAAE,GAAG,CAAC,IAAY,CAAC,CAAC;AADtD,QAAA,KAAK,SACiD"}
1
+ {"version":3,"file":"Req.js","sourceRoot":"","sources":["../../src/resources/Req.ts"],"names":[],"mappings":";;;AAAA,oCAA4E;AAE5E,MAAa,GAAG;IACd,YAAqB,OAAa,EAAE,EAAW,QAAc,EAAE,EAAW,IAAa;QAAlE,SAAI,GAAJ,IAAI,CAAW;QAAW,UAAK,GAAL,KAAK,CAAW;QAAW,SAAI,GAAJ,IAAI,CAAS;QAU9E,SAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,SAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE3C,QAAG,GAAG,CAAC,GAAS,EAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAbQ,CAAC;IAE3F,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CAMF;AAfD,kBAeC;AAEM,MAAM,KAAK,GAAG,CAAC,GAA2E,EAAO,EAAE,CACxG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAc,EAAE,GAAG,CAAC,KAAa,EAAE,GAAG,CAAC,IAAY,CAAC,CAAC;AADtD,QAAA,KAAK,SACiD"}
@@ -1,11 +1,12 @@
1
1
  import { Json, JsonValue } from './Json';
2
2
  import { Id } from './Id';
3
3
  import { PageList, PageOptions } from './PageList';
4
+ import { List } from './List';
4
5
  export declare abstract class Gateway {
5
6
  all(options?: PageOptions): Promise<PageList<Json>>;
6
7
  byId(id: Id): Promise<Json | undefined>;
7
8
  by(_key: string, _value: JsonValue, _options?: PageOptions): Promise<PageList<Json>>;
8
- byIds(..._ids: Id[]): Promise<PageList<Json>>;
9
+ byIds(..._ids: Id[]): Promise<List<Json>>;
9
10
  search(q: JsonValue, options?: PageOptions): Promise<PageList<Json>>;
10
11
  exists(id: Id): Promise<boolean>;
11
12
  add(item: Json): Promise<Json>;
@@ -1 +1 @@
1
- {"version":3,"file":"Gateway.js","sourceRoot":"","sources":["../../src/types/Gateway.ts"],"names":[],"mappings":";;;AAEA,2CAAwC;AACxC,oCAAkC;AAGlC,MAAsB,OAAO;IAC3B,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,EAAE,CAAC,IAAY,EAAE,MAAiB,EAAE,QAAsB;QACxD,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,IAAU;QACjB,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,CAAY,EAAE,OAAqB;QACxC,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF;AApCD,0BAoCC"}
1
+ {"version":3,"file":"Gateway.js","sourceRoot":"","sources":["../../src/types/Gateway.ts"],"names":[],"mappings":";;;AAEA,2CAAwC;AACxC,oCAAkC;AAIlC,MAAsB,OAAO;IAC3B,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,EAAE,CAAC,IAAY,EAAE,MAAiB,EAAE,QAAsB;QACxD,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,IAAU;QACjB,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,CAAY,EAAE,OAAqB;QACxC,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAA,cAAM,EAAC,qBAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF;AApCD,0BAoCC"}
@@ -1,4 +1,5 @@
1
1
  import { List } from './List';
2
+ import { Construct } from './Constructor';
2
3
  export declare type Sort = {
3
4
  key: string;
4
5
  value: -1 | 1;
@@ -14,3 +15,4 @@ export declare type PageList<T> = List<T> & Omit<PageOptions, 'sort'> & {
14
15
  export declare const toPageList: <T>(items?: T[] | undefined, options?: (Omit<PageOptions, "sort"> & {
15
16
  total?: number | undefined;
16
17
  }) | undefined) => PageList<T>;
18
+ export declare const asPageList: <T, U>(c: Construct<T>, items?: PageList<U>) => PageList<T>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toPageList = void 0;
3
+ exports.asPageList = exports.toPageList = void 0;
4
4
  const List_1 = require("./List");
5
+ const Constructor_1 = require("./Constructor");
5
6
  const toPageList = (items, options) => {
6
7
  const list = (0, List_1.toList)(...(items ?? []));
7
8
  list.take = options?.take ?? 250;
@@ -10,4 +11,6 @@ const toPageList = (items, options) => {
10
11
  return list;
11
12
  };
12
13
  exports.toPageList = toPageList;
14
+ const asPageList = (c, items = (0, exports.toPageList)()) => (0, exports.toPageList)(items.map(i => (0, Constructor_1.ofConstruct)(c, i)), items);
15
+ exports.asPageList = asPageList;
13
16
  //# sourceMappingURL=PageList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageList.js","sourceRoot":"","sources":["../../src/types/PageList.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AAQ/B,MAAM,UAAU,GAAG,CAAI,KAAW,EAAE,OAAwD,EAAe,EAAE;IAClH,MAAM,IAAI,GAAG,IAAA,aAAM,EAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAQ,CAAC;IAChD,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC;IACjC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB"}
1
+ {"version":3,"file":"PageList.js","sourceRoot":"","sources":["../../src/types/PageList.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AACtC,+CAAuD;AAQhD,MAAM,UAAU,GAAG,CAAI,KAAW,EAAE,OAAwD,EAAe,EAAE;IAClH,MAAM,IAAI,GAAG,IAAA,aAAM,EAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAQ,CAAC;IAChD,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC;IACjC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB;AAEK,MAAM,UAAU,GAAG,CAAO,CAAe,EAAE,QAAQ,IAAA,kBAAU,GAAK,EAAe,EAAE,CAAC,IAAA,kBAAU,EAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,yBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAAtI,QAAA,UAAU,cAA4H"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "10.11.0",
3
+ "version": "10.11.5",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "10.11.0",
34
+ "@thisisagile/easy-test": "10.11.5",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.2"
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  asList,
3
+ asPageList,
3
4
  Constructor,
4
5
  Exception,
5
6
  Gateway,
@@ -8,6 +9,7 @@ import {
8
9
  Json,
9
10
  JsonValue,
10
11
  Key,
12
+ List,
11
13
  PageList,
12
14
  PageOptions,
13
15
  toJson,
@@ -23,7 +25,7 @@ export class Repo<T extends Struct> {
23
25
  create = (item: T | Json): T => (isValidatable(item) ? item : new this.ctor(item));
24
26
 
25
27
  all(options?: PageOptions): Promise<PageList<T>> {
26
- return this.gateway.all(options).then(js => js.map(j => new this.ctor(j)));
28
+ return this.gateway.all(options).then(js => asPageList(this.ctor, js));
27
29
  }
28
30
 
29
31
  byId(id: Id): Promise<T> {
@@ -33,20 +35,20 @@ export class Repo<T extends Struct> {
33
35
  .then(j => new this.ctor(j));
34
36
  }
35
37
 
36
- byIds(...ids: Id[]): Promise<PageList<T>> {
38
+ byIds(...ids: Id[]): Promise<List<T>> {
37
39
  return this.gateway.byIds(...ids).then(j => asList(this.ctor, j));
38
40
  }
39
41
 
40
42
  byKey(key: Key, options?: PageOptions): Promise<PageList<T>> {
41
- return this.gateway.by('key', key, options).then(js => js.map(j => new this.ctor(j)));
43
+ return this.gateway.by('key', key, options).then(js => asPageList(this.ctor, js));
42
44
  }
43
45
 
44
46
  by(key: keyof T, value: JsonValue, options?: PageOptions): Promise<PageList<T>> {
45
- return this.gateway.by(key.toString(), value, options).then(js => js.map(j => new this.ctor(j)));
47
+ return this.gateway.by(key.toString(), value, options).then(js => asPageList(this.ctor, js));
46
48
  }
47
49
 
48
50
  search(q: JsonValue, options?: PageOptions): Promise<PageList<T>> {
49
- return this.gateway.search(q, options).then(js => js.map(j => new this.ctor(j)));
51
+ return this.gateway.search(q, options).then(js => asPageList(this.ctor, js));
50
52
  }
51
53
 
52
54
  exists(id: Id): Promise<boolean> {
@@ -1,6 +1,6 @@
1
- import { Id, Json, JsonValue, Text } from '../types';
1
+ import { asNumber, Id, Json, JsonValue, PageOptions, Text } from '../types';
2
2
 
3
- export class Req {
3
+ export class Req implements Omit<PageOptions, 'sort'> {
4
4
  constructor(readonly path: Json = {}, readonly query: Json = {}, readonly body: unknown) {}
5
5
 
6
6
  get id(): Id {
@@ -11,6 +11,9 @@ export class Req {
11
11
  return this.get('q');
12
12
  }
13
13
 
14
+ readonly skip = asNumber(this.query?.skip);
15
+ readonly take = asNumber(this.query?.take);
16
+
14
17
  get = (key: Text): any => this.path[key.toString()] ?? this.query[key.toString()];
15
18
  }
16
19
 
@@ -3,6 +3,7 @@ import { Id } from './Id';
3
3
  import { Exception } from './Exception';
4
4
  import { reject } from '../utils';
5
5
  import { PageList, PageOptions } from './PageList';
6
+ import { List } from './List';
6
7
 
7
8
  export abstract class Gateway {
8
9
  all(options?: PageOptions): Promise<PageList<Json>> {
@@ -17,7 +18,7 @@ export abstract class Gateway {
17
18
  return reject(Exception.IsNotImplemented);
18
19
  }
19
20
 
20
- byIds(..._ids: Id[]): Promise<PageList<Json>> {
21
+ byIds(..._ids: Id[]): Promise<List<Json>> {
21
22
  return reject(Exception.IsNotImplemented);
22
23
  }
23
24
 
@@ -1,4 +1,5 @@
1
1
  import { List, toList } from './List';
2
+ import { Construct, ofConstruct } from './Constructor';
2
3
 
3
4
  export type Sort = { key: string; value: -1 | 1 };
4
5
 
@@ -13,3 +14,5 @@ export const toPageList = <T>(items?: T[], options?: Omit<PageOptions, 'sort'> &
13
14
  list.total = options?.total;
14
15
  return list;
15
16
  };
17
+
18
+ export const asPageList = <T, U>(c: Construct<T>, items = toPageList<U>()): PageList<T> => toPageList<T>(items.map(i => ofConstruct(c, i)), items);