@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.
Files changed (149) hide show
  1. package/README.md +2 -2
  2. package/dist/commands/generate/app.d.ts +2 -0
  3. package/dist/commands/generate/app.js +45 -0
  4. package/dist/commands/generate/app.js.map +1 -0
  5. package/dist/commands/generate/appmanifest.d.ts +2 -0
  6. package/dist/commands/generate/appmanifest.js +34 -0
  7. package/dist/commands/generate/appmanifest.js.map +1 -0
  8. package/dist/commands/generate/dbcontext.d.ts +2 -0
  9. package/dist/commands/generate/dbcontext.js +32 -0
  10. package/dist/commands/generate/dbcontext.js.map +1 -0
  11. package/dist/commands/generate/i18n.d.ts +2 -0
  12. package/dist/commands/generate/i18n.js +29 -0
  13. package/dist/commands/generate/i18n.js.map +1 -0
  14. package/dist/commands/generate/index.d.ts +2 -0
  15. package/dist/commands/generate/index.js +23 -0
  16. package/dist/commands/generate/index.js.map +1 -0
  17. package/dist/commands/generate/manifest.d.ts +2 -0
  18. package/dist/commands/generate/manifest.js +29 -0
  19. package/dist/commands/generate/manifest.js.map +1 -0
  20. package/dist/commands/generate/openapi.d.ts +2 -0
  21. package/dist/commands/generate/openapi.js +32 -0
  22. package/dist/commands/generate/openapi.js.map +1 -0
  23. package/dist/commands/generate/pkg.d.ts +2 -0
  24. package/dist/commands/generate/pkg.js +34 -0
  25. package/dist/commands/generate/pkg.js.map +1 -0
  26. package/dist/commands/generate/shared.d.ts +17 -0
  27. package/dist/commands/generate/shared.js +70 -0
  28. package/dist/commands/generate/shared.js.map +1 -0
  29. package/dist/commands/index.js +2 -0
  30. package/dist/commands/index.js.map +1 -1
  31. package/dist/commands/project/new.js +107 -187
  32. package/dist/commands/project/new.js.map +1 -1
  33. package/dist/commands/react/build.js +11 -5
  34. package/dist/commands/react/build.js.map +1 -1
  35. package/dist/commands/react/clean.d.ts +2 -0
  36. package/dist/commands/react/clean.js +46 -0
  37. package/dist/commands/react/clean.js.map +1 -0
  38. package/dist/commands/react/dev.d.ts +2 -0
  39. package/dist/commands/react/dev.js +27 -0
  40. package/dist/commands/react/dev.js.map +1 -0
  41. package/dist/commands/react/index.js +5 -1
  42. package/dist/commands/react/index.js.map +1 -1
  43. package/dist/commands/react/serve.js +33 -4
  44. package/dist/commands/react/serve.js.map +1 -1
  45. package/dist/commands/react/shared.d.ts +21 -0
  46. package/dist/commands/react/shared.js +80 -0
  47. package/dist/commands/react/shared.js.map +1 -0
  48. package/dist/commands/system/info.js +0 -7
  49. package/dist/commands/system/info.js.map +1 -1
  50. package/dist/commands/validation/ValidationUtils.d.ts +3 -13
  51. package/dist/commands/validation/ValidationUtils.js +5 -58
  52. package/dist/commands/validation/ValidationUtils.js.map +1 -1
  53. package/dist/commands/validation/files/AppManifestValidator.js +5 -20
  54. package/dist/commands/validation/files/AppManifestValidator.js.map +1 -1
  55. package/dist/commands/validation/files/I18nValidator.d.ts +24 -0
  56. package/dist/commands/validation/files/I18nValidator.js +190 -5
  57. package/dist/commands/validation/files/I18nValidator.js.map +1 -1
  58. package/dist/commands/validation/files/{BpmnValidator.d.ts → ProjectManifestValidator.d.ts} +1 -1
  59. package/dist/commands/validation/files/ProjectManifestValidator.js +31 -0
  60. package/dist/commands/validation/files/ProjectManifestValidator.js.map +1 -0
  61. package/dist/commands/validation/files/ScriptValidator.d.ts +6 -2
  62. package/dist/commands/validation/files/ScriptValidator.js +1 -1
  63. package/dist/commands/validation/files/ScriptValidator.js.map +1 -1
  64. package/dist/commands/validation/validate.js +15 -46
  65. package/dist/commands/validation/validate.js.map +1 -1
  66. package/dist/models/Codenotch.d.ts +0 -205
  67. package/dist/models/Codenotch.js +0 -211
  68. package/dist/models/Codenotch.js.map +1 -1
  69. package/dist/utils/BuildUtils.d.ts +66 -28
  70. package/dist/utils/BuildUtils.js +292 -330
  71. package/dist/utils/BuildUtils.js.map +1 -1
  72. package/dist/utils/ConsoleUtils.d.ts +13 -0
  73. package/dist/utils/ConsoleUtils.js +50 -0
  74. package/dist/utils/ConsoleUtils.js.map +1 -1
  75. package/dist/utils/DbSchemaUtils.d.ts +49 -0
  76. package/dist/utils/DbSchemaUtils.js +246 -0
  77. package/dist/utils/DbSchemaUtils.js.map +1 -0
  78. package/dist/utils/FileUtils.d.ts +104 -15
  79. package/dist/utils/FileUtils.js +285 -100
  80. package/dist/utils/FileUtils.js.map +1 -1
  81. package/dist/utils/GitHubAuthUtils.js.map +1 -1
  82. package/dist/utils/I18nTsUtils.d.ts +66 -0
  83. package/dist/utils/I18nTsUtils.js +221 -0
  84. package/dist/utils/I18nTsUtils.js.map +1 -0
  85. package/dist/utils/ManifestUtils.d.ts +24 -0
  86. package/dist/utils/ManifestUtils.js +53 -0
  87. package/dist/utils/ManifestUtils.js.map +1 -0
  88. package/dist/utils/OpenApiUtils.d.ts +81 -0
  89. package/dist/utils/OpenApiUtils.js +123 -0
  90. package/dist/utils/OpenApiUtils.js.map +1 -0
  91. package/dist/utils/ProjectCompilationUtils.d.ts +3 -30
  92. package/dist/utils/ProjectCompilationUtils.js +26 -760
  93. package/dist/utils/ProjectCompilationUtils.js.map +1 -1
  94. package/dist/utils/ProjectGeneratorUtils.d.ts +35 -0
  95. package/dist/utils/ProjectGeneratorUtils.js +119 -0
  96. package/dist/utils/ProjectGeneratorUtils.js.map +1 -0
  97. package/dist/utils/ProjectTemplates.d.ts +102 -0
  98. package/dist/utils/ProjectTemplates.js +284 -0
  99. package/dist/utils/ProjectTemplates.js.map +1 -0
  100. package/dist/utils/ProjectUtils.d.ts +217 -4
  101. package/dist/utils/ProjectUtils.js +386 -50
  102. package/dist/utils/ProjectUtils.js.map +1 -1
  103. package/dist/utils/RuntimeUtils.js +14 -8
  104. package/dist/utils/RuntimeUtils.js.map +1 -1
  105. package/dist/utils/ScriptDeclarationUtils.d.ts +169 -0
  106. package/dist/utils/ScriptDeclarationUtils.js +398 -0
  107. package/dist/utils/ScriptDeclarationUtils.js.map +1 -0
  108. package/dist/utils/ServeUtils.d.ts +0 -1
  109. package/dist/utils/ServeUtils.js +11 -29
  110. package/dist/utils/ServeUtils.js.map +1 -1
  111. package/dist/utils/ShellUtils.d.ts +6 -0
  112. package/dist/utils/ShellUtils.js +13 -0
  113. package/dist/utils/ShellUtils.js.map +1 -1
  114. package/dist/utils/TemplateUtils.d.ts +62 -0
  115. package/dist/utils/TemplateUtils.js +218 -0
  116. package/dist/utils/TemplateUtils.js.map +1 -0
  117. package/dist/utils/TypeSchemaUtils.d.ts +42 -0
  118. package/dist/utils/TypeSchemaUtils.js +171 -0
  119. package/dist/utils/TypeSchemaUtils.js.map +1 -0
  120. package/package.json +3 -3
  121. package/dist/commands/validation/files/BpmnValidator.js +0 -32
  122. package/dist/commands/validation/files/BpmnValidator.js.map +0 -1
  123. package/dist/commands/validation/files/DbSchemaValidator.d.ts +0 -5
  124. package/dist/commands/validation/files/DbSchemaValidator.js +0 -16
  125. package/dist/commands/validation/files/DbSchemaValidator.js.map +0 -1
  126. package/dist/commands/validation/files/DocumentValidator.d.ts +0 -5
  127. package/dist/commands/validation/files/DocumentValidator.js +0 -12
  128. package/dist/commands/validation/files/DocumentValidator.js.map +0 -1
  129. package/dist/commands/validation/files/ManifestCacheValidator.d.ts +0 -5
  130. package/dist/commands/validation/files/ManifestCacheValidator.js +0 -121
  131. package/dist/commands/validation/files/ManifestCacheValidator.js.map +0 -1
  132. package/dist/commands/validation/files/ManifestValidator.d.ts +0 -5
  133. package/dist/commands/validation/files/ManifestValidator.js +0 -14
  134. package/dist/commands/validation/files/ManifestValidator.js.map +0 -1
  135. package/dist/commands/validation/files/TableValidator.d.ts +0 -5
  136. package/dist/commands/validation/files/TableValidator.js +0 -19
  137. package/dist/commands/validation/files/TableValidator.js.map +0 -1
  138. package/dist/models/DbModels.d.ts +0 -221
  139. package/dist/models/DbModels.js +0 -130
  140. package/dist/models/DbModels.js.map +0 -1
  141. package/dist/models/OpenApiModels.d.ts +0 -115
  142. package/dist/models/OpenApiModels.js +0 -103
  143. package/dist/models/OpenApiModels.js.map +0 -1
  144. package/dist/utils/I18nUtils.d.ts +0 -9
  145. package/dist/utils/I18nUtils.js +0 -54
  146. package/dist/utils/I18nUtils.js.map +0 -1
  147. package/dist/utils/OpenAPIUtils.d.ts +0 -33
  148. package/dist/utils/OpenAPIUtils.js +0 -279
  149. 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
- await FileUtils_1.default.zipFolder(tempRoot, outputPath);
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.delete(tempRoot);
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
- console.log(`${chalk_1.default.gray("Path:")} ${node_path_1.default.resolve(projectPath)}`);
94
- console.log(`${chalk_1.default.gray("Project:")} ${chalk_1.default.cyan(projectName)}`);
95
- console.log(`${chalk_1.default.gray("Service:")} ${chalk_1.default.cyan(serviceName)}`);
96
- console.log(`${chalk_1.default.gray("Version:")} ${chalk_1.default.cyan(version)}`);
97
- console.log(`${chalk_1.default.gray("Index:")} ${chalk_1.default.cyan(index)}`);
98
- console.log("");
99
- console.log(chalk_1.default.blue("Manifest metadata"));
100
- console.log(`- languages: ${chalk_1.default.yellow(languages.toString())}`);
101
- console.log(`- packages: ${chalk_1.default.yellow(packages.toString())}`);
102
- console.log(`- dependencies: ${chalk_1.default.yellow(dependencies.toString())}`);
103
- console.log(`- roles: ${chalk_1.default.yellow(roles.toString())}`);
104
- console.log(`- postInstallationProcesses: ${chalk_1.default.yellow(postInstallProcesses.toString())}`);
105
- console.log(`- bpmnActivities: ${chalk_1.default.yellow(bpmnActivities.toString())}`);
106
- console.log("");
107
- console.log(chalk_1.default.blue("Project elements"));
108
- for (const counter of counters) {
109
- const label = counter.label.padEnd(maxLabelLength, " ");
110
- console.log(`- ${label}: ${chalk_1.default.green(counter.count.toString())}`);
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":"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"}
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.delete(tempRoot);
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.delete(outputPath);
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 ProjectUtils_1.default.isManifestCompiled(projectPath);
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 = node_path_1.default.join(node_os_1.default.tmpdir(), `cn-report-${Date.now()}.json`);
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
- finally {
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.delete(tempRoot);
496
+ await FileUtils_1.default.deleteRecursively(tempRoot);
491
497
  }
492
498
  }
493
499
  static async deployProject(serviceName, packagePath) {