mdmaid-desk 0.1.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/dist/api-client.d.ts +20 -0
  4. package/dist/api-client.js +264 -0
  5. package/dist/api-client.js.map +1 -0
  6. package/dist/api-types.d.ts +51 -0
  7. package/dist/api-types.js +2 -0
  8. package/dist/api-types.js.map +1 -0
  9. package/dist/auth-state.d.ts +2 -0
  10. package/dist/auth-state.js +113 -0
  11. package/dist/auth-state.js.map +1 -0
  12. package/dist/catalog.d.ts +46 -0
  13. package/dist/catalog.js +659 -0
  14. package/dist/catalog.js.map +1 -0
  15. package/dist/cli.d.ts +16 -0
  16. package/dist/cli.js +370 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/daemon-state.d.ts +17 -0
  19. package/dist/daemon-state.js +204 -0
  20. package/dist/daemon-state.js.map +1 -0
  21. package/dist/domain.d.ts +49 -0
  22. package/dist/domain.js +44 -0
  23. package/dist/domain.js.map +1 -0
  24. package/dist/fs-durability.d.ts +2 -0
  25. package/dist/fs-durability.js +35 -0
  26. package/dist/fs-durability.js.map +1 -0
  27. package/dist/package-info.d.ts +1 -0
  28. package/dist/package-info.js +17 -0
  29. package/dist/package-info.js.map +1 -0
  30. package/dist/server.d.ts +18 -0
  31. package/dist/server.js +702 -0
  32. package/dist/server.js.map +1 -0
  33. package/dist/sqlite-storage.d.ts +17 -0
  34. package/dist/sqlite-storage.js +342 -0
  35. package/dist/sqlite-storage.js.map +1 -0
  36. package/dist/storage.d.ts +12 -0
  37. package/dist/storage.js +2 -0
  38. package/dist/storage.js.map +1 -0
  39. package/dist/terminal-text.d.ts +9 -0
  40. package/dist/terminal-text.js +156 -0
  41. package/dist/terminal-text.js.map +1 -0
  42. package/dist/tui.d.ts +63 -0
  43. package/dist/tui.js +912 -0
  44. package/dist/tui.js.map +1 -0
  45. package/dist/web-client.d.ts +21 -0
  46. package/dist/web-client.js +337 -0
  47. package/dist/web-client.js.map +1 -0
  48. package/dist/web-styles.d.ts +1 -0
  49. package/dist/web-styles.js +249 -0
  50. package/dist/web-styles.js.map +1 -0
  51. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type DocumentFilters, type StoredDocument, type Workspace } from "./domain.js";
2
+ import type { CatalogStorage } from "./storage.js";
3
+ export declare const SQLITE_SCHEMA_VERSION = 1;
4
+ export declare class SqliteCatalogStorage implements CatalogStorage {
5
+ #private;
6
+ private constructor();
7
+ static open(databasePath: string): SqliteCatalogStorage;
8
+ close(): void;
9
+ isEmpty(): boolean;
10
+ transaction<T>(operation: () => T): T;
11
+ listWorkspaces(): Workspace[];
12
+ getWorkspace(id: string): Workspace | undefined;
13
+ saveWorkspace(workspace: Workspace): void;
14
+ listDocuments(filters?: DocumentFilters): StoredDocument[];
15
+ getDocument(id: string): StoredDocument | undefined;
16
+ saveDocument(document: StoredDocument): void;
17
+ }
@@ -0,0 +1,342 @@
1
+ import { chmodSync, lstatSync, mkdirSync } from "node:fs";
2
+ import { dirname, extname, isAbsolute, relative, resolve, sep } from "node:path";
3
+ import Database from "better-sqlite3";
4
+ import { isAttention, isDocumentKind, } from "./domain.js";
5
+ export const SQLITE_SCHEMA_VERSION = 1;
6
+ const INITIAL_SCHEMA = `
7
+ CREATE TABLE workspaces (
8
+ id TEXT PRIMARY KEY,
9
+ name TEXT NOT NULL,
10
+ root TEXT NOT NULL
11
+ ) STRICT;
12
+
13
+ CREATE TABLE workspace_artifact_roots (
14
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
15
+ path TEXT NOT NULL,
16
+ PRIMARY KEY (workspace_id, path)
17
+ ) STRICT;
18
+
19
+ CREATE TABLE documents (
20
+ id TEXT PRIMARY KEY,
21
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE RESTRICT,
22
+ task_id TEXT,
23
+ producer TEXT,
24
+ kind TEXT NOT NULL,
25
+ title TEXT NOT NULL,
26
+ path TEXT NOT NULL,
27
+ attention TEXT NOT NULL,
28
+ content_hash TEXT NOT NULL,
29
+ revision INTEGER NOT NULL CHECK (revision > 0),
30
+ opened_revision INTEGER CHECK (opened_revision IS NULL OR opened_revision > 0),
31
+ completed_revision INTEGER CHECK (completed_revision IS NULL OR completed_revision > 0),
32
+ archived_at TEXT,
33
+ missing_at TEXT,
34
+ created_at TEXT NOT NULL,
35
+ updated_at TEXT NOT NULL,
36
+ UNIQUE (workspace_id, path)
37
+ ) STRICT;
38
+
39
+ CREATE TABLE tags (
40
+ name TEXT PRIMARY KEY
41
+ ) STRICT;
42
+
43
+ CREATE TABLE document_tags (
44
+ document_id TEXT NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
45
+ tag_name TEXT NOT NULL REFERENCES tags(name) ON DELETE CASCADE,
46
+ PRIMARY KEY (document_id, tag_name)
47
+ ) STRICT;
48
+
49
+ CREATE INDEX documents_workspace_idx ON documents(workspace_id);
50
+ CREATE INDEX documents_task_idx ON documents(task_id);
51
+ CREATE INDEX documents_kind_idx ON documents(kind);
52
+ CREATE INDEX documents_attention_idx ON documents(attention);
53
+ CREATE INDEX documents_updated_idx ON documents(updated_at DESC);
54
+ CREATE INDEX document_tags_tag_idx ON document_tags(tag_name);
55
+ `;
56
+ export class SqliteCatalogStorage {
57
+ #database;
58
+ constructor(database) {
59
+ this.#database = database;
60
+ }
61
+ static open(databasePath) {
62
+ const canonicalPath = resolve(databasePath);
63
+ mkdirSync(dirname(canonicalPath), { recursive: true, mode: 0o700 });
64
+ try {
65
+ const info = lstatSync(canonicalPath);
66
+ if (info.isSymbolicLink() || !info.isFile()) {
67
+ throw new Error("SQLite catalog must be a regular, non-symlink file");
68
+ }
69
+ }
70
+ catch (error) {
71
+ if (!isNodeError(error) || error.code !== "ENOENT") {
72
+ throw error;
73
+ }
74
+ }
75
+ const database = new Database(canonicalPath);
76
+ try {
77
+ chmodSync(canonicalPath, 0o600);
78
+ database.pragma("foreign_keys = ON");
79
+ database.pragma("journal_mode = DELETE");
80
+ database.pragma("busy_timeout = 5000");
81
+ migrate(database);
82
+ return new SqliteCatalogStorage(database);
83
+ }
84
+ catch (error) {
85
+ database.close();
86
+ throw error;
87
+ }
88
+ }
89
+ close() {
90
+ if (this.#database.open) {
91
+ this.#database.close();
92
+ }
93
+ }
94
+ isEmpty() {
95
+ const row = this.#database
96
+ .prepare("SELECT (SELECT count(*) FROM workspaces) + (SELECT count(*) FROM documents) AS count")
97
+ .get();
98
+ return row?.count === 0;
99
+ }
100
+ transaction(operation) {
101
+ return this.#database.transaction(operation)();
102
+ }
103
+ listWorkspaces() {
104
+ const rows = this.#database
105
+ .prepare("SELECT id, name, root FROM workspaces ORDER BY id")
106
+ .all();
107
+ const roots = this.#database.prepare("SELECT path FROM workspace_artifact_roots WHERE workspace_id = ? ORDER BY path");
108
+ return rows.map((row) => validateWorkspaceRow(row, roots.all(row.id).map(({ path }) => path)));
109
+ }
110
+ getWorkspace(id) {
111
+ const row = this.#database
112
+ .prepare("SELECT id, name, root FROM workspaces WHERE id = ?")
113
+ .get(id);
114
+ if (!row) {
115
+ return undefined;
116
+ }
117
+ const artifactRoots = this.#database
118
+ .prepare("SELECT path FROM workspace_artifact_roots WHERE workspace_id = ? ORDER BY path")
119
+ .all(id)
120
+ .map(({ path }) => path);
121
+ return validateWorkspaceRow(row, artifactRoots);
122
+ }
123
+ saveWorkspace(workspace) {
124
+ this.transaction(() => {
125
+ this.#database
126
+ .prepare(`INSERT INTO workspaces (id, name, root)
127
+ VALUES (@id, @name, @root)
128
+ ON CONFLICT(id) DO UPDATE SET name = excluded.name, root = excluded.root`)
129
+ .run(workspace);
130
+ this.#database
131
+ .prepare("DELETE FROM workspace_artifact_roots WHERE workspace_id = ?")
132
+ .run(workspace.id);
133
+ const insertRoot = this.#database.prepare("INSERT INTO workspace_artifact_roots (workspace_id, path) VALUES (?, ?)");
134
+ for (const artifactRoot of workspace.artifactRoots) {
135
+ insertRoot.run(workspace.id, artifactRoot);
136
+ }
137
+ });
138
+ }
139
+ listDocuments(filters = {}) {
140
+ const clauses = [];
141
+ const parameters = [];
142
+ if (filters.workspaceId !== undefined) {
143
+ clauses.push("d.workspace_id = ?");
144
+ parameters.push(filters.workspaceId);
145
+ }
146
+ if (filters.taskId !== undefined) {
147
+ clauses.push("d.task_id = ?");
148
+ parameters.push(filters.taskId);
149
+ }
150
+ if (filters.kind !== undefined) {
151
+ clauses.push("d.kind = ?");
152
+ parameters.push(filters.kind);
153
+ }
154
+ if (filters.attention !== undefined) {
155
+ clauses.push("d.attention = ?");
156
+ parameters.push(filters.attention);
157
+ }
158
+ if (filters.tag !== undefined) {
159
+ clauses.push("EXISTS (SELECT 1 FROM document_tags dt WHERE dt.document_id = d.id AND dt.tag_name = ?)");
160
+ parameters.push(filters.tag);
161
+ }
162
+ if (filters.status === "done") {
163
+ clauses.push("d.completed_revision = d.revision");
164
+ }
165
+ else if (filters.status === "reading") {
166
+ clauses.push("d.completed_revision IS NOT d.revision AND d.opened_revision = d.revision");
167
+ }
168
+ else if (filters.status === "unread") {
169
+ clauses.push("d.completed_revision IS NOT d.revision AND d.opened_revision IS NOT d.revision");
170
+ }
171
+ clauses.push(filters.archived === true ? "d.archived_at IS NOT NULL" : "d.archived_at IS NULL");
172
+ if (filters.missing !== undefined) {
173
+ clauses.push(filters.missing ? "d.missing_at IS NOT NULL" : "d.missing_at IS NULL");
174
+ }
175
+ const where = clauses.length > 0 ? ` WHERE ${clauses.join(" AND ")}` : "";
176
+ const rows = this.#database
177
+ .prepare(`SELECT d.* FROM documents d${where} ORDER BY d.updated_at DESC, d.id`)
178
+ .all(...parameters);
179
+ return rows.map((row) => this.#mapDocument(row));
180
+ }
181
+ getDocument(id) {
182
+ const row = this.#database
183
+ .prepare("SELECT * FROM documents WHERE id = ?")
184
+ .get(id);
185
+ return row ? this.#mapDocument(row) : undefined;
186
+ }
187
+ saveDocument(document) {
188
+ this.transaction(() => {
189
+ this.#database
190
+ .prepare(`INSERT INTO documents (
191
+ id, workspace_id, task_id, producer, kind, title, path, attention,
192
+ content_hash, revision, opened_revision, completed_revision,
193
+ archived_at, missing_at, created_at, updated_at
194
+ ) VALUES (
195
+ @id, @workspaceId, @taskId, @producer, @kind, @title, @path, @attention,
196
+ @contentHash, @revision, @openedRevision, @completedRevision,
197
+ @archivedAt, @missingAt, @createdAt, @updatedAt
198
+ )
199
+ ON CONFLICT(id) DO UPDATE SET
200
+ workspace_id = excluded.workspace_id,
201
+ task_id = excluded.task_id,
202
+ producer = excluded.producer,
203
+ kind = excluded.kind,
204
+ title = excluded.title,
205
+ path = excluded.path,
206
+ attention = excluded.attention,
207
+ content_hash = excluded.content_hash,
208
+ revision = excluded.revision,
209
+ opened_revision = excluded.opened_revision,
210
+ completed_revision = excluded.completed_revision,
211
+ archived_at = excluded.archived_at,
212
+ missing_at = excluded.missing_at,
213
+ updated_at = excluded.updated_at`)
214
+ .run({
215
+ id: document.id,
216
+ workspaceId: document.workspaceId,
217
+ taskId: document.taskId ?? null,
218
+ producer: document.producer ?? null,
219
+ kind: document.kind,
220
+ title: document.title,
221
+ path: document.path,
222
+ attention: document.attention,
223
+ contentHash: document.contentHash,
224
+ revision: document.revision,
225
+ openedRevision: document.openedRevision,
226
+ completedRevision: document.completedRevision,
227
+ archivedAt: document.archivedAt,
228
+ missingAt: document.missingAt,
229
+ createdAt: document.createdAt,
230
+ updatedAt: document.updatedAt,
231
+ });
232
+ this.#database
233
+ .prepare("DELETE FROM document_tags WHERE document_id = ?")
234
+ .run(document.id);
235
+ const saveTag = this.#database.prepare("INSERT INTO tags (name) VALUES (?) ON CONFLICT(name) DO NOTHING");
236
+ const assignTag = this.#database.prepare("INSERT INTO document_tags (document_id, tag_name) VALUES (?, ?)");
237
+ for (const tag of document.tags) {
238
+ saveTag.run(tag);
239
+ assignTag.run(document.id, tag);
240
+ }
241
+ this.#database.exec("DELETE FROM tags WHERE NOT EXISTS (SELECT 1 FROM document_tags WHERE document_tags.tag_name = tags.name)");
242
+ });
243
+ }
244
+ #mapDocument(row) {
245
+ const tags = this.#database
246
+ .prepare(`SELECT t.name
247
+ FROM tags t
248
+ JOIN document_tags dt ON dt.tag_name = t.name
249
+ WHERE dt.document_id = ?
250
+ ORDER BY t.name`)
251
+ .all(row.id)
252
+ .map(({ name }) => name);
253
+ validateDocumentRow(row, tags);
254
+ return {
255
+ id: row.id,
256
+ workspaceId: row.workspace_id,
257
+ ...(row.task_id === null ? {} : { taskId: row.task_id }),
258
+ ...(row.producer === null ? {} : { producer: row.producer }),
259
+ kind: row.kind,
260
+ title: row.title,
261
+ path: row.path,
262
+ attention: row.attention,
263
+ tags,
264
+ contentHash: row.content_hash,
265
+ revision: row.revision,
266
+ openedRevision: row.opened_revision,
267
+ completedRevision: row.completed_revision,
268
+ archivedAt: row.archived_at,
269
+ missingAt: row.missing_at,
270
+ createdAt: row.created_at,
271
+ updatedAt: row.updated_at,
272
+ };
273
+ }
274
+ }
275
+ function migrate(database) {
276
+ const rawVersion = database.pragma("user_version", { simple: true });
277
+ if (typeof rawVersion !== "number" || !Number.isSafeInteger(rawVersion)) {
278
+ throw new Error("could not determine SQLite catalog schema version");
279
+ }
280
+ if (rawVersion > SQLITE_SCHEMA_VERSION) {
281
+ throw new Error(`unsupported SQLite catalog schema ${rawVersion}`);
282
+ }
283
+ if (rawVersion < 1) {
284
+ database.transaction(() => {
285
+ database.exec(INITIAL_SCHEMA);
286
+ database.pragma("user_version = 1");
287
+ })();
288
+ }
289
+ }
290
+ function validateWorkspaceRow(row, artifactRoots) {
291
+ if (!/^[a-z0-9][a-z0-9-]{0,63}$/.test(row.id) ||
292
+ row.name.trim() === "" ||
293
+ !isAbsolute(row.root) ||
294
+ artifactRoots.length === 0 ||
295
+ artifactRoots.some((artifactRoot) => !isAbsolute(artifactRoot) || !isWithin(row.root, artifactRoot))) {
296
+ throw new Error(`invalid workspace row ${row.id}`);
297
+ }
298
+ return { ...row, artifactRoots };
299
+ }
300
+ function validateDocumentRow(row, tags) {
301
+ if (!/^doc-[a-f0-9]{20}$/.test(row.id) ||
302
+ !/^[a-z0-9][a-z0-9-]{0,63}$/.test(row.workspace_id) ||
303
+ (row.task_id !== null && row.task_id.trim() === "") ||
304
+ (row.producer !== null && row.producer.trim() === "") ||
305
+ !isDocumentKind(row.kind) ||
306
+ row.title.trim() === "" ||
307
+ !isAbsolute(row.path) ||
308
+ extname(row.path).toLowerCase() !== ".md" ||
309
+ !isAttention(row.attention) ||
310
+ !/^[a-f0-9]{64}$/.test(row.content_hash) ||
311
+ !isPositiveInteger(row.revision) ||
312
+ !isProgressRevision(row.opened_revision, row.revision) ||
313
+ !isProgressRevision(row.completed_revision, row.revision) ||
314
+ !isNullableDate(row.archived_at) ||
315
+ !isNullableDate(row.missing_at) ||
316
+ !isDate(row.created_at) ||
317
+ !isDate(row.updated_at) ||
318
+ tags.some((tag) => !/^[a-z0-9][a-z0-9._/-]{0,63}$/.test(tag))) {
319
+ throw new Error(`invalid document row ${row.id}`);
320
+ }
321
+ }
322
+ function isPositiveInteger(value) {
323
+ return Number.isSafeInteger(value) && value > 0;
324
+ }
325
+ function isProgressRevision(value, revision) {
326
+ return value === null || (isPositiveInteger(value) && value <= revision);
327
+ }
328
+ function isNullableDate(value) {
329
+ return value === null || isDate(value);
330
+ }
331
+ function isDate(value) {
332
+ return !Number.isNaN(Date.parse(value));
333
+ }
334
+ function isWithin(root, candidate) {
335
+ const rel = relative(root, candidate);
336
+ return (rel === "" ||
337
+ (!rel.startsWith(`..${sep}`) && rel !== ".." && !isAbsolute(rel)));
338
+ }
339
+ function isNodeError(error) {
340
+ return error instanceof Error && "code" in error;
341
+ }
342
+ //# sourceMappingURL=sqlite-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-storage.js","sourceRoot":"","sources":["../src/sqlite-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DocumentFilters, StoredDocument, Workspace } from "./domain.js";
2
+ export interface CatalogStorage {
3
+ close(): void;
4
+ isEmpty(): boolean;
5
+ transaction<T>(operation: () => T): T;
6
+ listWorkspaces(): Workspace[];
7
+ getWorkspace(id: string): Workspace | undefined;
8
+ saveWorkspace(workspace: Workspace): void;
9
+ listDocuments(filters?: DocumentFilters): StoredDocument[];
10
+ getDocument(id: string): StoredDocument | undefined;
11
+ saveDocument(document: StoredDocument): void;
12
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface TerminalSanitizeOptions {
2
+ preserveSgr?: boolean;
3
+ }
4
+ /**
5
+ * Removes terminal operations from boundary text. Trusted renderer-owned SGR
6
+ * styling can be retained, while cursor movement, OSC, clipboard, hyperlinks,
7
+ * C0/C1 controls, and bidi overrides are always discarded.
8
+ */
9
+ export declare function sanitizeTerminalText(value: string, options?: TerminalSanitizeOptions): string;
@@ -0,0 +1,156 @@
1
+ const ESC = 0x1b;
2
+ const BEL = 0x07;
3
+ const CSI = 0x9b;
4
+ const ST = 0x9c;
5
+ const OSC = 0x9d;
6
+ const STRING_CONTROLS = new Set([0x90, 0x98, 0x9e, 0x9f]);
7
+ /**
8
+ * Removes terminal operations from boundary text. Trusted renderer-owned SGR
9
+ * styling can be retained, while cursor movement, OSC, clipboard, hyperlinks,
10
+ * C0/C1 controls, and bidi overrides are always discarded.
11
+ */
12
+ export function sanitizeTerminalText(value, options = {}) {
13
+ const input = value.replace(/\r\n?/g, "\n");
14
+ let output = "";
15
+ let index = 0;
16
+ while (index < input.length) {
17
+ const code = input.charCodeAt(index);
18
+ if (code === ESC) {
19
+ const scanned = scanEscape(input, index + 1);
20
+ if (options.preserveSgr && scanned.sgr !== undefined) {
21
+ output += scanned.sgr;
22
+ }
23
+ index = scanned.end;
24
+ continue;
25
+ }
26
+ if (code === CSI) {
27
+ index = scanCsi(input, index + 1).end;
28
+ continue;
29
+ }
30
+ if (code === OSC) {
31
+ index = skipString(input, index + 1, true);
32
+ continue;
33
+ }
34
+ if (STRING_CONTROLS.has(code)) {
35
+ index = skipString(input, index + 1, false);
36
+ continue;
37
+ }
38
+ if (code === 0x09) {
39
+ output += " ";
40
+ index += 1;
41
+ continue;
42
+ }
43
+ if (code === 0x0a) {
44
+ output += "\n";
45
+ index += 1;
46
+ continue;
47
+ }
48
+ if (code < 0x20 ||
49
+ (code >= 0x7f && code <= 0x9f) ||
50
+ (code >= 0x202a && code <= 0x202e) ||
51
+ (code >= 0x2066 && code <= 0x2069)) {
52
+ index += 1;
53
+ continue;
54
+ }
55
+ output += input[index];
56
+ index += 1;
57
+ }
58
+ return output;
59
+ }
60
+ function scanEscape(value, index) {
61
+ if (index >= value.length) {
62
+ return { end: index };
63
+ }
64
+ const introducer = value.charCodeAt(index);
65
+ if (introducer === 0x5b) {
66
+ return scanCsi(value, index + 1);
67
+ }
68
+ if (introducer === 0x5d) {
69
+ return { end: skipString(value, index + 1, true) };
70
+ }
71
+ if ([0x50, 0x58, 0x5e, 0x5f].includes(introducer)) {
72
+ return { end: skipString(value, index + 1, false) };
73
+ }
74
+ let cursor = index;
75
+ while (cursor < value.length) {
76
+ const code = value.charCodeAt(cursor);
77
+ cursor += 1;
78
+ if (code >= 0x30 && code <= 0x7e) {
79
+ return { end: cursor };
80
+ }
81
+ if (code < 0x20 || code > 0x2f) {
82
+ return { end: cursor };
83
+ }
84
+ }
85
+ return { end: cursor };
86
+ }
87
+ function scanCsi(value, index) {
88
+ let cursor = index;
89
+ while (cursor < value.length) {
90
+ const code = value.charCodeAt(cursor);
91
+ cursor += 1;
92
+ if (code < 0x40 || code > 0x7e) {
93
+ continue;
94
+ }
95
+ const parameters = value.slice(index, cursor - 1);
96
+ if (code === 0x6d && isSafeSgr(parameters)) {
97
+ return { end: cursor, sgr: `\u001b[${parameters}m` };
98
+ }
99
+ return { end: cursor };
100
+ }
101
+ return { end: cursor };
102
+ }
103
+ function isSafeSgr(parameters) {
104
+ if (parameters === "") {
105
+ return true;
106
+ }
107
+ if (!/^\d+(?:;\d+)*$/.test(parameters)) {
108
+ return false;
109
+ }
110
+ const values = parameters.split(";").map(Number);
111
+ for (let index = 0; index < values.length; index += 1) {
112
+ const value = values[index] ?? -1;
113
+ if (value === 38) {
114
+ const mode = values[index + 1];
115
+ if (mode === 5 && isByte(values[index + 2])) {
116
+ index += 2;
117
+ continue;
118
+ }
119
+ if (mode === 2 &&
120
+ isByte(values[index + 2]) &&
121
+ isByte(values[index + 3]) &&
122
+ isByte(values[index + 4])) {
123
+ index += 4;
124
+ continue;
125
+ }
126
+ return false;
127
+ }
128
+ if ([0, 1, 2, 3, 4, 7, 9, 22, 23, 24, 27, 29, 39].includes(value) ||
129
+ (value >= 30 && value <= 37) ||
130
+ (value >= 90 && value <= 97)) {
131
+ continue;
132
+ }
133
+ return false;
134
+ }
135
+ return true;
136
+ }
137
+ function isByte(value) {
138
+ return value !== undefined && Number.isInteger(value) && value >= 0 && value <= 255;
139
+ }
140
+ function skipString(value, index, bellTerminates) {
141
+ let cursor = index;
142
+ while (cursor < value.length) {
143
+ const code = value.charCodeAt(cursor);
144
+ if ((bellTerminates && code === BEL) || code === ST) {
145
+ return cursor + 1;
146
+ }
147
+ if (code === ESC &&
148
+ cursor + 1 < value.length &&
149
+ value.charCodeAt(cursor + 1) === 0x5c) {
150
+ return cursor + 2;
151
+ }
152
+ cursor += 1;
153
+ }
154
+ return cursor;
155
+ }
156
+ //# sourceMappingURL=terminal-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-text.js","sourceRoot":"","sources":["../src/terminal-text.ts"],"names":[],"mappings":"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"}