@anov/cic-standard-sdk 0.0.1 → 0.0.3

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/README.md CHANGED
@@ -30,16 +30,9 @@ CIC-Standard-1.0/
30
30
  └── vite.config.ts # Vite 构建配置
31
31
  ```
32
32
 
33
- ## 1. 协议核心概念
33
+ ## 1. 简介
34
34
 
35
- CIC 协议通过 JSON 描述一个完整的应用页面结构与行为:
36
-
37
- - **Config**: 全局配置根节点,包含页面列表、全局变量、资源依赖等。
38
- - **Page**: 页面定义,包含布局配置、组件树、页面级数据源。
39
- - **Component**: 组件实例,分为 View (视图)、Container (容器)、Logic (逻辑) 三类。
40
- - **Event**: 强大的事件 DSL,支持变量操作、页面跳转、组件控制、自定义脚本等,支持条件执行与调度(Order/Delay)。
41
- - **Variable**: 多级作用域(Global > Page > Component)的变量管理,支持 string/number/object/array/function。
42
- - **DataSource**: 统一的数据源定义(REST, WebSocket, Static),支持轮询与依赖。
35
+ 提供 CIC 标准的 TypeScript 类型与 SDK,支持 JSON Schema 校验、页面/组件/数据源等核心能力,适用于发布后的使用者。
43
36
 
44
37
  ## 2. SDK 使用指南
45
38
 
@@ -50,12 +43,12 @@ SDK 提供了操作 CIC 标准的常用工具方法,现已重构为面向对
50
43
  推荐使用 `pnpm` 安装依赖:
51
44
 
52
45
  ```bash
53
- pnpm install cic-standard-sdk
46
+ pnpm add @anov/cic-standard-sdk
54
47
  ```
55
48
 
56
49
  ```typescript
57
- import { CICSDK } from 'cic-standard-sdk';
58
- import { CICConfig } from 'cic-standard-sdk/types';
50
+ import { CICSDK } from '@anov/cic-standard-sdk'
51
+ import type { CICConfig, ComponentInstance, DataSourceItem, CICPage, Meta, Layout, Registry, Variables, Dependency, ICICSDK } from '@anov/cic-standard-sdk';
59
52
 
60
53
  const config: CICConfig = { ... };
61
54
  const sdk = new CICSDK(config); // 实例化时自动执行 Schema 校验
@@ -63,7 +56,7 @@ const sdk = new CICSDK(config); // 实例化时自动执行 Schema 校验
63
56
 
64
57
  ### 常用 API
65
58
 
66
- **1. 验证配置**(`sdk/CICSDK.ts:174`)
59
+ **1. 验证配置**
67
60
 
68
61
  SDK 集成了完整的 JSON Schema (Draft-07),可验证字段类型、必填项、枚举值等。
69
62
 
@@ -83,7 +76,7 @@ try {
83
76
  }
84
77
  ```
85
78
 
86
- **2. 查找组件**(`sdk/CICSDK.ts:47`、`sdk/CICSDK.ts:62`)
79
+ **2. 查找组件**
87
80
 
88
81
  ```typescript
89
82
  // 按 ID 查找(支持跨页面)
@@ -97,7 +90,7 @@ const page = sdk.findPageByComponent('comp_btn_01')
97
90
  console.log('所在页面:', page?.id)
98
91
  ```
99
92
 
100
- **3. 获取变量值(自动处理作用域)**(`sdk/CICSDK.ts:80`、`sdk/CICSDK.ts:109`)
93
+ **3. 获取变量值(自动处理作用域)**
101
94
 
102
95
  ```typescript
103
96
  // 优先查找组件级 -> 页面级 -> 全局
@@ -107,7 +100,7 @@ const val = sdk.getVariable({ pageId: 'p1', componentId: 'c1' }, 'theme')
107
100
  const val2 = sdk.getVariableByRef('global.theme')
108
101
  ```
109
102
 
110
- **4. 遍历组件树**(`sdk/CICSDK.ts:125`、`sdk/CICSDK.ts:220`)
103
+ **4. 遍历组件树**
111
104
 
112
105
  ```typescript
113
106
  // 遍历整个配置的所有组件
@@ -118,7 +111,7 @@ sdk.walkComponents((comp, page, parent) => {
118
111
  })
119
112
  ```
120
113
 
121
- **5. 静态工具**(`sdk/CICSDK.ts:199`、`sdk/CICSDK.ts:220`)
114
+ **5. 静态工具**
122
115
 
123
116
  ### 生成器 API(严格校验 + 规范化)
124
117
 
@@ -143,30 +136,22 @@ CICSDK.traverseTree(someComponent, c => {
143
136
  })
144
137
  ```
145
138
 
146
- ## 3. 开发与测试
147
-
148
- 本项目使用 Vite 进行构建,Vitest 进行单元测试,推荐使用 `pnpm` 管理依赖。
149
-
150
- ### 命令脚本
151
-
152
- - `pnpm install`: 安装依赖
153
- - `pnpm run dev`: 启动开发模式
154
- - `pnpm run build`: 构建 SDK(输出 `dist/`)
155
- - `pnpm test`: 运行单元测试
139
+ ## 3. 构建与类型
156
140
 
157
141
  ### 构建产物
158
142
 
159
- - `dist/cic-sdk.es.js`: ESM 格式,适用于现代前端项目(Vite/Webpack)。
160
- - `dist/cic-sdk.cjs.js`: CJS 格式,适用于 Node.js `require`。
161
- - `dist/cic-sdk.umd.js`: UMD 格式,适用于 `<script>` 引入。
143
+ - `dist/cic-sdk.es.js`(ESM
144
+ - `dist/cic-sdk.cjs.js`(CJS
145
+ - `dist/cic-sdk.umd.js`(UMD
146
+ - 类型声明:`dist/sdk/CICSDK.d.ts`
162
147
 
163
- `package.json` 中已配置 `exports` 字段与 `sideEffects: false`,支持 Tree‑shaking 与正确的导入解析。
148
+ `package.json` 设置了 `sideEffects: false` 并使用 `exports` 指定导入/require 入口,方便 Tree‑shaking
164
149
 
165
150
  ## 4. JSON Schema 校验
166
151
 
167
152
  `schema/cic.schema.json` 提供了完整的协议约束。
168
153
 
169
- ### VS Code 中启用智能提示
154
+ ### VS Code 智能提示
170
155
 
171
156
  在你的 JSON 配置文件头部添加 `$schema` 字段:
172
157
 
@@ -184,7 +169,7 @@ CICSDK.traverseTree(someComponent, c => {
184
169
  - 枚举值提示(如 `type`: `view` | `container`)
185
170
  - 结构校验(必填字段检查)
186
171
 
187
- ### 常见报错与排查
172
+ ### 报错与排查
188
173
 
189
174
  - Ajv 错误输出包含 `instancePath`:根据路径定位到具体字段(如 `/pages/0/components/1/role must be equal to constant`)。
190
175
  - 组件判别联合:`view` 必须提供 `component`;`container` 必须提供 `children`;`logic` 必须提供 `component`(`LogicRef`)。
@@ -196,34 +181,9 @@ CICSDK.traverseTree(someComponent, c => {
196
181
  - 按需引入:仅从 `CICSDK` 静态导出使用所需生成器函数,减少打包体积。
197
182
  - ID 规范:通过生成器的 `generateId` 自动生成 `uuid`,避免冲突。
198
183
 
199
- ## 5. Schema 与 Mock 脚本
200
-
201
- ### Schema 生成脚本(`scripts/generate-schema.ts`)
202
-
203
- - 通过配置项裁剪复杂度、保留必要字段,输出更简洁可用的 JSON Schema。
204
-
205
- ### Mock 生成与清洗(`scripts/generate-mock.ts`)
206
-
207
- - 基于 Schema 随机生成后,使用 `deepClean` 进行规范化:
208
- - 修正非法数组项、补齐 `id`(uuid)、规范 `url`/`ws` 链接。
209
- - 为 `code` 字段提供可执行的默认实现。
210
-
211
- 示例输出能直接通过 Ajv 校验并用于演示与测试。
212
-
213
- ## 5. 示例说明
214
-
215
- 请查看 `examples/full-demo.json`,它展示了:
216
-
217
- - 如何定义全局主题变量。
218
- - 如何引入外部 ECharts 库与字体资源。
219
- - 如何配置 REST 数据源。
220
- - 如何构建包含图表与按钮的组件树。
221
- - 如何通过点击事件触发变量更新与自定义逻辑。
222
-
223
- ## 安全声明
184
+ ## 5. 许可与版本
224
185
 
225
- CIC 允许执行动态代码(Custom Events, Logic Components)。在生产环境中渲染不可信的 CIC 配置时,请务必:
186
+ - 语义化版本(SemVer)发布
187
+ - 请在 issue 中反馈使用问题与建议
226
188
 
227
- 1. 使用 iframe 或 Web Worker 隔离渲染环境。
228
- 2. 限制代码执行的上下文访问权限。
229
- 3. 对 `CustomRemoteEvent` 加载的外部脚本进行域名白名单控制。
189
+ (本 README 为发布版自述,专注使用信息;开发演示与内部脚本说明已省略。)