@codenotch/codenotch.cli 1.0.33 → 1.0.35
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/project/new.js +227 -1
- package/dist/commands/project/new.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 +23 -4
- package/dist/utils/BuildUtils.js +46 -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
package/dist/commands/index.js
CHANGED
|
@@ -5,11 +5,13 @@ const system_1 = require("./system");
|
|
|
5
5
|
const react_1 = require("./react");
|
|
6
6
|
const runtime_1 = require("./runtime");
|
|
7
7
|
const project_1 = require("./project");
|
|
8
|
+
const validate_1 = require("./validation/validate");
|
|
8
9
|
// Registration order defines the order in `--help`
|
|
9
10
|
function registerAllCommands(program) {
|
|
10
11
|
(0, system_1.registerSystemCommands)(program);
|
|
11
12
|
(0, react_1.registerReactCommands)(program);
|
|
12
13
|
(0, runtime_1.registerRuntimeCommands)(program);
|
|
13
14
|
(0, project_1.registerProjectCommands)(program);
|
|
15
|
+
(0, validate_1.registerValidate)(program);
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;AAQA,kDAMC;AAbD,qCAAkD;AAClD,mCAAgD;AAChD,uCAAoD;AACpD,uCAAoD;AACpD,oDAAyD;AAEzD,mDAAmD;AACnD,SAAgB,mBAAmB,CAAC,OAAgB;IAChD,IAAA,+BAAsB,EAAC,OAAO,CAAC,CAAC;IAChC,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,13 +1,239 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.registerNew = registerNew;
|
|
4
7
|
const shared_1 = require("./shared");
|
|
8
|
+
const FileUtils_1 = __importDefault(require("../../utils/FileUtils"));
|
|
9
|
+
const fs_extra_1 = require("fs-extra");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const BuildUtils_1 = __importDefault(require("../../utils/BuildUtils"));
|
|
12
|
+
const os_1 = require("os");
|
|
13
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
5
14
|
function registerNew(project) {
|
|
6
15
|
(0, shared_1.withProjectPathOption)(project
|
|
7
16
|
.command('new')
|
|
8
17
|
.description('Create a new project'))
|
|
9
18
|
.action(async (options) => {
|
|
10
|
-
|
|
19
|
+
if (options.projectPath === process.cwd()) {
|
|
20
|
+
options.projectPath = '';
|
|
21
|
+
}
|
|
22
|
+
// Create project folder
|
|
23
|
+
let finalFolder = '';
|
|
24
|
+
if (options.projectPath && options.projectPath.trim() !== '') {
|
|
25
|
+
options.projectPath = (0, path_1.resolve)(FileUtils_1.default.isAbsolutePath(options.projectPath) ? options.projectPath : (0, path_1.join)(process.cwd(), options.projectPath));
|
|
26
|
+
if (await FileUtils_1.default.exists(options.projectPath)) {
|
|
27
|
+
console.error(`Path '${options.projectPath}' already exists.`);
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
finalFolder = options.projectPath;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
finalFolder = (0, path_1.join)(process.cwd(), 'New Codenotch Project');
|
|
35
|
+
let counter = 0;
|
|
36
|
+
while (await FileUtils_1.default.exists(finalFolder)) {
|
|
37
|
+
counter++;
|
|
38
|
+
finalFolder = (0, path_1.join)(process.cwd(), `New Codenotch Project (${counter})`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
(0, fs_extra_1.ensureDirSync)(finalFolder);
|
|
42
|
+
const projectName = FileUtils_1.default.getNameFromPath(finalFolder);
|
|
43
|
+
const serviceName = getServiceName(projectName);
|
|
44
|
+
const folders = [
|
|
45
|
+
(0, path_1.join)(finalFolder, 'processes'),
|
|
46
|
+
(0, path_1.join)(finalFolder, 'apps'),
|
|
47
|
+
(0, path_1.join)(finalFolder, 'documents'),
|
|
48
|
+
(0, path_1.join)(finalFolder, 'typings'),
|
|
49
|
+
(0, path_1.join)(finalFolder, 'tables'),
|
|
50
|
+
];
|
|
51
|
+
const files = [
|
|
52
|
+
{ path: (0, path_1.join)(finalFolder, 'manifest.json'), content: JSON.stringify(getDefaultCodenotchManifest(projectName, serviceName), null, 4) },
|
|
53
|
+
{ path: (0, path_1.join)(finalFolder, 'readme.md'), content: getReadmeMd(projectName, serviceName) },
|
|
54
|
+
{ path: (0, path_1.join)(finalFolder, '.gitignore'), content: ['manifest.cache.json', 'package-lock.json', '/.codenotch', '/node_modules', '/typings'].join('\n') },
|
|
55
|
+
{ path: (0, path_1.join)(finalFolder, 'package.json'), content: JSON.stringify(getDefaultPkgJson(serviceName), null, 4) },
|
|
56
|
+
{ path: (0, path_1.join)(finalFolder, 'apps/index.manifest.json'), content: JSON.stringify(getDefaultAppManifest(), null, 4) },
|
|
57
|
+
{ path: (0, path_1.join)(finalFolder, 'apps/index.tsx'), content: getDefaultApp() },
|
|
58
|
+
];
|
|
59
|
+
for (const folder of folders) {
|
|
60
|
+
(0, fs_extra_1.ensureDirSync)(folder);
|
|
61
|
+
}
|
|
62
|
+
for (const file of files) {
|
|
63
|
+
FileUtils_1.default.writeFileSync(file.path, file.content);
|
|
64
|
+
}
|
|
65
|
+
console.log(`Your new Codenotch project is ready at:`);
|
|
66
|
+
console.log(chalk_1.default.green(finalFolder));
|
|
67
|
+
console.log(``);
|
|
68
|
+
console.log(`You can now execute:`);
|
|
69
|
+
console.log(chalk_1.default.green(`cd '${finalFolder}'`));
|
|
70
|
+
console.log(``);
|
|
71
|
+
console.log(`Or open ${chalk_1.default.blueBright('Codenotch IDE')}`);
|
|
72
|
+
const downloads = {
|
|
73
|
+
"win": "https://codenotchide.blob.core.windows.net/release-desktop-win/Codenotch%20Latest.exe?sv=2023-01-03&ss=btqf&srt=sco&spr=https%2Chttp&st=2025-08-28T12%3A46%3A05Z&se=2039-06-23T15%3A46%3A00Z&sp=rlp&sig=7ivKIFM4nANK4VzdKp20bzaNZhaZZ51YIvzriUacxBw%3D",
|
|
74
|
+
"linux": "https://codenotchide.blob.core.windows.net/release-desktop-linux/codenotch-ide_latest_amd64.deb?sv=2023-01-03&ss=btqf&srt=sco&spr=https%2Chttp&st=2025-08-28T12%3A46%3A05Z&se=2039-06-23T15%3A46%3A00Z&sp=rlp&sig=7ivKIFM4nANK4VzdKp20bzaNZhaZZ51YIvzriUacxBw%3D",
|
|
75
|
+
};
|
|
76
|
+
const url = downloads[(0, os_1.platform)()];
|
|
77
|
+
if (url) {
|
|
78
|
+
console.log(`Download link:`);
|
|
79
|
+
console.log(chalk_1.default.green(url));
|
|
80
|
+
}
|
|
11
81
|
});
|
|
12
82
|
}
|
|
83
|
+
function getDefaultAppManifest() {
|
|
84
|
+
const m = {
|
|
85
|
+
"app": {
|
|
86
|
+
"name": "index"
|
|
87
|
+
},
|
|
88
|
+
"html": {
|
|
89
|
+
"title": "index"
|
|
90
|
+
},
|
|
91
|
+
"pwa": {
|
|
92
|
+
"name": "index",
|
|
93
|
+
"display": "standalone",
|
|
94
|
+
"display_override": [
|
|
95
|
+
"window-controls-overlay"
|
|
96
|
+
],
|
|
97
|
+
"start_url": "./",
|
|
98
|
+
"icons": [
|
|
99
|
+
{
|
|
100
|
+
"src": "logo512.png",
|
|
101
|
+
"sizes": "512x512",
|
|
102
|
+
"type": "image/png"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"src": "logo192.png",
|
|
106
|
+
"sizes": "192x192",
|
|
107
|
+
"type": "image/png"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return m;
|
|
113
|
+
}
|
|
114
|
+
function getDefaultApp() {
|
|
115
|
+
return `import React from 'react';
|
|
116
|
+
import { useCodenotch } from '@codenotch/codenotch.react';
|
|
117
|
+
|
|
118
|
+
const index: React.FC<{}> = () => {
|
|
119
|
+
const cn = useCodenotch();
|
|
120
|
+
|
|
121
|
+
return <div>
|
|
122
|
+
<h1>My new Codenotch App</h1>
|
|
123
|
+
<pre>{JSON.stringify(cn.env, null, 4)}</pre>
|
|
124
|
+
</div>
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export default index;`;
|
|
128
|
+
}
|
|
129
|
+
function getReadmeMd(projectName, serviceName) {
|
|
130
|
+
return `
|
|
131
|
+
# ${projectName}
|
|
132
|
+
|
|
133
|
+
A [Codenotch](https://codenotch.com/) project. Codenotch is a full-stack platform for building and deploying business applications: the backend is made of BPMN workflows, data is stored in SQL tables and NoSQL documents, and the (optional) UI is written in React/TypeScript.
|
|
134
|
+
|
|
135
|
+
## Project structure
|
|
136
|
+
|
|
137
|
+
| Path | Purpose |
|
|
138
|
+
| --- | --- |
|
|
139
|
+
| \`manifest.json\` | Project metadata (name, service name, languages, roles…). |
|
|
140
|
+
| \`processes/\` | \`.bpmn\` workflows: server-side logic, API endpoints, data persistence. |
|
|
141
|
+
| \`tables/\` | \`.table\` SQL table definitions. |
|
|
142
|
+
| \`documents/\` | \`.jschema\` NoSQL document schemas. |
|
|
143
|
+
| \`apps/\` | \`.tsx\` React apps and components. |
|
|
144
|
+
| \`typings/\` | Auto-generated TypeScript typings (never edit by hand). |
|
|
145
|
+
| \`*.i18n.csv\` | Translations. |
|
|
146
|
+
|
|
147
|
+
The service name of this project is \`${serviceName}\`. It is part of the project URL and referenced throughout the project files, so avoid changing it afterwards.
|
|
148
|
+
|
|
149
|
+
## Getting started
|
|
150
|
+
|
|
151
|
+
1. Install the dependencies (required before building any React app):
|
|
152
|
+
|
|
153
|
+
\`\`\`sh
|
|
154
|
+
npm install
|
|
155
|
+
\`\`\`
|
|
156
|
+
|
|
157
|
+
2. Make sure the Codenotch CLI and runtime are available:
|
|
158
|
+
|
|
159
|
+
\`\`\`sh
|
|
160
|
+
npm install -g @codenotch/codenotch.cli
|
|
161
|
+
cn runtime update
|
|
162
|
+
cn runtime start
|
|
163
|
+
\`\`\`
|
|
164
|
+
|
|
165
|
+
3. Build, deploy and open the project on the local runtime:
|
|
166
|
+
|
|
167
|
+
\`\`\`sh
|
|
168
|
+
cn project start
|
|
169
|
+
\`\`\`
|
|
170
|
+
|
|
171
|
+
## Useful commands
|
|
172
|
+
|
|
173
|
+
| Command | Description |
|
|
174
|
+
| --- | --- |
|
|
175
|
+
| \`cn project start\` | Build, deploy and start the project locally. |
|
|
176
|
+
| \`cn project refresh\` | Re-sync the running project after changes. |
|
|
177
|
+
| \`cn project inspect\` | Validate the project and print diagnostics. |
|
|
178
|
+
| \`cn project test\` | Run the project tests. |
|
|
179
|
+
| \`cn project package\` | Build a deployable zip. |
|
|
180
|
+
| \`cn project deploy <service> <zip>\` | Deploy a packaged zip to a service. |
|
|
181
|
+
| \`cn runtime portal\` | Open the local runtime portal. |
|
|
182
|
+
|
|
183
|
+
Run \`cn --help\` for the full list of commands. You can also open this project in the Codenotch IDE.
|
|
184
|
+
`.trim() + '\n';
|
|
185
|
+
}
|
|
186
|
+
function getServiceName(projectName) {
|
|
187
|
+
let serviceName = projectName
|
|
188
|
+
// 1. Normalise et supprime les accents (ex: "é" -> "e", "ç" -> "c")
|
|
189
|
+
.normalize("NFD")
|
|
190
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
191
|
+
// 2. Remplace les espaces, tabulations et tirets (-) par des tirets bas (_)
|
|
192
|
+
.replace(/[-\s]+/g, '_')
|
|
193
|
+
// 3. Supprime les caractères spéciaux restants qui ne correspondent pas à [\w.]
|
|
194
|
+
.replace(/[^\w.]/g, '')
|
|
195
|
+
// 4. Nettoie les éventuels tirets bas ou points consécutifs (ex: "__" ou ".." -> "_")
|
|
196
|
+
.replace(/__+/g, '_')
|
|
197
|
+
.replace(/\.\.+/g, '.');
|
|
198
|
+
// Validation finale de sécurité
|
|
199
|
+
if (!serviceName || !/[\w.]+/.test(serviceName)) {
|
|
200
|
+
serviceName = '';
|
|
201
|
+
}
|
|
202
|
+
return serviceName;
|
|
203
|
+
}
|
|
204
|
+
function getDefaultPkgJson(serviceName) {
|
|
205
|
+
return {
|
|
206
|
+
"name": serviceName,
|
|
207
|
+
"version": "0.0.0",
|
|
208
|
+
"description": "New Codenotch Project",
|
|
209
|
+
"main": "index.js",
|
|
210
|
+
"scripts": {},
|
|
211
|
+
"keywords": [],
|
|
212
|
+
"author": "",
|
|
213
|
+
"license": "MIT",
|
|
214
|
+
"dependencies": {
|
|
215
|
+
"react": "^19.2.8",
|
|
216
|
+
"react-dom": "^19.2.8",
|
|
217
|
+
"@codenotch/codenotch.react": BuildUtils_1.default.CN_REACT_VERSION
|
|
218
|
+
},
|
|
219
|
+
"devDependencies": {
|
|
220
|
+
"@types/react": "^19.2.18",
|
|
221
|
+
"@types/react-dom": "^19.2.4",
|
|
222
|
+
"@vitejs/plugin-react": "^6.0.5",
|
|
223
|
+
"typescript": "^5.9.3"
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function getDefaultCodenotchManifest(projectName, serviceName) {
|
|
228
|
+
return {
|
|
229
|
+
packages: {},
|
|
230
|
+
projectName: projectName,
|
|
231
|
+
serviceName: serviceName,
|
|
232
|
+
languages: ['en', 'de', 'fr'],
|
|
233
|
+
roles: [],
|
|
234
|
+
version: '0.0.0',
|
|
235
|
+
dependencies: [],
|
|
236
|
+
postInstallationProcesses: []
|
|
237
|
+
};
|
|
238
|
+
}
|
|
13
239
|
//# sourceMappingURL=new.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/commands/project/new.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/commands/project/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { AbstractRecordContainer, ICompilationMessage, ProjectManifest, TableDefinition } from '@codenotch/codenotch.core';
|
|
3
|
+
import { IWorkspaceCache } from '../../models/Codenotch';
|
|
4
|
+
export type KnownFiles = 'bpmn' | 'manifest' | 'table' | 'document' | 'dbschema' | 'i18n' | 'script' | 'json' | 'manifest-cache' | 'app-manifest';
|
|
5
|
+
/** Everything a file validator may need: the file itself and the surrounding Codenotch project when one was found. */
|
|
6
|
+
export interface ValidationContext {
|
|
7
|
+
filePath: string;
|
|
8
|
+
content: string;
|
|
9
|
+
projectPath?: string;
|
|
10
|
+
fullManifest?: ProjectManifest;
|
|
11
|
+
manifestCache?: IWorkspaceCache;
|
|
12
|
+
}
|
|
13
|
+
export default abstract class ValidationUtils {
|
|
14
|
+
static determineFileType(filePath: string): KnownFiles | undefined;
|
|
15
|
+
static formatCompilationMessage(msg: ICompilationMessage): string;
|
|
16
|
+
static tsDiagnosticToMessage(diagnostic: ts.Diagnostic): ICompilationMessage;
|
|
17
|
+
static validateJsonSyntax(content: string, filePath: string): ICompilationMessage[];
|
|
18
|
+
/** Lists all files under a folder, skipping dot-folders and generated/vendored directories. */
|
|
19
|
+
static listFilesRecursive(folderPath: string): string[];
|
|
20
|
+
static loadProjectTables(context: ValidationContext): Promise<{
|
|
21
|
+
service: string;
|
|
22
|
+
model: TableDefinition;
|
|
23
|
+
}[]>;
|
|
24
|
+
static loadProjectDocuments(context: ValidationContext): Promise<{
|
|
25
|
+
service: string;
|
|
26
|
+
model: AbstractRecordContainer;
|
|
27
|
+
}[]>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
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 path_1 = __importDefault(require("path"));
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
9
|
+
const FileUtils_1 = __importDefault(require("../../utils/FileUtils"));
|
|
10
|
+
const codenotch_core_1 = require("@codenotch/codenotch.core");
|
|
11
|
+
class ValidationUtils {
|
|
12
|
+
static determineFileType(filePath) {
|
|
13
|
+
const name = FileUtils_1.default.getNameFromPath(filePath);
|
|
14
|
+
const ext = FileUtils_1.default.getExtensionFromPath(filePath).toLowerCase();
|
|
15
|
+
if (ext === 'bpmn') {
|
|
16
|
+
return 'bpmn';
|
|
17
|
+
}
|
|
18
|
+
else if (ext === 'jschema') {
|
|
19
|
+
return 'document';
|
|
20
|
+
}
|
|
21
|
+
else if (ext === 'table') {
|
|
22
|
+
return 'table';
|
|
23
|
+
}
|
|
24
|
+
else if (ext === 'csv' && name.endsWith('.i18n.csv')) {
|
|
25
|
+
return 'i18n';
|
|
26
|
+
}
|
|
27
|
+
else if (name === 'db-schema.xml') {
|
|
28
|
+
return 'dbschema';
|
|
29
|
+
}
|
|
30
|
+
else if (name === 'manifest.json') {
|
|
31
|
+
return 'manifest';
|
|
32
|
+
}
|
|
33
|
+
else if (name === 'manifest.cache.json') {
|
|
34
|
+
return 'manifest-cache';
|
|
35
|
+
}
|
|
36
|
+
else if (name.endsWith('.manifest.json')) {
|
|
37
|
+
return 'app-manifest';
|
|
38
|
+
}
|
|
39
|
+
else if (['ts', 'tsx', 'js', 'jsx', 'cjs', 'mjs', 'cts', 'mts'].includes(ext)) {
|
|
40
|
+
return 'script';
|
|
41
|
+
}
|
|
42
|
+
else if (ext === 'json') {
|
|
43
|
+
return 'json';
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
static formatCompilationMessage(msg) {
|
|
48
|
+
let result = '';
|
|
49
|
+
if (msg.filePath) {
|
|
50
|
+
result += msg.filePath;
|
|
51
|
+
}
|
|
52
|
+
if (msg.line !== undefined) {
|
|
53
|
+
result += `(${msg.line}${msg.column !== undefined ? `,${msg.column}` : ''})`;
|
|
54
|
+
}
|
|
55
|
+
if (result !== '') {
|
|
56
|
+
result += ': ';
|
|
57
|
+
}
|
|
58
|
+
result += msg.severity;
|
|
59
|
+
if (msg.code) {
|
|
60
|
+
result += ` ${msg.code}`;
|
|
61
|
+
}
|
|
62
|
+
result += `: ${msg.message}`;
|
|
63
|
+
if (msg.target) {
|
|
64
|
+
result += ` (at '${msg.target}')`;
|
|
65
|
+
}
|
|
66
|
+
return result.trim();
|
|
67
|
+
}
|
|
68
|
+
static tsDiagnosticToMessage(diagnostic) {
|
|
69
|
+
const message = {
|
|
70
|
+
severity: diagnostic.category === typescript_1.default.DiagnosticCategory.Error ? 'error'
|
|
71
|
+
: diagnostic.category === typescript_1.default.DiagnosticCategory.Warning ? 'warning'
|
|
72
|
+
: 'info',
|
|
73
|
+
message: typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, '\n'),
|
|
74
|
+
code: `TS${diagnostic.code}`
|
|
75
|
+
};
|
|
76
|
+
if (diagnostic.file && diagnostic.start !== undefined) {
|
|
77
|
+
const pos = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
78
|
+
message.filePath = diagnostic.file.fileName;
|
|
79
|
+
message.line = pos.line + 1;
|
|
80
|
+
message.column = pos.character + 1;
|
|
81
|
+
}
|
|
82
|
+
return message;
|
|
83
|
+
}
|
|
84
|
+
static validateJsonSyntax(content, filePath) {
|
|
85
|
+
const messages = [];
|
|
86
|
+
// The TypeScript JSON parser reports every error with a precise position
|
|
87
|
+
const sourceFile = typescript_1.default.parseJsonText(FileUtils_1.default.getNameFromPath(filePath), content);
|
|
88
|
+
const parseDiagnostics = sourceFile.parseDiagnostics ?? []; // internal but stable API
|
|
89
|
+
for (const diagnostic of parseDiagnostics) {
|
|
90
|
+
const message = this.tsDiagnosticToMessage(diagnostic);
|
|
91
|
+
message.filePath = filePath;
|
|
92
|
+
messages.push(message);
|
|
93
|
+
}
|
|
94
|
+
// JSON.parse rejects what the TypeScript parser tolerates (comments, trailing commas...)
|
|
95
|
+
// A leading UTF-8 BOM is legitimate though, strip it before parsing.
|
|
96
|
+
if (messages.length === 0) {
|
|
97
|
+
try {
|
|
98
|
+
JSON.parse(content.charCodeAt(0) === 0xFEFF ? content.slice(1) : content);
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
const message = {
|
|
102
|
+
severity: 'error',
|
|
103
|
+
message: e instanceof Error ? e.message : String(e),
|
|
104
|
+
code: 'json/invalid',
|
|
105
|
+
filePath: filePath
|
|
106
|
+
};
|
|
107
|
+
const position = /at position (\d+)(?: \(line (\d+) column (\d+)\))?/.exec(message.message);
|
|
108
|
+
if (position && position[2] !== undefined) {
|
|
109
|
+
message.line = Number(position[2]);
|
|
110
|
+
message.column = Number(position[3]);
|
|
111
|
+
}
|
|
112
|
+
else if (position) {
|
|
113
|
+
const before = content.slice(0, Number(position[1]));
|
|
114
|
+
message.line = before.split('\n').length;
|
|
115
|
+
message.column = Number(position[1]) - before.lastIndexOf('\n');
|
|
116
|
+
}
|
|
117
|
+
messages.push(message);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return messages;
|
|
121
|
+
}
|
|
122
|
+
/** Lists all files under a folder, skipping dot-folders and generated/vendored directories. */
|
|
123
|
+
static listFilesRecursive(folderPath) {
|
|
124
|
+
const ignoredFolders = ['node_modules', 'dist', 'build', 'typings'];
|
|
125
|
+
const files = [];
|
|
126
|
+
const visit = (dir) => {
|
|
127
|
+
for (const entry of (0, fs_1.readdirSync)(dir, { withFileTypes: true })) {
|
|
128
|
+
if (entry.isDirectory()) {
|
|
129
|
+
if (entry.name.startsWith('.') || ignoredFolders.includes(entry.name.toLowerCase())) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
visit(path_1.default.join(dir, entry.name));
|
|
133
|
+
}
|
|
134
|
+
else if (entry.isFile()) {
|
|
135
|
+
files.push(path_1.default.join(dir, entry.name));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
visit(folderPath);
|
|
140
|
+
return files;
|
|
141
|
+
}
|
|
142
|
+
static async loadProjectTables(context) {
|
|
143
|
+
const { fullManifest, projectPath } = context;
|
|
144
|
+
if (fullManifest === undefined || projectPath === undefined) {
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
const tables = [];
|
|
148
|
+
for (const manifestTable of fullManifest.tableDataSources) {
|
|
149
|
+
try {
|
|
150
|
+
const tablePath = path_1.default.join(projectPath, manifestTable.file);
|
|
151
|
+
const tableJson = await FileUtils_1.default.readFileAsync(tablePath);
|
|
152
|
+
const table = (new codenotch_core_1.TableCompiler()).deserialize(tableJson);
|
|
153
|
+
tables.push({ service: fullManifest.serviceName, model: table });
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Fail silently
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return tables;
|
|
160
|
+
}
|
|
161
|
+
static async loadProjectDocuments(context) {
|
|
162
|
+
const { fullManifest, projectPath } = context;
|
|
163
|
+
if (fullManifest === undefined || projectPath === undefined) {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
const documents = [];
|
|
167
|
+
for (const manifestDoc of fullManifest.documentDataSources) {
|
|
168
|
+
try {
|
|
169
|
+
const docPath = path_1.default.join(projectPath, manifestDoc.file);
|
|
170
|
+
const docJson = await FileUtils_1.default.readFileAsync(docPath);
|
|
171
|
+
const doc = (new codenotch_core_1.DocumentCompiler()).deserialize(docJson);
|
|
172
|
+
documents.push({ service: fullManifest.serviceName, model: doc });
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Fail silently
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return documents;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.default = ValidationUtils;
|
|
182
|
+
//# sourceMappingURL=ValidationUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../../src/commands/validation/ValidationUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ICompilationMessage } from '@codenotch/codenotch.core';
|
|
2
|
+
import { ValidationContext } from '../ValidationUtils';
|
|
3
|
+
/** Validates a react application manifest ('<App>.manifest.json', not the project 'manifest.json'). */
|
|
4
|
+
export default abstract class AppManifestValidator {
|
|
5
|
+
static validate(context: ValidationContext): Promise<ICompilationMessage[]>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
const path_1 = __importStar(require("path"));
|
|
40
|
+
const fs_1 = require("fs");
|
|
41
|
+
const ValidationUtils_1 = __importDefault(require("../ValidationUtils"));
|
|
42
|
+
const APP_SCOPES = ['Public', 'Internal', 'External'];
|
|
43
|
+
/** Validates a react application manifest ('<App>.manifest.json', not the project 'manifest.json'). */
|
|
44
|
+
class AppManifestValidator {
|
|
45
|
+
static async validate(context) {
|
|
46
|
+
const messages = ValidationUtils_1.default.validateJsonSyntax(context.content, context.filePath);
|
|
47
|
+
if (messages.some(m => m.severity === 'error')) {
|
|
48
|
+
return messages;
|
|
49
|
+
}
|
|
50
|
+
const manifest = JSON.parse(context.content);
|
|
51
|
+
// The application file must live next to its manifest (App.manifest.json -> App.tsx)
|
|
52
|
+
const folder = path_1.default.dirname(context.filePath);
|
|
53
|
+
const baseName = path_1.default.basename(context.filePath).replace(/\.manifest\.json$/i, '');
|
|
54
|
+
const appFile = ['.tsx', '.jsx', '.auml'].map(ext => (0, path_1.join)(folder, baseName + ext)).find(f => (0, fs_1.existsSync)(f));
|
|
55
|
+
if (appFile === undefined) {
|
|
56
|
+
messages.push({
|
|
57
|
+
severity: 'error',
|
|
58
|
+
message: `No application file ('${baseName}.tsx') found next to this app manifest.`,
|
|
59
|
+
target: baseName
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (`${manifest.auml?.name ?? ''}`.trim() === '') {
|
|
63
|
+
messages.push({
|
|
64
|
+
severity: 'error',
|
|
65
|
+
message: `The app manifest must define 'auml.name', it is used as the application name by the build.`,
|
|
66
|
+
target: 'auml.name'
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (manifest.auml?.scope !== undefined && APP_SCOPES.includes(manifest.auml.scope) === false) {
|
|
70
|
+
messages.push({
|
|
71
|
+
severity: 'error',
|
|
72
|
+
message: `Invalid scope '${manifest.auml.scope}', expected one of: ${APP_SCOPES.join(', ')}.`,
|
|
73
|
+
target: 'auml.scope'
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Roles must be declared in the project manifest
|
|
77
|
+
if (context.fullManifest) {
|
|
78
|
+
const knownRoles = (context.fullManifest.roles ?? []).map(r => r.name);
|
|
79
|
+
for (const role of manifest.auml?.roles ?? []) {
|
|
80
|
+
if (knownRoles.includes(role) === false) {
|
|
81
|
+
messages.push({
|
|
82
|
+
severity: 'error',
|
|
83
|
+
message: `The role '${role}' is not declared in the project 'manifest.json' (known roles: ${knownRoles.length > 0 ? knownRoles.join(', ') : 'none'}).`,
|
|
84
|
+
target: 'auml.roles'
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return messages;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.default = AppManifestValidator;
|
|
93
|
+
//# sourceMappingURL=AppManifestValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppManifestValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/AppManifestValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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_workflow_1 = require("@codenotch/codenotch.core.workflow");
|
|
7
|
+
const TaskUtils_1 = __importDefault(require("@codenotch/codenotch.core.workflow/dist/utils/TaskUtils"));
|
|
8
|
+
const ValidationUtils_1 = __importDefault(require("../ValidationUtils"));
|
|
9
|
+
class BpmnValidator {
|
|
10
|
+
static async validate(context) {
|
|
11
|
+
const { fullManifest, projectPath } = context;
|
|
12
|
+
let provider;
|
|
13
|
+
if (fullManifest && projectPath) {
|
|
14
|
+
const tables = await ValidationUtils_1.default.loadProjectTables(context);
|
|
15
|
+
const documents = await ValidationUtils_1.default.loadProjectDocuments(context);
|
|
16
|
+
provider = new codenotch_core_workflow_1.StaticWorkflowDataProvider([fullManifest], fullManifest.serviceName, tables, documents, []);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
provider = new codenotch_core_workflow_1.StaticWorkflowDataProvider([], '');
|
|
20
|
+
}
|
|
21
|
+
// to avoid console warning
|
|
22
|
+
TaskUtils_1.default.getUserConfig = () => undefined;
|
|
23
|
+
const compiler = new codenotch_core_workflow_1.WorkflowBpmnCompiler({
|
|
24
|
+
currentProjectName: fullManifest ? fullManifest.projectName : '',
|
|
25
|
+
provider: provider,
|
|
26
|
+
projectManifests: fullManifest ? [fullManifest] : []
|
|
27
|
+
});
|
|
28
|
+
return await compiler.validate(context.content);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = BpmnValidator;
|
|
32
|
+
//# sourceMappingURL=BpmnValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BpmnValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/BpmnValidator.ts"],"names":[],"mappings":";;;;;AACA,gFAAsG;AACtG,wGAAgF;AAChF,yEAAwE;AAExE,MAA8B,aAAa;IAEvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAA0B;QAC5C,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAE9C,IAAI,QAAoC,CAAC;QACzC,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,yBAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,MAAM,yBAAe,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACtE,QAAQ,GAAG,IAAI,oDAA0B,CAAC,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/G,CAAC;aACI,CAAC;YACF,QAAQ,GAAG,IAAI,oDAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,2BAA2B;QAC3B,mBAAS,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;QAE1C,MAAM,QAAQ,GAAG,IAAI,8CAAoB,CAAC;YACtC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YAChE,QAAQ,EAAE,QAAQ;YAClB,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;SACvD,CAAC,CAAC;QAEH,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;CACJ;AA1BD,gCA0BC"}
|