@uql/core 0.4.81 → 0.4.84

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 (49) hide show
  1. package/README.md +36 -51
  2. package/dialect/abstractSqlDialect-spec.d.ts +49 -0
  3. package/dialect/abstractSqlDialect-spec.js +765 -0
  4. package/dialect/mysqlDialect.spec.d.ts +6 -0
  5. package/dialect/mysqlDialect.spec.js +33 -0
  6. package/dialect/postgresDialect.spec.d.ts +1 -0
  7. package/dialect/postgresDialect.spec.js +139 -0
  8. package/dialect/sqliteDialect.spec.d.ts +1 -0
  9. package/dialect/sqliteDialect.spec.js +12 -0
  10. package/entity/decorator/definition.js +18 -18
  11. package/entity/decorator/definition.spec.d.ts +1 -0
  12. package/entity/decorator/definition.spec.js +725 -0
  13. package/entity/decorator/relation.spec.d.ts +1 -0
  14. package/entity/decorator/relation.spec.js +55 -0
  15. package/options.spec.d.ts +1 -0
  16. package/options.spec.js +50 -0
  17. package/package.json +3 -3
  18. package/querier/abstractQuerier-it.d.ts +41 -0
  19. package/querier/abstractQuerier-it.js +410 -0
  20. package/querier/abstractSqlQuerier-it.d.ts +9 -0
  21. package/querier/abstractSqlQuerier-it.js +19 -0
  22. package/querier/abstractSqlQuerier-spec.d.ts +53 -0
  23. package/querier/abstractSqlQuerier-spec.js +607 -0
  24. package/querier/decorator/injectQuerier.spec.d.ts +1 -0
  25. package/querier/decorator/injectQuerier.spec.js +108 -0
  26. package/querier/decorator/transactional.spec.d.ts +1 -0
  27. package/querier/decorator/transactional.spec.js +241 -0
  28. package/repository/genericRepository.spec.d.ts +1 -0
  29. package/repository/genericRepository.spec.js +86 -0
  30. package/test/entityMock.d.ts +180 -0
  31. package/test/entityMock.js +451 -0
  32. package/test/index.d.ts +3 -0
  33. package/test/index.js +7 -0
  34. package/test/it.util.d.ts +4 -0
  35. package/test/it.util.js +60 -0
  36. package/test/spec.util.d.ts +13 -0
  37. package/test/spec.util.js +54 -0
  38. package/type/entity.d.ts +15 -20
  39. package/type/entity.js +1 -1
  40. package/type/utility.d.ts +1 -1
  41. package/type/utility.js +1 -1
  42. package/util/dialect.util.spec.d.ts +1 -0
  43. package/util/dialect.util.spec.js +23 -0
  44. package/util/object.util.spec.d.ts +1 -0
  45. package/util/object.util.spec.js +26 -0
  46. package/util/sql.util.spec.d.ts +1 -0
  47. package/util/sql.util.spec.js +164 -0
  48. package/util/string.util.spec.d.ts +1 -0
  49. package/util/string.util.spec.js +26 -0
@@ -0,0 +1,180 @@
1
+ import { idKey } from '@uql/core/type';
2
+ /**
3
+ * interfaces can (optionally) be used to avoid circular-reference issue between entities.
4
+ */
5
+ export interface IEntity {
6
+ id?: number;
7
+ companyId?: number;
8
+ company?: ICompany;
9
+ creatorId?: number;
10
+ creator?: IUser;
11
+ createdAt?: number;
12
+ updatedAt?: number;
13
+ }
14
+ interface ICompany extends IEntity {
15
+ name?: string;
16
+ description?: string;
17
+ }
18
+ interface IUser extends IEntity {
19
+ name?: string;
20
+ email?: string;
21
+ password?: string;
22
+ profile?: Profile;
23
+ }
24
+ /**
25
+ * an abstract class can (optionally) be used as a "template" for the entities
26
+ * (so the common attributes' declaration is reused).
27
+ */
28
+ export declare abstract class BaseEntity implements IEntity {
29
+ id?: number;
30
+ /**
31
+ * foreign-keys are really simple to specify
32
+ */
33
+ companyId?: number;
34
+ company?: ICompany;
35
+ creatorId?: number;
36
+ creator?: IUser;
37
+ /**
38
+ * 'onInsert' callback can be used to specify a custom mechanism for
39
+ * obtaining the value of a field when inserting:
40
+ */
41
+ createdAt?: number;
42
+ /**
43
+ * 'onUpdate' callback can be used to specify a custom mechanism for
44
+ * obtaining the value of a field when updating:
45
+ */
46
+ updatedAt?: number;
47
+ }
48
+ /**
49
+ * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.
50
+ */
51
+ export declare class Company extends BaseEntity implements ICompany {
52
+ name?: string;
53
+ description?: string;
54
+ }
55
+ /**
56
+ * and entity can specify the table name
57
+ */
58
+ export declare class Profile extends BaseEntity {
59
+ /**
60
+ * an entity can specify its own ID Field and still inherit the others
61
+ * columns/relations from its parent entity.
62
+ * 'onInsert' callback can be used to specify a custom mechanism for
63
+ * auto-generating the primary-key's value when inserting.
64
+ */
65
+ id?: number;
66
+ picture?: string;
67
+ creator?: IUser;
68
+ }
69
+ export declare class User extends BaseEntity implements IUser {
70
+ name?: string;
71
+ email?: string;
72
+ password?: string;
73
+ /**
74
+ * `mappedBy` can be a callback or a string (callback is useful for auto-refactoring).
75
+ */
76
+ profile?: Profile;
77
+ users?: User[];
78
+ }
79
+ export declare class LedgerAccount extends BaseEntity {
80
+ name?: string;
81
+ description?: string;
82
+ parentLedgerId?: number;
83
+ parentLedger?: LedgerAccount;
84
+ }
85
+ export declare class TaxCategory extends BaseEntity {
86
+ /**
87
+ * `idKey` symbol can be used to specify the name of the identifier property,
88
+ * so the type of the identifier can always be type-safe
89
+ * (the identifiers named as `id` or `_id` are auto-inferred).
90
+ */
91
+ [idKey]?: 'pk';
92
+ /**
93
+ * an entity can specify its own ID Field and still inherit the others
94
+ * columns/relations from its parent entity.
95
+ * 'onInsert' callback can be used to specify a custom mechanism for
96
+ * auto-generating the primary-key's value when inserting.
97
+ */
98
+ pk?: string;
99
+ name?: string;
100
+ description?: string;
101
+ }
102
+ export declare class Test {
103
+ name?: string;
104
+ percentage?: number;
105
+ categoryId?: string;
106
+ category?: TaxCategory;
107
+ description?: string;
108
+ }
109
+ export declare class Tax extends BaseEntity {
110
+ name?: string;
111
+ percentage?: number;
112
+ categoryId?: string;
113
+ category?: TaxCategory;
114
+ description?: string;
115
+ }
116
+ /**
117
+ * `softDelete` will make the entity "soft deletable".
118
+ */
119
+ export declare class MeasureUnitCategory extends BaseEntity {
120
+ name?: string;
121
+ measureUnits?: MeasureUnit[];
122
+ /**
123
+ * `onDelete` callback allows to specify which field will be used when deleting/querying this entity.
124
+ */
125
+ deletedAt?: number;
126
+ }
127
+ export declare class MeasureUnit extends BaseEntity {
128
+ name?: string;
129
+ categoryId?: number;
130
+ category?: MeasureUnitCategory;
131
+ deletedAt?: number;
132
+ }
133
+ export declare class Storehouse extends BaseEntity {
134
+ name?: string;
135
+ address?: string;
136
+ description?: string;
137
+ }
138
+ export declare class Item extends BaseEntity {
139
+ name?: string;
140
+ description?: string;
141
+ code?: string;
142
+ buyLedgerAccountId?: number;
143
+ buyLedgerAccount?: LedgerAccount;
144
+ saleLedgerAccountId?: number;
145
+ saleLedgerAccount?: LedgerAccount;
146
+ taxId?: number;
147
+ tax?: Tax;
148
+ measureUnitId?: number;
149
+ measureUnit?: MeasureUnit;
150
+ salePrice?: number;
151
+ inventoryable?: boolean;
152
+ tags?: Tag[];
153
+ tagsCount?: number;
154
+ }
155
+ export declare class Tag extends BaseEntity {
156
+ name?: string;
157
+ items?: Item[];
158
+ itemsCount?: number;
159
+ }
160
+ export declare class ItemTag {
161
+ id?: number;
162
+ itemId?: number;
163
+ tagId?: number;
164
+ }
165
+ export declare class InventoryAdjustment extends BaseEntity {
166
+ itemAdjustments?: ItemAdjustment[];
167
+ date?: Date;
168
+ description?: string;
169
+ }
170
+ export declare class ItemAdjustment extends BaseEntity {
171
+ itemId?: number;
172
+ item?: Item;
173
+ number?: number;
174
+ buyPrice?: number;
175
+ storehouseId?: number;
176
+ storehouse?: Storehouse;
177
+ inventoryAdjustmentId?: number;
178
+ inventoryAdjustment?: InventoryAdjustment;
179
+ }
180
+ export {};
@@ -0,0 +1,451 @@
1
+ "use strict";
2
+ var User_1, LedgerAccount_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ItemAdjustment = exports.InventoryAdjustment = exports.ItemTag = exports.Tag = exports.Item = exports.Storehouse = exports.MeasureUnit = exports.MeasureUnitCategory = exports.Tax = exports.Test = exports.TaxCategory = exports.LedgerAccount = exports.User = exports.Profile = exports.Company = exports.BaseEntity = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const uuid_1 = require("uuid");
7
+ const entity_1 = require("@uql/core/entity");
8
+ const util_1 = require("@uql/core/util");
9
+ const type_1 = require("@uql/core/type");
10
+ /**
11
+ * an abstract class can (optionally) be used as a "template" for the entities
12
+ * (so the common attributes' declaration is reused).
13
+ */
14
+ class BaseEntity {
15
+ }
16
+ tslib_1.__decorate([
17
+ (0, entity_1.Id)(),
18
+ tslib_1.__metadata("design:type", Number)
19
+ ], BaseEntity.prototype, "id", void 0);
20
+ tslib_1.__decorate([
21
+ (0, entity_1.Field)({ reference: () => Company }),
22
+ tslib_1.__metadata("design:type", Number)
23
+ ], BaseEntity.prototype, "companyId", void 0);
24
+ tslib_1.__decorate([
25
+ (0, entity_1.ManyToOne)({ entity: () => Company }),
26
+ tslib_1.__metadata("design:type", Object)
27
+ ], BaseEntity.prototype, "company", void 0);
28
+ tslib_1.__decorate([
29
+ (0, entity_1.Field)({ reference: () => User }),
30
+ tslib_1.__metadata("design:type", Number)
31
+ ], BaseEntity.prototype, "creatorId", void 0);
32
+ tslib_1.__decorate([
33
+ (0, entity_1.ManyToOne)({ entity: () => User }),
34
+ tslib_1.__metadata("design:type", Object)
35
+ ], BaseEntity.prototype, "creator", void 0);
36
+ tslib_1.__decorate([
37
+ (0, entity_1.Field)({ onInsert: () => Date.now() }),
38
+ tslib_1.__metadata("design:type", Number)
39
+ ], BaseEntity.prototype, "createdAt", void 0);
40
+ tslib_1.__decorate([
41
+ (0, entity_1.Field)({ onUpdate: () => Date.now() }),
42
+ tslib_1.__metadata("design:type", Number)
43
+ ], BaseEntity.prototype, "updatedAt", void 0);
44
+ exports.BaseEntity = BaseEntity;
45
+ /**
46
+ * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.
47
+ */
48
+ let Company = class Company extends BaseEntity {
49
+ };
50
+ tslib_1.__decorate([
51
+ (0, entity_1.Field)(),
52
+ tslib_1.__metadata("design:type", String)
53
+ ], Company.prototype, "name", void 0);
54
+ tslib_1.__decorate([
55
+ (0, entity_1.Field)(),
56
+ tslib_1.__metadata("design:type", String)
57
+ ], Company.prototype, "description", void 0);
58
+ Company = tslib_1.__decorate([
59
+ (0, entity_1.Entity)()
60
+ ], Company);
61
+ exports.Company = Company;
62
+ /**
63
+ * and entity can specify the table name
64
+ */
65
+ let Profile = class Profile extends BaseEntity {
66
+ };
67
+ tslib_1.__decorate([
68
+ (0, entity_1.Id)({ name: 'pk' }),
69
+ tslib_1.__metadata("design:type", Number)
70
+ ], Profile.prototype, "id", void 0);
71
+ tslib_1.__decorate([
72
+ (0, entity_1.Field)({ name: 'image' }),
73
+ tslib_1.__metadata("design:type", String)
74
+ ], Profile.prototype, "picture", void 0);
75
+ tslib_1.__decorate([
76
+ (0, entity_1.OneToOne)({ entity: () => User }),
77
+ tslib_1.__metadata("design:type", Object)
78
+ ], Profile.prototype, "creator", void 0);
79
+ Profile = tslib_1.__decorate([
80
+ (0, entity_1.Entity)({ name: 'user_profile' })
81
+ ], Profile);
82
+ exports.Profile = Profile;
83
+ let User = User_1 = class User extends BaseEntity {
84
+ };
85
+ tslib_1.__decorate([
86
+ (0, entity_1.Field)(),
87
+ tslib_1.__metadata("design:type", String)
88
+ ], User.prototype, "name", void 0);
89
+ tslib_1.__decorate([
90
+ (0, entity_1.Field)(),
91
+ tslib_1.__metadata("design:type", String)
92
+ ], User.prototype, "email", void 0);
93
+ tslib_1.__decorate([
94
+ (0, entity_1.Field)(),
95
+ tslib_1.__metadata("design:type", String)
96
+ ], User.prototype, "password", void 0);
97
+ tslib_1.__decorate([
98
+ (0, entity_1.OneToOne)({ entity: () => Profile, mappedBy: (profile) => profile.creator, cascade: true }),
99
+ tslib_1.__metadata("design:type", Profile)
100
+ ], User.prototype, "profile", void 0);
101
+ tslib_1.__decorate([
102
+ (0, entity_1.OneToMany)({ entity: () => User_1, mappedBy: 'creator' }),
103
+ tslib_1.__metadata("design:type", Array)
104
+ ], User.prototype, "users", void 0);
105
+ User = User_1 = tslib_1.__decorate([
106
+ (0, entity_1.Entity)()
107
+ ], User);
108
+ exports.User = User;
109
+ let LedgerAccount = LedgerAccount_1 = class LedgerAccount extends BaseEntity {
110
+ };
111
+ tslib_1.__decorate([
112
+ (0, entity_1.Field)(),
113
+ tslib_1.__metadata("design:type", String)
114
+ ], LedgerAccount.prototype, "name", void 0);
115
+ tslib_1.__decorate([
116
+ (0, entity_1.Field)(),
117
+ tslib_1.__metadata("design:type", String)
118
+ ], LedgerAccount.prototype, "description", void 0);
119
+ tslib_1.__decorate([
120
+ (0, entity_1.Field)({ reference: () => LedgerAccount_1 }),
121
+ tslib_1.__metadata("design:type", Number)
122
+ ], LedgerAccount.prototype, "parentLedgerId", void 0);
123
+ tslib_1.__decorate([
124
+ (0, entity_1.ManyToOne)(),
125
+ tslib_1.__metadata("design:type", LedgerAccount)
126
+ ], LedgerAccount.prototype, "parentLedger", void 0);
127
+ LedgerAccount = LedgerAccount_1 = tslib_1.__decorate([
128
+ (0, entity_1.Entity)()
129
+ ], LedgerAccount);
130
+ exports.LedgerAccount = LedgerAccount;
131
+ let TaxCategory = class TaxCategory extends BaseEntity {
132
+ };
133
+ tslib_1.__decorate([
134
+ (0, entity_1.Id)({ onInsert: uuid_1.v4 }),
135
+ tslib_1.__metadata("design:type", String)
136
+ ], TaxCategory.prototype, "pk", void 0);
137
+ tslib_1.__decorate([
138
+ (0, entity_1.Field)(),
139
+ tslib_1.__metadata("design:type", String)
140
+ ], TaxCategory.prototype, "name", void 0);
141
+ tslib_1.__decorate([
142
+ (0, entity_1.Field)(),
143
+ tslib_1.__metadata("design:type", String)
144
+ ], TaxCategory.prototype, "description", void 0);
145
+ TaxCategory = tslib_1.__decorate([
146
+ (0, entity_1.Entity)()
147
+ ], TaxCategory);
148
+ exports.TaxCategory = TaxCategory;
149
+ class Test {
150
+ }
151
+ tslib_1.__decorate([
152
+ (0, entity_1.Field)(),
153
+ tslib_1.__metadata("design:type", String)
154
+ ], Test.prototype, "name", void 0);
155
+ tslib_1.__decorate([
156
+ (0, entity_1.Field)(),
157
+ tslib_1.__metadata("design:type", Number)
158
+ ], Test.prototype, "percentage", void 0);
159
+ tslib_1.__decorate([
160
+ (0, entity_1.Field)({ reference: () => TaxCategory }),
161
+ tslib_1.__metadata("design:type", String)
162
+ ], Test.prototype, "categoryId", void 0);
163
+ tslib_1.__decorate([
164
+ (0, entity_1.ManyToOne)(),
165
+ tslib_1.__metadata("design:type", TaxCategory)
166
+ ], Test.prototype, "category", void 0);
167
+ tslib_1.__decorate([
168
+ (0, entity_1.Field)(),
169
+ tslib_1.__metadata("design:type", String)
170
+ ], Test.prototype, "description", void 0);
171
+ exports.Test = Test;
172
+ let Tax = class Tax extends BaseEntity {
173
+ };
174
+ tslib_1.__decorate([
175
+ (0, entity_1.Field)(),
176
+ tslib_1.__metadata("design:type", String)
177
+ ], Tax.prototype, "name", void 0);
178
+ tslib_1.__decorate([
179
+ (0, entity_1.Field)(),
180
+ tslib_1.__metadata("design:type", Number)
181
+ ], Tax.prototype, "percentage", void 0);
182
+ tslib_1.__decorate([
183
+ (0, entity_1.Field)({ reference: () => TaxCategory }),
184
+ tslib_1.__metadata("design:type", String)
185
+ ], Tax.prototype, "categoryId", void 0);
186
+ tslib_1.__decorate([
187
+ (0, entity_1.ManyToOne)(),
188
+ tslib_1.__metadata("design:type", TaxCategory)
189
+ ], Tax.prototype, "category", void 0);
190
+ tslib_1.__decorate([
191
+ (0, entity_1.Field)(),
192
+ tslib_1.__metadata("design:type", String)
193
+ ], Tax.prototype, "description", void 0);
194
+ Tax = tslib_1.__decorate([
195
+ (0, entity_1.Entity)()
196
+ ], Tax);
197
+ exports.Tax = Tax;
198
+ /**
199
+ * `softDelete` will make the entity "soft deletable".
200
+ */
201
+ let MeasureUnitCategory = class MeasureUnitCategory extends BaseEntity {
202
+ };
203
+ tslib_1.__decorate([
204
+ (0, entity_1.Field)(),
205
+ tslib_1.__metadata("design:type", String)
206
+ ], MeasureUnitCategory.prototype, "name", void 0);
207
+ tslib_1.__decorate([
208
+ (0, entity_1.OneToMany)({ entity: () => MeasureUnit, mappedBy: (measureUnit) => measureUnit.categoryId }),
209
+ tslib_1.__metadata("design:type", Array)
210
+ ], MeasureUnitCategory.prototype, "measureUnits", void 0);
211
+ tslib_1.__decorate([
212
+ (0, entity_1.Field)({ onDelete: () => Date.now() }),
213
+ tslib_1.__metadata("design:type", Number)
214
+ ], MeasureUnitCategory.prototype, "deletedAt", void 0);
215
+ MeasureUnitCategory = tslib_1.__decorate([
216
+ (0, entity_1.Entity)({ softDelete: true })
217
+ ], MeasureUnitCategory);
218
+ exports.MeasureUnitCategory = MeasureUnitCategory;
219
+ let MeasureUnit = class MeasureUnit extends BaseEntity {
220
+ };
221
+ tslib_1.__decorate([
222
+ (0, entity_1.Field)(),
223
+ tslib_1.__metadata("design:type", String)
224
+ ], MeasureUnit.prototype, "name", void 0);
225
+ tslib_1.__decorate([
226
+ (0, entity_1.Field)({ reference: () => MeasureUnitCategory }),
227
+ tslib_1.__metadata("design:type", Number)
228
+ ], MeasureUnit.prototype, "categoryId", void 0);
229
+ tslib_1.__decorate([
230
+ (0, entity_1.ManyToOne)({ cascade: 'persist' }),
231
+ tslib_1.__metadata("design:type", MeasureUnitCategory)
232
+ ], MeasureUnit.prototype, "category", void 0);
233
+ tslib_1.__decorate([
234
+ (0, entity_1.Field)({ onDelete: () => Date.now() }),
235
+ tslib_1.__metadata("design:type", Number)
236
+ ], MeasureUnit.prototype, "deletedAt", void 0);
237
+ MeasureUnit = tslib_1.__decorate([
238
+ (0, entity_1.Entity)({ softDelete: true })
239
+ ], MeasureUnit);
240
+ exports.MeasureUnit = MeasureUnit;
241
+ let Storehouse = class Storehouse extends BaseEntity {
242
+ };
243
+ tslib_1.__decorate([
244
+ (0, entity_1.Field)(),
245
+ tslib_1.__metadata("design:type", String)
246
+ ], Storehouse.prototype, "name", void 0);
247
+ tslib_1.__decorate([
248
+ (0, entity_1.Field)(),
249
+ tslib_1.__metadata("design:type", String)
250
+ ], Storehouse.prototype, "address", void 0);
251
+ tslib_1.__decorate([
252
+ (0, entity_1.Field)(),
253
+ tslib_1.__metadata("design:type", String)
254
+ ], Storehouse.prototype, "description", void 0);
255
+ Storehouse = tslib_1.__decorate([
256
+ (0, entity_1.Entity)()
257
+ ], Storehouse);
258
+ exports.Storehouse = Storehouse;
259
+ let Item = class Item extends BaseEntity {
260
+ };
261
+ tslib_1.__decorate([
262
+ (0, entity_1.Field)(),
263
+ tslib_1.__metadata("design:type", String)
264
+ ], Item.prototype, "name", void 0);
265
+ tslib_1.__decorate([
266
+ (0, entity_1.Field)(),
267
+ tslib_1.__metadata("design:type", String)
268
+ ], Item.prototype, "description", void 0);
269
+ tslib_1.__decorate([
270
+ (0, entity_1.Field)(),
271
+ tslib_1.__metadata("design:type", String)
272
+ ], Item.prototype, "code", void 0);
273
+ tslib_1.__decorate([
274
+ (0, entity_1.Field)({ reference: () => LedgerAccount }),
275
+ tslib_1.__metadata("design:type", Number)
276
+ ], Item.prototype, "buyLedgerAccountId", void 0);
277
+ tslib_1.__decorate([
278
+ (0, entity_1.ManyToOne)(),
279
+ tslib_1.__metadata("design:type", LedgerAccount)
280
+ ], Item.prototype, "buyLedgerAccount", void 0);
281
+ tslib_1.__decorate([
282
+ (0, entity_1.Field)({ reference: () => LedgerAccount }),
283
+ tslib_1.__metadata("design:type", Number)
284
+ ], Item.prototype, "saleLedgerAccountId", void 0);
285
+ tslib_1.__decorate([
286
+ (0, entity_1.ManyToOne)(),
287
+ tslib_1.__metadata("design:type", LedgerAccount)
288
+ ], Item.prototype, "saleLedgerAccount", void 0);
289
+ tslib_1.__decorate([
290
+ (0, entity_1.Field)({ reference: () => Tax }),
291
+ tslib_1.__metadata("design:type", Number)
292
+ ], Item.prototype, "taxId", void 0);
293
+ tslib_1.__decorate([
294
+ (0, entity_1.ManyToOne)(),
295
+ tslib_1.__metadata("design:type", Tax)
296
+ ], Item.prototype, "tax", void 0);
297
+ tslib_1.__decorate([
298
+ (0, entity_1.Field)({ reference: () => MeasureUnit }),
299
+ tslib_1.__metadata("design:type", Number)
300
+ ], Item.prototype, "measureUnitId", void 0);
301
+ tslib_1.__decorate([
302
+ (0, entity_1.ManyToOne)(),
303
+ tslib_1.__metadata("design:type", MeasureUnit)
304
+ ], Item.prototype, "measureUnit", void 0);
305
+ tslib_1.__decorate([
306
+ (0, entity_1.Field)(),
307
+ tslib_1.__metadata("design:type", Number)
308
+ ], Item.prototype, "salePrice", void 0);
309
+ tslib_1.__decorate([
310
+ (0, entity_1.Field)(),
311
+ tslib_1.__metadata("design:type", Boolean)
312
+ ], Item.prototype, "inventoryable", void 0);
313
+ tslib_1.__decorate([
314
+ (0, entity_1.ManyToMany)({ entity: () => Tag, through: () => ItemTag, cascade: true }),
315
+ tslib_1.__metadata("design:type", Array)
316
+ ], Item.prototype, "tags", void 0);
317
+ tslib_1.__decorate([
318
+ (0, entity_1.Field)({
319
+ /**
320
+ * `virtual` property allows defining the value for a non-persistent field,
321
+ * such value might be a scalar or a (`raw`) function. Virtual-fields can be
322
+ * used in `$project`, `$filter` and `$having` as a common field whose value
323
+ * is replaced at runtime.
324
+ */
325
+ virtual: (0, util_1.raw)(({ escapedPrefix, dialect }) => {
326
+ const query = dialect.count(ItemTag, {
327
+ $filter: {
328
+ itemId: (0, util_1.raw)(`${escapedPrefix}${dialect.escapeId('id')}`),
329
+ },
330
+ }, { autoPrefix: true });
331
+ return `(${query})`;
332
+ }),
333
+ }),
334
+ tslib_1.__metadata("design:type", Number)
335
+ ], Item.prototype, "tagsCount", void 0);
336
+ Item = tslib_1.__decorate([
337
+ (0, entity_1.Entity)()
338
+ ], Item);
339
+ exports.Item = Item;
340
+ let Tag = class Tag extends BaseEntity {
341
+ };
342
+ tslib_1.__decorate([
343
+ (0, entity_1.Field)(),
344
+ tslib_1.__metadata("design:type", String)
345
+ ], Tag.prototype, "name", void 0);
346
+ tslib_1.__decorate([
347
+ (0, entity_1.ManyToMany)({ entity: () => Item, mappedBy: (item) => item.tags }),
348
+ tslib_1.__metadata("design:type", Array)
349
+ ], Tag.prototype, "items", void 0);
350
+ tslib_1.__decorate([
351
+ (0, entity_1.Field)({
352
+ virtual: (0, util_1.raw)(({ escapedPrefix, dialect }) => {
353
+ /**
354
+ * `virtual` property allows defining the value for a non-persistent field,
355
+ * such value might be a scalar or a (`raw`) function. Virtual-fields can be
356
+ * used in `$project`, `$filter` and `$having` as a common field whose value
357
+ * is replaced at runtime.
358
+ */
359
+ const query = dialect.count(ItemTag, {
360
+ $filter: {
361
+ tagId: (0, util_1.raw)(`${escapedPrefix}${dialect.escapeId('id')}`),
362
+ },
363
+ }, { autoPrefix: true });
364
+ return `(${query})`;
365
+ }),
366
+ }),
367
+ tslib_1.__metadata("design:type", Number)
368
+ ], Tag.prototype, "itemsCount", void 0);
369
+ Tag = tslib_1.__decorate([
370
+ (0, entity_1.Entity)()
371
+ ], Tag);
372
+ exports.Tag = Tag;
373
+ let ItemTag = class ItemTag {
374
+ };
375
+ tslib_1.__decorate([
376
+ (0, entity_1.Id)(),
377
+ tslib_1.__metadata("design:type", Number)
378
+ ], ItemTag.prototype, "id", void 0);
379
+ tslib_1.__decorate([
380
+ (0, entity_1.Field)({ reference: () => Item }),
381
+ tslib_1.__metadata("design:type", Number)
382
+ ], ItemTag.prototype, "itemId", void 0);
383
+ tslib_1.__decorate([
384
+ (0, entity_1.Field)({ reference: () => Tag }),
385
+ tslib_1.__metadata("design:type", Number)
386
+ ], ItemTag.prototype, "tagId", void 0);
387
+ ItemTag = tslib_1.__decorate([
388
+ (0, entity_1.Entity)()
389
+ ], ItemTag);
390
+ exports.ItemTag = ItemTag;
391
+ let InventoryAdjustment = class InventoryAdjustment extends BaseEntity {
392
+ };
393
+ tslib_1.__decorate([
394
+ (0, entity_1.OneToMany)({
395
+ entity: () => ItemAdjustment,
396
+ mappedBy: (rel) => rel.inventoryAdjustment,
397
+ cascade: true,
398
+ }),
399
+ tslib_1.__metadata("design:type", Array)
400
+ ], InventoryAdjustment.prototype, "itemAdjustments", void 0);
401
+ tslib_1.__decorate([
402
+ (0, entity_1.Field)(),
403
+ tslib_1.__metadata("design:type", Date)
404
+ ], InventoryAdjustment.prototype, "date", void 0);
405
+ tslib_1.__decorate([
406
+ (0, entity_1.Field)(),
407
+ tslib_1.__metadata("design:type", String)
408
+ ], InventoryAdjustment.prototype, "description", void 0);
409
+ InventoryAdjustment = tslib_1.__decorate([
410
+ (0, entity_1.Entity)()
411
+ ], InventoryAdjustment);
412
+ exports.InventoryAdjustment = InventoryAdjustment;
413
+ let ItemAdjustment = class ItemAdjustment extends BaseEntity {
414
+ };
415
+ tslib_1.__decorate([
416
+ (0, entity_1.Field)({ reference: () => Item }),
417
+ tslib_1.__metadata("design:type", Number)
418
+ ], ItemAdjustment.prototype, "itemId", void 0);
419
+ tslib_1.__decorate([
420
+ (0, entity_1.ManyToOne)(),
421
+ tslib_1.__metadata("design:type", Item)
422
+ ], ItemAdjustment.prototype, "item", void 0);
423
+ tslib_1.__decorate([
424
+ (0, entity_1.Field)(),
425
+ tslib_1.__metadata("design:type", Number)
426
+ ], ItemAdjustment.prototype, "number", void 0);
427
+ tslib_1.__decorate([
428
+ (0, entity_1.Field)(),
429
+ tslib_1.__metadata("design:type", Number)
430
+ ], ItemAdjustment.prototype, "buyPrice", void 0);
431
+ tslib_1.__decorate([
432
+ (0, entity_1.Field)({ reference: () => Storehouse }),
433
+ tslib_1.__metadata("design:type", Number)
434
+ ], ItemAdjustment.prototype, "storehouseId", void 0);
435
+ tslib_1.__decorate([
436
+ (0, entity_1.ManyToOne)(),
437
+ tslib_1.__metadata("design:type", Storehouse)
438
+ ], ItemAdjustment.prototype, "storehouse", void 0);
439
+ tslib_1.__decorate([
440
+ (0, entity_1.Field)({ reference: () => InventoryAdjustment }),
441
+ tslib_1.__metadata("design:type", Number)
442
+ ], ItemAdjustment.prototype, "inventoryAdjustmentId", void 0);
443
+ tslib_1.__decorate([
444
+ (0, entity_1.ManyToOne)(),
445
+ tslib_1.__metadata("design:type", InventoryAdjustment)
446
+ ], ItemAdjustment.prototype, "inventoryAdjustment", void 0);
447
+ ItemAdjustment = tslib_1.__decorate([
448
+ (0, entity_1.Entity)()
449
+ ], ItemAdjustment);
450
+ exports.ItemAdjustment = ItemAdjustment;
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5TW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2VudGl0eU1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBb0M7QUFDcEMsNkNBQWlHO0FBQ2pHLHlDQUFxQztBQUNyQyx5Q0FBdUM7QUEyQnZDOzs7R0FHRztBQUNILE1BQXNCLFVBQVU7Q0EwQi9CO0FBeEJDO0lBREMsSUFBQSxXQUFFLEdBQUU7O3NDQUNPO0FBS1o7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7NkNBQ2pCO0FBRW5CO0lBREMsSUFBQSxrQkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDOzsyQ0FDbEI7QUFFbkI7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7NkNBQ2Q7QUFFbkI7SUFEQyxJQUFBLGtCQUFTLEVBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7OzJDQUNsQjtBQU1oQjtJQURDLElBQUEsY0FBSyxFQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDOzs2Q0FDbkI7QUFNbkI7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzs7NkNBQ25CO0FBekJyQixnQ0EwQkM7QUFFRDs7R0FFRztBQUVILElBQWEsT0FBTyxHQUFwQixNQUFhLE9BQVEsU0FBUSxVQUFVO0NBS3RDLENBQUE7QUFIQztJQURDLElBQUEsY0FBSyxHQUFFOztxQ0FDTTtBQUVkO0lBREMsSUFBQSxjQUFLLEdBQUU7OzRDQUNhO0FBSlYsT0FBTztJQURuQixJQUFBLGVBQU0sR0FBRTtHQUNJLE9BQU8sQ0FLbkI7QUFMWSwwQkFBTztBQU9wQjs7R0FFRztBQUVILElBQWEsT0FBTyxHQUFwQixNQUFhLE9BQVEsU0FBUSxVQUFVO0NBYXRDLENBQUE7QUFMQztJQURDLElBQUEsV0FBRSxFQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDOzttQ0FDRTtBQUVyQjtJQURDLElBQUEsY0FBSyxFQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDOzt3Q0FDUjtBQUVqQjtJQURDLElBQUEsaUJBQVEsRUFBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7d0NBQ1I7QUFaZCxPQUFPO0lBRG5CLElBQUEsZUFBTSxFQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDO0dBQ3BCLE9BQU8sQ0FhbkI7QUFiWSwwQkFBTztBQWdCcEIsSUFBYSxJQUFJLFlBQWpCLE1BQWEsSUFBSyxTQUFRLFVBQVU7Q0FjbkMsQ0FBQTtBQVpDO0lBREMsSUFBQSxjQUFLLEdBQUU7O2tDQUNNO0FBRWQ7SUFEQyxJQUFBLGNBQUssR0FBRTs7bUNBQ087QUFFZjtJQURDLElBQUEsY0FBSyxHQUFFOztzQ0FDVTtBQUtsQjtJQURDLElBQUEsaUJBQVEsRUFBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztzQ0FDakYsT0FBTztxQ0FBQztBQUVsQjtJQURDLElBQUEsa0JBQVMsRUFBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDOzttQ0FDeEM7QUFiSixJQUFJO0lBRGhCLElBQUEsZUFBTSxHQUFFO0dBQ0ksSUFBSSxDQWNoQjtBQWRZLG9CQUFJO0FBaUJqQixJQUFhLGFBQWEscUJBQTFCLE1BQWEsYUFBYyxTQUFRLFVBQVU7Q0FTNUMsQ0FBQTtBQVBDO0lBREMsSUFBQSxjQUFLLEdBQUU7OzJDQUNNO0FBRWQ7SUFEQyxJQUFBLGNBQUssR0FBRTs7a0RBQ2E7QUFFckI7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFhLEVBQUUsQ0FBQzs7cURBQ2xCO0FBRXhCO0lBREMsSUFBQSxrQkFBUyxHQUFFO3NDQUNHLGFBQWE7bURBQUM7QUFSbEIsYUFBYTtJQUR6QixJQUFBLGVBQU0sR0FBRTtHQUNJLGFBQWEsQ0FTekI7QUFUWSxzQ0FBYTtBQVkxQixJQUFhLFdBQVcsR0FBeEIsTUFBYSxXQUFZLFNBQVEsVUFBVTtDQW1CMUMsQ0FBQTtBQUxDO0lBREMsSUFBQSxXQUFFLEVBQUMsRUFBRSxRQUFRLEVBQUUsU0FBTSxFQUFFLENBQUM7O3VDQUNiO0FBRVo7SUFEQyxJQUFBLGNBQUssR0FBRTs7eUNBQ007QUFFZDtJQURDLElBQUEsY0FBSyxHQUFFOztnREFDYTtBQWxCVixXQUFXO0lBRHZCLElBQUEsZUFBTSxHQUFFO0dBQ0ksV0FBVyxDQW1CdkI7QUFuQlksa0NBQVc7QUFxQnhCLE1BQWEsSUFBSTtDQVdoQjtBQVRDO0lBREMsSUFBQSxjQUFLLEdBQUU7O2tDQUNNO0FBRWQ7SUFEQyxJQUFBLGNBQUssR0FBRTs7d0NBQ1k7QUFFcEI7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7d0NBQ3BCO0FBRXBCO0lBREMsSUFBQSxrQkFBUyxHQUFFO3NDQUNELFdBQVc7c0NBQUM7QUFFdkI7SUFEQyxJQUFBLGNBQUssR0FBRTs7eUNBQ2E7QUFWdkIsb0JBV0M7QUFHRCxJQUFhLEdBQUcsR0FBaEIsTUFBYSxHQUFJLFNBQVEsVUFBVTtDQVdsQyxDQUFBO0FBVEM7SUFEQyxJQUFBLGNBQUssR0FBRTs7aUNBQ007QUFFZDtJQURDLElBQUEsY0FBSyxHQUFFOzt1Q0FDWTtBQUVwQjtJQURDLElBQUEsY0FBSyxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDOzt1Q0FDcEI7QUFFcEI7SUFEQyxJQUFBLGtCQUFTLEdBQUU7c0NBQ0QsV0FBVztxQ0FBQztBQUV2QjtJQURDLElBQUEsY0FBSyxHQUFFOzt3Q0FDYTtBQVZWLEdBQUc7SUFEZixJQUFBLGVBQU0sR0FBRTtHQUNJLEdBQUcsQ0FXZjtBQVhZLGtCQUFHO0FBYWhCOztHQUVHO0FBRUgsSUFBYSxtQkFBbUIsR0FBaEMsTUFBYSxtQkFBb0IsU0FBUSxVQUFVO0NBVWxELENBQUE7QUFSQztJQURDLElBQUEsY0FBSyxHQUFFOztpREFDTTtBQUVkO0lBREMsSUFBQSxrQkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQzs7eURBQy9EO0FBSzdCO0lBREMsSUFBQSxjQUFLLEVBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7O3NEQUNuQjtBQVRSLG1CQUFtQjtJQUQvQixJQUFBLGVBQU0sRUFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztHQUNoQixtQkFBbUIsQ0FVL0I7QUFWWSxrREFBbUI7QUFhaEMsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBWSxTQUFRLFVBQVU7Q0FTMUMsQ0FBQTtBQVBDO0lBREMsSUFBQSxjQUFLLEdBQUU7O3lDQUNNO0FBRWQ7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDOzsrQ0FDNUI7QUFFcEI7SUFEQyxJQUFBLGtCQUFTLEVBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7c0NBQ3ZCLG1CQUFtQjs2Q0FBQztBQUUvQjtJQURDLElBQUEsY0FBSyxFQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDOzs4Q0FDbkI7QUFSUixXQUFXO0lBRHZCLElBQUEsZUFBTSxFQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0dBQ2hCLFdBQVcsQ0FTdkI7QUFUWSxrQ0FBVztBQVl4QixJQUFhLFVBQVUsR0FBdkIsTUFBYSxVQUFXLFNBQVEsVUFBVTtDQU96QyxDQUFBO0FBTEM7SUFEQyxJQUFBLGNBQUssR0FBRTs7d0NBQ007QUFFZDtJQURDLElBQUEsY0FBSyxHQUFFOzsyQ0FDUztBQUVqQjtJQURDLElBQUEsY0FBSyxHQUFFOzsrQ0FDYTtBQU5WLFVBQVU7SUFEdEIsSUFBQSxlQUFNLEdBQUU7R0FDSSxVQUFVLENBT3RCO0FBUFksZ0NBQVU7QUFVdkIsSUFBYSxJQUFJLEdBQWpCLE1BQWEsSUFBSyxTQUFRLFVBQVU7Q0FrRG5DLENBQUE7QUFoREM7SUFEQyxJQUFBLGNBQUssR0FBRTs7a0NBQ007QUFFZDtJQURDLElBQUEsY0FBSyxHQUFFOzt5Q0FDYTtBQUVyQjtJQURDLElBQUEsY0FBSyxHQUFFOztrQ0FDTTtBQUVkO0lBREMsSUFBQSxjQUFLLEVBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7O2dEQUNkO0FBRTVCO0lBREMsSUFBQSxrQkFBUyxHQUFFO3NDQUNPLGFBQWE7OENBQUM7QUFFakM7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQzs7aURBQ2I7QUFFN0I7SUFEQyxJQUFBLGtCQUFTLEdBQUU7c0NBQ1EsYUFBYTsrQ0FBQztBQUVsQztJQURDLElBQUEsY0FBSyxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDOzttQ0FDakI7QUFFZjtJQURDLElBQUEsa0JBQVMsR0FBRTtzQ0FDTixHQUFHO2lDQUFDO0FBRVY7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7MkNBQ2pCO0FBRXZCO0lBREMsSUFBQSxrQkFBUyxHQUFFO3NDQUNFLFdBQVc7eUNBQUM7QUFFMUI7SUFEQyxJQUFBLGNBQUssR0FBRTs7dUNBQ1c7QUFFbkI7SUFEQyxJQUFBLGNBQUssR0FBRTs7MkNBQ2dCO0FBRXhCO0lBREMsSUFBQSxtQkFBVSxFQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQzs7a0NBQzVEO0FBcUJiO0lBcEJDLElBQUEsY0FBSyxFQUFDO1FBQ0w7Ozs7O1dBS0c7UUFDSCxPQUFPLEVBQUUsSUFBQSxVQUFHLEVBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQzFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQ3pCLE9BQU8sRUFDUDtnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsTUFBTSxFQUFFLElBQUEsVUFBRyxFQUFDLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztpQkFDekQ7YUFDRixFQUNELEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUNyQixDQUFDO1lBQ0YsT0FBTyxJQUFJLEtBQUssR0FBRyxDQUFDO1FBQ3RCLENBQUMsQ0FBQztLQUNILENBQUM7O3VDQUNpQjtBQWpEUixJQUFJO0lBRGhCLElBQUEsZUFBTSxHQUFFO0dBQ0ksSUFBSSxDQWtEaEI7QUFsRFksb0JBQUk7QUFxRGpCLElBQWEsR0FBRyxHQUFoQixNQUFhLEdBQUksU0FBUSxVQUFVO0NBMEJsQyxDQUFBO0FBeEJDO0lBREMsSUFBQSxjQUFLLEdBQUU7O2lDQUNNO0FBRWQ7SUFEQyxJQUFBLG1CQUFVLEVBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDOztrQ0FDbkQ7QUFxQmY7SUFwQkMsSUFBQSxjQUFLLEVBQUM7UUFDTCxPQUFPLEVBQUUsSUFBQSxVQUFHLEVBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQzFDOzs7OztlQUtHO1lBQ0gsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FDekIsT0FBTyxFQUNQO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxLQUFLLEVBQUUsSUFBQSxVQUFHLEVBQUMsR0FBRyxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2lCQUN4RDthQUNGLEVBQ0QsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQ3JCLENBQUM7WUFDRixPQUFPLElBQUksS0FBSyxHQUFHLENBQUM7UUFDdEIsQ0FBQyxDQUFDO0tBQ0gsQ0FBQzs7dUNBQ2tCO0FBekJULEdBQUc7SUFEZixJQUFBLGVBQU0sR0FBRTtHQUNJLEdBQUcsQ0EwQmY7QUExQlksa0JBQUc7QUE2QmhCLElBQWEsT0FBTyxHQUFwQixNQUFhLE9BQU87Q0FPbkIsQ0FBQTtBQUxDO0lBREMsSUFBQSxXQUFFLEdBQUU7O21DQUNPO0FBRVo7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7dUNBQ2pCO0FBRWhCO0lBREMsSUFBQSxjQUFLLEVBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7O3NDQUNqQjtBQU5KLE9BQU87SUFEbkIsSUFBQSxlQUFNLEdBQUU7R0FDSSxPQUFPLENBT25CO0FBUFksMEJBQU87QUFVcEIsSUFBYSxtQkFBbUIsR0FBaEMsTUFBYSxtQkFBb0IsU0FBUSxVQUFVO0NBV2xELENBQUE7QUFMQztJQUxDLElBQUEsa0JBQVMsRUFBQztRQUNULE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjO1FBQzVCLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtRQUMxQyxPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUM7OzREQUNpQztBQUVuQztJQURDLElBQUEsY0FBSyxHQUFFO3NDQUNELElBQUk7aURBQUM7QUFFWjtJQURDLElBQUEsY0FBSyxHQUFFOzt3REFDYTtBQVZWLG1CQUFtQjtJQUQvQixJQUFBLGVBQU0sR0FBRTtHQUNJLG1CQUFtQixDQVcvQjtBQVhZLGtEQUFtQjtBQWNoQyxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFlLFNBQVEsVUFBVTtDQWlCN0MsQ0FBQTtBQWZDO0lBREMsSUFBQSxjQUFLLEVBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7OzhDQUNqQjtBQUVoQjtJQURDLElBQUEsa0JBQVMsR0FBRTtzQ0FDTCxJQUFJOzRDQUFDO0FBRVo7SUFEQyxJQUFBLGNBQUssR0FBRTs7OENBQ1E7QUFFaEI7SUFEQyxJQUFBLGNBQUssR0FBRTs7Z0RBQ1U7QUFFbEI7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzs7b0RBQ2pCO0FBRXRCO0lBREMsSUFBQSxrQkFBUyxHQUFFO3NDQUNDLFVBQVU7a0RBQUM7QUFFeEI7SUFEQyxJQUFBLGNBQUssRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDOzs2REFDakI7QUFFL0I7SUFEQyxJQUFBLGtCQUFTLEdBQUU7c0NBQ1UsbUJBQW1COzJEQUFDO0FBaEIvQixjQUFjO0lBRDFCLElBQUEsZUFBTSxHQUFFO0dBQ0ksY0FBYyxDQWlCMUI7QUFqQlksd0NBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEZpZWxkLCBNYW55VG9PbmUsIElkLCBPbmVUb01hbnksIEVudGl0eSwgT25lVG9PbmUsIE1hbnlUb01hbnkgfSBmcm9tICdAdXFsL2NvcmUvZW50aXR5JztcbmltcG9ydCB7IHJhdyB9IGZyb20gJ0B1cWwvY29yZS91dGlsJztcbmltcG9ydCB7IGlkS2V5IH0gZnJvbSAnQHVxbC9jb3JlL3R5cGUnO1xuXG4vKipcbiAqIGludGVyZmFjZXMgY2FuIChvcHRpb25hbGx5KSBiZSB1c2VkIHRvIGF2b2lkIGNpcmN1bGFyLXJlZmVyZW5jZSBpc3N1ZSBiZXR3ZWVuIGVudGl0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHkge1xuICBpZD86IG51bWJlcjtcbiAgY29tcGFueUlkPzogbnVtYmVyO1xuICBjb21wYW55PzogSUNvbXBhbnk7XG4gIGNyZWF0b3JJZD86IG51bWJlcjtcbiAgY3JlYXRvcj86IElVc2VyO1xuICBjcmVhdGVkQXQ/OiBudW1iZXI7XG4gIHVwZGF0ZWRBdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElDb21wYW55IGV4dGVuZHMgSUVudGl0eSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSVVzZXIgZXh0ZW5kcyBJRW50aXR5IHtcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuICBwcm9maWxlPzogUHJvZmlsZTtcbn1cblxuLyoqXG4gKiBhbiBhYnN0cmFjdCBjbGFzcyBjYW4gKG9wdGlvbmFsbHkpIGJlIHVzZWQgYXMgYSBcInRlbXBsYXRlXCIgZm9yIHRoZSBlbnRpdGllc1xuICogKHNvIHRoZSBjb21tb24gYXR0cmlidXRlcycgZGVjbGFyYXRpb24gaXMgcmV1c2VkKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VFbnRpdHkgaW1wbGVtZW50cyBJRW50aXR5IHtcbiAgQElkKClcbiAgaWQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBmb3JlaWduLWtleXMgYXJlIHJlYWxseSBzaW1wbGUgdG8gc3BlY2lmeVxuICAgKi9cbiAgQEZpZWxkKHsgcmVmZXJlbmNlOiAoKSA9PiBDb21wYW55IH0pXG4gIGNvbXBhbnlJZD86IG51bWJlcjtcbiAgQE1hbnlUb09uZSh7IGVudGl0eTogKCkgPT4gQ29tcGFueSB9KVxuICBjb21wYW55PzogSUNvbXBhbnk7XG4gIEBGaWVsZCh7IHJlZmVyZW5jZTogKCkgPT4gVXNlciB9KVxuICBjcmVhdG9ySWQ/OiBudW1iZXI7XG4gIEBNYW55VG9PbmUoeyBlbnRpdHk6ICgpID0+IFVzZXIgfSlcbiAgY3JlYXRvcj86IElVc2VyO1xuICAvKipcbiAgICogJ29uSW5zZXJ0JyBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgY3VzdG9tIG1lY2hhbmlzbSBmb3JcbiAgICogb2J0YWluaW5nIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIHdoZW4gaW5zZXJ0aW5nOlxuICAgKi9cbiAgQEZpZWxkKHsgb25JbnNlcnQ6ICgpID0+IERhdGUubm93KCkgfSlcbiAgY3JlYXRlZEF0PzogbnVtYmVyO1xuICAvKipcbiAgICogJ29uVXBkYXRlJyBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgY3VzdG9tIG1lY2hhbmlzbSBmb3JcbiAgICogb2J0YWluaW5nIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIHdoZW4gdXBkYXRpbmc6XG4gICAqL1xuICBARmllbGQoeyBvblVwZGF0ZTogKCkgPT4gRGF0ZS5ub3coKSB9KVxuICB1cGRhdGVkQXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogYENvbXBhbnlgIHdpbGwgaW5oZXJpdCBhbGwgdGhlIGZpZWxkcyAoaW5jbHVkaW5nIHRoZSBgSWRgKSBkZWNsYXJlZCBpbiBgQmFzZUVudGl0eWAuXG4gKi9cbkBFbnRpdHkoKVxuZXhwb3J0IGNsYXNzIENvbXBhbnkgZXh0ZW5kcyBCYXNlRW50aXR5IGltcGxlbWVudHMgSUNvbXBhbnkge1xuICBARmllbGQoKVxuICBuYW1lPzogc3RyaW5nO1xuICBARmllbGQoKVxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBhbmQgZW50aXR5IGNhbiBzcGVjaWZ5IHRoZSB0YWJsZSBuYW1lXG4gKi9cbkBFbnRpdHkoeyBuYW1lOiAndXNlcl9wcm9maWxlJyB9KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGUgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgLyoqXG4gICAqIGFuIGVudGl0eSBjYW4gc3BlY2lmeSBpdHMgb3duIElEIEZpZWxkIGFuZCBzdGlsbCBpbmhlcml0IHRoZSBvdGhlcnNcbiAgICogY29sdW1ucy9yZWxhdGlvbnMgZnJvbSBpdHMgcGFyZW50IGVudGl0eS5cbiAgICogJ29uSW5zZXJ0JyBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgY3VzdG9tIG1lY2hhbmlzbSBmb3JcbiAgICogYXV0by1nZW5lcmF0aW5nIHRoZSBwcmltYXJ5LWtleSdzIHZhbHVlIHdoZW4gaW5zZXJ0aW5nLlxuICAgKi9cbiAgQElkKHsgbmFtZTogJ3BrJyB9KVxuICBvdmVycmlkZSBpZD86IG51bWJlcjtcbiAgQEZpZWxkKHsgbmFtZTogJ2ltYWdlJyB9KVxuICBwaWN0dXJlPzogc3RyaW5nO1xuICBAT25lVG9PbmUoeyBlbnRpdHk6ICgpID0+IFVzZXIgfSlcbiAgb3ZlcnJpZGUgY3JlYXRvcj86IElVc2VyO1xufVxuXG5ARW50aXR5KClcbmV4cG9ydCBjbGFzcyBVc2VyIGV4dGVuZHMgQmFzZUVudGl0eSBpbXBsZW1lbnRzIElVc2VyIHtcbiAgQEZpZWxkKClcbiAgbmFtZT86IHN0cmluZztcbiAgQEZpZWxkKClcbiAgZW1haWw/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuICAvKipcbiAgICogYG1hcHBlZEJ5YCBjYW4gYmUgYSBjYWxsYmFjayBvciBhIHN0cmluZyAoY2FsbGJhY2sgaXMgdXNlZnVsIGZvciBhdXRvLXJlZmFjdG9yaW5nKS5cbiAgICovXG4gIEBPbmVUb09uZSh7IGVudGl0eTogKCkgPT4gUHJvZmlsZSwgbWFwcGVkQnk6IChwcm9maWxlKSA9PiBwcm9maWxlLmNyZWF0b3IsIGNhc2NhZGU6IHRydWUgfSlcbiAgcHJvZmlsZT86IFByb2ZpbGU7XG4gIEBPbmVUb01hbnkoeyBlbnRpdHk6ICgpID0+IFVzZXIsIG1hcHBlZEJ5OiAnY3JlYXRvcicgfSlcbiAgdXNlcnM/OiBVc2VyW107XG59XG5cbkBFbnRpdHkoKVxuZXhwb3J0IGNsYXNzIExlZGdlckFjY291bnQgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgQEZpZWxkKClcbiAgbmFtZT86IHN0cmluZztcbiAgQEZpZWxkKClcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBGaWVsZCh7IHJlZmVyZW5jZTogKCkgPT4gTGVkZ2VyQWNjb3VudCB9KVxuICBwYXJlbnRMZWRnZXJJZD86IG51bWJlcjtcbiAgQE1hbnlUb09uZSgpXG4gIHBhcmVudExlZGdlcj86IExlZGdlckFjY291bnQ7XG59XG5cbkBFbnRpdHkoKVxuZXhwb3J0IGNsYXNzIFRheENhdGVnb3J5IGV4dGVuZHMgQmFzZUVudGl0eSB7XG4gIC8qKlxuICAgKiBgaWRLZXlgIHN5bWJvbCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBpZGVudGlmaWVyIHByb3BlcnR5LFxuICAgKiBzbyB0aGUgdHlwZSBvZiB0aGUgaWRlbnRpZmllciBjYW4gYWx3YXlzIGJlIHR5cGUtc2FmZVxuICAgKiAodGhlIGlkZW50aWZpZXJzIG5hbWVkIGFzIGBpZGAgb3IgYF9pZGAgYXJlIGF1dG8taW5mZXJyZWQpLlxuICAgKi9cbiAgW2lkS2V5XT86ICdwayc7XG4gIC8qKlxuICAgKiBhbiBlbnRpdHkgY2FuIHNwZWNpZnkgaXRzIG93biBJRCBGaWVsZCBhbmQgc3RpbGwgaW5oZXJpdCB0aGUgb3RoZXJzXG4gICAqIGNvbHVtbnMvcmVsYXRpb25zIGZyb20gaXRzIHBhcmVudCBlbnRpdHkuXG4gICAqICdvbkluc2VydCcgY2FsbGJhY2sgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGN1c3RvbSBtZWNoYW5pc20gZm9yXG4gICAqIGF1dG8tZ2VuZXJhdGluZyB0aGUgcHJpbWFyeS1rZXkncyB2YWx1ZSB3aGVuIGluc2VydGluZy5cbiAgICovXG4gIEBJZCh7IG9uSW5zZXJ0OiB1dWlkdjQgfSlcbiAgcGs/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIG5hbWU/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVGVzdCB7XG4gIEBGaWVsZCgpXG4gIG5hbWU/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIHBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gIEBGaWVsZCh7IHJlZmVyZW5jZTogKCkgPT4gVGF4Q2F0ZWdvcnkgfSlcbiAgY2F0ZWdvcnlJZD86IHN0cmluZztcbiAgQE1hbnlUb09uZSgpXG4gIGNhdGVnb3J5PzogVGF4Q2F0ZWdvcnk7XG4gIEBGaWVsZCgpXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5ARW50aXR5KClcbmV4cG9ydCBjbGFzcyBUYXggZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgQEZpZWxkKClcbiAgbmFtZT86IHN0cmluZztcbiAgQEZpZWxkKClcbiAgcGVyY2VudGFnZT86IG51bWJlcjtcbiAgQEZpZWxkKHsgcmVmZXJlbmNlOiAoKSA9PiBUYXhDYXRlZ29yeSB9KVxuICBjYXRlZ29yeUlkPzogc3RyaW5nO1xuICBATWFueVRvT25lKClcbiAgY2F0ZWdvcnk/OiBUYXhDYXRlZ29yeTtcbiAgQEZpZWxkKClcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYHNvZnREZWxldGVgIHdpbGwgbWFrZSB0aGUgZW50aXR5IFwic29mdCBkZWxldGFibGVcIi5cbiAqL1xuQEVudGl0eSh7IHNvZnREZWxldGU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBNZWFzdXJlVW5pdENhdGVnb3J5IGV4dGVuZHMgQmFzZUVudGl0eSB7XG4gIEBGaWVsZCgpXG4gIG5hbWU/OiBzdHJpbmc7XG4gIEBPbmVUb01hbnkoeyBlbnRpdHk6ICgpID0+IE1lYXN1cmVVbml0LCBtYXBwZWRCeTogKG1lYXN1cmVVbml0KSA9PiBtZWFzdXJlVW5pdC5jYXRlZ29yeUlkIH0pXG4gIG1lYXN1cmVVbml0cz86IE1lYXN1cmVVbml0W107XG4gIC8qKlxuICAgKiBgb25EZWxldGVgIGNhbGxiYWNrIGFsbG93cyB0byBzcGVjaWZ5IHdoaWNoIGZpZWxkIHdpbGwgYmUgdXNlZCB3aGVuIGRlbGV0aW5nL3F1ZXJ5aW5nIHRoaXMgZW50aXR5LlxuICAgKi9cbiAgQEZpZWxkKHsgb25EZWxldGU6ICgpID0+IERhdGUubm93KCkgfSlcbiAgZGVsZXRlZEF0PzogbnVtYmVyO1xufVxuXG5ARW50aXR5KHsgc29mdERlbGV0ZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVVbml0IGV4dGVuZHMgQmFzZUVudGl0eSB7XG4gIEBGaWVsZCgpXG4gIG5hbWU/OiBzdHJpbmc7XG4gIEBGaWVsZCh7IHJlZmVyZW5jZTogKCkgPT4gTWVhc3VyZVVuaXRDYXRlZ29yeSB9KVxuICBjYXRlZ29yeUlkPzogbnVtYmVyO1xuICBATWFueVRvT25lKHsgY2FzY2FkZTogJ3BlcnNpc3QnIH0pXG4gIGNhdGVnb3J5PzogTWVhc3VyZVVuaXRDYXRlZ29yeTtcbiAgQEZpZWxkKHsgb25EZWxldGU6ICgpID0+IERhdGUubm93KCkgfSlcbiAgZGVsZXRlZEF0PzogbnVtYmVyO1xufVxuXG5ARW50aXR5KClcbmV4cG9ydCBjbGFzcyBTdG9yZWhvdXNlIGV4dGVuZHMgQmFzZUVudGl0eSB7XG4gIEBGaWVsZCgpXG4gIG5hbWU/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5ARW50aXR5KClcbmV4cG9ydCBjbGFzcyBJdGVtIGV4dGVuZHMgQmFzZUVudGl0eSB7XG4gIEBGaWVsZCgpXG4gIG5hbWU/OiBzdHJpbmc7XG4gIEBGaWVsZCgpXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBARmllbGQoKVxuICBjb2RlPzogc3RyaW5nO1xuICBARmllbGQoeyByZWZlcmVuY2U6ICgpID0+IExlZGdlckFjY291bnQgfSlcbiAgYnV5TGVkZ2VyQWNjb3VudElkPzogbnVtYmVyO1xuICBATWFueVRvT25lKClcbiAgYnV5TGVkZ2VyQWNjb3VudD86IExlZGdlckFjY291bnQ7XG4gIEBGaWVsZCh7IHJlZmVyZW5jZTogKCkgPT4gTGVkZ2VyQWNjb3VudCB9KVxuICBzYWxlTGVkZ2VyQWNjb3VudElkPzogbnVtYmVyO1xuICBATWFueVRvT25lKClcbiAgc2FsZUxlZGdlckFjY291bnQ/OiBMZWRnZXJBY2NvdW50O1xuICBARmllbGQoeyByZWZlcmVuY2U6ICgpID0+IFRheCB9KVxuICB0YXhJZD86IG51bWJlcjtcbiAgQE1hbnlUb09uZSgpXG4gIHRheD86IFRheDtcbiAgQEZpZWxkKHsgcmVmZXJlbmNlOiAoKSA9PiBNZWFzdXJlVW5pdCB9KVxuICBtZWFzdXJlVW5pdElkPzogbnVtYmVyO1xuICBATWFueVRvT25lKClcbiAgbWVhc3VyZVVuaXQ/OiBNZWFzdXJlVW5pdDtcbiAgQEZpZWxkKClcbiAgc2FsZVByaWNlPzogbnVtYmVyO1xuICBARmllbGQoKVxuICBpbnZlbnRvcnlhYmxlPzogYm9vbGVhbjtcbiAgQE1hbnlUb01hbnkoeyBlbnRpdHk6ICgpID0+IFRhZywgdGhyb3VnaDogKCkgPT4gSXRlbVRhZywgY2FzY2FkZTogdHJ1ZSB9KVxuICB0YWdzPzogVGFnW107XG4gIEBGaWVsZCh7XG4gICAgLyoqXG4gICAgICogYHZpcnR1YWxgIHByb3BlcnR5IGFsbG93cyBkZWZpbmluZyB0aGUgdmFsdWUgZm9yIGEgbm9uLXBlcnNpc3RlbnQgZmllbGQsXG4gICAgICogc3VjaCB2YWx1ZSBtaWdodCBiZSBhIHNjYWxhciBvciBhIChgcmF3YCkgZnVuY3Rpb24uIFZpcnR1YWwtZmllbGRzIGNhbiBiZVxuICAgICAqIHVzZWQgaW4gYCRwcm9qZWN0YCwgYCRmaWx0ZXJgIGFuZCBgJGhhdmluZ2AgYXMgYSBjb21tb24gZmllbGQgd2hvc2UgdmFsdWVcbiAgICAgKiBpcyByZXBsYWNlZCBhdCBydW50aW1lLlxuICAgICAqL1xuICAgIHZpcnR1YWw6IHJhdygoeyBlc2NhcGVkUHJlZml4LCBkaWFsZWN0IH0pID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gZGlhbGVjdC5jb3VudChcbiAgICAgICAgSXRlbVRhZyxcbiAgICAgICAge1xuICAgICAgICAgICRmaWx0ZXI6IHtcbiAgICAgICAgICAgIGl0ZW1JZDogcmF3KGAke2VzY2FwZWRQcmVmaXh9JHtkaWFsZWN0LmVzY2FwZUlkKCdpZCcpfWApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgYXV0b1ByZWZpeDogdHJ1ZSB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGAoJHtxdWVyeX0pYDtcbiAgICB9KSxcbiAgfSlcbiAgdGFnc0NvdW50PzogbnVtYmVyO1xufVxuXG5ARW50aXR5KClcbmV4cG9ydCBjbGFzcyBUYWcgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgQEZpZWxkKClcbiAgbmFtZT86IHN0cmluZztcbiAgQE1hbnlUb01hbnkoeyBlbnRpdHk6ICgpID0+IEl0ZW0sIG1hcHBlZEJ5OiAoaXRlbSkgPT4gaXRlbS50YWdzIH0pXG4gIGl0ZW1zPzogSXRlbVtdO1xuICBARmllbGQoe1xuICAgIHZpcnR1YWw6IHJhdygoeyBlc2NhcGVkUHJlZml4LCBkaWFsZWN0IH0pID0+IHtcbiAgICAgIC8qKlxuICAgICAgICogYHZpcnR1YWxgIHByb3BlcnR5IGFsbG93cyBkZWZpbmluZyB0aGUgdmFsdWUgZm9yIGEgbm9uLXBlcnNpc3RlbnQgZmllbGQsXG4gICAgICAgKiBzdWNoIHZhbHVlIG1pZ2h0IGJlIGEgc2NhbGFyIG9yIGEgKGByYXdgKSBmdW5jdGlvbi4gVmlydHVhbC1maWVsZHMgY2FuIGJlXG4gICAgICAgKiB1c2VkIGluIGAkcHJvamVjdGAsIGAkZmlsdGVyYCBhbmQgYCRoYXZpbmdgIGFzIGEgY29tbW9uIGZpZWxkIHdob3NlIHZhbHVlXG4gICAgICAgKiBpcyByZXBsYWNlZCBhdCBydW50aW1lLlxuICAgICAgICovXG4gICAgICBjb25zdCBxdWVyeSA9IGRpYWxlY3QuY291bnQoXG4gICAgICAgIEl0ZW1UYWcsXG4gICAgICAgIHtcbiAgICAgICAgICAkZmlsdGVyOiB7XG4gICAgICAgICAgICB0YWdJZDogcmF3KGAke2VzY2FwZWRQcmVmaXh9JHtkaWFsZWN0LmVzY2FwZUlkKCdpZCcpfWApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgYXV0b1ByZWZpeDogdHJ1ZSB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGAoJHtxdWVyeX0pYDtcbiAgICB9KSxcbiAgfSlcbiAgaXRlbXNDb3VudD86IG51bWJlcjtcbn1cblxuQEVudGl0eSgpXG5leHBvcnQgY2xhc3MgSXRlbVRhZyB7XG4gIEBJZCgpXG4gIGlkPzogbnVtYmVyO1xuICBARmllbGQoeyByZWZlcmVuY2U6ICgpID0+IEl0ZW0gfSlcbiAgaXRlbUlkPzogbnVtYmVyO1xuICBARmllbGQoeyByZWZlcmVuY2U6ICgpID0+IFRhZyB9KVxuICB0YWdJZD86IG51bWJlcjtcbn1cblxuQEVudGl0eSgpXG5leHBvcnQgY2xhc3MgSW52ZW50b3J5QWRqdXN0bWVudCBleHRlbmRzIEJhc2VFbnRpdHkge1xuICBAT25lVG9NYW55KHtcbiAgICBlbnRpdHk6ICgpID0+IEl0ZW1BZGp1c3RtZW50LFxuICAgIG1hcHBlZEJ5OiAocmVsKSA9PiByZWwuaW52ZW50b3J5QWRqdXN0bWVudCxcbiAgICBjYXNjYWRlOiB0cnVlLFxuICB9KVxuICBpdGVtQWRqdXN0bWVudHM/OiBJdGVtQWRqdXN0bWVudFtdO1xuICBARmllbGQoKVxuICBkYXRlPzogRGF0ZTtcbiAgQEZpZWxkKClcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbkBFbnRpdHkoKVxuZXhwb3J0IGNsYXNzIEl0ZW1BZGp1c3RtZW50IGV4dGVuZHMgQmFzZUVudGl0eSB7XG4gIEBGaWVsZCh7IHJlZmVyZW5jZTogKCkgPT4gSXRlbSB9KVxuICBpdGVtSWQ/OiBudW1iZXI7XG4gIEBNYW55VG9PbmUoKVxuICBpdGVtPzogSXRlbTtcbiAgQEZpZWxkKClcbiAgbnVtYmVyPzogbnVtYmVyO1xuICBARmllbGQoKVxuICBidXlQcmljZT86IG51bWJlcjtcbiAgQEZpZWxkKHsgcmVmZXJlbmNlOiAoKSA9PiBTdG9yZWhvdXNlIH0pXG4gIHN0b3JlaG91c2VJZD86IG51bWJlcjtcbiAgQE1hbnlUb09uZSgpXG4gIHN0b3JlaG91c2U/OiBTdG9yZWhvdXNlO1xuICBARmllbGQoeyByZWZlcmVuY2U6ICgpID0+IEludmVudG9yeUFkanVzdG1lbnQgfSlcbiAgaW52ZW50b3J5QWRqdXN0bWVudElkPzogbnVtYmVyO1xuICBATWFueVRvT25lKClcbiAgaW52ZW50b3J5QWRqdXN0bWVudD86IEludmVudG9yeUFkanVzdG1lbnQ7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './entityMock';
2
+ export * from './spec.util';
3
+ export * from './it.util';
package/test/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./entityMock"), exports);
5
+ tslib_1.__exportStar(require("./spec.util"), exports);
6
+ tslib_1.__exportStar(require("./it.util"), exports);
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBNkI7QUFDN0Isc0RBQTRCO0FBQzVCLG9EQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZW50aXR5TW9jayc7XG5leHBvcnQgKiBmcm9tICcuL3NwZWMudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2l0LnV0aWwnO1xuIl19