Files
MatchMaster/tools/activity-loader-test-support.cjs
T
2026-10-16 15:02:14 +08:00

21 lines
1.1 KiB
JavaScript

const fs = require('node:fs'), vm = require('node:vm'), ts = require('typescript');
const code = ts.transpileModule(fs.readFileSync('assets/Script/module/Config/ActivityBundleLoader.ts', 'utf8'), {
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2017 }
}).outputText;
module.exports = (cc, window) => {
if (!window) {
const tasks = new Map();
const ensureBundle = name => {
if (!tasks.has(name)) tasks.set(name, new Promise((resolve, reject) => {
cc.assetManager.loadBundle(name, (error, bundle) => error ? reject(error) : resolve(bundle));
}).catch(error => { tasks.delete(name); throw error; }));
return tasks.get(name);
};
window = { __activityBundles: { ensureBundle, retainGroup: () => () => {}, prepareGroup: async () => {},
acquireBundle: async name => ({ bundle: await ensureBundle(name), release() {} }) } };
}
const exports = {};
vm.runInNewContext(code, { exports, cc, window });
return { default: exports.default };
};