qumra-engine 2.0.16 → 2.0.18
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/mergeData.middleware copy.d.ts +2 -0
- package/dist/middleware/mergeData.middleware copy.js +55 -0
- package/dist/middleware/mergeData.middleware.js +5 -36
- package/dist/middleware/nunjucks.middleware.js +4 -1
- package/dist/middleware.d.ts +2 -1
- package/dist/middleware.js +14 -3
- package/package.json +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
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.mergeDataMiddleware = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const mergeObjects_1 = require("../utils/mergeObjects");
|
|
9
|
+
const mergeNestedSchemaWithData_1 = require("../utils/mergeNestedSchemaWithData");
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const mergeWidgetSources_1 = require("../utils/mergeWidgetSources");
|
|
12
|
+
const mergeDataMiddleware = async (req, res, next) => {
|
|
13
|
+
try {
|
|
14
|
+
const pageHandle = res.locals.render.context?.page.handle;
|
|
15
|
+
const pageJsonPath = path_1.default.join(res.locals.env.getGlobal("pagesPath"), `${pageHandle}.json`);
|
|
16
|
+
const hasJson = fs_1.default.existsSync(pageJsonPath);
|
|
17
|
+
if (!hasJson) {
|
|
18
|
+
console.warn(`❌ No JSON file found for '${pageHandle}' at ${pageJsonPath}`);
|
|
19
|
+
return next(new Error(`No JSON file found for '${pageHandle}'`));
|
|
20
|
+
}
|
|
21
|
+
const jsonData = fs_1.default.readFileSync(pageJsonPath, "utf-8");
|
|
22
|
+
const fileContent = JSON.parse(jsonData);
|
|
23
|
+
const onlineWidgets = res.locals.render.engine.page?.widgets ?? [];
|
|
24
|
+
const fileWidgets = fileContent?.widgets || [];
|
|
25
|
+
const widgets = (0, mergeWidgetSources_1.mergeWidgetSources)(fileWidgets, onlineWidgets);
|
|
26
|
+
res.locals.env.addGlobal("engineData", res.locals.render.engine);
|
|
27
|
+
res.locals.env.addGlobal("widgets", widgets);
|
|
28
|
+
res.locals.env.addGlobal("pageData", {
|
|
29
|
+
layout: res.locals.render.engine.page?.layout ?? fileContent.layout,
|
|
30
|
+
title: res.locals.render.engine.page?.title ?? fileContent.title,
|
|
31
|
+
handle: res.locals.render.engine.page?.handle ?? fileContent.handle,
|
|
32
|
+
});
|
|
33
|
+
const settingSchemaPath = path_1.default.join(res.locals.env.getGlobal("settingsPath"), "settings-schema.json");
|
|
34
|
+
const settingDataPath = path_1.default.join(res.locals.env.getGlobal("settingsPath"), "settings-data.json");
|
|
35
|
+
let schemaJson = {};
|
|
36
|
+
let dataJson = {};
|
|
37
|
+
if (fs_1.default.existsSync(settingSchemaPath)) {
|
|
38
|
+
const content = fs_1.default.readFileSync(settingSchemaPath, "utf-8");
|
|
39
|
+
schemaJson = JSON.parse(content);
|
|
40
|
+
}
|
|
41
|
+
if (fs_1.default.existsSync(settingDataPath)) {
|
|
42
|
+
const content = fs_1.default.readFileSync(settingDataPath, "utf-8");
|
|
43
|
+
dataJson = JSON.parse(content);
|
|
44
|
+
}
|
|
45
|
+
const mergedData = (0, mergeObjects_1.mergeObjects)(dataJson, res.locals.render.engine.settings || {}, "override");
|
|
46
|
+
const settingsData = (0, mergeNestedSchemaWithData_1.mergeNestedSchemaWithData)(schemaJson, mergedData);
|
|
47
|
+
res.locals.env.addGlobal("settings", settingsData);
|
|
48
|
+
next();
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
console.error("❌ mergeDataMiddleware error:", err);
|
|
52
|
+
return next(err);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.mergeDataMiddleware = mergeDataMiddleware;
|
|
@@ -1,49 +1,18 @@
|
|
|
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
3
|
exports.mergeDataMiddleware = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const mergeObjects_1 = require("../utils/mergeObjects");
|
|
9
|
-
const mergeNestedSchemaWithData_1 = require("../utils/mergeNestedSchemaWithData");
|
|
10
|
-
const fs_1 = __importDefault(require("fs"));
|
|
11
|
-
const mergeWidgetSources_1 = require("../utils/mergeWidgetSources");
|
|
12
4
|
const mergeDataMiddleware = async (req, res, next) => {
|
|
13
5
|
try {
|
|
14
6
|
const pageHandle = res.locals.render.context?.page.handle;
|
|
15
|
-
const
|
|
16
|
-
const hasJson = fs_1.default.existsSync(pageJsonPath);
|
|
17
|
-
if (!hasJson) {
|
|
18
|
-
console.warn(`❌ No JSON file found for '${pageHandle}' at ${pageJsonPath}`);
|
|
19
|
-
return next(new Error(`No JSON file found for '${pageHandle}'`));
|
|
20
|
-
}
|
|
21
|
-
const jsonData = fs_1.default.readFileSync(pageJsonPath, "utf-8");
|
|
22
|
-
const fileContent = JSON.parse(jsonData);
|
|
23
|
-
const onlineWidgets = res.locals.render.engine.page?.widgets ?? [];
|
|
24
|
-
const fileWidgets = fileContent?.widgets || [];
|
|
25
|
-
const widgets = (0, mergeWidgetSources_1.mergeWidgetSources)(fileWidgets, onlineWidgets);
|
|
7
|
+
const widgets = res.locals.render.engine.page?.widgets ?? [];
|
|
26
8
|
res.locals.env.addGlobal("engineData", res.locals.render.engine);
|
|
27
9
|
res.locals.env.addGlobal("widgets", widgets);
|
|
28
10
|
res.locals.env.addGlobal("pageData", {
|
|
29
|
-
layout: res.locals.render.engine.page?.layout
|
|
30
|
-
title: res.locals.render.engine.page?.title
|
|
31
|
-
handle: res.locals.render.engine.page?.handle
|
|
11
|
+
layout: res.locals.render.engine.page?.layout,
|
|
12
|
+
title: res.locals.render.engine.page?.title,
|
|
13
|
+
handle: res.locals.render.engine.page?.handle,
|
|
32
14
|
});
|
|
33
|
-
const
|
|
34
|
-
const settingDataPath = path_1.default.join(res.locals.env.getGlobal("settingsPath"), "settings-data.json");
|
|
35
|
-
let schemaJson = {};
|
|
36
|
-
let dataJson = {};
|
|
37
|
-
if (fs_1.default.existsSync(settingSchemaPath)) {
|
|
38
|
-
const content = fs_1.default.readFileSync(settingSchemaPath, "utf-8");
|
|
39
|
-
schemaJson = JSON.parse(content);
|
|
40
|
-
}
|
|
41
|
-
if (fs_1.default.existsSync(settingDataPath)) {
|
|
42
|
-
const content = fs_1.default.readFileSync(settingDataPath, "utf-8");
|
|
43
|
-
dataJson = JSON.parse(content);
|
|
44
|
-
}
|
|
45
|
-
const mergedData = (0, mergeObjects_1.mergeObjects)(dataJson, res.locals.render.engine.settings || {}, "override");
|
|
46
|
-
const settingsData = (0, mergeNestedSchemaWithData_1.mergeNestedSchemaWithData)(schemaJson, mergedData);
|
|
15
|
+
const settingsData = res.locals.render.engine.settings;
|
|
47
16
|
res.locals.env.addGlobal("settings", settingsData);
|
|
48
17
|
next();
|
|
49
18
|
}
|
|
@@ -13,7 +13,10 @@ const nunjucksMiddleWare = (req, res, next) => {
|
|
|
13
13
|
console.log("🚀 ~ res.locals:", res.locals);
|
|
14
14
|
console.log("🚀 ~ isDev:", isDev);
|
|
15
15
|
console.log("🚀 ~ res.locals.themePath:", res.locals.render.themePath);
|
|
16
|
-
const mainPath = isDev
|
|
16
|
+
const mainPath = isDev
|
|
17
|
+
? path_1.default.join(process.cwd())
|
|
18
|
+
: path_1.default.join(res.locals.themesRepo, res.locals.render.themePath);
|
|
19
|
+
console.log("🚀 ~ mainPath:", mainPath);
|
|
17
20
|
const paths = {
|
|
18
21
|
pagesPath: path_1.default.join(mainPath, "pages"),
|
|
19
22
|
layoutsPath: path_1.default.join(mainPath, "layouts"),
|
package/dist/middleware.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ interface IStartEngine {
|
|
|
4
4
|
getRender?: CacheGetter;
|
|
5
5
|
setRender?: CacheSetter;
|
|
6
6
|
port: number;
|
|
7
|
+
themesRepo?: string;
|
|
7
8
|
}
|
|
8
|
-
declare const startEngine: ({ mode, getRender, setRender, port }: IStartEngine) => Promise<void>;
|
|
9
|
+
declare const startEngine: ({ mode, getRender, setRender, port, themesRepo, }: IStartEngine) => Promise<void>;
|
|
9
10
|
export default startEngine;
|
package/dist/middleware.js
CHANGED
|
@@ -17,7 +17,7 @@ const globals_middleware_1 = require("./middleware/globals.middleware");
|
|
|
17
17
|
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
|
-
const startEngine = async ({ mode, getRender, setRender, port = 3000 }) => {
|
|
20
|
+
const startEngine = async ({ mode, getRender, setRender, port = 3000, themesRepo, }) => {
|
|
21
21
|
try {
|
|
22
22
|
const app = (0, express_1.default)();
|
|
23
23
|
app.set("view engine", "nunjucks");
|
|
@@ -25,8 +25,8 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000 }) => {
|
|
|
25
25
|
app.use((0, init_middleware_1.initMiddleware)({ mode, getRender, setRender }));
|
|
26
26
|
const avilablePort = await (0, findAvailablePort_1.findAvailablePort)(port);
|
|
27
27
|
if (mode === "devlopment") {
|
|
28
|
-
const staticPath = path_1.default.join(process.cwd(),
|
|
29
|
-
app.use(
|
|
28
|
+
const staticPath = path_1.default.join(process.cwd(), "assets");
|
|
29
|
+
app.use("/assets", express_1.default.static(staticPath));
|
|
30
30
|
}
|
|
31
31
|
app.use((req, res, next) => {
|
|
32
32
|
if (!(0, isPathAllowedToRender_1.isPathAllowedToRender)(res.locals.parsedUrl.pathname)) {
|
|
@@ -36,6 +36,17 @@ const startEngine = async ({ mode, getRender, setRender, port = 3000 }) => {
|
|
|
36
36
|
next();
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
|
+
app.use((req, res, next) => {
|
|
40
|
+
var themesRepoPath;
|
|
41
|
+
if (themesRepo) {
|
|
42
|
+
themesRepoPath = path_1.default.join(process.cwd(), themesRepo);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
themesRepoPath = process.cwd();
|
|
46
|
+
}
|
|
47
|
+
res.locals.themesRepo = themesRepoPath;
|
|
48
|
+
next();
|
|
49
|
+
});
|
|
39
50
|
app.use(prepareData_middleware_1.prepareDataMiddleware);
|
|
40
51
|
app.use(nunjucks_middleware_1.nunjucksMiddleWare);
|
|
41
52
|
app.use(mergeData_middleware_1.mergeDataMiddleware);
|