qumra-engine 2.0.77 → 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.
Files changed (157) hide show
  1. package/dist/extensions/logic/qumra-scripts.js +37 -2
  2. package/dist/extensions/logic/template.js +1 -0
  3. package/dist/middleware/init.middleware.d.ts +2 -1
  4. package/dist/middleware/init.middleware.js +5 -1
  5. package/dist/middleware/prepareData.middleware.js +2 -0
  6. package/dist/middleware/setGlobals.middleware.js +1 -0
  7. package/dist/middleware.d.ts +2 -1
  8. package/dist/middleware.js +2 -2
  9. package/package.json +1 -1
  10. package/dist/addFilter.d.ts +0 -1
  11. package/dist/addFilter.js +0 -10
  12. package/dist/extensions/logic/content copy.d.ts +0 -10
  13. package/dist/extensions/logic/content copy.js +0 -66
  14. package/dist/extensions/logic/footer copy.d.ts +0 -10
  15. package/dist/extensions/logic/footer copy.js +0 -43
  16. package/dist/extensions/logic/header copy.d.ts +0 -10
  17. package/dist/extensions/logic/header copy.js +0 -33
  18. package/dist/extensions/logic/include.d.ts +0 -10
  19. package/dist/extensions/logic/include.js +0 -17
  20. package/dist/extensions/logic/qumra-head copy.d.ts +0 -7
  21. package/dist/extensions/logic/qumra-head copy.js +0 -37
  22. package/dist/extensions/logic/schema.d.ts +0 -6
  23. package/dist/extensions/logic/schema.js +0 -26
  24. package/dist/extensions/logic/schemaExtension.d.ts +0 -0
  25. package/dist/extensions/logic/schemaExtension.js +0 -1
  26. package/dist/extensions/logic/seo copy.d.ts +0 -7
  27. package/dist/extensions/logic/seo copy.js +0 -32
  28. package/dist/extensions/logic/t.d.ts +0 -1
  29. package/dist/extensions/logic/t.js +0 -10
  30. package/dist/extensions/logic/widget copy.d.ts +0 -10
  31. package/dist/extensions/logic/widget copy.js +0 -33
  32. package/dist/extensions/logic/widgets copy.d.ts +0 -10
  33. package/dist/extensions/logic/widgets copy.js +0 -33
  34. package/dist/extensions/logic/widgets.d.ts +0 -10
  35. package/dist/extensions/logic/widgets.js +0 -33
  36. package/dist/extensions/registerAllGlobals.d.ts +0 -2
  37. package/dist/extensions/registerAllGlobals.js +0 -47
  38. package/dist/filters/addFilter.d.ts +0 -1
  39. package/dist/filters/addFilter.js +0 -6
  40. package/dist/filters/capitalize.d.ts +0 -1
  41. package/dist/filters/capitalize.js +0 -8
  42. package/dist/filters/discountLabel.d.ts +0 -1
  43. package/dist/filters/discountLabel.js +0 -8
  44. package/dist/filters/formatDate.d.ts +0 -1
  45. package/dist/filters/formatDate.js +0 -9
  46. package/dist/filters/formatMoney.d.ts +0 -1
  47. package/dist/filters/formatMoney.js +0 -8
  48. package/dist/filters/logic/capitalize.d.ts +0 -1
  49. package/dist/filters/logic/capitalize.js +0 -8
  50. package/dist/filters/logic/color_to_hex.d.ts +0 -1
  51. package/dist/filters/logic/color_to_hex.js +0 -15
  52. package/dist/filters/logic/component.d.ts +0 -2
  53. package/dist/filters/logic/component.js +0 -6
  54. package/dist/filters/logic/discountLabel.d.ts +0 -1
  55. package/dist/filters/logic/discountLabel.js +0 -8
  56. package/dist/filters/logic/first.d.ts +0 -1
  57. package/dist/filters/logic/first.js +0 -6
  58. package/dist/filters/logic/formatDate.d.ts +0 -1
  59. package/dist/filters/logic/formatDate.js +0 -7
  60. package/dist/filters/logic/formatMoney.d.ts +0 -1
  61. package/dist/filters/logic/formatMoney.js +0 -8
  62. package/dist/filters/logic/json.d.ts +0 -2
  63. package/dist/filters/logic/json.js +0 -15
  64. package/dist/filters/logic/money_with_currency.d.ts +0 -1
  65. package/dist/filters/logic/money_with_currency.js +0 -8
  66. package/dist/filters/logic/money_without_trailing_zeros.d.ts +0 -1
  67. package/dist/filters/logic/money_without_trailing_zeros.js +0 -8
  68. package/dist/filters/logic/split.d.ts +0 -1
  69. package/dist/filters/logic/split.js +0 -6
  70. package/dist/filters/logic/strings/split.d.ts +0 -1
  71. package/dist/filters/logic/strings/split.js +0 -6
  72. package/dist/filters/logic/urls/capitalize.d.ts +0 -1
  73. package/dist/filters/logic/urls/capitalize.js +0 -8
  74. package/dist/globals/logic/capitalize.d.ts +0 -1
  75. package/dist/globals/logic/capitalize.js +0 -8
  76. package/dist/globals/logic/component.d.ts +0 -2
  77. package/dist/globals/logic/component.js +0 -6
  78. package/dist/globals/logic/discountLabel.d.ts +0 -1
  79. package/dist/globals/logic/discountLabel.js +0 -8
  80. package/dist/globals/logic/formatDate.d.ts +0 -1
  81. package/dist/globals/logic/formatDate.js +0 -9
  82. package/dist/globals/logic/formatMoney.d.ts +0 -1
  83. package/dist/globals/logic/formatMoney.js +0 -8
  84. package/dist/globals/registerAllFilters.d.ts +0 -2
  85. package/dist/globals/registerAllFilters.js +0 -47
  86. package/dist/globals copy/index.d.ts +0 -1
  87. package/dist/globals copy/index.js +0 -8
  88. package/dist/globals copy/logic/t.d.ts +0 -1
  89. package/dist/globals copy/logic/t.js +0 -10
  90. package/dist/globals copy/registerAllGlobals.d.ts +0 -2
  91. package/dist/globals copy/registerAllGlobals.js +0 -47
  92. package/dist/middleware/extension.middleware.d.ts +0 -2
  93. package/dist/middleware/extension.middleware.js +0 -12
  94. package/dist/middleware/filters.middleware copy.d.ts +0 -2
  95. package/dist/middleware/filters.middleware copy.js +0 -12
  96. package/dist/middleware/globals.middleware copy.d.ts +0 -2
  97. package/dist/middleware/globals.middleware copy.js +0 -12
  98. package/dist/middleware/initPaths.middleware.d.ts +0 -2
  99. package/dist/middleware/initPaths.middleware.js +0 -28
  100. package/dist/middleware/mergeData.middleware copy.d.ts +0 -2
  101. package/dist/middleware/mergeData.middleware copy.js +0 -55
  102. package/dist/middleware/mergeData.middleware.d.ts +0 -2
  103. package/dist/middleware/mergeData.middleware.js +0 -29
  104. package/dist/middleware/nunjucks.d.ts +0 -2
  105. package/dist/middleware/nunjucks.js +0 -22
  106. package/dist/middleware/nunjucks.middleware copy.d.ts +0 -2
  107. package/dist/middleware/nunjucks.middleware copy.js +0 -26
  108. package/dist/middleware/nunjucksFilters.middleware.d.ts +0 -2
  109. package/dist/middleware/nunjucksFilters.middleware.js +0 -12
  110. package/dist/middleware/prepareData.d.ts +0 -2
  111. package/dist/middleware/prepareData.js +0 -46
  112. package/dist/middleware/prepareData.middleware copy.d.ts +0 -2
  113. package/dist/middleware/prepareData.middleware copy.js +0 -49
  114. package/dist/middleware/prepareDataMiddleware.d.ts +0 -2
  115. package/dist/middleware/prepareDataMiddleware.js +0 -46
  116. package/dist/middleware/render.d.ts +0 -2
  117. package/dist/middleware/render.js +0 -24
  118. package/dist/middlewares/errorHandler.d.ts +0 -8
  119. package/dist/middlewares/errorHandler.js +0 -33
  120. package/dist/middlewares/pathMiddleware.d.ts +0 -2
  121. package/dist/middlewares/pathMiddleware.js +0 -19
  122. package/dist/middlewares/prepareDataMiddleware.d.ts +0 -2
  123. package/dist/middlewares/prepareDataMiddleware.js +0 -28
  124. package/dist/middlewares/themeMiddleware.d.ts +0 -2
  125. package/dist/middlewares/themeMiddleware.js +0 -29
  126. package/dist/registerAllFilters.d.ts +0 -2
  127. package/dist/registerAllFilters.js +0 -44
  128. package/dist/render.d.ts +0 -1
  129. package/dist/render.js +0 -19
  130. package/dist/services/getRenderData.d.ts +0 -3
  131. package/dist/services/getRenderData.js +0 -9
  132. package/dist/services/prepareData.d.ts +0 -2
  133. package/dist/services/prepareData.js +0 -46
  134. package/dist/services/prepareDataMiddleware.d.ts +0 -2
  135. package/dist/services/prepareDataMiddleware.js +0 -28
  136. package/dist/utils/asyncHandler.d.ts +0 -0
  137. package/dist/utils/asyncHandler.js +0 -1
  138. package/dist/utils/getLocalData.d.ts +0 -4
  139. package/dist/utils/getLocalData.js +0 -21
  140. package/dist/utils/getLocalFooterData copy.d.ts +0 -4
  141. package/dist/utils/getLocalFooterData copy.js +0 -22
  142. package/dist/utils/getLocalFooterData.d.ts +0 -4
  143. package/dist/utils/getLocalFooterData.js +0 -22
  144. package/dist/utils/getLocalHeaderData.d.ts +0 -4
  145. package/dist/utils/getLocalHeaderData.js +0 -22
  146. package/dist/utils/getLocalWidgetData copy.d.ts +0 -4
  147. package/dist/utils/getLocalWidgetData copy.js +0 -22
  148. package/dist/utils/normalizeIncludesPath.d.ts +0 -1
  149. package/dist/utils/normalizeIncludesPath.js +0 -19
  150. package/dist/utils/parseUrl.d.ts +0 -2
  151. package/dist/utils/parseUrl.js +0 -46
  152. package/dist/utils/render.d.ts +0 -2
  153. package/dist/utils/render.js +0 -24
  154. package/dist/utils/serverStartLog.d.ts +0 -5
  155. package/dist/utils/serverStartLog.js +0 -12
  156. package/dist/utils/validateWidgetData.d.ts +0 -1
  157. package/dist/utils/validateWidgetData.js +0 -23
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareDataMiddleware = void 0;
4
- const node_consul_service_1 = require("node-consul-service");
5
- const prepareDataMiddleware = async (req, res, next) => {
6
- try {
7
- const engineResponse = await (0, node_consul_service_1.callService)("engine-service", {
8
- path: "/v1/render",
9
- method: "POST",
10
- data: {
11
- url: res.locals.fullUrl,
12
- },
13
- });
14
- if (engineResponse.success) {
15
- res.locals.render = engineResponse.data;
16
- }
17
- else {
18
- res.locals.render = null;
19
- }
20
- console.log(res.locals);
21
- next();
22
- }
23
- catch (err) {
24
- console.error("🚀 ~ Middleware error:", err);
25
- return res.status(500).json({ message: "Internal Server Error" });
26
- }
27
- };
28
- exports.prepareDataMiddleware = prepareDataMiddleware;
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,4 +0,0 @@
1
- export declare const getLocalWidgetData: ({ widget, widgetPath }: {
2
- widget: string;
3
- widgetPath: string;
4
- }) => any;
@@ -1,21 +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.getLocalWidgetData = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const getLocalWidgetData = ({ widget, widgetPath }) => {
10
- const filePath = path_1.default.join("widgets", widgetPath, "schema.njk");
11
- try {
12
- const fileContent = fs_1.default.readFileSync(filePath, "utf-8");
13
- const jsonData = JSON.parse(fileContent);
14
- return jsonData;
15
- }
16
- catch (error) {
17
- console.error(`❌ Failed to read or parse schema.njk for widget ${widget}:`, error);
18
- return null;
19
- }
20
- };
21
- exports.getLocalWidgetData = getLocalWidgetData;
@@ -1,4 +0,0 @@
1
- export declare const getLocalWidgetData: ({ widget, widgetPath, }: {
2
- widget: string;
3
- widgetPath: string;
4
- }) => Record<string, any> | null;
@@ -1,22 +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.getLocalWidgetData = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const mergeSchemaWithData_1 = require("./mergeSchemaWithData");
10
- const getLocalWidgetData = ({ widget, widgetPath, }) => {
11
- try {
12
- const filePath = path_1.default.join(widgetPath, widget, "schema.json");
13
- const fileContent = fs_1.default.readFileSync(filePath, "utf-8");
14
- const jsonData = JSON.parse(fileContent);
15
- return (0, mergeSchemaWithData_1.mergeSchemaWithData)(jsonData, {});
16
- }
17
- catch (error) {
18
- console.error(`❌ Failed to read or parse schema.njk for widget ${widget}:`, error);
19
- return null;
20
- }
21
- };
22
- exports.getLocalWidgetData = getLocalWidgetData;
@@ -1,4 +0,0 @@
1
- export declare const getLocalWidgetData: ({ widget, widgetPath, }: {
2
- widget: string;
3
- widgetPath: string;
4
- }) => Record<string, any> | null;
@@ -1,22 +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.getLocalWidgetData = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const mergeSchemaWithData_1 = require("./mergeSchemaWithData");
10
- const getLocalWidgetData = ({ widget, widgetPath, }) => {
11
- try {
12
- const filePath = path_1.default.join(widgetPath, widget, "schema.json");
13
- const fileContent = fs_1.default.readFileSync(filePath, "utf-8");
14
- const jsonData = JSON.parse(fileContent);
15
- return (0, mergeSchemaWithData_1.mergeSchemaWithData)(jsonData, {});
16
- }
17
- catch (error) {
18
- console.error(`❌ Failed to read or parse schema.njk for widget ${widget}:`, error);
19
- return null;
20
- }
21
- };
22
- exports.getLocalWidgetData = getLocalWidgetData;
@@ -1,4 +0,0 @@
1
- export declare const getLocalSettingsData: ({ widget, widgetPath, }: {
2
- widget: string;
3
- widgetPath: string;
4
- }) => Record<string, any> | null;
@@ -1,22 +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.getLocalSettingsData = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const mergeSchemaWithData_1 = require("./mergeSchemaWithData");
10
- const getLocalSettingsData = ({ widget, widgetPath, }) => {
11
- try {
12
- const filePath = path_1.default.join(widgetPath, widget, "schema.json");
13
- const fileContent = fs_1.default.readFileSync(filePath, "utf-8");
14
- const jsonData = JSON.parse(fileContent);
15
- return (0, mergeSchemaWithData_1.mergeSchemaWithData)(jsonData, {});
16
- }
17
- catch (error) {
18
- console.error(`❌ Failed to read or parse schema.njk for widget ${widget}:`, error);
19
- return null;
20
- }
21
- };
22
- exports.getLocalSettingsData = getLocalSettingsData;
@@ -1,4 +0,0 @@
1
- export declare const getLocalWidgetData: ({ widget, widgetPath, }: {
2
- widget: string;
3
- widgetPath: string;
4
- }) => Record<string, any> | null;
@@ -1,22 +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.getLocalWidgetData = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const mergeSchemaWithData_1 = require("./mergeSchemaWithData");
10
- const getLocalWidgetData = ({ widget, widgetPath, }) => {
11
- try {
12
- const filePath = path_1.default.join(widgetPath, widget, "schema.json");
13
- const fileContent = fs_1.default.readFileSync(filePath, "utf-8");
14
- const jsonData = JSON.parse(fileContent);
15
- return (0, mergeSchemaWithData_1.mergeSchemaWithData)(jsonData, {});
16
- }
17
- catch (error) {
18
- console.error(`❌ Failed to read or parse schema.njk for widget ${widget}:`, error);
19
- return null;
20
- }
21
- };
22
- exports.getLocalWidgetData = getLocalWidgetData;
@@ -1 +0,0 @@
1
- export declare function normalizeIncludesPath(input: string): string | null;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeIncludesPath = normalizeIncludesPath;
4
- function normalizeIncludesPath(input) {
5
- if (!input || typeof input !== 'string') {
6
- return null;
7
- }
8
- const trimmed = input.trim().replace(/^['"]|['"]$/g, '');
9
- // إزالة أي امتداد .njk لو موجود
10
- let base = trimmed.replace(/\.njk$/, '');
11
- // لو بيبدأ بـ includes/ نشيله مؤقتًا
12
- if (base.startsWith('includes/')) {
13
- base = base.replace(/^includes\//, '');
14
- }
15
- // إزالة /widget لو موجودة في الآخر
16
- base = base.replace(/\/widget$/, '');
17
- // الناتج النهائي
18
- return `includes/${base}/widget.njk`;
19
- }
@@ -1,2 +0,0 @@
1
- import { ParsedUrl } from "../types/sharedTypes";
2
- export declare const parseUrlString: (urlString: string) => ParsedUrl;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseUrlString = void 0;
4
- const parseUrlString = (urlString) => {
5
- const url = new URL(urlString);
6
- // تحويل الكويري لأوبجكت
7
- const query = {};
8
- url.searchParams.forEach((value, key) => {
9
- query[key] = value;
10
- });
11
- // استخراج أجزاء المسار
12
- const pathParts = url.pathname.split('/').filter(Boolean);
13
- // قائمة اللغات المسموحة
14
- const supportedLanguages = ['ar', 'en', 'fr', 'de'];
15
- // اللغة الافتراضية
16
- let language = 'ar';
17
- let country = undefined;
18
- let cleanPathname = url.pathname;
19
- if (pathParts.length > 0) {
20
- const langParts = pathParts[0].split('-');
21
- // لو اللغة موجودة ضمن اللغات المدعومة
22
- if (supportedLanguages.includes(langParts[0])) {
23
- language = langParts[0];
24
- if (langParts.length === 2) {
25
- country = langParts[1];
26
- }
27
- // حذف اللغة من المسار
28
- cleanPathname = '/' + pathParts.slice(1).join('/');
29
- if (cleanPathname === '')
30
- cleanPathname = '/';
31
- }
32
- }
33
- // بناء رابط بدون اللغة
34
- const fullUrlWithoutLang = url.protocol + '//' + url.host + cleanPathname + (url.search || '');
35
- return {
36
- protocol: url.protocol.replace(':', ''),
37
- host: url.host,
38
- pathname: cleanPathname,
39
- language,
40
- country,
41
- query,
42
- fullUrl: url.href,
43
- fullUrlWithoutLang,
44
- };
45
- };
46
- exports.parseUrlString = parseUrlString;
@@ -1,2 +0,0 @@
1
- import { Request, Response, NextFunction } from "express";
2
- export declare const renderMiddleware: (req: Request, res: Response, next: NextFunction) => void;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderMiddleware = void 0;
4
- const renderMiddleware = (req, res, next) => {
5
- const fileName = res.locals.render?.context?.page?.fileName;
6
- const context = res.locals.render?.context || {};
7
- if (!fileName) {
8
- return next(new Error("Page fileName not found in res.locals.render"));
9
- }
10
- const env = res.locals.env;
11
- if (!env) {
12
- return next(new Error("Nunjucks environment not found in res.locals.env"));
13
- }
14
- env.render(fileName, context, (err, html) => {
15
- if (err)
16
- return next(err);
17
- if (html !== null) {
18
- res.send(html);
19
- return;
20
- }
21
- return next(new Error("Nunjucks rendered null HTML"));
22
- });
23
- };
24
- exports.renderMiddleware = renderMiddleware;
@@ -1,5 +0,0 @@
1
- declare function printServerLog({ port, themeId, url }: {
2
- port: number;
3
- themeId: string;
4
- url: string;
5
- }): void;
@@ -1,12 +0,0 @@
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
- }
@@ -1 +0,0 @@
1
- declare function validateWidgetData(data: unknown[]): Record<string, any>;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- function validateWidgetData(data) {
3
- if (!Array.isArray(data)) {
4
- throw new Error("❌ البيانات يجب أن تكون مصفوفة.");
5
- }
6
- const result = {};
7
- for (const item of data) {
8
- if (typeof item === "string") {
9
- throw new Error(`❌ عنصر غير صحيح: "${item}" يجب أن يكون كائن يحتوي على key/value.`);
10
- }
11
- if (typeof item === "object" && item !== null) {
12
- for (const [key, value] of Object.entries(item)) {
13
- if (value === true)
14
- continue; // استبعاد مثل __keywords: true
15
- result[key] = value;
16
- }
17
- }
18
- else {
19
- throw new Error(`❌ نوع عنصر غير مدعوم: ${JSON.stringify(item)}`);
20
- }
21
- }
22
- return result;
23
- }