weaver-e10-builder 1.5.10 → 1.5.11

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.
Files changed (211) hide show
  1. package/dist/commands/app.d.ts.map +1 -1
  2. package/dist/commands/app.js +159 -8
  3. package/dist/commands/app.js.map +1 -1
  4. package/dist/commands/designer-setters.d.ts.map +1 -1
  5. package/dist/commands/designer-setters.js +26 -4
  6. package/dist/commands/designer-setters.js.map +1 -1
  7. package/dist/commands/form-association-manage.d.ts.map +1 -1
  8. package/dist/commands/form-association-manage.js +3 -0
  9. package/dist/commands/form-association-manage.js.map +1 -1
  10. package/dist/commands/form-button-actions-cmd.d.ts +3 -0
  11. package/dist/commands/form-button-actions-cmd.d.ts.map +1 -0
  12. package/dist/commands/form-button-actions-cmd.js +309 -0
  13. package/dist/commands/form-button-actions-cmd.js.map +1 -0
  14. package/dist/commands/form-button-permission-cmd.d.ts +3 -0
  15. package/dist/commands/form-button-permission-cmd.d.ts.map +1 -0
  16. package/dist/commands/form-button-permission-cmd.js +132 -0
  17. package/dist/commands/form-button-permission-cmd.js.map +1 -0
  18. package/dist/commands/form-button-props-cmd.d.ts +3 -0
  19. package/dist/commands/form-button-props-cmd.d.ts.map +1 -0
  20. package/dist/commands/form-button-props-cmd.js +236 -0
  21. package/dist/commands/form-button-props-cmd.js.map +1 -0
  22. package/dist/commands/form-button.d.ts.map +1 -1
  23. package/dist/commands/form-button.js +82 -55
  24. package/dist/commands/form-button.js.map +1 -1
  25. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  26. package/dist/commands/form-formula-linkage.js +154 -63
  27. package/dist/commands/form-formula-linkage.js.map +1 -1
  28. package/dist/commands/form-list-permission.d.ts.map +1 -1
  29. package/dist/commands/form-list-permission.js +29 -3
  30. package/dist/commands/form-list-permission.js.map +1 -1
  31. package/dist/commands/form-list-search-group.d.ts.map +1 -1
  32. package/dist/commands/form-list-search-group.js +66 -3
  33. package/dist/commands/form-list-search-group.js.map +1 -1
  34. package/dist/commands/form-list-utils.d.ts +14 -0
  35. package/dist/commands/form-list-utils.d.ts.map +1 -1
  36. package/dist/commands/form-list-utils.js +65 -4
  37. package/dist/commands/form-list-utils.js.map +1 -1
  38. package/dist/commands/form-message.d.ts.map +1 -1
  39. package/dist/commands/form-message.js +16 -4
  40. package/dist/commands/form-message.js.map +1 -1
  41. package/dist/commands/form-permission.d.ts +20 -0
  42. package/dist/commands/form-permission.d.ts.map +1 -1
  43. package/dist/commands/form-permission.js +69 -11
  44. package/dist/commands/form-permission.js.map +1 -1
  45. package/dist/commands/menu-permission.d.ts.map +1 -1
  46. package/dist/commands/menu-permission.js +6 -7
  47. package/dist/commands/menu-permission.js.map +1 -1
  48. package/dist/commands/menu.d.ts.map +1 -1
  49. package/dist/commands/menu.js +63 -40
  50. package/dist/commands/menu.js.map +1 -1
  51. package/dist/commands/wf-form.d.ts.map +1 -1
  52. package/dist/commands/wf-form.js +56 -36
  53. package/dist/commands/wf-form.js.map +1 -1
  54. package/dist/commands/workflow-function-management.d.ts +5 -0
  55. package/dist/commands/workflow-function-management.d.ts.map +1 -0
  56. package/dist/commands/workflow-function-management.js +91 -0
  57. package/dist/commands/workflow-function-management.js.map +1 -0
  58. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  59. package/dist/commands/workflow-node-assign-flow.js +1 -0
  60. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  61. package/dist/commands/workflow-node-sign.d.ts +0 -12
  62. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  63. package/dist/commands/workflow-node-sign.js +31 -102
  64. package/dist/commands/workflow-node-sign.js.map +1 -1
  65. package/dist/commands/workflow-opinion-settings.d.ts +5 -0
  66. package/dist/commands/workflow-opinion-settings.d.ts.map +1 -0
  67. package/dist/commands/workflow-opinion-settings.js +51 -0
  68. package/dist/commands/workflow-opinion-settings.js.map +1 -0
  69. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  70. package/dist/commands/workflow-subprocess.js +370 -20
  71. package/dist/commands/workflow-subprocess.js.map +1 -1
  72. package/dist/commands/workflow.d.ts.map +1 -1
  73. package/dist/commands/workflow.js +35 -61
  74. package/dist/commands/workflow.js.map +1 -1
  75. package/dist/index.js +4 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  78. package/dist/services/actionflow/calendar_mapper.js +30 -4
  79. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  80. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  81. package/dist/services/actionflow/component_registry.js +6 -0
  82. package/dist/services/actionflow/component_registry.js.map +1 -1
  83. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  84. package/dist/services/actionflow/components/meeting_create.js +5 -1
  85. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  86. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  87. package/dist/services/actionflow/components/workflow_actions.js +15 -3
  88. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  89. package/dist/services/actionflow/formula_service.d.ts +7 -0
  90. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  91. package/dist/services/actionflow/formula_service.js +25 -0
  92. package/dist/services/actionflow/formula_service.js.map +1 -1
  93. package/dist/services/app-publish.d.ts +25 -0
  94. package/dist/services/app-publish.d.ts.map +1 -1
  95. package/dist/services/app-publish.js +38 -0
  96. package/dist/services/app-publish.js.map +1 -1
  97. package/dist/services/app-range.d.ts +66 -0
  98. package/dist/services/app-range.d.ts.map +1 -0
  99. package/dist/services/app-range.js +137 -0
  100. package/dist/services/app-range.js.map +1 -0
  101. package/dist/services/form-association.d.ts +13 -0
  102. package/dist/services/form-association.d.ts.map +1 -1
  103. package/dist/services/form-association.js +42 -0
  104. package/dist/services/form-association.js.map +1 -1
  105. package/dist/services/form-button-action.d.ts +82 -0
  106. package/dist/services/form-button-action.d.ts.map +1 -1
  107. package/dist/services/form-button-action.js +194 -2
  108. package/dist/services/form-button-action.js.map +1 -1
  109. package/dist/services/form-button-condition.d.ts +45 -0
  110. package/dist/services/form-button-condition.d.ts.map +1 -0
  111. package/dist/services/form-button-condition.js +106 -0
  112. package/dist/services/form-button-condition.js.map +1 -0
  113. package/dist/services/form-button-context.d.ts +41 -0
  114. package/dist/services/form-button-context.d.ts.map +1 -0
  115. package/dist/services/form-button-context.js +54 -0
  116. package/dist/services/form-button-context.js.map +1 -0
  117. package/dist/services/form-button-logicflow.d.ts +30 -0
  118. package/dist/services/form-button-logicflow.d.ts.map +1 -0
  119. package/dist/services/form-button-logicflow.js +59 -0
  120. package/dist/services/form-button-logicflow.js.map +1 -0
  121. package/dist/services/form-button-org.d.ts +30 -0
  122. package/dist/services/form-button-org.d.ts.map +1 -0
  123. package/dist/services/form-button-org.js +80 -0
  124. package/dist/services/form-button-org.js.map +1 -0
  125. package/dist/services/form-button-permission.d.ts +65 -0
  126. package/dist/services/form-button-permission.d.ts.map +1 -0
  127. package/dist/services/form-button-permission.js +113 -0
  128. package/dist/services/form-button-permission.js.map +1 -0
  129. package/dist/services/form-button-position.d.ts +4 -18
  130. package/dist/services/form-button-position.d.ts.map +1 -1
  131. package/dist/services/form-button-position.js +4 -36
  132. package/dist/services/form-button-position.js.map +1 -1
  133. package/dist/services/form-button-props.d.ts +55 -0
  134. package/dist/services/form-button-props.d.ts.map +1 -0
  135. package/dist/services/form-button-props.js +90 -0
  136. package/dist/services/form-button-props.js.map +1 -0
  137. package/dist/services/form-button-save.d.ts +49 -0
  138. package/dist/services/form-button-save.d.ts.map +1 -0
  139. package/dist/services/form-button-save.js +54 -0
  140. package/dist/services/form-button-save.js.map +1 -0
  141. package/dist/services/form-formula-linkage.d.ts +116 -20
  142. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  143. package/dist/services/form-formula-linkage.js +250 -38
  144. package/dist/services/form-formula-linkage.js.map +1 -1
  145. package/dist/services/form-list-search-group.d.ts +17 -2
  146. package/dist/services/form-list-search-group.d.ts.map +1 -1
  147. package/dist/services/form-list-search-group.js +29 -12
  148. package/dist/services/form-list-search-group.js.map +1 -1
  149. package/dist/services/form-list-search.d.ts.map +1 -1
  150. package/dist/services/form-list-search.js +4 -0
  151. package/dist/services/form-list-search.js.map +1 -1
  152. package/dist/services/form-list-stats.d.ts.map +1 -1
  153. package/dist/services/form-list-stats.js +9 -2
  154. package/dist/services/form-list-stats.js.map +1 -1
  155. package/dist/services/form-message.d.ts +26 -7
  156. package/dist/services/form-message.d.ts.map +1 -1
  157. package/dist/services/form-message.js +52 -5
  158. package/dist/services/form-message.js.map +1 -1
  159. package/dist/services/form-permission-archive.d.ts +9 -1
  160. package/dist/services/form-permission-archive.d.ts.map +1 -1
  161. package/dist/services/form-permission-archive.js +38 -22
  162. package/dist/services/form-permission-archive.js.map +1 -1
  163. package/dist/services/form-view-populate.d.ts.map +1 -1
  164. package/dist/services/form-view-populate.js +7 -0
  165. package/dist/services/form-view-populate.js.map +1 -1
  166. package/dist/services/icon-path.d.ts +70 -0
  167. package/dist/services/icon-path.d.ts.map +1 -0
  168. package/dist/services/icon-path.js +80 -0
  169. package/dist/services/icon-path.js.map +1 -0
  170. package/dist/services/matrix-condition.d.ts +161 -0
  171. package/dist/services/matrix-condition.d.ts.map +1 -0
  172. package/dist/services/matrix-condition.js +403 -0
  173. package/dist/services/matrix-condition.js.map +1 -0
  174. package/dist/services/menu-catalog.d.ts +33 -0
  175. package/dist/services/menu-catalog.d.ts.map +1 -1
  176. package/dist/services/menu-catalog.js +56 -0
  177. package/dist/services/menu-catalog.js.map +1 -1
  178. package/dist/services/permission-entity.d.ts +55 -0
  179. package/dist/services/permission-entity.d.ts.map +1 -0
  180. package/dist/services/permission-entity.js +79 -0
  181. package/dist/services/permission-entity.js.map +1 -0
  182. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  183. package/dist/services/workflow-assign-flow.js.map +1 -1
  184. package/dist/services/workflow-function-management.d.ts +123 -0
  185. package/dist/services/workflow-function-management.d.ts.map +1 -0
  186. package/dist/services/workflow-function-management.js +425 -0
  187. package/dist/services/workflow-function-management.js.map +1 -0
  188. package/dist/services/workflow-matrix-rule.d.ts +34 -0
  189. package/dist/services/workflow-matrix-rule.d.ts.map +1 -0
  190. package/dist/services/workflow-matrix-rule.js +94 -0
  191. package/dist/services/workflow-matrix-rule.js.map +1 -0
  192. package/dist/services/workflow-opinion-settings.d.ts +67 -0
  193. package/dist/services/workflow-opinion-settings.d.ts.map +1 -0
  194. package/dist/services/workflow-opinion-settings.js +328 -0
  195. package/dist/services/workflow-opinion-settings.js.map +1 -0
  196. package/package.json +1 -1
  197. package/skill-docs/SKILL.md +5 -5
  198. package/skill-docs/_catalog.md +3 -0
  199. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +2 -0
  200. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +1 -1
  201. package/skill-docs/references/common/ref-cli-commands.md +60 -22
  202. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +9 -0
  203. package/skill-docs/references/form/guide-form-archive-permission.md +55 -2
  204. package/skill-docs/references/form/guide-form-association.md +13 -0
  205. package/skill-docs/references/form/guide-form-button.md +87 -0
  206. package/skill-docs/references/form/guide-form-message.md +19 -2
  207. package/skill-docs/references/form/guide-form-view.md +23 -3
  208. package/skill-docs/references/form/guide-formula-linkage.md +42 -11
  209. package/skill-docs/references/workflow/guide-function-management.md +154 -0
  210. package/skill-docs/references/workflow/guide-opinion-settings.md +126 -0
  211. package/skill-docs/references/workflow/guide-workflow.md +22 -6
@@ -0,0 +1,161 @@
1
+ /**
2
+ * 矩阵的「条件」(`matrixConditionData`)—— 归档权限与台账矩阵权限共用。
3
+ *
4
+ * 「矩阵相关」这类授权对象,除了**取值字段**(`matrixValueRelation`,决定矩阵的哪个值字段
5
+ * 驱动权限),还能再加一层**条件**:拿矩阵自己的**条件列**跟「固定值」或「本表单字段」比。
6
+ * 落库是一棵条件树的 **JSON 字符串**,塞在行报文的 `matrixConditionData` 里。
7
+ *
8
+ * 树的形状(真机报文坐实):
9
+ *
10
+ * ```jsonc
11
+ * {"key":"1792119854495","relationship":"0","isParent":true,"isNewFilter":true,
12
+ * "parentNode":"","datas":[ <叶子…> ],"version":1}
13
+ * ```
14
+ *
15
+ * 叶子(键集合**只有这些**):
16
+ *
17
+ * ```jsonc
18
+ * {"isParent":false,"parentNode":"<根 key>","id":"<矩阵条件列 id>","fieldName":"<同 id>",
19
+ * "fieldType":"Department","text":"所属门店","compType":"Department","type":"condition",
20
+ * "conditions":{"func":"eq","value":<右值>,"type":<右值形态>,"text":<右值形态>,"isEsb":false},
21
+ * "multiSelect":false,"mainField":false,"subTableId":"","key":"<叶子 key>"}
22
+ * ```
23
+ *
24
+ * ⚠ **别拿台账数据条件树那套来复用**(`commands/form-list-utils.ts` 的 `conditionNode`):
25
+ * 那个的叶子带 `objId`/`module`/`formInfo`/`dbFieldType`/`config`/`originBrowserType`,`multiSelect`
26
+ * 还是字符串 `'false'`;这里一个都没有、且是布尔。两套看着像,键集合与类型都不同。
27
+ *
28
+ * ⚠ 算子白名单**只有 6 个**(界面上那个下拉),**不要复用 `FUNC_NORMALIZE`**(那张表收了 13+ 个)——
29
+ * 放行多余的算子会被平台原样存下、界面渲染成 `undefined`,是「看着全绿结果不对」的那类坑。
30
+ */
31
+ /**
32
+ * 界面上那 6 个算子 → 条件树里的 `func` 码。
33
+ *
34
+ * ⚠ **只有 `eq` 是真机报文实证过的**,其余 5 个是按台账那套条件树的码表推的。发错码平台照收、
35
+ * 回读也一模一样(它原样存原样吐),**只有设计器把它们渲染成 `undefined`** —— 所以这几个码
36
+ * 上线前必须靠**设计器目视**验一次,命令层的报错信息里也照实写。
37
+ */
38
+ export declare const MATRIX_COND_FUNCS: Record<string, string>;
39
+ /** 报错时给人看的算子清单(与 `MATRIX_COND_FUNCS` 同源,别另维护一份)。 */
40
+ export declare const MATRIX_COND_FUNC_HINT = "\u7B49\u4E8E eq / \u4E0D\u7B49\u4E8E neq / \u5C5E\u4E8E in / \u4E0D\u5C5E\u4E8E notIn / \u4E3A\u7A7A isNull / \u4E0D\u4E3A\u7A7A isNotNull";
41
+ export declare function normalizeCondFunc(raw: unknown): string;
42
+ /**
43
+ * 矩阵条件列类型(`matrix2/config` 里的小写枚举)→ 条件树里的**组件键**(大驼峰)。
44
+ *
45
+ * ⚠ **只收实证过的**。目前只有一条真机样本:`department → Department`。其余六档
46
+ * (`resource` / `subcompany` / `position` / `customer` / `project` / `customBrowser`)**没法靠
47
+ * 大小写推** —— `subcompany` 不是 `Subcompany`、`customBrowser` 更无从猜起;猜错会静默授错范围。
48
+ * 所以认不出就报错,让调用方用 `--matrix-condition-comp-type` 显式给(与 `resolveFieldOrgType` 同一套取舍)。
49
+ */
50
+ export declare const MATRIX_COND_COMP_TYPES: Record<string, string>;
51
+ export declare function resolveMatrixCondCompType(columnType: string, explicit?: string): string;
52
+ export interface MatrixCondColumn {
53
+ id: string;
54
+ name: string;
55
+ /** `matrix2/config` 里的小写类型枚举。 */
56
+ type: string;
57
+ }
58
+ /** 从 `matrix2/config` 的返回里取矩阵自己的**条件列**(读侧键名兜底与 `matrix config` 一致)。 */
59
+ export declare function matrixCondColumns(matrixConfig: any): MatrixCondColumn[];
60
+ /** 按 id 或列名找条件列。**同名多条报错列候选**,不取首条。 */
61
+ export declare function resolveMatrixCondColumn(columns: MatrixCondColumn[], spec: string): MatrixCondColumn;
62
+ /** `--matrix-condition` 的一个入参(已解析成对象,还没解析列/字段)。 */
63
+ export interface MatrixCondInput {
64
+ /** 条件列:id 或列名。 */
65
+ column: string;
66
+ /** 算子,可写中文(等于)或码(eq)。缺省 eq。 */
67
+ func?: string;
68
+ /** 固定值。与 `field` / `fieldRef` **三选一**。 */
69
+ value?: unknown;
70
+ /** 引用本表单字段:字段 id 或字段名(走字段表解析)。 */
71
+ field?: string;
72
+ /**
73
+ * 引用本表单字段,但**直接给描述符**(不走字段表)。
74
+ *
75
+ * 给「创建人部门」这类**运行时变量**用:它们出现在设计器的字段选择器里,但
76
+ * `ds/fields` 与 `getFormFieldPage` 都查不到(实测),只能从设计器报文里抄。
77
+ */
78
+ fieldRef?: CondFieldRefInput;
79
+ }
80
+ /** `fieldRef` 的入参:与 `CondFieldRecord` 同形,`name` 不给就用 `id`。 */
81
+ export interface CondFieldRefInput {
82
+ id: string;
83
+ name?: string;
84
+ text?: string;
85
+ compType: string;
86
+ subFormId?: string;
87
+ }
88
+ /**
89
+ * 拆 `--matrix-condition` 的入参:每个值要么是一个条件对象,要么是 `@文件`(文件里可以是
90
+ * 单个对象,也可以是**数组**)。多个值按先后拼接。
91
+ */
92
+ export declare function parseMatrixConditionArgs(values: string[]): MatrixCondInput[];
93
+ /**
94
+ * 右值引用本表单字段时用的**字段描述符**(`compareFormField`)。
95
+ *
96
+ * ⚠ `name` 是设计器**按名找字段**的依据,拼错就渲染成「字段名(已删除)」—— 条件存得下、也跑得动,
97
+ * 界面上却是个不存在的字段。所以**取字段表给的 `name`**,不能自己拼 `field_<id>`:
98
+ * 自定义字段的真名恰好是 `field_<id>`(拼着写一直是对的,所以这个坑不容易暴露),
99
+ * **系统字段的真名是语义键**(创建人部门 `creatorDepartment`、创建时间 `create_time`、标题 `name`)。
100
+ * 同一个坑条件树那边也踩过(`commands/form-list-utils.ts`)。
101
+ */
102
+ export interface CondFieldRecord {
103
+ /** 字段 id(雪花 id 或系统字段的语义键)。 */
104
+ id: string;
105
+ /** 字段表给的 name —— 就是 `compareFormField` 要的那个。 */
106
+ name: string;
107
+ /** 显示名(条件行上显示的文字)。 */
108
+ text: string;
109
+ /** 组件键(Text / Department / Select …)。 */
110
+ compType: string;
111
+ /** 明细表字段的所属子表 id;主表字段为空。 */
112
+ subFormId?: string;
113
+ }
114
+ /**
115
+ * 从**字段表行**(`ds/fields` 的返回)里挑出 `field` 指的那个字段。
116
+ *
117
+ * 按 id → 显示名 / 真名 两级找,**同名多条报错列候选**,不取首条。
118
+ * ⚠ 字段表给的是业务字段与一部分模块字段;「创建人部门」这类**运行时变量**它查不到
119
+ * (`getFormFieldPage` 也查不到,实测)—— 那种字段要用 `fieldRef` 直接给描述符。
120
+ */
121
+ export declare function pickCondFieldRecord(fields: any[], spec: string): CondFieldRecord;
122
+ /** 一次性把一堆 `field` 入参查成 `CondFieldRecord`(`buildMatrixConditionData` 的 resolveField 是同步的)。 */
123
+ export declare function pickCondFields(fields: any[], specs: string[]): Map<string, CondFieldRecord>;
124
+ /** 键集合与顺序对齐真机报文。 */
125
+ export declare function buildCompareFormField(rec: CondFieldRecord, objId: string): Record<string, any>;
126
+ export interface BuildMatrixConditionOptions {
127
+ /** 矩阵的条件列(`matrixCondColumns(matrixConfig)`)。 */
128
+ columns: MatrixCondColumn[];
129
+ conditions: MatrixCondInput[];
130
+ /** `and` / `or`(也认 `1` / `0`)。缺省 and。 */
131
+ relation?: string;
132
+ /** 表单 objId,写进 `compareFormField.objId`。 */
133
+ objId: string;
134
+ /** `field` 形态的右值:把用户给的字段 id/名解析成字段记录(由命令层查字段表后注入)。 */
135
+ resolveField: (spec: string) => CondFieldRecord;
136
+ /** 条件列类型认不出时的显式组件键(`--matrix-condition-comp-type`)。 */
137
+ compType?: string;
138
+ /** 节点 key 的基准时刻(毫秒)。仅供测试注入;不给取当下。 */
139
+ now?: number;
140
+ }
141
+ /** 关系码:与台账树同一套 —— `"1"` = 所有(AND)、`"0"` = 任一(OR)。 */
142
+ export declare function condRelationCode(raw: unknown): string;
143
+ /**
144
+ * 条件数组 → `matrixConditionData` 的 JSON 字符串。
145
+ *
146
+ * **空条件返回 `''`** —— 与「没配条件」的旧行为逐字节一致。
147
+ */
148
+ export declare function buildMatrixConditionData(o: BuildMatrixConditionOptions): string;
149
+ /**
150
+ * 条件树 → 语义规范化串(**忽略客户端生成的节点 key / parentNode**)。
151
+ *
152
+ * 读回来的树里那些 key 是我们自己发出去的,换个时刻重建就换一套;拿原文比对必然误报,
153
+ * 拿它当判重键则永远判不出重复。所以统一走这里。
154
+ */
155
+ export declare function canonicalMatrixCondition(raw: unknown): string;
156
+ /**
157
+ * 条件树 → 一行摘要(`所属门店 等于 [创建人部门] 或 所属门店 等于 123`)。
158
+ * 空/读不出结构时返回 `''` —— 打印侧据此决定要不要打这一行。
159
+ */
160
+ export declare function summarizeMatrixCondition(raw: unknown): string;
161
+ //# sourceMappingURL=matrix-condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix-condition.d.ts","sourceRoot":"","sources":["../../src/services/matrix-condition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,403 @@
1
+ /**
2
+ * 矩阵的「条件」(`matrixConditionData`)—— 归档权限与台账矩阵权限共用。
3
+ *
4
+ * 「矩阵相关」这类授权对象,除了**取值字段**(`matrixValueRelation`,决定矩阵的哪个值字段
5
+ * 驱动权限),还能再加一层**条件**:拿矩阵自己的**条件列**跟「固定值」或「本表单字段」比。
6
+ * 落库是一棵条件树的 **JSON 字符串**,塞在行报文的 `matrixConditionData` 里。
7
+ *
8
+ * 树的形状(真机报文坐实):
9
+ *
10
+ * ```jsonc
11
+ * {"key":"1792119854495","relationship":"0","isParent":true,"isNewFilter":true,
12
+ * "parentNode":"","datas":[ <叶子…> ],"version":1}
13
+ * ```
14
+ *
15
+ * 叶子(键集合**只有这些**):
16
+ *
17
+ * ```jsonc
18
+ * {"isParent":false,"parentNode":"<根 key>","id":"<矩阵条件列 id>","fieldName":"<同 id>",
19
+ * "fieldType":"Department","text":"所属门店","compType":"Department","type":"condition",
20
+ * "conditions":{"func":"eq","value":<右值>,"type":<右值形态>,"text":<右值形态>,"isEsb":false},
21
+ * "multiSelect":false,"mainField":false,"subTableId":"","key":"<叶子 key>"}
22
+ * ```
23
+ *
24
+ * ⚠ **别拿台账数据条件树那套来复用**(`commands/form-list-utils.ts` 的 `conditionNode`):
25
+ * 那个的叶子带 `objId`/`module`/`formInfo`/`dbFieldType`/`config`/`originBrowserType`,`multiSelect`
26
+ * 还是字符串 `'false'`;这里一个都没有、且是布尔。两套看着像,键集合与类型都不同。
27
+ *
28
+ * ⚠ 算子白名单**只有 6 个**(界面上那个下拉),**不要复用 `FUNC_NORMALIZE`**(那张表收了 13+ 个)——
29
+ * 放行多余的算子会被平台原样存下、界面渲染成 `undefined`,是「看着全绿结果不对」的那类坑。
30
+ */
31
+ import { readFileSync } from 'node:fs';
32
+ import { MATRIX_FIELD_TYPE_LABELS, MATRIX_FIELD_TYPES, resolveFieldType } from './matrix-fields.js';
33
+ // ── 算子 ──────────────────────────────────────────────────
34
+ /**
35
+ * 界面上那 6 个算子 → 条件树里的 `func` 码。
36
+ *
37
+ * ⚠ **只有 `eq` 是真机报文实证过的**,其余 5 个是按台账那套条件树的码表推的。发错码平台照收、
38
+ * 回读也一模一样(它原样存原样吐),**只有设计器把它们渲染成 `undefined`** —— 所以这几个码
39
+ * 上线前必须靠**设计器目视**验一次,命令层的报错信息里也照实写。
40
+ */
41
+ export const MATRIX_COND_FUNCS = {
42
+ eq: 'eq', '等于': 'eq',
43
+ neq: 'neq', notEq: 'neq', ne: 'neq', '不等于': 'neq',
44
+ aggregate: 'aggregate', in: 'aggregate', '属于': 'aggregate',
45
+ unaggregate: 'unaggregate', notIn: 'unaggregate', '不属于': 'unaggregate',
46
+ empty: 'empty', isNull: 'empty', '为空': 'empty',
47
+ nempty: 'nempty', isNotNull: 'nempty', '不为空': 'nempty',
48
+ };
49
+ /** 报错时给人看的算子清单(与 `MATRIX_COND_FUNCS` 同源,别另维护一份)。 */
50
+ export const MATRIX_COND_FUNC_HINT = '等于 eq / 不等于 neq / 属于 in / 不属于 notIn / 为空 isNull / 不为空 isNotNull';
51
+ /** 「为空 / 不为空」不带右值。 */
52
+ const NO_VALUE_FUNCS = new Set(['empty', 'nempty']);
53
+ export function normalizeCondFunc(raw) {
54
+ const key = String(raw ?? '').trim();
55
+ const hit = MATRIX_COND_FUNCS[key];
56
+ if (!hit)
57
+ throw new Error(`矩阵条件不支持算子 ${JSON.stringify(key)};可用:${MATRIX_COND_FUNC_HINT}`);
58
+ return hit;
59
+ }
60
+ // ── 条件列类型 → 组件键 ────────────────────────────────────
61
+ /**
62
+ * 矩阵条件列类型(`matrix2/config` 里的小写枚举)→ 条件树里的**组件键**(大驼峰)。
63
+ *
64
+ * ⚠ **只收实证过的**。目前只有一条真机样本:`department → Department`。其余六档
65
+ * (`resource` / `subcompany` / `position` / `customer` / `project` / `customBrowser`)**没法靠
66
+ * 大小写推** —— `subcompany` 不是 `Subcompany`、`customBrowser` 更无从猜起;猜错会静默授错范围。
67
+ * 所以认不出就报错,让调用方用 `--matrix-condition-comp-type` 显式给(与 `resolveFieldOrgType` 同一套取舍)。
68
+ */
69
+ export const MATRIX_COND_COMP_TYPES = {
70
+ department: 'Department',
71
+ };
72
+ export function resolveMatrixCondCompType(columnType, explicit) {
73
+ if (explicit)
74
+ return String(explicit).trim();
75
+ const type = resolveFieldType(columnType);
76
+ const hit = MATRIX_COND_COMP_TYPES[type];
77
+ if (hit)
78
+ return hit;
79
+ const known = Object.entries(MATRIX_COND_COMP_TYPES).map(([k, v]) => `${k}→${v}`).join('、');
80
+ throw new Error(`条件列类型「${type}」的组件键还没有实证(已证实的只有 ${known})。`
81
+ + `请用 --matrix-condition-comp-type 显式指定该列对应的组件键。`
82
+ + `可用类型:${MATRIX_FIELD_TYPES.join(' / ')}(${MATRIX_FIELD_TYPES.map((t) => MATRIX_FIELD_TYPE_LABELS[t]).join(' / ')})`);
83
+ }
84
+ /** 从 `matrix2/config` 的返回里取矩阵自己的**条件列**(读侧键名兜底与 `matrix config` 一致)。 */
85
+ export function matrixCondColumns(matrixConfig) {
86
+ const list = matrixConfig?.conditionConfigList ?? matrixConfig?.conditionList;
87
+ if (!Array.isArray(list))
88
+ return [];
89
+ return list
90
+ .map((c) => ({ id: String(c?.id ?? ''), name: String(c?.name ?? ''), type: String(c?.type ?? '') }))
91
+ .filter((c) => c.id);
92
+ }
93
+ /** 按 id 或列名找条件列。**同名多条报错列候选**,不取首条。 */
94
+ export function resolveMatrixCondColumn(columns, spec) {
95
+ const q = String(spec ?? '').trim();
96
+ if (!q)
97
+ throw new Error('矩阵条件缺 column(条件列的 id 或列名)');
98
+ const byId = columns.filter((c) => c.id === q);
99
+ if (byId.length === 1)
100
+ return byId[0];
101
+ const byName = columns.filter((c) => c.name === q);
102
+ if (byName.length === 1)
103
+ return byName[0];
104
+ const cands = byId.length ? byId : byName;
105
+ if (cands.length > 1) {
106
+ throw new Error(`矩阵条件列「${q}」匹配到 ${cands.length} 个,请改用列 id:${cands.map((c) => `${c.name}(${c.id})`).join('、')}`);
107
+ }
108
+ const avail = columns.length ? columns.map((c) => `${c.name}(${c.id})`).join('、') : '(该矩阵没有条件列)';
109
+ throw new Error(`矩阵里没有条件列「${q}」。可用:${avail}`);
110
+ }
111
+ /**
112
+ * 拆 `--matrix-condition` 的入参:每个值要么是一个条件对象,要么是 `@文件`(文件里可以是
113
+ * 单个对象,也可以是**数组**)。多个值按先后拼接。
114
+ */
115
+ export function parseMatrixConditionArgs(values) {
116
+ const out = [];
117
+ for (const raw of values ?? []) {
118
+ const text = String(raw ?? '').trim();
119
+ if (!text)
120
+ continue;
121
+ let json = text;
122
+ if (text.startsWith('@')) {
123
+ const path = text.slice(1);
124
+ try {
125
+ json = readFileSync(path, 'utf-8');
126
+ }
127
+ catch (e) {
128
+ throw new Error(`读取 --matrix-condition 文件失败: ${path}(${e?.message || e})`);
129
+ }
130
+ }
131
+ let parsed;
132
+ try {
133
+ parsed = JSON.parse(json);
134
+ }
135
+ catch (e) {
136
+ throw new Error(`--matrix-condition 不是合法 JSON(${e?.message || e}):${text.slice(0, 80)}`);
137
+ }
138
+ const items = Array.isArray(parsed) ? parsed : [parsed];
139
+ for (const it of items) {
140
+ if (!it || typeof it !== 'object' || Array.isArray(it)) {
141
+ throw new Error(`--matrix-condition 的每一项都要是一个对象:${JSON.stringify(it)}`);
142
+ }
143
+ const o = it;
144
+ if (o.column === undefined || String(o.column).trim() === '') {
145
+ throw new Error('--matrix-condition 缺 column(条件列的 id 或列名)');
146
+ }
147
+ const hasValue = o.value !== undefined;
148
+ const hasField = o.field !== undefined && String(o.field).trim() !== '';
149
+ const hasRef = o.fieldRef !== undefined;
150
+ const given = [hasValue, hasField, hasRef].filter(Boolean).length;
151
+ if (given > 1)
152
+ throw new Error(`--matrix-condition「${o.column}」的 value / field / fieldRef 只能给一个`);
153
+ let fieldRef;
154
+ if (hasRef) {
155
+ const r = o.fieldRef;
156
+ if (!r || typeof r !== 'object' || Array.isArray(r))
157
+ throw new Error(`--matrix-condition「${o.column}」的 fieldRef 要是一个对象`);
158
+ if (r.id === undefined || String(r.id).trim() === '')
159
+ throw new Error(`--matrix-condition「${o.column}」的 fieldRef 缺 id`);
160
+ if (r.compType === undefined || String(r.compType).trim() === '')
161
+ throw new Error(`--matrix-condition「${o.column}」的 fieldRef 缺 compType`);
162
+ fieldRef = {
163
+ id: String(r.id),
164
+ ...(r.name === undefined ? {} : { name: String(r.name) }),
165
+ ...(r.text === undefined ? {} : { text: String(r.text) }),
166
+ compType: String(r.compType),
167
+ ...(r.subFormId ? { subFormId: String(r.subFormId) } : {}),
168
+ };
169
+ }
170
+ out.push({
171
+ column: String(o.column),
172
+ // 没给算子就不生成这个键(生成 `func: undefined` 会让「原样转发」的调用方多带一个键)
173
+ ...(o.func === undefined || String(o.func).trim() === '' ? {} : { func: String(o.func) }),
174
+ ...(hasValue ? { value: o.value } : {}),
175
+ ...(hasField ? { field: String(o.field) } : {}),
176
+ ...(fieldRef ? { fieldRef } : {}),
177
+ });
178
+ }
179
+ }
180
+ return out;
181
+ }
182
+ /**
183
+ * 从**字段表行**(`ds/fields` 的返回)里挑出 `field` 指的那个字段。
184
+ *
185
+ * 按 id → 显示名 / 真名 两级找,**同名多条报错列候选**,不取首条。
186
+ * ⚠ 字段表给的是业务字段与一部分模块字段;「创建人部门」这类**运行时变量**它查不到
187
+ * (`getFormFieldPage` 也查不到,实测)—— 那种字段要用 `fieldRef` 直接给描述符。
188
+ */
189
+ export function pickCondFieldRecord(fields, spec) {
190
+ const q = String(spec ?? '').trim();
191
+ if (!q)
192
+ throw new Error('矩阵条件的 field 不能为空');
193
+ const byId = fields.filter((f) => String(f?.id) === q);
194
+ const hits = byId.length
195
+ ? byId
196
+ : fields.filter((f) => String(f?.text ?? '') === q || String(f?.name ?? '') === q);
197
+ if (!hits.length) {
198
+ throw new Error(`表单里找不到矩阵条件要引用的字段「${q}」。`
199
+ + '若是「创建人部门」这类运行时变量,请改用 fieldRef: {"id":"…","text":"…","compType":"…"}');
200
+ }
201
+ if (hits.length > 1) {
202
+ throw new Error(`字段「${q}」匹配到 ${hits.length} 个,请改用字段 id:${hits.map((f) => `${f.text}(${f.id})`).join('、')}`);
203
+ }
204
+ const f = hits[0];
205
+ return {
206
+ id: String(f.id),
207
+ name: String(f.name ?? f.id),
208
+ text: String(f.text ?? ''),
209
+ compType: String(f.compType ?? f.type ?? 'Text'),
210
+ ...(f.subFormId ? { subFormId: String(f.subFormId) } : {}),
211
+ };
212
+ }
213
+ /** 一次性把一堆 `field` 入参查成 `CondFieldRecord`(`buildMatrixConditionData` 的 resolveField 是同步的)。 */
214
+ export function pickCondFields(fields, specs) {
215
+ const map = new Map();
216
+ for (const s of specs)
217
+ if (!map.has(s))
218
+ map.set(s, pickCondFieldRecord(fields, s));
219
+ return map;
220
+ }
221
+ /** 键集合与顺序对齐真机报文。 */
222
+ export function buildCompareFormField(rec, objId) {
223
+ if (rec?.subFormId) {
224
+ throw new Error(`矩阵条件暂时不支持引用明细表字段「${rec.text || rec.id}」(只支持主表字段)`);
225
+ }
226
+ const key = String(rec.id);
227
+ const name = String(rec.name || `field_${key}`);
228
+ return {
229
+ mainField: true,
230
+ type: String(rec.compType),
231
+ compTypec: '',
232
+ compType: String(rec.compType),
233
+ objId: String(objId),
234
+ name,
235
+ id: key,
236
+ text: String(rec.text || name),
237
+ mainPrimaryKey: false,
238
+ showName: name,
239
+ changeTrigger: '1',
240
+ };
241
+ }
242
+ /** 关系码:与台账树同一套 —— `"1"` = 所有(AND)、`"0"` = 任一(OR)。 */
243
+ export function condRelationCode(raw) {
244
+ const key = String(raw ?? '').trim().toLowerCase();
245
+ if (key === '' || key === '1' || key === 'and' || key === '所有' || key === '且')
246
+ return '1';
247
+ if (key === '0' || key === 'or' || key === '任一' || key === '或')
248
+ return '0';
249
+ throw new Error(`未知的条件关系「${raw}」,只支持 and / or(或 1 / 0)`);
250
+ }
251
+ /**
252
+ * 条件数组 → `matrixConditionData` 的 JSON 字符串。
253
+ *
254
+ * **空条件返回 `''`** —— 与「没配条件」的旧行为逐字节一致。
255
+ */
256
+ export function buildMatrixConditionData(o) {
257
+ const conds = o.conditions ?? [];
258
+ if (!conds.length)
259
+ return '';
260
+ const base = Number.isFinite(o.now) ? Number(o.now) : Date.now();
261
+ const rootKey = String(base);
262
+ const compTypeOf = (c) => resolveMatrixCondCompType(c.type, o.compType);
263
+ const datas = conds.map((c, i) => {
264
+ const col = resolveMatrixCondColumn(o.columns, c.column);
265
+ const func = normalizeCondFunc(c.func === undefined || String(c.func).trim() === '' ? 'eq' : c.func);
266
+ const noValue = NO_VALUE_FUNCS.has(func);
267
+ const hasRight = c.value !== undefined || c.field !== undefined || c.fieldRef !== undefined;
268
+ if (noValue && hasRight) {
269
+ throw new Error(`矩阵条件「${col.name}」的算子 ${func} 不带右值,请去掉 value / field / fieldRef`);
270
+ }
271
+ if (!noValue && !hasRight) {
272
+ throw new Error(`矩阵条件「${col.name}」缺右值:给 value(固定值)、field(按名引字段)或 fieldRef(直接给字段描述符)`);
273
+ }
274
+ const compType = compTypeOf(col);
275
+ let value = '';
276
+ let valueType = '';
277
+ let text = '';
278
+ if (!noValue && (c.field !== undefined || c.fieldRef !== undefined)) {
279
+ const rec = c.fieldRef
280
+ ? {
281
+ id: c.fieldRef.id,
282
+ name: c.fieldRef.name ?? c.fieldRef.id,
283
+ text: c.fieldRef.text ?? '',
284
+ compType: c.fieldRef.compType,
285
+ ...(c.fieldRef.subFormId ? { subFormId: c.fieldRef.subFormId } : {}),
286
+ }
287
+ : o.resolveField(c.field);
288
+ // 「本表字段」这一档平台卡得很死(设计器实测):**算子只能是「等于」**,而且
289
+ // **字段类型必须与条件列一致**(部门列只能挑部门类型的字段,文本字段根本选不到)。
290
+ // 放行别的组合会存下一条设计器画不出来/语义不对的规则,所以这里当场拦住。
291
+ if (func !== 'eq') {
292
+ throw new Error(`矩阵条件「${col.name}」引用本表字段时算子只能是「等于」(当前是 ${func})`);
293
+ }
294
+ if (String(rec.compType) !== compType) {
295
+ throw new Error(`矩阵条件「${col.name}」引用的字段「${rec.text || rec.id}」是 ${rec.compType} 类型,`
296
+ + `与条件列的类型 ${compType} 不一致 —— 该列只能引用同类型(${compType})的字段`);
297
+ }
298
+ // 字段引用:value 与 text 各放一份**同形**的描述符(真机报文就是两份)
299
+ value = { compareFormField: buildCompareFormField(rec, o.objId) };
300
+ text = { compareFormField: buildCompareFormField(rec, o.objId) };
301
+ valueType = 'formField';
302
+ }
303
+ else if (!noValue) {
304
+ const literal = typeof c.value === 'string' ? c.value : String(c.value ?? '');
305
+ value = literal;
306
+ text = literal;
307
+ // `hander` 是平台自己的拼写(少了 l),照抄
308
+ valueType = 'custombyhander';
309
+ }
310
+ return {
311
+ isParent: false,
312
+ parentNode: rootKey,
313
+ id: col.id,
314
+ fieldName: col.id,
315
+ fieldType: compType,
316
+ text: col.name,
317
+ compType,
318
+ type: 'condition',
319
+ conditions: { func, value, type: valueType, text, isEsb: false },
320
+ multiSelect: false,
321
+ mainField: false,
322
+ subTableId: '',
323
+ key: String(base + 100 * (i + 1)),
324
+ };
325
+ });
326
+ return JSON.stringify({
327
+ key: rootKey,
328
+ relationship: condRelationCode(o.relation),
329
+ isParent: true,
330
+ isNewFilter: true,
331
+ parentNode: '',
332
+ datas,
333
+ version: 1,
334
+ });
335
+ }
336
+ // ── 回读 ──────────────────────────────────────────────────
337
+ /**
338
+ * 条件树 → 语义规范化串(**忽略客户端生成的节点 key / parentNode**)。
339
+ *
340
+ * 读回来的树里那些 key 是我们自己发出去的,换个时刻重建就换一套;拿原文比对必然误报,
341
+ * 拿它当判重键则永远判不出重复。所以统一走这里。
342
+ */
343
+ export function canonicalMatrixCondition(raw) {
344
+ const norm = (v) => {
345
+ if (v === undefined || v === null || v === '')
346
+ return '';
347
+ let parsed = v;
348
+ if (typeof v === 'string') {
349
+ try {
350
+ parsed = JSON.parse(v);
351
+ }
352
+ catch {
353
+ return v;
354
+ }
355
+ }
356
+ const walk = (n) => {
357
+ if (!n || typeof n !== 'object')
358
+ return n;
359
+ const { key: _k, parentNode: _p, isNewFilter: _i, isEdit: _e, ...rest } = n;
360
+ if (Array.isArray(rest.datas))
361
+ rest.datas = rest.datas.map(walk);
362
+ return rest;
363
+ };
364
+ return JSON.stringify(walk(parsed));
365
+ };
366
+ return norm(raw);
367
+ }
368
+ /** func 码 → 中文(打印用,与 `MATRIX_COND_FUNCS` 同源)。 */
369
+ const FUNC_CN = {
370
+ eq: '等于', neq: '不等于', aggregate: '属于', unaggregate: '不属于', empty: '为空', nempty: '不为空',
371
+ };
372
+ /**
373
+ * 条件树 → 一行摘要(`所属门店 等于 [创建人部门] 或 所属门店 等于 123`)。
374
+ * 空/读不出结构时返回 `''` —— 打印侧据此决定要不要打这一行。
375
+ */
376
+ export function summarizeMatrixCondition(raw) {
377
+ if (raw === undefined || raw === null || String(raw).trim() === '')
378
+ return '';
379
+ let tree = raw;
380
+ if (typeof raw === 'string') {
381
+ try {
382
+ tree = JSON.parse(raw);
383
+ }
384
+ catch {
385
+ return '';
386
+ }
387
+ }
388
+ const datas = Array.isArray(tree?.datas) ? tree.datas : [];
389
+ if (!datas.length)
390
+ return '';
391
+ const parts = datas.map((d) => {
392
+ const c = d?.conditions || {};
393
+ const cn = FUNC_CN[String(c.func)] || String(c.func || '');
394
+ const isFieldRef = c.value && typeof c.value === 'object' && c.value.compareFormField;
395
+ const v = isFieldRef
396
+ ? `[${c.value.compareFormField.text || c.value.compareFormField.name || ''}]`
397
+ : String(c.value ?? '');
398
+ const head = `${String(d?.text ?? '')} ${cn}`.trim();
399
+ return v ? `${head} ${v}` : head;
400
+ });
401
+ return parts.join(String(tree.relationship) === '0' ? ' 或 ' : ' 且 ');
402
+ }
403
+ //# sourceMappingURL=matrix-condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix-condition.js","sourceRoot":"","sources":["../../src/services/matrix-condition.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,39 @@ export declare function isSystemMenu(node: MenuNode): boolean;
85
85
  * 改名不该顺手改掉别人的筛选条件。
86
86
  */
87
87
  export declare function buildRenameNavigation(node: MenuNode, newName: string, appId: string): Record<string, any>;
88
+ /**
89
+ * 新建菜单共用的「所有人」`shareMap` 块。
90
+ *
91
+ * ⚠ `shareKey` 里带 `Date.now()` —— 那是**平台报文本来就长这样**(一条临时键),照抄。
92
+ */
93
+ export declare function allShareMap(): any[];
94
+ export interface AddNavigationOptions {
95
+ name: string;
96
+ appId: string;
97
+ /** 父菜单 id,顶级写 `'0'`。 */
98
+ parentId?: string;
99
+ /** 页面路径(`/sp/...`)。`linkless` 时不看它。 */
100
+ pagePath?: string;
101
+ /** 建的是**上级目录**(空链接的纯分类节点)。 */
102
+ linkless?: boolean;
103
+ }
104
+ /**
105
+ * 新建菜单的写报文(`savePublishMenu` 的 navigation)。
106
+ *
107
+ * 两套形状都对照台账里**真实存下来的记录**核过(`menu list --raw` 可以自己看):
108
+ *
109
+ * | 键 | 有链接的菜单 | 空链接上级目录 |
110
+ * |---|---|---|
111
+ * | `page.pageType` | `LINK`(或平台归一后的 `VIEWPORT`) | **`EMPTY`** |
112
+ * | `page.pageId` / `page.pageName` | 页面路径 | **空串** |
113
+ * | `menuUrl` | 页面路径 | **整个键不发**(不是空串) |
114
+ * | `menuType` | `'1'` | **`'0'`** |
115
+ *
116
+ * 其余键两边**一模一样** —— 所以这里共用一份,只切这四处。
117
+ * ⚠ `menuUrl` 空值必须**省略**而不是发空串:服务端只在它为空时才肯写,发空串会把菜单写脏
118
+ * (同 `buildRenameNavigation` 里那条注释)。
119
+ */
120
+ export declare function buildAddNavigation(o: AddNavigationOptions): Record<string, any>;
88
121
  /**
89
122
  * 比对改名前后,返回**名字之外**发生变化的守卫字段。
90
123
  * 返回空数组才算改名干净;非空即调用方应硬失败并点名。
@@ -1 +1 @@
1
- {"version":3,"file":"menu-catalog.d.ts","sourceRoot":"","sources":["../../src/services/menu-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,yFAOrB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe,8KAGlB,CAAC;AAEX,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;AAWtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAM,GAAG,QAAQ,EAAE,CAsBhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAMnF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAMtE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAcnH;AAED,6BAA6B;AAC7B,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,EAAE,CAOrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA2BzG;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,CAQzE;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED,kBAAkB;AAClB,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"menu-catalog.d.ts","sourceRoot":"","sources":["../../src/services/menu-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,yFAOrB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe,8KAGlB,CAAC;AAEX,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;AAWtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAM,GAAG,QAAQ,EAAE,CAsBhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAMnF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAMtE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAcnH;AAED,6BAA6B;AAC7B,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,EAAE,CAOrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA2BzG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,GAAG,EAAE,CAUnC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAuB/E;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,CAQzE;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED,kBAAkB;AAClB,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAErD"}