@webda/core 1.2.1 → 1.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/lib/application.d.ts +3 -0
  2. package/lib/application.js +26 -22
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +185 -2
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +62 -6
  7. package/lib/core.js +127 -86
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +151 -6
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +4 -0
  12. package/lib/index.js +4 -0
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +42 -3
  15. package/lib/models/aclmodel.js +58 -3
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +46 -0
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +58 -10
  20. package/lib/models/coremodel.js +39 -32
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +68 -6
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/ident.d.ts +8 -2
  25. package/lib/models/ident.js.map +1 -1
  26. package/lib/models/ident.spec.js +16 -0
  27. package/lib/models/ident.spec.js.map +1 -1
  28. package/lib/models/ownermodel.d.ts +1 -1
  29. package/lib/models/ownermodel.js.map +1 -1
  30. package/lib/models/ownermodel.spec.js +22 -19
  31. package/lib/models/ownermodel.spec.js.map +1 -1
  32. package/lib/models/user.d.ts +2 -0
  33. package/lib/models/user.js +4 -2
  34. package/lib/models/user.js.map +1 -1
  35. package/lib/models/user.spec.js +9 -2
  36. package/lib/models/user.spec.js.map +1 -1
  37. package/lib/queues/filequeue.d.ts +63 -0
  38. package/lib/queues/filequeue.js +161 -0
  39. package/lib/queues/filequeue.js.map +1 -0
  40. package/lib/queues/filequeue.spec.d.ts +1 -0
  41. package/lib/queues/filequeue.spec.js +90 -0
  42. package/lib/queues/filequeue.spec.js.map +1 -0
  43. package/lib/queues/memoryqueue.d.ts +18 -4
  44. package/lib/queues/memoryqueue.js +20 -13
  45. package/lib/queues/memoryqueue.js.map +1 -1
  46. package/lib/queues/memoryqueue.spec.js +142 -39
  47. package/lib/queues/memoryqueue.spec.js.map +1 -1
  48. package/lib/queues/pubsubservice.d.ts +27 -0
  49. package/lib/queues/pubsubservice.js +21 -0
  50. package/lib/queues/pubsubservice.js.map +1 -0
  51. package/lib/queues/queue.spec.js +16 -7
  52. package/lib/queues/queue.spec.js.map +1 -1
  53. package/lib/queues/queueservice.d.ts +108 -13
  54. package/lib/queues/queueservice.js +100 -36
  55. package/lib/queues/queueservice.js.map +1 -1
  56. package/lib/router.js +4 -6
  57. package/lib/router.js.map +1 -1
  58. package/lib/router.spec.js +27 -2
  59. package/lib/router.spec.js.map +1 -1
  60. package/lib/services/asyncevents.d.ts +110 -5
  61. package/lib/services/asyncevents.js +134 -39
  62. package/lib/services/asyncevents.js.map +1 -1
  63. package/lib/services/asyncevents.spec.js +58 -4
  64. package/lib/services/asyncevents.spec.js.map +1 -1
  65. package/lib/services/authentication.d.ts +57 -5
  66. package/lib/services/authentication.js +93 -84
  67. package/lib/services/authentication.js.map +1 -1
  68. package/lib/services/authentication.spec.js +118 -82
  69. package/lib/services/authentication.spec.js.map +1 -1
  70. package/lib/services/binary.d.ts +175 -48
  71. package/lib/services/binary.js +205 -170
  72. package/lib/services/binary.js.map +1 -1
  73. package/lib/services/binary.spec.d.ts +22 -3
  74. package/lib/services/binary.spec.js +327 -22
  75. package/lib/services/binary.spec.js.map +1 -1
  76. package/lib/services/configuration.d.ts +94 -13
  77. package/lib/services/configuration.js +98 -28
  78. package/lib/services/configuration.js.map +1 -1
  79. package/lib/services/configuration.spec.js +40 -1
  80. package/lib/services/configuration.spec.js.map +1 -1
  81. package/lib/services/cron.d.ts +4 -4
  82. package/lib/services/cron.js +37 -53
  83. package/lib/services/cron.js.map +1 -1
  84. package/lib/services/cron.spec.d.ts +1 -0
  85. package/lib/services/cron.spec.js +76 -0
  86. package/lib/services/cron.spec.js.map +1 -0
  87. package/lib/services/debugmailer.spec.js +18 -4
  88. package/lib/services/debugmailer.spec.js.map +1 -1
  89. package/lib/services/echo.js +22 -13
  90. package/lib/services/echo.js.map +1 -1
  91. package/lib/services/echo.spec.d.ts +1 -0
  92. package/lib/services/echo.spec.js +52 -0
  93. package/lib/services/echo.spec.js.map +1 -0
  94. package/lib/services/filebinary.d.ts +16 -9
  95. package/lib/services/filebinary.js +58 -73
  96. package/lib/services/filebinary.js.map +1 -1
  97. package/lib/services/filebinary.spec.d.ts +8 -1
  98. package/lib/services/filebinary.spec.js +133 -7
  99. package/lib/services/filebinary.spec.js.map +1 -1
  100. package/lib/services/fileconfiguration.d.ts +9 -3
  101. package/lib/services/fileconfiguration.js +13 -6
  102. package/lib/services/fileconfiguration.js.map +1 -1
  103. package/lib/services/fileconfiguration.spec.js +100 -5
  104. package/lib/services/fileconfiguration.spec.js.map +1 -1
  105. package/lib/services/kubernetesconfiguration.d.ts +8 -2
  106. package/lib/services/kubernetesconfiguration.js +16 -5
  107. package/lib/services/kubernetesconfiguration.js.map +1 -1
  108. package/lib/services/kubernetesconfiguration.spec.js +53 -16
  109. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  110. package/lib/services/mailer.d.ts +11 -2
  111. package/lib/services/mailer.js +28 -34
  112. package/lib/services/mailer.js.map +1 -1
  113. package/lib/services/mailer.spec.js +69 -23
  114. package/lib/services/mailer.spec.js.map +1 -1
  115. package/lib/services/oauth.d.ts +5 -2
  116. package/lib/services/oauth.js +22 -8
  117. package/lib/services/oauth.js.map +1 -1
  118. package/lib/services/oauth.spec.js +33 -3
  119. package/lib/services/oauth.spec.js.map +1 -1
  120. package/lib/services/resource.spec.js +39 -2
  121. package/lib/services/resource.spec.js.map +1 -1
  122. package/lib/services/service.d.ts +16 -0
  123. package/lib/services/service.js +47 -6
  124. package/lib/services/service.js.map +1 -1
  125. package/lib/services/service.spec.d.ts +1 -0
  126. package/lib/services/service.spec.js +119 -0
  127. package/lib/services/service.spec.js.map +1 -0
  128. package/lib/stores/aggregator.d.ts +43 -0
  129. package/lib/stores/aggregator.js +106 -0
  130. package/lib/stores/aggregator.js.map +1 -0
  131. package/lib/stores/file.d.ts +49 -11
  132. package/lib/stores/file.js +84 -81
  133. package/lib/stores/file.js.map +1 -1
  134. package/lib/stores/file.spec.d.ts +6 -1
  135. package/lib/stores/file.spec.js +134 -9
  136. package/lib/stores/file.spec.js.map +1 -1
  137. package/lib/stores/mapper.d.ts +151 -0
  138. package/lib/stores/mapper.js +294 -0
  139. package/lib/stores/mapper.js.map +1 -0
  140. package/lib/stores/mapper.spec.d.ts +1 -0
  141. package/lib/stores/mapper.spec.js +55 -0
  142. package/lib/stores/mapper.spec.js.map +1 -0
  143. package/lib/stores/memory.d.ts +52 -7
  144. package/lib/stores/memory.js +71 -33
  145. package/lib/stores/memory.js.map +1 -1
  146. package/lib/stores/memory.spec.d.ts +6 -1
  147. package/lib/stores/memory.spec.js +65 -4
  148. package/lib/stores/memory.spec.js.map +1 -1
  149. package/lib/stores/store.d.ts +263 -126
  150. package/lib/stores/store.js +285 -493
  151. package/lib/stores/store.js.map +1 -1
  152. package/lib/stores/store.spec.d.ts +20 -0
  153. package/lib/stores/store.spec.js +242 -18
  154. package/lib/stores/store.spec.js.map +1 -1
  155. package/lib/test.d.ts +1 -7
  156. package/lib/test.js +3 -12
  157. package/lib/test.js.map +1 -1
  158. package/lib/utils/abstractdeployer.spec.d.ts +1 -0
  159. package/lib/utils/abstractdeployer.spec.js +23 -0
  160. package/lib/utils/abstractdeployer.spec.js.map +1 -0
  161. package/lib/utils/context.d.ts +25 -2
  162. package/lib/utils/context.js +33 -12
  163. package/lib/utils/context.js.map +1 -1
  164. package/lib/utils/context.spec.js +81 -11
  165. package/lib/utils/context.spec.js.map +1 -1
  166. package/lib/utils/cookie.d.ts +12 -0
  167. package/lib/utils/cookie.js +13 -1
  168. package/lib/utils/cookie.js.map +1 -1
  169. package/lib/utils/cookie.spec.js +42 -11
  170. package/lib/utils/cookie.spec.js.map +1 -1
  171. package/lib/utils/logger.d.ts +23 -4
  172. package/lib/utils/logger.js +29 -6
  173. package/lib/utils/logger.js.map +1 -1
  174. package/lib/utils/logger.spec.js +8 -0
  175. package/lib/utils/logger.spec.js.map +1 -1
  176. package/lib/utils/serializers.d.ts +5 -5
  177. package/lib/utils/serializers.js +10 -10
  178. package/lib/utils/serializers.js.map +1 -1
  179. package/lib/utils/serializers.spec.js +41 -16
  180. package/lib/utils/serializers.spec.js.map +1 -1
  181. package/lib/utils/waiter.d.ts +59 -1
  182. package/lib/utils/waiter.js +86 -3
  183. package/lib/utils/waiter.js.map +1 -1
  184. package/lib/utils/waiter.spec.js +48 -4
  185. package/lib/utils/waiter.spec.js.map +1 -1
  186. package/package.json +16 -11
  187. package/test/badapp/package.json +4 -0
  188. package/test/badapp/webda.config.json +1 -0
  189. package/test/cachedapp/webda.config.json +7 -0
  190. package/test/config-file-no-reload.json +70 -0
  191. package/test/config-file-reload.json +7 -1
  192. package/test/config-kube-reload.json +7 -1
  193. package/test/config.json +45 -21
  194. package/test/config.old-default.json +0 -16
  195. package/test/config.old.json +0 -16
  196. package/test/deployments/invalid.json +1 -0
  197. package/test/moddas/fakeservice.js +5 -0
  198. package/test/models/ident.js +10 -14
  199. package/test/models/task.js +2 -4
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
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 test_1 = require("../test");
20
+ const assert = require("assert");
21
+ const __1 = require("..");
22
+ const sinon = require("sinon");
23
+ class FakeService extends __1.Service {
24
+ }
25
+ __decorate([
26
+ (0, __1.Inject)("Authentication2", true)
27
+ ], FakeService.prototype, "serv", void 0);
28
+ __decorate([
29
+ (0, __1.Inject)("bean", "Authentication", true)
30
+ ], FakeService.prototype, "serv2", void 0);
31
+ __decorate([
32
+ (0, __1.Inject)("params:bean", undefined, true)
33
+ ], FakeService.prototype, "serv3", void 0);
34
+ __decorate([
35
+ (0, __1.Inject)("params:bean", undefined, false)
36
+ ], FakeService.prototype, "serv4", void 0);
37
+ class FakeService2 extends __1.Service {
38
+ }
39
+ __decorate([
40
+ (0, __1.Inject)("Authentication2")
41
+ ], FakeService2.prototype, "serv", void 0);
42
+ let ServiceTest = class ServiceTest extends test_1.WebdaTest {
43
+ injector() {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ let service = new FakeService(this.webda, "plop");
46
+ assert.throws(() => service.resolve(), /Injector did not found bean 'undefined'\(parameter:bean\) for 'plop'/);
47
+ service = new FakeService(this.webda, "plop", { bean: "Authentication" });
48
+ service.resolve();
49
+ assert.strictEqual(service.serv, undefined);
50
+ assert.throws(() => new FakeService2(this.webda, "kf").resolve(), /Injector did not found bean 'Authentication2' for 'kf'/);
51
+ });
52
+ }
53
+ clean() {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ let service = new FakeService(this.webda, "plop");
56
+ // @ts-ignore
57
+ const origin = global.it;
58
+ // @ts-ignore
59
+ global.it = undefined;
60
+ assert.rejects(() => service.__clean(), /Only for test purpose/);
61
+ // @ts-ignore
62
+ global.it = origin;
63
+ yield service.__clean();
64
+ });
65
+ }
66
+ toPublicJSON() {
67
+ let service = new FakeService(this.webda, "plop", {});
68
+ let stub = sinon.stub(this.webda, "toPublicJSON").callsFake(() => "plop");
69
+ try {
70
+ assert.strictEqual(service.toPublicJSON({ l: "p" }), "plop");
71
+ }
72
+ finally {
73
+ stub.restore();
74
+ }
75
+ }
76
+ toStringMethod() {
77
+ let service = new FakeService(this.webda, "plop", { type: "FakeService" });
78
+ assert.strictEqual(service.toString(), "FakeService[plop]");
79
+ }
80
+ /**
81
+ * Ensure a message is displayed if listener is long
82
+ * Ensure error in listener are catched
83
+ */
84
+ longListener() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ let service = new FakeService(this.webda, "plop", {});
87
+ let logs = [];
88
+ service.log = (...args) => {
89
+ logs.push(args);
90
+ };
91
+ service.on("test", () => __awaiter(this, void 0, void 0, function* () {
92
+ yield new Promise(resolve => setTimeout(resolve, 140));
93
+ throw new Error("My error");
94
+ }));
95
+ yield service.emitSync("test", undefined);
96
+ assert.strictEqual(logs.length, 2);
97
+ assert.deepStrictEqual(logs.map(l => `${l[0]}_${l[1]}`), ["ERROR_Listener error", "INFO_Long listener"]);
98
+ });
99
+ }
100
+ };
101
+ __decorate([
102
+ mocha_1.test
103
+ ], ServiceTest.prototype, "injector", null);
104
+ __decorate([
105
+ mocha_1.test
106
+ ], ServiceTest.prototype, "clean", null);
107
+ __decorate([
108
+ mocha_1.test
109
+ ], ServiceTest.prototype, "toPublicJSON", null);
110
+ __decorate([
111
+ mocha_1.test
112
+ ], ServiceTest.prototype, "toStringMethod", null);
113
+ __decorate([
114
+ mocha_1.test
115
+ ], ServiceTest.prototype, "longListener", null);
116
+ ServiceTest = __decorate([
117
+ mocha_1.suite
118
+ ], ServiceTest);
119
+ //# sourceMappingURL=service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.spec.js","sourceRoot":"","sources":["../../src/services/service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ModdaDefinition } from "../core";
2
+ import { CoreModel } from "../models/coremodel";
3
+ import MapperService, { MapperParameters, MapUpdates } from "./mapper";
4
+ export declare class AggregatorParameters extends MapperParameters {
5
+ /**
6
+ * @default index
7
+ */
8
+ key: string;
9
+ constructor(params: any);
10
+ }
11
+ /**
12
+ * Service that aggregate several CoreModel into one
13
+ * Similar to a Mapper except that the target is constant
14
+ */
15
+ export default class AggregatorService<T extends AggregatorParameters = AggregatorParameters> extends MapperService<T> {
16
+ /**
17
+ * Create index if not existing
18
+ *
19
+ * @inheritdoc
20
+ */
21
+ init(): Promise<void>;
22
+ /**
23
+ * @override
24
+ */
25
+ loadParameters(params: any): AggregatorParameters;
26
+ /**
27
+ * Make sure the aggregate document exist
28
+ */
29
+ createAggregate(): Promise<void>;
30
+ /**
31
+ * Create an aggregation
32
+ *
33
+ * @param object
34
+ * @param updates
35
+ * @returns
36
+ */
37
+ handleMap(object: CoreModel, updates: MapUpdates): Promise<void>;
38
+ /**
39
+ * @override
40
+ */
41
+ static getModda(): ModdaDefinition;
42
+ }
43
+ export { AggregatorService };
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AggregatorService = exports.AggregatorParameters = void 0;
13
+ const mapper_1 = require("./mapper");
14
+ class AggregatorParameters extends mapper_1.MapperParameters {
15
+ constructor(params) {
16
+ var _a;
17
+ super(params);
18
+ (_a = this.key) !== null && _a !== void 0 ? _a : (this.key = "index");
19
+ }
20
+ }
21
+ exports.AggregatorParameters = AggregatorParameters;
22
+ /**
23
+ * Service that aggregate several CoreModel into one
24
+ * Similar to a Mapper except that the target is constant
25
+ */
26
+ class AggregatorService extends mapper_1.default {
27
+ /**
28
+ * Create index if not existing
29
+ *
30
+ * @inheritdoc
31
+ */
32
+ init() {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ yield this.createAggregate();
35
+ });
36
+ }
37
+ /**
38
+ * @override
39
+ */
40
+ loadParameters(params) {
41
+ return new AggregatorParameters(params);
42
+ }
43
+ /**
44
+ * Make sure the aggregate document exist
45
+ */
46
+ createAggregate() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ if (!(yield this.targetStore.exists(this.parameters.key))) {
49
+ yield this.targetStore.save({
50
+ uuid: this.parameters.key
51
+ });
52
+ }
53
+ });
54
+ }
55
+ /**
56
+ * Create an aggregation
57
+ *
58
+ * @param object
59
+ * @param updates
60
+ * @returns
61
+ */
62
+ handleMap(object, updates) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ let mapUpdates = {};
65
+ if (typeof updates === "object") {
66
+ let toUpdate = false;
67
+ for (let i in updates) {
68
+ if (this.parameters.fields.indexOf(i) >= 0) {
69
+ toUpdate = true;
70
+ }
71
+ }
72
+ if (!toUpdate) {
73
+ return;
74
+ }
75
+ }
76
+ else if (updates === "deleted") {
77
+ yield this.targetStore.removeAttribute(this.parameters.key, object.getUuid());
78
+ return;
79
+ }
80
+ else if (updates === "created") {
81
+ updates = object;
82
+ }
83
+ // Create mapper
84
+ let mapper = {};
85
+ this.parameters.fields.forEach(id => {
86
+ mapper[id] = updates[id];
87
+ });
88
+ mapUpdates[object.getUuid()] = mapper;
89
+ mapUpdates._lastUpdate = new Date();
90
+ yield this.targetStore._patch(mapUpdates, this.parameters.key);
91
+ });
92
+ }
93
+ /**
94
+ * @override
95
+ */
96
+ static getModda() {
97
+ return {
98
+ uuid: "Webda/Aggregator",
99
+ label: "Aggregator",
100
+ description: "Deduplicate content to an aggregate"
101
+ };
102
+ }
103
+ }
104
+ exports.default = AggregatorService;
105
+ exports.AggregatorService = AggregatorService;
106
+ //# sourceMappingURL=aggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/stores/aggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qCAAuE;AAEvE,MAAa,oBAAqB,SAAQ,yBAAgB;IAMxD,YAAY,MAAW;;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,MAAA,IAAI,CAAC,GAAG,oCAAR,IAAI,CAAC,GAAG,GAAK,OAAO,EAAC;IACvB,CAAC;CACF;AAVD,oDAUC;AAED;;;GAGG;AACH,MAAqB,iBAAyE,SAAQ,gBAAgB;IACpH;;;;OAIG;IACG,IAAI;;YACR,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;KAAA;IAED;;OAEG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACG,eAAe;;YACnB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBAC1B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC;KAAA;IAED;;;;;;OAMG;IACG,SAAS,CAAC,MAAiB,EAAE,OAAmB;;YACpD,IAAI,UAAU,GAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;oBACrB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;wBAC1C,QAAQ,GAAG,IAAI,CAAC;qBACjB;iBACF;gBACD,IAAI,CAAC,QAAQ,EAAE;oBACb,OAAO;iBACR;aACF;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE;gBAChC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9E,OAAO;aACR;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE;gBAChC,OAAO,GAAG,MAAM,CAAC;aAClB;YACD,gBAAgB;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAClC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;YACtC,UAAU,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC;KAAA;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,qCAAqC;SACnD,CAAC;IACJ,CAAC;CACF;AAzED,oCAyEC;AAEQ,8CAAiB"}
@@ -7,7 +7,7 @@ declare class FileStoreParameters extends StoreParameters {
7
7
  */
8
8
  folder: string;
9
9
  /**
10
- * Parameter sent to JSON.stringiy when storing the json
10
+ * Parameter sent to JSON.stringify when storing the json
11
11
  */
12
12
  beautify?: string | number;
13
13
  }
@@ -32,23 +32,61 @@ declare class FileStore<T extends CoreModel, K extends FileStoreParameters = Fil
32
32
  /**
33
33
  * Create the storage folder if does not exist
34
34
  */
35
- computeParameters(): Promise<void>;
35
+ computeParameters(): void;
36
+ /**
37
+ * Get the file path of an object
38
+ * @param uid of the object
39
+ * @returns
40
+ */
36
41
  file(uid: any): string;
42
+ /**
43
+ * @override
44
+ */
37
45
  exists(uid: any): Promise<boolean>;
38
46
  _find(request: any, offset: any, limit: any): Promise<any>;
39
- _save(object: any): Promise<any>;
47
+ /**
48
+ * @override
49
+ */
50
+ _save(object: T): Promise<T>;
40
51
  /**
41
52
  * @inheritdoc
42
53
  */
43
54
  _upsertItemToCollection(uid: string, prop: string, item: any, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<void>;
44
- _removeAttribute(uuid: string, attribute: string): Promise<void>;
45
- _deleteItemFromCollection(uid: any, prop: any, index: any, itemWriteCondition: any, itemWriteConditionField: any, updateDate: Date): Promise<any>;
46
- _delete(uid: any, writeCondition: any, writeConditionField: any): Promise<void>;
47
- _patch(object: any, uid: any, writeCondition: any, writeConditionField: any): Promise<any>;
48
- _update(object: any, uid: any, writeCondition: any, writeConditionField: any): Promise<any>;
49
- getAll(uids: any): Promise<any>;
50
- _get(uid: string): Promise<any>;
51
- _incrementAttribute(uid: any, prop: any, value: any, updateDate: Date): Promise<any>;
55
+ /**
56
+ * @inheritdoc
57
+ */
58
+ _removeAttribute(uuid: string, attribute: string, writeCondition?: any, writeConditionField?: string): Promise<void>;
59
+ /**
60
+ * @inheritdoc
61
+ */
62
+ _deleteItemFromCollection(uid: string, prop: string, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<T>;
63
+ /**
64
+ * @inheritdoc
65
+ */
66
+ _delete(uid: string): Promise<void>;
67
+ /**
68
+ * @inheritdoc
69
+ */
70
+ _patch(object: any, uid: string, writeCondition?: any, writeConditionField?: string): Promise<any>;
71
+ /**
72
+ * @override
73
+ */
74
+ _update(object: any, uid: string, writeCondition?: any, writeConditionField?: string): Promise<any>;
75
+ /**
76
+ * @override
77
+ */
78
+ getAll(uids?: string[]): Promise<any>;
79
+ /**
80
+ * @override
81
+ */
82
+ _get(uid: string, raiseIfNotFound?: boolean): Promise<T>;
83
+ /**
84
+ * @override
85
+ */
86
+ _incrementAttribute(uid: string, prop: string, value: number, updateDate: Date): Promise<any>;
87
+ /**
88
+ * @override
89
+ */
52
90
  __clean(): Promise<void>;
53
91
  /**
54
92
  *
@@ -12,8 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.FileStore = void 0;
13
13
  const fs = require("fs");
14
14
  const path = require("path");
15
- const core_1 = require("../core");
16
- const coremodel_1 = require("../models/coremodel");
15
+ const serializers_1 = require("../utils/serializers");
17
16
  const store_1 = require("./store");
18
17
  class FileStoreParameters extends store_1.StoreParameters {
19
18
  }
@@ -40,23 +39,25 @@ class FileStore extends store_1.Store {
40
39
  * Create the storage folder if does not exist
41
40
  */
42
41
  computeParameters() {
43
- const _super = Object.create(null, {
44
- computeParameters: { get: () => super.computeParameters }
45
- });
46
- return __awaiter(this, void 0, void 0, function* () {
47
- _super.computeParameters.call(this);
48
- if (!fs.existsSync(this.parameters.folder)) {
49
- fs.mkdirSync(this.parameters.folder);
50
- }
51
- });
42
+ super.computeParameters();
43
+ if (!fs.existsSync(this.parameters.folder)) {
44
+ fs.mkdirSync(this.parameters.folder);
45
+ }
52
46
  }
47
+ /**
48
+ * Get the file path of an object
49
+ * @param uid of the object
50
+ * @returns
51
+ */
53
52
  file(uid) {
54
53
  return `${this.parameters.folder}/${uid}${FileStore.EXTENSION}`;
55
54
  }
55
+ /**
56
+ * @override
57
+ */
56
58
  exists(uid) {
57
59
  return __awaiter(this, void 0, void 0, function* () {
58
- // existsSync is deprecated might change it
59
- return Promise.resolve(fs.existsSync(this.file(uid)));
60
+ return fs.existsSync(this.file(uid));
60
61
  });
61
62
  }
62
63
  _find(request, offset, limit) {
@@ -67,81 +68,89 @@ class FileStore extends store_1.Store {
67
68
  return Promise.all(files.map(f => this._get(f)));
68
69
  });
69
70
  }
71
+ /**
72
+ * @override
73
+ */
70
74
  _save(object) {
71
- fs.writeFileSync(this.file(object[this._uuidField]), JSON.stringify(object.toStoredJSON(), undefined, this.parameters.beautify));
72
- return Promise.resolve(object);
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ fs.writeFileSync(this.file(object.getUuid()), JSON.stringify(object.toStoredJSON(), undefined, this.parameters.beautify));
77
+ return object;
78
+ });
73
79
  }
74
80
  /**
75
81
  * @inheritdoc
76
82
  */
77
83
  _upsertItemToCollection(uid, prop, item, index, itemWriteCondition, itemWriteConditionField, updateDate) {
78
84
  return __awaiter(this, void 0, void 0, function* () {
79
- return this.emulateUpsertItemToCollection(yield this._get(uid), prop, item, index, itemWriteCondition, itemWriteConditionField, updateDate);
85
+ try {
86
+ // Need to keep sync to avoid conflicts
87
+ return yield this.simulateUpsertItemToCollection(this.initModel(serializers_1.JSONUtils.loadFile(this.file(uid))), prop, item, updateDate, index, itemWriteCondition, itemWriteConditionField);
88
+ }
89
+ catch (err) {
90
+ throw new store_1.StoreNotFoundError(uid, this.getName());
91
+ }
80
92
  });
81
93
  }
82
- _removeAttribute(uuid, attribute) {
94
+ /**
95
+ * @inheritdoc
96
+ */
97
+ _removeAttribute(uuid, attribute, writeCondition, writeConditionField) {
83
98
  return __awaiter(this, void 0, void 0, function* () {
84
- let res = yield this._get(uuid);
99
+ let res = yield this._get(uuid, true);
100
+ this.checkUpdateCondition(res, writeConditionField, writeCondition);
85
101
  delete res[attribute];
86
102
  yield this._save(res);
87
103
  });
88
104
  }
105
+ /**
106
+ * @inheritdoc
107
+ */
89
108
  _deleteItemFromCollection(uid, prop, index, itemWriteCondition, itemWriteConditionField, updateDate) {
90
109
  return __awaiter(this, void 0, void 0, function* () {
91
- let res = yield this._get(uid);
92
- if (res === undefined) {
93
- throw Error("NotFound");
94
- }
95
- if (itemWriteCondition && res[prop][index][itemWriteConditionField] != itemWriteCondition) {
96
- throw Error("UpdateCondition not met");
97
- }
110
+ let res = yield this._get(uid, true);
111
+ this.checkCollectionUpdateCondition(res, prop, itemWriteConditionField, itemWriteCondition, index);
98
112
  res[prop].splice(index, 1);
99
113
  res[this._lastUpdateField] = updateDate;
100
114
  return this._save(res);
101
115
  });
102
116
  }
103
- _delete(uid, writeCondition, writeConditionField) {
117
+ /**
118
+ * @inheritdoc
119
+ */
120
+ _delete(uid) {
104
121
  return __awaiter(this, void 0, void 0, function* () {
105
- let res = yield this._get(uid);
106
- if (writeCondition && res && res[writeConditionField] != writeCondition) {
107
- return Promise.reject(Error("UpdateCondition not met"));
122
+ const filePath = this.file(uid);
123
+ if (fs.existsSync(filePath)) {
124
+ fs.unlinkSync(filePath);
108
125
  }
109
- if (res) {
110
- fs.unlinkSync(this.file(uid));
111
- }
112
- return Promise.resolve();
113
126
  });
114
127
  }
128
+ /**
129
+ * @inheritdoc
130
+ */
115
131
  _patch(object, uid, writeCondition, writeConditionField) {
116
132
  return __awaiter(this, void 0, void 0, function* () {
117
- let stored = yield this._get(uid || object[this._uuidField]);
118
- if (!stored) {
119
- return Promise.reject(Error("NotFound"));
120
- }
121
- if (writeCondition && stored[writeConditionField] != writeCondition) {
122
- return Promise.reject(Error("UpdateCondition not met"));
123
- }
133
+ let stored = yield this._get(uid, true);
134
+ this.checkUpdateCondition(stored, writeConditionField, writeCondition);
124
135
  for (var prop in object) {
125
136
  stored[prop] = object[prop];
126
137
  }
127
138
  return this._save(stored);
128
139
  });
129
140
  }
141
+ /**
142
+ * @override
143
+ */
130
144
  _update(object, uid, writeCondition, writeConditionField) {
131
145
  return __awaiter(this, void 0, void 0, function* () {
132
- let stored = yield this._get(uid || object[this._uuidField]);
133
- if (!stored) {
134
- throw new core_1.WebdaError("STORE_NOTFOUND", "NotFound");
135
- }
136
- if (writeCondition && stored[writeConditionField] != writeCondition) {
137
- console.log(stored[this._lastUpdateField], writeCondition, this._lastUpdateField, object[writeCondition]);
138
- throw new core_1.WebdaError("STORE_UPDATE_CONDITION_NOT_MET", "UpdateCondition not met");
139
- }
140
- let coreModel = new coremodel_1.CoreModel();
141
- coreModel.load(object, true);
142
- return this._save(coreModel);
146
+ let stored = yield this._get(uid, true);
147
+ this.checkUpdateCondition(stored, writeConditionField, writeCondition);
148
+ return this._save(this.initModel(object));
143
149
  });
144
150
  }
151
+ /**
152
+ * @override
153
+ */
145
154
  getAll(uids) {
146
155
  return __awaiter(this, void 0, void 0, function* () {
147
156
  if (!uids) {
@@ -153,27 +162,36 @@ class FileStore extends store_1.Store {
153
162
  }
154
163
  let result = [];
155
164
  for (let i in uids) {
156
- result.push(this._get(uids[i]));
165
+ let model = this._get(uids[i]);
166
+ result.push(model);
157
167
  }
158
- return Promise.all(result);
168
+ return (yield Promise.all(result)).filter(f => f !== undefined);
159
169
  });
160
170
  }
161
- _get(uid) {
171
+ /**
172
+ * @override
173
+ */
174
+ _get(uid, raiseIfNotFound = false) {
162
175
  return __awaiter(this, void 0, void 0, function* () {
163
176
  let res = yield this.exists(uid);
164
177
  if (res) {
165
- let data = fs.readFileSync(this.file(uid));
166
- return this.initModel(JSON.parse(data.toString()));
178
+ let data = JSON.parse(fs.readFileSync(this.file(uid)).toString());
179
+ if (data.__type !== this._model.name && this.parameters.strict) {
180
+ return undefined;
181
+ }
182
+ return this.initModel(data);
183
+ }
184
+ else if (raiseIfNotFound) {
185
+ throw new store_1.StoreNotFoundError(uid, this.getName());
167
186
  }
168
187
  });
169
188
  }
189
+ /**
190
+ * @override
191
+ */
170
192
  _incrementAttribute(uid, prop, value, updateDate) {
171
193
  return __awaiter(this, void 0, void 0, function* () {
172
- let found = this.exists(uid);
173
- if (!found) {
174
- throw Error("NotFound");
175
- }
176
- let stored = yield this._get(uid);
194
+ let stored = yield this._get(uid, true);
177
195
  if (stored[prop] === undefined) {
178
196
  stored[prop] = 0;
179
197
  }
@@ -182,28 +200,13 @@ class FileStore extends store_1.Store {
182
200
  return this._save(stored);
183
201
  });
184
202
  }
203
+ /**
204
+ * @override
205
+ */
185
206
  __clean() {
186
207
  return __awaiter(this, void 0, void 0, function* () {
187
- if (!fs.existsSync(this.parameters.folder)) {
188
- return;
189
- }
190
- var files = fs.readdirSync(this.parameters.folder);
191
- var promises = [];
192
- for (var file in files) {
193
- let filename = this.parameters.folder + "/" + files[file];
194
- promises.push(new Promise((resolve, reject) => {
195
- fs.unlink(filename, err => {
196
- if (err) {
197
- reject(err);
198
- }
199
- resolve();
200
- });
201
- }));
202
- }
203
- yield Promise.all(promises);
204
- if (this.parameters.index) {
205
- yield this.createIndex();
206
- }
208
+ // This is only during test
209
+ require("fs-extra").emptyDirSync(this.parameters.folder);
207
210
  });
208
211
  }
209
212
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/stores/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/stores/file.ts"],"names":[],"mappings":"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"}