const fs = require('node:fs') const path = require('node:path') const Module = require('node:module') const ts = require('typescript') const root = path.resolve(__dirname, '../..') const compile = source => ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 }, }).outputText function runtime() { const clock = { now: 1793232000000, requests: 0, offline: false } const realNow = Date.now, realFetch = global.fetch Date.now = () => clock.now global.fetch = async () => { clock.requests++ if (clock.offline) throw new Error('Offline') return { ok: true, json: async () => ({ data: { serverTime: clock.now, ttlSeconds: 1800 } }) } } const filename = path.join(root, 'src/utils/file-access.ts') const core = new Module(path.join(root, 'src/utils/file-access-core.ts'), module) core.filename = core.id; core.paths = Module._nodeModulePaths(path.dirname(core.filename)) core._compile(compile(fs.readFileSync(core.filename, 'utf8')), core.filename) const loaded = new Module(filename, module) loaded.filename = filename; loaded.paths = core.paths loaded.require = name => name === './file-access-core' ? core.exports : core.require(name) const env = { VITE_FILE_ACCESS_APP_ID: 'admin', VITE_FILE_ACCESS_KEY_ID: 'v1', VITE_FILE_ACCESS_KEY: JSON.parse(fs.readFileSync(path.join(root, 'test-vectors/file-access.json'), 'utf8'))[0].key, VITE_IMAGE_BASE_PATH: 'https://files.example/api', VITE_FILE_ACCESS_ALLOWED_ORIGINS: '', } loaded._compile(compile(fs.readFileSync(filename, 'utf8').replace(/import\.meta\.env/g, '(' + JSON.stringify(env) + ')')), filename) return { api: loaded.exports, clock, close() { Date.now = realNow; global.fetch = realFetch } } } module.exports = { runtime, compile, root }