@yaoxiu/marketing-dsl 1.2.0 → 1.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.
@@ -0,0 +1,170 @@
1
+ import { D as Dsl } from '../types-BgUaJUAu.cjs';
2
+
3
+ /**
4
+ * 开发文档的数据结构。
5
+ *
6
+ * 文档正文本身就是数据(一棵块数组),不是 HTML 也不是 Markdown 字符串。
7
+ * 这样同一份内容既能被调试台渲染成页面,又能被 `toMarkdown` 导出成 .md,
8
+ * 两边永远不会不一致。
9
+ *
10
+ * 渲染方(调试台的 DocsPanel)按 `t` 分派即可,这里给出的类型就是它需要处理的全集。
11
+ */
12
+ /** 提示块的语气,决定渲染时的配色 */
13
+ type DocNoteTone = 'info' | 'warn' | 'danger';
14
+ /** 段落:一段普通正文,允许内嵌 `` `代码` `` 和 `**加粗**` 的 Markdown 行内标记 */
15
+ interface DocParagraphBlock {
16
+ t: 'p';
17
+ /** 正文内容 */
18
+ text: string;
19
+ }
20
+ /** 三级小标题:章节(`DocSection.title`)内部的分节标题 */
21
+ interface DocHeadingBlock {
22
+ t: 'h3';
23
+ /** 标题文字 */
24
+ text: string;
25
+ }
26
+ /** 无序列表 */
27
+ interface DocListBlock {
28
+ t: 'list';
29
+ /** 每一项的文字,同样允许行内 Markdown 标记 */
30
+ items: string[];
31
+ }
32
+ /** 代码块:一律按 jsonc 高亮(文档里的代码全是 DSL 配置片段,带注释) */
33
+ interface DocCodeBlock {
34
+ t: 'code';
35
+ /** 代码正文,不含围栏 */
36
+ code: string;
37
+ }
38
+ /** 提示块:需要单独框出来的注意事项 */
39
+ interface DocNoteBlock {
40
+ t: 'note';
41
+ /** 语气,不写按 info 处理 */
42
+ tone?: DocNoteTone;
43
+ /** 提示内容 */
44
+ text: string;
45
+ }
46
+ /** 表格 */
47
+ interface DocTableBlock {
48
+ t: 'table';
49
+ /** 表头 */
50
+ head: string[];
51
+ /** 数据行,每行的长度应与 `head` 一致 */
52
+ rows: string[][];
53
+ }
54
+ /** 文档正文的一个块 */
55
+ type DocBlock = DocParagraphBlock | DocHeadingBlock | DocListBlock | DocCodeBlock | DocNoteBlock | DocTableBlock;
56
+ /** 文档的一个章节(对应页面左侧目录的一项) */
57
+ interface DocSection {
58
+ /** 锚点 id,页面目录跳转用,全局唯一 */
59
+ id: string;
60
+ /** 章节标题,带序号,如 `3. stage 舞台` */
61
+ title: string;
62
+ /** 章节正文 */
63
+ blocks: DocBlock[];
64
+ }
65
+ /** 一条文档变更记录 */
66
+ interface DocChangelogEntry {
67
+ /** 变更日期,`YYYY-MM-DD` */
68
+ date: string;
69
+ /** 这次改了什么,一条一句话 */
70
+ items: string[];
71
+ }
72
+ /** 文档的版本与变更信息 */
73
+ interface DocMeta {
74
+ /** 最近一次更新日期,等于 `changelog[0].date` */
75
+ updatedAt: string;
76
+ /** 对应的 DSL 结构版本号,取自解释器常量 `DSL_VERSION`,不手写 */
77
+ dslVersion: number;
78
+ /** 变更记录,新的在前 */
79
+ changelog: DocChangelogEntry[];
80
+ }
81
+
82
+ /**
83
+ * 开发文档全部章节,按阅读顺序拼起来。
84
+ *
85
+ * 章节按主题拆成多个文件,只有这里决定顺序;加章节时记得同步文件里的序号,
86
+ * 序号是写在 `title` 里的(正文有大量「见第 N 节」的交叉引用)。
87
+ */
88
+
89
+ /** 完整文档章节列表(0~14 节) */
90
+ declare const sections: DocSection[];
91
+
92
+ declare const meta: DocMeta;
93
+
94
+ /**
95
+ * 调试用示例 DSL。
96
+ *
97
+ * ①② 是最小骨架,③④ 是运营 demo 真实弹窗的完整复刻,⑤⑥ 是多视图,⑦ 是换肤换布局。
98
+ * 后端数据源($source)用法见 ③。
99
+ */
100
+
101
+ /** 调试台下拉里的一条示例 */
102
+ interface DocExample {
103
+ /** 下拉里显示的名字 */
104
+ label: string;
105
+ /** 唯一标识,AI 提示词按它取示例 */
106
+ value: string;
107
+ /** 示例配置本体 */
108
+ dsl: Dsl;
109
+ }
110
+ declare const examples: DocExample[];
111
+
112
+ /**
113
+ * 把文档章节数据转成 Markdown,供页面导出下载。
114
+ * 章节数据本身就是唯一数据源,所以导出的 md 不会和页面上看到的不一致。
115
+ */
116
+
117
+ /**
118
+ * 把整份文档导出成 Markdown。
119
+ *
120
+ * @param sections 章节数据
121
+ * @param meta 版本与变更记录
122
+ * @returns Markdown 全文
123
+ */
124
+ declare function toMarkdown(sections: DocSection[], meta: DocMeta): string;
125
+
126
+ /**
127
+ * 拼出完整的 AI 提示词。
128
+ *
129
+ * @returns 可直接粘进 AI 对话框的 Markdown 文本
130
+ */
131
+ declare function buildAiPrompt(): string;
132
+
133
+ /**
134
+ * 文档与解释器对账。
135
+ *
136
+ * 文档里的表格是人工整理的(分类、说明、关键字段),这些信息解释器里没有,
137
+ * 所以不能直接从常量生成。但人工维护必然会漏——解释器加了个属性,
138
+ * 文档不改就静默过时,运营翻文档发现不了新能力,AI 也生成不出来。
139
+ *
140
+ * 所以这里不替代人工表格,只做对账:
141
+ * - 解释器有、文档没写 → 自动补一行「新增(待补充说明)」,不会消失
142
+ * - 文档写了、解释器已经没有 → 标出来,提醒删掉,免得运营照着写结果被校验拦下
143
+ *
144
+ * 两种情况都在页面上直接可见,改 DSL 的人一打开文档就会看到。
145
+ */
146
+ /** 对账参数 */
147
+ interface ReconcileOptions {
148
+ /** 文档表格的数据行 */
149
+ rows: string[][];
150
+ /** 解释器里的真实清单(如 `NODE_TYPES`) */
151
+ actual: readonly string[];
152
+ /** 标识符在第几列,默认第 0 列 */
153
+ column?: number;
154
+ /**
155
+ * 标识符是否散落在单元格文本里(样式白名单那种一格塞一堆的表)。
156
+ * true 时按反引号提取,false 时把整格当成一个标识符。
157
+ */
158
+ inline?: boolean;
159
+ /** 「文档未覆盖」那一行的分类名,如 `新增节点类型` */
160
+ label?: string;
161
+ }
162
+ /**
163
+ * 对账并生成要追加到表格末尾的差异行。
164
+ *
165
+ * @param options 对账参数
166
+ * @returns 追加行;没有差异时是空数组
167
+ */
168
+ declare function reconcileRows(options: ReconcileOptions): string[][];
169
+
170
+ export { type DocBlock, type DocChangelogEntry, type DocCodeBlock, type DocHeadingBlock, type DocListBlock, type DocMeta, type DocNoteBlock, type DocNoteTone, type DocParagraphBlock, type DocSection, type DocTableBlock, type ReconcileOptions, buildAiPrompt, examples, meta, reconcileRows, sections, toMarkdown };
@@ -0,0 +1,170 @@
1
+ import { D as Dsl } from '../types-BgUaJUAu.js';
2
+
3
+ /**
4
+ * 开发文档的数据结构。
5
+ *
6
+ * 文档正文本身就是数据(一棵块数组),不是 HTML 也不是 Markdown 字符串。
7
+ * 这样同一份内容既能被调试台渲染成页面,又能被 `toMarkdown` 导出成 .md,
8
+ * 两边永远不会不一致。
9
+ *
10
+ * 渲染方(调试台的 DocsPanel)按 `t` 分派即可,这里给出的类型就是它需要处理的全集。
11
+ */
12
+ /** 提示块的语气,决定渲染时的配色 */
13
+ type DocNoteTone = 'info' | 'warn' | 'danger';
14
+ /** 段落:一段普通正文,允许内嵌 `` `代码` `` 和 `**加粗**` 的 Markdown 行内标记 */
15
+ interface DocParagraphBlock {
16
+ t: 'p';
17
+ /** 正文内容 */
18
+ text: string;
19
+ }
20
+ /** 三级小标题:章节(`DocSection.title`)内部的分节标题 */
21
+ interface DocHeadingBlock {
22
+ t: 'h3';
23
+ /** 标题文字 */
24
+ text: string;
25
+ }
26
+ /** 无序列表 */
27
+ interface DocListBlock {
28
+ t: 'list';
29
+ /** 每一项的文字,同样允许行内 Markdown 标记 */
30
+ items: string[];
31
+ }
32
+ /** 代码块:一律按 jsonc 高亮(文档里的代码全是 DSL 配置片段,带注释) */
33
+ interface DocCodeBlock {
34
+ t: 'code';
35
+ /** 代码正文,不含围栏 */
36
+ code: string;
37
+ }
38
+ /** 提示块:需要单独框出来的注意事项 */
39
+ interface DocNoteBlock {
40
+ t: 'note';
41
+ /** 语气,不写按 info 处理 */
42
+ tone?: DocNoteTone;
43
+ /** 提示内容 */
44
+ text: string;
45
+ }
46
+ /** 表格 */
47
+ interface DocTableBlock {
48
+ t: 'table';
49
+ /** 表头 */
50
+ head: string[];
51
+ /** 数据行,每行的长度应与 `head` 一致 */
52
+ rows: string[][];
53
+ }
54
+ /** 文档正文的一个块 */
55
+ type DocBlock = DocParagraphBlock | DocHeadingBlock | DocListBlock | DocCodeBlock | DocNoteBlock | DocTableBlock;
56
+ /** 文档的一个章节(对应页面左侧目录的一项) */
57
+ interface DocSection {
58
+ /** 锚点 id,页面目录跳转用,全局唯一 */
59
+ id: string;
60
+ /** 章节标题,带序号,如 `3. stage 舞台` */
61
+ title: string;
62
+ /** 章节正文 */
63
+ blocks: DocBlock[];
64
+ }
65
+ /** 一条文档变更记录 */
66
+ interface DocChangelogEntry {
67
+ /** 变更日期,`YYYY-MM-DD` */
68
+ date: string;
69
+ /** 这次改了什么,一条一句话 */
70
+ items: string[];
71
+ }
72
+ /** 文档的版本与变更信息 */
73
+ interface DocMeta {
74
+ /** 最近一次更新日期,等于 `changelog[0].date` */
75
+ updatedAt: string;
76
+ /** 对应的 DSL 结构版本号,取自解释器常量 `DSL_VERSION`,不手写 */
77
+ dslVersion: number;
78
+ /** 变更记录,新的在前 */
79
+ changelog: DocChangelogEntry[];
80
+ }
81
+
82
+ /**
83
+ * 开发文档全部章节,按阅读顺序拼起来。
84
+ *
85
+ * 章节按主题拆成多个文件,只有这里决定顺序;加章节时记得同步文件里的序号,
86
+ * 序号是写在 `title` 里的(正文有大量「见第 N 节」的交叉引用)。
87
+ */
88
+
89
+ /** 完整文档章节列表(0~14 节) */
90
+ declare const sections: DocSection[];
91
+
92
+ declare const meta: DocMeta;
93
+
94
+ /**
95
+ * 调试用示例 DSL。
96
+ *
97
+ * ①② 是最小骨架,③④ 是运营 demo 真实弹窗的完整复刻,⑤⑥ 是多视图,⑦ 是换肤换布局。
98
+ * 后端数据源($source)用法见 ③。
99
+ */
100
+
101
+ /** 调试台下拉里的一条示例 */
102
+ interface DocExample {
103
+ /** 下拉里显示的名字 */
104
+ label: string;
105
+ /** 唯一标识,AI 提示词按它取示例 */
106
+ value: string;
107
+ /** 示例配置本体 */
108
+ dsl: Dsl;
109
+ }
110
+ declare const examples: DocExample[];
111
+
112
+ /**
113
+ * 把文档章节数据转成 Markdown,供页面导出下载。
114
+ * 章节数据本身就是唯一数据源,所以导出的 md 不会和页面上看到的不一致。
115
+ */
116
+
117
+ /**
118
+ * 把整份文档导出成 Markdown。
119
+ *
120
+ * @param sections 章节数据
121
+ * @param meta 版本与变更记录
122
+ * @returns Markdown 全文
123
+ */
124
+ declare function toMarkdown(sections: DocSection[], meta: DocMeta): string;
125
+
126
+ /**
127
+ * 拼出完整的 AI 提示词。
128
+ *
129
+ * @returns 可直接粘进 AI 对话框的 Markdown 文本
130
+ */
131
+ declare function buildAiPrompt(): string;
132
+
133
+ /**
134
+ * 文档与解释器对账。
135
+ *
136
+ * 文档里的表格是人工整理的(分类、说明、关键字段),这些信息解释器里没有,
137
+ * 所以不能直接从常量生成。但人工维护必然会漏——解释器加了个属性,
138
+ * 文档不改就静默过时,运营翻文档发现不了新能力,AI 也生成不出来。
139
+ *
140
+ * 所以这里不替代人工表格,只做对账:
141
+ * - 解释器有、文档没写 → 自动补一行「新增(待补充说明)」,不会消失
142
+ * - 文档写了、解释器已经没有 → 标出来,提醒删掉,免得运营照着写结果被校验拦下
143
+ *
144
+ * 两种情况都在页面上直接可见,改 DSL 的人一打开文档就会看到。
145
+ */
146
+ /** 对账参数 */
147
+ interface ReconcileOptions {
148
+ /** 文档表格的数据行 */
149
+ rows: string[][];
150
+ /** 解释器里的真实清单(如 `NODE_TYPES`) */
151
+ actual: readonly string[];
152
+ /** 标识符在第几列,默认第 0 列 */
153
+ column?: number;
154
+ /**
155
+ * 标识符是否散落在单元格文本里(样式白名单那种一格塞一堆的表)。
156
+ * true 时按反引号提取,false 时把整格当成一个标识符。
157
+ */
158
+ inline?: boolean;
159
+ /** 「文档未覆盖」那一行的分类名,如 `新增节点类型` */
160
+ label?: string;
161
+ }
162
+ /**
163
+ * 对账并生成要追加到表格末尾的差异行。
164
+ *
165
+ * @param options 对账参数
166
+ * @returns 追加行;没有差异时是空数组
167
+ */
168
+ declare function reconcileRows(options: ReconcileOptions): string[][];
169
+
170
+ export { type DocBlock, type DocChangelogEntry, type DocCodeBlock, type DocHeadingBlock, type DocListBlock, type DocMeta, type DocNoteBlock, type DocNoteTone, type DocParagraphBlock, type DocSection, type DocTableBlock, type ReconcileOptions, buildAiPrompt, examples, meta, reconcileRows, sections, toMarkdown };