@cyberismo/data-handler 0.0.14 → 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.
- package/dist/card-metadata-updater.js +8 -4
- package/dist/card-metadata-updater.js.map +1 -1
- package/dist/command-handler.d.ts +4 -0
- package/dist/command-handler.js +29 -19
- package/dist/command-handler.js.map +1 -1
- package/dist/command-manager.d.ts +25 -2
- package/dist/command-manager.js +30 -5
- package/dist/command-manager.js.map +1 -1
- package/dist/commands/create.d.ts +1 -1
- package/dist/commands/create.js +45 -93
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/edit.d.ts +1 -15
- package/dist/commands/edit.js +15 -89
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/export.d.ts +11 -2
- package/dist/commands/export.js +58 -58
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts +9 -1
- package/dist/commands/import.js +17 -11
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/move.d.ts +1 -2
- package/dist/commands/move.js +107 -146
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/remove.d.ts +8 -1
- package/dist/commands/remove.js +17 -48
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/rename.d.ts +4 -9
- package/dist/commands/rename.js +34 -108
- package/dist/commands/rename.js.map +1 -1
- package/dist/commands/show.d.ts +22 -34
- package/dist/commands/show.js +103 -151
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/transition.d.ts +9 -2
- package/dist/commands/transition.js +49 -44
- package/dist/commands/transition.js.map +1 -1
- package/dist/commands/update.d.ts +18 -12
- package/dist/commands/update.js +34 -18
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts +18 -10
- package/dist/commands/validate.js +101 -47
- package/dist/commands/validate.js.map +1 -1
- package/dist/containers/card-container.d.ts +87 -24
- package/dist/containers/card-container.js +183 -279
- package/dist/containers/card-container.js.map +1 -1
- package/dist/containers/project/calculation-engine.d.ts +13 -4
- package/dist/containers/project/calculation-engine.js +79 -77
- package/dist/containers/project/calculation-engine.js.map +1 -1
- package/dist/containers/project/card-cache.d.ts +146 -0
- package/dist/containers/project/card-cache.js +411 -0
- package/dist/containers/project/card-cache.js.map +1 -0
- package/dist/containers/project/project-paths.d.ts +5 -4
- package/dist/containers/project/project-paths.js +16 -12
- package/dist/containers/project/project-paths.js.map +1 -1
- package/dist/containers/project/resource-cache.d.ts +169 -0
- package/dist/containers/project/resource-cache.js +507 -0
- package/dist/containers/project/resource-cache.js.map +1 -0
- package/dist/containers/project/resource-handler.d.ts +129 -0
- package/dist/containers/project/resource-handler.js +206 -0
- package/dist/containers/project/resource-handler.js.map +1 -0
- package/dist/containers/project.d.ts +114 -195
- package/dist/containers/project.js +425 -535
- package/dist/containers/project.js.map +1 -1
- package/dist/containers/template.d.ts +22 -32
- package/dist/containers/template.js +113 -115
- package/dist/containers/template.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/folder-content-interfaces.d.ts +7 -4
- package/dist/interfaces/folder-content-interfaces.js +3 -3
- package/dist/interfaces/folder-content-interfaces.js.map +1 -1
- package/dist/interfaces/macros.d.ts +1 -0
- package/dist/interfaces/macros.js +1 -1
- package/dist/interfaces/macros.js.map +1 -1
- package/dist/interfaces/project-interfaces.d.ts +7 -5
- package/dist/interfaces/project-interfaces.js.map +1 -1
- package/dist/interfaces/resource-interfaces.d.ts +25 -22
- package/dist/interfaces/resource-interfaces.js +3 -0
- package/dist/interfaces/resource-interfaces.js.map +1 -1
- package/dist/macros/common.d.ts +10 -10
- package/dist/macros/createCards/index.d.ts +0 -13
- package/dist/macros/createCards/index.js.map +1 -1
- package/dist/macros/createCards/types.d.ts +44 -0
- package/dist/macros/createCards/types.js +15 -0
- package/dist/macros/createCards/types.js.map +1 -0
- package/dist/macros/graph/index.d.ts +2 -6
- package/dist/macros/graph/index.js +14 -28
- package/dist/macros/graph/index.js.map +1 -1
- package/dist/macros/graph/types.d.ts +23 -0
- package/dist/macros/graph/types.js +15 -0
- package/dist/macros/graph/types.js.map +1 -0
- package/dist/macros/image/index.d.ts +8 -16
- package/dist/macros/image/index.js +36 -33
- package/dist/macros/image/index.js.map +1 -1
- package/dist/macros/image/types.d.ts +38 -0
- package/dist/macros/image/types.js +15 -0
- package/dist/macros/image/types.js.map +1 -0
- package/dist/macros/include/index.d.ts +1 -6
- package/dist/macros/include/index.js +4 -7
- package/dist/macros/include/index.js.map +1 -1
- package/dist/macros/include/types.d.ts +31 -0
- package/dist/macros/include/types.js +15 -0
- package/dist/macros/include/types.js.map +1 -0
- package/dist/macros/index.d.ts +1 -1
- package/dist/macros/index.js +2 -2
- package/dist/macros/index.js.map +1 -1
- package/dist/macros/percentage/index.d.ts +0 -6
- package/dist/macros/percentage/index.js.map +1 -1
- package/dist/macros/percentage/types.d.ts +31 -0
- package/dist/macros/percentage/types.js +15 -0
- package/dist/macros/percentage/types.js.map +1 -0
- package/dist/macros/report/index.d.ts +0 -3
- package/dist/macros/report/index.js +3 -6
- package/dist/macros/report/index.js.map +1 -1
- package/dist/macros/report/types.d.ts +19 -0
- package/dist/macros/report/types.js +15 -0
- package/dist/macros/report/types.js.map +1 -0
- package/dist/macros/scoreCard/index.d.ts +0 -6
- package/dist/macros/scoreCard/index.js.map +1 -1
- package/dist/macros/scoreCard/types.d.ts +31 -0
- package/dist/macros/scoreCard/types.js +15 -0
- package/dist/macros/scoreCard/types.js.map +1 -0
- package/dist/macros/types.d.ts +25 -0
- package/dist/macros/types.js +2 -0
- package/dist/macros/types.js.map +1 -0
- package/dist/macros/vega/index.d.ts +0 -4
- package/dist/macros/vega/index.js.map +1 -1
- package/dist/macros/vega/types.d.ts +20 -0
- package/dist/macros/vega/types.js +2 -0
- package/dist/macros/vega/types.js.map +1 -0
- package/dist/macros/vegalite/index.d.ts +0 -4
- package/dist/macros/vegalite/index.js.map +1 -1
- package/dist/macros/vegalite/types.d.ts +20 -0
- package/dist/macros/vegalite/types.js +15 -0
- package/dist/macros/vegalite/types.js.map +1 -0
- package/dist/macros/xref/index.d.ts +0 -3
- package/dist/macros/xref/index.js +5 -14
- package/dist/macros/xref/index.js.map +1 -1
- package/dist/macros/xref/types.d.ts +19 -0
- package/dist/macros/xref/types.js +15 -0
- package/dist/macros/xref/types.js.map +1 -0
- package/dist/module-manager.d.ts +16 -3
- package/dist/module-manager.js +55 -23
- package/dist/module-manager.js.map +1 -1
- package/dist/project-settings.d.ts +16 -3
- package/dist/project-settings.js +79 -14
- package/dist/project-settings.js.map +1 -1
- package/dist/resources/calculation-resource.d.ts +6 -33
- package/dist/resources/calculation-resource.js +11 -60
- package/dist/resources/calculation-resource.js.map +1 -1
- package/dist/resources/card-type-resource.d.ts +10 -22
- package/dist/resources/card-type-resource.js +46 -66
- package/dist/resources/card-type-resource.js.map +1 -1
- package/dist/resources/create-defaults.d.ts +3 -2
- package/dist/resources/create-defaults.js +3 -2
- package/dist/resources/create-defaults.js.map +1 -1
- package/dist/resources/field-type-resource.d.ts +8 -22
- package/dist/resources/field-type-resource.js +35 -60
- package/dist/resources/field-type-resource.js.map +1 -1
- package/dist/resources/file-resource.d.ts +14 -35
- package/dist/resources/file-resource.js +22 -301
- package/dist/resources/file-resource.js.map +1 -1
- package/dist/resources/folder-resource.d.ts +44 -66
- package/dist/resources/folder-resource.js +102 -149
- package/dist/resources/folder-resource.js.map +1 -1
- package/dist/resources/graph-model-resource.d.ts +9 -34
- package/dist/resources/graph-model-resource.js +18 -64
- package/dist/resources/graph-model-resource.js.map +1 -1
- package/dist/resources/graph-view-resource.d.ts +9 -29
- package/dist/resources/graph-view-resource.js +13 -48
- package/dist/resources/graph-view-resource.js.map +1 -1
- package/dist/resources/link-type-resource.d.ts +9 -23
- package/dist/resources/link-type-resource.js +11 -33
- package/dist/resources/link-type-resource.js.map +1 -1
- package/dist/resources/report-resource.d.ts +10 -23
- package/dist/resources/report-resource.js +20 -67
- package/dist/resources/report-resource.js.map +1 -1
- package/dist/resources/resource-object.d.ts +143 -23
- package/dist/resources/resource-object.js +369 -48
- package/dist/resources/resource-object.js.map +1 -1
- package/dist/resources/template-resource.d.ts +10 -17
- package/dist/resources/template-resource.js +19 -27
- package/dist/resources/template-resource.js.map +1 -1
- package/dist/resources/workflow-resource.d.ts +9 -25
- package/dist/resources/workflow-resource.js +25 -55
- package/dist/resources/workflow-resource.js.map +1 -1
- package/dist/utils/card-utils.d.ts +69 -19
- package/dist/utils/card-utils.js +179 -30
- package/dist/utils/card-utils.js.map +1 -1
- package/dist/utils/clingo-fact-builder.d.ts +25 -14
- package/dist/utils/clingo-fact-builder.js +27 -5
- package/dist/utils/clingo-fact-builder.js.map +1 -1
- package/dist/utils/clingo-facts.js +14 -7
- package/dist/utils/clingo-facts.js.map +1 -1
- package/dist/utils/clingo-parser.js +1 -1
- package/dist/utils/clingo-parser.js.map +1 -1
- package/dist/utils/constants.d.ts +2 -0
- package/dist/utils/constants.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/csv.js +1 -1
- package/dist/utils/csv.js.map +1 -1
- package/dist/utils/resource-utils.d.ts +1 -0
- package/dist/utils/resource-utils.js +2 -1
- package/dist/utils/resource-utils.js.map +1 -1
- package/package.json +11 -11
- package/src/card-metadata-updater.ts +9 -7
- package/src/command-handler.ts +35 -23
- package/src/command-manager.ts +32 -19
- package/src/commands/create.ts +59 -160
- package/src/commands/edit.ts +16 -132
- package/src/commands/export.ts +71 -81
- package/src/commands/import.ts +26 -18
- package/src/commands/move.ts +143 -179
- package/src/commands/remove.ts +20 -59
- package/src/commands/rename.ts +45 -156
- package/src/commands/show.ts +153 -211
- package/src/commands/transition.ts +53 -58
- package/src/commands/update.ts +44 -23
- package/src/commands/validate.ts +108 -82
- package/src/containers/card-container.ts +200 -360
- package/src/containers/project/calculation-engine.ts +81 -105
- package/src/containers/project/card-cache.ts +497 -0
- package/src/containers/project/project-paths.ts +21 -13
- package/src/containers/project/resource-cache.ts +648 -0
- package/src/containers/project/resource-handler.ts +265 -0
- package/src/containers/project.ts +551 -693
- package/src/containers/template.ts +129 -142
- package/src/index.ts +1 -0
- package/src/interfaces/folder-content-interfaces.ts +14 -7
- package/src/interfaces/macros.ts +2 -0
- package/src/interfaces/project-interfaces.ts +14 -7
- package/src/interfaces/resource-interfaces.ts +30 -27
- package/src/macros/createCards/index.ts +1 -12
- package/src/macros/createCards/types.ts +46 -0
- package/src/macros/graph/index.ts +27 -52
- package/src/macros/graph/types.ts +24 -0
- package/src/macros/image/index.ts +50 -61
- package/src/macros/image/types.ts +39 -0
- package/src/macros/include/index.ts +6 -15
- package/src/macros/include/types.ts +32 -0
- package/src/macros/index.ts +2 -2
- package/src/macros/percentage/index.ts +1 -7
- package/src/macros/percentage/types.ts +32 -0
- package/src/macros/report/index.ts +4 -13
- package/src/macros/report/types.ts +20 -0
- package/src/macros/scoreCard/index.ts +1 -7
- package/src/macros/scoreCard/types.ts +32 -0
- package/src/macros/types.ts +48 -0
- package/src/macros/vega/index.ts +1 -4
- package/src/macros/vega/types.ts +21 -0
- package/src/macros/vegalite/index.ts +1 -4
- package/src/macros/vegalite/types.ts +22 -0
- package/src/macros/xref/index.ts +6 -20
- package/src/macros/xref/types.ts +20 -0
- package/src/module-manager.ts +79 -22
- package/src/project-settings.ts +84 -15
- package/src/resources/calculation-resource.ts +21 -91
- package/src/resources/card-type-resource.ts +74 -109
- package/src/resources/create-defaults.ts +3 -2
- package/src/resources/field-type-resource.ts +61 -104
- package/src/resources/file-resource.ts +33 -441
- package/src/resources/folder-resource.ts +130 -207
- package/src/resources/graph-model-resource.ts +36 -95
- package/src/resources/graph-view-resource.ts +28 -70
- package/src/resources/link-type-resource.ts +23 -53
- package/src/resources/report-resource.ts +34 -96
- package/src/resources/resource-object.ts +511 -66
- package/src/resources/template-resource.ts +32 -44
- package/src/resources/workflow-resource.ts +42 -85
- package/src/utils/card-utils.ts +217 -31
- package/src/utils/clingo-fact-builder.ts +28 -16
- package/src/utils/clingo-facts.ts +16 -7
- package/src/utils/clingo-parser.ts +1 -1
- package/src/utils/constants.ts +6 -0
- package/src/utils/csv.ts +1 -1
- package/src/utils/resource-utils.ts +2 -1
- package/dist/containers/project/resource-collector.d.ts +0 -87
- package/dist/containers/project/resource-collector.js +0 -337
- package/dist/containers/project/resource-collector.js.map +0 -1
- package/src/containers/project/resource-collector.ts +0 -396
|
@@ -1,396 +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
|
-
|
|
15
|
-
import { type Dirent, readdirSync } from 'node:fs';
|
|
16
|
-
import { readdir } from 'node:fs/promises';
|
|
17
|
-
import { extname, join } from 'node:path';
|
|
18
|
-
|
|
19
|
-
import type { Project } from '../project.js';
|
|
20
|
-
import type { ProjectPaths } from './project-paths.js';
|
|
21
|
-
import type {
|
|
22
|
-
Resource,
|
|
23
|
-
ResourceFolderType,
|
|
24
|
-
} from '../../interfaces/project-interfaces.js';
|
|
25
|
-
import { resourceName } from '../../utils/resource-utils.js';
|
|
26
|
-
import { stripExtension } from '../../utils/file-utils.js';
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Defines where resources are collected from.
|
|
30
|
-
* all - everywhere
|
|
31
|
-
* importOnly - only from imported modules
|
|
32
|
-
* localOnly - only from the project itself; excluding imported modules
|
|
33
|
-
*/
|
|
34
|
-
export enum ResourcesFrom {
|
|
35
|
-
all = 'all',
|
|
36
|
-
importedOnly = 'imported',
|
|
37
|
-
localOnly = 'local',
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// This class collects resources that have these types of files.
|
|
41
|
-
const allowedExtensions = ['.lp', '.json'];
|
|
42
|
-
|
|
43
|
-
// Helper class to contain collected resources.
|
|
44
|
-
class ResourceCollection {
|
|
45
|
-
public calculations: Resource[] = [];
|
|
46
|
-
public cardTypes: Resource[] = [];
|
|
47
|
-
public fieldTypes: Resource[] = [];
|
|
48
|
-
public graphModels: Resource[] = [];
|
|
49
|
-
public graphViews: Resource[] = [];
|
|
50
|
-
public linkTypes: Resource[] = [];
|
|
51
|
-
public reports: Resource[] = [];
|
|
52
|
-
public templates: Resource[] = [];
|
|
53
|
-
public workflows: Resource[] = [];
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Returns resource array of a give type.
|
|
57
|
-
* @param type Resource array type to return.
|
|
58
|
-
* @returns resource array of a give type.
|
|
59
|
-
*/
|
|
60
|
-
public resourceArray(
|
|
61
|
-
type: ResourceFolderType,
|
|
62
|
-
moduleName?: string,
|
|
63
|
-
): Resource[] {
|
|
64
|
-
let resources: Resource[] = [];
|
|
65
|
-
|
|
66
|
-
if (type === 'calculations') resources = this.calculations;
|
|
67
|
-
else if (type === 'cardTypes') resources = this.cardTypes;
|
|
68
|
-
else if (type === 'fieldTypes') resources = this.fieldTypes;
|
|
69
|
-
else if (type === 'graphViews') resources = this.graphViews;
|
|
70
|
-
else if (type === 'graphModels') resources = this.graphModels;
|
|
71
|
-
else if (type === 'linkTypes') resources = this.linkTypes;
|
|
72
|
-
else if (type === 'reports') resources = this.reports;
|
|
73
|
-
else if (type === 'templates') resources = this.templates;
|
|
74
|
-
else if (type === 'workflows') resources = this.workflows;
|
|
75
|
-
else throw new Error(`Unknown resource type '${type}'`);
|
|
76
|
-
|
|
77
|
-
if (moduleName) {
|
|
78
|
-
resources = resources.filter((item) => {
|
|
79
|
-
const { prefix } = resourceName(item.name);
|
|
80
|
-
return moduleName === prefix;
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return resources;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* This class handles local and modules resources.
|
|
90
|
-
*/
|
|
91
|
-
export class ResourceCollector {
|
|
92
|
-
private local: ResourceCollection = new ResourceCollection();
|
|
93
|
-
private modules: ResourceCollection = new ResourceCollection();
|
|
94
|
-
private modulesCollected: boolean = false;
|
|
95
|
-
private paths: ProjectPaths;
|
|
96
|
-
|
|
97
|
-
constructor(private project: Project) {
|
|
98
|
-
this.paths = this.project.paths;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Add resources of a given type to an array.
|
|
102
|
-
private async addResources(
|
|
103
|
-
resources: Dirent[],
|
|
104
|
-
requestedType: ResourceFolderType,
|
|
105
|
-
): Promise<Resource[]> {
|
|
106
|
-
if (requestedType === 'modules') {
|
|
107
|
-
return resources.map((resource) => ({
|
|
108
|
-
name: resource.name,
|
|
109
|
-
path: resource.parentPath,
|
|
110
|
-
}));
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const isValidFile = (item: Dirent): boolean =>
|
|
114
|
-
item.isFile() && allowedExtensions.includes(extname(item.name));
|
|
115
|
-
|
|
116
|
-
const processResource = async (resource: Dirent): Promise<Resource[]> => {
|
|
117
|
-
const resourcePath = join(
|
|
118
|
-
this.paths.modulesFolder,
|
|
119
|
-
resource.name,
|
|
120
|
-
requestedType,
|
|
121
|
-
);
|
|
122
|
-
|
|
123
|
-
try {
|
|
124
|
-
const files = await readdir(resourcePath, { withFileTypes: true });
|
|
125
|
-
return files.filter(isValidFile).map((item) => ({
|
|
126
|
-
name: `${resource.name}/${requestedType}/${stripExtension(item.name)}`,
|
|
127
|
-
path: item.parentPath,
|
|
128
|
-
}));
|
|
129
|
-
} catch {
|
|
130
|
-
return [];
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
const results = await Promise.all(resources.map(processResource));
|
|
135
|
-
|
|
136
|
-
return results.flat();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Collects all module resources.
|
|
140
|
-
private async addModuleResources() {
|
|
141
|
-
if (!this.modulesCollected) {
|
|
142
|
-
const moduleDirectories = await readdir(this.paths.modulesFolder, {
|
|
143
|
-
withFileTypes: true,
|
|
144
|
-
});
|
|
145
|
-
const modules = moduleDirectories.filter((item) => item.isDirectory());
|
|
146
|
-
|
|
147
|
-
this.modules.calculations = [
|
|
148
|
-
...(await this.addResources(modules, 'calculations')),
|
|
149
|
-
];
|
|
150
|
-
this.modules.cardTypes = [
|
|
151
|
-
...(await this.addResources(modules, 'cardTypes')),
|
|
152
|
-
];
|
|
153
|
-
this.modules.fieldTypes = [
|
|
154
|
-
...(await this.addResources(modules, 'fieldTypes')),
|
|
155
|
-
];
|
|
156
|
-
this.modules.graphModels = [
|
|
157
|
-
...(await this.addResources(modules, 'graphModels')),
|
|
158
|
-
];
|
|
159
|
-
this.modules.graphViews = [
|
|
160
|
-
...(await this.addResources(modules, 'graphViews')),
|
|
161
|
-
];
|
|
162
|
-
this.modules.linkTypes = [
|
|
163
|
-
...(await this.addResources(modules, 'linkTypes')),
|
|
164
|
-
];
|
|
165
|
-
this.modules.reports = [...(await this.addResources(modules, 'reports'))];
|
|
166
|
-
this.modules.templates = [
|
|
167
|
-
...(await this.addResources(modules, 'templates')),
|
|
168
|
-
];
|
|
169
|
-
this.modules.workflows = [
|
|
170
|
-
...(await this.addResources(modules, 'workflows')),
|
|
171
|
-
];
|
|
172
|
-
this.modulesCollected = true;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Adds a resource type from all modules.
|
|
177
|
-
private async addResourcesFromModules(
|
|
178
|
-
type: ResourceFolderType,
|
|
179
|
-
moduleName?: string,
|
|
180
|
-
): Promise<Resource[]> {
|
|
181
|
-
try {
|
|
182
|
-
// 'modules' is a bit special; it is collected separately from actual resources.
|
|
183
|
-
if (type === 'modules') {
|
|
184
|
-
const moduleDirectories = await readdir(this.paths.modulesFolder, {
|
|
185
|
-
withFileTypes: true,
|
|
186
|
-
});
|
|
187
|
-
const modules = moduleDirectories.filter((item) => item.isDirectory());
|
|
188
|
-
return [...(await this.addResources(modules, 'modules'))];
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
await this.addModuleResources();
|
|
192
|
-
return this.modules.resourceArray(type, moduleName);
|
|
193
|
-
} catch {
|
|
194
|
-
return [];
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Joins local resources and module resources together to one array.
|
|
199
|
-
private joinResources(
|
|
200
|
-
from: ResourcesFrom,
|
|
201
|
-
localCollection: Resource[],
|
|
202
|
-
moduleCollection: Resource[],
|
|
203
|
-
) {
|
|
204
|
-
if (from === ResourcesFrom.localOnly) {
|
|
205
|
-
return localCollection;
|
|
206
|
-
}
|
|
207
|
-
if (from === ResourcesFrom.importedOnly) {
|
|
208
|
-
return moduleCollection;
|
|
209
|
-
}
|
|
210
|
-
return [...localCollection, ...moduleCollection];
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// Returns local resources of a given type.
|
|
214
|
-
private localResources(type: ResourceFolderType) {
|
|
215
|
-
if (type === 'modules') {
|
|
216
|
-
return [];
|
|
217
|
-
} else {
|
|
218
|
-
return this.local.resourceArray(type);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Collects certain kinds of resources.
|
|
223
|
-
private resourcesSync(type: ResourceFolderType): Resource[] {
|
|
224
|
-
const resourceFolder = this.project.paths.resourcePath(type);
|
|
225
|
-
const resources: Resource[] = [];
|
|
226
|
-
let entries = [];
|
|
227
|
-
try {
|
|
228
|
-
entries = readdirSync(resourceFolder, { withFileTypes: true });
|
|
229
|
-
} catch {
|
|
230
|
-
return [];
|
|
231
|
-
}
|
|
232
|
-
resources.push(
|
|
233
|
-
...entries
|
|
234
|
-
.filter(
|
|
235
|
-
(entry) =>
|
|
236
|
-
entry.isFile() && allowedExtensions.includes(extname(entry.name)),
|
|
237
|
-
)
|
|
238
|
-
.map((entry) => {
|
|
239
|
-
entry.name = stripExtension(entry.name);
|
|
240
|
-
return {
|
|
241
|
-
name: `${this.project.projectPrefix}/${type}/${entry.name}`,
|
|
242
|
-
path: entry.parentPath,
|
|
243
|
-
};
|
|
244
|
-
}),
|
|
245
|
-
);
|
|
246
|
-
|
|
247
|
-
return resources;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Collects all local resources.
|
|
252
|
-
*/
|
|
253
|
-
public collectLocalResources() {
|
|
254
|
-
const resourceTypes = [
|
|
255
|
-
'calculations',
|
|
256
|
-
'cardTypes',
|
|
257
|
-
'fieldTypes',
|
|
258
|
-
'graphModels',
|
|
259
|
-
'graphViews',
|
|
260
|
-
'linkTypes',
|
|
261
|
-
'reports',
|
|
262
|
-
'templates',
|
|
263
|
-
'workflows',
|
|
264
|
-
] as const;
|
|
265
|
-
|
|
266
|
-
resourceTypes.forEach((type) => {
|
|
267
|
-
this.local[type] = this.resourcesSync(type);
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Collect specific resource from modules.
|
|
273
|
-
* @param type Type of resource (e.g. 'templates').
|
|
274
|
-
* @param moduleName Name of the module to collect resources from
|
|
275
|
-
* @returns array of collected items.
|
|
276
|
-
*/
|
|
277
|
-
public async collectResourcesFromModules(
|
|
278
|
-
type: ResourceFolderType,
|
|
279
|
-
moduleName?: string,
|
|
280
|
-
) {
|
|
281
|
-
return (await this.addResourcesFromModules(type, moduleName)).map((item) =>
|
|
282
|
-
stripExtension(item.name),
|
|
283
|
-
);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Add a given 'resource' to the local resource arrays.
|
|
288
|
-
* @param resource Resource to add.
|
|
289
|
-
*/
|
|
290
|
-
public add(resource: Resource) {
|
|
291
|
-
// Helper to avoid adding duplicate entries.
|
|
292
|
-
function addItem(array: Resource[], item: Resource) {
|
|
293
|
-
if (!array.includes(item)) {
|
|
294
|
-
item.name = stripExtension(item.name);
|
|
295
|
-
array.push(item);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
const { type } = resourceName(resource.name);
|
|
300
|
-
switch (type) {
|
|
301
|
-
case 'calculations':
|
|
302
|
-
addItem(this.local.calculations, resource);
|
|
303
|
-
break;
|
|
304
|
-
case 'cardTypes':
|
|
305
|
-
addItem(this.local.cardTypes, resource);
|
|
306
|
-
break;
|
|
307
|
-
case 'fieldTypes':
|
|
308
|
-
addItem(this.local.fieldTypes, resource);
|
|
309
|
-
break;
|
|
310
|
-
case 'graphModels':
|
|
311
|
-
addItem(this.local.graphModels, resource);
|
|
312
|
-
break;
|
|
313
|
-
case 'graphViews':
|
|
314
|
-
addItem(this.local.graphViews, resource);
|
|
315
|
-
break;
|
|
316
|
-
case 'linkTypes':
|
|
317
|
-
addItem(this.local.linkTypes, resource);
|
|
318
|
-
break;
|
|
319
|
-
case 'reports':
|
|
320
|
-
addItem(this.local.reports, resource);
|
|
321
|
-
break;
|
|
322
|
-
case 'templates':
|
|
323
|
-
addItem(this.local.templates, resource);
|
|
324
|
-
break;
|
|
325
|
-
case 'workflows':
|
|
326
|
-
addItem(this.local.workflows, resource);
|
|
327
|
-
break;
|
|
328
|
-
default: {
|
|
329
|
-
throw new Error(`Resource type '${type}' not handled in 'addResource'`);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Re-collects local resources.
|
|
336
|
-
*/
|
|
337
|
-
public changed() {
|
|
338
|
-
this.collectLocalResources();
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* Re-collects imported module resources.
|
|
343
|
-
*/
|
|
344
|
-
public async moduleImported() {
|
|
345
|
-
this.modulesCollected = false;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
/**
|
|
349
|
-
* Removes a resource from Project.
|
|
350
|
-
* @param resource Resource to remove.
|
|
351
|
-
* @returns the modified array.
|
|
352
|
-
*/
|
|
353
|
-
public remove(resource: Resource) {
|
|
354
|
-
const { type } = resourceName(resource.name);
|
|
355
|
-
const arrayToModify = this.local
|
|
356
|
-
.resourceArray(type as ResourceFolderType)
|
|
357
|
-
.filter((item) => item.name !== resource.name);
|
|
358
|
-
this.collectLocalResources();
|
|
359
|
-
return arrayToModify;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* Checks if resource of 'type' with 'name' exists.
|
|
364
|
-
* @param type Type of resource (e.g. 'templates').
|
|
365
|
-
* @param name Name of the resource.
|
|
366
|
-
* @returns true, if resource exits, false otherwise.
|
|
367
|
-
*/
|
|
368
|
-
public async resourceExists(
|
|
369
|
-
type: ResourceFolderType,
|
|
370
|
-
name: string,
|
|
371
|
-
): Promise<boolean> {
|
|
372
|
-
if (!name) {
|
|
373
|
-
return false;
|
|
374
|
-
}
|
|
375
|
-
return (await this.resources(type)).some((item) => item.name === name);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* Returns resources of 'type'. Returned resources are either local, or from modules or all of them.
|
|
380
|
-
* @param type Type of resource (e.g. 'templates').
|
|
381
|
-
* @param from Defines where resources are collected from.
|
|
382
|
-
* @returns Array of resources.
|
|
383
|
-
*/
|
|
384
|
-
public async resources(
|
|
385
|
-
type: ResourceFolderType,
|
|
386
|
-
from: ResourcesFrom = ResourcesFrom.all,
|
|
387
|
-
): Promise<Resource[]> {
|
|
388
|
-
const moduleResources =
|
|
389
|
-
from !== ResourcesFrom.localOnly
|
|
390
|
-
? await this.addResourcesFromModules(type)
|
|
391
|
-
: [];
|
|
392
|
-
|
|
393
|
-
const localResourcesOfType = this.localResources(type);
|
|
394
|
-
return this.joinResources(from, localResourcesOfType, moduleResources);
|
|
395
|
-
}
|
|
396
|
-
}
|