template-syncer 1.0.2 → 1.1.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.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -40
  3. package/bin/syn.js +36 -72
  4. package/lib/index.d.ts +4 -111
  5. package/lib/index.d.ts.map +1 -1
  6. package/lib/index.js +14 -964
  7. package/lib/index.js.map +1 -1
  8. package/lib/package.json +15 -12
  9. package/lib/syncer.d.ts +65 -0
  10. package/lib/syncer.d.ts.map +1 -0
  11. package/lib/syncer.js +413 -0
  12. package/lib/syncer.js.map +1 -0
  13. package/lib/types.d.ts +95 -30
  14. package/lib/types.d.ts.map +1 -1
  15. package/lib/ui/index.d.ts +4 -0
  16. package/lib/ui/index.d.ts.map +1 -0
  17. package/lib/ui/index.js +11 -0
  18. package/lib/ui/index.js.map +1 -0
  19. package/lib/ui/logger.d.ts +26 -0
  20. package/lib/ui/logger.d.ts.map +1 -0
  21. package/lib/ui/logger.js +60 -0
  22. package/lib/ui/logger.js.map +1 -0
  23. package/lib/ui/prompts.d.ts +48 -0
  24. package/lib/ui/prompts.d.ts.map +1 -0
  25. package/lib/ui/prompts.js +202 -0
  26. package/lib/ui/prompts.js.map +1 -0
  27. package/lib/ui/tree.d.ts +10 -0
  28. package/lib/ui/tree.d.ts.map +1 -0
  29. package/lib/ui/tree.js +130 -0
  30. package/lib/ui/tree.js.map +1 -0
  31. package/lib/utils/categorizer.d.ts +24 -0
  32. package/lib/utils/categorizer.d.ts.map +1 -0
  33. package/lib/utils/categorizer.js +201 -0
  34. package/lib/utils/categorizer.js.map +1 -0
  35. package/lib/utils/git.d.ts +36 -0
  36. package/lib/utils/git.d.ts.map +1 -0
  37. package/lib/utils/git.js +96 -0
  38. package/lib/utils/git.js.map +1 -0
  39. package/lib/utils/index.d.ts +6 -0
  40. package/lib/utils/index.d.ts.map +1 -0
  41. package/lib/utils/index.js +14 -0
  42. package/lib/utils/index.js.map +1 -0
  43. package/lib/utils/merger.d.ts +40 -0
  44. package/lib/utils/merger.d.ts.map +1 -0
  45. package/lib/utils/merger.js +223 -0
  46. package/lib/utils/merger.js.map +1 -0
  47. package/lib/utils/platform.d.ts +44 -0
  48. package/lib/utils/platform.d.ts.map +1 -0
  49. package/lib/utils/platform.js +169 -0
  50. package/lib/utils/platform.js.map +1 -0
  51. package/lib/utils/scanner.d.ts +40 -0
  52. package/lib/utils/scanner.d.ts.map +1 -0
  53. package/lib/utils/scanner.js +221 -0
  54. package/lib/utils/scanner.js.map +1 -0
  55. package/package.json +15 -12
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Icey Wu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -2,20 +2,31 @@
2
2
 
3
3
  智能模板同步工具,让你的项目与模板仓库保持同步。
4
4
 
5
+ <a href="https://github.com/iceywu/template-syncer">
6
+ <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/iceywu/template-syncer?logo=github&color=%234d80f0&link=https%3A%2F%2Fgithub.com%2iceywu%2Ftemplate-syncer">
7
+ </a>
8
+ <a href="https://www.npmjs.com/package/template-syncer">
9
+ <img alt="npm" src="https://img.shields.io/npm/v/template-syncer?logo=npm&color=%234d80f0&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Ftemplate-syncer">
10
+ </a>
11
+ <a href="https://www.npmjs.com/package/template-syncer">
12
+ <img alt="npm" src="https://img.shields.io/npm/dw/template-syncer?logo=npm&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Ftemplate-syncer">
13
+ </a>
14
+
5
15
  ## ✨ 特性
6
16
 
7
17
  - 🚀 **智能同步** - 自动检测并同步模板更新
8
- - **自动扫描** - 智能扫描当前目录的所有可同步文件
9
- - **批量选择** - 支持全选/反选,批量处理文件
10
- - 🔍 **智能对比** - 先对比差异,再选择性更新
11
- - �📦 **智能合并** - 特别针对 `package.json` 的智能合并策略
12
- - 🔄 **差异对比** - 使用 Git diff 显示文件变更
18
+ - 🌍 **跨平台** - 完美支持 Windows/macOS/Linux
19
+ - 📦 **智能合并** - package.json 等配置文件智能合并
20
+ - 🎯 **自动分类** - 基于 glob 模式的智能文件分类
21
+ - 🔌 **可扩展** - 支持自定义分类规则和合并策略
13
22
  - 💾 **安全备份** - 操作前自动创建 Git 备份
14
- - 🎯 **两阶段确认** - 先选择文件,再选择更新项
23
+ - 🌿 **多分支** - 支持从任意分支同步
15
24
 
16
25
  ## 📦 安装
17
26
 
18
27
  ```bash
28
+ pnpm add -g template-syncer
29
+ # 或
19
30
  npm install -g template-syncer
20
31
  ```
21
32
 
@@ -24,59 +35,146 @@ npm install -g template-syncer
24
35
  ### 基本用法
25
36
 
26
37
  ```bash
27
- # 交互式同步(会询问模板仓库)
38
+ # 交互式同步
28
39
  syn
29
40
 
30
41
  # 指定模板仓库
31
- syn --repo https://github.com/antfu/vitesse-lite.git
42
+ syn -r https://github.com/user/template.git
32
43
 
33
- # 详细模式
34
- syn --verbose
35
- ```
44
+ # 指定分支
45
+ syn -r https://github.com/user/template.git -b dev
36
46
 
37
- ### 同步流程
47
+ # 详细输出
48
+ syn -v
49
+ ```
38
50
 
39
- 1. **文件扫描** - 自动扫描当前目录下的所有支持文件
40
- 2. **文件选择** - 默认全选,可以自定义选择要检查的文件
41
- 3. **差异对比** - 与模板进行对比,找出有变化的文件
42
- 4. **变更选择** - 选择要更新的文件,可以预览差异
43
- 5. **批量更新** - 一次性更新所有选中的文件
51
+ ### 运行模式
44
52
 
45
- ### 支持的文件类型
53
+ ```bash
54
+ syn # 交互式同步 (默认)
55
+ syn --init # 初始化配置
56
+ syn --batch # 批量处理模式
57
+ syn --preview # 预览差异
58
+ syn --smart # 智能推荐模式
59
+ ```
46
60
 
47
- - **配置文件**: `.json`, `.yml`, `.yaml`, `.xml`
48
- - **代码文件**: `.js`, `.ts`, `.jsx`, `.tsx`
49
- - **样式文件**: `.css`, `.scss`, `.less`
50
- - **文档文件**: `.md`, `.txt`
51
- - **配置文件**: `.gitignore`, `.npmrc`, `.eslintrc`, `.prettierrc` 等
52
- - **容器文件**: `Dockerfile`, `.dockerignore`
53
- - **构建文件**: `Makefile`, 各种配置文件
61
+ ### 配置文件
62
+
63
+ 运行 `syn --init` 创建配置文件 `.template-sync.json`:
64
+
65
+ ```json
66
+ {
67
+ "repo": "https://github.com/user/template.git",
68
+ "branch": "main",
69
+ "ignore": [".env.local"],
70
+ "rules": {
71
+ "deleteOrphans": false,
72
+ "deletePatterns": ["src/deprecated/**"],
73
+ "protectPatterns": ["src/local/**", "*.local.*"],
74
+ "autoBackup": true,
75
+ "defaultMergeStrategy": "overwrite"
76
+ },
77
+ "lastSync": "2024-01-01T00:00:00.000Z"
78
+ }
79
+ ```
54
80
 
55
- ### 初始化配置
81
+ ### 同步规则 (rules)
82
+
83
+ | 选项 | 类型 | 默认值 | 说明 |
84
+ |------|------|--------|------|
85
+ | `deleteOrphans` | boolean | `false` | 是否删除本地独有文件 |
86
+ | `deletePatterns` | string[] | `[]` | 要删除的文件模式 (glob) |
87
+ | `protectPatterns` | string[] | `[]` | 保护不被删除的文件模式 |
88
+ | `autoBackup` | boolean | `true` | 同步前自动备份 |
89
+ | `defaultMergeStrategy` | string | `"overwrite"` | 默认合并策略 |
90
+
91
+ **示例:删除本地独有的 Swift 文件**
92
+
93
+ ```json
94
+ {
95
+ "rules": {
96
+ "deleteOrphans": true,
97
+ "deletePatterns": ["**/*.swift"],
98
+ "protectPatterns": ["src/local/**"]
99
+ }
100
+ }
101
+ ```
102
+ ```
56
103
 
57
- ```bash
58
- syn --init
104
+ ## 🔧 高级用法
105
+
106
+ ### 编程式使用
107
+
108
+ ```typescript
109
+ import { TemplateSyncer } from 'template-syncer';
110
+
111
+ const syncer = new TemplateSyncer({
112
+ repo: 'https://github.com/user/template.git',
113
+ branch: 'main',
114
+ verbose: true,
115
+ // 自定义忽略模式
116
+ ignore: ['*.local', 'secrets/**'],
117
+ // 自定义分类规则
118
+ categories: [
119
+ { match: '**/custom/*.ts', category: '自定义模块', icon: '🎯', priority: 100 }
120
+ ],
121
+ // 自定义合并策略
122
+ mergers: {
123
+ 'config.json': 'smart',
124
+ 'README.md': 'skip'
125
+ },
126
+ // 同步规则
127
+ rules: {
128
+ deleteOrphans: true,
129
+ deletePatterns: ['src/deprecated/**'],
130
+ protectPatterns: ['src/local/**'],
131
+ autoBackup: true
132
+ }
133
+ });
134
+
135
+ await syncer.sync();
59
136
  ```
60
137
 
61
- ## 🧪 测试
138
+ ### 合并策略
139
+
140
+ | 策略 | 说明 |
141
+ |------|------|
142
+ | `overwrite` | 直接覆盖 (默认) |
143
+ | `skip` | 跳过不处理 |
144
+ | `smart` | 智能合并 (JSON 文件) |
145
+ | `ask` | 询问用户 |
146
+
147
+ ### 自定义分类规则
148
+
149
+ ```typescript
150
+ const syncer = new TemplateSyncer({
151
+ categories: [
152
+ // 高优先级规则
153
+ { match: '**/api/*.ts', category: 'API 模块', icon: '🔌', priority: 100 },
154
+ // 低优先级规则
155
+ { match: '**/*.ts', category: 'TypeScript', icon: '🔷', priority: 10 }
156
+ ]
157
+ });
158
+ ```
62
159
 
63
- ```bash
64
- # 创建 vitesse-lite 测试项目
65
- npm test
160
+ ## 📁 支持的文件类型
66
161
 
67
- # 然后在测试项目中修改文件,运行同步命令查看效果
68
- ```
162
+ 工具会自动识别并分类各种文件:
69
163
 
70
- - **merge** - 智能合并(主要用于 `package.json`)
71
- - **diff** - 显示差异并让用户选择是否更新
72
- - **overwrite** - 直接覆盖
164
+ - **项目配置**: package.json, Cargo.toml, go.mod 等
165
+ - **构建工具**: vite.config.*, webpack.config.* 等
166
+ - **代码质量**: .eslintrc*, .prettierrc* 等
167
+ - **框架配置**: nuxt.config.*, next.config.* 等
168
+ - **容器化**: Dockerfile, docker-compose.yml 等
169
+ - **CI/CD**: .github/workflows/*, .gitlab-ci.yml 等
170
+ - **各种编程语言**: .ts, .js, .py, .go, .rs, .java 等
73
171
 
74
172
  ## 🛡️ 安全性
75
173
 
76
174
  - **Git 备份**: 操作前自动创建 stash 备份
77
- - **交互确认**: 每个文件更改都需要用户确认
78
- - **差异显示**: 清楚展示即将进行的更改
175
+ - **交互确认**: 每次操作都需要用户确认
176
+ - **差异预览**: 可以先预览再决定是否应用
79
177
 
80
178
  ## 📄 许可证
81
179
 
82
- MIT License
180
+ [MIT License](./LICENSE)
package/bin/syn.js CHANGED
@@ -1,7 +1,7 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  const { Command } = require('commander');
4
- const { TemplateSyncer } = require('../lib/index');
4
+ const { TemplateSyncer } = require('../lib/syncer');
5
5
  const pkg = require('../package.json');
6
6
 
7
7
  const program = new Command();
@@ -10,99 +10,65 @@ program
10
10
  .name('syn')
11
11
  .description('智能模板同步工具 - 让你的项目与模板仓库保持同步')
12
12
  .version(pkg.version)
13
- .option('-r, --repo <url>', '指定模板仓库 URL')
14
- .option('-v, --verbose', '显示详细输出信息')
15
- .option('-i, --init', '初始化配置向导')
16
- .option('-b, --batch', '高级批量操作模式')
17
- .option('-p, --preview', '预览所有差异(不执行更新)')
18
- .option('-s, --smart', '智能同步模式(自动推荐)')
19
- .helpOption('-h, --help', '显示帮助信息');
13
+ .option('-r, --repo <url>', '模板仓库 URL')
14
+ .option('-b, --branch <name>', '分支名称')
15
+ .option('-v, --verbose', '详细输出')
16
+ .option('-i, --init', '初始化配置')
17
+ .option('--batch', '批量处理模式')
18
+ .option('-p, --preview', '预览差异')
19
+ .option('-s, --smart', '智能同步模式')
20
+ .helpOption('-h, --help', '显示帮助');
20
21
 
21
22
  program.addHelpText('after', `
22
23
 
23
24
  示例:
24
25
  $ syn # 交互式同步
25
26
  $ syn --init # 初始化配置
26
- $ syn --batch # 高级批量操作
27
- $ syn --preview # 预览所有差异
27
+ $ syn --batch # 批量处理模式
28
+ $ syn --preview # 预览差异
28
29
  $ syn --smart # 智能推荐模式
29
- $ syn --repo https://github.com/antfu/vitesse-lite.git
30
- $ syn --repo git@github.com:your/template.git --verbose
30
+ $ syn -r https://github.com/user/template.git
31
+ $ syn -r https://github.com/user/template.git -b dev
31
32
 
32
33
  支持的仓库格式:
33
- GitHub: https://github.com/owner/repo.git
34
- • GitLab: https://gitlab.com/owner/repo.git
35
- • Bitbucket: https://bitbucket.org/owner/repo.git
34
+ HTTPS: https://github.com/owner/repo.git
36
35
  • SSH: git@github.com:owner/repo.git
37
36
 
38
37
  功能特性:
39
38
  ✅ 智能合并 package.json
40
- 支持 Vue/React/Angular 项目
41
- 文件差异对比
42
- 交互式确认更新
39
+ 跨平台支持 (Windows/macOS/Linux)
40
+ 自动文件分类
41
+ 多分支支持
43
42
  ✅ Git 备份保护
44
- 配置文件保存
43
+ 可扩展的分类规则
45
44
 
46
45
  更多信息: https://github.com/IceyWu/template-syncer
47
46
  `);
48
47
 
49
- // 主要执行逻辑
50
48
  async function main() {
51
49
  try {
52
50
  program.parse();
53
- const options = program.opts();
51
+ const opts = program.opts();
54
52
 
55
- // 显示启动信息
56
- if (options.verbose) {
57
- console.log('🔧 启动配置:');
58
- if (options.repo) {
59
- console.log(` 模板仓库: ${options.repo}`);
60
- }
61
- console.log(` 详细模式: 已启用`);
62
- console.log('');
63
- } // 创建同步器实例
64
- const syncerOptions = {
65
- ...options,
66
- templateRepo: options.repo
67
- };
68
- const syncer = new TemplateSyncer(syncerOptions);
69
-
70
- if (options.init) {
71
- await syncer.initConfig(); } else if (options.batch) {
72
- // 高级批量操作模式
73
- try {
74
- await syncer.batchProcess();
75
- } finally {
76
- // 清理临时文件
77
- syncer.cleanup();
78
- }
79
- } else if (options.preview) {
80
- // 预览模式
81
- try {
82
- await syncer.getTemplateRepo();
83
- await syncer.cloneTemplate();
84
- const templateFiles = await syncer.scanTemplateFiles();
85
- const currentFiles = await syncer.scanCurrentFiles();
86
- const changedFiles = await syncer.compareFiles(templateFiles, currentFiles);
87
- await syncer.previewAllDifferences(changedFiles);
88
- } finally {
89
- // 清理临时文件
90
- syncer.cleanup();
91
- }
92
- } else if (options.smart) {
93
- // 智能同步模式
94
- try {
95
- await syncer.intelligentSync();
96
- } finally {
97
- // 清理临时文件
98
- syncer.cleanup();
99
- }
53
+ const syncer = new TemplateSyncer({
54
+ repo: opts.repo,
55
+ branch: opts.branch,
56
+ verbose: opts.verbose
57
+ });
58
+
59
+ if (opts.init) {
60
+ await syncer.init();
61
+ } else if (opts.batch) {
62
+ await syncer.batch();
63
+ } else if (opts.preview) {
64
+ await syncer.preview();
65
+ } else if (opts.smart) {
66
+ await syncer.smart();
100
67
  } else {
101
- // 默认交互式同步
102
68
  await syncer.sync();
103
69
  }
104
70
  } catch (error) {
105
- console.error('❌ 程序执行失败:', error.message);
71
+ console.error('❌ 执行失败:', error.message);
106
72
  if (program.opts().verbose) {
107
73
  console.error(error.stack);
108
74
  }
@@ -110,16 +76,14 @@ async function main() {
110
76
  }
111
77
  }
112
78
 
113
- // 处理未捕获的异常
114
79
  process.on('uncaughtException', (error) => {
115
80
  console.error('💥 未捕获的异常:', error.message);
116
81
  process.exit(1);
117
82
  });
118
83
 
119
- process.on('unhandledRejection', (reason, promise) => {
84
+ process.on('unhandledRejection', (reason) => {
120
85
  console.error('💥 未处理的 Promise 拒绝:', reason);
121
86
  process.exit(1);
122
87
  });
123
88
 
124
- // 启动程序
125
89
  main();
package/lib/index.d.ts CHANGED
@@ -1,112 +1,5 @@
1
- import { FileConfig, TemplateSyncerOptions, BatchResults } from './types';
2
- /**
3
- * 智能模板同步工具
4
- * 用于将项目与模板仓库保持同步
5
- */
6
- export declare class TemplateSyncer {
7
- private tempDir;
8
- private templateRepo;
9
- private configFile;
10
- private changes;
11
- private verbose;
12
- private ignorePatterns;
13
- private fileTypeConfig;
14
- private specialFiles;
15
- constructor(options?: TemplateSyncerOptions);
16
- /**
17
- * 创建 Git 备份
18
- */
19
- createBackup(): void;
20
- /**
21
- * 克隆模板仓库
22
- */
23
- cloneTemplate(): Promise<void>; /**
24
- * 获取或设置模板仓库
25
- */
26
- getTemplateRepo(): Promise<string>;
27
- /**
28
- * 测试仓库连接
29
- */
30
- testRepository(repo: string): Promise<boolean>;
31
- /**
32
- * 扫描模板文件
33
- */
34
- scanTemplateFiles(): Promise<FileConfig[]>;
35
- /**
36
- * 扫描当前项目文件
37
- */
38
- scanCurrentFiles(): Promise<FileConfig[]>;
39
- /**
40
- * 分析文件类型和特征
41
- */
42
- private analyzeFile;
43
- /**
44
- * 对比文件并生成变更列表
45
- */
46
- compareFiles(templateFiles: FileConfig[], currentFiles: FileConfig[]): Promise<FileConfig[]>;
47
- /**
48
- * 交互式选择要应用的变更
49
- */
50
- selectChangesToApply(changes: FileConfig[]): Promise<FileConfig[]>;
51
- /**
52
- * 按分类选择文件
53
- */
54
- private selectByCategory;
55
- /**
56
- * 逐一选择文件
57
- */
58
- private selectIndividually;
59
- /**
60
- * 批量更新文件
61
- */
62
- batchUpdateFiles(files: FileConfig[]): Promise<BatchResults>;
63
- /**
64
- * 更新单个文件
65
- */
66
- private updateSingleFile;
67
- /**
68
- * 智能合并 package.json
69
- */
70
- private mergePackageJson;
71
- /**
72
- * 显示操作摘要
73
- */
74
- showSummary(results: BatchResults): void;
75
- /**
76
- * 清理临时文件
77
- */
78
- cleanup(): void;
79
- /**
80
- * 加载配置文件
81
- */
82
- private loadConfig;
83
- /**
84
- * 保存配置文件
85
- */
86
- private saveConfig;
87
- /**
88
- * 主同步流程
89
- */
90
- sync(options?: TemplateSyncerOptions): Promise<void>;
91
- /**
92
- * 初始化配置向导
93
- */
94
- initConfig(): Promise<void>;
95
- /**
96
- * 批量处理模式
97
- */
98
- batchProcess(): Promise<void>;
99
- /**
100
- * 生成智能推荐
101
- */
102
- private generateRecommendations;
103
- /**
104
- * 预览所有差异
105
- */
106
- previewAllDifferences(files: FileConfig[]): Promise<void>;
107
- /**
108
- * 智能同步模式
109
- */
110
- intelligentSync(): Promise<void>;
111
- }
1
+ export { TemplateSyncer } from './syncer';
2
+ export type { FileInfo, FileChange, SyncerOptions, SyncConfig, SyncRules, CategoryRule, MergeStrategy, BatchResult, Recommendation } from './types';
3
+ export { platform, Categorizer, Merger, Git, Scanner } from './utils';
4
+ export { prompts, logger } from './ui';
112
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,UAAU,EAEV,qBAAqB,EAGrB,YAAY,EAGb,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,YAAY,CAAiC;gBAEzC,OAAO,GAAE,qBAA0B;IAwK/C;;OAEG;IACH,YAAY,IAAI,IAAI;IAYpB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,EAwBjC;;OAEA;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAiCxC;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAgChD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA8B/C;;OAEG;IACH,OAAO,CAAC,WAAW;IAyCnB;;OAEG;IACG,YAAY,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAsClG;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAuDxE;;OAEG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,kBAAkB;IAoBhC;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAgClE;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,gBAAgB;IAuC9B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAuBxC;;OAEG;IACH,OAAO,IAAI,IAAI;IAWf;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACG,IAAI,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAsE9D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgEnC;;OAEG;YACW,uBAAuB;IA6DrC;;OAEG;IACG,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC/D;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAyDvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,YAAY,EACV,QAAQ,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC"}