@webda/core 2.4.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/lib/application.d.ts +171 -34
  2. package/lib/application.js +243 -47
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +44 -8
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +113 -54
  7. package/lib/core.js +222 -135
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +87 -43
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/errors.d.ts +65 -0
  12. package/lib/errors.js +113 -0
  13. package/lib/errors.js.map +1 -0
  14. package/lib/errors.spec.d.ts +1 -0
  15. package/lib/errors.spec.js +33 -0
  16. package/lib/errors.spec.js.map +1 -0
  17. package/lib/index.d.ts +3 -0
  18. package/lib/index.js +3 -0
  19. package/lib/index.js.map +1 -1
  20. package/lib/models/aclmodel.d.ts +4 -4
  21. package/lib/models/aclmodel.js +10 -6
  22. package/lib/models/aclmodel.js.map +1 -1
  23. package/lib/models/aclmodel.spec.js +33 -24
  24. package/lib/models/aclmodel.spec.js.map +1 -1
  25. package/lib/models/coremodel.d.ts +284 -92
  26. package/lib/models/coremodel.js +403 -103
  27. package/lib/models/coremodel.js.map +1 -1
  28. package/lib/models/coremodel.spec.js +162 -24
  29. package/lib/models/coremodel.spec.js.map +1 -1
  30. package/lib/models/ident.d.ts +20 -6
  31. package/lib/models/ident.js.map +1 -1
  32. package/lib/models/ownermodel.d.ts +13 -23
  33. package/lib/models/ownermodel.js +24 -51
  34. package/lib/models/ownermodel.js.map +1 -1
  35. package/lib/models/ownermodel.spec.js +23 -11
  36. package/lib/models/ownermodel.spec.js.map +1 -1
  37. package/lib/models/relations.d.ts +167 -0
  38. package/lib/models/relations.js +113 -0
  39. package/lib/models/relations.js.map +1 -0
  40. package/lib/models/rolemodel.d.ts +3 -3
  41. package/lib/models/rolemodel.js +6 -6
  42. package/lib/models/rolemodel.js.map +1 -1
  43. package/lib/models/rolemodel.spec.js +12 -12
  44. package/lib/models/rolemodel.spec.js.map +1 -1
  45. package/lib/models/user.d.ts +40 -24
  46. package/lib/models/user.js +74 -48
  47. package/lib/models/user.js.map +1 -1
  48. package/lib/models/user.spec.js +24 -4
  49. package/lib/models/user.spec.js.map +1 -1
  50. package/lib/queues/memoryqueue.spec.js +9 -5
  51. package/lib/queues/memoryqueue.spec.js.map +1 -1
  52. package/lib/queues/queueservice.js.map +1 -1
  53. package/lib/router.d.ts +17 -8
  54. package/lib/router.js +81 -9
  55. package/lib/router.js.map +1 -1
  56. package/lib/router.spec.js +89 -5
  57. package/lib/router.spec.js.map +1 -1
  58. package/lib/services/asyncevents.spec.js +4 -4
  59. package/lib/services/authentication.d.ts +21 -22
  60. package/lib/services/authentication.js +90 -109
  61. package/lib/services/authentication.js.map +1 -1
  62. package/lib/services/authentication.spec.js +51 -65
  63. package/lib/services/authentication.spec.js.map +1 -1
  64. package/lib/services/binary.d.ts +132 -31
  65. package/lib/services/binary.js +257 -72
  66. package/lib/services/binary.js.map +1 -1
  67. package/lib/services/binary.spec.d.ts +16 -6
  68. package/lib/services/binary.spec.js +44 -117
  69. package/lib/services/binary.spec.js.map +1 -1
  70. package/lib/services/cloudbinary.d.ts +9 -10
  71. package/lib/services/cloudbinary.js +14 -15
  72. package/lib/services/cloudbinary.js.map +1 -1
  73. package/lib/services/cloudbinary.spec.d.ts +2 -2
  74. package/lib/services/cloudbinary.spec.js +13 -12
  75. package/lib/services/cloudbinary.spec.js.map +1 -1
  76. package/lib/services/configuration.js +9 -9
  77. package/lib/services/configuration.js.map +1 -1
  78. package/lib/services/configuration.spec.js +5 -7
  79. package/lib/services/configuration.spec.js.map +1 -1
  80. package/lib/services/cron.spec.js +3 -4
  81. package/lib/services/cron.spec.js.map +1 -1
  82. package/lib/services/cryptoservice.d.ts +2 -2
  83. package/lib/services/cryptoservice.js +5 -2
  84. package/lib/services/cryptoservice.js.map +1 -1
  85. package/lib/services/domainservice.d.ts +113 -0
  86. package/lib/services/domainservice.js +357 -0
  87. package/lib/services/domainservice.js.map +1 -0
  88. package/lib/services/domainservice.spec.d.ts +1 -0
  89. package/lib/services/domainservice.spec.js +334 -0
  90. package/lib/services/domainservice.spec.js.map +1 -0
  91. package/lib/services/echo.d.ts +2 -2
  92. package/lib/services/echo.js.map +1 -1
  93. package/lib/services/echo.spec.js +9 -2
  94. package/lib/services/echo.spec.js.map +1 -1
  95. package/lib/services/filebinary.d.ts +13 -14
  96. package/lib/services/filebinary.js +79 -73
  97. package/lib/services/filebinary.js.map +1 -1
  98. package/lib/services/filebinary.spec.d.ts +5 -0
  99. package/lib/services/filebinary.spec.js +222 -11
  100. package/lib/services/filebinary.spec.js.map +1 -1
  101. package/lib/services/fileconfiguration.js +4 -4
  102. package/lib/services/fileconfiguration.js.map +1 -1
  103. package/lib/services/fileconfiguration.spec.js +23 -24
  104. package/lib/services/fileconfiguration.spec.js.map +1 -1
  105. package/lib/services/invitationservice.d.ts +11 -9
  106. package/lib/services/invitationservice.js +17 -23
  107. package/lib/services/invitationservice.js.map +1 -1
  108. package/lib/services/invitationservice.spec.js +43 -40
  109. package/lib/services/invitationservice.spec.js.map +1 -1
  110. package/lib/services/kubernetesconfiguration.js +12 -22
  111. package/lib/services/kubernetesconfiguration.js.map +1 -1
  112. package/lib/services/kubernetesconfiguration.spec.js +1 -6
  113. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  114. package/lib/services/mailer.js +1 -1
  115. package/lib/services/mailer.js.map +1 -1
  116. package/lib/services/mailer.spec.js +4 -1
  117. package/lib/services/mailer.spec.js.map +1 -1
  118. package/lib/services/oauth.d.ts +17 -9
  119. package/lib/services/oauth.js +30 -4
  120. package/lib/services/oauth.js.map +1 -1
  121. package/lib/services/oauth.spec.js +32 -15
  122. package/lib/services/oauth.spec.js.map +1 -1
  123. package/lib/services/prometheus.spec.js.map +1 -1
  124. package/lib/services/proxy.d.ts +9 -8
  125. package/lib/services/proxy.js +65 -36
  126. package/lib/services/proxy.js.map +1 -1
  127. package/lib/services/proxy.spec.js +28 -2
  128. package/lib/services/proxy.spec.js.map +1 -1
  129. package/lib/services/resource.d.ts +3 -3
  130. package/lib/services/resource.js +4 -3
  131. package/lib/services/resource.js.map +1 -1
  132. package/lib/services/resource.spec.js +3 -3
  133. package/lib/services/resource.spec.js.map +1 -1
  134. package/lib/services/service.d.ts +10 -13
  135. package/lib/services/service.js +29 -13
  136. package/lib/services/service.js.map +1 -1
  137. package/lib/services/service.spec.js +49 -11
  138. package/lib/services/service.spec.js.map +1 -1
  139. package/lib/services/version.d.ts +2 -2
  140. package/lib/services/version.js.map +1 -1
  141. package/lib/stores/aggregator.js +1 -0
  142. package/lib/stores/aggregator.js.map +1 -1
  143. package/lib/stores/aliasstore.d.ts +2 -2
  144. package/lib/stores/aliasstore.js +15 -4
  145. package/lib/stores/aliasstore.js.map +1 -1
  146. package/lib/stores/aliasstore.spec.js +4 -2
  147. package/lib/stores/aliasstore.spec.js.map +1 -1
  148. package/lib/stores/file.d.ts +5 -2
  149. package/lib/stores/file.js +11 -8
  150. package/lib/stores/file.js.map +1 -1
  151. package/lib/stores/file.spec.js +21 -34
  152. package/lib/stores/file.spec.js.map +1 -1
  153. package/lib/stores/mapper.d.ts +4 -2
  154. package/lib/stores/mapper.js +18 -11
  155. package/lib/stores/mapper.js.map +1 -1
  156. package/lib/stores/mapper.spec.js +6 -3
  157. package/lib/stores/mapper.spec.js.map +1 -1
  158. package/lib/stores/memory.d.ts +5 -2
  159. package/lib/stores/memory.js +11 -9
  160. package/lib/stores/memory.js.map +1 -1
  161. package/lib/stores/memory.spec.d.ts +3 -0
  162. package/lib/stores/memory.spec.js +100 -11
  163. package/lib/stores/memory.spec.js.map +1 -1
  164. package/lib/stores/store.d.ts +177 -87
  165. package/lib/stores/store.js +312 -141
  166. package/lib/stores/store.js.map +1 -1
  167. package/lib/stores/store.spec.d.ts +2 -2
  168. package/lib/stores/store.spec.js +54 -38
  169. package/lib/stores/store.spec.js.map +1 -1
  170. package/lib/stores/webdaql/WebdaQLLexer.d.ts +14 -13
  171. package/lib/stores/webdaql/WebdaQLLexer.js +121 -112
  172. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
  173. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +14 -13
  174. package/lib/stores/webdaql/WebdaQLParserLexer.js +121 -112
  175. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
  176. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +15 -3
  177. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +23 -13
  178. package/lib/stores/webdaql/WebdaQLParserParser.js +149 -94
  179. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
  180. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +9 -2
  181. package/lib/stores/webdaql/query.d.ts +6 -2
  182. package/lib/stores/webdaql/query.js +14 -1
  183. package/lib/stores/webdaql/query.js.map +1 -1
  184. package/lib/stores/webdaql/query.spec.js +10 -1
  185. package/lib/stores/webdaql/query.spec.js.map +1 -1
  186. package/lib/test.d.ts +48 -19
  187. package/lib/test.js +171 -63
  188. package/lib/test.js.map +1 -1
  189. package/lib/unpackedapplication.d.ts +5 -0
  190. package/lib/unpackedapplication.js +58 -10
  191. package/lib/unpackedapplication.js.map +1 -1
  192. package/lib/utils/context.d.ts +76 -29
  193. package/lib/utils/context.js +91 -55
  194. package/lib/utils/context.js.map +1 -1
  195. package/lib/utils/context.spec.d.ts +9 -1
  196. package/lib/utils/context.spec.js +73 -8
  197. package/lib/utils/context.spec.js.map +1 -1
  198. package/lib/utils/cookie.d.ts +4 -5
  199. package/lib/utils/cookie.js +1 -2
  200. package/lib/utils/cookie.js.map +1 -1
  201. package/lib/utils/cookie.spec.js +5 -3
  202. package/lib/utils/cookie.spec.js.map +1 -1
  203. package/lib/utils/httpcontext.spec.js +9 -3
  204. package/lib/utils/httpcontext.spec.js.map +1 -1
  205. package/lib/utils/serializers.d.ts +46 -17
  206. package/lib/utils/serializers.js +116 -2
  207. package/lib/utils/serializers.js.map +1 -1
  208. package/lib/utils/serializers.spec.js +84 -20
  209. package/lib/utils/serializers.spec.js.map +1 -1
  210. package/lib/utils/session.d.ts +14 -8
  211. package/lib/utils/session.js +14 -3
  212. package/lib/utils/session.js.map +1 -1
  213. package/lib/utils/session.spec.js +6 -1
  214. package/lib/utils/session.spec.js.map +1 -1
  215. package/package.json +16 -10
  216. package/test/cachedapp/webda.config.json +6 -1
  217. package/test/config-cached.json +5 -0
  218. package/test/config-file-missing-file.json +5 -7
  219. package/test/config-file-no-reload.json +5 -7
  220. package/test/config-file-reload.json +5 -7
  221. package/test/config-kube-reload.json +5 -11
  222. package/test/config-reload.json +2 -4
  223. package/test/config.json +12 -2
  224. package/test/moddas/voidstore.js +1 -1
  225. package/test/models/ident.js +6 -4
  226. package/test/models/task.js +4 -4
  227. package/webda.module.json +1587 -1266
@@ -1,8 +1,7 @@
1
1
  import { WorkerOutput } from "@webda/workout";
2
2
  import * as fs from "fs";
3
3
  import * as path from "path";
4
- import { join } from "path";
5
- import { WebdaError } from "./index.js";
4
+ import { CoreModel, WebdaError } from "./index.js";
6
5
  import { getCommonJS } from "./utils/esm.js";
7
6
  import { FileUtils } from "./utils/serializers.js";
8
7
  const { __dirname } = getCommonJS(import.meta.url);
@@ -10,7 +9,6 @@ export var SectionEnum;
10
9
  (function (SectionEnum) {
11
10
  SectionEnum["Moddas"] = "moddas";
12
11
  SectionEnum["Deployers"] = "deployers";
13
- SectionEnum["Models"] = "models";
14
12
  SectionEnum["Beans"] = "beans";
15
13
  })(SectionEnum || (SectionEnum = {}));
16
14
  /**
@@ -38,7 +36,14 @@ export class Application {
38
36
  */
39
37
  this.appModule = {
40
38
  moddas: {},
41
- models: {},
39
+ models: {
40
+ list: {},
41
+ graph: {},
42
+ tree: {},
43
+ plurals: {},
44
+ shortIds: {},
45
+ reflections: {}
46
+ },
42
47
  deployers: {}
43
48
  };
44
49
  /**
@@ -57,14 +62,26 @@ export class Application {
57
62
  * Models type registry
58
63
  */
59
64
  this.models = {};
65
+ /**
66
+ * Models graph
67
+ */
68
+ this.graph = {};
69
+ /**
70
+ * Models specific plurals
71
+ */
72
+ this.plurals = {};
60
73
  /**
61
74
  * Detect if running as workspace
62
75
  */
63
76
  this.workspacesPath = "";
77
+ /**
78
+ * Direct parent of a model
79
+ */
80
+ this.flatHierarchy = {};
64
81
  this.logger = logger || new WorkerOutput();
65
82
  this.initTime = Date.now();
66
83
  if (!fs.existsSync(file)) {
67
- throw new WebdaError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.jsonc or webda.config.json file: unexisting ${file}`);
84
+ throw new WebdaError.CodeError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.jsonc or webda.config.json file: unexisting ${file}`);
68
85
  }
69
86
  if (fs.lstatSync(file).isDirectory()) {
70
87
  file = path.join(file, "webda.config.jsonc");
@@ -73,7 +90,7 @@ export class Application {
73
90
  }
74
91
  }
75
92
  this.configurationFile = file;
76
- this.appPath = path.dirname(file);
93
+ this.appPath = path.resolve(path.dirname(file));
77
94
  }
78
95
  /**
79
96
  * Import all required modules
@@ -81,6 +98,14 @@ export class Application {
81
98
  async load() {
82
99
  this.loadConfiguration(this.configurationFile);
83
100
  await this.loadModule(this.baseConfiguration.cachedModules);
101
+ // Flat the model tree
102
+ const addParent = (parent, tree) => {
103
+ for (let key in tree) {
104
+ this.flatHierarchy[key] = parent;
105
+ addParent(key, tree[key]);
106
+ }
107
+ };
108
+ addParent("Webda/CoreModel", this.baseConfiguration.cachedModules.models.tree);
84
109
  return this;
85
110
  }
86
111
  /**
@@ -93,7 +118,7 @@ export class Application {
93
118
  var _a, _b;
94
119
  // Check if file is a file or folder
95
120
  if (!fs.existsSync(file)) {
96
- throw new WebdaError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.jsonc or webda.config.json file: ${file}`);
121
+ throw new WebdaError.CodeError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.jsonc or webda.config.json file: ${file}`);
97
122
  }
98
123
  try {
99
124
  this.baseConfiguration = FileUtils.load(file);
@@ -104,7 +129,7 @@ export class Application {
104
129
  }
105
130
  }
106
131
  catch (err) {
107
- throw new WebdaError("INVALID_WEBDA_CONFIG", `Cannot parse JSON of: ${file}`);
132
+ throw new WebdaError.CodeError("INVALID_WEBDA_CONFIG", `Cannot parse JSON of: ${file}`);
108
133
  }
109
134
  }
110
135
  /**
@@ -119,6 +144,12 @@ export class Application {
119
144
  }
120
145
  }
121
146
  }
147
+ // Manage CoreModel too
148
+ for (let i in this.models) {
149
+ if (this.models[i].prototype === proto) {
150
+ return i;
151
+ }
152
+ }
122
153
  }
123
154
  /**
124
155
  * Get a schema from a type
@@ -130,6 +161,27 @@ export class Application {
130
161
  getSchema(type) {
131
162
  return this.baseConfiguration.cachedModules.schemas[type];
132
163
  }
164
+ /**
165
+ * Check if a schema exists
166
+ * @param type
167
+ * @returns schema name if it exists
168
+ */
169
+ hasSchema(type) {
170
+ return this.baseConfiguration.cachedModules.schemas[type] !== undefined;
171
+ }
172
+ /**
173
+ * Get model graph
174
+ */
175
+ getRelations(model) {
176
+ return this.getGraph()[typeof model === "string" ? this.completeNamespace(model) : this.getModelName(model)] || {};
177
+ }
178
+ /**
179
+ * Get the all graph
180
+ * @returns
181
+ */
182
+ getGraph() {
183
+ return this.graph;
184
+ }
133
185
  /**
134
186
  * Check if application has cached modules
135
187
  *
@@ -195,23 +247,71 @@ export class Application {
195
247
  */
196
248
  addService(name, service) {
197
249
  this.log("TRACE", "Registering service", name);
198
- this.moddas[name.toLowerCase()] = service;
250
+ this.moddas[name] = service;
199
251
  return this;
200
252
  }
253
+ /**
254
+ * Register a new schema in the application
255
+ * @param name
256
+ * @param schema
257
+ */
258
+ registerSchema(name, schema) {
259
+ if (this.hasSchema(name)) {
260
+ throw new Error(`Schema ${name} already registered`);
261
+ }
262
+ this.baseConfiguration.cachedModules.schemas[name] = schema;
263
+ }
264
+ /**
265
+ * Get plural of an Id
266
+ * @param name
267
+ * @returns
268
+ */
269
+ getModelPlural(name) {
270
+ return this.plurals[name] || name.split("/").pop() + "s";
271
+ }
272
+ /**
273
+ *
274
+ * @param section
275
+ * @param name
276
+ * @param caseSensitive
277
+ */
278
+ hasWebdaObject(section, name, caseSensitive = false) {
279
+ let objectName = this.completeNamespace(name);
280
+ this.log("TRACE", `Search for ${section} ${objectName}`);
281
+ if (!this[section][objectName] && name.indexOf("/") === -1) {
282
+ objectName = `Webda/${name}`;
283
+ }
284
+ if (!this[section][objectName]) {
285
+ const caseInsensitive = Object.keys(this[section]).find(k => k.toLowerCase() === name.toLowerCase());
286
+ if (this[section][caseInsensitive] && !caseSensitive) {
287
+ // We found a case insensitive match
288
+ return true;
289
+ }
290
+ return false;
291
+ }
292
+ return true;
293
+ }
201
294
  /**
202
295
  *
203
296
  * @param section
204
297
  * @param name
205
298
  * @returns
206
299
  */
207
- getWebdaObject(section, name) {
300
+ getWebdaObject(section, name, caseSensitive = false) {
208
301
  let objectName = this.completeNamespace(name);
209
302
  this.log("TRACE", `Search for ${section} ${objectName}`);
210
303
  if (!this[section][objectName] && name.indexOf("/") === -1) {
211
- objectName = `webda/${name}`.toLowerCase();
304
+ objectName = `Webda/${name}`;
212
305
  }
213
306
  if (!this[section][objectName]) {
214
- throw Error(`Undefined ${section.substring(0, section.length - 1)} ${name} or ${objectName} (${Object.keys(this[section]).join(", ")})`);
307
+ const caseInsensitive = Object.keys(this[section]).find(k => k.toLowerCase() === name.toLowerCase());
308
+ if (this[section][caseInsensitive] && !caseSensitive) {
309
+ // We found a case insensitive match
310
+ this.log("DEBUG", `Found ${caseInsensitive} instead of ${name}, will be removed in 4.0`);
311
+ return this[section][caseInsensitive];
312
+ }
313
+ objectName = name !== objectName ? ` or ${objectName}` : "";
314
+ throw Error(`Undefined ${section.substring(0, section.length - 1)} ${name}${objectName} (${Object.keys(this[section]).join(", ")})`);
215
315
  }
216
316
  return this[section][objectName];
217
317
  }
@@ -241,7 +341,7 @@ export class Application {
241
341
  * @param name model to retrieve
242
342
  */
243
343
  getModel(name) {
244
- return this.getWebdaObject("models", name);
344
+ return this.getWebdaObject("models", this.completeNamespace(name));
245
345
  }
246
346
  /**
247
347
  * Get all models definitions
@@ -249,23 +349,96 @@ export class Application {
249
349
  getModels() {
250
350
  return this.models;
251
351
  }
352
+ /**
353
+ * Return models that do not have parents
354
+ * @returns
355
+ */
356
+ getRootModels() {
357
+ return Object.keys(this.graph).filter(key => !this.graph[key].parent && this.models[key]?.Expose);
358
+ }
359
+ /**
360
+ * Return models that do not have parents and are exposed
361
+ * Or specifically set as root via the Expose.root parameter
362
+ * @returns
363
+ */
364
+ getRootExposedModels() {
365
+ const results = new Set(this.getRootModels().filter(k => this.getModel(k).Expose));
366
+ for (let model in this.models) {
367
+ if (this.models[model].Expose?.root) {
368
+ results.add(model);
369
+ }
370
+ }
371
+ return [...results];
372
+ }
252
373
  /**
253
374
  * Return the model name for a object
254
375
  * @param object
255
376
  */
256
377
  getModelFromInstance(object) {
257
- return Object.keys(this.models)
258
- .filter(k => this.models[k] === object.constructor)
259
- .pop();
378
+ return Object.keys(this.models).find(k => this.models[k] === object.constructor);
260
379
  }
261
380
  /**
262
381
  * Return the model name for a object
263
382
  * @param object
264
383
  */
265
384
  getModelFromConstructor(model) {
266
- return Object.keys(this.models)
267
- .filter(k => this.models[k] === model)
268
- .pop();
385
+ return Object.keys(this.models).find(k => this.models[k] === model);
386
+ }
387
+ /**
388
+ * Get the model name from a model or a constructor
389
+ *
390
+ * @param model
391
+ * @returns longId for a model
392
+ */
393
+ getModelName(model) {
394
+ // If __type is defined, use it
395
+ if (model.__type) {
396
+ return this.completeNamespace(model.__type);
397
+ }
398
+ if (model instanceof CoreModel) {
399
+ return this.getModelFromInstance(model);
400
+ }
401
+ return this.getModelFromConstructor(model);
402
+ }
403
+ /**
404
+ * Get the model hierarchy
405
+ * @param model
406
+ */
407
+ getModelHierarchy(model) {
408
+ if (typeof model !== "string") {
409
+ model = this.getModelName(model);
410
+ }
411
+ else {
412
+ model = this.completeNamespace(model);
413
+ }
414
+ if (model === "Webda/CoreModel") {
415
+ return { ancestors: [], children: this.baseConfiguration?.cachedModules?.models?.tree };
416
+ }
417
+ let ancestors = [];
418
+ let modelInfo = model;
419
+ while ((this.flatHierarchy[modelInfo] || "Webda/CoreModel") !== "Webda/CoreModel") {
420
+ modelInfo = this.flatHierarchy[modelInfo];
421
+ ancestors.unshift(modelInfo);
422
+ }
423
+ let tree = this.baseConfiguration?.cachedModules?.models?.tree || {};
424
+ ancestors.forEach(ancestor => {
425
+ tree = tree[ancestor];
426
+ });
427
+ ancestors.unshift(this.getShortId("Webda/CoreModel"));
428
+ ancestors.reverse();
429
+ return { ancestors: ancestors.map(i => this.getShortId(i)), children: tree[model] };
430
+ }
431
+ /**
432
+ * Get all model types with the hierarchy
433
+ * @param model
434
+ * @returns
435
+ */
436
+ getModelTypes(model) {
437
+ const hierarchy = this.getModelHierarchy(model);
438
+ const coreModel = this.getShortId("Webda/CoreModel");
439
+ return [model.__type, ...hierarchy.ancestors]
440
+ .map(i => (i.includes("/") ? this.getShortId(i) : i))
441
+ .filter(i => i !== coreModel);
269
442
  }
270
443
  /**
271
444
  * Return all deployers
@@ -279,9 +452,18 @@ export class Application {
279
452
  * @param name
280
453
  * @param model
281
454
  */
282
- addModel(name, model) {
455
+ addModel(name, model, dynamic = true) {
283
456
  this.log("TRACE", "Registering model", name);
284
- this.models[name.toLowerCase()] = model;
457
+ this.models[name] = model;
458
+ if (dynamic && model) {
459
+ const superClass = Object.getPrototypeOf(model);
460
+ Object.values(this.getModels())
461
+ .filter(m => m === superClass)
462
+ .forEach(m => {
463
+ this.flatHierarchy[name] = this.getModelName(m);
464
+ this.getModelHierarchy(this.flatHierarchy[name]).children[name] = {};
465
+ });
466
+ }
285
467
  return this;
286
468
  }
287
469
  /**
@@ -292,7 +474,7 @@ export class Application {
292
474
  */
293
475
  addDeployer(name, model) {
294
476
  this.log("TRACE", "Registering deployer", name);
295
- this.deployers[name.toLowerCase()] = model;
477
+ this.deployers[name] = model;
296
478
  return this;
297
479
  }
298
480
  /**
@@ -336,14 +518,14 @@ export class Application {
336
518
  let next = scan.indexOf("}", index);
337
519
  let variable = scan.substring(index + 2, next);
338
520
  scan = scan.substring(next);
339
- if (variable.match(/[|&;<>\\\{]/)) {
521
+ if (variable.match(/[|&;<>\\{]/)) {
340
522
  throw new Error(`Variable cannot use every javascript features found ${variable}`);
341
523
  }
342
524
  if (i++ > 10) {
343
525
  throw new Error("Too many variables");
344
526
  }
345
527
  }
346
- return new Function("return `" + (" " + templateString).replace(/([^\\])\$\{([^\}\{]+)}/g, "$1${this.$2}").substring(1) + "`;").call({
528
+ return new Function("return `" + (" " + templateString).replace(/([^\\])\$\{([^}{]+)}/g, "$1${this.$2}").substring(1) + "`;").call({
347
529
  ...this.baseConfiguration.cachedModules.project,
348
530
  now: this.initTime,
349
531
  ...replacements
@@ -440,7 +622,7 @@ export class Application {
440
622
  */
441
623
  async importFile(info, withExport = true) {
442
624
  if (info.startsWith(".")) {
443
- info = join(this.appPath, ...info.split("/"));
625
+ info = this.getAppPath(info);
444
626
  }
445
627
  try {
446
628
  this.log("TRACE", "Load file", info);
@@ -480,15 +662,29 @@ export class Application {
480
662
  async loadModule(module, parent = this.appPath) {
481
663
  const info = { beans: {}, ...module };
482
664
  const sectionLoader = async (section) => {
483
- var _a, _b;
665
+ var _a;
484
666
  for (let key in info[section]) {
485
- (_a = this[section])[_b = key.toLowerCase()] ?? (_a[_b] = await this.importFile(path.join(parent, info[section][key])));
667
+ (_a = this[section])[key] ?? (_a[key] = await this.importFile(path.join(parent, info[section][key])));
486
668
  }
487
669
  };
670
+ // Merging graph from different modules
671
+ Object.keys(module.models.graph || {}).forEach(k => {
672
+ this.graph[k] = module.models.graph[k];
673
+ });
674
+ // TODO Merging tree from different modules
488
675
  await Promise.all([
489
676
  sectionLoader("moddas"),
490
677
  sectionLoader("deployers"),
491
- sectionLoader("models"),
678
+ // Load models
679
+ (async () => {
680
+ // Copy plurals
681
+ for (let key in info.models.plurals || {}) {
682
+ this.plurals[key] = info.models.plurals[key];
683
+ }
684
+ for (let key in info.models.list) {
685
+ this.addModel(key, await this.importFile(path.join(parent, info.models.list[key])), false);
686
+ }
687
+ })(),
492
688
  ...Object.keys(info.beans).map(f => {
493
689
  this.baseConfiguration.cachedModules.beans[f] = info.beans[f];
494
690
  return this.importFile(path.join(parent, info.beans[f]), false).catch(this.log.bind(this, "WARN"));
@@ -506,29 +702,29 @@ export class Application {
506
702
  */
507
703
  completeNamespace(name = "") {
508
704
  // Do not add a namespace if already present
509
- if (name.indexOf("/") >= 0) {
510
- return name.toLowerCase();
705
+ if (name.includes("/")) {
706
+ return name;
707
+ }
708
+ name = this.getShortId(name);
709
+ if (name.includes("/")) {
710
+ return name;
511
711
  }
512
- return `${this.baseConfiguration.cachedModules.project?.webda?.namespace || "webda"}/${name}`.toLowerCase();
712
+ return `${this.getNamespace()}/${name}`;
513
713
  }
514
714
  /**
515
- * Check if object extends a class
516
- *
517
- * @param obj
518
- * @param className
715
+ * Return current namespace
716
+ * @returns
519
717
  */
520
- extends(obj, className) {
521
- if (!obj) {
522
- return false;
523
- }
524
- while (obj && Object.getPrototypeOf(obj)) {
525
- let proto = Object.getPrototypeOf(obj);
526
- if (proto.name == className.name || proto == className.name) {
527
- return true;
528
- }
529
- obj = proto;
530
- }
531
- return false;
718
+ getNamespace() {
719
+ return this.baseConfiguration?.cachedModules?.project?.webda?.namespace || "Webda";
720
+ }
721
+ /**
722
+ * Get short id for a name
723
+ * @param name if name is shortId return longId else return shortId
724
+ * @returns
725
+ */
726
+ getShortId(name) {
727
+ return this.baseConfiguration?.cachedModules?.models?.shortIds[name] || name;
532
728
  }
533
729
  }
534
730
  //# sourceMappingURL=application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,18 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
38
38
  }
39
39
  });
40
40
  }
41
+ async testHierarchy() {
42
+ let hierarchy = this.sampleApp.getModelHierarchy(new CoreModel());
43
+ assert.strictEqual(hierarchy.ancestors.length, 0);
44
+ assert.notStrictEqual(hierarchy.children["WebdaDemo/Computer"], undefined);
45
+ assert.notStrictEqual(hierarchy.children["Webda/UuidModel"], undefined);
46
+ hierarchy = this.sampleApp.getModelHierarchy("WebdaDemo/User");
47
+ assert.strictEqual(hierarchy.ancestors.length, 2);
48
+ assert.strictEqual(Object.keys(hierarchy.children).length, 0);
49
+ hierarchy = this.sampleApp.getModelHierarchy("WebdaDemo/AbstractProject");
50
+ assert.strictEqual(hierarchy.ancestors.length, 2);
51
+ assert.strictEqual(Object.keys(hierarchy.children).length, 1);
52
+ }
41
53
  configurationImports() {
42
54
  assert.strictEqual(this.sampleApp.getConfiguration().parameters.import1, true);
43
55
  assert.strictEqual(this.sampleApp.getConfiguration().parameters.import2, true);
@@ -88,7 +100,6 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
88
100
  // No package.json should not fail although more than abnormal
89
101
  app = new TestApplication(__dirname + "/../test/config.json");
90
102
  await app.load();
91
- assert.ok(!app.extends(null, String));
92
103
  app.getPackageWebda();
93
104
  assert.throws(() => app.getModda("Unknown"), /Undefined modda Unknown/);
94
105
  app.getDeployers();
@@ -98,9 +109,15 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
98
109
  // @ts-ignore
99
110
  app.getPackageDescription.files = undefined;
100
111
  // Nothing can be really checked here
101
- app.addModel("WebdaTest/NotExisting", null);
112
+ app.addModel("WebdaTest/NotExisting", CoreModel);
102
113
  app.addDeployer("WebdaTest/NotExisting", null);
103
- delete app.getModels()["webdatest/notexisting"];
114
+ assert.ok(app.hasWebdaObject("models", "WebdaTest/NotExisting"));
115
+ assert.ok(!app.hasWebdaObject("models", "notexisting"));
116
+ // To remove with 4.0
117
+ assert.ok(app.hasWebdaObject("models", "webdatest/notexisting"));
118
+ assert.ok(!app.hasWebdaObject("models", "webdatest/notexisting", true));
119
+ assert.strictEqual(app.getWebdaObject("models", "webdatest/notexisting"), CoreModel);
120
+ delete app.getModels()["WebdaTest/NotExisting"];
104
121
  assert.deepStrictEqual(app.getGitInformation(), {
105
122
  branch: "",
106
123
  commit: "",
@@ -121,8 +138,13 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
121
138
  // @ts-ignore
122
139
  unpackedApp.baseConfiguration.cachedModules.project.webda = undefined;
123
140
  assert.deepStrictEqual(unpackedApp.getPackageWebda(), { namespace: "Webda" });
124
- assert.strictEqual(app.getModelFromInstance(new CoreModel()), "webda/coremodel");
125
- assert.strictEqual(app.getModelFromInstance(new User()), "webda/user");
141
+ assert.strictEqual(app.getModelFromInstance(new CoreModel()), "Webda/CoreModel");
142
+ assert.strictEqual(app.getModelFromInstance(new User()), "Webda/User");
143
+ assert.strictEqual(app.getModelName(CoreModel), "Webda/CoreModel");
144
+ assert.strictEqual(app.getModelName(new CoreModel()), "Webda/CoreModel");
145
+ app.registerSchema("testor", {});
146
+ assert.deepStrictEqual(app.getSchema("testor"), {});
147
+ assert.throws(() => app.registerSchema("testor", {}), /Schema testor already registered/);
126
148
  }
127
149
  async getFullNameFromPrototype() {
128
150
  let app = new TestApplication(__dirname + "/../test/config.json");
@@ -131,12 +153,14 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
131
153
  let name = Object.keys(services).pop();
132
154
  let service = services[name].prototype;
133
155
  assert.strictEqual(app.getFullNameFromPrototype(service), name);
156
+ assert.strictEqual(app.getFullNameFromPrototype(CoreModel.prototype), "Webda/CoreModel");
157
+ assert.strictEqual(app.getFullNameFromPrototype(undefined), undefined);
134
158
  // Cheat for deployer
135
159
  services = app.getModels();
136
160
  name = Object.keys(services).pop();
137
161
  service = services[name].prototype;
138
162
  app.addDeployer("Plop/Test", services[name]);
139
- assert.strictEqual(app.getFullNameFromPrototype(service), "plop/test");
163
+ assert.strictEqual(app.getFullNameFromPrototype(service), "Plop/Test");
140
164
  }
141
165
  async loadModule() {
142
166
  let app = new Application(__dirname + "/../test/config.json");
@@ -146,13 +170,22 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
146
170
  ReTest: "./notFound.js"
147
171
  },
148
172
  models: {
149
- ReTest: "notFound.js"
173
+ list: {
174
+ ReTest: "notFound.js"
175
+ },
176
+ graph: {
177
+ "webdademo/test": {}
178
+ },
179
+ tree: {},
180
+ plurals: {},
181
+ shortIds: {},
182
+ reflections: {}
150
183
  },
151
184
  deployers: {
152
185
  ReTest: "notFound.js"
153
186
  }
154
187
  }, "");
155
- await app.loadModule({});
188
+ await app.loadModule({ models: { list: {}, graph: {}, tree: {}, plurals: {}, shortIds: {}, reflections: {} } }, "");
156
189
  await app.importFile("./../test/moddas/fakeservice.js");
157
190
  let cwd = process.cwd();
158
191
  try {
@@ -168,6 +201,9 @@ let ApplicationTest = class ApplicationTest extends WebdaTest {
168
201
  __decorate([
169
202
  test
170
203
  ], ApplicationTest.prototype, "testObjectParameter", null);
204
+ __decorate([
205
+ test
206
+ ], ApplicationTest.prototype, "testHierarchy", null);
171
207
  __decorate([
172
208
  test
173
209
  ], ApplicationTest.prototype, "configurationImports", null);