1
0
mirror of https://github.com/jaandrle/deka-dom-el synced 2024-11-22 07:49:38 +01:00

♻️ Refactor jsdom register function

This commit is contained in:
Jan Andrle 2023-09-06 14:54:02 +02:00
parent ac22b58e8b
commit dbd8dd557b
Signed by: jaandrle
GPG Key ID: B3A25AED155AFFAB
2 changed files with 30 additions and 10 deletions

1
src/jsdom.d.ts vendored
View File

@ -1,4 +1,5 @@
import { el, assign, on } from "../index.d"; import { el, assign, on } from "../index.d";
export * from "../index.d";
export function register(dom: typeof document): Promise<{ export function register(dom: typeof document): Promise<{
el: typeof el, el: typeof el,
assign: typeof assign, assign: typeof assign,

View File

@ -1,11 +1,30 @@
let keys= []; const keys= [ "HTMLElement", "SVGElement", "DocumentFragment", "MutationObserver", "document" ];
export function register(dom){ let dom_last;
const window= dom.window; export let el;
if(!keys.length) export let assign;
keys= Object.getOwnPropertyNames(window).filter((k) => !k.startsWith('_') && !(k in globalThis)); export let on;
keys.forEach(key=> globalThis[key]= window[key]); export async function register(dom, keys_aditional= []){
global.document= window.document if(dom_last===dom)
global.window= window return import("../index.js");
window.console= global.console
return import("../index.js"); keys.push(...keys_aditional);
const w= dom.window;
keys.forEach(key=> globalThis[key]= w[key]);
globalThis.window= w;
w.console= globalThis.console;
const m= await import("../index.js");
el= m.el;
assign= m.assign;
on= m.on;
return m;
}
export function unregister(){
if(!dom_last)
return false;
keys.forEach(key=> Reflect.deleteProperty(globalThis, key));
Reflect.deleteProperty(globalThis, "window");
dom_last= undefined;
return true;
} }