@webda/core 1.6.0-beta.3 → 2.0.0-beta.2

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 (253) hide show
  1. package/lib/application.d.ts +355 -195
  2. package/lib/application.js +188 -682
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +109 -289
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +150 -215
  7. package/lib/core.js +188 -71
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +103 -42
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +4 -0
  12. package/lib/index.js +9 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +3 -1
  15. package/lib/models/aclmodel.js +6 -3
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +10 -5
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +86 -24
  20. package/lib/models/coremodel.js +85 -36
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +21 -2
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/ident.d.ts +7 -5
  25. package/lib/models/ident.js +2 -1
  26. package/lib/models/ident.js.map +1 -1
  27. package/lib/models/ident.spec.js +1 -1
  28. package/lib/models/ident.spec.js.map +1 -1
  29. package/lib/models/ownermodel.d.ts +18 -4
  30. package/lib/models/ownermodel.js +24 -4
  31. package/lib/models/ownermodel.js.map +1 -1
  32. package/lib/models/ownermodel.spec.js +18 -1
  33. package/lib/models/ownermodel.spec.js.map +1 -1
  34. package/lib/models/rolemodel.js.map +1 -1
  35. package/lib/models/rolemodel.spec.js +5 -2
  36. package/lib/models/rolemodel.spec.js.map +1 -1
  37. package/lib/models/user.d.ts +7 -6
  38. package/lib/models/user.js +2 -1
  39. package/lib/models/user.js.map +1 -1
  40. package/lib/models/user.spec.js +1 -1
  41. package/lib/models/user.spec.js.map +1 -1
  42. package/lib/queues/filequeue.d.ts +2 -7
  43. package/lib/queues/filequeue.js +4 -13
  44. package/lib/queues/filequeue.js.map +1 -1
  45. package/lib/queues/filequeue.spec.js +2 -3
  46. package/lib/queues/filequeue.spec.js.map +1 -1
  47. package/lib/queues/memoryqueue.d.ts +2 -7
  48. package/lib/queues/memoryqueue.js +1 -11
  49. package/lib/queues/memoryqueue.js.map +1 -1
  50. package/lib/queues/memoryqueue.spec.js +1 -1
  51. package/lib/queues/memoryqueue.spec.js.map +1 -1
  52. package/lib/queues/queue.spec.d.ts +1 -1
  53. package/lib/queues/queue.spec.js +12 -10
  54. package/lib/queues/queue.spec.js.map +1 -1
  55. package/lib/queues/queueservice.d.ts +1 -1
  56. package/lib/queues/queueservice.js +1 -1
  57. package/lib/queues/queueservice.js.map +1 -1
  58. package/lib/router.d.ts +52 -2
  59. package/lib/router.js +80 -51
  60. package/lib/router.js.map +1 -1
  61. package/lib/router.spec.js +23 -6
  62. package/lib/router.spec.js.map +1 -1
  63. package/lib/services/asyncevents.d.ts +1 -0
  64. package/lib/services/asyncevents.js +4 -3
  65. package/lib/services/asyncevents.js.map +1 -1
  66. package/lib/services/asyncevents.spec.js +2 -2
  67. package/lib/services/asyncevents.spec.js.map +1 -1
  68. package/lib/services/authentication.d.ts +39 -11
  69. package/lib/services/authentication.js +60 -55
  70. package/lib/services/authentication.js.map +1 -1
  71. package/lib/services/authentication.spec.js +2 -1
  72. package/lib/services/authentication.spec.js.map +1 -1
  73. package/lib/services/binary.d.ts +127 -65
  74. package/lib/services/binary.js +255 -98
  75. package/lib/services/binary.js.map +1 -1
  76. package/lib/services/binary.spec.d.ts +2 -1
  77. package/lib/services/binary.spec.js +101 -30
  78. package/lib/services/binary.spec.js.map +1 -1
  79. package/lib/services/cloudbinary.d.ts +67 -0
  80. package/lib/services/cloudbinary.js +178 -0
  81. package/lib/services/cloudbinary.js.map +1 -0
  82. package/lib/services/cloudbinary.spec.d.ts +13 -0
  83. package/lib/services/cloudbinary.spec.js +212 -0
  84. package/lib/services/cloudbinary.spec.js.map +1 -0
  85. package/lib/services/configuration.d.ts +7 -2
  86. package/lib/services/configuration.js +6 -5
  87. package/lib/services/configuration.js.map +1 -1
  88. package/lib/services/configuration.spec.js +3 -2
  89. package/lib/services/configuration.spec.js.map +1 -1
  90. package/lib/services/cron.d.ts +5 -6
  91. package/lib/services/cron.js +5 -12
  92. package/lib/services/cron.js.map +1 -1
  93. package/lib/services/cron.spec.js +3 -4
  94. package/lib/services/cron.spec.js.map +1 -1
  95. package/lib/services/debugmailer.d.ts +3 -5
  96. package/lib/services/debugmailer.js +3 -11
  97. package/lib/services/debugmailer.js.map +1 -1
  98. package/lib/services/debugmailer.spec.js +1 -1
  99. package/lib/services/debugmailer.spec.js.map +1 -1
  100. package/lib/services/echo.d.ts +3 -7
  101. package/lib/services/echo.js +1 -11
  102. package/lib/services/echo.js.map +1 -1
  103. package/lib/services/echo.spec.js +4 -3
  104. package/lib/services/echo.spec.js.map +1 -1
  105. package/lib/services/filebinary.d.ts +45 -16
  106. package/lib/services/filebinary.js +147 -50
  107. package/lib/services/filebinary.js.map +1 -1
  108. package/lib/services/filebinary.spec.d.ts +4 -2
  109. package/lib/services/filebinary.spec.js +50 -12
  110. package/lib/services/filebinary.spec.js.map +1 -1
  111. package/lib/services/fileconfiguration.d.ts +1 -5
  112. package/lib/services/fileconfiguration.js +3 -12
  113. package/lib/services/fileconfiguration.js.map +1 -1
  114. package/lib/services/fileconfiguration.spec.js +2 -2
  115. package/lib/services/fileconfiguration.spec.js.map +1 -1
  116. package/lib/services/invitationservice.d.ts +28 -4
  117. package/lib/services/invitationservice.js +9 -6
  118. package/lib/services/invitationservice.js.map +1 -1
  119. package/lib/services/invitationservice.spec.js +4 -3
  120. package/lib/services/invitationservice.spec.js.map +1 -1
  121. package/lib/services/kubernetesconfiguration.d.ts +3 -5
  122. package/lib/services/kubernetesconfiguration.js +7 -14
  123. package/lib/services/kubernetesconfiguration.js.map +1 -1
  124. package/lib/services/kubernetesconfiguration.spec.js +5 -5
  125. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  126. package/lib/services/mailer.d.ts +1 -5
  127. package/lib/services/mailer.js +1 -10
  128. package/lib/services/mailer.js.map +1 -1
  129. package/lib/services/mailer.spec.js +3 -3
  130. package/lib/services/mailer.spec.js.map +1 -1
  131. package/lib/services/notificationservice.d.ts +2 -0
  132. package/lib/services/notificationservice.js +2 -0
  133. package/lib/services/notificationservice.js.map +1 -1
  134. package/lib/services/notificationservice.spec.js +2 -2
  135. package/lib/services/notificationservice.spec.js.map +1 -1
  136. package/lib/services/oauth.d.ts +8 -6
  137. package/lib/services/oauth.js +30 -14
  138. package/lib/services/oauth.js.map +1 -1
  139. package/lib/services/oauth.spec.js +11 -10
  140. package/lib/services/oauth.spec.js.map +1 -1
  141. package/lib/services/resource.d.ts +18 -5
  142. package/lib/services/resource.js +42 -23
  143. package/lib/services/resource.js.map +1 -1
  144. package/lib/services/resource.spec.js +4 -4
  145. package/lib/services/resource.spec.js.map +1 -1
  146. package/lib/services/service.d.ts +25 -25
  147. package/lib/services/service.js +21 -25
  148. package/lib/services/service.js.map +1 -1
  149. package/lib/services/service.spec.js +2 -2
  150. package/lib/services/service.spec.js.map +1 -1
  151. package/lib/services/version.d.ts +2 -5
  152. package/lib/services/version.js +1 -10
  153. package/lib/services/version.js.map +1 -1
  154. package/lib/services/version.spec.js +1 -1
  155. package/lib/services/version.spec.js.map +1 -1
  156. package/lib/stores/aggregator.d.ts +3 -5
  157. package/lib/stores/aggregator.js +3 -10
  158. package/lib/stores/aggregator.js.map +1 -1
  159. package/lib/stores/file.d.ts +15 -8
  160. package/lib/stores/file.js +21 -18
  161. package/lib/stores/file.js.map +1 -1
  162. package/lib/stores/file.spec.d.ts +3 -1
  163. package/lib/stores/file.spec.js +32 -8
  164. package/lib/stores/file.spec.js.map +1 -1
  165. package/lib/stores/mapper.d.ts +1 -5
  166. package/lib/stores/mapper.js +5 -13
  167. package/lib/stores/mapper.js.map +1 -1
  168. package/lib/stores/mapper.spec.js +2 -2
  169. package/lib/stores/mapper.spec.js.map +1 -1
  170. package/lib/stores/memory.d.ts +5 -9
  171. package/lib/stores/memory.js +5 -17
  172. package/lib/stores/memory.js.map +1 -1
  173. package/lib/stores/memory.spec.d.ts +2 -1
  174. package/lib/stores/memory.spec.js +36 -4
  175. package/lib/stores/memory.spec.js.map +1 -1
  176. package/lib/stores/store.d.ts +142 -29
  177. package/lib/stores/store.js +451 -82
  178. package/lib/stores/store.js.map +1 -1
  179. package/lib/stores/store.spec.d.ts +31 -4
  180. package/lib/stores/store.spec.js +206 -35
  181. package/lib/stores/store.spec.js.map +1 -1
  182. package/lib/stores/webdaql/WebdaQLLexer.d.ts +53 -0
  183. package/lib/stores/webdaql/WebdaQLLexer.js +290 -0
  184. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -0
  185. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +53 -0
  186. package/lib/stores/webdaql/WebdaQLParserLexer.js +290 -0
  187. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -0
  188. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +284 -0
  189. package/lib/stores/webdaql/WebdaQLParserListener.js +4 -0
  190. package/lib/stores/webdaql/WebdaQLParserListener.js.map +1 -0
  191. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +301 -0
  192. package/lib/stores/webdaql/WebdaQLParserParser.js +1781 -0
  193. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -0
  194. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +174 -0
  195. package/lib/stores/webdaql/WebdaQLParserVisitor.js +4 -0
  196. package/lib/stores/webdaql/WebdaQLParserVisitor.js.map +1 -0
  197. package/lib/stores/webdaql/query.d.ts +300 -0
  198. package/lib/stores/webdaql/query.js +471 -0
  199. package/lib/stores/webdaql/query.js.map +1 -0
  200. package/lib/stores/webdaql/query.spec.d.ts +1 -0
  201. package/lib/stores/webdaql/query.spec.js +136 -0
  202. package/lib/stores/webdaql/query.spec.js.map +1 -0
  203. package/lib/test.d.ts +54 -9
  204. package/lib/test.js +139 -25
  205. package/lib/test.js.map +1 -1
  206. package/lib/unpackedapplication.d.ts +66 -0
  207. package/lib/unpackedapplication.js +219 -0
  208. package/lib/unpackedapplication.js.map +1 -0
  209. package/lib/utils/abstractdeployer.spec.js +1 -1
  210. package/lib/utils/abstractdeployer.spec.js.map +1 -1
  211. package/lib/utils/context.d.ts +17 -58
  212. package/lib/utils/context.js +33 -124
  213. package/lib/utils/context.js.map +1 -1
  214. package/lib/utils/context.spec.js +52 -28
  215. package/lib/utils/context.spec.js.map +1 -1
  216. package/lib/utils/cookie.d.ts +6 -3
  217. package/lib/utils/cookie.js +9 -5
  218. package/lib/utils/cookie.js.map +1 -1
  219. package/lib/utils/cookie.spec.js +5 -5
  220. package/lib/utils/cookie.spec.js.map +1 -1
  221. package/lib/utils/httpcontext.d.ts +182 -0
  222. package/lib/utils/httpcontext.js +325 -0
  223. package/lib/utils/httpcontext.js.map +1 -0
  224. package/lib/utils/httpcontext.spec.d.ts +5 -0
  225. package/lib/utils/httpcontext.spec.js +90 -0
  226. package/lib/utils/httpcontext.spec.js.map +1 -0
  227. package/lib/utils/logger.d.ts +18 -5
  228. package/lib/utils/logger.js +17 -4
  229. package/lib/utils/logger.js.map +1 -1
  230. package/lib/utils/logger.spec.js.map +1 -1
  231. package/lib/utils/serializers.js +5 -1
  232. package/lib/utils/serializers.js.map +1 -1
  233. package/lib/utils/serializers.spec.js +3 -3
  234. package/lib/utils/serializers.spec.js.map +1 -1
  235. package/lib/utils/waiter.d.ts +1 -1
  236. package/lib/utils/waiter.js.map +1 -1
  237. package/lib/utils/waiter.spec.js +2 -2
  238. package/lib/utils/waiter.spec.js.map +1 -1
  239. package/package.json +25 -18
  240. package/test/config-file-no-reload.json +2 -1
  241. package/test/config-file-reload.json +2 -1
  242. package/test/config-kube-reload.json +2 -1
  243. package/test/config-reload.json +1 -1
  244. package/test/config.json +8 -11
  245. package/test/config.old.json +1 -1
  246. package/test/moddas/annotatedservice.js +1 -3
  247. package/test/moddas/debugmailer.js +2 -7
  248. package/test/moddas/fakeservice.js +1 -1
  249. package/test/moddas/voidstore.js +2 -4
  250. package/test/models/ident.js +1 -1
  251. package/test/models/task.js +1 -6
  252. package/webda.module.json +1124 -0
  253. package/test/config.old-default.json +0 -151
@@ -16,11 +16,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.MemoryStoreTest = void 0;
19
- const store_spec_1 = require("./store.spec");
20
- const assert = require("assert");
21
19
  const mocha_1 = require("@testdeck/mocha");
22
- const context_1 = require("../utils/context");
20
+ const assert = require("assert");
21
+ const httpcontext_1 = require("../utils/httpcontext");
23
22
  const store_1 = require("./store");
23
+ const store_spec_1 = require("./store.spec");
24
+ const query_1 = require("./webdaql/query");
24
25
  let MemoryStoreTest = class MemoryStoreTest extends store_spec_1.StoreTest {
25
26
  getIdentStore() {
26
27
  // Need to slow down the _get
@@ -50,7 +51,7 @@ let MemoryStoreTest = class MemoryStoreTest extends store_spec_1.StoreTest {
50
51
  deleteAsyncHttp() {
51
52
  return __awaiter(this, void 0, void 0, function* () {
52
53
  let executor, ctx;
53
- ctx = yield this.webda.newContext(new context_1.HttpContext("test.webda.io", "GET", "/memory/idents/ToDelete"));
54
+ ctx = yield this.webda.newContext(new httpcontext_1.HttpContext("test.webda.io", "GET", "/memory/idents/ToDelete"));
54
55
  let identStore = this.getIdentStore();
55
56
  yield identStore.save({
56
57
  uuid: "toDelete",
@@ -69,6 +70,34 @@ let MemoryStoreTest = class MemoryStoreTest extends store_spec_1.StoreTest {
69
70
  assert.strictEqual(identStore._getSync("notFound"), null);
70
71
  });
71
72
  }
73
+ queryAdditional() {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ let userStore = yield this.fillForQuery();
76
+ // Verify permission issue and half pagination
77
+ userStore.setModel(store_spec_1.PermissionModel);
78
+ // Return undefined as filter to trigger the warning
79
+ let find = userStore.find;
80
+ userStore.find = (query) => __awaiter(this, void 0, void 0, function* () {
81
+ let res = yield find.bind(userStore)({
82
+ filter: new query_1.WebdaQL.AndExpression([]),
83
+ continuationToken: query.continuationToken,
84
+ limit: query.limit
85
+ });
86
+ return Object.assign(Object.assign({}, res), { filter: undefined });
87
+ });
88
+ let context = yield this.newContext();
89
+ // Verify pagination system
90
+ let res, offset;
91
+ let total = 0;
92
+ do {
93
+ res = yield userStore.query(`state = 'CA' LIMIT 100 ${offset ? 'OFFSET "' + offset + '"' : ""}`, context);
94
+ offset = res.continuationToken;
95
+ total += res.results.length;
96
+ } while (offset);
97
+ assert.strictEqual(total, 100);
98
+ return userStore;
99
+ });
100
+ }
72
101
  initRoutes() {
73
102
  // cov
74
103
  let identStore = this.getIdentStore();
@@ -104,6 +133,9 @@ let MemoryStoreTest = class MemoryStoreTest extends store_spec_1.StoreTest {
104
133
  __decorate([
105
134
  mocha_1.test
106
135
  ], MemoryStoreTest.prototype, "deleteAsyncHttp", null);
136
+ __decorate([
137
+ mocha_1.test
138
+ ], MemoryStoreTest.prototype, "queryAdditional", null);
107
139
  __decorate([
108
140
  mocha_1.test
109
141
  ], MemoryStoreTest.prototype, "initRoutes", null);
@@ -1 +1 @@
1
- {"version":3,"file":"memory.spec.js","sourceRoot":"","sources":["../../src/stores/memory.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.spec.js","sourceRoot":"","sources":["../../src/stores/memory.spec.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { ConfigurationProvider } from "../index";
3
3
  import { CoreModel, CoreModelDefinition } from "../models/coremodel";
4
4
  import { Service, ServiceParameters } from "../services/service";
5
5
  import { Context } from "../utils/context";
6
+ import { WebdaQL } from "./webdaql/query";
6
7
  export declare class StoreNotFoundError extends WebdaError {
7
8
  constructor(uuid: string, storeName: string);
8
9
  }
@@ -163,32 +164,32 @@ export interface EventStorePartialUpdated {
163
164
  /**
164
165
  * Event sent when a query on the store is emitted
165
166
  */
166
- export interface EventStoreFind {
167
+ export interface EventStoreQuery {
167
168
  /**
168
169
  * Request sent
169
170
  */
170
- request: any;
171
+ query: string;
171
172
  /**
172
173
  * Emitting store
173
174
  */
174
175
  store: Store;
175
176
  /**
176
- * Offset on the results
177
+ * The parsed query by our grammar
177
178
  */
178
- offset: number;
179
- /**
180
- * Max number of results
181
- */
182
- limit: number;
179
+ parsedQuery: WebdaQL.Query;
183
180
  }
184
181
  /**
185
182
  * Event sent when query is resolved
186
183
  */
187
- export interface EventStoreFound extends EventStoreFind {
184
+ export interface EventStoreQueried extends EventStoreQuery {
188
185
  /**
189
186
  * Results from the query
190
187
  */
191
188
  results: CoreModel[];
189
+ /**
190
+ * The next continuation token
191
+ */
192
+ continuationToken: string;
192
193
  }
193
194
  /**
194
195
  * Event sent when object is created via POST request
@@ -296,8 +297,40 @@ export declare type ExposeParameters = {
296
297
  * Do not expose the DELETE
297
298
  */
298
299
  delete?: boolean;
300
+ /**
301
+ * Do not expose the query endpoint
302
+ */
303
+ query?: boolean;
299
304
  };
305
+ /**
306
+ * For confidentiality sometimes you might prefer to expose query through PUT
307
+ * To avoid GET logging
308
+ *
309
+ * @default "GET"
310
+ */
311
+ queryMethod?: "PUT" | "GET";
300
312
  };
313
+ /**
314
+ * Represent a query result on the Store
315
+ */
316
+ export interface StoreFindResult<T> {
317
+ /**
318
+ * Current result objects
319
+ */
320
+ results: T[];
321
+ /**
322
+ * Continuation Token if more results are available
323
+ */
324
+ continuationToken?: string;
325
+ /**
326
+ * Remaining filtering to do as current store cannot filter
327
+ *
328
+ * If `true`, no more filtering is required apart from permissions
329
+ * If `filter === undefined`, a full postquery filtering will happen
330
+ * Otherwise filter.eval while be used on every results
331
+ */
332
+ filter?: WebdaQL.Expression | true;
333
+ }
301
334
  /**
302
335
  * Store parameter
303
336
  */
@@ -315,16 +348,42 @@ export declare class StoreParameters extends ServiceParameters {
315
348
  /**
316
349
  * Expose the service to an urls
317
350
  */
318
- expose?: ExposeParameters | boolean | string;
351
+ expose?: ExposeParameters;
319
352
  /**
320
353
  * Allow to load object that does not have the type data
321
354
  *
322
- * @deprecated 2.0
323
355
  * @default true
324
356
  */
325
357
  strict?: boolean;
358
+ /**
359
+ * Slow query threshold
360
+ *
361
+ * @default 30000
362
+ */
363
+ slowQueryThreshold: number;
326
364
  constructor(params: any, service: Service<any>);
327
365
  }
366
+ export declare type StoreEvents = {
367
+ "Store.PartialUpdated": EventStorePartialUpdated;
368
+ "Store.Save": EventStoreSave;
369
+ "Store.Saved": EventStoreSaved;
370
+ "Store.PatchUpdate": EventStorePatchUpdate;
371
+ "Store.PatchUpdated": EventStorePatchUpdated;
372
+ "Store.Update": EventStoreUpdate;
373
+ "Store.Updated": EventStoreUpdated;
374
+ "Store.Delete": EventStoreDelete;
375
+ "Store.Deleted": EventStoreDeleted;
376
+ "Store.Get": EventStoreGet;
377
+ "Store.Query": EventStoreQuery;
378
+ "Store.Queried": EventStoreQueried;
379
+ "Store.WebCreate": EventStoreWebCreate;
380
+ "Store.Action": EventStoreAction;
381
+ "Store.Actioned": EventStoreActioned;
382
+ "Store.WebUpdate": EventStoreWebUpdate;
383
+ "Store.WebGetNotFound": EventStoreWebGetNotFound;
384
+ "Store.WebGet": EventStoreWebGet;
385
+ "Store.WebDelete": EventStoreWebDelete;
386
+ };
328
387
  /**
329
388
  * A mapping service allow to link two object together
330
389
  *
@@ -367,7 +426,11 @@ export interface MappingService<T = any> {
367
426
  * }
368
427
  * @category CoreServices
369
428
  */
370
- declare abstract class Store<T extends CoreModel = CoreModel, K extends StoreParameters = StoreParameters> extends Service<K> implements ConfigurationProvider, MappingService<T> {
429
+ declare abstract class Store<T extends CoreModel = CoreModel, K extends StoreParameters = StoreParameters, E extends StoreEvents = StoreEvents> extends Service<K, E> implements ConfigurationProvider, MappingService<T> {
430
+ /**
431
+ * Cache store
432
+ */
433
+ _cacheStore: Store<T>;
371
434
  /**
372
435
  * Contain the reverse map
373
436
  */
@@ -391,6 +454,23 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
391
454
  * Contain the model uuid field
392
455
  */
393
456
  protected _uuidField: string;
457
+ /**
458
+ * Add metrics counter
459
+ */
460
+ metrics: {
461
+ save: number;
462
+ update: number;
463
+ partialUpdate: number;
464
+ get: number;
465
+ increment: number;
466
+ delete: number;
467
+ collectionUpsert: number;
468
+ collectionDelete: number;
469
+ attributeDelete: number;
470
+ query: number;
471
+ queryDuration: number;
472
+ slowQueries: number;
473
+ };
394
474
  /**
395
475
  * Load the parameters for a service
396
476
  */
@@ -401,21 +481,43 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
401
481
  * @throws Error if model is not found
402
482
  */
403
483
  computeParameters(): void;
484
+ logSlowQuery(_query: string, _reason: string, _time: number): void;
404
485
  /**
405
486
  * Return Store current model
406
487
  * @returns
407
488
  */
408
489
  getModel(): CoreModelDefinition;
409
490
  getLastUpdateField(): string;
410
- getObject(uid: string): Promise<CoreModel>;
491
+ /**
492
+ * Get From Cache or main
493
+ * @param uid
494
+ * @param raiseIfNotFound
495
+ * @returns
496
+ */
497
+ _getFromCache(uid: string, raiseIfNotFound?: boolean): Promise<T>;
498
+ /**
499
+ * Get object from store
500
+ * @param uid
501
+ * @returns
502
+ */
503
+ getObject(uid: string): Promise<T>;
411
504
  /**
412
505
  * @inheritdoc
413
506
  */
414
507
  initRoutes(): void;
508
+ /**
509
+ * OVerwrite the model
510
+ * Used mainly in test
511
+ */
512
+ setModel(model: CoreModelDefinition): void;
415
513
  /**
416
514
  * Get the url where the store is exposed
417
515
  */
418
516
  getUrl(): string;
517
+ /**
518
+ * We should ignore exception from the store
519
+ */
520
+ cacheStorePatchException(): void;
419
521
  /**
420
522
  * Init a model from the current stored data
421
523
  *
@@ -433,9 +535,22 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
433
535
  * @param store
434
536
  */
435
537
  addReverseMap(prop: string, store: MappingService): void;
436
- incrementAttribute(uid: string, prop: string, value: number): any;
538
+ incrementAttribute(uid: string, prop: string, value: number): Promise<void | any[]>;
437
539
  upsertItemToCollection(uid: string, prop: string, item: any, index?: number, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<void>;
438
540
  deleteItemFromCollection(uid: string, prop: string, index: number, itemWriteCondition: any, itemWriteConditionField?: string): Promise<void>;
541
+ /**
542
+ * Query store with WebdaQL
543
+ * @param query
544
+ * @param context to apply permission
545
+ */
546
+ query(query: string, context?: Context): Promise<{
547
+ results: T[];
548
+ continuationToken?: string;
549
+ }>;
550
+ /**
551
+ * Expose query to http
552
+ */
553
+ protected httpQuery(ctx: Context): Promise<void>;
439
554
  /**
440
555
  * Save an object
441
556
  *
@@ -445,7 +560,7 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
445
560
  *
446
561
  * Might want to rename to create
447
562
  */
448
- save(object: any, ctx?: Context): Promise<any>;
563
+ save(object: any, ctx?: Context): Promise<T>;
449
564
  /**
450
565
  * Patch an object
451
566
  *
@@ -453,7 +568,7 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
453
568
  * @param reverseMap
454
569
  * @returns
455
570
  */
456
- patch(object: any, reverseMap?: boolean): Promise<any>;
571
+ patch(object: any, reverseMap?: boolean): Promise<T | undefined>;
457
572
  /**
458
573
  * Check if an UpdateCondition is met
459
574
  * @param model
@@ -484,11 +599,13 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
484
599
  /**
485
600
  * Update an object
486
601
  *
602
+ * If no attribute can be updated then return undefined
603
+ *
487
604
  * @param {Object} Object to save
488
605
  * @param {Boolean} reverseMap internal use only, for disable map resolution
489
606
  * @return {Promise} with saved object
490
607
  */
491
- update(object: any, reverseMap?: boolean, partial?: boolean): Promise<any>;
608
+ update(object: any, reverseMap?: boolean, partial?: boolean): Promise<T | undefined>;
492
609
  /**
493
610
  * Remove an attribute from an object
494
611
  *
@@ -504,7 +621,7 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
504
621
  * @param uuid
505
622
  * @returns
506
623
  */
507
- cascadeDelete(obj: CoreModel, uuid: string): Promise<any>;
624
+ cascadeDelete(obj: CoreModel, _uuid: string): Promise<any>;
508
625
  /**
509
626
  * Delete an object from the store without condition nor async
510
627
  * @param uid to delete
@@ -525,7 +642,7 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
525
642
  * @param id
526
643
  * @param callback
527
644
  */
528
- canTriggerConfiguration(id: string, callback: () => void): boolean;
645
+ canTriggerConfiguration(_id: string, _callback: () => void): boolean;
529
646
  /**
530
647
  * Provide a way to store configuration in store
531
648
  * @param {string} id
@@ -553,16 +670,9 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
553
670
  */
554
671
  setAttribute(uid: string, property: string, value: any): Promise<void>;
555
672
  /**
556
- * Search inside the store
557
- *
558
- * Still need to define a good abstraction for it
559
- *
560
- * @param request
561
- * @param offset
562
- * @param limit
563
- * @returns
673
+ * @override
564
674
  */
565
- find(request?: any, offset?: number, limit?: number): Promise<any>;
675
+ protected simulateFind(query: WebdaQL.Query, uuids: string[]): Promise<StoreFindResult<T>>;
566
676
  /**
567
677
  * Handle POST
568
678
  * @param ctx
@@ -601,7 +711,10 @@ declare abstract class Store<T extends CoreModel = CoreModel, K extends StorePar
601
711
  * Return the model uuid field
602
712
  */
603
713
  getUuidField(): string;
604
- abstract _find(request: any, offset: any, limit: any): Promise<CoreModel[]>;
714
+ /**
715
+ * Search within the store
716
+ */
717
+ abstract find(query: WebdaQL.Query): Promise<StoreFindResult<T>>;
605
718
  /**
606
719
  * Check if an object exists
607
720
  * @abstract