@dnax/core 0.76.8 → 0.76.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnax/core",
3
- "version": "0.76.8",
3
+ "version": "0.76.10",
4
4
  "module": "index.ts",
5
5
  "type": "module",
6
6
  "bin": {},
@@ -37,6 +37,7 @@
37
37
  "joi": "18.0.2",
38
38
  "json-joy": "16.8.0",
39
39
  "jsonwebtoken": "^9.0.3",
40
+ "liquidjs": "^10.24.0",
40
41
  "mime-types": "^2.1.35",
41
42
  "moment": "^2.30.1",
42
43
  "mongodb": "7.0.0",
package/types/index.ts CHANGED
@@ -227,9 +227,9 @@ export type hooksCtx = (ctx: {
227
227
  filter?: any;
228
228
  result?: any | null | object | undefined;
229
229
  driver?: "mongodb" | "postgres";
230
- data?: object;
230
+ data?: any;
231
231
  params?: findParam;
232
- options?: {};
232
+ options?: object;
233
233
  count?: number;
234
234
  id?: string;
235
235
  ids?: string[];
@@ -250,7 +250,7 @@ export type beforeOperationCtx = (ctx: {
250
250
  filter?: any;
251
251
  result?: any | null | object | undefined;
252
252
  driver?: "mongodb" | "postgres";
253
- data?: object;
253
+ data?: any;
254
254
  params?: findParam;
255
255
  options?: {};
256
256
  count?: number;
package/utils/index.ts CHANGED
@@ -26,6 +26,9 @@ import type { SupportedCryptoAlgorithms } from "bun";
26
26
  //import {applyPatch} from "json-joy/lib/json-patch"
27
27
  import cleanDeep from "clean-deep";
28
28
 
29
+ import { Liquid } from "liquidjs";
30
+ const engineTemplate = new Liquid();
31
+
29
32
  function copy(data: object): object | any {
30
33
  return deepCopy(data);
31
34
  }
@@ -595,11 +598,70 @@ function getRecentDate<T extends Record<string, any>>(
595
598
  return { data: latestItem, date: latest };
596
599
  }
597
600
 
601
+ /**
602
+ * Compile et exécute un template Liquid avec les paramètres fournis
603
+ * @param {string} templateContent - Le contenu du template avec les variables {{variable}}
604
+ * @param {Object} params - Les paramètres à remplacer dans le template
605
+ * @returns {Promise<string>} - Le template compilé avec les valeurs remplacées
606
+ */
607
+ async function renderTemplate(templateContent: string, params: object = {}) {
608
+ try {
609
+ // Rendre le template avec les paramètres
610
+ const result = await engineTemplate.parseAndRender(templateContent, params);
611
+ return result;
612
+ } catch (error) {
613
+ console.error("Erreur lors du rendu du template:", error);
614
+ throw error;
615
+ }
616
+ }
617
+
618
+ // Version synchrone (si besoin)
619
+ function renderTemplateSync(templateContent: string, params: object = {}) {
620
+ try {
621
+ const result = engineTemplate.parseAndRenderSync(templateContent, params);
622
+ return result;
623
+ } catch (error) {
624
+ console.error(error);
625
+ throw error;
626
+ }
627
+ }
628
+
629
+ // eventBus.ts
630
+ type Handler<Payload = any> = (payload: Payload) => void | Promise<void>;
631
+
632
+ class EventBus<Events extends Record<string, any> = Record<string, any>> {
633
+ private listeners = new Map<keyof Events, Handler[]>();
634
+
635
+ on<K extends keyof Events>(event: K, handler: Handler<Events[K]>) {
636
+ const list = this.listeners.get(event) ?? [];
637
+ list.push(handler);
638
+ this.listeners.set(event, list);
639
+ }
640
+
641
+ off<K extends keyof Events>(event: K, handler: Handler<Events[K]>) {
642
+ const list = this.listeners.get(event);
643
+ if (!list) return;
644
+ this.listeners.set(
645
+ event,
646
+ list.filter((h) => h !== handler)
647
+ );
648
+ }
649
+
650
+ async emit<K extends keyof Events>(event: K, payload: Events[K]) {
651
+ const list = this.listeners.get(event);
652
+ if (!list) return;
653
+ for (const handler of list) {
654
+ await handler(payload);
655
+ }
656
+ }
657
+ }
658
+
598
659
  const contextError = ContextError;
599
660
  export {
600
661
  file,
601
662
  mime,
602
663
  dotJson,
664
+ EventBus,
603
665
  uuid,
604
666
  pick,
605
667
  password, // Hash and verify Password utils
@@ -635,4 +697,6 @@ export {
635
697
  getRecentDate,
636
698
  getPidUsage,
637
699
  cleanDeep,
700
+ renderTemplate,
701
+ renderTemplateSync,
638
702
  };