qumra-engine 2.0.30 → 2.0.32

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.
@@ -1,9 +1,10 @@
1
1
  import { NextFunction, Response, Request } from "express";
2
- import { CacheGetter, CacheSetter, TMode } from "../types/sharedTypes";
2
+ import { App, CacheGetter, CacheSetter, TMode } from "../types/sharedTypes";
3
3
  interface Options {
4
4
  mode: TMode;
5
5
  getRender?: CacheGetter;
6
6
  setRender?: CacheSetter;
7
+ app?: App;
7
8
  }
8
- export declare const initMiddleware: ({ mode, getRender, setRender }: Options) => (req: Request, res: Response, next: NextFunction) => void;
9
+ export declare const initMiddleware: ({ mode, getRender, setRender, app, }: Options) => (req: Request, res: Response, next: NextFunction) => void;
9
10
  export {};
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initMiddleware = void 0;
4
4
  const qumra_utils_1 = require("qumra-utils");
5
- const initMiddleware = ({ mode, getRender, setRender }) => {
5
+ const initMiddleware = ({ mode, getRender, setRender, app, }) => {
6
6
  return (req, res, next) => {
7
7
  res.locals.mode = mode;
8
8
  res.locals.cache = {};
9
9
  const fullUrl = mode === "production"
10
10
  ? req.protocol + "://" + req.get("host") + req.originalUrl
11
- : "https://qumra-electronics.qumra.onlone" + req.originalUrl;
11
+ : app?.url + req.originalUrl;
12
12
  const parsedUrl = (0, qumra_utils_1.parseUrlString)(fullUrl);
13
13
  res.locals.parsedUrl = parsedUrl;
14
14
  if (typeof getRender === "function") {
@@ -9,7 +9,6 @@ const fs_1 = __importDefault(require("fs"));
9
9
  const locals_1 = require("../store/locals");
10
10
  const localesMiddleware = (req, res, next) => {
11
11
  const localesDirectory = res.locals.localesPath;
12
- console.log("🚀 ~ localesDirectory:", localesDirectory);
13
12
  const lang = res.locals.parsedUrl.language;
14
13
  if (!lang)
15
14
  return next();
@@ -12,7 +12,6 @@ const mergeDataMiddleware = async (req, res, next) => {
12
12
  handle: res.locals.render.engine?.page?.handle,
13
13
  });
14
14
  const settingsData = res.locals.render.engine?.settings;
15
- console.log("🚀 ~ settingsData:", settingsData);
16
15
  res.locals.env.addGlobal("settings", settingsData);
17
16
  next();
18
17
  }
@@ -16,11 +16,12 @@ const prepareDataMiddleware = (req, res, next) => {
16
16
  }
17
17
  const api = true
18
18
  ? `https://store-gate.qumra-dev.site/render${themePath}`
19
- : "http://192.168.1.5:4019/v1/render${themePath}";
19
+ : `http://192.168.1.8:4019/v1/render${themePath}`;
20
20
  fetch(api, {
21
21
  method: "POST",
22
22
  headers: { "Content-Type": "application/json" },
23
23
  body: JSON.stringify({ url: parsedUrl.fullUrl }),
24
+ credentials: 'include'
24
25
  })
25
26
  .then((engineResponse) => {
26
27
  if (!engineResponse.ok) {
@@ -30,8 +31,7 @@ const prepareDataMiddleware = (req, res, next) => {
30
31
  })
31
32
  .then((data) => {
32
33
  // تم تخزين النتيجة داخل res.locals.render
33
- res.locals.render = data;
34
- console.log("✅ Rendering data prepared");
34
+ res.locals.render = data.data;
35
35
  next();
36
36
  })
37
37
  .catch((err) => {
@@ -1,10 +1,12 @@
1
- import { CacheGetter, CacheSetter, TMode } from "./types/sharedTypes";
1
+ import { App, CacheGetter, CacheSetter, TMode } from "./types/sharedTypes";
2
2
  interface IStartEngine {
3
3
  mode: TMode;
4
4
  getRender?: CacheGetter;
5
5
  setRender?: CacheSetter;
6
6
  port: number;
7
7
  themesRepo?: string;
8
+ themeId?: string | null;
9
+ currentApp?: App;
8
10
  }
9
- declare const startEngine: ({ mode, getRender, setRender, port, themesRepo, }: IStartEngine) => Promise<void>;
11
+ declare const startEngine: ({ mode, getRender, setRender, port, themesRepo, themeId, currentApp }: IStartEngine) => Promise<void>;
10
12
  export default startEngine;
@@ -18,11 +18,12 @@ const extensions_middleware_1 = require("./middleware/extensions.middleware");
18
18
  const isPathAllowedToRender_1 = require("./utils/isPathAllowedToRender");
19
19
  const mergeData_middleware_1 = require("./middleware/mergeData.middleware");
20
20
  const express_session_1 = __importDefault(require("express-session"));
21
- const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo, }) => {
21
+ const printServerLog_1 = require("./utils/printServerLog");
22
+ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo, themeId = null, currentApp }) => {
22
23
  try {
23
24
  const app = (0, express_1.default)();
24
25
  app.use((0, express_session_1.default)({
25
- secret: 'your-secret-key',
26
+ secret: "your-secret-key",
26
27
  resave: false,
27
28
  saveUninitialized: false,
28
29
  cookie: {
@@ -31,17 +32,21 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo
31
32
  },
32
33
  }));
33
34
  app.use((req, res, next) => {
34
- const themeId = req.query.theme;
35
- if (themeId) {
36
- req.session.themeId = themeId;
35
+ if (req.query.theme) {
36
+ req.session.themeId = req.query.theme;
37
37
  console.log(`✅ Theme ID set in session: ${themeId}`);
38
- return res.redirect('/');
38
+ return res.redirect("/");
39
+ }
40
+ else {
41
+ if (themeId) {
42
+ req.session.themeId = themeId;
43
+ }
39
44
  }
40
45
  next();
41
46
  });
42
47
  app.set("view engine", "nunjucks");
43
48
  app.use((0, morgan_1.default)("dev"));
44
- app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender }));
49
+ app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender, app: currentApp }));
45
50
  const avilablePort = await (0, findAvailablePort_1.findAvailablePort)(port);
46
51
  if (mode === "devlopment") {
47
52
  const staticPath = path_1.default.join(process.cwd(), "assets");
@@ -75,7 +80,7 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo
75
80
  app.use(extensions_middleware_1.nunjucksExtensionsMiddleWare);
76
81
  app.use(render_middleware_1.renderMiddleware);
77
82
  app.listen(avilablePort, () => {
78
- console.log(`Theme dev server started at http://localhost:${avilablePort}`);
83
+ (0, printServerLog_1.printServerLog)({ port: avilablePort, themeId: themeId || "default", app: currentApp });
79
84
  });
80
85
  }
81
86
  catch (err) {
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -41,3 +41,9 @@ export interface Page {
41
41
  }
42
42
  export type CacheGetter = <T = any>(app: string, path: string) => Promise<T | null>;
43
43
  export type CacheSetter = (app: string, path: string, value: any, ttlInSec?: number) => Promise<void> | undefined;
44
+ export type App = {
45
+ name: string;
46
+ subdomain: string;
47
+ url: string;
48
+ id: string;
49
+ };
@@ -0,0 +1,6 @@
1
+ import { App } from "../types/sharedTypes";
2
+ export declare function printServerLog({ port, themeId, app }: {
3
+ port: number;
4
+ themeId: string;
5
+ app?: App;
6
+ }): void;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printServerLog = printServerLog;
4
+ function printServerLog({ port, themeId, app }) {
5
+ const cyan = (text) => `\x1b[36m${text}\x1b[0m`; // cyan
6
+ const green = (text) => `\x1b[32m${text}\x1b[0m`; // green
7
+ const yellow = (text) => `\x1b[33m${text}\x1b[0m`; // yellow
8
+ const bold = (text) => `\x1b[1m${text}\x1b[0m`; // bold
9
+ console.log('\n' + bold('🚀 Server started successfully!'));
10
+ console.log('📡 Localhost =>', green(`http://localhost:${port}`));
11
+ if (app) {
12
+ console.log('🌍 Theme URL =>', cyan(`${app?.url}?theme=${themeId}`));
13
+ }
14
+ // console.log('📦 Builder ID =>', yellow(`https://qumra.cloud/store/test/themes/${themeId}`));
15
+ console.log('');
16
+ }
@@ -0,0 +1,5 @@
1
+ declare function printServerLog({ port, themeId, url }: {
2
+ port: number;
3
+ themeId: string;
4
+ url: string;
5
+ }): void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ function printServerLog({ port, themeId, url }) {
3
+ const cyan = (text) => `\x1b[36m${text}\x1b[0m`; // cyan
4
+ const green = (text) => `\x1b[32m${text}\x1b[0m`; // green
5
+ const yellow = (text) => `\x1b[33m${text}\x1b[0m`; // yellow
6
+ const bold = (text) => `\x1b[1m${text}\x1b[0m`; // bold
7
+ console.log('\n' + bold('🚀 Server started successfully!'));
8
+ console.log('📡 Localhost =>', green(`http://localhost:${port}`));
9
+ console.log('🌍 Theme URL =>', cyan(`${url}?theme=${themeId}`));
10
+ console.log('📦 Theme ID =>', yellow(themeId));
11
+ console.log('');
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qumra-engine",
3
- "version": "2.0.30",
3
+ "version": "2.0.32",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {