@webda/core 3.5.0 → 3.7.0

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 (129) hide show
  1. package/lib/application.d.ts +7 -1
  2. package/lib/application.js.map +1 -1
  3. package/lib/core.d.ts +13 -0
  4. package/lib/core.js +58 -2
  5. package/lib/core.js.map +1 -1
  6. package/lib/core.spec.js +10 -4
  7. package/lib/core.spec.js.map +1 -1
  8. package/lib/index.d.ts +5 -4
  9. package/lib/index.js +5 -4
  10. package/lib/index.js.map +1 -1
  11. package/lib/models/aclmodel.d.ts +23 -10
  12. package/lib/models/aclmodel.js +31 -21
  13. package/lib/models/aclmodel.js.map +1 -1
  14. package/lib/models/aclmodel.spec.js +20 -6
  15. package/lib/models/aclmodel.spec.js.map +1 -1
  16. package/lib/models/coremodel.d.ts +106 -14
  17. package/lib/models/coremodel.js +240 -42
  18. package/lib/models/coremodel.js.map +1 -1
  19. package/lib/models/coremodel.spec.js +21 -4
  20. package/lib/models/coremodel.spec.js.map +1 -1
  21. package/lib/models/ident.d.ts +2 -6
  22. package/lib/models/ident.js.map +1 -1
  23. package/lib/models/ident.spec.js.map +1 -1
  24. package/lib/models/ownermodel.js +1 -1
  25. package/lib/models/ownermodel.js.map +1 -1
  26. package/lib/models/relations.d.ts +20 -20
  27. package/lib/models/relations.js +31 -11
  28. package/lib/models/relations.js.map +1 -1
  29. package/lib/models/relations.spec.d.ts +11 -0
  30. package/lib/models/relations.spec.js +115 -0
  31. package/lib/models/relations.spec.js.map +1 -0
  32. package/lib/models/user.d.ts +2 -2
  33. package/lib/models/user.js.map +1 -1
  34. package/lib/services/asyncevents.d.ts +4 -3
  35. package/lib/services/asyncevents.js +17 -4
  36. package/lib/services/asyncevents.js.map +1 -1
  37. package/lib/services/authentication.js +1 -1
  38. package/lib/services/authentication.js.map +1 -1
  39. package/lib/services/binary.d.ts +26 -2
  40. package/lib/services/binary.js +160 -63
  41. package/lib/services/binary.js.map +1 -1
  42. package/lib/services/binary.spec.js +3 -1
  43. package/lib/services/binary.spec.js.map +1 -1
  44. package/lib/services/cloudbinary.d.ts +0 -18
  45. package/lib/services/cloudbinary.js +0 -94
  46. package/lib/services/cloudbinary.js.map +1 -1
  47. package/lib/services/cloudbinary.spec.js +18 -11
  48. package/lib/services/cloudbinary.spec.js.map +1 -1
  49. package/lib/services/configuration.d.ts +1 -1
  50. package/lib/services/configuration.js +2 -1
  51. package/lib/services/configuration.js.map +1 -1
  52. package/lib/services/domainservice.d.ts +2 -1
  53. package/lib/services/domainservice.js +16 -25
  54. package/lib/services/domainservice.js.map +1 -1
  55. package/lib/services/filebinary.js +1 -1
  56. package/lib/services/filebinary.js.map +1 -1
  57. package/lib/services/filebinary.spec.d.ts +1 -0
  58. package/lib/services/filebinary.spec.js +24 -2
  59. package/lib/services/filebinary.spec.js.map +1 -1
  60. package/lib/services/invitationservice.js +1 -1
  61. package/lib/services/invitationservice.js.map +1 -1
  62. package/lib/services/invitationservice.spec.js +3 -1
  63. package/lib/services/invitationservice.spec.js.map +1 -1
  64. package/lib/services/service.d.ts +4 -5
  65. package/lib/services/service.js +9 -34
  66. package/lib/services/service.js.map +1 -1
  67. package/lib/services/service.spec.js +2 -2
  68. package/lib/services/service.spec.js.map +1 -1
  69. package/lib/stores/aliasstore.js +5 -1
  70. package/lib/stores/aliasstore.js.map +1 -1
  71. package/lib/stores/file.js.map +1 -1
  72. package/lib/stores/file.spec.js +1 -1
  73. package/lib/stores/file.spec.js.map +1 -1
  74. package/lib/stores/mapper.d.ts +4 -4
  75. package/lib/stores/mapper.spec.js +1 -1
  76. package/lib/stores/mapper.spec.js.map +1 -1
  77. package/lib/stores/memory.d.ts +4 -0
  78. package/lib/stores/memory.js +8 -0
  79. package/lib/stores/memory.js.map +1 -1
  80. package/lib/stores/memory.spec.d.ts +1 -0
  81. package/lib/stores/memory.spec.js +34 -3
  82. package/lib/stores/memory.spec.js.map +1 -1
  83. package/lib/stores/modelmapper.d.ts +21 -0
  84. package/lib/stores/modelmapper.js +127 -0
  85. package/lib/stores/modelmapper.js.map +1 -0
  86. package/lib/stores/store.d.ts +27 -9
  87. package/lib/stores/store.js +136 -82
  88. package/lib/stores/store.js.map +1 -1
  89. package/lib/stores/store.spec.js +2 -2
  90. package/lib/stores/store.spec.js.map +1 -1
  91. package/lib/test.js +1 -1
  92. package/lib/test.js.map +1 -1
  93. package/lib/utils/case.d.ts +7 -0
  94. package/lib/utils/case.js +43 -0
  95. package/lib/utils/case.js.map +1 -0
  96. package/lib/utils/case.spec.d.ts +1 -0
  97. package/lib/utils/case.spec.js +50 -0
  98. package/lib/utils/case.spec.js.map +1 -0
  99. package/lib/utils/context.d.ts +15 -2
  100. package/lib/utils/context.js +24 -5
  101. package/lib/utils/context.js.map +1 -1
  102. package/lib/utils/cookie.spec.js +2 -2
  103. package/lib/utils/cookie.spec.js.map +1 -1
  104. package/lib/utils/esm.d.ts +9 -0
  105. package/lib/utils/esm.js +9 -0
  106. package/lib/utils/esm.js.map +1 -1
  107. package/lib/utils/logger.spec.js +5 -2
  108. package/lib/utils/logger.spec.js.map +1 -1
  109. package/lib/utils/serializers.js +8 -1
  110. package/lib/utils/serializers.js.map +1 -1
  111. package/lib/utils/serializers.spec.js +6 -0
  112. package/lib/utils/serializers.spec.js.map +1 -1
  113. package/lib/utils/session.spec.js +1 -1
  114. package/lib/utils/session.spec.js.map +1 -1
  115. package/lib/utils/throttler.d.ts +22 -2
  116. package/lib/utils/throttler.js +35 -3
  117. package/lib/utils/throttler.js.map +1 -1
  118. package/lib/utils/throttler.spec.js +10 -2
  119. package/lib/utils/throttler.spec.js.map +1 -1
  120. package/package.json +10 -10
  121. package/webda.module.json +60 -26
  122. package/test/data/binaries/123/Test_plop_456 +0 -0
  123. package/test/data/binaries/123/data +0 -1
  124. package/test/data/tasks/068e6a96-9fdc-44e2-80fa-d27ed28f5440.json +0 -1
  125. package/test/data/tasks/task_no_owner.json +0 -1
  126. package/test/data/tasks/task_public.json +0 -1
  127. package/test/data/tasks/task_user1.json +0 -1
  128. package/test/data/tasks/task_user2.json +0 -1
  129. package/test/my-cnf.json +0 -11
@@ -1,4 +1,4 @@
1
- import { ModelAction, OperationContext, User, WebContext } from "../index.js";
1
+ import { OperationContext, User, WebContext } from "../index.js";
2
2
  import { CoreModel } from "./coremodel.js";
3
3
  export type Acl = {
4
4
  [key: string]: string;
@@ -21,13 +21,6 @@ export default class AclModel extends CoreModel {
21
21
  * Contains permissions
22
22
  */
23
23
  protected _permissions?: string[];
24
- /**
25
- * Add acls actions
26
- * @returns
27
- */
28
- static getActions(): {
29
- [key: string]: ModelAction;
30
- };
31
24
  /**
32
25
  * Ensure creator has all permissions by default
33
26
  */
@@ -51,12 +44,32 @@ export default class AclModel extends CoreModel {
51
44
  * @param ctx
52
45
  * @returns
53
46
  */
54
- _acl(ctx: WebContext): Promise<void>;
47
+ acl(ctx: WebContext): Promise<void | {
48
+ raw: Acl;
49
+ resolved: {
50
+ permission: string;
51
+ actor: any;
52
+ }[];
53
+ }>;
55
54
  /**
56
55
  * GET
57
56
  * @param ctx
58
57
  */
59
- _httpGetAcls(ctx: OperationContext): Promise<void>;
58
+ _httpGetAcls(ctx: OperationContext): Promise<{
59
+ raw: Acl;
60
+ resolved: {
61
+ permission: string;
62
+ actor: any;
63
+ }[];
64
+ }>;
65
+ /**
66
+ * Get the user public entry
67
+ *
68
+ * Override if using a custom User without backward compatibility
69
+ * @param ace
70
+ * @returns
71
+ */
72
+ getUserPublicEntry(ace: string): Promise<any>;
60
73
  /**
61
74
  *
62
75
  */
@@ -1,5 +1,11 @@
1
- import { WebdaError } from "../index.js";
2
- import { CoreModel } from "./coremodel.js";
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { User, WebdaError } from "../index.js";
8
+ import { Action, CoreModel } from "./coremodel.js";
3
9
  /**
4
10
  * Object that contains ACL to define its own permissions
5
11
  *
@@ -13,18 +19,6 @@ export default class AclModel extends CoreModel {
13
19
  */
14
20
  this.__acl = {};
15
21
  }
16
- /**
17
- * Add acls actions
18
- * @returns
19
- */
20
- static getActions() {
21
- return {
22
- ...super.getActions(),
23
- acl: {
24
- methods: ["PUT", "GET"]
25
- }
26
- };
27
- }
28
22
  /**
29
23
  * Ensure creator has all permissions by default
30
24
  */
@@ -39,8 +33,12 @@ export default class AclModel extends CoreModel {
39
33
  * Add the permissions for current user
40
34
  */
41
35
  async _onGet() {
42
- if (this.getContext()) {
43
- this._permissions = await this.getPermissions(this.getContext());
36
+ const ctx = this.getContext();
37
+ if (!ctx.isGlobal()) {
38
+ this._permissions = await this.getPermissions(ctx);
39
+ }
40
+ else {
41
+ this._permissions = [];
44
42
  }
45
43
  }
46
44
  /**
@@ -62,7 +60,7 @@ export default class AclModel extends CoreModel {
62
60
  * @param ctx
63
61
  * @returns
64
62
  */
65
- _acl(ctx) {
63
+ async acl(ctx) {
66
64
  if (ctx.getHttpContext().getMethod() === "PUT") {
67
65
  return this._httpPutAcls(ctx);
68
66
  }
@@ -75,16 +73,25 @@ export default class AclModel extends CoreModel {
75
73
  * @param ctx
76
74
  */
77
75
  async _httpGetAcls(ctx) {
78
- ctx.write({
76
+ return {
79
77
  raw: this.__acl,
80
78
  resolved: await Promise.all(Object.keys(this.__acl).map(async (ace) => {
81
- let user = await this.getService("Users").get(ace);
82
79
  return {
83
80
  permission: this.__acl[ace],
84
- actor: user?.toPublicEntry()
81
+ actor: await this.getUserPublicEntry(ace)
85
82
  };
86
83
  }))
87
- });
84
+ };
85
+ }
86
+ /**
87
+ * Get the user public entry
88
+ *
89
+ * Override if using a custom User without backward compatibility
90
+ * @param ace
91
+ * @returns
92
+ */
93
+ async getUserPublicEntry(ace) {
94
+ return (await User.ref(ace).get())?.toPublicEntry();
88
95
  }
89
96
  /**
90
97
  *
@@ -155,5 +162,8 @@ export default class AclModel extends CoreModel {
155
162
  return "No permission";
156
163
  }
157
164
  }
165
+ __decorate([
166
+ Action({ methods: ["GET", "PUT"] })
167
+ ], AclModel.prototype, "acl", null);
158
168
  export { AclModel };
159
169
  //# sourceMappingURL=aclmodel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aclmodel.js","sourceRoot":"","sources":["../../src/models/aclmodel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aclmodel.js","sourceRoot":"","sources":["../../src/models/aclmodel.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { suite, test } from "@testdeck/mocha";
8
8
  import * as assert from "assert";
9
- import { AclModel, Core, HttpContext, SimpleUser } from "../index.js";
9
+ import { AclModel, Core, HttpContext, SimpleUser, User } from "../index.js";
10
10
  import { TestApplication } from "../test.js";
11
11
  import { getCommonJS } from "../utils/esm.js";
12
12
  const { __filename, __dirname } = getCommonJS(import.meta.url);
@@ -28,6 +28,9 @@ let AclModelTest = class AclModelTest {
28
28
  return this._user;
29
29
  };
30
30
  }
31
+ cov() {
32
+ assert.deepStrictEqual(this.model.getGroups(undefined, undefined), []);
33
+ }
31
34
  async get() {
32
35
  await assert.rejects(() => this.model.checkAct(this._ctx, "get"));
33
36
  this.model.__acl["gip-123"] = "get";
@@ -108,22 +111,30 @@ let AclModelTest = class AclModelTest {
108
111
  assert.notStrictEqual(actions.acl, undefined);
109
112
  this._ctx.setHttpContext(new HttpContext("test.webda.io", "PUT", "/"));
110
113
  this._ctx.getHttpContext().setBody({ acl: "mine" });
111
- await this.model._acl(this._ctx);
114
+ await this.model.acl(this._ctx);
112
115
  // @ts-ignore
113
116
  assert.strictEqual(this.model.getAcl().acl, "mine");
114
117
  this._ctx.reinit();
115
118
  this._ctx.getHttpContext().setBody({ raw: { acl: "mine" } });
116
- await assert.rejects(() => this.model._acl(this._ctx));
119
+ await assert.rejects(() => this.model.acl(this._ctx));
120
+ this._ctx.reinit();
117
121
  this._ctx.setHttpContext(new HttpContext("test.webda.io", "GET", "/"));
118
- await this.model._acl(this._ctx);
119
- assert.deepStrictEqual(JSON.parse(this._ctx.getResponseBody()), {
122
+ // Action return their result directly
123
+ await User.ref("acl").create({
124
+ displayName: "Plopi"
125
+ });
126
+ let res = await this.model.acl(this._ctx);
127
+ assert.deepStrictEqual(res, {
120
128
  raw: {
121
129
  acl: "mine"
122
130
  },
123
131
  resolved: [
124
132
  {
125
133
  actor: {
126
- displayName: "Plopi"
134
+ avatar: undefined,
135
+ displayName: "Plopi",
136
+ email: undefined,
137
+ uuid: "acl"
127
138
  },
128
139
  permission: "mine"
129
140
  }
@@ -143,6 +154,9 @@ let AclModelTest = class AclModelTest {
143
154
  assert.strictEqual(this.model._creator, "user-uid");
144
155
  }
145
156
  };
157
+ __decorate([
158
+ test
159
+ ], AclModelTest.prototype, "cov", null);
146
160
  __decorate([
147
161
  test
148
162
  ], AclModelTest.prototype, "get", null);
@@ -1 +1 @@
1
- {"version":3,"file":"aclmodel.spec.js","sourceRoot":"","sources":["../../src/models/aclmodel.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aclmodel.spec.js","sourceRoot":"","sources":["../../src/models/aclmodel.spec.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from "events";
1
3
  import { JSONSchema7 } from "json-schema";
2
4
  import { ModelGraph, ModelsTree } from "../application.js";
3
5
  import { Core } from "../core.js";
4
6
  import { Service } from "../services/service.js";
5
- import { Store } from "../stores/store.js";
7
+ import { Store, StoreEvents } from "../stores/store.js";
6
8
  import { OperationContext } from "../utils/context.js";
7
9
  import { HttpMethodType } from "../utils/httpcontext.js";
8
10
  import { ModelActions, RawModel } from "./relations.js";
@@ -15,10 +17,18 @@ import { ModelActions, RawModel } from "./relations.js";
15
17
  * @returns
16
18
  */
17
19
  export declare function Expose(params?: Partial<ExposeParameters>): (target: CoreModelDefinition) => void;
20
+ /**
21
+ * Attribute of an object
22
+ *
23
+ * Filter out methods
24
+ */
25
+ export type Attributes<T extends object> = {
26
+ [K in keyof T]: T[K] extends Function ? never : K;
27
+ }[keyof T];
18
28
  /**
19
29
  * Filter type keys by type
20
30
  */
21
- export type FilterKeys<T extends CoreModel, K> = {
31
+ export type FilterAttributes<T extends CoreModel, K> = {
22
32
  [L in keyof T]: T[L] extends K ? L : never;
23
33
  }[keyof T];
24
34
  /**
@@ -107,7 +117,7 @@ export interface CoreModelDefinition<T extends CoreModel = CoreModel> {
107
117
  * @param object to load data from
108
118
  * @param context if the data is unsafe from http
109
119
  */
110
- factory(model: new () => T, object: any, context?: OperationContext): T;
120
+ factory<T extends CoreModel>(this: Constructor<T>, object: Partial<T>, context?: OperationContext): T;
111
121
  /**
112
122
  * Get the model actions
113
123
  */
@@ -172,10 +182,17 @@ export interface CoreModelDefinition<T extends CoreModel = CoreModel> {
172
182
  results: T[];
173
183
  continuationToken?: string;
174
184
  }>;
185
+ on<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, listener: (evt: StoreEvents[Key]) => any, async?: boolean): void;
186
+ onAsync<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, listener: (evt: StoreEvents[Key]) => any): any;
187
+ emit<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, evt: StoreEvents[Key]): any;
188
+ emitSync<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, evt: StoreEvents[Key]): Promise<void>;
175
189
  }
176
190
  export type Constructor<T, K extends Array<any> = []> = new (...args: K) => T;
177
191
  /**
178
192
  * Make a property hidden from json
193
+ *
194
+ * This property will not be saved in the store
195
+ *
179
196
  * @param target
180
197
  * @param propertyKey
181
198
  */
@@ -193,24 +210,25 @@ export declare class ModelRef<T extends CoreModel> {
193
210
  protected uuid: string;
194
211
  protected store: Store<T>;
195
212
  protected model: CoreModelDefinition<T>;
196
- constructor(uuid: string, model: CoreModelDefinition<T>);
197
- get(): Promise<T>;
213
+ protected parent: CoreModel;
214
+ constructor(uuid: string, model: CoreModelDefinition<T>, parent?: CoreModel);
215
+ get(context?: OperationContext): Promise<T>;
198
216
  set(id: string | T): void;
199
217
  toString(): string;
200
218
  toJSON(): string;
201
219
  getUuid(): string;
202
- deleteItemFromCollection(prop: FilterKeys<T, any[]>, index: number, itemWriteCondition: any, itemWriteConditionField?: string): Promise<void>;
203
- upsertItemToCollection(prop: FilterKeys<T, any[]>, item: any, index?: number, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<void>;
220
+ deleteItemFromCollection(prop: FilterAttributes<T, any[]>, index: number, itemWriteCondition: any, itemWriteConditionField?: string): Promise<this>;
221
+ upsertItemToCollection(prop: FilterAttributes<T, any[]>, item: any, index?: number, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<this>;
204
222
  exists(): Promise<boolean>;
205
223
  delete(): Promise<void>;
206
224
  conditionalPatch(updates: Partial<T>, conditionField: any, condition: any): Promise<boolean>;
207
225
  patch(updates: Partial<T>): Promise<boolean>;
208
- setAttribute(attribute: keyof T, value: any): Promise<void>;
209
- removeAttribute(attribute: keyof T, itemWriteCondition?: any, itemWriteConditionField?: keyof T): Promise<void>;
226
+ setAttribute(attribute: keyof T, value: any): Promise<this>;
227
+ removeAttribute(attribute: keyof T, itemWriteCondition?: any, itemWriteConditionField?: keyof T): Promise<this>;
210
228
  incrementAttributes(info: {
211
- property: FilterKeys<T, number>;
229
+ property: FilterAttributes<T, number>;
212
230
  value: number;
213
- }[]): Promise<any[]>;
231
+ }[]): Promise<this>;
214
232
  }
215
233
  export declare class ModelRefWithCreate<T extends CoreModel> extends ModelRef<T> {
216
234
  /**
@@ -234,11 +252,12 @@ export declare class ModelRefWithCreate<T extends CoreModel> extends ModelRef<T>
234
252
  }
235
253
  export declare class ModelRefCustom<T extends CoreModel> extends ModelRef<T> {
236
254
  uuid: string;
237
- constructor(uuid: string, model: CoreModelDefinition<T>, data: any);
255
+ constructor(uuid: string, model: CoreModelDefinition<T>, data: any, parent: CoreModel);
238
256
  toJSON(): any;
239
257
  getUuid(): string;
240
258
  }
241
259
  export type ModelRefCustomProperties<T extends CoreModel, K> = ModelRefCustom<T> & K;
260
+ export declare const Emitters: WeakMap<Constructor<CoreModel>, EventEmitter>;
242
261
  /**
243
262
  * Basic Object in Webda
244
263
  *
@@ -253,7 +272,7 @@ declare class CoreModel {
253
272
  /**
254
273
  * Class reference to the object
255
274
  */
256
- __class: CoreModelDefinition;
275
+ __class: CoreModelDefinition<this>;
257
276
  /**
258
277
  * Type name
259
278
  */
@@ -290,6 +309,33 @@ declare class CoreModel {
290
309
  */
291
310
  __deleted: boolean;
292
311
  constructor();
312
+ /**
313
+ * Listen to events on the model
314
+ * @param event
315
+ * @param listener
316
+ * @param async
317
+ */
318
+ static on<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, listener: (evt: StoreEvents[Key]) => any, async?: boolean): void;
319
+ /**
320
+ * Emit an event for this class
321
+ * @param this
322
+ * @param event
323
+ * @param evt
324
+ */
325
+ static emit<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, evt: StoreEvents[Key]): void;
326
+ /**
327
+ * Emit an event for this class and wait for all listeners to finish
328
+ * @param this
329
+ * @param event
330
+ * @param evt
331
+ */
332
+ static emitSync<T extends CoreModel, Key extends keyof StoreEvents>(this: Constructor<T>, event: Key, evt: StoreEvents[Key]): Promise<void>;
333
+ /**
334
+ * Listen to events on the model asynchronously
335
+ * @param event
336
+ * @param listener
337
+ */
338
+ static onAsync<Key extends keyof StoreEvents>(event: Key, listener: (evt: StoreEvents[Key]) => any): void;
293
339
  /**
294
340
  *
295
341
  * @returns
@@ -382,6 +428,22 @@ declare class CoreModel {
382
428
  * @param prefix
383
429
  */
384
430
  static flat(target: any, data: any, split?: string, prefix?: string): any;
431
+ /**
432
+ * Complete the query with __type/__types
433
+ * @param query
434
+ * @param includeSubclass
435
+ * @returns
436
+ */
437
+ protected static completeQuery(query: string, includeSubclass?: boolean): string;
438
+ /**
439
+ * Iterate through the model
440
+ * @param this
441
+ * @param query
442
+ * @param includeSubclass
443
+ * @param context
444
+ * @returns
445
+ */
446
+ static iterate<T extends CoreModel>(this: Constructor<T>, query?: string, includeSubclass?: boolean, context?: OperationContext): AsyncGenerator<T>;
385
447
  /**
386
448
  * Query for models
387
449
  * @param this
@@ -443,7 +505,7 @@ declare class CoreModel {
443
505
  * Create an object
444
506
  * @returns
445
507
  */
446
- static factory(model: new () => CoreModel, object: any, context?: OperationContext): CoreModel;
508
+ static factory<T extends CoreModel>(this: Constructor<T>, object: Partial<T>, context?: OperationContext): T;
447
509
  /**
448
510
  * Detect what looks like a CoreModel but can be from different version
449
511
  * @param object
@@ -607,6 +669,36 @@ declare class CoreModel {
607
669
  * Called when object is updated
608
670
  */
609
671
  _onUpdated(): Promise<void>;
672
+ /**
673
+ * Set attribute on the object and database
674
+ * @param property
675
+ * @param value
676
+ */
677
+ setAttribute(property: keyof this, value: any): Promise<void>;
678
+ /**
679
+ * Remove attribute from both the object and db
680
+ * @param property
681
+ */
682
+ removeAttribute(property: keyof this): Promise<void>;
683
+ /**
684
+ * Increment an attribute both in store and object
685
+ * @param property
686
+ * @param value
687
+ */
688
+ incrementAttribute(property: FilterAttributes<this, number>, value: number): Promise<void>;
689
+ /**
690
+ * Return a model ref
691
+ * @returns
692
+ */
693
+ getRef<T extends this>(): ModelRef<T>;
694
+ /**
695
+ * Increment a attributes both in store and object
696
+ * @param info
697
+ */
698
+ incrementAttributes(info: {
699
+ property: string;
700
+ value: number;
701
+ }[]): Promise<void>;
610
702
  }
611
703
  /**
612
704
  * CoreModel with a uuid