@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.
- package/lib/application.d.ts +7 -1
- package/lib/application.js.map +1 -1
- package/lib/core.d.ts +13 -0
- package/lib/core.js +58 -2
- package/lib/core.js.map +1 -1
- package/lib/core.spec.js +10 -4
- package/lib/core.spec.js.map +1 -1
- package/lib/index.d.ts +5 -4
- package/lib/index.js +5 -4
- package/lib/index.js.map +1 -1
- package/lib/models/aclmodel.d.ts +23 -10
- package/lib/models/aclmodel.js +31 -21
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/aclmodel.spec.js +20 -6
- package/lib/models/aclmodel.spec.js.map +1 -1
- package/lib/models/coremodel.d.ts +106 -14
- package/lib/models/coremodel.js +240 -42
- package/lib/models/coremodel.js.map +1 -1
- package/lib/models/coremodel.spec.js +21 -4
- package/lib/models/coremodel.spec.js.map +1 -1
- package/lib/models/ident.d.ts +2 -6
- package/lib/models/ident.js.map +1 -1
- package/lib/models/ident.spec.js.map +1 -1
- package/lib/models/ownermodel.js +1 -1
- package/lib/models/ownermodel.js.map +1 -1
- package/lib/models/relations.d.ts +20 -20
- package/lib/models/relations.js +31 -11
- package/lib/models/relations.js.map +1 -1
- package/lib/models/relations.spec.d.ts +11 -0
- package/lib/models/relations.spec.js +115 -0
- package/lib/models/relations.spec.js.map +1 -0
- package/lib/models/user.d.ts +2 -2
- package/lib/models/user.js.map +1 -1
- package/lib/services/asyncevents.d.ts +4 -3
- package/lib/services/asyncevents.js +17 -4
- package/lib/services/asyncevents.js.map +1 -1
- package/lib/services/authentication.js +1 -1
- package/lib/services/authentication.js.map +1 -1
- package/lib/services/binary.d.ts +26 -2
- package/lib/services/binary.js +160 -63
- package/lib/services/binary.js.map +1 -1
- package/lib/services/binary.spec.js +3 -1
- package/lib/services/binary.spec.js.map +1 -1
- package/lib/services/cloudbinary.d.ts +0 -18
- package/lib/services/cloudbinary.js +0 -94
- package/lib/services/cloudbinary.js.map +1 -1
- package/lib/services/cloudbinary.spec.js +18 -11
- package/lib/services/cloudbinary.spec.js.map +1 -1
- package/lib/services/configuration.d.ts +1 -1
- package/lib/services/configuration.js +2 -1
- package/lib/services/configuration.js.map +1 -1
- package/lib/services/domainservice.d.ts +2 -1
- package/lib/services/domainservice.js +16 -25
- package/lib/services/domainservice.js.map +1 -1
- package/lib/services/filebinary.js +1 -1
- package/lib/services/filebinary.js.map +1 -1
- package/lib/services/filebinary.spec.d.ts +1 -0
- package/lib/services/filebinary.spec.js +24 -2
- package/lib/services/filebinary.spec.js.map +1 -1
- package/lib/services/invitationservice.js +1 -1
- package/lib/services/invitationservice.js.map +1 -1
- package/lib/services/invitationservice.spec.js +3 -1
- package/lib/services/invitationservice.spec.js.map +1 -1
- package/lib/services/service.d.ts +4 -5
- package/lib/services/service.js +9 -34
- package/lib/services/service.js.map +1 -1
- package/lib/services/service.spec.js +2 -2
- package/lib/services/service.spec.js.map +1 -1
- package/lib/stores/aliasstore.js +5 -1
- package/lib/stores/aliasstore.js.map +1 -1
- package/lib/stores/file.js.map +1 -1
- package/lib/stores/file.spec.js +1 -1
- package/lib/stores/file.spec.js.map +1 -1
- package/lib/stores/mapper.d.ts +4 -4
- package/lib/stores/mapper.spec.js +1 -1
- package/lib/stores/mapper.spec.js.map +1 -1
- package/lib/stores/memory.d.ts +4 -0
- package/lib/stores/memory.js +8 -0
- package/lib/stores/memory.js.map +1 -1
- package/lib/stores/memory.spec.d.ts +1 -0
- package/lib/stores/memory.spec.js +34 -3
- package/lib/stores/memory.spec.js.map +1 -1
- package/lib/stores/modelmapper.d.ts +21 -0
- package/lib/stores/modelmapper.js +127 -0
- package/lib/stores/modelmapper.js.map +1 -0
- package/lib/stores/store.d.ts +27 -9
- package/lib/stores/store.js +136 -82
- package/lib/stores/store.js.map +1 -1
- package/lib/stores/store.spec.js +2 -2
- package/lib/stores/store.spec.js.map +1 -1
- package/lib/test.js +1 -1
- package/lib/test.js.map +1 -1
- package/lib/utils/case.d.ts +7 -0
- package/lib/utils/case.js +43 -0
- package/lib/utils/case.js.map +1 -0
- package/lib/utils/case.spec.d.ts +1 -0
- package/lib/utils/case.spec.js +50 -0
- package/lib/utils/case.spec.js.map +1 -0
- package/lib/utils/context.d.ts +15 -2
- package/lib/utils/context.js +24 -5
- package/lib/utils/context.js.map +1 -1
- package/lib/utils/cookie.spec.js +2 -2
- package/lib/utils/cookie.spec.js.map +1 -1
- package/lib/utils/esm.d.ts +9 -0
- package/lib/utils/esm.js +9 -0
- package/lib/utils/esm.js.map +1 -1
- package/lib/utils/logger.spec.js +5 -2
- package/lib/utils/logger.spec.js.map +1 -1
- package/lib/utils/serializers.js +8 -1
- package/lib/utils/serializers.js.map +1 -1
- package/lib/utils/serializers.spec.js +6 -0
- package/lib/utils/serializers.spec.js.map +1 -1
- package/lib/utils/session.spec.js +1 -1
- package/lib/utils/session.spec.js.map +1 -1
- package/lib/utils/throttler.d.ts +22 -2
- package/lib/utils/throttler.js +35 -3
- package/lib/utils/throttler.js.map +1 -1
- package/lib/utils/throttler.spec.js +10 -2
- package/lib/utils/throttler.spec.js.map +1 -1
- package/package.json +10 -10
- package/webda.module.json +60 -26
- package/test/data/binaries/123/Test_plop_456 +0 -0
- package/test/data/binaries/123/data +0 -1
- package/test/data/tasks/068e6a96-9fdc-44e2-80fa-d27ed28f5440.json +0 -1
- package/test/data/tasks/task_no_owner.json +0 -1
- package/test/data/tasks/task_public.json +0 -1
- package/test/data/tasks/task_user1.json +0 -1
- package/test/data/tasks/task_user2.json +0 -1
- package/test/my-cnf.json +0 -11
package/lib/models/aclmodel.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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<
|
|
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
|
*/
|
package/lib/models/aclmodel.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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":"AAAA,OAAO,
|
|
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.
|
|
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.
|
|
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
|
-
|
|
119
|
-
|
|
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
|
-
|
|
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":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAW,UAAU,EAA0B,MAAM,UAAU,CAAC;
|
|
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
|
|
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
|
|
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
|
-
|
|
197
|
-
|
|
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:
|
|
203
|
-
upsertItemToCollection(prop:
|
|
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<
|
|
209
|
-
removeAttribute(attribute: keyof T, itemWriteCondition?: any, itemWriteConditionField?: keyof T): Promise<
|
|
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:
|
|
229
|
+
property: FilterAttributes<T, number>;
|
|
212
230
|
value: number;
|
|
213
|
-
}[]): Promise<
|
|
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
|
|
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
|