qumra-engine 2.0.2 → 2.0.4

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 (246) hide show
  1. package/dist/addFilter.d.ts +1 -0
  2. package/dist/extensions/index.d.ts +7 -0
  3. package/dist/extensions/index.js +20 -0
  4. package/dist/extensions/logic/content copy.d.ts +7 -0
  5. package/dist/extensions/logic/content copy.js +32 -0
  6. package/dist/extensions/logic/content.d.ts +10 -0
  7. package/dist/extensions/logic/content.js +74 -0
  8. package/dist/extensions/logic/footer copy.d.ts +10 -0
  9. package/dist/extensions/logic/footer copy.js +43 -0
  10. package/dist/extensions/logic/footer.d.ts +10 -0
  11. package/dist/extensions/logic/footer.js +51 -0
  12. package/dist/extensions/logic/form.d.ts +8 -0
  13. package/dist/extensions/logic/form.js +41 -0
  14. package/dist/extensions/logic/header copy.d.ts +10 -0
  15. package/dist/extensions/logic/header copy.js +33 -0
  16. package/dist/extensions/logic/header.d.ts +10 -0
  17. package/dist/extensions/logic/header.js +51 -0
  18. package/dist/extensions/logic/qumra-head.d.ts +7 -0
  19. package/dist/extensions/logic/qumra-head.js +34 -0
  20. package/dist/extensions/logic/schema.d.ts +6 -0
  21. package/dist/extensions/logic/schema.js +26 -0
  22. package/dist/extensions/logic/schemaExtension.d.ts +0 -0
  23. package/dist/extensions/logic/schemaExtension.js +1 -0
  24. package/dist/extensions/logic/seo copy.d.ts +7 -0
  25. package/dist/extensions/logic/seo copy.js +32 -0
  26. package/dist/extensions/logic/seo.d.ts +7 -0
  27. package/dist/extensions/logic/seo.js +32 -0
  28. package/dist/extensions/logic/t.d.ts +1 -0
  29. package/dist/extensions/logic/t.js +10 -0
  30. package/dist/extensions/logic/widget copy.d.ts +10 -0
  31. package/dist/extensions/logic/widget copy.js +33 -0
  32. package/dist/extensions/logic/widget.d.ts +10 -0
  33. package/dist/extensions/logic/widget.js +47 -0
  34. package/dist/extensions/logic/widgets copy.d.ts +10 -0
  35. package/dist/extensions/logic/widgets copy.js +33 -0
  36. package/dist/extensions/logic/widgets.d.ts +10 -0
  37. package/dist/extensions/logic/widgets.js +33 -0
  38. package/dist/extensions/registerAllExtensions.d.ts +2 -0
  39. package/dist/extensions/registerAllExtensions.js +50 -0
  40. package/dist/extensions/registerAllGlobals.d.ts +2 -0
  41. package/dist/extensions/registerAllGlobals.js +47 -0
  42. package/dist/filters/addFilter.d.ts +1 -0
  43. package/dist/filters/capitalize.d.ts +1 -0
  44. package/dist/filters/discountLabel.d.ts +1 -0
  45. package/dist/filters/formatDate.d.ts +1 -0
  46. package/dist/filters/formatMoney.d.ts +1 -0
  47. package/dist/filters/index.d.ts +22 -0
  48. package/dist/filters/index.js +43 -9
  49. package/dist/filters/logic/array/compact.d.ts +1 -0
  50. package/dist/filters/logic/array/compact.js +6 -0
  51. package/dist/filters/logic/array/concat.d.ts +1 -0
  52. package/dist/filters/logic/array/concat.js +6 -0
  53. package/dist/filters/logic/array/find.d.ts +1 -0
  54. package/dist/filters/logic/array/find.js +8 -0
  55. package/dist/filters/logic/array/first.d.ts +1 -0
  56. package/dist/filters/logic/array/first.js +6 -0
  57. package/dist/filters/logic/array/join.d.ts +1 -0
  58. package/dist/filters/logic/array/join.js +8 -0
  59. package/dist/filters/logic/array/last.d.ts +1 -0
  60. package/dist/filters/logic/array/last.js +8 -0
  61. package/dist/filters/logic/array/size.d.ts +1 -0
  62. package/dist/filters/logic/array/size.js +12 -0
  63. package/dist/filters/logic/array/split.d.ts +1 -0
  64. package/dist/filters/logic/array/split.js +6 -0
  65. package/dist/filters/logic/array/where.d.ts +1 -0
  66. package/dist/filters/logic/array/where.js +8 -0
  67. package/dist/filters/logic/capitalize.d.ts +1 -0
  68. package/dist/filters/logic/color_to_hex.d.ts +1 -0
  69. package/dist/filters/logic/color_to_hex.js +15 -0
  70. package/dist/filters/logic/colors/color_to_hex.d.ts +1 -0
  71. package/dist/filters/logic/colors/color_to_hex.js +15 -0
  72. package/dist/filters/logic/component.d.ts +2 -0
  73. package/dist/filters/logic/data/formatDate.d.ts +1 -0
  74. package/dist/filters/logic/data/formatDate.js +7 -0
  75. package/dist/filters/logic/discountLabel.d.ts +1 -0
  76. package/dist/filters/logic/first.d.ts +1 -0
  77. package/dist/filters/logic/first.js +6 -0
  78. package/dist/filters/logic/formatDate.d.ts +1 -0
  79. package/dist/filters/logic/formatDate.js +4 -6
  80. package/dist/filters/logic/formatMoney.d.ts +1 -0
  81. package/dist/filters/logic/json/json.d.ts +2 -0
  82. package/dist/filters/logic/json/json.js +15 -0
  83. package/dist/filters/logic/json.d.ts +2 -0
  84. package/dist/filters/logic/json.js +15 -0
  85. package/dist/filters/logic/money/discountLabel.d.ts +1 -0
  86. package/dist/filters/logic/money/discountLabel.js +8 -0
  87. package/dist/filters/logic/money/money_with_currency.d.ts +1 -0
  88. package/dist/filters/logic/money/money_with_currency.js +8 -0
  89. package/dist/filters/logic/money/money_without_trailing_zeros.d.ts +1 -0
  90. package/dist/filters/logic/money/money_without_trailing_zeros.js +8 -0
  91. package/dist/filters/logic/money_with_currency.d.ts +1 -0
  92. package/dist/filters/logic/money_with_currency.js +8 -0
  93. package/dist/filters/logic/money_without_trailing_zeros.d.ts +1 -0
  94. package/dist/filters/logic/money_without_trailing_zeros.js +8 -0
  95. package/dist/filters/logic/split.d.ts +1 -0
  96. package/dist/filters/logic/split.js +6 -0
  97. package/dist/filters/logic/strings/capitalize.d.ts +1 -0
  98. package/dist/filters/logic/strings/capitalize.js +8 -0
  99. package/dist/filters/logic/strings/downcase.d.ts +1 -0
  100. package/dist/filters/logic/strings/downcase.js +6 -0
  101. package/dist/filters/logic/strings/remove.d.ts +1 -0
  102. package/dist/filters/logic/strings/remove.js +8 -0
  103. package/dist/filters/logic/strings/split.d.ts +1 -0
  104. package/dist/filters/logic/strings/split.js +6 -0
  105. package/dist/filters/logic/strings/strip.d.ts +1 -0
  106. package/dist/filters/logic/strings/strip.js +6 -0
  107. package/dist/filters/logic/strings/truncate.d.ts +1 -0
  108. package/dist/filters/logic/strings/truncate.js +10 -0
  109. package/dist/filters/logic/strings/upcase.d.ts +1 -0
  110. package/dist/filters/logic/strings/upcase.js +8 -0
  111. package/dist/filters/logic/urls/assets.d.ts +1 -0
  112. package/dist/filters/logic/urls/assets.js +6 -0
  113. package/dist/filters/logic/urls/capitalize.d.ts +1 -0
  114. package/dist/filters/logic/urls/capitalize.js +8 -0
  115. package/dist/filters/registerAllFilters.d.ts +2 -0
  116. package/dist/globals/index.d.ts +1 -0
  117. package/dist/globals/index.js +8 -0
  118. package/dist/globals/logic/capitalize.d.ts +1 -0
  119. package/dist/globals/logic/capitalize.js +8 -0
  120. package/dist/globals/logic/component.d.ts +2 -0
  121. package/dist/globals/logic/component.js +6 -0
  122. package/dist/globals/logic/discountLabel.d.ts +1 -0
  123. package/dist/globals/logic/discountLabel.js +8 -0
  124. package/dist/globals/logic/formatDate.d.ts +1 -0
  125. package/dist/globals/logic/formatDate.js +9 -0
  126. package/dist/globals/logic/formatMoney.d.ts +1 -0
  127. package/dist/globals/logic/formatMoney.js +8 -0
  128. package/dist/globals/logic/t.d.ts +1 -0
  129. package/dist/globals/logic/t.js +10 -0
  130. package/dist/globals/registerAllFilters.d.ts +2 -0
  131. package/dist/globals/registerAllFilters.js +47 -0
  132. package/dist/globals/registerAllGlobals.d.ts +2 -0
  133. package/dist/globals/registerAllGlobals.js +47 -0
  134. package/dist/globals copy/index.d.ts +1 -0
  135. package/dist/globals copy/index.js +8 -0
  136. package/dist/globals copy/logic/t.d.ts +1 -0
  137. package/dist/globals copy/logic/t.js +10 -0
  138. package/dist/globals copy/registerAllGlobals.d.ts +2 -0
  139. package/dist/globals copy/registerAllGlobals.js +47 -0
  140. package/dist/index.d.ts +2 -0
  141. package/dist/index.js +2 -1
  142. package/dist/middleware/extension.middleware.d.ts +2 -0
  143. package/dist/middleware/extension.middleware.js +12 -0
  144. package/dist/middleware/extensions.middleware.d.ts +2 -0
  145. package/dist/middleware/extensions.middleware.js +12 -0
  146. package/dist/middleware/filters.middleware copy.d.ts +2 -0
  147. package/dist/middleware/filters.middleware copy.js +12 -0
  148. package/dist/middleware/filters.middleware.d.ts +2 -0
  149. package/dist/middleware/filters.middleware.js +12 -0
  150. package/dist/middleware/globals.middleware copy.d.ts +2 -0
  151. package/dist/middleware/globals.middleware copy.js +12 -0
  152. package/dist/middleware/globals.middleware.d.ts +2 -0
  153. package/dist/middleware/globals.middleware.js +12 -0
  154. package/dist/middleware/init.middleware.d.ts +9 -0
  155. package/dist/middleware/init.middleware.js +23 -0
  156. package/dist/middleware/initPaths.middleware.d.ts +2 -0
  157. package/dist/middleware/initPaths.middleware.js +28 -0
  158. package/dist/middleware/locals.middleware.d.ts +2 -0
  159. package/dist/middleware/locals.middleware.js +29 -0
  160. package/dist/middleware/mergeData.middleware.d.ts +2 -0
  161. package/dist/middleware/mergeData.middleware.js +55 -0
  162. package/dist/middleware/nunjucks.d.ts +2 -0
  163. package/dist/middleware/nunjucks.js +22 -0
  164. package/dist/middleware/nunjucks.middleware copy.d.ts +2 -0
  165. package/dist/middleware/nunjucks.middleware copy.js +26 -0
  166. package/dist/middleware/nunjucks.middleware.d.ts +2 -0
  167. package/dist/middleware/nunjucks.middleware.js +36 -0
  168. package/dist/middleware/nunjucksFilters.middleware.d.ts +2 -0
  169. package/dist/middleware/nunjucksFilters.middleware.js +12 -0
  170. package/dist/middleware/prepareData.d.ts +2 -0
  171. package/dist/middleware/prepareData.js +46 -0
  172. package/dist/middleware/prepareData.middleware copy.d.ts +2 -0
  173. package/dist/middleware/prepareData.middleware copy.js +49 -0
  174. package/dist/middleware/prepareData.middleware.d.ts +2 -0
  175. package/dist/middleware/prepareData.middleware.js +49 -0
  176. package/dist/middleware/prepareDataMiddleware.d.ts +2 -0
  177. package/dist/middleware/prepareDataMiddleware.js +46 -0
  178. package/dist/middleware/render.d.ts +2 -0
  179. package/dist/middleware/render.js +24 -0
  180. package/dist/middleware/render.middleware copy.d.ts +2 -0
  181. package/dist/middleware/render.middleware copy.js +39 -0
  182. package/dist/middleware/render.middleware.d.ts +2 -0
  183. package/dist/middleware/render.middleware.js +24 -0
  184. package/dist/middleware/serve-assets.middleware.d.ts +2 -0
  185. package/dist/middleware/serve-assets.middleware.js +6 -0
  186. package/dist/middleware.d.ts +8 -0
  187. package/dist/middleware.js +53 -8
  188. package/dist/middlewares/errorHandler.d.ts +8 -0
  189. package/dist/middlewares/pathMiddleware.d.ts +2 -0
  190. package/dist/middlewares/prepareDataMiddleware.d.ts +2 -0
  191. package/dist/middlewares/themeMiddleware.d.ts +2 -0
  192. package/dist/nunjucksEnv.d.ts +6 -0
  193. package/dist/nunjucksEnv.js +0 -2
  194. package/dist/registerAllFilters.d.ts +2 -0
  195. package/dist/render.d.ts +1 -0
  196. package/dist/services/getRenderData.d.ts +3 -0
  197. package/dist/services/prepareData.d.ts +2 -0
  198. package/dist/services/prepareData.js +34 -20
  199. package/dist/services/prepareDataMiddleware.d.ts +2 -0
  200. package/dist/services/renderHandler.d.ts +2 -0
  201. package/dist/services/renderHandler.js +27 -25
  202. package/dist/store/globals.d.ts +2 -0
  203. package/dist/store/globals.js +12 -0
  204. package/dist/store/locals.d.ts +2 -0
  205. package/dist/store/locals.js +12 -0
  206. package/dist/types/sharedTypes.d.ts +26 -0
  207. package/dist/utils/asyncHandler.d.ts +0 -0
  208. package/dist/utils/asyncHandler.js +1 -0
  209. package/dist/utils/findAvailablePort.d.ts +1 -0
  210. package/dist/utils/findAvailablePort.js +28 -0
  211. package/dist/utils/getLocalData.d.ts +4 -0
  212. package/dist/utils/getLocalData.js +21 -0
  213. package/dist/utils/getLocalFooterData copy.d.ts +4 -0
  214. package/dist/utils/getLocalFooterData copy.js +22 -0
  215. package/dist/utils/getLocalFooterData.d.ts +4 -0
  216. package/dist/utils/getLocalFooterData.js +22 -0
  217. package/dist/utils/getLocalHeaderData.d.ts +4 -0
  218. package/dist/utils/getLocalHeaderData.js +22 -0
  219. package/dist/utils/getLocalWidgetData copy.d.ts +4 -0
  220. package/dist/utils/getLocalWidgetData copy.js +22 -0
  221. package/dist/utils/getLocalWidgetData.d.ts +4 -0
  222. package/dist/utils/getLocalWidgetData.js +22 -0
  223. package/dist/utils/getNestedValue.d.ts +1 -0
  224. package/dist/utils/getNestedValue.js +7 -0
  225. package/dist/utils/isPathAllowedToRender.d.ts +1 -0
  226. package/dist/utils/isPathAllowedToRender.js +8 -0
  227. package/dist/utils/logger.d.ts +5 -0
  228. package/dist/utils/mergeNestedSchemaWithData.d.ts +16 -0
  229. package/dist/utils/mergeNestedSchemaWithData.js +34 -0
  230. package/dist/utils/mergeObjects.d.ts +1 -0
  231. package/dist/utils/mergeObjects.js +28 -0
  232. package/dist/utils/mergeSchemaWithData.d.ts +14 -0
  233. package/dist/utils/mergeSchemaWithData.js +11 -0
  234. package/dist/utils/mergeWidgetSources.d.ts +1 -0
  235. package/dist/utils/mergeWidgetSources.js +21 -0
  236. package/dist/utils/normalizeWidgetPath.d.ts +1 -0
  237. package/dist/utils/normalizeWidgetPath.js +19 -0
  238. package/dist/utils/parseUrl.d.ts +2 -0
  239. package/dist/utils/parseUrl.js +46 -0
  240. package/dist/utils/render.d.ts +2 -0
  241. package/dist/utils/render.js +21 -20
  242. package/dist/utils/resolveTranslations.d.ts +1 -0
  243. package/dist/utils/resolveTranslations.js +21 -0
  244. package/package.json +5 -3
  245. package/todo.txt +1 -0
  246. package/views/home.njk +0 -15
@@ -0,0 +1,33 @@
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
+ })();
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,47 @@
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
+ const resolveTranslations_1 = require("../../utils/resolveTranslations");
9
+ exports.default = new (class WidgetExtension {
10
+ constructor() {
11
+ this.tags = ["widget"];
12
+ }
13
+ parse(parser, nodes) {
14
+ const tok = parser.nextToken();
15
+ const args = parser.parseSignature(true, true);
16
+ parser.advanceAfterBlockEnd(tok.value);
17
+ return new nodes.CallExtension(this, "run", args);
18
+ }
19
+ run({ ctx, env }, widgetPath) {
20
+ if (["footer", "header"].includes(widgetPath)) {
21
+ return new nunjucks_1.default.runtime.SafeString(`
22
+ <div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
23
+ ⚠️ <strong>لا يمكن تضمين ${widgetPath} بشكل مباشر:</strong>
24
+ </div>
25
+ `);
26
+ }
27
+ const widget = (0, normalizeWidgetPath_1.normalizeWidgetPath)(widgetPath);
28
+ if (!widget) {
29
+ return new nunjucks_1.default.runtime.SafeString(`
30
+ <div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
31
+ ⚠️ <strong>مسار الويجيت غير صالح:</strong> ${widgetPath}
32
+ </div>
33
+ `);
34
+ }
35
+ try {
36
+ const rendered = env.render(widget, (0, resolveTranslations_1.resolveTranslations)(ctx, env.getGlobal("t")));
37
+ return new nunjucks_1.default.runtime.SafeString(rendered);
38
+ }
39
+ catch (err) {
40
+ return new nunjucks_1.default.runtime.SafeString(`
41
+ <div style="padding: 12px; background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; border-radius: 4px; margin: 8px 0;">
42
+ ⚠️ <strong>تعذر تضمين الويجيت:</strong> ${widget}
43
+ </div>
44
+ `);
45
+ }
46
+ }
47
+ })();
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,33 @@
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
+ })();
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,33 @@
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
+ })();
@@ -0,0 +1,2 @@
1
+ import nunjucks from 'nunjucks';
2
+ export default function registerAllExtensions(env: nunjucks.Environment): void;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.default = registerAllExtensions;
37
+ const extensions = __importStar(require("."));
38
+ function registerAllExtensions(env) {
39
+ Object.entries(extensions).forEach(([name, instance]) => {
40
+ if (instance &&
41
+ typeof instance === 'object' &&
42
+ typeof instance.parse === 'function' &&
43
+ typeof instance.run === 'function') {
44
+ env.addExtension(name, instance);
45
+ }
46
+ else {
47
+ console.warn(`[nunjucks] ⚠️ تخطى Extension '${name}' لأنه ليس كائن صالح.`);
48
+ }
49
+ });
50
+ }
@@ -0,0 +1,2 @@
1
+ import nunjucks from 'nunjucks';
2
+ export default function registerAllGlobals(env: nunjucks.Environment): void;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.default = registerAllGlobals;
37
+ const filters = __importStar(require("."));
38
+ function registerAllGlobals(env) {
39
+ Object.entries(filters).forEach(([name, fn]) => {
40
+ if (typeof fn === 'function') {
41
+ env.addGlobal(name, fn);
42
+ }
43
+ else {
44
+ console.warn(`[nunjucks-middleware] تخطى الفلتر '${name}' لأنه ليس دالة صالحة.`);
45
+ }
46
+ });
47
+ }
@@ -0,0 +1 @@
1
+ export default function addFilter(env: any, name: string, fn: (...args: any[]) => any): void;
@@ -0,0 +1 @@
1
+ export default function capitalize(str: string): string;
@@ -0,0 +1 @@
1
+ export default function discountLabel(value: number): string;
@@ -0,0 +1 @@
1
+ export default function formatDate(date: Date | string, locale?: string): string | Date;
@@ -0,0 +1 @@
1
+ export default function formatMoney(value: number, currency?: string): string;
@@ -0,0 +1,22 @@
1
+ export { default as first } from './logic/array/first';
2
+ export { default as size } from './logic/array/size';
3
+ export { default as last } from './logic/array/last';
4
+ export { default as find } from './logic/array/find';
5
+ export { default as join } from './logic/array/join';
6
+ export { default as where } from './logic/array/where';
7
+ export { default as compact } from './logic/array/compact';
8
+ export { default as concat } from './logic/array/concat';
9
+ export { default as split } from './logic/array/split';
10
+ export { default as upcase } from './logic/strings/upcase';
11
+ export { default as capitalize } from './logic/strings/capitalize';
12
+ export { default as remove } from './logic/strings/remove';
13
+ export { default as downcase } from './logic/strings/downcase';
14
+ export { default as strip } from './logic/strings/strip';
15
+ export { default as truncate } from './logic/strings/truncate';
16
+ export { default as money } from './logic/money/money_with_currency';
17
+ export { default as date } from './logic/data/formatDate';
18
+ export { default as discountLabel } from './logic/money/discountLabel';
19
+ export { default as json } from './logic/json/json';
20
+ export { default as color_to_hex } from './logic/colors/color_to_hex';
21
+ export { default as money_without_trailing_zeros } from './logic/money/money_without_trailing_zeros';
22
+ export { default as assets } from './logic/urls/assets';
@@ -3,14 +3,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.component = exports.discountLabel = exports.capitalize = exports.formatDate = exports.formatMoney = void 0;
7
- var formatMoney_1 = require("./logic/formatMoney");
8
- Object.defineProperty(exports, "formatMoney", { enumerable: true, get: function () { return __importDefault(formatMoney_1).default; } });
9
- var formatDate_1 = require("./logic/formatDate");
10
- Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return __importDefault(formatDate_1).default; } });
11
- var capitalize_1 = require("./logic/capitalize");
6
+ exports.assets = exports.money_without_trailing_zeros = exports.color_to_hex = exports.json = exports.discountLabel = exports.date = exports.money = exports.truncate = exports.strip = exports.downcase = exports.remove = exports.capitalize = exports.upcase = exports.split = exports.concat = exports.compact = exports.where = exports.join = exports.find = exports.last = exports.size = exports.first = void 0;
7
+ var first_1 = require("./logic/array/first");
8
+ Object.defineProperty(exports, "first", { enumerable: true, get: function () { return __importDefault(first_1).default; } });
9
+ var size_1 = require("./logic/array/size");
10
+ Object.defineProperty(exports, "size", { enumerable: true, get: function () { return __importDefault(size_1).default; } });
11
+ var last_1 = require("./logic/array/last");
12
+ Object.defineProperty(exports, "last", { enumerable: true, get: function () { return __importDefault(last_1).default; } });
13
+ var find_1 = require("./logic/array/find");
14
+ Object.defineProperty(exports, "find", { enumerable: true, get: function () { return __importDefault(find_1).default; } });
15
+ var join_1 = require("./logic/array/join");
16
+ Object.defineProperty(exports, "join", { enumerable: true, get: function () { return __importDefault(join_1).default; } });
17
+ var where_1 = require("./logic/array/where");
18
+ Object.defineProperty(exports, "where", { enumerable: true, get: function () { return __importDefault(where_1).default; } });
19
+ var compact_1 = require("./logic/array/compact");
20
+ Object.defineProperty(exports, "compact", { enumerable: true, get: function () { return __importDefault(compact_1).default; } });
21
+ var concat_1 = require("./logic/array/concat");
22
+ Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return __importDefault(concat_1).default; } });
23
+ var split_1 = require("./logic/array/split");
24
+ Object.defineProperty(exports, "split", { enumerable: true, get: function () { return __importDefault(split_1).default; } });
25
+ var upcase_1 = require("./logic/strings/upcase");
26
+ Object.defineProperty(exports, "upcase", { enumerable: true, get: function () { return __importDefault(upcase_1).default; } });
27
+ var capitalize_1 = require("./logic/strings/capitalize");
12
28
  Object.defineProperty(exports, "capitalize", { enumerable: true, get: function () { return __importDefault(capitalize_1).default; } });
13
- var discountLabel_1 = require("./logic/discountLabel");
29
+ var remove_1 = require("./logic/strings/remove");
30
+ Object.defineProperty(exports, "remove", { enumerable: true, get: function () { return __importDefault(remove_1).default; } });
31
+ var downcase_1 = require("./logic/strings/downcase");
32
+ Object.defineProperty(exports, "downcase", { enumerable: true, get: function () { return __importDefault(downcase_1).default; } });
33
+ var strip_1 = require("./logic/strings/strip");
34
+ Object.defineProperty(exports, "strip", { enumerable: true, get: function () { return __importDefault(strip_1).default; } });
35
+ var truncate_1 = require("./logic/strings/truncate");
36
+ Object.defineProperty(exports, "truncate", { enumerable: true, get: function () { return __importDefault(truncate_1).default; } });
37
+ var money_with_currency_1 = require("./logic/money/money_with_currency");
38
+ Object.defineProperty(exports, "money", { enumerable: true, get: function () { return __importDefault(money_with_currency_1).default; } });
39
+ var formatDate_1 = require("./logic/data/formatDate");
40
+ Object.defineProperty(exports, "date", { enumerable: true, get: function () { return __importDefault(formatDate_1).default; } });
41
+ var discountLabel_1 = require("./logic/money/discountLabel");
14
42
  Object.defineProperty(exports, "discountLabel", { enumerable: true, get: function () { return __importDefault(discountLabel_1).default; } });
15
- var component_1 = require("./logic/component");
16
- Object.defineProperty(exports, "component", { enumerable: true, get: function () { return __importDefault(component_1).default; } });
43
+ var json_1 = require("./logic/json/json");
44
+ Object.defineProperty(exports, "json", { enumerable: true, get: function () { return __importDefault(json_1).default; } });
45
+ var color_to_hex_1 = require("./logic/colors/color_to_hex");
46
+ Object.defineProperty(exports, "color_to_hex", { enumerable: true, get: function () { return __importDefault(color_to_hex_1).default; } });
47
+ var money_without_trailing_zeros_1 = require("./logic/money/money_without_trailing_zeros");
48
+ Object.defineProperty(exports, "money_without_trailing_zeros", { enumerable: true, get: function () { return __importDefault(money_without_trailing_zeros_1).default; } });
49
+ var assets_1 = require("./logic/urls/assets");
50
+ Object.defineProperty(exports, "assets", { enumerable: true, get: function () { return __importDefault(assets_1).default; } });
@@ -0,0 +1 @@
1
+ export default function compact(array: any[]): any[];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = compact;
4
+ function compact(array) {
5
+ return Array.isArray(array) ? array.filter(Boolean) : [];
6
+ }
@@ -0,0 +1 @@
1
+ export default function concat(array: any[], ...args: any[]): any[];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = concat;
4
+ function concat(array, ...args) {
5
+ return Array.isArray(array) ? array.concat(...args) : [];
6
+ }
@@ -0,0 +1 @@
1
+ export default function find(arr: any[], key: string, value: any): any | undefined;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = find;
4
+ function find(arr, key, value) {
5
+ if (!Array.isArray(arr))
6
+ return undefined;
7
+ return arr.find((item) => item?.[key] === value);
8
+ }
@@ -0,0 +1 @@
1
+ export default function first<T>(arr: T[]): T | undefined;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = first;
4
+ function first(arr) {
5
+ return Array.isArray(arr) ? arr[0] : undefined;
6
+ }
@@ -0,0 +1 @@
1
+ export default function join(value: any[], separator?: string): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = join;
4
+ function join(value, separator = ',') {
5
+ if (!Array.isArray(value))
6
+ return '';
7
+ return value.join(separator);
8
+ }
@@ -0,0 +1 @@
1
+ export default function last(value: any[]): any;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = last;
4
+ function last(value) {
5
+ if (!Array.isArray(value))
6
+ return null;
7
+ return value[value.length - 1];
8
+ }
@@ -0,0 +1 @@
1
+ export default function size(value: any): number;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = size;
4
+ function size(value) {
5
+ if (Array.isArray(value) || typeof value === 'string') {
6
+ return value.length;
7
+ }
8
+ if (value && typeof value === 'object') {
9
+ return Object.keys(value).length;
10
+ }
11
+ return 0;
12
+ }
@@ -0,0 +1 @@
1
+ export default function split(str: string, delimiter: string): string[];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = split;
4
+ function split(str, delimiter) {
5
+ return (str || '').split(delimiter);
6
+ }
@@ -0,0 +1 @@
1
+ export default function where(arr: any[], key: string, value: any): any[];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = where;
4
+ function where(arr, key, value) {
5
+ if (!Array.isArray(arr))
6
+ return [];
7
+ return arr.filter((item) => item?.[key] === value);
8
+ }
@@ -0,0 +1 @@
1
+ export default function capitalize(str: string): string;
@@ -0,0 +1 @@
1
+ export default function color_to_hex(color: string): string;
@@ -0,0 +1,15 @@
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 = color_to_hex;
7
+ const color_1 = __importDefault(require("color"));
8
+ function color_to_hex(color) {
9
+ try {
10
+ return (0, color_1.default)(color).hex();
11
+ }
12
+ catch (err) {
13
+ return color;
14
+ }
15
+ }
@@ -0,0 +1 @@
1
+ export default function color_to_hex(color: string): string;
@@ -0,0 +1,15 @@
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 = color_to_hex;
7
+ const color_1 = __importDefault(require("color"));
8
+ function color_to_hex(color) {
9
+ try {
10
+ return (0, color_1.default)(color).hex();
11
+ }
12
+ catch (err) {
13
+ return color;
14
+ }
15
+ }
@@ -0,0 +1,2 @@
1
+ import nunjucks from "nunjucks";
2
+ export default function component(str: string, data: object, env: nunjucks.Environment): void;
@@ -0,0 +1 @@
1
+ export default function date(input: string | number | Date, locale?: string, options?: Intl.DateTimeFormatOptions): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = date;
4
+ function date(input, locale = "en-US", options) {
5
+ const date = new Date(input);
6
+ return isNaN(date.getTime()) ? "" : date.toLocaleDateString(locale, options);
7
+ }
@@ -0,0 +1 @@
1
+ export default function discountLabel(value: number): string;
@@ -0,0 +1 @@
1
+ export default function first<T>(arr: T[]): T | undefined;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = first;
4
+ function first(arr) {
5
+ return Array.isArray(arr) ? arr[0] : undefined;
6
+ }
@@ -0,0 +1 @@
1
+ export default function date(input: string | number | Date, locale?: string, options?: Intl.DateTimeFormatOptions): string;
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = formatDate;
4
- function formatDate(date, locale = 'en-US') {
5
- const d = typeof date === 'string' ? new Date(date) : date;
6
- if (isNaN(d.getTime()))
7
- return date;
8
- return d.toLocaleDateString(locale, { year: 'numeric', month: 'short', day: 'numeric' });
3
+ exports.default = date;
4
+ function date(input, locale = "en-US", options) {
5
+ const date = new Date(input);
6
+ return isNaN(date.getTime()) ? "" : date.toLocaleDateString(locale, options);
9
7
  }
@@ -0,0 +1 @@
1
+ export default function formatMoney(value: number, currency?: string): string;
@@ -0,0 +1,2 @@
1
+ import nunjucks from 'nunjucks';
2
+ export default function json(value: any): nunjucks.runtime.SafeString;
@@ -0,0 +1,15 @@
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 = json;
7
+ const nunjucks_1 = __importDefault(require("nunjucks"));
8
+ function json(value) {
9
+ try {
10
+ return new nunjucks_1.default.runtime.SafeString(JSON.stringify(value, null, 2));
11
+ }
12
+ catch {
13
+ return new nunjucks_1.default.runtime.SafeString('');
14
+ }
15
+ }
@@ -0,0 +1,2 @@
1
+ import nunjucks from 'nunjucks';
2
+ export default function json(value: any): nunjucks.runtime.SafeString;