@lark-project/cli
Version:
飞书项目插件开发工具
31 lines (30 loc) • 1.79 kB
TypeScript
/**
* 表格列展示态布局 DSL 的格式归一化工具。
*
* 后端存储的始终是完整的 { definitions, template } 对象;本地 yaml 允许两种简写:
* 1. 裸 template:用户只写根节点(含顶层 `type`),CLI 自动包装成 { definitions, template };
* 2. 完整对象:缺失的 definitions.data / $i18n / $colorTokens 会被补成空对象。
*
* 老 yaml 中 control.table_cell 是 JSON 字符串,这里同时做兼容:自动 JSON.parse 一次。
*/
type Dict = Record<string, unknown>;
/** 本地 yaml 形态 → 发往后端的完整 { definitions, template } 对象 */
export declare function normalizeDslForBackend(input: unknown): Dict | undefined;
/**
* 就地归一化本地 yaml 形态的 DSL:
* - 裸 template → 保持裸(本地仍以裸形态可读)
* - 完整对象 → 补齐 definitions.data / $i18n / $colorTokens 为 {}
* - JSON 字符串(老 yaml)→ 解析并升级为对象形态(单向迁移)
* 与 normalizeDslForBackend 的区别:此函数产出**仍然是本地 yaml 形态**,不强制包成
* { definitions, template }。裸 template 的简写特性得以保留,避免 set 落盘时破坏语义。
*/
export declare function normalizeDslInPlace(input: unknown): unknown;
/**
* 对整个本地配置(QueryLocalConfigInput 形态)就地跑 DSL 归一化。
* 影响 control[].platform.web.table_cell 和 field_template[].platform.web.table_layout 两处。
* 其他字段完全保留,不搬成 extension。
*/
export declare function normalizeLocalConfigDsl<T>(config: T): T;
/** 后端完整对象 → 本地 yaml 形态:当 definitions 三键全为空时,回写为裸 template */
export declare function denormalizeDslForLocal(input: unknown): Dict | undefined;
export {};