qumra-engine 2.0.78 → 2.0.79
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/dist/extensions/logic/qumra-scripts.js +37 -2
- package/dist/extensions/logic/template.js +1 -0
- package/dist/middleware/init.middleware.d.ts +1 -1
- package/dist/middleware/init.middleware.js +1 -1
- package/dist/middleware/setGlobals.middleware.js +1 -0
- package/dist/middleware.d.ts +1 -1
- package/dist/middleware.js +1 -1
- package/package.json +1 -1
- package/dist/addFilter.d.ts +0 -1
- package/dist/addFilter.js +0 -10
- package/dist/extensions/logic/content copy.d.ts +0 -10
- package/dist/extensions/logic/content copy.js +0 -66
- package/dist/extensions/logic/footer copy.d.ts +0 -10
- package/dist/extensions/logic/footer copy.js +0 -43
- package/dist/extensions/logic/header copy.d.ts +0 -10
- package/dist/extensions/logic/header copy.js +0 -33
- package/dist/extensions/logic/include.d.ts +0 -10
- package/dist/extensions/logic/include.js +0 -17
- package/dist/extensions/logic/qumra-head copy.d.ts +0 -7
- package/dist/extensions/logic/qumra-head copy.js +0 -37
- package/dist/extensions/logic/schema.d.ts +0 -6
- package/dist/extensions/logic/schema.js +0 -26
- package/dist/extensions/logic/schemaExtension.d.ts +0 -0
- package/dist/extensions/logic/schemaExtension.js +0 -1
- package/dist/extensions/logic/seo copy.d.ts +0 -7
- package/dist/extensions/logic/seo copy.js +0 -32
- package/dist/extensions/logic/t.d.ts +0 -1
- package/dist/extensions/logic/t.js +0 -10
- package/dist/extensions/logic/widget copy.d.ts +0 -10
- package/dist/extensions/logic/widget copy.js +0 -33
- package/dist/extensions/logic/widgets copy.d.ts +0 -10
- package/dist/extensions/logic/widgets copy.js +0 -33
- package/dist/extensions/logic/widgets.d.ts +0 -10
- package/dist/extensions/logic/widgets.js +0 -33
- package/dist/extensions/registerAllGlobals.d.ts +0 -2
- package/dist/extensions/registerAllGlobals.js +0 -47
- package/dist/filters/addFilter.d.ts +0 -1
- package/dist/filters/addFilter.js +0 -6
- package/dist/filters/capitalize.d.ts +0 -1
- package/dist/filters/capitalize.js +0 -8
- package/dist/filters/discountLabel.d.ts +0 -1
- package/dist/filters/discountLabel.js +0 -8
- package/dist/filters/formatDate.d.ts +0 -1
- package/dist/filters/formatDate.js +0 -9
- package/dist/filters/formatMoney.d.ts +0 -1
- package/dist/filters/formatMoney.js +0 -8
- package/dist/filters/logic/capitalize.d.ts +0 -1
- package/dist/filters/logic/capitalize.js +0 -8
- package/dist/filters/logic/color_to_hex.d.ts +0 -1
- package/dist/filters/logic/color_to_hex.js +0 -15
- package/dist/filters/logic/component.d.ts +0 -2
- package/dist/filters/logic/component.js +0 -6
- package/dist/filters/logic/discountLabel.d.ts +0 -1
- package/dist/filters/logic/discountLabel.js +0 -8
- package/dist/filters/logic/first.d.ts +0 -1
- package/dist/filters/logic/first.js +0 -6
- package/dist/filters/logic/formatDate.d.ts +0 -1
- package/dist/filters/logic/formatDate.js +0 -7
- package/dist/filters/logic/formatMoney.d.ts +0 -1
- package/dist/filters/logic/formatMoney.js +0 -8
- package/dist/filters/logic/json.d.ts +0 -2
- package/dist/filters/logic/json.js +0 -15
- package/dist/filters/logic/money_with_currency.d.ts +0 -1
- package/dist/filters/logic/money_with_currency.js +0 -8
- package/dist/filters/logic/money_without_trailing_zeros.d.ts +0 -1
- package/dist/filters/logic/money_without_trailing_zeros.js +0 -8
- package/dist/filters/logic/split.d.ts +0 -1
- package/dist/filters/logic/split.js +0 -6
- package/dist/filters/logic/strings/split.d.ts +0 -1
- package/dist/filters/logic/strings/split.js +0 -6
- package/dist/filters/logic/urls/capitalize.d.ts +0 -1
- package/dist/filters/logic/urls/capitalize.js +0 -8
- package/dist/globals/logic/capitalize.d.ts +0 -1
- package/dist/globals/logic/capitalize.js +0 -8
- package/dist/globals/logic/component.d.ts +0 -2
- package/dist/globals/logic/component.js +0 -6
- package/dist/globals/logic/discountLabel.d.ts +0 -1
- package/dist/globals/logic/discountLabel.js +0 -8
- package/dist/globals/logic/formatDate.d.ts +0 -1
- package/dist/globals/logic/formatDate.js +0 -9
- package/dist/globals/logic/formatMoney.d.ts +0 -1
- package/dist/globals/logic/formatMoney.js +0 -8
- package/dist/globals/registerAllFilters.d.ts +0 -2
- package/dist/globals/registerAllFilters.js +0 -47
- package/dist/globals copy/index.d.ts +0 -1
- package/dist/globals copy/index.js +0 -8
- package/dist/globals copy/logic/t.d.ts +0 -1
- package/dist/globals copy/logic/t.js +0 -10
- package/dist/globals copy/registerAllGlobals.d.ts +0 -2
- package/dist/globals copy/registerAllGlobals.js +0 -47
- package/dist/middleware/extension.middleware.d.ts +0 -2
- package/dist/middleware/extension.middleware.js +0 -12
- package/dist/middleware/filters.middleware copy.d.ts +0 -2
- package/dist/middleware/filters.middleware copy.js +0 -12
- package/dist/middleware/globals.middleware copy.d.ts +0 -2
- package/dist/middleware/globals.middleware copy.js +0 -12
- package/dist/middleware/initPaths.middleware.d.ts +0 -2
- package/dist/middleware/initPaths.middleware.js +0 -28
- package/dist/middleware/mergeData.middleware copy.d.ts +0 -2
- package/dist/middleware/mergeData.middleware copy.js +0 -55
- package/dist/middleware/mergeData.middleware.d.ts +0 -2
- package/dist/middleware/mergeData.middleware.js +0 -29
- package/dist/middleware/nunjucks.d.ts +0 -2
- package/dist/middleware/nunjucks.js +0 -22
- package/dist/middleware/nunjucks.middleware copy.d.ts +0 -2
- package/dist/middleware/nunjucks.middleware copy.js +0 -26
- package/dist/middleware/nunjucksFilters.middleware.d.ts +0 -2
- package/dist/middleware/nunjucksFilters.middleware.js +0 -12
- package/dist/middleware/prepareData.d.ts +0 -2
- package/dist/middleware/prepareData.js +0 -46
- package/dist/middleware/prepareData.middleware copy.d.ts +0 -2
- package/dist/middleware/prepareData.middleware copy.js +0 -49
- package/dist/middleware/prepareDataMiddleware.d.ts +0 -2
- package/dist/middleware/prepareDataMiddleware.js +0 -46
- package/dist/middleware/render.d.ts +0 -2
- package/dist/middleware/render.js +0 -24
- package/dist/middlewares/errorHandler.d.ts +0 -8
- package/dist/middlewares/errorHandler.js +0 -33
- package/dist/middlewares/pathMiddleware.d.ts +0 -2
- package/dist/middlewares/pathMiddleware.js +0 -19
- package/dist/middlewares/prepareDataMiddleware.d.ts +0 -2
- package/dist/middlewares/prepareDataMiddleware.js +0 -28
- package/dist/middlewares/themeMiddleware.d.ts +0 -2
- package/dist/middlewares/themeMiddleware.js +0 -29
- package/dist/registerAllFilters.d.ts +0 -2
- package/dist/registerAllFilters.js +0 -44
- package/dist/render.d.ts +0 -1
- package/dist/render.js +0 -19
- package/dist/services/getRenderData.d.ts +0 -3
- package/dist/services/getRenderData.js +0 -9
- package/dist/services/prepareData.d.ts +0 -2
- package/dist/services/prepareData.js +0 -46
- package/dist/services/prepareDataMiddleware.d.ts +0 -2
- package/dist/services/prepareDataMiddleware.js +0 -28
- package/dist/utils/asyncHandler.d.ts +0 -0
- package/dist/utils/asyncHandler.js +0 -1
- package/dist/utils/getLocalData.d.ts +0 -4
- package/dist/utils/getLocalData.js +0 -21
- package/dist/utils/getLocalFooterData copy.d.ts +0 -4
- package/dist/utils/getLocalFooterData copy.js +0 -22
- package/dist/utils/getLocalFooterData.d.ts +0 -4
- package/dist/utils/getLocalFooterData.js +0 -22
- package/dist/utils/getLocalHeaderData.d.ts +0 -4
- package/dist/utils/getLocalHeaderData.js +0 -22
- package/dist/utils/getLocalWidgetData copy.d.ts +0 -4
- package/dist/utils/getLocalWidgetData copy.js +0 -22
- package/dist/utils/normalizeIncludesPath.d.ts +0 -1
- package/dist/utils/normalizeIncludesPath.js +0 -19
- package/dist/utils/parseUrl.d.ts +0 -2
- package/dist/utils/parseUrl.js +0 -46
- package/dist/utils/render.d.ts +0 -2
- package/dist/utils/render.js +0 -24
- package/dist/utils/serverStartLog.d.ts +0 -5
- package/dist/utils/serverStartLog.js +0 -12
- package/dist/utils/validateWidgetData.d.ts +0 -1
- package/dist/utils/validateWidgetData.js +0 -23
|
@@ -13,8 +13,43 @@ exports.default = new (class SeoExtension {
|
|
|
13
13
|
}
|
|
14
14
|
run({ env, ctx }) {
|
|
15
15
|
const injectionCode = (0, globals_1.getGlobal)("injectionCode");
|
|
16
|
-
|
|
16
|
+
const isIframe = (0, globals_1.getGlobal)("isIframe");
|
|
17
|
+
let scripts = `
|
|
17
18
|
${injectionCode.body}
|
|
18
|
-
|
|
19
|
+
`;
|
|
20
|
+
if (isIframe) {
|
|
21
|
+
scripts += `
|
|
22
|
+
<script>
|
|
23
|
+
function attachIframeLinkListeners(root = document) {
|
|
24
|
+
const links = root.querySelectorAll("a");
|
|
25
|
+
links.forEach(link => {
|
|
26
|
+
if (link.dataset._iframeHandled) return;
|
|
27
|
+
link.dataset._iframeHandled = "true";
|
|
28
|
+
|
|
29
|
+
link.addEventListener("click", function (e) {
|
|
30
|
+
const href = link.getAttribute("href");
|
|
31
|
+
if (!href || href === "#") return;
|
|
32
|
+
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
|
|
36
|
+
window.parent.postMessage(
|
|
37
|
+
{ type: "iframeLinkClick", href },
|
|
38
|
+
"*"
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
document.addEventListener("DOMContentLoaded", function () {
|
|
45
|
+
attachIframeLinkListeners();
|
|
46
|
+
|
|
47
|
+
const observer = new MutationObserver(() => attachIframeLinkListeners());
|
|
48
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
49
|
+
});
|
|
50
|
+
</script>
|
|
51
|
+
`;
|
|
52
|
+
}
|
|
53
|
+
return new nunjucks_1.runtime.SafeString(scripts);
|
|
19
54
|
}
|
|
20
55
|
})();
|
|
@@ -30,6 +30,7 @@ exports.default = new (class WidgetExtension {
|
|
|
30
30
|
}
|
|
31
31
|
const templates = env.getGlobal("templates");
|
|
32
32
|
const widgets = templates.find((t) => t.key === templateKey)?.widgets || [];
|
|
33
|
+
console.log("🚀 ~ run ~ widgets:", widgets);
|
|
33
34
|
const renderedWidgets = [];
|
|
34
35
|
for (const widget of widgets) {
|
|
35
36
|
const widgetTemplatePath = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widget.widget);
|
|
@@ -8,5 +8,5 @@ interface Options {
|
|
|
8
8
|
renderApi?: string | null;
|
|
9
9
|
market?: string;
|
|
10
10
|
}
|
|
11
|
-
export declare const initMiddleware: ({ mode, getRender, setRender, app, renderApi, market
|
|
11
|
+
export declare const initMiddleware: ({ mode, getRender, setRender, app, renderApi, market }: Options) => (req: Request, res: Response, next: NextFunction) => void;
|
|
12
12
|
export {};
|
|
@@ -2,7 +2,7 @@
|
|
|
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, app, renderApi, market
|
|
5
|
+
const initMiddleware = ({ mode, getRender, setRender, app, renderApi, market }) => {
|
|
6
6
|
return (req, res, next) => {
|
|
7
7
|
res.locals.mode = mode;
|
|
8
8
|
res.locals.cache = {};
|
|
@@ -12,6 +12,7 @@ const mergeDataMiddleware = async (req, res, next) => {
|
|
|
12
12
|
}
|
|
13
13
|
const widgets = res.locals.render.engine?.page?.widgets ?? [];
|
|
14
14
|
(0, globals_1.setGlobal)("currency", res.locals.render.globals?.currency);
|
|
15
|
+
res.locals.env.addGlobal("isIframe", res.locals.isIframe);
|
|
15
16
|
res.locals.env.addGlobal("templates", res.locals.render.engine?.templates);
|
|
16
17
|
res.locals.env.addGlobal("engineData", res.locals.render.engine);
|
|
17
18
|
res.locals.env.addGlobal("widgets", widgets);
|
package/dist/middleware.d.ts
CHANGED
|
@@ -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
|
|
13
|
+
declare const startEngine: ({ renderApi, mode, getRender, setRender, port, themesRepo, themeId, currentApp, market }: IStartEngine) => Promise<void>;
|
|
14
14
|
export default startEngine;
|
package/dist/middleware.js
CHANGED
|
@@ -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)());
|
package/package.json
CHANGED
package/dist/addFilter.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function addFilter(name: string, fn: (...args: any[]) => any): void;
|
package/dist/addFilter.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = addFilter;
|
|
7
|
-
const nunjucksEnv_1 = __importDefault(require("./nunjucksEnv"));
|
|
8
|
-
function addFilter(name, fn) {
|
|
9
|
-
nunjucksEnv_1.default.addFilter(name, fn);
|
|
10
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
7
|
-
const normalizeWidgetPath_1 = require("../../utils/normalizeWidgetPath");
|
|
8
|
-
exports.default = new (class WidgetExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.tags = ["content"];
|
|
11
|
-
}
|
|
12
|
-
parse(parser, nodes) {
|
|
13
|
-
const tok = parser.nextToken();
|
|
14
|
-
const args = parser.parseSignature(true, true);
|
|
15
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
16
|
-
return new nodes.CallExtension(this, "run", args);
|
|
17
|
-
}
|
|
18
|
-
run({ ctx, env }) {
|
|
19
|
-
let widgetPreview = null;
|
|
20
|
-
if (env.getGlobal("widget")) {
|
|
21
|
-
widgetPreview = env.getGlobal("widget");
|
|
22
|
-
}
|
|
23
|
-
let widgets = [];
|
|
24
|
-
if (!widgetPreview) {
|
|
25
|
-
widgets = env.getGlobal("widgets");
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
widgets = [{
|
|
29
|
-
...widgetPreview,
|
|
30
|
-
widget: widgetPreview.widgetKey,
|
|
31
|
-
}];
|
|
32
|
-
}
|
|
33
|
-
const renderedWidgets = [];
|
|
34
|
-
for (const widget of widgets) {
|
|
35
|
-
const widgetTemplatePath = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widget.widget);
|
|
36
|
-
if (!widgetTemplatePath) {
|
|
37
|
-
return new nunjucks_1.default.runtime.SafeString(`
|
|
38
|
-
<div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
|
|
39
|
-
⚠️ <strong>مسار الويجيت غير صالح:</strong> ${widget.widget}
|
|
40
|
-
</div>
|
|
41
|
-
`);
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
const html = env.render(widgetTemplatePath, {
|
|
45
|
-
context: ctx.context,
|
|
46
|
-
globals: ctx.globals,
|
|
47
|
-
widget: {
|
|
48
|
-
id: widget.id,
|
|
49
|
-
type: widget.widget,
|
|
50
|
-
data: widget.data,
|
|
51
|
-
blocks: widget.blocks ?? [],
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
renderedWidgets.push(html);
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
renderedWidgets.push(`
|
|
58
|
-
<div style="padding:10px;background:#ffe;border:1px solid #fc0;color:#aa0">
|
|
59
|
-
⚠️ Error rendering widget '${widget.widget}': ${err.message}
|
|
60
|
-
</div>
|
|
61
|
-
`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return new nunjucks_1.default.runtime.SafeString(renderedWidgets.join("\n"));
|
|
65
|
-
}
|
|
66
|
-
})();
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
7
|
-
const normalizeWidgetPath_1 = require("../../utils/normalizeWidgetPath");
|
|
8
|
-
exports.default = new (class WidgetExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.tags = ["footer"];
|
|
11
|
-
}
|
|
12
|
-
parse(parser, nodes) {
|
|
13
|
-
const tok = parser.nextToken();
|
|
14
|
-
const args = parser.parseSignature(true, true); // مستقبلًا نقدر نمرر widget name
|
|
15
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
16
|
-
return new nodes.CallExtension(this, "run", args);
|
|
17
|
-
}
|
|
18
|
-
run({ ctx, env }) {
|
|
19
|
-
try {
|
|
20
|
-
const pageRenderData = env.getGlobal("pageRenderData");
|
|
21
|
-
const footer = pageRenderData?.system?.footer;
|
|
22
|
-
if (!footer) {
|
|
23
|
-
throw new Error("Footer data is missing in pageRenderData.system.footer");
|
|
24
|
-
}
|
|
25
|
-
const widgetPath = (0, normalizeWidgetPath_1.normalizeWidgetPath)(footer.Widget || "footer");
|
|
26
|
-
const rendered = env.render(widgetPath, {
|
|
27
|
-
...ctx,
|
|
28
|
-
footer: {
|
|
29
|
-
data: footer.data,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
return new nunjucks_1.default.runtime.SafeString(rendered);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
return new nunjucks_1.default.runtime.SafeString(`
|
|
36
|
-
<div style="padding: 12px; background-color: #fdecea; color: #b71c1c; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
|
|
37
|
-
⚠️ <strong>تعذر تضمين الـ Footer Widget:</strong><br>
|
|
38
|
-
<code>${err.message}</code>
|
|
39
|
-
</div>
|
|
40
|
-
`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
})();
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import nunjucks from "nunjucks";
|
|
2
|
-
declare const _default: {
|
|
3
|
-
tags: string[];
|
|
4
|
-
parse(parser: any, nodes: any): any;
|
|
5
|
-
run({ ctx, env }: {
|
|
6
|
-
ctx: any;
|
|
7
|
-
env: nunjucks.Environment;
|
|
8
|
-
}, widgetPath: string): nunjucks.runtime.SafeString;
|
|
9
|
-
};
|
|
10
|
-
export default _default;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
7
|
-
const normalizeWidgetPath_1 = require("../../utils/normalizeWidgetPath");
|
|
8
|
-
exports.default = new (class WidgetExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.tags = ["widgets"];
|
|
11
|
-
}
|
|
12
|
-
parse(parser, nodes) {
|
|
13
|
-
const tok = parser.nextToken();
|
|
14
|
-
const args = parser.parseSignature(true, true);
|
|
15
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
16
|
-
return new nodes.CallExtension(this, "run", args);
|
|
17
|
-
}
|
|
18
|
-
run({ ctx, env }, widgetPath) {
|
|
19
|
-
const widget = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widgetPath);
|
|
20
|
-
try {
|
|
21
|
-
console.log("🚀 ~ WidgetExtension ~ run ~ ctx:", env.getGlobal("pageRenderData"));
|
|
22
|
-
const rendered = env.render(widget, ctx);
|
|
23
|
-
return new nunjucks_1.default.runtime.SafeString(rendered);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
return new nunjucks_1.default.runtime.SafeString(`
|
|
27
|
-
<div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
|
|
28
|
-
⚠️ <strong>تعذر تضمين الويجيت:</strong> ${widget}
|
|
29
|
-
</div>
|
|
30
|
-
`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
})();
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = new (class WidgetExtension {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.tags = ["include"];
|
|
6
|
-
}
|
|
7
|
-
parse(parser, nodes) {
|
|
8
|
-
const tok = parser.nextToken();
|
|
9
|
-
const args = parser.parseSignature(true, true);
|
|
10
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
11
|
-
return new nodes.CallExtension(this, "run", args);
|
|
12
|
-
}
|
|
13
|
-
run({ ctx, env }, ...args) {
|
|
14
|
-
console.log("🚀 ~ WidgetExtension ~ args:", args);
|
|
15
|
-
return 'this is a test';
|
|
16
|
-
}
|
|
17
|
-
})();
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const nunjucks_1 = require("nunjucks");
|
|
4
|
-
const globals_1 = require("../../store/globals");
|
|
5
|
-
exports.default = new (class SeoExtension {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.tags = ["qumra_head"];
|
|
8
|
-
}
|
|
9
|
-
parse(parser, nodes) {
|
|
10
|
-
const tok = parser.nextToken();
|
|
11
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
12
|
-
return new nodes.CallExtension(this, "run", null);
|
|
13
|
-
}
|
|
14
|
-
run({ env, ctx }) {
|
|
15
|
-
const injectionCode = (0, globals_1.getGlobal)("injectionCode");
|
|
16
|
-
return new nunjucks_1.runtime.SafeString(`
|
|
17
|
-
${injectionCode.head}
|
|
18
|
-
<script>
|
|
19
|
-
window.__qumra__ = window.__qumra__ || {};
|
|
20
|
-
window.__qumra__.context = ${JSON.stringify(ctx.context)};
|
|
21
|
-
window.__qumra__.globals = ${JSON.stringify(ctx.globals)};
|
|
22
|
-
</script>
|
|
23
|
-
<style>
|
|
24
|
-
:root {
|
|
25
|
-
--primary-color: #0070f3;
|
|
26
|
-
--secondary-color: #7928ca;
|
|
27
|
-
--background-color: #f9f9f9;
|
|
28
|
-
--text-color: #333333;
|
|
29
|
-
--border-color: #eaeaea;
|
|
30
|
-
--success-color: #22c55e;
|
|
31
|
-
--danger-color: #ef4444;
|
|
32
|
-
--warning-color: #facc15;
|
|
33
|
-
}
|
|
34
|
-
</style>
|
|
35
|
-
`);
|
|
36
|
-
}
|
|
37
|
-
})();
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class SchemaExtension {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.tags = ['schema'];
|
|
6
|
-
}
|
|
7
|
-
parse(parser, nodes) {
|
|
8
|
-
const tok = parser.nextToken();
|
|
9
|
-
const body = parser.parseUntilBlocks('endschema');
|
|
10
|
-
parser.advanceAfterBlockEnd();
|
|
11
|
-
return new nodes.CallExtension(this, 'run', null, [body]);
|
|
12
|
-
}
|
|
13
|
-
run(context, body) {
|
|
14
|
-
const schemaString = body().trim();
|
|
15
|
-
try {
|
|
16
|
-
const parsed = JSON.parse(schemaString);
|
|
17
|
-
context.ctx.__schema = parsed;
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
console.warn('خطأ في schema:', err);
|
|
21
|
-
context.ctx.__schema = null;
|
|
22
|
-
}
|
|
23
|
-
return '';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.default = SchemaExtension;
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const nunjucks_1 = require("nunjucks");
|
|
4
|
-
exports.default = new (class SeoExtension {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.tags = ["seo"];
|
|
7
|
-
}
|
|
8
|
-
parse(parser, nodes) {
|
|
9
|
-
const tok = parser.nextToken();
|
|
10
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
11
|
-
return new nodes.CallExtension(this, "run", null);
|
|
12
|
-
}
|
|
13
|
-
run({ env, ctx, blocks }) {
|
|
14
|
-
const pageSeo = ctx.context.page?.seo || {};
|
|
15
|
-
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
|
-
`);
|
|
31
|
-
}
|
|
32
|
-
})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function t(key: string): string;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = t;
|
|
4
|
-
const locals_1 = require("../../store/locals");
|
|
5
|
-
const getNestedValue_1 = require("../../utils/getNestedValue");
|
|
6
|
-
function t(key) {
|
|
7
|
-
const dict = (0, locals_1.getLocales)("locales") || {};
|
|
8
|
-
const result = (0, getNestedValue_1.getNestedValue)(dict, key);
|
|
9
|
-
return typeof result === "string" ? result : key;
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import nunjucks from "nunjucks";
|
|
2
|
-
declare const _default: {
|
|
3
|
-
tags: string[];
|
|
4
|
-
parse(parser: any, nodes: any): any;
|
|
5
|
-
run({ ctx, env }: {
|
|
6
|
-
ctx: any;
|
|
7
|
-
env: nunjucks.Environment;
|
|
8
|
-
}, widgetPath: string): nunjucks.runtime.SafeString;
|
|
9
|
-
};
|
|
10
|
-
export default _default;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
7
|
-
const normalizeWidgetPath_1 = require("../../utils/normalizeWidgetPath");
|
|
8
|
-
exports.default = new (class WidgetExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.tags = ["widget"];
|
|
11
|
-
}
|
|
12
|
-
parse(parser, nodes) {
|
|
13
|
-
const tok = parser.nextToken();
|
|
14
|
-
const args = parser.parseSignature(true, true);
|
|
15
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
16
|
-
return new nodes.CallExtension(this, "run", args);
|
|
17
|
-
}
|
|
18
|
-
run({ ctx, env }, widgetPath) {
|
|
19
|
-
const widget = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widgetPath);
|
|
20
|
-
try {
|
|
21
|
-
console.log("🚀 ~ WidgetExtension ~ run ~ ctx:", env.getGlobal("pageRenderData"));
|
|
22
|
-
const rendered = env.render(widget, ctx);
|
|
23
|
-
return new nunjucks_1.default.runtime.SafeString(rendered);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
return new nunjucks_1.default.runtime.SafeString(`
|
|
27
|
-
<div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
|
|
28
|
-
⚠️ <strong>تعذر تضمين الويجيت:</strong> ${widget}
|
|
29
|
-
</div>
|
|
30
|
-
`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
})();
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import nunjucks from "nunjucks";
|
|
2
|
-
declare const _default: {
|
|
3
|
-
tags: string[];
|
|
4
|
-
parse(parser: any, nodes: any): any;
|
|
5
|
-
run({ ctx, env }: {
|
|
6
|
-
ctx: any;
|
|
7
|
-
env: nunjucks.Environment;
|
|
8
|
-
}, widgetPath: string): nunjucks.runtime.SafeString;
|
|
9
|
-
};
|
|
10
|
-
export default _default;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
7
|
-
const normalizeWidgetPath_1 = require("../../utils/normalizeWidgetPath");
|
|
8
|
-
exports.default = new (class WidgetExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.tags = ["widgets"];
|
|
11
|
-
}
|
|
12
|
-
parse(parser, nodes) {
|
|
13
|
-
const tok = parser.nextToken();
|
|
14
|
-
const args = parser.parseSignature(true, true);
|
|
15
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
16
|
-
return new nodes.CallExtension(this, "run", args);
|
|
17
|
-
}
|
|
18
|
-
run({ ctx, env }, widgetPath) {
|
|
19
|
-
const widget = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widgetPath);
|
|
20
|
-
try {
|
|
21
|
-
console.log("🚀 ~ WidgetExtension ~ run ~ ctx:", env.getGlobal("pageRenderData"));
|
|
22
|
-
const rendered = env.render(widget, ctx);
|
|
23
|
-
return new nunjucks_1.default.runtime.SafeString(rendered);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
return new nunjucks_1.default.runtime.SafeString(`
|
|
27
|
-
<div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
|
|
28
|
-
⚠️ <strong>تعذر تضمين الويجيت:</strong> ${widget}
|
|
29
|
-
</div>
|
|
30
|
-
`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
})();
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import nunjucks from "nunjucks";
|
|
2
|
-
declare const _default: {
|
|
3
|
-
tags: string[];
|
|
4
|
-
parse(parser: any, nodes: any): any;
|
|
5
|
-
run({ ctx, env }: {
|
|
6
|
-
ctx: any;
|
|
7
|
-
env: nunjucks.Environment;
|
|
8
|
-
}, widgetPath: string): nunjucks.runtime.SafeString;
|
|
9
|
-
};
|
|
10
|
-
export default _default;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const nunjucks_1 = __importDefault(require("nunjucks"));
|
|
7
|
-
const normalizeWidgetPath_1 = require("../../utils/normalizeWidgetPath");
|
|
8
|
-
exports.default = new (class WidgetExtension {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.tags = ["widgets"];
|
|
11
|
-
}
|
|
12
|
-
parse(parser, nodes) {
|
|
13
|
-
const tok = parser.nextToken();
|
|
14
|
-
const args = parser.parseSignature(true, true);
|
|
15
|
-
parser.advanceAfterBlockEnd(tok.value);
|
|
16
|
-
return new nodes.CallExtension(this, "run", args);
|
|
17
|
-
}
|
|
18
|
-
run({ ctx, env }, widgetPath) {
|
|
19
|
-
const widget = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widgetPath);
|
|
20
|
-
try {
|
|
21
|
-
console.log("🚀 ~ WidgetExtension ~ run ~ ctx:", env.getGlobal("pageRenderData"));
|
|
22
|
-
const rendered = env.render(widget, ctx);
|
|
23
|
-
return new nunjucks_1.default.runtime.SafeString(rendered);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
return new nunjucks_1.default.runtime.SafeString(`
|
|
27
|
-
<div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
|
|
28
|
-
⚠️ <strong>تعذر تضمين الويجيت:</strong> ${widget}
|
|
29
|
-
</div>
|
|
30
|
-
`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
})();
|