import {
__exportAll,
__reExport,
__toCommonJS,
__toESM,
} from 'rolldown:runtime';
class Module {
exportsHolder = { exports: null };
id;
constructor(id) {
this.id = id;
}
get exports() {
return this.exportsHolder.exports;
}
}
export class DevRuntime {
clientId;
constructor(messenger, clientId) {
this.messenger = messenger;
this.clientId = clientId;
}
modules = {};
createModuleHotContext(_moduleId) {
throw new Error('createModuleHotContext should be implemented');
}
applyUpdates(_boundaries) {
throw new Error('applyUpdates should be implemented');
}
registerModule(id, exportsHolder) {
const module = new Module(id);
module.exportsHolder = exportsHolder;
this.modules[id] = module;
this.sendModuleRegisteredMessage(id);
}
loadExports(id) {
const module = this.modules[id];
if (module) {
return module.exportsHolder.exports;
} else {
console.warn(`Module ${id} not found`);
return {};
}
}
createEsmInitializer = (fn, res) => () => (fn && (res = fn((fn = 0))), res);
createCjsInitializer = (cb, mod) => () => (
mod || cb((mod = { exports: {} }).exports, mod), mod.exports
);
__toESM = __toESM;
__toCommonJS = __toCommonJS;
__exportAll = __exportAll;
__toDynamicImportESM = (isNodeMode) => (mod) => __toESM(mod.default, isNodeMode);
__reExport = __reExport;
sendModuleRegisteredMessage = (() => {
const cache = ([]);
let timeout = (null);
let timeoutSetLength = 0;
const self = this;
return function sendModuleRegisteredMessage(module) {
if (!self.messenger) {
return;
}
cache.push(module);
if (!timeout) {
timeout = setTimeout(
function flushCache() {
if (cache.length > timeoutSetLength) {
timeout = setTimeout(flushCache);
timeoutSetLength = cache.length;
return;
}
self.messenger.send({
type: 'hmr:module-registered',
modules: cache,
});
cache.length = 0;
timeout = null;
timeoutSetLength = 0;
},
);
timeoutSetLength = cache.length;
}
};
})();
}