@codenotch/codenotch.cli 1.0.33 → 1.0.34
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/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/validation/ValidationUtils.d.ts +28 -0
- package/dist/commands/validation/ValidationUtils.js +182 -0
- package/dist/commands/validation/ValidationUtils.js.map +1 -0
- package/dist/commands/validation/files/AppManifestValidator.d.ts +6 -0
- package/dist/commands/validation/files/AppManifestValidator.js +93 -0
- package/dist/commands/validation/files/AppManifestValidator.js.map +1 -0
- package/dist/commands/validation/files/BpmnValidator.d.ts +5 -0
- package/dist/commands/validation/files/BpmnValidator.js +32 -0
- package/dist/commands/validation/files/BpmnValidator.js.map +1 -0
- package/dist/commands/validation/files/DbSchemaValidator.d.ts +5 -0
- package/dist/commands/validation/files/DbSchemaValidator.js +16 -0
- package/dist/commands/validation/files/DbSchemaValidator.js.map +1 -0
- package/dist/commands/validation/files/DocumentValidator.d.ts +5 -0
- package/dist/commands/validation/files/DocumentValidator.js +12 -0
- package/dist/commands/validation/files/DocumentValidator.js.map +1 -0
- package/dist/commands/validation/files/I18nValidator.d.ts +5 -0
- package/dist/commands/validation/files/I18nValidator.js +13 -0
- package/dist/commands/validation/files/I18nValidator.js.map +1 -0
- package/dist/commands/validation/files/JsonValidator.d.ts +5 -0
- package/dist/commands/validation/files/JsonValidator.js +13 -0
- package/dist/commands/validation/files/JsonValidator.js.map +1 -0
- package/dist/commands/validation/files/ManifestCacheValidator.d.ts +5 -0
- package/dist/commands/validation/files/ManifestCacheValidator.js +121 -0
- package/dist/commands/validation/files/ManifestCacheValidator.js.map +1 -0
- package/dist/commands/validation/files/ManifestValidator.d.ts +5 -0
- package/dist/commands/validation/files/ManifestValidator.js +14 -0
- package/dist/commands/validation/files/ManifestValidator.js.map +1 -0
- package/dist/commands/validation/files/ScriptValidator.d.ts +12 -0
- package/dist/commands/validation/files/ScriptValidator.js +128 -0
- package/dist/commands/validation/files/ScriptValidator.js.map +1 -0
- package/dist/commands/validation/files/TableValidator.d.ts +5 -0
- package/dist/commands/validation/files/TableValidator.js +19 -0
- package/dist/commands/validation/files/TableValidator.js.map +1 -0
- package/dist/commands/validation/validate.d.ts +2 -0
- package/dist/commands/validation/validate.js +245 -0
- package/dist/commands/validation/validate.js.map +1 -0
- package/dist/utils/BuildUtils.d.ts +22 -4
- package/dist/utils/BuildUtils.js +45 -16
- package/dist/utils/BuildUtils.js.map +1 -1
- package/dist/utils/FileUtils.d.ts +13 -0
- package/dist/utils/FileUtils.js +30 -0
- package/dist/utils/FileUtils.js.map +1 -1
- package/dist/utils/I18nUtils.js +0 -2
- package/dist/utils/I18nUtils.js.map +1 -1
- package/package.json +14 -6
- package/.github/copilot-instructions.md +0 -3
- package/bin/cli.js +0 -3
- package/docs/ARCHITECTURE.md +0 -179
- package/docs/TODO.md +0 -18
- package/src/bin/cli.ts +0 -4
- package/src/commands/index.ts +0 -13
- package/src/commands/project/compile.ts +0 -20
- package/src/commands/project/deploy.ts +0 -11
- package/src/commands/project/index.ts +0 -28
- package/src/commands/project/inspect.ts +0 -12
- package/src/commands/project/new.ts +0 -11
- package/src/commands/project/open.ts +0 -21
- package/src/commands/project/package.ts +0 -20
- package/src/commands/project/refresh.ts +0 -13
- package/src/commands/project/remove.ts +0 -12
- package/src/commands/project/shared.ts +0 -9
- package/src/commands/project/start.ts +0 -24
- package/src/commands/project/test.ts +0 -15
- package/src/commands/react/build.ts +0 -12
- package/src/commands/react/index.ts +0 -12
- package/src/commands/react/serve.ts +0 -13
- package/src/commands/runtime/clear.ts +0 -11
- package/src/commands/runtime/index.ts +0 -24
- package/src/commands/runtime/info.ts +0 -47
- package/src/commands/runtime/latest.ts +0 -18
- package/src/commands/runtime/portal.ts +0 -20
- package/src/commands/runtime/start.ts +0 -16
- package/src/commands/runtime/stop.ts +0 -13
- package/src/commands/runtime/update.ts +0 -12
- package/src/commands/system/index.ts +0 -9
- package/src/commands/system/info.ts +0 -23
- package/src/commands/system/read.ts +0 -25
- package/src/index.ts +0 -22
- package/src/models/Codenotch.ts +0 -361
- package/src/models/DbModels.ts +0 -428
- package/src/models/OpenApiModels.ts +0 -145
- package/src/utils/BuildUtils.ts +0 -739
- package/src/utils/ConsoleUtils.ts +0 -22
- package/src/utils/FileUtils.ts +0 -266
- package/src/utils/GitHubAuthUtils.ts +0 -83
- package/src/utils/I18nUtils.ts +0 -58
- package/src/utils/OpenAPIUtils.ts +0 -285
- package/src/utils/OsUtils.ts +0 -32
- package/src/utils/ProjectCompilationUtils.ts +0 -1002
- package/src/utils/ProjectUtils.ts +0 -151
- package/src/utils/RuntimeUtils.ts +0 -743
- package/src/utils/ServeUtils.ts +0 -175
- package/src/utils/ShellUtils.ts +0 -26
- package/src/utils/StringUtils.ts +0 -80
- package/tsconfig.json +0 -35
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const codenotch_core_1 = require("@codenotch/codenotch.core");
|
|
4
|
+
class ManifestValidator {
|
|
5
|
+
static async validate(context) {
|
|
6
|
+
const compiler = new codenotch_core_1.ProjectManifestCompiler();
|
|
7
|
+
const obj = compiler.deserialize(context.content);
|
|
8
|
+
return await compiler.validate(obj, {
|
|
9
|
+
fullManifest: context.fullManifest
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.default = ManifestValidator;
|
|
14
|
+
//# sourceMappingURL=ManifestValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/ManifestValidator.ts"],"names":[],"mappings":";;AAAA,8DAAyF;AAGzF,MAA8B,iBAAiB;IAE3C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAA0B;QAC5C,MAAM,QAAQ,GAAG,IAAI,wCAAuB,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;SACrC,CAAC,CAAC;IACP,CAAC;CACJ;AATD,oCASC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ICompilationMessage, ScriptCompiler, ScriptFile } from '@codenotch/codenotch.core';
|
|
2
|
+
import { ValidationContext } from '../ValidationUtils';
|
|
3
|
+
export default abstract class ScriptValidator {
|
|
4
|
+
static validate(context: ValidationContext): Promise<ICompilationMessage[]>;
|
|
5
|
+
/** Validates several scripts with a single TypeScript program, much faster than one program per file. */
|
|
6
|
+
static validateMany(filePaths: string[]): Promise<ICompilationMessage[]>;
|
|
7
|
+
}
|
|
8
|
+
export declare class CliScriptCompiler implements ScriptCompiler {
|
|
9
|
+
validate(files: ScriptFile[]): Promise<ICompilationMessage[]>;
|
|
10
|
+
serialize(files: ScriptFile[]): void;
|
|
11
|
+
deserialize(scripts: string): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.CliScriptCompiler = void 0;
|
|
40
|
+
const path_1 = __importStar(require("path"));
|
|
41
|
+
const fs_1 = require("fs");
|
|
42
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
43
|
+
const BuildUtils_1 = __importDefault(require("../../../utils/BuildUtils"));
|
|
44
|
+
const FileUtils_1 = __importDefault(require("../../../utils/FileUtils"));
|
|
45
|
+
const ValidationUtils_1 = __importDefault(require("../ValidationUtils"));
|
|
46
|
+
class ScriptValidator {
|
|
47
|
+
static async validate(context) {
|
|
48
|
+
const compiler = new CliScriptCompiler();
|
|
49
|
+
return await compiler.validate([{
|
|
50
|
+
content: context.content,
|
|
51
|
+
path: context.filePath
|
|
52
|
+
}]);
|
|
53
|
+
}
|
|
54
|
+
/** Validates several scripts with a single TypeScript program, much faster than one program per file. */
|
|
55
|
+
static async validateMany(filePaths) {
|
|
56
|
+
if (filePaths.length === 0) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
const files = [];
|
|
60
|
+
for (const filePath of filePaths) {
|
|
61
|
+
files.push({ path: filePath, content: await FileUtils_1.default.readFileAsync(filePath) });
|
|
62
|
+
}
|
|
63
|
+
const compiler = new CliScriptCompiler();
|
|
64
|
+
return await compiler.validate(files);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.default = ScriptValidator;
|
|
68
|
+
class CliScriptCompiler {
|
|
69
|
+
async validate(files) {
|
|
70
|
+
const messages = [];
|
|
71
|
+
const requestedFiles = files.map(f => (0, path_1.resolve)(f.path));
|
|
72
|
+
const rootFiles = [...requestedFiles];
|
|
73
|
+
const searchDir = path_1.default.dirname(requestedFiles[0]);
|
|
74
|
+
// Locate the node project root to warn when dependencies are not installed,
|
|
75
|
+
// otherwise every import would surface as a TS2307 without explanation.
|
|
76
|
+
const pkgPath = typescript_1.default.findConfigFile(searchDir, typescript_1.default.sys.fileExists, 'package.json');
|
|
77
|
+
if (pkgPath && (0, fs_1.existsSync)((0, path_1.join)(path_1.default.dirname(pkgPath), 'node_modules')) === false) {
|
|
78
|
+
messages.push({
|
|
79
|
+
severity: 'warning',
|
|
80
|
+
message: `No 'node_modules' found in '${path_1.default.dirname(pkgPath)}', imported modules will not resolve. Run 'npm install' first for a complete validation.`
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Use the project tsconfig.json when there is one, else the same defaults as the build
|
|
84
|
+
const configPath = typescript_1.default.findConfigFile(searchDir, typescript_1.default.sys.fileExists, 'tsconfig.json');
|
|
85
|
+
let options;
|
|
86
|
+
let configDiagnostics = [];
|
|
87
|
+
if (configPath) {
|
|
88
|
+
const raw = typescript_1.default.readConfigFile(configPath, typescript_1.default.sys.readFile);
|
|
89
|
+
const parsed = typescript_1.default.parseJsonConfigFileContent(raw.config ?? {}, typescript_1.default.sys, path_1.default.dirname(configPath));
|
|
90
|
+
options = parsed.options;
|
|
91
|
+
configDiagnostics = [...(raw.error ? [raw.error] : []), ...parsed.errors];
|
|
92
|
+
// Ambient declarations included by the tsconfig must be part of the program
|
|
93
|
+
rootFiles.push(...parsed.fileNames.filter(f => f.endsWith('.d.ts')).map(f => (0, path_1.resolve)(f)));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const basePath = pkgPath ? path_1.default.dirname(pkgPath) : searchDir;
|
|
97
|
+
options = typescript_1.default.convertCompilerOptionsFromJson(BuildUtils_1.default.defaultCompilerOptions(), basePath).options;
|
|
98
|
+
}
|
|
99
|
+
options.noEmit = true;
|
|
100
|
+
// Codenotch auto-generated ambient typings (i18n.d.ts, process.d.ts)
|
|
101
|
+
const workspacePath = BuildUtils_1.default.findWorkspaceFromFile(requestedFiles[0]);
|
|
102
|
+
if (workspacePath) {
|
|
103
|
+
const typingsDir = (0, path_1.join)(workspacePath, 'typings');
|
|
104
|
+
if ((0, fs_1.existsSync)(typingsDir)) {
|
|
105
|
+
rootFiles.push(...(0, fs_1.readdirSync)(typingsDir).filter(f => f.endsWith('.d.ts')).map(f => (0, path_1.join)(typingsDir, f)));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const program = typescript_1.default.createProgram([...new Set(rootFiles)], options);
|
|
109
|
+
const diagnostics = [...configDiagnostics, ...typescript_1.default.getPreEmitDiagnostics(program)];
|
|
110
|
+
const isRequestedFile = (fileName) => requestedFiles.some(f => f.toLowerCase() === (0, path_1.resolve)(fileName).toLowerCase());
|
|
111
|
+
for (const diagnostic of diagnostics) {
|
|
112
|
+
// Keep global/options diagnostics, drop those of imported files
|
|
113
|
+
if (diagnostic.file && isRequestedFile(diagnostic.file.fileName) === false) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
messages.push(ValidationUtils_1.default.tsDiagnosticToMessage(diagnostic));
|
|
117
|
+
}
|
|
118
|
+
return messages;
|
|
119
|
+
}
|
|
120
|
+
serialize(files) {
|
|
121
|
+
throw new Error('No serialization possible with script files.');
|
|
122
|
+
}
|
|
123
|
+
deserialize(scripts) {
|
|
124
|
+
throw new Error('No deserialization possible with script files.');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.CliScriptCompiler = CliScriptCompiler;
|
|
128
|
+
//# sourceMappingURL=ScriptValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/ScriptValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const codenotch_core_1 = require("@codenotch/codenotch.core");
|
|
7
|
+
const ValidationUtils_1 = __importDefault(require("../ValidationUtils"));
|
|
8
|
+
class TableValidator {
|
|
9
|
+
static async validate(context) {
|
|
10
|
+
const tables = (await ValidationUtils_1.default.loadProjectTables(context)).map(c => c.model);
|
|
11
|
+
const compiler = new codenotch_core_1.TableCompiler();
|
|
12
|
+
const obj = compiler.deserialize(context.content);
|
|
13
|
+
return await compiler.validate(obj, (tableName) => {
|
|
14
|
+
return tables.find(c => c.Name === tableName);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = TableValidator;
|
|
19
|
+
//# sourceMappingURL=TableValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/TableValidator.ts"],"names":[],"mappings":";;;;;AAAA,8DAA+E;AAC/E,yEAAwE;AAExE,MAA8B,cAAc;IAExC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAA0B;QAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,yBAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,IAAI,8BAAa,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE;YAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAVD,iCAUC"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerValidate = registerValidate;
|
|
7
|
+
const FileUtils_1 = __importDefault(require("../../utils/FileUtils"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const fs_1 = require("fs");
|
|
11
|
+
const BuildUtils_1 = __importDefault(require("../../utils/BuildUtils"));
|
|
12
|
+
const ValidationUtils_1 = __importDefault(require("./ValidationUtils"));
|
|
13
|
+
const BpmnValidator_1 = __importDefault(require("./files/BpmnValidator"));
|
|
14
|
+
const DocumentValidator_1 = __importDefault(require("./files/DocumentValidator"));
|
|
15
|
+
const TableValidator_1 = __importDefault(require("./files/TableValidator"));
|
|
16
|
+
const I18nValidator_1 = __importDefault(require("./files/I18nValidator"));
|
|
17
|
+
const DbSchemaValidator_1 = __importDefault(require("./files/DbSchemaValidator"));
|
|
18
|
+
const ManifestValidator_1 = __importDefault(require("./files/ManifestValidator"));
|
|
19
|
+
const AppManifestValidator_1 = __importDefault(require("./files/AppManifestValidator"));
|
|
20
|
+
const ScriptValidator_1 = __importDefault(require("./files/ScriptValidator"));
|
|
21
|
+
const JsonValidator_1 = __importDefault(require("./files/JsonValidator"));
|
|
22
|
+
const ManifestCacheValidator_1 = __importDefault(require("./files/ManifestCacheValidator"));
|
|
23
|
+
const MAX_VALIDATED_FILES = 100;
|
|
24
|
+
function registerValidate(program) {
|
|
25
|
+
program
|
|
26
|
+
.command('validate')
|
|
27
|
+
.description('Validate a file or a folder and print hints, warnings and errors.')
|
|
28
|
+
.argument('<path>', 'File to validate, or folder to scan recursively')
|
|
29
|
+
.option('--json', 'Output the messages as a JSON array instead of text')
|
|
30
|
+
.option('--nolimit', `Validate all files instead of capping at ${MAX_VALIDATED_FILES}`)
|
|
31
|
+
.addHelpText('after', `
|
|
32
|
+
Supported files:
|
|
33
|
+
.bpmn processes, .table tables, .jschema documents, *.i18n.csv translations,
|
|
34
|
+
db-schema.xml, manifest.json, manifest.cache.json, <App>.manifest.json,
|
|
35
|
+
scripts (.ts, .tsx, .js, .jsx, ...) and .json files.
|
|
36
|
+
|
|
37
|
+
Folders are scanned recursively, ignoring node_modules, dot-folders, dist,
|
|
38
|
+
build and typings. At most ${MAX_VALIDATED_FILES} files are validated unless --nolimit is given.
|
|
39
|
+
|
|
40
|
+
Exit code is 1 when at least one error is reported, 0 otherwise.
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
$ cn validate processes/getTodos.bpmn
|
|
44
|
+
$ cn validate . --json
|
|
45
|
+
$ cn validate ./apps --nolimit`)
|
|
46
|
+
.action(async (targetPath, options) => {
|
|
47
|
+
targetPath = (0, path_1.resolve)(FileUtils_1.default.isAbsolutePath(targetPath) ? targetPath : (0, path_1.join)(process.cwd(), targetPath));
|
|
48
|
+
let messages = [];
|
|
49
|
+
let summary = '';
|
|
50
|
+
if (await FileUtils_1.default.exists(targetPath) === false) {
|
|
51
|
+
messages.push({
|
|
52
|
+
severity: 'error',
|
|
53
|
+
message: `The path '${targetPath}' not exists.`
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else if ((0, fs_1.lstatSync)(targetPath).isDirectory()) {
|
|
57
|
+
let files = ValidationUtils_1.default.listFilesRecursive(targetPath)
|
|
58
|
+
.filter(f => ValidationUtils_1.default.determineFileType(f) !== undefined);
|
|
59
|
+
let skipped = 0;
|
|
60
|
+
if (options.nolimit !== true && files.length > MAX_VALIDATED_FILES) {
|
|
61
|
+
skipped = files.length - MAX_VALIDATED_FILES;
|
|
62
|
+
files = files.slice(0, MAX_VALIDATED_FILES);
|
|
63
|
+
}
|
|
64
|
+
messages = await validateFiles(files);
|
|
65
|
+
if (skipped > 0) {
|
|
66
|
+
messages.push({
|
|
67
|
+
severity: 'warning',
|
|
68
|
+
message: `File cap reached: only the first ${MAX_VALIDATED_FILES} files were validated, ${skipped} file(s) skipped. Run with '--nolimit' to validate everything.`
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
summary = `${files.length} file(s) validated${skipped > 0 ? `, ${skipped} skipped (cap reached, use '--nolimit')` : ''}`;
|
|
72
|
+
// Paths relative to the validated folder keep the output compact
|
|
73
|
+
for (const msg of messages) {
|
|
74
|
+
if (msg.filePath) {
|
|
75
|
+
msg.filePath = (0, path_1.relative)(targetPath, msg.filePath);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
messages = await validateFile(targetPath);
|
|
81
|
+
if (messages.length === 0 && options.json !== true) {
|
|
82
|
+
messages.push({
|
|
83
|
+
severity: 'info',
|
|
84
|
+
message: 'File validated successfully.'
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (options.json === true) {
|
|
89
|
+
console.log(JSON.stringify(messages, null, 4));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
for (const msg of messages) {
|
|
93
|
+
const colorize = msg.severity === 'error' ? chalk_1.default.red : msg.severity === 'warning' ? chalk_1.default.yellow : undefined;
|
|
94
|
+
const text = ValidationUtils_1.default.formatCompilationMessage(msg);
|
|
95
|
+
if (colorize) {
|
|
96
|
+
console.log(colorize(text));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(text);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (summary !== '') {
|
|
103
|
+
const errors = messages.filter(m => m.severity === 'error').length;
|
|
104
|
+
const warnings = messages.filter(m => m.severity === 'warning').length;
|
|
105
|
+
const colorize = errors > 0 ? chalk_1.default.red : warnings > 0 ? chalk_1.default.yellow : chalk_1.default.green;
|
|
106
|
+
console.log(colorize(`${summary}: ${errors} error(s), ${warnings} warning(s).`));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (messages.some(m => m.severity === 'error')) {
|
|
110
|
+
process.exitCode = 1;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/** Validates a set of files, batching all scripts of a same workspace into a single TypeScript program. */
|
|
115
|
+
async function validateFiles(files) {
|
|
116
|
+
const messages = [];
|
|
117
|
+
const scriptGroups = new Map();
|
|
118
|
+
for (const file of files) {
|
|
119
|
+
if (ValidationUtils_1.default.determineFileType(file) === 'script') {
|
|
120
|
+
const workspace = BuildUtils_1.default.findWorkspaceFromFile(file) ?? (0, path_1.dirname)(file);
|
|
121
|
+
scriptGroups.set(workspace, [...(scriptGroups.get(workspace) ?? []), file]);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
messages.push(...await validateFile(file));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const group of scriptGroups.values()) {
|
|
128
|
+
messages.push(...await ScriptValidator_1.default.validateMany(group));
|
|
129
|
+
}
|
|
130
|
+
return messages;
|
|
131
|
+
}
|
|
132
|
+
async function validateFile(filePath) {
|
|
133
|
+
let messages = [];
|
|
134
|
+
const ext = FileUtils_1.default.getExtensionFromPath(filePath).toLowerCase();
|
|
135
|
+
if (ext === '') {
|
|
136
|
+
return [{
|
|
137
|
+
severity: 'error',
|
|
138
|
+
message: `The file '${filePath}' doesn't have an extension so cannot determine the file type.`,
|
|
139
|
+
filePath: filePath
|
|
140
|
+
}];
|
|
141
|
+
}
|
|
142
|
+
const content = await FileUtils_1.default.readFileAsync(filePath);
|
|
143
|
+
if (content.trim() === '') {
|
|
144
|
+
return [{
|
|
145
|
+
severity: 'warning',
|
|
146
|
+
message: `The file '${filePath}' is empty or whitespaces.`,
|
|
147
|
+
filePath: filePath
|
|
148
|
+
}];
|
|
149
|
+
}
|
|
150
|
+
// Locate project and load manifest + manifest cache
|
|
151
|
+
const projectPath = BuildUtils_1.default.findWorkspaceFromFile(filePath);
|
|
152
|
+
let fullManifest = undefined;
|
|
153
|
+
let manifestCache = undefined;
|
|
154
|
+
if (projectPath) {
|
|
155
|
+
messages.push({
|
|
156
|
+
severity: 'info',
|
|
157
|
+
message: `Codenotch project located at '${projectPath}'.`
|
|
158
|
+
});
|
|
159
|
+
const manifest = BuildUtils_1.default.getManifestAt(projectPath);
|
|
160
|
+
try {
|
|
161
|
+
manifestCache = BuildUtils_1.default.getManifestCacheAt(projectPath);
|
|
162
|
+
fullManifest = BuildUtils_1.default.getFullManifest(manifest, manifestCache);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
messages.push({
|
|
166
|
+
severity: 'warning',
|
|
167
|
+
message: `Could not load 'manifest.cache.json' in '${projectPath}'.`
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
messages.push({
|
|
173
|
+
severity: 'warning',
|
|
174
|
+
message: `The file '${filePath}' seems to be outside a Codenotch project, could not locate 'manifest.json' file.`
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
const context = {
|
|
178
|
+
filePath: filePath,
|
|
179
|
+
content: content,
|
|
180
|
+
projectPath: projectPath,
|
|
181
|
+
fullManifest: fullManifest,
|
|
182
|
+
manifestCache: manifestCache
|
|
183
|
+
};
|
|
184
|
+
const fileType = ValidationUtils_1.default.determineFileType(filePath);
|
|
185
|
+
try {
|
|
186
|
+
if (fileType === 'bpmn') {
|
|
187
|
+
messages = await BpmnValidator_1.default.validate(context);
|
|
188
|
+
}
|
|
189
|
+
else if (fileType === 'document') {
|
|
190
|
+
messages = await DocumentValidator_1.default.validate(context);
|
|
191
|
+
}
|
|
192
|
+
else if (fileType === 'table') {
|
|
193
|
+
messages = await TableValidator_1.default.validate(context);
|
|
194
|
+
}
|
|
195
|
+
else if (fileType === 'i18n') {
|
|
196
|
+
messages = await I18nValidator_1.default.validate(context);
|
|
197
|
+
}
|
|
198
|
+
else if (fileType === 'dbschema') {
|
|
199
|
+
messages = await DbSchemaValidator_1.default.validate(context);
|
|
200
|
+
}
|
|
201
|
+
else if (fileType === 'manifest') {
|
|
202
|
+
messages = await ManifestValidator_1.default.validate(context);
|
|
203
|
+
}
|
|
204
|
+
else if (fileType === 'app-manifest') {
|
|
205
|
+
messages = await AppManifestValidator_1.default.validate(context);
|
|
206
|
+
}
|
|
207
|
+
else if (fileType === 'script') {
|
|
208
|
+
messages = await ScriptValidator_1.default.validate(context);
|
|
209
|
+
}
|
|
210
|
+
else if (fileType === 'json') {
|
|
211
|
+
messages = await JsonValidator_1.default.validate(context);
|
|
212
|
+
}
|
|
213
|
+
else if (fileType === 'manifest-cache') {
|
|
214
|
+
messages.push(...await ManifestCacheValidator_1.default.validate(context));
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
if (fileType === undefined) {
|
|
218
|
+
messages.push({
|
|
219
|
+
severity: 'warning',
|
|
220
|
+
message: `The file '${filePath}' is not supported by codenotch-cli, cannot validate it.`
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
messages.push({
|
|
225
|
+
severity: 'warning',
|
|
226
|
+
message: `The file type '${fileType}' is not yet implemented by codenotch-cli, cannot validate it. Will be added in a future version.`
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
messages.push({
|
|
233
|
+
severity: 'error',
|
|
234
|
+
message: `Validation failed: ${e instanceof Error ? e.message : String(e)}`
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
// Attach the file to errors/warnings that don't carry one, needed when validating many files
|
|
238
|
+
for (const msg of messages) {
|
|
239
|
+
if (msg.filePath === undefined && msg.severity !== 'info') {
|
|
240
|
+
msg.filePath = filePath;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return messages;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validation/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApplicationManifest, ProjectManifest } from "../models/Codenotch";
|
|
1
|
+
import { ApplicationManifest, IScenarioProjectManifest, IWorkspaceCache, ProjectManifest } from "../models/Codenotch";
|
|
2
2
|
interface IWorkspace {
|
|
3
3
|
manifest: ProjectManifest;
|
|
4
4
|
path: string;
|
|
@@ -28,14 +28,32 @@ export default abstract class BuildUtils {
|
|
|
28
28
|
clusterUrl?: string;
|
|
29
29
|
}): Promise<any>;
|
|
30
30
|
static getTenantName(cluster: string): Promise<string | undefined>;
|
|
31
|
+
/** Compiler options shared by the generated build tsconfig and `cn validate` on script files. */
|
|
32
|
+
static defaultCompilerOptions(): {
|
|
33
|
+
target: string;
|
|
34
|
+
lib: string[];
|
|
35
|
+
allowJs: boolean;
|
|
36
|
+
skipLibCheck: boolean;
|
|
37
|
+
esModuleInterop: boolean;
|
|
38
|
+
allowSyntheticDefaultImports: boolean;
|
|
39
|
+
strict: boolean;
|
|
40
|
+
forceConsistentCasingInFileNames: boolean;
|
|
41
|
+
module: string;
|
|
42
|
+
moduleResolution: string;
|
|
43
|
+
resolveJsonModule: boolean;
|
|
44
|
+
isolatedModules: boolean;
|
|
45
|
+
noEmit: boolean;
|
|
46
|
+
jsx: string;
|
|
47
|
+
};
|
|
31
48
|
private static createTsConfig;
|
|
32
49
|
private static createEmptyModule;
|
|
33
50
|
private static createViteConfig;
|
|
34
51
|
private static createIndexHtml;
|
|
35
52
|
private static createPkgJson;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
53
|
+
static getFullManifest(manifest: IScenarioProjectManifest, manifestCache: IWorkspaceCache): ProjectManifest;
|
|
54
|
+
static getFullManifestAt(folderPath: string): ProjectManifest;
|
|
55
|
+
static getManifestAt(folderPath: string): IScenarioProjectManifest;
|
|
56
|
+
static getManifestCacheAt(folderPath: string): IWorkspaceCache;
|
|
39
57
|
static getAumlVariables(workpace: IWorkspace, tenantName: string | undefined, clusterUrl: string | undefined): {
|
|
40
58
|
serviceName: string;
|
|
41
59
|
tenant: {
|
package/dist/utils/BuildUtils.js
CHANGED
|
@@ -392,24 +392,28 @@ ReactDOM.render(<${fileName} />, document.getElementById('root'));
|
|
|
392
392
|
return undefined;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
+
/** Compiler options shared by the generated build tsconfig and `cn validate` on script files. */
|
|
396
|
+
static defaultCompilerOptions() {
|
|
397
|
+
return {
|
|
398
|
+
"target": "ESNext",
|
|
399
|
+
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
|
400
|
+
"allowJs": true,
|
|
401
|
+
"skipLibCheck": true,
|
|
402
|
+
"esModuleInterop": true,
|
|
403
|
+
"allowSyntheticDefaultImports": true,
|
|
404
|
+
"strict": true,
|
|
405
|
+
"forceConsistentCasingInFileNames": true,
|
|
406
|
+
"module": "ESNext",
|
|
407
|
+
"moduleResolution": "Node",
|
|
408
|
+
"resolveJsonModule": true,
|
|
409
|
+
"isolatedModules": true,
|
|
410
|
+
"noEmit": true, // On demande à tsc de ne PAS générer de fichiers
|
|
411
|
+
"jsx": "react" // "react" correspond au mode classic pour React 16
|
|
412
|
+
};
|
|
413
|
+
}
|
|
395
414
|
static createTsConfig(include = ["src"]) {
|
|
396
415
|
let tsconfig = JSON.stringify({
|
|
397
|
-
"compilerOptions":
|
|
398
|
-
"target": "ESNext",
|
|
399
|
-
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
|
400
|
-
"allowJs": true,
|
|
401
|
-
"skipLibCheck": true,
|
|
402
|
-
"esModuleInterop": true,
|
|
403
|
-
"allowSyntheticDefaultImports": true,
|
|
404
|
-
"strict": true,
|
|
405
|
-
"forceConsistentCasingInFileNames": true,
|
|
406
|
-
"module": "ESNext",
|
|
407
|
-
"moduleResolution": "Node",
|
|
408
|
-
"resolveJsonModule": true,
|
|
409
|
-
"isolatedModules": true,
|
|
410
|
-
"noEmit": true, // On demande à tsc de ne PAS générer de fichiers
|
|
411
|
-
"jsx": "react" // "react" correspond au mode classic pour React 16
|
|
412
|
-
},
|
|
416
|
+
"compilerOptions": this.defaultCompilerOptions(),
|
|
413
417
|
"include": include
|
|
414
418
|
}, null, 4);
|
|
415
419
|
return tsconfig;
|
|
@@ -548,6 +552,31 @@ export default defineConfig({
|
|
|
548
552
|
}
|
|
549
553
|
return pgkJson;
|
|
550
554
|
}
|
|
555
|
+
static getFullManifest(manifest, manifestCache) {
|
|
556
|
+
let result = {
|
|
557
|
+
projectName: manifest.projectName,
|
|
558
|
+
serviceName: manifest.serviceName,
|
|
559
|
+
version: manifest.version,
|
|
560
|
+
index: manifest.index,
|
|
561
|
+
dependencies: manifest.dependencies,
|
|
562
|
+
reactApplications: manifestCache.reactApplications,
|
|
563
|
+
packages: manifest.packages,
|
|
564
|
+
languages: manifest.languages,
|
|
565
|
+
roles: manifest.roles,
|
|
566
|
+
postInstallationProcesses: manifest.postInstallationProcesses,
|
|
567
|
+
apis: manifestCache.apis,
|
|
568
|
+
applications: manifestCache.applications,
|
|
569
|
+
emails: manifestCache.emails,
|
|
570
|
+
documentDataSources: manifestCache.documentDataSources,
|
|
571
|
+
expressComponents: manifestCache.expressComponents,
|
|
572
|
+
htmls: manifestCache.htmls,
|
|
573
|
+
pdfs: manifestCache.pdfs,
|
|
574
|
+
processes: manifestCache.processes,
|
|
575
|
+
scripts: manifestCache.scripts,
|
|
576
|
+
tableDataSources: manifestCache.tableDataSources,
|
|
577
|
+
};
|
|
578
|
+
return result;
|
|
579
|
+
}
|
|
551
580
|
static getFullManifestAt(folderPath) {
|
|
552
581
|
let manifest = this.getManifestAt(folderPath);
|
|
553
582
|
let manifestCache = this.getManifestCacheAt(folderPath);
|