syntaqlite 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/engine.js CHANGED
@@ -2,6 +2,10 @@
2
2
  // Licensed under the Apache License, Version 2.0.
3
3
  const DEFAULT_RUNTIME_JS = new URL("../wasm/syntaqlite-runtime.js", import.meta.url).href;
4
4
  const DEFAULT_RUNTIME_WASM = new URL("../wasm/syntaqlite-runtime.wasm", import.meta.url).href;
5
+ /** Host-language code for the embedded-SQL WASM exports. */
6
+ function embeddedLangCode(lang) {
7
+ return lang === "python" ? 0 : 1;
8
+ }
5
9
  export class Engine {
6
10
  constructor(config = {}) {
7
11
  this.status = "Loading...";
@@ -9,16 +13,12 @@ export class Engine {
9
13
  this.module = undefined;
10
14
  this.encoder = new TextEncoder();
11
15
  this.decoder = new TextDecoder();
16
+ this.sessionNewRaw = undefined;
17
+ this.sessionFreeRaw = undefined;
12
18
  this.setDialectRaw = undefined;
13
19
  this.clearDialectRaw = undefined;
14
20
  this.allocRaw = undefined;
15
21
  this.freeRaw = undefined;
16
- this.astRaw = undefined;
17
- this.astJsonRaw = undefined;
18
- this.fmtRaw = undefined;
19
- this.diagnosticsRaw = undefined;
20
- this.semanticTokensRaw = undefined;
21
- this.completionsRaw = undefined;
22
22
  this.resultPtrRaw = undefined;
23
23
  this.resultLenRaw = undefined;
24
24
  this.resultFreeRaw = undefined;
@@ -27,12 +27,16 @@ export class Engine {
27
27
  this.clearCflagRaw = undefined;
28
28
  this.clearAllCflagsRaw = undefined;
29
29
  this.getCflagListRaw = undefined;
30
- this.setSessionContextRaw = undefined;
31
- this.clearSessionContextRaw = undefined;
32
- this.setSessionContextDdlRaw = undefined;
33
- this.setLanguageModeRaw = undefined;
34
- this.extractRaw = undefined;
30
+ this.embeddedExtractRaw = undefined;
31
+ this.embeddedDiagnosticsRaw = undefined;
32
+ this.embeddedSemanticTokensRaw = undefined;
33
+ this.lspMessageRaw = undefined;
34
+ this.rpcRaw = undefined;
35
35
  this.currentLangMode = "sql";
36
+ /** Handle for the WASM session all calls run against. 0 = not created yet. */
37
+ this.session = 0;
38
+ /** Sequence for `syntaqlite/setSessionContext` request ids. */
39
+ this.contextSeq = 0;
36
40
  /** Last session context applied, so it can be re-applied after dialect switches. */
37
41
  this.sessionContext = null;
38
42
  this.config = config;
@@ -40,23 +44,31 @@ export class Engine {
40
44
  get ready() {
41
45
  return this.module !== undefined;
42
46
  }
47
+ /** The underlying Emscripten module, e.g. to share with another Engine
48
+ * via `EngineConfig.runtime`. Undefined until load() completes. */
49
+ get runtimeModule() {
50
+ return this.module;
51
+ }
52
+ /** Free the WASM session. The engine must not be used after this. */
53
+ dispose() {
54
+ if (this.session !== 0 && this.sessionFreeRaw) {
55
+ this.sessionFreeRaw(this.session);
56
+ this.session = 0;
57
+ }
58
+ }
43
59
  updateStatus(text, isError = false) {
44
60
  this.status = text;
45
61
  this.statusError = isError;
46
62
  }
47
63
  async load() {
48
- const module = await loadRuntimeModule(this.config);
64
+ const module = this.config.runtime ?? (await loadRuntimeModule(this.config));
49
65
  this.module = module;
66
+ this.sessionNewRaw = this.resolveRuntimeFn("wasm_session_new");
67
+ this.sessionFreeRaw = this.resolveRuntimeFn("wasm_session_free");
50
68
  this.setDialectRaw = this.tryResolveRuntimeFn("wasm_set_dialect");
51
69
  this.clearDialectRaw = this.tryResolveRuntimeFn("wasm_clear_dialect");
52
70
  this.allocRaw = this.resolveRuntimeFn("wasm_alloc");
53
71
  this.freeRaw = this.resolveRuntimeFn("wasm_free");
54
- this.astRaw = this.tryResolveRuntimeFn("wasm_ast");
55
- this.astJsonRaw = this.tryResolveRuntimeFn("wasm_ast_json");
56
- this.fmtRaw = this.resolveRuntimeFn("wasm_fmt");
57
- this.diagnosticsRaw = this.tryResolveRuntimeFn("wasm_diagnostics");
58
- this.semanticTokensRaw = this.tryResolveRuntimeFn("wasm_semantic_tokens");
59
- this.completionsRaw = this.tryResolveRuntimeFn("wasm_completions");
60
72
  this.resultPtrRaw = this.resolveRuntimeFn("wasm_result_ptr");
61
73
  this.resultLenRaw = this.resolveRuntimeFn("wasm_result_len");
62
74
  this.resultFreeRaw = this.resolveRuntimeFn("wasm_result_free");
@@ -65,11 +77,15 @@ export class Engine {
65
77
  this.clearCflagRaw = this.tryResolveRuntimeFn("wasm_clear_cflag");
66
78
  this.clearAllCflagsRaw = this.tryResolveRuntimeFn("wasm_clear_all_cflags");
67
79
  this.getCflagListRaw = this.tryResolveRuntimeFn("wasm_get_cflag_list");
68
- this.setSessionContextRaw = this.tryResolveRuntimeFn("wasm_set_session_context");
69
- this.clearSessionContextRaw = this.tryResolveRuntimeFn("wasm_clear_session_context");
70
- this.setSessionContextDdlRaw = this.tryResolveRuntimeFn("wasm_set_session_context_ddl");
71
- this.setLanguageModeRaw = this.tryResolveRuntimeFn("wasm_set_language_mode");
72
- this.extractRaw = this.tryResolveRuntimeFn("wasm_extract");
80
+ this.embeddedExtractRaw = this.tryResolveRuntimeFn("wasm_embedded_extract");
81
+ this.embeddedDiagnosticsRaw = this.tryResolveRuntimeFn("wasm_embedded_diagnostics");
82
+ this.embeddedSemanticTokensRaw = this.tryResolveRuntimeFn("wasm_embedded_semantic_tokens");
83
+ this.lspMessageRaw = this.tryResolveRuntimeFn("wasm_lsp_message");
84
+ this.rpcRaw = this.tryResolveRuntimeFn("wasm_rpc");
85
+ this.session = this.sessionNewRaw() >>> 0;
86
+ if (this.session === 0) {
87
+ throw new Error("wasm_session_new failed");
88
+ }
73
89
  }
74
90
  resolveRuntimeFn(symbol) {
75
91
  const fn = this.module[`_${symbol}`];
@@ -158,12 +174,12 @@ export class Engine {
158
174
  setDialectPointer(ptr) {
159
175
  if (!this.setDialectRaw)
160
176
  throw new Error("dialect switching not supported by this runtime");
161
- const status = this.setDialectRaw(ptr >>> 0);
177
+ const status = this.setDialectRaw(this.session, ptr >>> 0);
162
178
  const detail = this.readAndClearResult();
163
179
  if (status !== 0) {
164
180
  throw new Error(detail || `wasm_set_dialect failed with status ${status}`);
165
181
  }
166
- // The WASM invalidates the LSP host on dialect switch, discarding any
182
+ // The WASM drops the language server on dialect switch, discarding any
167
183
  // session context. Re-apply it so callers don't have to track this.
168
184
  this.reapplySessionContext();
169
185
  }
@@ -180,46 +196,43 @@ export class Engine {
180
196
  clearDialectPointer() {
181
197
  if (!this.clearDialectRaw)
182
198
  return;
183
- this.clearDialectRaw();
199
+ this.clearDialectRaw(this.session);
184
200
  this.readAndClearResult();
185
201
  }
186
- runAst(sql) {
187
- if (!this.astRaw)
188
- return { ok: false, text: "AST dump not supported by this runtime" };
189
- const status = this.withInput(sql, (ptr, len) => this.astRaw(ptr, len));
190
- const text = this.readAndClearResult();
191
- return { ok: status === 0, text };
192
- }
193
- runAstJson(sql) {
194
- if (!this.astJsonRaw)
195
- return { ok: false, error: "AST JSON not supported by this runtime" };
196
- const count = this.withInput(sql, (ptr, len) => this.astJsonRaw(ptr, len));
197
- const text = this.readAndClearResult();
198
- if (count < 0)
199
- return { ok: false, error: text };
200
- if (count === 0)
201
- return { ok: true, statements: [] };
202
- try {
203
- return { ok: true, statements: JSON.parse(text, (_, v) => (v === null ? undefined : v)) };
204
- }
205
- catch (e) {
206
- return { ok: false, error: `JSON parse error: ${e.message}` };
207
- }
208
- }
209
- runFmt(sql, opts) {
210
- const status = this.withInput(sql, (ptr, len) => this.fmtRaw(ptr, len, opts.lineWidth, opts.indentWidth, opts.keywordCase, opts.semicolons ? 1 : 0));
211
- const text = this.readAndClearResult();
212
- return { ok: status === 0, text };
213
- }
214
- /** Run semantic token analysis over a byte range. Returns a pre-encoded
215
- * Uint32Array (5 u32s per token: deltaLine, deltaStartChar, length,
216
- * legendIndex, 0) ready for Monaco, or undefined on failure.
217
- * Pass rangeStart=0 and rangeEnd=0xFFFFFFFF for the full document. */
218
- runSemanticTokens(sql, rangeStart = 0, rangeEnd = 0xffffffff, version = 1) {
219
- if (!this.semanticTokensRaw)
202
+ /** Parse SQL into AST JSON. Parse errors are data, not exceptions. */
203
+ parse(sql) {
204
+ // AST nodes omit absent fields as null; expose them as undefined.
205
+ return this.rpc({ op: "parse", sql }, (_, v) => (v === null ? undefined : v));
206
+ }
207
+ /** Format SQL. Throws when the input cannot be formatted. */
208
+ format(sql, opts = {}) {
209
+ const request = { op: "format", sql };
210
+ if (opts.lineWidth !== undefined)
211
+ request.line_width = opts.lineWidth;
212
+ if (opts.indentWidth !== undefined)
213
+ request.indent_width = opts.indentWidth;
214
+ if (opts.keywordCase !== undefined)
215
+ request.keyword_case = opts.keywordCase;
216
+ if (opts.semicolons !== undefined)
217
+ request.semicolons = opts.semicolons;
218
+ const result = this.rpc(request);
219
+ return result.formatted;
220
+ }
221
+ /** Tokenize SQL. Throws on malformed input. */
222
+ tokenize(sql) {
223
+ const result = this.rpc({ op: "tokenize", sql });
224
+ return result.tokens;
225
+ }
226
+ /** Semantic tokens for an embedded-language document (see setLanguageMode).
227
+ * Returns a pre-encoded Uint32Array (5 u32s per token) or undefined on
228
+ * failure. SQL documents are served over LSP (`textDocument/semanticTokens`).
229
+ * @experimental Embedded language support is experimental and may change. */
230
+ embeddedSemanticTokens(source) {
231
+ if (this.currentLangMode === "sql" || !this.embeddedSemanticTokensRaw)
220
232
  return undefined;
233
+ const lang = embeddedLangCode(this.currentLangMode);
221
234
  try {
222
- const count = this.withInput(sql, (ptr, len) => this.semanticTokensRaw(ptr, len, rangeStart, rangeEnd, version));
235
+ const count = this.withInput(source, (ptr, len) => this.embeddedSemanticTokensRaw(this.session, lang, ptr, len));
223
236
  if (count <= 0) {
224
237
  this.resultFreeRaw();
225
238
  return count === 0 ? new Uint32Array(0) : undefined;
@@ -232,15 +245,20 @@ export class Engine {
232
245
  return new Uint32Array(bytes.buffer, bytes.byteOffset, bytes.byteLength / 4);
233
246
  }
234
247
  catch (e) {
235
- console.warn("wasm_semantic_tokens failed:", e);
248
+ console.warn("wasm_embedded_semantic_tokens failed:", e);
236
249
  return undefined;
237
250
  }
238
251
  }
239
- runDiagnostics(sql, version = 1) {
240
- if (!this.diagnosticsRaw)
252
+ /** Diagnostics for an embedded-language document (see setLanguageMode).
253
+ * SQL documents are served over LSP (`textDocument/publishDiagnostics`).
254
+ * @experimental Embedded language support is experimental and may change. */
255
+ embeddedDiagnostics(source) {
256
+ if (this.currentLangMode === "sql" || !this.embeddedDiagnosticsRaw) {
241
257
  return { ok: false, diagnostics: [] };
258
+ }
259
+ const lang = embeddedLangCode(this.currentLangMode);
242
260
  try {
243
- const count = this.withInput(sql, (ptr, len) => this.diagnosticsRaw(ptr, len, version));
261
+ const count = this.withInput(source, (ptr, len) => this.embeddedDiagnosticsRaw(this.session, lang, ptr, len));
244
262
  const text = this.readAndClearResult();
245
263
  if (count < 0)
246
264
  return { ok: false, diagnostics: [] };
@@ -250,48 +268,80 @@ export class Engine {
250
268
  return { ok: true, diagnostics };
251
269
  }
252
270
  catch (e) {
253
- console.warn("wasm_diagnostics failed:", e);
271
+ console.warn("wasm_embedded_diagnostics failed:", e);
254
272
  return { ok: false, diagnostics: [] };
255
273
  }
256
274
  }
257
- runCompletions(sql, offset, version = 1) {
258
- if (!this.completionsRaw)
259
- return { ok: false, items: [] };
260
- try {
261
- const count = this.withInput(sql, (ptr, len) => this.completionsRaw(ptr, len, offset >>> 0, version));
262
- const text = this.readAndClearResult();
263
- if (count < 0)
264
- return { ok: false, items: [] };
265
- if (count === 0)
266
- return { ok: true, items: [] };
267
- const items = JSON.parse(text);
268
- return { ok: true, items };
275
+ /** Whether this runtime exposes the LSP JSON-RPC entry point. */
276
+ get lspSupported() {
277
+ return this.lspMessageRaw !== undefined;
278
+ }
279
+ /** Handle one LSP JSON-RPC message against this engine's in-process
280
+ * language server. Returns the outgoing messages as parsed objects
281
+ * (response plus server notifications). Drive it exactly like a
282
+ * standalone LSP server, lifecycle included. */
283
+ lspMessage(message) {
284
+ if (!this.lspMessageRaw) {
285
+ throw new Error("LSP not supported by this runtime");
269
286
  }
270
- catch (e) {
271
- console.warn("wasm_completions failed:", e);
272
- return { ok: false, items: [] };
287
+ const json = typeof message === "string" ? message : JSON.stringify(message);
288
+ const count = this.withInput(json, (ptr, len) => this.lspMessageRaw(this.session, ptr, len));
289
+ const text = this.readAndClearResult();
290
+ if (count < 0) {
291
+ throw new Error(text || "wasm_lsp_message failed");
273
292
  }
293
+ return count === 0 ? [] : JSON.parse(text);
294
+ }
295
+ /** Validate SQL in one shot without an editor session. Schema-aware when
296
+ * a catalog is provided via `schemaDdl`, `tables`, or `views`. Throws on
297
+ * malformed input. */
298
+ analyze(sql, opts = {}) {
299
+ const request = { op: "analyze", sql };
300
+ if (opts.schemaDdl !== undefined)
301
+ request.schema_ddl = opts.schemaDdl;
302
+ if (opts.tables !== undefined)
303
+ request.tables = opts.tables;
304
+ if (opts.views !== undefined)
305
+ request.views = opts.views;
306
+ if (opts.modules !== undefined)
307
+ request.modules = opts.modules;
308
+ return this.rpc(request);
309
+ }
310
+ /** One-shot JSON-RPC op — the CLI `serve json` protocol. Returns the
311
+ * op's result value; throws on error. */
312
+ rpc(request, reviver) {
313
+ if (!this.rpcRaw) {
314
+ throw new Error("RPC not supported by this runtime");
315
+ }
316
+ const json = JSON.stringify(request);
317
+ const status = this.withInput(json, (ptr, len) => this.rpcRaw(this.session, ptr, len));
318
+ const text = this.readAndClearResult();
319
+ if (status !== 0) {
320
+ throw new Error(text || "wasm_rpc failed");
321
+ }
322
+ const frame = JSON.parse(text, reviver);
323
+ if (!frame.ok) {
324
+ throw new Error(frame.error ?? "rpc failed");
325
+ }
326
+ return frame.result;
274
327
  }
275
- /** Set the active language mode. Must be called before running diagnostics or semantic
276
- * tokens so the WASM can dispatch to the correct implementation automatically.
328
+ /** Set the active language mode. Diagnostics, semantic tokens, and extraction
329
+ * dispatch to the SQL or embedded implementation based on this mode.
277
330
  * @experimental Embedded language support is experimental and may change. */
278
331
  setLanguageMode(lang) {
279
332
  this.currentLangMode = lang;
280
- if (!this.setLanguageModeRaw)
281
- return;
282
- const code = lang === "sql" ? 0xFFFFFFFF : (lang === "python" ? 0 : 1);
283
- this.setLanguageModeRaw(code);
284
333
  }
285
334
  /** Extract SQL fragments from `source`. Returns empty in SQL mode (O(1) fast path).
286
- * In embedded mode the WASM extractor runs based on the language set by setLanguageMode.
335
+ * In embedded mode the WASM extractor runs for the language set by setLanguageMode.
287
336
  * @experimental Embedded language support is experimental and may change. */
288
- runExtract(source) {
337
+ extract(source) {
289
338
  if (this.currentLangMode === "sql")
290
339
  return { ok: true, fragments: [] };
291
- if (!this.extractRaw)
340
+ if (!this.embeddedExtractRaw)
292
341
  return { ok: true, fragments: [] };
342
+ const lang = embeddedLangCode(this.currentLangMode);
293
343
  try {
294
- const count = this.withInput(source, (ptr, len) => this.extractRaw(ptr, len));
344
+ const count = this.withInput(source, (ptr, len) => this.embeddedExtractRaw(lang, ptr, len));
295
345
  const text = this.readAndClearResult();
296
346
  if (count < 0)
297
347
  return { ok: false, fragments: [] };
@@ -301,14 +351,14 @@ export class Engine {
301
351
  return { ok: true, fragments };
302
352
  }
303
353
  catch (e) {
304
- console.warn("wasm_extract failed:", e);
354
+ console.warn("wasm_embedded_extract failed:", e);
305
355
  return { ok: false, fragments: [] };
306
356
  }
307
357
  }
308
358
  setSqliteVersion(version) {
309
359
  if (!this.setSqliteVersionRaw)
310
360
  return;
311
- const status = this.withInput(version, (ptr, len) => this.setSqliteVersionRaw(ptr, len));
361
+ const status = this.withInput(version, (ptr, len) => this.setSqliteVersionRaw(this.session, ptr, len));
312
362
  const detail = this.readAndClearResult();
313
363
  if (status !== 0) {
314
364
  throw new Error(detail || `wasm_set_sqlite_version failed with status ${status}`);
@@ -317,7 +367,7 @@ export class Engine {
317
367
  setCflag(name) {
318
368
  if (!this.setCflagRaw)
319
369
  return;
320
- const status = this.withInput(name, (ptr, len) => this.setCflagRaw(ptr, len));
370
+ const status = this.withInput(name, (ptr, len) => this.setCflagRaw(this.session, ptr, len));
321
371
  const detail = this.readAndClearResult();
322
372
  if (status !== 0) {
323
373
  throw new Error(detail || `wasm_set_cflag failed with status ${status}`);
@@ -326,7 +376,7 @@ export class Engine {
326
376
  clearCflag(name) {
327
377
  if (!this.clearCflagRaw)
328
378
  return;
329
- const status = this.withInput(name, (ptr, len) => this.clearCflagRaw(ptr, len));
379
+ const status = this.withInput(name, (ptr, len) => this.clearCflagRaw(this.session, ptr, len));
330
380
  const detail = this.readAndClearResult();
331
381
  if (status !== 0) {
332
382
  throw new Error(detail || `wasm_clear_cflag failed with status ${status}`);
@@ -335,7 +385,7 @@ export class Engine {
335
385
  clearAllCflags() {
336
386
  if (!this.clearAllCflagsRaw)
337
387
  return;
338
- this.clearAllCflagsRaw();
388
+ this.clearAllCflagsRaw(this.session);
339
389
  }
340
390
  getCflagList() {
341
391
  if (!this.getCflagListRaw)
@@ -351,16 +401,24 @@ export class Engine {
351
401
  return [];
352
402
  }
353
403
  }
404
+ /** Set the schema session context from structured catalog JSON, via the
405
+ * `syntaqlite/setSessionContext` extension request. Throws on rejection. */
354
406
  setSessionContext(json) {
355
407
  this.sessionContext = { kind: "json", json };
356
408
  this.applySessionContextJson(json);
357
409
  }
358
410
  clearSessionContext() {
359
411
  this.sessionContext = null;
360
- if (!this.clearSessionContextRaw)
361
- return;
362
- this.clearSessionContextRaw();
412
+ try {
413
+ this.applySessionContext({});
414
+ }
415
+ catch (e) {
416
+ // No dialect loaded yet means there is no context to clear.
417
+ console.warn("clearSessionContext skipped:", e);
418
+ }
363
419
  }
420
+ /** Set the schema session context from DDL. DDL that fails to parse is
421
+ * reported in `error`; statements that did parse are still applied. */
364
422
  setSessionContextDdl(sql) {
365
423
  const result = this.applySessionContextDdl(sql);
366
424
  if (result.ok)
@@ -368,22 +426,35 @@ export class Engine {
368
426
  return result;
369
427
  }
370
428
  applySessionContextJson(json) {
371
- if (!this.setSessionContextRaw)
372
- return;
373
- const status = this.withInput(json, (ptr, len) => this.setSessionContextRaw(ptr, len));
374
- const detail = this.readAndClearResult();
375
- if (status !== 0) {
376
- throw new Error(detail || `wasm_set_session_context failed with status ${status}`);
377
- }
429
+ this.applySessionContext({ context: JSON.parse(json) });
378
430
  }
379
431
  applySessionContextDdl(sql) {
380
- if (!this.setSessionContextDdlRaw)
381
- return { ok: false, error: "DDL context not supported" };
382
- const status = this.withInput(sql, (ptr, len) => this.setSessionContextDdlRaw(ptr, len));
383
- const detail = this.readAndClearResult();
384
- if (status !== 0)
385
- return { ok: false, error: detail || "DDL parse failed" };
386
- return { ok: true };
432
+ try {
433
+ const errors = this.applySessionContext({ ddl: sql });
434
+ if (errors.length > 0)
435
+ return { ok: false, error: errors.join("\n") };
436
+ return { ok: true };
437
+ }
438
+ catch (e) {
439
+ return { ok: false, error: e.message };
440
+ }
441
+ }
442
+ /** Send a `syntaqlite/setSessionContext` extension request to the
443
+ * language server. Returns the (possibly empty) DDL parse errors;
444
+ * throws if the server rejects the request. */
445
+ applySessionContext(params) {
446
+ const id = `session-context-${this.contextSeq++}`;
447
+ const out = this.lspMessage({
448
+ jsonrpc: "2.0",
449
+ id,
450
+ method: "syntaqlite/setSessionContext",
451
+ params,
452
+ });
453
+ const response = out.find((m) => m && typeof m === "object" && m.id === id);
454
+ if (response?.error) {
455
+ throw new Error(response.error.message);
456
+ }
457
+ return response?.result?.errors ?? [];
387
458
  }
388
459
  }
389
460
  // Global name the Emscripten MODULARIZE build assigns the factory to when
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { Engine, type EngineConfig, type CflagEntry } from "./engine.js";
2
+ export { attachLspPort, type LspPortLike } from "./lsp.js";
2
3
  export { DialectManager, BUILTIN_PRESETS, type DialectPreset, type DialectManagerConfig } from "./dialect.js";
3
4
  export { DialectConfigManager, VERSION_OPTIONS, versionToInt } from "./dialect_config.js";
4
5
  export { SchemaContextManager, parseSimple, type SchemaFormat, type SessionContextPayload } from "./schema.js";
5
- export type { EmscriptenModule, EmscriptenModuleConfig, AstFieldValue, AstListNode, AstRegularNode, AstJsonNode, KeywordCase, FormatOptions, FormatResult, AstResultOk, AstResultError, AstResult, DialectBinding, DiagnosticDetail, HelpDetail, DiagnosticEntry, DiagnosticsResult, CompletionEntry, CompletionsResult, EmbeddedLanguage, EmbeddedHole, EmbeddedFragment, EmbeddedExtractResult, } from "./types.js";
6
+ export type { EmscriptenModule, EmscriptenModuleConfig, AstFieldValue, AstListNode, AstRegularNode, AstJsonNode, KeywordCase, FormatOptions, ParseResult, TokenEntry, DialectBinding, DiagnosticDetail, HelpDetail, DiagnosticEntry, DiagnosticsResult, AnalyzeDiagnostic, RelationSpec, AnalyzeOptions, AnalyzeResult, CompletionEntry, CompletionsResult, EmbeddedLanguage, EmbeddedHole, EmbeddedFragment, EmbeddedExtractResult, } from "./types.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/G,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/G,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // Copyright 2025 The syntaqlite Authors. All rights reserved.
2
2
  // Licensed under the Apache License, Version 2.0.
3
3
  export { Engine } from "./engine.js";
4
+ export { attachLspPort } from "./lsp.js";
4
5
  export { DialectManager, BUILTIN_PRESETS } from "./dialect.js";
5
6
  export { DialectConfigManager, VERSION_OPTIONS, versionToInt } from "./dialect_config.js";
6
7
  export { SchemaContextManager, parseSimple } from "./schema.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAsC,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAiD,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAiD,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAsC,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAiD,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAiD,MAAM,aAAa,CAAC"}
package/dist/lsp.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import type { Engine } from "./engine.js";
2
+ /** The subset of `MessagePort` / `DedicatedWorkerGlobalScope` needed to
3
+ * bridge LSP messages. */
4
+ export interface LspPortLike {
5
+ postMessage(message: unknown): void;
6
+ onmessage: ((ev: {
7
+ data: unknown;
8
+ }) => void) | null;
9
+ }
10
+ /** Bridge LSP JSON-RPC messages between a `postMessage` channel and the
11
+ * engine's in-process language server, so a standard browser LSP client
12
+ * (CodeMirror, Monaco, ...) can talk to syntaqlite running in a Web Worker:
13
+ *
14
+ * ```ts
15
+ * const engine = new Engine();
16
+ * await engine.load();
17
+ * await new DialectManager().loadDefault(engine);
18
+ * attachLspPort(engine, self as unknown as LspPortLike);
19
+ * ```
20
+ */
21
+ export declare function attachLspPort(engine: Engine, port: LspPortLike): void;
22
+ //# sourceMappingURL=lsp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAExC;2BAC2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QAAC,IAAI,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CACnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAMrE"}
package/dist/lsp.js ADDED
@@ -0,0 +1,21 @@
1
+ // Copyright 2025 The syntaqlite Authors. All rights reserved.
2
+ // Licensed under the Apache License, Version 2.0.
3
+ /** Bridge LSP JSON-RPC messages between a `postMessage` channel and the
4
+ * engine's in-process language server, so a standard browser LSP client
5
+ * (CodeMirror, Monaco, ...) can talk to syntaqlite running in a Web Worker:
6
+ *
7
+ * ```ts
8
+ * const engine = new Engine();
9
+ * await engine.load();
10
+ * await new DialectManager().loadDefault(engine);
11
+ * attachLspPort(engine, self as unknown as LspPortLike);
12
+ * ```
13
+ */
14
+ export function attachLspPort(engine, port) {
15
+ port.onmessage = (ev) => {
16
+ for (const out of engine.lspMessage(ev.data)) {
17
+ port.postMessage(out);
18
+ }
19
+ };
20
+ }
21
+ //# sourceMappingURL=lsp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAWlD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAiB;IAC7D,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE;QACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAc,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}