@thisisagile/easy 17.19.0 → 17.20.1

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.
@@ -0,0 +1,60 @@
1
+ import {
2
+ ApiGateway
3
+ } from "./chunk-3MDXTFJG.mjs";
4
+ import {
5
+ Api
6
+ } from "./chunk-RTTVCEWR.mjs";
7
+ import {
8
+ HttpStatus
9
+ } from "./chunk-H27UMLDT.mjs";
10
+ import {
11
+ toArray
12
+ } from "./chunk-CO2AFYVD.mjs";
13
+ import {
14
+ isDefined
15
+ } from "./chunk-DEJ7A5PY.mjs";
16
+
17
+ // src/services/RouteGateway.ts
18
+ var RouteGateway = class extends ApiGateway {
19
+ constructor(route, routeId, api = new Api()) {
20
+ super(api);
21
+ this.route = route;
22
+ this.routeId = routeId;
23
+ this.api = api;
24
+ }
25
+ all(options) {
26
+ return this.get(this.route().expand(options ?? {}), options);
27
+ }
28
+ byId(id) {
29
+ return this.getOne(this.routeId().id(id));
30
+ }
31
+ byIds(...ids) {
32
+ return this.get(this.route().ids(toArray(...ids)));
33
+ }
34
+ search(q, options) {
35
+ return this.get(this.route().expand({ ...options, q }));
36
+ }
37
+ exists(id) {
38
+ return this.byId(id).then((r) => isDefined(r)).catch((r) => HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r));
39
+ }
40
+ add(item) {
41
+ return this.post(this.route(), item);
42
+ }
43
+ filter(options) {
44
+ return this.postSearch(this.route().expand(options ?? {}));
45
+ }
46
+ update(item) {
47
+ return this.patch(this.routeId().id(item.id), item);
48
+ }
49
+ upsert(item) {
50
+ return this.put(this.routeId().id(item.id), item);
51
+ }
52
+ remove(id) {
53
+ return this.delete(this.routeId().id(id));
54
+ }
55
+ };
56
+
57
+ export {
58
+ RouteGateway
59
+ };
60
+ //# sourceMappingURL=chunk-S5I6XCJK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/RouteGateway.ts"],"sourcesContent":["import { Api } from './Api';\nimport { ApiGateway } from './ApiGateway';\nimport { Func } from '../types/Func';\nimport { Uri, UriExpandProps } from '../types/Uri';\nimport { PageList } from '../types/PageList';\nimport { Json, JsonValue } from '../types/Json';\nimport { Id } from '../types/Id';\nimport { Optional } from '../types/Types';\nimport { List } from '../types/List';\nimport { toArray } from '../types/Array';\nimport { HttpStatus } from '../http/HttpStatus';\nimport { isDefined } from '../types/Is';\n\nexport class RouteGateway<Props extends UriExpandProps = UriExpandProps> extends ApiGateway {\n constructor(\n readonly route: Func<Uri<Props>>,\n readonly routeId: Func<Uri<Props>>,\n readonly api: Api = new Api()\n ) {\n super(api);\n }\n\n all(options?: Props): Promise<PageList<Json>> {\n return this.get(this.route().expand(options ?? {}) as Uri, options);\n }\n\n byId(id: Id): Promise<Optional<Json>> {\n return this.getOne(this.routeId().id(id) as Uri);\n }\n\n byIds(...ids: Id[]): Promise<List<Json>> {\n return this.get(this.route().ids(toArray(...ids)) as Uri);\n }\n\n search(q: JsonValue, options?: Props): Promise<PageList<Json>> {\n return this.get(this.route().expand({ ...options, q } as Props) as Uri);\n }\n\n exists(id: Id): Promise<boolean> {\n return this.byId(id)\n .then(r => isDefined(r))\n .catch(r => (HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r)));\n }\n\n add(item: Json): Promise<Json> {\n return this.post(this.route() as Uri, item);\n }\n\n filter(options?: Props): Promise<PageList<Json>> {\n return this.postSearch(this.route().expand(options ?? {}) as Uri);\n }\n\n update(item: Json): Promise<Json> {\n return this.patch(this.routeId().id(item.id) as Uri, item);\n }\n\n upsert(item: Json): Promise<Json> {\n return this.put(this.routeId().id(item.id) as Uri, item);\n }\n\n remove(id: Id): Promise<boolean> {\n return this.delete(this.routeId().id(id) as Uri);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAaO,IAAM,eAAN,cAA0E,WAAW;AAAA,EAC1F,YACW,OACA,SACA,MAAW,IAAI,IAAI,GAC5B;AACA,UAAM,GAAG;AAJA;AACA;AACA;AAAA,EAGX;AAAA,EAEA,IAAI,SAA0C;AAC5C,WAAO,KAAK,IAAI,KAAK,MAAM,EAAE,OAAO,WAAW,CAAC,CAAC,GAAU,OAAO;AAAA,EACpE;AAAA,EAEA,KAAK,IAAiC;AACpC,WAAO,KAAK,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAE,CAAQ;AAAA,EACjD;AAAA,EAEA,SAAS,KAAgC;AACvC,WAAO,KAAK,IAAI,KAAK,MAAM,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAQ;AAAA,EAC1D;AAAA,EAEA,OAAO,GAAc,SAA0C;AAC7D,WAAO,KAAK,IAAI,KAAK,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAU,CAAQ;AAAA,EACxE;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,KAAK,KAAK,EAAE,EAChB,KAAK,OAAK,UAAU,CAAC,CAAC,EACtB,MAAM,OAAM,WAAW,SAAS,OAAO,EAAE,MAAM,IAAI,QAAQ,QAAQ,OAAO,CAAC,CAAE;AAAA,EAClF;AAAA,EAEA,IAAI,MAA2B;AAC7B,WAAO,KAAK,KAAK,KAAK,MAAM,GAAU,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO,SAA0C;AAC/C,WAAO,KAAK,WAAW,KAAK,MAAM,EAAE,OAAO,WAAW,CAAC,CAAC,CAAQ;AAAA,EAClE;AAAA,EAEA,OAAO,MAA2B;AAChC,WAAO,KAAK,MAAM,KAAK,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAU,IAAI;AAAA,EAC3D;AAAA,EAEA,OAAO,MAA2B;AAChC,WAAO,KAAK,IAAI,KAAK,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAU,IAAI;AAAA,EACzD;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,KAAK,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAE,CAAQ;AAAA,EACjD;AACF;","names":[]}
@@ -48,4 +48,4 @@ var Repository = class {
48
48
  export {
49
49
  Repository
50
50
  };
51
- //# sourceMappingURL=chunk-ZEZBMEWP.mjs.map
51
+ //# sourceMappingURL=chunk-WVYZIPWC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/Repository.ts"],"sourcesContent":["import { FetchOptions } from './Gateway';\nimport { PageList } from './PageList';\nimport { Exception } from './Exception';\nimport { reject } from '../utils/Promise';\nimport { Id, Key } from './Id';\nimport { List } from './List';\nimport { Json, JsonValue } from './Json';\n\nexport class Repository<T, Options = FetchOptions> {\n all(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byId(id: Id): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n exists(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n add(t: Partial<T> | Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n update(id: Id, json: Partial<T> | Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n remove(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n upsert(id: Id, item: Partial<T> | Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n}\n"],"mappings":";;;;;;;;AAQO,IAAM,aAAN,MAA4C;AAAA,EACjD,IAAI,SAAyC;AAC3C,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,KAAK,IAAoB;AACvB,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,SAAS,KAA6B;AACpC,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,MAAM,KAAU,SAAyC;AACvD,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,GAAG,KAAc,OAAkB,SAAyC;AAC1E,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,GAAc,SAAyC;AAC5D,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,SAAyC;AAC9C,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,IAAI,GAAkC;AACpC,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAAQ,MAAqC;AAClD,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAAQ,MAAqC;AAClD,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Repository
3
- } from "../chunk-ZEZBMEWP.mjs";
3
+ } from "../chunk-WVYZIPWC.mjs";
4
4
  import {
5
5
  toJson
6
6
  } from "../chunk-IANSP3JJ.mjs";
@@ -5,7 +5,9 @@ import { Json, JsonValue } from '../types/Json';
5
5
  import { PageList } from '../types/PageList';
6
6
  import { Id, Key } from '../types/Id';
7
7
  import { List } from '../types/List';
8
- export declare class Typo<T, Options = FetchOptions> extends Repository<T, Options> {
8
+ import { RouteGateway } from '../services/RouteGateway';
9
+ import { RouteOptions } from '../services/Api';
10
+ export declare class Typo<T, Options extends RouteOptions = RouteOptions> extends Repository<T, Options> {
9
11
  protected view: View<T>;
10
12
  private readonly gateway;
11
13
  constructor(view: View<T>, gateway: Gateway<Options>);
@@ -19,3 +21,19 @@ export declare class Typo<T, Options = FetchOptions> extends Repository<T, Optio
19
21
  filter(options?: Options): Promise<PageList<T>>;
20
22
  exists(id: Id): Promise<boolean>;
21
23
  }
24
+ export declare class Agent<T, Options extends FetchOptions = FetchOptions> extends Repository<T, Options> {
25
+ private gateway;
26
+ constructor(gateway: RouteGateway);
27
+ all(options?: Options): Promise<PageList<T>>;
28
+ byId(id: Id): Promise<T>;
29
+ byIds(...ids: Id[]): Promise<List<T>>;
30
+ byKey(key: Key, options?: Options): Promise<PageList<T>>;
31
+ by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>>;
32
+ search(q: JsonValue, options?: Options): Promise<PageList<T>>;
33
+ filter(options?: Options): Promise<PageList<T>>;
34
+ exists(id: Id): Promise<boolean>;
35
+ add(t: Partial<T>): Promise<T>;
36
+ update(id: Id, t: Partial<T>): Promise<T>;
37
+ upsert(id: Id, t: Partial<T>): Promise<T>;
38
+ remove(id: Id): Promise<boolean>;
39
+ }
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  Repository
3
- } from "../chunk-ZEZBMEWP.mjs";
3
+ } from "../chunk-WVYZIPWC.mjs";
4
+ import {
5
+ toJson
6
+ } from "../chunk-IANSP3JJ.mjs";
4
7
  import {
5
8
  when
6
9
  } from "../chunk-TRIKRGDF.mjs";
@@ -61,7 +64,50 @@ var Typo = class extends Repository {
61
64
  return this.gateway.exists(id);
62
65
  }
63
66
  };
67
+ var Agent = class extends Repository {
68
+ constructor(gateway) {
69
+ super();
70
+ this.gateway = gateway;
71
+ }
72
+ all(options) {
73
+ return this.gateway.all(options);
74
+ }
75
+ byId(id) {
76
+ return this.gateway.byId(id);
77
+ }
78
+ byIds(...ids) {
79
+ return this.gateway.byIds(...ids);
80
+ }
81
+ byKey(key, options) {
82
+ return this.gateway.by("key", key, options);
83
+ }
84
+ by(key, value, options) {
85
+ return this.gateway.by(key.toString(), value, options);
86
+ }
87
+ search(q, options) {
88
+ return this.gateway.search(q, options);
89
+ }
90
+ filter(options) {
91
+ return this.gateway.filter(options);
92
+ }
93
+ exists(id) {
94
+ return this.gateway.exists(id);
95
+ }
96
+ add(t) {
97
+ return this.gateway.add(toJson(t));
98
+ }
99
+ update(id, t) {
100
+ return this.gateway.update({ ...toJson(t), id });
101
+ }
102
+ upsert(id, t) {
103
+ return this.gateway.upsert({ ...toJson(t), id });
104
+ }
105
+ remove(id) {
106
+ return this.gateway.remove(id);
107
+ }
108
+ };
64
109
  export {
110
+ Agent,
65
111
  Typo
66
112
  };
67
113
  //# sourceMappingURL=Typo.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/domain/Typo.ts"],"sourcesContent":["import { View } from '../utils/View';\nimport { FetchOptions, Gateway } from '../types/Gateway';\nimport { Repository } from '../types/Repository';\nimport { Json, JsonValue } from '../types/Json';\nimport { PageList } from '../types/PageList';\nimport { Id, Key } from '../types/Id';\nimport { when } from '../validation/When';\nimport { Exception } from '../types/Exception';\nimport { List } from '../types/List';\n\nexport class Typo<T, Options = FetchOptions> extends Repository<T, Options> {\n constructor(\n protected view: View<T>,\n private readonly gateway: Gateway<Options>\n ) {\n super();\n }\n\n create = (j: Json): T => this.view.from(j);\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options).then(js => js.map(this.create));\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => this.create(j));\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids).then(js => js.map(this.create));\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options).then(js => js.map(this.create));\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options).then(js => js.map(this.create));\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options).then(js => js.map(this.create));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options).then(js => js.map(j => this.create(j)));\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAM,OAAN,cAA8C,WAAuB;AAAA,EAC1E,YACY,MACO,SACjB;AACA,UAAM;AAHI;AACO;AAAA,EAGnB;AAAA,EAEA,SAAS,CAAC,MAAe,KAAK,KAAK,KAAK,CAAC;AAAA,EAEzC,IAAI,SAAyC;AAC3C,WAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EACjE;AAAA,EAEA,KAAK,IAAoB;AACvB,WAAO,KAAK,QACT,KAAK,EAAE,EACP,KAAK,OAAK,KAAK,CAAC,EAAE,IAAI,UAAU,OAAO,UAAU,YAAY,CAAC,EAC9D,KAAK,OAAK,KAAK,OAAO,CAAC,CAAC;AAAA,EAC7B;AAAA,EAEA,SAAS,KAA6B;AACpC,WAAO,KAAK,QAAQ,MAAM,GAAG,GAAG,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,KAAU,SAAyC;AACvD,WAAO,KAAK,QAAQ,GAAG,OAAO,KAAK,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EAC5E;AAAA,EAEA,GAAG,KAAc,OAAkB,SAAyC;AAC1E,WAAO,KAAK,QAAQ,GAAG,IAAI,SAAS,GAAG,OAAO,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EACvF;AAAA,EAEA,OAAO,GAAc,SAAyC;AAC5D,WAAO,KAAK,QAAQ,OAAO,GAAG,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EACvE;AAAA,EAEA,OAAO,SAAyC;AAC9C,WAAO,KAAK,QAAQ,OAAO,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,OAAK,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,EAC5E;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,KAAK,QAAQ,OAAO,EAAE;AAAA,EAC/B;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/domain/Typo.ts"],"sourcesContent":["import { View } from '../utils/View';\nimport { FetchOptions, Gateway } from '../types/Gateway';\nimport { Repository } from '../types/Repository';\nimport { Json, JsonValue, toJson } from '../types/Json';\nimport { PageList } from '../types/PageList';\nimport { Id, Key } from '../types/Id';\nimport { when } from '../validation/When';\nimport { Exception } from '../types/Exception';\nimport { List } from '../types/List';\nimport { RouteGateway } from '../services/RouteGateway';\nimport { RouteOptions } from '../services/Api';\n\nexport class Typo<T, Options extends RouteOptions = RouteOptions> extends Repository<T, Options> {\n constructor(\n protected view: View<T>,\n private readonly gateway: Gateway<Options>\n ) {\n super();\n }\n\n create = (j: Json): T => this.view.from(j);\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options).then(js => js.map(this.create));\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => this.create(j));\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids).then(js => js.map(this.create));\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options).then(js => js.map(this.create));\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options).then(js => js.map(this.create));\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options).then(js => js.map(this.create));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options).then(js => js.map(j => this.create(j)));\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n}\n\nexport class Agent<T, Options extends FetchOptions = FetchOptions> extends Repository<T, Options> {\n constructor(private gateway: RouteGateway) {\n super();\n }\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options) as Promise<PageList<T>>;\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway.byId(id) as Promise<T>;\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids) as Promise<List<T>>;\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options) as Promise<PageList<T>>;\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options) as Promise<PageList<T>>;\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options) as Promise<PageList<T>>;\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options) as Promise<PageList<T>>;\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n\n add(t: Partial<T>): Promise<T> {\n return this.gateway.add(toJson(t)) as Promise<T>;\n }\n\n update(id: Id, t: Partial<T>): Promise<T> {\n return this.gateway.update({ ...toJson(t), id }) as Promise<T>;\n }\n\n upsert(id: Id, t: Partial<T>): Promise<T> {\n return this.gateway.upsert({ ...toJson(t), id }) as Promise<T>;\n }\n\n remove(id: Id): Promise<boolean> {\n return this.gateway.remove(id);\n }\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -111,4 +111,3 @@ export * from './utils/Wait';
111
111
  export * from './validation/Contraints';
112
112
  export * from './validation/Validate';
113
113
  export * from './validation/When';
114
- export { IdName } from './types/IdName';
package/dist/index.js CHANGED
@@ -39,6 +39,7 @@ var __decorateClass = (decorators, target, key, kind) => {
39
39
  // src/index.ts
40
40
  var src_exports = {};
41
41
  __export(src_exports, {
42
+ Agent: () => Agent,
42
43
  Api: () => Api,
43
44
  ApiGateway: () => ApiGateway,
44
45
  App: () => App,
@@ -2032,6 +2033,48 @@ var Typo = class extends Repository {
2032
2033
  return this.gateway.exists(id);
2033
2034
  }
2034
2035
  };
2036
+ var Agent = class extends Repository {
2037
+ constructor(gateway) {
2038
+ super();
2039
+ this.gateway = gateway;
2040
+ }
2041
+ all(options) {
2042
+ return this.gateway.all(options);
2043
+ }
2044
+ byId(id) {
2045
+ return this.gateway.byId(id);
2046
+ }
2047
+ byIds(...ids) {
2048
+ return this.gateway.byIds(...ids);
2049
+ }
2050
+ byKey(key, options) {
2051
+ return this.gateway.by("key", key, options);
2052
+ }
2053
+ by(key, value, options) {
2054
+ return this.gateway.by(key.toString(), value, options);
2055
+ }
2056
+ search(q, options) {
2057
+ return this.gateway.search(q, options);
2058
+ }
2059
+ filter(options) {
2060
+ return this.gateway.filter(options);
2061
+ }
2062
+ exists(id) {
2063
+ return this.gateway.exists(id);
2064
+ }
2065
+ add(t) {
2066
+ return this.gateway.add(toJson(t));
2067
+ }
2068
+ update(id, t) {
2069
+ return this.gateway.update({ ...toJson(t), id });
2070
+ }
2071
+ upsert(id, t) {
2072
+ return this.gateway.upsert({ ...toJson(t), id });
2073
+ }
2074
+ remove(id) {
2075
+ return this.gateway.remove(id);
2076
+ }
2077
+ };
2035
2078
 
2036
2079
  // src/types/Number.ts
2037
2080
  var asNumber = (n, alt) => tryTo(() => asString(n)).map((s) => parseInt(s)).filter((n2) => isNumber(n2)).or(ofGet(alt) ?? NaN);
@@ -2626,34 +2669,34 @@ var RouteGateway = class extends ApiGateway {
2626
2669
  this.api = api2;
2627
2670
  }
2628
2671
  all(options) {
2629
- return this.get(this.route(), options);
2672
+ return this.get(this.route().expand(options ?? {}), options);
2630
2673
  }
2631
- byId(id, options) {
2674
+ byId(id) {
2632
2675
  return this.getOne(this.routeId().id(id));
2633
2676
  }
2634
2677
  byIds(...ids) {
2635
2678
  return this.get(this.route().ids(toArray(...ids)));
2636
2679
  }
2637
2680
  search(q, options) {
2638
- return this.get(this.route().query(q), options);
2681
+ return this.get(this.route().expand({ ...options, q }));
2639
2682
  }
2640
- exists(id, options) {
2641
- return this.get(this.routeId().id(id)).then((r) => r.length === 1).catch((r) => HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r));
2683
+ exists(id) {
2684
+ return this.byId(id).then((r) => isDefined(r)).catch((r) => HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r));
2642
2685
  }
2643
- add(item, options) {
2644
- return this.post(this.route(), item, options);
2686
+ add(item) {
2687
+ return this.post(this.route(), item);
2645
2688
  }
2646
2689
  filter(options) {
2647
- return this.postSearch(this.route(), options);
2690
+ return this.postSearch(this.route().expand(options ?? {}));
2648
2691
  }
2649
- update(item, options) {
2650
- return this.patch(this.routeId().id(item.id), item, options);
2692
+ update(item) {
2693
+ return this.patch(this.routeId().id(item.id), item);
2651
2694
  }
2652
- upsert(item, options) {
2653
- return this.put(this.routeId().id(item.id), item, options);
2695
+ upsert(item) {
2696
+ return this.put(this.routeId().id(item.id), item);
2654
2697
  }
2655
- remove(id, options) {
2656
- return this.delete(this.routeId().id(id), options);
2698
+ remove(id) {
2699
+ return this.delete(this.routeId().id(id));
2657
2700
  }
2658
2701
  };
2659
2702
 
@@ -3413,6 +3456,7 @@ var Wait = class {
3413
3456
  var wait = (millis) => Wait.wait(millis);
3414
3457
  // Annotate the CommonJS export names for ESM import in node:
3415
3458
  0 && (module.exports = {
3459
+ Agent,
3416
3460
  Api,
3417
3461
  ApiGateway,
3418
3462
  App,