intlayer-editor
Version:
Integrate the Intlayer visual editor into your Intlayer projects, enabling CMS-like content management with multilingual support.
102 lines (99 loc) • 5.26 kB
JavaScript
const require_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_node = require("@intlayer/config/node");
let node_path = require("node:path");
let fastify_intlayer = require("fastify-intlayer");
let node_fs = require("node:fs");
let node_url = require("node:url");
let _fastify_compress = require("@fastify/compress");
_fastify_compress = require_runtime.__toESM(_fastify_compress, 1);
let _fastify_cookie = require("@fastify/cookie");
_fastify_cookie = require_runtime.__toESM(_fastify_cookie, 1);
let _fastify_cors = require("@fastify/cors");
_fastify_cors = require_runtime.__toESM(_fastify_cors, 1);
let _fastify_formbody = require("@fastify/formbody");
_fastify_formbody = require_runtime.__toESM(_fastify_formbody, 1);
let _fastify_helmet = require("@fastify/helmet");
_fastify_helmet = require_runtime.__toESM(_fastify_helmet, 1);
let _fastify_static = require("@fastify/static");
_fastify_static = require_runtime.__toESM(_fastify_static, 1);
let _intlayer_config_colors = require("@intlayer/config/colors");
_intlayer_config_colors = require_runtime.__toESM(_intlayer_config_colors, 1);
let _intlayer_config_env = require("@intlayer/config/env");
let _intlayer_config_logger = require("@intlayer/config/logger");
let fastify = require("fastify");
fastify = require_runtime.__toESM(fastify, 1);
let mime = require("mime");
mime = require_runtime.__toESM(mime, 1);
//#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 FALLBACK_PORT = 8e3;
const config = (0, _intlayer_config_node.getConfiguration)(envFileOptions);
const appLogger = (0, _intlayer_config_logger.getAppLogger)(config);
const port = config.editor.port ?? FALLBACK_PORT;
if (!config.editor.enabled) {
appLogger(`Editor is not enabled. Add ${(0, _intlayer_config_logger.colorize)("editor.enabled", _intlayer_config_colors.BLUE)} to ${(0, _intlayer_config_logger.colorizePath)("intlayer.config.ts")} file to enable it.`, { level: "error" });
process.exit(0);
}
const packageJson = JSON.parse((0, node_fs.readFileSync)((0, node_path.resolve)(__dirname$1, "../../package.json"), "utf8"));
const app = (0, fastify.default)({ disableRequestLogging: true });
app.register(fastify_intlayer.intlayer);
const clientDistPath = (0, node_path.resolve)(__dirname$1, "../../client/dist");
const corsOptions = {
origin: "*",
credentials: true
};
const startServer = async (app) => {
if (!await require_utils_checkPortAvailability.checkPortAvailability(port)) {
appLogger(`Error: Port ${port} is already in use.`, { level: "error" });
process.exit(255);
}
await app.register(_fastify_helmet.default, {
contentSecurityPolicy: false,
global: true
});
await app.register(_fastify_cors.default, corsOptions);
await app.register(_fastify_compress.default);
await app.register(_fastify_cookie.default);
await app.register(_fastify_formbody.default);
await app.register(require_routes_dictionary_routes.dictionaryRouter, { prefix: "/api/dictionary" });
await app.register(require_routes_config_routes.configurationRouter, { prefix: "/api/config" });
await app.register(_fastify_static.default, {
root: clientDistPath,
wildcard: false
});
app.setNotFoundHandler((req, reply) => {
const requestedPath = (0, node_path.join)(clientDistPath, req.raw.url || "/");
if ((0, node_fs.existsSync)(requestedPath) && (0, node_fs.lstatSync)(requestedPath).isFile()) {
const mimeType = mime.default.getType(requestedPath) ?? "application/octet-stream";
reply.header("Content-Type", mimeType);
return reply.sendFile(req.raw.url?.split("/").pop() || "index.html");
} else return reply.sendFile("index.html");
});
try {
await app.listen({
port,
host: "0.0.0.0"
});
const dotEnvFilePath = (0, _intlayer_config_env.getEnvFilePath)(envFileOptions.env, envFileOptions.envFile);
console.log(`
${(0, _intlayer_config_logger.colorize)((0, _intlayer_config_logger.colorize)("INTLAYER", _intlayer_config_colors.BOLD), _intlayer_config_colors.GREY_DARK)} ${(0, _intlayer_config_logger.colorize)(`v${packageJson.version}`, _intlayer_config_colors.GREY_DARK)}
Editor running at: ${(0, _intlayer_config_logger.colorizePath)(`http://localhost:${port}`)}
${(0, _intlayer_config_logger.colorize)("➜", _intlayer_config_colors.GREY_DARK)} Watching application at: ${config.editor.applicationURL === "" ? "-" : (0, _intlayer_config_logger.colorizePath)(config.editor.applicationURL)}
${(0, _intlayer_config_logger.colorize)("➜", _intlayer_config_colors.GREY_DARK)} Access key: ${config.editor.clientId ?? "-"}
${(0, _intlayer_config_logger.colorize)("➜", _intlayer_config_colors.GREY_DARK)} Environment: ${dotEnvFilePath ?? "-"}
`);
} catch (err) {
app.log.error(err);
process.exit(1);
}
};
startServer(app);
//#endregion
//# sourceMappingURL=index.cjs.map