termcast 1.3.54 → 1.4.1

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 (170) hide show
  1. package/dist/action-utils.d.ts.map +1 -1
  2. package/dist/action-utils.js +17 -132
  3. package/dist/action-utils.js.map +1 -1
  4. package/dist/apis/cache.d.ts +8 -30
  5. package/dist/apis/cache.d.ts.map +1 -1
  6. package/dist/apis/cache.js +9 -271
  7. package/dist/apis/cache.js.map +1 -1
  8. package/dist/apis/clipboard.d.ts +4 -2
  9. package/dist/apis/clipboard.d.ts.map +1 -1
  10. package/dist/apis/clipboard.js +18 -31
  11. package/dist/apis/clipboard.js.map +1 -1
  12. package/dist/apis/environment.d.ts.map +1 -1
  13. package/dist/apis/environment.js +14 -49
  14. package/dist/apis/environment.js.map +1 -1
  15. package/dist/apis/localstorage.d.ts +7 -12
  16. package/dist/apis/localstorage.d.ts.map +1 -1
  17. package/dist/apis/localstorage.js +7 -184
  18. package/dist/apis/localstorage.js.map +1 -1
  19. package/dist/app.d.ts.map +1 -1
  20. package/dist/app.js +16 -15
  21. package/dist/app.js.map +1 -1
  22. package/dist/cli.js +7 -6
  23. package/dist/cli.js.map +1 -1
  24. package/dist/components/actions.d.ts.map +1 -1
  25. package/dist/components/actions.js +13 -2
  26. package/dist/components/actions.js.map +1 -1
  27. package/dist/components/extension-preferences.d.ts.map +1 -1
  28. package/dist/components/extension-preferences.js +7 -8
  29. package/dist/components/extension-preferences.js.map +1 -1
  30. package/dist/components/form/file-autocomplete.js +2 -2
  31. package/dist/components/form/file-autocomplete.js.map +1 -1
  32. package/dist/components/list.d.ts.map +1 -1
  33. package/dist/components/list.js +242 -14
  34. package/dist/components/list.js.map +1 -1
  35. package/dist/e2e-node.d.ts.map +1 -1
  36. package/dist/e2e-node.js +5 -4
  37. package/dist/e2e-node.js.map +1 -1
  38. package/dist/extensions/dev.d.ts.map +1 -1
  39. package/dist/extensions/dev.js +5 -2
  40. package/dist/extensions/dev.js.map +1 -1
  41. package/dist/globals.d.ts.map +1 -1
  42. package/dist/globals.js +2 -1
  43. package/dist/globals.js.map +1 -1
  44. package/dist/internal/error-handler.d.ts.map +1 -1
  45. package/dist/internal/error-handler.js +21 -19
  46. package/dist/internal/error-handler.js.map +1 -1
  47. package/dist/internal/providers.d.ts.map +1 -1
  48. package/dist/internal/providers.js +41 -1
  49. package/dist/internal/providers.js.map +1 -1
  50. package/dist/logger.d.ts.map +1 -1
  51. package/dist/logger.js +40 -29
  52. package/dist/logger.js.map +1 -1
  53. package/dist/platform/browser/cache.d.ts +41 -0
  54. package/dist/platform/browser/cache.d.ts.map +1 -0
  55. package/dist/platform/browser/cache.js +262 -0
  56. package/dist/platform/browser/cache.js.map +1 -0
  57. package/dist/platform/browser/localstorage.d.ts +20 -0
  58. package/dist/platform/browser/localstorage.d.ts.map +1 -0
  59. package/dist/platform/browser/localstorage.js +102 -0
  60. package/dist/platform/browser/localstorage.js.map +1 -0
  61. package/dist/platform/browser/runtime.d.ts +51 -0
  62. package/dist/platform/browser/runtime.d.ts.map +1 -0
  63. package/dist/platform/browser/runtime.js +164 -0
  64. package/dist/platform/browser/runtime.js.map +1 -0
  65. package/dist/platform/bun/sqlite.d.ts +17 -0
  66. package/dist/platform/bun/sqlite.d.ts.map +1 -0
  67. package/dist/platform/bun/sqlite.js +6 -0
  68. package/dist/platform/bun/sqlite.js.map +1 -0
  69. package/dist/platform/node/cache.d.ts +35 -0
  70. package/dist/platform/node/cache.d.ts.map +1 -0
  71. package/dist/platform/node/cache.js +269 -0
  72. package/dist/platform/node/cache.js.map +1 -0
  73. package/dist/platform/node/localstorage.d.ts +17 -0
  74. package/dist/platform/node/localstorage.d.ts.map +1 -0
  75. package/dist/platform/node/localstorage.js +186 -0
  76. package/dist/platform/node/localstorage.js.map +1 -0
  77. package/dist/platform/node/runtime.d.ts +52 -0
  78. package/dist/platform/node/runtime.d.ts.map +1 -0
  79. package/dist/platform/node/runtime.js +230 -0
  80. package/dist/platform/node/runtime.js.map +1 -0
  81. package/dist/platform/node/sqlite.d.ts +27 -0
  82. package/dist/platform/node/sqlite.d.ts.map +1 -0
  83. package/dist/platform/node/sqlite.js +21 -0
  84. package/dist/platform/node/sqlite.js.map +1 -0
  85. package/dist/state.d.ts +5 -0
  86. package/dist/state.d.ts.map +1 -1
  87. package/dist/state.js +6 -28
  88. package/dist/state.js.map +1 -1
  89. package/dist/utils/file-system.d.ts.map +1 -1
  90. package/dist/utils/file-system.js +17 -22
  91. package/dist/utils/file-system.js.map +1 -1
  92. package/dist/utils.d.ts +1 -1
  93. package/dist/utils.d.ts.map +1 -1
  94. package/dist/utils.js +42 -47
  95. package/dist/utils.js.map +1 -1
  96. package/dist/vim-mode.d.ts +40 -0
  97. package/dist/vim-mode.d.ts.map +1 -0
  98. package/dist/vim-mode.js +135 -0
  99. package/dist/vim-mode.js.map +1 -0
  100. package/fonts/Inconsolata.otf +0 -0
  101. package/fonts/SIL Open Font License.txt +41 -0
  102. package/package.json +62 -10
  103. package/src/action-utils.tsx +27 -124
  104. package/src/apis/cache.test.ts +1 -1
  105. package/src/apis/cache.tsx +9 -373
  106. package/src/apis/clipboard.tsx +29 -38
  107. package/src/apis/environment.tsx +25 -52
  108. package/src/apis/localstorage.tsx +8 -214
  109. package/src/app.tsx +16 -15
  110. package/src/cli.tsx +14 -15
  111. package/src/compile.vitest.tsx +2 -2
  112. package/src/components/actions.tsx +19 -1
  113. package/src/components/extension-preferences.tsx +7 -8
  114. package/src/components/form/file-autocomplete.tsx +2 -2
  115. package/src/components/list.tsx +279 -14
  116. package/src/e2e-node.tsx +7 -7
  117. package/src/examples/action-shortcut.vitest.tsx +2 -2
  118. package/src/examples/actions-context.vitest.tsx +1 -1
  119. package/src/examples/bar-graph-weekly.vitest.tsx +10 -36
  120. package/src/examples/detail-metadata-showcase.vitest.tsx +37 -42
  121. package/src/examples/form-basic.vitest.tsx +45 -41
  122. package/src/examples/github.vitest.tsx +4 -4
  123. package/src/examples/graph-bar-chart.vitest.tsx +13 -11
  124. package/src/examples/graph-polymarket.vitest.tsx +2 -2
  125. package/src/examples/graph-row.vitest.tsx +66 -66
  126. package/src/examples/graph-styles.vitest.tsx +12 -12
  127. package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -48
  128. package/src/examples/list-detail-metadata.vitest.tsx +5 -5
  129. package/src/examples/list-fetch-data.vitest.tsx +3 -3
  130. package/src/examples/list-item-accessories.vitest.tsx +2 -2
  131. package/src/examples/list-loading-empty-view.vitest.tsx +1 -1
  132. package/src/examples/list-no-actions.vitest.tsx +2 -2
  133. package/src/examples/list-scrollbox.vitest.tsx +5 -5
  134. package/src/examples/list-spacing-mode.vitest.tsx +3 -3
  135. package/src/examples/list-with-detail.vitest.tsx +68 -68
  136. package/src/examples/list-with-dropdown.vitest.tsx +5 -5
  137. package/src/examples/list-with-sections.vitest.tsx +27 -27
  138. package/src/examples/simple-candle-chart.vitest.tsx +7 -7
  139. package/src/examples/simple-detail-markdown.vitest.tsx +8 -8
  140. package/src/examples/simple-detail-table.vitest.tsx +8 -8
  141. package/src/examples/simple-graph.vitest.tsx +3 -3
  142. package/src/examples/simple-grid.vitest.tsx +14 -14
  143. package/src/examples/simple-heatmap.vitest.tsx +10 -10
  144. package/src/examples/simple-navigation.vitest.tsx +17 -17
  145. package/src/examples/simple-progress-bar.vitest.tsx +1 -1
  146. package/src/examples/store.vitest.tsx +1 -1
  147. package/src/examples/swift-extension.vitest.tsx +2 -2
  148. package/src/examples/table-edge-cases.vitest.tsx +18 -18
  149. package/src/examples/toast-action.vitest.tsx +2 -2
  150. package/src/examples/toast-variations.vitest.tsx +5 -5
  151. package/src/extensions/dev.tsx +5 -2
  152. package/src/extensions/dev.vitest.tsx +3 -3
  153. package/src/globals.ts +2 -1
  154. package/src/internal/error-handler.tsx +19 -21
  155. package/src/internal/providers.tsx +39 -0
  156. package/src/logger.tsx +48 -41
  157. package/src/platform/browser/cache.ts +327 -0
  158. package/src/platform/browser/localstorage.ts +119 -0
  159. package/src/platform/browser/runtime.ts +209 -0
  160. package/src/platform/bun/sqlite.ts +19 -0
  161. package/src/platform/node/cache.ts +372 -0
  162. package/src/platform/node/localstorage.ts +214 -0
  163. package/src/platform/node/runtime.ts +264 -0
  164. package/src/platform/node/sqlite.ts +43 -0
  165. package/src/state.tsx +17 -28
  166. package/src/utils/file-system.ts +17 -22
  167. package/src/utils.test.tsx +1 -1
  168. package/src/utils.tsx +56 -47
  169. package/src/vim-mode.tsx +153 -0
  170. package/src/apis/sqlite.ts +0 -14
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Node/Bun LocalStorage implementation backed by SQLite.
3
+ * Moved from apis/localstorage.tsx.
4
+ */
5
+ import { Database } from '#sqlite';
6
+ import { joinPath, dirname, ensureDir } from '#platform/runtime';
7
+ import { logger } from '../../logger';
8
+ import { useStore } from '../../state';
9
+ let db = null;
10
+ let currentDbPath = null;
11
+ function getCurrentDatabasePath() {
12
+ const { extensionPath } = useStore.getState();
13
+ if (!extensionPath) {
14
+ throw new Error('Cannot access LocalStorage - extensionPath not set');
15
+ }
16
+ return joinPath(extensionPath, '.termcast-bundle', 'data.db');
17
+ }
18
+ function getDatabase() {
19
+ const dbPath = getCurrentDatabasePath();
20
+ // Check if we need to reconnect due to path change
21
+ if (db && currentDbPath !== dbPath) {
22
+ db.close();
23
+ db = null;
24
+ currentDbPath = null;
25
+ }
26
+ if (!db) {
27
+ // Ensure parent directory exists
28
+ const dbDir = dirname(dbPath);
29
+ ensureDir(dbDir);
30
+ db = new Database(dbPath, {
31
+ create: true,
32
+ readwrite: true,
33
+ });
34
+ currentDbPath = dbPath;
35
+ // Use WAL mode and optimize for single file usage
36
+ db.exec('PRAGMA journal_mode = WAL');
37
+ db.exec('PRAGMA wal_autocheckpoint = 1000');
38
+ db.exec('PRAGMA synchronous = NORMAL');
39
+ db.exec(`
40
+ CREATE TABLE IF NOT EXISTS localstorage (
41
+ key TEXT PRIMARY KEY,
42
+ value TEXT NOT NULL,
43
+ type TEXT NOT NULL
44
+ )
45
+ `);
46
+ }
47
+ return db;
48
+ }
49
+ export var LocalStorage;
50
+ (function (LocalStorage) {
51
+ async function getItem(key) {
52
+ return new Promise((resolve) => {
53
+ try {
54
+ const db = getDatabase();
55
+ const row = db
56
+ .prepare('SELECT value, type FROM localstorage WHERE key = ?')
57
+ .get(key);
58
+ if (!row) {
59
+ resolve(undefined);
60
+ return;
61
+ }
62
+ let value;
63
+ switch (row.type) {
64
+ case 'number':
65
+ value = parseFloat(row.value);
66
+ break;
67
+ case 'boolean':
68
+ value = row.value === 'true';
69
+ break;
70
+ default:
71
+ value = row.value;
72
+ }
73
+ resolve(value);
74
+ }
75
+ catch (err) {
76
+ logger.error('LocalStorage.getItem error:', err);
77
+ resolve(undefined);
78
+ }
79
+ });
80
+ }
81
+ LocalStorage.getItem = getItem;
82
+ function getItemSync(key) {
83
+ try {
84
+ const db = getDatabase();
85
+ const row = db
86
+ .prepare('SELECT value, type FROM localstorage WHERE key = ?')
87
+ .get(key);
88
+ if (!row) {
89
+ return undefined;
90
+ }
91
+ let value;
92
+ switch (row.type) {
93
+ case 'number':
94
+ value = parseFloat(row.value);
95
+ break;
96
+ case 'boolean':
97
+ value = row.value === 'true';
98
+ break;
99
+ default:
100
+ value = row.value;
101
+ }
102
+ return value;
103
+ }
104
+ catch (err) {
105
+ logger.error('LocalStorage.getItemSync error:', err);
106
+ return undefined;
107
+ }
108
+ }
109
+ LocalStorage.getItemSync = getItemSync;
110
+ async function setItem(key, value) {
111
+ return new Promise((resolve, reject) => {
112
+ try {
113
+ const db = getDatabase();
114
+ const type = typeof value;
115
+ const stringValue = String(value);
116
+ db.prepare('INSERT OR REPLACE INTO localstorage (key, value, type) VALUES (?, ?, ?)').run(key, stringValue, type);
117
+ resolve();
118
+ }
119
+ catch (err) {
120
+ logger.error('LocalStorage.setItem error:', err);
121
+ reject(err);
122
+ }
123
+ });
124
+ }
125
+ LocalStorage.setItem = setItem;
126
+ async function removeItem(key) {
127
+ return new Promise((resolve, reject) => {
128
+ try {
129
+ const db = getDatabase();
130
+ db.prepare('DELETE FROM localstorage WHERE key = ?').run(key);
131
+ resolve();
132
+ }
133
+ catch (err) {
134
+ logger.error('LocalStorage.removeItem error:', err);
135
+ reject(err);
136
+ }
137
+ });
138
+ }
139
+ LocalStorage.removeItem = removeItem;
140
+ async function allItems() {
141
+ return new Promise((resolve, reject) => {
142
+ try {
143
+ const db = getDatabase();
144
+ const rows = db
145
+ .prepare('SELECT key, value, type FROM localstorage')
146
+ .all();
147
+ const result = {};
148
+ for (const row of rows) {
149
+ let value;
150
+ switch (row.type) {
151
+ case 'number':
152
+ value = parseFloat(row.value);
153
+ break;
154
+ case 'boolean':
155
+ value = row.value === 'true';
156
+ break;
157
+ default:
158
+ value = row.value;
159
+ }
160
+ result[row.key] = value;
161
+ }
162
+ resolve(result);
163
+ }
164
+ catch (err) {
165
+ logger.error('LocalStorage.allItems error:', err);
166
+ reject(err);
167
+ }
168
+ });
169
+ }
170
+ LocalStorage.allItems = allItems;
171
+ async function clear() {
172
+ return new Promise((resolve, reject) => {
173
+ try {
174
+ const db = getDatabase();
175
+ db.exec('DELETE FROM localstorage');
176
+ resolve();
177
+ }
178
+ catch (err) {
179
+ logger.error('LocalStorage.clear error:', err);
180
+ reject(err);
181
+ }
182
+ });
183
+ }
184
+ LocalStorage.clear = clear;
185
+ })(LocalStorage || (LocalStorage = {}));
186
+ //# sourceMappingURL=localstorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localstorage.js","sourceRoot":"","sources":["../../../src/platform/node/localstorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Node.js / Bun platform runtime.
3
+ *
4
+ * Re-exports native APIs behind a platform-agnostic interface so the rest of
5
+ * termcast never imports node:* directly (except CLI / build tooling which is
6
+ * excluded from the browser bundle).
7
+ */
8
+ export declare function ensureDir(dir: string): void;
9
+ export declare function fileExists(p: string): boolean;
10
+ export declare function readFileSync(p: string): string;
11
+ export declare function appendToFile(p: string, data: string): void;
12
+ export declare function unlinkIfExists(p: string): void;
13
+ export declare function readdirSync(dir: string): Array<{
14
+ name: string;
15
+ isDirectory(): boolean;
16
+ }>;
17
+ export declare function rmSync(p: string): void;
18
+ export declare function mkdirSync(dir: string): void;
19
+ export declare function cpSync(src: string, dest: string): void;
20
+ export declare function readdirAsync(dir: string): Promise<Array<{
21
+ name: string;
22
+ isDirectory(): boolean;
23
+ }>>;
24
+ export declare function accessAsync(p: string): Promise<boolean>;
25
+ export declare const joinPath: (...parts: string[]) => string;
26
+ export declare const dirname: (p: string) => string;
27
+ export declare const basename: (p: string) => string;
28
+ export declare const resolvePath: (...parts: string[]) => string;
29
+ export declare const isAbsolute: (p: string) => boolean;
30
+ export declare const relativePath: (from: string, to: string) => string;
31
+ export declare function homedir(): string;
32
+ export declare const platform: string;
33
+ export declare function exit(code?: number): void;
34
+ export declare function getEnv(key: string): string | undefined;
35
+ export declare function setEnv(key: string, value: string): void;
36
+ export declare function cwd(): string;
37
+ export declare function stdoutWrite(data: string): void;
38
+ export declare function isTTY(): boolean;
39
+ export declare function getArgv(): string[];
40
+ export declare function getSystemAppearance(): 'dark' | 'light';
41
+ export declare function byteLength(str: string): number;
42
+ export declare function inspectValue(val: unknown, depth?: number): string;
43
+ export declare function setupErrorHandlers(handler: (err: Error, type: string) => void): void;
44
+ export declare function execWithInput(command: string, input: string): Promise<void>;
45
+ export declare function execCommand(command: string): Promise<string>;
46
+ export declare function copyToClipboard(text: string): Promise<void>;
47
+ export declare function readClipboard(): Promise<string>;
48
+ export declare function openUrl(url: string): Promise<void>;
49
+ export declare function openFile(target: string, app?: string): Promise<void>;
50
+ export declare function showInFileManager(filePath: string): Promise<void>;
51
+ export declare function moveToTrash(filePath: string): Promise<void>;
52
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/node/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Node.js / Bun platform runtime.
3
+ *
4
+ * Re-exports native APIs behind a platform-agnostic interface so the rest of
5
+ * termcast never imports node:* directly (except CLI / build tooling which is
6
+ * excluded from the browser bundle).
7
+ */
8
+ import fs from 'node:fs';
9
+ import path from 'node:path';
10
+ import os from 'node:os';
11
+ import util from 'node:util';
12
+ import { exec as _exec } from 'node:child_process';
13
+ import { promisify } from 'node:util';
14
+ const execAsync = promisify(_exec);
15
+ // ── filesystem ──────────────────────────────────────────────────────
16
+ export function ensureDir(dir) {
17
+ if (!fs.existsSync(dir)) {
18
+ fs.mkdirSync(dir, { recursive: true });
19
+ }
20
+ }
21
+ export function fileExists(p) {
22
+ return fs.existsSync(p);
23
+ }
24
+ export function readFileSync(p) {
25
+ return fs.readFileSync(p, 'utf-8');
26
+ }
27
+ export function appendToFile(p, data) {
28
+ fs.appendFileSync(p, data);
29
+ }
30
+ export function unlinkIfExists(p) {
31
+ if (fs.existsSync(p)) {
32
+ fs.unlinkSync(p);
33
+ }
34
+ }
35
+ export function readdirSync(dir) {
36
+ return fs.readdirSync(dir, { withFileTypes: true });
37
+ }
38
+ export function rmSync(p) {
39
+ fs.rmSync(p, { recursive: true, force: true });
40
+ }
41
+ export function mkdirSync(dir) {
42
+ fs.mkdirSync(dir, { recursive: true });
43
+ }
44
+ export function cpSync(src, dest) {
45
+ fs.cpSync(src, dest, { recursive: true });
46
+ }
47
+ // ── async filesystem ────────────────────────────────────────────────
48
+ import fsPromises from 'node:fs/promises';
49
+ export async function readdirAsync(dir) {
50
+ return fsPromises.readdir(dir, { withFileTypes: true });
51
+ }
52
+ export async function accessAsync(p) {
53
+ try {
54
+ await fsPromises.access(p);
55
+ return true;
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ // ── path ────────────────────────────────────────────────────────────
62
+ export const joinPath = path.join;
63
+ export const dirname = path.dirname;
64
+ export const basename = path.basename;
65
+ export const resolvePath = path.resolve;
66
+ export const isAbsolute = path.isAbsolute;
67
+ export const relativePath = path.relative;
68
+ // ── os ──────────────────────────────────────────────────────────────
69
+ export function homedir() {
70
+ return os.homedir();
71
+ }
72
+ // ── process ─────────────────────────────────────────────────────────
73
+ export const platform = process.platform;
74
+ export function exit(code) {
75
+ process.exit(code);
76
+ }
77
+ export function getEnv(key) {
78
+ return process.env[key];
79
+ }
80
+ export function setEnv(key, value) {
81
+ process.env[key] = value;
82
+ }
83
+ export function cwd() {
84
+ return process.cwd();
85
+ }
86
+ export function stdoutWrite(data) {
87
+ process.stdout.write(data);
88
+ }
89
+ export function isTTY() {
90
+ return !!process.stdout.isTTY;
91
+ }
92
+ export function getArgv() {
93
+ return process.argv;
94
+ }
95
+ // ── appearance ──────────────────────────────────────────────────────
96
+ export function getSystemAppearance() {
97
+ if (process.platform !== 'darwin') {
98
+ return 'light';
99
+ }
100
+ try {
101
+ const { execFileSync } = require('node:child_process');
102
+ const result = execFileSync('defaults', ['read', '-g', 'AppleInterfaceStyle'], {
103
+ encoding: 'utf-8',
104
+ timeout: 500,
105
+ stdio: ['pipe', 'pipe', 'pipe'],
106
+ });
107
+ return result.trim().toLowerCase() === 'dark' ? 'dark' : 'light';
108
+ }
109
+ catch {
110
+ // "AppleInterfaceStyle" key doesn't exist when in light mode
111
+ return 'light';
112
+ }
113
+ }
114
+ // ── util ────────────────────────────────────────────────────────────
115
+ export function byteLength(str) {
116
+ return Buffer.byteLength(str, 'utf-8');
117
+ }
118
+ export function inspectValue(val, depth = 3) {
119
+ return util.inspect(val, { depth });
120
+ }
121
+ // ── error handling ──────────────────────────────────────────────────
122
+ export function setupErrorHandlers(handler) {
123
+ process.on('uncaughtException', (err) => {
124
+ handler(err, 'uncaughtException');
125
+ });
126
+ process.on('unhandledRejection', (reason) => {
127
+ handler(reason instanceof Error ? reason : new Error(String(reason)), 'unhandledRejection');
128
+ });
129
+ process.on('uncaughtExceptionMonitor', (err, origin) => {
130
+ handler(err, origin);
131
+ });
132
+ }
133
+ // ── shell / clipboard ───────────────────────────────────────────────
134
+ export function execWithInput(command, input) {
135
+ return new Promise((resolve, reject) => {
136
+ const child = _exec(command, (error) => {
137
+ if (error) {
138
+ reject(error);
139
+ }
140
+ else {
141
+ resolve();
142
+ }
143
+ });
144
+ child.stdin?.write(input);
145
+ child.stdin?.end();
146
+ });
147
+ }
148
+ export async function execCommand(command) {
149
+ const { stdout } = await execAsync(command);
150
+ return stdout;
151
+ }
152
+ export async function copyToClipboard(text) {
153
+ if (process.platform === 'darwin') {
154
+ await execWithInput('pbcopy', text);
155
+ }
156
+ else if (process.platform === 'linux') {
157
+ await execWithInput('xclip -selection clipboard', text);
158
+ }
159
+ else if (process.platform === 'win32') {
160
+ await execWithInput('clip', text);
161
+ }
162
+ }
163
+ export async function readClipboard() {
164
+ if (process.platform === 'darwin') {
165
+ return (await execAsync('pbpaste')).stdout;
166
+ }
167
+ else if (process.platform === 'linux') {
168
+ return (await execAsync('xclip -selection clipboard -o')).stdout;
169
+ }
170
+ else if (process.platform === 'win32') {
171
+ return (await execAsync('powershell -command "Get-Clipboard"')).stdout;
172
+ }
173
+ return '';
174
+ }
175
+ export async function openUrl(url) {
176
+ if (process.platform === 'darwin') {
177
+ await execAsync(`open "${url}"`);
178
+ }
179
+ else if (process.platform === 'linux') {
180
+ await execAsync(`xdg-open "${url}"`);
181
+ }
182
+ else if (process.platform === 'win32') {
183
+ await execAsync(`start "${url}"`);
184
+ }
185
+ }
186
+ export async function openFile(target, app) {
187
+ if (process.platform === 'darwin') {
188
+ if (app) {
189
+ await execAsync(`open -a "${app}" "${target}"`);
190
+ }
191
+ else {
192
+ await execAsync(`open "${target}"`);
193
+ }
194
+ }
195
+ else if (process.platform === 'linux') {
196
+ await execAsync(`xdg-open "${target}"`);
197
+ }
198
+ else if (process.platform === 'win32') {
199
+ await execAsync(`start "" "${target}"`);
200
+ }
201
+ }
202
+ export async function showInFileManager(filePath) {
203
+ if (process.platform === 'darwin') {
204
+ await execAsync(`open -R "${filePath}"`);
205
+ }
206
+ else if (process.platform === 'linux') {
207
+ await execAsync(`xdg-open "$(dirname "${filePath}")"`);
208
+ }
209
+ else if (process.platform === 'win32') {
210
+ await execAsync(`explorer /select,"${filePath}"`);
211
+ }
212
+ }
213
+ export async function moveToTrash(filePath) {
214
+ if (process.platform === 'darwin') {
215
+ await execAsync(`osascript -e 'tell application "Finder" to delete POSIX file "${filePath}"'`);
216
+ }
217
+ else if (process.platform === 'linux') {
218
+ try {
219
+ await execAsync(`gio trash "${filePath}"`);
220
+ }
221
+ catch {
222
+ const trashDir = `${os.homedir()}/.local/share/Trash/files`;
223
+ await execAsync(`mkdir -p "${trashDir}" && mv "${filePath}" "${trashDir}/"`);
224
+ }
225
+ }
226
+ else if (process.platform === 'win32') {
227
+ await execAsync(`powershell -command "Add-Type -AssemblyName Microsoft.VisualBasic; [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile('${filePath}','OnlyErrorDialogs','SendToRecycleBin')"`);
228
+ }
229
+ }
230
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/platform/node/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * SQLite Database for Node.js — uses better-sqlite3.
3
+ *
4
+ * Translates bun:sqlite constructor options ({ create, readwrite })
5
+ * to better-sqlite3 options ({ fileMustExist, readonly }).
6
+ * All other APIs (prepare/get/all/run/exec/transaction/close) are
7
+ * identical between the two libraries.
8
+ */
9
+ interface DatabaseOptions {
10
+ create?: boolean;
11
+ readwrite?: boolean;
12
+ readonly?: boolean;
13
+ }
14
+ export declare const Database: new (path: string, options?: DatabaseOptions) => DatabaseInstance;
15
+ /** Instance type returned by `new Database(...)` */
16
+ export type DatabaseInstance = {
17
+ exec(sql: string): void;
18
+ prepare(sql: string): {
19
+ get(...params: any[]): any;
20
+ all(...params: any[]): any[];
21
+ run(...params: any[]): any;
22
+ };
23
+ transaction<T>(fn: () => T): () => T;
24
+ close(): void;
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/platform/node/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAeD,eAAO,MAAM,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,gBAAsC,CAAA;AAE9G,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;QAC1B,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAA;QAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;KAC3B,CAAA;IACD,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;IACpC,KAAK,IAAI,IAAI,CAAA;CACd,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * SQLite Database for Node.js — uses better-sqlite3.
3
+ *
4
+ * Translates bun:sqlite constructor options ({ create, readwrite })
5
+ * to better-sqlite3 options ({ fileMustExist, readonly }).
6
+ * All other APIs (prepare/get/all/run/exec/transaction/close) are
7
+ * identical between the two libraries.
8
+ */
9
+ import BetterSqlite3 from 'better-sqlite3';
10
+ function NodeDatabase(path, options) {
11
+ const betterOpts = {};
12
+ if (options?.create === false) {
13
+ betterOpts.fileMustExist = true;
14
+ }
15
+ if (options?.readonly === true || options?.readwrite === false) {
16
+ betterOpts.readonly = true;
17
+ }
18
+ return new BetterSqlite3(path, betterOpts);
19
+ }
20
+ export const Database = NodeDatabase;
21
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/platform/node/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAQ1C,SAAS,YAAY,CAAC,IAAY,EAAE,OAAyB;IAC3D,MAAM,UAAU,GAAoD,EAAE,CAAA;IAEtE,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;QAC9B,UAAU,CAAC,aAAa,GAAG,IAAI,CAAA;IACjC,CAAC;IACD,IAAI,OAAO,EAAE,QAAQ,KAAK,IAAI,IAAI,OAAO,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;QAC/D,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAA;IAC5B,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAsE,YAAmB,CAAA"}
package/dist/state.d.ts CHANGED
@@ -45,7 +45,12 @@ export interface NavigationStackItem {
45
45
  selectedListIndex?: number;
46
46
  searchText?: string;
47
47
  }
48
+ export type InputMode = 'raycast' | 'vim';
49
+ export type VimInputSubMode = 'default' | 'search' | 'command';
48
50
  interface AppState {
51
+ inputMode: InputMode;
52
+ vimInputSubMode: VimInputSubMode;
53
+ vimCommandText: string;
49
54
  toast: ToastData | null;
50
55
  toastWithPrimaryAction: boolean;
51
56
  dialogStack: DialogStackItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAMvF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE;QAAE,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;QAAC,GAAG,EAAE,qBAAqB,CAAA;KAAE,CAAA;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAGD,eAAO,MAAM,qBAAqB;;;CAAqC,CAAA;AACvE,eAAO,MAAM,uBAAuB;;;CAAqC,CAAA;AAEzE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAE3D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,UAAU,CAAA;IACjB,aAAa,CAAC,EAAE,eAAe,CAAA;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAA;AACpE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,CAAA;AAEvD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,QAAQ;IAChB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,sBAAsB,EAAE,OAAO,CAAA;IAC/B,WAAW,EAAE,eAAe,EAAE,CAAA;IAC9B,eAAe,EAAE,mBAAmB,EAAE,CAAA;IAEtC,UAAU,EAAE,SAAS,GAAG,IAAI,CAAA;IAE5B,eAAe,EAAE,MAAM,CAAA;IAKvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAG5B,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,4BAA4B,EAAE,OAAO,CAAA;IAErC,gBAAgB,EAAE,MAAM,CAAA;IAExB,mBAAmB,EAAE,MAAM,CAAA;IAE3B,eAAe,EAAE,MAAM,CAAA;IAEvB,iBAAiB,EAAE,OAAO,CAAA;IAG1B,mBAAmB,EAAE,GAAG,CAAA;IAExB,gBAAgB,EAAE,MAAM,CAAA;IAExB,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAG/C,yBAAyB,EAAE,wBAAwB,EAAE,CAAA;CACtD;AAED,eAAO,MAAM,QAAQ,uEA8BlB,CAAA"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.tsx"],"names":[],"mappings":"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"}
package/dist/state.js CHANGED
@@ -1,11 +1,13 @@
1
- import fs from 'node:fs';
2
1
  import { create } from 'zustand';
3
- import { getResolvedTheme } from './themes';
4
- import { logger } from './logger';
2
+ import { getEnv } from '#platform/runtime';
5
3
  // Toast action keyboard shortcuts (ctrl+t for primary, ctrl+g for secondary)
6
4
  export const toastPrimaryActionKey = { ctrl: true, name: 't' };
7
5
  export const toastSecondaryActionKey = { ctrl: true, name: 'g' };
8
6
  export const useStore = create(() => ({
7
+ // Vim mode — initialized from persistence in initializeVimMode()
8
+ inputMode: 'raycast',
9
+ vimInputSubMode: 'default',
10
+ vimCommandText: '',
9
11
  toast: null,
10
12
  toastWithPrimaryAction: false,
11
13
  dialogStack: [],
@@ -30,34 +32,10 @@ export const useStore = create(() => ({
30
32
  showActionsDialog: false,
31
33
  actionsPortalTarget: null,
32
34
  // Theme state — TERMCAST_DEFAULT_THEME env var is set by the app launcher
33
- currentThemeName: process.env.TERMCAST_DEFAULT_THEME || 'nerv',
35
+ currentThemeName: getEnv('TERMCAST_DEFAULT_THEME') || 'nerv',
34
36
  // Active search input ref
35
37
  activeSearchInputRef: null,
36
38
  // Registered action shortcuts
37
39
  registeredActionShortcuts: [],
38
40
  }));
39
- // Sync WezTerm's window background with the active termcast theme.
40
- // When the theme changes, rewrite the background color in wezterm.lua.
41
- // WezTerm auto-reloads the config on file change, updating the window edges/padding.
42
- // The config path is passed from the launcher via TERMCAST_WEZTERM_CONFIG env var.
43
- const weztermConfigPath = process.env.TERMCAST_WEZTERM_CONFIG;
44
- if (weztermConfigPath) {
45
- useStore.subscribe((state, prevState) => {
46
- if (state.currentThemeName === prevState.currentThemeName) {
47
- return;
48
- }
49
- try {
50
- const theme = getResolvedTheme(state.currentThemeName);
51
- const content = fs.readFileSync(weztermConfigPath, 'utf-8');
52
- // Replace the background hex in: config.colors = { background = '#xxxxxx' }
53
- const updated = content.replace(/background\s*=\s*'#[0-9a-fA-F]{6}'/, `background = '${theme.background}'`);
54
- if (updated !== content) {
55
- fs.writeFileSync(weztermConfigPath, updated);
56
- }
57
- }
58
- catch (e) {
59
- logger.log('Failed to update wezterm config background:', e);
60
- }
61
- });
62
- }
63
41
  //# sourceMappingURL=state.js.map
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AASjC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAW,CAAA;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAW,CAAA;AA+EzE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAW,GAAG,EAAE,CAAC,CAAC;IAC9C,KAAK,EAAE,IAAI;IACX,sBAAsB,EAAE,KAAK;IAC7B,WAAW,EAAE,EAAE;IACf,mBAAmB;IACnB,eAAe,EAAE,EAAE;IACnB,iBAAiB;IACjB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,IAAI;IACnB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,IAAI;IACxB,uBAAuB,EAAE,IAAI;IAC7B,cAAc;IACd,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAAE,SAAS;IACxB,gBAAgB;IAChB,4BAA4B,EAAE,KAAK;IACnC,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,EAAE;IACvB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,IAAI;IACzB,0EAA0E;IAC1E,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM;IAC9D,0BAA0B;IAC1B,oBAAoB,EAAE,IAAI;IAC1B,8BAA8B;IAC9B,yBAAyB,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAA;AAEH,mEAAmE;AACnE,uEAAuE;AACvE,qFAAqF;AACrF,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAA;AAC7D,IAAI,iBAAiB,EAAE,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC1D,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACtD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;YAC3D,4EAA4E;YAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAC7B,oCAAoC,EACpC,iBAAiB,KAAK,CAAC,UAAU,GAAG,CACrC,CAAA;YACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAOhC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS1C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAW,CAAA;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAW,CAAA;AAyFzE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAW,GAAG,EAAE,CAAC,CAAC;IAC9C,iEAAiE;IACjE,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,EAAE;IAClB,KAAK,EAAE,IAAI;IACX,sBAAsB,EAAE,KAAK;IAC7B,WAAW,EAAE,EAAE;IACf,mBAAmB;IACnB,eAAe,EAAE,EAAE;IACnB,iBAAiB;IACjB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,IAAI;IACnB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,IAAI;IACxB,uBAAuB,EAAE,IAAI;IAC7B,cAAc;IACd,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAAE,SAAS;IACxB,gBAAgB;IAChB,4BAA4B,EAAE,KAAK;IACnC,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,EAAE;IACvB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,IAAI;IACzB,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM;IAC5D,0BAA0B;IAC1B,oBAAoB,EAAE,IAAI;IAC1B,8BAA8B;IAC9B,yBAAyB,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EACjC,QAAc,EACd,QAAY,EACZ,QAAe,EACf,kBAAyB,GAC1B,GAAE;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CzB;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC,CAqD3B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkB7E"}
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EACjC,QAAc,EACd,QAAY,EACZ,QAAe,EACf,kBAAyB,GAC1B,GAAE;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CzB;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC,CAkD3B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkB7E"}