@lithia-js/cli 1.0.0-canary.2 → 1.0.0-canary.4
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/CHANGELOG.md +20 -0
- package/dist/cmd/build.js +11 -7
- package/dist/cmd/build.js.map +1 -1
- package/dist/cmd/dev.js +3 -8
- package/dist/cmd/dev.js.map +1 -1
- package/dist/cmd/start.js +1 -13
- package/dist/cmd/start.js.map +1 -1
- package/dist/entrypoint.d.ts +2 -0
- package/dist/entrypoint.js +26 -0
- package/dist/entrypoint.js.map +1 -0
- package/package.json +3 -3
- package/src/cmd/build.ts +0 -26
- package/src/cmd/dev.ts +0 -126
- package/src/cmd/start.ts +0 -47
- package/src/main.ts +0 -22
- package/src/meta.ts +0 -1
- package/tsconfig.json +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @lithia-js/cli
|
|
2
2
|
|
|
3
|
+
## 1.0.0-canary.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- fb9cee1: Enhanced production build support, fixed import module bug on production environment, fixed stdio inherit bug on `create-lithia`
|
|
8
|
+
- 00d8f11: fixed available events after connection
|
|
9
|
+
- Updated dependencies [fb9cee1]
|
|
10
|
+
- Updated dependencies [00d8f11]
|
|
11
|
+
- @lithia-js/core@1.0.0-canary.4
|
|
12
|
+
- @lithia-js/utils@1.0.0-canary.4
|
|
13
|
+
|
|
14
|
+
## 1.0.0-canary.3
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- d536a2f: Fixed exports from @lithia-js/native
|
|
19
|
+
- Updated dependencies [d536a2f]
|
|
20
|
+
- @lithia-js/core@1.0.0-canary.3
|
|
21
|
+
- @lithia-js/utils@1.0.0-canary.3
|
|
22
|
+
|
|
3
23
|
## 1.0.0-canary.2
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/cmd/build.js
CHANGED
|
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const promises_1 = require("node:fs/promises");
|
|
6
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
7
8
|
const core_1 = require("@lithia-js/core");
|
|
8
|
-
const utils_1 = require("@lithia-js/utils");
|
|
9
9
|
const citty_1 = require("citty");
|
|
10
10
|
const build = (0, citty_1.defineCommand)({
|
|
11
11
|
meta: {
|
|
@@ -13,15 +13,19 @@ const build = (0, citty_1.defineCommand)({
|
|
|
13
13
|
description: "Start the build process",
|
|
14
14
|
},
|
|
15
15
|
async run() {
|
|
16
|
-
const tsConfig = (0, utils_1.parseTsConfig)();
|
|
17
|
-
const sourceRoot = node_path_1.default.join(process.cwd(), "src");
|
|
18
|
-
const outRoot = node_path_1.default.join(process.cwd(), tsConfig.outDir);
|
|
19
16
|
const lithia = await core_1.Lithia.create({
|
|
20
|
-
environment: "
|
|
21
|
-
sourceRoot,
|
|
22
|
-
outRoot,
|
|
17
|
+
environment: "build",
|
|
23
18
|
});
|
|
24
19
|
lithia.build();
|
|
20
|
+
const cfgPath = node_path_1.default.join(lithia.getOutRoot(), "lithia.config.json");
|
|
21
|
+
const entryPath = node_path_1.default.join(lithia.getOutRoot(), "lithia.js");
|
|
22
|
+
const content = await (0, promises_1.readFile)(node_path_1.default.resolve(__dirname, "../entrypoint.js"), "utf-8");
|
|
23
|
+
await (0, promises_1.writeFile)(entryPath, content, "utf-8");
|
|
24
|
+
await (0, promises_1.writeFile)(cfgPath, JSON.stringify(lithia.getConfig(), null, 2), "utf-8");
|
|
25
|
+
try {
|
|
26
|
+
await (0, promises_1.chmod)(entryPath, 0o755);
|
|
27
|
+
}
|
|
28
|
+
catch { }
|
|
25
29
|
},
|
|
26
30
|
});
|
|
27
31
|
exports.default = build;
|
package/dist/cmd/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cmd/build.ts"],"names":[],"mappings":";;;;;AAAA,0DAA6B;AAC7B,0CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cmd/build.ts"],"names":[],"mappings":";;;;;AAAA,+CAA8D;AAC9D,0DAA6B;AAC7B,0CAAyC;AACzC,iCAAsC;AAEtC,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC;IAC3B,IAAI,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yBAAyB;KACtC;IACD,KAAK,CAAC,GAAG;QACR,MAAM,MAAM,GAAG,MAAM,aAAM,CAAC,MAAM,CAAC;YAClC,WAAW,EAAE,OAAO;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAC7B,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC3C,OAAO,CACP,CAAC;QAEF,MAAM,IAAA,oBAAS,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAA,oBAAS,EACd,OAAO,EACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAC3C,OAAO,CACP,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,IAAA,gBAAK,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC;CACD,CAAC,CAAC;AAEH,kBAAe,KAAK,CAAC"}
|
package/dist/cmd/dev.js
CHANGED
|
@@ -16,14 +16,9 @@ const dev = (0, citty_1.defineCommand)({
|
|
|
16
16
|
async run() {
|
|
17
17
|
const cwd = process.cwd();
|
|
18
18
|
// Load environment variables initially
|
|
19
|
-
(0, core_1.loadEnv)(
|
|
20
|
-
const tsConfig = (0, utils_1.parseTsConfig)();
|
|
21
|
-
const sourceRoot = node_path_1.default.join(cwd, "src");
|
|
22
|
-
const outRoot = node_path_1.default.join(cwd, tsConfig.outDir);
|
|
19
|
+
(0, core_1.loadEnv)();
|
|
23
20
|
const lithia = await core_1.Lithia.create({
|
|
24
21
|
environment: "development",
|
|
25
|
-
sourceRoot,
|
|
26
|
-
outRoot,
|
|
27
22
|
});
|
|
28
23
|
// Initial build
|
|
29
24
|
lithia.build();
|
|
@@ -45,7 +40,7 @@ const dev = (0, citty_1.defineCommand)({
|
|
|
45
40
|
}, ms);
|
|
46
41
|
};
|
|
47
42
|
// Watch source files
|
|
48
|
-
const watchPath =
|
|
43
|
+
const watchPath = node_path_1.default.join(cwd, "src");
|
|
49
44
|
const sourceWatcher = chokidar_1.default.watch(watchPath, {
|
|
50
45
|
ignored: /(^|[/\\])\../, // ignore dotfiles
|
|
51
46
|
persistent: true,
|
|
@@ -78,7 +73,7 @@ const dev = (0, citty_1.defineCommand)({
|
|
|
78
73
|
envWatcher.on("all", (event, path) => {
|
|
79
74
|
if (event === "change" || event === "add") {
|
|
80
75
|
// Reload env vars
|
|
81
|
-
(0, core_1.loadEnv)(
|
|
76
|
+
(0, core_1.loadEnv)();
|
|
82
77
|
// Restart server to pick up new env vars if needed
|
|
83
78
|
// For now we just reload, but some configs might depend on env vars
|
|
84
79
|
// so a full restart might be safer, but let's stick to hot reloading what we can
|
package/dist/cmd/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cmd/dev.ts"],"names":[],"mappings":";;;;;AAAA,0DAA6B;AAC7B,0CAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cmd/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/cmd/start.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
7
3
|
const core_1 = require("@lithia-js/core");
|
|
8
|
-
const utils_1 = require("@lithia-js/utils");
|
|
9
4
|
const citty_1 = require("citty");
|
|
10
5
|
const start = (0, citty_1.defineCommand)({
|
|
11
6
|
meta: {
|
|
@@ -13,16 +8,9 @@ const start = (0, citty_1.defineCommand)({
|
|
|
13
8
|
description: "Start the production server",
|
|
14
9
|
},
|
|
15
10
|
async run() {
|
|
16
|
-
|
|
17
|
-
// Load environment variables
|
|
18
|
-
(0, core_1.loadEnv)(cwd);
|
|
19
|
-
const tsConfig = (0, utils_1.parseTsConfig)();
|
|
20
|
-
const sourceRoot = node_path_1.default.join(cwd, "src");
|
|
21
|
-
const outRoot = node_path_1.default.join(cwd, tsConfig.outDir);
|
|
11
|
+
(0, core_1.loadEnv)();
|
|
22
12
|
const lithia = await core_1.Lithia.create({
|
|
23
13
|
environment: "production",
|
|
24
|
-
sourceRoot,
|
|
25
|
-
outRoot,
|
|
26
14
|
});
|
|
27
15
|
lithia.loadRoutes();
|
|
28
16
|
try {
|
package/dist/cmd/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cmd/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cmd/start.ts"],"names":[],"mappings":";;AAAA,0CAAkD;AAClD,iCAAsC;AAEtC,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC;IAC3B,IAAI,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6BAA6B;KAC1C;IACD,KAAK,CAAC,GAAG;QACR,IAAA,cAAO,GAAE,CAAC;QAEV,MAAM,MAAM,GAAG,MAAM,aAAM,CAAC,MAAM,CAAC;YAClC,WAAW,EAAE,YAAY;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpB,IAAI,CAAC;YACJ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACR,wCAAwC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;CACD,CAAC,CAAC;AAEH,kBAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const core_1 = require("@lithia-js/core");
|
|
5
|
+
async function main() {
|
|
6
|
+
(0, core_1.loadEnv)();
|
|
7
|
+
const lithia = await core_1.Lithia.create({
|
|
8
|
+
environment: "production",
|
|
9
|
+
});
|
|
10
|
+
lithia.loadRoutes();
|
|
11
|
+
try {
|
|
12
|
+
await lithia.start();
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
const shutdown = async () => {
|
|
16
|
+
try {
|
|
17
|
+
await lithia.stop();
|
|
18
|
+
}
|
|
19
|
+
catch { }
|
|
20
|
+
process.exit(0);
|
|
21
|
+
};
|
|
22
|
+
process.on("SIGINT", shutdown);
|
|
23
|
+
process.on("SIGTERM", shutdown);
|
|
24
|
+
}
|
|
25
|
+
main().then();
|
|
26
|
+
//# sourceMappingURL=entrypoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../src/entrypoint.ts"],"names":[],"mappings":";;;AAEA,0CAAkD;AAElD,KAAK,UAAU,IAAI;IAClB,IAAA,cAAO,GAAE,CAAC;IAEV,MAAM,MAAM,GAAG,MAAM,aAAM,CAAC,MAAM,CAAC;QAClC,WAAW,EAAE,YAAY;KACzB,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,EAAE,CAAC;IAEpB,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,CAAC;YACJ,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lithia-js/cli",
|
|
3
|
-
"version": "1.0.0-canary.
|
|
3
|
+
"version": "1.0.0-canary.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"bin": {
|
|
6
6
|
"lithia": "dist/main.js"
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"citty": "^0.2.0",
|
|
20
20
|
"chokidar": "^5.0.0",
|
|
21
|
-
"@lithia-js/core": "1.0.0-canary.
|
|
22
|
-
"@lithia-js/utils": "1.0.0-canary.
|
|
21
|
+
"@lithia-js/core": "1.0.0-canary.4",
|
|
22
|
+
"@lithia-js/utils": "1.0.0-canary.4"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"node": ">=20"
|
package/src/cmd/build.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { Lithia } from "@lithia-js/core";
|
|
3
|
-
import { parseTsConfig } from "@lithia-js/utils";
|
|
4
|
-
import { defineCommand } from "citty";
|
|
5
|
-
|
|
6
|
-
const build = defineCommand({
|
|
7
|
-
meta: {
|
|
8
|
-
name: "build",
|
|
9
|
-
description: "Start the build process",
|
|
10
|
-
},
|
|
11
|
-
async run() {
|
|
12
|
-
const tsConfig = parseTsConfig();
|
|
13
|
-
const sourceRoot = path.join(process.cwd(), "src");
|
|
14
|
-
const outRoot = path.join(process.cwd(), tsConfig.outDir);
|
|
15
|
-
|
|
16
|
-
const lithia = await Lithia.create({
|
|
17
|
-
environment: "production",
|
|
18
|
-
sourceRoot,
|
|
19
|
-
outRoot,
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
lithia.build();
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
export default build;
|
package/src/cmd/dev.ts
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { Lithia, loadEnv, logger } from "@lithia-js/core";
|
|
3
|
-
import { green, parseTsConfig } from "@lithia-js/utils";
|
|
4
|
-
import chokidar from "chokidar";
|
|
5
|
-
import { defineCommand } from "citty";
|
|
6
|
-
|
|
7
|
-
const dev = defineCommand({
|
|
8
|
-
meta: {
|
|
9
|
-
name: "dev",
|
|
10
|
-
description: "Start the development server",
|
|
11
|
-
},
|
|
12
|
-
async run() {
|
|
13
|
-
const cwd = process.cwd();
|
|
14
|
-
|
|
15
|
-
// Load environment variables initially
|
|
16
|
-
loadEnv(cwd);
|
|
17
|
-
|
|
18
|
-
const tsConfig = parseTsConfig();
|
|
19
|
-
const sourceRoot = path.join(cwd, "src");
|
|
20
|
-
const outRoot = path.join(cwd, tsConfig.outDir);
|
|
21
|
-
const lithia = await Lithia.create({
|
|
22
|
-
environment: "development",
|
|
23
|
-
sourceRoot,
|
|
24
|
-
outRoot,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
// Initial build
|
|
28
|
-
lithia.build();
|
|
29
|
-
|
|
30
|
-
// Start the HTTP server after initial build
|
|
31
|
-
try {
|
|
32
|
-
await lithia.start();
|
|
33
|
-
} catch {
|
|
34
|
-
// let Lithia's emitter handle the error
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Debounced rebuild helper
|
|
38
|
-
let timer: NodeJS.Timeout | null = null;
|
|
39
|
-
const debounce = (fn: () => void, ms = 150) => {
|
|
40
|
-
if (timer) clearTimeout(timer);
|
|
41
|
-
timer = setTimeout(() => {
|
|
42
|
-
timer = null;
|
|
43
|
-
fn();
|
|
44
|
-
}, ms);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
// Watch source files
|
|
48
|
-
const watchPath = sourceRoot;
|
|
49
|
-
const sourceWatcher = chokidar.watch(watchPath, {
|
|
50
|
-
ignored: /(^|[/\\])\../, // ignore dotfiles
|
|
51
|
-
persistent: true,
|
|
52
|
-
ignoreInitial: true,
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
sourceWatcher.on("all", (event, changedPath) => {
|
|
56
|
-
// only trigger on relevant events
|
|
57
|
-
if (event === "add" || event === "change" || event === "unlink") {
|
|
58
|
-
const filename = path.basename(changedPath);
|
|
59
|
-
if (filename === "_server.ts") {
|
|
60
|
-
logger.warn(
|
|
61
|
-
`Detected change in ${green(filename)} file. Please restart the dev server to apply changes.`,
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// notify Lithia about the changed file so core can react
|
|
66
|
-
try {
|
|
67
|
-
lithia.emit("file:changed", { event, path: changedPath });
|
|
68
|
-
} catch {
|
|
69
|
-
// ignore if emitter not available for some reason
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
debounce(() => {
|
|
73
|
-
lithia.build();
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// Watch env files for changes
|
|
79
|
-
const envWatcher = chokidar.watch([".env", ".env.local"], {
|
|
80
|
-
cwd: cwd,
|
|
81
|
-
ignoreInitial: true,
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
envWatcher.on("all", (event, path) => {
|
|
85
|
-
if (event === "change" || event === "add") {
|
|
86
|
-
// Reload env vars
|
|
87
|
-
loadEnv(cwd);
|
|
88
|
-
|
|
89
|
-
// Restart server to pick up new env vars if needed
|
|
90
|
-
// For now we just reload, but some configs might depend on env vars
|
|
91
|
-
// so a full restart might be safer, but let's stick to hot reloading what we can
|
|
92
|
-
// Usually env var changes require process restart in Node, but
|
|
93
|
-
// since we are just setting process.env, subsequent accesses will see new values.
|
|
94
|
-
// However, if code read process.env at startup, it won't suffice.
|
|
95
|
-
// For a dev server, maybe logging that env changed is enough?
|
|
96
|
-
// Or fully restarting the Lithia instance?
|
|
97
|
-
// Given the request "recarregamento automático de .env", we should try to support it.
|
|
98
|
-
// But Node.js process.env changes don't affect already started modules if they cached it.
|
|
99
|
-
|
|
100
|
-
// Let's at least reload the env vars.
|
|
101
|
-
// A full restart would require tearing down Lithia and recreating it.
|
|
102
|
-
|
|
103
|
-
logger.event(`Environment file changed (${path}). Reloading...`);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
// Graceful shutdown: stop watchers and server
|
|
108
|
-
const shutdown = async () => {
|
|
109
|
-
try {
|
|
110
|
-
await sourceWatcher.close();
|
|
111
|
-
await envWatcher.close();
|
|
112
|
-
} catch (_) {}
|
|
113
|
-
try {
|
|
114
|
-
await lithia.stop();
|
|
115
|
-
} catch (_) {}
|
|
116
|
-
process.exit(0);
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
process.on("SIGINT", shutdown);
|
|
120
|
-
process.on("SIGTERM", shutdown);
|
|
121
|
-
|
|
122
|
-
// Process remains alive while the HTTP server and watcher run
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
export default dev;
|
package/src/cmd/start.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { Lithia, loadEnv } from "@lithia-js/core";
|
|
3
|
-
import { parseTsConfig } from "@lithia-js/utils";
|
|
4
|
-
import { defineCommand } from "citty";
|
|
5
|
-
|
|
6
|
-
const start = defineCommand({
|
|
7
|
-
meta: {
|
|
8
|
-
name: "start",
|
|
9
|
-
description: "Start the production server",
|
|
10
|
-
},
|
|
11
|
-
async run() {
|
|
12
|
-
const cwd = process.cwd();
|
|
13
|
-
|
|
14
|
-
// Load environment variables
|
|
15
|
-
loadEnv(cwd);
|
|
16
|
-
|
|
17
|
-
const tsConfig = parseTsConfig();
|
|
18
|
-
const sourceRoot = path.join(cwd, "src");
|
|
19
|
-
const outRoot = path.join(cwd, tsConfig.outDir);
|
|
20
|
-
|
|
21
|
-
const lithia = await Lithia.create({
|
|
22
|
-
environment: "production",
|
|
23
|
-
sourceRoot,
|
|
24
|
-
outRoot,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
lithia.loadRoutes();
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
await lithia.start();
|
|
31
|
-
} catch {
|
|
32
|
-
// let Lithia's emitter handle the error
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const shutdown = async () => {
|
|
36
|
-
try {
|
|
37
|
-
await lithia.stop();
|
|
38
|
-
} catch {}
|
|
39
|
-
process.exit(0);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
process.on("SIGINT", shutdown);
|
|
43
|
-
process.on("SIGTERM", shutdown);
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
export default start;
|
package/src/main.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#! /usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { defineCommand, runMain } from "citty";
|
|
4
|
-
import build from "./cmd/build";
|
|
5
|
-
import dev from "./cmd/dev";
|
|
6
|
-
import start from "./cmd/start";
|
|
7
|
-
import { version } from "./meta";
|
|
8
|
-
|
|
9
|
-
const main = defineCommand({
|
|
10
|
-
meta: {
|
|
11
|
-
name: "lithia",
|
|
12
|
-
description: "Lithia CLI",
|
|
13
|
-
version,
|
|
14
|
-
},
|
|
15
|
-
subCommands: {
|
|
16
|
-
dev,
|
|
17
|
-
build,
|
|
18
|
-
start,
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
runMain(main).then();
|
package/src/meta.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { version } from "../package.json";
|