@spinajs/orm 2.0.181 → 2.0.183

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.
@@ -2,15 +2,33 @@ import { IRelationDescriptor, IModelDescriptor, InsertBehaviour, ForwardRefFunct
2
2
  import { Constructor } from '@spinajs/di';
3
3
  import { SelectQueryBuilder } from './builders.js';
4
4
  import { ModelBase } from './model.js';
5
- import { IModelBase } from './interfaces.js';
6
5
  import { Orm } from './orm.js';
7
6
  import { OrmDriver } from './driver.js';
7
+ export declare class Dataset {
8
+ /**
9
+ *
10
+ * Calculates difference between data in this relation and provides set. Result is saved to db.
11
+ *
12
+ * @param dataset - data to compare
13
+ * @param callback - function to compare objects, if none provideded - primary key value is used
14
+ */
15
+ static diff<R>(dataset: R[], callback?: (a: R, b: R) => boolean): (datasetB: R[], pKey: string) => R[];
16
+ /**
17
+ *
18
+ * Calculates intersection between data in this relation and provided dataset
19
+ * It saves result to db
20
+ *
21
+ * @param dataset - dataset to compare
22
+ * @param callback - function to compare models, if not set it is compared by primary key value
23
+ */
24
+ static intersection<R>(dataset: R[], callback?: (a: R, b: R) => boolean): (datasetB: R[], pKey: string) => R[];
25
+ }
8
26
  /**
9
27
  * Iterable list of populated relation entities
10
28
  *
11
29
  * It allows to add / remove objects to relation
12
30
  */
13
- export declare abstract class Relation<R extends ModelBase, O extends ModelBase> extends Array<R> implements IRelation {
31
+ export declare abstract class Relation<R extends ModelBase<R>, O extends ModelBase<O>> extends Array<R> implements IRelation<R, O> {
14
32
  protected owner: O;
15
33
  protected Model: Constructor<R> | ForwardRefFunction;
16
34
  protected Relation: IRelationDescriptor;
@@ -21,23 +39,39 @@ export declare abstract class Relation<R extends ModelBase, O extends ModelBase>
21
39
  protected IsModelAForwardRef: boolean;
22
40
  constructor(owner: O, Model: Constructor<R> | ForwardRefFunction, Relation: IRelationDescriptor, objects?: R[]);
23
41
  /**
24
- * Removes from relation & deletes from db
42
+ * Removes all objects from relation by comparison functions
25
43
  *
26
- * @param obj - data to remove
44
+ * @param compare function to compare models
27
45
  */
28
- abstract remove(obj: R | R[]): Promise<void>;
46
+ abstract remove(compare: (a: R) => boolean): R[];
29
47
  /**
48
+ * Removes all objects by primary key
30
49
  *
31
- * Add to relation & saves to db, alias for union, except it can add single element also
32
- *
33
- * @param obj - data to add
50
+ * @param obj - data to remove
34
51
  */
35
- abstract add(obj: R | R[] | Partial<R> | Partial<R>[], mode?: InsertBehaviour): Promise<void>;
52
+ abstract remove(obj: R | R[]): R[];
36
53
  /**
37
- * Delete all objects from relation
54
+ * Removes from relation & deletes from db
55
+ *
56
+ * @param obj - data to remove
57
+ */
58
+ abstract remove(obj: R | R[] | ((a: R, b: R) => boolean)): R[];
59
+ /**
60
+ * Delete all objects from relation ( alias for empty )
38
61
  */
39
62
  clear(): Promise<void>;
63
+ /**
64
+ * Clears relation data
65
+ */
40
66
  empty(): void;
67
+ /**
68
+ * Synchronize relation data with db
69
+ * NOTE: it removes data from db that are not in relation
70
+ *
71
+ * @param obj - object to add
72
+ * @param mode - insert mode
73
+ */
74
+ abstract sync(): Promise<void>;
41
75
  /**
42
76
  *
43
77
  * Calculates intersection between data in this relation and provided dataset
@@ -46,14 +80,14 @@ export declare abstract class Relation<R extends ModelBase, O extends ModelBase>
46
80
  * @param dataset - dataset to compare
47
81
  * @param callback - function to compare models, if not set it is compared by primary key value
48
82
  */
49
- abstract intersection(dataset: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
83
+ abstract intersection(dataset: R[], callback?: (a: R, b: R) => boolean): R[];
50
84
  /**
51
85
  * Adds all items to this relation & adds to database
52
86
  *
53
87
  * @param dataset - data to add
54
88
  * @param mode - insert mode
55
89
  */
56
- abstract union(dataset: R[], mode?: InsertBehaviour): Promise<void>;
90
+ abstract union(dataset: R[], mode?: InsertBehaviour): void;
57
91
  /**
58
92
  *
59
93
  * Calculates difference between data in this relation and provides set. Result is saved to db.
@@ -61,20 +95,20 @@ export declare abstract class Relation<R extends ModelBase, O extends ModelBase>
61
95
  * @param dataset - data to compare
62
96
  * @param callback - function to compare objects, if none provideded - primary key value is used
63
97
  */
64
- abstract diff(dataset: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
98
+ abstract diff(dataset: R[], callback?: (a: R, b: R) => boolean): R[];
65
99
  /**
66
100
  *
67
101
  * Clears data and replace it with new dataset.
68
102
  *
69
103
  * @param dataset - data for replace.
70
104
  */
71
- abstract set(dataset: R[]): Promise<void>;
105
+ abstract set(obj: R[] | ((data: R[], pKey: string) => R[])): void;
72
106
  /**
73
107
  * Populates this relation ( loads all data related to owner of this relation)
74
108
  */
75
- populate(callback?: (this: ISelectQueryBuilder<this>) => void): Promise<void>;
109
+ abstract populate(callback?: (this: ISelectQueryBuilder<this>) => void): Promise<void>;
76
110
  }
77
- export declare class SingleRelation<R extends IModelBase> implements IRelation {
111
+ export declare class SingleRelation<R extends ModelBase> {
78
112
  protected _owner: ModelBase;
79
113
  protected model: Constructor<R> | ForwardRefFunction;
80
114
  protected Relation: IRelationDescriptor;
@@ -90,20 +124,73 @@ export declare class SingleRelation<R extends IModelBase> implements IRelation {
90
124
  populate(callback?: (this: SelectQueryBuilder<this>) => void): Promise<void>;
91
125
  }
92
126
  export declare class ManyToManyRelationList<T extends ModelBase, O extends ModelBase> extends Relation<T, O> {
93
- intersection(_obj: T[], _callback?: (a: T, b: T) => boolean): Promise<void>;
94
- union(_obj: T[], _mode?: InsertBehaviour): Promise<void>;
95
- diff(_obj: T[], _callback?: (a: T, b: T) => boolean): Promise<void>;
96
- set(_obj: T[], _callback?: (a: T, b: T) => boolean): Promise<void>;
97
- remove(obj: T | T[]): Promise<void>;
98
- add(obj: T | T[], mode?: InsertBehaviour): Promise<void>;
127
+ intersection(_obj: T[], _callback?: (a: T, b: T) => boolean): T[];
128
+ union(_obj: T[], _mode?: InsertBehaviour): void;
129
+ diff(_obj: T[], _callback?: (a: T, b: T) => boolean): T[];
130
+ set(_obj: T[], _callback?: (a: T, b: T) => boolean): void;
131
+ remove(_obj: T | T[] | ((a: T) => boolean)): T[];
132
+ sync(): Promise<void>;
133
+ populate(): Promise<void>;
99
134
  }
100
135
  export declare class OneToManyRelationList<T extends ModelBase, O extends ModelBase> extends Relation<T, O> {
101
- protected deleteRelationData(data: T[]): Promise<void>;
102
- diff(dataset: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
103
- set(obj: T[]): Promise<void>;
104
- intersection(obj: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
105
- union(obj: T[], mode?: InsertBehaviour): Promise<void>;
106
- remove(obj: T | T[]): Promise<void>;
107
- add(obj: T | T[] | Partial<T> | Partial<T>[], mode?: InsertBehaviour): Promise<void>;
136
+ /**
137
+ * Deletes from db data that are not in relation
138
+ *
139
+ * @param data relation data
140
+ * @returns
141
+ */
142
+ protected _dbDiff(data: T[]): Promise<void>;
143
+ /**
144
+ * Populates this relation ( loads all data related to owner of this relation)
145
+ */
146
+ populate(callback?: (this: ISelectQueryBuilder<this>) => void): Promise<void>;
147
+ /**
148
+ * Synchronizes relation data to db
149
+ * Deletes from db entries that are not in relation and adds entries that are not in db
150
+ * Sets foreign key to relational data
151
+ *
152
+ * Inserts or updates models that are dirty only.
153
+ */
154
+ sync(): Promise<void>;
155
+ /**
156
+ * Calculates difference between this relation and dataset ( items from this relation that are not in dataset and items from dataset that are not in this relation)
157
+ *
158
+ * @param dataset
159
+ * @param callback
160
+ * @returns Difference between this relation and dataset
161
+ */
162
+ diff(dataset: T[], callback?: (a: T, b: T) => boolean): T[];
163
+ /**
164
+ * Sets data in relation ( clear data and replace with new dataset )
165
+ *
166
+ * @param obj
167
+ */
168
+ set(obj: T[] | ((data: T[], pKey: string) => T[])): void;
169
+ /**
170
+ * Calculates intersection between data in this relation and provided dataset
171
+ *
172
+ * @param obj
173
+ * @param callback compare function, if not set - primary key value is used
174
+ * @returns Data that are in both sets
175
+ */
176
+ intersection(obj: T[], callback?: (a: T, b: T) => boolean): T[];
177
+ /**
178
+ * Combines data with this relation and saves to db
179
+ * Shorthand for push
180
+ * @param obj
181
+ */
182
+ union(obj: T[]): void;
183
+ /**
184
+ * Removes from relation & deletes from db
185
+ *
186
+ * @param obj - data to remove
187
+ */
188
+ remove(func: (a: T) => boolean): T[];
189
+ /**
190
+ * Removes all objects by primary key
191
+ *
192
+ * @param obj - data to remove
193
+ */
194
+ remove(obj: T | T[]): T[];
108
195
  }
109
196
  //# sourceMappingURL=relation-objects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation-objects.d.ts","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-objects.d.ts","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OneToManyRelationList = exports.ManyToManyRelationList = exports.SingleRelation = exports.Relation = void 0;
7
- /* eslint-disable prettier/prettier */
8
- const interfaces_js_1 = require("./interfaces.js");
6
+ exports.OneToManyRelationList = exports.ManyToManyRelationList = exports.SingleRelation = exports.Relation = exports.Dataset = void 0;
9
7
  const di_1 = require("@spinajs/di");
10
8
  const builders_js_1 = require("./builders.js");
11
9
  const model_js_1 = require("./model.js");
12
10
  const orm_js_1 = require("./orm.js");
13
11
  const lodash_1 = __importDefault(require("lodash"));
12
+ class Dataset {
13
+ /**
14
+ *
15
+ * Calculates difference between data in this relation and provides set. Result is saved to db.
16
+ *
17
+ * @param dataset - data to compare
18
+ * @param callback - function to compare objects, if none provideded - primary key value is used
19
+ */
20
+ static diff(dataset, callback) {
21
+ return (datasetB, pKey) => {
22
+ // TODO: maybe refactor for speedup, this is not optimal
23
+ // two calls to _.difference is not optimal, but it is easy to implement
24
+ // calculate difference between this data in relation and dataset ( objects from this relation)
25
+ const result = callback ? lodash_1.default.differenceWith(dataset, [...datasetB], callback) : lodash_1.default.differenceBy(dataset, [...datasetB], pKey);
26
+ // calculate difference between dataset and data in this relation ( objects from dataset )
27
+ const result2 = callback ? lodash_1.default.differenceWith([...datasetB], dataset, callback) : lodash_1.default.differenceBy([...datasetB], dataset, pKey);
28
+ // combine difference from two sets
29
+ const finalDiff = [...result, ...result2];
30
+ return finalDiff;
31
+ };
32
+ }
33
+ /**
34
+ *
35
+ * Calculates intersection between data in this relation and provided dataset
36
+ * It saves result to db
37
+ *
38
+ * @param dataset - dataset to compare
39
+ * @param callback - function to compare models, if not set it is compared by primary key value
40
+ */
41
+ static intersection(dataset, callback) {
42
+ return (datasetB, pKey) => {
43
+ return callback ? lodash_1.default.intersectionWith(dataset, [...datasetB], callback) : lodash_1.default.intersectionBy(dataset, [...datasetB], pKey);
44
+ };
45
+ }
46
+ }
47
+ exports.Dataset = Dataset;
14
48
  /**
15
49
  * Iterable list of populated relation entities
16
50
  *
@@ -34,28 +68,16 @@ class Relation extends Array {
34
68
  this.IsModelAForwardRef = !(0, di_1.isConstructor)(this.Model);
35
69
  }
36
70
  /**
37
- * Delete all objects from relation
71
+ * Delete all objects from relation ( alias for empty )
38
72
  */
39
73
  async clear() {
40
- await this.remove(this);
41
- }
42
- empty() {
43
- this.length = 0;
74
+ this.empty();
44
75
  }
45
76
  /**
46
- * Populates this relation ( loads all data related to owner of this relation)
77
+ * Clears relation data
47
78
  */
48
- async populate(callback) {
49
- const query = this.Relation.TargetModel.where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
50
- if (callback) {
51
- callback.apply(query);
52
- }
53
- const result = await query;
54
- if (result) {
55
- this.length = 0;
56
- this.push(...result);
57
- }
58
- this.Populated = true;
79
+ empty() {
80
+ this.length = 0;
59
81
  }
60
82
  }
61
83
  exports.Relation = Relation;
@@ -118,104 +140,115 @@ class ManyToManyRelationList extends Relation {
118
140
  set(_obj, _callback) {
119
141
  throw new Error('Method not implemented.');
120
142
  }
121
- async remove(obj) {
122
- const self = this;
123
- const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
124
- const jmodelDescriptor = (0, model_js_1.extractModelDescriptor)(this.Relation.JunctionModel);
125
- const query = this.Driver.del()
126
- .from(jmodelDescriptor.TableName)
127
- .where(function () {
128
- this.whereIn(self.Relation.JunctionModelTargetModelFKey_Name, data);
129
- this.andWhere(self.Relation.JunctionModelSourceModelFKey_Name, self.owner.PrimaryKeyValue);
130
- });
131
- if (this.Driver.Options.Database) {
132
- query.database(this.Driver.Options.Database);
133
- }
134
- await query;
135
- lodash_1.default.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
136
- }
137
- async add(obj, mode) {
138
- const data = Array.isArray(obj) ? obj : [obj];
139
- const relEntities = data.map((d) => {
140
- const relEntity = new this.Relation.JunctionModel();
141
- relEntity[this.Relation.JunctionModelSourceModelFKey_Name] = this.owner.PrimaryKeyValue;
142
- relEntity[this.Relation.JunctionModelTargetModelFKey_Name] = d.PrimaryKeyValue;
143
- return relEntity;
144
- });
145
- for (const m of relEntities) {
146
- await m.insert(mode);
147
- }
148
- this.push(...data);
143
+ remove(_obj) {
144
+ throw new Error('Method not implemented.');
145
+ }
146
+ async sync() {
147
+ throw new Error('Method not implemented.');
148
+ }
149
+ async populate() {
150
+ throw new Error('Method not implemented.');
149
151
  }
150
152
  }
151
153
  exports.ManyToManyRelationList = ManyToManyRelationList;
152
154
  class OneToManyRelationList extends Relation {
153
- async deleteRelationData(data) {
154
- if (data.length === 0) {
155
- return;
156
- }
157
- const self = this;
158
- const query = this.Driver.del()
155
+ /**
156
+ * Deletes from db data that are not in relation
157
+ *
158
+ * @param data relation data
159
+ * @returns
160
+ */
161
+ async _dbDiff(data) {
162
+ const query = this.Driver
163
+ .del()
159
164
  .from(this.TargetModelDescriptor.TableName)
160
- .andWhere(function () {
161
- this.whereNotIn(self.Relation.PrimaryKey, data.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue));
162
- this.where(self.Relation.ForeignKey, self.owner.PrimaryKeyValue);
163
- });
165
+ .where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
166
+ const self = this;
164
167
  if (this.Driver.Options.Database) {
165
168
  query.database(this.Driver.Options.Database);
166
169
  }
170
+ // if we have data in relation, we need to exclude them from delete query
171
+ if (data.length !== 0) {
172
+ query.whereNotIn(self.Relation.PrimaryKey, data.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue));
173
+ }
167
174
  await query;
168
- this.empty();
169
175
  }
170
- async diff(dataset, callback) {
171
- // calculate difference between this data in relation and dataset ( objects from this relation)
172
- const result = callback ? lodash_1.default.differenceWith(dataset, [...this], callback) : lodash_1.default.differenceBy(dataset, [...this], this.TargetModelDescriptor.PrimaryKey);
173
- // calculate difference between dataset and data in this relation ( objects from dataset )
174
- const result2 = callback ? lodash_1.default.differenceWith([...this], dataset, callback) : lodash_1.default.differenceBy([...this], dataset, this.TargetModelDescriptor.PrimaryKey);
175
- // combine difference from two sets
176
- const finalDiff = [...result, ...result2];
177
- await this.deleteRelationData(finalDiff);
178
- await this.add(finalDiff, interfaces_js_1.InsertBehaviour.InsertOrUpdate);
176
+ /**
177
+ * Populates this relation ( loads all data related to owner of this relation)
178
+ */
179
+ async populate(callback) {
180
+ const query = this.Relation.TargetModel.where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
181
+ if (callback) {
182
+ callback.apply(query);
183
+ }
184
+ const result = await query;
185
+ if (result) {
186
+ this.length = 0;
187
+ this.push(...result);
188
+ }
189
+ this.Populated = true;
179
190
  }
180
- async set(obj) {
181
- await this.deleteRelationData(obj);
182
- await this.add(obj, interfaces_js_1.InsertBehaviour.InsertOrUpdate);
191
+ /**
192
+ * Synchronizes relation data to db
193
+ * Deletes from db entries that are not in relation and adds entries that are not in db
194
+ * Sets foreign key to relational data
195
+ *
196
+ * Inserts or updates models that are dirty only.
197
+ */
198
+ async sync() {
199
+ const dirty = this.filter((x) => x.IsDirty || x.PrimaryKeyValue === null);
200
+ this.forEach((d) => {
201
+ d[this.Relation.ForeignKey] = this.owner.PrimaryKeyValue;
202
+ });
203
+ for (const f of dirty) {
204
+ await f.insertOrUpdate();
205
+ }
206
+ await this._dbDiff(this);
183
207
  }
184
- async intersection(obj, callback) {
185
- const result = callback ? lodash_1.default.intersectionWith(obj, [...this], callback) : lodash_1.default.intersectionBy(obj, [...this], this.TargetModelDescriptor.PrimaryKey);
186
- await this.deleteRelationData(result);
187
- await this.add(result, interfaces_js_1.InsertBehaviour.InsertOrUpdate);
208
+ /**
209
+ * Calculates difference between this relation and dataset ( items from this relation that are not in dataset and items from dataset that are not in this relation)
210
+ *
211
+ * @param dataset
212
+ * @param callback
213
+ * @returns Difference between this relation and dataset
214
+ */
215
+ diff(dataset, callback) {
216
+ return Dataset.diff(dataset, callback)([...this], this.TargetModelDescriptor.PrimaryKey);
188
217
  }
189
- async union(obj, mode) {
190
- await this.add(obj, mode ?? interfaces_js_1.InsertBehaviour.InsertOrIgnore);
218
+ /**
219
+ * Sets data in relation ( clear data and replace with new dataset )
220
+ *
221
+ * @param obj
222
+ */
223
+ set(obj) {
224
+ const toPush = lodash_1.default.isFunction(obj) ? obj([...this], this.TargetModelDescriptor.PrimaryKey) : obj;
225
+ this.empty();
226
+ this.push(...toPush);
191
227
  }
192
- async remove(obj) {
193
- const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
194
- const query = this.Driver.del().whereIn(this.Relation.ForeignKey, data).setTable(this.TargetModelDescriptor.TableName);
195
- if (this.Driver.Options.Database) {
196
- query.database(this.Driver.Options.Database);
197
- }
198
- await query;
199
- lodash_1.default.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
200
- }
201
- async add(obj, mode) {
202
- const data = Array.isArray(obj) ? obj : [obj];
203
- const tInsert = data.map((x) => {
204
- if (x instanceof model_js_1.ModelBase) {
205
- return x;
206
- }
207
- if (this.IsModelAForwardRef) {
208
- new (this.Model())(x);
209
- }
210
- return new this.Model(x);
211
- });
212
- data.forEach((d) => {
213
- d[this.Relation.ForeignKey] = this.owner.PrimaryKeyValue;
214
- });
215
- for (const m of tInsert) {
216
- await m.insertOrUpdate(mode);
228
+ /**
229
+ * Calculates intersection between data in this relation and provided dataset
230
+ *
231
+ * @param obj
232
+ * @param callback compare function, if not set - primary key value is used
233
+ * @returns Data that are in both sets
234
+ */
235
+ intersection(obj, callback) {
236
+ return Dataset.intersection(obj, callback)([...this], this.TargetModelDescriptor.PrimaryKey);
237
+ }
238
+ /**
239
+ * Combines data with this relation and saves to db
240
+ * Shorthand for push
241
+ * @param obj
242
+ */
243
+ union(obj) {
244
+ this.push(...obj);
245
+ }
246
+ remove(obj) {
247
+ if (lodash_1.default.isFunction(obj)) {
248
+ return lodash_1.default.remove(this, obj);
217
249
  }
218
- this.push(...tInsert);
250
+ const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
251
+ return lodash_1.default.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
219
252
  }
220
253
  }
221
254
  exports.OneToManyRelationList = OneToManyRelationList;
@@ -1 +1 @@
1
- {"version":3,"file":"relation-objects.js","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-objects.js","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
@@ -261,6 +261,7 @@ export declare class SelectQueryBuilder<T = any> extends QueryBuilder<T> {
261
261
  distinct(): this;
262
262
  toDB(): ICompilerOutput;
263
263
  all(): Promise<T[]>;
264
+ resultExists(): Promise<boolean>;
264
265
  then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
265
266
  execute(): Promise<T>;
266
267
  }