@talex-touch/utils 1.0.31 → 1.0.32

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 (112) hide show
  1. package/animation/window-node.ts +15 -12
  2. package/animation/window.ts +19 -15
  3. package/auth/clerk-types.ts +1 -1
  4. package/auth/index.ts +1 -1
  5. package/auth/useAuthState.ts +6 -5
  6. package/auth/useClerkConfig.ts +4 -4
  7. package/auth/useClerkProvider.ts +3 -2
  8. package/channel/index.ts +23 -22
  9. package/common/file-scan-constants.ts +137 -121
  10. package/common/file-scan-utils.ts +48 -27
  11. package/common/index.ts +3 -3
  12. package/common/search/gather.ts +1 -1
  13. package/common/search/index.ts +5 -6
  14. package/common/storage/constants.ts +3 -2
  15. package/common/storage/entity/app-settings.ts +5 -3
  16. package/common/storage/entity/shortcut-settings.ts +10 -10
  17. package/common/storage/shortcut-storage.ts +6 -4
  18. package/common/utils/file.ts +14 -6
  19. package/common/utils/index.ts +62 -52
  20. package/common/utils/polling.ts +87 -84
  21. package/common/utils/task-queue.ts +11 -10
  22. package/common/utils/time.ts +50 -47
  23. package/common/utils/timing.ts +41 -37
  24. package/core-box/builder/index.ts +1 -1
  25. package/core-box/builder/tuff-builder.ts +254 -229
  26. package/core-box/index.ts +3 -6
  27. package/core-box/preview/index.ts +1 -0
  28. package/core-box/preview/types.ts +43 -0
  29. package/core-box/tuff/index.ts +1 -1
  30. package/core-box/tuff/tuff-dsl.ts +328 -266
  31. package/electron/clipboard-helper.ts +20 -12
  32. package/electron/download-manager.ts +43 -42
  33. package/electron/env-tool.ts +19 -18
  34. package/electron/file-parsers/index.ts +2 -2
  35. package/electron/file-parsers/parsers/text-parser.ts +15 -14
  36. package/electron/file-parsers/registry.ts +9 -7
  37. package/electron/file-parsers/types.ts +4 -4
  38. package/electron/index.ts +1 -1
  39. package/eventbus/index.ts +11 -11
  40. package/index.ts +5 -4
  41. package/intelligence/client.ts +87 -0
  42. package/intelligence/index.ts +1 -0
  43. package/package.json +14 -14
  44. package/permission/index.ts +8 -8
  45. package/plugin/channel.ts +77 -68
  46. package/plugin/index.ts +96 -82
  47. package/plugin/install.ts +8 -8
  48. package/plugin/log/types.ts +5 -5
  49. package/plugin/node/index.ts +1 -1
  50. package/plugin/node/logger-manager.ts +14 -11
  51. package/plugin/node/logger.ts +8 -8
  52. package/plugin/plugin-source.ts +11 -11
  53. package/plugin/preload.ts +1 -1
  54. package/plugin/providers/registry.ts +8 -7
  55. package/plugin/providers/types.ts +6 -6
  56. package/plugin/sdk/channel.ts +20 -20
  57. package/plugin/sdk/clipboard.ts +8 -6
  58. package/plugin/sdk/common.ts +10 -6
  59. package/plugin/sdk/core-box.ts +2 -3
  60. package/plugin/sdk/division-box.ts +266 -0
  61. package/plugin/sdk/enum/bridge-event.ts +1 -1
  62. package/plugin/sdk/examples/storage-onDidChange-example.js +1 -1
  63. package/plugin/sdk/features.ts +34 -26
  64. package/plugin/sdk/hooks/bridge.ts +3 -6
  65. package/plugin/sdk/hooks/index.ts +1 -1
  66. package/plugin/sdk/hooks/life-cycle.ts +4 -10
  67. package/plugin/sdk/index.ts +8 -7
  68. package/plugin/sdk/service/index.ts +3 -3
  69. package/plugin/sdk/storage.ts +4 -4
  70. package/plugin/sdk/system.ts +1 -1
  71. package/plugin/sdk/types.ts +147 -141
  72. package/plugin/sdk/window/index.ts +8 -5
  73. package/preload/loading.ts +6 -6
  74. package/preload/renderer.ts +4 -2
  75. package/renderer/hooks/arg-mapper.ts +1 -2
  76. package/renderer/hooks/index.ts +2 -0
  77. package/renderer/hooks/initialize.ts +10 -8
  78. package/renderer/hooks/performance.ts +4 -4
  79. package/renderer/hooks/use-channel.ts +150 -0
  80. package/renderer/hooks/use-intelligence.ts +236 -0
  81. package/renderer/index.ts +6 -2
  82. package/renderer/ref.ts +32 -36
  83. package/renderer/slots.ts +29 -26
  84. package/renderer/storage/app-settings.ts +16 -6
  85. package/renderer/storage/base-storage.ts +222 -114
  86. package/renderer/storage/index.ts +3 -0
  87. package/renderer/storage/intelligence-storage.ts +215 -0
  88. package/renderer/storage/openers.ts +13 -3
  89. package/renderer/touch-sdk/env.ts +41 -41
  90. package/renderer/touch-sdk/index.ts +1 -1
  91. package/renderer/touch-sdk/terminal.ts +5 -5
  92. package/renderer/touch-sdk/utils.ts +4 -3
  93. package/search/levenshtein-utils.ts +11 -11
  94. package/search/types.ts +102 -102
  95. package/service/index.ts +11 -11
  96. package/service/protocol/index.ts +217 -14
  97. package/types/division-box.ts +248 -0
  98. package/types/download.ts +72 -34
  99. package/types/index.ts +3 -1
  100. package/types/intelligence.ts +413 -0
  101. package/types/modules/base.ts +16 -16
  102. package/types/modules/index.ts +1 -1
  103. package/types/modules/module-lifecycle.ts +21 -21
  104. package/types/modules/module-manager.ts +11 -11
  105. package/types/modules/module.ts +16 -16
  106. package/types/storage.ts +0 -1
  107. package/types/touch-app-core.ts +32 -32
  108. package/types/update.ts +79 -21
  109. package/core-box/README.md +0 -218
  110. package/core-box/builder/tuff-builder.example.ts.bak +0 -258
  111. package/core-box/run-tests.sh +0 -7
  112. package/core-box/search.ts +0 -1
@@ -1,258 +0,0 @@
1
- /**
2
- * TUFF Builder 示例文件
3
- * 展示如何使用 TuffBuilder 工具类创建和管理 TuffItem 对象
4
- */
5
-
6
- import { TuffItemBuilder, TuffFactory, TuffListBuilder, TuffUtils } from './tuff-builder';
7
- import type { TuffItem } from '../tuff/tuff-dsl';
8
-
9
- // ==================== 基本用法示例 ====================
10
-
11
- /**
12
- * 示例 1: 使用 TuffItemBuilder 创建单个项目
13
- */
14
- function createSingleItem(): TuffItem {
15
- // 使用 Builder 模式创建一个完整的 TuffItem
16
- const item = new TuffItemBuilder('doc-1')
17
- .setSource('plugin', 'file-explorer')
18
- .setTitle('文档.docx')
19
- .setDescription('Word 文档')
20
- .setIcon(TuffUtils.createIcon('📄'))
21
- .setKind('file')
22
- .addTag(TuffUtils.createTag('文档', '#4285F4'))
23
- .addTag(TuffUtils.createTag('最近', '#34A853'))
24
- .setAccessory('2023-06-15')
25
- .addAction(TuffUtils.createAction('open', 'open', '打开', true))
26
- .addAction(TuffUtils.createAction('copy', 'copy', '复制路径', false))
27
- .setMeta({
28
- file: {
29
- path: '/Users/documents/文档.docx',
30
- size: 1024 * 1024 * 2, // 2MB
31
- modified_at: '2023-06-15T10:30:00Z'
32
- }
33
- })
34
- .build();
35
-
36
- return item;
37
- }
38
-
39
- /**
40
- * 示例 2: 使用 TuffFactory 快速创建常见类型的项目
41
- */
42
- function createCommonItems(): TuffItem[] {
43
- const items: TuffItem[] = [];
44
-
45
- // 创建基本项目
46
- const basicItem = TuffFactory.createBasicItem(
47
- '基本项目',
48
- 'system',
49
- 'basic-example',
50
- 'text'
51
- );
52
- items.push(basicItem);
53
-
54
- // 创建文件项目
55
- const fileItem = TuffFactory.createFileItem(
56
- 'config.json',
57
- '/Users/config.json',
58
- 'plugin',
59
- 'settings-manager'
60
- );
61
- items.push(fileItem);
62
-
63
- // 创建文件夹项目
64
- const folderItem = TuffFactory.createFolderItem(
65
- '项目文件夹',
66
- '/Users/projects',
67
- 'plugin',
68
- 'file-explorer'
69
- );
70
- items.push(folderItem);
71
-
72
- // 创建链接项目
73
- const urlItem = TuffFactory.createUrlItem(
74
- 'Tuff 文档',
75
- 'https://example.com/tuff-docs',
76
- 'plugin',
77
- 'web-search'
78
- );
79
- items.push(urlItem);
80
-
81
- // 创建应用项目
82
- const appItem = TuffFactory.createAppItem(
83
- 'Visual Studio Code',
84
- '/Applications/Visual Studio Code.app',
85
- 'com.microsoft.VSCode',
86
- 'plugin',
87
- 'app-launcher'
88
- );
89
- items.push(appItem);
90
-
91
- // 创建命令项目
92
- const commandItem = TuffFactory.createCommandItem(
93
- '查看系统信息',
94
- 'system_profiler SPHardwareDataType',
95
- 'plugin',
96
- 'terminal'
97
- );
98
- items.push(commandItem);
99
-
100
- return items;
101
- }
102
-
103
- /**
104
- * 示例 3: 使用 TuffBatchBuilder 批量创建项目
105
- */
106
- function createBatchItems(): TuffItem[] {
107
- // 创建批量构建器,设置共享的来源信息
108
- const batchBuilder = new TuffListBuilder('plugin', 'file-explorer')
109
- .setSharedKind('file')
110
-
111
- .addSharedAction(TuffUtils.createAction('open', 'open', '打开', true));
112
-
113
- // 添加多个项目
114
- batchBuilder
115
- .addItem(builder => {
116
- builder
117
- .setTitle('文档1.docx')
118
- .setIcon(TuffUtils.createIcon('📄'))
119
- .setDescription('Word 文档')
120
- .addTag(TuffUtils.createTag('文档', '#4285F4'));
121
- })
122
- .addItem(builder => {
123
- builder
124
- .setTitle('图片.jpg')
125
- .setIcon(TuffUtils.createIcon('🖼️'))
126
- .setDescription('JPG 图片')
127
- .addTag(TuffUtils.createTag('图片', '#FBBC05'));
128
- })
129
- .addItem(builder => {
130
- builder
131
- .setTitle('表格.xlsx')
132
- .setIcon(TuffUtils.createIcon('📊'))
133
- .setDescription('Excel 表格')
134
- .addTag(TuffUtils.createTag('表格', '#34A853'));
135
- });
136
-
137
- // 批量添加简单项目
138
- batchBuilder.addItemsFromData([
139
- { name: '笔记1.txt' },
140
- { name: '笔记2.txt' },
141
- { name: '笔记3.txt' }
142
- ], (builder, item) => builder.setTitle(item.name));
143
-
144
- // 从数据对象批量创建项目
145
- const fileData = [
146
- { name: '报告.pdf', type: 'pdf', size: 1024 * 1024 * 3, modified: '2023-06-10' },
147
- { name: '演示.pptx', type: 'pptx', size: 1024 * 1024 * 5, modified: '2023-06-12' },
148
- { name: '数据.csv', type: 'csv', size: 1024 * 512, modified: '2023-06-14' }
149
- ];
150
-
151
- batchBuilder.addItemsFromData(fileData, (builder, file) => {
152
- let icon = '📄';
153
- if (file.type === 'pdf') icon = '📕';
154
- if (file.type === 'pptx') icon = '📊';
155
- if (file.type === 'csv') icon = '📈';
156
-
157
- builder
158
- .setTitle(file.name)
159
- .setIcon(TuffUtils.createIcon(icon))
160
- .setDescription(`${file.type.toUpperCase()} 文件`)
161
- .setAccessory(file.modified)
162
- .setMeta({
163
- file: {
164
- path: file.name,
165
- size: file.size,
166
- modified_at: file.modified
167
- }
168
- });
169
- });
170
-
171
- return batchBuilder.build();
172
- }
173
-
174
- /**
175
- * 示例 4: 使用 TuffUtils 处理项目列表
176
- */
177
- function processItems(items: TuffItem[]): void {
178
- // 过滤文件类型的项目
179
- const fileItems = TuffUtils.filterByKind(items, 'file');
180
- console.log(`文件项目数量: ${fileItems.length}`);
181
-
182
- // 按标题搜索项目
183
- const searchResults = TuffUtils.searchByTitle(items, '文档');
184
- console.log(`包含"文档"的项目数量: ${searchResults.length}`);
185
-
186
- // 按评分排序项目
187
- const sortedByScore = TuffUtils.sortByScore(items);
188
- console.log('按评分排序的前 3 个项目:');
189
- sortedByScore.slice(0, 3).forEach(item => {
190
- console.log(` - ${item.render.basic?.title} (评分: ${item.scoring?.final ?? 0})`);
191
- });
192
-
193
- // 按标题排序项目
194
- const sortedByTitle = TuffUtils.sortByTitle(items);
195
- console.log('按标题排序的前 3 个项目:');
196
- sortedByTitle.slice(0, 3).forEach(item => {
197
- console.log(` - ${item.render.basic?.title}`);
198
- });
199
- }
200
-
201
- /**
202
- * 示例 5: 从普通对象创建 TuffItem
203
- */
204
- function createFromObjects(): TuffItem[] {
205
- // 示例数据
206
- const data = [
207
- { name: '项目 A', description: '这是项目 A 的描述', type: 'project' },
208
- { name: '任务 B', description: '这是任务 B 的描述', type: 'task', priority: 'high' },
209
- { name: '笔记 C', description: '这是笔记 C 的内容', type: 'note', tags: ['重要', '工作'] }
210
- ];
211
-
212
- // 从对象数组创建 TuffItem 数组
213
- return TuffUtils.fromObjects(data, 'plugin', 'data-converter');
214
- }
215
-
216
- /**
217
- * 运行所有示例
218
- */
219
- function runAllExamples(): void {
220
- console.log('===== 示例 1: 使用 TuffItemBuilder 创建单个项目 =====');
221
- const singleItem = createSingleItem();
222
- console.log(JSON.stringify(singleItem, null, 2));
223
-
224
- console.log('\n===== 示例 2: 使用 TuffFactory 快速创建常见类型的项目 =====');
225
- const commonItems = createCommonItems();
226
- console.log(`创建了 ${commonItems.length} 个项目`);
227
-
228
- console.log('\n===== 示例 3: 使用 TuffBatchBuilder 批量创建项目 =====');
229
- const batchItems = createBatchItems();
230
- console.log(`批量创建了 ${batchItems.length} 个项目`);
231
-
232
- console.log('\n===== 示例 4: 使用 TuffUtils 处理项目列表 =====');
233
- // 合并所有创建的项目
234
- const allItems = [singleItem, ...commonItems, ...batchItems];
235
- processItems(allItems);
236
-
237
- console.log('\n===== 示例 5: 从普通对象创建 TuffItem =====');
238
- const objectItems = createFromObjects();
239
- console.log(`从对象创建了 ${objectItems.length} 个项目`);
240
- objectItems.forEach(item => {
241
- console.log(` - ${item.render.basic?.title}`);
242
- });
243
- }
244
-
245
- // 如果直接运行此文件,则执行所有示例
246
- if (require.main === module) {
247
- runAllExamples();
248
- }
249
-
250
- // 导出示例函数,以便其他模块可以使用
251
- export {
252
- createSingleItem,
253
- createCommonItems,
254
- createBatchItems,
255
- processItems,
256
- createFromObjects,
257
- runAllExamples
258
- };
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
-
3
- # 运行 TUFF Builder 测试
4
- # 测试文件位于 packages/test/src/core-box 目录下
5
- cd "$(dirname "$0")"
6
- cd ../../../
7
- pnpm --filter test test
@@ -1 +0,0 @@
1
- export {}