@codenotch/codenotch.cli 1.0.35 → 1.0.37
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/README.md +2 -2
- package/dist/commands/generate/app.d.ts +2 -0
- package/dist/commands/generate/app.js +45 -0
- package/dist/commands/generate/app.js.map +1 -0
- package/dist/commands/generate/appmanifest.d.ts +2 -0
- package/dist/commands/generate/appmanifest.js +34 -0
- package/dist/commands/generate/appmanifest.js.map +1 -0
- package/dist/commands/generate/dbcontext.d.ts +2 -0
- package/dist/commands/generate/dbcontext.js +32 -0
- package/dist/commands/generate/dbcontext.js.map +1 -0
- package/dist/commands/generate/i18n.d.ts +2 -0
- package/dist/commands/generate/i18n.js +29 -0
- package/dist/commands/generate/i18n.js.map +1 -0
- package/dist/commands/generate/index.d.ts +2 -0
- package/dist/commands/generate/index.js +23 -0
- package/dist/commands/generate/index.js.map +1 -0
- package/dist/commands/generate/manifest.d.ts +2 -0
- package/dist/commands/generate/manifest.js +29 -0
- package/dist/commands/generate/manifest.js.map +1 -0
- package/dist/commands/generate/openapi.d.ts +2 -0
- package/dist/commands/generate/openapi.js +32 -0
- package/dist/commands/generate/openapi.js.map +1 -0
- package/dist/commands/generate/pkg.d.ts +2 -0
- package/dist/commands/generate/pkg.js +34 -0
- package/dist/commands/generate/pkg.js.map +1 -0
- package/dist/commands/generate/shared.d.ts +17 -0
- package/dist/commands/generate/shared.js +70 -0
- package/dist/commands/generate/shared.js.map +1 -0
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/project/new.js +107 -187
- package/dist/commands/project/new.js.map +1 -1
- package/dist/commands/react/build.js +11 -5
- package/dist/commands/react/build.js.map +1 -1
- package/dist/commands/react/clean.d.ts +2 -0
- package/dist/commands/react/clean.js +46 -0
- package/dist/commands/react/clean.js.map +1 -0
- package/dist/commands/react/dev.d.ts +2 -0
- package/dist/commands/react/dev.js +27 -0
- package/dist/commands/react/dev.js.map +1 -0
- package/dist/commands/react/index.js +5 -1
- package/dist/commands/react/index.js.map +1 -1
- package/dist/commands/react/serve.js +33 -4
- package/dist/commands/react/serve.js.map +1 -1
- package/dist/commands/react/shared.d.ts +21 -0
- package/dist/commands/react/shared.js +80 -0
- package/dist/commands/react/shared.js.map +1 -0
- package/dist/commands/system/info.js +0 -7
- package/dist/commands/system/info.js.map +1 -1
- package/dist/commands/validation/ValidationUtils.d.ts +3 -13
- package/dist/commands/validation/ValidationUtils.js +5 -58
- package/dist/commands/validation/ValidationUtils.js.map +1 -1
- package/dist/commands/validation/files/AppManifestValidator.js +5 -20
- package/dist/commands/validation/files/AppManifestValidator.js.map +1 -1
- package/dist/commands/validation/files/I18nValidator.d.ts +24 -0
- package/dist/commands/validation/files/I18nValidator.js +190 -5
- package/dist/commands/validation/files/I18nValidator.js.map +1 -1
- package/dist/commands/validation/files/{BpmnValidator.d.ts → ProjectManifestValidator.d.ts} +1 -1
- package/dist/commands/validation/files/ProjectManifestValidator.js +31 -0
- package/dist/commands/validation/files/ProjectManifestValidator.js.map +1 -0
- package/dist/commands/validation/files/ScriptValidator.d.ts +6 -2
- package/dist/commands/validation/files/ScriptValidator.js +1 -1
- package/dist/commands/validation/files/ScriptValidator.js.map +1 -1
- package/dist/commands/validation/validate.js +15 -46
- package/dist/commands/validation/validate.js.map +1 -1
- package/dist/models/Codenotch.d.ts +0 -205
- package/dist/models/Codenotch.js +0 -211
- package/dist/models/Codenotch.js.map +1 -1
- package/dist/utils/BuildUtils.d.ts +66 -28
- package/dist/utils/BuildUtils.js +292 -330
- package/dist/utils/BuildUtils.js.map +1 -1
- package/dist/utils/ConsoleUtils.d.ts +13 -0
- package/dist/utils/ConsoleUtils.js +50 -0
- package/dist/utils/ConsoleUtils.js.map +1 -1
- package/dist/utils/DbSchemaUtils.d.ts +49 -0
- package/dist/utils/DbSchemaUtils.js +246 -0
- package/dist/utils/DbSchemaUtils.js.map +1 -0
- package/dist/utils/FileUtils.d.ts +104 -15
- package/dist/utils/FileUtils.js +285 -100
- package/dist/utils/FileUtils.js.map +1 -1
- package/dist/utils/GitHubAuthUtils.js.map +1 -1
- package/dist/utils/I18nTsUtils.d.ts +66 -0
- package/dist/utils/I18nTsUtils.js +221 -0
- package/dist/utils/I18nTsUtils.js.map +1 -0
- package/dist/utils/ManifestUtils.d.ts +24 -0
- package/dist/utils/ManifestUtils.js +53 -0
- package/dist/utils/ManifestUtils.js.map +1 -0
- package/dist/utils/OpenApiUtils.d.ts +81 -0
- package/dist/utils/OpenApiUtils.js +123 -0
- package/dist/utils/OpenApiUtils.js.map +1 -0
- package/dist/utils/ProjectCompilationUtils.d.ts +3 -30
- package/dist/utils/ProjectCompilationUtils.js +26 -760
- package/dist/utils/ProjectCompilationUtils.js.map +1 -1
- package/dist/utils/ProjectGeneratorUtils.d.ts +35 -0
- package/dist/utils/ProjectGeneratorUtils.js +119 -0
- package/dist/utils/ProjectGeneratorUtils.js.map +1 -0
- package/dist/utils/ProjectTemplates.d.ts +102 -0
- package/dist/utils/ProjectTemplates.js +284 -0
- package/dist/utils/ProjectTemplates.js.map +1 -0
- package/dist/utils/ProjectUtils.d.ts +217 -4
- package/dist/utils/ProjectUtils.js +386 -50
- package/dist/utils/ProjectUtils.js.map +1 -1
- package/dist/utils/RuntimeUtils.js +14 -8
- package/dist/utils/RuntimeUtils.js.map +1 -1
- package/dist/utils/ScriptDeclarationUtils.d.ts +169 -0
- package/dist/utils/ScriptDeclarationUtils.js +398 -0
- package/dist/utils/ScriptDeclarationUtils.js.map +1 -0
- package/dist/utils/ServeUtils.d.ts +0 -1
- package/dist/utils/ServeUtils.js +11 -29
- package/dist/utils/ServeUtils.js.map +1 -1
- package/dist/utils/ShellUtils.d.ts +6 -0
- package/dist/utils/ShellUtils.js +13 -0
- package/dist/utils/ShellUtils.js.map +1 -1
- package/dist/utils/TemplateUtils.d.ts +62 -0
- package/dist/utils/TemplateUtils.js +218 -0
- package/dist/utils/TemplateUtils.js.map +1 -0
- package/dist/utils/TypeSchemaUtils.d.ts +42 -0
- package/dist/utils/TypeSchemaUtils.js +171 -0
- package/dist/utils/TypeSchemaUtils.js.map +1 -0
- package/package.json +3 -3
- package/dist/commands/validation/files/BpmnValidator.js +0 -32
- package/dist/commands/validation/files/BpmnValidator.js.map +0 -1
- package/dist/commands/validation/files/DbSchemaValidator.d.ts +0 -5
- package/dist/commands/validation/files/DbSchemaValidator.js +0 -16
- package/dist/commands/validation/files/DbSchemaValidator.js.map +0 -1
- package/dist/commands/validation/files/DocumentValidator.d.ts +0 -5
- package/dist/commands/validation/files/DocumentValidator.js +0 -12
- package/dist/commands/validation/files/DocumentValidator.js.map +0 -1
- package/dist/commands/validation/files/ManifestCacheValidator.d.ts +0 -5
- package/dist/commands/validation/files/ManifestCacheValidator.js +0 -121
- package/dist/commands/validation/files/ManifestCacheValidator.js.map +0 -1
- package/dist/commands/validation/files/ManifestValidator.d.ts +0 -5
- package/dist/commands/validation/files/ManifestValidator.js +0 -14
- package/dist/commands/validation/files/ManifestValidator.js.map +0 -1
- package/dist/commands/validation/files/TableValidator.d.ts +0 -5
- package/dist/commands/validation/files/TableValidator.js +0 -19
- package/dist/commands/validation/files/TableValidator.js.map +0 -1
- package/dist/models/DbModels.d.ts +0 -221
- package/dist/models/DbModels.js +0 -130
- package/dist/models/DbModels.js.map +0 -1
- package/dist/models/OpenApiModels.d.ts +0 -115
- package/dist/models/OpenApiModels.js +0 -103
- package/dist/models/OpenApiModels.js.map +0 -1
- package/dist/utils/I18nUtils.d.ts +0 -9
- package/dist/utils/I18nUtils.js +0 -54
- package/dist/utils/I18nUtils.js.map +0 -1
- package/dist/utils/OpenAPIUtils.d.ts +0 -33
- package/dist/utils/OpenAPIUtils.js +0 -279
- package/dist/utils/OpenAPIUtils.js.map +0 -1
|
@@ -9,6 +9,20 @@ const node_os_1 = __importDefault(require("node:os"));
|
|
|
9
9
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
10
10
|
const FileUtils_1 = __importDefault(require("./FileUtils"));
|
|
11
11
|
const ProjectCompilationUtils_1 = __importDefault(require("./ProjectCompilationUtils"));
|
|
12
|
+
const ScriptDeclarationUtils_1 = __importDefault(require("./ScriptDeclarationUtils"));
|
|
13
|
+
const I18nTsUtils_1 = __importDefault(require("./I18nTsUtils"));
|
|
14
|
+
const papaparse_1 = __importDefault(require("papaparse"));
|
|
15
|
+
/** Module the process factories are imported from */
|
|
16
|
+
const PROCESS_MODULE = '@codenotch/process';
|
|
17
|
+
/** Module the table factories are imported from */
|
|
18
|
+
const ORM_MODULE = '@codenotch/orm';
|
|
19
|
+
/** Property of a table declaration holding its columns */
|
|
20
|
+
const TABLE_COLUMNS_PROPERTY = 'properties';
|
|
21
|
+
/**
|
|
22
|
+
* Helpers a document row type can be built with. 'InferDocument' is the counterpart of
|
|
23
|
+
* 'InferEntity', and the latter is accepted too in case both kinds share the same helper.
|
|
24
|
+
*/
|
|
25
|
+
const DOCUMENT_TYPE_HELPERS = ['InferDocument', 'InferEntity'];
|
|
12
26
|
class ProjectUtils {
|
|
13
27
|
/**
|
|
14
28
|
* Compile and package the project to prepare it for deployment
|
|
@@ -22,7 +36,6 @@ class ProjectUtils {
|
|
|
22
36
|
await FileUtils_1.default.copyFolder(sourcePath, tempRoot, ['.git', 'node_modules', 'dist', 'build', 'out']);
|
|
23
37
|
// Compile project
|
|
24
38
|
// Some files need to be modified a bit in order to work when deployed
|
|
25
|
-
// For example auml files have to include their i18n data
|
|
26
39
|
const compilation = await ProjectCompilationUtils_1.default.compileProject(tempRoot);
|
|
27
40
|
if (compilation.errors.length > 0) {
|
|
28
41
|
console.error(chalk_1.default.red("Compilation failed with errors:"));
|
|
@@ -33,7 +46,7 @@ class ProjectUtils {
|
|
|
33
46
|
console.warn(chalk_1.default.yellow("Ignoring compilation errors and proceeding with packaging..."));
|
|
34
47
|
}
|
|
35
48
|
// Zip the project folder
|
|
36
|
-
|
|
49
|
+
FileUtils_1.default.zipFolder(tempRoot, outputPath);
|
|
37
50
|
return compilation;
|
|
38
51
|
}
|
|
39
52
|
catch (e) {
|
|
@@ -41,14 +54,14 @@ class ProjectUtils {
|
|
|
41
54
|
}
|
|
42
55
|
finally {
|
|
43
56
|
// Clean up temp folder
|
|
44
|
-
await FileUtils_1.default.
|
|
57
|
+
await FileUtils_1.default.deleteRecursively(tempRoot);
|
|
45
58
|
}
|
|
46
59
|
}
|
|
47
60
|
// Check if the manifest is full (meaning with process, apps, etc...) or if it's a minimal manifest that only contains metadata, this can be used to determine if the project has been compiled or not
|
|
48
|
-
static async isManifestCompiled(projectPath) {
|
|
49
|
-
const manifest = await ProjectUtils.getManifest(projectPath);
|
|
61
|
+
/*static async isManifestCompiled(projectPath: string): Promise<boolean> {
|
|
62
|
+
const manifest = await ProjectUtils.getManifest(projectPath) as IExtendedScenarioProjectManifest;
|
|
50
63
|
return !!(manifest.processes);
|
|
51
|
-
}
|
|
64
|
+
}*/
|
|
52
65
|
static getCollectionCount(value) {
|
|
53
66
|
return Array.isArray(value) ? value.length : 0;
|
|
54
67
|
}
|
|
@@ -63,52 +76,375 @@ class ProjectUtils {
|
|
|
63
76
|
return manifest.serviceName ?? manifest.projectName.toLowerCase();
|
|
64
77
|
}
|
|
65
78
|
static async inspectProject(projectPath) {
|
|
66
|
-
//TODO will only work on a compiler project since we rely on the full manifest
|
|
67
|
-
const manifest = await ProjectUtils.getManifest(projectPath);
|
|
68
|
-
const projectName = manifest.projectName || "(unknown)";
|
|
69
|
-
const serviceName = manifest.serviceName || projectName.toLowerCase();
|
|
70
|
-
const version = manifest.version || "(unknown)";
|
|
71
|
-
const index = manifest.index || "(not set)";
|
|
72
|
-
const languages = ProjectUtils.getCollectionCount(manifest.languages);
|
|
73
|
-
const packages = manifest.packages ? Object.keys(manifest.packages).length : 0;
|
|
74
|
-
const dependencies = ProjectUtils.getCollectionCount(manifest.dependencies);
|
|
75
|
-
const roles = ProjectUtils.getCollectionCount(manifest.roles);
|
|
76
|
-
const postInstallProcesses = ProjectUtils.getCollectionCount(manifest.postInstallationProcesses);
|
|
77
|
-
const bpmnActivities = ProjectUtils.getCollectionCount(manifest.bpmnActivities);
|
|
78
|
-
const counters = [
|
|
79
|
-
{ label: "apis", count: ProjectUtils.getCollectionCount(manifest.apis) },
|
|
80
|
-
{ label: "applications", count: ProjectUtils.getCollectionCount(manifest.applications) },
|
|
81
|
-
{ label: "reactApplications", count: ProjectUtils.getCollectionCount(manifest.reactApplications) },
|
|
82
|
-
{ label: "expressComponents", count: ProjectUtils.getCollectionCount(manifest.expressComponents) },
|
|
83
|
-
{ label: "scripts", count: ProjectUtils.getCollectionCount(manifest.scripts) },
|
|
84
|
-
{ label: "pdfs", count: ProjectUtils.getCollectionCount(manifest.pdfs) },
|
|
85
|
-
{ label: "emails", count: ProjectUtils.getCollectionCount(manifest.emails) },
|
|
86
|
-
{ label: "htmls", count: ProjectUtils.getCollectionCount(manifest.htmls) },
|
|
87
|
-
{ label: "processes", count: ProjectUtils.getCollectionCount(manifest.processes) },
|
|
88
|
-
{ label: "tableDataSources", count: ProjectUtils.getCollectionCount(manifest.tableDataSources) },
|
|
89
|
-
{ label: "documentDataSources", count: ProjectUtils.getCollectionCount(manifest.documentDataSources) },
|
|
90
|
-
];
|
|
91
|
-
const maxLabelLength = counters.reduce((max, c) => Math.max(max, c.label.length), 0);
|
|
92
79
|
console.log(chalk_1.default.blue("Project inspection"));
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
console.log(`-
|
|
80
|
+
let manifest;
|
|
81
|
+
try {
|
|
82
|
+
manifest = await ProjectUtils.getManifest(projectPath);
|
|
83
|
+
const projectName = manifest.projectName || "(unknown)";
|
|
84
|
+
const serviceName = manifest.serviceName || projectName.toLowerCase();
|
|
85
|
+
const version = manifest.version || "(unknown)";
|
|
86
|
+
const index = manifest.index || "(not set)";
|
|
87
|
+
const languages = ProjectUtils.getCollectionCount(manifest.languages);
|
|
88
|
+
const roles = ProjectUtils.getCollectionCount(manifest.roles);
|
|
89
|
+
console.log(`${chalk_1.default.gray("Path:")} ${node_path_1.default.resolve(projectPath)}`);
|
|
90
|
+
console.log(`${chalk_1.default.gray("Project:")} ${chalk_1.default.cyan(projectName)}`);
|
|
91
|
+
console.log(`${chalk_1.default.gray("Service:")} ${chalk_1.default.cyan(serviceName)}`);
|
|
92
|
+
console.log(`${chalk_1.default.gray("Version:")} ${chalk_1.default.cyan(version)}`);
|
|
93
|
+
console.log(`${chalk_1.default.gray("Index:")} ${chalk_1.default.cyan(index)}`);
|
|
94
|
+
console.log("");
|
|
95
|
+
console.log(chalk_1.default.blue("Manifest metadata"));
|
|
96
|
+
console.log(`- languages: ${chalk_1.default.yellow(languages.toString())}`);
|
|
97
|
+
console.log(`- roles: ${chalk_1.default.yellow(roles.toString())}`);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
console.log(`- manifest.json not found.`);
|
|
101
|
+
console.log(`${chalk_1.default.gray("Path:")} unknown`);
|
|
102
|
+
console.log(`${chalk_1.default.gray("Project:")} unknown`);
|
|
103
|
+
console.log(`${chalk_1.default.gray("Service:")} unknown`);
|
|
104
|
+
console.log(`${chalk_1.default.gray("Version:")} unknown`);
|
|
105
|
+
console.log(`${chalk_1.default.gray("Index:")} unknown`);
|
|
106
|
+
console.log("");
|
|
107
|
+
console.log(chalk_1.default.blue("Manifest metadata"));
|
|
108
|
+
console.log(`- languages: unknown`);
|
|
109
|
+
console.log(`- roles: unknown`);
|
|
110
|
+
}
|
|
111
|
+
// Find ./package.json
|
|
112
|
+
const pkgJson = await FileUtils_1.default.readJsonFileAsync(node_path_1.default.join(projectPath, 'package.json'));
|
|
113
|
+
if (pkgJson) {
|
|
114
|
+
console.log(`- package.json found:`);
|
|
115
|
+
console.log(`\tname: ${chalk_1.default.cyan(pkgJson.name ?? "(not set)")}`);
|
|
116
|
+
console.log(`\tversion: ${chalk_1.default.cyan(pkgJson.version ?? "(not set)")}`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log(`- package.json not found.`);
|
|
120
|
+
}
|
|
121
|
+
// Paths are printed relative to the project, absolute ones would push the useful part off screen
|
|
122
|
+
const relativeToProject = (filePath) => node_path_1.default.relative(node_path_1.default.resolve(projectPath), filePath) || filePath;
|
|
123
|
+
// Find processes
|
|
124
|
+
const processes = await ProjectUtils.discoverProcessFiles(projectPath);
|
|
125
|
+
if (processes.length === 0) {
|
|
126
|
+
console.log(`- processes: No process discovered.`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.log(`- processes: ${processes.length}`);
|
|
130
|
+
for (const p of processes) {
|
|
131
|
+
const name = p.id ?? chalk_1.default.yellow("(computed id)");
|
|
132
|
+
const trigger = ProjectUtils.describeTrigger(p.trigger);
|
|
133
|
+
console.log(`\t${chalk_1.default.cyan(name)} ${chalk_1.default.gray(trigger)} at ${relativeToProject(p.filePath)}:${p.line}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Find tables
|
|
137
|
+
const tables = await ProjectUtils.discoverTableFiles(projectPath);
|
|
138
|
+
if (tables.length === 0) {
|
|
139
|
+
console.log(`- tables: No table discovered.`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.log(`- tables: ${tables.length}`);
|
|
143
|
+
for (const t of tables) {
|
|
144
|
+
const name = t.name ?? chalk_1.default.yellow("(computed name)");
|
|
145
|
+
const columns = `${t.columns.length} column${t.columns.length === 1 ? '' : 's'}`;
|
|
146
|
+
console.log(`\t${chalk_1.default.cyan(name)} ${chalk_1.default.gray(columns)} at ${relativeToProject(t.filePath)}:${t.line}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Find documents
|
|
150
|
+
const documents = await ProjectUtils.discoverDocumentFiles(projectPath);
|
|
151
|
+
if (documents.length === 0) {
|
|
152
|
+
console.log(`- documents: No table discovered.`);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
console.log(`- documents: ${documents.length}`);
|
|
156
|
+
for (const d of documents) {
|
|
157
|
+
const name = d.name ?? chalk_1.default.yellow("(computed name)");
|
|
158
|
+
const columns = `${d.fields.length} column${d.fields.length === 1 ? '' : 's'}`;
|
|
159
|
+
console.log(`\t${chalk_1.default.cyan(name)} ${chalk_1.default.gray(columns)} at ${relativeToProject(d.filePath)}:${d.line}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Find apps
|
|
163
|
+
const apps = await ProjectUtils.discoverAppsFiles(projectPath);
|
|
164
|
+
if (apps.length === 0) {
|
|
165
|
+
console.log(`- apps: No app discovered.`);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
console.log(`- apps: ${apps.length}`);
|
|
169
|
+
for (const a of apps) {
|
|
170
|
+
const title = a.manifest.app?.name ?? a.manifest.html?.title ?? "(untitled)";
|
|
171
|
+
console.log(`\t${chalk_1.default.cyan(a.name)} ${chalk_1.default.gray(`${a.type}, ${title}`)} at ${relativeToProject(a.scriptPath)}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Find i18ns
|
|
175
|
+
const i18ns = await ProjectUtils.discoverI18nsFiles(projectPath);
|
|
176
|
+
if (i18ns.length === 0) {
|
|
177
|
+
console.log(`- i18ns: No i18ns file discovered.`);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
console.log(`- i18ns: ${i18ns.length}`);
|
|
181
|
+
for (const a of i18ns) {
|
|
182
|
+
console.log(`\t${chalk_1.default.cyan(a.keys.length)} keys (${chalk_1.default.gray(`${a.languages.length}`)} langs) at ${relativeToProject(a.filePath)}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Could be usefull so returns all
|
|
186
|
+
return {
|
|
187
|
+
manifest,
|
|
188
|
+
processes,
|
|
189
|
+
tables,
|
|
190
|
+
documents,
|
|
191
|
+
apps,
|
|
192
|
+
i18ns,
|
|
193
|
+
pkgJson
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/** Short human readable form of a process trigger, e.g. 'POST /books' or 'cron 0 8 * * *' */
|
|
197
|
+
static describeTrigger(trigger) {
|
|
198
|
+
switch (trigger?.kind) {
|
|
199
|
+
case 'api': return `${trigger.method} ${trigger.route}`;
|
|
200
|
+
case 'timer': return `cron ${trigger.cron}`;
|
|
201
|
+
case 'signal': return `signal ${trigger.ref}`;
|
|
202
|
+
case 'install': return 'on install';
|
|
203
|
+
case 'unknown': return `trigger ${trigger.callee}`;
|
|
204
|
+
default: return 'no trigger';
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Find all file (recursivly) in a given folder (workspacePath) that contains a table declaration ('defineEntity').
|
|
209
|
+
*/
|
|
210
|
+
static async discoverTableFiles(workspacePath) {
|
|
211
|
+
return await this.discoverOrmDeclarations(workspacePath, 'defineEntity', ['InferEntity']);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Shared by the tables and the documents, which only differ by the factory they are declared with
|
|
215
|
+
*
|
|
216
|
+
* @param factoryName 'defineEntity' or 'defineDocument'
|
|
217
|
+
* @param typeHelperNames helpers building their row type, e.g. ['InferEntity']
|
|
218
|
+
*/
|
|
219
|
+
static async discoverOrmDeclarations(workspacePath, factoryName, typeHelperNames) {
|
|
220
|
+
const files = await this.getAllScriptFile(workspacePath);
|
|
221
|
+
const results = [];
|
|
222
|
+
for (const filePath of files) {
|
|
223
|
+
const content = await FileUtils_1.default.readFileAsync(filePath);
|
|
224
|
+
// Cheap way out: a file that does not even name the module declares nothing
|
|
225
|
+
if (!content || !content.includes(ORM_MODULE)) {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const analysis = ScriptDeclarationUtils_1.default.analyzeScript(filePath, content, ORM_MODULE, [factoryName], typeHelperNames);
|
|
229
|
+
for (const declaration of analysis.declarations) {
|
|
230
|
+
// 'export type IUser = InferEntity<typeof User>' next to 'export const User = defineEntity(...)'
|
|
231
|
+
const typeAlias = analysis.typeAliases.find(alias => alias.targetName === declaration.variableName && alias.isExported);
|
|
232
|
+
results.push({
|
|
233
|
+
filePath,
|
|
234
|
+
name: typeof declaration.properties['name'] === 'string' ? declaration.properties['name'] : undefined,
|
|
235
|
+
isNameStatic: typeof declaration.properties['name'] === 'string'
|
|
236
|
+
|| declaration.properties['name'] === undefined,
|
|
237
|
+
variableName: declaration.variableName,
|
|
238
|
+
isExported: declaration.isExported,
|
|
239
|
+
line: declaration.line,
|
|
240
|
+
columns: this.readColumns(declaration),
|
|
241
|
+
typeName: typeAlias?.name,
|
|
242
|
+
importStatement: typeAlias === undefined
|
|
243
|
+
? undefined
|
|
244
|
+
: this.buildTypeImport(typeAlias.name, filePath, workspacePath),
|
|
245
|
+
properties: declaration.properties
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return results;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Line to paste to use the type of a table from another file, e.g.
|
|
253
|
+
* "import { IUser } from '../tables/user';"
|
|
254
|
+
*
|
|
255
|
+
* @param table table to import the type of
|
|
256
|
+
* @param fromFilePath file the import would be written in
|
|
257
|
+
*/
|
|
258
|
+
static getTableTypeImport(table, fromFilePath) {
|
|
259
|
+
if (table.typeName === undefined) {
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
return this.buildTypeImport(table.typeName, table.filePath, node_path_1.default.dirname(fromFilePath));
|
|
263
|
+
}
|
|
264
|
+
static buildTypeImport(typeName, targetFilePath, fromFolderPath) {
|
|
265
|
+
// Module specifiers are posix and carry no extension
|
|
266
|
+
let specifier = node_path_1.default.relative(fromFolderPath, targetFilePath).replaceAll('\\', '/').replace(/\.[^./]+$/, '');
|
|
267
|
+
if (!specifier.startsWith('.')) {
|
|
268
|
+
specifier = `./${specifier}`;
|
|
269
|
+
}
|
|
270
|
+
return `import { ${typeName} } from '${specifier}';`;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Turns the `properties` of a table into columns: `bio: p.text().default('')` gives the
|
|
274
|
+
* type 'text' and the modifier 'default' with its value.
|
|
275
|
+
*/
|
|
276
|
+
static readColumns(declaration) {
|
|
277
|
+
const columns = [];
|
|
278
|
+
for (const [path, call] of Object.entries(declaration.calls)) {
|
|
279
|
+
// Only the calls of the 'properties' object are columns
|
|
280
|
+
if (!path.startsWith(`${TABLE_COLUMNS_PROPERTY}.`)) {
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
const name = path.substring(TABLE_COLUMNS_PROPERTY.length + 1);
|
|
284
|
+
// p.integer().primary() -> the first step is the type, the next ones are modifiers
|
|
285
|
+
const [type, ...modifiers] = call.steps;
|
|
286
|
+
const defaultModifier = modifiers.find(modifier => modifier.name === 'default');
|
|
287
|
+
columns.push({
|
|
288
|
+
name,
|
|
289
|
+
type: type?.name,
|
|
290
|
+
typeArguments: type?.arguments ?? [],
|
|
291
|
+
isPrimary: modifiers.some(modifier => modifier.name === 'primary'),
|
|
292
|
+
defaultValue: defaultModifier?.arguments[0],
|
|
293
|
+
modifiers: modifiers.map(modifier => ({ name: modifier.name, arguments: modifier.arguments }))
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
return columns;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Find all file (recursivly) in a given folder (workspacePath) that contains a document declaration ('defineDocument').
|
|
300
|
+
*/
|
|
301
|
+
static async discoverDocumentFiles(workspacePath) {
|
|
302
|
+
const declarations = await this.discoverOrmDeclarations(workspacePath, 'defineDocument', DOCUMENT_TYPE_HELPERS);
|
|
303
|
+
// A document holds fields rather than columns, everything else is read the same way
|
|
304
|
+
return declarations.map(({ columns, ...declaration }) => ({ ...declaration, fields: columns }));
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Line to paste to use the type of a document from another file, e.g.
|
|
308
|
+
* "import { ISettings } from '../documents/settings';"
|
|
309
|
+
*
|
|
310
|
+
* @param document document to import the type of
|
|
311
|
+
* @param fromFilePath file the import would be written in
|
|
312
|
+
*/
|
|
313
|
+
static getDocumentTypeImport(document, fromFilePath) {
|
|
314
|
+
if (document.typeName === undefined) {
|
|
315
|
+
return undefined;
|
|
316
|
+
}
|
|
317
|
+
return this.buildTypeImport(document.typeName, document.filePath, node_path_1.default.dirname(fromFilePath));
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Find all file (recursivly) in a given folder (workspacePath) that contains a table declaration ('process').
|
|
321
|
+
*/
|
|
322
|
+
static async discoverProcessFiles(workspacePath) {
|
|
323
|
+
const files = await this.getAllScriptFile(workspacePath);
|
|
324
|
+
const results = [];
|
|
325
|
+
for (const filePath of files) {
|
|
326
|
+
const content = await FileUtils_1.default.readFileAsync(filePath);
|
|
327
|
+
// Cheap way out: a file that does not even name the module declares no process
|
|
328
|
+
if (!content || !content.includes(PROCESS_MODULE)) {
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
for (const declaration of ScriptDeclarationUtils_1.default.findDeclarationCalls(filePath, content, PROCESS_MODULE, ['process'])) {
|
|
332
|
+
results.push({
|
|
333
|
+
filePath,
|
|
334
|
+
id: declaration.id,
|
|
335
|
+
isIdStatic: declaration.isIdStatic,
|
|
336
|
+
variableName: declaration.variableName,
|
|
337
|
+
isExported: declaration.isExported,
|
|
338
|
+
line: declaration.line,
|
|
339
|
+
scope: this.readScope(declaration),
|
|
340
|
+
trigger: this.readTrigger(declaration),
|
|
341
|
+
// run(ctx, input): the context comes first, the input of the process second
|
|
342
|
+
takesInput: (declaration.functions['run']?.parameters.length ?? 0) >= 2,
|
|
343
|
+
input: declaration.functions['run']?.parameters[1]?.schema,
|
|
344
|
+
output: declaration.functions['run']?.returnSchema,
|
|
345
|
+
description: typeof declaration.properties['description'] === 'string' ? declaration.properties['description'] : undefined,
|
|
346
|
+
properties: declaration.properties
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return results;
|
|
351
|
+
}
|
|
352
|
+
/** Value of `auth: { scope: 'internal' }` when it is written literally */
|
|
353
|
+
static readScope(declaration) {
|
|
354
|
+
const auth = declaration.properties['auth'];
|
|
355
|
+
if (auth !== null && typeof auth === 'object' && !Array.isArray(auth) && typeof auth['scope'] === 'string') {
|
|
356
|
+
return auth['scope'];
|
|
357
|
+
}
|
|
358
|
+
return undefined;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Turns the `trigger` property into something usable, e.g. `api.post('/books')` into
|
|
362
|
+
* { kind: 'api', method: 'POST', route: '/books' }.
|
|
363
|
+
* A process without trigger is only reachable through ctx.call, and returns undefined.
|
|
364
|
+
*/
|
|
365
|
+
static readTrigger(declaration) {
|
|
366
|
+
const trigger = declaration.calls['trigger'];
|
|
367
|
+
if (trigger === undefined) {
|
|
368
|
+
return undefined;
|
|
369
|
+
}
|
|
370
|
+
const [first] = trigger.arguments;
|
|
371
|
+
if (trigger.callee.startsWith('api.') && typeof first === 'string') {
|
|
372
|
+
return { kind: 'api', method: trigger.callee.substring('api.'.length).toUpperCase(), route: first };
|
|
373
|
+
}
|
|
374
|
+
if (trigger.callee === 'timer' && typeof first === 'string') {
|
|
375
|
+
return { kind: 'timer', cron: first };
|
|
376
|
+
}
|
|
377
|
+
if (trigger.callee === 'signal' && typeof first === 'string') {
|
|
378
|
+
return { kind: 'signal', ref: first };
|
|
379
|
+
}
|
|
380
|
+
if (trigger.callee === 'install') {
|
|
381
|
+
const options = first !== null && typeof first === 'object' && !Array.isArray(first) ? first : {};
|
|
382
|
+
return { kind: 'install', options };
|
|
383
|
+
}
|
|
384
|
+
// A trigger that is not one of the known factories, or built at runtime: reported as is rather than guessed
|
|
385
|
+
return { kind: 'unknown', callee: trigger.callee };
|
|
386
|
+
}
|
|
387
|
+
static async getAllScriptFile(workspacePath, fileExtensions = ['.tsx', '.jsx', '.ts', '.js']) {
|
|
388
|
+
const ignoredFolders = await FileUtils_1.default.getIgnoredFolderPaths(workspacePath);
|
|
389
|
+
const results = FileUtils_1.default.listFilesRecursively(workspacePath, {
|
|
390
|
+
ignoredFolderPaths: ignoredFolders,
|
|
391
|
+
fileExtensions: fileExtensions
|
|
392
|
+
});
|
|
393
|
+
return results;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* An app is a tsx/jsx file with a sibling *.manifest.json.
|
|
397
|
+
*
|
|
398
|
+
* A script without its manifest is not an app and is left out, whereas an app whose manifest
|
|
399
|
+
* cannot be parsed is still reported, with an empty manifest: it exists on disk, and saying
|
|
400
|
+
* why its manifest is wrong is the job of the validators.
|
|
401
|
+
*/
|
|
402
|
+
static async discoverAppsFiles(workspacePath) {
|
|
403
|
+
const files = await this.getAllScriptFile(workspacePath, ['.tsx', '.jsx']);
|
|
404
|
+
const results = [];
|
|
405
|
+
for (const scriptPath of files) {
|
|
406
|
+
// 'apps/Dashboard.tsx' is an app when 'apps/Dashboard.manifest.json' sits next to it
|
|
407
|
+
const appName = FileUtils_1.default.getNameFromPath(scriptPath, true);
|
|
408
|
+
const manifestPath = node_path_1.default.join(node_path_1.default.dirname(scriptPath), `${appName}.manifest.json`);
|
|
409
|
+
if (await FileUtils_1.default.exists(manifestPath) === false) {
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
results.push({
|
|
413
|
+
manifestPath,
|
|
414
|
+
scriptPath,
|
|
415
|
+
type: FileUtils_1.default.getExtensionFromPath(scriptPath).toLowerCase() === 'jsx' ? 'jsx' : 'tsx',
|
|
416
|
+
name: appName,
|
|
417
|
+
manifest: await FileUtils_1.default.readJsonFileAsync(manifestPath) ?? {}
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
return results;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Find all *.i18n.csv files (recursively) in a given folder (workspacePath), with the keys
|
|
424
|
+
* they declare and the languages they translate them into.
|
|
425
|
+
*
|
|
426
|
+
* A file whose first column is not 'key' is reported with no key and no language rather than
|
|
427
|
+
* being read wrong: saying why it is malformed is the job of the validators.
|
|
428
|
+
*/
|
|
429
|
+
static async discoverI18nsFiles(workspacePath) {
|
|
430
|
+
const files = FileUtils_1.default.listFilesRecursively(workspacePath, {
|
|
431
|
+
ignoredFolderPaths: await FileUtils_1.default.getIgnoredFolderPaths(workspacePath),
|
|
432
|
+
fileExtensions: ['.i18n.csv']
|
|
433
|
+
});
|
|
434
|
+
const results = [];
|
|
435
|
+
for (const filePath of files) {
|
|
436
|
+
const content = await FileUtils_1.default.readFileAsync(filePath);
|
|
437
|
+
if (content === undefined) {
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
const parsed = papaparse_1.default.parse(content, { header: true, skipEmptyLines: 'greedy' });
|
|
441
|
+
const columns = parsed.meta.fields ?? [];
|
|
442
|
+
// Languages come from the header rather than from the rows, so an empty file still reports them
|
|
443
|
+
const languages = columns[0] === 'key' ? columns.slice(1).filter(column => column.trim() !== '') : [];
|
|
444
|
+
const keys = columns[0] === 'key' ? I18nTsUtils_1.default.getEntries(parsed.data).map(entry => entry.key) : [];
|
|
445
|
+
results.push({ filePath, keys, languages });
|
|
111
446
|
}
|
|
447
|
+
return results;
|
|
112
448
|
}
|
|
113
449
|
}
|
|
114
450
|
exports.default = ProjectUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectUtils.js","sourceRoot":"","sources":["../../src/utils/ProjectUtils.ts"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAE1B,0DAA6B;AAC7B,sDAAyB;AACzB,gEAAkC;AAClC,4DAAoC;AACpC,wFAAuF;AAgBvF,MAA8B,YAAY;IAEtC;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,UAAkB,EAAE,eAAwB,KAAK;QAEpG,MAAM,QAAQ,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAExE,IACA,CAAC;YACG,eAAe;YACf,MAAM,mBAAS,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAEnG,kBAAkB;YAClB,sEAAsE;YACtE,0DAA0D;YAC1D,MAAM,WAAW,GAAG,MAAM,iCAAuB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE3E,IAAG,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC5D,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;YAC/F,CAAC;YAED,yBAAyB;YACzB,MAAM,mBAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEhD,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,EACR,CAAC;YACG,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;gBACO,CAAC;YACL,uBAAuB;YACvB,MAAM,mBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED,sMAAsM;IACtM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAmB;QAC/C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,WAAW,CAAqC,CAAC;QACjG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,KAAc;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAmB;QAExC,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC7D,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAA6B,CAAA;QACxE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QAClD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,WAAmB;QAE3C,8EAA8E;QAE9E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,WAAW,CAAqC,CAAC;QAEjG,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,WAAW,CAAC;QACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,WAAW,CAAC;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,WAAW,CAAC;QAE5C,MAAM,SAAS,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,YAAY,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,oBAAoB,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAA4C;YACtD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACxF,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAClG,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAClG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC9E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC5E,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1E,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAClF,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YAChG,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;SACzG,CAAC;QAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAe,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,mBAAmB,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,YAAY,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,gCAAgC,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,qBAAqB,eAAK,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;IAEL,CAAC;CACJ;AA/HD,+BA+HC"}
|
|
1
|
+
{"version":3,"file":"ProjectUtils.js","sourceRoot":"","sources":["../../src/utils/ProjectUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -273,7 +273,7 @@ class RuntimeUtils {
|
|
|
273
273
|
console.log(chalk_1.default.blue(`The runtime has been installed successfully.`));
|
|
274
274
|
}
|
|
275
275
|
finally {
|
|
276
|
-
FileUtils_1.default.
|
|
276
|
+
FileUtils_1.default.deleteRecursively(tempRoot);
|
|
277
277
|
}
|
|
278
278
|
if (wasRunning) {
|
|
279
279
|
await RuntimeUtils.startRuntime();
|
|
@@ -421,7 +421,7 @@ class RuntimeUtils {
|
|
|
421
421
|
}
|
|
422
422
|
finally {
|
|
423
423
|
// Remove the build
|
|
424
|
-
FileUtils_1.default.
|
|
424
|
+
FileUtils_1.default.deleteRecursively(outputPath);
|
|
425
425
|
}
|
|
426
426
|
}
|
|
427
427
|
static async testProject(projectPath, fileFilter, nameFilter, inPlace = false) {
|
|
@@ -438,20 +438,26 @@ class RuntimeUtils {
|
|
|
438
438
|
...(nameFilter ? ["-t", nameFilter] : []),
|
|
439
439
|
"-r", reportPath,
|
|
440
440
|
], false);
|
|
441
|
+
// TODO: manifest is no more compiled and there's many changes
|
|
442
|
+
/*
|
|
443
|
+
|
|
441
444
|
// To test a project, we need to install it and to install it, we need it to be compiled
|
|
442
|
-
let projectCompiled = await
|
|
445
|
+
let projectCompiled = await ProjectUtils.isManifestCompiled(projectPath);
|
|
446
|
+
|
|
443
447
|
// If the project is already compiled we can go ahead and test it
|
|
444
448
|
if (projectCompiled) {
|
|
445
|
-
const tempReportPath =
|
|
449
|
+
const tempReportPath = path.join(os.tmpdir(), `cn-report-${Date.now()}.json`);
|
|
446
450
|
try {
|
|
447
451
|
await testFunc(projectPath, tempReportPath);
|
|
448
452
|
await RuntimeUtils.persistTestReport(tempReportPath, finalReportPath, isPartial);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
await promises_1.default.unlink(tempReportPath).catch(() => { });
|
|
453
|
+
} finally {
|
|
454
|
+
await fs.unlink(tempReportPath).catch(() => {});
|
|
452
455
|
}
|
|
453
456
|
return;
|
|
454
457
|
}
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
*/
|
|
455
461
|
// We need a "lightly-compiled" project, meaning we need a full manifest (we don't need i18n or to build the React apps)
|
|
456
462
|
let compileFunc = async (path) => {
|
|
457
463
|
const compilation = await ProjectCompilationUtils_1.default.compileTestProject(path);
|
|
@@ -487,7 +493,7 @@ class RuntimeUtils {
|
|
|
487
493
|
finally {
|
|
488
494
|
// Clean up temp folder
|
|
489
495
|
//TODO consider keeping it for faster re-testing if project has not changed
|
|
490
|
-
await FileUtils_1.default.
|
|
496
|
+
await FileUtils_1.default.deleteRecursively(tempRoot);
|
|
491
497
|
}
|
|
492
498
|
}
|
|
493
499
|
static async deployProject(serviceName, packagePath) {
|