UNPKG

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
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