termcast 1.3.54 → 1.4.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.
- package/dist/action-utils.d.ts.map +1 -1
- package/dist/action-utils.js +17 -132
- package/dist/action-utils.js.map +1 -1
- package/dist/apis/cache.d.ts +8 -30
- package/dist/apis/cache.d.ts.map +1 -1
- package/dist/apis/cache.js +9 -271
- package/dist/apis/cache.js.map +1 -1
- package/dist/apis/clipboard.d.ts +4 -2
- package/dist/apis/clipboard.d.ts.map +1 -1
- package/dist/apis/clipboard.js +18 -31
- package/dist/apis/clipboard.js.map +1 -1
- package/dist/apis/environment.d.ts.map +1 -1
- package/dist/apis/environment.js +14 -49
- package/dist/apis/environment.js.map +1 -1
- package/dist/apis/localstorage.d.ts +7 -12
- package/dist/apis/localstorage.d.ts.map +1 -1
- package/dist/apis/localstorage.js +7 -184
- package/dist/apis/localstorage.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +16 -15
- package/dist/app.js.map +1 -1
- package/dist/cli.js +7 -6
- package/dist/cli.js.map +1 -1
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +13 -2
- package/dist/components/actions.js.map +1 -1
- package/dist/components/extension-preferences.d.ts.map +1 -1
- package/dist/components/extension-preferences.js +7 -8
- package/dist/components/extension-preferences.js.map +1 -1
- package/dist/components/form/file-autocomplete.js +2 -2
- package/dist/components/form/file-autocomplete.js.map +1 -1
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +242 -14
- package/dist/components/list.js.map +1 -1
- package/dist/e2e-node.d.ts.map +1 -1
- package/dist/e2e-node.js +5 -4
- package/dist/e2e-node.js.map +1 -1
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +5 -2
- package/dist/extensions/dev.js.map +1 -1
- package/dist/globals.d.ts.map +1 -1
- package/dist/globals.js +2 -1
- package/dist/globals.js.map +1 -1
- package/dist/internal/error-handler.d.ts.map +1 -1
- package/dist/internal/error-handler.js +21 -19
- package/dist/internal/error-handler.js.map +1 -1
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +41 -1
- package/dist/internal/providers.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +31 -29
- package/dist/logger.js.map +1 -1
- package/dist/platform/browser/cache.d.ts +41 -0
- package/dist/platform/browser/cache.d.ts.map +1 -0
- package/dist/platform/browser/cache.js +262 -0
- package/dist/platform/browser/cache.js.map +1 -0
- package/dist/platform/browser/localstorage.d.ts +20 -0
- package/dist/platform/browser/localstorage.d.ts.map +1 -0
- package/dist/platform/browser/localstorage.js +102 -0
- package/dist/platform/browser/localstorage.js.map +1 -0
- package/dist/platform/browser/runtime.d.ts +51 -0
- package/dist/platform/browser/runtime.d.ts.map +1 -0
- package/dist/platform/browser/runtime.js +164 -0
- package/dist/platform/browser/runtime.js.map +1 -0
- package/dist/platform/bun/sqlite.d.ts +17 -0
- package/dist/platform/bun/sqlite.d.ts.map +1 -0
- package/dist/platform/bun/sqlite.js +6 -0
- package/dist/platform/bun/sqlite.js.map +1 -0
- package/dist/platform/node/cache.d.ts +35 -0
- package/dist/platform/node/cache.d.ts.map +1 -0
- package/dist/platform/node/cache.js +269 -0
- package/dist/platform/node/cache.js.map +1 -0
- package/dist/platform/node/localstorage.d.ts +17 -0
- package/dist/platform/node/localstorage.d.ts.map +1 -0
- package/dist/platform/node/localstorage.js +186 -0
- package/dist/platform/node/localstorage.js.map +1 -0
- package/dist/platform/node/runtime.d.ts +52 -0
- package/dist/platform/node/runtime.d.ts.map +1 -0
- package/dist/platform/node/runtime.js +230 -0
- package/dist/platform/node/runtime.js.map +1 -0
- package/dist/platform/node/sqlite.d.ts +27 -0
- package/dist/platform/node/sqlite.d.ts.map +1 -0
- package/dist/platform/node/sqlite.js +21 -0
- package/dist/platform/node/sqlite.js.map +1 -0
- package/dist/state.d.ts +5 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +6 -28
- package/dist/state.js.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +17 -22
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +42 -47
- package/dist/utils.js.map +1 -1
- package/dist/vim-mode.d.ts +40 -0
- package/dist/vim-mode.d.ts.map +1 -0
- package/dist/vim-mode.js +135 -0
- package/dist/vim-mode.js.map +1 -0
- package/fonts/Inconsolata.otf +0 -0
- package/fonts/SIL Open Font License.txt +41 -0
- package/package.json +60 -8
- package/src/action-utils.tsx +27 -124
- package/src/apis/cache.test.ts +1 -1
- package/src/apis/cache.tsx +9 -373
- package/src/apis/clipboard.tsx +29 -38
- package/src/apis/environment.tsx +25 -52
- package/src/apis/localstorage.tsx +8 -214
- package/src/app.tsx +16 -15
- package/src/cli.tsx +14 -15
- package/src/compile.vitest.tsx +2 -2
- package/src/components/actions.tsx +19 -1
- package/src/components/extension-preferences.tsx +7 -8
- package/src/components/form/file-autocomplete.tsx +2 -2
- package/src/components/list.tsx +279 -14
- package/src/e2e-node.tsx +7 -7
- package/src/examples/action-shortcut.vitest.tsx +2 -2
- package/src/examples/actions-context.vitest.tsx +1 -1
- package/src/examples/bar-graph-weekly.vitest.tsx +10 -36
- package/src/examples/detail-metadata-showcase.vitest.tsx +36 -36
- package/src/examples/form-basic.vitest.tsx +21 -17
- package/src/examples/github.vitest.tsx +4 -4
- package/src/examples/graph-bar-chart.vitest.tsx +13 -11
- package/src/examples/graph-polymarket.vitest.tsx +2 -2
- package/src/examples/graph-row.vitest.tsx +66 -66
- package/src/examples/graph-styles.vitest.tsx +12 -12
- package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -48
- package/src/examples/list-detail-metadata.vitest.tsx +5 -5
- package/src/examples/list-fetch-data.vitest.tsx +3 -3
- package/src/examples/list-item-accessories.vitest.tsx +2 -2
- package/src/examples/list-loading-empty-view.vitest.tsx +1 -1
- package/src/examples/list-no-actions.vitest.tsx +2 -2
- package/src/examples/list-scrollbox.vitest.tsx +5 -5
- package/src/examples/list-spacing-mode.vitest.tsx +3 -3
- package/src/examples/list-with-detail.vitest.tsx +68 -68
- package/src/examples/list-with-dropdown.vitest.tsx +5 -5
- package/src/examples/list-with-sections.vitest.tsx +27 -27
- package/src/examples/simple-candle-chart.vitest.tsx +7 -7
- package/src/examples/simple-detail-markdown.vitest.tsx +8 -8
- package/src/examples/simple-detail-table.vitest.tsx +8 -8
- package/src/examples/simple-graph.vitest.tsx +3 -3
- package/src/examples/simple-grid.vitest.tsx +14 -14
- package/src/examples/simple-heatmap.vitest.tsx +1 -1
- package/src/examples/simple-navigation.vitest.tsx +17 -17
- package/src/examples/simple-progress-bar.vitest.tsx +1 -1
- package/src/examples/store.vitest.tsx +1 -1
- package/src/examples/swift-extension.vitest.tsx +2 -2
- package/src/examples/table-edge-cases.vitest.tsx +18 -18
- package/src/examples/toast-action.vitest.tsx +2 -2
- package/src/extensions/dev.tsx +5 -2
- package/src/extensions/dev.vitest.tsx +3 -3
- package/src/globals.ts +2 -1
- package/src/internal/error-handler.tsx +19 -21
- package/src/internal/providers.tsx +39 -0
- package/src/logger.tsx +38 -41
- package/src/platform/browser/cache.ts +327 -0
- package/src/platform/browser/localstorage.ts +119 -0
- package/src/platform/browser/runtime.ts +209 -0
- package/src/platform/bun/sqlite.ts +19 -0
- package/src/platform/node/cache.ts +372 -0
- package/src/platform/node/localstorage.ts +214 -0
- package/src/platform/node/runtime.ts +264 -0
- package/src/platform/node/sqlite.ts +43 -0
- package/src/state.tsx +17 -28
- package/src/utils/file-system.ts +17 -22
- package/src/utils.test.tsx +1 -1
- package/src/utils.tsx +56 -47
- package/src/vim-mode.tsx +153 -0
- package/src/apis/sqlite.ts +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../src/action-utils.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../src/action-utils.tsx"],"names":[],"mappings":"AAaA;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9D;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B1E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7D"}
|
package/dist/action-utils.js
CHANGED
|
@@ -1,53 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { promisify } from 'util';
|
|
1
|
+
import { platform, getEnv, copyToClipboard as platformCopy, execWithInput, execCommand, openUrl, openFile as platformOpenFile, showInFileManager, moveToTrash as platformMoveToTrash, } from '#platform/runtime';
|
|
3
2
|
import { logger } from 'termcast/src/logger';
|
|
4
|
-
const execAsync = promisify(exec);
|
|
5
|
-
const platform = process.platform;
|
|
6
|
-
/**
|
|
7
|
-
* Execute command with input (for commands like pbcopy that need stdin)
|
|
8
|
-
*/
|
|
9
|
-
function execWithInput(command, input) {
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
const child = exec(command, (error) => {
|
|
12
|
-
if (error) {
|
|
13
|
-
reject(error);
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
resolve();
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
child.stdin?.write(input);
|
|
20
|
-
child.stdin?.end();
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
3
|
/**
|
|
24
4
|
* Copy text to clipboard
|
|
25
5
|
*/
|
|
26
6
|
export async function copyToClipboard(content, concealed) {
|
|
27
7
|
const text = String(content);
|
|
28
|
-
if (
|
|
8
|
+
if (getEnv('VITEST')) {
|
|
29
9
|
logger.log(`📋 [VITEST] Skipping copy to clipboard: ${concealed ? '[CONCEALED]' : text}`);
|
|
30
10
|
return;
|
|
31
11
|
}
|
|
32
12
|
try {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
await execWithInput('pbcopy', text);
|
|
36
|
-
logger.log(`📋 Copied to clipboard: ${concealed ? '[CONCEALED]' : text}`);
|
|
37
|
-
}
|
|
38
|
-
else if (platform === 'linux') {
|
|
39
|
-
// Linux: use xclip if available
|
|
40
|
-
await execWithInput('xclip -selection clipboard', text);
|
|
41
|
-
logger.log(`📋 Copied to clipboard: ${concealed ? '[CONCEALED]' : text}`);
|
|
42
|
-
}
|
|
43
|
-
else if (platform === 'win32') {
|
|
44
|
-
// Windows: use clip
|
|
45
|
-
await execWithInput('clip', text);
|
|
46
|
-
logger.log(`📋 Copied to clipboard: ${concealed ? '[CONCEALED]' : text}`);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
logger.log(`📋 Copy to clipboard not supported on ${platform}: ${concealed ? '[CONCEALED]' : text}`);
|
|
50
|
-
}
|
|
13
|
+
await platformCopy(text);
|
|
14
|
+
logger.log(`📋 Copied to clipboard: ${concealed ? '[CONCEALED]' : text}`);
|
|
51
15
|
}
|
|
52
16
|
catch (error) {
|
|
53
17
|
logger.log(`📋 Failed to copy to clipboard: ${error}`);
|
|
@@ -58,24 +22,8 @@ export async function copyToClipboard(content, concealed) {
|
|
|
58
22
|
*/
|
|
59
23
|
export async function openInBrowser(url) {
|
|
60
24
|
try {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
await execAsync(`open "${url}"`);
|
|
64
|
-
logger.log(`🌐 Opened in browser: ${url}`);
|
|
65
|
-
}
|
|
66
|
-
else if (platform === 'linux') {
|
|
67
|
-
// Linux: use xdg-open
|
|
68
|
-
await execAsync(`xdg-open "${url}"`);
|
|
69
|
-
logger.log(`🌐 Opened in browser: ${url}`);
|
|
70
|
-
}
|
|
71
|
-
else if (platform === 'win32') {
|
|
72
|
-
// Windows: use start
|
|
73
|
-
await execAsync(`start "${url}"`);
|
|
74
|
-
logger.log(`🌐 Opened in browser: ${url}`);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
logger.log(`🌐 Opening browser not supported on ${platform}: ${url}`);
|
|
78
|
-
}
|
|
25
|
+
await openUrl(url);
|
|
26
|
+
logger.log(`🌐 Opened in browser: ${url}`);
|
|
79
27
|
}
|
|
80
28
|
catch (error) {
|
|
81
29
|
logger.log(`🌐 Failed to open browser: ${error}`);
|
|
@@ -86,30 +34,8 @@ export async function openInBrowser(url) {
|
|
|
86
34
|
*/
|
|
87
35
|
export async function openFile(target, application) {
|
|
88
36
|
try {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (application) {
|
|
92
|
-
await execAsync(`open -a "${application}" "${target}"`);
|
|
93
|
-
logger.log(`📂 Opened ${target} with ${application}`);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
await execAsync(`open "${target}"`);
|
|
97
|
-
logger.log(`📂 Opened ${target}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else if (platform === 'linux') {
|
|
101
|
-
// Linux: use xdg-open (doesn't support specific application)
|
|
102
|
-
await execAsync(`xdg-open "${target}"`);
|
|
103
|
-
logger.log(`📂 Opened ${target}`);
|
|
104
|
-
}
|
|
105
|
-
else if (platform === 'win32') {
|
|
106
|
-
// Windows: use start
|
|
107
|
-
await execAsync(`start "" "${target}"`);
|
|
108
|
-
logger.log(`📂 Opened ${target}`);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
logger.log(`📂 Opening files not supported on ${platform}: ${target}`);
|
|
112
|
-
}
|
|
37
|
+
await platformOpenFile(target, application);
|
|
38
|
+
logger.log(`📂 Opened ${target}${application ? ` with ${application}` : ''}`);
|
|
113
39
|
}
|
|
114
40
|
catch (error) {
|
|
115
41
|
logger.log(`📂 Failed to open file: ${error}`);
|
|
@@ -120,7 +46,7 @@ export async function openFile(target, application) {
|
|
|
120
46
|
*/
|
|
121
47
|
export async function pasteContent(content) {
|
|
122
48
|
const text = String(content);
|
|
123
|
-
if (
|
|
49
|
+
if (getEnv('VITEST')) {
|
|
124
50
|
logger.log(`📝 [VITEST] Skipping paste: ${text}`);
|
|
125
51
|
return;
|
|
126
52
|
}
|
|
@@ -128,23 +54,21 @@ export async function pasteContent(content) {
|
|
|
128
54
|
if (platform === 'darwin') {
|
|
129
55
|
// macOS: First copy to clipboard, then simulate Cmd+V
|
|
130
56
|
await execWithInput('pbcopy', text);
|
|
131
|
-
|
|
132
|
-
await execAsync(`osascript -e 'tell application "System Events" to keystroke "v" using command down'`);
|
|
57
|
+
await execCommand(`osascript -e 'tell application "System Events" to keystroke "v" using command down'`);
|
|
133
58
|
logger.log(`📝 Pasted: ${text}`);
|
|
134
59
|
}
|
|
135
60
|
else if (platform === 'linux') {
|
|
136
|
-
// Linux: Copy to clipboard with xclip
|
|
137
61
|
await execWithInput('xclip -selection clipboard', text);
|
|
138
|
-
// Simulating paste would require xdotool or similar
|
|
139
62
|
logger.log(`📝 Copied for paste: ${text}`);
|
|
140
63
|
}
|
|
141
64
|
else if (platform === 'win32') {
|
|
142
|
-
// Windows: Copy to clipboard
|
|
143
65
|
await execWithInput('clip', text);
|
|
144
66
|
logger.log(`📝 Copied for paste: ${text}`);
|
|
145
67
|
}
|
|
146
68
|
else {
|
|
147
|
-
|
|
69
|
+
// browser or unknown — copy to clipboard
|
|
70
|
+
await platformCopy(text);
|
|
71
|
+
logger.log(`📝 Copied for paste: ${text}`);
|
|
148
72
|
}
|
|
149
73
|
}
|
|
150
74
|
catch (error) {
|
|
@@ -156,24 +80,8 @@ export async function pasteContent(content) {
|
|
|
156
80
|
*/
|
|
157
81
|
export async function showInFinder(path) {
|
|
158
82
|
try {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
await execAsync(`open -R "${path}"`);
|
|
162
|
-
logger.log(`📁 Revealed in Finder: ${path}`);
|
|
163
|
-
}
|
|
164
|
-
else if (platform === 'linux') {
|
|
165
|
-
// Linux: open containing directory
|
|
166
|
-
await execAsync(`xdg-open "$(dirname "${path}")"`);
|
|
167
|
-
logger.log(`📁 Opened containing folder: ${path}`);
|
|
168
|
-
}
|
|
169
|
-
else if (platform === 'win32') {
|
|
170
|
-
// Windows: use explorer with /select
|
|
171
|
-
await execAsync(`explorer /select,"${path}"`);
|
|
172
|
-
logger.log(`📁 Revealed in Explorer: ${path}`);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
logger.log(`📁 Show in file manager not supported on ${platform}: ${path}`);
|
|
176
|
-
}
|
|
83
|
+
await showInFileManager(path);
|
|
84
|
+
logger.log(`📁 Revealed in file manager: ${path}`);
|
|
177
85
|
}
|
|
178
86
|
catch (error) {
|
|
179
87
|
logger.log(`📁 Failed to show in file manager: ${error}`);
|
|
@@ -184,31 +92,8 @@ export async function showInFinder(path) {
|
|
|
184
92
|
*/
|
|
185
93
|
export async function moveToTrash(path) {
|
|
186
94
|
try {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
await execAsync(`osascript -e 'tell application "Finder" to delete POSIX file "${path}"'`);
|
|
190
|
-
logger.log(`🗑️ Moved to trash: ${path}`);
|
|
191
|
-
}
|
|
192
|
-
else if (platform === 'linux') {
|
|
193
|
-
// Linux: use gio trash if available, otherwise move to trash directory
|
|
194
|
-
try {
|
|
195
|
-
await execAsync(`gio trash "${path}"`);
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
// Fallback to moving to trash directory
|
|
199
|
-
const trashDir = `${process.env.HOME}/.local/share/Trash/files`;
|
|
200
|
-
await execAsync(`mkdir -p "${trashDir}" && mv "${path}" "${trashDir}/"`);
|
|
201
|
-
}
|
|
202
|
-
logger.log(`🗑️ Moved to trash: ${path}`);
|
|
203
|
-
}
|
|
204
|
-
else if (platform === 'win32') {
|
|
205
|
-
// Windows: use PowerShell to move to recycle bin
|
|
206
|
-
await execAsync(`powershell -command "Add-Type -AssemblyName Microsoft.VisualBasic; [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile('${path}','OnlyErrorDialogs','SendToRecycleBin')"`);
|
|
207
|
-
logger.log(`🗑️ Moved to recycle bin: ${path}`);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
logger.log(`🗑️ Move to trash not supported on ${platform}: ${path}`);
|
|
211
|
-
}
|
|
95
|
+
await platformMoveToTrash(path);
|
|
96
|
+
logger.log(`🗑️ Moved to trash: ${path}`);
|
|
212
97
|
}
|
|
213
98
|
catch (error) {
|
|
214
99
|
logger.log(`🗑️ Failed to move to trash: ${error}`);
|
package/dist/action-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-utils.js","sourceRoot":"","sources":["../src/action-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"action-utils.js","sourceRoot":"","sources":["../src/action-utils.tsx"],"names":[],"mappings":"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"}
|
package/dist/apis/cache.d.ts
CHANGED
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
constructor(options?: Cache.Options);
|
|
10
|
-
get storageDirectory(): string;
|
|
11
|
-
get(key: string): string | undefined;
|
|
12
|
-
has(key: string): boolean;
|
|
13
|
-
get isEmpty(): boolean;
|
|
14
|
-
set(key: string, data: string): void;
|
|
15
|
-
remove(key: string): boolean;
|
|
16
|
-
clear(options?: {
|
|
17
|
-
notifySubscribers: boolean;
|
|
18
|
-
}): void;
|
|
19
|
-
subscribe(subscriber: Cache.Subscriber): Cache.Subscription;
|
|
20
|
-
private maintainCapacity;
|
|
21
|
-
private notifySubscribers;
|
|
22
|
-
}
|
|
23
|
-
export declare namespace Cache {
|
|
24
|
-
interface Options {
|
|
25
|
-
namespace?: string;
|
|
26
|
-
capacity?: number;
|
|
27
|
-
}
|
|
28
|
-
type Subscriber = (key: string | undefined, data: string | undefined) => void;
|
|
29
|
-
type Subscription = () => void;
|
|
30
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Cache API — platform-agnostic facade.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the platform-specific Cache class from #platform/cache
|
|
5
|
+
* (SQLite on Node/Bun, IndexedDB on browser) and provides the shared
|
|
6
|
+
* `withCache` higher-order function on top.
|
|
7
|
+
*/
|
|
8
|
+
export { Cache } from '#platform/cache';
|
|
31
9
|
/**
|
|
32
10
|
* Wraps an async function with caching capabilities.
|
|
33
11
|
*
|
package/dist/apis/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/apis/cache.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/apis/cache.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAmBvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACnE,EAAE,EAAE,EAAE,EACN,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAA;IACrD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GACA,EAAE,GAAG;IAAE,UAAU,EAAE,MAAM,IAAI,CAAA;CAAE,CAgEjC"}
|
package/dist/apis/cache.js
CHANGED
|
@@ -1,104 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
let logicalTimestamp = Date.now();
|
|
11
|
-
function nextTimestamp() {
|
|
12
|
-
logicalTimestamp += 1;
|
|
13
|
-
return logicalTimestamp;
|
|
14
|
-
}
|
|
15
|
-
function getCurrentDatabasePath() {
|
|
16
|
-
const { extensionPath } = useStore.getState();
|
|
17
|
-
const dbSuffix = process.env.TERMCAST_DB_SUFFIX?.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
18
|
-
const dbFileName = dbSuffix ? `data-${dbSuffix}.db` : 'data.db';
|
|
19
|
-
if (extensionPath) {
|
|
20
|
-
return path.join(extensionPath, '.termcast-bundle', dbFileName);
|
|
21
|
-
}
|
|
22
|
-
// Fallback for examples/tests that don't set extensionPath
|
|
23
|
-
return path.join(os.homedir(), '.termcast', '.termcast-bundle', dbFileName);
|
|
24
|
-
}
|
|
25
|
-
function getCurrentCacheDir(namespace) {
|
|
26
|
-
const { extensionPath } = useStore.getState();
|
|
27
|
-
const baseDir = extensionPath
|
|
28
|
-
? path.join(extensionPath, '.termcast-bundle', 'cache')
|
|
29
|
-
: path.join(os.homedir(), '.termcast', '.termcast-bundle', 'cache');
|
|
30
|
-
return namespace ? path.join(baseDir, namespace) : baseDir;
|
|
31
|
-
}
|
|
32
|
-
function getNamespace(namespace) {
|
|
33
|
-
return namespace || DEFAULT_NAMESPACE;
|
|
34
|
-
}
|
|
35
|
-
function initializeDatabaseOnce({ db, dbPath }) {
|
|
36
|
-
if (initializedDatabasePaths.has(dbPath)) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
db.exec('PRAGMA journal_mode = WAL');
|
|
40
|
-
db.exec('PRAGMA wal_autocheckpoint = 1000');
|
|
41
|
-
db.exec('PRAGMA synchronous = NORMAL');
|
|
42
|
-
db.exec(`
|
|
43
|
-
CREATE TABLE IF NOT EXISTS ${CACHE_TABLE_NAME} (
|
|
44
|
-
namespace TEXT NOT NULL,
|
|
45
|
-
key TEXT NOT NULL,
|
|
46
|
-
data TEXT NOT NULL,
|
|
47
|
-
size INTEGER NOT NULL,
|
|
48
|
-
last_accessed_at INTEGER NOT NULL,
|
|
49
|
-
updated_at INTEGER NOT NULL,
|
|
50
|
-
PRIMARY KEY(namespace, key)
|
|
51
|
-
)
|
|
52
|
-
`);
|
|
53
|
-
db.exec(`
|
|
54
|
-
CREATE INDEX IF NOT EXISTS idx_${CACHE_TABLE_NAME}_namespace_lru
|
|
55
|
-
ON ${CACHE_TABLE_NAME}(namespace, last_accessed_at)
|
|
56
|
-
`);
|
|
57
|
-
cleanupLegacyCacheTables(db);
|
|
58
|
-
initializedDatabasePaths.add(dbPath);
|
|
59
|
-
}
|
|
60
|
-
function cleanupLegacyCacheTables(db) {
|
|
61
|
-
const rows = db
|
|
62
|
-
.prepare(`SELECT name FROM sqlite_master
|
|
63
|
-
WHERE type = 'table'
|
|
64
|
-
AND (name = 'cache' OR name LIKE 'cache_%')
|
|
65
|
-
AND name != ?`)
|
|
66
|
-
.all(CACHE_TABLE_NAME);
|
|
67
|
-
if (rows.length === 0) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const tx = db.transaction(() => {
|
|
71
|
-
const upsert = db.prepare(`INSERT INTO ${CACHE_TABLE_NAME} (namespace, key, data, size, last_accessed_at, updated_at)
|
|
72
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
73
|
-
ON CONFLICT(namespace, key)
|
|
74
|
-
DO UPDATE SET
|
|
75
|
-
data = excluded.data,
|
|
76
|
-
size = excluded.size,
|
|
77
|
-
last_accessed_at = excluded.last_accessed_at,
|
|
78
|
-
updated_at = excluded.updated_at`);
|
|
79
|
-
for (const { name } of rows) {
|
|
80
|
-
const namespace = name === 'cache'
|
|
81
|
-
? DEFAULT_NAMESPACE
|
|
82
|
-
: name === 'cache_tanstack_query'
|
|
83
|
-
? 'tanstack-query'
|
|
84
|
-
: `legacy:${name.slice('cache_'.length)}`;
|
|
85
|
-
try {
|
|
86
|
-
const values = db
|
|
87
|
-
.prepare(`SELECT key, data, size, rowid FROM ${name}`)
|
|
88
|
-
.all();
|
|
89
|
-
values.forEach((entry) => {
|
|
90
|
-
const timestamp = entry.rowid;
|
|
91
|
-
upsert.run(namespace, entry.key, entry.data, entry.size, timestamp, timestamp);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Ignore invalid legacy tables and continue cleanup.
|
|
96
|
-
}
|
|
97
|
-
db.exec(`DROP TABLE IF EXISTS ${name}`);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
tx();
|
|
101
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Cache API — platform-agnostic facade.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the platform-specific Cache class from #platform/cache
|
|
5
|
+
* (SQLite on Node/Bun, IndexedDB on browser) and provides the shared
|
|
6
|
+
* `withCache` higher-order function on top.
|
|
7
|
+
*/
|
|
8
|
+
export { Cache } from '#platform/cache';
|
|
9
|
+
import { Cache } from '#platform/cache';
|
|
102
10
|
function hashString(value) {
|
|
103
11
|
let hash = 0;
|
|
104
12
|
for (let i = 0; i < value.length; i++) {
|
|
@@ -106,176 +14,6 @@ function hashString(value) {
|
|
|
106
14
|
}
|
|
107
15
|
return Math.abs(hash).toString(36);
|
|
108
16
|
}
|
|
109
|
-
export class Cache {
|
|
110
|
-
static get STORAGE_DIRECTORY_NAME() {
|
|
111
|
-
const extensionPath = useStore.getState().extensionPath;
|
|
112
|
-
return extensionPath ? 'cache' : '.termcast-cache';
|
|
113
|
-
}
|
|
114
|
-
static get DEFAULT_CAPACITY() {
|
|
115
|
-
return 10 * 1024 * 1024; // 10 MB
|
|
116
|
-
}
|
|
117
|
-
db;
|
|
118
|
-
capacity;
|
|
119
|
-
namespace;
|
|
120
|
-
subscribers = [];
|
|
121
|
-
currentSize = 0;
|
|
122
|
-
constructor(options) {
|
|
123
|
-
const sqliteLoadStart = Date.now();
|
|
124
|
-
this.capacity = options?.capacity || Cache.DEFAULT_CAPACITY;
|
|
125
|
-
this.namespace = getNamespace(options?.namespace);
|
|
126
|
-
const dbPath = getCurrentDatabasePath();
|
|
127
|
-
// Ensure parent directory exists
|
|
128
|
-
const dbDir = path.dirname(dbPath);
|
|
129
|
-
if (!fs.existsSync(dbDir)) {
|
|
130
|
-
fs.mkdirSync(dbDir, { recursive: true });
|
|
131
|
-
}
|
|
132
|
-
this.db = new Database(dbPath, {
|
|
133
|
-
create: true,
|
|
134
|
-
readwrite: true,
|
|
135
|
-
});
|
|
136
|
-
initializeDatabaseOnce({ db: this.db, dbPath });
|
|
137
|
-
// Calculate initial size
|
|
138
|
-
const row = this.db
|
|
139
|
-
.prepare(`SELECT COALESCE(SUM(size), 0) as total FROM ${CACHE_TABLE_NAME} WHERE namespace = ?`)
|
|
140
|
-
.get(this.namespace);
|
|
141
|
-
this.currentSize = row?.total || 0;
|
|
142
|
-
const sqliteLoadMs = Date.now() - sqliteLoadStart;
|
|
143
|
-
if (sqliteLoadMs > 500) {
|
|
144
|
-
logger.log(`[perf] sqlite cache init took ${sqliteLoadMs}ms (namespace=${this.namespace})`);
|
|
145
|
-
}
|
|
146
|
-
// Bind all methods to this instance
|
|
147
|
-
this.get = this.get.bind(this);
|
|
148
|
-
this.has = this.has.bind(this);
|
|
149
|
-
this.set = this.set.bind(this);
|
|
150
|
-
this.remove = this.remove.bind(this);
|
|
151
|
-
this.clear = this.clear.bind(this);
|
|
152
|
-
this.subscribe = this.subscribe.bind(this);
|
|
153
|
-
this.maintainCapacity = this.maintainCapacity.bind(this);
|
|
154
|
-
this.notifySubscribers = this.notifySubscribers.bind(this);
|
|
155
|
-
}
|
|
156
|
-
get storageDirectory() {
|
|
157
|
-
return getCurrentCacheDir(this.namespace);
|
|
158
|
-
}
|
|
159
|
-
get(key) {
|
|
160
|
-
const now = nextTimestamp();
|
|
161
|
-
const row = this.db
|
|
162
|
-
.prepare(`SELECT data, size FROM ${CACHE_TABLE_NAME} WHERE namespace = ? AND key = ?`)
|
|
163
|
-
.get(this.namespace, key);
|
|
164
|
-
if (row) {
|
|
165
|
-
this.db
|
|
166
|
-
.prepare(`UPDATE ${CACHE_TABLE_NAME} SET last_accessed_at = ? WHERE namespace = ? AND key = ?`)
|
|
167
|
-
.run(now, this.namespace, key);
|
|
168
|
-
return row.data;
|
|
169
|
-
}
|
|
170
|
-
return undefined;
|
|
171
|
-
}
|
|
172
|
-
has(key) {
|
|
173
|
-
const row = this.db
|
|
174
|
-
.prepare(`SELECT 1 FROM ${CACHE_TABLE_NAME} WHERE namespace = ? AND key = ?`)
|
|
175
|
-
.get(this.namespace, key);
|
|
176
|
-
return !!row;
|
|
177
|
-
}
|
|
178
|
-
get isEmpty() {
|
|
179
|
-
const row = this.db
|
|
180
|
-
.prepare(`SELECT COUNT(*) as count FROM ${CACHE_TABLE_NAME} WHERE namespace = ?`)
|
|
181
|
-
.get(this.namespace);
|
|
182
|
-
return row.count === 0;
|
|
183
|
-
}
|
|
184
|
-
set(key, data) {
|
|
185
|
-
const now = nextTimestamp();
|
|
186
|
-
const dataSize = Buffer.byteLength(data, 'utf8');
|
|
187
|
-
// Get existing size if any
|
|
188
|
-
const existingRow = this.db
|
|
189
|
-
.prepare(`SELECT size FROM ${CACHE_TABLE_NAME} WHERE namespace = ? AND key = ?`)
|
|
190
|
-
.get(this.namespace, key);
|
|
191
|
-
const oldSize = existingRow?.size || 0;
|
|
192
|
-
const newTotalSize = this.currentSize - oldSize + dataSize;
|
|
193
|
-
if (newTotalSize > this.capacity) {
|
|
194
|
-
this.maintainCapacity(newTotalSize - this.capacity);
|
|
195
|
-
}
|
|
196
|
-
// Insert or update the cache entry
|
|
197
|
-
this.db
|
|
198
|
-
.prepare(`INSERT INTO ${CACHE_TABLE_NAME} (namespace, key, data, size, last_accessed_at, updated_at)
|
|
199
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
200
|
-
ON CONFLICT(namespace, key)
|
|
201
|
-
DO UPDATE SET
|
|
202
|
-
data = excluded.data,
|
|
203
|
-
size = excluded.size,
|
|
204
|
-
last_accessed_at = excluded.last_accessed_at,
|
|
205
|
-
updated_at = excluded.updated_at`)
|
|
206
|
-
.run(this.namespace, key, data, dataSize, now, now);
|
|
207
|
-
this.currentSize = this.currentSize - oldSize + dataSize;
|
|
208
|
-
this.notifySubscribers(key, data);
|
|
209
|
-
}
|
|
210
|
-
remove(key) {
|
|
211
|
-
// Check if key exists and get its size
|
|
212
|
-
const row = this.db
|
|
213
|
-
.prepare(`SELECT size FROM ${CACHE_TABLE_NAME} WHERE namespace = ? AND key = ?`)
|
|
214
|
-
.get(this.namespace, key);
|
|
215
|
-
if (row) {
|
|
216
|
-
// Delete the key
|
|
217
|
-
this.db
|
|
218
|
-
.prepare(`DELETE FROM ${CACHE_TABLE_NAME} WHERE namespace = ? AND key = ?`)
|
|
219
|
-
.run(this.namespace, key);
|
|
220
|
-
this.currentSize -= row.size;
|
|
221
|
-
this.notifySubscribers(key, undefined);
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
clear(options) {
|
|
227
|
-
this.db
|
|
228
|
-
.prepare(`DELETE FROM ${CACHE_TABLE_NAME} WHERE namespace = ?`)
|
|
229
|
-
.run(this.namespace);
|
|
230
|
-
this.currentSize = 0;
|
|
231
|
-
if (options?.notifySubscribers !== false) {
|
|
232
|
-
this.notifySubscribers(undefined, undefined);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
subscribe(subscriber) {
|
|
236
|
-
this.subscribers.push(subscriber);
|
|
237
|
-
return () => {
|
|
238
|
-
const index = this.subscribers.indexOf(subscriber);
|
|
239
|
-
if (index > -1) {
|
|
240
|
-
this.subscribers.splice(index, 1);
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
maintainCapacity(bytesToFree) {
|
|
245
|
-
// Order by oldest last-access time first to evict least-recently-used rows.
|
|
246
|
-
const rows = this.db
|
|
247
|
-
.prepare(`SELECT key, size FROM ${CACHE_TABLE_NAME}
|
|
248
|
-
WHERE namespace = ?
|
|
249
|
-
ORDER BY last_accessed_at ASC`)
|
|
250
|
-
.all(this.namespace);
|
|
251
|
-
let freedBytes = 0;
|
|
252
|
-
const keysToRemove = [];
|
|
253
|
-
for (const row of rows) {
|
|
254
|
-
if (freedBytes >= bytesToFree) {
|
|
255
|
-
break;
|
|
256
|
-
}
|
|
257
|
-
keysToRemove.push(row.key);
|
|
258
|
-
freedBytes += row.size;
|
|
259
|
-
}
|
|
260
|
-
if (keysToRemove.length > 0) {
|
|
261
|
-
const placeholders = keysToRemove.map(() => '?').join(',');
|
|
262
|
-
const stmt = this.db.prepare(`DELETE FROM ${CACHE_TABLE_NAME}
|
|
263
|
-
WHERE namespace = ? AND key IN (${placeholders})`);
|
|
264
|
-
stmt.run(this.namespace, ...keysToRemove);
|
|
265
|
-
this.currentSize -= freedBytes;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
notifySubscribers(key, data) {
|
|
269
|
-
for (const subscriber of this.subscribers) {
|
|
270
|
-
try {
|
|
271
|
-
subscriber(key, data);
|
|
272
|
-
}
|
|
273
|
-
catch (error) {
|
|
274
|
-
logger.error('Cache subscriber error:', error);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
17
|
const functionCacheMap = new Map();
|
|
280
18
|
const functionCacheData = new Map();
|
|
281
19
|
/**
|
package/dist/apis/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/apis/cache.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/apis/cache.tsx"],"names":[],"mappings":"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"}
|
package/dist/apis/clipboard.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { PathLike } from 'node:fs';
|
|
2
1
|
interface ClipboardType {
|
|
3
2
|
copy: (content: string | number | Clipboard.Content, options?: Clipboard.CopyOptions) => Promise<void>;
|
|
4
3
|
clear: () => Promise<void>;
|
|
@@ -20,7 +19,10 @@ export declare namespace Clipboard {
|
|
|
20
19
|
type Content = {
|
|
21
20
|
text: string;
|
|
22
21
|
} | {
|
|
23
|
-
file:
|
|
22
|
+
file: string | {
|
|
23
|
+
href: string;
|
|
24
|
+
toString(): string;
|
|
25
|
+
};
|
|
24
26
|
} | {
|
|
25
27
|
html: string;
|
|
26
28
|
text?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/apis/clipboard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/apis/clipboard.tsx"],"names":[],"mappings":"AAkDA,UAAU,aAAa;IACrB,IAAI,EAAE,CACJ,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,OAAO,EAC5C,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACvE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACzE;AAED,eAAO,MAAM,SAAS,EAAE,aA0GvB,CAAA;AAED,yBAAiB,SAAS,CAAC;IACzB,KAAY,WAAW,GAAG;QACxB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IAED,KAAY,OAAO,GACf;QACE,IAAI,EAAE,MAAM,CAAA;KACb,GACD;QACE,IAAI,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,IAAI,MAAM,CAAA;SAAE,CAAA;KACpD,GACD;QACE,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IAEL,KAAY,WAAW,GAAG;QACxB,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF;AAED,eAAO,MAAM,mBAAmB,YA7InB,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,OAAO,YAClC,SAAS,CAAC,WAAW,KAC5B,OAAO,CAAC,IAAI,CA2I8B,CAAA;AACjD,eAAO,MAAM,cAAc,QA3IZ,OAAO,CAAC,IAAI,CA2IkB,CAAA;AAC7C,eAAO,MAAM,SAAS,YA3IH,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CA2I/B,CAAA"}
|