qumra-engine 2.0.30 → 2.0.32
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/middleware/init.middleware.d.ts +3 -2
- package/dist/middleware/init.middleware.js +2 -2
- package/dist/middleware/locals.middleware.js +0 -1
- package/dist/middleware/mergeData.middleware.js +0 -1
- package/dist/middleware/prepareData.middleware.js +3 -3
- package/dist/middleware.d.ts +4 -2
- package/dist/middleware.js +13 -8
- package/dist/services/findAllApps.d.ts +0 -0
- package/dist/services/findAllApps.js +1 -0
- package/dist/types/sharedTypes.d.ts +6 -0
- package/dist/utils/printServerLog.d.ts +6 -0
- package/dist/utils/printServerLog.js +16 -0
- package/dist/utils/serverStartLog.d.ts +5 -0
- package/dist/utils/serverStartLog.js +12 -0
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { NextFunction, Response, Request } from "express";
|
|
2
|
-
import { CacheGetter, CacheSetter, TMode } from "../types/sharedTypes";
|
|
2
|
+
import { App, CacheGetter, CacheSetter, TMode } from "../types/sharedTypes";
|
|
3
3
|
interface Options {
|
|
4
4
|
mode: TMode;
|
|
5
5
|
getRender?: CacheGetter;
|
|
6
6
|
setRender?: CacheSetter;
|
|
7
|
+
app?: App;
|
|
7
8
|
}
|
|
8
|
-
export declare const initMiddleware: ({ mode, getRender, setRender }: Options) => (req: Request, res: Response, next: NextFunction) => void;
|
|
9
|
+
export declare const initMiddleware: ({ mode, getRender, setRender, app, }: Options) => (req: Request, res: Response, next: NextFunction) => void;
|
|
9
10
|
export {};
|
|
@@ -2,13 +2,13 @@
|
|
|
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 }) => {
|
|
5
|
+
const initMiddleware = ({ mode, getRender, setRender, app, }) => {
|
|
6
6
|
return (req, res, next) => {
|
|
7
7
|
res.locals.mode = mode;
|
|
8
8
|
res.locals.cache = {};
|
|
9
9
|
const fullUrl = mode === "production"
|
|
10
10
|
? req.protocol + "://" + req.get("host") + req.originalUrl
|
|
11
|
-
:
|
|
11
|
+
: app?.url + req.originalUrl;
|
|
12
12
|
const parsedUrl = (0, qumra_utils_1.parseUrlString)(fullUrl);
|
|
13
13
|
res.locals.parsedUrl = parsedUrl;
|
|
14
14
|
if (typeof getRender === "function") {
|
|
@@ -9,7 +9,6 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
9
9
|
const locals_1 = require("../store/locals");
|
|
10
10
|
const localesMiddleware = (req, res, next) => {
|
|
11
11
|
const localesDirectory = res.locals.localesPath;
|
|
12
|
-
console.log("🚀 ~ localesDirectory:", localesDirectory);
|
|
13
12
|
const lang = res.locals.parsedUrl.language;
|
|
14
13
|
if (!lang)
|
|
15
14
|
return next();
|
|
@@ -12,7 +12,6 @@ const mergeDataMiddleware = async (req, res, next) => {
|
|
|
12
12
|
handle: res.locals.render.engine?.page?.handle,
|
|
13
13
|
});
|
|
14
14
|
const settingsData = res.locals.render.engine?.settings;
|
|
15
|
-
console.log("🚀 ~ settingsData:", settingsData);
|
|
16
15
|
res.locals.env.addGlobal("settings", settingsData);
|
|
17
16
|
next();
|
|
18
17
|
}
|
|
@@ -16,11 +16,12 @@ const prepareDataMiddleware = (req, res, next) => {
|
|
|
16
16
|
}
|
|
17
17
|
const api = true
|
|
18
18
|
? `https://store-gate.qumra-dev.site/render${themePath}`
|
|
19
|
-
:
|
|
19
|
+
: `http://192.168.1.8:4019/v1/render${themePath}`;
|
|
20
20
|
fetch(api, {
|
|
21
21
|
method: "POST",
|
|
22
22
|
headers: { "Content-Type": "application/json" },
|
|
23
23
|
body: JSON.stringify({ url: parsedUrl.fullUrl }),
|
|
24
|
+
credentials: 'include'
|
|
24
25
|
})
|
|
25
26
|
.then((engineResponse) => {
|
|
26
27
|
if (!engineResponse.ok) {
|
|
@@ -30,8 +31,7 @@ const prepareDataMiddleware = (req, res, next) => {
|
|
|
30
31
|
})
|
|
31
32
|
.then((data) => {
|
|
32
33
|
// تم تخزين النتيجة داخل res.locals.render
|
|
33
|
-
res.locals.render = data;
|
|
34
|
-
console.log("✅ Rendering data prepared");
|
|
34
|
+
res.locals.render = data.data;
|
|
35
35
|
next();
|
|
36
36
|
})
|
|
37
37
|
.catch((err) => {
|
package/dist/middleware.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { CacheGetter, CacheSetter, TMode } from "./types/sharedTypes";
|
|
1
|
+
import { App, CacheGetter, CacheSetter, TMode } from "./types/sharedTypes";
|
|
2
2
|
interface IStartEngine {
|
|
3
3
|
mode: TMode;
|
|
4
4
|
getRender?: CacheGetter;
|
|
5
5
|
setRender?: CacheSetter;
|
|
6
6
|
port: number;
|
|
7
7
|
themesRepo?: string;
|
|
8
|
+
themeId?: string | null;
|
|
9
|
+
currentApp?: App;
|
|
8
10
|
}
|
|
9
|
-
declare const startEngine: ({ mode, getRender, setRender, port, themesRepo, }: IStartEngine) => Promise<void>;
|
|
11
|
+
declare const startEngine: ({ mode, getRender, setRender, port, themesRepo, themeId, currentApp }: IStartEngine) => Promise<void>;
|
|
10
12
|
export default startEngine;
|
package/dist/middleware.js
CHANGED
|
@@ -18,11 +18,12 @@ const extensions_middleware_1 = require("./middleware/extensions.middleware");
|
|
|
18
18
|
const isPathAllowedToRender_1 = require("./utils/isPathAllowedToRender");
|
|
19
19
|
const mergeData_middleware_1 = require("./middleware/mergeData.middleware");
|
|
20
20
|
const express_session_1 = __importDefault(require("express-session"));
|
|
21
|
-
const
|
|
21
|
+
const printServerLog_1 = require("./utils/printServerLog");
|
|
22
|
+
const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo, themeId = null, currentApp }) => {
|
|
22
23
|
try {
|
|
23
24
|
const app = (0, express_1.default)();
|
|
24
25
|
app.use((0, express_session_1.default)({
|
|
25
|
-
secret:
|
|
26
|
+
secret: "your-secret-key",
|
|
26
27
|
resave: false,
|
|
27
28
|
saveUninitialized: false,
|
|
28
29
|
cookie: {
|
|
@@ -31,17 +32,21 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo
|
|
|
31
32
|
},
|
|
32
33
|
}));
|
|
33
34
|
app.use((req, res, next) => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
req.session.themeId = themeId;
|
|
35
|
+
if (req.query.theme) {
|
|
36
|
+
req.session.themeId = req.query.theme;
|
|
37
37
|
console.log(`✅ Theme ID set in session: ${themeId}`);
|
|
38
|
-
return res.redirect(
|
|
38
|
+
return res.redirect("/");
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (themeId) {
|
|
42
|
+
req.session.themeId = themeId;
|
|
43
|
+
}
|
|
39
44
|
}
|
|
40
45
|
next();
|
|
41
46
|
});
|
|
42
47
|
app.set("view engine", "nunjucks");
|
|
43
48
|
app.use((0, morgan_1.default)("dev"));
|
|
44
|
-
app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender }));
|
|
49
|
+
app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender, app: currentApp }));
|
|
45
50
|
const avilablePort = await (0, findAvailablePort_1.findAvailablePort)(port);
|
|
46
51
|
if (mode === "devlopment") {
|
|
47
52
|
const staticPath = path_1.default.join(process.cwd(), "assets");
|
|
@@ -75,7 +80,7 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo
|
|
|
75
80
|
app.use(extensions_middleware_1.nunjucksExtensionsMiddleWare);
|
|
76
81
|
app.use(render_middleware_1.renderMiddleware);
|
|
77
82
|
app.listen(avilablePort, () => {
|
|
78
|
-
|
|
83
|
+
(0, printServerLog_1.printServerLog)({ port: avilablePort, themeId: themeId || "default", app: currentApp });
|
|
79
84
|
});
|
|
80
85
|
}
|
|
81
86
|
catch (err) {
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -41,3 +41,9 @@ export interface Page {
|
|
|
41
41
|
}
|
|
42
42
|
export type CacheGetter = <T = any>(app: string, path: string) => Promise<T | null>;
|
|
43
43
|
export type CacheSetter = (app: string, path: string, value: any, ttlInSec?: number) => Promise<void> | undefined;
|
|
44
|
+
export type App = {
|
|
45
|
+
name: string;
|
|
46
|
+
subdomain: string;
|
|
47
|
+
url: string;
|
|
48
|
+
id: string;
|
|
49
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.printServerLog = printServerLog;
|
|
4
|
+
function printServerLog({ port, themeId, app }) {
|
|
5
|
+
const cyan = (text) => `\x1b[36m${text}\x1b[0m`; // cyan
|
|
6
|
+
const green = (text) => `\x1b[32m${text}\x1b[0m`; // green
|
|
7
|
+
const yellow = (text) => `\x1b[33m${text}\x1b[0m`; // yellow
|
|
8
|
+
const bold = (text) => `\x1b[1m${text}\x1b[0m`; // bold
|
|
9
|
+
console.log('\n' + bold('🚀 Server started successfully!'));
|
|
10
|
+
console.log('📡 Localhost =>', green(`http://localhost:${port}`));
|
|
11
|
+
if (app) {
|
|
12
|
+
console.log('🌍 Theme URL =>', cyan(`${app?.url}?theme=${themeId}`));
|
|
13
|
+
}
|
|
14
|
+
// console.log('📦 Builder ID =>', yellow(`https://qumra.cloud/store/test/themes/${themeId}`));
|
|
15
|
+
console.log('');
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
}
|