intlayer-editor
Version:
Integrate the Intlayer visual editor into your Intlayer projects, enabling CMS-like content management with multilingual support.
78 lines (75 loc) • 4.08 kB
JavaScript
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
const require_routes_config_routes = require('./routes/config.routes.cjs');
const require_routes_dictionary_routes = require('./routes/dictionary.routes.cjs');
const require_utils_checkPortAvailability = require('./utils/checkPortAvailability.cjs');
let _intlayer_config = require("@intlayer/config");
let express_intlayer = require("express-intlayer");
let node_fs = require("node:fs");
let node_path = require("node:path");
let node_url = require("node:url");
let express = require("express");
express = require_rolldown_runtime.__toESM(express);
let compression = require("compression");
compression = require_rolldown_runtime.__toESM(compression);
let cookie_parser = require("cookie-parser");
cookie_parser = require_rolldown_runtime.__toESM(cookie_parser);
let cors = require("cors");
cors = require_rolldown_runtime.__toESM(cors);
let helmet = require("helmet");
helmet = require_rolldown_runtime.__toESM(helmet);
let mime = require("mime");
mime = require_rolldown_runtime.__toESM(mime);
//#region src/index.ts
const __dirname$1 = (0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href));
const envFileOptions = {
env: process.env.NODE_ENV,
envFile: process.env.ENV_FILE
};
const packageJson = JSON.parse((0, node_fs.readFileSync)((0, node_path.resolve)(__dirname$1, "../../package.json"), "utf8"));
const app = (0, express.default)();
app.use((0, express_intlayer.intlayer)());
const FALLBACK_PORT = 8e3;
const config = (0, _intlayer_config.getConfiguration)(envFileOptions);
const port = config.editor.port ?? FALLBACK_PORT;
const clientDistPath = (0, node_path.resolve)(__dirname$1, "../../client/dist");
const corsOptions = {
origin: "*",
credentials: true
};
const startServer = async (app$1) => {
if (!await require_utils_checkPortAvailability.checkPortAvailability(port)) {
console.error(`\x1b[1;31mError: Port ${port} is already in use.\x1b[0m`);
process.exit(255);
}
app$1.disable("x-powered-by");
app$1.use((0, helmet.default)({ contentSecurityPolicy: false }));
app$1.use((0, cors.default)(corsOptions));
app$1.use((0, compression.default)());
app$1.use(express.default.json());
app$1.use((0, cookie_parser.default)());
app$1.use(express.default.urlencoded({ extended: true }));
app$1.use("/api/dictionary", require_routes_dictionary_routes.dictionaryRouter);
app$1.use("/api/config", require_routes_config_routes.configurationRouter);
app$1.use(express.default.static(clientDistPath));
app$1.get(/(.*)/, (req, res) => {
const requestedPath = (0, node_path.join)(clientDistPath, req.url);
if ((0, node_fs.existsSync)(requestedPath) && (0, node_fs.lstatSync)(requestedPath).isFile()) {
const mimeType = mime.default.getType(requestedPath) ?? "application/octet-stream";
res.setHeader("Content-Type", mimeType);
res.sendFile(requestedPath);
} else res.sendFile((0, node_path.resolve)(clientDistPath, "index.html"));
});
app$1.listen(port, () => {
const dotEnvFilePath = (0, _intlayer_config.getEnvFilePath)(envFileOptions.env, envFileOptions.envFile);
console.log(`
${(0, _intlayer_config.colorize)((0, _intlayer_config.colorize)("INTLAYER", _intlayer_config.ANSIColors.BOLD), _intlayer_config.ANSIColors.GREY_DARK)} ${(0, _intlayer_config.colorize)(`v${packageJson.version}`, _intlayer_config.ANSIColors.GREY_DARK)}
Editor running at: ${(0, _intlayer_config.colorizePath)(`http://localhost:${port}`)}
${(0, _intlayer_config.colorize)("➜", _intlayer_config.ANSIColors.GREY_DARK)} Watching application at: ${config.editor.applicationURL === "" ? "-" : (0, _intlayer_config.colorizePath)(config.editor.applicationURL)}
${(0, _intlayer_config.colorize)("➜", _intlayer_config.ANSIColors.GREY_DARK)} Access key: ${config.editor.clientId ?? "-"}
${(0, _intlayer_config.colorize)("➜", _intlayer_config.ANSIColors.GREY_DARK)} Environment: ${dotEnvFilePath ?? "-"}
`);
});
};
startServer(app);
//#endregion
//# sourceMappingURL=index.cjs.map