@opentui/core 0.3.4 → 0.4.1

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 (52) hide show
  1. package/NativeSpanFeed.d.ts +4 -0
  2. package/Renderable.d.ts +7 -1
  3. package/index-07zpr2dg.js +10058 -0
  4. package/index-07zpr2dg.js.map +33 -0
  5. package/index-pcvh9d34.js +15987 -0
  6. package/index-pcvh9d34.js.map +57 -0
  7. package/index.d.ts +1 -1
  8. package/index.js +11296 -116
  9. package/index.js.map +29 -3
  10. package/lib/selection.d.ts +2 -1
  11. package/lib/singleton.d.ts +1 -0
  12. package/lib/tree-sitter/client.d.ts +17 -1
  13. package/lib/tree-sitter/index.d.ts +1 -0
  14. package/lib/tree-sitter/types.d.ts +104 -1
  15. package/lib/tree-sitter/update-assets.js +8 -6
  16. package/lib/tree-sitter/update-assets.js.map +3 -3
  17. package/lib/yoga.options.d.ts +1 -1
  18. package/package.json +32 -36
  19. package/parser.worker.js +452 -78
  20. package/parser.worker.js.map +8 -7
  21. package/platform/ffi.d.ts +6 -3
  22. package/platform/test.d.ts +12 -0
  23. package/platform/worker.d.ts +26 -4
  24. package/platform/worker.node-test.d.ts +1 -0
  25. package/renderer.d.ts +6 -0
  26. package/runtime-plugin-support-configure.js +36 -18
  27. package/runtime-plugin-support-configure.js.map +1 -9
  28. package/runtime-plugin-support-configure.node.js +15 -0
  29. package/runtime-plugin-support.js +4 -19
  30. package/runtime-plugin-support.js.map +1 -10
  31. package/runtime-plugin-support.node.js +15 -0
  32. package/runtime-plugin.js +473 -16
  33. package/runtime-plugin.js.map +1 -9
  34. package/runtime-plugin.node.js +15 -0
  35. package/testing/bun-test-node.d.ts +87 -0
  36. package/testing/mock-tree-sitter-client.d.ts +4 -0
  37. package/testing.js +18 -10
  38. package/testing.js.map +3 -3
  39. package/tests/yoga-upstream/tools/MeasureCounter.d.ts +16 -0
  40. package/tests/yoga-upstream/tools/utils.d.ts +11 -0
  41. package/yoga.d.ts +440 -0
  42. package/yoga.js +193 -0
  43. package/yoga.js.map +9 -0
  44. package/zig.d.ts +62 -2
  45. package/index-0nvgrgam.js +0 -11684
  46. package/index-0nvgrgam.js.map +0 -35
  47. package/index-54s7pk0d.js +0 -25499
  48. package/index-54s7pk0d.js.map +0 -84
  49. package/index-8t841rbx.js +0 -44
  50. package/index-8t841rbx.js.map +0 -10
  51. package/index-r49y8kdq.js +0 -421
  52. package/index-r49y8kdq.js.map +0 -10
package/parser.worker.js CHANGED
@@ -1,5 +1,43 @@
1
- // @bun
2
- var __require = import.meta.require;
1
+ import { createRequire } from "node:module";
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
12
+ var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
20
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
21
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
+ for (let key of __getOwnPropNames(mod))
23
+ if (!__hasOwnProp.call(to, key))
24
+ __defProp(to, key, {
25
+ get: __accessProp.bind(mod, key),
26
+ enumerable: true
27
+ });
28
+ if (canCache)
29
+ cache.set(mod, to);
30
+ return to;
31
+ };
32
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
33
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
34
+
35
+ // ../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.js
36
+ var require_emoji_regex = __commonJS((exports, module) => {
37
+ module.exports = () => {
38
+ return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
39
+ };
40
+ });
3
41
 
4
42
  // src/lib/tree-sitter/parser.worker.ts
5
43
  import { Parser, Query, Language } from "web-tree-sitter";
@@ -114,11 +152,8 @@ class DownloadUtils {
114
152
  }
115
153
  }
116
154
 
117
- // src/lib/tree-sitter/parser.worker.ts
118
- import { isMainThread } from "worker_threads";
119
-
120
155
  // src/lib/bunfs.ts
121
- import { basename as basename2, join as join2 } from "path";
156
+ import { basename as basename2, join as join2 } from "node:path";
122
157
  function isBunfsPath(path2) {
123
158
  return path2.includes("$bunfs") || /^B:[\\/]~BUN/i.test(path2);
124
159
  }
@@ -130,9 +165,10 @@ function normalizeBunfsPath(fileName) {
130
165
  }
131
166
 
132
167
  // src/platform/runtime.ts
133
- import { mkdir as mkdir2, writeFile as writeFileNode } from "fs/promises";
134
- import { dirname as dirname2, isAbsolute, resolve } from "path";
135
- import { fileURLToPath } from "url";
168
+ import { existsSync } from "node:fs";
169
+ import { mkdir as mkdir2, writeFile as writeFileNode } from "node:fs/promises";
170
+ import { dirname as dirname2, isAbsolute, resolve } from "node:path";
171
+ import { fileURLToPath } from "node:url";
136
172
 
137
173
  // ../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
138
174
  function ansiRegex({ onlyFirst = false } = {}) {
@@ -177,12 +213,8 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
177
213
  return 1;
178
214
  }
179
215
 
180
- // ../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs
181
- var emoji_regex_default = () => {
182
- return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
183
- };
184
-
185
216
  // ../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js
217
+ var import_emoji_regex = __toESM(require_emoji_regex(), 1);
186
218
  var segmenter = new Intl.Segmenter;
187
219
  var defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
188
220
  function stringWidth(string, options = {}) {
@@ -221,7 +253,7 @@ function stringWidth(string, options = {}) {
221
253
  if (defaultIgnorableCodePointRegex.test(character)) {
222
254
  continue;
223
255
  }
224
- if (emoji_regex_default().test(character)) {
256
+ if (import_emoji_regex.default().test(character)) {
225
257
  width += 2;
226
258
  continue;
227
259
  }
@@ -239,17 +271,43 @@ var stripANSI = bun?.stripANSI ?? stripAnsi;
239
271
  var writeFile2 = bun?.write ?? writeFilePortable;
240
272
  async function resolveBundledFilePath(loadBundledFile, fallbackPath, metaUrl) {
241
273
  if (!bun) {
242
- const path2 = typeof fallbackPath === "function" ? fallbackPath() : fallbackPath;
243
- return fileURLToPath(path2 instanceof URL ? path2 : new URL(path2, metaUrl));
274
+ const path2 = resolveFallbackFilePath(fallbackPath, metaUrl);
275
+ if (existsSync(path2)) {
276
+ return path2;
277
+ }
278
+ return await loadBundledFilePath(loadBundledFile, metaUrl) ?? path2;
244
279
  }
245
- const loadedPath = (await loadBundledFile()).default;
280
+ return normalizeLoadedFilePath((await loadBundledFile()).default, metaUrl);
281
+ }
282
+ function resolveFallbackFilePath(fallbackPath, metaUrl) {
283
+ const path2 = typeof fallbackPath === "function" ? fallbackPath() : fallbackPath;
284
+ return fileURLToPath(path2 instanceof URL ? path2 : new URL(path2, metaUrl));
285
+ }
286
+ function normalizeLoadedFilePath(loadedPath, baseUrl) {
246
287
  if (loadedPath.startsWith("file:")) {
247
288
  return fileURLToPath(loadedPath);
248
289
  }
249
290
  if (isAbsolute(loadedPath)) {
250
291
  return loadedPath;
251
292
  }
252
- return resolve(dirname2(fileURLToPath(metaUrl)), loadedPath);
293
+ return resolve(dirname2(fileURLToPath(baseUrl)), loadedPath);
294
+ }
295
+ async function loadBundledFilePath(loadBundledFile, metaUrl) {
296
+ const specifier = extractBundledImportSpecifier(loadBundledFile);
297
+ if (!specifier) {
298
+ return;
299
+ }
300
+ try {
301
+ const moduleUrl = new URL(specifier, metaUrl);
302
+ const loaded = await import(moduleUrl.href);
303
+ return normalizeLoadedFilePath(loaded.default, moduleUrl.href);
304
+ } catch {
305
+ return;
306
+ }
307
+ }
308
+ function extractBundledImportSpecifier(loadBundledFile) {
309
+ const match = String(loadBundledFile).match(/\bimport\(\s*(["'`])([^"'`]+)\1/);
310
+ return match?.[2];
253
311
  }
254
312
  function standardSleep(msOrDate) {
255
313
  const ms = msOrDate instanceof Date ? msOrDate.getTime() - Date.now() : msOrDate;
@@ -265,9 +323,272 @@ async function writeFilePortable(destination, data, options) {
265
323
  return bytes.byteLength;
266
324
  }
267
325
 
268
- // src/lib/tree-sitter/parser.worker.ts
269
- var self = globalThis;
326
+ // src/platform/worker.ts
327
+ var WORKER_UNAVAILABLE = "OpenTUI tree-sitter workers are not available for this runtime yet.";
328
+ var globalWithWorker = globalThis;
329
+ var nodeWorkerThreads = getBuiltinModule("node:worker_threads");
330
+ var runtimeBridge = loadWorkerRuntime(nodeWorkerThreads);
270
331
 
332
+ class UnsupportedWorker {
333
+ onmessage = null;
334
+ onerror = null;
335
+ constructor() {
336
+ throw new Error(WORKER_UNAVAILABLE);
337
+ }
338
+ postMessage() {
339
+ throw new Error(WORKER_UNAVAILABLE);
340
+ }
341
+ terminate() {
342
+ throw new Error(WORKER_UNAVAILABLE);
343
+ }
344
+ addEventListener() {
345
+ throw new Error(WORKER_UNAVAILABLE);
346
+ }
347
+ removeEventListener() {
348
+ throw new Error(WORKER_UNAVAILABLE);
349
+ }
350
+ }
351
+ var Worker = loadWorkerConstructor();
352
+ var isWorkerRuntime = runtimeBridge !== undefined;
353
+ function postWorkerMessage(value) {
354
+ if (!runtimeBridge) {
355
+ throw new Error(WORKER_UNAVAILABLE);
356
+ }
357
+ runtimeBridge.postMessage(value);
358
+ }
359
+ function setWorkerMessageHandler(handler) {
360
+ if (!runtimeBridge) {
361
+ throw new Error(WORKER_UNAVAILABLE);
362
+ }
363
+ return runtimeBridge.setMessageHandler(handler);
364
+ }
365
+ function getBuiltinModule(id) {
366
+ if (typeof process === "undefined") {
367
+ return;
368
+ }
369
+ const loader = process.getBuiltinModule;
370
+ if (typeof loader !== "function") {
371
+ return;
372
+ }
373
+ try {
374
+ return loader(id);
375
+ } catch {
376
+ return;
377
+ }
378
+ }
379
+ function loadWorkerConstructor() {
380
+ if (typeof globalWithWorker.Worker === "function") {
381
+ return globalWithWorker.Worker;
382
+ }
383
+ if (nodeWorkerThreads) {
384
+ return createNodeWorkerConstructor(nodeWorkerThreads);
385
+ }
386
+ return UnsupportedWorker;
387
+ }
388
+ function createNodeWorkerConstructor(node) {
389
+ return class NodeWorkerShim {
390
+ onmessage = null;
391
+ onerror = null;
392
+ errorListeners = new Set;
393
+ messageListeners = new Set;
394
+ worker;
395
+ terminationPromise;
396
+ constructor(specifier, options = {}) {
397
+ const resolvedSpecifier = resolveWorkerImportSpecifier(specifier);
398
+ this.worker = new node.Worker(createWorkerBootstrapSource(resolvedSpecifier), {
399
+ eval: true,
400
+ type: "module",
401
+ name: options.name
402
+ });
403
+ this.worker.on("message", this.handleMessage);
404
+ this.worker.on("error", this.handleError);
405
+ }
406
+ postMessage(value) {
407
+ this.worker.postMessage(value);
408
+ }
409
+ terminate() {
410
+ if (this.terminationPromise) {
411
+ return this.terminationPromise;
412
+ }
413
+ this.worker.off("message", this.handleMessage);
414
+ this.worker.off("error", this.handleError);
415
+ const termination = this.worker.terminate().catch((error) => {
416
+ this.terminationPromise = undefined;
417
+ this.worker.on("message", this.handleMessage);
418
+ this.worker.on("error", this.handleError);
419
+ throw error;
420
+ });
421
+ this.terminationPromise = termination;
422
+ return termination;
423
+ }
424
+ addEventListener(type, listener) {
425
+ if (type === "message") {
426
+ this.messageListeners.add(listener);
427
+ return;
428
+ }
429
+ this.errorListeners.add(listener);
430
+ }
431
+ removeEventListener(type, listener) {
432
+ if (type === "message") {
433
+ this.messageListeners.delete(listener);
434
+ return;
435
+ }
436
+ this.errorListeners.delete(listener);
437
+ }
438
+ handleMessage = (data) => {
439
+ const event = { data };
440
+ this.onmessage?.(event);
441
+ for (const listener of this.messageListeners) {
442
+ listener(event);
443
+ }
444
+ };
445
+ handleError = (error) => {
446
+ const event = {
447
+ error,
448
+ message: error.message
449
+ };
450
+ this.onerror?.(event);
451
+ for (const listener of this.errorListeners) {
452
+ listener(event);
453
+ }
454
+ };
455
+ };
456
+ }
457
+ function createWorkerBootstrapSource(specifier) {
458
+ return `
459
+ import { parentPort } from "node:worker_threads"
460
+
461
+ const pendingMessages = []
462
+ let messageHandler = null
463
+
464
+ globalThis.self ??= globalThis
465
+ globalThis.postMessage ??= (value) => parentPort?.postMessage(value)
466
+ globalThis.__opentuiWorkerMessageBridge = true
467
+ Object.defineProperty(globalThis, "onmessage", {
468
+ configurable: true,
469
+ get: () => messageHandler,
470
+ set: (handler) => {
471
+ messageHandler = typeof handler === "function" ? handler : null
472
+ if (!messageHandler) return
473
+
474
+ const messages = pendingMessages.splice(0)
475
+ for (const data of messages) {
476
+ messageHandler({ data })
477
+ }
478
+ },
479
+ })
480
+ parentPort?.on("message", (data) => {
481
+ if (messageHandler) {
482
+ messageHandler({ data })
483
+ } else {
484
+ pendingMessages.push(data)
485
+ }
486
+ })
487
+
488
+ await import(${JSON.stringify(specifier)})
489
+ `;
490
+ }
491
+ function resolveWorkerImportSpecifier(specifier) {
492
+ if (specifier instanceof URL) {
493
+ return specifier.href;
494
+ }
495
+ if (isRuntimeSpecifier(specifier)) {
496
+ return specifier;
497
+ }
498
+ const nodePath = getBuiltinModule("node:path");
499
+ const nodeUrl = getBuiltinModule("node:url");
500
+ if (!nodePath || !nodeUrl) {
501
+ throw new Error(WORKER_UNAVAILABLE);
502
+ }
503
+ const absolutePath = nodePath.isAbsolute(specifier) ? specifier : nodePath.resolve(specifier);
504
+ return nodeUrl.pathToFileURL(absolutePath).href;
505
+ }
506
+ function isRuntimeSpecifier(specifier) {
507
+ return specifier.startsWith("file:") || specifier.startsWith("data:") || specifier.startsWith("node:") || specifier.startsWith("http:") || specifier.startsWith("https:");
508
+ }
509
+ function loadWorkerRuntime(node) {
510
+ if (node?.parentPort && node.isMainThread === false) {
511
+ if (globalWithWorker.__opentuiWorkerMessageBridge) {
512
+ return createGlobalWorkerRuntimeBridge();
513
+ }
514
+ return {
515
+ postMessage(value) {
516
+ node.parentPort?.postMessage(value);
517
+ },
518
+ setMessageHandler(handler) {
519
+ const listener = (data) => {
520
+ handler({ data });
521
+ };
522
+ node.parentPort?.on("message", listener);
523
+ return () => {
524
+ node.parentPort?.off("message", listener);
525
+ };
526
+ }
527
+ };
528
+ }
529
+ if (!isGlobalWorkerRuntime()) {
530
+ return;
531
+ }
532
+ return createGlobalWorkerRuntimeBridge();
533
+ }
534
+ function createGlobalWorkerRuntimeBridge() {
535
+ let currentRegistration;
536
+ return {
537
+ postMessage(value) {
538
+ globalWithWorker.postMessage?.(value);
539
+ },
540
+ setMessageHandler(handler) {
541
+ const previousHandler = getGlobalWorkerMessageHandler();
542
+ if (currentRegistration && previousHandler !== currentRegistration.listener) {
543
+ currentRegistration = undefined;
544
+ }
545
+ const listener = (event) => {
546
+ const normalizedEvent = normalizeWorkerMessageEvent(event);
547
+ handler(normalizedEvent);
548
+ };
549
+ const registration = {
550
+ active: true,
551
+ fallbackHandler: currentRegistration ? currentRegistration.fallbackHandler : previousHandler,
552
+ listener,
553
+ previous: currentRegistration
554
+ };
555
+ currentRegistration = registration;
556
+ setGlobalWorkerMessageHandler(listener);
557
+ return () => {
558
+ registration.active = false;
559
+ if (currentRegistration !== registration || getGlobalWorkerMessageHandler() !== listener) {
560
+ return;
561
+ }
562
+ let previous = registration.previous;
563
+ while (previous && !previous.active) {
564
+ previous = previous.previous;
565
+ }
566
+ currentRegistration = previous;
567
+ setGlobalWorkerMessageHandler(previous?.listener ?? registration.fallbackHandler);
568
+ };
569
+ }
570
+ };
571
+ }
572
+ function isGlobalWorkerRuntime() {
573
+ if (typeof globalWithWorker.postMessage !== "function") {
574
+ return false;
575
+ }
576
+ return typeof document === "undefined" && typeof globalWithWorker.close === "function" && "onmessage" in globalThis;
577
+ }
578
+ function normalizeWorkerMessageEvent(event) {
579
+ if (event && typeof event === "object" && "data" in event) {
580
+ return event;
581
+ }
582
+ return { data: event };
583
+ }
584
+ function getGlobalWorkerMessageHandler() {
585
+ return globalThis.onmessage ?? null;
586
+ }
587
+ function setGlobalWorkerMessageHandler(handler) {
588
+ globalThis.onmessage = handler;
589
+ }
590
+
591
+ // src/lib/tree-sitter/parser.worker.ts
271
592
  class ParserWorker {
272
593
  bufferParsers = new Map;
273
594
  filetypeParserOptions = new Map;
@@ -477,7 +798,7 @@ class ParserWorker {
477
798
  async handleInitializeParser(bufferId, version, content, filetype, messageId) {
478
799
  const filetypeParser = await this.resolveFiletypeParser(filetype);
479
800
  if (!filetypeParser) {
480
- self.postMessage({
801
+ postWorkerMessage({
481
802
  type: "PARSER_INIT_RESPONSE",
482
803
  bufferId,
483
804
  messageId,
@@ -490,7 +811,7 @@ class ParserWorker {
490
811
  parser.setLanguage(filetypeParser.language);
491
812
  const tree = parser.parse(content);
492
813
  if (!tree) {
493
- self.postMessage({
814
+ postWorkerMessage({
494
815
  type: "PARSER_INIT_RESPONSE",
495
816
  bufferId,
496
817
  messageId,
@@ -508,14 +829,14 @@ class ParserWorker {
508
829
  injectionMapping: filetypeParser.injectionMapping
509
830
  };
510
831
  this.bufferParsers.set(bufferId, parserState);
511
- self.postMessage({
832
+ postWorkerMessage({
512
833
  type: "PARSER_INIT_RESPONSE",
513
834
  bufferId,
514
835
  messageId,
515
836
  hasParser: true
516
837
  });
517
838
  const highlights = await this.initialQuery(parserState);
518
- self.postMessage({
839
+ postWorkerMessage({
519
840
  type: "HIGHLIGHT_RESPONSE",
520
841
  bufferId,
521
842
  version,
@@ -837,7 +1158,7 @@ class ParserWorker {
837
1158
  async handleOneShotHighlight(content, filetype, messageId) {
838
1159
  const reusableState = await this.getReusableParser(filetype);
839
1160
  if (!reusableState) {
840
- self.postMessage({
1161
+ postWorkerMessage({
841
1162
  type: "ONESHOT_HIGHLIGHT_RESPONSE",
842
1163
  messageId,
843
1164
  hasParser: false,
@@ -849,7 +1170,7 @@ class ParserWorker {
849
1170
  ` : content;
850
1171
  const tree = reusableState.parser.parse(parseContent);
851
1172
  if (!tree) {
852
- self.postMessage({
1173
+ postWorkerMessage({
853
1174
  type: "ONESHOT_HIGHLIGHT_RESPONSE",
854
1175
  messageId,
855
1176
  hasParser: false,
@@ -874,7 +1195,7 @@ class ParserWorker {
874
1195
  injectionRanges = injectionResult.injectionRanges;
875
1196
  }
876
1197
  const highlights = this.getSimpleHighlights(matches, injectionRanges);
877
- self.postMessage({
1198
+ postWorkerMessage({
878
1199
  type: "ONESHOT_HIGHLIGHT_RESPONSE",
879
1200
  messageId,
880
1201
  hasParser: true,
@@ -913,81 +1234,132 @@ class ParserWorker {
913
1234
  }
914
1235
  }
915
1236
  }
916
- if (!isMainThread) {
917
- let logMessage = function(type, ...args) {
918
- self.postMessage({
919
- type: "WORKER_LOG",
920
- logType: type,
921
- data: args
922
- });
923
- };
1237
+ function logMessage(type, ...args) {
1238
+ postWorkerMessage({
1239
+ type: "WORKER_LOG",
1240
+ logType: type,
1241
+ data: args
1242
+ });
1243
+ }
1244
+ function postWorkerError(bufferId, error) {
1245
+ postWorkerMessage({
1246
+ type: "ERROR",
1247
+ bufferId,
1248
+ error: error instanceof Error ? error.stack || error.message : String(error)
1249
+ });
1250
+ }
1251
+ if (isWorkerRuntime) {
924
1252
  const worker = new ParserWorker;
925
1253
  console.log = (...args) => logMessage("log", ...args);
926
1254
  console.error = (...args) => logMessage("error", ...args);
927
1255
  console.warn = (...args) => logMessage("warn", ...args);
928
- self.onmessage = async (e) => {
929
- const { type, bufferId, version, content, filetype, edits, filetypeParser, messageId, dataPath } = e.data;
1256
+ setWorkerMessageHandler(async (event) => {
1257
+ const message = event.data;
1258
+ const messageType = String(event.data.type ?? "unknown");
930
1259
  try {
931
- switch (type) {
1260
+ switch (message.type) {
932
1261
  case "INIT":
933
1262
  try {
934
- await worker.initialize({ dataPath });
935
- self.postMessage({ type: "INIT_RESPONSE" });
1263
+ await worker.initialize({ dataPath: message.dataPath });
1264
+ postWorkerMessage({ type: "INIT_RESPONSE" });
936
1265
  } catch (error) {
937
- self.postMessage({
1266
+ postWorkerMessage({
938
1267
  type: "INIT_RESPONSE",
939
1268
  error: error instanceof Error ? error.stack || error.message : String(error)
940
1269
  });
941
1270
  }
942
1271
  break;
943
1272
  case "ADD_FILETYPE_PARSER":
944
- worker.addFiletypeParser(filetypeParser);
1273
+ worker.addFiletypeParser(message.filetypeParser);
945
1274
  break;
946
- case "PRELOAD_PARSER":
947
- const maybeParser = await worker.preloadParser(filetype);
948
- self.postMessage({ type: "PRELOAD_PARSER_RESPONSE", messageId, hasParser: !!maybeParser });
1275
+ case "PRELOAD_PARSER": {
1276
+ const maybeParser = await worker.preloadParser(message.filetype);
1277
+ postWorkerMessage({
1278
+ type: "PRELOAD_PARSER_RESPONSE",
1279
+ messageId: message.messageId,
1280
+ hasParser: !!maybeParser
1281
+ });
949
1282
  break;
1283
+ }
950
1284
  case "INITIALIZE_PARSER":
951
- await worker.handleInitializeParser(bufferId, version, content, filetype, messageId);
1285
+ await worker.handleInitializeParser(message.bufferId, message.version, message.content, message.filetype, message.messageId);
952
1286
  break;
953
- case "HANDLE_EDITS":
954
- const response = await worker.handleEdits(bufferId, content, edits);
1287
+ case "HANDLE_EDITS": {
1288
+ const response = await worker.handleEdits(message.bufferId, message.content, message.edits);
955
1289
  if (response.highlights && response.highlights.length > 0) {
956
- self.postMessage({ type: "HIGHLIGHT_RESPONSE", bufferId, version, ...response });
1290
+ postWorkerMessage({
1291
+ type: "HIGHLIGHT_RESPONSE",
1292
+ bufferId: message.bufferId,
1293
+ version: message.version,
1294
+ highlights: response.highlights
1295
+ });
957
1296
  } else if (response.warning) {
958
- self.postMessage({ type: "WARNING", bufferId, warning: response.warning });
1297
+ postWorkerMessage({
1298
+ type: "WARNING",
1299
+ bufferId: message.bufferId,
1300
+ warning: response.warning
1301
+ });
959
1302
  } else if (response.error) {
960
- self.postMessage({ type: "ERROR", bufferId, error: response.error });
1303
+ postWorkerMessage({
1304
+ type: "ERROR",
1305
+ bufferId: message.bufferId,
1306
+ error: response.error
1307
+ });
961
1308
  }
962
1309
  break;
1310
+ }
963
1311
  case "GET_PERFORMANCE":
964
- self.postMessage({ type: "PERFORMANCE_RESPONSE", performance: worker.performance, messageId });
1312
+ postWorkerMessage({
1313
+ type: "PERFORMANCE_RESPONSE",
1314
+ performance: worker.performance,
1315
+ messageId: message.messageId
1316
+ });
965
1317
  break;
966
- case "RESET_BUFFER":
967
- const resetResponse = await worker.handleResetBuffer(bufferId, version, content);
1318
+ case "RESET_BUFFER": {
1319
+ const resetResponse = await worker.handleResetBuffer(message.bufferId, message.version, message.content);
968
1320
  if (resetResponse.highlights && resetResponse.highlights.length > 0) {
969
- self.postMessage({ type: "HIGHLIGHT_RESPONSE", bufferId, version, ...resetResponse });
1321
+ postWorkerMessage({
1322
+ type: "HIGHLIGHT_RESPONSE",
1323
+ bufferId: message.bufferId,
1324
+ version: message.version,
1325
+ highlights: resetResponse.highlights
1326
+ });
970
1327
  } else if (resetResponse.warning) {
971
- self.postMessage({ type: "WARNING", bufferId, warning: resetResponse.warning });
1328
+ postWorkerMessage({
1329
+ type: "WARNING",
1330
+ bufferId: message.bufferId,
1331
+ warning: resetResponse.warning
1332
+ });
972
1333
  } else if (resetResponse.error) {
973
- self.postMessage({ type: "ERROR", bufferId, error: resetResponse.error });
1334
+ postWorkerMessage({
1335
+ type: "ERROR",
1336
+ bufferId: message.bufferId,
1337
+ error: resetResponse.error
1338
+ });
974
1339
  }
975
1340
  break;
1341
+ }
976
1342
  case "DISPOSE_BUFFER":
977
- worker.disposeBuffer(bufferId);
978
- self.postMessage({ type: "BUFFER_DISPOSED", bufferId });
1343
+ worker.disposeBuffer(message.bufferId);
1344
+ postWorkerMessage({
1345
+ type: "BUFFER_DISPOSED",
1346
+ bufferId: message.bufferId
1347
+ });
979
1348
  break;
980
1349
  case "ONESHOT_HIGHLIGHT":
981
- await worker.handleOneShotHighlight(content, filetype, messageId);
1350
+ await worker.handleOneShotHighlight(message.content, message.filetype, message.messageId);
982
1351
  break;
983
1352
  case "UPDATE_DATA_PATH":
984
1353
  try {
985
- await worker.updateDataPath(dataPath);
986
- self.postMessage({ type: "UPDATE_DATA_PATH_RESPONSE", messageId });
1354
+ await worker.updateDataPath(message.dataPath);
1355
+ postWorkerMessage({
1356
+ type: "UPDATE_DATA_PATH_RESPONSE",
1357
+ messageId: message.messageId
1358
+ });
987
1359
  } catch (error) {
988
- self.postMessage({
1360
+ postWorkerMessage({
989
1361
  type: "UPDATE_DATA_PATH_RESPONSE",
990
- messageId,
1362
+ messageId: message.messageId,
991
1363
  error: error instanceof Error ? error.message : String(error)
992
1364
  });
993
1365
  }
@@ -995,31 +1367,33 @@ if (!isMainThread) {
995
1367
  case "CLEAR_CACHE":
996
1368
  try {
997
1369
  await worker.clearCache();
998
- self.postMessage({ type: "CLEAR_CACHE_RESPONSE", messageId });
1370
+ postWorkerMessage({
1371
+ type: "CLEAR_CACHE_RESPONSE",
1372
+ messageId: message.messageId
1373
+ });
999
1374
  } catch (error) {
1000
- self.postMessage({
1375
+ postWorkerMessage({
1001
1376
  type: "CLEAR_CACHE_RESPONSE",
1002
- messageId,
1377
+ messageId: message.messageId,
1003
1378
  error: error instanceof Error ? error.message : String(error)
1004
1379
  });
1005
1380
  }
1006
1381
  break;
1007
1382
  default:
1008
- self.postMessage({
1383
+ postWorkerMessage({
1009
1384
  type: "ERROR",
1010
- bufferId,
1011
- error: `Unknown message type: ${type}`
1385
+ error: `Unknown message type: ${messageType}`
1012
1386
  });
1013
1387
  }
1014
1388
  } catch (error) {
1015
- self.postMessage({
1016
- type: "ERROR",
1017
- bufferId,
1018
- error: error instanceof Error ? error.stack || error.message : String(error)
1019
- });
1389
+ if ("bufferId" in message) {
1390
+ postWorkerError(message.bufferId, error);
1391
+ } else {
1392
+ postWorkerError(undefined, error);
1393
+ }
1020
1394
  }
1021
- };
1395
+ });
1022
1396
  }
1023
1397
 
1024
- //# debugId=025A5402888E132264756E2164756E21
1398
+ //# debugId=0D88AD8518CAE38D64756E2164756E21
1025
1399
  //# sourceMappingURL=parser.worker.js.map