@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
@@ -12,14 +12,13 @@
12
12
  /* eslint-disable @typescript-eslint/no-unused-vars */
13
13
  // node
14
14
  import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
15
- import { basename, join, sep } from 'node:path';
16
- import { hasCode } from '../utils/error-utils.js';
15
+ import { basename, join } from 'node:path';
17
16
  import { ArrayHandler } from './array-handler.js';
18
- import { ResourcesFrom } from '../containers/project/resource-collector.js';
19
- import { resourceName, resourceNameToPath, resourceNameToString, } from '../utils/resource-utils.js';
20
- import { getChildLogger } from '../utils/log-utils.js';
21
17
  import { deleteFile, pathExists } from '../utils/file-utils.js';
18
+ import { getChildLogger } from '../utils/log-utils.js';
22
19
  import { readJsonFile, readJsonFileSync, writeJsonFile, } from '../utils/json.js';
20
+ import { resourceName, resourceNameToPath, resourceNameToString, } from '../utils/resource-utils.js';
21
+ import { ResourcesFrom } from '../containers/project.js';
23
22
  /**
24
23
  * Abstract class for resources.
25
24
  */
@@ -28,8 +27,6 @@ export class AbstractResource {
28
27
  export class ResourceObject extends AbstractResource {
29
28
  project;
30
29
  resourceName;
31
- // TODO: Remove when INTDEV-1048 is implemented, since caching is done at object level
32
- cache;
33
30
  static validateInstancePromise;
34
31
  content;
35
32
  moduleResource;
@@ -42,17 +39,29 @@ export class ResourceObject extends AbstractResource {
42
39
  * Path to the resource metadata file (the .json file).
43
40
  */
44
41
  fileName = '';
42
+ /**
43
+ * Constructs a ResourceObject instance
44
+ * @param project Project where this resource is
45
+ * @param resourceName Name for the resource
46
+ * @param type Type of resource
47
+ */
45
48
  constructor(project, resourceName, type) {
46
49
  super();
47
50
  this.project = project;
48
51
  this.resourceName = resourceName;
49
52
  this.moduleResource =
50
53
  this.resourceName.prefix !== this.project.projectPrefix;
51
- this.cache = this.project.resourceCache;
52
54
  this.type = type;
53
55
  this.logger = this.getLogger(this.getType);
54
56
  this.content = { name: '' }; // not found if name is empty
55
57
  }
58
+ // Check if resource already exists. First checks the cache, then filesystem.
59
+ exists() {
60
+ const name = resourceNameToString(this.resourceName);
61
+ const existsInCache = this.project.resources.exists(name);
62
+ return existsInCache || pathExists(this.fileName);
63
+ }
64
+ // Gets Validate command instance.
56
65
  static async getValidate() {
57
66
  // a bit hacky solution to avoid circular dependencies
58
67
  if (!this.validateInstancePromise) {
@@ -60,58 +69,53 @@ export class ResourceObject extends AbstractResource {
60
69
  }
61
70
  return this.validateInstancePromise;
62
71
  }
63
- resourceObjectToResource() {
64
- return {
65
- name: this.data ? this.data.name : '',
66
- path: this.fileName.substring(0, this.fileName.lastIndexOf(sep)),
67
- };
72
+ // Gets handlebar files.
73
+ async reportHandlerBarFiles(from = ResourcesFrom.all) {
74
+ const reports = this.project.resources.reports(from);
75
+ const handleBarFiles = [];
76
+ for (const report of reports) {
77
+ handleBarFiles.push(...(await report.handleBarFiles()));
78
+ }
79
+ return handleBarFiles;
68
80
  }
69
81
  // Type of resource.
70
82
  resourceType() {
71
83
  return this.type;
72
84
  }
73
- toCache() {
74
- this.cache.set(resourceNameToString(this.resourceName), this.content);
75
- }
76
85
  /**
77
- * Checks if resource exists
86
+ * Checks if resource exists.
87
+ * This should only throw, if someone creates resources directly; ie. not through the cache
78
88
  * @throws if resource does not exist
79
89
  */
80
90
  assertResourceExists() {
81
- if (!pathExists(this.fileName)) {
91
+ if (!this.exists()) {
82
92
  const resourceType = `${this.type[0].toUpperCase()}${this.type.slice(1, this.type.length - 1)}`;
83
93
  const name = resourceNameToString(this.resourceName);
84
94
  throw new Error(`${resourceType} '${name}' does not exist in the project`);
85
95
  }
86
96
  }
97
+ /**
98
+ * Calculate; empty implementation.
99
+ */
87
100
  async calculate() { }
88
- // Calculations that use this resource.
101
+ /**
102
+ * Calculations that use this resource.
103
+ * @throws if accessing calculations files failed
104
+ */
89
105
  async calculations() {
90
106
  const references = [];
91
107
  const resourceName = resourceNameToString(this.resourceName);
92
- for (const calculation of await this.project.calculations(ResourcesFrom.all)) {
93
- const fileNameWithExtension = calculation.name.endsWith('.lp')
94
- ? calculation.name
95
- : calculation.name + '.lp';
96
- const filename = join(calculation.path, basename(fileNameWithExtension));
97
- try {
98
- const content = await readFile(filename, 'utf-8');
99
- if (content.includes(resourceName)) {
100
- references.push(calculation.name);
101
- }
102
- }
103
- catch (error) {
104
- // Skip files that don't exist (they may have been renamed or deleted)
105
- if (hasCode(error) && error.code === 'ENOENT') {
106
- this.logger.warn(`Skipping non-existent file: ${filename}`);
107
- continue;
108
- }
109
- throw new Error(`Failed to process file ${filename}: ${error.message}`);
108
+ for (const calculation of this.project.resources.calculations()) {
109
+ const content = calculation.contentData();
110
+ if (content.calculation && content.calculation.includes(resourceName)) {
111
+ references.push(calculation.data.name);
110
112
  }
111
113
  }
112
114
  return references;
113
115
  }
114
- // Cards from project.
116
+ /**
117
+ * Cards from project.
118
+ */
115
119
  cards() {
116
120
  return [
117
121
  ...this.project.cards(undefined),
@@ -131,17 +135,23 @@ export class ResourceObject extends AbstractResource {
131
135
  },
132
136
  ];
133
137
  }
134
- // Creates resource.
138
+ /**
139
+ * Creates resource.
140
+ * @param newContent Content for resource.
141
+ * @throws when resource already exists in the project.
142
+ */
135
143
  async create(newContent) {
136
- if (pathExists(this.fileName)) {
144
+ this.validateResourceIdentifier();
145
+ if (this.exists()) {
137
146
  throw new Error(`Resource '${this.resourceName.identifier}' already exists in the project`);
138
147
  }
139
148
  if (this.resourceFolder === '') {
140
149
  this.resourceName = resourceName(`${this.project.projectPrefix}/${this.type}/${this.resourceName.identifier}`);
141
150
  this.resourceFolder = this.project.paths.resourcePath(this.resourceName.type);
151
+ this.fileName = join(this.resourceFolder, this.resourceName.identifier + '.json');
142
152
  }
143
153
  const validator = await ResourceObject.getValidate();
144
- const validName = validator.validResourceName(this.resourceType(), resourceNameToString(this.resourceName), await this.project.projectPrefixes());
154
+ const validName = validator.validResourceName(this.resourceType(), resourceNameToString(this.resourceName), this.project.projectPrefixes());
145
155
  let validContent = {};
146
156
  if (newContent) {
147
157
  validContent = newContent;
@@ -153,14 +163,22 @@ export class ResourceObject extends AbstractResource {
153
163
  }
154
164
  this.content = validContent;
155
165
  await this.write();
156
- // Notify project & collector
157
- this.project.addResource(this.resourceObjectToResource(), this.content);
166
+ const resourceString = resourceNameToString(this.resourceName);
167
+ this.project.resources.add(resourceString, this);
158
168
  }
169
+ /**
170
+ * Gets a logger instance.
171
+ * @param loggerName
172
+ * @returns logger instance
173
+ */
159
174
  getLogger(loggerName) {
160
175
  return getChildLogger({
161
176
  module: loggerName,
162
177
  });
163
178
  }
179
+ /**
180
+ * Returns type of this resource.
181
+ */
164
182
  get getType() {
165
183
  return this.type;
166
184
  }
@@ -170,6 +188,7 @@ export class ResourceObject extends AbstractResource {
170
188
  * @param arrayName Name of the array, for error messages.
171
189
  * @param array Array to be updated.
172
190
  * @returns Changed array after the operation.
191
+ * @throws when operation cannot be done.
173
192
  */
174
193
  handleArray(operation, arrayName, array) {
175
194
  const handler = new ArrayHandler();
@@ -188,6 +207,7 @@ export class ResourceObject extends AbstractResource {
188
207
  * Updates scalar value. The only accepted operation is 'change'
189
208
  * @param operation Operation to perform on scalar.
190
209
  * @returns What the scalar should be changed to.
210
+ * @throws when operation cannot be done
191
211
  */
192
212
  handleScalar(operation) {
193
213
  if (operation.name === 'add' ||
@@ -197,7 +217,9 @@ export class ResourceObject extends AbstractResource {
197
217
  }
198
218
  return operation.to;
199
219
  }
200
- // Initialize the resource.
220
+ /**
221
+ * Initialize the resource.
222
+ */
201
223
  initialize() {
202
224
  if (this.resourceName.type === '') {
203
225
  this.resourceName.type = this.type;
@@ -213,22 +235,23 @@ export class ResourceObject extends AbstractResource {
213
235
  : this.project.paths.resourcePath(this.type);
214
236
  this.fileName = resourceNameToPath(this.project, this.resourceName);
215
237
  }
216
- // Read from cache, if entry exists...
217
- if (this.cache.has(resourceNameToString(this.resourceName))) {
218
- this.content = this.cache.get(resourceNameToString(this.resourceName));
219
- return;
220
- }
221
- //... otherwise read from disk and add to cache
222
- try {
223
- this.content = readJsonFileSync(this.fileName);
224
- this.toCache();
225
- }
226
- catch {
227
- // do nothing, it is possible that file has not been created yet.
228
- this.logger.info(`Initializing resource '${resourceNameToString(this.resourceName)}' failed: failed to read file '${this.fileName}'`);
238
+ // Only load content from disk if resource exists in the cache registry
239
+ if (this.project.resources.exists(resourceNameToString(this.resourceName))) {
240
+ try {
241
+ this.content = readJsonFileSync(this.fileName);
242
+ }
243
+ catch {
244
+ this.logger.debug(`Initializing resource '${resourceNameToString(this.resourceName)}' failed: failed to read file '${this.fileName}'`);
245
+ }
229
246
  }
230
247
  }
231
- // Called after inherited class has finished 'update' operation.
248
+ /**
249
+ * Called after inherited class has finished 'update' operation.
250
+ * @param content New content for resource
251
+ * @param updateKey Which property to change
252
+ * @param op What kind of operation is performed to updateKey
253
+ * @throws if validation fails after the update
254
+ */
232
255
  async postUpdate(content, updateKey, op) {
233
256
  function toValue(op) {
234
257
  if (op.name === 'rank')
@@ -258,29 +281,24 @@ export class ResourceObject extends AbstractResource {
258
281
  this.content = content;
259
282
  await this.write();
260
283
  }
261
- // Update resource; the base class makes some checks only.
262
- async update(key, _op) {
263
- const content = this.data;
264
- if (!content) {
265
- throw new Error(`Resource '${resourceNameToString(this.resourceName)}' does not exist`);
266
- }
267
- if (this.moduleResource) {
268
- throw new Error(`Cannot update module resources`);
269
- }
270
- if (key.key === '' || key === undefined) {
271
- throw new Error(`Cannot update empty key`);
272
- }
273
- }
274
- // Reads content from file to memory.
284
+ /**
285
+ * Reads content from file to memory.
286
+ */
275
287
  async read() {
276
288
  this.content = await readJsonFile(this.fileName);
277
289
  }
278
- // Renames resource.
290
+ /**
291
+ * Renames resource.
292
+ * @param newName New name for the resource.
293
+ * @throws if trying to rename module resource, or
294
+ * if resource does not exist,
295
+ * if trying to rename so that type changes
296
+ */
279
297
  async rename(newName) {
280
298
  if (this.moduleResource) {
281
299
  throw new Error(`Cannot rename module resources`);
282
300
  }
283
- if (!pathExists(this.fileName)) {
301
+ if (!this.exists()) {
284
302
  throw new Error(`Resource '${this.resourceName.identifier}' does not exist`);
285
303
  }
286
304
  if (newName.prefix !== this.project.projectPrefix) {
@@ -290,48 +308,64 @@ export class ResourceObject extends AbstractResource {
290
308
  throw new Error('Cannot change resource type');
291
309
  }
292
310
  const validator = await ResourceObject.getValidate();
293
- validator.validResourceName(this.resourceType(), resourceNameToString(newName), await this.project.projectPrefixes());
311
+ validator.validResourceName(this.resourceType(), resourceNameToString(newName), this.project.projectPrefixes());
294
312
  const newFilename = join(this.project.paths.resourcePath(newName.type), newName.identifier + '.json');
313
+ const oldName = resourceNameToString(this.resourceName);
295
314
  await rename(this.fileName, newFilename);
296
- this.cache.delete(resourceNameToString(this.resourceName));
297
315
  this.fileName = newFilename;
298
316
  this.content.name = resourceNameToString(newName);
299
317
  this.resourceName = newName;
300
- this.toCache();
318
+ this.project.resources.rename(oldName, this.content.name);
319
+ }
320
+ /**
321
+ * Update resource; the base class makes some checks only.
322
+ * @template type Resource type
323
+ * @template K Resource key
324
+ * @throws if resource does not exist, or
325
+ * if trying to update module content, or
326
+ * if key is empty
327
+ */
328
+ async update(key, _op) {
329
+ const content = this.data;
330
+ if (!content) {
331
+ throw new Error(`Resource '${resourceNameToString(this.resourceName)}' does not exist`);
332
+ }
333
+ if (this.moduleResource) {
334
+ throw new Error(`Cannot update module resources`);
335
+ }
336
+ if (key.key === '' || key === undefined) {
337
+ throw new Error(`Cannot update empty key`);
338
+ }
339
+ }
340
+ /**
341
+ * Validates resource identifier to prevent filesystem operations with invalid names
342
+ * todo: To Validate?
343
+ */
344
+ validateResourceIdentifier() {
345
+ if (!this.moduleResource && this.resourceName.identifier) {
346
+ const identifier = this.resourceName.identifier;
347
+ if (!/^[a-zA-Z0-9._-]+$/.test(identifier)) {
348
+ throw new Error(`Resource identifier must follow naming rules. Identifier '${identifier}' is invalid`);
349
+ }
350
+ }
301
351
  }
302
352
  /**
303
353
  * Update calculation files.
304
354
  * @param from Resource name to update
305
355
  * @param to New name for resource
356
+ * @throws if 'from' or 'to' is empty string, or
357
+ * if there was error accessing calculation files.
306
358
  */
307
359
  async updateCalculations(from, to) {
308
360
  if (!from.trim() || !to.trim()) {
309
361
  throw new Error('updateCalculations: "from" and "to" parameters must not be empty');
310
362
  }
311
- const calculations = await this.project.calculations(ResourcesFrom.localOnly);
363
+ const calculations = this.project.resources.calculations(ResourcesFrom.localOnly);
312
364
  await Promise.all(calculations.map(async (calculation) => {
313
- if (!calculation.path) {
314
- throw new Error(`Calculation file's '${calculation.name}' path is not defined`);
315
- }
316
- const base = basename(calculation.name);
317
- const fileNameWithExtension = base.endsWith('.lp')
318
- ? base
319
- : base + '.lp';
320
- const filename = join(calculation.path, fileNameWithExtension);
321
- try {
322
- const content = await readFile(filename, 'utf-8');
323
- const updatedContent = content.replaceAll(from, to);
324
- await writeFile(filename, updatedContent);
325
- }
326
- catch (error) {
327
- if (hasCode(error) && error.code === 'ENOENT') {
328
- // Skip files that don't exist (they may have been renamed or deleted)
329
- this.getLogger(this.getType).warn(`Skipping non-existent file: ${filename}`);
330
- return;
331
- }
332
- if (error instanceof Error) {
333
- throw new Error(`Failed to process file while updating calculation ${filename}: ${error.message}`);
334
- }
365
+ const content = calculation.contentData();
366
+ if (content.calculation) {
367
+ const updatedContent = content.calculation.replaceAll(from, to);
368
+ await calculation.updateFile('calculation.lp', updatedContent);
335
369
  }
336
370
  }));
337
371
  }
@@ -340,13 +374,14 @@ export class ResourceObject extends AbstractResource {
340
374
  * @param from Resource name to update
341
375
  * @param to New name for resource
342
376
  * @param handleBarFiles Optional. List of handlebar files. If omitted, affects all handlebar files in the project.
377
+ * @throws if 'from' or 'to' is empty string
343
378
  */
344
379
  async updateHandleBars(from, to, handleBarFiles) {
345
380
  if (!from.trim() || !to.trim()) {
346
381
  throw new Error('updateHandleBars: "from" and "to" parameters must not be empty');
347
382
  }
348
383
  if (!handleBarFiles) {
349
- handleBarFiles = await this.project.reportHandlerBarFiles(ResourcesFrom.localOnly);
384
+ handleBarFiles = await this.reportHandlerBarFiles(ResourcesFrom.localOnly);
350
385
  }
351
386
  // Process all files in parallel.
352
387
  await Promise.all(handleBarFiles.map(async (handleBarFile) => {
@@ -355,10 +390,14 @@ export class ResourceObject extends AbstractResource {
355
390
  await writeFile(handleBarFile, Buffer.from(updatedContent));
356
391
  }));
357
392
  }
358
- // Check if there are references to the resource in the card content.
359
- // @note that this needs to be async, since inherited classes need to async operations
393
+ /**
394
+ * Check if there are references to the resource in the card content.
395
+ * @note that this needs to be async, since inherited classes need to async operations
396
+ * @param cards cards to check
397
+ * @throws if resource does not exist
398
+ */
360
399
  async usage(cards) {
361
- if (!pathExists(this.fileName)) {
400
+ if (!this.exists()) {
362
401
  throw new Error(`Resource '${this.resourceName.identifier}' does not exist in the project`);
363
402
  }
364
403
  const cardArray = cards?.length ? cards : this.project.cards(undefined);
@@ -366,12 +405,20 @@ export class ResourceObject extends AbstractResource {
366
405
  .filter((card) => card.content?.includes(resourceNameToString(this.resourceName)))
367
406
  .map((card) => card.key);
368
407
  }
408
+ /**
409
+ * Checks if resource name is valid.
410
+ * @param newName New name for resource.
411
+ * @returns valid name
412
+ */
369
413
  async validName(newName) {
370
414
  const validator = await ResourceObject.getValidate();
371
- const validName = validator.validResourceName(this.resourceType(), resourceNameToString(newName), await this.project.projectPrefixes());
415
+ const validName = validator.validResourceName(this.resourceType(), resourceNameToString(newName), this.project.projectPrefixes());
372
416
  return validName;
373
417
  }
374
- // Write the content from memory to disk.
418
+ /**
419
+ * Write the content from memory to disk.
420
+ * @throws if trying to write a module resource.
421
+ */
375
422
  async write() {
376
423
  if (this.moduleResource) {
377
424
  throw new Error(`Cannot change module resources`);
@@ -384,13 +431,15 @@ export class ResourceObject extends AbstractResource {
384
431
  // Check if "name" has changed. Changing "name" means renaming the file.
385
432
  const nameInContent = resourceName(this.content.name).identifier + '.json';
386
433
  const currentFileName = basename(this.fileName);
434
+ const resourceString = resourceNameToString(this.resourceName);
387
435
  if (nameInContent !== currentFileName) {
388
436
  const newFileName = join(this.resourceFolder, nameInContent);
389
437
  await rename(this.fileName, newFileName);
390
438
  this.fileName = newFileName;
439
+ this.resourceName = resourceName(this.content.name);
440
+ this.project.resources.rename(resourceString, this.content.name);
391
441
  }
392
442
  await writeJsonFile(this.fileName, this.content);
393
- this.toCache();
394
443
  }
395
444
  /**
396
445
  * Returns memory resident data as JSON.
@@ -402,7 +451,9 @@ export class ResourceObject extends AbstractResource {
402
451
  }
403
452
  /**
404
453
  * Deletes the file and removes the resource from project.
405
- * @throws if resource is a module resource or does not exist or is used by other resources.
454
+ * @throws if resource is a module resource, or
455
+ * if resource does not exist, or
456
+ * if resource is used by other resources.
406
457
  */
407
458
  async delete() {
408
459
  if (this.moduleResource) {
@@ -411,7 +462,7 @@ export class ResourceObject extends AbstractResource {
411
462
  if (!this.fileName.endsWith('.json')) {
412
463
  this.fileName += '.json';
413
464
  }
414
- if (!pathExists(this.fileName)) {
465
+ if (!this.exists()) {
415
466
  throw new Error(`Resource '${this.resourceName.identifier}' does not exist in the project`);
416
467
  }
417
468
  const usedIn = await this.usage();
@@ -419,12 +470,13 @@ export class ResourceObject extends AbstractResource {
419
470
  throw new Error(`Cannot delete resource ${resourceNameToString(this.resourceName)}. It is used by: ${usedIn.join(', ')}`);
420
471
  }
421
472
  await deleteFile(this.fileName);
422
- this.project.removeResource(this.resourceObjectToResource());
473
+ this.project.resources.remove(resourceNameToString(this.resourceName));
423
474
  this.fileName = '';
424
475
  }
425
476
  /**
426
477
  * Validates the content of the resource.
427
478
  * @param content Content to be validated.
479
+ * @throws if content is invalid.
428
480
  */
429
481
  async validate(content) {
430
482
  const validator = await ResourceObject.getValidate();
@@ -1 +1 @@
1
- {"version":3,"file":"resource-object.js","sourceRoot":"","sources":["../../src/resources/resource-object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-object.js","sourceRoot":"","sources":["../../src/resources/resource-object.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,13 @@
10
10
  details. You should have received a copy of the GNU Affero General Public
11
11
  License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
12
  */
13
- import type { Card, Operation, Project, ResourceName } from './folder-resource.js';
14
13
  import { FolderResource } from './folder-resource.js';
15
- import type { TemplateConfiguration, TemplateMetadata, UpdateKey } from '../interfaces/resource-interfaces.js';
16
14
  import { Template } from '../containers/template.js';
15
+ import type { Card } from '../interfaces/project-interfaces.js';
16
+ import type { Operation } from './resource-object.js';
17
+ import type { Project } from '../containers/project.js';
18
+ import type { ResourceName } from '../utils/resource-utils.js';
19
+ import type { TemplateConfiguration, TemplateMetadata, UpdateKey } from '../interfaces/resource-interfaces.js';
17
20
  /**
18
21
  * Template resource class.
19
22
  */
@@ -35,6 +38,7 @@ export declare class TemplateResource extends FolderResource<TemplateMetadata, n
35
38
  create(newContent?: TemplateMetadata): Promise<void>;
36
39
  /**
37
40
  * Deletes file and folder that this resource is based on.
41
+ * Also removes template cards from the project's card cache.
38
42
  */
39
43
  delete(): Promise<void>;
40
44
  /**
@@ -46,7 +50,7 @@ export declare class TemplateResource extends FolderResource<TemplateMetadata, n
46
50
  * Shows metadata of the resource.
47
51
  * @returns template metadata.
48
52
  */
49
- show(): Promise<TemplateConfiguration>;
53
+ show(): TemplateConfiguration;
50
54
  /**
51
55
  * Returns template card container object.
52
56
  * @returns template container object
@@ -12,7 +12,10 @@
12
12
  */
13
13
  import { dirname, join } from 'node:path';
14
14
  import { mkdir } from 'node:fs/promises';
15
- import { DefaultContent, FolderResource, resourceNameToString, sortCards, } from './folder-resource.js';
15
+ import { DefaultContent } from './create-defaults.js';
16
+ import { FolderResource } from './folder-resource.js';
17
+ import { resourceNameToString } from '../utils/resource-utils.js';
18
+ import { sortCards } from '../utils/card-utils.js';
16
19
  import { Template } from '../containers/template.js';
17
20
  import { writeJsonFile } from '../utils/json.js';
18
21
  /**
@@ -28,6 +31,7 @@ export class TemplateResource extends FolderResource {
28
31
  this.contentSchema = super.contentSchemaContent(this.contentSchemaId);
29
32
  this.cardsFolder = join(this.internalFolder, 'c');
30
33
  // Each template resource contains a template card container (with template cards).
34
+ // todo: Fix Template constructor not to use Resource, but just this filename with path
31
35
  this.cardContainer = new Template(this.project, {
32
36
  name: resourceNameToString(this.resourceName),
33
37
  path: dirname(this.fileName),
@@ -60,8 +64,11 @@ export class TemplateResource extends FolderResource {
60
64
  }
61
65
  /**
62
66
  * Deletes file and folder that this resource is based on.
67
+ * Also removes template cards from the project's card cache.
63
68
  */
64
69
  async delete() {
70
+ const templateName = resourceNameToString(this.resourceName);
71
+ this.project.cardsCache.deleteCardsFromTemplate(templateName);
65
72
  return super.delete();
66
73
  }
67
74
  /**
@@ -77,8 +84,8 @@ export class TemplateResource extends FolderResource {
77
84
  * Shows metadata of the resource.
78
85
  * @returns template metadata.
79
86
  */
80
- async show() {
81
- const templateMetadata = await super.show();
87
+ show() {
88
+ const templateMetadata = super.show();
82
89
  const container = this.templateObject();
83
90
  return {
84
91
  name: resourceNameToString(this.resourceName),