@codenotch/codenotch.cli 1.0.41 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -28
- package/dist/commands/generate/dbcontext.js +2 -2
- package/dist/commands/generate/dbcontext.js.map +1 -1
- package/dist/commands/generate/index.js +1 -1
- package/dist/commands/project/deploy.js +9 -2
- package/dist/commands/project/deploy.js.map +1 -1
- package/dist/commands/project/inspect.js +65 -1
- package/dist/commands/project/inspect.js.map +1 -1
- package/dist/commands/system/docs.d.ts +2 -0
- package/dist/commands/system/docs.js +57 -0
- package/dist/commands/system/docs.js.map +1 -0
- package/dist/commands/system/index.js +2 -0
- package/dist/commands/system/index.js.map +1 -1
- package/dist/commands/system/read.js +2 -1
- package/dist/commands/system/read.js.map +1 -1
- package/dist/commands/validation/files/ScriptValidator.js +9 -8
- package/dist/commands/validation/files/ScriptValidator.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/DbSchemaUtils.d.ts +16 -10
- package/dist/utils/DbSchemaUtils.js +82 -30
- package/dist/utils/DbSchemaUtils.js.map +1 -1
- package/dist/utils/DocsUtils.d.ts +34 -0
- package/dist/utils/DocsUtils.js +76 -0
- package/dist/utils/DocsUtils.js.map +1 -0
- package/dist/utils/ProcessBundlerUtils.d.ts +103 -0
- package/dist/utils/ProcessBundlerUtils.js +336 -0
- package/dist/utils/ProcessBundlerUtils.js.map +1 -0
- package/dist/utils/ProjectCompilationUtils.d.ts +14 -2
- package/dist/utils/ProjectCompilationUtils.js +75 -3
- package/dist/utils/ProjectCompilationUtils.js.map +1 -1
- package/dist/utils/ProjectGeneratorUtils.d.ts +2 -1
- package/dist/utils/ProjectGeneratorUtils.js +21 -14
- package/dist/utils/ProjectGeneratorUtils.js.map +1 -1
- package/dist/utils/ProjectTemplates.d.ts +2 -2
- package/dist/utils/ProjectTemplates.js +12 -6
- package/dist/utils/ProjectTemplates.js.map +1 -1
- package/dist/utils/ProjectUtils.d.ts +18 -1
- package/dist/utils/ProjectUtils.js +33 -28
- package/dist/utils/ProjectUtils.js.map +1 -1
- package/dist/utils/TemplateUtils.d.ts +28 -0
- package/dist/utils/TemplateUtils.js +95 -3
- package/dist/utils/TemplateUtils.js.map +1 -1
- package/package.json +78 -71
- package/resources/docs/apps.md +109 -0
- package/resources/docs/i18n.md +51 -0
- package/resources/docs/processes.md +87 -0
- package/resources/docs/project.md +101 -0
- package/resources/docs/queries.md +54 -0
- package/resources/docs/tables.md +97 -0
|
@@ -36,9 +36,10 @@ const ELEMENT_BY_BUILDER = {
|
|
|
36
36
|
/** Modifiers making a column non nullable */
|
|
37
37
|
const REQUIRED_MODIFIERS = ['notNull', 'required', 'primary'];
|
|
38
38
|
/**
|
|
39
|
-
* Builds the two files describing the database of a project out of its 'defineEntity'
|
|
40
|
-
* 'db-schema.xml', read by the runtime to migrate the database,
|
|
41
|
-
*
|
|
39
|
+
* Builds the two files describing the database of a project out of its 'defineEntity' and
|
|
40
|
+
* 'defineDocument' declarations: 'db-schema.xml', read by the runtime to migrate the database,
|
|
41
|
+
* and 'db-schema.d.ts', which augments the 'ProjectTables' and 'ProjectDocs' interfaces of
|
|
42
|
+
* '@codenotch/process' so that `ctx.tables.<name>` is typed in the processes.
|
|
42
43
|
*/
|
|
43
44
|
class DbSchemaUtils {
|
|
44
45
|
/**
|
|
@@ -145,25 +146,39 @@ class DbSchemaUtils {
|
|
|
145
146
|
return [` <${element} ${attributes.join(' ')}/>`];
|
|
146
147
|
}
|
|
147
148
|
/**
|
|
148
|
-
* 'db-schema.ts', the
|
|
149
|
+
* 'db-schema.d.ts', the declaration merging file typing `ctx.tables` and the documents:
|
|
150
|
+
* it augments '@codenotch/process' with one typed handle per table and per document.
|
|
151
|
+
*
|
|
152
|
+
* The file must stay a module (have a top level import) for the `declare module` block to be
|
|
153
|
+
* an augmentation: as a plain script it would *declare* '@codenotch/process' instead of
|
|
154
|
+
* merging into it. It also only applies to files of the same TypeScript program, hence the
|
|
155
|
+
* tsconfig of the project has to include it.
|
|
149
156
|
*
|
|
150
157
|
* @param tables tables of the project, see ProjectUtils.discoverTableFiles
|
|
151
|
-
* @param
|
|
152
|
-
* @param
|
|
158
|
+
* @param documents documents of the project, see ProjectUtils.discoverDocumentFiles
|
|
159
|
+
* @param tableImports import line of each table row type, keyed by table name
|
|
160
|
+
* @param documentImports import line of each document type, keyed by document name
|
|
153
161
|
*/
|
|
154
|
-
static
|
|
162
|
+
static generateDts(tables, documents, tableImports, documentImports) {
|
|
155
163
|
const warnings = [];
|
|
156
164
|
// Types coming from the same file share one import statement, as a developer would write it
|
|
157
165
|
const typesBySpecifier = new Map();
|
|
158
|
-
const
|
|
166
|
+
const collectImport = (importLine) => {
|
|
167
|
+
const typeNames = typesBySpecifier.get(importLine.specifier) ?? [];
|
|
168
|
+
if (!typeNames.includes(importLine.typeName)) {
|
|
169
|
+
typesBySpecifier.set(importLine.specifier, [...typeNames, importLine.typeName]);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
// ProjectTables: one handle per table, under its collection name
|
|
173
|
+
const tableProperties = [];
|
|
159
174
|
const collectionNames = new Map();
|
|
160
175
|
for (const table of this.sortByName(tables)) {
|
|
161
176
|
if (table.name === undefined) {
|
|
162
177
|
continue; // already reported by generateXml
|
|
163
178
|
}
|
|
164
|
-
const importLine = this.parseImport(
|
|
179
|
+
const importLine = this.parseImport(tableImports.get(table.name));
|
|
165
180
|
if (table.typeName === undefined || importLine === undefined) {
|
|
166
|
-
warnings.push(`The table '${table.name}' has no exported row type ('export type I${table.name} = InferEntity<typeof ${table.variableName ?? table.name}>'), it is left out of
|
|
181
|
+
warnings.push(`The table '${table.name}' has no exported row type ('export type I${table.name} = InferEntity<typeof ${table.variableName ?? table.name}>'), it is left out of 'ProjectTables'.`);
|
|
167
182
|
continue;
|
|
168
183
|
}
|
|
169
184
|
const collectionName = this.toCollectionName(table.name);
|
|
@@ -173,40 +188,77 @@ class DbSchemaUtils {
|
|
|
173
188
|
continue;
|
|
174
189
|
}
|
|
175
190
|
collectionNames.set(collectionName, table.name);
|
|
176
|
-
|
|
177
|
-
|
|
191
|
+
collectImport(importLine);
|
|
192
|
+
tableProperties.push(` ${collectionName}: TableHandle<${table.typeName}>;`);
|
|
193
|
+
}
|
|
194
|
+
// ProjectDocs: one handle per document, under its lowercased name (documents are not pluralized)
|
|
195
|
+
const documentProperties = [];
|
|
196
|
+
const documentKeys = new Map();
|
|
197
|
+
for (const document of this.sortByName(documents)) {
|
|
198
|
+
if (document.name === undefined) {
|
|
199
|
+
warnings.push(`A document declared at ${document.filePath}:${document.line} has no literal name, it is left out of 'ProjectDocs'.`);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
const importLine = this.parseImport(documentImports.get(document.name));
|
|
203
|
+
if (document.typeName === undefined || importLine === undefined) {
|
|
204
|
+
warnings.push(`The document '${document.name}' has no exported type ('export type I${document.name} = InferDocument<typeof ${document.variableName ?? document.name}>'), it is left out of 'ProjectDocs'.`);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const key = document.name.toLowerCase();
|
|
208
|
+
const takenBy = documentKeys.get(key);
|
|
209
|
+
if (takenBy !== undefined) {
|
|
210
|
+
warnings.push(`The documents '${takenBy}' and '${document.name}' both map to '${key}', only the first one is kept.`);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
documentKeys.set(key, document.name);
|
|
214
|
+
collectImport(importLine);
|
|
215
|
+
documentProperties.push(` ${key}: DocStoreHandle<${document.typeName}>;`);
|
|
216
|
+
}
|
|
217
|
+
const handles = [
|
|
218
|
+
...(tableProperties.length > 0 ? ['TableHandle'] : []),
|
|
219
|
+
...(documentProperties.length > 0 ? ['DocStoreHandle'] : [])
|
|
220
|
+
];
|
|
221
|
+
const header = [
|
|
222
|
+
`// Generated by 'cn generate dbcontext', do not edit.`,
|
|
223
|
+
`// Augments the 'ProjectTables' and 'ProjectDocs' interfaces of '@codenotch/process' with the`,
|
|
224
|
+
`// tables and documents of this project, so 'ctx.tables.<name>' autocompletes with its row type.`
|
|
225
|
+
];
|
|
226
|
+
// Nothing usable: an empty 'declare module' with no import would be an ambient declaration
|
|
227
|
+
// shadowing the real package, so the file is written inert instead
|
|
228
|
+
if (handles.length === 0) {
|
|
229
|
+
return { content: [...header, `export {};`, ``].join('\n'), warnings };
|
|
230
|
+
}
|
|
231
|
+
const blocks = [];
|
|
232
|
+
if (tableProperties.length > 0) {
|
|
233
|
+
blocks.push(` interface ProjectTables {`, ...tableProperties, ` }`);
|
|
234
|
+
}
|
|
235
|
+
if (documentProperties.length > 0) {
|
|
236
|
+
if (blocks.length > 0) {
|
|
237
|
+
blocks.push(``);
|
|
238
|
+
}
|
|
239
|
+
blocks.push(` interface ProjectDocs {`, ...documentProperties, ` }`);
|
|
178
240
|
}
|
|
179
|
-
const importLines = [...typesBySpecifier.entries()]
|
|
180
|
-
.map(([specifier, typeNames]) => `import { ${typeNames.join(', ')} } from '${specifier}';`);
|
|
181
241
|
const content = [
|
|
182
|
-
|
|
183
|
-
|
|
242
|
+
...header,
|
|
243
|
+
`import type { ${handles.join(', ')} } from '@codenotch/process';`,
|
|
244
|
+
...[...typesBySpecifier.entries()]
|
|
245
|
+
.map(([specifier, typeNames]) => `import type { ${typeNames.join(', ')} } from '${specifier}';`),
|
|
184
246
|
``,
|
|
185
|
-
`
|
|
186
|
-
...
|
|
247
|
+
`declare module '@codenotch/process' {`,
|
|
248
|
+
...blocks,
|
|
187
249
|
`}`,
|
|
188
250
|
``
|
|
189
251
|
].join('\n');
|
|
190
252
|
return { content, warnings };
|
|
191
253
|
}
|
|
192
|
-
/** 'my project' and 'my-project' both give 'MyProjectDbSchema' */
|
|
193
|
-
static toInterfaceName(projectName) {
|
|
194
|
-
const name = projectName
|
|
195
|
-
.split(/[^A-Za-z0-9$]+/)
|
|
196
|
-
.filter(word => word !== '')
|
|
197
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
198
|
-
.join('');
|
|
199
|
-
// An interface cannot start with a digit, and an empty name would produce 'DbSchema' alone
|
|
200
|
-
return `${/^[A-Za-z_$]/.test(name) ? name : `Project${name}`}DbSchema`;
|
|
201
|
-
}
|
|
202
254
|
/** Splits an import statement back into the type it brings and the file it comes from */
|
|
203
255
|
static parseImport(statement) {
|
|
204
256
|
const match = statement?.match(/^import \{\s*([^}\s]+)\s*\} from '([^']+)';?$/);
|
|
205
257
|
return match === null || match === undefined ? undefined : { typeName: match[1], specifier: match[2] };
|
|
206
258
|
}
|
|
207
|
-
static sortByName(
|
|
259
|
+
static sortByName(declarations) {
|
|
208
260
|
// Sorted so that regenerating an unchanged project produces an unchanged file
|
|
209
|
-
return [...
|
|
261
|
+
return [...declarations].sort((left, right) => (left.name ?? '').localeCompare(right.name ?? ''));
|
|
210
262
|
}
|
|
211
263
|
static getDescription(properties) {
|
|
212
264
|
return typeof properties['description'] === 'string' ? properties['description'] : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbSchemaUtils.js","sourceRoot":"","sources":["../../src/utils/DbSchemaUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DbSchemaUtils.js","sourceRoot":"","sources":["../../src/utils/DbSchemaUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** A documentation topic shipped with the CLI */
|
|
2
|
+
export interface IDocTopic {
|
|
3
|
+
/** Name the topic is asked by, e.g. 'tables' for 'tables.md' */
|
|
4
|
+
name: string;
|
|
5
|
+
/** Absolute path of its markdown file */
|
|
6
|
+
filePath: string;
|
|
7
|
+
/** One line summary, taken from the first paragraph of the file */
|
|
8
|
+
summary: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The reference documentation shipped with the CLI ('resources/docs' of the package), served by
|
|
12
|
+
* 'cn docs'. Written for coding agents as much as for developers: the AGENTS.md of a generated
|
|
13
|
+
* project points here instead of embedding the reference, so the documentation always matches
|
|
14
|
+
* the installed CLI instead of the CLI that once created the project.
|
|
15
|
+
*/
|
|
16
|
+
export default abstract class DocsUtils {
|
|
17
|
+
/**
|
|
18
|
+
* 'resources/docs' of the package, resolved from both 'src/utils' (tsx) and 'dist/utils'
|
|
19
|
+
* (build), which sit at the same depth
|
|
20
|
+
*/
|
|
21
|
+
static getDocsFolder(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Every topic of the docs folder, preferred ones first. Empty when the folder is missing,
|
|
24
|
+
* which only happens on a broken installation.
|
|
25
|
+
*/
|
|
26
|
+
static listTopics(): IDocTopic[];
|
|
27
|
+
/**
|
|
28
|
+
* Content of one topic, undefined when the name is not a listed topic. Only listed names are
|
|
29
|
+
* read, so the argument cannot address a file outside the docs folder.
|
|
30
|
+
*/
|
|
31
|
+
static readTopic(name: string): string | undefined;
|
|
32
|
+
/** First non-empty line after the '# ' title of the file, empty when there is none */
|
|
33
|
+
private static readSummary;
|
|
34
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs_1 = require("fs");
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
/** Topics listed first, in this order; a file that is not here is appended alphabetically */
|
|
6
|
+
const PREFERRED_ORDER = ['project', 'tables', 'processes', 'queries', 'apps', 'i18n'];
|
|
7
|
+
/**
|
|
8
|
+
* The reference documentation shipped with the CLI ('resources/docs' of the package), served by
|
|
9
|
+
* 'cn docs'. Written for coding agents as much as for developers: the AGENTS.md of a generated
|
|
10
|
+
* project points here instead of embedding the reference, so the documentation always matches
|
|
11
|
+
* the installed CLI instead of the CLI that once created the project.
|
|
12
|
+
*/
|
|
13
|
+
class DocsUtils {
|
|
14
|
+
/**
|
|
15
|
+
* 'resources/docs' of the package, resolved from both 'src/utils' (tsx) and 'dist/utils'
|
|
16
|
+
* (build), which sit at the same depth
|
|
17
|
+
*/
|
|
18
|
+
static getDocsFolder() {
|
|
19
|
+
return (0, path_1.join)(__dirname, '../../resources/docs');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Every topic of the docs folder, preferred ones first. Empty when the folder is missing,
|
|
23
|
+
* which only happens on a broken installation.
|
|
24
|
+
*/
|
|
25
|
+
static listTopics() {
|
|
26
|
+
let files;
|
|
27
|
+
try {
|
|
28
|
+
files = (0, fs_1.readdirSync)(this.getDocsFolder()).filter(file => file.endsWith('.md'));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const topics = files.map(file => {
|
|
34
|
+
const filePath = (0, path_1.join)(this.getDocsFolder(), file);
|
|
35
|
+
return {
|
|
36
|
+
name: file.slice(0, -'.md'.length),
|
|
37
|
+
filePath,
|
|
38
|
+
summary: this.readSummary(filePath)
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
const rank = (topic) => {
|
|
42
|
+
const index = PREFERRED_ORDER.indexOf(topic.name);
|
|
43
|
+
return index === -1 ? PREFERRED_ORDER.length : index;
|
|
44
|
+
};
|
|
45
|
+
return topics.sort((a, b) => rank(a) - rank(b) || a.name.localeCompare(b.name));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Content of one topic, undefined when the name is not a listed topic. Only listed names are
|
|
49
|
+
* read, so the argument cannot address a file outside the docs folder.
|
|
50
|
+
*/
|
|
51
|
+
static readTopic(name) {
|
|
52
|
+
const topic = this.listTopics().find(candidate => candidate.name === name);
|
|
53
|
+
if (topic === undefined) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
return (0, fs_1.readFileSync)(topic.filePath, 'utf8');
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** First non-empty line after the '# ' title of the file, empty when there is none */
|
|
64
|
+
static readSummary(filePath) {
|
|
65
|
+
try {
|
|
66
|
+
const lines = (0, fs_1.readFileSync)(filePath, 'utf8').split(/\r?\n/);
|
|
67
|
+
const titleIndex = lines.findIndex(line => line.startsWith('# '));
|
|
68
|
+
return lines.slice(titleIndex + 1).find(line => line.trim() !== '')?.trim() ?? '';
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.default = DocsUtils;
|
|
76
|
+
//# sourceMappingURL=DocsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocsUtils.js","sourceRoot":"","sources":["../../src/utils/DocsUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { IProcessTrigger } from './ProjectUtils';
|
|
2
|
+
import { IJsonSchema } from './TypeSchemaUtils';
|
|
3
|
+
/** One entry of 'compiled/processes.json': everything the runtime needs to route and execute a process */
|
|
4
|
+
export interface IProcessArtifact {
|
|
5
|
+
id: string;
|
|
6
|
+
/** Path of the bundle, relative to the root of the package, posix separators, e.g. 'compiled/CreateBook.js' */
|
|
7
|
+
file: string;
|
|
8
|
+
/** Content hash of the bundle, 'sha256:<hex>', meant as the key of the V8 code cache of the runtime */
|
|
9
|
+
hash: string;
|
|
10
|
+
/** Declaration site, relative to the root of the package, e.g. 'processes/products.ts:5' */
|
|
11
|
+
source: string;
|
|
12
|
+
/** How the process is started, undefined when it is only reachable through ctx.call */
|
|
13
|
+
trigger?: IProcessTrigger;
|
|
14
|
+
auth?: {
|
|
15
|
+
scope: string;
|
|
16
|
+
};
|
|
17
|
+
description?: string;
|
|
18
|
+
/** True when 'run' declares an input parameter */
|
|
19
|
+
takesInput: boolean;
|
|
20
|
+
/** Schema of the input of 'run', when its parameter carries a type annotation */
|
|
21
|
+
input?: IJsonSchema;
|
|
22
|
+
/** Schema of the return type of 'run', Promise unwrapped, when it carries one */
|
|
23
|
+
output?: IJsonSchema;
|
|
24
|
+
}
|
|
25
|
+
export interface IProcessBundleResult {
|
|
26
|
+
/** One artifact per bundled process, sorted by id so the index is deterministic */
|
|
27
|
+
artifacts: IProcessArtifact[];
|
|
28
|
+
/** Path of the written 'processes.json', undefined when the bundling failed before writing it */
|
|
29
|
+
indexPath?: string;
|
|
30
|
+
/** Skipped declarations and bundler warnings, already worded for the console */
|
|
31
|
+
warnings: string[];
|
|
32
|
+
/** Bundling failures. When non-empty the artifacts list is empty */
|
|
33
|
+
errors: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Bundles every process of a project into its own self-contained .js artifact, executable by the
|
|
37
|
+
* C# runtime in a bare V8 engine (ClearScript). The full contract between these artifacts and the
|
|
38
|
+
* runtime is documented in docs/PROCESS-RUNTIME-CONTRACT.md — keep both in sync.
|
|
39
|
+
*
|
|
40
|
+
* In short, one artifact:
|
|
41
|
+
* - is an IIFE with no import left: the code of the process and every workspace file or npm
|
|
42
|
+
* package it reaches are inlined (each artifact is independent, duplication is accepted);
|
|
43
|
+
* - reads the '@codenotch/*' modules from `globalThis.__codenotch.modules`, injected by the
|
|
44
|
+
* runtime before the script is evaluated — they are never bundled;
|
|
45
|
+
* - registers itself into `globalThis.__cn_processes[id] = { id, run }`, where `run(ctx, input)`
|
|
46
|
+
* returns a Promise. Registration makes the artifacts host-agnostic: one engine per process
|
|
47
|
+
* and one shared engine per service both work.
|
|
48
|
+
*
|
|
49
|
+
* Next to the artifacts, 'processes.json' indexes them with their trigger, auth and input/output
|
|
50
|
+
* schemas, so the runtime routes and validates without ever reading TypeScript.
|
|
51
|
+
*
|
|
52
|
+
* esbuild only strips the types, it does not check them: typechecking is the job of the caller
|
|
53
|
+
* (see ProjectCompilationUtils.compileProject, which validates the scripts first).
|
|
54
|
+
*/
|
|
55
|
+
export default abstract class ProcessBundlerUtils {
|
|
56
|
+
/** Folder of the artifacts, relative to the root of the package */
|
|
57
|
+
static readonly OUTPUT_FOLDER_NAME = "compiled";
|
|
58
|
+
/** Name of the index written next to the artifacts */
|
|
59
|
+
static readonly INDEX_FILE_NAME = "processes.json";
|
|
60
|
+
/** Global the runtime fills with the '@codenotch/*' implementations before evaluating an artifact */
|
|
61
|
+
private static readonly MODULES_GLOBAL;
|
|
62
|
+
/** Global registry an artifact writes itself into when evaluated */
|
|
63
|
+
private static readonly REGISTRY_GLOBAL;
|
|
64
|
+
/** Bare specifiers of the Node standard library, which does not exist in the V8 of the runtime */
|
|
65
|
+
private static readonly NODE_BUILTINS;
|
|
66
|
+
/**
|
|
67
|
+
* Discovers the processes of `projectPath` and bundles each of them into
|
|
68
|
+
* `outDir` (default: '<projectPath>/compiled'), plus a 'processes.json' index.
|
|
69
|
+
*
|
|
70
|
+
* A declaration that cannot be bundled (id missing or built at runtime, variable not
|
|
71
|
+
* exported, duplicated id) is skipped with a warning rather than failing the build.
|
|
72
|
+
* Nothing is thrown for bundling failures either: they are returned as errors.
|
|
73
|
+
*
|
|
74
|
+
* @param projectPath root of the project, where the sources and 'node_modules' live
|
|
75
|
+
* @param outDir where the artifacts are written; its previous content is replaced when it
|
|
76
|
+
* looks like an earlier compilation output (empty, or holding the index)
|
|
77
|
+
*/
|
|
78
|
+
static bundleProcesses(projectPath: string, outDir?: string): Promise<IProcessBundleResult>;
|
|
79
|
+
/** Keeps the declarations that can become an artifact, one warning per skipped one */
|
|
80
|
+
private static selectBundlable;
|
|
81
|
+
/**
|
|
82
|
+
* One output file name per process id. Ids are sanitized for the file system and deduplicated
|
|
83
|
+
* case-insensitively (Windows), so the index 'file' field is the only reliable mapping.
|
|
84
|
+
*/
|
|
85
|
+
private static assignFileNames;
|
|
86
|
+
/** The three resolution rules of a bundle: synthetic entries, runtime-provided modules, no Node builtin */
|
|
87
|
+
private static createPlugin;
|
|
88
|
+
/** Source of the synthetic entry module of one process */
|
|
89
|
+
private static createEntrySource;
|
|
90
|
+
/** Source of the stand-in module of a runtime-provided '@codenotch/*' package */
|
|
91
|
+
private static createRuntimeModuleSource;
|
|
92
|
+
/** Index entries of the written bundles, hashing each artifact for the code cache of the runtime */
|
|
93
|
+
private static createArtifacts;
|
|
94
|
+
/**
|
|
95
|
+
* Empties the previous output, but refuses to wipe a folder that does not look like an
|
|
96
|
+
* earlier compilation (no index): losing user files is worse than a stale artifact.
|
|
97
|
+
*/
|
|
98
|
+
private static prepareOutputFolder;
|
|
99
|
+
/** 'processes/products.ts:5' — declaration site relative to the project, for messages and the index */
|
|
100
|
+
private static formatSource;
|
|
101
|
+
/** One console line out of an esbuild diagnostic, with its location when it has one */
|
|
102
|
+
private static formatEsbuildMessage;
|
|
103
|
+
}
|