Files
pj_admin_cloud/tests/helpers/file-access-runtime.cjs
dzc d86bc810cc fix:图片访问
fix:权限修改
2026-10-29 14:26:56 +08:00

37 lines
1.8 KiB
JavaScript

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 }