@talex-touch/utils 1.0.42 → 1.0.45

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 (234) hide show
  1. package/.eslintcache +1 -0
  2. package/__tests__/cloud-sync-sdk.test.ts +442 -0
  3. package/__tests__/icons/icons.test.ts +84 -0
  4. package/__tests__/plugin-sdk-lifecycle.test.ts +130 -0
  5. package/__tests__/power-sdk.test.ts +143 -0
  6. package/__tests__/preset-export-types.test.ts +108 -0
  7. package/__tests__/search/fuzzy-match.test.ts +137 -0
  8. package/__tests__/transport/port-policy.test.ts +44 -0
  9. package/__tests__/transport-domain-sdks.test.ts +152 -0
  10. package/__tests__/types/update.test.ts +67 -0
  11. package/account/account-sdk.ts +915 -0
  12. package/account/index.ts +2 -0
  13. package/account/types.ts +321 -0
  14. package/analytics/client.ts +136 -0
  15. package/analytics/index.ts +2 -0
  16. package/analytics/types.ts +156 -0
  17. package/animation/auto-resize.ts +322 -0
  18. package/animation/window-node.ts +26 -19
  19. package/auth/clerk-types.ts +12 -30
  20. package/auth/index.ts +0 -2
  21. package/auth/useAuthState.ts +6 -14
  22. package/base/index.ts +2 -0
  23. package/base/log-level.ts +105 -0
  24. package/channel/index.ts +170 -69
  25. package/cloud-sync/cloud-sync-sdk.ts +450 -0
  26. package/cloud-sync/index.ts +1 -0
  27. package/common/file-scan-utils.ts +17 -9
  28. package/common/index.ts +4 -0
  29. package/common/logger/index.ts +46 -0
  30. package/common/logger/logger-manager.ts +303 -0
  31. package/common/logger/module-logger.ts +270 -0
  32. package/common/logger/transport-logger.ts +234 -0
  33. package/common/logger/types.ts +93 -0
  34. package/common/search/gather.ts +48 -6
  35. package/common/search/index.ts +8 -0
  36. package/common/storage/constants.ts +13 -0
  37. package/common/storage/entity/app-settings.ts +245 -0
  38. package/common/storage/entity/index.ts +3 -0
  39. package/common/storage/entity/layout-atom-types.ts +147 -0
  40. package/common/storage/entity/openers.ts +1 -0
  41. package/common/storage/entity/preset-cloud-api.ts +132 -0
  42. package/common/storage/entity/preset-export-types.ts +256 -0
  43. package/common/storage/entity/shortcut-settings.ts +1 -0
  44. package/common/storage/shortcut-storage.ts +11 -0
  45. package/common/utils/clone-diagnostics.ts +105 -0
  46. package/common/utils/file.ts +16 -8
  47. package/common/utils/index.ts +6 -2
  48. package/common/utils/payload-preview.ts +173 -0
  49. package/common/utils/polling.ts +167 -13
  50. package/common/utils/safe-path.ts +103 -0
  51. package/common/utils/safe-shell.ts +115 -0
  52. package/common/utils/task-queue.ts +4 -1
  53. package/core-box/builder/tuff-builder.ts +0 -1
  54. package/core-box/index.ts +1 -1
  55. package/core-box/recommendation.ts +38 -1
  56. package/core-box/tuff/tuff-dsl.ts +32 -0
  57. package/electron/download-manager.ts +10 -7
  58. package/electron/env-tool.ts +42 -40
  59. package/electron/index.ts +0 -1
  60. package/env/index.ts +156 -0
  61. package/eslint.config.js +55 -0
  62. package/i18n/index.ts +62 -0
  63. package/i18n/locales/en.json +226 -0
  64. package/i18n/locales/zh.json +226 -0
  65. package/i18n/message-keys.ts +236 -0
  66. package/i18n/resolver.ts +181 -0
  67. package/icons/index.ts +257 -0
  68. package/icons/svg.ts +69 -0
  69. package/index.ts +9 -1
  70. package/intelligence/client.ts +72 -42
  71. package/market/constants.ts +9 -5
  72. package/market/index.ts +1 -1
  73. package/market/types.ts +19 -4
  74. package/package.json +15 -5
  75. package/permission/index.ts +143 -46
  76. package/permission/legacy.ts +26 -0
  77. package/permission/registry.ts +304 -0
  78. package/permission/types.ts +164 -0
  79. package/plugin/channel.ts +68 -39
  80. package/plugin/index.ts +80 -7
  81. package/plugin/install.ts +3 -0
  82. package/plugin/log/types.ts +22 -5
  83. package/plugin/node/logger-manager.ts +11 -3
  84. package/plugin/node/logger.ts +24 -17
  85. package/plugin/preload.ts +25 -2
  86. package/plugin/providers/index.ts +4 -4
  87. package/plugin/providers/market-client.ts +6 -3
  88. package/plugin/providers/npm-provider.ts +22 -7
  89. package/plugin/providers/tpex-provider.ts +22 -8
  90. package/plugin/sdk/box-items.ts +14 -0
  91. package/plugin/sdk/box-sdk.ts +64 -0
  92. package/plugin/sdk/channel.ts +119 -4
  93. package/plugin/sdk/clipboard.ts +26 -12
  94. package/plugin/sdk/cloud-sync.ts +113 -0
  95. package/plugin/sdk/common.ts +19 -11
  96. package/plugin/sdk/core-box.ts +6 -15
  97. package/plugin/sdk/division-box.ts +160 -65
  98. package/plugin/sdk/examples/storage-onDidChange-example.js +5 -2
  99. package/plugin/sdk/feature-sdk.ts +111 -76
  100. package/plugin/sdk/flow.ts +146 -45
  101. package/plugin/sdk/hooks/bridge.ts +13 -6
  102. package/plugin/sdk/hooks/life-cycle.ts +35 -16
  103. package/plugin/sdk/index.ts +14 -3
  104. package/plugin/sdk/intelligence.ts +87 -0
  105. package/plugin/sdk/meta/README.md +179 -0
  106. package/plugin/sdk/meta-sdk.ts +244 -0
  107. package/plugin/sdk/notification.ts +9 -0
  108. package/plugin/sdk/plugin-info.ts +64 -0
  109. package/plugin/sdk/power.ts +155 -0
  110. package/plugin/sdk/recommend.ts +21 -0
  111. package/plugin/sdk/service/index.ts +12 -8
  112. package/plugin/sdk/sqlite.ts +141 -0
  113. package/plugin/sdk/storage.ts +2 -6
  114. package/plugin/sdk/system.ts +2 -9
  115. package/plugin/sdk/temp-files.ts +41 -0
  116. package/plugin/sdk/touch-sdk.ts +18 -0
  117. package/plugin/sdk/types.ts +44 -4
  118. package/plugin/sdk/window/index.ts +12 -9
  119. package/plugin/sdk-version.ts +231 -0
  120. package/preload/renderer.ts +3 -2
  121. package/renderer/hooks/arg-mapper.ts +16 -2
  122. package/renderer/hooks/index.ts +13 -0
  123. package/renderer/hooks/initialize.ts +2 -1
  124. package/renderer/hooks/use-agent-market-sdk.ts +7 -0
  125. package/renderer/hooks/use-agent-market.ts +106 -0
  126. package/renderer/hooks/use-agents-sdk.ts +7 -0
  127. package/renderer/hooks/use-app-sdk.ts +7 -0
  128. package/renderer/hooks/use-channel.ts +33 -4
  129. package/renderer/hooks/use-download-sdk.ts +21 -0
  130. package/renderer/hooks/use-intelligence-sdk.ts +7 -0
  131. package/renderer/hooks/use-intelligence-stats.ts +290 -0
  132. package/renderer/hooks/use-intelligence.ts +55 -214
  133. package/renderer/hooks/use-market-sdk.ts +16 -0
  134. package/renderer/hooks/use-notification-sdk.ts +7 -0
  135. package/renderer/hooks/use-permission-sdk.ts +7 -0
  136. package/renderer/hooks/use-permission.ts +325 -0
  137. package/renderer/hooks/use-platform-sdk.ts +7 -0
  138. package/renderer/hooks/use-plugin-sdk.ts +16 -0
  139. package/renderer/hooks/use-settings-sdk.ts +7 -0
  140. package/renderer/hooks/use-update-sdk.ts +21 -0
  141. package/renderer/index.ts +1 -0
  142. package/renderer/ref.ts +19 -10
  143. package/renderer/shared/components/SharedPluginDetailContent.vue +84 -0
  144. package/renderer/shared/components/SharedPluginDetailHeader.vue +116 -0
  145. package/renderer/shared/components/SharedPluginDetailMetaList.vue +39 -0
  146. package/renderer/shared/components/SharedPluginDetailReadme.vue +45 -0
  147. package/renderer/shared/components/SharedPluginDetailVersions.vue +98 -0
  148. package/renderer/shared/components/index.ts +5 -0
  149. package/renderer/shared/components/shims-vue.d.ts +5 -0
  150. package/renderer/shared/index.ts +2 -0
  151. package/renderer/shared/plugin-detail.ts +62 -0
  152. package/renderer/storage/app-settings.ts +3 -1
  153. package/renderer/storage/base-storage.ts +508 -82
  154. package/renderer/storage/intelligence-storage.ts +31 -40
  155. package/renderer/storage/openers.ts +3 -1
  156. package/renderer/storage/storage-subscription.ts +126 -42
  157. package/renderer/touch-sdk/env.ts +10 -10
  158. package/renderer/touch-sdk/index.ts +114 -18
  159. package/renderer/touch-sdk/terminal.ts +24 -13
  160. package/search/feature-matcher.ts +279 -0
  161. package/search/fuzzy-match.ts +64 -34
  162. package/search/index.ts +10 -0
  163. package/search/levenshtein-utils.ts +17 -11
  164. package/transport/errors.ts +310 -0
  165. package/transport/event/builder.ts +378 -0
  166. package/transport/event/index.ts +7 -0
  167. package/transport/event/types.ts +292 -0
  168. package/transport/events/index.ts +2690 -0
  169. package/transport/events/meta-overlay.ts +79 -0
  170. package/transport/events/types/agents.ts +177 -0
  171. package/transport/events/types/app-index.ts +20 -0
  172. package/transport/events/types/app.ts +475 -0
  173. package/transport/events/types/box-item.ts +222 -0
  174. package/transport/events/types/clipboard.ts +80 -0
  175. package/transport/events/types/core-box.ts +534 -0
  176. package/transport/events/types/device-idle.ts +7 -0
  177. package/transport/events/types/division-box.ts +99 -0
  178. package/transport/events/types/download.ts +115 -0
  179. package/transport/events/types/file-index.ts +84 -0
  180. package/transport/events/types/flow.ts +149 -0
  181. package/transport/events/types/index.ts +70 -0
  182. package/transport/events/types/market.ts +39 -0
  183. package/transport/events/types/meta-overlay.ts +184 -0
  184. package/transport/events/types/notification.ts +140 -0
  185. package/transport/events/types/permission.ts +90 -0
  186. package/transport/events/types/platform.ts +8 -0
  187. package/transport/events/types/plugin.ts +631 -0
  188. package/transport/events/types/sentry.ts +20 -0
  189. package/transport/events/types/storage.ts +208 -0
  190. package/transport/events/types/transport.ts +60 -0
  191. package/transport/events/types/tray.ts +16 -0
  192. package/transport/events/types/update.ts +78 -0
  193. package/transport/index.ts +141 -0
  194. package/transport/main.ts +2 -0
  195. package/transport/prelude.ts +208 -0
  196. package/transport/sdk/constants.ts +29 -0
  197. package/transport/sdk/domains/agents-market.ts +47 -0
  198. package/transport/sdk/domains/agents.ts +62 -0
  199. package/transport/sdk/domains/app.ts +48 -0
  200. package/transport/sdk/domains/disposable.ts +35 -0
  201. package/transport/sdk/domains/download.ts +139 -0
  202. package/transport/sdk/domains/index.ts +13 -0
  203. package/transport/sdk/domains/intelligence.ts +616 -0
  204. package/transport/sdk/domains/market.ts +35 -0
  205. package/transport/sdk/domains/notification.ts +62 -0
  206. package/transport/sdk/domains/permission.ts +85 -0
  207. package/transport/sdk/domains/platform.ts +19 -0
  208. package/transport/sdk/domains/plugin.ts +144 -0
  209. package/transport/sdk/domains/settings.ts +102 -0
  210. package/transport/sdk/domains/update.ts +64 -0
  211. package/transport/sdk/index.ts +60 -0
  212. package/transport/sdk/main-transport.ts +710 -0
  213. package/transport/sdk/main.ts +9 -0
  214. package/transport/sdk/plugin-transport.ts +654 -0
  215. package/transport/sdk/port-policy.ts +38 -0
  216. package/transport/sdk/renderer-transport.ts +1165 -0
  217. package/transport/types.ts +605 -0
  218. package/types/agent.ts +399 -0
  219. package/types/cloud-sync.ts +157 -0
  220. package/types/division-box.ts +31 -31
  221. package/types/download.ts +1 -0
  222. package/types/flow.ts +63 -12
  223. package/types/icon.ts +2 -1
  224. package/types/index.ts +5 -0
  225. package/types/intelligence.ts +166 -173
  226. package/types/modules/base.ts +2 -0
  227. package/types/path-browserify.d.ts +5 -0
  228. package/types/platform.ts +12 -0
  229. package/types/startup-info.ts +32 -0
  230. package/types/touch-app-core.ts +8 -8
  231. package/types/update.ts +94 -1
  232. package/vitest.config.ts +25 -0
  233. package/auth/useClerkConfig.ts +0 -40
  234. package/auth/useClerkProvider.ts +0 -52
@@ -0,0 +1,292 @@
1
+ /**
2
+ * @fileoverview Core type definitions for TuffEvent system
3
+ * @module @talex-touch/utils/transport/event/types
4
+ */
5
+
6
+ // ============================================================================
7
+ // Brand Symbol for Type Safety
8
+ // ============================================================================
9
+
10
+ /**
11
+ * Unique symbol used for branding TuffEvent instances.
12
+ * This ensures type-level distinction from plain objects.
13
+ * @internal
14
+ */
15
+ declare const _TuffEventBrand: unique symbol
16
+
17
+ // ============================================================================
18
+ // Configuration Types
19
+ // ============================================================================
20
+
21
+ /**
22
+ * Merge strategy for batch requests.
23
+ *
24
+ * @remarks
25
+ * - `queue` - All requests are queued in order
26
+ * - `dedupe` - Duplicate payloads share a single request/response
27
+ * - `latest` - Only the latest request for a given key is kept
28
+ */
29
+ export type BatchMergeStrategy = 'queue' | 'dedupe' | 'latest'
30
+
31
+ /**
32
+ * Backpressure strategy for stream processing.
33
+ *
34
+ * @remarks
35
+ * - `drop` - Drop new data when buffer is full
36
+ * - `buffer` - Buffer data (may cause memory growth)
37
+ * - `error` - Throw error when buffer is full
38
+ */
39
+ export type StreamBackpressure = 'drop' | 'buffer' | 'error'
40
+
41
+ /**
42
+ * Configuration for batch request merging.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const config: BatchConfig = {
47
+ * enabled: true,
48
+ * windowMs: 50,
49
+ * maxSize: 20,
50
+ * mergeStrategy: 'dedupe'
51
+ * }
52
+ * ```
53
+ */
54
+ export interface BatchConfig {
55
+ /**
56
+ * Whether batch mode is enabled for this event.
57
+ * @defaultValue false
58
+ */
59
+ enabled: boolean
60
+
61
+ /**
62
+ * Time window in milliseconds to collect requests before flushing.
63
+ * @defaultValue 50
64
+ */
65
+ windowMs?: number
66
+
67
+ /**
68
+ * Maximum number of requests to batch before forcing a flush.
69
+ * @defaultValue 50
70
+ */
71
+ maxSize?: number
72
+
73
+ /**
74
+ * Strategy for merging duplicate requests.
75
+ * @defaultValue 'queue'
76
+ */
77
+ mergeStrategy?: BatchMergeStrategy
78
+ }
79
+
80
+ /**
81
+ * Configuration for stream-based communication.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * const config: StreamConfig = {
86
+ * enabled: true,
87
+ * bufferSize: 100,
88
+ * backpressure: 'buffer'
89
+ * }
90
+ * ```
91
+ */
92
+ export interface StreamConfig {
93
+ /**
94
+ * Whether stream mode is enabled for this event.
95
+ * @defaultValue false
96
+ */
97
+ enabled: boolean
98
+
99
+ /**
100
+ * Maximum number of items to buffer.
101
+ * @defaultValue 100
102
+ */
103
+ bufferSize?: number
104
+
105
+ /**
106
+ * Strategy for handling backpressure.
107
+ * @defaultValue 'buffer'
108
+ */
109
+ backpressure?: StreamBackpressure
110
+ }
111
+
112
+ /**
113
+ * Options for event definition.
114
+ */
115
+ export interface EventOptions {
116
+ /**
117
+ * Batch configuration for this event.
118
+ */
119
+ batch?: BatchConfig
120
+
121
+ /**
122
+ * Stream configuration for this event.
123
+ */
124
+ stream?: StreamConfig
125
+ }
126
+
127
+ // ============================================================================
128
+ // TuffEvent Core Interface
129
+ // ============================================================================
130
+
131
+ /**
132
+ * Type-safe event definition for TuffTransport.
133
+ *
134
+ * @remarks
135
+ * TuffEvent instances are immutable and created via the event builder.
136
+ * They encode request/response types at the type level for compile-time safety.
137
+ *
138
+ * @typeParam TRequest - Type of the request payload
139
+ * @typeParam TResponse - Type of the response payload
140
+ * @typeParam TNamespace - Event namespace (e.g., 'core-box')
141
+ * @typeParam TModule - Event module (e.g., 'search')
142
+ * @typeParam TAction - Event action (e.g., 'query')
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * const event: TuffEvent<{ text: string }, SearchResult[]> = defineEvent('core-box')
147
+ * .module('search')
148
+ * .event('query')
149
+ * .define()
150
+ *
151
+ * // event.toString() returns 'core-box:search:query'
152
+ * ```
153
+ */
154
+ export interface TuffEvent<
155
+ TRequest = void,
156
+ TResponse = void,
157
+ TNamespace extends string = string,
158
+ TModule extends string = string,
159
+ TAction extends string = string,
160
+ > {
161
+ /**
162
+ * Brand identifier for runtime type checking.
163
+ * @internal
164
+ */
165
+ readonly __brand: 'TuffEvent'
166
+
167
+ /**
168
+ * Event namespace (first segment of event name).
169
+ * @example 'core-box', 'storage', 'plugin'
170
+ */
171
+ readonly namespace: TNamespace
172
+
173
+ /**
174
+ * Event module (second segment of event name).
175
+ * @example 'search', 'ui', 'lifecycle'
176
+ */
177
+ readonly module: TModule
178
+
179
+ /**
180
+ * Event action (third segment of event name).
181
+ * @example 'query', 'hide', 'load'
182
+ */
183
+ readonly action: TAction
184
+
185
+ /**
186
+ * Batch configuration for this event.
187
+ * @internal
188
+ */
189
+ readonly _batch?: BatchConfig
190
+
191
+ /**
192
+ * Stream configuration for this event.
193
+ * @internal
194
+ */
195
+ readonly _stream?: StreamConfig
196
+
197
+ /**
198
+ * Type marker for request payload (compile-time only).
199
+ * @internal
200
+ */
201
+ readonly _request: TRequest
202
+
203
+ /**
204
+ * Type marker for response payload (compile-time only).
205
+ * @internal
206
+ */
207
+ readonly _response: TResponse
208
+
209
+ /**
210
+ * Converts event to its string representation.
211
+ * @returns Event name in format 'namespace:module:action'
212
+ */
213
+ toString: () => string
214
+
215
+ /**
216
+ * Gets the full event name.
217
+ * @returns Event name in format 'namespace:module:action'
218
+ */
219
+ toEventName: () => string
220
+ }
221
+
222
+ // ============================================================================
223
+ // Type Utilities
224
+ // ============================================================================
225
+
226
+ /**
227
+ * Extracts the request type from a TuffEvent.
228
+ *
229
+ * @typeParam E - The TuffEvent type
230
+ *
231
+ * @example
232
+ * ```typescript
233
+ * type Req = EventRequest<typeof CoreBoxEvents.search.query>
234
+ * // Req = { text: string }
235
+ * ```
236
+ */
237
+ export type EventRequest<E> = E extends TuffEvent<infer R, any, any, any, any> ? R : never
238
+
239
+ /**
240
+ * Extracts the response type from a TuffEvent.
241
+ *
242
+ * @typeParam E - The TuffEvent type
243
+ *
244
+ * @example
245
+ * ```typescript
246
+ * type Res = EventResponse<typeof CoreBoxEvents.search.query>
247
+ * // Res = TuffSearchResult
248
+ * ```
249
+ */
250
+ export type EventResponse<E> = E extends TuffEvent<any, infer R, any, any, any> ? R : never
251
+
252
+ /**
253
+ * Checks if an event is a stream event (response is AsyncIterable).
254
+ *
255
+ * @typeParam E - The TuffEvent type
256
+ */
257
+ export type IsStreamEvent<E> = E extends TuffEvent<any, AsyncIterable<any>, any, any, any>
258
+ ? true
259
+ : false
260
+
261
+ /**
262
+ * Extracts the chunk type from a stream event.
263
+ *
264
+ * @typeParam E - The TuffEvent type (must be a stream event)
265
+ *
266
+ * @example
267
+ * ```typescript
268
+ * type Chunk = StreamChunk<typeof CoreBoxEvents.search.stream>
269
+ * // Chunk = SearchResult
270
+ * ```
271
+ */
272
+ export type StreamChunk<E> = E extends TuffEvent<any, AsyncIterable<infer C>, any, any, any>
273
+ ? C
274
+ : never
275
+
276
+ /**
277
+ * Extracts the namespace from a TuffEvent.
278
+ * @internal
279
+ */
280
+ export type EventNamespace<E> = E extends TuffEvent<any, any, infer N, any, any> ? N : never
281
+
282
+ /**
283
+ * Extracts the module from a TuffEvent.
284
+ * @internal
285
+ */
286
+ export type EventModule<E> = E extends TuffEvent<any, any, any, infer M, any> ? M : never
287
+
288
+ /**
289
+ * Extracts the action from a TuffEvent.
290
+ * @internal
291
+ */
292
+ export type EventAction<E> = E extends TuffEvent<any, any, any, any, infer A> ? A : never