@dayinxisheng/novel-tools 0.3.0 → 0.4.0

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.
@@ -4,33 +4,25 @@ import { ValidationResult } from '../core/types.js';
4
4
  */
5
5
  export declare class ValidateService {
6
6
  /**
7
- * 验证大纲完整性
7
+ * 查找章纲文件(递归搜索所有卷目录)
8
8
  */
9
- validateOutline(projectPath: string): Promise<ValidationResult>;
9
+ private findChapterPlan;
10
10
  /**
11
- * 验证章节
11
+ * 查找草稿文件(递归搜索所有卷目录)
12
12
  */
13
- validateChapter(projectPath: string, chapter: number): Promise<ValidationResult>;
13
+ private findChapterDraft;
14
14
  /**
15
- * 验证剧情弧
15
+ * 验证大纲完整性
16
16
  */
17
- validateArc(projectPath: string, arcName: string): Promise<ValidationResult>;
17
+ validateOutline(projectPath: string): Promise<ValidationResult>;
18
18
  /**
19
- * 验证卷
19
+ * 验证章节
20
20
  */
21
- validateVolume(projectPath: string, volume: number): Promise<ValidationResult>;
21
+ validateChapter(projectPath: string, chapter: number): Promise<ValidationResult>;
22
22
  /**
23
23
  * 检查大纲文件
24
24
  */
25
25
  private checkOutlineFile;
26
- /**
27
- * 检查卷级大纲文件
28
- */
29
- private checkVolumeFiles;
30
- /**
31
- * 检查弧列表
32
- */
33
- private checkArcList;
34
26
  /**
35
27
  * 检查章节规划
36
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"validate.service.d.ts","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AAGjE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBrE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmCtF;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyDlF;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwDpF;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,YAAY;IAgC1B;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,iBAAiB;CAmBhC"}
1
+ {"version":3,"file":"validate.service.d.ts","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AAGjE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;YACW,eAAe;IAM7B;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAarE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmCtF;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;YACW,iBAAiB;CAuBhC"}
@@ -1,10 +1,25 @@
1
1
  import { FileUtils } from '../core/file.js';
2
- import { YamlUtils } from '../core/yaml.js';
3
2
  import * as path from 'path';
4
3
  /**
5
4
  * 验证服务类
6
5
  */
7
6
  export class ValidateService {
7
+ /**
8
+ * 查找章纲文件(递归搜索所有卷目录)
9
+ */
10
+ async findChapterPlan(projectPath, chapter) {
11
+ const pattern = `**/ch${String(chapter).padStart(3, '0')}.md`;
12
+ const files = await FileUtils.globFiles(path.join(projectPath, 'chapter_plans'), pattern);
13
+ return files.length > 0 ? files[0] : null;
14
+ }
15
+ /**
16
+ * 查找草稿文件(递归搜索所有卷目录)
17
+ */
18
+ async findChapterDraft(projectPath, chapter) {
19
+ const pattern = `**/ch${String(chapter).padStart(3, '0')}.md`;
20
+ const files = await FileUtils.globFiles(path.join(projectPath, 'drafts'), pattern);
21
+ return files.length > 0 ? files[0] : null;
22
+ }
8
23
  /**
9
24
  * 验证大纲完整性
10
25
  */
@@ -14,11 +29,6 @@ export class ValidateService {
14
29
  // 检查主大纲
15
30
  const mainOutline = path.join(outlineDir, 'main_outline.md');
16
31
  result.checks.push(await this.checkOutlineFile(mainOutline, '主大纲'));
17
- // 检查卷级大纲
18
- result.checks.push(await this.checkVolumeFiles(outlineDir));
19
- // 检查弧列表
20
- const arcPath = path.join(outlineDir, 'arc_list.yaml');
21
- result.checks.push(await this.checkArcList(arcPath));
22
32
  result.passed = result.checks.every(c => c.passed);
23
33
  return result;
24
34
  }
@@ -27,11 +37,11 @@ export class ValidateService {
27
37
  */
28
38
  async validateChapter(projectPath, chapter) {
29
39
  const result = { passed: true, checks: [] };
30
- // 检查章纲
31
- const planPath = path.join(projectPath, 'chapter_plans', `chapter_${chapter}.md`);
40
+ // 查找并检查章纲
41
+ const planPath = await this.findChapterPlan(projectPath, chapter);
32
42
  result.checks.push(await this.checkChapterPlan(planPath, chapter));
33
- // 检查草稿
34
- const draftPath = path.join(projectPath, 'drafts', `chapter_${chapter}.md`);
43
+ // 查找并检查草稿
44
+ const draftPath = await this.findChapterDraft(projectPath, chapter);
35
45
  result.checks.push(await this.checkChapterDraft(draftPath, chapter));
36
46
  // 检查事件记录
37
47
  const { EventService } = await import('./event.service.js');
@@ -54,116 +64,6 @@ export class ValidateService {
54
64
  result.passed = result.checks.every(c => c.passed);
55
65
  return result;
56
66
  }
57
- /**
58
- * 验证剧情弧
59
- */
60
- async validateArc(projectPath, arcName) {
61
- const result = { passed: true, checks: [] };
62
- // 检查弧大纲
63
- const arcOutlinePath = path.join(projectPath, 'outline', `arc_${arcName}.md`);
64
- if (!FileUtils.exists(arcOutlinePath)) {
65
- result.checks.push({
66
- name: '弧大纲',
67
- passed: false,
68
- issues: [`未找到弧大纲: ${arcOutlinePath}`]
69
- });
70
- }
71
- else {
72
- result.checks.push({
73
- name: '弧大纲',
74
- passed: true,
75
- issues: []
76
- });
77
- }
78
- // 检查弧内的章节
79
- const arcConfigPath = path.join(projectPath, 'outline', 'arc_list.yaml');
80
- const arcConfig = await YamlUtils.parseFile(arcConfigPath);
81
- if (arcConfig && arcConfig.arcs) {
82
- const arc = arcConfig.arcs.find((a) => a.name === arcName);
83
- if (arc) {
84
- const { startChapter, endChapter } = arc;
85
- const missingChapters = [];
86
- for (let ch = startChapter; ch <= endChapter; ch++) {
87
- const planPath = path.join(projectPath, 'chapter_plans', `chapter_${ch}.md`);
88
- if (!FileUtils.exists(planPath)) {
89
- missingChapters.push(ch);
90
- }
91
- }
92
- if (missingChapters.length > 0) {
93
- result.checks.push({
94
- name: '章节完整性',
95
- passed: false,
96
- issues: [`缺少章纲: ${missingChapters.join(', ')}`]
97
- });
98
- }
99
- else {
100
- result.checks.push({
101
- name: '章节完整性',
102
- passed: true,
103
- issues: []
104
- });
105
- }
106
- }
107
- }
108
- result.passed = result.checks.every(c => c.passed);
109
- return result;
110
- }
111
- /**
112
- * 验证卷
113
- */
114
- async validateVolume(projectPath, volume) {
115
- const result = { passed: true, checks: [] };
116
- // 检查卷大纲
117
- const volumeOutlinePath = path.join(projectPath, 'outline', `vol${volume}.md`);
118
- if (!FileUtils.exists(volumeOutlinePath)) {
119
- result.checks.push({
120
- name: '卷大纲',
121
- passed: false,
122
- issues: [`未找到卷大纲: ${volumeOutlinePath}`]
123
- });
124
- }
125
- else {
126
- result.checks.push({
127
- name: '卷大纲',
128
- passed: true,
129
- issues: []
130
- });
131
- }
132
- // 检查卷快照
133
- const snapshotPath = path.join(projectPath, 'settings', 'state', `vol${volume}_snapshot.yaml`);
134
- if (!FileUtils.exists(snapshotPath)) {
135
- result.checks.push({
136
- name: '卷快照',
137
- passed: false,
138
- issues: [`未找到第 ${volume} 卷的状态快照`]
139
- });
140
- }
141
- else {
142
- result.checks.push({
143
- name: '卷快照',
144
- passed: true,
145
- issues: []
146
- });
147
- }
148
- // 检查卷事件归档
149
- const volEventsPath = path.join(projectPath, 'settings', 'events', `vol${volume}`, 'events.json');
150
- if (!FileUtils.exists(volEventsPath)) {
151
- result.checks.push({
152
- name: '卷事件归档',
153
- passed: false,
154
- issues: [`未找到第 ${volume} 卷的事件归档`]
155
- });
156
- }
157
- else {
158
- result.checks.push({
159
- name: '卷事件归档',
160
- passed: true,
161
- issues: []
162
- });
163
- }
164
- result.passed = result.checks.every(c => c.passed);
165
- return result;
166
- }
167
67
  /**
168
68
  * 检查大纲文件
169
69
  */
@@ -186,64 +86,14 @@ export class ValidateService {
186
86
  }
187
87
  return { name, passed: issues.length === 0, issues };
188
88
  }
189
- /**
190
- * 检查卷级大纲文件
191
- */
192
- async checkVolumeFiles(outlineDir) {
193
- const issues = [];
194
- const volumeFiles = await FileUtils.globFiles(outlineDir, 'vol*.md');
195
- volumeFiles.push(...await FileUtils.globFiles(outlineDir, '第*卷*.md'));
196
- if (volumeFiles.length === 0) {
197
- return { name: '卷级大纲', passed: false, issues: ['未找到卷级大纲文件'] };
198
- }
199
- for (const volFile of volumeFiles) {
200
- const content = await FileUtils.readText(volFile);
201
- if (!content.includes('主题') && !content.includes('本卷定位')) {
202
- issues.push(`${path.basename(volFile)}: 缺少主题说明`);
203
- }
204
- if (!content.includes('弧') && !content.includes('章节')) {
205
- issues.push(`${path.basename(volFile)}: 缺少剧情弧或章节划分`);
206
- }
207
- }
208
- return { name: '卷级大纲', passed: issues.length === 0, issues };
209
- }
210
- /**
211
- * 检查弧列表
212
- */
213
- async checkArcList(arcPath) {
214
- const issues = [];
215
- if (!FileUtils.exists(arcPath)) {
216
- return { name: '弧列表', passed: false, issues: [`弧列表文件不存在: ${arcPath}`] };
217
- }
218
- const arcData = await YamlUtils.parseFile(arcPath);
219
- if (!arcData || !arcData.arcs || !Array.isArray(arcData.arcs)) {
220
- issues.push('弧列表格式不正确,缺少 arcs 数组');
221
- }
222
- else if (arcData.arcs.length === 0) {
223
- issues.push('弧列表为空');
224
- }
225
- else {
226
- // 检查每个弧的结构
227
- for (let i = 0; i < arcData.arcs.length; i++) {
228
- const arc = arcData.arcs[i];
229
- if (!arc.name) {
230
- issues.push(`弧 #${i + 1}: 缺少名称`);
231
- }
232
- if (arc.startChapter === undefined || arc.endChapter === undefined) {
233
- issues.push(`弧 #${i + 1}: 缺少章节范围`);
234
- }
235
- if (arc.startChapter > arc.endChapter) {
236
- issues.push(`弧 #${i + 1}: 起始章节大于结束章节`);
237
- }
238
- }
239
- }
240
- return { name: '弧列表', passed: issues.length === 0, issues };
241
- }
242
89
  /**
243
90
  * 检查章节规划
244
91
  */
245
92
  async checkChapterPlan(planPath, chapter) {
246
93
  const issues = [];
94
+ if (!planPath) {
95
+ return { name: '章纲', passed: false, issues: [`第 ${chapter} 章章纲不存在`] };
96
+ }
247
97
  if (!FileUtils.exists(planPath)) {
248
98
  return { name: '章纲', passed: false, issues: [`第 ${chapter} 章章纲不存在: ${planPath}`] };
249
99
  }
@@ -261,6 +111,9 @@ export class ValidateService {
261
111
  */
262
112
  async checkChapterDraft(draftPath, chapter) {
263
113
  const issues = [];
114
+ if (!draftPath) {
115
+ return { name: '草稿', passed: false, issues: [`第 ${chapter} 章草稿不存在`] };
116
+ }
264
117
  if (!FileUtils.exists(draftPath)) {
265
118
  return {
266
119
  name: '草稿',
@@ -1 +1 @@
1
- {"version":3,"file":"validate.service.js","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,MAAM,GAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9D,QAAQ;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpE,SAAS;QACT,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5D,QAAQ;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,OAAe;QACxD,MAAM,MAAM,GAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9D,OAAO;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,OAAO,KAAK,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAEnE,OAAO;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,OAAO,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAErE,SAAS;QACT,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE7E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,KAAK,OAAO,UAAU,CAAC;aACjC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,WAAmB,EAAE,OAAe;QACpD,MAAM,MAAM,GAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9D,QAAQ;QACR,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,OAAO,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,WAAW,cAAc,EAAE,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QAED,UAAU;QACV,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE3D,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAChE,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;gBACzC,MAAM,eAAe,GAAa,EAAE,CAAC;gBAErC,KAAK,IAAI,EAAE,GAAG,YAAY,EAAE,EAAE,IAAI,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;oBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;oBAC7E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,CAAC,SAAS,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;qBAChD,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,EAAE;qBACX,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,MAAc;QACtD,MAAM,MAAM,GAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9D,QAAQ;QACR,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,MAAM,KAAK,CAAC,CAAC;QAC/E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,WAAW,iBAAiB,EAAE,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QAED,QAAQ;QACR,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM,gBAAgB,CAAC,CAAC;QAC/F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,QAAQ,MAAM,SAAS,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QAED,UAAU;QACV,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,QAAQ,MAAM,SAAS,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,WAAmB,EAAE,IAAY;QAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,YAAY,WAAW,EAAE,CAAC,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEtD,MAAM,gBAAgB,GAA4B;YAChD,CAAC,QAAQ,EAAE,IAAI,CAAC;YAChB,CAAC,WAAW,EAAE,MAAM,CAAC;YACrB,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,QAAQ,EAAE,MAAM,CAAC;SACnB,CAAC;QAEF,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACrE,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAEtE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;QAChE,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,OAAe;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,aAAa,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,WAAW;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACnE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,OAAe;QAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,YAAY,QAAQ,EAAE,CAAC,EAAE,CAAC;QACrF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,OAAe;QAChE,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,KAAK,OAAO,YAAY,SAAS,EAAE,CAAC;aAC9C,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"validate.service.js","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dayinxisheng/novel-tools",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "小说创作辅助工具集 - TypeScript 实现",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",