import {
__exportAll,
__reExport,
__toCommonJS,
__toDynamicImportESM,
__toESM,
} from 'rolldown:runtime';
class Module {
exportsHolder = { exports: null };
id;
constructor(id) {
this.id = id;
}
get exports() {
return this.exportsHolder.exports;
}
}
export class DevRuntime {
constructor(messenger) {
this.messenger = messenger;
}
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 = __toDynamicImportESM;
__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;
}
};
})();
}