qumra-engine 2.0.3 → 2.0.5
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/index.d.ts +7 -0
- package/dist/extensions/index.js +20 -0
- package/dist/extensions/logic/content copy.d.ts +7 -0
- package/dist/extensions/logic/content copy.js +32 -0
- package/dist/extensions/logic/content.d.ts +10 -0
- package/dist/extensions/logic/content.js +74 -0
- package/dist/extensions/logic/footer copy.d.ts +10 -0
- package/dist/extensions/logic/footer copy.js +43 -0
- package/dist/extensions/logic/footer.d.ts +10 -0
- package/dist/extensions/logic/footer.js +51 -0
- package/dist/extensions/logic/form.d.ts +8 -0
- package/dist/extensions/logic/form.js +41 -0
- package/dist/extensions/logic/header copy.d.ts +10 -0
- package/dist/extensions/logic/header copy.js +33 -0
- package/dist/extensions/logic/header.d.ts +10 -0
- package/dist/extensions/logic/header.js +51 -0
- package/dist/extensions/logic/qumra-head.d.ts +7 -0
- package/dist/extensions/logic/qumra-head.js +34 -0
- package/dist/extensions/logic/schema.d.ts +6 -0
- package/dist/extensions/logic/schema.js +26 -0
- package/dist/extensions/logic/schemaExtension.d.ts +0 -0
- package/dist/extensions/logic/schemaExtension.js +1 -0
- package/dist/extensions/logic/seo copy.d.ts +7 -0
- package/dist/extensions/logic/seo copy.js +32 -0
- package/dist/extensions/logic/seo.d.ts +7 -0
- package/dist/extensions/logic/seo.js +32 -0
- package/dist/extensions/logic/t.d.ts +1 -0
- package/dist/extensions/logic/t.js +10 -0
- package/dist/extensions/logic/widget copy.d.ts +10 -0
- package/dist/extensions/logic/widget copy.js +33 -0
- package/dist/extensions/logic/widget.d.ts +10 -0
- package/dist/extensions/logic/widget.js +47 -0
- package/dist/extensions/logic/widgets copy.d.ts +10 -0
- package/dist/extensions/logic/widgets copy.js +33 -0
- package/dist/extensions/logic/widgets.d.ts +10 -0
- package/dist/extensions/logic/widgets.js +33 -0
- package/dist/extensions/registerAllExtensions.d.ts +2 -0
- package/dist/extensions/registerAllExtensions.js +50 -0
- package/dist/extensions/registerAllGlobals.d.ts +2 -0
- package/dist/extensions/registerAllGlobals.js +47 -0
- package/dist/filters/index.d.ts +22 -5
- package/dist/filters/index.js +43 -9
- package/dist/filters/logic/array/compact.d.ts +1 -0
- package/dist/filters/logic/array/compact.js +6 -0
- package/dist/filters/logic/array/concat.d.ts +1 -0
- package/dist/filters/logic/array/concat.js +6 -0
- package/dist/filters/logic/array/find.d.ts +1 -0
- package/dist/filters/logic/array/find.js +8 -0
- package/dist/filters/logic/array/first.d.ts +1 -0
- package/dist/filters/logic/array/first.js +6 -0
- package/dist/filters/logic/array/join.d.ts +1 -0
- package/dist/filters/logic/array/join.js +8 -0
- package/dist/filters/logic/array/last.d.ts +1 -0
- package/dist/filters/logic/array/last.js +8 -0
- package/dist/filters/logic/array/size.d.ts +1 -0
- package/dist/filters/logic/array/size.js +12 -0
- package/dist/filters/logic/array/split.d.ts +1 -0
- package/dist/filters/logic/array/split.js +6 -0
- package/dist/filters/logic/array/where.d.ts +1 -0
- package/dist/filters/logic/array/where.js +8 -0
- package/dist/filters/logic/color_to_hex.d.ts +1 -0
- package/dist/filters/logic/color_to_hex.js +15 -0
- package/dist/filters/logic/colors/color_to_hex.d.ts +1 -0
- package/dist/filters/logic/colors/color_to_hex.js +15 -0
- package/dist/filters/logic/data/formatDate.d.ts +1 -0
- package/dist/filters/logic/data/formatDate.js +7 -0
- package/dist/filters/logic/first.d.ts +1 -0
- package/dist/filters/logic/first.js +6 -0
- package/dist/filters/logic/formatDate.d.ts +1 -1
- package/dist/filters/logic/formatDate.js +4 -6
- package/dist/filters/logic/json/json.d.ts +2 -0
- package/dist/filters/logic/json/json.js +15 -0
- package/dist/filters/logic/json.d.ts +2 -0
- package/dist/filters/logic/json.js +15 -0
- package/dist/filters/logic/money/discountLabel.d.ts +1 -0
- package/dist/filters/logic/money/discountLabel.js +8 -0
- package/dist/filters/logic/money/money_with_currency.d.ts +1 -0
- package/dist/filters/logic/money/money_with_currency.js +8 -0
- package/dist/filters/logic/money/money_without_trailing_zeros.d.ts +1 -0
- package/dist/filters/logic/money/money_without_trailing_zeros.js +8 -0
- package/dist/filters/logic/money_with_currency.d.ts +1 -0
- package/dist/filters/logic/money_with_currency.js +8 -0
- package/dist/filters/logic/money_without_trailing_zeros.d.ts +1 -0
- package/dist/filters/logic/money_without_trailing_zeros.js +8 -0
- package/dist/filters/logic/split.d.ts +1 -0
- package/dist/filters/logic/split.js +6 -0
- package/dist/filters/logic/strings/capitalize.d.ts +1 -0
- package/dist/filters/logic/strings/capitalize.js +8 -0
- package/dist/filters/logic/strings/downcase.d.ts +1 -0
- package/dist/filters/logic/strings/downcase.js +6 -0
- package/dist/filters/logic/strings/remove.d.ts +1 -0
- package/dist/filters/logic/strings/remove.js +8 -0
- package/dist/filters/logic/strings/split.d.ts +1 -0
- package/dist/filters/logic/strings/split.js +6 -0
- package/dist/filters/logic/strings/strip.d.ts +1 -0
- package/dist/filters/logic/strings/strip.js +6 -0
- package/dist/filters/logic/strings/truncate.d.ts +1 -0
- package/dist/filters/logic/strings/truncate.js +10 -0
- package/dist/filters/logic/strings/upcase.d.ts +1 -0
- package/dist/filters/logic/strings/upcase.js +8 -0
- package/dist/filters/logic/urls/assets.d.ts +1 -0
- package/dist/filters/logic/urls/assets.js +6 -0
- package/dist/filters/logic/urls/capitalize.d.ts +1 -0
- package/dist/filters/logic/urls/capitalize.js +8 -0
- package/dist/globals/index.d.ts +1 -0
- package/dist/globals/index.js +8 -0
- package/dist/globals/logic/capitalize.d.ts +1 -0
- package/dist/globals/logic/capitalize.js +8 -0
- package/dist/globals/logic/component.d.ts +2 -0
- package/dist/globals/logic/component.js +6 -0
- package/dist/globals/logic/discountLabel.d.ts +1 -0
- package/dist/globals/logic/discountLabel.js +8 -0
- package/dist/globals/logic/formatDate.d.ts +1 -0
- package/dist/globals/logic/formatDate.js +9 -0
- package/dist/globals/logic/formatMoney.d.ts +1 -0
- package/dist/globals/logic/formatMoney.js +8 -0
- package/dist/globals/logic/t.d.ts +1 -0
- package/dist/globals/logic/t.js +10 -0
- package/dist/globals/registerAllFilters.d.ts +2 -0
- package/dist/globals/registerAllFilters.js +47 -0
- package/dist/globals/registerAllGlobals.d.ts +2 -0
- package/dist/globals/registerAllGlobals.js +47 -0
- package/dist/globals copy/index.d.ts +1 -0
- package/dist/globals copy/index.js +8 -0
- package/dist/globals copy/logic/t.d.ts +1 -0
- package/dist/globals copy/logic/t.js +10 -0
- package/dist/globals copy/registerAllGlobals.d.ts +2 -0
- package/dist/globals copy/registerAllGlobals.js +47 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -1
- package/dist/middleware/extension.middleware.d.ts +2 -0
- package/dist/middleware/extension.middleware.js +12 -0
- package/dist/middleware/extensions.middleware.d.ts +2 -0
- package/dist/middleware/extensions.middleware.js +12 -0
- package/dist/middleware/filters.middleware copy.d.ts +2 -0
- package/dist/middleware/filters.middleware copy.js +12 -0
- package/dist/middleware/filters.middleware.d.ts +2 -0
- package/dist/middleware/filters.middleware.js +12 -0
- package/dist/middleware/globals.middleware copy.d.ts +2 -0
- package/dist/middleware/globals.middleware copy.js +12 -0
- package/dist/middleware/globals.middleware.d.ts +2 -0
- package/dist/middleware/globals.middleware.js +12 -0
- package/dist/middleware/init.middleware.d.ts +9 -0
- package/dist/middleware/init.middleware.js +23 -0
- package/dist/middleware/initPaths.middleware.d.ts +2 -0
- package/dist/middleware/initPaths.middleware.js +28 -0
- package/dist/middleware/locals.middleware.d.ts +2 -0
- package/dist/middleware/locals.middleware.js +29 -0
- package/dist/middleware/mergeData.middleware.d.ts +2 -0
- package/dist/middleware/mergeData.middleware.js +55 -0
- package/dist/middleware/nunjucks.d.ts +2 -0
- package/dist/middleware/nunjucks.js +22 -0
- package/dist/middleware/nunjucks.middleware copy.d.ts +2 -0
- package/dist/middleware/nunjucks.middleware copy.js +26 -0
- package/dist/middleware/nunjucks.middleware.d.ts +2 -0
- package/dist/middleware/nunjucks.middleware.js +36 -0
- package/dist/middleware/nunjucksFilters.middleware.d.ts +2 -0
- package/dist/middleware/nunjucksFilters.middleware.js +12 -0
- package/dist/middleware/prepareData.d.ts +2 -0
- package/dist/middleware/prepareData.js +46 -0
- package/dist/middleware/prepareData.middleware copy.d.ts +2 -0
- package/dist/middleware/prepareData.middleware copy.js +49 -0
- package/dist/middleware/prepareData.middleware.d.ts +2 -0
- package/dist/middleware/prepareData.middleware.js +49 -0
- package/dist/middleware/prepareDataMiddleware.d.ts +2 -0
- package/dist/middleware/prepareDataMiddleware.js +46 -0
- package/dist/middleware/render.d.ts +2 -0
- package/dist/middleware/render.js +24 -0
- package/dist/middleware/render.middleware copy.d.ts +2 -0
- package/dist/middleware/render.middleware copy.js +39 -0
- package/dist/middleware/render.middleware.d.ts +2 -0
- package/dist/middleware/render.middleware.js +24 -0
- package/dist/middleware/serve-assets.middleware.d.ts +2 -0
- package/dist/middleware/serve-assets.middleware.js +6 -0
- package/dist/middleware.d.ts +8 -2
- package/dist/middleware.js +53 -8
- package/dist/nunjucksEnv.js +0 -2
- package/dist/services/prepareData.d.ts +2 -2
- package/dist/services/prepareData.js +34 -20
- package/dist/services/renderHandler.js +27 -25
- package/dist/store/globals.d.ts +2 -0
- package/dist/store/globals.js +12 -0
- package/dist/store/locals.d.ts +2 -0
- package/dist/store/locals.js +12 -0
- package/dist/types/sharedTypes.d.ts +6 -0
- package/dist/utils/asyncHandler.d.ts +0 -0
- package/dist/utils/asyncHandler.js +1 -0
- package/dist/utils/findAvailablePort.d.ts +1 -0
- package/dist/utils/findAvailablePort.js +28 -0
- package/dist/utils/getLocalData.d.ts +4 -0
- package/dist/utils/getLocalData.js +21 -0
- package/dist/utils/getLocalFooterData copy.d.ts +4 -0
- package/dist/utils/getLocalFooterData copy.js +22 -0
- package/dist/utils/getLocalFooterData.d.ts +4 -0
- package/dist/utils/getLocalFooterData.js +22 -0
- package/dist/utils/getLocalHeaderData.d.ts +4 -0
- package/dist/utils/getLocalHeaderData.js +22 -0
- package/dist/utils/getLocalWidgetData copy.d.ts +4 -0
- package/dist/utils/getLocalWidgetData copy.js +22 -0
- package/dist/utils/getLocalWidgetData.d.ts +4 -0
- package/dist/utils/getLocalWidgetData.js +22 -0
- package/dist/utils/getNestedValue.d.ts +1 -0
- package/dist/utils/getNestedValue.js +7 -0
- package/dist/utils/isPathAllowedToRender.d.ts +1 -0
- package/dist/utils/isPathAllowedToRender.js +8 -0
- package/dist/utils/mergeNestedSchemaWithData.d.ts +16 -0
- package/dist/utils/mergeNestedSchemaWithData.js +34 -0
- package/dist/utils/mergeObjects.d.ts +1 -0
- package/dist/utils/mergeObjects.js +28 -0
- package/dist/utils/mergeSchemaWithData.d.ts +14 -0
- package/dist/utils/mergeSchemaWithData.js +11 -0
- package/dist/utils/mergeWidgetSources.d.ts +1 -0
- package/dist/utils/mergeWidgetSources.js +21 -0
- package/dist/utils/normalizeWidgetPath.d.ts +1 -0
- package/dist/utils/normalizeWidgetPath.js +19 -0
- package/dist/utils/parseUrl.d.ts +2 -0
- package/dist/utils/parseUrl.js +46 -0
- package/dist/utils/render.d.ts +2 -2
- package/dist/utils/render.js +21 -20
- package/dist/utils/resolveTranslations.d.ts +1 -0
- package/dist/utils/resolveTranslations.js +21 -0
- package/package.json +5 -3
- package/todo.txt +1 -0
- package/views/home.njk +0 -15
|
@@ -0,0 +1,46 @@
|
|
|
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;
|
package/dist/utils/render.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Response } from
|
|
2
|
-
export declare
|
|
1
|
+
import { Request, Response, NextFunction } from "express";
|
|
2
|
+
export declare const renderMiddleware: (req: Request, res: Response, next: NextFunction) => void;
|
package/dist/utils/render.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
22
|
});
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
|
+
exports.renderMiddleware = renderMiddleware;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const resolveTranslations: (data: any, t: (key: string) => string) => any;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveTranslations = void 0;
|
|
4
|
+
const resolveTranslations = (data, t) => {
|
|
5
|
+
if (Array.isArray(data)) {
|
|
6
|
+
return data.map((item) => (0, exports.resolveTranslations)(item, t));
|
|
7
|
+
}
|
|
8
|
+
if (data && typeof data === "object") {
|
|
9
|
+
const result = {};
|
|
10
|
+
for (const key in data) {
|
|
11
|
+
result[key] = (0, exports.resolveTranslations)(data[key], t);
|
|
12
|
+
}
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
if (typeof data === "string" && data.startsWith("t:")) {
|
|
16
|
+
const translationKey = data.slice(2); // remove "t:"
|
|
17
|
+
return t(translationKey); // use as-is
|
|
18
|
+
}
|
|
19
|
+
return data;
|
|
20
|
+
};
|
|
21
|
+
exports.resolveTranslations = resolveTranslations;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qumra-engine",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "^5.4.1",
|
|
13
|
-
"
|
|
13
|
+
"color": "^5.0.0",
|
|
14
|
+
"express": "^5.1.0",
|
|
14
15
|
"morgan": "^1.10.0",
|
|
15
16
|
"nunjucks": "^3.2.4",
|
|
16
17
|
"pino": "^9.7.0",
|
|
17
|
-
"pino-pretty": "^13.0.0"
|
|
18
|
+
"pino-pretty": "^13.0.0",
|
|
19
|
+
"qumra-utils": "^1.0.30"
|
|
18
20
|
},
|
|
19
21
|
"devDependencies": {
|
|
20
22
|
"@types/chalk": "^0.4.31",
|
package/todo.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[check if you realy need this function] => resolveTranslations;
|
package/views/home.njk
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="ar">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>{{ title }}</title>
|
|
6
|
-
</head>
|
|
7
|
-
<body>
|
|
8
|
-
<h1>{{ title }}</h1>
|
|
9
|
-
<p>تم عرض هذا القالب باستخدام Nunjucks وExpress Middleware!</p>
|
|
10
|
-
<p>سعر المنتج: {{ 1234.5 | formatMoney('aaa') }}</p>
|
|
11
|
-
<p>تاريخ الطلب: {{ '2024-06-01' | formatDate('ar-EG') }}</p>
|
|
12
|
-
<p>اسم العميل: {{ 'ahmed' | capitalize }}</p>
|
|
13
|
-
<p>اsdssdلخصم: {{ 20 | discountLabel }}</p>
|
|
14
|
-
</body>
|
|
15
|
-
</html>
|