@schorts/shared-kernel 2.6.0 โ†’ 3.1.0

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 (44) hide show
  1. package/CHANGELOG +12 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/criteria/criteria.js +2 -2
  4. package/dist/cjs/criteria/criteria.js.map +1 -1
  5. package/dist/cjs/criteria/index.js.map +1 -1
  6. package/dist/cjs/index.js +1 -0
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/pub-sub/index.js +3 -0
  9. package/dist/cjs/pub-sub/index.js.map +1 -0
  10. package/dist/cjs/pub-sub/publisher.js +3 -0
  11. package/dist/cjs/pub-sub/publisher.js.map +1 -0
  12. package/dist/cjs/pub-sub/subscription.js +3 -0
  13. package/dist/cjs/pub-sub/subscription.js.map +1 -0
  14. package/dist/esm/criteria/criteria.js +2 -2
  15. package/dist/esm/criteria/criteria.js.map +1 -1
  16. package/dist/esm/criteria/index.js.map +1 -1
  17. package/dist/esm/index.js +1 -0
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/pub-sub/index.js +3 -0
  20. package/dist/esm/pub-sub/index.js.map +1 -0
  21. package/dist/esm/pub-sub/publisher.js +3 -0
  22. package/dist/esm/pub-sub/publisher.js.map +1 -0
  23. package/dist/esm/pub-sub/subscription.js +3 -0
  24. package/dist/esm/pub-sub/subscription.js.map +1 -0
  25. package/dist/types/criteria/criteria.d.ts +5 -2
  26. package/dist/types/criteria/criteria.d.ts.map +1 -1
  27. package/dist/types/criteria/index.d.ts +0 -1
  28. package/dist/types/criteria/index.d.ts.map +1 -1
  29. package/dist/types/index.d.ts +1 -0
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/pub-sub/index.d.ts +3 -0
  32. package/dist/types/pub-sub/index.d.ts.map +1 -0
  33. package/dist/types/pub-sub/publisher.d.ts +4 -0
  34. package/dist/types/pub-sub/publisher.d.ts.map +1 -0
  35. package/dist/types/pub-sub/subscription.d.ts +7 -0
  36. package/dist/types/pub-sub/subscription.d.ts.map +1 -0
  37. package/package.json +6 -1
  38. package/src/criteria/criteria.ts +3 -8
  39. package/src/criteria/index.ts +0 -1
  40. package/src/index.ts +1 -0
  41. package/src/pub-sub/index.ts +2 -0
  42. package/src/pub-sub/publisher.ts +3 -0
  43. package/src/pub-sub/subscription.ts +6 -0
  44. package/src/criteria/filter-criterion.ts +0 -6
package/CHANGELOG CHANGED
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.1.0] - 2025-10-16
9
+
10
+ ### Added
11
+
12
+ - Added `pub-sub` module.
13
+
14
+ ## [3.0.0] - 2025-10-15
15
+
16
+ ### Changed
17
+
18
+ - Update how filters are stored in the `Criteria` to allow multiple filters over one field.
19
+
8
20
  ## [2.6.0] - 2025-10-14
9
21
 
10
22
  ### Added
package/README.md CHANGED
@@ -39,6 +39,11 @@ npm install @schorts/shared-kernel --save
39
39
  - **EventSubscriber:** Interface for subscribing to specific event types with clean, type-safe handlers.
40
40
  - **InMemoryEventStore:** Simple event store for tracking and replaying events, with retry metadata and bounded requeue support.
41
41
 
42
+ ### ๐Ÿ“ก Pub-Sub
43
+
44
+ - **Publisher:** Abstract interface for dispatching real-time events to external transports (e.g., Pusher, Socket.IO). Designed for event delivery, enabling type-safe, decoupled publishing from domain logic.
45
+ - **Subscription:** Client-side abstraction for subscribing to real-time channels and binding event handlers. Supports channel access and dynamic event routing.
46
+
42
47
  ### ๐Ÿงน Formatters
43
48
 
44
49
  - **PascalCamelToSnake:** Utility for converting PascalCase or camelCase to snake_case.
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Criteria = void 0;
4
4
  const exceptions_1 = require("./exceptions");
5
5
  class Criteria {
6
- filters = {};
6
+ filters = [];
7
7
  orders = [];
8
8
  limit;
9
9
  offset;
10
10
  where(field, operator, value) {
11
- this.filters[field] = { value, operator };
11
+ this.filters.push({ field, operator, value });
12
12
  return this;
13
13
  }
14
14
  orderBy(field, direction = "ASC") {
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../../src/criteria/criteria.ts"],"names":[],"mappings":";;;AAIA,6CAA6D;AAE7D,MAAa,QAAQ;IACV,OAAO,GAAoC,EAAE,CAAC;IAC9C,MAAM,GAAiB,EAAE,CAAC;IACnC,KAAK,CAAU;IACf,MAAM,CAAU;IAEhB,KAAK,CACH,KAAa,EACb,QAAkB,EAClB,KAAU;QAEV,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAa,EACb,YAAuB,KAAK;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,0BAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,2BAAc,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5CD,4BA4CC"}
1
+ {"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../../src/criteria/criteria.ts"],"names":[],"mappings":";;;AAGA,6CAA6D;AAE7D,MAAa,QAAQ;IACV,OAAO,GAA6D,EAAE,CAAC;IACvE,MAAM,GAAiB,EAAE,CAAC;IACnC,KAAK,CAAU;IACf,MAAM,CAAU;IAEhB,KAAK,CAAC,KAAa,EAAE,QAAkB,EAAE,KAAU;QACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAa,EACb,YAAuB,KAAK;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,0BAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,2BAAc,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxCD,4BAwCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/criteria/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/criteria/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6B"}
package/dist/cjs/index.js CHANGED
@@ -26,6 +26,7 @@ __exportStar(require("./i18n"), exports);
26
26
  __exportStar(require("./json-api"), exports);
27
27
  __exportStar(require("./messages"), exports);
28
28
  __exportStar(require("./models"), exports);
29
+ __exportStar(require("./pub-sub"), exports);
29
30
  __exportStar(require("./rbac"), exports);
30
31
  __exportStar(require("./result"), exports);
31
32
  __exportStar(require("./state-manager"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pub-sub/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../src/pub-sub/publisher.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/pub-sub/subscription.ts"],"names":[],"mappings":""}
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Criteria = void 0;
4
4
  const exceptions_1 = require("./exceptions");
5
5
  class Criteria {
6
- filters = {};
6
+ filters = [];
7
7
  orders = [];
8
8
  limit;
9
9
  offset;
10
10
  where(field, operator, value) {
11
- this.filters[field] = { value, operator };
11
+ this.filters.push({ field, operator, value });
12
12
  return this;
13
13
  }
14
14
  orderBy(field, direction = "ASC") {
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../../src/criteria/criteria.ts"],"names":[],"mappings":";;;AAIA,6CAA6D;AAE7D,MAAa,QAAQ;IACV,OAAO,GAAoC,EAAE,CAAC;IAC9C,MAAM,GAAiB,EAAE,CAAC;IACnC,KAAK,CAAU;IACf,MAAM,CAAU;IAEhB,KAAK,CACH,KAAa,EACb,QAAkB,EAClB,KAAU;QAEV,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAa,EACb,YAAuB,KAAK;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,0BAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,2BAAc,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5CD,4BA4CC"}
1
+ {"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../../src/criteria/criteria.ts"],"names":[],"mappings":";;;AAGA,6CAA6D;AAE7D,MAAa,QAAQ;IACV,OAAO,GAA6D,EAAE,CAAC;IACvE,MAAM,GAAiB,EAAE,CAAC;IACnC,KAAK,CAAU;IACf,MAAM,CAAU;IAEhB,KAAK,CAAC,KAAa,EAAE,QAAkB,EAAE,KAAU;QACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAa,EACb,YAAuB,KAAK;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,0BAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,2BAAc,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxCD,4BAwCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/criteria/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/criteria/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6B"}
package/dist/esm/index.js CHANGED
@@ -26,6 +26,7 @@ __exportStar(require("./i18n"), exports);
26
26
  __exportStar(require("./json-api"), exports);
27
27
  __exportStar(require("./messages"), exports);
28
28
  __exportStar(require("./models"), exports);
29
+ __exportStar(require("./pub-sub"), exports);
29
30
  __exportStar(require("./rbac"), exports);
30
31
  __exportStar(require("./result"), exports);
31
32
  __exportStar(require("./state-manager"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pub-sub/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../src/pub-sub/publisher.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/pub-sub/subscription.ts"],"names":[],"mappings":""}
@@ -1,9 +1,12 @@
1
- import { FilterCriterion } from "./filter-criterion";
2
1
  import { Order } from "./order";
3
2
  import { Operator } from "./operator";
4
3
  import { Direction } from "./direction";
5
4
  export declare class Criteria {
6
- readonly filters: Record<string, FilterCriterion>;
5
+ readonly filters: Array<{
6
+ field: string;
7
+ operator: Operator;
8
+ value: any;
9
+ }>;
7
10
  readonly orders: Array<Order>;
8
11
  limit?: number;
9
12
  offset?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../../src/criteria/criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAM;IACvD,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAM;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CACH,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,GAAG,GACT,QAAQ;IAMX,OAAO,CACL,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,SAAiB,GAC3B,QAAQ;IAMX,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAUrC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;CASxC"}
1
+ {"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../../src/criteria/criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAM;IAChF,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAM;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,QAAQ;IAM9D,OAAO,CACL,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,SAAiB,GAC3B,QAAQ;IAMX,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAUrC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;CASxC"}
@@ -1,6 +1,5 @@
1
1
  export type { Operator } from "./operator";
2
2
  export type { Order } from "./order";
3
- export type { FilterCriterion } from "./filter-criterion";
4
3
  export type { Direction } from "./direction";
5
4
  export { Criteria } from "./criteria";
6
5
  export * from "./exceptions";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/criteria/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/criteria/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,cAAc,CAAC"}
@@ -10,6 +10,7 @@ export * from "./i18n";
10
10
  export * from "./json-api";
11
11
  export * from "./messages";
12
12
  export * from "./models";
13
+ export * from "./pub-sub";
13
14
  export * from "./rbac";
14
15
  export * from "./result";
15
16
  export * from "./state-manager";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { Publisher } from "./publisher";
2
+ export type { Subscription } from "./subscription";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pub-sub/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface Publisher {
2
+ publish(channel: string, event: string, payload: any): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../src/pub-sub/publisher.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE"}
@@ -0,0 +1,7 @@
1
+ export interface Subscription {
2
+ connect(): void;
3
+ subscribe(channel: string, event: string, handler: (payload: any) => void): void;
4
+ unsubscribe(channel: string): void;
5
+ disconnect(): void;
6
+ }
7
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/pub-sub/subscription.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,IAAI,IAAI,CAAC;CACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schorts/shared-kernel",
3
- "version": "2.6.0",
3
+ "version": "3.1.0",
4
4
  "description": "A modular, type-safe foundation for building expressive, maintainable applications. This package provides core abstractions for domain modeling, HTTP integration, authentication, state management, and more โ€” designed to be framework-agnostic and highly extensible.",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -71,6 +71,11 @@
71
71
  "require": "./dist/cjs/models/index.js",
72
72
  "types": "./dist/types/models/index.d.ts"
73
73
  },
74
+ "./pub-sub": {
75
+ "import": "./dist/esm/pub-sub/index.js",
76
+ "require": "./dist/cjs/pub-sub/index.js",
77
+ "types": "./dist/types/pub-sub/index.d.ts"
78
+ },
74
79
  "./rbac": {
75
80
  "import": "./dist/esm/rbac/index.js",
76
81
  "require": "./dist/cjs/rbac/index.js",
@@ -1,21 +1,16 @@
1
- import { FilterCriterion } from "./filter-criterion";
2
1
  import { Order } from "./order";
3
2
  import { Operator } from "./operator";
4
3
  import { Direction } from "./direction";
5
4
  import { OffsetNotValid, LimitNotValid } from "./exceptions";
6
5
 
7
6
  export class Criteria {
8
- readonly filters: Record<string, FilterCriterion> = {};
7
+ readonly filters: Array<{ field: string; operator: Operator; value: any }> = [];
9
8
  readonly orders: Array<Order> = [];
10
9
  limit?: number;
11
10
  offset?: number;
12
11
 
13
- where(
14
- field: string,
15
- operator: Operator,
16
- value: any,
17
- ): Criteria {
18
- this.filters[field] = { value, operator };
12
+ where(field: string, operator: Operator, value: any): Criteria {
13
+ this.filters.push({ field, operator, value });
19
14
 
20
15
  return this;
21
16
  }
@@ -1,6 +1,5 @@
1
1
  export type { Operator } from "./operator";
2
2
  export type { Order } from "./order";
3
- export type { FilterCriterion } from "./filter-criterion";
4
3
  export type { Direction } from "./direction";
5
4
  export { Criteria } from "./criteria";
6
5
  export * from "./exceptions";
package/src/index.ts CHANGED
@@ -10,6 +10,7 @@ export * from "./i18n";
10
10
  export * from "./json-api";
11
11
  export * from "./messages";
12
12
  export * from "./models";
13
+ export * from "./pub-sub";
13
14
  export * from "./rbac";
14
15
  export * from "./result";
15
16
  export * from "./state-manager";
@@ -0,0 +1,2 @@
1
+ export type { Publisher } from "./publisher";
2
+ export type { Subscription } from "./subscription";
@@ -0,0 +1,3 @@
1
+ export interface Publisher {
2
+ publish(channel: string, event: string, payload: any): Promise<void>;
3
+ }
@@ -0,0 +1,6 @@
1
+ export interface Subscription {
2
+ connect(): void;
3
+ subscribe(channel: string, event: string, handler: (payload: any) => void): void;
4
+ unsubscribe(channel: string): void;
5
+ disconnect(): void;
6
+ }
@@ -1,6 +0,0 @@
1
- import { Operator } from "./operator";
2
-
3
- export type FilterCriterion = {
4
- value: any;
5
- operator: Operator;
6
- }