qumra-engine 2.0.47 → 2.0.49

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.
@@ -2,6 +2,6 @@ import { runtime } from "nunjucks";
2
2
  declare const _default: {
3
3
  tags: string[];
4
4
  parse(parser: any, nodes: any): any;
5
- run({ env, ctx, blocks }: any): runtime.SafeString;
5
+ run({ ctx }: any): runtime.SafeString;
6
6
  };
7
7
  export default _default;
@@ -10,23 +10,29 @@ exports.default = new (class SeoExtension {
10
10
  parser.advanceAfterBlockEnd(tok.value);
11
11
  return new nodes.CallExtension(this, "run", null);
12
12
  }
13
- run({ env, ctx, blocks }) {
14
- const pageSeo = ctx.context.page?.seo || {};
13
+ run({ ctx }) {
14
+ const escapeHtml = (str) => String(str || "")
15
+ .replace(/&/g, "&")
16
+ .replace(/</g, "&lt;")
17
+ .replace(/>/g, "&gt;")
18
+ .replace(/"/g, "&quot;");
19
+ const seo = ctx.context.seo || {};
15
20
  const page = ctx.context.page || {};
16
- const appUrl = ctx.globals?.app?.url || "";
17
- const pageUrl = `${appUrl}${page.path || ""}`;
18
- const pageTitle = pageSeo.title || page.title || "Store";
19
- const pageDescription = pageSeo.description || "";
20
- const pageKeywords = (pageSeo.keywords || []).join(", ");
21
- const pageImage = pageSeo.image || "";
22
- return new nunjucks_1.runtime.SafeString(`
23
- <title>${pageTitle}</title>
24
- <meta name="description" content="${pageDescription}">
25
- <meta name="keywords" content="${pageKeywords}">
26
- <link rel="canonical" href="${pageSeo.canonicalUrl || pageUrl}">
27
- <meta property="og:title" content="${pageTitle}">
28
- <meta property="og:description" content="${pageDescription}">
29
- <meta property="og:image" content="${pageImage}">
30
- `);
21
+ const pageUrl = seo.canonical || "";
22
+ const pageTitle = seo.title || page.title || "Store";
23
+ const pageDescription = seo.description || page.description || "";
24
+ const pageImage = seo.image || "";
25
+ let tags = `
26
+ <title>${escapeHtml(pageTitle)}</title>
27
+ ${pageDescription ? `<meta name="description" content="${escapeHtml(pageDescription)}">` : ""}
28
+ ${pageUrl ? `<link rel="canonical" href="${escapeHtml(pageUrl)}">` : ""}
29
+ <meta property="og:title" content="${escapeHtml(pageTitle)}">
30
+ ${pageDescription ? `<meta property="og:description" content="${escapeHtml(pageDescription)}">` : ""}
31
+ ${pageImage ? `<meta property="og:image" content="${escapeHtml(pageImage)}">` : ""}
32
+ ${pageUrl ? `<meta property="og:url" content="${escapeHtml(pageUrl)}">` : ""}
33
+ <meta property="og:type" content="website">
34
+ ${pageImage ? `<meta name="twitter:card" content="summary_large_image">` : `<meta name="twitter:card" content="summary">`}
35
+ `;
36
+ return new nunjucks_1.runtime.SafeString(tags.trim());
31
37
  }
32
38
  })();
@@ -20,13 +20,10 @@ const prepareDataMiddleware = (req, res, next) => {
20
20
  if (req.session?.themeId) {
21
21
  params.set("themeVersionId", req.session.themeId);
22
22
  }
23
- console.log("🚀 ~ prepareDataMiddleware ~ req.query?.appTheme:", req.query?.appTheme);
24
- console.log("🚀 ~ prepareDataMiddleware ~ req.query:", req.query);
25
23
  if (req.query?.appTheme) {
26
24
  params.set("appTheme", String(req.query.appTheme));
27
25
  }
28
26
  themePath = params.toString() ? `?${params.toString()}` : "";
29
- console.log("🚀 ~ prepareDataMiddleware ~ themePath:", themePath);
30
27
  const api = true
31
28
  ? `https://store-gate.qumra.cloud/render${themePath}`
32
29
  : `http://192.168.1.8:4019/v1/render${themePath}`;
@@ -48,8 +45,8 @@ const prepareDataMiddleware = (req, res, next) => {
48
45
  next();
49
46
  })
50
47
  .catch((err) => {
51
- console.error("❌ prepareDataMiddleware error:", err);
52
- next(err);
48
+ console.log("❌ prepareDataMiddleware error:", err.message);
49
+ // next(err);
53
50
  });
54
51
  };
55
52
  exports.prepareDataMiddleware = prepareDataMiddleware;
@@ -25,6 +25,8 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo
25
25
  try {
26
26
  const app = (0, express_1.default)();
27
27
  app.use((0, cookie_parser_1.default)());
28
+ app.set("view engine", "nunjucks");
29
+ app.use((0, morgan_1.default)("dev"));
28
30
  app.use((0, express_session_1.default)({
29
31
  secret: "your-secret-key",
30
32
  resave: false,
@@ -46,8 +48,6 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo
46
48
  }
47
49
  next();
48
50
  });
49
- app.set("view engine", "nunjucks");
50
- app.use((0, morgan_1.default)("dev"));
51
51
  app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender, app: currentApp }));
52
52
  const avilablePort = await (0, findAvailablePort_1.findAvailablePort)(port);
53
53
  if (mode === "devlopment") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qumra-engine",
3
- "version": "2.0.47",
3
+ "version": "2.0.49",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {