const { test } = require('node:test') const assert = require('node:assert/strict') const fs = require('node:fs') const vm = require('node:vm') const vue = require('vue') const ts = require('../../backend/node_modules/typescript') const deferred = () => { let resolve const promise = new Promise(done => { resolve = done }) return { promise, resolve } } const settle = () => new Promise(setImmediate) function setup(api, apiBase = 'https://fedeo.example/backend') { const auth = vue.reactive({ activeTenant: '1', user: { is_admin: true } }) const timers = new Map() let timerId = 0 let mount let unmount const context = vm.createContext({ require, exports: {}, URL, ref: vue.ref, computed: vue.computed, watch: vue.watch, useAuthStore: () => auth, useRuntimeConfig: () => ({ public: { apiBase } }), useFiles: () => ({}), useToast: () => ({ add() {} }), useNuxtApp: () => ({ $api: api }), window: { location: { origin: 'https://fedeo.example' } }, onMounted: handler => { mount = handler }, onBeforeUnmount: handler => { unmount = handler }, setTimeout: handler => { timers.set(++timerId, handler); return timerId }, clearTimeout: id => timers.delete(id), }) const source = fs.readFileSync(`${__dirname}/../pages/organisation/dokumentenablage.vue`, 'utf8').match(/