qumra-engine 2.0.85 → 2.0.87

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.
@@ -10,5 +10,5 @@ interface IStartEngine {
10
10
  currentApp?: App;
11
11
  market?: string;
12
12
  }
13
- declare const startEngine: ({ renderApi, mode, getRender, setRender, port, themesRepo, themeId, currentApp, market }: IStartEngine) => Promise<void>;
13
+ declare const startEngine: ({ renderApi, mode, getRender, setRender, port, themesRepo, themeId, currentApp, market, }: IStartEngine) => Promise<void>;
14
14
  export default startEngine;
@@ -21,7 +21,7 @@ const express_session_1 = __importDefault(require("express-session"));
21
21
  const printServerLog_1 = require("./utils/printServerLog");
22
22
  const cookie_parser_1 = __importDefault(require("cookie-parser"));
23
23
  const routers_1 = __importDefault(require("./routers"));
24
- const startEngine = async ({ renderApi, mode, getRender, setRender, port = 3000, themesRepo, themeId = null, currentApp, market }) => {
24
+ const startEngine = async ({ renderApi, mode, getRender, setRender, port = 3000, themesRepo, themeId = null, currentApp, market, }) => {
25
25
  try {
26
26
  const app = (0, express_1.default)();
27
27
  app.use((0, cookie_parser_1.default)());
@@ -41,16 +41,17 @@ const startEngine = async ({ renderApi, mode, getRender, setRender, port = 3000,
41
41
  next();
42
42
  });
43
43
  app.set("trust proxy", 1); // لو ورا Nginx/Proxy/Cloud
44
+ const isProduction = process.env.NODE_ENV === "production";
44
45
  app.use((0, express_session_1.default)({
45
- secret: "your-secret-key",
46
+ secret: process.env.SESSION_SECRET || "your-secret-key",
46
47
  resave: false,
47
48
  saveUninitialized: false,
48
49
  cookie: {
49
- sameSite: "none", // مطلوب للـ cross-site
50
- secure: true, // لازم مع 'none'
50
+ sameSite: "none", // يدعم داخل وخارج iframe
51
+ secure: isProduction, // لازم يكون true في production مع HTTPS
51
52
  httpOnly: true,
52
- partitioned: true, // علشان تشتغل داخل iframe بعد حجب 3rd-party cookies
53
- maxAge: 1000 * 60 * 5,
53
+ partitioned: true, // يخليها شغالة في iframe (Chrome 115+)
54
+ maxAge: 1000 * 60 * 5, // 5 دقائق
54
55
  },
55
56
  }));
56
57
  app.use((req, res, next) => {
@@ -59,7 +60,9 @@ const startEngine = async ({ renderApi, mode, getRender, setRender, port = 3000,
59
60
  }
60
61
  if (req.query.theme) {
61
62
  req.session.theme = req.query.theme;
62
- return res.redirect("/");
63
+ // إعادة توجيه لنفس المسار بدون الـ query string
64
+ const redirectUrl = req.path || "/";
65
+ return res.redirect(redirectUrl);
63
66
  }
64
67
  else {
65
68
  if (themeId) {
@@ -68,7 +71,14 @@ const startEngine = async ({ renderApi, mode, getRender, setRender, port = 3000,
68
71
  }
69
72
  next();
70
73
  });
71
- app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender, app: currentApp, renderApi, market }));
74
+ app.use((0, init_middleware_1.initMiddleware)({
75
+ mode,
76
+ getRender,
77
+ setRender,
78
+ app: currentApp,
79
+ renderApi,
80
+ market,
81
+ }));
72
82
  const avilablePort = await (0, findAvailablePort_1.findAvailablePort)(port);
73
83
  if (mode === "devlopment") {
74
84
  const staticPath = path_1.default.join(process.cwd(), "assets");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qumra-engine",
3
- "version": "2.0.85",
3
+ "version": "2.0.87",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {