pi-x-ide 1.2.0 → 1.3.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.
@@ -0,0 +1,578 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const promises_1 = require("node:fs/promises");
41
+ const node_os_1 = require("node:os");
42
+ const node_path_1 = require("node:path");
43
+ const node_test_1 = __importStar(require("node:test"));
44
+ const node_sqlite_1 = require("node:sqlite");
45
+ const state_1 = require("../src/pi/state");
46
+ const zed_1 = require("../src/pi/zed");
47
+ // ── Env / path detection ──────────────────────────────────────
48
+ void (0, node_test_1.default)("isZedTerminal detects Zed env markers", () => {
49
+ strict_1.default.equal((0, zed_1.isZedTerminal)({}), false);
50
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ ZED_TERM: "true" }), true);
51
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ TERM_PROGRAM: "zed" }), true);
52
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ TERM_PROGRAM: "ZED" }), true);
53
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ ZED_TERM: "true", TERM_PROGRAM: "vscode" }), true);
54
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ TERM_PROGRAM: "vscode" }), false);
55
+ });
56
+ void (0, node_test_1.default)("isWsl detects WSL env markers", () => {
57
+ strict_1.default.equal((0, zed_1.isWsl)({ WSL_DISTRO_NAME: "Ubuntu" }), true);
58
+ strict_1.default.equal((0, zed_1.isWsl)({ WSL_INTEROP: "/run/WSL/1_interop" }), true);
59
+ strict_1.default.equal((0, zed_1.isWsl)({}), false);
60
+ });
61
+ void (0, node_test_1.default)("normalizeZedPathForHost maps Windows paths for WSL", () => {
62
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("C:\\Users\\czllo\\project\\src\\main.ts", { WSL_DISTRO_NAME: "Ubuntu" }), "/mnt/c/Users/czllo/project/src/main.ts");
63
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("D:/work/repo/file.ts", { WSL_DISTRO_NAME: "Ubuntu" }), "/mnt/d/work/repo/file.ts");
64
+ });
65
+ void (0, node_test_1.default)("normalizeZedPathForHost maps matching WSL UNC paths", () => {
66
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("\\\\wsl.localhost\\Ubuntu\\home\\julian\\project\\file.ts", {
67
+ WSL_DISTRO_NAME: "Ubuntu",
68
+ }), "/home/julian/project/file.ts");
69
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("\\\\wsl$\\Ubuntu\\home\\julian\\project\\file.ts", { WSL_DISTRO_NAME: "Ubuntu" }), "/home/julian/project/file.ts");
70
+ });
71
+ void (0, node_test_1.default)("normalizeZedPathForHost leaves other distro UNC paths untouched", () => {
72
+ const path = "\\\\wsl.localhost\\Debian\\home\\julian\\project\\file.ts";
73
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)(path, { WSL_DISTRO_NAME: "Ubuntu" }), path);
74
+ });
75
+ void (0, node_test_1.default)("resolveZedDbPath detects Windows LOCALAPPDATA path in WSL", async () => {
76
+ const root = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-localappdata-"));
77
+ const localAppData = (0, node_path_1.join)(root, "AppData", "Local");
78
+ const dbPath = (0, node_path_1.join)(localAppData, "Zed", "db", "0-stable", "db.sqlite");
79
+ await (0, promises_1.mkdir)((0, node_path_1.join)(localAppData, "Zed", "db", "0-stable"), { recursive: true });
80
+ await (0, promises_1.writeFile)(dbPath, "{}");
81
+ (0, node_test_1.after)(() => (0, promises_1.rm)(root, { recursive: true, force: true }).catch(() => undefined));
82
+ strict_1.default.equal((0, zed_1.resolveZedDbPath)({ WSL_DISTRO_NAME: "Ubuntu", LOCALAPPDATA: localAppData }, "/home/test"), dbPath);
83
+ });
84
+ void (0, node_test_1.default)("resolveZedDbPath respects env override", async () => {
85
+ const pkgPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-test-package.json");
86
+ await (0, promises_1.writeFile)(pkgPath, "{}");
87
+ (0, node_test_1.after)(() => (0, promises_1.rm)(pkgPath, { force: true }).catch(() => undefined));
88
+ const result = (0, zed_1.resolveZedDbPath)({ [zed_1.PI_X_IDE_ZED_DB_ENV]: pkgPath }, "/home/test");
89
+ strict_1.default.equal(result, pkgPath);
90
+ });
91
+ void (0, node_test_1.default)("resolveZedDbPath ignores missing env override", () => {
92
+ const missingPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-missing-db.sqlite");
93
+ const result = (0, zed_1.resolveZedDbPath)({ [zed_1.PI_X_IDE_ZED_DB_ENV]: missingPath }, "/home/test");
94
+ strict_1.default.equal(result, undefined);
95
+ });
96
+ void (0, node_test_1.default)("resolveZedDbPath detects Windows default path", async () => {
97
+ const home = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-home-"));
98
+ const dbPath = (0, node_path_1.join)(home, "AppData", "Local", "Zed", "db", "0-stable", "db.sqlite");
99
+ await (0, promises_1.mkdir)((0, node_path_1.join)(home, "AppData", "Local", "Zed", "db", "0-stable"), { recursive: true });
100
+ await (0, promises_1.writeFile)(dbPath, "{}");
101
+ (0, node_test_1.after)(() => (0, promises_1.rm)(home, { recursive: true, force: true }).catch(() => undefined));
102
+ strict_1.default.equal((0, zed_1.resolveZedDbPath)({}, home), dbPath);
103
+ });
104
+ void (0, node_test_1.default)("resolveZedDbPath returns undefined when no DB exists", () => {
105
+ const result = (0, zed_1.resolveZedDbPath)({}, "/nonexistent-home");
106
+ strict_1.default.equal(result, undefined);
107
+ });
108
+ // ── Workspace paths ──────────────────────────────────────────
109
+ void (0, node_test_1.default)("parseZedWorkspacePaths handles JSON array", () => {
110
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)('["/repo", "/other"]'), ["/repo", "/other"]);
111
+ });
112
+ void (0, node_test_1.default)("parseZedWorkspacePaths handles newline-delimited paths", () => {
113
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)("/repo\n/other"), ["/repo", "/other"]);
114
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)("/repo\n/other\n"), ["/repo", "/other"]);
115
+ });
116
+ void (0, node_test_1.default)("parseZedWorkspacePaths handles null, empty, and malformed JSON", () => {
117
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)(null), []);
118
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)(""), []);
119
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)(" "), []);
120
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)("{not json"), []);
121
+ });
122
+ async function createFixture() {
123
+ const dir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-test-"));
124
+ const dbPath = (0, node_path_1.join)(dir, "db.sqlite");
125
+ const db = new node_sqlite_1.DatabaseSync(dbPath);
126
+ db.exec(`
127
+ CREATE TABLE workspaces (
128
+ workspace_id TEXT PRIMARY KEY,
129
+ paths TEXT,
130
+ timestamp INTEGER
131
+ );
132
+ CREATE TABLE panes (
133
+ pane_id TEXT PRIMARY KEY,
134
+ workspace_id TEXT,
135
+ active INTEGER
136
+ );
137
+ CREATE TABLE items (
138
+ item_id TEXT PRIMARY KEY,
139
+ workspace_id TEXT,
140
+ pane_id TEXT,
141
+ kind TEXT,
142
+ active INTEGER
143
+ );
144
+ CREATE TABLE editors (
145
+ item_id TEXT,
146
+ workspace_id TEXT,
147
+ buffer_path TEXT,
148
+ contents TEXT,
149
+ PRIMARY KEY (item_id, workspace_id)
150
+ );
151
+ CREATE TABLE editor_selections (
152
+ editor_id TEXT,
153
+ workspace_id TEXT,
154
+ start INTEGER,
155
+ end INTEGER
156
+ );
157
+ `);
158
+ db.close();
159
+ async function cleanup() {
160
+ await (0, promises_1.rm)(dir, { recursive: true, force: true });
161
+ }
162
+ return { dir, dbPath, cleanup };
163
+ }
164
+ async function createNumericFixture() {
165
+ const dir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-numeric-"));
166
+ const dbPath = (0, node_path_1.join)(dir, "db.sqlite");
167
+ const db = new node_sqlite_1.DatabaseSync(dbPath);
168
+ db.exec(`
169
+ CREATE TABLE workspaces (
170
+ workspace_id INTEGER PRIMARY KEY,
171
+ paths TEXT,
172
+ timestamp INTEGER
173
+ );
174
+ CREATE TABLE panes (
175
+ pane_id INTEGER PRIMARY KEY,
176
+ workspace_id INTEGER,
177
+ active INTEGER
178
+ );
179
+ CREATE TABLE items (
180
+ item_id INTEGER PRIMARY KEY,
181
+ workspace_id INTEGER,
182
+ pane_id INTEGER,
183
+ kind TEXT,
184
+ active INTEGER
185
+ );
186
+ CREATE TABLE editors (
187
+ item_id INTEGER,
188
+ workspace_id INTEGER,
189
+ buffer_path TEXT,
190
+ contents TEXT,
191
+ PRIMARY KEY (item_id, workspace_id)
192
+ );
193
+ CREATE TABLE editor_selections (
194
+ editor_id INTEGER,
195
+ workspace_id INTEGER,
196
+ start INTEGER,
197
+ end INTEGER
198
+ );
199
+ `);
200
+ db.close();
201
+ async function cleanup() {
202
+ await (0, promises_1.rm)(dir, { recursive: true, force: true });
203
+ }
204
+ return { dir, dbPath, cleanup };
205
+ }
206
+ function openFixture(dbPath) {
207
+ return new node_sqlite_1.DatabaseSync(dbPath);
208
+ }
209
+ function insertWorkspace(db, wsId, paths, ts) {
210
+ db.prepare("INSERT INTO workspaces VALUES (?, ?, ?)").run(wsId, paths, ts);
211
+ }
212
+ function insertPane(db, paneId, wsId, active) {
213
+ db.prepare("INSERT INTO panes VALUES (?, ?, ?)").run(paneId, wsId, active);
214
+ }
215
+ function insertItem(db, itemId, wsId, paneId, kind, active) {
216
+ db.prepare("INSERT INTO items VALUES (?, ?, ?, ?, ?)").run(itemId, wsId, paneId, kind, active);
217
+ }
218
+ function insertEditor(db, itemId, wsId, bufferPath, contents) {
219
+ db.prepare("INSERT INTO editors VALUES (?, ?, ?, ?)").run(itemId, wsId, bufferPath, contents);
220
+ }
221
+ function insertSelection(db, editorId, wsId, start, end) {
222
+ db.prepare("INSERT INTO editor_selections VALUES (?, ?, ?, ?)").run(editorId, wsId, start, end);
223
+ }
224
+ // ── resolveZedSelection ──────────────────────────────────────
225
+ void (0, node_test_1.default)("returns active editor snapshot with selected text", async () => {
226
+ const { dir, dbPath, cleanup } = await createFixture();
227
+ (0, node_test_1.after)(cleanup);
228
+ const db = openFixture(dbPath);
229
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
230
+ insertPane(db, "p1", "w1", 1);
231
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
232
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "hello world\nconst x = 1;\n");
233
+ insertSelection(db, "i1", "w1", 0, 5);
234
+ db.close();
235
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir, now: 12345 });
236
+ strict_1.default.ok(snapshot);
237
+ strict_1.default.equal(snapshot.receivedAt, 12345);
238
+ strict_1.default.equal(snapshot.source, "zed");
239
+ strict_1.default.equal(snapshot.workspaceFolder, dir);
240
+ strict_1.default.equal(snapshot.filePath, (0, node_path_1.join)(dir, "src/main.ts"));
241
+ strict_1.default.equal(snapshot.ranges.length, 1);
242
+ strict_1.default.equal(snapshot.ranges[0].text, "hello");
243
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 0);
244
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 0);
245
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 0);
246
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
247
+ });
248
+ void (0, node_test_1.default)("returns active editor snapshot with numeric IDs (real Zed schema)", async () => {
249
+ // Zed's actual database uses INTEGER PRIMARY KEYs, not TEXT.
250
+ // node:sqlite returns them as JS numbers. The filter must accept both.
251
+ const { dir, dbPath, cleanup } = await createNumericFixture();
252
+ (0, node_test_1.after)(cleanup);
253
+ const db = openFixture(dbPath);
254
+ db.prepare("INSERT INTO workspaces VALUES (?, ?, ?)").run(1, JSON.stringify([dir]), Date.now());
255
+ db.prepare("INSERT INTO panes VALUES (?, ?, ?)").run(1, 1, 1);
256
+ db.prepare("INSERT INTO items VALUES (?, ?, ?, ?, ?)").run(1, 1, 1, "Editor", 1);
257
+ db.prepare("INSERT INTO editors VALUES (?, ?, ?, ?)").run(1, 1, (0, node_path_1.join)(dir, "src/main.ts"), "hello world\n");
258
+ db.prepare("INSERT INTO editor_selections VALUES (?, ?, ?, ?)").run(1, 1, 0, 5);
259
+ db.close();
260
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir, now: 12345 });
261
+ strict_1.default.ok(snapshot);
262
+ strict_1.default.equal(snapshot.source, "zed");
263
+ strict_1.default.equal(snapshot.ranges[0].text, "hello");
264
+ });
265
+ void (0, node_test_1.default)("matches Windows workspace paths when running in WSL", async () => {
266
+ const { dbPath, cleanup } = await createFixture();
267
+ (0, node_test_1.after)(cleanup);
268
+ const db = openFixture(dbPath);
269
+ insertWorkspace(db, "w1", JSON.stringify(["C:\\Users\\czllo\\project"]), Date.now());
270
+ insertPane(db, "p1", "w1", 1);
271
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
272
+ insertEditor(db, "i1", "w1", "C:\\Users\\czllo\\project\\src\\main.ts", "windows content");
273
+ insertSelection(db, "i1", "w1", 0, 7);
274
+ db.close();
275
+ const snapshot = (0, zed_1.resolveZedSelection)({
276
+ dbPath,
277
+ cwd: "/mnt/c/Users/czllo/project",
278
+ env: { WSL_DISTRO_NAME: "Ubuntu" },
279
+ });
280
+ strict_1.default.ok(snapshot);
281
+ strict_1.default.equal(snapshot.workspaceFolder, "/mnt/c/Users/czllo/project");
282
+ strict_1.default.equal(snapshot.filePath, "/mnt/c/Users/czllo/project/src/main.ts");
283
+ strict_1.default.equal(snapshot.ranges[0].text, "windows");
284
+ });
285
+ void (0, node_test_1.default)("matches WSL UNC workspace paths when running in WSL", async () => {
286
+ const { dbPath, cleanup } = await createFixture();
287
+ (0, node_test_1.after)(cleanup);
288
+ const db = openFixture(dbPath);
289
+ insertWorkspace(db, "w1", JSON.stringify(["\\\\wsl.localhost\\Ubuntu\\home\\julian\\project"]), Date.now());
290
+ insertPane(db, "p1", "w1", 1);
291
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
292
+ insertEditor(db, "i1", "w1", "\\\\wsl.localhost\\Ubuntu\\home\\julian\\project\\src\\main.ts", "unc content");
293
+ insertSelection(db, "i1", "w1", 0, 3);
294
+ db.close();
295
+ const snapshot = (0, zed_1.resolveZedSelection)({
296
+ dbPath,
297
+ cwd: "/home/julian/project",
298
+ env: { WSL_DISTRO_NAME: "Ubuntu" },
299
+ });
300
+ strict_1.default.ok(snapshot);
301
+ strict_1.default.equal(snapshot.workspaceFolder, "/home/julian/project");
302
+ strict_1.default.equal(snapshot.filePath, "/home/julian/project/src/main.ts");
303
+ strict_1.default.equal(snapshot.ranges[0].text, "unc");
304
+ });
305
+ void (0, node_test_1.default)("returns snapshot with ranges [] when selection is empty caret", async () => {
306
+ const { dir, dbPath, cleanup } = await createFixture();
307
+ (0, node_test_1.after)(cleanup);
308
+ const db = openFixture(dbPath);
309
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
310
+ insertPane(db, "p1", "w1", 1);
311
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
312
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "hello");
313
+ insertSelection(db, "i1", "w1", 3, 3);
314
+ db.close();
315
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
316
+ strict_1.default.ok(snapshot);
317
+ strict_1.default.equal(snapshot.ranges.length, 0);
318
+ });
319
+ void (0, node_test_1.default)("returns active empty file snapshot", async () => {
320
+ const { dir, dbPath, cleanup } = await createFixture();
321
+ (0, node_test_1.after)(cleanup);
322
+ const db = openFixture(dbPath);
323
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
324
+ insertPane(db, "p1", "w1", 1);
325
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
326
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "empty.ts"), "");
327
+ db.close();
328
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir, readFile: () => "" });
329
+ strict_1.default.ok(snapshot);
330
+ strict_1.default.equal(snapshot.filePath, (0, node_path_1.join)(dir, "empty.ts"));
331
+ strict_1.default.equal(snapshot.ranges.length, 0);
332
+ });
333
+ void (0, node_test_1.default)("returns undefined when schema is missing", async () => {
334
+ const { dir, dbPath, cleanup } = await createFixture();
335
+ (0, node_test_1.after)(cleanup);
336
+ await (0, promises_1.rm)(dbPath, { force: true });
337
+ const db = openFixture(dbPath);
338
+ db.exec("CREATE TABLE unrelated (id TEXT)");
339
+ db.close();
340
+ strict_1.default.equal((0, zed_1.resolveZedSelection)({ dbPath, cwd: dir }), undefined);
341
+ });
342
+ void (0, node_test_1.default)("skips Terminal items", async () => {
343
+ const { dir, dbPath, cleanup } = await createFixture();
344
+ (0, node_test_1.after)(cleanup);
345
+ const db = openFixture(dbPath);
346
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
347
+ insertPane(db, "p1", "w1", 1);
348
+ insertItem(db, "i1", "w1", "p1", "Terminal", 1);
349
+ db.close();
350
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
351
+ strict_1.default.equal(snapshot, undefined);
352
+ });
353
+ void (0, node_test_1.default)("returns undefined when DB is empty", async () => {
354
+ const { dir, dbPath, cleanup } = await createFixture();
355
+ (0, node_test_1.after)(cleanup);
356
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
357
+ strict_1.default.equal(snapshot, undefined);
358
+ });
359
+ void (0, node_test_1.default)("picks workspace with longest matching path", async () => {
360
+ const { dir, dbPath, cleanup } = await createFixture();
361
+ (0, node_test_1.after)(cleanup);
362
+ const db = openFixture(dbPath);
363
+ const base = (0, node_path_1.join)(dir, "projects");
364
+ const child = (0, node_path_1.join)(base, "app");
365
+ insertWorkspace(db, "w-broad", JSON.stringify([base]), 1000);
366
+ insertPane(db, "pb", "w-broad", 1);
367
+ insertItem(db, "ib", "w-broad", "pb", "Editor", 1);
368
+ insertEditor(db, "ib", "w-broad", (0, node_path_1.join)(base, "README.md"), "broad");
369
+ insertSelection(db, "ib", "w-broad", 0, 1);
370
+ insertWorkspace(db, "w-narrow", JSON.stringify([child]), 2000);
371
+ insertPane(db, "pn", "w-narrow", 1);
372
+ insertItem(db, "in", "w-narrow", "pn", "Editor", 1);
373
+ insertEditor(db, "in", "w-narrow", (0, node_path_1.join)(child, "src/main.ts"), "narrow");
374
+ insertSelection(db, "in", "w-narrow", 0, 2);
375
+ db.close();
376
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: child });
377
+ strict_1.default.ok(snapshot);
378
+ strict_1.default.equal(snapshot.ranges[0].text, "na"); // w-narrow wins
379
+ });
380
+ void (0, node_test_1.default)("normalizes reversed selections", async () => {
381
+ const { dir, dbPath, cleanup } = await createFixture();
382
+ (0, node_test_1.after)(cleanup);
383
+ const db = openFixture(dbPath);
384
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
385
+ insertPane(db, "p1", "w1", 1);
386
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
387
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "abcdefghij");
388
+ // reversed: end < start
389
+ insertSelection(db, "i1", "w1", 5, 1);
390
+ db.close();
391
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
392
+ strict_1.default.ok(snapshot);
393
+ strict_1.default.equal(snapshot.ranges[0].text, "bcde"); // chars at bytes 1-5
394
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 1);
395
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
396
+ });
397
+ void (0, node_test_1.default)("converts UTF-8 multi-byte offsets in selection", async () => {
398
+ const { dir, dbPath, cleanup } = await createFixture();
399
+ (0, node_test_1.after)(cleanup);
400
+ const text = "a€c🌟e"; // € = 3 bytes, 🌟 = 4 bytes (UTF-8)
401
+ // byte offsets: a=1, €=4(1+3), c=5, 🌟=9(5+4), e=10
402
+ const db = openFixture(dbPath);
403
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
404
+ insertPane(db, "p1", "w1", 1);
405
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
406
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
407
+ // select from € (byte 1) through 🌟 (byte 9)
408
+ insertSelection(db, "i1", "w1", 1, 9);
409
+ db.close();
410
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
411
+ strict_1.default.ok(snapshot);
412
+ // should be "€c🌟" — chars from index 1 to index 4
413
+ strict_1.default.equal(snapshot.ranges[0].text, "€c🌟");
414
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 0);
415
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 1);
416
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 0);
417
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
418
+ });
419
+ void (0, node_test_1.default)("handles multi-byte emoji selection at boundary", async () => {
420
+ const { dir, dbPath, cleanup } = await createFixture();
421
+ (0, node_test_1.after)(cleanup);
422
+ const text = "hello 🎉 world"; // 🎉 = 4 bytes
423
+ const db = openFixture(dbPath);
424
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
425
+ insertPane(db, "p1", "w1", 1);
426
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
427
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
428
+ // select just the emoji: byte offset 6 (start of 🎉) to 10 (end of 🎉)
429
+ insertSelection(db, "i1", "w1", 6, 10);
430
+ db.close();
431
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
432
+ strict_1.default.ok(snapshot);
433
+ strict_1.default.equal(snapshot.ranges[0].text, "🎉");
434
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 0);
435
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 6);
436
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 0);
437
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 8);
438
+ });
439
+ void (0, node_test_1.default)("falls back to contents column when file does not exist on disk", async () => {
440
+ const { dir, dbPath, cleanup } = await createFixture();
441
+ (0, node_test_1.after)(cleanup);
442
+ const db = openFixture(dbPath);
443
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
444
+ insertPane(db, "p1", "w1", 1);
445
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
446
+ const bufferPath = (0, node_path_1.join)(dir, "unsaved-buffer.ts");
447
+ insertEditor(db, "i1", "w1", bufferPath, "inline content here");
448
+ insertSelection(db, "i1", "w1", 0, 6);
449
+ db.close();
450
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
451
+ strict_1.default.ok(snapshot);
452
+ strict_1.default.equal(snapshot.ranges[0].text, "inline");
453
+ });
454
+ void (0, node_test_1.default)("handles multi-line selection", async () => {
455
+ const { dir, dbPath, cleanup } = await createFixture();
456
+ (0, node_test_1.after)(cleanup);
457
+ const text = "line1\nline2\nline3\n";
458
+ const db = openFixture(dbPath);
459
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
460
+ insertPane(db, "p1", "w1", 1);
461
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
462
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
463
+ // select "ne2\nline3": bytes 8 to 17
464
+ insertSelection(db, "i1", "w1", 8, 17);
465
+ db.close();
466
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
467
+ strict_1.default.ok(snapshot);
468
+ strict_1.default.equal(snapshot.ranges[0].text, "ne2\nline3");
469
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 1);
470
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 2);
471
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 2);
472
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
473
+ });
474
+ void (0, node_test_1.default)("handles multiple selections (multi-cursor)", async () => {
475
+ const { dir, dbPath, cleanup } = await createFixture();
476
+ (0, node_test_1.after)(cleanup);
477
+ const text = "abc\ndef\nghi\n";
478
+ const db = openFixture(dbPath);
479
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
480
+ insertPane(db, "p1", "w1", 1);
481
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
482
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
483
+ insertSelection(db, "i1", "w1", 0, 1);
484
+ insertSelection(db, "i1", "w1", 5, 6);
485
+ db.close();
486
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
487
+ strict_1.default.ok(snapshot);
488
+ strict_1.default.equal(snapshot.ranges.length, 2);
489
+ strict_1.default.equal(snapshot.ranges[0].text, "a");
490
+ strict_1.default.equal(snapshot.ranges[1].text, "e");
491
+ });
492
+ void (0, node_test_1.default)("newline workspace paths are parsed", async () => {
493
+ const { dir, dbPath, cleanup } = await createFixture();
494
+ (0, node_test_1.after)(cleanup);
495
+ const db = openFixture(dbPath);
496
+ insertWorkspace(db, "w1", dir + "\n/tmp/other", Date.now());
497
+ insertPane(db, "p1", "w1", 1);
498
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
499
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "x");
500
+ insertSelection(db, "i1", "w1", 0, 1);
501
+ db.close();
502
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
503
+ strict_1.default.ok(snapshot);
504
+ strict_1.default.equal(snapshot.workspaceFolder, dir);
505
+ });
506
+ // ── Polling lifecycle ─────────────────────────────────────────
507
+ void (0, node_test_1.default)("stopZedPolling clears timer and selection key", () => {
508
+ const runtime = (0, state_1.createRuntime)();
509
+ runtime.zedPollTimer = setTimeout(() => { }, 999_999);
510
+ runtime.zedPollSelectionKey = "some-key";
511
+ (0, zed_1.stopZedPolling)(runtime);
512
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
513
+ strict_1.default.equal(runtime.zedPollSelectionKey, undefined);
514
+ });
515
+ void (0, node_test_1.default)("stopZedPolling is idempotent", () => {
516
+ const runtime = (0, state_1.createRuntime)();
517
+ (0, zed_1.stopZedPolling)(runtime);
518
+ (0, zed_1.stopZedPolling)(runtime);
519
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
520
+ });
521
+ function createContext(cwd = "/tmp") {
522
+ return {
523
+ cwd,
524
+ hasUI: false,
525
+ ui: { setWidget: () => { }, notify: () => { }, select: () => Promise.resolve(undefined), pasteToEditor: () => { } },
526
+ };
527
+ }
528
+ function createCandidate(workspaceFolder = "/tmp") {
529
+ return {
530
+ path: "/tmp/stale.lock",
531
+ lock: {
532
+ version: 1,
533
+ ide: "vscode",
534
+ name: "VS Code",
535
+ transport: "ws",
536
+ host: "127.0.0.1",
537
+ port: 49152,
538
+ authToken: "token",
539
+ workspaceFolders: [workspaceFolder],
540
+ createdAt: new Date(0).toISOString(),
541
+ updatedAt: new Date(0).toISOString(),
542
+ },
543
+ mtimeMs: 0,
544
+ matchLength: 1,
545
+ workspaceFolder,
546
+ };
547
+ }
548
+ void (0, node_test_1.default)("startZedPolling returns false when not in Zed terminal", () => {
549
+ const runtime = (0, state_1.createRuntime)();
550
+ const result = (0, zed_1.startZedPolling)(runtime, createContext(), { env: {} });
551
+ strict_1.default.equal(result, false);
552
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
553
+ });
554
+ void (0, node_test_1.default)("startZedPolling returns false when DB path not found", () => {
555
+ const runtime = (0, state_1.createRuntime)();
556
+ const result = (0, zed_1.startZedPolling)(runtime, createContext(), { env: { ZED_TERM: "true" } });
557
+ strict_1.default.equal(result, false);
558
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
559
+ });
560
+ void (0, node_test_1.default)("startZedPolling clears stale WebSocket candidate state", async () => {
561
+ const { dir, dbPath, cleanup } = await createFixture();
562
+ (0, node_test_1.after)(cleanup);
563
+ const runtime = (0, state_1.createRuntime)();
564
+ runtime.currentCandidate = createCandidate(dir);
565
+ runtime.connectionStatus = "error";
566
+ const started = (0, zed_1.startZedPolling)(runtime, createContext(dir), {
567
+ dbPath,
568
+ env: { ZED_TERM: "true" },
569
+ intervalMs: 999_999,
570
+ });
571
+ strict_1.default.equal(started, true);
572
+ strict_1.default.equal(runtime.currentCandidate, undefined);
573
+ strict_1.default.equal(runtime.connection, undefined);
574
+ strict_1.default.equal(runtime.connectedServer?.ide, "zed");
575
+ strict_1.default.equal(runtime.connectionStatus, "connected");
576
+ (0, zed_1.stopZedPolling)(runtime);
577
+ });
578
+ //# sourceMappingURL=zed.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zed.test.js","sourceRoot":"","sources":["../../test/zed.test.ts"],"names":[],"mappings":"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"}