21 lines
1.1 KiB
JavaScript
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 };
|
|
};
|