@webda/core 2.0.0-beta.2 → 2.0.1

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 (279) hide show
  1. package/lib/application.d.ts +5 -21
  2. package/lib/application.js +71 -84
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +121 -140
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +44 -45
  7. package/lib/core.js +239 -320
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +326 -391
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +49 -45
  12. package/lib/index.js +54 -67
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +2 -2
  15. package/lib/models/aclmodel.js +63 -90
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +128 -151
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +39 -17
  20. package/lib/models/coremodel.js +160 -117
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +143 -107
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/deployment.js +1 -2
  25. package/lib/models/ident.d.ts +3 -3
  26. package/lib/models/ident.js +4 -9
  27. package/lib/models/ident.js.map +1 -1
  28. package/lib/models/ident.spec.js +9 -11
  29. package/lib/models/ident.spec.js.map +1 -1
  30. package/lib/models/ownermodel.d.ts +2 -2
  31. package/lib/models/ownermodel.js +39 -62
  32. package/lib/models/ownermodel.js.map +1 -1
  33. package/lib/models/ownermodel.spec.js +126 -166
  34. package/lib/models/ownermodel.spec.js.map +1 -1
  35. package/lib/models/rolemodel.d.ts +2 -2
  36. package/lib/models/rolemodel.js +24 -40
  37. package/lib/models/rolemodel.js.map +1 -1
  38. package/lib/models/rolemodel.spec.js +44 -61
  39. package/lib/models/rolemodel.spec.js.map +1 -1
  40. package/lib/models/user.d.ts +9 -9
  41. package/lib/models/user.js +3 -8
  42. package/lib/models/user.js.map +1 -1
  43. package/lib/models/user.spec.js +14 -16
  44. package/lib/models/user.spec.js.map +1 -1
  45. package/lib/queues/filequeue.d.ts +2 -2
  46. package/lib/queues/filequeue.js +72 -93
  47. package/lib/queues/filequeue.js.map +1 -1
  48. package/lib/queues/filequeue.spec.js +53 -70
  49. package/lib/queues/filequeue.spec.js.map +1 -1
  50. package/lib/queues/memoryqueue.d.ts +2 -2
  51. package/lib/queues/memoryqueue.js +37 -61
  52. package/lib/queues/memoryqueue.js.map +1 -1
  53. package/lib/queues/memoryqueue.spec.js +142 -165
  54. package/lib/queues/memoryqueue.spec.js.map +1 -1
  55. package/lib/queues/pubsubservice.d.ts +2 -2
  56. package/lib/queues/pubsubservice.js +3 -7
  57. package/lib/queues/pubsubservice.js.map +1 -1
  58. package/lib/queues/queue.spec.d.ts +1 -1
  59. package/lib/queues/queue.spec.js +42 -56
  60. package/lib/queues/queue.spec.js.map +1 -1
  61. package/lib/queues/queueservice.d.ts +4 -4
  62. package/lib/queues/queueservice.js +52 -67
  63. package/lib/queues/queueservice.js.map +1 -1
  64. package/lib/router.d.ts +3 -3
  65. package/lib/router.js +46 -47
  66. package/lib/router.js.map +1 -1
  67. package/lib/router.spec.js +64 -61
  68. package/lib/router.spec.js.map +1 -1
  69. package/lib/services/asyncevents.d.ts +2 -2
  70. package/lib/services/asyncevents.js +44 -64
  71. package/lib/services/asyncevents.js.map +1 -1
  72. package/lib/services/asyncevents.spec.js +81 -98
  73. package/lib/services/asyncevents.spec.js.map +1 -1
  74. package/lib/services/authentication.d.ts +28 -19
  75. package/lib/services/authentication.js +542 -574
  76. package/lib/services/authentication.js.map +1 -1
  77. package/lib/services/authentication.spec.js +411 -447
  78. package/lib/services/authentication.spec.js.map +1 -1
  79. package/lib/services/binary.d.ts +9 -7
  80. package/lib/services/binary.js +213 -245
  81. package/lib/services/binary.js.map +1 -1
  82. package/lib/services/binary.spec.d.ts +3 -3
  83. package/lib/services/binary.spec.js +390 -443
  84. package/lib/services/binary.spec.js.map +1 -1
  85. package/lib/services/cloudbinary.d.ts +3 -3
  86. package/lib/services/cloudbinary.js +45 -70
  87. package/lib/services/cloudbinary.js.map +1 -1
  88. package/lib/services/cloudbinary.spec.d.ts +3 -3
  89. package/lib/services/cloudbinary.spec.js +133 -162
  90. package/lib/services/cloudbinary.spec.js.map +1 -1
  91. package/lib/services/configuration.d.ts +6 -3
  92. package/lib/services/configuration.js +78 -103
  93. package/lib/services/configuration.js.map +1 -1
  94. package/lib/services/configuration.spec.js +63 -83
  95. package/lib/services/configuration.spec.js.map +1 -1
  96. package/lib/services/cron.d.ts +3 -2
  97. package/lib/services/cron.js +9 -13
  98. package/lib/services/cron.js.map +1 -1
  99. package/lib/services/cron.spec.js +18 -21
  100. package/lib/services/cron.spec.js.map +1 -1
  101. package/lib/services/cryptoservice.d.ts +258 -0
  102. package/lib/services/cryptoservice.js +312 -0
  103. package/lib/services/cryptoservice.js.map +1 -0
  104. package/lib/services/cryptoservice.spec.d.ts +1 -0
  105. package/lib/services/cryptoservice.spec.js +137 -0
  106. package/lib/services/cryptoservice.spec.js.map +1 -0
  107. package/lib/services/debugmailer.d.ts +1 -1
  108. package/lib/services/debugmailer.js +13 -34
  109. package/lib/services/debugmailer.js.map +1 -1
  110. package/lib/services/debugmailer.spec.js +16 -29
  111. package/lib/services/debugmailer.spec.js.map +1 -1
  112. package/lib/services/echo.d.ts +2 -2
  113. package/lib/services/echo.js +15 -31
  114. package/lib/services/echo.js.map +1 -1
  115. package/lib/services/echo.spec.js +27 -40
  116. package/lib/services/echo.spec.js.map +1 -1
  117. package/lib/services/filebinary.d.ts +10 -5
  118. package/lib/services/filebinary.js +171 -205
  119. package/lib/services/filebinary.js.map +1 -1
  120. package/lib/services/filebinary.spec.d.ts +2 -1
  121. package/lib/services/filebinary.spec.js +106 -117
  122. package/lib/services/filebinary.spec.js.map +1 -1
  123. package/lib/services/fileconfiguration.d.ts +2 -2
  124. package/lib/services/fileconfiguration.js +25 -43
  125. package/lib/services/fileconfiguration.js.map +1 -1
  126. package/lib/services/fileconfiguration.spec.js +79 -109
  127. package/lib/services/fileconfiguration.spec.js.map +1 -1
  128. package/lib/services/invitationservice.d.ts +10 -10
  129. package/lib/services/invitationservice.js +275 -313
  130. package/lib/services/invitationservice.js.map +1 -1
  131. package/lib/services/invitationservice.spec.js +443 -449
  132. package/lib/services/invitationservice.spec.js.map +1 -1
  133. package/lib/services/kubernetesconfiguration.d.ts +2 -2
  134. package/lib/services/kubernetesconfiguration.js +41 -59
  135. package/lib/services/kubernetesconfiguration.js.map +1 -1
  136. package/lib/services/kubernetesconfiguration.spec.js +80 -98
  137. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  138. package/lib/services/mailer.d.ts +4 -4
  139. package/lib/services/mailer.js +62 -86
  140. package/lib/services/mailer.js.map +1 -1
  141. package/lib/services/mailer.spec.js +86 -127
  142. package/lib/services/mailer.spec.js.map +1 -1
  143. package/lib/services/notificationservice.d.ts +4 -4
  144. package/lib/services/notificationservice.js +23 -42
  145. package/lib/services/notificationservice.js.map +1 -1
  146. package/lib/services/notificationservice.spec.js +47 -73
  147. package/lib/services/notificationservice.spec.js.map +1 -1
  148. package/lib/services/oauth.d.ts +32 -6
  149. package/lib/services/oauth.js +73 -78
  150. package/lib/services/oauth.js.map +1 -1
  151. package/lib/services/oauth.spec.js +128 -148
  152. package/lib/services/oauth.spec.js.map +1 -1
  153. package/lib/services/proxy.d.ts +74 -0
  154. package/lib/services/proxy.js +126 -0
  155. package/lib/services/proxy.js.map +1 -0
  156. package/lib/services/proxy.spec.d.ts +1 -0
  157. package/lib/services/proxy.spec.js +59 -0
  158. package/lib/services/proxy.spec.js.map +1 -0
  159. package/lib/services/resource.d.ts +2 -2
  160. package/lib/services/resource.js +12 -18
  161. package/lib/services/resource.js.map +1 -1
  162. package/lib/services/resource.spec.js +67 -99
  163. package/lib/services/resource.spec.js.map +1 -1
  164. package/lib/services/service.d.ts +29 -6
  165. package/lib/services/service.js +69 -39
  166. package/lib/services/service.js.map +1 -1
  167. package/lib/services/service.spec.js +62 -67
  168. package/lib/services/service.spec.js.map +1 -1
  169. package/lib/services/version.d.ts +1 -1
  170. package/lib/services/version.js +3 -8
  171. package/lib/services/version.js.map +1 -1
  172. package/lib/services/version.spec.js +11 -24
  173. package/lib/services/version.spec.js.map +1 -1
  174. package/lib/stores/aggregator.d.ts +3 -3
  175. package/lib/stores/aggregator.js +37 -57
  176. package/lib/stores/aggregator.js.map +1 -1
  177. package/lib/stores/file.d.ts +3 -3
  178. package/lib/stores/file.js +93 -131
  179. package/lib/stores/file.js.map +1 -1
  180. package/lib/stores/file.spec.d.ts +2 -2
  181. package/lib/stores/file.spec.js +262 -289
  182. package/lib/stores/file.spec.js.map +1 -1
  183. package/lib/stores/mapper.d.ts +4 -4
  184. package/lib/stores/mapper.js +111 -137
  185. package/lib/stores/mapper.js.map +1 -1
  186. package/lib/stores/mapper.spec.js +133 -150
  187. package/lib/stores/mapper.spec.js.map +1 -1
  188. package/lib/stores/memory.d.ts +67 -6
  189. package/lib/stores/memory.js +155 -117
  190. package/lib/stores/memory.js.map +1 -1
  191. package/lib/stores/memory.spec.d.ts +3 -2
  192. package/lib/stores/memory.spec.js +127 -105
  193. package/lib/stores/memory.spec.js.map +1 -1
  194. package/lib/stores/store.d.ts +40 -16
  195. package/lib/stores/store.js +847 -830
  196. package/lib/stores/store.js.map +1 -1
  197. package/lib/stores/store.spec.d.ts +6 -4
  198. package/lib/stores/store.spec.js +628 -647
  199. package/lib/stores/store.spec.js.map +1 -1
  200. package/lib/stores/webdaql/WebdaQLLexer.d.ts +4 -4
  201. package/lib/stores/webdaql/WebdaQLLexer.js +9 -13
  202. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
  203. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +4 -4
  204. package/lib/stores/webdaql/WebdaQLParserLexer.js +9 -13
  205. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
  206. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +2 -2
  207. package/lib/stores/webdaql/WebdaQLParserListener.js +1 -2
  208. package/lib/stores/webdaql/WebdaQLParserListener.js.map +1 -1
  209. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +10 -10
  210. package/lib/stores/webdaql/WebdaQLParserParser.js +62 -91
  211. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
  212. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +2 -2
  213. package/lib/stores/webdaql/WebdaQLParserVisitor.js +1 -2
  214. package/lib/stores/webdaql/WebdaQLParserVisitor.js.map +1 -1
  215. package/lib/stores/webdaql/query.d.ts +4 -5
  216. package/lib/stores/webdaql/query.js +16 -19
  217. package/lib/stores/webdaql/query.js.map +1 -1
  218. package/lib/stores/webdaql/query.spec.js +30 -32
  219. package/lib/stores/webdaql/query.spec.js.map +1 -1
  220. package/lib/test.d.ts +3 -3
  221. package/lib/test.js +74 -94
  222. package/lib/test.js.map +1 -1
  223. package/lib/unpackedapplication.d.ts +1 -1
  224. package/lib/unpackedapplication.js +44 -38
  225. package/lib/unpackedapplication.js.map +1 -1
  226. package/lib/utils/abstractdeployer.js +1 -5
  227. package/lib/utils/abstractdeployer.js.map +1 -1
  228. package/lib/utils/abstractdeployer.spec.js +6 -8
  229. package/lib/utils/abstractdeployer.spec.js.map +1 -1
  230. package/lib/utils/context.d.ts +61 -29
  231. package/lib/utils/context.js +133 -127
  232. package/lib/utils/context.js.map +1 -1
  233. package/lib/utils/context.spec.js +144 -153
  234. package/lib/utils/context.spec.js.map +1 -1
  235. package/lib/utils/cookie.d.ts +66 -45
  236. package/lib/utils/cookie.js +69 -158
  237. package/lib/utils/cookie.js.map +1 -1
  238. package/lib/utils/cookie.spec.js +220 -238
  239. package/lib/utils/cookie.spec.js.map +1 -1
  240. package/lib/utils/esm.d.ts +4 -0
  241. package/lib/utils/esm.js +10 -0
  242. package/lib/utils/esm.js.map +1 -0
  243. package/lib/utils/httpcontext.d.ts +3 -0
  244. package/lib/utils/httpcontext.js +48 -65
  245. package/lib/utils/httpcontext.js.map +1 -1
  246. package/lib/utils/httpcontext.spec.js +37 -56
  247. package/lib/utils/httpcontext.spec.js.map +1 -1
  248. package/lib/utils/logger.d.ts +2 -2
  249. package/lib/utils/logger.js +15 -28
  250. package/lib/utils/logger.js.map +1 -1
  251. package/lib/utils/logger.spec.js +9 -11
  252. package/lib/utils/logger.spec.js.map +1 -1
  253. package/lib/utils/serializers.js +17 -20
  254. package/lib/utils/serializers.js.map +1 -1
  255. package/lib/utils/serializers.spec.js +43 -44
  256. package/lib/utils/serializers.spec.js.map +1 -1
  257. package/lib/utils/session.d.ts +120 -0
  258. package/lib/utils/session.js +155 -0
  259. package/lib/utils/session.js.map +1 -0
  260. package/lib/utils/session.spec.d.ts +1 -0
  261. package/lib/utils/session.spec.js +66 -0
  262. package/lib/utils/session.spec.js.map +1 -0
  263. package/lib/utils/waiter.d.ts +1 -1
  264. package/lib/utils/waiter.js +32 -52
  265. package/lib/utils/waiter.js.map +1 -1
  266. package/lib/utils/waiter.spec.js +75 -92
  267. package/lib/utils/waiter.spec.js.map +1 -1
  268. package/package.json +22 -14
  269. package/test/config-invitation.json +1 -3
  270. package/test/config.json +3 -3
  271. package/test/config.old.json +1 -2
  272. package/test/moddas/annotatedservice.js +5 -5
  273. package/test/moddas/debugmailer.js +2 -3
  274. package/test/moddas/fakeservice.js +2 -3
  275. package/test/moddas/voidstore.js +6 -4
  276. package/test/models/ident.js +2 -6
  277. package/test/models/task.js +3 -7
  278. package/test/package.json +2 -1
  279. package/webda.module.json +895 -189
@@ -1,187 +1,164 @@
1
- "use strict";
2
1
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
2
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
3
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
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;
6
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
6
  };
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- const mocha_1 = require("@testdeck/mocha");
19
- const assert = require("assert");
20
- const index_1 = require("../index");
21
- const test_1 = require("../test");
7
+ import { suite, test } from "@testdeck/mocha";
8
+ import * as assert from "assert";
9
+ import { AclModel, Core, HttpContext, User } from "../index.js";
10
+ import { TestApplication } from "../test.js";
11
+ import { getCommonJS } from "../utils/esm.js";
12
+ const { __filename, __dirname } = getCommonJS(import.meta.url);
22
13
  let AclPolicyTest = class AclPolicyTest {
23
- before() {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- let app = new test_1.TestApplication(__dirname + "/../../test/config.json");
26
- yield app.load();
27
- this._webda = new index_1.Core(app);
28
- this._ctx = yield this._webda.newContext(new index_1.HttpContext("test.webda.io", "GET", "/"));
29
- this._session = this._ctx.getSession();
30
- this._session.login("user-uid", "none");
31
- this.model = new index_1.AclModel();
32
- this._user = new index_1.User();
33
- this._user.uuid = "user-uid";
34
- this._user.addGroup("gip-123");
35
- // @ts-ignore
36
- this._ctx.getCurrentUser = () => __awaiter(this, void 0, void 0, function* () {
37
- return this._user;
38
- });
39
- });
14
+ async before() {
15
+ let app = new TestApplication(__dirname + "/../../test/config.json");
16
+ await app.load();
17
+ this._webda = new Core(app);
18
+ await this._webda.init();
19
+ this._ctx = await this._webda.newContext(new HttpContext("test.webda.io", "GET", "/"));
20
+ this._session = this._ctx.getSession();
21
+ this._session.login("user-uid", "none");
22
+ this.model = new AclModel().getProxy();
23
+ this._user = new User();
24
+ this._user.uuid = "user-uid";
25
+ this._user.addGroup("gip-123");
26
+ // @ts-ignore
27
+ this._ctx.getCurrentUser = async () => {
28
+ return this._user;
29
+ };
40
30
  }
41
- get() {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"));
44
- this.model.__acl["gip-123"] = "get";
45
- assert.strictEqual(yield this.model.canAct(this._ctx, "get"), this.model);
46
- });
31
+ async get() {
32
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"));
33
+ this.model.__acl["gip-123"] = "get";
34
+ assert.strictEqual(await this.model.canAct(this._ctx, "get"), this.model);
47
35
  }
48
- multipermissions() {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
51
- this.model.__acl["gip-123"] = "get,action";
52
- assert.strictEqual(yield this.model.canAct(this._ctx, "get"), this.model);
53
- assert.strictEqual(yield this.model.canAct(this._ctx, "action"), this.model);
54
- assert.deepStrictEqual(yield this.model.getPermissions(this._ctx), ["get", "action"]);
55
- yield this.model._onGet();
56
- // @ts-ignore
57
- assert.deepStrictEqual(this.model._permissions, []);
58
- this.model.setContext(this._ctx);
59
- yield this.model._onGet();
60
- // @ts-ignore
61
- assert.deepStrictEqual(this.model._permissions, ["get", "action"]);
62
- });
36
+ async multipermissions() {
37
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
38
+ this.model.__acl["gip-123"] = "get,action";
39
+ assert.strictEqual(await this.model.canAct(this._ctx, "get"), this.model);
40
+ assert.strictEqual(await this.model.canAct(this._ctx, "action"), this.model);
41
+ assert.deepStrictEqual(await this.model.getPermissions(this._ctx), ["get", "action"]);
42
+ await this.model._onGet();
43
+ // @ts-ignore
44
+ assert.deepStrictEqual(this.model._permissions, []);
45
+ this.model.setContext(this._ctx);
46
+ await this.model._onGet();
47
+ // @ts-ignore
48
+ assert.deepStrictEqual(this.model._permissions, ["get", "action"]);
63
49
  }
64
- multigroups() {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
67
- this.model.__acl["gip-124"] = "get,action";
68
- this.model.__acl["gip-123"] = "get";
69
- this.model.__acl["gip-122"] = "get,action";
70
- assert.strictEqual(yield this.model.canAct(this._ctx, "get"), this.model);
71
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
72
- // @ts-ignore
73
- this._user._groups = undefined;
74
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"));
75
- });
50
+ async multigroups() {
51
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
52
+ this.model.__acl["gip-124"] = "get,action";
53
+ this.model.__acl["gip-123"] = "get";
54
+ this.model.__acl["gip-122"] = "get,action";
55
+ assert.strictEqual(await this.model.canAct(this._ctx, "get"), this.model);
56
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
57
+ // @ts-ignore
58
+ this._user._groups = undefined;
59
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"));
76
60
  }
77
- userid() {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
80
- this.model.__acl["user-uid"] = "get";
81
- this.model.__acl["gip-122"] = "get,action";
82
- assert.strictEqual(yield this.model.canAct(this._ctx, "get"), this.model);
83
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
84
- this._ctx.getCurrentUserId = () => {
85
- return undefined;
86
- };
87
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"), /403/);
88
- this._ctx.getCurrentUserId = () => {
89
- return "123";
90
- };
91
- this.model.setAcl(undefined);
92
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"), /403/);
93
- });
61
+ async userid() {
62
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
63
+ this.model.__acl["user-uid"] = "get";
64
+ this.model.__acl["gip-122"] = "get,action";
65
+ assert.strictEqual(await this.model.canAct(this._ctx, "get"), this.model);
66
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
67
+ this._ctx.getCurrentUserId = () => {
68
+ return undefined;
69
+ };
70
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"), /403/);
71
+ this._ctx.getCurrentUserId = () => {
72
+ return "123";
73
+ };
74
+ this.model.setAcl(undefined);
75
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "get"), /403/);
94
76
  }
95
- all() {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- yield assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
98
- this.model.__acl["gip-124"] = "get,action";
99
- this.model.__acl["user-uid"] = "all";
100
- this.model.__acl["gip-122"] = "get,action";
101
- assert.strictEqual(yield this.model.canAct(this._ctx, "get"), this.model);
102
- assert.strictEqual(yield this.model.canAct(this._ctx, "action"), this.model);
103
- assert.strictEqual(yield this.model.canAct(this._ctx, "delete"), this.model);
104
- assert.strictEqual(yield this.model.canAct(this._ctx, "whatever"), this.model);
105
- });
77
+ async all() {
78
+ await assert.rejects(this.model.canAct.bind(this.model, this._ctx, "action"));
79
+ this.model.__acl["gip-124"] = "get,action";
80
+ this.model.__acl["user-uid"] = "all";
81
+ this.model.__acl["gip-122"] = "get,action";
82
+ assert.strictEqual(await this.model.canAct(this._ctx, "get"), this.model);
83
+ assert.strictEqual(await this.model.canAct(this._ctx, "action"), this.model);
84
+ assert.strictEqual(await this.model.canAct(this._ctx, "delete"), this.model);
85
+ assert.strictEqual(await this.model.canAct(this._ctx, "whatever"), this.model);
106
86
  }
107
- httpAcls() {
108
- return __awaiter(this, void 0, void 0, function* () {
87
+ async httpAcls() {
88
+ // @ts-ignore
89
+ this.model.__store = {
90
+ save: async () => this.model,
91
+ patch: async () => this.model,
109
92
  // @ts-ignore
110
- this.model.__store = {
111
- save: () => __awaiter(this, void 0, void 0, function* () { return this.model; }),
112
- // @ts-ignore
113
- getService: () => {
114
- return {
115
- get: () => __awaiter(this, void 0, void 0, function* () {
116
- return {
117
- toPublicEntry: () => {
118
- return {
119
- displayName: "Plopi"
120
- };
121
- }
122
- };
123
- })
124
- };
125
- }
126
- };
127
- let actions = index_1.AclModel.getActions();
128
- assert.notStrictEqual(actions.acl, undefined);
129
- this._ctx.setHttpContext(new index_1.HttpContext("test.webda.io", "PUT", "/"));
130
- this._ctx.getHttpContext().setBody({ acl: "mine" });
131
- yield this.model._acl(this._ctx);
132
- // @ts-ignore
133
- assert.strictEqual(this.model.getAcl().acl, "mine");
134
- this._ctx.reinit();
135
- this._ctx.getHttpContext().setBody({ raw: { acl: "mine" } });
136
- yield assert.rejects(() => this.model._acl(this._ctx));
137
- this._ctx.setHttpContext(new index_1.HttpContext("test.webda.io", "GET", "/"));
138
- yield this.model._acl(this._ctx);
139
- assert.deepStrictEqual(JSON.parse(this._ctx.getResponseBody()), {
140
- raw: {
141
- acl: "mine"
142
- },
143
- resolved: [
144
- {
145
- actor: {
146
- displayName: "Plopi"
147
- },
148
- permission: "mine"
93
+ getService: () => {
94
+ return {
95
+ get: async () => {
96
+ return {
97
+ toPublicEntry: () => {
98
+ return {
99
+ displayName: "Plopi"
100
+ };
101
+ }
102
+ };
149
103
  }
150
- ]
151
- });
104
+ };
105
+ }
106
+ };
107
+ let actions = AclModel.getActions();
108
+ assert.notStrictEqual(actions.acl, undefined);
109
+ this._ctx.setHttpContext(new HttpContext("test.webda.io", "PUT", "/"));
110
+ this._ctx.getHttpContext().setBody({ acl: "mine" });
111
+ await this.model._acl(this._ctx);
112
+ // @ts-ignore
113
+ assert.strictEqual(this.model.getAcl().acl, "mine");
114
+ this._ctx.reinit();
115
+ this._ctx.getHttpContext().setBody({ raw: { acl: "mine" } });
116
+ await assert.rejects(() => this.model._acl(this._ctx));
117
+ this._ctx.setHttpContext(new HttpContext("test.webda.io", "GET", "/"));
118
+ await this.model._acl(this._ctx);
119
+ assert.deepStrictEqual(JSON.parse(this._ctx.getResponseBody()), {
120
+ raw: {
121
+ acl: "mine"
122
+ },
123
+ resolved: [
124
+ {
125
+ actor: {
126
+ displayName: "Plopi"
127
+ },
128
+ permission: "mine"
129
+ }
130
+ ]
152
131
  });
153
132
  }
154
- onSave() {
155
- return __awaiter(this, void 0, void 0, function* () {
156
- this.model.setContext(this._ctx);
157
- yield this.model._onSave();
158
- assert.deepStrictEqual(this.model.__acl, { "user-uid": "all" });
159
- assert.strictEqual(this.model._creator, "user-uid");
160
- });
133
+ async onSave() {
134
+ this.model.setContext(this._ctx);
135
+ await this.model._onSave();
136
+ assert.deepStrictEqual(this.model.__acl, { "user-uid": "all" });
137
+ assert.strictEqual(this.model._creator, "user-uid");
161
138
  }
162
139
  };
163
140
  __decorate([
164
- mocha_1.test
141
+ test
165
142
  ], AclPolicyTest.prototype, "get", null);
166
143
  __decorate([
167
- mocha_1.test
144
+ test
168
145
  ], AclPolicyTest.prototype, "multipermissions", null);
169
146
  __decorate([
170
- mocha_1.test
147
+ test
171
148
  ], AclPolicyTest.prototype, "multigroups", null);
172
149
  __decorate([
173
- mocha_1.test
150
+ test
174
151
  ], AclPolicyTest.prototype, "userid", null);
175
152
  __decorate([
176
- mocha_1.test
153
+ test
177
154
  ], AclPolicyTest.prototype, "all", null);
178
155
  __decorate([
179
- mocha_1.test
156
+ test
180
157
  ], AclPolicyTest.prototype, "httpAcls", null);
181
158
  __decorate([
182
- mocha_1.test
159
+ test
183
160
  ], AclPolicyTest.prototype, "onSave", null);
184
161
  AclPolicyTest = __decorate([
185
- mocha_1.suite
162
+ suite
186
163
  ], AclPolicyTest);
187
164
  //# sourceMappingURL=aclmodel.spec.js.map
@@ -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,8 @@
1
- import { Core } from "..";
2
- import { Service } from "../services/service";
3
- import { Store } from "../stores/store";
4
- import { Context } from "../utils/context";
5
- import { HttpMethodType } from "../utils/httpcontext";
1
+ import { Core } from "../index.js";
2
+ import { Service } from "../services/service.js";
3
+ import { Store } from "../stores/store.js";
4
+ import { Context } from "../utils/context.js";
5
+ import { HttpMethodType } from "../utils/httpcontext.js";
6
6
  declare type ModelLoader<T> = {
7
7
  refresh: () => Promise<T>;
8
8
  getUuid(): string;
@@ -17,16 +17,19 @@ export declare type ModelLinked<T> = (query?: string) => Promise<T[]>;
17
17
  */
18
18
  export declare type ModelMap<T, _FK extends keyof T, K extends keyof T> = (Pick<T, K> & ModelLoader<T>)[];
19
19
  /**
20
- * Define a link to 1:n or 1:1 relation
20
+ * Define a link to 1:n relation
21
21
  */
22
- export declare type ModelLink<T, _FK extends keyof T> = ModelLinker<T>;
22
+ export declare type ModelLink<T, _FK extends keyof T = any> = ModelLinker<T>;
23
23
  /**
24
24
  * Define several links for n:m relation
25
25
  */
26
26
  export declare type ModelLinks<T, _FK extends keyof T> = ModelLinker<T>[] | {
27
27
  [key: string]: ModelLinker<T>;
28
28
  };
29
- export declare type ModelParent<T, FK extends keyof T> = ModelLink<T, FK>;
29
+ /**
30
+ * Define the parent of the model
31
+ */
32
+ export declare type ModelParent<T> = ModelLink<T, any>;
30
33
  /**
31
34
  * Define an export of actions from Model
32
35
  */
@@ -75,6 +78,7 @@ export interface CoreModelDefinition<T extends CoreModel = CoreModel> {
75
78
  query: string;
76
79
  };
77
80
  }
81
+ export declare type Constructor<T> = new (...args: any[]) => T;
78
82
  /**
79
83
  * Sent if action required attached CoreModel is trigger
80
84
  */
@@ -112,7 +116,8 @@ declare class CoreModel {
112
116
  *
113
117
  * @TJS-ignore
114
118
  */
115
- __store: Store<CoreModel>;
119
+ __store: Store<this>;
120
+ __dirty: Set<string | symbol>;
116
121
  /**
117
122
  * Creation date
118
123
  */
@@ -128,6 +133,16 @@ declare class CoreModel {
128
133
  */
129
134
  __deleted: boolean;
130
135
  constructor();
136
+ /**
137
+ * Return a proxy to the object to detect if dirty
138
+ * @returns
139
+ */
140
+ getProxy(): this;
141
+ /**
142
+ * Return true if needs a save
143
+ * @returns
144
+ */
145
+ isDirty(): boolean;
131
146
  /**
132
147
  *
133
148
  * @returns the uuid of the object
@@ -177,6 +192,12 @@ declare class CoreModel {
177
192
  * @returns
178
193
  */
179
194
  static factory(model: new () => CoreModel, object: any, context?: Context): CoreModel;
195
+ /**
196
+ * Detect what looks like a CoreModel but can be from different version
197
+ * @param object
198
+ * @returns
199
+ */
200
+ static instanceOf(object: any): boolean;
180
201
  /**
181
202
  * Return if an object is attached to its store
182
203
  */
@@ -184,7 +205,7 @@ declare class CoreModel {
184
205
  /**
185
206
  * Attach an object to a store instance
186
207
  */
187
- attach(store: Store<CoreModel>): this;
208
+ attach(store: Store<this>): this;
188
209
  /**
189
210
  * Return a unique reference within the application to the object
190
211
  *
@@ -220,7 +241,7 @@ declare class CoreModel {
220
241
  /**
221
242
  * Return the object registered store
222
243
  */
223
- getStore(): Store<CoreModel, import("..").StoreParameters, import("..").StoreEvents>;
244
+ getStore(): Store<this>;
224
245
  /**
225
246
  * Get the object again
226
247
  *
@@ -234,17 +255,18 @@ declare class CoreModel {
234
255
  */
235
256
  delete(): Promise<void>;
236
257
  /**
237
- * Save this object
238
- *
239
- * @throws Error if the object is not coming from a store
258
+ * Patch current object with this update
259
+ * @param obj
260
+ * @param conditionField
261
+ * @param conditionValue
240
262
  */
241
- save(): Promise<this>;
263
+ patch(obj: Partial<this>, conditionField?: string | null, conditionValue?: any): Promise<void>;
242
264
  /**
243
- * Update this object
265
+ * Save this object
244
266
  *
245
267
  * @throws Error if the object is not coming from a store
246
268
  */
247
- update(changes: any): Promise<this>;
269
+ save(full?: boolean | keyof this, ...args: (keyof this)[]): Promise<this>;
248
270
  /**
249
271
  * Validate objet modification
250
272
  *