termcast 1.3.53 → 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.
Files changed (196) 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 +46 -20
  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/candle-chart.d.ts +110 -0
  28. package/dist/components/candle-chart.d.ts.map +1 -0
  29. package/dist/components/candle-chart.js +295 -0
  30. package/dist/components/candle-chart.js.map +1 -0
  31. package/dist/components/extension-preferences.d.ts.map +1 -1
  32. package/dist/components/extension-preferences.js +7 -8
  33. package/dist/components/extension-preferences.js.map +1 -1
  34. package/dist/components/form/file-autocomplete.js +2 -2
  35. package/dist/components/form/file-autocomplete.js.map +1 -1
  36. package/dist/components/list.d.ts.map +1 -1
  37. package/dist/components/list.js +242 -14
  38. package/dist/components/list.js.map +1 -1
  39. package/dist/components/table.d.ts +2 -0
  40. package/dist/components/table.d.ts.map +1 -1
  41. package/dist/components/table.js +41 -4
  42. package/dist/components/table.js.map +1 -1
  43. package/dist/e2e-node.d.ts.map +1 -1
  44. package/dist/e2e-node.js +5 -4
  45. package/dist/e2e-node.js.map +1 -1
  46. package/dist/examples/simple-candle-chart-data.d.ts +9064 -0
  47. package/dist/examples/simple-candle-chart-data.d.ts.map +1 -0
  48. package/dist/examples/simple-candle-chart-data.js +12683 -0
  49. package/dist/examples/simple-candle-chart-data.js.map +1 -0
  50. package/dist/examples/simple-candle-chart.d.ts +2 -0
  51. package/dist/examples/simple-candle-chart.d.ts.map +1 -0
  52. package/dist/examples/simple-candle-chart.js +125 -0
  53. package/dist/examples/simple-candle-chart.js.map +1 -0
  54. package/dist/extensions/dev.d.ts.map +1 -1
  55. package/dist/extensions/dev.js +5 -2
  56. package/dist/extensions/dev.js.map +1 -1
  57. package/dist/globals.d.ts.map +1 -1
  58. package/dist/globals.js +2 -1
  59. package/dist/globals.js.map +1 -1
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +2 -0
  63. package/dist/index.js.map +1 -1
  64. package/dist/internal/error-handler.d.ts.map +1 -1
  65. package/dist/internal/error-handler.js +21 -19
  66. package/dist/internal/error-handler.js.map +1 -1
  67. package/dist/internal/providers.d.ts.map +1 -1
  68. package/dist/internal/providers.js +41 -1
  69. package/dist/internal/providers.js.map +1 -1
  70. package/dist/logger.d.ts.map +1 -1
  71. package/dist/logger.js +31 -29
  72. package/dist/logger.js.map +1 -1
  73. package/dist/platform/browser/cache.d.ts +41 -0
  74. package/dist/platform/browser/cache.d.ts.map +1 -0
  75. package/dist/platform/browser/cache.js +262 -0
  76. package/dist/platform/browser/cache.js.map +1 -0
  77. package/dist/platform/browser/localstorage.d.ts +20 -0
  78. package/dist/platform/browser/localstorage.d.ts.map +1 -0
  79. package/dist/platform/browser/localstorage.js +102 -0
  80. package/dist/platform/browser/localstorage.js.map +1 -0
  81. package/dist/platform/browser/runtime.d.ts +51 -0
  82. package/dist/platform/browser/runtime.d.ts.map +1 -0
  83. package/dist/platform/browser/runtime.js +164 -0
  84. package/dist/platform/browser/runtime.js.map +1 -0
  85. package/dist/platform/bun/sqlite.d.ts +17 -0
  86. package/dist/platform/bun/sqlite.d.ts.map +1 -0
  87. package/dist/platform/bun/sqlite.js +6 -0
  88. package/dist/platform/bun/sqlite.js.map +1 -0
  89. package/dist/platform/node/cache.d.ts +35 -0
  90. package/dist/platform/node/cache.d.ts.map +1 -0
  91. package/dist/platform/node/cache.js +269 -0
  92. package/dist/platform/node/cache.js.map +1 -0
  93. package/dist/platform/node/localstorage.d.ts +17 -0
  94. package/dist/platform/node/localstorage.d.ts.map +1 -0
  95. package/dist/platform/node/localstorage.js +186 -0
  96. package/dist/platform/node/localstorage.js.map +1 -0
  97. package/dist/platform/node/runtime.d.ts +52 -0
  98. package/dist/platform/node/runtime.d.ts.map +1 -0
  99. package/dist/platform/node/runtime.js +230 -0
  100. package/dist/platform/node/runtime.js.map +1 -0
  101. package/dist/platform/node/sqlite.d.ts +27 -0
  102. package/dist/platform/node/sqlite.d.ts.map +1 -0
  103. package/dist/platform/node/sqlite.js +21 -0
  104. package/dist/platform/node/sqlite.js.map +1 -0
  105. package/dist/state.d.ts +5 -0
  106. package/dist/state.d.ts.map +1 -1
  107. package/dist/state.js +6 -28
  108. package/dist/state.js.map +1 -1
  109. package/dist/utils/file-system.d.ts.map +1 -1
  110. package/dist/utils/file-system.js +17 -22
  111. package/dist/utils/file-system.js.map +1 -1
  112. package/dist/utils.d.ts +1 -1
  113. package/dist/utils.d.ts.map +1 -1
  114. package/dist/utils.js +42 -47
  115. package/dist/utils.js.map +1 -1
  116. package/dist/vim-mode.d.ts +40 -0
  117. package/dist/vim-mode.d.ts.map +1 -0
  118. package/dist/vim-mode.js +135 -0
  119. package/dist/vim-mode.js.map +1 -0
  120. package/fonts/Inconsolata.otf +0 -0
  121. package/fonts/SIL Open Font License.txt +41 -0
  122. package/package.json +60 -8
  123. package/src/action-utils.tsx +27 -124
  124. package/src/apis/cache.test.ts +1 -1
  125. package/src/apis/cache.tsx +9 -373
  126. package/src/apis/clipboard.tsx +29 -38
  127. package/src/apis/environment.tsx +25 -52
  128. package/src/apis/localstorage.tsx +8 -214
  129. package/src/app.tsx +51 -20
  130. package/src/cli.tsx +14 -15
  131. package/src/compile.vitest.tsx +2 -2
  132. package/src/components/actions.tsx +19 -1
  133. package/src/components/candle-chart.tsx +410 -0
  134. package/src/components/extension-preferences.tsx +7 -8
  135. package/src/components/form/file-autocomplete.tsx +2 -2
  136. package/src/components/list.tsx +279 -14
  137. package/src/components/table.tsx +46 -4
  138. package/src/e2e-node.tsx +7 -7
  139. package/src/examples/action-shortcut.vitest.tsx +2 -2
  140. package/src/examples/actions-context.vitest.tsx +1 -1
  141. package/src/examples/bar-graph-weekly.vitest.tsx +10 -36
  142. package/src/examples/detail-metadata-showcase.vitest.tsx +36 -36
  143. package/src/examples/form-basic.vitest.tsx +21 -17
  144. package/src/examples/github.vitest.tsx +4 -4
  145. package/src/examples/graph-bar-chart.vitest.tsx +13 -11
  146. package/src/examples/graph-polymarket.vitest.tsx +2 -2
  147. package/src/examples/graph-row.vitest.tsx +66 -66
  148. package/src/examples/graph-styles.vitest.tsx +12 -12
  149. package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -48
  150. package/src/examples/list-detail-metadata.vitest.tsx +5 -5
  151. package/src/examples/list-fetch-data.vitest.tsx +3 -3
  152. package/src/examples/list-item-accessories.vitest.tsx +2 -2
  153. package/src/examples/list-loading-empty-view.vitest.tsx +1 -1
  154. package/src/examples/list-no-actions.vitest.tsx +2 -2
  155. package/src/examples/list-scrollbox.vitest.tsx +5 -5
  156. package/src/examples/list-spacing-mode.vitest.tsx +3 -3
  157. package/src/examples/list-with-detail.vitest.tsx +68 -68
  158. package/src/examples/list-with-dropdown.vitest.tsx +5 -5
  159. package/src/examples/list-with-sections.vitest.tsx +27 -27
  160. package/src/examples/simple-candle-chart-data.ts +12683 -0
  161. package/src/examples/simple-candle-chart.tsx +363 -0
  162. package/src/examples/simple-candle-chart.vitest.tsx +269 -0
  163. package/src/examples/simple-detail-markdown.vitest.tsx +8 -8
  164. package/src/examples/simple-detail-table.vitest.tsx +10 -10
  165. package/src/examples/simple-graph.vitest.tsx +3 -3
  166. package/src/examples/simple-grid.vitest.tsx +14 -14
  167. package/src/examples/simple-heatmap.vitest.tsx +1 -1
  168. package/src/examples/simple-navigation.vitest.tsx +17 -17
  169. package/src/examples/simple-progress-bar.vitest.tsx +1 -1
  170. package/src/examples/simple-table-wrap.vitest.tsx +19 -19
  171. package/src/examples/store.vitest.tsx +1 -1
  172. package/src/examples/swift-extension.vitest.tsx +2 -2
  173. package/src/examples/table-edge-cases.vitest.tsx +18 -18
  174. package/src/examples/table-flex-grow.vitest.tsx +8 -8
  175. package/src/examples/toast-action.vitest.tsx +2 -2
  176. package/src/extensions/dev.tsx +5 -2
  177. package/src/extensions/dev.vitest.tsx +3 -3
  178. package/src/globals.ts +2 -1
  179. package/src/index.tsx +7 -0
  180. package/src/internal/error-handler.tsx +19 -21
  181. package/src/internal/providers.tsx +39 -0
  182. package/src/logger.tsx +38 -41
  183. package/src/platform/browser/cache.ts +327 -0
  184. package/src/platform/browser/localstorage.ts +119 -0
  185. package/src/platform/browser/runtime.ts +209 -0
  186. package/src/platform/bun/sqlite.ts +19 -0
  187. package/src/platform/node/cache.ts +372 -0
  188. package/src/platform/node/localstorage.ts +214 -0
  189. package/src/platform/node/runtime.ts +264 -0
  190. package/src/platform/node/sqlite.ts +43 -0
  191. package/src/state.tsx +17 -28
  192. package/src/utils/file-system.ts +17 -22
  193. package/src/utils.test.tsx +1 -1
  194. package/src/utils.tsx +56 -47
  195. package/src/vim-mode.tsx +153 -0
  196. package/src/apis/sqlite.ts +0 -14
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Browser Cache implementation backed by IndexedDB with in-memory Map for sync reads.
3
+ *
4
+ * On construction, all entries for the namespace are loaded into a Map.
5
+ * Sync reads (get, has, isEmpty) hit the Map.
6
+ * Writes update both the Map and IndexedDB (fire-and-forget).
7
+ * LRU eviction is done in-memory.
8
+ */
9
+ import { byteLength } from '#platform/runtime';
10
+ const DB_NAME = 'termcast-cache';
11
+ const STORE_NAME = 'cache_entries';
12
+ const DB_VERSION = 1;
13
+ const DEFAULT_NAMESPACE = '__default__';
14
+ // Shared IDB connection — lazily opened, reused across Cache instances
15
+ let dbPromise = null;
16
+ function openDB() {
17
+ if (dbPromise)
18
+ return dbPromise;
19
+ dbPromise = new Promise((resolve, reject) => {
20
+ const request = indexedDB.open(DB_NAME, DB_VERSION);
21
+ request.onupgradeneeded = () => {
22
+ const db = request.result;
23
+ if (!db.objectStoreNames.contains(STORE_NAME)) {
24
+ const store = db.createObjectStore(STORE_NAME, {
25
+ keyPath: ['namespace', 'key'],
26
+ });
27
+ store.createIndex('by_namespace', 'namespace', { unique: false });
28
+ store.createIndex('by_lru', ['namespace', 'last_accessed_at'], {
29
+ unique: false,
30
+ });
31
+ }
32
+ };
33
+ request.onsuccess = () => {
34
+ resolve(request.result);
35
+ };
36
+ request.onerror = () => {
37
+ reject(request.error);
38
+ };
39
+ });
40
+ return dbPromise;
41
+ }
42
+ // Load all entries for a namespace into memory (called once per Cache instance)
43
+ async function loadNamespace(namespace) {
44
+ const db = await openDB();
45
+ return new Promise((resolve, reject) => {
46
+ const tx = db.transaction(STORE_NAME, 'readonly');
47
+ const store = tx.objectStore(STORE_NAME);
48
+ const index = store.index('by_namespace');
49
+ const request = index.getAll(namespace);
50
+ request.onsuccess = () => {
51
+ const map = new Map();
52
+ for (const entry of request.result) {
53
+ map.set(entry.key, entry);
54
+ }
55
+ resolve(map);
56
+ };
57
+ request.onerror = () => {
58
+ reject(request.error);
59
+ };
60
+ });
61
+ }
62
+ async function idbPut(entry) {
63
+ const db = await openDB();
64
+ return new Promise((resolve, reject) => {
65
+ const tx = db.transaction(STORE_NAME, 'readwrite');
66
+ const store = tx.objectStore(STORE_NAME);
67
+ const request = store.put(entry);
68
+ request.onsuccess = () => {
69
+ resolve();
70
+ };
71
+ request.onerror = () => {
72
+ reject(request.error);
73
+ };
74
+ });
75
+ }
76
+ async function idbDelete(namespace, key) {
77
+ const db = await openDB();
78
+ return new Promise((resolve, reject) => {
79
+ const tx = db.transaction(STORE_NAME, 'readwrite');
80
+ const store = tx.objectStore(STORE_NAME);
81
+ const request = store.delete([namespace, key]);
82
+ request.onsuccess = () => {
83
+ resolve();
84
+ };
85
+ request.onerror = () => {
86
+ reject(request.error);
87
+ };
88
+ });
89
+ }
90
+ async function idbClearNamespace(namespace) {
91
+ const db = await openDB();
92
+ return new Promise((resolve, reject) => {
93
+ const tx = db.transaction(STORE_NAME, 'readwrite');
94
+ const store = tx.objectStore(STORE_NAME);
95
+ const index = store.index('by_namespace');
96
+ const request = index.openCursor(namespace);
97
+ request.onsuccess = () => {
98
+ const cursor = request.result;
99
+ if (cursor) {
100
+ cursor.delete();
101
+ cursor.continue();
102
+ }
103
+ else {
104
+ resolve();
105
+ }
106
+ };
107
+ request.onerror = () => {
108
+ reject(request.error);
109
+ };
110
+ });
111
+ }
112
+ let logicalTimestamp = Date.now();
113
+ function nextTimestamp() {
114
+ logicalTimestamp += 1;
115
+ return logicalTimestamp;
116
+ }
117
+ export class Cache {
118
+ static get STORAGE_DIRECTORY_NAME() {
119
+ return 'cache';
120
+ }
121
+ static get DEFAULT_CAPACITY() {
122
+ return 10 * 1024 * 1024; // 10 MB
123
+ }
124
+ entries = new Map();
125
+ capacity;
126
+ namespace;
127
+ subscribers = [];
128
+ currentSize = 0;
129
+ initialized = false;
130
+ constructor(options) {
131
+ this.capacity = options?.capacity || Cache.DEFAULT_CAPACITY;
132
+ this.namespace = options?.namespace || DEFAULT_NAMESPACE;
133
+ // Kick off async load — sync reads return undefined until loaded
134
+ this.init();
135
+ // Bind all methods
136
+ this.get = this.get.bind(this);
137
+ this.has = this.has.bind(this);
138
+ this.set = this.set.bind(this);
139
+ this.remove = this.remove.bind(this);
140
+ this.clear = this.clear.bind(this);
141
+ this.subscribe = this.subscribe.bind(this);
142
+ }
143
+ async init() {
144
+ try {
145
+ const loaded = await loadNamespace(this.namespace);
146
+ // Merge: keep in-memory writes that happened during async load,
147
+ // preferring the newer entry (by updated_at) on key conflicts.
148
+ for (const [key, inMemoryEntry] of this.entries) {
149
+ const loadedEntry = loaded.get(key);
150
+ if (!loadedEntry || inMemoryEntry.updated_at >= loadedEntry.updated_at) {
151
+ loaded.set(key, inMemoryEntry);
152
+ }
153
+ }
154
+ this.entries = loaded;
155
+ this.currentSize = 0;
156
+ for (const entry of this.entries.values()) {
157
+ this.currentSize += entry.size;
158
+ }
159
+ this.initialized = true;
160
+ }
161
+ catch {
162
+ // IndexedDB might not be available (e.g. incognito with restrictions)
163
+ this.initialized = true;
164
+ }
165
+ }
166
+ get storageDirectory() {
167
+ return `/termcast/cache/${this.namespace}`;
168
+ }
169
+ get(key) {
170
+ const entry = this.entries.get(key);
171
+ if (!entry)
172
+ return undefined;
173
+ // Update LRU timestamp in-memory and async in IDB
174
+ const now = nextTimestamp();
175
+ entry.last_accessed_at = now;
176
+ idbPut(entry).catch(() => { });
177
+ return entry.data;
178
+ }
179
+ has(key) {
180
+ return this.entries.has(key);
181
+ }
182
+ get isEmpty() {
183
+ return this.entries.size === 0;
184
+ }
185
+ set(key, data) {
186
+ const now = nextTimestamp();
187
+ const dataSize = byteLength(data);
188
+ const existing = this.entries.get(key);
189
+ const oldSize = existing?.size || 0;
190
+ const newTotalSize = this.currentSize - oldSize + dataSize;
191
+ if (newTotalSize > this.capacity) {
192
+ this.maintainCapacity(newTotalSize - this.capacity);
193
+ }
194
+ const entry = {
195
+ namespace: this.namespace,
196
+ key,
197
+ data,
198
+ size: dataSize,
199
+ last_accessed_at: now,
200
+ updated_at: now,
201
+ };
202
+ this.entries.set(key, entry);
203
+ this.currentSize = this.currentSize - oldSize + dataSize;
204
+ // Persist async
205
+ idbPut(entry).catch(() => { });
206
+ this.notifySubscribers(key, data);
207
+ }
208
+ remove(key) {
209
+ const entry = this.entries.get(key);
210
+ if (!entry)
211
+ return false;
212
+ this.entries.delete(key);
213
+ this.currentSize -= entry.size;
214
+ // Persist async
215
+ idbDelete(this.namespace, key).catch(() => { });
216
+ this.notifySubscribers(key, undefined);
217
+ return true;
218
+ }
219
+ clear(options) {
220
+ this.entries.clear();
221
+ this.currentSize = 0;
222
+ // Persist async
223
+ idbClearNamespace(this.namespace).catch(() => { });
224
+ if (options?.notifySubscribers !== false) {
225
+ this.notifySubscribers(undefined, undefined);
226
+ }
227
+ }
228
+ subscribe(subscriber) {
229
+ this.subscribers.push(subscriber);
230
+ return () => {
231
+ const index = this.subscribers.indexOf(subscriber);
232
+ if (index > -1) {
233
+ this.subscribers.splice(index, 1);
234
+ }
235
+ };
236
+ }
237
+ maintainCapacity(bytesToFree) {
238
+ // Sort by LRU — oldest first
239
+ const sorted = [...this.entries.values()].sort((a, b) => a.last_accessed_at - b.last_accessed_at);
240
+ let freedBytes = 0;
241
+ for (const entry of sorted) {
242
+ if (freedBytes >= bytesToFree)
243
+ break;
244
+ this.entries.delete(entry.key);
245
+ freedBytes += entry.size;
246
+ // Persist async
247
+ idbDelete(this.namespace, entry.key).catch(() => { });
248
+ }
249
+ this.currentSize -= freedBytes;
250
+ }
251
+ notifySubscribers(key, data) {
252
+ for (const subscriber of this.subscribers) {
253
+ try {
254
+ subscriber(key, data);
255
+ }
256
+ catch {
257
+ // Ignore subscriber errors in browser
258
+ }
259
+ }
260
+ }
261
+ }
262
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/platform/browser/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Browser LocalStorage implementation backed by window.localStorage.
3
+ *
4
+ * Values are stored as JSON objects with type metadata to preserve
5
+ * number/boolean types across serialization, matching the SQLite
6
+ * implementation's behavior.
7
+ */
8
+ export declare namespace LocalStorage {
9
+ type Value = string | number | boolean;
10
+ interface Values {
11
+ [key: string]: any;
12
+ }
13
+ function getItem<T extends Value = Value>(key: string): Promise<T | undefined>;
14
+ function getItemSync<T extends Value = Value>(key: string): T | undefined;
15
+ function setItem(key: string, value: Value): Promise<void>;
16
+ function removeItem(key: string): Promise<void>;
17
+ function allItems<T extends Values = Values>(): Promise<T>;
18
+ function clear(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=localstorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localstorage.d.ts","sourceRoot":"","sources":["../../../src/platform/browser/localstorage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,yBAAiB,YAAY,CAAC;IAC5B,KAAY,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAE7C,UAAiB,MAAM;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB;IAED,SAAsB,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EACnD,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAExB;IAED,SAAgB,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EACjD,GAAG,EAAE,MAAM,GACV,CAAC,GAAG,SAAS,CAuBf;IAED,SAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE;IAED,SAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAED,SAAsB,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAiCtE;IAED,SAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAW3C;CACF"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Browser LocalStorage implementation backed by window.localStorage.
3
+ *
4
+ * Values are stored as JSON objects with type metadata to preserve
5
+ * number/boolean types across serialization, matching the SQLite
6
+ * implementation's behavior.
7
+ */
8
+ const PREFIX = 'termcast:';
9
+ export var LocalStorage;
10
+ (function (LocalStorage) {
11
+ async function getItem(key) {
12
+ return getItemSync(key);
13
+ }
14
+ LocalStorage.getItem = getItem;
15
+ function getItemSync(key) {
16
+ try {
17
+ const raw = window.localStorage.getItem(PREFIX + key);
18
+ if (raw === null)
19
+ return undefined;
20
+ const entry = JSON.parse(raw);
21
+ let value;
22
+ switch (entry.type) {
23
+ case 'number':
24
+ value = parseFloat(entry.value);
25
+ break;
26
+ case 'boolean':
27
+ value = entry.value === 'true';
28
+ break;
29
+ default:
30
+ value = entry.value;
31
+ }
32
+ return value;
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
38
+ LocalStorage.getItemSync = getItemSync;
39
+ async function setItem(key, value) {
40
+ try {
41
+ const entry = {
42
+ value: String(value),
43
+ type: typeof value,
44
+ };
45
+ window.localStorage.setItem(PREFIX + key, JSON.stringify(entry));
46
+ }
47
+ catch {
48
+ // localStorage might be full or disabled
49
+ }
50
+ }
51
+ LocalStorage.setItem = setItem;
52
+ async function removeItem(key) {
53
+ window.localStorage.removeItem(PREFIX + key);
54
+ }
55
+ LocalStorage.removeItem = removeItem;
56
+ async function allItems() {
57
+ const result = {};
58
+ for (let i = 0; i < window.localStorage.length; i++) {
59
+ const fullKey = window.localStorage.key(i);
60
+ if (!fullKey?.startsWith(PREFIX))
61
+ continue;
62
+ const key = fullKey.slice(PREFIX.length);
63
+ const raw = window.localStorage.getItem(fullKey);
64
+ if (raw === null)
65
+ continue;
66
+ try {
67
+ const entry = JSON.parse(raw);
68
+ let value;
69
+ switch (entry.type) {
70
+ case 'number':
71
+ value = parseFloat(entry.value);
72
+ break;
73
+ case 'boolean':
74
+ value = entry.value === 'true';
75
+ break;
76
+ default:
77
+ value = entry.value;
78
+ }
79
+ result[key] = value;
80
+ }
81
+ catch {
82
+ // Skip corrupted entries
83
+ }
84
+ }
85
+ return result;
86
+ }
87
+ LocalStorage.allItems = allItems;
88
+ async function clear() {
89
+ const keysToRemove = [];
90
+ for (let i = 0; i < window.localStorage.length; i++) {
91
+ const fullKey = window.localStorage.key(i);
92
+ if (fullKey?.startsWith(PREFIX)) {
93
+ keysToRemove.push(fullKey);
94
+ }
95
+ }
96
+ for (const key of keysToRemove) {
97
+ window.localStorage.removeItem(key);
98
+ }
99
+ }
100
+ LocalStorage.clear = clear;
101
+ })(LocalStorage || (LocalStorage = {}));
102
+ //# sourceMappingURL=localstorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localstorage.js","sourceRoot":"","sources":["../../../src/platform/browser/localstorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Browser platform runtime.
3
+ *
4
+ * Provides the same exports as the Node runtime but backed by browser APIs
5
+ * or sensible no-ops for features that don't exist in the browser.
6
+ */
7
+ export declare function ensureDir(_dir: string): void;
8
+ export declare function fileExists(_p: string): boolean;
9
+ export declare function readFileSync(_p: string): string;
10
+ export declare function appendToFile(_p: string, _data: string): void;
11
+ export declare function unlinkIfExists(_p: string): void;
12
+ export declare function readdirSync(_dir: string): Array<{
13
+ name: string;
14
+ isDirectory(): boolean;
15
+ }>;
16
+ export declare function rmSync(_p: string): void;
17
+ export declare function mkdirSync(_dir: string): void;
18
+ export declare function cpSync(_src: string, _dest: string): void;
19
+ export declare function readdirAsync(_dir: string): Promise<Array<{
20
+ name: string;
21
+ isDirectory(): boolean;
22
+ }>>;
23
+ export declare function accessAsync(_p: string): Promise<boolean>;
24
+ export declare function joinPath(...parts: string[]): string;
25
+ export declare function dirname(p: string): string;
26
+ export declare function basename(p: string): string;
27
+ export declare function resolvePath(...parts: string[]): string;
28
+ export declare function isAbsolute(p: string): boolean;
29
+ export declare function relativePath(from: string, to: string): string;
30
+ export declare function homedir(): string;
31
+ export declare const platform = "browser";
32
+ export declare function exit(_code?: number): void;
33
+ export declare function getEnv(key: string): string | undefined;
34
+ export declare function setEnv(key: string, value: string): void;
35
+ export declare function cwd(): string;
36
+ export declare function stdoutWrite(_data: string): void;
37
+ export declare function isTTY(): boolean;
38
+ export declare function getArgv(): string[];
39
+ export declare function getSystemAppearance(): 'dark' | 'light';
40
+ export declare function byteLength(str: string): number;
41
+ export declare function inspectValue(val: unknown, _depth?: number): string;
42
+ export declare function setupErrorHandlers(handler: (err: Error, type: string) => void): void;
43
+ export declare function execWithInput(_command: string, _input: string): Promise<void>;
44
+ export declare function execCommand(_command: string): Promise<string>;
45
+ export declare function copyToClipboard(text: string): Promise<void>;
46
+ export declare function readClipboard(): Promise<string>;
47
+ export declare function openUrl(url: string): Promise<void>;
48
+ export declare function openFile(_target: string, _app?: string): Promise<void>;
49
+ export declare function showInFileManager(_filePath: string): Promise<void>;
50
+ export declare function moveToTrash(_filePath: string): Promise<void>;
51
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/browser/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Browser platform runtime.
3
+ *
4
+ * Provides the same exports as the Node runtime but backed by browser APIs
5
+ * or sensible no-ops for features that don't exist in the browser.
6
+ */
7
+ // ── filesystem (no-ops / stubs) ─────────────────────────────────────
8
+ export function ensureDir(_dir) {
9
+ // no-op: browser storage (IndexedDB) doesn't need directory creation
10
+ }
11
+ export function fileExists(_p) {
12
+ return false;
13
+ }
14
+ export function readFileSync(_p) {
15
+ throw new Error('readFileSync is not available in the browser');
16
+ }
17
+ export function appendToFile(_p, _data) {
18
+ // no-op: browser logger uses console only
19
+ }
20
+ export function unlinkIfExists(_p) {
21
+ // no-op
22
+ }
23
+ export function readdirSync(_dir) {
24
+ return [];
25
+ }
26
+ export function rmSync(_p) {
27
+ // no-op
28
+ }
29
+ export function mkdirSync(_dir) {
30
+ // no-op
31
+ }
32
+ export function cpSync(_src, _dest) {
33
+ throw new Error('cpSync is not available in the browser');
34
+ }
35
+ // ── async filesystem ────────────────────────────────────────────────
36
+ export async function readdirAsync(_dir) {
37
+ return [];
38
+ }
39
+ export async function accessAsync(_p) {
40
+ return false;
41
+ }
42
+ // ── path (pure string ops) ──────────────────────────────────────────
43
+ export function joinPath(...parts) {
44
+ return parts
45
+ .filter(Boolean)
46
+ .join('/')
47
+ .replace(/\/+/g, '/');
48
+ }
49
+ export function dirname(p) {
50
+ const parts = p.split('/');
51
+ parts.pop();
52
+ return parts.join('/') || '/';
53
+ }
54
+ export function basename(p) {
55
+ return p.split('/').pop() || '';
56
+ }
57
+ export function resolvePath(...parts) {
58
+ return joinPath(...parts);
59
+ }
60
+ export function isAbsolute(p) {
61
+ return p.startsWith('/');
62
+ }
63
+ export function relativePath(from, to) {
64
+ const fromParts = from.split('/').filter(Boolean);
65
+ const toParts = to.split('/').filter(Boolean);
66
+ let common = 0;
67
+ while (common < fromParts.length && common < toParts.length && fromParts[common] === toParts[common]) {
68
+ common++;
69
+ }
70
+ const ups = fromParts.length - common;
71
+ return [...Array(ups).fill('..'), ...toParts.slice(common)].join('/');
72
+ }
73
+ // ── os ──────────────────────────────────────────────────────────────
74
+ export function homedir() {
75
+ return '/home';
76
+ }
77
+ // ── process ─────────────────────────────────────────────────────────
78
+ export const platform = 'browser';
79
+ export function exit(_code) {
80
+ // no-op: can't exit the browser
81
+ }
82
+ export function getEnv(key) {
83
+ // Browser env can be populated by the host app before boot
84
+ return globalThis.__termcast_env?.[key];
85
+ }
86
+ export function setEnv(key, value) {
87
+ const g = globalThis;
88
+ if (!g.__termcast_env) {
89
+ g.__termcast_env = {};
90
+ }
91
+ g.__termcast_env[key] = value;
92
+ }
93
+ export function cwd() {
94
+ return '/';
95
+ }
96
+ export function stdoutWrite(_data) {
97
+ // no-op: browser renderer handles output
98
+ }
99
+ export function isTTY() {
100
+ return false;
101
+ }
102
+ export function getArgv() {
103
+ return [];
104
+ }
105
+ // ── appearance ──────────────────────────────────────────────────────
106
+ export function getSystemAppearance() {
107
+ if (typeof window !== 'undefined' && window.matchMedia?.('(prefers-color-scheme: dark)').matches) {
108
+ return 'dark';
109
+ }
110
+ return 'light';
111
+ }
112
+ // ── util ────────────────────────────────────────────────────────────
113
+ export function byteLength(str) {
114
+ return new TextEncoder().encode(str).length;
115
+ }
116
+ export function inspectValue(val, _depth = 3) {
117
+ if (typeof val === 'string') {
118
+ return val;
119
+ }
120
+ try {
121
+ return JSON.stringify(val, null, 2);
122
+ }
123
+ catch {
124
+ return String(val);
125
+ }
126
+ }
127
+ // ── error handling ──────────────────────────────────────────────────
128
+ export function setupErrorHandlers(handler) {
129
+ window.addEventListener('error', (event) => {
130
+ handler(event.error ?? new Error(event.message), 'uncaughtException');
131
+ });
132
+ window.addEventListener('unhandledrejection', (event) => {
133
+ const err = event.reason instanceof Error
134
+ ? event.reason
135
+ : new Error(String(event.reason));
136
+ handler(err, 'unhandledRejection');
137
+ });
138
+ }
139
+ // ── shell / clipboard ───────────────────────────────────────────────
140
+ export function execWithInput(_command, _input) {
141
+ return Promise.reject(new Error('execWithInput is not available in the browser'));
142
+ }
143
+ export async function execCommand(_command) {
144
+ throw new Error('execCommand is not available in the browser');
145
+ }
146
+ export async function copyToClipboard(text) {
147
+ await navigator.clipboard.writeText(text);
148
+ }
149
+ export async function readClipboard() {
150
+ return navigator.clipboard.readText();
151
+ }
152
+ export async function openUrl(url) {
153
+ window.open(url, '_blank');
154
+ }
155
+ export async function openFile(_target, _app) {
156
+ throw new Error('openFile is not supported in the browser');
157
+ }
158
+ export async function showInFileManager(_filePath) {
159
+ throw new Error('showInFileManager is not supported in the browser');
160
+ }
161
+ export async function moveToTrash(_filePath) {
162
+ throw new Error('moveToTrash is not supported in the browser');
163
+ }
164
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/platform/browser/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SQLite Database for Bun — re-exports the built-in bun:sqlite.
3
+ */
4
+ import { Database as BunDatabase } from 'bun:sqlite';
5
+ export declare const Database: typeof BunDatabase;
6
+ /** Instance type returned by `new Database(...)` */
7
+ export type DatabaseInstance = {
8
+ exec(sql: string): void;
9
+ prepare(sql: string): {
10
+ get(...params: any[]): any;
11
+ all(...params: any[]): any[];
12
+ run(...params: any[]): any;
13
+ };
14
+ transaction<T>(fn: () => T): () => T;
15
+ close(): void;
16
+ };
17
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/platform/bun/sqlite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpD,eAAO,MAAM,QAAQ,oBAAc,CAAA;AAEnC,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"}