'use strict';
const path = require('path');
const url = require('url');
const fs = require('fs');
const clientModules = {};
const clientManifest = {};
const ssrModuleMap = {};
let moduleIdx = 0;
function registerClientModule(modulePath) {
const id = String(moduleIdx++);
const chunkId = 'chunk-' + id;
const absPath = path.resolve(__dirname, modulePath);
const actualExports = require(absPath);
clientModules[id] = actualExports;
const href = url.pathToFileURL(absPath).href;
clientManifest[href] = {id, chunks: [chunkId, absPath], name: '*'};
ssrModuleMap[id] = {'*': {id, chunks: [chunkId, absPath], name: '*'}};
}
const srcDirs = [
path.resolve(__dirname, 'src'),
path.resolve(__dirname, 'src/components'),
];
for (const dir of srcDirs) {
if (!fs.existsSync(dir)) continue;
for (const file of fs.readdirSync(dir)) {
if (!file.endsWith('.js')) continue;
const filePath = path.join(dir, file);
const source = fs.readFileSync(filePath, 'utf-8');
if (
source.trimStart().startsWith("'use client'") ||
source.trimStart().startsWith('"use client"')
) {
registerClientModule(filePath);
}
}
}
global.__webpack_require__ = function (id) {
if (clientModules[id]) {
return clientModules[id];
}
throw new Error('Unknown module: ' + id);
};
global.__webpack_chunk_load__ = function () {
return new Promise(function (resolve) {
setImmediate(resolve);
});
};
const ssrManifest = {
moduleMap: ssrModuleMap,
moduleLoading: null,
serverModuleMap: null,
};
module.exports = {clientManifest, ssrManifest};