@whispering233/ai-editor-db 0.0.36 → 0.0.38

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/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from "./queries/migration.js";
7
7
  export * from "./migrations/index.js";
8
8
  export * from "./queries/outline-ops.js";
9
9
  export * from "./queries/entity.js";
10
+ export * from "./queries/backup-stats.js";
10
11
  export * from "./queries/relation.js";
11
12
  export * from "./queries/delta.js";
12
13
  export * from "./queries/compute-state.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export * from "./queries/migration.js";
12
12
  export * from "./migrations/index.js";
13
13
  export * from "./queries/outline-ops.js";
14
14
  export * from "./queries/entity.js";
15
+ export * from "./queries/backup-stats.js";
15
16
  export * from "./queries/relation.js";
16
17
  export * from "./queries/delta.js";
17
18
  export * from "./queries/compute-state.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,4EAA4E;AAC5E,EAAE;AACF,sEAAsE;AACtE,gFAAgF;AAChF,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,4EAA4E;AAC5E,EAAE;AACF,sEAAsE;AACtE,gFAAgF;AAChF,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BackupStats } from "@whispering233/ai-editor-shared";
2
+ import type { Db } from "../connection.js";
3
+ /**
4
+ * 备份命名用的规模快照(未软删口径):data.db 的实体计数 + 项目目录 outline.json 的章计数。
5
+ * outline.json 损坏时 `readOutlineFile` 抛错(与备份管道一致:不静默产出半成品备份)。
6
+ */
7
+ export declare function getBackupStats(db: Db, dir: string): BackupStats;
8
+ //# sourceMappingURL=backup-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-stats.d.ts","sourceRoot":"","sources":["../../src/queries/backup-stats.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,iCAAiC,CAAC;AAEpF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AA8B3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAM/D"}
@@ -0,0 +1,53 @@
1
+ // 备份命名统计段(人物 / 设定 / 章)——未软删口径
2
+ //
3
+ // 用途:writeBackup 生成文件名时顺便算出「这份备份里有多少东西」,让用户在文件管理器 /
4
+ // 云盘网页里一眼看出备份内容的规模(契约见 `docs/api/20-api-backup.md`「设备与统计」)。
5
+ //
6
+ // 口径(与 `docs/db/schema.md`、`docs/api/20-api-backup.md` 逐字一致):
7
+ // - 人物 / 设定 = entities 表 type 匹配且 `deleted_at IS NULL` 的行数(**不含回收站**)
8
+ // - 章 = outline.json 中 `type === "chapter"` 且未软删的节点数(严格三层:章挂卷下或直挂 root,场景不计数)
9
+ //
10
+ // 调用时机:备份打包之前(同一连接、同一时刻视角);统计描述的是**备份内容**,
11
+ // 因此重命名备份时一律沿用原文件名里的统计段,不得用当前项目状态重算
12
+ // (见 server `renameBackup` 与 shared `formatBackupFileName` 注释)。
13
+ import { and, count, eq, isNull } from "drizzle-orm";
14
+ import { queryDb } from "../query-db.js";
15
+ import { readOutlineFile } from "../storage/outline.js";
16
+ import { entities } from "../tables.js";
17
+ /** 非软删实体计数(单条 COUNT 查询;类型取值域与 entities CHECK 约束同域) */
18
+ function countEntities(db, type) {
19
+ const row = queryDb(db)
20
+ .select({ n: count() })
21
+ .from(entities)
22
+ .where(and(eq(entities.type, type), isNull(entities.deleted_at)))
23
+ .get();
24
+ return row?.n ?? 0;
25
+ }
26
+ /** 未软删章节点计数(根下可挂卷或直挂章;卷内为章) */
27
+ function countChapters(children) {
28
+ let n = 0;
29
+ for (const node of children) {
30
+ if (node.type === "chapter") {
31
+ if (node.deleted !== true)
32
+ n += 1;
33
+ continue;
34
+ }
35
+ for (const chapter of node.children ?? []) {
36
+ if (chapter.deleted !== true)
37
+ n += 1;
38
+ }
39
+ }
40
+ return n;
41
+ }
42
+ /**
43
+ * 备份命名用的规模快照(未软删口径):data.db 的实体计数 + 项目目录 outline.json 的章计数。
44
+ * outline.json 损坏时 `readOutlineFile` 抛错(与备份管道一致:不静默产出半成品备份)。
45
+ */
46
+ export function getBackupStats(db, dir) {
47
+ return {
48
+ characters: countEntities(db, "character"),
49
+ settings: countEntities(db, "setting"),
50
+ chapters: countChapters(readOutlineFile(dir).children),
51
+ };
52
+ }
53
+ //# sourceMappingURL=backup-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-stats.js","sourceRoot":"","sources":["../../src/queries/backup-stats.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,oDAAoD;AACpD,4DAA4D;AAC5D,EAAE;AACF,8DAA8D;AAC9D,sEAAsE;AACtE,8EAA8E;AAC9E,EAAE;AACF,2CAA2C;AAC3C,oCAAoC;AACpC,gEAAgE;AAGhE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,sDAAsD;AACtD,SAAS,aAAa,CAAC,EAAM,EAAE,IAA6B;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;SACpB,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;SACtB,IAAI,CAAC,QAAQ,CAAC;SACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;SAChE,GAAG,EAAE,CAAC;IACT,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,+BAA+B;AAC/B,SAAS,aAAa,CAAC,QAAqC;IAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;gBAAE,CAAC,IAAI,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;gBAAE,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAM,EAAE,GAAW;IAChD,OAAO;QACL,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC;QAC1C,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC;QACtC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -24,9 +24,13 @@ export declare function nowIso(): string;
24
24
  *
25
25
  * @param filePath 目标文件绝对路径(父目录必须存在)
26
26
  * @param data 任意可 JSON 序列化的数据
27
+ * @param opts.mode 文件权限(缺省 0o644);凭据类文件用 0o600——**临时文件即按此模式创建**,
28
+ * rename 保持模式,保证每次重写后权限不被重置(卡 2:云端凭据 `cloud.json`)
27
29
  * @throws 序列化失败 / 目录不可写 / 磁盘错误时抛出,且原文件保持完好
28
30
  */
29
- export declare function writeJsonAtomic(filePath: string, data: unknown): void;
31
+ export declare function writeJsonAtomic(filePath: string, data: unknown, opts?: {
32
+ mode?: number;
33
+ }): void;
30
34
  /**
31
35
  * 文本文件原子写(同款流程:临时文件 + fsync + rename)。
32
36
  * 与 writeJsonAtomic 的区别:内容为**原始文本**(不 JSON 序列化)—— 等
@@ -1 +1 @@
1
- {"version":3,"file":"atomic.d.ts","sourceRoot":"","sources":["../../src/storage/atomic.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CA+BrE;AA0BD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA8BvE;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE"}
1
+ {"version":3,"file":"atomic.d.ts","sourceRoot":"","sources":["../../src/storage/atomic.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+B/F;AA0BD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA8BvE;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE"}
@@ -33,9 +33,11 @@ export function nowIso() {
33
33
  *
34
34
  * @param filePath 目标文件绝对路径(父目录必须存在)
35
35
  * @param data 任意可 JSON 序列化的数据
36
+ * @param opts.mode 文件权限(缺省 0o644);凭据类文件用 0o600——**临时文件即按此模式创建**,
37
+ * rename 保持模式,保证每次重写后权限不被重置(卡 2:云端凭据 `cloud.json`)
36
38
  * @throws 序列化失败 / 目录不可写 / 磁盘错误时抛出,且原文件保持完好
37
39
  */
38
- export function writeJsonAtomic(filePath, data) {
40
+ export function writeJsonAtomic(filePath, data, opts) {
39
41
  const dir = dirname(filePath);
40
42
  const tmpPath = join(dir, `.${basename(filePath)}.tmp`);
41
43
  let fd;
@@ -50,7 +52,7 @@ export function writeJsonAtomic(filePath, data) {
50
52
  }
51
53
  const payload = `${JSON.stringify(data, null, 2)}\n`;
52
54
  // "wx":独占创建——若存在文件(含并发竞争)立即失败,绝不覆盖他人临时文件
53
- fd = openSync(tmpPath, "wx", 0o644);
55
+ fd = openSync(tmpPath, "wx", opts?.mode ?? 0o644);
54
56
  writeFileSync(fd, payload);
55
57
  fsyncSync(fd); // 文件数据落盘后再 rename
56
58
  closeSync(fd);
@@ -1 +1 @@
1
- {"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../src/storage/atomic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../src/storage/atomic.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whispering233/ai-editor-db",
3
- "version": "0.0.36",
3
+ "version": "0.0.38",
4
4
  "license": "MIT",
5
5
  "description": "数据库层:better-sqlite3 连接 / 建表 / 查询",
6
6
  "type": "module",
@@ -26,7 +26,7 @@
26
26
  "postpack": "node ../../scripts/restore-package-json.mjs"
27
27
  },
28
28
  "dependencies": {
29
- "@whispering233/ai-editor-shared": "0.0.36",
29
+ "@whispering233/ai-editor-shared": "0.0.38",
30
30
  "better-sqlite3": "^13.0.0",
31
31
  "drizzle-orm": "0.45.2"
32
32
  },