@talex-touch/utils 1.0.30 → 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.
- package/animation/window-node.ts +205 -0
- package/animation/window.ts +19 -15
- package/auth/clerk-types.ts +1 -1
- package/auth/index.ts +1 -1
- package/auth/useAuthState.ts +6 -5
- package/auth/useClerkConfig.ts +6 -6
- package/auth/useClerkProvider.ts +3 -2
- package/channel/index.ts +28 -21
- package/common/file-scan-constants.ts +137 -121
- package/common/file-scan-utils.ts +49 -25
- package/common/index.ts +3 -3
- package/common/search/gather.ts +1 -1
- package/common/search/index.ts +5 -6
- package/common/storage/constants.ts +3 -2
- package/common/storage/entity/app-settings.ts +19 -3
- package/common/storage/entity/shortcut-settings.ts +10 -10
- package/common/storage/shortcut-storage.ts +6 -4
- package/common/utils/file.ts +15 -4
- package/common/utils/index.ts +62 -52
- package/common/utils/polling.ts +114 -63
- package/common/utils/task-queue.ts +11 -10
- package/common/utils/time.ts +50 -47
- package/common/utils/timing.ts +41 -37
- package/core-box/builder/index.ts +1 -1
- package/core-box/builder/tuff-builder.ts +255 -230
- package/core-box/index.ts +3 -6
- package/core-box/preview/index.ts +1 -0
- package/core-box/preview/types.ts +43 -0
- package/core-box/tuff/index.ts +1 -1
- package/core-box/tuff/tuff-dsl.ts +419 -253
- package/electron/clipboard-helper.ts +20 -12
- package/electron/download-manager.ts +43 -42
- package/electron/env-tool.ts +19 -18
- package/electron/file-parsers/index.ts +2 -2
- package/electron/file-parsers/parsers/text-parser.ts +15 -14
- package/electron/file-parsers/registry.ts +9 -7
- package/electron/file-parsers/types.ts +4 -4
- package/electron/index.ts +1 -1
- package/eventbus/index.ts +11 -11
- package/index.ts +6 -5
- package/intelligence/client.ts +87 -0
- package/intelligence/index.ts +1 -0
- package/package.json +14 -14
- package/permission/index.ts +8 -8
- package/plugin/channel.ts +77 -68
- package/plugin/index.ts +113 -84
- package/plugin/install.ts +8 -8
- package/plugin/log/types.ts +5 -5
- package/plugin/node/index.ts +1 -1
- package/plugin/node/logger-manager.ts +14 -11
- package/plugin/node/logger.ts +8 -8
- package/plugin/plugin-source.ts +11 -11
- package/plugin/preload.ts +6 -3
- package/plugin/providers/registry.ts +8 -7
- package/plugin/providers/types.ts +6 -6
- package/plugin/sdk/channel.ts +20 -20
- package/plugin/sdk/clipboard.ts +8 -6
- package/plugin/sdk/common.ts +10 -6
- package/plugin/sdk/core-box.ts +2 -3
- package/plugin/sdk/division-box.ts +266 -0
- package/plugin/sdk/enum/bridge-event.ts +1 -1
- package/plugin/sdk/examples/storage-onDidChange-example.js +1 -1
- package/plugin/sdk/features.ts +34 -26
- package/plugin/sdk/hooks/bridge.ts +3 -6
- package/plugin/sdk/hooks/index.ts +1 -1
- package/plugin/sdk/hooks/life-cycle.ts +4 -10
- package/plugin/sdk/index.ts +9 -13
- package/plugin/sdk/service/index.ts +3 -3
- package/plugin/sdk/storage.ts +4 -4
- package/plugin/sdk/system.ts +1 -1
- package/plugin/sdk/types.ts +169 -143
- package/plugin/sdk/window/index.ts +8 -5
- package/preload/loading.ts +6 -6
- package/preload/renderer.ts +4 -2
- package/renderer/hooks/arg-mapper.ts +1 -2
- package/renderer/hooks/index.ts +2 -0
- package/renderer/hooks/initialize.ts +10 -8
- package/renderer/hooks/performance.ts +4 -4
- package/renderer/hooks/use-channel.ts +150 -0
- package/renderer/hooks/use-intelligence.ts +236 -0
- package/renderer/index.ts +6 -1
- package/renderer/ref.ts +32 -36
- package/renderer/slots.ts +29 -26
- package/renderer/storage/app-settings.ts +16 -6
- package/renderer/storage/base-storage.ts +236 -88
- package/renderer/storage/index.ts +3 -0
- package/renderer/storage/intelligence-storage.ts +215 -0
- package/renderer/storage/openers.ts +13 -3
- package/renderer/touch-sdk/env.ts +41 -41
- package/renderer/touch-sdk/index.ts +1 -1
- package/renderer/touch-sdk/terminal.ts +5 -5
- package/renderer/touch-sdk/utils.ts +4 -3
- package/search/levenshtein-utils.ts +11 -11
- package/search/types.ts +102 -103
- package/service/index.ts +11 -11
- package/service/protocol/index.ts +217 -14
- package/types/division-box.ts +248 -0
- package/types/download.ts +72 -34
- package/types/icon.ts +2 -1
- package/types/index.ts +3 -1
- package/types/intelligence.ts +413 -0
- package/types/modules/base.ts +16 -16
- package/types/modules/index.ts +1 -1
- package/types/modules/module-lifecycle.ts +21 -21
- package/types/modules/module-manager.ts +11 -11
- package/types/modules/module.ts +16 -16
- package/types/storage.ts +0 -1
- package/types/touch-app-core.ts +32 -32
- package/types/update.ts +79 -21
- package/core-box/README.md +0 -218
- package/core-box/builder/tuff-builder.example.ts.bak +0 -258
- package/core-box/run-tests.sh +0 -7
- 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
|
-
};
|
package/core-box/run-tests.sh
DELETED
package/core-box/search.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|