@webda/core 2.4.1 → 3.0.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 +171 -34
- package/lib/application.js +243 -47
- package/lib/application.js.map +1 -1
- package/lib/application.spec.js +44 -8
- package/lib/application.spec.js.map +1 -1
- package/lib/core.d.ts +113 -54
- package/lib/core.js +222 -135
- package/lib/core.js.map +1 -1
- package/lib/core.spec.js +87 -43
- package/lib/core.spec.js.map +1 -1
- package/lib/errors.d.ts +65 -0
- package/lib/errors.js +113 -0
- package/lib/errors.js.map +1 -0
- package/lib/errors.spec.d.ts +1 -0
- package/lib/errors.spec.js +33 -0
- package/lib/errors.spec.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/models/aclmodel.d.ts +4 -4
- package/lib/models/aclmodel.js +10 -6
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/aclmodel.spec.js +33 -24
- package/lib/models/aclmodel.spec.js.map +1 -1
- package/lib/models/coremodel.d.ts +284 -92
- package/lib/models/coremodel.js +403 -103
- package/lib/models/coremodel.js.map +1 -1
- package/lib/models/coremodel.spec.js +162 -24
- package/lib/models/coremodel.spec.js.map +1 -1
- package/lib/models/ident.d.ts +20 -6
- package/lib/models/ident.js.map +1 -1
- package/lib/models/ownermodel.d.ts +13 -23
- package/lib/models/ownermodel.js +24 -51
- package/lib/models/ownermodel.js.map +1 -1
- package/lib/models/ownermodel.spec.js +23 -11
- package/lib/models/ownermodel.spec.js.map +1 -1
- package/lib/models/relations.d.ts +167 -0
- package/lib/models/relations.js +113 -0
- package/lib/models/relations.js.map +1 -0
- package/lib/models/rolemodel.d.ts +3 -3
- package/lib/models/rolemodel.js +6 -6
- package/lib/models/rolemodel.js.map +1 -1
- package/lib/models/rolemodel.spec.js +12 -12
- package/lib/models/rolemodel.spec.js.map +1 -1
- package/lib/models/user.d.ts +40 -24
- package/lib/models/user.js +74 -48
- package/lib/models/user.js.map +1 -1
- package/lib/models/user.spec.js +24 -4
- package/lib/models/user.spec.js.map +1 -1
- package/lib/queues/memoryqueue.spec.js +9 -5
- package/lib/queues/memoryqueue.spec.js.map +1 -1
- package/lib/queues/queueservice.js.map +1 -1
- package/lib/router.d.ts +17 -8
- package/lib/router.js +81 -9
- package/lib/router.js.map +1 -1
- package/lib/router.spec.js +89 -5
- package/lib/router.spec.js.map +1 -1
- package/lib/services/asyncevents.spec.js +4 -4
- package/lib/services/authentication.d.ts +21 -22
- package/lib/services/authentication.js +90 -109
- package/lib/services/authentication.js.map +1 -1
- package/lib/services/authentication.spec.js +51 -65
- package/lib/services/authentication.spec.js.map +1 -1
- package/lib/services/binary.d.ts +132 -31
- package/lib/services/binary.js +257 -72
- package/lib/services/binary.js.map +1 -1
- package/lib/services/binary.spec.d.ts +16 -6
- package/lib/services/binary.spec.js +44 -117
- package/lib/services/binary.spec.js.map +1 -1
- package/lib/services/cloudbinary.d.ts +9 -10
- package/lib/services/cloudbinary.js +14 -15
- package/lib/services/cloudbinary.js.map +1 -1
- package/lib/services/cloudbinary.spec.d.ts +2 -2
- package/lib/services/cloudbinary.spec.js +13 -12
- package/lib/services/cloudbinary.spec.js.map +1 -1
- package/lib/services/configuration.js +9 -9
- package/lib/services/configuration.js.map +1 -1
- package/lib/services/configuration.spec.js +5 -7
- package/lib/services/configuration.spec.js.map +1 -1
- package/lib/services/cron.spec.js +3 -4
- package/lib/services/cron.spec.js.map +1 -1
- package/lib/services/cryptoservice.d.ts +2 -2
- package/lib/services/cryptoservice.js +5 -2
- package/lib/services/cryptoservice.js.map +1 -1
- package/lib/services/domainservice.d.ts +113 -0
- package/lib/services/domainservice.js +357 -0
- package/lib/services/domainservice.js.map +1 -0
- package/lib/services/domainservice.spec.d.ts +1 -0
- package/lib/services/domainservice.spec.js +334 -0
- package/lib/services/domainservice.spec.js.map +1 -0
- package/lib/services/echo.d.ts +2 -2
- package/lib/services/echo.js.map +1 -1
- package/lib/services/echo.spec.js +9 -2
- package/lib/services/echo.spec.js.map +1 -1
- package/lib/services/filebinary.d.ts +13 -14
- package/lib/services/filebinary.js +79 -73
- package/lib/services/filebinary.js.map +1 -1
- package/lib/services/filebinary.spec.d.ts +5 -0
- package/lib/services/filebinary.spec.js +222 -11
- package/lib/services/filebinary.spec.js.map +1 -1
- package/lib/services/fileconfiguration.js +7 -7
- package/lib/services/fileconfiguration.js.map +1 -1
- package/lib/services/fileconfiguration.spec.js +23 -24
- package/lib/services/fileconfiguration.spec.js.map +1 -1
- package/lib/services/invitationservice.d.ts +11 -9
- package/lib/services/invitationservice.js +17 -23
- package/lib/services/invitationservice.js.map +1 -1
- package/lib/services/invitationservice.spec.js +43 -40
- package/lib/services/invitationservice.spec.js.map +1 -1
- package/lib/services/kubernetesconfiguration.js +12 -22
- package/lib/services/kubernetesconfiguration.js.map +1 -1
- package/lib/services/kubernetesconfiguration.spec.js +1 -6
- package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
- package/lib/services/mailer.js +1 -1
- package/lib/services/mailer.js.map +1 -1
- package/lib/services/mailer.spec.js +4 -1
- package/lib/services/mailer.spec.js.map +1 -1
- package/lib/services/oauth.d.ts +17 -9
- package/lib/services/oauth.js +30 -4
- package/lib/services/oauth.js.map +1 -1
- package/lib/services/oauth.spec.js +32 -15
- package/lib/services/oauth.spec.js.map +1 -1
- package/lib/services/prometheus.spec.js.map +1 -1
- package/lib/services/proxy.d.ts +9 -8
- package/lib/services/proxy.js +65 -36
- package/lib/services/proxy.js.map +1 -1
- package/lib/services/proxy.spec.js +28 -2
- package/lib/services/proxy.spec.js.map +1 -1
- package/lib/services/resource.d.ts +3 -3
- package/lib/services/resource.js +4 -3
- package/lib/services/resource.js.map +1 -1
- package/lib/services/resource.spec.js +3 -3
- package/lib/services/resource.spec.js.map +1 -1
- package/lib/services/service.d.ts +10 -13
- package/lib/services/service.js +29 -13
- package/lib/services/service.js.map +1 -1
- package/lib/services/service.spec.js +49 -11
- package/lib/services/service.spec.js.map +1 -1
- package/lib/services/version.d.ts +2 -2
- package/lib/services/version.js.map +1 -1
- package/lib/stores/aggregator.js +1 -0
- package/lib/stores/aggregator.js.map +1 -1
- package/lib/stores/aliasstore.d.ts +2 -2
- package/lib/stores/aliasstore.js +15 -4
- package/lib/stores/aliasstore.js.map +1 -1
- package/lib/stores/aliasstore.spec.js +4 -2
- package/lib/stores/aliasstore.spec.js.map +1 -1
- package/lib/stores/file.d.ts +5 -2
- package/lib/stores/file.js +11 -8
- package/lib/stores/file.js.map +1 -1
- package/lib/stores/file.spec.js +21 -34
- package/lib/stores/file.spec.js.map +1 -1
- package/lib/stores/mapper.d.ts +4 -2
- package/lib/stores/mapper.js +18 -11
- package/lib/stores/mapper.js.map +1 -1
- package/lib/stores/mapper.spec.js +6 -3
- package/lib/stores/mapper.spec.js.map +1 -1
- package/lib/stores/memory.d.ts +5 -2
- package/lib/stores/memory.js +11 -9
- package/lib/stores/memory.js.map +1 -1
- package/lib/stores/memory.spec.d.ts +3 -0
- package/lib/stores/memory.spec.js +100 -11
- package/lib/stores/memory.spec.js.map +1 -1
- package/lib/stores/store.d.ts +177 -87
- package/lib/stores/store.js +312 -141
- package/lib/stores/store.js.map +1 -1
- package/lib/stores/store.spec.d.ts +2 -2
- package/lib/stores/store.spec.js +54 -38
- package/lib/stores/store.spec.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLLexer.d.ts +14 -13
- package/lib/stores/webdaql/WebdaQLLexer.js +121 -112
- package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +14 -13
- package/lib/stores/webdaql/WebdaQLParserLexer.js +121 -112
- package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserListener.d.ts +15 -3
- package/lib/stores/webdaql/WebdaQLParserParser.d.ts +23 -13
- package/lib/stores/webdaql/WebdaQLParserParser.js +149 -94
- package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +9 -2
- package/lib/stores/webdaql/query.d.ts +6 -2
- package/lib/stores/webdaql/query.js +14 -1
- package/lib/stores/webdaql/query.js.map +1 -1
- package/lib/stores/webdaql/query.spec.js +10 -1
- package/lib/stores/webdaql/query.spec.js.map +1 -1
- package/lib/test.d.ts +48 -19
- package/lib/test.js +171 -63
- package/lib/test.js.map +1 -1
- package/lib/unpackedapplication.d.ts +5 -0
- package/lib/unpackedapplication.js +58 -10
- package/lib/unpackedapplication.js.map +1 -1
- package/lib/utils/context.d.ts +76 -29
- package/lib/utils/context.js +91 -55
- package/lib/utils/context.js.map +1 -1
- package/lib/utils/context.spec.d.ts +9 -1
- package/lib/utils/context.spec.js +73 -8
- package/lib/utils/context.spec.js.map +1 -1
- package/lib/utils/cookie.d.ts +4 -5
- package/lib/utils/cookie.js +1 -2
- package/lib/utils/cookie.js.map +1 -1
- package/lib/utils/cookie.spec.js +5 -3
- package/lib/utils/cookie.spec.js.map +1 -1
- package/lib/utils/httpcontext.spec.js +9 -3
- package/lib/utils/httpcontext.spec.js.map +1 -1
- package/lib/utils/serializers.d.ts +46 -17
- package/lib/utils/serializers.js +116 -2
- package/lib/utils/serializers.js.map +1 -1
- package/lib/utils/serializers.spec.js +84 -20
- package/lib/utils/serializers.spec.js.map +1 -1
- package/lib/utils/session.d.ts +14 -8
- package/lib/utils/session.js +14 -3
- package/lib/utils/session.js.map +1 -1
- package/lib/utils/session.spec.js +6 -1
- package/lib/utils/session.spec.js.map +1 -1
- package/package.json +16 -10
- package/test/cachedapp/webda.config.json +6 -1
- package/test/config-cached.json +5 -0
- package/test/config-file-missing-file.json +5 -7
- package/test/config-file-no-reload.json +5 -7
- package/test/config-file-reload.json +5 -7
- package/test/config-kube-reload.json +5 -11
- package/test/config-reload.json +2 -4
- package/test/config.json +12 -2
- package/test/moddas/voidstore.js +1 -1
- package/test/models/ident.js +6 -4
- package/test/models/task.js +4 -4
- package/webda.module.json +1587 -1266
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownermodel.js","sourceRoot":"","sources":["../../src/models/ownermodel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ownermodel.js","sourceRoot":"","sources":["../../src/models/ownermodel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAgBvC;;;OAGG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,KAAK,KAAV,IAAI,CAAC,KAAK,GAAK,IAAI,SAAS,CAAO,IAAI,EAAO,IAAI,CAAC,EAAC;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAA+B,EAAE,OAAY,EAAE,cAAwB;QAC9E,OAAO,CAAC,KAAK,KAAb,OAAO,CAAC,KAAK,GAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAC;QACzC,OAAO,CAAC,IAAI,KAAZ,OAAO,CAAC,IAAI,GAAK,IAAI,CAAC,WAAW,EAAE,EAAC;QACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CACV,GAAqB,EACrB,MASU;QAEV,mBAAmB;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,CAAC,EAAE;YAChE,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE;YAClC,OAAO,gDAAgD,CAAC;SACzD;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,KAAK,QAAQ,EAAE;YAClD,OAAO,+BAA+B,CAAC;SACxC;QACD,IAAI,MAAM,KAAK,QAAQ,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;SACvC;QACD,OAAO,GAAG,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAA0B;QAClD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QACD,OAAO;YACL,KAAK,EAAE,YAAY,OAAO,CAAC,gBAAgB,EAAE,oBAAoB;YACjE,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -11,7 +11,7 @@ import { WebdaTest } from "../test.js";
|
|
|
11
11
|
let OwnerModelTest = class OwnerModelTest extends WebdaTest {
|
|
12
12
|
async before() {
|
|
13
13
|
await super.before();
|
|
14
|
-
this._ctx = await this.webda.
|
|
14
|
+
this._ctx = await this.webda.newWebContext(new HttpContext("test.webda.io", "GET", "/"));
|
|
15
15
|
this._session = await this._ctx.newSession();
|
|
16
16
|
this._session.login("none", "none");
|
|
17
17
|
// @ts-ignore
|
|
@@ -43,6 +43,9 @@ let OwnerModelTest = class OwnerModelTest extends WebdaTest {
|
|
|
43
43
|
uuid: "task_public",
|
|
44
44
|
public: true
|
|
45
45
|
});
|
|
46
|
+
await this._taskStore.save({
|
|
47
|
+
uuid: "task_no_owner"
|
|
48
|
+
});
|
|
46
49
|
}
|
|
47
50
|
async postNotLogged() {
|
|
48
51
|
await this.beforeEach();
|
|
@@ -50,7 +53,7 @@ let OwnerModelTest = class OwnerModelTest extends WebdaTest {
|
|
|
50
53
|
name: "Task #1"
|
|
51
54
|
});
|
|
52
55
|
assert.notStrictEqual(executor, undefined);
|
|
53
|
-
await assert.rejects(() => executor.execute(this._ctx),
|
|
56
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403);
|
|
54
57
|
}
|
|
55
58
|
async post() {
|
|
56
59
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "POST", "/tasks", {
|
|
@@ -62,16 +65,22 @@ let OwnerModelTest = class OwnerModelTest extends WebdaTest {
|
|
|
62
65
|
assert.strictEqual(task.name, "Task #1");
|
|
63
66
|
}
|
|
64
67
|
async getWrongOwner() {
|
|
68
|
+
await this.beforeEach();
|
|
69
|
+
this._ctx.getSession().login("fake_user2", "fake_ident");
|
|
70
|
+
let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_no_owner", {});
|
|
71
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403);
|
|
72
|
+
}
|
|
73
|
+
async getNoOwner() {
|
|
65
74
|
await this.beforeEach();
|
|
66
75
|
this._ctx.getSession().login("fake_user2", "fake_ident");
|
|
67
76
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_user1", {});
|
|
68
|
-
await assert.rejects(() => executor.execute(this._ctx),
|
|
77
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403);
|
|
69
78
|
}
|
|
70
79
|
async putWrongOwner() {
|
|
71
80
|
await this.beforeEach();
|
|
72
81
|
this._session.login("fake_user2", "fake_ident");
|
|
73
82
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "PUT", "/tasks/task_user1", {});
|
|
74
|
-
await assert.rejects(() => executor.execute(this._ctx),
|
|
83
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403);
|
|
75
84
|
}
|
|
76
85
|
async put() {
|
|
77
86
|
await this.beforeEach();
|
|
@@ -98,19 +107,19 @@ let OwnerModelTest = class OwnerModelTest extends WebdaTest {
|
|
|
98
107
|
let res = await this._taskStore.query("", this._ctx);
|
|
99
108
|
assert.deepStrictEqual(res.results.map(r => r.getUuid()).sort(), ["task_public", "task_user2"]);
|
|
100
109
|
res = await this._taskStore.query("");
|
|
101
|
-
assert.deepStrictEqual(res.results.length,
|
|
110
|
+
assert.deepStrictEqual(res.results.length, 4);
|
|
102
111
|
res = await this._taskStore.query("uuid = 'task_user1'", this._ctx);
|
|
103
112
|
assert.deepStrictEqual(res.results.length, 0);
|
|
104
113
|
res = await this._taskStore.query("uuid = 'task_public'", this._ctx);
|
|
105
114
|
assert.deepStrictEqual(res.results.length, 1);
|
|
106
115
|
}
|
|
107
|
-
async
|
|
116
|
+
async actions() {
|
|
108
117
|
await this.beforeEach();
|
|
109
118
|
this._session.login("fake_user2", "fake_ident");
|
|
110
119
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_user1/actionable");
|
|
111
120
|
await executor.execute(this._ctx);
|
|
112
121
|
executor = this.getExecutor(this._ctx, "test.webda.io", "PUT", "/tasks/task_user1/impossible");
|
|
113
|
-
await assert.rejects(() => executor.execute(this._ctx), /
|
|
122
|
+
await assert.rejects(() => executor.execute(this._ctx), /No permission/);
|
|
114
123
|
}
|
|
115
124
|
async delete() {
|
|
116
125
|
await this.beforeEach();
|
|
@@ -122,19 +131,19 @@ let OwnerModelTest = class OwnerModelTest extends WebdaTest {
|
|
|
122
131
|
await this.beforeEach();
|
|
123
132
|
this._session.login("fake_user2", "fake_ident");
|
|
124
133
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_user1");
|
|
125
|
-
await assert.rejects(() => executor.execute(this._ctx),
|
|
134
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403);
|
|
126
135
|
}
|
|
127
136
|
async deleteWrongOwnerPublic() {
|
|
128
137
|
await this.beforeEach();
|
|
129
138
|
this._session.login("fake_user2", "fake_ident");
|
|
130
139
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_public");
|
|
131
|
-
await assert.rejects(() => executor.execute(this._ctx),
|
|
140
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403);
|
|
132
141
|
}
|
|
133
142
|
async deleteUnknown() {
|
|
134
143
|
await this.beforeEach();
|
|
135
144
|
this._session.login("fake_user2", "fake_ident");
|
|
136
145
|
let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_unknown");
|
|
137
|
-
await assert.rejects(() => executor.execute(this._ctx),
|
|
146
|
+
await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 404);
|
|
138
147
|
}
|
|
139
148
|
};
|
|
140
149
|
__decorate([
|
|
@@ -146,6 +155,9 @@ __decorate([
|
|
|
146
155
|
__decorate([
|
|
147
156
|
test("GET - wrong owner")
|
|
148
157
|
], OwnerModelTest.prototype, "getWrongOwner", null);
|
|
158
|
+
__decorate([
|
|
159
|
+
test("GET - no owner")
|
|
160
|
+
], OwnerModelTest.prototype, "getNoOwner", null);
|
|
149
161
|
__decorate([
|
|
150
162
|
test("PUT - wrong owner")
|
|
151
163
|
], OwnerModelTest.prototype, "putWrongOwner", null);
|
|
@@ -160,7 +172,7 @@ __decorate([
|
|
|
160
172
|
], OwnerModelTest.prototype, "queryPermission", null);
|
|
161
173
|
__decorate([
|
|
162
174
|
test("Actions")
|
|
163
|
-
], OwnerModelTest.prototype, "
|
|
175
|
+
], OwnerModelTest.prototype, "actions", null);
|
|
164
176
|
__decorate([
|
|
165
177
|
test("DELETE")
|
|
166
178
|
], OwnerModelTest.prototype, "delete", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownermodel.spec.js","sourceRoot":"","sources":["../../src/models/ownermodel.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"ownermodel.spec.js","sourceRoot":"","sources":["../../src/models/ownermodel.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAa,WAAW,EAAgD,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,SAAS;IAOpC,KAAK,CAAC,MAAM;QACV,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,aAAa;QACb,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,EAAE;YACpC,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAwB,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAA0B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAEgC,AAAN,KAAK,CAAC,aAAa;QAC5C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC5E,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IAEmB,AAAN,KAAK,CAAC,IAAI;QACtB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC5E,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAEgC,AAAN,KAAK,CAAC,aAAa;QAC5C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAC/F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IAC6B,AAAN,KAAK,CAAC,UAAU;QACtC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IACgC,AAAN,KAAK,CAAC,aAAa;QAC5C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IACkB,AAAN,KAAK,CAAC,GAAG;QACpB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,EAAE;YACzE,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAC2B,AAAN,KAAK,CAAC,SAAS;QACnC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACzF,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC;IAEoB,AAAN,KAAK,CAAC,eAAe;QAClC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QAChG,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEsB,AAAN,KAAK,CAAC,OAAO;QAC5B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,8BAA8B,CAAC,CAAC;QACnG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,8BAA8B,CAAC,CAAC;QAC/F,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IACqB,AAAN,KAAK,CAAC,MAAM;QAC1B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC3F,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACmC,AAAN,KAAK,CAAC,gBAAgB;QAClD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC3F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IAC4C,AAAN,KAAK,CAAC,sBAAsB;QACjE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC5F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IAC+B,AAAN,KAAK,CAAC,aAAa;QAC3C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC7F,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;CACF,CAAA;AA3HkC;IAAhC,IAAI,CAAC,mBAAmB,CAAC;mDAUzB;AAEmB;IAAnB,IAAI,CAAC,MAAM,CAAC;0CAQZ;AAEgC;IAAhC,IAAI,CAAC,mBAAmB,CAAC;mDAQzB;AAC6B;IAA7B,IAAI,CAAC,gBAAgB,CAAC;gDAQtB;AACgC;IAAhC,IAAI,CAAC,mBAAmB,CAAC;mDAQzB;AACkB;IAAlB,IAAI,CAAC,KAAK,CAAC;yCAUX;AAC2B;IAA3B,IAAI,CAAC,cAAc,CAAC;+CAOpB;AAEoB;IAApB,IAAI,CAAC,OAAO,CAAC;qDAWb;AAEsB;IAAtB,IAAI,CAAC,SAAS,CAAC;6CAOf;AACqB;IAArB,IAAI,CAAC,QAAQ,CAAC;4CAKd;AACmC;IAAnC,IAAI,CAAC,sBAAsB,CAAC;sDAQ5B;AAC4C;IAA5C,IAAI,CAAC,+BAA+B,CAAC;4DAQrC;AAC+B;IAA/B,IAAI,CAAC,kBAAkB,CAAC;mDAQxB;AAzKG,cAAc;IADnB,KAAK;GACA,cAAc,CA0KnB"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { CoreModel, CoreModelDefinition, ModelAction, ModelRef, ModelRefCustomProperties } from "./coremodel.js";
|
|
2
|
+
/**
|
|
3
|
+
* Attribute of an object
|
|
4
|
+
*
|
|
5
|
+
* Filter out methods
|
|
6
|
+
*/
|
|
7
|
+
export type Attributes<T extends object> = {
|
|
8
|
+
[K in keyof T]: T[K] extends Function ? never : K;
|
|
9
|
+
}[keyof T];
|
|
10
|
+
/**
|
|
11
|
+
* Raw model without methods
|
|
12
|
+
*/
|
|
13
|
+
export type RawModel<T extends object> = {
|
|
14
|
+
[K in Attributes<T>]?: T[K] extends object ? RawModel<T[K]> : T[K];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Methods of an object
|
|
18
|
+
*
|
|
19
|
+
* Filter out attributes
|
|
20
|
+
*/
|
|
21
|
+
export type Methods<T extends object> = {
|
|
22
|
+
[K in keyof T]: T[K] extends Function ? K : never;
|
|
23
|
+
}[keyof T];
|
|
24
|
+
/**
|
|
25
|
+
* Load related objects
|
|
26
|
+
*
|
|
27
|
+
* _K is not used but is required to complete the graph
|
|
28
|
+
*/
|
|
29
|
+
export type ModelRelated<T extends CoreModel, _K extends Attributes<T>> = {
|
|
30
|
+
/**
|
|
31
|
+
* Query the related objects
|
|
32
|
+
* @param query
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
query: (query?: string) => Promise<{
|
|
36
|
+
results: T[];
|
|
37
|
+
continuationToken?: string;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
* @param model Iterate through all related objects
|
|
42
|
+
* @returns
|
|
43
|
+
*/
|
|
44
|
+
forEach: (model: T) => Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Get all object linked
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
getAll: () => Promise<T[]>;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Define a link to 1:n relation
|
|
53
|
+
*/
|
|
54
|
+
export declare class ModelLink<T extends CoreModel> {
|
|
55
|
+
protected uuid: string;
|
|
56
|
+
protected model: CoreModelDefinition<T>;
|
|
57
|
+
constructor(uuid: string, model: CoreModelDefinition<T>);
|
|
58
|
+
get(): Promise<T>;
|
|
59
|
+
set(id: string | T): void;
|
|
60
|
+
toString(): string;
|
|
61
|
+
toJSON(): string;
|
|
62
|
+
getUuid(): string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Methods that allow to manage a collection of linked objects
|
|
66
|
+
*/
|
|
67
|
+
type ModelCollectionManager<T> = {
|
|
68
|
+
/**
|
|
69
|
+
* Add a linked object
|
|
70
|
+
* @param model
|
|
71
|
+
* @returns
|
|
72
|
+
*/
|
|
73
|
+
add: (model: T) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Remove a linked object
|
|
76
|
+
* @param model the model to remove or its uuid
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
remove: (model: T | string) => void;
|
|
80
|
+
};
|
|
81
|
+
export declare class ModelLinksSimpleArray<T extends CoreModel> extends Array<ModelRef<T>> {
|
|
82
|
+
protected model: CoreModelDefinition<T>;
|
|
83
|
+
constructor(model: CoreModelDefinition<T>, content?: any[]);
|
|
84
|
+
add(model: string | ModelRef<T> | T): void;
|
|
85
|
+
remove(model: ModelRef<T> | string | T): void;
|
|
86
|
+
}
|
|
87
|
+
export declare class ModelLinksArray<T extends CoreModel, K> extends Array<ModelRefCustomProperties<T, (K & {
|
|
88
|
+
uuid: string;
|
|
89
|
+
}) | {
|
|
90
|
+
getUuid: () => string;
|
|
91
|
+
}>> {
|
|
92
|
+
protected model: CoreModelDefinition<T>;
|
|
93
|
+
constructor(model: CoreModelDefinition<T>, content?: any[]);
|
|
94
|
+
add(model: ModelRefCustomProperties<T, (K & {
|
|
95
|
+
uuid: string;
|
|
96
|
+
}) | {
|
|
97
|
+
getUuid: () => string;
|
|
98
|
+
}> | ((K & {
|
|
99
|
+
uuid: string;
|
|
100
|
+
}) | {
|
|
101
|
+
getUuid: () => string;
|
|
102
|
+
})): void;
|
|
103
|
+
remove(model: ModelRefCustomProperties<T, K> | string | T): void;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Define 1:n relation with some sort of additional data or duplicated data
|
|
107
|
+
*
|
|
108
|
+
* The key of the map is the value of the FK
|
|
109
|
+
*/
|
|
110
|
+
export type ModelLinksMap<T extends CoreModel, K> = Readonly<{
|
|
111
|
+
[key: string]: ModelRefCustomProperties<T, K & ({
|
|
112
|
+
uuid: string;
|
|
113
|
+
} | {
|
|
114
|
+
getUuid: () => string;
|
|
115
|
+
})>;
|
|
116
|
+
}> & ModelCollectionManager<K & ({
|
|
117
|
+
uuid: string;
|
|
118
|
+
} | {
|
|
119
|
+
getUuid: () => string;
|
|
120
|
+
})>;
|
|
121
|
+
export declare function createModelLinksMap<T extends CoreModel>(model: CoreModelDefinition<any>, data?: any): {
|
|
122
|
+
add: (model: ModelRefCustomProperties<T, any>) => void;
|
|
123
|
+
remove: (model: ModelRefCustomProperties<T, any> | string) => void;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Define the parent of the model
|
|
127
|
+
*/
|
|
128
|
+
export type ModelParent<T extends CoreModel> = ModelLink<T>;
|
|
129
|
+
/**
|
|
130
|
+
* Define an export of actions from Model
|
|
131
|
+
*/
|
|
132
|
+
export type ModelActions = {
|
|
133
|
+
[key: string]: ModelAction;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Mapper attribute (target of a Mapper service)
|
|
137
|
+
*
|
|
138
|
+
* This is not exported as when mapped the target is always an array
|
|
139
|
+
* TODO Handle 1:1 map
|
|
140
|
+
*/
|
|
141
|
+
export declare class ModelMapLoaderImplementation<T extends CoreModel, K = any> {
|
|
142
|
+
protected _model: any;
|
|
143
|
+
/**
|
|
144
|
+
* The uuid of the object
|
|
145
|
+
*/
|
|
146
|
+
uuid: string;
|
|
147
|
+
constructor(model: CoreModelDefinition<T>, data: {
|
|
148
|
+
uuid: string;
|
|
149
|
+
} & K);
|
|
150
|
+
/**
|
|
151
|
+
*
|
|
152
|
+
* @returns the model
|
|
153
|
+
*/
|
|
154
|
+
get(): Promise<T>;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Mapper attribute (target of a Mapper service)
|
|
158
|
+
*
|
|
159
|
+
* This is not exported as when mapped the target is always an array
|
|
160
|
+
* TODO Handle 1:1 map
|
|
161
|
+
*/
|
|
162
|
+
export type ModelMapLoader<T extends CoreModel, K extends keyof T> = ModelMapLoaderImplementation<T, K> & Pick<T, K>;
|
|
163
|
+
/**
|
|
164
|
+
* Define a ModelMap attribute
|
|
165
|
+
*/
|
|
166
|
+
export type ModelsMapped<T extends CoreModel, K extends Attributes<T>> = Readonly<ModelMapLoader<T, K>[]>;
|
|
167
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
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 { ModelRef, ModelRefCustom, NotEnumerable } from "./coremodel.js";
|
|
8
|
+
/**
|
|
9
|
+
* Define a link to 1:n relation
|
|
10
|
+
*/
|
|
11
|
+
/*
|
|
12
|
+
export type ModelLink<T extends CoreModel, _FK extends keyof T = any> = ModelLoader<T> &
|
|
13
|
+
String & {
|
|
14
|
+
set: (id: string) => void;
|
|
15
|
+
};
|
|
16
|
+
*/
|
|
17
|
+
export class ModelLink {
|
|
18
|
+
constructor(uuid, model) {
|
|
19
|
+
this.uuid = uuid;
|
|
20
|
+
this.model = model;
|
|
21
|
+
}
|
|
22
|
+
async get() {
|
|
23
|
+
return this.model.ref(this.uuid).get();
|
|
24
|
+
}
|
|
25
|
+
set(id) {
|
|
26
|
+
this.uuid = typeof id === "string" ? id : id.getUuid();
|
|
27
|
+
}
|
|
28
|
+
toString() {
|
|
29
|
+
return this.uuid;
|
|
30
|
+
}
|
|
31
|
+
toJSON() {
|
|
32
|
+
return this.uuid;
|
|
33
|
+
}
|
|
34
|
+
getUuid() {
|
|
35
|
+
return this.uuid;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class ModelLinksSimpleArray extends Array {
|
|
39
|
+
constructor(model, content = []) {
|
|
40
|
+
super();
|
|
41
|
+
this.model = model;
|
|
42
|
+
content.forEach(c => this.add(c));
|
|
43
|
+
}
|
|
44
|
+
add(model) {
|
|
45
|
+
this.push(typeof model === "string" ? new ModelRef(model, this.model) : new ModelRef(model.getUuid(), this.model));
|
|
46
|
+
}
|
|
47
|
+
remove(model) {
|
|
48
|
+
let index = this.findIndex(m => m.toString() === (typeof model === "string" ? model : model.getUuid()));
|
|
49
|
+
if (index >= 0) {
|
|
50
|
+
this.splice(index, 1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class ModelLinksArray extends Array {
|
|
55
|
+
constructor(model, content = []) {
|
|
56
|
+
super();
|
|
57
|
+
this.model = model;
|
|
58
|
+
this.push(...content.filter(c => c && c.uuid).map(c => new ModelRefCustom(c.uuid, model, c)));
|
|
59
|
+
}
|
|
60
|
+
add(model) {
|
|
61
|
+
this.push(((model instanceof ModelRefCustom
|
|
62
|
+
? model
|
|
63
|
+
: new ModelRefCustom(model.uuid || model.getUuid(), this.model, model))));
|
|
64
|
+
}
|
|
65
|
+
remove(model) {
|
|
66
|
+
const uuid = typeof model === "string" ? model : model.uuid || model.getUuid();
|
|
67
|
+
let index = this.findIndex(m => m.getUuid() === uuid);
|
|
68
|
+
if (index >= 0) {
|
|
69
|
+
this.splice(index, 1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export function createModelLinksMap(model, data = {}) {
|
|
74
|
+
let result = {
|
|
75
|
+
add: (model) => {
|
|
76
|
+
result[model.uuid || model.getUuid()] = model;
|
|
77
|
+
},
|
|
78
|
+
remove: (model) => {
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
const uuid = typeof model === "string" ? model : model.uuid || model.getUuid();
|
|
81
|
+
delete result[uuid];
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
Object.keys(data)
|
|
85
|
+
.filter(k => k !== "__proto__")
|
|
86
|
+
.forEach(key => {
|
|
87
|
+
result[key] = new ModelRefCustom(data[key].uuid, model, data[key]);
|
|
88
|
+
});
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Mapper attribute (target of a Mapper service)
|
|
93
|
+
*
|
|
94
|
+
* This is not exported as when mapped the target is always an array
|
|
95
|
+
* TODO Handle 1:1 map
|
|
96
|
+
*/
|
|
97
|
+
export class ModelMapLoaderImplementation {
|
|
98
|
+
constructor(model, data) {
|
|
99
|
+
Object.assign(this, data);
|
|
100
|
+
this._model = model;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
*
|
|
104
|
+
* @returns the model
|
|
105
|
+
*/
|
|
106
|
+
async get() {
|
|
107
|
+
return this._model.ref(this.uuid).get();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
__decorate([
|
|
111
|
+
NotEnumerable
|
|
112
|
+
], ModelMapLoaderImplementation.prototype, "_model", void 0);
|
|
113
|
+
//# sourceMappingURL=relations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/models/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CoreModel, OperationContext } from "../index.js";
|
|
2
2
|
declare abstract class RoleModel extends CoreModel {
|
|
3
3
|
abstract getRolesMap(): {
|
|
4
4
|
[key: string]: string;
|
|
5
5
|
};
|
|
6
6
|
isPermissive(): boolean;
|
|
7
|
-
getRoles(ctx:
|
|
8
|
-
canAct(ctx:
|
|
7
|
+
getRoles(ctx: OperationContext): Promise<string[]>;
|
|
8
|
+
canAct(ctx: OperationContext, action: string): Promise<string | boolean>;
|
|
9
9
|
}
|
|
10
10
|
export { RoleModel };
|
package/lib/models/rolemodel.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { CoreModel } from "../index.js";
|
|
1
|
+
import { CoreModel, WebdaError } from "../index.js";
|
|
2
2
|
class RoleModel extends CoreModel {
|
|
3
3
|
isPermissive() {
|
|
4
4
|
return false;
|
|
5
5
|
}
|
|
6
6
|
async getRoles(ctx) {
|
|
7
7
|
if (!ctx.getCurrentUserId()) {
|
|
8
|
-
throw
|
|
8
|
+
throw new WebdaError.Forbidden("No user");
|
|
9
9
|
}
|
|
10
10
|
// If roles are cached in session
|
|
11
11
|
if (ctx.getSession().roles) {
|
|
@@ -20,15 +20,15 @@ class RoleModel extends CoreModel {
|
|
|
20
20
|
// If this action doesn't require role
|
|
21
21
|
if (!this.getRolesMap()[action]) {
|
|
22
22
|
if (this.isPermissive()) {
|
|
23
|
-
return
|
|
23
|
+
return true;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
return "No permission for this action defined";
|
|
26
26
|
}
|
|
27
27
|
let roles = await this.getRoles(ctx);
|
|
28
28
|
if (roles.indexOf(this.getRolesMap()[action]) >= 0) {
|
|
29
|
-
return
|
|
29
|
+
return true;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
return "No permission";
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
export { RoleModel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolemodel.js","sourceRoot":"","sources":["../../src/models/rolemodel.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"rolemodel.js","sourceRoot":"","sources":["../../src/models/rolemodel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,UAAU,EAAE,MAAM,UAAU,CAAC;AACnE,MAAe,SAAU,SAAQ,SAAS;IAGxC,YAAY;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAqB;QAClC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE;YAC3B,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC3C;QACD,iCAAiC;QACjC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE;YAC1B,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;SAC/B;QACD,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;QACtC,yBAAyB;QACzB,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAqB,EAAE,MAAc;QAChD,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE;YAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACvB,OAAO,IAAI,CAAC;aACb;YACD,OAAO,uCAAuC,CAAC;SAChD;QACD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -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 { Core, HttpContext, RoleModel,
|
|
9
|
+
import { Core, HttpContext, RoleModel, SimpleUser, WebdaError } from "../index.js";
|
|
10
10
|
import { TestApplication } from "../test.js";
|
|
11
11
|
import { getCommonJS } from "../utils/esm.js";
|
|
12
12
|
const { __dirname } = getCommonJS(import.meta.url);
|
|
@@ -36,8 +36,8 @@ let RolePolicyTest = class RolePolicyTest {
|
|
|
36
36
|
await app.load();
|
|
37
37
|
this._webda = new Core(app);
|
|
38
38
|
await this._webda.init();
|
|
39
|
-
this._ctx = await this._webda.
|
|
40
|
-
this._session = this._ctx.newSession();
|
|
39
|
+
this._ctx = await this._webda.newWebContext(new HttpContext("test.webda.io", "GET", "/"));
|
|
40
|
+
this._session = await this._ctx.newSession();
|
|
41
41
|
this._session.login("none", "none");
|
|
42
42
|
// @ts-ignore
|
|
43
43
|
this._ctx.getCurrentUser = async () => {
|
|
@@ -45,27 +45,27 @@ let RolePolicyTest = class RolePolicyTest {
|
|
|
45
45
|
};
|
|
46
46
|
this.nonPermissive = new RolePolicyModel();
|
|
47
47
|
this.permissive = new RolePolicyModelPermissive();
|
|
48
|
-
this._user = new
|
|
48
|
+
this._user = new SimpleUser();
|
|
49
49
|
this._user.addRole("member");
|
|
50
50
|
}
|
|
51
51
|
async noLogged() {
|
|
52
52
|
this._ctx.getSession().logout();
|
|
53
|
-
assert.rejects(() => this.permissive.
|
|
53
|
+
assert.rejects(() => this.permissive.checkAct(this._ctx, "get"), (err) => err.getResponseCode() === 403);
|
|
54
54
|
}
|
|
55
55
|
async get() {
|
|
56
|
-
assert.strictEqual(await this.permissive.canAct(this._ctx, "get"),
|
|
57
|
-
assert.strictEqual(await this.nonPermissive.canAct(this._ctx, "get"),
|
|
56
|
+
assert.strictEqual(await this.permissive.canAct(this._ctx, "get"), true);
|
|
57
|
+
assert.strictEqual(await this.nonPermissive.canAct(this._ctx, "get"), true);
|
|
58
58
|
}
|
|
59
59
|
async action() {
|
|
60
|
-
assert.strictEqual(await this.permissive.canAct(this._ctx, "action"),
|
|
61
|
-
await assert.rejects(this.nonPermissive.
|
|
60
|
+
assert.strictEqual(await this.permissive.canAct(this._ctx, "action"), true);
|
|
61
|
+
await assert.rejects(() => this.nonPermissive.checkAct(this._ctx, "action"), WebdaError.Forbidden);
|
|
62
62
|
}
|
|
63
63
|
async delete() {
|
|
64
|
-
assert.strictEqual(await this.permissive.canAct(this._ctx, "delete"),
|
|
65
|
-
await assert.rejects(this.nonPermissive.
|
|
64
|
+
assert.strictEqual(await this.permissive.canAct(this._ctx, "delete"), true);
|
|
65
|
+
await assert.rejects(() => this.nonPermissive.checkAct(this._ctx, "delete"));
|
|
66
66
|
this._user.addRole("admin");
|
|
67
67
|
this._session.roles = undefined;
|
|
68
|
-
assert.strictEqual(await this.nonPermissive.canAct(this._ctx, "delete"),
|
|
68
|
+
assert.strictEqual(await this.nonPermissive.canAct(this._ctx, "delete"), true);
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
71
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolemodel.spec.js","sourceRoot":"","sources":["../../src/models/rolemodel.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"rolemodel.spec.js","sourceRoot":"","sources":["../../src/models/rolemodel.spec.ts"],"names":[],"mappings":"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"}
|