intlayer-editor 8.3.3 → 8.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/intlayer-editor.mjs +2 -0
- package/client/dist/assets/{CodeBlockShiki-C7k38nEi.js → CodeBlockShiki-B-TdpLk0.js} +3 -3
- package/client/dist/assets/{bundle-web-JmmCRGiA.js → bundle-web-BGnQD1YQ.js} +1 -1
- package/client/dist/assets/{index-COd-1BIH.js → index-Dwm0kT3V.js} +2160 -1258
- package/client/dist/index.html +1 -1
- package/package.json +13 -13
- package/server/dist/index.cjs +1 -1
- package/server/dist/index.cjs.map +1 -1
- package/server/dist/index.mjs +1 -1
- package/server/dist/index.mjs.map +1 -1
package/client/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Intlayer Editor</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-Dwm0kT3V.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CC9Q-vWm.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/react-BPfKr7Oj.js">
|
|
11
11
|
<link rel="stylesheet" crossorigin href="/assets/index-CZKvTyfO.css">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "intlayer-editor",
|
|
3
|
-
"version": "8.3.
|
|
3
|
+
"version": "8.3.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Integrate the Intlayer visual editor into your Intlayer projects, enabling CMS-like content management with multilingual support.",
|
|
6
6
|
"keywords": [
|
|
@@ -93,17 +93,17 @@
|
|
|
93
93
|
"@fastify/formbody": "8.0.2",
|
|
94
94
|
"@fastify/helmet": "13.0.2",
|
|
95
95
|
"@fastify/static": "9.0.0",
|
|
96
|
-
"@intlayer/chokidar": "8.3.
|
|
97
|
-
"@intlayer/config": "8.3.
|
|
98
|
-
"@intlayer/unmerged-dictionaries-entry": "8.3.
|
|
96
|
+
"@intlayer/chokidar": "8.3.4",
|
|
97
|
+
"@intlayer/config": "8.3.4",
|
|
98
|
+
"@intlayer/unmerged-dictionaries-entry": "8.3.4",
|
|
99
99
|
"fastify": "5.8.1",
|
|
100
|
-
"fastify-intlayer": "8.3.
|
|
100
|
+
"fastify-intlayer": "8.3.4",
|
|
101
101
|
"mime": "4.1.0"
|
|
102
102
|
},
|
|
103
103
|
"devDependencies": {
|
|
104
|
-
"@intlayer/design-system": "8.3.
|
|
105
|
-
"@intlayer/editor-react": "8.3.
|
|
106
|
-
"@intlayer/types": "8.3.
|
|
104
|
+
"@intlayer/design-system": "8.3.4",
|
|
105
|
+
"@intlayer/editor-react": "8.3.4",
|
|
106
|
+
"@intlayer/types": "8.3.4",
|
|
107
107
|
"@tailwindcss/vite": "4.2.1",
|
|
108
108
|
"@tanstack/react-query": "5.90.21",
|
|
109
109
|
"@types/node": "25.5.0",
|
|
@@ -114,21 +114,21 @@
|
|
|
114
114
|
"autoprefixer": "10.4.27",
|
|
115
115
|
"babel-plugin-react-compiler": "1.0.0",
|
|
116
116
|
"clsx": "2.1.1",
|
|
117
|
-
"framer-motion": "12.
|
|
117
|
+
"framer-motion": "12.37.0",
|
|
118
118
|
"fuse.js": "7.1.0",
|
|
119
119
|
"globals": "17.4.0",
|
|
120
|
-
"intlayer": "8.3.
|
|
120
|
+
"intlayer": "8.3.4",
|
|
121
121
|
"lucide-react": "0.577.0",
|
|
122
122
|
"react": "19.2.4",
|
|
123
123
|
"react-dom": "19.2.4",
|
|
124
|
-
"react-intlayer": "8.3.
|
|
124
|
+
"react-intlayer": "8.3.4",
|
|
125
125
|
"react-router-dom": "7.13.1",
|
|
126
126
|
"tailwind-merge": "3.5.0",
|
|
127
127
|
"tailwindcss": "4.2.1",
|
|
128
|
-
"tsdown": "0.21.
|
|
128
|
+
"tsdown": "0.21.4",
|
|
129
129
|
"typescript": "5.9.3",
|
|
130
130
|
"vite": "8.0.0",
|
|
131
|
-
"vite-intlayer": "8.3.
|
|
131
|
+
"vite-intlayer": "8.3.4",
|
|
132
132
|
"vitest": "4.1.0"
|
|
133
133
|
},
|
|
134
134
|
"engines": {
|
package/server/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`./_virtual/_rolldown/runtime.cjs`),t=require(`./routes/config.routes.cjs`),n=require(`./routes/dictionary.routes.cjs`),r=require(`./utils/checkPortAvailability.cjs`);let i=require(`@intlayer/config/node`),a=require(`fastify-intlayer`),o=require(`node:fs`),s=require(`node:path`),c=require(`node:url`),l=require(`@fastify/compress`);l=e.__toESM(l);let u=require(`@fastify/cookie`);u=e.__toESM(u);let d=require(`@fastify/cors`);d=e.__toESM(d);let f=require(`@fastify/formbody`);f=e.__toESM(f);let p=require(`@fastify/helmet`);p=e.__toESM(p);let m=require(`@fastify/static`);m=e.__toESM(m);let h=require(`@intlayer/config/env`),g=require(`@intlayer/config/logger`),_=require(`fastify`);_=e.__toESM(_);let v=require(`mime`);v=e.__toESM(v);const y=(0,s.dirname)((0,c.fileURLToPath)(require(`url`).pathToFileURL(__filename).href)),b={env:process.env.NODE_ENV,envFile:process.env.ENV_FILE},x=(0,i.getConfiguration)(b),S=(0,g.getAppLogger)(x),C=x.editor.port??8e3;x.editor.enabled||(S(`Editor is not enabled. Add ${(0,g.colorize)(`
|
|
1
|
+
const e=require(`./_virtual/_rolldown/runtime.cjs`),t=require(`./routes/config.routes.cjs`),n=require(`./routes/dictionary.routes.cjs`),r=require(`./utils/checkPortAvailability.cjs`);let i=require(`@intlayer/config/node`),a=require(`fastify-intlayer`),o=require(`node:fs`),s=require(`node:path`),c=require(`node:url`),l=require(`@fastify/compress`);l=e.__toESM(l);let u=require(`@fastify/cookie`);u=e.__toESM(u);let d=require(`@fastify/cors`);d=e.__toESM(d);let f=require(`@fastify/formbody`);f=e.__toESM(f);let p=require(`@fastify/helmet`);p=e.__toESM(p);let m=require(`@fastify/static`);m=e.__toESM(m);let h=require(`@intlayer/config/env`),g=require(`@intlayer/config/logger`),_=require(`fastify`);_=e.__toESM(_);let v=require(`mime`);v=e.__toESM(v);const y=(0,s.dirname)((0,c.fileURLToPath)(require(`url`).pathToFileURL(__filename).href)),b={env:process.env.NODE_ENV,envFile:process.env.ENV_FILE},x=(0,i.getConfiguration)(b),S=(0,g.getAppLogger)(x),C=x.editor.port??8e3;x.editor.enabled||(S(`Editor is not enabled. Add ${(0,g.colorize)(`editor.enabled`,g.ANSIColors.BLUE)} to ${(0,g.colorizePath)(`intlayer.config.ts`)} file to enable it.`,{level:`error`}),process.exit(0));const w=JSON.parse((0,o.readFileSync)((0,s.resolve)(y,`../../package.json`),`utf8`)),T=(0,_.default)({disableRequestLogging:!0});T.register(a.intlayer);const E=(0,s.resolve)(y,`../../client/dist`),D={origin:`*`,credentials:!0};(async e=>{await r.checkPortAvailability(C)||(S(`Error: Port ${C} is already in use.`,{level:`error`}),process.exit(255)),await e.register(p.default,{contentSecurityPolicy:!1,global:!0}),await e.register(d.default,D),await e.register(l.default),await e.register(u.default),await e.register(f.default),await e.register(n.dictionaryRouter,{prefix:`/api/dictionary`}),await e.register(t.configurationRouter,{prefix:`/api/config`}),await e.register(m.default,{root:E,wildcard:!1}),e.setNotFoundHandler((e,t)=>{let n=(0,s.join)(E,e.raw.url||`/`);if((0,o.existsSync)(n)&&(0,o.lstatSync)(n).isFile()){let r=v.default.getType(n)??`application/octet-stream`;return t.header(`Content-Type`,r),t.sendFile(e.raw.url?.split(`/`).pop()||`index.html`)}else return t.sendFile(`index.html`)});try{await e.listen({port:C,host:`0.0.0.0`});let t=(0,h.getEnvFilePath)(b.env,b.envFile);console.log(`
|
|
2
2
|
${(0,g.colorize)((0,g.colorize)(`INTLAYER`,g.ANSIColors.BOLD),g.ANSIColors.GREY_DARK)} ${(0,g.colorize)(`v${w.version}`,g.ANSIColors.GREY_DARK)}
|
|
3
3
|
|
|
4
4
|
Editor running at: ${(0,g.colorizePath)(`http://localhost:${C}`)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["__dirname","ANSIColors","intlayer","checkPortAvailability","fastifyHelmet","fastifyCors","fastifyCompress","fastifyCookie","fastifyFormbody","dictionaryRouter","configurationRouter","fastifyStatic"],"sources":["../src/index.ts"],"sourcesContent":["import { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport fastifyCompress from '@fastify/compress';\nimport fastifyCookie from '@fastify/cookie';\nimport fastifyCors, { type FastifyCorsOptions } from '@fastify/cors';\nimport fastifyFormbody from '@fastify/formbody';\nimport fastifyHelmet from '@fastify/helmet';\nimport fastifyStatic from '@fastify/static';\nimport { getEnvFilePath } from '@intlayer/config/env';\nimport {\n ANSIColors,\n colorize,\n colorizePath,\n getAppLogger,\n} from '@intlayer/config/logger';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport Fastify, { type FastifyInstance } from 'fastify';\nimport { intlayer } from 'fastify-intlayer';\nimport mime from 'mime';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst envFileOptions = {\n env: process.env.NODE_ENV,\n envFile: process.env.ENV_FILE,\n};\n\nconst FALLBACK_PORT = 8000;\nconst config = getConfiguration(envFileOptions);\n\nconst appLogger = getAppLogger(config);\nconst port = config.editor.port ?? FALLBACK_PORT;\n\nif (!config.editor.enabled) {\n appLogger(\n `Editor is not enabled. Add ${colorize('
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["__dirname","ANSIColors","intlayer","checkPortAvailability","fastifyHelmet","fastifyCors","fastifyCompress","fastifyCookie","fastifyFormbody","dictionaryRouter","configurationRouter","fastifyStatic"],"sources":["../src/index.ts"],"sourcesContent":["import { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport fastifyCompress from '@fastify/compress';\nimport fastifyCookie from '@fastify/cookie';\nimport fastifyCors, { type FastifyCorsOptions } from '@fastify/cors';\nimport fastifyFormbody from '@fastify/formbody';\nimport fastifyHelmet from '@fastify/helmet';\nimport fastifyStatic from '@fastify/static';\nimport { getEnvFilePath } from '@intlayer/config/env';\nimport {\n ANSIColors,\n colorize,\n colorizePath,\n getAppLogger,\n} from '@intlayer/config/logger';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport Fastify, { type FastifyInstance } from 'fastify';\nimport { intlayer } from 'fastify-intlayer';\nimport mime from 'mime';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst envFileOptions = {\n env: process.env.NODE_ENV,\n envFile: process.env.ENV_FILE,\n};\n\nconst FALLBACK_PORT = 8000;\nconst config = getConfiguration(envFileOptions);\n\nconst appLogger = getAppLogger(config);\nconst port = config.editor.port ?? FALLBACK_PORT;\n\nif (!config.editor.enabled) {\n appLogger(\n `Editor is not enabled. Add ${colorize('editor.enabled', ANSIColors.BLUE)} to ${colorizePath('intlayer.config.ts')} file to enable it.`,\n {\n level: 'error',\n }\n );\n process.exit(0);\n}\n\n// Load package.json\nconst packageJson = JSON.parse(\n readFileSync(resolve(__dirname, '../../package.json'), 'utf8')\n);\n\nconst app: FastifyInstance = Fastify({\n disableRequestLogging: true, // Optional: Keep logs clean like the original\n});\n\n// Load internationalization plugin\n// Assuming fastify-intlayer is the Fastify equivalent of express-intlayer\napp.register(intlayer);\n\nconst clientDistPath = resolve(__dirname, '../../client/dist');\n\nconst corsOptions: FastifyCorsOptions = {\n origin: '*',\n credentials: true,\n};\n\nconst startServer = async (app: FastifyInstance) => {\n const isPortAvailable = await checkPortAvailability(port);\n\n if (!isPortAvailable) {\n appLogger(`Error: Port ${port} is already in use.`, {\n level: 'error',\n });\n process.exit(255);\n }\n\n // Security Headers\n await app.register(fastifyHelmet, {\n contentSecurityPolicy: false,\n global: true,\n });\n\n // CORS\n await app.register(fastifyCors, corsOptions);\n\n // Compression\n await app.register(fastifyCompress);\n\n // Cookie Parser\n await app.register(fastifyCookie);\n\n // Parse application/x-www-form-urlencoded\n await app.register(fastifyFormbody);\n\n // Register Routes\n await app.register(dictionaryRouter, { prefix: '/api/dictionary' });\n await app.register(configurationRouter, { prefix: '/api/config' });\n\n // Serve Static Files\n await app.register(fastifyStatic, {\n root: clientDistPath,\n wildcard: false, // We handle the fallback manually to match SPA logic\n });\n\n // For single-page applications, redirect all unmatched routes to index.html\n app.setNotFoundHandler((req, reply) => {\n const requestedPath = join(clientDistPath, req.raw.url || '/');\n\n if (existsSync(requestedPath) && lstatSync(requestedPath).isFile()) {\n const mimeType =\n mime.getType(requestedPath) ?? 'application/octet-stream';\n reply.header('Content-Type', mimeType);\n return reply.sendFile(req.raw.url?.split('/').pop() || 'index.html');\n } else {\n return reply.sendFile('index.html');\n }\n });\n\n try {\n await app.listen({ port, host: '0.0.0.0' });\n\n const dotEnvFilePath = getEnvFilePath(\n envFileOptions.env,\n envFileOptions.envFile\n );\n\n console.log(`\n ${colorize(colorize('INTLAYER', ANSIColors.BOLD), ANSIColors.GREY_DARK)} ${colorize(`v${packageJson.version}`, ANSIColors.GREY_DARK)}\n\n Editor running at: ${colorizePath(`http://localhost:${port}`)}\n ${colorize('➜', ANSIColors.GREY_DARK)} Watching application at: ${config.editor.applicationURL === '' ? '-' : colorizePath(config.editor.applicationURL)}\n ${colorize('➜', ANSIColors.GREY_DARK)} Access key: ${config.editor.clientId ?? '-'}\n ${colorize('➜', ANSIColors.GREY_DARK)} Environment: ${dotEnvFilePath ?? '-'}\n `);\n } catch (err) {\n app.log.error(err);\n process.exit(1);\n }\n};\n\n// Start it up!\nstartServer(app);\n"],"mappings":"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"}
|
package/server/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{configurationRouter as e}from"./routes/config.routes.mjs";import{dictionaryRouter as t}from"./routes/dictionary.routes.mjs";import{checkPortAvailability as n}from"./utils/checkPortAvailability.mjs";import{getConfiguration as r}from"@intlayer/config/node";import{intlayer as i}from"fastify-intlayer";import{existsSync as a,lstatSync as o,readFileSync as s}from"node:fs";import{dirname as c,join as l,resolve as u}from"node:path";import{fileURLToPath as d}from"node:url";import f from"@fastify/compress";import p from"@fastify/cookie";import m from"@fastify/cors";import h from"@fastify/formbody";import g from"@fastify/helmet";import _ from"@fastify/static";import{getEnvFilePath as v}from"@intlayer/config/env";import{ANSIColors as y,colorize as b,colorizePath as x,getAppLogger as S}from"@intlayer/config/logger";import C from"fastify";import w from"mime";const T=c(d(import.meta.url)),E={env:`production`,envFile:process.env.ENV_FILE},D=r(E),O=S(D),k=D.editor.port??8e3;D.editor.enabled||(O(`Editor is not enabled. Add ${b(`
|
|
1
|
+
import{configurationRouter as e}from"./routes/config.routes.mjs";import{dictionaryRouter as t}from"./routes/dictionary.routes.mjs";import{checkPortAvailability as n}from"./utils/checkPortAvailability.mjs";import{getConfiguration as r}from"@intlayer/config/node";import{intlayer as i}from"fastify-intlayer";import{existsSync as a,lstatSync as o,readFileSync as s}from"node:fs";import{dirname as c,join as l,resolve as u}from"node:path";import{fileURLToPath as d}from"node:url";import f from"@fastify/compress";import p from"@fastify/cookie";import m from"@fastify/cors";import h from"@fastify/formbody";import g from"@fastify/helmet";import _ from"@fastify/static";import{getEnvFilePath as v}from"@intlayer/config/env";import{ANSIColors as y,colorize as b,colorizePath as x,getAppLogger as S}from"@intlayer/config/logger";import C from"fastify";import w from"mime";const T=c(d(import.meta.url)),E={env:`production`,envFile:process.env.ENV_FILE},D=r(E),O=S(D),k=D.editor.port??8e3;D.editor.enabled||(O(`Editor is not enabled. Add ${b(`editor.enabled`,y.BLUE)} to ${x(`intlayer.config.ts`)} file to enable it.`,{level:`error`}),process.exit(0));const A=JSON.parse(s(u(T,`../../package.json`),`utf8`)),j=C({disableRequestLogging:!0});j.register(i);const M=u(T,`../../client/dist`),N={origin:`*`,credentials:!0};(async r=>{await n(k)||(O(`Error: Port ${k} is already in use.`,{level:`error`}),process.exit(255)),await r.register(g,{contentSecurityPolicy:!1,global:!0}),await r.register(m,N),await r.register(f),await r.register(p),await r.register(h),await r.register(t,{prefix:`/api/dictionary`}),await r.register(e,{prefix:`/api/config`}),await r.register(_,{root:M,wildcard:!1}),r.setNotFoundHandler((e,t)=>{let n=l(M,e.raw.url||`/`);if(a(n)&&o(n).isFile()){let r=w.getType(n)??`application/octet-stream`;return t.header(`Content-Type`,r),t.sendFile(e.raw.url?.split(`/`).pop()||`index.html`)}else return t.sendFile(`index.html`)});try{await r.listen({port:k,host:`0.0.0.0`});let e=v(E.env,E.envFile);console.log(`
|
|
2
2
|
${b(b(`INTLAYER`,y.BOLD),y.GREY_DARK)} ${b(`v${A.version}`,y.GREY_DARK)}
|
|
3
3
|
|
|
4
4
|
Editor running at: ${x(`http://localhost:${k}`)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport fastifyCompress from '@fastify/compress';\nimport fastifyCookie from '@fastify/cookie';\nimport fastifyCors, { type FastifyCorsOptions } from '@fastify/cors';\nimport fastifyFormbody from '@fastify/formbody';\nimport fastifyHelmet from '@fastify/helmet';\nimport fastifyStatic from '@fastify/static';\nimport { getEnvFilePath } from '@intlayer/config/env';\nimport {\n ANSIColors,\n colorize,\n colorizePath,\n getAppLogger,\n} from '@intlayer/config/logger';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport Fastify, { type FastifyInstance } from 'fastify';\nimport { intlayer } from 'fastify-intlayer';\nimport mime from 'mime';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst envFileOptions = {\n env: process.env.NODE_ENV,\n envFile: process.env.ENV_FILE,\n};\n\nconst FALLBACK_PORT = 8000;\nconst config = getConfiguration(envFileOptions);\n\nconst appLogger = getAppLogger(config);\nconst port = config.editor.port ?? FALLBACK_PORT;\n\nif (!config.editor.enabled) {\n appLogger(\n `Editor is not enabled. Add ${colorize('
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { existsSync, lstatSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport fastifyCompress from '@fastify/compress';\nimport fastifyCookie from '@fastify/cookie';\nimport fastifyCors, { type FastifyCorsOptions } from '@fastify/cors';\nimport fastifyFormbody from '@fastify/formbody';\nimport fastifyHelmet from '@fastify/helmet';\nimport fastifyStatic from '@fastify/static';\nimport { getEnvFilePath } from '@intlayer/config/env';\nimport {\n ANSIColors,\n colorize,\n colorizePath,\n getAppLogger,\n} from '@intlayer/config/logger';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { configurationRouter } from '@routes/config.routes';\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { checkPortAvailability } from '@utils/checkPortAvailability';\nimport Fastify, { type FastifyInstance } from 'fastify';\nimport { intlayer } from 'fastify-intlayer';\nimport mime from 'mime';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst envFileOptions = {\n env: process.env.NODE_ENV,\n envFile: process.env.ENV_FILE,\n};\n\nconst FALLBACK_PORT = 8000;\nconst config = getConfiguration(envFileOptions);\n\nconst appLogger = getAppLogger(config);\nconst port = config.editor.port ?? FALLBACK_PORT;\n\nif (!config.editor.enabled) {\n appLogger(\n `Editor is not enabled. Add ${colorize('editor.enabled', ANSIColors.BLUE)} to ${colorizePath('intlayer.config.ts')} file to enable it.`,\n {\n level: 'error',\n }\n );\n process.exit(0);\n}\n\n// Load package.json\nconst packageJson = JSON.parse(\n readFileSync(resolve(__dirname, '../../package.json'), 'utf8')\n);\n\nconst app: FastifyInstance = Fastify({\n disableRequestLogging: true, // Optional: Keep logs clean like the original\n});\n\n// Load internationalization plugin\n// Assuming fastify-intlayer is the Fastify equivalent of express-intlayer\napp.register(intlayer);\n\nconst clientDistPath = resolve(__dirname, '../../client/dist');\n\nconst corsOptions: FastifyCorsOptions = {\n origin: '*',\n credentials: true,\n};\n\nconst startServer = async (app: FastifyInstance) => {\n const isPortAvailable = await checkPortAvailability(port);\n\n if (!isPortAvailable) {\n appLogger(`Error: Port ${port} is already in use.`, {\n level: 'error',\n });\n process.exit(255);\n }\n\n // Security Headers\n await app.register(fastifyHelmet, {\n contentSecurityPolicy: false,\n global: true,\n });\n\n // CORS\n await app.register(fastifyCors, corsOptions);\n\n // Compression\n await app.register(fastifyCompress);\n\n // Cookie Parser\n await app.register(fastifyCookie);\n\n // Parse application/x-www-form-urlencoded\n await app.register(fastifyFormbody);\n\n // Register Routes\n await app.register(dictionaryRouter, { prefix: '/api/dictionary' });\n await app.register(configurationRouter, { prefix: '/api/config' });\n\n // Serve Static Files\n await app.register(fastifyStatic, {\n root: clientDistPath,\n wildcard: false, // We handle the fallback manually to match SPA logic\n });\n\n // For single-page applications, redirect all unmatched routes to index.html\n app.setNotFoundHandler((req, reply) => {\n const requestedPath = join(clientDistPath, req.raw.url || '/');\n\n if (existsSync(requestedPath) && lstatSync(requestedPath).isFile()) {\n const mimeType =\n mime.getType(requestedPath) ?? 'application/octet-stream';\n reply.header('Content-Type', mimeType);\n return reply.sendFile(req.raw.url?.split('/').pop() || 'index.html');\n } else {\n return reply.sendFile('index.html');\n }\n });\n\n try {\n await app.listen({ port, host: '0.0.0.0' });\n\n const dotEnvFilePath = getEnvFilePath(\n envFileOptions.env,\n envFileOptions.envFile\n );\n\n console.log(`\n ${colorize(colorize('INTLAYER', ANSIColors.BOLD), ANSIColors.GREY_DARK)} ${colorize(`v${packageJson.version}`, ANSIColors.GREY_DARK)}\n\n Editor running at: ${colorizePath(`http://localhost:${port}`)}\n ${colorize('➜', ANSIColors.GREY_DARK)} Watching application at: ${config.editor.applicationURL === '' ? '-' : colorizePath(config.editor.applicationURL)}\n ${colorize('➜', ANSIColors.GREY_DARK)} Access key: ${config.editor.clientId ?? '-'}\n ${colorize('➜', ANSIColors.GREY_DARK)} Environment: ${dotEnvFilePath ?? '-'}\n `);\n } catch (err) {\n app.log.error(err);\n process.exit(1);\n }\n};\n\n// Start it up!\nstartServer(app);\n"],"mappings":"g2BAwBA,MAAM,EAAY,EAAQ,EAAc,OAAO,KAAK,IAAI,CAAC,CAEnD,EAAiB,CACrB,IAAA,aACA,QAAS,QAAQ,IAAI,SACtB,CAGK,EAAS,EAAiB,EAAe,CAEzC,EAAY,EAAa,EAAO,CAChC,EAAO,EAAO,OAAO,MAAQ,IAE9B,EAAO,OAAO,UACjB,EACE,8BAA8B,EAAS,iBAAkB,EAAW,KAAK,CAAC,MAAM,EAAa,qBAAqB,CAAC,qBACnH,CACE,MAAO,QACR,CACF,CACD,QAAQ,KAAK,EAAE,EAIjB,MAAM,EAAc,KAAK,MACvB,EAAa,EAAQ,EAAW,qBAAqB,CAAE,OAAO,CAC/D,CAEK,EAAuB,EAAQ,CACnC,sBAAuB,GACxB,CAAC,CAIF,EAAI,SAAS,EAAS,CAEtB,MAAM,EAAiB,EAAQ,EAAW,oBAAoB,CAExD,EAAkC,CACtC,OAAQ,IACR,YAAa,GACd,EAEmB,KAAO,IAAyB,CAC1B,MAAM,EAAsB,EAAK,GAGvD,EAAU,eAAe,EAAK,qBAAsB,CAClD,MAAO,QACR,CAAC,CACF,QAAQ,KAAK,IAAI,EAInB,MAAM,EAAI,SAAS,EAAe,CAChC,sBAAuB,GACvB,OAAQ,GACT,CAAC,CAGF,MAAM,EAAI,SAAS,EAAa,EAAY,CAG5C,MAAM,EAAI,SAAS,EAAgB,CAGnC,MAAM,EAAI,SAAS,EAAc,CAGjC,MAAM,EAAI,SAAS,EAAgB,CAGnC,MAAM,EAAI,SAAS,EAAkB,CAAE,OAAQ,kBAAmB,CAAC,CACnE,MAAM,EAAI,SAAS,EAAqB,CAAE,OAAQ,cAAe,CAAC,CAGlE,MAAM,EAAI,SAAS,EAAe,CAChC,KAAM,EACN,SAAU,GACX,CAAC,CAGF,EAAI,oBAAoB,EAAK,IAAU,CACrC,IAAM,EAAgB,EAAK,EAAgB,EAAI,IAAI,KAAO,IAAI,CAE9D,GAAI,EAAW,EAAc,EAAI,EAAU,EAAc,CAAC,QAAQ,CAAE,CAClE,IAAM,EACJ,EAAK,QAAQ,EAAc,EAAI,2BAEjC,OADA,EAAM,OAAO,eAAgB,EAAS,CAC/B,EAAM,SAAS,EAAI,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,EAAI,aAAa,MAEpE,OAAO,EAAM,SAAS,aAAa,EAErC,CAEF,GAAI,CACF,MAAM,EAAI,OAAO,CAAE,OAAM,KAAM,UAAW,CAAC,CAE3C,IAAM,EAAiB,EACrB,EAAe,IACf,EAAe,QAChB,CAED,QAAQ,IAAI;MACV,EAAS,EAAS,WAAY,EAAW,KAAK,CAAE,EAAW,UAAU,CAAC,GAAG,EAAS,IAAI,EAAY,UAAW,EAAW,UAAU,CAAC;;mCAEtG,EAAa,oBAAoB,IAAO,CAAC;MACtE,EAAS,IAAK,EAAW,UAAU,CAAC,8BAA8B,EAAO,OAAO,iBAAmB,GAAK,IAAM,EAAa,EAAO,OAAO,eAAe,CAAC;MACzJ,EAAS,IAAK,EAAW,UAAU,CAAC,8BAA8B,EAAO,OAAO,UAAY,IAAI;MAChG,EAAS,IAAK,EAAW,UAAU,CAAC,8BAA8B,GAAkB,IAAI;MACxF,OACK,EAAK,CACZ,EAAI,IAAI,MAAM,EAAI,CAClB,QAAQ,KAAK,EAAE,IAKP,EAAI"}
|