@monaco-neovim-wasm/lib 0.1.6

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,461 @@
1
+ import { W as pt, j as rt, k as ht, l as q, m as mt, n as J, o as _t, E as it, p as wt, e as w, g as gt, D as C, F as ot, a as Q, P as Z, b as at, c as ct, R as bt, d as ft, f as Et, h as T, C as At, q as kt, S as St, i as lt } from "./msgpack-BSNDwQ9a.js";
2
+ let F = null, _ = null, f = null, u = null, x = null, S = null, B = null, M = 0, G = 0, V = 0;
3
+ const vt = new TextDecoder();
4
+ let W = "", H = !1, L = null, O = null;
5
+ const Y = [];
6
+ self.addEventListener("error", (t) => {
7
+ if (H) return;
8
+ H = !0;
9
+ const e = t.message || String(t.error || "worker error"), n = t.error?.stack;
10
+ try {
11
+ postMessage({ type: "start-error", message: n ? `${e}
12
+ ${n}` : e }), postMessage({ type: "exit", code: 1, lastStderr: W });
13
+ } catch {
14
+ }
15
+ });
16
+ self.addEventListener("unhandledrejection", (t) => {
17
+ if (H) return;
18
+ H = !0;
19
+ const e = t.reason, n = e && (e.message || String(e)) || "unhandled rejection", s = e?.stack;
20
+ try {
21
+ postMessage({ type: "start-error", message: s ? `${n}
22
+ ${s}` : n }), postMessage({ type: "exit", code: 1, lastStderr: W });
23
+ } catch {
24
+ }
25
+ });
26
+ self.onmessage = (t) => {
27
+ const { type: e } = t.data || {};
28
+ if (e === "start")
29
+ Dt(t.data).catch((n) => {
30
+ postMessage({ type: "start-error", message: n?.message || String(n) }), postMessage({ type: "exit", code: 1 });
31
+ });
32
+ else if (e === "stdin") {
33
+ const n = ut(t.data?.chunk);
34
+ if (!n?.byteLength) return;
35
+ f ? f.push(n) : Y.push(n);
36
+ } else if (e === "stop") {
37
+ try {
38
+ f?.close();
39
+ } catch {
40
+ }
41
+ try {
42
+ _?.wasiImport?.proc_exit?.(0);
43
+ } catch {
44
+ }
45
+ f = null;
46
+ }
47
+ };
48
+ class Mt extends at {
49
+ chunks = [];
50
+ total = 0;
51
+ waiters = [];
52
+ closed = !1;
53
+ fd_fdstat_get() {
54
+ const e = new ct(lt, 0);
55
+ return e.fs_rights_base = BigInt(bt | ft), { ret: w, fdstat: e };
56
+ }
57
+ fd_close() {
58
+ return this.close(), w;
59
+ }
60
+ close() {
61
+ if (this.closed) return;
62
+ this.closed = !0;
63
+ const e = this.waiters;
64
+ this.waiters = [];
65
+ for (const n of e) n();
66
+ }
67
+ push(e) {
68
+ if (this.closed || !e?.byteLength) return;
69
+ this.chunks.push(e), this.total += e.byteLength;
70
+ const n = this.waiters;
71
+ this.waiters = [];
72
+ for (const s of n) s();
73
+ }
74
+ waitForData() {
75
+ return this.closed || this.total > 0 ? Promise.resolve() : new Promise((e) => this.waiters.push(e));
76
+ }
77
+ fd_read(e) {
78
+ if (this.closed && this.total === 0) return { ret: w, data: new Uint8Array() };
79
+ const n = Math.min(Math.max(0, Number(e) || 0), this.total);
80
+ if (n === 0) return { ret: Et, data: new Uint8Array() };
81
+ const s = new Uint8Array(n);
82
+ let r = 0;
83
+ for (; r < n && this.chunks.length; ) {
84
+ const o = this.chunks[0], i = Math.min(o.byteLength, n - r);
85
+ s.set(o.subarray(0, i), r), r += i, i === o.byteLength ? this.chunks.shift() : this.chunks[0] = o.subarray(i);
86
+ }
87
+ return this.total -= r, { ret: w, data: s };
88
+ }
89
+ fd_write() {
90
+ return { ret: T, nwritten: 0 };
91
+ }
92
+ fd_seek() {
93
+ return { ret: T, offset: 0n };
94
+ }
95
+ fd_tell() {
96
+ return { ret: T, offset: 0n };
97
+ }
98
+ fd_pread() {
99
+ return { ret: T, data: new Uint8Array() };
100
+ }
101
+ fd_pwrite() {
102
+ return { ret: T, nwritten: 0 };
103
+ }
104
+ }
105
+ class tt extends at {
106
+ onWrite;
107
+ constructor(e) {
108
+ super(), this.onWrite = e;
109
+ }
110
+ fd_fdstat_get() {
111
+ const e = new ct(lt, 0);
112
+ return e.fs_rights_base = BigInt(ft), { ret: w, fdstat: e };
113
+ }
114
+ fd_write(e) {
115
+ return this.onWrite(new Uint8Array(e)), { ret: w, nwritten: e.byteLength };
116
+ }
117
+ fd_close() {
118
+ return w;
119
+ }
120
+ }
121
+ async function Dt({ cols: t, rows: e, wasmPath: n, runtimePath: s, env: r, files: o }) {
122
+ let i = 1;
123
+ try {
124
+ for (F = null, B = null, x = null, S = null, u = null, f = new Mt(); Y.length; ) f.push(Y.shift());
125
+ const a = await Lt(n), y = await Ot(s), c = Wt(y, () => {
126
+ });
127
+ o && Array.isArray(o) && o.length && Pt(c, o);
128
+ const g = new tt(Ft), E = new tt((k) => {
129
+ const v = vt.decode(k);
130
+ v && (W = (W + v).slice(-8192)), postMessage({ type: "stderr", message: v });
131
+ }), b = new st("nvim", c.contents), N = c.contents.get("tmp")?.contents || /* @__PURE__ */ new Map(), I = new st("tmp", N), A = ["nvim", "--headless", "--embed", "-u", "NORC", "--noplugin", "-i", "NONE", "-n"], R = [
132
+ "VIMRUNTIME=/nvim/runtime",
133
+ "HOME=/nvim/home",
134
+ "PWD=/nvim",
135
+ "XDG_CONFIG_HOME=/nvim/home/.config",
136
+ "XDG_DATA_HOME=/nvim/home/.local/share",
137
+ "XDG_STATE_HOME=/nvim/home/.local/state",
138
+ "PATH=/usr/bin:/bin",
139
+ "TMPDIR=/nvim/tmp",
140
+ `COLUMNS=${t || 120}`,
141
+ `LINES=${e || 40}`
142
+ ];
143
+ if (r && typeof r == "object")
144
+ for (const [k, v] of Object.entries(r))
145
+ k && R.push(`${k}=${String(v ?? "")}`);
146
+ _ = new pt(A, R, [f, g, E, b, I], { debug: !1 }), _.fds[0] = f, _.fds[1] = g, _.fds[2] = E, _.fds[3] = b, _.fds[4] = I, _.preopens = { "/nvim": b, "/tmp": I };
147
+ const m = xt(() => _?.wasiImport?.proc_exit?.(1)), l = { ..._.wasiImport };
148
+ l.fd_read = _.wasiImport.fd_read, l.poll_oneoff = (k, v, j, U) => It(k, v, j, U);
149
+ const d = await WebAssembly.instantiate(a, {
150
+ wasi_snapshot_preview1: l,
151
+ env: m
152
+ }), D = d.instance ?? d.instance;
153
+ u = D.exports, Nt(u), _.inst = D, i = await Tt(u);
154
+ } catch (a) {
155
+ if (a instanceof rt)
156
+ i = a.code;
157
+ else {
158
+ const y = a?.message || String(a), c = a?.stack;
159
+ postMessage({ type: "start-error", message: c ? `${y}
160
+ ${c}` : y });
161
+ }
162
+ }
163
+ postMessage({ type: "exit", code: i, lastStderr: W });
164
+ }
165
+ function It(t, e, n, s) {
166
+ if (!u?.memory) return ht;
167
+ const r = Number(n) >>> 0;
168
+ if (r === 0) return q;
169
+ const o = u?.asyncify_get_state?.() ?? 0;
170
+ o === 0 && S && (S = null);
171
+ const i = new DataView(u.memory.buffer), a = 48, y = 32, c = () => BigInt(Math.round(performance.now() * 1e6)), g = () => BigInt(Date.now()) * 1000000n;
172
+ let E = !1, b = null;
173
+ const h = [], N = new Array(r).fill(null), I = o === 2 && S && S.in_ptr === t >>> 0 && S.nsubscriptions === r;
174
+ for (let m = 0; m < r; m += 1) {
175
+ const l = t + m * a >>> 0, d = i.getBigUint64(l, !0), p = i.getUint8(l + 8);
176
+ if (p === mt || p === J) {
177
+ const D = i.getUint32(l + 16, !0);
178
+ if (p === J) {
179
+ h.push({ userdata: d, eventtype: p });
180
+ continue;
181
+ }
182
+ if (D === 0) {
183
+ !!(f && (f.total > 0 || f.closed)) ? h.push({ userdata: d, eventtype: p }) : E = !0;
184
+ continue;
185
+ }
186
+ h.push({ userdata: d, eventtype: p });
187
+ continue;
188
+ }
189
+ if (p === _t) {
190
+ const D = i.getUint32(l + 16, !0), k = i.getBigUint64(l + 24, !0), v = i.getUint16(l + 36, !0), j = D === At ? c : D === kt ? g : null;
191
+ if (!j) return q;
192
+ const U = j(), dt = (v & St) !== 0, $ = I && S?.clockDeadlines?.[m] != null ? BigInt(S.clockDeadlines[m]) : dt ? k : U + k;
193
+ if (N[m] = $, $ <= U)
194
+ h.push({ userdata: d, eventtype: p });
195
+ else {
196
+ const X = $ - U;
197
+ (b === null || X < b) && (b = X);
198
+ }
199
+ continue;
200
+ }
201
+ return it;
202
+ }
203
+ if (h.length > 0) {
204
+ o === 2 && et(), S = null;
205
+ const m = new DataView(u.memory.buffer), l = Math.min(h.length, r);
206
+ for (let d = 0; d < l; d += 1) {
207
+ const p = h[d];
208
+ new wt(p.userdata, w, p.eventtype).write_bytes(m, e + d * y >>> 0);
209
+ }
210
+ return typeof s == "number" && m.setUint32(s, l, !0), w;
211
+ }
212
+ const A = [], R = !!(f && !f.closed && f.total === 0);
213
+ if ((E || R) && f && !f.closed && A.push(Rt()), b !== null) {
214
+ const l = Number(b / 1000000n), d = Number.isFinite(l) && l > 0 ? l : 0;
215
+ A.push(new Promise((p) => setTimeout(p, Math.min(d, 50))));
216
+ }
217
+ return A.length === 0 ? (typeof s == "number" && i.setUint32(s, 0, !0), w) : (o === 2 && et(), o === 0 || o === 2 ? (S = { in_ptr: t >>> 0, nsubscriptions: r, clockDeadlines: N }, Ut(A.length === 1 ? A[0] : Promise.race(A)), typeof s == "number" && new DataView(u.memory.buffer).setUint32(s, 0, !0), w) : (typeof s == "number" && i.setUint32(s, 0, !0), w));
218
+ }
219
+ function Rt() {
220
+ return !f || f.closed || f.total > 0 ? Promise.resolve() : (B || (B = f.waitForData().finally(() => {
221
+ B = null;
222
+ })), B);
223
+ }
224
+ function Nt(t) {
225
+ if (!t?.memory) throw new Error("asyncify: missing exported memory");
226
+ if (typeof t.asyncify_start_unwind != "function") throw new Error("asyncify: missing exports");
227
+ if (typeof t.nvim_asyncify_get_data_ptr == "function" && typeof t.nvim_asyncify_get_stack_start == "function" && typeof t.nvim_asyncify_get_stack_end == "function") {
228
+ M = t.nvim_asyncify_get_data_ptr() >>> 0, G = t.nvim_asyncify_get_stack_start() >>> 0, V = t.nvim_asyncify_get_stack_end() >>> 0, z();
229
+ return;
230
+ }
231
+ const e = 64 * 1024 * 1024, n = 65536, s = e + 64, r = Math.ceil(s / n);
232
+ t.memory.grow(r);
233
+ const o = t.memory.buffer.byteLength >>> 0;
234
+ V = o, M = ((o - e >>> 0) - 8 & -8) >>> 0, G = M + 8 >>> 0, z();
235
+ }
236
+ function z() {
237
+ if (!u?.memory || !M || !G || !V) return;
238
+ const t = new DataView(u.memory.buffer);
239
+ t.setInt32(M, G, !0), t.setInt32(M + 4, V, !0);
240
+ }
241
+ function Ut(t) {
242
+ if (!u || !M) throw new Error("asyncify: not initialized");
243
+ if (x) throw new Error("asyncify: overlapping async operation");
244
+ z(), x = t, u.asyncify_start_unwind(M);
245
+ }
246
+ function et() {
247
+ !u?.asyncify_get_state || !u?.asyncify_stop_rewind || u.asyncify_get_state() === 2 && (u.asyncify_stop_rewind(), z());
248
+ }
249
+ async function Tt(t) {
250
+ for (; ; ) {
251
+ try {
252
+ t._start();
253
+ } catch (s) {
254
+ if (s instanceof rt) return s.code;
255
+ throw s;
256
+ }
257
+ const e = t.asyncify_get_state();
258
+ if (e === 0) return 0;
259
+ if (e === 2) {
260
+ t.asyncify_stop_rewind(), z();
261
+ continue;
262
+ }
263
+ if (e !== 1) throw new Error(`asyncify: unexpected state ${e}`);
264
+ t.asyncify_stop_unwind();
265
+ const n = x;
266
+ if (x = null, !n) throw new Error("asyncify: missing pending promise");
267
+ await n, t.asyncify_start_rewind(M);
268
+ }
269
+ }
270
+ async function Lt(t) {
271
+ if (L && L.url === t && L.bytes?.byteLength) return L.bytes;
272
+ const e = await yt(t);
273
+ return L = { url: t, bytes: e }, e;
274
+ }
275
+ async function Ot(t) {
276
+ if (O && O.url === t && O.entries?.length) return O.entries;
277
+ const e = await yt(t);
278
+ let n;
279
+ if (Bt(e))
280
+ try {
281
+ n = gt(e);
282
+ } catch (r) {
283
+ throw new Error(`gunzip runtime failed: ${r?.message ?? r}`);
284
+ }
285
+ else
286
+ n = e;
287
+ let s;
288
+ try {
289
+ s = Ct(n);
290
+ } catch (r) {
291
+ throw new Error(`untar runtime failed: ${r?.message ?? r}`);
292
+ }
293
+ return O = { url: t, entries: s }, s;
294
+ }
295
+ function Pt(t, e) {
296
+ for (const n of e) {
297
+ const r = String(n?.path ?? "").replace(/^\/+/, "").replace(/^\.\/+/, "");
298
+ if (!r || r.endsWith("/")) continue;
299
+ const o = ut(n?.data);
300
+ if (!o) continue;
301
+ const i = r.split("/").filter(Boolean);
302
+ if (!i.length) continue;
303
+ let a = t;
304
+ for (let c = 0; c < i.length - 1; c += 1) {
305
+ const g = i[c];
306
+ a.contents.has(g) || a.contents.set(g, new C(/* @__PURE__ */ new Map())), a = a.contents.get(g);
307
+ }
308
+ const y = i[i.length - 1];
309
+ a.contents.set(y, new ot(o, { readonly: !1 }));
310
+ }
311
+ }
312
+ function ut(t) {
313
+ if (!t) return new Uint8Array();
314
+ if (t instanceof Uint8Array) return t;
315
+ if (t instanceof ArrayBuffer) return new Uint8Array(t);
316
+ if (t instanceof SharedArrayBuffer) return new Uint8Array(t);
317
+ if (Array.isArray(t)) return new Uint8Array(t);
318
+ if (t && t.type === "Buffer" && Array.isArray(t.data)) return new Uint8Array(t.data);
319
+ try {
320
+ return new TextEncoder().encode(String(t));
321
+ } catch {
322
+ return null;
323
+ }
324
+ }
325
+ function Ft(t) {
326
+ F || (F = new Q(nt));
327
+ try {
328
+ F.push(t);
329
+ } catch {
330
+ F = new Q(nt);
331
+ }
332
+ }
333
+ function nt(t) {
334
+ if (!Array.isArray(t) || t.length < 1) return;
335
+ const e = t[0];
336
+ if (e === 0) {
337
+ const [, n, s, r] = t;
338
+ postMessage(s === "wasm-clipboard-paste" ? { type: "clipboard-paste", msgid: n } : { type: "rpc-request", msgid: n, method: s, params: r });
339
+ } else if (e === 1) {
340
+ const [, n, s, r] = t;
341
+ postMessage({ type: "rpc-response", msgid: n, error: s, result: r });
342
+ } else if (e === 2) {
343
+ const [, n, s] = t;
344
+ if (n === "wasm-clipboard-copy") {
345
+ const r = Array.isArray(s?.[0]) ? s[0] : [], o = typeof s?.[1] == "string" ? s[1] : "v";
346
+ postMessage({ type: "clipboard-copy", lines: r, regtype: o });
347
+ } else (n === "nvim_buf_lines_event" || n === "nvim_buf_detach_event" || n === "redraw" || n === "monaco_cursor" || n === "monaco_mode" || n === "monaco_cursorMove" || n === "monaco_scroll" || n === "monaco_reveal" || n === "monaco_moveCursor" || n === "monaco_scrolloff" || n === "monaco_host_command" || n === "monaco_buf_enter" || n === "monaco_buf_delete") && postMessage({ type: "rpc-notify", method: n, params: s });
348
+ }
349
+ }
350
+ async function yt(t) {
351
+ const e = await fetch(t);
352
+ if (!e.ok) throw new Error(`fetch ${t} failed (${e.status})`);
353
+ if ((e.headers.get("content-type") || "").toLowerCase().includes("text/html")) throw new Error(`fetch ${t} returned HTML (likely wrong path or dev server fallback)`);
354
+ const s = new Uint8Array(await e.arrayBuffer());
355
+ if (!s.byteLength) throw new Error(`fetch ${t} returned empty body`);
356
+ return s;
357
+ }
358
+ function Bt(t) {
359
+ return t && t.length >= 2 && t[0] === 31 && t[1] === 139;
360
+ }
361
+ function Ct(t) {
362
+ const e = [], n = t instanceof Uint8Array ? t : new Uint8Array(t);
363
+ let s = 0;
364
+ const r = new TextDecoder();
365
+ let o = 0;
366
+ for (; s + 512 <= n.length; ) {
367
+ if (o++ > 1e5) throw new Error("untar safety break");
368
+ const i = K(r, n, s, 100), a = K(r, n, s + 124, 12), y = n[s + 156], c = K(r, n, s + 345, 155);
369
+ if (!i && !c) break;
370
+ const g = a.trim() || "0", E = parseInt(g, 8);
371
+ if (!Number.isFinite(E) || E < 0) throw new Error(`invalid tar size: ${g}`);
372
+ const b = c ? `${c}/${i}` : i, h = s + 512, N = h + E, I = n.slice(h, N);
373
+ e.push({ name: b, type: y === 53 ? "dir" : "file", data: I });
374
+ const A = Math.ceil(E / 512), R = h + A * 512;
375
+ if (R <= s) throw new Error("tar parse did not advance");
376
+ s = R;
377
+ }
378
+ return e;
379
+ }
380
+ function K(t, e, n, s) {
381
+ let r = n;
382
+ const o = n + s;
383
+ for (; r < o && e[r] !== 0; ) r += 1;
384
+ return t.decode(e.subarray(n, r)).trim();
385
+ }
386
+ function Wt(t, e) {
387
+ const n = new C(/* @__PURE__ */ new Map());
388
+ for (const s of t) {
389
+ const r = s.name.replace(/^\.\/?/, "");
390
+ if (!r) continue;
391
+ const o = r.split("/").filter(Boolean);
392
+ if (!o.length) continue;
393
+ let i = n;
394
+ for (let y = 0; y < o.length - 1; y += 1) {
395
+ const c = o[y];
396
+ i.contents.has(c) || i.contents.set(c, new C(/* @__PURE__ */ new Map())), i = i.contents.get(c);
397
+ }
398
+ const a = o[o.length - 1];
399
+ s.type === "dir" ? i.contents.has(a) || i.contents.set(a, new C(/* @__PURE__ */ new Map())) : i.contents.set(a, new ot(s.data, { readonly: !0 }));
400
+ }
401
+ return P(n, "home"), P(n, "tmp"), P(n, "home/.config"), P(n, "home/.local/share"), P(n, "home/.local/state"), n;
402
+ }
403
+ function P(t, e) {
404
+ const n = e.split("/").filter(Boolean);
405
+ let s = t;
406
+ for (const r of n)
407
+ s.contents.has(r) || s.contents.set(r, new C(/* @__PURE__ */ new Map())), s = s.contents.get(r);
408
+ }
409
+ function xt(t) {
410
+ const e = WebAssembly, n = new e.Tag({ parameters: ["i32"], results: [] });
411
+ return {
412
+ flock: () => 0,
413
+ getpid: () => 1,
414
+ uv_random: () => -38,
415
+ uv_wtf8_to_utf16: () => {
416
+ },
417
+ uv_utf16_length_as_wtf8: () => 0,
418
+ uv_utf16_to_wtf8: () => -38,
419
+ uv_wtf8_length_as_utf16: () => 0,
420
+ __wasm_longjmp: (s) => {
421
+ throw t && t(1), new e.Exception(n, [s ?? 0]);
422
+ },
423
+ __wasm_setjmp: () => 0,
424
+ __wasm_setjmp_test: () => 0,
425
+ tmpfile: () => 0,
426
+ clock: () => 0,
427
+ system: () => -1,
428
+ tmpnam: () => 0,
429
+ __c_longjmp: n
430
+ };
431
+ }
432
+ class st extends Z {
433
+ #t(e) {
434
+ return e.replace(/^\/+/, "");
435
+ }
436
+ path_open(e, n, s, r, o, i) {
437
+ return super.path_open(e, this.#t(n), s, r, o, i);
438
+ }
439
+ path_filestat_get(e, n) {
440
+ return super.path_filestat_get(e, this.#t(n));
441
+ }
442
+ path_create_directory(e) {
443
+ return super.path_create_directory(this.#t(e));
444
+ }
445
+ path_unlink_file(e) {
446
+ return super.path_unlink_file(this.#t(e));
447
+ }
448
+ path_remove_directory(e) {
449
+ return super.path_remove_directory(this.#t(e));
450
+ }
451
+ path_link(e, n, s) {
452
+ return super.path_link(this.#t(e), n, s);
453
+ }
454
+ path_readlink(e) {
455
+ return super.path_readlink(this.#t(e));
456
+ }
457
+ path_symlink(e, n) {
458
+ const s = Z.prototype.path_symlink;
459
+ return s ? s.call(this, this.#t(e), this.#t(n)) : it;
460
+ }
461
+ }
@@ -0,0 +1,10 @@
1
+ export declare class SharedInputRing {
2
+ readonly buffer: SharedArrayBuffer;
3
+ readonly ctrl: Int32Array;
4
+ readonly data: Uint8Array;
5
+ readonly capacity: number;
6
+ constructor(capacity?: number);
7
+ push(bytes: Uint8Array | ArrayBufferLike | ArrayLike<number>): boolean;
8
+ }
9
+ export declare const DEFAULT_SHARED_INPUT_BYTES = 262144;
10
+ export declare function createSharedInputRing(capacity?: number): SharedInputRing;
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@monaco-neovim-wasm/lib",
3
+ "version": "0.1.6",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "Core library for running Neovim (WASM) behind Monaco via msgpack-RPC.",
7
+ "scripts": {
8
+ "build": "vite build && vite build -c vite.worker.config.ts && npm run build:types",
9
+ "typecheck": "tsc --noEmit",
10
+ "build:types": "tsc -p tsconfig.build.json"
11
+ },
12
+ "dependencies": {
13
+ "@bjorn3/browser_wasi_shim": "^0.4.2",
14
+ "fflate": "^0.8.2"
15
+ },
16
+ "peerDependencies": {
17
+ "monaco-editor": "^0.44.0"
18
+ },
19
+ "main": "./dist/monaco-neovim-wasm.es.js",
20
+ "module": "./dist/monaco-neovim-wasm.es.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/index.d.ts",
25
+ "default": "./dist/monaco-neovim-wasm.es.js"
26
+ }
27
+ },
28
+ "files": [
29
+ "dist",
30
+ "README.md",
31
+ "package.json"
32
+ ]
33
+ }
34
+