@ozdao/martyrs 0.2.557 → 0.2.559

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.
@@ -0,0 +1,79 @@
1
+ class Observer {
2
+ constructor() {
3
+ this.listeners = {};
4
+ }
5
+ subscribe(eventType, callback, once = false) {
6
+ if (!this.listeners[eventType]) {
7
+ this.listeners[eventType] = /* @__PURE__ */ new Map();
8
+ }
9
+ this.listeners[eventType].set(callback, { once });
10
+ }
11
+ async notify(eventType, data) {
12
+ if (this.listeners[eventType]) {
13
+ const promises = [];
14
+ const callbacksToRemove = [];
15
+ for (const [callback, { once }] of this.listeners[eventType]) {
16
+ const promise = Promise.resolve().then(() => callback(data)).catch((error) => {
17
+ console.error("Error executing callback:", error);
18
+ });
19
+ promises.push(promise);
20
+ if (once) {
21
+ callbacksToRemove.push(callback);
22
+ }
23
+ }
24
+ await Promise.all(promises);
25
+ for (const callback of callbacksToRemove) {
26
+ this.listeners[eventType].delete(callback);
27
+ if (this.listeners[eventType].size === 0) {
28
+ delete this.listeners[eventType];
29
+ }
30
+ }
31
+ }
32
+ }
33
+ remove(eventType, callback) {
34
+ if (this.listeners[eventType]?.has(callback)) {
35
+ this.listeners[eventType].delete(callback);
36
+ if (this.listeners[eventType].size === 0) {
37
+ delete this.listeners[eventType];
38
+ }
39
+ }
40
+ }
41
+ removeAll(eventType) {
42
+ if (eventType) {
43
+ delete this.listeners[eventType];
44
+ } else {
45
+ this.listeners = {};
46
+ }
47
+ }
48
+ }
49
+ const instances = /* @__PURE__ */ new Map();
50
+ class ObserverNamespaced {
51
+ constructor(namespace = "global") {
52
+ if (instances.has(namespace)) {
53
+ return instances.get(namespace);
54
+ }
55
+ const instance = new Observer();
56
+ instances.set(namespace, instance);
57
+ return instance;
58
+ }
59
+ // Статический метод для получения всех namespace'ов
60
+ static getNamespaces() {
61
+ return Array.from(instances.keys());
62
+ }
63
+ // Статический метод для очистки подписок в namespace
64
+ static clearNamespace(namespace) {
65
+ if (instances.has(namespace)) {
66
+ instances.get(namespace).removeAll();
67
+ }
68
+ }
69
+ // Статический метод для удаления namespace (полностью)
70
+ static removeNamespace(namespace) {
71
+ if (instances.has(namespace)) {
72
+ instances.get(namespace).removeAll();
73
+ instances.delete(namespace);
74
+ }
75
+ }
76
+ }
77
+ export {
78
+ ObserverNamespaced as O
79
+ };
@@ -1,5 +1,6 @@
1
1
  import { m as middlewareFactory } from "./authJwt-J1csaMWA.js";
2
2
  import { q as queryProcessorCore } from "./queryProcessor-CBQgZycY.js";
3
+ import { O as ObserverNamespaced } from "./core.observer-MZsqaE6F.js";
3
4
  import { L as LoggerNamespaced, C as CacheNamespaced } from "./core.logger-VRHh-WUW.js";
4
5
  class CRUDCore {
5
6
  constructor(crud) {
@@ -820,82 +821,6 @@ class CRUDPolicies {
820
821
  });
821
822
  }
822
823
  }
823
- class Observer {
824
- constructor() {
825
- this.listeners = {};
826
- }
827
- subscribe(eventType, callback, once = false) {
828
- if (!this.listeners[eventType]) {
829
- this.listeners[eventType] = /* @__PURE__ */ new Map();
830
- }
831
- this.listeners[eventType].set(callback, { once });
832
- }
833
- async notify(eventType, data) {
834
- if (this.listeners[eventType]) {
835
- const promises = [];
836
- const callbacksToRemove = [];
837
- for (const [callback, { once }] of this.listeners[eventType]) {
838
- const promise = Promise.resolve().then(() => callback(data)).catch((error) => {
839
- console.error("Error executing callback:", error);
840
- });
841
- promises.push(promise);
842
- if (once) {
843
- callbacksToRemove.push(callback);
844
- }
845
- }
846
- await Promise.all(promises);
847
- for (const callback of callbacksToRemove) {
848
- this.listeners[eventType].delete(callback);
849
- if (this.listeners[eventType].size === 0) {
850
- delete this.listeners[eventType];
851
- }
852
- }
853
- }
854
- }
855
- remove(eventType, callback) {
856
- if (this.listeners[eventType]?.has(callback)) {
857
- this.listeners[eventType].delete(callback);
858
- if (this.listeners[eventType].size === 0) {
859
- delete this.listeners[eventType];
860
- }
861
- }
862
- }
863
- removeAll(eventType) {
864
- if (eventType) {
865
- delete this.listeners[eventType];
866
- } else {
867
- this.listeners = {};
868
- }
869
- }
870
- }
871
- const instances = /* @__PURE__ */ new Map();
872
- class ObserverNamespaced {
873
- constructor(namespace = "global") {
874
- if (instances.has(namespace)) {
875
- return instances.get(namespace);
876
- }
877
- const instance = new Observer();
878
- instances.set(namespace, instance);
879
- return instance;
880
- }
881
- // Статический метод для получения всех namespace'ов
882
- static getNamespaces() {
883
- return Array.from(instances.keys());
884
- }
885
- // Статический метод для очистки подписок в namespace
886
- static clearNamespace(namespace) {
887
- if (instances.has(namespace)) {
888
- instances.get(namespace).removeAll();
889
- }
890
- }
891
- // Статический метод для удаления namespace (полностью)
892
- static removeNamespace(namespace) {
893
- if (instances.has(namespace)) {
894
- instances.get(namespace).removeAll();
895
- instances.delete(namespace);
896
- }
897
- }
898
- }
899
824
  class CRUDEvents {
900
825
  constructor(crud) {
901
826
  this.crud = crud;
@@ -1172,6 +1097,5 @@ class CRUD {
1172
1097
  }
1173
1098
  }
1174
1099
  export {
1175
- CRUD as C,
1176
- ObserverNamespaced as O
1100
+ CRUD as C
1177
1101
  };