From db77f995f6d7cca5b471635a393954e2bd34b65a Mon Sep 17 00:00:00 2001
From: memdmp <memdmp@estrogen.zone>
Date: Thu, 28 Aug 2025 21:57:35 +0200
Subject: feat: exttool

---
 src/routes/Monaco.svelte | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

(limited to 'src/routes/Monaco.svelte')

diff --git a/src/routes/Monaco.svelte b/src/routes/Monaco.svelte
index 295b432..8d5d2a2 100644
--- a/src/routes/Monaco.svelte
+++ b/src/routes/Monaco.svelte
@@ -6,11 +6,10 @@
   // import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
   // import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
   import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
-  // @ts-ignore
-  import wrqTypes from '@types/webextension-polyfill/namespaces/webRequest.d.ts?raw';
-  // @ts-ignore
-  import evTypes from '@types/webextension-polyfill/namespaces/events.d.ts?raw';
+  import typeFiles from '$lib/webext-polyfill';
   import userland from './userland.d.ts?raw';
+  // import tsconf from '$lib/tsconfig.jsonc?raw';
+  // import j5 from 'json5';
 
   let divEl: HTMLDivElement | null = $state(null);
   let editor: monaco.editor.IStandaloneCodeEditor = $state(null as any);
@@ -20,8 +19,7 @@
     typeDefs = `import type { UserlandBrowser } from './userland';
 declare global {
   /**
-   * The subset of the host extension's browser type available to the extension
-   * Note: We don't properly sandbox anything. You can likely easily get access to shit outside of here from the browser global.
+   * The host extension's browser type available to the extension
    */
   declare const browser: UserlandBrowser;
 }
@@ -85,33 +83,35 @@ declare global {
     });
     if (!divEl) while (!divEl) await new Promise((rs) => setTimeout(rs, 100));
     for (const [_filename, contents] of Object.entries(
-      (await import('./filemap.js')).default
+      (await import('./filemap.js')).default,
     )) {
       Monaco.languages.typescript.typescriptDefaults.addExtraLib(
-        contents
+        contents,
         // ,_filename
       );
     }
-    Monaco.languages.typescript.typescriptDefaults.addExtraLib(
-      evTypes,
-      'node_modules/@types/webextension-polyfill/namespaces/events.d.ts'
-    );
-    Monaco.languages.typescript.typescriptDefaults.addExtraLib(
-      wrqTypes,
-      'node_modules/@types/webextension-polyfill/namespaces/webRequest.d.ts'
-    );
-    Monaco.languages.typescript.typescriptDefaults.addExtraLib(
-      `export * from './namespaces/webRequest';`,
-      'node_modules/@types/webextension-polyfill/index.d.ts'
-    );
+    for (const [file, contents] of Object.entries(typeFiles).filter(([name]) =>
+      name.toLowerCase().endsWith('.ts'),
+    ))
+      Monaco.languages.typescript.typescriptDefaults.addExtraLib(
+        contents,
+        file,
+      );
     Monaco.languages.typescript.typescriptDefaults.addExtraLib(
       userland,
-      'node_modules/@types/redirext/userland.d.ts'
+      'node_modules/@types/redirext/userland.d.ts',
     );
     Monaco.languages.typescript.typescriptDefaults.addExtraLib(
       typeDefs,
-      'node_modules/@types/redirext/index.d.ts'
+      'node_modules/@types/redirext/index.d.ts',
     );
+    // try {
+    //   Monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
+    //     ...j5.parse(tsconf).compilerOptions,
+    //     moduleResolution: undefined,
+    //     allowNonTsExtensions: true,
+    //   });
+    // } catch (e) {}
     editor = Monaco.editor.create(divEl, {
       value: defaultValue,
       language: 'typescript',
@@ -124,7 +124,7 @@ declare global {
         const el = document.createElement('div');
         el.setAttribute(
           'style',
-          'display:flex;width:100vw;height:100vh;position:fixed;left:0;top:0;align-items:center;justify-content:center;text-align:center;z-index:9999;background:#23222B;'
+          'display:flex;width:100vw;height:100vh;position:fixed;left:0;top:0;align-items:center;justify-content:center;text-align:center;z-index:9999;background:#23222B;',
         );
         el.textContent = 'Popped out';
         document.body.appendChild(el);
-- 
cgit v1.2.3

