@adep/cli 0.1.13 → 0.1.14

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 CHANGED
@@ -235,8 +235,8 @@ adep serve --db sqlite --db-file var/local.sqlite # 指定库文件
235
235
  - 绑定非回环地址时给出对外暴露警告(它不带生产级加固)。
236
236
 
237
237
  - 数据库两档模式(`--db`):
238
- - `sim`(缺省):内置模拟引擎,库是 JSON 文件 `.adep/sim/db.json`。`--schema` 只支持 DDL 子集,其余语句跳过并告警;
239
- - `sqlite`:**真实 SQLite 库文件**,驱动按运行时分派(Bun → `bun:sqlite`,Node ≥ 22.5 → `node:sqlite`)。`--schema` 的每条语句都真实执行,**失败即停**(视图 / 唯一索引 / 触发器等 sim 做不到的能力全可用)。运行时两者都没有时拒绝启动并提示回退 `--db sim`。
238
+ - `sqlite`(缺省):**真实 SQLite 库文件**,驱动按运行时分派(Bun → `bun:sqlite`,Node ≥ 22.5 → `node:sqlite`)。`--schema` 的每条语句都真实执行,**失败即停**(视图 / 唯一索引 / 触发器等 sim 做不到的能力全可用)。运行时不支持(Bun / Node < 22.5)或打开库文件失败时**自动降级 `sim` 并告警**,不拒绝启动;
239
+ - `sim`:内置模拟引擎,库是 JSON 文件 `.adep/sim/db.json`。`--schema` 只支持 DDL 子集,其余语句跳过并告警。
240
240
  - 模式名写错(旗标或环境变量)一律拒绝启动,不静默换库;启动横幅与根路径 `/` 会回显 `db.mode` / `db.file` / `db.driver`。
241
241
 
242
242
  ### `adep publish`
package/dist/index.js CHANGED
@@ -5505,7 +5505,7 @@ var init_db_mode = __esm({
5505
5505
  "packages/cli/src/serve/db-mode.ts"() {
5506
5506
  "use strict";
5507
5507
  SERVE_DB_MODES = ["sim", "sqlite"];
5508
- DEFAULT_SERVE_DB_MODE = "sim";
5508
+ DEFAULT_SERVE_DB_MODE = "sqlite";
5509
5509
  DEFAULT_SQLITE_DB_FILE = ".adep/data/project.sqlite";
5510
5510
  }
5511
5511
  });
@@ -5531,9 +5531,12 @@ function detectSqliteRuntime(versions = process.versions) {
5531
5531
  function sqliteModuleName(runtime) {
5532
5532
  return runtime === "bun" ? "bun:sqlite" : "node:sqlite";
5533
5533
  }
5534
- function sqliteRuntimeRequirementMessage(versions = process.versions) {
5534
+ function sqliteUnavailableReason(versions = process.versions) {
5535
5535
  const current = isBun(versions) ? `Bun ${versions["bun"] ?? ""}`.trim() : `Node ${versions["node"] ?? "\u672A\u77E5"}`;
5536
- return `--db sqlite \u9700\u8981 Bun\uFF08\u5185\u7F6E bun:sqlite\uFF09\u6216 Node \u2265 ${NODE_SQLITE_MIN.major}.${NODE_SQLITE_MIN.minor}\uFF08\u5185\u7F6E node:sqlite\uFF09\uFF1B\u5F53\u524D\u8FD0\u884C\u65F6 ${current} \u4E0D\u63D0\u4F9B SQLite \u5185\u5EFA\u6A21\u5757\u3002\u8BF7\u6539\u7528 \`--db sim\`\uFF08\u5185\u7F6E\u6A21\u62DF\u5F15\u64CE\uFF0C\u65E0\u9700\u989D\u5916\u8FD0\u884C\u65F6\uFF09\uFF0C\u6216\u5347\u7EA7 Node / \u7528 Bun \u8FD0\u884C\u3002`;
5536
+ return `\u5F53\u524D\u8FD0\u884C\u65F6 ${current} \u4E0D\u63D0\u4F9B SQLite \u5185\u5EFA\u6A21\u5757\uFF08\u9700\u8981 Bun \u6216 Node \u2265 ${NODE_SQLITE_MIN.major}.${NODE_SQLITE_MIN.minor}\uFF09`;
5537
+ }
5538
+ function sqliteRuntimeRequirementMessage(versions = process.versions) {
5539
+ return `--db sqlite \u9700\u8981 Bun\uFF08\u5185\u7F6E bun:sqlite\uFF09\u6216 Node \u2265 ${NODE_SQLITE_MIN.major}.${NODE_SQLITE_MIN.minor}\uFF08\u5185\u7F6E node:sqlite\uFF09\uFF1B${sqliteUnavailableReason(versions)}\u3002\u8BF7\u6539\u7528 \`--db sim\`\uFF08\u5185\u7F6E\u6A21\u62DF\u5F15\u64CE\uFF0C\u65E0\u9700\u989D\u5916\u8FD0\u884C\u65F6\uFF09\uFF0C\u6216\u5347\u7EA7 Node / \u7528 Bun \u8FD0\u884C\u3002`;
5537
5540
  }
5538
5541
  async function openSqliteProjectDriver(file, options = {}) {
5539
5542
  const runtime = options.runtime ?? detectSqliteRuntime();
@@ -5639,8 +5642,8 @@ async function startServeServer(options) {
5639
5642
  cwd,
5640
5643
  options.staticDir ?? envString("ADEP_SERVE_STATIC_DIR") ?? "public"
5641
5644
  );
5642
- const dbMode = resolveServeDbMode(options.db);
5643
- const sqliteFile = dbMode === "sqlite" ? resolveServeDbFile(cwd, options.dbFile) : null;
5645
+ let dbMode = resolveServeDbMode(options.db);
5646
+ let sqliteFile = dbMode === "sqlite" ? resolveServeDbFile(cwd, options.dbFile) : null;
5644
5647
  const config = await loadConfig(cwd);
5645
5648
  const functionsDir = join14(cwd, config.functionsDir);
5646
5649
  const bearerUser = bearerUserResolverFromEnv();
@@ -5661,9 +5664,27 @@ async function startServeServer(options) {
5661
5664
  let sqliteDriver = null;
5662
5665
  if (sqliteFile !== null) {
5663
5666
  const runtimeName = detectSqliteRuntime();
5664
- if (runtimeName === null) throw new Error(sqliteRuntimeRequirementMessage());
5665
- sqliteModule = sqliteModuleName(runtimeName);
5666
- sqliteDriver = await openSqliteProjectDriver(sqliteFile, { runtime: runtimeName });
5667
+ if (runtimeName === null) {
5668
+ log(
5669
+ `[serve] \u8B66\u544A\uFF1A${sqliteUnavailableReason()}\uFF0C\u5DF2\u81EA\u52A8\u964D\u7EA7\u4E3A sim \u6A21\u5F0F\uFF08\u5185\u7F6E\u6A21\u62DF\u5F15\u64CE\uFF0C\u5E93 ${displayPath(cwd, join14(simDir(cwd), "db.json"))}\uFF09\u3002\u5982\u9700\u771F\u5B9E SQLite\uFF0C\u8BF7\u7528 Bun \u6216\u5347\u7EA7 Node \u540E\u91CD\u8BD5\u3002`
5670
+ );
5671
+ dbMode = "sim";
5672
+ sqliteFile = null;
5673
+ } else {
5674
+ sqliteModule = sqliteModuleName(runtimeName);
5675
+ try {
5676
+ sqliteDriver = await openSqliteProjectDriver(sqliteFile, { runtime: runtimeName });
5677
+ } catch (error) {
5678
+ const detail = error instanceof Error ? error.message : String(error);
5679
+ log(
5680
+ `[serve] \u8B66\u544A\uFF1A\u6253\u5F00 SQLite \u5E93\u5931\u8D25\uFF08${detail}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u964D\u7EA7\u4E3A sim \u6A21\u5F0F\uFF08\u5185\u7F6E\u6A21\u62DF\u5F15\u64CE\uFF0C\u5E93 ${displayPath(cwd, join14(simDir(cwd), "db.json"))}\uFF09\u3002`
5681
+ );
5682
+ sqliteModule = null;
5683
+ sqliteDriver = null;
5684
+ sqliteFile = null;
5685
+ dbMode = "sim";
5686
+ }
5687
+ }
5667
5688
  }
5668
5689
  const runtime = await createSimRuntime({
5669
5690
  cwd,
@@ -12265,7 +12286,7 @@ function registerDevServers(program2, ctx) {
12265
12286
  "\u6570\u636E\u5E93\u7ED3\u6784\u6587\u4EF6\uFF1A\u542F\u52A8\u65F6\u5BF9\u672C\u5730\u5E93\u9010\u6761\u5E94\u7528\uFF08\u5EFA\u8868\u8BED\u53E5\u5EFA\u8BAE IF NOT EXISTS\uFF0C\u5E42\u7B49\u53EF\u91CD\u590D\u542F\u52A8\uFF09"
12266
12287
  ).option(
12267
12288
  "--db <mode>",
12268
- "\u6570\u636E\u5E93\u6A21\u5F0F\uFF1Asim\uFF08\u7F3A\u7701\uFF0C\u5185\u7F6E\u6A21\u62DF\u5F15\u64CE + .adep/sim/db.json\uFF09| sqlite\uFF08\u771F\u5B9E SQLite \u5E93\u6587\u4EF6\uFF0C\u9700 Bun \u6216 Node \u2265 22.5\uFF09"
12289
+ "\u6570\u636E\u5E93\u6A21\u5F0F\uFF1Asqlite\uFF08\u7F3A\u7701\uFF0C\u771F\u5B9E SQLite \u5E93\u6587\u4EF6\uFF0C\u9700 Bun \u6216 Node \u2265 22.5\uFF1B\u8FD0\u884C\u65F6\u4E0D\u652F\u6301\u6216\u6253\u5F00\u5931\u8D25\u65F6\u81EA\u52A8\u964D\u7EA7 sim\uFF09| sim\uFF08\u5185\u7F6E\u6A21\u62DF\u5F15\u64CE + .adep/sim/db.json\uFF09"
12269
12290
  ).option(
12270
12291
  "--db-file <path>",
12271
12292
  "sqlite \u6A21\u5F0F\u7684\u5E93\u6587\u4EF6\uFF08\u7F3A\u7701\u53D6 ADEP_SERVE_DB_FILE\uFF0C\u518D\u7F3A\u7701 .adep/data/project.sqlite\uFF09"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adep/cli",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "description": "`adep` 命令行工具包位:登录 / 初始化 / 本地调试 / 部署 / 数据库维护 / 云存储 / 静态托管 / 微前端组件(widget),实现见任务单 CLI-001 ~ CLI-003 与 FE-002;子路径 `@adep/cli/vite` 提供云函数 vite 插件(CLI-014)",
6
6
  "bin": {
@@ -24,8 +24,8 @@
24
24
  "@adep/vite-plugin": "0.1.5"
25
25
  },
26
26
  "devDependencies": {
27
- "@adep/runtime": "0.2.6",
28
- "@adep/types": "0.2.3"
27
+ "@adep/types": "0.2.3",
28
+ "@adep/runtime": "0.2.6"
29
29
  },
30
30
  "scripts": {
31
31
  "test": "vitest run",