zcw-shared 1.13.0 → 1.13.2

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
@@ -1,655 +1,407 @@
1
- # Shared Package 编码规范
1
+ # Shared 函数库
2
2
 
3
- 本文档定义了 shared package 中的编码规范和最佳实践,所有开发人员必须严格遵循执行。
3
+ 一个环境无关的 TypeScript 函数库,提供跨平台的工具函数和类型定义。
4
4
 
5
- **重要说明**: 本库是环境无关的纯TypeScript库,所有函数必须保持环境无关性,仅通过TypeScript引用声明环境依赖。
5
+ ## 技术架构
6
6
 
7
- **例外说明**:
8
- - `scripts/` 目录下的文件为构建脚本,不会被打包到最终产物中,因此可以直接导入Node.js环境模块,不需要遵循环境无关性规则。
9
- - `playground/` 目录是功能验证环境,用于测试和验证shared包中的函数功能,有独立的配置和依赖管理,不受shared包的环境无关性规则约束。
7
+ ### 核心设计原则
10
8
 
11
- ## 核心原则摘要
9
+ **环境无关性(Environment Agnostic)**
10
+ - 所有函数都通过依赖注入接收环境相关的API
11
+ - 不直接使用 `window`、`document`、`fs` 等全局对象
12
+ - 支持 Node.js、浏览器、UniApp、微信小程序等多种运行环境
12
13
 
13
- ### 🎯 设计原则
14
- - **环境无关性**: 所有代码必须与运行环境无关,通过依赖注入获取环境实例
15
- - **纯函数**: Functions 目录中的所有函数必须是纯函数,无副作用
16
- - **类型安全**: 使用 TypeScript 严格模式,避免 any 类型
17
- - **单一职责**: 每个文件只包含一个函数或一组相关常量
14
+ **模块化架构**
15
+ - 每个函数独立打包,支持按需导入
16
+ - 无统一入口文件,避免不必要的依赖
17
+ - 清晰的类型定义和环境抽象
18
18
 
19
- ### 📁 文件组织
20
- - **Functions**: 一个文件一个函数,使用具名导出,禁止 index.ts
21
- - **Types**: 通用类型定义,支持环境类型引用
22
- - **Constants**: 按模块组织常量,使用具名导出
23
- - **Playground**: 功能验证环境,不受 shared 包规则约束
24
-
25
- ### 🔧 技术要求
26
- - **导出方式**: 强制使用具名导出,禁止默认导出
27
- - **类型引用**: 环境类型通过 TypeScript 引用声明,实例通过参数传入
28
- - **错误处理**: 统一的错误处理机制,明确的错误类型
29
- - **文档**: 完整的 JSDoc 注释,清晰的参数和返回值说明
30
-
31
- ---
32
-
33
- ## 目录结构
19
+ ### 目录结构
34
20
 
35
21
  ```
36
22
  src/
37
- ├── constants/ # 常量定义,包括配置项、正则表达式、映射表等
38
- ├── functions/ # 纯函数,按功能分类组织
39
- ├── hooks/ # Vue/React hooks
40
- references/ # 环境相关和第三方库的TypeScript类型定义
41
- types/ # 可导出的公共类型定义
42
- scripts/ # 构建脚本(不会被打包,可直接使用Node.js模块)
43
- playground/ # 功能验证环境(用于测试shared包功能,有独立配置)
23
+ ├── constants/ # 常量定义(颜色模式、软件配置等)
24
+ ├── functions/ # 核心函数库
25
+ ├── color/ # 颜色处理函数
26
+ │ ├── android/ # Android 构建相关
27
+ │ ├── css/ # CSS 处理
28
+ │ ├── dom/ # DOM 操作
29
+ │ ├── utils/ # 通用工具
30
+ │ └── ...
31
+ └── hooks/ # React/Vue Hooks
32
+
33
+ types/ # 应用层类型定义
34
+ ├── color.d.ts # 颜色相关类型
35
+ ├── storage.d.ts # 存储相关类型
36
+ └── ...
37
+
38
+ references/ # 环境API类型声明
39
+ ├── node.d.ts # Node.js API
40
+ ├── browser.d.ts # 浏览器 API
41
+ ├── dom.d.ts # DOM API
42
+ └── ...
43
+
44
+ playground/ # 测试和验证环境
45
+ └── tests/ # 测试用例
44
46
  ```
45
47
 
46
- ## TypeScript 类型声明规范
47
-
48
- ### 1. 类型定义文件组织
49
-
50
- - **统一类型定义**: 将重复的类型定义提取到 `types/` 目录下的专用文件中
51
- - **避免重复**: 不要在多个文件中重复定义相同的接口或类型
52
- - **模块化**: 按功能模块组织类型定义文件
53
- - **环境分离**: 严格区分不同环境的类型定义,避免混合使用
54
- - **接口导出**: 所有可复用的接口必须正确导出
55
- - **命名空间统一**: 同一文件内的类型定义应使用统一的命名空间设计
56
-
57
- ### 2. 环境类型定义规范
58
-
59
- #### 2.1 环境分离原则
60
-
61
- **✅ 正确的环境分离**:
62
- - 浏览器环境类型定义应包含 window、console、URLSearchParams、localStorage 等
63
- - Node.js环境类型定义应包含 process、fs、path、Buffer 等
64
- - 严格分离不同环境的API,避免混合使用
65
-
66
- **❌ 错误的环境混合**:
67
- - 禁止在同一接口中混合不同环境的API
68
- - 不要将浏览器API和Node.js API放在同一个接口中
69
-
70
- #### 2.2 类型安全性要求
71
-
72
- - **减少any类型**: 优先使用具体的类型定义,避免过度使用 `any`
73
- - **接口完整性**: 接口应包含必要的属性和方法,提供完整的类型信息
74
- - **泛型支持**: 适当使用泛型提高类型的灵活性和复用性
75
-
76
- **✅ 类型安全的接口设计**:
77
- - 使用具体的类型定义,避免过度使用 `any`
78
- - 接口应包含必要的属性和方法,提供完整的类型信息
79
- - 适当使用泛型提高类型的灵活性和复用性
48
+ ### 架构层次关系
80
49
 
81
- #### 2.3 类型文件组织和导入规范
82
-
83
- **📁 类型文件组织原则**:
84
- - **`references/` 目录**: 存放环境相关和第三方库的类型定义(浏览器、Node.js、Sharp、Vue、微信小程序等)
85
- - **`types/` 目录**: 存放通用的、需要提供给外部使用的公共类型定义
86
-
87
- **✅ 统一的导入方式**:
88
- - 环境相关和第三方库类型从 references 目录导入(使用.d后缀)
89
- - 通用公共类型从 types 目录导入(使用.d后缀)
90
- - 使用相对路径导入,确保路径正确性
91
- - 项目内所有导入路径保持一致的格式
92
-
93
- **📝 导入路径规范**:
94
- - **使用.d后缀**: 导入类型定义时使用 `.d` 后缀,不要使用 `.d.ts` 或 `.ts`
95
- - **相对路径**: 使用相对路径导入,确保路径正确性
96
- - **一致性**: 项目内所有导入路径保持一致的格式
97
- - **显式导入**: 所有类型都通过显式导入使用,避免全局声明污染
98
-
99
- **❌ 禁止的做法**:
100
- - 禁止将环境相关和第三方库类型放在 types 目录
101
- - 禁止将通用类型放在 references 目录
102
- - 禁止使用 declare global 模式进行全局声明
103
- - 避免全局声明污染,所有类型通过显式导入使用
104
-
105
- #### 2.4 类型声明和导出规范
106
-
107
- - **直接导出**: 使用 `export` 声明直接导出类型,避免 `declare` 声明
108
- - **命名空间导出**: 对于复杂的类型结构,使用 `export namespace` 进行组织
109
- - **清晰导出**: 提供清晰的类型别名导出
110
- - **避免全局声明**: 不使用 `declare global` 模式,所有类型通过显式导入使用
50
+ ```
51
+ 应用层 (functions/ + hooks/)
52
+ 依赖注入
53
+ 环境抽象层 (references/)
54
+ 类型约束
55
+ 具体环境 (Node.js/Browser/UniApp)
56
+ ```
111
57
 
112
- **✅ 现代化的类型声明方式**:
113
- - 使用 `export` 声明直接导出类型,避免 `declare` 声明
114
- - 对于复杂的类型结构,使用 `export namespace` 进行组织
115
- - 提供清晰的类型别名导出
116
- - 避免全局声明,所有类型通过显式导入使用
58
+ ## 环境无关性实现
117
59
 
118
- ### 3. 环境依赖声明规范
60
+ ### 1. 依赖注入模式
119
61
 
120
- **✅ 正确做法 - 使用类型导入**:
121
- - 推荐使用 import type 导入环境类型
122
- - 函数通过参数接收环境依赖,保持环境无关性
123
- - 所有环境模块都通过参数传入,函数本身环境无关
124
- - 确保函数可在任意环境中运行
62
+ 所有环境相关的操作都通过参数传入:
125
63
 
126
- **说明**: `references/` 目录包含环境相关和第三方库的类型定义文件,推荐使用 `import type` 导入这些类型。这些文件使用现代化的 `export` 声明方式,避免了 `declare global` 模式的全局污染。所有类型都通过显式导入使用,确保类型安全和模块化。`types/` 目录包含可导出的公共类型定义。
64
+ ```typescript
65
+ // ❌ 错误:直接使用环境API
66
+ export function readFile(path: string) {
67
+ return fs.readFileSync(path, 'utf8') // 直接依赖Node.js
68
+ }
127
69
 
128
- **❌ 错误做法 - 任何形式的直接依赖**:
129
- - 禁止任何形式的直接导入环境模块
130
- - 禁止声明环境依赖
131
- - 禁止直接访问全局对象
70
+ // 正确:依赖注入
71
+ import type { FileSystem } from '../../references/node.d'
132
72
 
133
- ### 4. 接口功能完整性规范
73
+ export function readFile(path: string, fs: FileSystem) {
74
+ return fs.readFileSync(path, 'utf8') // 通过参数注入
75
+ }
76
+ ```
134
77
 
135
- #### 4.1 避免功能单一的接口
78
+ ### 2. 类型抽象
136
79
 
137
- **✅ 功能完整的接口设计**:
138
- - 接口应提供完整的功能,避免功能过于单一
139
- - Base64编码接口应同时包含编码和解码功能
140
- - 定时器接口应包含设置和清除功能
80
+ **references/** 目录定义环境API的抽象接口:
141
81
 
142
- **❌ 功能不完整的接口**:
143
- - 避免功能过于单一的接口设计
144
- - 不要只提供部分功能而缺少相关功能
82
+ ```typescript
83
+ // references/node.d.ts
84
+ export interface FileSystem {
85
+ readFileSync(path: string, encoding?: string): string
86
+ writeFileSync(path: string, data: any): void
87
+ existsSync(path: string): boolean
88
+ }
145
89
 
146
- #### 4.2 接口导出规范
90
+ // references/browser.d.ts
91
+ export interface Window {
92
+ localStorage: Storage
93
+ fetch: (url: string) => Promise<Response>
94
+ }
95
+ ```
147
96
 
148
- - **必须导出**: 所有定义的接口都必须正确导出,确保可以在其他地方使用
149
- - **导出一致性**: 保持导出方式的一致性
97
+ **types/** 目录定义应用层的业务类型:
150
98
 
151
- **✅ 正确的接口导出**:
152
- - 所有定义的接口都必须正确导出
153
- - 保持导出方式的一致性
154
- - 确保接口可以在其他地方使用
99
+ ```typescript
100
+ // types/color.d.ts
101
+ export interface RgbColor {
102
+ r: number
103
+ g: number
104
+ b: number
105
+ }
106
+ ```
155
107
 
156
- ### 5. Sharp 图像处理库规范
108
+ ### 3. 多环境适配
157
109
 
158
- - 使用统一的 `references/sharp.d.ts` 类型定义
159
- - Sharp 实例作为函数参数传入,不使用全局声明
160
- - 所有图像处理函数都应该接收 `sharp: Sharp` 参数
161
- - 确保 Sharp 相关接口正确导出
110
+ 同一个函数可以在不同环境中使用:
162
111
 
112
+ ```typescript
113
+ // Node.js 环境
114
+ import { convertColor } from 'shared/functions/color/convertColor'
115
+ convertColor('#ff0000', 'rgb') // 纯函数,无环境依赖
163
116
 
117
+ // 浏览器环境
118
+ import { useStorage } from 'shared/hooks/useStorage'
119
+ import { useLocalStorage } from 'shared/hooks/useLocalStorage'
120
+ const storage = useStorage(useLocalStorage(window)) // 注入浏览器API
164
121
 
165
- ## 函数设计原则
166
-
167
- ### 5. 函数设计核心原则
122
+ // UniApp 环境
123
+ import { buildProject } from 'shared/functions/android/buildProject'
124
+ buildProject(projectPath, {
125
+ fs: uni.getFileSystemManager(), // 注入UniApp API
126
+ path: uniPath,
127
+ process: uniProcess
128
+ })
129
+ ```
168
130
 
169
- #### 5.1 环境无关性与依赖注入
170
- - 所有环境依赖都必须通过参数传入,确保函数保持环境无关性
171
- - 函数不能直接导入任何环境模块(如 fs、path、sharp 等)
172
- - 仅通过 TypeScript 引用声明环境类型,实例通过参数传入
173
- - 函数可在任意环境中运行,更容易测试、维护和跨环境复用
174
-
175
- #### 5.2 纯函数要求
176
- - `functions/` 目录下的函数必须是环境无关的纯函数
177
- - 函数不能直接访问任何环境变量或全局对象
178
- - 相同的输入必须产生相同的输出,不能有副作用
179
- - 按功能模块组织函数(如 dom/、image/、debug/ 等)
180
-
181
- #### 5.3 类型安全
182
- - 所有函数参数都应该有明确的类型声明
183
- - 使用 TypeScript 的严格模式
184
- - 避免使用 `any` 类型,优先使用具体的类型定义
185
-
186
- #### 5.4 避免过度抽象
187
- - **函数复杂度要求**: 每个导出的函数都应该有足够的复杂度和独立的使用价值
188
- - **避免简单包装**: 不要为只有几行代码的简单操作创建独立函数
189
- - **内联简单逻辑**: 过于简单的逻辑应该内联到使用它们的地方,而不是单独抽取
190
- - **减少文件数量**: 避免创建大量功能单一的小文件,影响项目的可维护性
191
-
192
- **✅ 合理的函数抽象**:
193
- - 复杂的业务逻辑值得单独抽取
194
- - 组合多个相关功能的函数,内联简单的逻辑
195
- - 每个函数都应该有足够的复杂度和独立的使用价值
196
-
197
- **❌ 过度抽象的反例**:
198
- - 过于简单的函数不值得单独抽取
199
- - 只有简单操作的函数应该内联到使用它们的地方
200
- - 避免创建大量功能单一的小文件
201
-
202
- #### 5.5 函数独立价值原则
203
- - **独立使用价值**: 每个函数都应该能够独立使用,解决特定的业务问题
204
- - **避免仅内部使用**: 如果函数只被一个地方使用,考虑是否应该内联
205
- - **功能完整性**: 函数应该提供完整的功能,而不是功能片段
206
- - **复用性考虑**: 优先考虑函数的复用性和通用性
207
-
208
- #### 5.6 重构指导原则
209
- - **合并相关功能**: 将相关的简单函数合并到一个更完整的函数中
210
- - **内联简单逻辑**: 将过于简单的函数逻辑内联到调用方
211
- - **保持核心功能**: 重构时保持原有功能不变,只优化代码结构
212
- - **减少依赖关系**: 减少函数之间不必要的依赖关系
131
+ ## 包管理和导入
213
132
 
214
- ## Functions 目录规范
133
+ ### PNPM Workspace 架构
215
134
 
216
- 本目录包含项目中使用的纯函数,所有函数必须遵循以下规范:
135
+ 项目使用 PNPM Workspace 管理:
217
136
 
218
- ### 基本要求
137
+ ```json
138
+ // package.json
139
+ {
140
+ "name": "shared",
141
+ "exports": {
142
+ "./functions/color/convertColor": "./dist/functions/color/convertColor.js",
143
+ "./types/color": "./types/color.d.ts",
144
+ "./references/node": "./references/node.d.ts"
145
+ }
146
+ }
147
+ ```
219
148
 
220
- #### 1. 纯函数原则
221
- - 所有函数必须是**纯函数**
222
- - 相同的输入必须产生相同的输出
223
- - 不能有副作用(不修改外部状态、不进行 I/O 操作等)
224
- - 不依赖外部可变状态
149
+ ### 按需导入
225
150
 
226
- #### 2. 文件组织
227
- - 按照**模块进行划分文件夹**
228
- - 每个文件中**只能包含一个函数**
229
- - 文件名应该与函数名保持一致
230
- - 使用 `export` 导出函数(强制要求使用具名导出)
231
- - **❌ 严禁创建 index.ts 入口文件**:每个函数文件都需要单独打包,不允许使用统一入口文件
232
- - **❌ 子模块不要创建 README 文件**:避免文档冗余,统一在根目录的 README 中说明规范
151
+ 每个函数都可以单独导入,避免打包冗余:
233
152
 
234
- #### 3. 目录结构
235
- - 按功能模块划分子目录
236
- - 每个子目录包含相关的函数文件
237
- - 可以包含模块专用的类型定义和说明文档
238
-
239
- ### Functions 代码规范
153
+ ```typescript
154
+ // 导入单个函数
155
+ import { convertColor } from 'shared/functions/color/convertColor'
156
+ import type { RgbColor } from 'shared/types/color'
240
157
 
241
- #### 1. 导出方式
242
- **强制要求使用具名导出**:
243
- - 使用 export 关键字导出函数
244
- - 函数名应与文件名保持一致
245
- - 提供明确的参数和返回值类型
246
-
247
- **说明**: 为保持项目一致性和支持单独打包,所有函数必须使用具名导出。禁止使用默认导出。
248
-
249
- #### 2. 类型定义
250
- - **函数专用类型**:如果类型只被当前函数使用,应该在同一个文件中定义
251
- - **通用类型**:只有被多个函数或模块共享的类型,才应该放在 `types/` 目录中
252
- - 优先原则:保持函数的独立性,避免不必要的外部依赖
253
-
254
- #### 3. 文档注释
255
- 每个函数都应该包含 JSDoc 注释:
256
- - 每个函数都应该包含完整的 JSDoc 注释
257
- - 包含函数描述、参数说明和返回值描述
258
- - 使用标准的 JSDoc 格式
259
-
260
- ### Functions 注意事项
261
-
262
- 1. **避免副作用**:不要在函数中进行文件操作、网络请求、修改全局变量等
263
- 2. **保持简单**:每个函数应该职责单一,易于测试和维护
264
- 3. **类型安全**:充分利用 TypeScript 的类型系统,确保类型安全
265
- 4. **可测试性**:纯函数天然易于测试,编写函数时考虑测试场景
266
- 5. **单独打包**:每个函数文件都会被单独打包到 package.json 的 exports 字段中,因此不能使用 index.ts 等入口文件进行统一导出
267
- 6. **明确导入**:使用者需要明确导入具体的函数模块,如 `import { functionName } from 'shared/functions/module/functionName'`
268
-
269
- ### Functions 示例
270
-
271
- #### 正确示例
272
- - 文件名与函数名保持一致
273
- - 包含完整的 JSDoc 注释
274
- - 实现纯函数,无副作用
275
- - 提供明确的类型定义
276
-
277
- #### 错误示例
278
- **❌ 错误示例**:
279
- - 包含副作用的函数(文件操作、网络请求等)
280
- - 依赖外部可变状态的函数
281
- - 一个文件包含多个函数
282
- - 使用默认导出
283
- - 创建 index.ts 入口文件
284
- - 在子模块中创建 README 文件
285
-
286
- ### 6. 错误处理规范
287
-
288
- #### 6.1 错误信息格式
289
-
290
- - **英文错误信息**: 面向用户的错误信息使用英文,提供清晰的错误描述
291
- - **状态码包含**: 网络请求相关错误应包含具体的状态码信息
292
- - **上下文信息**: 错误信息应包含足够的上下文,帮助定位问题
293
-
294
- **✅ 正确的错误处理**:
295
- - 网络请求错误应包含具体的状态码信息
296
- - 参数验证错误应提供清晰的错误描述
297
- - 业务逻辑错误应包含足够的上下文信息
298
- - 使用英文错误信息,保持国际化标准
299
-
300
- **❌ 错误的错误处理**:
301
- - 错误信息过于简单,缺少上下文
302
- - 使用中文错误信息(应使用英文)
303
- - 不包含具体的错误原因
304
-
305
- #### 6.2 错误处理一致性
306
-
307
- - **Promise 错误**: 异步函数使用 `reject(new Error(...))` 抛出错误
308
- - **同步错误**: 同步函数使用 `throw new Error(...)` 抛出错误
309
- - **错误类型**: 统一使用 `Error` 类型,避免抛出字符串或其他类型
310
- - **错误传递**: 适当时保留原始错误信息,避免错误信息丢失
311
-
312
- ### 7. JSDoc 文档规范
313
-
314
- - **强制要求**: 每个导出的函数都必须包含完整的 JSDoc 注释
315
- - **禁止生成**: 不要为函数模块生成单独的 README.md 文件
316
- - **文档内容**: JSDoc 必须包含函数描述、参数说明、返回值说明和使用示例
317
- - **类型信息**: 充分利用 TypeScript 类型系统,JSDoc 中重点描述业务逻辑
318
-
319
- #### 7.1 JSDoc 格式要求
320
-
321
- - 正确导入环境类型和通用类型
322
- - 包含函数的简要描述和详细说明
323
- - 说明参数的用途和要求
324
- - 描述返回值的含义
325
- - 环境依赖通过参数注入
326
-
327
- ## 文件引用规范
328
-
329
- ### 8. 导入限制
330
-
331
- **✅ 允许的导入**:
332
- - 本包内的类型和函数(使用相对路径)
333
- - 环境相关和第三方库类型(从 `references/` 目录导入)
334
- - 通用公共类型(从 `types/` 目录导入)
335
-
336
- - 允许导入本包内的类型和函数(使用相对路径)
337
- - 环境相关和第三方库类型从 references 目录导入
338
- - 通用公共类型从 types 目录导入
339
- - 使用 import type 导入类型定义
340
-
341
- **❌ 禁止的导入和声明**:
342
- - 任何环境模块的直接导入或声明
343
- - 第三方npm包的导入
344
- - 全局变量的直接访问
345
-
346
- - 禁止导入任何环境模块
347
- - 禁止导入第三方npm包
348
- - 禁止声明环境依赖
349
- - 禁止直接访问全局变量
350
- - 禁止直接使用环境变量
351
-
352
- **✅ 唯一允许的环境依赖方式**:
353
- - 仅通过TypeScript引用声明类型
354
- - 所有环境实例通过参数传入
355
- - 函数实现保持环境无关
356
- - 确保函数可在任意环境中运行
357
-
358
- ### 8.1 相对路径
359
-
360
- - 使用相对路径引用类型定义文件
361
- - 保持路径的一致性和可维护性
362
-
363
- ## 代码质量检查清单
364
-
365
- 在提交代码前,请确保通过以下检查清单:
366
-
367
- ### TypeScript 类型检查
368
- - [ ] 所有接口都已正确导出
369
- - [ ] 环境类型定义严格分离(浏览器 vs Node.js)
370
- - [ ] 减少 `any` 类型的使用,提供具体类型定义
371
- - [ ] 导入方式保持一致(优先使用 `import type`)
372
- - [ ] 命名空间设计统一
373
- - [ ] 接口功能完整,避免过于单一的设计
374
-
375
- ### 环境无关性检查
376
- - [ ] 函数不直接导入任何环境模块
377
- - [ ] 所有环境依赖通过参数传入
378
- - [ ] 仅使用 TypeScript 引用声明环境类型
379
- - [ ] 函数可在任意环境中运行
380
-
381
- ### 错误处理检查
382
- - [ ] 错误信息使用英文,提供清晰的错误描述
383
- - [ ] 网络请求错误包含具体的状态码信息
384
- - [ ] 错误信息包含足够的上下文信息
385
- - [ ] 异步函数使用 `reject(new Error(...))` 抛出错误
386
- - [ ] 同步函数使用 `throw new Error(...)` 抛出错误
387
- - [ ] 统一使用 `Error` 类型,避免抛出其他类型
388
-
389
- ### JSDoc 文档检查
390
- - [ ] 每个导出函数都有完整的 JSDoc 注释
391
- - [ ] JSDoc 包含函数描述、参数说明、返回值说明
392
- - [ ] 没有生成单独的 README.md 文件
393
- - [ ] JSDoc 格式符合规范要求
394
-
395
- ### 代码组织检查
396
- - [ ] 按功能模块组织代码结构
397
- - [ ] 类型定义提取到合适的位置
398
- - [ ] 文件路径和引用路径正确
399
- - [ ] 避免重复的类型定义
400
- - [ ] 函数遵循单一职责原则
401
- - [ ] 每个文件只包含一个函数(functions目录下)
402
-
403
- ## 最佳实践总结
158
+ // 导入环境类型
159
+ import type { FileSystem } from 'shared/references/node'
404
160
 
405
- 1. **环境无关性**: 本库是纯TypeScript库,所有函数必须保持环境无关,可在任意环境中运行
406
- 2. **严格导入控制**: 只允许导入本包内容和TypeScript引用,禁止任何环境模块的直接导入或声明
407
- 3. **依赖注入**: 所有环境依赖通过参数传入,确保函数的环境无关性和可测试性
408
- 4. **现代化类型声明**: 使用 `export` 声明直接导出类型,避免 `declare global` 模式的全局污染
409
- 5. **类型引用规范**: 环境类型统一通过 `import type` 导入,使用 `.d` 后缀
410
- 6. **环境分离**: 严格区分浏览器和Node.js环境的类型定义,避免混合使用
411
- 7. **统一类型定义**: 重复的类型定义提取到公共文件中,保持命名空间设计的一致性
412
- 8. **类型安全**: 使用具体的类型定义,减少 `any` 的使用,提供完整的接口功能
413
- 9. **接口导出**: 确保所有可复用的接口正确导出,保持导出方式的一致性
414
- 10. **显式导入**: 所有类型都通过显式导入使用,确保类型安全和模块化
415
- 11. **模块化**: 按功能组织代码和类型定义,保持清晰的项目结构
416
- 12. **错误处理**: 使用英文错误信息,包含足够的上下文和状态码,统一使用 Error 类型
417
- 13. **JSDoc 文档**: 每个导出函数必须有完整的 JSDoc 注释,包含描述、参数、返回值和使用示例
418
- 14. **代码质量**: 遵循 TypeScript 严格模式,使用 ESLint 和 Prettier 保持代码风格一致
419
- 15. **文档化**: 重要的设计决策和规范要有文档记录,提供代码质量检查清单
420
-
421
- ## 代码组织和文档要求
422
-
423
- ### 9. 函数组织原则
424
-
425
- - 按功能模块组织函数到不同的目录(如 dom/、image/、debug/ 等)
426
- - 每个函数文件专注于单一功能领域
427
- - 保持函数的单一职责原则
428
- - 优先考虑函数的复用性和可测试性
429
-
430
- ### 9.1 文档要求
431
-
432
- - **JSDoc 优先**: 每个函数必须有完整的 JSDoc 注释,不生成单独的 README 文件
433
- - **类型安全**: 充分利用 TypeScript 类型系统提供类型信息
434
- - **文档完整性**: JSDoc 必须包含函数描述、参数说明和返回值说明
435
-
436
- ### 9.2 代码质量要求
437
-
438
- - 遵循 TypeScript 严格模式
439
- - 函数复杂度控制在合理范围内
440
- - 保持函数职责单一,易于测试和维护
441
-
442
- ## 模块组织规范
443
-
444
- ### 10. Constants 目录规范
445
-
446
- `src/constants/` 目录用于存放项目中的常量定义,包括配置项、正则表达式、映射表等。
447
-
448
- #### 10.1 常量组织原则
449
-
450
- - **功能分类**: 按功能模块组织常量文件
451
- - **命名规范**: 使用大写字母和下划线命名常量
452
- - **类型安全**: 为常量提供明确的类型定义
453
- - **导出方式**: 使用具名导出,避免默认导出
454
- - **环境无关**: 常量定义必须保持环境无关性
455
- - **不可变性**: 使用 `as const` 断言确保常量的不可变性
161
+ // 导入常量
162
+ import { COLOR_VALIDATION_PATTERNS } from 'shared/constants/colorPatterns'
456
163
 
457
- #### 10.2 文件命名规范
458
-
459
- - **描述性命名**: 文件名应清晰描述常量的用途
460
- - **驼峰命名**: 使用 camelCase 命名文件
461
- - **功能前缀**: 可使用功能模块作为文件名前缀
462
- - **避免缩写**: 使用完整的单词而非缩写
463
-
464
- #### 10.3 常量定义规范
465
-
466
- - **类型导入**: 统一从 types 目录导入相关类型定义
467
- - **JSDoc注释**: 为每个常量提供清晰的文档说明
468
- - **分组组织**: 相关常量应分组定义,使用注释分隔
469
- - **默认导出禁止**: 禁止使用默认导出,必须使用具名导出
470
- - **禁止入口文件**: 不允许创建 `index.ts` 等入口文件
471
-
472
- #### 10.4 使用规范
473
-
474
- - **集中管理**: 避免在函数文件中定义常量,统一在 constants 目录管理
475
- - **按需导入**: 从 constants 文件中按需导入所需常量
476
- - **类型一致**: 确保常量类型与使用场景的类型定义一致
477
- - **文档引用**: 在函数的 JSDoc 中适当引用相关常量的说明
164
+ // 导入Hooks
165
+ import { useStorage } from 'shared/hooks/useStorage'
166
+ ```
478
167
 
479
- ## 开发工作流程
168
+ ### Playground 集成
480
169
 
481
- ### 11. 快速开始指南
170
+ `playground` 通过 workspace 引用 `shared`:
482
171
 
483
- #### 11.1 新功能开发流程
172
+ ```json
173
+ // playground/package.json
174
+ {
175
+ "dependencies": {
176
+ "shared": "workspace:*" // 引用本地workspace
177
+ }
178
+ }
179
+ ```
484
180
 
485
- 1. **创建函数文件**: 在 `src/functions/` 对应模块目录下创建新的函数文件
486
- 2. **定义类型**: 如需要,在 `types/` 目录下定义或导入相关类型
487
- 3. **实现函数**: 遵循环境无关性原则,通过参数注入依赖
488
- 4. **编写文档**: 添加完整的 JSDoc 注释
489
- 5. **验证功能**: 在 `playground/` 中创建验证用例
490
- 6. **代码检查**: 确保符合所有编码规范
181
+ 在测试中直接导入:
491
182
 
492
- #### 11.2 常见开发场景
183
+ ```typescript
184
+ // playground/tests/convertColor.test.ts
185
+ import { convertColor } from 'shared/functions/color/convertColor'
186
+ import type { RgbColor } from 'shared/types/color'
187
+ ```
493
188
 
494
- **添加新的常量**:
495
- - 在 constants 目录下创建模块常量文件
496
- - 使用 as const 断言确保常量不可变性
497
- - 使用具名导出
189
+ ## Playground 测试指南
498
190
 
499
- **创建环境无关函数**:
500
- - 在 functions 目录下创建环境无关函数
501
- - 通过参数注入环境依赖
502
- - 包含完整的 JSDoc 注释
503
- - 提供明确的类型定义
191
+ ### 测试环境特点
504
192
 
505
- #### 11.3 代码质量检查
193
+ - **Workspace 引用**:直接使用 `shared` 包名导入
194
+ - **独立依赖**:可安装测试专用的依赖包
195
+ - **TypeScript 支持**:完整的类型检查和智能提示
196
+ - **实时测试**:修改函数后立即验证
506
197
 
507
- 开发完成后,请确保:
508
- - [ ] 函数保持环境无关性
509
- - [ ] 类型定义完整且正确
510
- - [ ] JSDoc 文档完整
511
- - [ ] 遵循命名规范
512
- - [ ] 通过 playground 验证
513
- - [ ] 符合项目架构原则
198
+ ### 测试文件结构
514
199
 
515
- ## Git Commit 规范
200
+ 每个函数都应该有对应的测试文件:
516
201
 
517
- ### 12. Commit 消息格式要求
202
+ ```
203
+ playground/tests/
204
+ ├── convertColor.test.ts # 颜色转换测试
205
+ ├── colorValidation.test.ts # 颜色验证测试
206
+ ├── extractColors.test.ts # 颜色提取测试
207
+ ├── modifyGradle.test.ts # Android构建测试
208
+ └── ...
209
+ ```
518
210
 
519
- #### 12.1 基本格式
211
+ ### 测试用例编写规范
212
+
213
+ #### 1. 基础功能测试
214
+
215
+ ```typescript
216
+ import { convertColor } from 'shared/functions/color/convertColor'
217
+ import type { ColorFormat } from 'shared/types/color'
218
+
219
+ // 基础测试用例
220
+ const testCases = [
221
+ { input: '#ff0000', target: 'rgb' as ColorFormat, expected: 'rgb(255, 0, 0)' },
222
+ { input: 'rgb(255, 0, 0)', target: 'hex' as ColorFormat, expected: '#ff0000' },
223
+ // 错误输入测试
224
+ { input: 'invalid-color', target: 'hex' as ColorFormat, expected: null },
225
+ ]
226
+
227
+ function runBasicTests() {
228
+ testCases.forEach((testCase, index) => {
229
+ const result = convertColor(testCase.input, testCase.target)
230
+ const passed = result === testCase.expected
231
+ console.log(passed ? '✅' : '❌', `测试 ${index + 1}:`, testCase.input, '->', result)
232
+ })
233
+ }
234
+ ```
520
235
 
521
- 所有 commit 消息必须遵循以下格式:
236
+ #### 2. 边界值测试
522
237
 
238
+ ```typescript
239
+ // 边界值和异常情况
240
+ const edgeCases = [
241
+ { input: '#000000', target: 'rgb', expected: 'rgb(0, 0, 0)' },
242
+ { input: '#ffffff', target: 'rgb', expected: 'rgb(255, 255, 255)' },
243
+ { input: 'rgb(300, 0, 0)', target: 'hex', expected: null }, // 超出范围
244
+ ]
523
245
  ```
524
- <type>(<scope>): <description> - <changed_files>
525
-
526
- [optional body]
527
246
 
528
- [optional footer]
247
+ #### 3. 环境依赖测试
248
+
249
+ **重要说明**:Playground测试运行在Node.js环境中,可以直接使用Node.js的原生API和第三方库。
250
+
251
+ - **Node.js环境**:可以直接使用`fs`、`path`、`crypto`等Node.js API
252
+ - **第三方库**:可以安装和导入npm包进行测试
253
+ - **类型兼容**:如遇类型不兼容,可使用`fs as any`等方式处理
254
+ - **特殊环境模拟**:只有无法在Node.js中运行的环境(如微信`wx`、浏览器特定API)才需要模拟
255
+
256
+ 对于需要特殊环境模拟的函数:
257
+
258
+ ```typescript
259
+ import { buildProject } from 'shared/functions/android/buildProject'
260
+ import type { FileSystem, Path } from 'shared/references/node'
261
+
262
+ // 模拟文件系统
263
+ const mockFs: FileSystem = {
264
+ existsSync: (path: string) => path.includes('build.gradle'),
265
+ readFileSync: (path: string) => 'mock file content',
266
+ writeFileSync: (path: string, data: any) => {},
267
+ // ... 其他方法
268
+ }
269
+
270
+ const mockPath: Path = {
271
+ join: (...paths: string[]) => paths.join('/'),
272
+ // ... 其他方法
273
+ }
274
+
275
+ function testBuildProject() {
276
+ const result = buildProject('/mock/project', {
277
+ fs: mockFs,
278
+ path: mockPath,
279
+ // ... 其他依赖
280
+ })
281
+ console.log('构建结果:', result)
282
+ }
529
283
  ```
530
284
 
531
- **必填字段**:
532
- - `type`: 变更类型(见下方类型说明)
533
- - `scope`: 影响范围(可选,但推荐)
534
- - `description`: 简短描述变更内容
535
- - `changed_files`: **必须包含所有变更的文件名**
285
+ #### 4. 类型安全测试
286
+
287
+ ```typescript
288
+ // 测试类型定义的正确性
289
+ function testTypes() {
290
+ const rgbColor: RgbColor = { r: 255, g: 0, b: 0 }
291
+ const result = convertColor(rgbColor, 'hex')
292
+
293
+ // TypeScript 应该能正确推断类型
294
+ if (result) {
295
+ console.log('转换结果:', result.toUpperCase()) // string 方法
296
+ }
297
+ }
298
+ ```
536
299
 
537
- #### 12.2 变更类型 (type)
300
+ ### 运行测试
538
301
 
539
- - **feat**: 新功能
540
- - **fix**: 修复 bug
541
- - **docs**: 文档变更
542
- - **style**: 代码格式变更(不影响功能)
543
- - **refactor**: 重构(既不是新功能也不是修复)
544
- - **test**: 测试相关变更
545
- - **chore**: 构建过程或辅助工具的变更
546
- - **perf**: 性能优化
547
- - **ci**: CI/CD 相关变更
302
+ ```bash
303
+ # 进入 playground 目录
304
+ cd playground
548
305
 
549
- #### 12.3 影响范围 (scope)
306
+ # 运行单个测试
307
+ npx tsx tests/convertColor.test.ts
550
308
 
551
- 推荐使用以下范围标识:
552
- - **functions**: 函数相关变更
553
- - **types**: 类型定义变更
554
- - **constants**: 常量定义变更
555
- - **build**: 构建配置变更
556
- - **docs**: 文档变更
557
- - **test**: 测试相关变更
309
+ # 运行所有测试
310
+ npx tsx tests/*.test.ts
311
+ ```
558
312
 
559
- #### 12.4 文件名要求
313
+ ### 测试覆盖要求
560
314
 
561
- **必须在 commit 消息中包含所有变更的文件名**,格式如下:
315
+ 每个函数的测试应该包含:
562
316
 
563
- - 单个文件:`- convertColor.ts`
564
- - 多个文件:`- convertColor.ts, convertColor.test.ts`
565
- - 新增文件:`- add: newFunction.ts`
566
- - 删除文件:`- remove: oldFunction.ts`
567
- - 重命名文件:`- rename: oldName.ts -> newName.ts`
317
+ 1. **正常输入**:典型使用场景
318
+ 2. **边界值**:最小值、最大值、临界点
319
+ 3. **异常输入**:null、undefined、错误类型
320
+ 4. **环境兼容性**:不同环境下的行为
321
+ 5. **性能测试**:大数据量或复杂场景
568
322
 
569
- #### 12.5 Commit 示例
323
+ ## 开发工作流程
570
324
 
571
- **修复示例**:
572
- ```
573
- fix(functions): 修复 includeAlpha 参数强制透明度功能 - convertColor.ts, convertColor.test.ts
325
+ ### 1. 添加新函数
574
326
 
575
- - 修复 formatHex 函数中 includeAlpha 逻辑
576
- - 更新 ColorFormatters 中 rgb 和 hsl 格式化器
577
- - 添加 includeAlpha 强制透明度测试用例
578
- ```
327
+ ```bash
328
+ # 1. 创建函数文件
329
+ src/functions/category/newFunction.ts
579
330
 
580
- **新功能示例**:
581
- ```
582
- feat(functions): 添加图像压缩功能 - add: compressImage.ts, imageTypes.ts
331
+ # 2. 定义类型(如需要)
332
+ types/category.d.ts
583
333
 
584
- - 实现基于 Sharp 的图像压缩功能
585
- - 支持 JPEG、PNG、WebP 格式
586
- - 添加压缩质量和尺寸控制选项
587
- ```
334
+ # 3. 创建测试
335
+ playground/tests/newFunction.test.ts
588
336
 
589
- **文档更新示例**:
337
+ # 4. 构建和导出
338
+ npm run build
590
339
  ```
591
- docs: 添加 commit 规范要求 - README.md
592
340
 
593
- - 添加 commit 消息格式要求
594
- - 明确文件名包含规则
595
- - 说明版本发布策略
341
+ ### 2. 函数开发模板
342
+
343
+ ```typescript
344
+ // src/functions/category/newFunction.ts
345
+ import type { SomeType } from '../../types/category.d'
346
+ import type { EnvironmentAPI } from '../../references/environment.d'
347
+
348
+ /**
349
+ * 函数描述
350
+ *
351
+ * @param input - 输入参数
352
+ * @param deps - 环境依赖
353
+ * @returns 返回值描述
354
+ */
355
+ export function newFunction(
356
+ input: SomeType,
357
+ deps: EnvironmentAPI
358
+ ): ReturnType {
359
+ // 实现逻辑
360
+ }
596
361
  ```
597
362
 
598
- ### 13. 版本发布策略
363
+ ### 3. 构建和发布
599
364
 
600
- #### 13.1 版本类型选择
365
+ ```bash
366
+ # 类型检查
367
+ npx tsc --noEmit
601
368
 
602
- 根据变更类型选择合适的版本发布命令:
369
+ # 构建项目
370
+ npm run build
603
371
 
604
- **Patch 版本 (x.x.X)**:
605
- - **使用场景**: 修复 bug、文档更新、代码格式调整
606
- - **发布命令**: `npm run publish:patch`
607
- - **对应 commit 类型**: `fix`, `docs`, `style`, `chore`
372
+ # 发布版本
373
+ npm run publish:patch # 补丁版本
374
+ npm run publish:minor # 次要版本
375
+ npm run publish:major # 主要版本
376
+ ```
608
377
 
609
- **Minor 版本 (x.X.x)**:
610
- - **使用场景**: 新功能添加、API 扩展(向后兼容)
611
- - **发布命令**: `npm run publish:minor`
612
- - **对应 commit 类型**: `feat`, `perf`
378
+ ## 最佳实践
613
379
 
614
- **Major 版本 (X.x.x)**:
615
- - **使用场景**: 破坏性变更、API 重构
616
- - **发布命令**: `npm run publish:major`
617
- - **对应 commit 类型**: 带有 `BREAKING CHANGE` 的任何类型
380
+ ### 函数设计
618
381
 
619
- #### 13.2 发布流程
382
+ 1. **纯函数优先**:无副作用,相同输入产生相同输出
383
+ 2. **依赖注入**:环境相关API通过参数传入
384
+ 3. **类型安全**:完整的TypeScript类型定义
385
+ 4. **错误处理**:优雅处理异常情况,返回null而非抛出异常
620
386
 
621
- 1. **提交变更**: 确保 commit 消息符合规范
622
- 2. **选择版本**: 根据变更类型选择合适的版本
623
- 3. **执行发布**: 运行对应的发布命令
624
- 4. **验证发布**: 确认新版本已成功发布到 npm
387
+ ### 类型定义
625
388
 
626
- #### 13.3 发布检查清单
389
+ 1. **分层设计**:业务类型放在 `types/`,环境类型放在 `references/`
390
+ 2. **接口抽象**:定义最小化的接口,只包含必要的方法
391
+ 3. **泛型支持**:提供灵活的类型参数
627
392
 
628
- 发布前请确保:
629
- - [ ] 所有测试通过
630
- - [ ] 代码符合编码规范
631
- - [ ] Commit 消息包含变更文件名
632
- - [ ] 选择了正确的版本类型
633
- - [ ] 更新了相关文档(如需要)
393
+ ### 测试要求
634
394
 
635
- #### 13.4 版本发布示例
395
+ 1. **全面覆盖**:正常、边界、异常情况
396
+ 2. **环境模拟**:使用mock对象测试环境依赖
397
+ 3. **文档化**:测试即文档,展示函数的使用方法
636
398
 
637
- **修复发布**:
638
- ```bash
639
- # 1. 提交修复
640
- git add .
641
- git commit -m "fix(functions): 修复颜色转换精度问题 - convertColor.ts, colorUtils.ts"
399
+ ### 文档规范
642
400
 
643
- # 2. 发布 patch 版本
644
- npm run publish:patch
645
- ```
401
+ 1. **JSDoc注释**:详细的函数说明和参数描述
402
+ 2. **使用示例**:在测试文件中提供实际使用案例
403
+ 3. **类型导出**:确保所有相关类型都可以导入
646
404
 
647
- **新功能发布**:
648
- ```bash
649
- # 1. 提交新功能
650
- git add .
651
- git commit -m "feat(functions): 添加图像水印功能 - add: addWatermark.ts, watermarkTypes.ts"
405
+ ---
652
406
 
653
- # 2. 发布 minor 版本
654
- npm run publish:minor
655
- ```
407
+ 通过这种架构设计,`shared` 包实现了真正的环境无关性,可以在任何 JavaScript/TypeScript 环境中使用,同时保持了良好的类型安全和开发体验。
@@ -4,7 +4,7 @@ export declare const COLOR_PATTERNS: {
4
4
  rgba: RegExp;
5
5
  hsl: RegExp;
6
6
  hsla: RegExp;
7
- namedColors: RegExp;
7
+ named: RegExp;
8
8
  };
9
9
  export declare const COLOR_VALIDATION_PATTERNS: {
10
10
  hex: RegExp;
@@ -12,5 +12,5 @@ export declare const COLOR_VALIDATION_PATTERNS: {
12
12
  rgba: RegExp;
13
13
  hsl: RegExp;
14
14
  hsla: RegExp;
15
- namedColors: RegExp;
15
+ named: RegExp;
16
16
  };
@@ -4,7 +4,7 @@ export const COLOR_PATTERNS = {
4
4
  rgba: /rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/gi,
5
5
  hsl: /hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/gi,
6
6
  hsla: /hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d.]+)\s*\)/gi,
7
- namedColors: /\b(red|green|blue|yellow|orange|purple|pink|brown|black|white|gray|grey|cyan|magenta|lime)\b/gi
7
+ named: /\b(red|green|blue|yellow|orange|purple|pink|brown|black|white|gray|grey|cyan|magenta|lime)\b/gi
8
8
  };
9
9
  export const COLOR_VALIDATION_PATTERNS = {
10
10
  hex: /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,
@@ -12,6 +12,6 @@ export const COLOR_VALIDATION_PATTERNS = {
12
12
  rgba: /^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/i,
13
13
  hsl: /^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$/i,
14
14
  hsla: /^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d.]+)\s*\)$/i,
15
- namedColors: /^(red|green|blue|yellow|orange|purple|pink|brown|black|white|gray|grey|cyan|magenta|lime)$/i
15
+ named: /^(red|green|blue|yellow|orange|purple|pink|brown|black|white|gray|grey|cyan|magenta|lime)$/i
16
16
  };
17
17
  //# sourceMappingURL=colorPatterns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colorPatterns.js","sourceRoot":"","sources":["../../src/constants/colorPatterns.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,cAAc,GAAG;IAE5B,GAAG,EAAE,mEAAmE;IAGxE,GAAG,EAAE,8CAA8C;IAGnD,IAAI,EAAE,8DAA8D;IAGpE,GAAG,EAAE,gDAAgD;IAGrD,IAAI,EAAE,gEAAgE;IAGtE,WAAW,EAAE,gGAAgG;CAC9G,CAAA;AAQD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IAEvC,GAAG,EAAE,kEAAkE;IAGvE,GAAG,EAAE,+CAA+C;IAGpD,IAAI,EAAE,+DAA+D;IAGrE,GAAG,EAAE,iDAAiD;IAGtD,IAAI,EAAE,iEAAiE;IAGvE,WAAW,EAAE,6FAA6F;CAC3G,CAAA"}
1
+ {"version":3,"file":"colorPatterns.js","sourceRoot":"","sources":["../../src/constants/colorPatterns.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,cAAc,GAAG;IAE5B,GAAG,EAAE,mEAAmE;IAGxE,GAAG,EAAE,8CAA8C;IAGnD,IAAI,EAAE,8DAA8D;IAGpE,GAAG,EAAE,gDAAgD;IAGrD,IAAI,EAAE,gEAAgE;IAGtE,KAAK,EAAE,gGAAgG;CACxG,CAAA;AAQD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IAEvC,GAAG,EAAE,kEAAkE;IAGvE,GAAG,EAAE,+CAA+C;IAGpD,IAAI,EAAE,+DAA+D;IAGrE,GAAG,EAAE,iDAAiD;IAGtD,IAAI,EAAE,iEAAiE;IAGvE,KAAK,EAAE,6FAA6F;CACrG,CAAA"}
@@ -15,7 +15,7 @@ export function detectColorFormat(color) {
15
15
  { pattern: COLOR_VALIDATION_PATTERNS.rgb, format: 'rgb' },
16
16
  { pattern: COLOR_VALIDATION_PATTERNS.hsla, format: 'hsla' },
17
17
  { pattern: COLOR_VALIDATION_PATTERNS.hsl, format: 'hsl' },
18
- { pattern: COLOR_VALIDATION_PATTERNS.namedColors, format: 'named' }
18
+ { pattern: COLOR_VALIDATION_PATTERNS.named, format: 'named' }
19
19
  ];
20
20
  for (const { pattern, format } of formatChecks) {
21
21
  if (pattern.test(trimmedColor)) {
@@ -1 +1 @@
1
- {"version":3,"file":"detectColorFormat.js","sourceRoot":"","sources":["../../../src/functions/color/detectColorFormat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detectColorFormat.js","sourceRoot":"","sources":["../../../src/functions/color/detectColorFormat.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,14 @@ export function extractColorsFromLine(line, lineNumber, filePath, validOnly = tr
19
19
  Object.entries(COLOR_PATTERNS).forEach(([format, pattern]) => {
20
20
  const matches = findMatches(line, pattern);
21
21
  matches.forEach(match => {
22
- allMatches.push({ ...match, format: format });
22
+ if (format === 'named') {
23
+ if (isValidColorContext(line, match.start, match.end)) {
24
+ allMatches.push({ ...match, format: format });
25
+ }
26
+ }
27
+ else {
28
+ allMatches.push({ ...match, format: format });
29
+ }
23
30
  });
24
31
  });
25
32
  allMatches.sort((a, b) => a.start - b.start);
@@ -59,6 +66,84 @@ function isOverlapping(match, otherMatches) {
59
66
  (match.start <= other.start && match.end >= other.end));
60
67
  });
61
68
  }
69
+ function isValidColorContext(line, start, end) {
70
+ const beforeMatch = line.substring(0, start);
71
+ const afterMatch = line.substring(end);
72
+ const colorValue = line.substring(start, end);
73
+ if (beforeMatch.includes('//') || beforeMatch.includes('/*') || beforeMatch.includes('*')) {
74
+ return false;
75
+ }
76
+ if (isPartOfIdentifier(beforeMatch, afterMatch)) {
77
+ return false;
78
+ }
79
+ if (isCssPropertyValue(beforeMatch, afterMatch)) {
80
+ return true;
81
+ }
82
+ if (isHtmlStyleAttribute(beforeMatch, afterMatch)) {
83
+ return true;
84
+ }
85
+ if (isJavaScriptStyleAssignment(beforeMatch, afterMatch)) {
86
+ return true;
87
+ }
88
+ const inString = isInStringLiteral(line, start, end);
89
+ if (inString) {
90
+ if (isLikelyCssValue(beforeMatch, afterMatch)) {
91
+ return true;
92
+ }
93
+ if (beforeMatch.match(/["']\s*$/) && afterMatch.match(/^\s*["']/)) {
94
+ return false;
95
+ }
96
+ return false;
97
+ }
98
+ return false;
99
+ }
100
+ function isInStringLiteral(line, start, end) {
101
+ const beforeMatch = line.substring(0, start);
102
+ const afterMatch = line.substring(end);
103
+ const doubleQuotesBefore = (beforeMatch.match(/"/g) || []).length;
104
+ const doubleQuotesAfter = (afterMatch.match(/"/g) || []).length;
105
+ const singleQuotesBefore = (beforeMatch.match(/'/g) || []).length;
106
+ const singleQuotesAfter = (afterMatch.match(/'/g) || []).length;
107
+ return (doubleQuotesBefore % 2 === 1) || (singleQuotesBefore % 2 === 1);
108
+ }
109
+ function isLikelyCssValue(beforeMatch, afterMatch) {
110
+ const cssPropertyPattern = /\b(color|background|border|outline|text-shadow|box-shadow|background-color|border-color)\s*:\s*["']?$/i;
111
+ if (cssPropertyPattern.test(beforeMatch)) {
112
+ return true;
113
+ }
114
+ const stylePattern = /style\s*=\s*["'][^"']*$/i;
115
+ if (stylePattern.test(beforeMatch)) {
116
+ return true;
117
+ }
118
+ return false;
119
+ }
120
+ function isPartOfIdentifier(beforeMatch, afterMatch) {
121
+ const beforeChar = beforeMatch.slice(-1);
122
+ if (/[a-zA-Z0-9_]/.test(beforeChar)) {
123
+ return true;
124
+ }
125
+ const afterChar = afterMatch.charAt(0);
126
+ if (/[a-zA-Z0-9_-]/.test(afterChar)) {
127
+ return true;
128
+ }
129
+ return false;
130
+ }
131
+ function isCssPropertyValue(beforeMatch, afterMatch) {
132
+ const cssPattern = /\b(color|background|background-color|border|border-color|outline|outline-color|text-color|text-shadow|box-shadow)\s*:\s*["']?$/i;
133
+ return cssPattern.test(beforeMatch);
134
+ }
135
+ function isHtmlStyleAttribute(beforeMatch, afterMatch) {
136
+ const stylePattern = /style\s*=\s*["'][^"']*$/i;
137
+ if (stylePattern.test(beforeMatch)) {
138
+ const cssPropertyPattern = /\b(color|background|border|outline|text-shadow|box-shadow|background-color|border-color)\s*:\s*$/i;
139
+ return cssPropertyPattern.test(beforeMatch);
140
+ }
141
+ return false;
142
+ }
143
+ function isJavaScriptStyleAssignment(beforeMatch, afterMatch) {
144
+ const jsStylePattern = /\.style\.[a-zA-Z]+\s*=\s*["']?$/;
145
+ return jsStylePattern.test(beforeMatch);
146
+ }
62
147
  function createColorReference(colorValue, format, lineNumber, filePath, context) {
63
148
  return {
64
149
  originalValue: colorValue,
@@ -1 +1 @@
1
- {"version":3,"file":"extractColors.js","sourceRoot":"","sources":["../../../src/functions/color/extractColors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractColors.js","sourceRoot":"","sources":["../../../src/functions/color/extractColors.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,7 @@ export function extractCssVariableDefinitions(text, options = {
72
72
  const lines = text.split('\n');
73
73
  lines.forEach((line, lineIndex) => {
74
74
  if (options.includeCss !== false) {
75
- const cssVarDefPattern = /^\s*--((?:[a-zA-Z_\u0080-\uFFFF])(?:[a-zA-Z0-9_\u0080-\uFFFF-])*)\s*:\s*([^;}]+);?/;
75
+ const cssVarDefPattern = /^\s*--((?:[a-zA-Z_\u0080-\uFFFF])(?:[a-zA-Z0-9_\u0080-\uFFFF-])*)\s*:\s*([^;]+?)\s*;?\s*$/;
76
76
  const match = cssVarDefPattern.exec(line);
77
77
  if (match) {
78
78
  const [, variableName, value] = match;
@@ -86,7 +86,7 @@ export function extractCssVariableDefinitions(text, options = {
86
86
  }
87
87
  }
88
88
  if (options.includeScss !== false) {
89
- const scssVarDefPattern = /^\s*\$([a-zA-Z_][\w-]*)\s*:\s*([^;]+);?/;
89
+ const scssVarDefPattern = /^\s*\$([a-zA-Z_][\w-]*)\s*:\s*([^;]+?)\s*;?\s*$/;
90
90
  const match = scssVarDefPattern.exec(line);
91
91
  if (match) {
92
92
  const [, variableName, value] = match;
@@ -100,7 +100,7 @@ export function extractCssVariableDefinitions(text, options = {
100
100
  }
101
101
  }
102
102
  if (options.includeLess !== false) {
103
- const lessVarDefPattern = /^\s*@([a-zA-Z_][\w-]*)\s*:\s*([^;]+);?/;
103
+ const lessVarDefPattern = /^\s*@([a-zA-Z_][\w-]*)\s*:\s*([^;]+?)\s*;?\s*$/;
104
104
  const match = lessVarDefPattern.exec(line);
105
105
  if (match) {
106
106
  const [, variableName, value] = match;
@@ -1 +1 @@
1
- {"version":3,"file":"extractCssVariables.js","sourceRoot":"","sources":["../../../src/functions/css/extractCssVariables.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAAgB,EAChB,UAII;IACF,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CAClB;IAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,SAAS,GAAkB,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAE9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAEhC,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,6CAA6C,CAAA;YACnE,IAAI,KAAK,CAAA;YACT,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAA;gBAEvC,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS,GAAG,CAAC;oBACnB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;iBACrB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,sBAAsB,CAAA;YAC7C,IAAI,KAAK,CAAA;YACT,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAA;gBAEvC,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,IAAI,YAAY,EAAE;oBACxB,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS,GAAG,CAAC;oBACnB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;iBACrB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,qBAAqB,CAAA;YAC5C,IAAI,KAAK,CAAA;YACT,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAA;gBAGvC,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAA;gBAC1H,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAClD,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,IAAI,YAAY,EAAE;wBACxB,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,SAAS,GAAG,CAAC;wBACnB,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;qBACrB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AAClB,CAAC;AAUD,MAAM,UAAU,6BAA6B,CAC3C,IAAY,EACZ,UAII;IACF,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CAClB;IAQD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,WAAW,GAMZ,EAAE,CAAA;IAEP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAE9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAEhC,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,gBAAgB,GAAG,oFAAoF,CAAA;YAC7G,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;gBAErC,WAAW,CAAC,IAAI,CAAC;oBACf,YAAY,EAAE,KAAK,YAAY,EAAE;oBACjC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;oBACnB,IAAI,EAAE,SAAS,GAAG,CAAC;oBACnB,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;oBACpB,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,iBAAiB,GAAG,yCAAyC,CAAA;YACnE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;gBAErC,WAAW,CAAC,IAAI,CAAC;oBACf,YAAY,EAAE,IAAI,YAAY,EAAE;oBAChC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;oBACnB,IAAI,EAAE,SAAS,GAAG,CAAC;oBACnB,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;oBACpB,IAAI,EAAE,MAAM;iBACb,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,iBAAiB,GAAG,wCAAwC,CAAA;YAClE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;gBAGrC,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAA;gBAC1H,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAClD,WAAW,CAAC,IAAI,CAAC;wBACf,YAAY,EAAE,IAAI,YAAY,EAAE;wBAChC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;wBACnB,IAAI,EAAE,SAAS,GAAG,CAAC;wBACnB,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;wBACpB,IAAI,EAAE,MAAM;qBACb,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"extractCssVariables.js","sourceRoot":"","sources":["../../../src/functions/css/extractCssVariables.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zcw-shared",
3
- "version": "1.13.0",
3
+ "version": "1.13.2",
4
4
  "files": [
5
5
  "references",
6
6
  "dist",