@codenotch/codenotch.cli 1.0.40 → 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/app.js +6 -0
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/generate/appmanifest.js +5 -0
- package/dist/commands/generate/appmanifest.js.map +1 -1
- package/dist/commands/generate/dbcontext.js +6 -2
- package/dist/commands/generate/dbcontext.js.map +1 -1
- package/dist/commands/generate/i18n.js +5 -0
- package/dist/commands/generate/i18n.js.map +1 -1
- package/dist/commands/generate/index.js +8 -1
- package/dist/commands/generate/index.js.map +1 -1
- package/dist/commands/generate/manifest.js +4 -0
- package/dist/commands/generate/manifest.js.map +1 -1
- package/dist/commands/generate/openapi.js +5 -1
- package/dist/commands/generate/openapi.js.map +1 -1
- package/dist/commands/generate/pkg.js +4 -0
- package/dist/commands/generate/pkg.js.map +1 -1
- package/dist/commands/generate/process.js +6 -0
- package/dist/commands/generate/process.js.map +1 -1
- package/dist/commands/project/deploy.js +9 -2
- package/dist/commands/project/deploy.js.map +1 -1
- package/dist/commands/project/index.js +8 -1
- package/dist/commands/project/index.js.map +1 -1
- package/dist/commands/project/inspect.js +65 -1
- package/dist/commands/project/inspect.js.map +1 -1
- package/dist/commands/project/new.js +7 -1
- package/dist/commands/project/new.js.map +1 -1
- package/dist/commands/project/remove.js +6 -1
- package/dist/commands/project/remove.js.map +1 -1
- package/dist/commands/react/build.js +22 -1
- package/dist/commands/react/build.js.map +1 -1
- package/dist/commands/react/clean.js +7 -2
- package/dist/commands/react/clean.js.map +1 -1
- package/dist/commands/react/dev.js +6 -0
- package/dist/commands/react/dev.js.map +1 -1
- package/dist/commands/react/index.js +11 -1
- package/dist/commands/react/index.js.map +1 -1
- package/dist/commands/react/package.d.ts +2 -0
- package/dist/commands/react/package.js +47 -0
- package/dist/commands/react/package.js.map +1 -0
- package/dist/commands/react/serve.js +5 -0
- package/dist/commands/react/serve.js.map +1 -1
- package/dist/commands/runtime/clear.js +5 -0
- package/dist/commands/runtime/clear.js.map +1 -1
- package/dist/commands/runtime/index.js +8 -1
- package/dist/commands/runtime/index.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/commands/validation/validate.js +4 -13
- package/dist/commands/validation/validate.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/BuildUtils.d.ts +53 -5
- package/dist/utils/BuildUtils.js +233 -21
- package/dist/utils/BuildUtils.js.map +1 -1
- package/dist/utils/ConsoleUtils.d.ts +0 -2
- package/dist/utils/ConsoleUtils.js +0 -8
- package/dist/utils/ConsoleUtils.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/OsUtils.d.ts +6 -0
- package/dist/utils/OsUtils.js +26 -0
- package/dist/utils/OsUtils.js.map +1 -1
- package/dist/utils/PackageUtils.d.ts +101 -0
- package/dist/utils/PackageUtils.js +538 -0
- package/dist/utils/PackageUtils.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/ServeUtils.js +1 -2
- package/dist/utils/ServeUtils.js.map +1 -1
- package/dist/utils/TemplateUtils.d.ts +29 -0
- package/dist/utils/TemplateUtils.js +96 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/react/build.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/react/build.ts"],"names":[],"mappings":";;;;;AAKA,sCAoCC;AAxCD,wEAAmE;AACnE,iDAA8C;AAC9C,qCAA4C;AAE5C,SAAgB,aAAa,CAAC,KAAc;IACxC,KAAK;SACA,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,sIAAsI,CAAC;SACnJ,MAAM,CAAC,qBAAqB,EAAE,mEAAmE,CAAC;SAClG,MAAM,CAAC,UAAU,EAAE,6GAA6G,CAAC;SACjI,MAAM,CAAC,OAAO,EAAE,0HAA0H,CAAC;SAC3I,MAAM,CAAC,WAAW,EAAE,2EAA2E,CAAC;SAChG,WAAW,CAAC,OAAO,EAAE;;;;;;;;CAQ7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,OAAsB,EAAE,EAAE;QAEjE,MAAM,GAAG,GAAG,MAAM,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,oBAAU,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;YAC9D,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;SACnB,CAAC,CAAC;QAEH,kEAAkE;QAClE,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACrD,iBAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -10,12 +10,17 @@ const path_1 = require("path");
|
|
|
10
10
|
const ConsoleUtils_1 = __importDefault(require("../../utils/ConsoleUtils"));
|
|
11
11
|
const FileUtils_1 = __importDefault(require("../../utils/FileUtils"));
|
|
12
12
|
const shared_1 = require("./shared");
|
|
13
|
-
/** The folders 'cn react build' and 'cn react
|
|
14
|
-
const STAGING_SUFFIXES = ['-source', '-dist', '-dev'];
|
|
13
|
+
/** The folders 'cn react build', 'cn react dev' and 'cn react package' stage under .codenotch */
|
|
14
|
+
const STAGING_SUFFIXES = ['-source', '-dist', '-dev', '-package'];
|
|
15
15
|
function registerClean(react) {
|
|
16
16
|
react
|
|
17
17
|
.command('clean [app]')
|
|
18
18
|
.description('Delete the staging and bundle folders a build or a dev server left under .codenotch, for one app or for all')
|
|
19
|
+
.addHelpText('after', `
|
|
20
|
+
Examples:
|
|
21
|
+
$ cn react clean every app of the project
|
|
22
|
+
$ cn react clean Dashboard only that app
|
|
23
|
+
`)
|
|
19
24
|
.action(async (target) => {
|
|
20
25
|
const workspacePath = (0, shared_1.findWorkspace)();
|
|
21
26
|
if (workspacePath === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/commands/react/clean.ts"],"names":[],"mappings":";;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/commands/react/clean.ts"],"names":[],"mappings":";;;;;AAWA,sCAyCC;AAnDD,kDAA0B;AAC1B,2BAA6C;AAC7C,+BAA4B;AAC5B,4EAAoD;AACpD,sEAA8C;AAC9C,qCAAyC;AAEzC,iGAAiG;AACjG,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAElE,SAAgB,aAAa,CAAC,KAAc;IACxC,KAAK;SACA,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,6GAA6G,CAAC;SAC1H,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,EAAE;QAEzC,MAAM,aAAa,GAAG,IAAA,sBAAa,GAAE,CAAC;QACtC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,6CAA6C,OAAO,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC,CAAC;YACrI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,IAAA,eAAU,EAAC,aAAa,CAAC,EAAE,CAAC;YAC7B,sBAAY,CAAC,KAAK,CAAC,sBAAsB,aAAa,mBAAmB,CAAC,CAAC;YAC3E,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC9D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACpC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aACpF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QAExI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,sBAAY,CAAC,KAAK,CAAC,mBAAmB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,QAAQ,aAAa,IAAI,CAAC,CAAC;YAC/G,OAAO;QACX,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,mBAAS,CAAC,iBAAiB,CAAC,IAAA,WAAI,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -13,6 +13,12 @@ function registerDev(react) {
|
|
|
13
13
|
.option('-p, --port <port>', 'port of the dev server (default 5173)', (value) => parseInt(value, 10), 5173)
|
|
14
14
|
.option('-c, --cluster <url>', 'cluster the app will talk to, exposed to the page through /api/env')
|
|
15
15
|
.option('--no-open', 'do not open the browser once the server is up')
|
|
16
|
+
.addHelpText('after', `
|
|
17
|
+
Examples:
|
|
18
|
+
$ cn react dev the only app of the project (a menu when there are several)
|
|
19
|
+
$ cn react dev Dashboard -p 3000
|
|
20
|
+
$ cn react dev Dashboard --no-open -c https://cluster.example.com
|
|
21
|
+
`)
|
|
16
22
|
.action(async (target, options) => {
|
|
17
23
|
const app = await (0, shared_1.resolveAppTarget)(target);
|
|
18
24
|
if (app === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/react/dev.ts"],"names":[],"mappings":";;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/react/dev.ts"],"names":[],"mappings":";;;;;AAIA,kCA0BC;AA7BD,wEAAgD;AAChD,qCAA4C;AAE5C,SAAgB,WAAW,CAAC,KAAc;IACtC,KAAK;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kHAAkH,CAAC;SAC/H,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;SAClH,MAAM,CAAC,qBAAqB,EAAE,oEAAoE,CAAC;SACnG,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;SACpE,WAAW,CAAC,OAAO,EAAE;;;;;CAK7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,OAA0D,EAAE,EAAE;QAErG,MAAM,GAAG,GAAG,MAAM,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,oBAAU,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACvI,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAChC,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -5,13 +5,23 @@ const serve_1 = require("./serve");
|
|
|
5
5
|
const build_1 = require("./build");
|
|
6
6
|
const dev_1 = require("./dev");
|
|
7
7
|
const clean_1 = require("./clean");
|
|
8
|
+
const package_1 = require("./package");
|
|
8
9
|
function registerReactCommands(program) {
|
|
9
10
|
const react = program
|
|
10
11
|
.command('react')
|
|
11
|
-
.description('React
|
|
12
|
+
.description('Work on the React apps of the project: dev server with hot reload, production build, preview of a build, desktop installer, cleanup of the staging folders')
|
|
13
|
+
.addHelpText('after', `
|
|
14
|
+
Examples:
|
|
15
|
+
$ cn react dev dev server of the only app, opens the browser
|
|
16
|
+
$ cn react build Dashboard production bundle in .codenotch/Dashboard-dist
|
|
17
|
+
$ cn react preview Dashboard serve that bundle locally
|
|
18
|
+
$ cn react package Dashboard desktop installer for this OS (Tauri, needs Rust)
|
|
19
|
+
$ cn react clean delete every staging and bundle folder
|
|
20
|
+
`);
|
|
12
21
|
(0, dev_1.registerDev)(react);
|
|
13
22
|
(0, build_1.registerBuild)(react);
|
|
14
23
|
(0, serve_1.registerServe)(react);
|
|
24
|
+
(0, package_1.registerPackage)(react);
|
|
15
25
|
(0, clean_1.registerClean)(react);
|
|
16
26
|
}
|
|
17
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/react/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/react/index.ts"],"names":[],"mappings":";;AAOA,sDAkBC;AAxBD,mCAAwC;AACxC,mCAAwC;AACxC,+BAAoC;AACpC,mCAAwC;AACxC,uCAA4C;AAE5C,SAAgB,qBAAqB,CAAC,OAAgB;IAClD,MAAM,KAAK,GAAG,OAAO;SAChB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4JAA4J,CAAC;SACzK,WAAW,CAAC,OAAO,EAAE;;;;;;;CAO7B,CAAC,CAAC;IAEC,IAAA,iBAAW,EAAC,KAAK,CAAC,CAAC;IACnB,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IACrB,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IACrB,IAAA,yBAAe,EAAC,KAAK,CAAC,CAAC;IACvB,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerPackage = registerPackage;
|
|
7
|
+
const PackageUtils_1 = __importDefault(require("../../utils/PackageUtils"));
|
|
8
|
+
const OsUtils_1 = require("../../utils/OsUtils");
|
|
9
|
+
const shared_1 = require("./shared");
|
|
10
|
+
function registerPackage(react) {
|
|
11
|
+
react
|
|
12
|
+
.command('package [app]')
|
|
13
|
+
.description('Package an app as a desktop installer (Tauri) for the OS this command runs on. Needs the Rust toolchain — proposed for installation (rustup) when missing.')
|
|
14
|
+
.option('-c, --cluster <url>', 'cluster the app will talk to, baked into the packaged bundle')
|
|
15
|
+
.option('-t, --target <os>', 'windows, linux or macos — only the current OS is possible, installers do not cross-compile (default: the current OS)')
|
|
16
|
+
.option('--no-open', 'do not open the installers folder in the file explorer once done')
|
|
17
|
+
.addHelpText('after', `
|
|
18
|
+
Examples:
|
|
19
|
+
$ cn react package the only app of the project (a menu when there are several)
|
|
20
|
+
$ cn react package Dashboard e.g. on Windows: an NSIS setup .exe in .codenotch/Dashboard-package
|
|
21
|
+
$ cn react package Dashboard -c https://cluster.example.com
|
|
22
|
+
|
|
23
|
+
The static bundle is built first (env baked in), then wrapped by Tauri into a native window.
|
|
24
|
+
First run: npm + cargo fetch and compile the Tauri runtime, expect several minutes; later runs are incremental.
|
|
25
|
+
For the installers of the other OSes, run the same command on that OS or in a CI matrix.
|
|
26
|
+
`)
|
|
27
|
+
.action(async (app, options) => {
|
|
28
|
+
const resolved = await (0, shared_1.resolveAppTarget)(app);
|
|
29
|
+
if (resolved === null) {
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const installersDir = await PackageUtils_1.default.packageReactApp(resolved.scriptPath, {
|
|
34
|
+
target: options.target,
|
|
35
|
+
clusterUrl: options.cluster
|
|
36
|
+
});
|
|
37
|
+
if (installersDir === undefined) {
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Show the installers where they landed, the build only prints their paths
|
|
42
|
+
if (options.open !== false) {
|
|
43
|
+
OsUtils_1.OsUtils.openInFileExplorer(installersDir);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../src/commands/react/package.ts"],"names":[],"mappings":";;;;;AAKA,0CAuCC;AA3CD,4EAAoD;AACpD,iDAA8C;AAC9C,qCAA4C;AAE5C,SAAgB,eAAe,CAAC,KAAc;IAC1C,KAAK;SACA,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4JAA4J,CAAC;SACzK,MAAM,CAAC,qBAAqB,EAAE,8DAA8D,CAAC;SAC7F,MAAM,CAAC,mBAAmB,EAAE,sHAAsH,CAAC;SACnJ,MAAM,CAAC,WAAW,EAAE,kEAAkE,CAAC;SACvF,WAAW,CAAC,OAAO,EAAE;;;;;;;;;CAS7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,GAAuB,EAAE,OAA6D,EAAE,EAAE;QAErG,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,sBAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC1E,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC,CAAC;QACH,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,2EAA2E;QAC3E,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,iBAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -16,6 +16,11 @@ function registerServe(react) {
|
|
|
16
16
|
.description('Serve the built bundle of an app (by name, the only app when omitted), or any folder holding an index.html')
|
|
17
17
|
.option('-p, --port <port>', 'port to serve the application on (default 5000)', (value) => parseInt(value, 10), 5000)
|
|
18
18
|
.option('-i, --index <name>', 'index file name (default index.html)', 'index.html')
|
|
19
|
+
.addHelpText('after', `
|
|
20
|
+
Examples:
|
|
21
|
+
$ cn react preview Dashboard the bundle built by 'cn react build Dashboard'
|
|
22
|
+
$ cn react serve ./some/dist -p 8080 any folder holding an index.html
|
|
23
|
+
`)
|
|
19
24
|
.action(async (target, options) => {
|
|
20
25
|
// An explicit folder is served as it is, whatever it holds
|
|
21
26
|
if (target !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/react/serve.ts"],"names":[],"mappings":";;;;;AAOA,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/react/serve.ts"],"names":[],"mappings":";;;;;AAOA,sCA4CC;AAlDD,kDAA0B;AAC1B,2BAA2C;AAC3C,+BAAqC;AACrC,wEAAmE;AACnE,qCAA2D;AAE3D,SAAgB,aAAa,CAAC,KAAc;IACxC,KAAK;SACA,OAAO,CAAC,gBAAgB,CAAC;SACzB,KAAK,CAAC,SAAS,CAAC;SAChB,WAAW,CAAC,4GAA4G,CAAC;SACzH,MAAM,CAAC,mBAAmB,EAAE,iDAAiD,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;SAC5H,MAAM,CAAC,oBAAoB,EAAE,sCAAsC,EAAE,YAAY,CAAC;SAClF,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,OAAsB,EAAE,EAAE;QAEjE,2DAA2D;QAC3D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,IAAA,eAAU,EAAC,MAAM,CAAC,IAAI,IAAA,cAAS,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxD,MAAM,oBAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC3C,OAAO;YACX,CAAC;QACL,CAAC;QAED,kFAAkF;QAClF,IAAI,MAAM,KAAK,SAAS,IAAI,IAAA,sBAAa,GAAE,KAAK,SAAS,EAAE,CAAC;YACxD,MAAM,oBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,GAAG,CAAC,IAAI,MAAM,QAAQ,0CAA0C,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAC1I,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,oBAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -12,6 +12,11 @@ function registerClear(runtime) {
|
|
|
12
12
|
.command('clear')
|
|
13
13
|
.description('Erase all runtime data (ie. all projects, users, ...) but keep the runtime itself (use with caution)')
|
|
14
14
|
.option('-y, --yes', 'do not ask for confirmation', false)
|
|
15
|
+
.addHelpText('after', `
|
|
16
|
+
Examples:
|
|
17
|
+
$ cn runtime clear asks for confirmation first
|
|
18
|
+
$ cn runtime clear --yes no confirmation (scripts, CI)
|
|
19
|
+
`)
|
|
15
20
|
.action(async (options) => {
|
|
16
21
|
// Erasing every project and user deserves an explicit go: outside a terminal, only --yes can give it
|
|
17
22
|
if (!options.yes && !await ConsoleUtils_1.default.confirm('Erase ALL runtime data (every project, user, ...)?', false)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/commands/runtime/clear.ts"],"names":[],"mappings":";;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/commands/runtime/clear.ts"],"names":[],"mappings":";;;;;AAKA,sCAqBC;AAzBD,kDAA0B;AAC1B,4EAAoD;AACpD,4EAAoD;AAEpD,SAAgB,aAAa,CAAC,OAAgB;IAC1C,OAAO;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sGAAsG,CAAC;SACnH,MAAM,CAAC,WAAW,EAAE,6BAA6B,EAAE,KAAK,CAAC;SACzD,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;QAExC,qGAAqG;QACrG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,sBAAY,CAAC,OAAO,CAAC,oDAAoD,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3G,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,qEAAqE,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,sBAAY,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -12,7 +12,14 @@ const portal_1 = require("./portal");
|
|
|
12
12
|
function registerRuntimeCommands(program) {
|
|
13
13
|
const runtime = program
|
|
14
14
|
.command('runtime') //TODO name subject to change
|
|
15
|
-
.description('
|
|
15
|
+
.description('Manage the local Codenotch runtime: install or update it, start and stop it, inspect its status, erase its data')
|
|
16
|
+
.addHelpText('after', `
|
|
17
|
+
Examples:
|
|
18
|
+
$ cn runtime install download and install the latest runtime release
|
|
19
|
+
$ cn runtime start
|
|
20
|
+
$ cn runtime status
|
|
21
|
+
$ cn runtime clear --yes erase every project and user without asking
|
|
22
|
+
`);
|
|
16
23
|
(0, info_1.registerInfo)(runtime);
|
|
17
24
|
(0, update_1.registerUpdate)(runtime);
|
|
18
25
|
(0, start_1.registerStart)(runtime);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/runtime/index.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/runtime/index.ts"],"names":[],"mappings":";;AAUA,0DAoBC;AA7BD,iCAAsC;AACtC,qCAA0C;AAC1C,mCAAwC;AACxC,iCAAsC;AACtC,mCAAwC;AACxC,qCAA0C;AAC1C,qCAA0C;AAE1C,qKAAqK;AACrK,SAAgB,uBAAuB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,OAAO;SAClB,OAAO,CAAC,SAAS,CAAC,CAAC,6BAA6B;SAChD,WAAW,CAAC,iHAAiH,CAAC;SAC9H,WAAW,CAAC,OAAO,EAAE;;;;;;CAM7B,CAAC,CAAC;IAEC,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IAExB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerDocs = registerDocs;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const DocsUtils_1 = __importDefault(require("../../utils/DocsUtils"));
|
|
9
|
+
function registerDocs(program) {
|
|
10
|
+
program
|
|
11
|
+
.command('docs [topic]')
|
|
12
|
+
.description('Print the reference documentation of a topic, or list the topics')
|
|
13
|
+
.option('--json', 'output the topic list as JSON instead of text')
|
|
14
|
+
.addHelpText('after', `
|
|
15
|
+
The documentation ships with the CLI and matches its version. It is written for coding agents
|
|
16
|
+
as much as for developers: the AGENTS.md of a generated project tells them to read the topic
|
|
17
|
+
before writing a file of that kind.
|
|
18
|
+
|
|
19
|
+
Examples:
|
|
20
|
+
$ cn docs lists the topics
|
|
21
|
+
$ cn docs --json the same, machine-readable
|
|
22
|
+
$ cn docs tables the reference of the table declarations
|
|
23
|
+
`)
|
|
24
|
+
.action((topic, options) => {
|
|
25
|
+
const topics = DocsUtils_1.default.listTopics();
|
|
26
|
+
if (topics.length === 0) {
|
|
27
|
+
console.error(chalk_1.default.red(`No documentation found at '${DocsUtils_1.default.getDocsFolder()}', the installation looks broken.`));
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (options.json === true) {
|
|
32
|
+
// The content of a topic is plain markdown already, only the listing has a JSON form
|
|
33
|
+
if (topic !== undefined) {
|
|
34
|
+
console.error(chalk_1.default.yellow(`'--json' only applies to the topic list, 'cn docs ${topic}' already prints plain markdown.`));
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(JSON.stringify(topics.map(entry => ({ name: entry.name, summary: entry.summary })), null, 4));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (topic === undefined) {
|
|
42
|
+
for (const entry of topics) {
|
|
43
|
+
console.log(`${chalk_1.default.cyan(`cn docs ${entry.name}`.padEnd(20))} ${entry.summary}`);
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const content = DocsUtils_1.default.readTopic(topic);
|
|
48
|
+
if (content === undefined) {
|
|
49
|
+
console.error(chalk_1.default.yellow(`Unknown topic '${topic}', expected one of: ${topics.map(entry => entry.name).join(', ')}.`));
|
|
50
|
+
process.exitCode = 1;
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Raw markdown on purpose: the output is meant to be read by agents and pagers alike
|
|
54
|
+
console.log(content);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/commands/system/docs.ts"],"names":[],"mappings":";;;;;AAIA,oCAoDC;AAvDD,kDAA0B;AAC1B,sEAA8C;AAE9C,SAAgB,YAAY,CAAC,OAAgB;IACzC,OAAO;SACF,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,kEAAkE,CAAC;SAC/E,MAAM,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACjE,WAAW,CAAC,OAAO,EAAE;;;;;;;;;CAS7B,CAAC;SACO,MAAM,CAAC,CAAC,KAAyB,EAAE,OAA2B,EAAE,EAAE;QAE/D,MAAM,MAAM,GAAG,mBAAS,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8BAA8B,mBAAS,CAAC,aAAa,EAAE,mCAAmC,CAAC,CAAC,CAAC;YACrH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,qFAAqF;YACrF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,qDAAqD,KAAK,kCAAkC,CAAC,CAAC,CAAC;gBAC1H,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1G,OAAO;QACX,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,mBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,kBAAkB,KAAK,uBAAuB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,qFAAqF;QACrF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerSystemCommands = registerSystemCommands;
|
|
4
4
|
const info_1 = require("./info");
|
|
5
5
|
const read_1 = require("./read");
|
|
6
|
+
const docs_1 = require("./docs");
|
|
6
7
|
// Root-level commands that are not tied to a specific project or the runtime
|
|
7
8
|
function registerSystemCommands(program) {
|
|
8
9
|
(0, info_1.registerInfo)(program);
|
|
9
10
|
(0, read_1.registerRead)(program);
|
|
11
|
+
(0, docs_1.registerDocs)(program);
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/system/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/system/index.ts"],"names":[],"mappings":";;AAMA,wDAIC;AATD,iCAAsC;AACtC,iCAAsC;AACtC,iCAAsC;AAEtC,6EAA6E;AAC7E,SAAgB,sBAAsB,CAAC,OAAgB;IACnD,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -8,8 +8,9 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
8
8
|
const readline_1 = require("readline");
|
|
9
9
|
const process_1 = require("process");
|
|
10
10
|
function registerRead(program) {
|
|
11
|
+
// Manual test of the readline prompts, of no use to a consumer: kept out of --help
|
|
11
12
|
program
|
|
12
|
-
.command('read')
|
|
13
|
+
.command('read', { hidden: true })
|
|
13
14
|
.description('Read test')
|
|
14
15
|
.action(async () => {
|
|
15
16
|
console.log(chalk_1.default.green('Read test:'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/system/read.ts"],"names":[],"mappings":";;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/system/read.ts"],"names":[],"mappings":";;;;;AAKA,oCAoBC;AAxBD,kDAA0B;AAC1B,uCAA2C;AAC3C,qCAA2D;AAE3D,SAAgB,YAAY,CAAC,OAAgB;IACzC,mFAAmF;IACnF,OAAO;SACF,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACjC,WAAW,CAAC,WAAW,CAAC;SACxB,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAEvC,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAL,eAAK,EAAE,MAAM,EAAN,gBAAM,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBACjD,EAAE,CAAC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;gBACO,CAAC;YACL,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -97,15 +97,16 @@ class CliScriptCompiler {
|
|
|
97
97
|
options = typescript_1.default.convertCompilerOptionsFromJson(BuildUtils_1.default.defaultCompilerOptions(), basePath).options;
|
|
98
98
|
}
|
|
99
99
|
options.noEmit = true;
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
if (
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
// The generated 'db-schema.d.ts' augments '@codenotch/process' with the typed tables and
|
|
101
|
+
// documents. A tsconfig includes it through its file list (handled above); without one it
|
|
102
|
+
// has to join the program by hand, or 'ctx.tables.<name>' would not resolve.
|
|
103
|
+
if (!configPath) {
|
|
104
|
+
const workspacePath = BuildUtils_1.default.findWorkspaceFromFile(requestedFiles[0]);
|
|
105
|
+
const dbSchemaPath = workspacePath ? (0, path_1.join)(workspacePath, 'db-schema.d.ts') : undefined;
|
|
106
|
+
if (dbSchemaPath !== undefined && (0, fs_1.existsSync)(dbSchemaPath)) {
|
|
107
|
+
rootFiles.push((0, path_1.resolve)(dbSchemaPath));
|
|
107
108
|
}
|
|
108
|
-
}
|
|
109
|
+
}
|
|
109
110
|
const program = typescript_1.default.createProgram([...new Set(rootFiles)], options);
|
|
110
111
|
const diagnostics = [...configDiagnostics, ...typescript_1.default.getPreEmitDiagnostics(program)];
|
|
111
112
|
const isRequestedFile = (fileName) => requestedFiles.some(f => f.toLowerCase() === (0, path_1.resolve)(fileName).toLowerCase());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/ScriptValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"ScriptValidator.js","sourceRoot":"","sources":["../../../../src/commands/validation/files/ScriptValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,20 +24,11 @@ function registerValidate(program) {
|
|
|
24
24
|
.option('--json', 'Output the messages as a JSON array instead of text')
|
|
25
25
|
.option('--nolimit', `Validate all files instead of capping at ${MAX_VALIDATED_FILES}`)
|
|
26
26
|
.addHelpText('after', `
|
|
27
|
-
Supported files:
|
|
28
|
-
*.i18n.csv translations,
|
|
29
|
-
manifest.json, <App>.manifest.json,
|
|
30
|
-
scripts (.ts, .tsx, .js, .jsx, ...) and .json files.
|
|
31
|
-
|
|
32
|
-
Folders are scanned recursively, ignoring node_modules, dot-folders, dist,
|
|
33
|
-
build. At most ${MAX_VALIDATED_FILES} files are validated unless --nolimit is given.
|
|
34
|
-
|
|
35
|
-
Exit code is 1 when at least one error is reported, 0 otherwise.
|
|
36
|
-
|
|
37
27
|
Examples:
|
|
38
|
-
$ cn validate
|
|
39
|
-
$ cn validate .
|
|
40
|
-
$ cn validate
|
|
28
|
+
$ cn validate . the whole project
|
|
29
|
+
$ cn validate processes/books.ts a single file
|
|
30
|
+
$ cn validate . --json machine-readable output
|
|
31
|
+
`)
|
|
41
32
|
.action(async (targetPath, options) => {
|
|
42
33
|
// resolve() already turns a relative path into an absolute one, based on the current directory
|
|
43
34
|
targetPath = (0, path_1.resolve)(targetPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validation/validate.ts"],"names":[],"mappings":";;;;;AAgBA,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validation/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -48,8 +48,18 @@ const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname
|
|
|
48
48
|
const program = new commander_1.Command();
|
|
49
49
|
program
|
|
50
50
|
.name('codenotch-cli')
|
|
51
|
-
.description('CLI
|
|
52
|
-
.version(packageJson.version)
|
|
51
|
+
.description('CLI of the Codenotch platform: manage the local runtime, scaffold and deploy projects, generate their derived files, and work on their React apps')
|
|
52
|
+
.version(packageJson.version)
|
|
53
|
+
.addHelpText('after', `
|
|
54
|
+
The reference documentation ships with the CLI: 'cn docs' lists its topics (project anatomy,
|
|
55
|
+
tables, processes, queries, apps, i18n). Read the topic before writing a file of that kind.
|
|
56
|
+
|
|
57
|
+
Getting started:
|
|
58
|
+
$ cn runtime update install (or update) the local Codenotch runtime
|
|
59
|
+
$ cn runtime start
|
|
60
|
+
$ cn project new create a project (asks for the template and the name)
|
|
61
|
+
$ cn project start build, deploy and open it
|
|
62
|
+
`);
|
|
53
63
|
(0, commands_1.registerAllCommands)(program);
|
|
54
64
|
program.parse();
|
|
55
65
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,6CAAkC;AAClC,oDAA4B;AAC5B,yCAAiD;AAEjD,2HAA2H;AAC3H,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACzF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,6CAAkC;AAClC,oDAA4B;AAC5B,yCAAiD;AAEjD,2HAA2H;AAC3H,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACzF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,mJAAmJ,CAAC;KAChK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,WAAW,CAAC,OAAO,EAAE;;;;;;;;;CASzB,CAAC,CAAC;AAEH,IAAA,8BAAmB,EAAC,OAAO,CAAC,CAAC;AAE7B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -5,6 +5,12 @@ interface IWorkspace {
|
|
|
5
5
|
}
|
|
6
6
|
export interface IBuildOptions {
|
|
7
7
|
cluster?: string;
|
|
8
|
+
/** false with --no-open: the bundle folder is not revealed in the file explorer */
|
|
9
|
+
open?: boolean;
|
|
10
|
+
/** true with --static: the environment is baked into the bundle instead of fetched from /api/env */
|
|
11
|
+
static?: boolean;
|
|
12
|
+
/** true with --pwa: web manifest + icons + offline service worker; implies static */
|
|
13
|
+
pwa?: boolean;
|
|
8
14
|
}
|
|
9
15
|
export default abstract class BuildUtils {
|
|
10
16
|
static readonly CN_REACT_VERSION = "2.0.1";
|
|
@@ -29,24 +35,43 @@ export default abstract class BuildUtils {
|
|
|
29
35
|
* files too, typechecking is the job of 'cn validate') inside `-source`, with the Node the CLI
|
|
30
36
|
* runs under — Node 20 or newer is expected (Vite 8), and npm needs the network.
|
|
31
37
|
*
|
|
32
|
-
* On success, prints the `cn react serve '<dist>'` command to try the bundle
|
|
38
|
+
* On success, prints the `cn react serve '<dist>'` command to try the bundle, and returns
|
|
39
|
+
* the path of the dist folder (undefined when the copy found nothing to build).
|
|
33
40
|
*
|
|
34
41
|
* @param appFilePath Path (absolute, or relative to the current directory) to the app
|
|
35
42
|
* component, e.g. `./apps/index.tsx`. NOT the manifest: the sibling
|
|
36
43
|
* `<name>.manifest.json` is derived from it, and must exist and declare
|
|
37
44
|
* `app.name`, which names the staging folders. The file must live inside
|
|
38
45
|
* a Codenotch workspace (a `manifest.json` in one of its parent folders).
|
|
39
|
-
* @param clusterUrl
|
|
40
|
-
*
|
|
41
|
-
*
|
|
46
|
+
* @param options `clusterUrl`: base URL of the Codenotch cluster the bundle will talk to,
|
|
47
|
+
* written into the `.env` of the dist (and baked in when static). Without it
|
|
48
|
+
* the bundle is built all the same, but not bound to a cluster.
|
|
49
|
+
* `static`: the environment is baked into the JS (a `codenotch.env.json`
|
|
50
|
+
* imported by index.jsx) instead of the `/api/env` fetch — the dist then runs
|
|
51
|
+
* from any static file host. The `.env` is still written, so `cn react serve`
|
|
52
|
+
* keeps working on such a bundle.
|
|
53
|
+
* `pwa`: implies static, and makes the bundle installable — a
|
|
54
|
+
* `manifest.webmanifest` generated from the `pwa` section of the app manifest
|
|
55
|
+
* (with its icons, shipped through the staging `public/`), and a service
|
|
56
|
+
* worker `sw.js` precaching the whole dist for offline use.
|
|
42
57
|
*
|
|
43
58
|
* Validation failures (missing file, no workspace, no app name...) print the reason and leave
|
|
44
59
|
* with `process.exit(1)`: this method is the command, not a library call. See `buildApp2` for
|
|
45
60
|
* the throwing, CI oriented variant.
|
|
46
61
|
*/
|
|
47
|
-
static buildReactApp(appFilePath: string,
|
|
62
|
+
static buildReactApp(appFilePath: string, options?: {
|
|
63
|
+
clusterUrl?: string;
|
|
64
|
+
static?: boolean;
|
|
65
|
+
pwa?: boolean;
|
|
66
|
+
}): Promise<string | undefined>;
|
|
48
67
|
static buildApp2(appFilePath: string): Promise<string>;
|
|
49
68
|
private static createIndexJsx;
|
|
69
|
+
/**
|
|
70
|
+
* The static entry: the environment is baked in at build time (codenotch.env.json, bundled by
|
|
71
|
+
* vite through the import), the page needs no /api/env endpoint and runs from any static file
|
|
72
|
+
* host — or fully offline once the PWA service worker cached it.
|
|
73
|
+
*/
|
|
74
|
+
private static createIndexJsxStatic;
|
|
50
75
|
/**
|
|
51
76
|
* When served from the runtime env variables are not available, the variables are injected into the html file instead
|
|
52
77
|
*/
|
|
@@ -58,6 +83,8 @@ export default abstract class BuildUtils {
|
|
|
58
83
|
app?: IAppManifest;
|
|
59
84
|
clusterUrl?: string;
|
|
60
85
|
}): Promise<any>;
|
|
86
|
+
/** The env entries actually set: an unset value would reach the page as the string "undefined" */
|
|
87
|
+
private static definedEnvEntries;
|
|
61
88
|
/** Compiler options shared by the generated build tsconfig and `cn validate` on script files. */
|
|
62
89
|
static defaultCompilerOptions(): {
|
|
63
90
|
target: string;
|
|
@@ -78,6 +105,27 @@ export default abstract class BuildUtils {
|
|
|
78
105
|
private static createTsConfig;
|
|
79
106
|
private static createViteConfig;
|
|
80
107
|
private static createIndexHtml;
|
|
108
|
+
/**
|
|
109
|
+
* The web app manifest of a PWA bundle, straight from the `pwa` section of the app manifest:
|
|
110
|
+
* every field the user set is kept as-is, only the essentials get a default. Written under the
|
|
111
|
+
* staging `public/` so vite ships it at the root of the dist.
|
|
112
|
+
*/
|
|
113
|
+
private static createWebManifest;
|
|
114
|
+
/**
|
|
115
|
+
* Copies the icons the `pwa` section references into the staging `public/`, so vite ships
|
|
116
|
+
* them next to manifest.webmanifest (their `src` stays valid, it is relative to the manifest).
|
|
117
|
+
* A `src` is looked up next to the app manifest first, then from the workspace root; http(s)
|
|
118
|
+
* and data URLs are left untouched. Missing files only warn: the build stays usable.
|
|
119
|
+
*/
|
|
120
|
+
private static copyPwaIcons;
|
|
121
|
+
/**
|
|
122
|
+
* Generates `sw.js` at the root of the dist, precaching every file of the bundle for offline
|
|
123
|
+
* use. Runs AFTER the vite build: the precache list is read from the dist itself. The cache
|
|
124
|
+
* name carries a hash of the precached contents, so any rebuild invalidates the previous
|
|
125
|
+
* cache — hashed asset names alone would miss an index.html-only change.
|
|
126
|
+
* Returns the number of precached files.
|
|
127
|
+
*/
|
|
128
|
+
private static createServiceWorker;
|
|
81
129
|
private static createPkgJson;
|
|
82
130
|
/**
|
|
83
131
|
* Starts the Vite dev server of one app, with hot reload on the real sources of the project.
|