@cyberismo/data-handler 0.0.15 → 0.0.16

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 (173) hide show
  1. package/dist/card-metadata-updater.js +7 -1
  2. package/dist/card-metadata-updater.js.map +1 -1
  3. package/dist/command-handler.d.ts +4 -0
  4. package/dist/command-handler.js +19 -3
  5. package/dist/command-handler.js.map +1 -1
  6. package/dist/command-manager.d.ts +24 -1
  7. package/dist/command-manager.js +27 -3
  8. package/dist/command-manager.js.map +1 -1
  9. package/dist/commands/create.d.ts +1 -1
  10. package/dist/commands/create.js +34 -36
  11. package/dist/commands/create.js.map +1 -1
  12. package/dist/commands/export.d.ts +11 -2
  13. package/dist/commands/export.js +54 -41
  14. package/dist/commands/export.js.map +1 -1
  15. package/dist/commands/import.d.ts +9 -1
  16. package/dist/commands/import.js +15 -7
  17. package/dist/commands/import.js.map +1 -1
  18. package/dist/commands/move.js +0 -1
  19. package/dist/commands/move.js.map +1 -1
  20. package/dist/commands/remove.d.ts +8 -1
  21. package/dist/commands/remove.js +8 -4
  22. package/dist/commands/remove.js.map +1 -1
  23. package/dist/commands/rename.d.ts +4 -9
  24. package/dist/commands/rename.js +32 -101
  25. package/dist/commands/rename.js.map +1 -1
  26. package/dist/commands/show.d.ts +16 -10
  27. package/dist/commands/show.js +71 -55
  28. package/dist/commands/show.js.map +1 -1
  29. package/dist/commands/transition.d.ts +9 -2
  30. package/dist/commands/transition.js +25 -17
  31. package/dist/commands/transition.js.map +1 -1
  32. package/dist/commands/update.d.ts +16 -12
  33. package/dist/commands/update.js +19 -17
  34. package/dist/commands/update.js.map +1 -1
  35. package/dist/commands/validate.d.ts +17 -9
  36. package/dist/commands/validate.js +96 -35
  37. package/dist/commands/validate.js.map +1 -1
  38. package/dist/containers/project/calculation-engine.d.ts +7 -4
  39. package/dist/containers/project/calculation-engine.js +61 -66
  40. package/dist/containers/project/calculation-engine.js.map +1 -1
  41. package/dist/containers/project/project-paths.d.ts +5 -4
  42. package/dist/containers/project/project-paths.js +16 -12
  43. package/dist/containers/project/project-paths.js.map +1 -1
  44. package/dist/containers/project/resource-cache.d.ts +169 -0
  45. package/dist/containers/project/resource-cache.js +507 -0
  46. package/dist/containers/project/resource-cache.js.map +1 -0
  47. package/dist/containers/project/resource-handler.d.ts +129 -0
  48. package/dist/containers/project/resource-handler.js +206 -0
  49. package/dist/containers/project/resource-handler.js.map +1 -0
  50. package/dist/containers/project.d.ts +38 -153
  51. package/dist/containers/project.js +129 -405
  52. package/dist/containers/project.js.map +1 -1
  53. package/dist/containers/template.d.ts +8 -2
  54. package/dist/containers/template.js +20 -15
  55. package/dist/containers/template.js.map +1 -1
  56. package/dist/interfaces/folder-content-interfaces.d.ts +5 -3
  57. package/dist/interfaces/folder-content-interfaces.js +3 -3
  58. package/dist/interfaces/folder-content-interfaces.js.map +1 -1
  59. package/dist/interfaces/project-interfaces.d.ts +2 -4
  60. package/dist/interfaces/project-interfaces.js.map +1 -1
  61. package/dist/interfaces/resource-interfaces.d.ts +14 -1
  62. package/dist/interfaces/resource-interfaces.js.map +1 -1
  63. package/dist/macros/graph/index.js +12 -26
  64. package/dist/macros/graph/index.js.map +1 -1
  65. package/dist/macros/index.d.ts +1 -1
  66. package/dist/macros/index.js +2 -2
  67. package/dist/macros/index.js.map +1 -1
  68. package/dist/macros/report/index.js +3 -6
  69. package/dist/macros/report/index.js.map +1 -1
  70. package/dist/module-manager.d.ts +16 -3
  71. package/dist/module-manager.js +51 -19
  72. package/dist/module-manager.js.map +1 -1
  73. package/dist/project-settings.d.ts +16 -3
  74. package/dist/project-settings.js +79 -14
  75. package/dist/project-settings.js.map +1 -1
  76. package/dist/resources/calculation-resource.d.ts +4 -3
  77. package/dist/resources/calculation-resource.js +11 -5
  78. package/dist/resources/calculation-resource.js.map +1 -1
  79. package/dist/resources/card-type-resource.d.ts +6 -1
  80. package/dist/resources/card-type-resource.js +34 -23
  81. package/dist/resources/card-type-resource.js.map +1 -1
  82. package/dist/resources/create-defaults.d.ts +3 -2
  83. package/dist/resources/create-defaults.js +3 -2
  84. package/dist/resources/create-defaults.js.map +1 -1
  85. package/dist/resources/field-type-resource.d.ts +4 -1
  86. package/dist/resources/field-type-resource.js +22 -23
  87. package/dist/resources/field-type-resource.js.map +1 -1
  88. package/dist/resources/file-resource.d.ts +5 -9
  89. package/dist/resources/file-resource.js +6 -11
  90. package/dist/resources/file-resource.js.map +1 -1
  91. package/dist/resources/folder-resource.d.ts +29 -32
  92. package/dist/resources/folder-resource.js +59 -78
  93. package/dist/resources/folder-resource.js.map +1 -1
  94. package/dist/resources/graph-model-resource.d.ts +4 -1
  95. package/dist/resources/graph-model-resource.js +11 -4
  96. package/dist/resources/graph-model-resource.js.map +1 -1
  97. package/dist/resources/graph-view-resource.d.ts +5 -2
  98. package/dist/resources/graph-view-resource.js +7 -3
  99. package/dist/resources/graph-view-resource.js.map +1 -1
  100. package/dist/resources/link-type-resource.d.ts +5 -2
  101. package/dist/resources/link-type-resource.js +5 -2
  102. package/dist/resources/link-type-resource.js.map +1 -1
  103. package/dist/resources/report-resource.d.ts +6 -7
  104. package/dist/resources/report-resource.js +14 -23
  105. package/dist/resources/report-resource.js.map +1 -1
  106. package/dist/resources/resource-object.d.ts +93 -8
  107. package/dist/resources/resource-object.js +162 -110
  108. package/dist/resources/resource-object.js.map +1 -1
  109. package/dist/resources/template-resource.d.ts +7 -3
  110. package/dist/resources/template-resource.js +10 -3
  111. package/dist/resources/template-resource.js.map +1 -1
  112. package/dist/resources/workflow-resource.d.ts +5 -2
  113. package/dist/resources/workflow-resource.js +18 -22
  114. package/dist/resources/workflow-resource.js.map +1 -1
  115. package/dist/utils/card-utils.d.ts +2 -2
  116. package/dist/utils/card-utils.js +1 -1
  117. package/dist/utils/clingo-fact-builder.d.ts +25 -14
  118. package/dist/utils/clingo-fact-builder.js +27 -5
  119. package/dist/utils/clingo-fact-builder.js.map +1 -1
  120. package/dist/utils/clingo-facts.js +3 -4
  121. package/dist/utils/clingo-facts.js.map +1 -1
  122. package/dist/utils/resource-utils.d.ts +1 -0
  123. package/dist/utils/resource-utils.js +2 -1
  124. package/dist/utils/resource-utils.js.map +1 -1
  125. package/package.json +8 -8
  126. package/src/card-metadata-updater.ts +6 -2
  127. package/src/command-handler.ts +24 -5
  128. package/src/command-manager.ts +29 -17
  129. package/src/commands/create.ts +43 -78
  130. package/src/commands/export.ts +63 -52
  131. package/src/commands/import.ts +24 -14
  132. package/src/commands/move.ts +0 -1
  133. package/src/commands/remove.ts +11 -7
  134. package/src/commands/rename.ts +43 -149
  135. package/src/commands/show.ts +113 -78
  136. package/src/commands/transition.ts +26 -28
  137. package/src/commands/update.ts +25 -22
  138. package/src/commands/validate.ts +108 -67
  139. package/src/containers/project/calculation-engine.ts +61 -93
  140. package/src/containers/project/project-paths.ts +21 -13
  141. package/src/containers/project/resource-cache.ts +648 -0
  142. package/src/containers/project/resource-handler.ts +265 -0
  143. package/src/containers/project.ts +178 -522
  144. package/src/containers/template.ts +24 -19
  145. package/src/interfaces/folder-content-interfaces.ts +7 -6
  146. package/src/interfaces/project-interfaces.ts +7 -6
  147. package/src/interfaces/resource-interfaces.ts +18 -3
  148. package/src/macros/graph/index.ts +26 -47
  149. package/src/macros/index.ts +2 -2
  150. package/src/macros/report/index.ts +3 -9
  151. package/src/module-manager.ts +74 -17
  152. package/src/project-settings.ts +83 -14
  153. package/src/resources/calculation-resource.ts +18 -18
  154. package/src/resources/card-type-resource.ts +50 -50
  155. package/src/resources/create-defaults.ts +3 -2
  156. package/src/resources/field-type-resource.ts +41 -55
  157. package/src/resources/file-resource.ts +10 -36
  158. package/src/resources/folder-resource.ts +69 -120
  159. package/src/resources/graph-model-resource.ts +20 -22
  160. package/src/resources/graph-view-resource.ts +15 -17
  161. package/src/resources/link-type-resource.ts +10 -13
  162. package/src/resources/report-resource.ts +21 -43
  163. package/src/resources/resource-object.ts +194 -152
  164. package/src/resources/template-resource.ts +17 -16
  165. package/src/resources/workflow-resource.ts +25 -44
  166. package/src/utils/card-utils.ts +2 -2
  167. package/src/utils/clingo-fact-builder.ts +28 -16
  168. package/src/utils/clingo-facts.ts +3 -4
  169. package/src/utils/resource-utils.ts +2 -1
  170. package/dist/containers/project/resource-collector.d.ts +0 -110
  171. package/dist/containers/project/resource-collector.js +0 -344
  172. package/dist/containers/project/resource-collector.js.map +0 -1
  173. package/src/containers/project/resource-collector.ts +0 -404
@@ -1,344 +0,0 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2024
4
-
5
- This program is free software: you can redistribute it and/or modify it under
6
- the terms of the GNU Affero General Public License version 3 as published by
7
- the Free Software Foundation. This program is distributed in the hope that it
8
- will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
9
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
- See the GNU Affero General Public License for more details.
11
- You should have received a copy of the GNU Affero General Public
12
- License along with this program. If not, see <https://www.gnu.org/licenses/>.
13
- */
14
- import { readdirSync } from 'node:fs';
15
- import { readdir } from 'node:fs/promises';
16
- import { extname, join } from 'node:path';
17
- import { resourceName } from '../../utils/resource-utils.js';
18
- import { stripExtension } from '../../utils/file-utils.js';
19
- /**
20
- * Defines where resources are collected from.
21
- * all - everywhere
22
- * importOnly - only from imported modules
23
- * localOnly - only from the project itself; excluding imported modules
24
- */
25
- export var ResourcesFrom;
26
- (function (ResourcesFrom) {
27
- ResourcesFrom["all"] = "all";
28
- ResourcesFrom["importedOnly"] = "imported";
29
- ResourcesFrom["localOnly"] = "local";
30
- })(ResourcesFrom || (ResourcesFrom = {}));
31
- // This class collects resources that have these types of files.
32
- const allowedExtensions = ['.lp', '.json'];
33
- // Helper class to contain collected resources.
34
- class ResourceCollection {
35
- calculations = [];
36
- cardTypes = [];
37
- fieldTypes = [];
38
- graphModels = [];
39
- graphViews = [];
40
- linkTypes = [];
41
- reports = [];
42
- templates = [];
43
- workflows = [];
44
- /**
45
- * Returns resource array of a give type.
46
- * @param type Resource array type to return.
47
- * @param moduleName Name of a module. If given, returns just resources from that module.
48
- * @returns resource array of a give type.
49
- */
50
- resourceArray(type, moduleName) {
51
- let resources = [];
52
- if (type === 'calculations')
53
- resources = this.calculations;
54
- else if (type === 'cardTypes')
55
- resources = this.cardTypes;
56
- else if (type === 'fieldTypes')
57
- resources = this.fieldTypes;
58
- else if (type === 'graphViews')
59
- resources = this.graphViews;
60
- else if (type === 'graphModels')
61
- resources = this.graphModels;
62
- else if (type === 'linkTypes')
63
- resources = this.linkTypes;
64
- else if (type === 'reports')
65
- resources = this.reports;
66
- else if (type === 'templates')
67
- resources = this.templates;
68
- else if (type === 'workflows')
69
- resources = this.workflows;
70
- else
71
- throw new Error(`Unknown resource type '${type}'`);
72
- if (moduleName) {
73
- resources = resources.filter((item) => {
74
- const { prefix } = resourceName(item.name);
75
- return moduleName === prefix;
76
- });
77
- }
78
- return resources;
79
- }
80
- }
81
- /**
82
- * This class handles local and modules resources.
83
- */
84
- export class ResourceCollector {
85
- project;
86
- local = new ResourceCollection();
87
- modules = new ResourceCollection();
88
- modulesCollected = false;
89
- paths;
90
- constructor(project) {
91
- this.project = project;
92
- this.paths = this.project.paths;
93
- }
94
- // Add resources of a given type to an array.
95
- async addResources(resources, requestedType) {
96
- if (requestedType === 'modules') {
97
- return resources.map((resource) => ({
98
- name: resource.name,
99
- path: resource.parentPath,
100
- }));
101
- }
102
- const isValidFile = (item) => item.isFile() && allowedExtensions.includes(extname(item.name));
103
- const processResource = async (resource) => {
104
- const resourcePath = join(this.paths.modulesFolder, resource.name, requestedType);
105
- try {
106
- const files = await readdir(resourcePath, { withFileTypes: true });
107
- return files.filter(isValidFile).map((item) => ({
108
- name: `${resource.name}/${requestedType}/${stripExtension(item.name)}`,
109
- path: item.parentPath,
110
- }));
111
- }
112
- catch {
113
- return [];
114
- }
115
- };
116
- const results = await Promise.all(resources.map(processResource));
117
- return results.flat();
118
- }
119
- // Collects all module resources.
120
- async addModuleResources() {
121
- if (!this.modulesCollected) {
122
- const moduleDirectories = await readdir(this.paths.modulesFolder, {
123
- withFileTypes: true,
124
- });
125
- const modules = moduleDirectories.filter((item) => item.isDirectory());
126
- this.modules.calculations = [
127
- ...(await this.addResources(modules, 'calculations')),
128
- ];
129
- this.modules.cardTypes = [
130
- ...(await this.addResources(modules, 'cardTypes')),
131
- ];
132
- this.modules.fieldTypes = [
133
- ...(await this.addResources(modules, 'fieldTypes')),
134
- ];
135
- this.modules.graphModels = [
136
- ...(await this.addResources(modules, 'graphModels')),
137
- ];
138
- this.modules.graphViews = [
139
- ...(await this.addResources(modules, 'graphViews')),
140
- ];
141
- this.modules.linkTypes = [
142
- ...(await this.addResources(modules, 'linkTypes')),
143
- ];
144
- this.modules.reports = [...(await this.addResources(modules, 'reports'))];
145
- this.modules.templates = [
146
- ...(await this.addResources(modules, 'templates')),
147
- ];
148
- this.modules.workflows = [
149
- ...(await this.addResources(modules, 'workflows')),
150
- ];
151
- this.modulesCollected = true;
152
- }
153
- }
154
- // Adds a resource type from all modules.
155
- async addResourcesFromModules(type, moduleName) {
156
- try {
157
- // 'modules' is a bit special; it is collected separately from actual resources.
158
- if (type === 'modules') {
159
- const moduleDirectories = await readdir(this.paths.modulesFolder, {
160
- withFileTypes: true,
161
- });
162
- const modules = moduleDirectories.filter((item) => item.isDirectory());
163
- return [...(await this.addResources(modules, 'modules'))];
164
- }
165
- await this.addModuleResources();
166
- return this.modules.resourceArray(type, moduleName);
167
- }
168
- catch {
169
- return [];
170
- }
171
- }
172
- // Joins local resources and module resources together to one array.
173
- joinResources(from, localCollection, moduleCollection) {
174
- if (from === ResourcesFrom.localOnly) {
175
- return localCollection;
176
- }
177
- if (from === ResourcesFrom.importedOnly) {
178
- return moduleCollection;
179
- }
180
- return [...localCollection, ...moduleCollection];
181
- }
182
- // Returns local resources of a given type.
183
- localResources(type) {
184
- if (type === 'modules') {
185
- return [];
186
- }
187
- else {
188
- return this.local.resourceArray(type);
189
- }
190
- }
191
- // Collects certain kinds of resources.
192
- resourcesSync(type) {
193
- const resourceFolder = this.project.paths.resourcePath(type);
194
- const resources = [];
195
- let entries = [];
196
- try {
197
- entries = readdirSync(resourceFolder, { withFileTypes: true });
198
- }
199
- catch {
200
- return [];
201
- }
202
- resources.push(...entries
203
- .filter((entry) => entry.isFile() && allowedExtensions.includes(extname(entry.name)))
204
- .map((entry) => {
205
- entry.name = stripExtension(entry.name);
206
- return {
207
- name: `${this.project.projectPrefix}/${type}/${entry.name}`,
208
- path: entry.parentPath,
209
- };
210
- }));
211
- return resources;
212
- }
213
- /**
214
- * Collects all local resources.
215
- */
216
- collectLocalResources() {
217
- const resourceTypes = [
218
- 'calculations',
219
- 'cardTypes',
220
- 'fieldTypes',
221
- 'graphModels',
222
- 'graphViews',
223
- 'linkTypes',
224
- 'reports',
225
- 'templates',
226
- 'workflows',
227
- ];
228
- resourceTypes.forEach((type) => {
229
- this.local[type] = this.resourcesSync(type);
230
- });
231
- }
232
- /**
233
- * Collect specific resource from modules.
234
- * @param type Type of resource (e.g. 'templates').
235
- * @param moduleName Name of the module to collect resources from
236
- * @returns array of collected items.
237
- */
238
- async collectResourcesFromModules(type, moduleName) {
239
- return (await this.addResourcesFromModules(type, moduleName)).map((item) => stripExtension(item.name));
240
- }
241
- /**
242
- * Add a given 'resource' to the local resource arrays.
243
- * @param resource Resource to add.
244
- */
245
- add(resource) {
246
- // Helper to avoid adding duplicate entries.
247
- function addItem(array, item) {
248
- if (!array.includes(item)) {
249
- item.name = stripExtension(item.name);
250
- array.push(item);
251
- }
252
- }
253
- const { type } = resourceName(resource.name);
254
- switch (type) {
255
- case 'calculations':
256
- addItem(this.local.calculations, resource);
257
- break;
258
- case 'cardTypes':
259
- addItem(this.local.cardTypes, resource);
260
- break;
261
- case 'fieldTypes':
262
- addItem(this.local.fieldTypes, resource);
263
- break;
264
- case 'graphModels':
265
- addItem(this.local.graphModels, resource);
266
- break;
267
- case 'graphViews':
268
- addItem(this.local.graphViews, resource);
269
- break;
270
- case 'linkTypes':
271
- addItem(this.local.linkTypes, resource);
272
- break;
273
- case 'reports':
274
- addItem(this.local.reports, resource);
275
- break;
276
- case 'templates':
277
- addItem(this.local.templates, resource);
278
- break;
279
- case 'workflows':
280
- addItem(this.local.workflows, resource);
281
- break;
282
- default: {
283
- throw new Error(`Resource type '${type}' not handled in 'addResource'`);
284
- }
285
- }
286
- }
287
- /**
288
- * Re-collects local resources.
289
- */
290
- changed() {
291
- this.collectLocalResources();
292
- }
293
- /**
294
- * Re-collects imported module resources.
295
- */
296
- moduleImported() {
297
- this.modulesCollected = false;
298
- }
299
- /**
300
- * Getter. Provide access for owner to browse module resources.
301
- */
302
- get moduleResources() {
303
- return this.modules;
304
- }
305
- /**
306
- * Removes a resource from Project.
307
- * @param resource Resource to remove.
308
- * @returns the modified array.
309
- */
310
- remove(resource) {
311
- const { type } = resourceName(resource.name);
312
- const arrayToModify = this.local
313
- .resourceArray(type)
314
- .filter((item) => item.name !== resource.name);
315
- this.collectLocalResources();
316
- return arrayToModify;
317
- }
318
- /**
319
- * Checks if resource of 'type' with 'name' exists.
320
- * @param type Type of resource (e.g. 'templates').
321
- * @param name Name of the resource.
322
- * @returns true, if resource exits, false otherwise.
323
- */
324
- async resourceExists(type, name) {
325
- if (!name) {
326
- return false;
327
- }
328
- return (await this.resources(type)).some((item) => item.name === name);
329
- }
330
- /**
331
- * Returns resources of 'type'. Returned resources are either local, or from modules or all of them.
332
- * @param type Type of resource (e.g. 'templates').
333
- * @param from Defines where resources are collected from.
334
- * @returns Array of resources.
335
- */
336
- async resources(type, from = ResourcesFrom.all) {
337
- const moduleResources = from !== ResourcesFrom.localOnly
338
- ? await this.addResourcesFromModules(type)
339
- : [];
340
- const localResourcesOfType = this.localResources(type);
341
- return this.joinResources(from, localResourcesOfType, moduleResources);
342
- }
343
- }
344
- //# sourceMappingURL=resource-collector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resource-collector.js","sourceRoot":"","sources":["../../../src/containers/project/resource-collector.ts"],"names":[],"mappings":"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"}