@matter/protocol 0.13.1-alpha.0-20250508-047aa0277 → 0.13.1-alpha.0-20250511-74ef153aa

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 (118) hide show
  1. package/dist/cjs/action/protocols.d.ts +59 -2
  2. package/dist/cjs/action/protocols.d.ts.map +1 -1
  3. package/dist/cjs/action/request/Read.d.ts +2 -2
  4. package/dist/cjs/action/request/Read.d.ts.map +1 -1
  5. package/dist/cjs/action/request/Read.js +4 -4
  6. package/dist/cjs/action/request/Read.js.map +1 -1
  7. package/dist/cjs/action/response/ReadResult.d.ts +6 -2
  8. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  9. package/dist/cjs/action/server/AttributeResponse.d.ts +46 -17
  10. package/dist/cjs/action/server/AttributeResponse.d.ts.map +1 -1
  11. package/dist/cjs/action/server/AttributeResponse.js +128 -110
  12. package/dist/cjs/action/server/AttributeResponse.js.map +2 -2
  13. package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts +36 -0
  14. package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts.map +1 -0
  15. package/dist/cjs/action/server/AttributeSubscriptionResponse.js +86 -0
  16. package/dist/cjs/action/server/AttributeSubscriptionResponse.js.map +6 -0
  17. package/dist/cjs/action/server/DataResponse.d.ts +45 -0
  18. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -0
  19. package/dist/cjs/action/server/DataResponse.js +69 -0
  20. package/dist/cjs/action/server/DataResponse.js.map +6 -0
  21. package/dist/cjs/action/server/EventResponse.d.ts +28 -0
  22. package/dist/cjs/action/server/EventResponse.d.ts.map +1 -0
  23. package/dist/cjs/action/server/EventResponse.js +318 -0
  24. package/dist/cjs/action/server/EventResponse.js.map +6 -0
  25. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  26. package/dist/cjs/action/server/ServerInteraction.js +15 -2
  27. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  28. package/dist/cjs/action/server/index.d.ts +3 -0
  29. package/dist/cjs/action/server/index.d.ts.map +1 -1
  30. package/dist/cjs/action/server/index.js +3 -0
  31. package/dist/cjs/action/server/index.js.map +1 -1
  32. package/dist/cjs/events/OccurrenceManager.d.ts +20 -11
  33. package/dist/cjs/events/OccurrenceManager.d.ts.map +1 -1
  34. package/dist/cjs/events/OccurrenceManager.js +113 -74
  35. package/dist/cjs/events/OccurrenceManager.js.map +1 -1
  36. package/dist/cjs/interaction/InteractionMessenger.d.ts +14 -2
  37. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  38. package/dist/cjs/interaction/InteractionMessenger.js +87 -3
  39. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  40. package/dist/cjs/interaction/index.d.ts +0 -1
  41. package/dist/cjs/interaction/index.d.ts.map +1 -1
  42. package/dist/cjs/interaction/index.js +0 -1
  43. package/dist/cjs/interaction/index.js.map +1 -1
  44. package/dist/cjs/peer/ControllerCommissioningFlow.js +1 -1
  45. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  46. package/dist/cjs/protocol/MessageExchange.js +11 -1
  47. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  48. package/dist/esm/action/protocols.d.ts +59 -2
  49. package/dist/esm/action/protocols.d.ts.map +1 -1
  50. package/dist/esm/action/request/Read.d.ts +2 -2
  51. package/dist/esm/action/request/Read.d.ts.map +1 -1
  52. package/dist/esm/action/request/Read.js +4 -4
  53. package/dist/esm/action/request/Read.js.map +1 -1
  54. package/dist/esm/action/response/ReadResult.d.ts +6 -2
  55. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  56. package/dist/esm/action/server/AttributeResponse.d.ts +46 -17
  57. package/dist/esm/action/server/AttributeResponse.d.ts.map +1 -1
  58. package/dist/esm/action/server/AttributeResponse.js +129 -113
  59. package/dist/esm/action/server/AttributeResponse.js.map +1 -1
  60. package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts +36 -0
  61. package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts.map +1 -0
  62. package/dist/esm/action/server/AttributeSubscriptionResponse.js +66 -0
  63. package/dist/esm/action/server/AttributeSubscriptionResponse.js.map +6 -0
  64. package/dist/esm/action/server/DataResponse.d.ts +45 -0
  65. package/dist/esm/action/server/DataResponse.d.ts.map +1 -0
  66. package/dist/esm/action/server/DataResponse.js +49 -0
  67. package/dist/esm/action/server/DataResponse.js.map +6 -0
  68. package/dist/esm/action/server/EventResponse.d.ts +28 -0
  69. package/dist/esm/action/server/EventResponse.d.ts.map +1 -0
  70. package/dist/esm/action/server/EventResponse.js +305 -0
  71. package/dist/esm/action/server/EventResponse.js.map +6 -0
  72. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  73. package/dist/esm/action/server/ServerInteraction.js +16 -3
  74. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  75. package/dist/esm/action/server/index.d.ts +3 -0
  76. package/dist/esm/action/server/index.d.ts.map +1 -1
  77. package/dist/esm/action/server/index.js +3 -0
  78. package/dist/esm/action/server/index.js.map +1 -1
  79. package/dist/esm/events/OccurrenceManager.d.ts +20 -11
  80. package/dist/esm/events/OccurrenceManager.d.ts.map +1 -1
  81. package/dist/esm/events/OccurrenceManager.js +117 -80
  82. package/dist/esm/events/OccurrenceManager.js.map +1 -1
  83. package/dist/esm/interaction/InteractionMessenger.d.ts +14 -2
  84. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  85. package/dist/esm/interaction/InteractionMessenger.js +87 -3
  86. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  87. package/dist/esm/interaction/index.d.ts +0 -1
  88. package/dist/esm/interaction/index.d.ts.map +1 -1
  89. package/dist/esm/interaction/index.js +0 -1
  90. package/dist/esm/interaction/index.js.map +1 -1
  91. package/dist/esm/peer/ControllerCommissioningFlow.js +1 -1
  92. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  93. package/dist/esm/protocol/MessageExchange.js +11 -1
  94. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  95. package/package.json +6 -6
  96. package/src/action/protocols.ts +68 -2
  97. package/src/action/request/Read.ts +2 -2
  98. package/src/action/response/ReadResult.ts +8 -1
  99. package/src/action/server/AttributeResponse.ts +145 -118
  100. package/src/action/server/AttributeSubscriptionResponse.ts +90 -0
  101. package/src/action/server/DataResponse.ts +70 -0
  102. package/src/action/server/EventResponse.ts +381 -0
  103. package/src/action/server/ServerInteraction.ts +18 -4
  104. package/src/action/server/index.ts +3 -0
  105. package/src/events/OccurrenceManager.ts +126 -100
  106. package/src/interaction/InteractionMessenger.ts +93 -8
  107. package/src/interaction/index.ts +0 -1
  108. package/src/peer/ControllerCommissioningFlow.ts +1 -1
  109. package/src/protocol/MessageExchange.ts +13 -1
  110. package/dist/cjs/interaction/ServerSubscription.d.ts +0 -116
  111. package/dist/cjs/interaction/ServerSubscription.d.ts.map +0 -1
  112. package/dist/cjs/interaction/ServerSubscription.js +0 -778
  113. package/dist/cjs/interaction/ServerSubscription.js.map +0 -6
  114. package/dist/esm/interaction/ServerSubscription.d.ts +0 -116
  115. package/dist/esm/interaction/ServerSubscription.d.ts.map +0 -1
  116. package/dist/esm/interaction/ServerSubscription.js +0 -778
  117. package/dist/esm/interaction/ServerSubscription.js.map +0 -6
  118. package/src/interaction/ServerSubscription.ts +0 -1038
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/DataResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAgB,MAAM,EAA2B,MAAM,QAAQ,CAAC;AAEvE,eAAO,MAAM,sBAAsB;;;;;;;;;;EAAwC,CAAC;AAC5E,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,MAQ1C,CAAC;AAEF,8BAAsB,YAAY,CAAC,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;;gBAQjF,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;IAKjD,SAAS,KAAK,IAAI,iBAEjB;IAED,SAAS,KAAK,OAAO,aAEpB;IAED;;OAEG;IACH,SAAS,KAAK,MAAM,WAMnB;IAED,QAAQ,CAAC,MAAM,EAAE;QACb;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;QAEf;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var DataResponse_exports = {};
20
+ __export(DataResponse_exports, {
21
+ DataResponse: () => DataResponse,
22
+ FallbackLimits: () => FallbackLimits,
23
+ WildcardPathFlagsCodec: () => WildcardPathFlagsCodec
24
+ });
25
+ module.exports = __toCommonJS(DataResponse_exports);
26
+ var import_model = require("#model");
27
+ var import_types = require("#types");
28
+ /**
29
+ * @license
30
+ * Copyright 2022-2025 Project CHIP Authors
31
+ * SPDX-License-Identifier: Apache-2.0
32
+ */
33
+ const WildcardPathFlagsCodec = (0, import_types.BitmapSchema)(import_types.WildcardPathFlagsBitmap);
34
+ const FallbackLimits = {
35
+ fabricScoped: false,
36
+ fabricSensitive: false,
37
+ readable: true,
38
+ readLevel: import_model.AccessLevel.View,
39
+ timed: false,
40
+ writable: true,
41
+ writeLevel: import_model.AccessLevel.Administer
42
+ };
43
+ class DataResponse {
44
+ // Configuration
45
+ #session;
46
+ #node;
47
+ // The node ID may be expensive to retrieve and is invariant so we cache it here
48
+ #cachedNodeId;
49
+ constructor(node, session) {
50
+ this.#node = node;
51
+ this.#session = session;
52
+ }
53
+ get node() {
54
+ return this.#node;
55
+ }
56
+ get session() {
57
+ return this.#session;
58
+ }
59
+ /**
60
+ * The node ID used to filter paths with node ID specified. Unsure if this is ever actually used.
61
+ */
62
+ get nodeId() {
63
+ if (this.#cachedNodeId === void 0) {
64
+ this.#cachedNodeId = (this.#session.fabric && this.#node.nodeIdFor(this.#session.fabric)) ?? import_types.NodeId.UNSPECIFIED_NODE_ID;
65
+ }
66
+ return this.#cachedNodeId;
67
+ }
68
+ }
69
+ //# sourceMappingURL=DataResponse.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/server/DataResponse.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,mBAA4B;AAC5B,mBAA8D;AAR9D;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,6BAAyB,2BAAa,oCAAuB;AACnE,MAAM,iBAAuC;AAAA,EAChD,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,WAAW,yBAAY;AAAA,EACvB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY,yBAAY;AAC5B;AAEO,MAAe,aAA6E;AAAA;AAAA,EAE/F;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EAEA,YAAY,MAAoB,SAAmB;AAC/C,SAAK,QAAQ;AACb,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAc,OAAO;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,SAAS;AACnB,QAAI,KAAK,kBAAkB,QAAW;AAClC,WAAK,iBACA,KAAK,SAAS,UAAU,KAAK,MAAM,UAAU,KAAK,SAAS,MAAM,MAAM,oBAAO;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAkBJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { NodeProtocol } from "#action/protocols.js";
7
+ import { Read } from "#action/request/Read.js";
8
+ import { ReadResult } from "#action/response/ReadResult.js";
9
+ import { AccessControl } from "#action/server/AccessControl.js";
10
+ import { DataResponse } from "#action/server/DataResponse.js";
11
+ /**
12
+ * Implements read of event data for Matter "read" and "subscribe" interactions.
13
+ *
14
+ * We collect all allowed event paths at first and then iterate over all events and use the ones matching to the paths.
15
+ *
16
+ * TODO - profile; ensure nested functions are properly JITed and/or inlined
17
+ */
18
+ export declare class EventResponse<SessionT extends AccessControl.Session = AccessControl.Session> extends DataResponse<SessionT> {
19
+ #private;
20
+ constructor(node: NodeProtocol, session: SessionT);
21
+ process({ eventFilters, eventRequests, isFabricFiltered, }: Read.Events): AsyncGenerator<ReadResult.Chunk, void, void>;
22
+ get counts(): {
23
+ status: number;
24
+ value: number;
25
+ existent: number;
26
+ };
27
+ }
28
+ //# sourceMappingURL=EventResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/EventResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwD,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAkB,MAAM,gCAAgC,CAAC;AAiB9E;;;;;;GAMG;AACH,qBAAa,aAAa,CACtB,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAChE,SAAQ,YAAY,CAAC,QAAQ,CAAC;;gBAmBhB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;IAI1C,OAAO,CAAC,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,GACnB,EAAE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IAsC7D,IAAI,MAAM;;;;MAMT;CAiRJ"}
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var EventResponse_exports = {};
20
+ __export(EventResponse_exports, {
21
+ EventResponse: () => EventResponse
22
+ });
23
+ module.exports = __toCommonJS(EventResponse_exports);
24
+ var import_AccessControl = require("#action/server/AccessControl.js");
25
+ var import_DataResponse = require("#action/server/DataResponse.js");
26
+ var import_general = require("#general");
27
+ var import_model = require("#model");
28
+ var import_types = require("#types");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2025 Project CHIP Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ const logger = import_general.Logger.get("EventResponse");
35
+ class EventResponse extends import_DataResponse.DataResponse {
36
+ // Normalized Event Filter to just our node-id
37
+ #eventMinVersion;
38
+ // The Fabric filtering is done when we read the data from OccurrenceManager, so we can determine the parameter once
39
+ #filteredForFabricIndex;
40
+ // The following state updates as data producers execute. This serves both to convey state between functions and as
41
+ // a cache between producers that touch the same endpoint and/or cluster
42
+ #currentEndpoint;
43
+ #currentCluster;
44
+ // Collected allowed and existing event paths to consider when reading events
45
+ #allowedEventPaths = /* @__PURE__ */ new Map();
46
+ // Count how many attribute status (on error) and attribute values (on success) we have emitted
47
+ #statusCount = 0;
48
+ #valueCount = 0;
49
+ constructor(node, session) {
50
+ super(node, session);
51
+ }
52
+ async *process({
53
+ eventFilters,
54
+ eventRequests,
55
+ isFabricFiltered
56
+ }) {
57
+ const nodeId = this.session.fabric === void 0 ? import_types.NodeId.UNSPECIFIED_NODE_ID : this.nodeId;
58
+ if (eventFilters !== void 0) {
59
+ for (const { nodeId: filterNodeId, eventMin } of eventFilters) {
60
+ if (filterNodeId === void 0 || filterNodeId === nodeId) {
61
+ this.#eventMinVersion = (0, import_types.EventNumber)(eventMin);
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ if (isFabricFiltered) {
67
+ this.#filteredForFabricIndex = this.session.fabric ?? import_types.FabricIndex.NO_FABRIC;
68
+ }
69
+ for (const path of eventRequests) {
70
+ if (path.endpointId === void 0 || path.clusterId === void 0 || path.eventId === void 0) {
71
+ this.#addWildcard(path);
72
+ } else {
73
+ const status = this.#addConcrete(path);
74
+ if (status !== void 0) {
75
+ yield [status];
76
+ this.#statusCount++;
77
+ }
78
+ }
79
+ }
80
+ for await (const data of this.#readAllowedEvents()) {
81
+ yield [data];
82
+ this.#valueCount++;
83
+ }
84
+ }
85
+ get counts() {
86
+ return {
87
+ status: this.#statusCount,
88
+ value: this.#valueCount,
89
+ existent: this.#allowedEventPaths.size
90
+ };
91
+ }
92
+ /** Guarded accessor for this.#currentEndpoint. This should never be undefined */
93
+ get #guardedCurrentEndpoint() {
94
+ if (this.#currentEndpoint === void 0) {
95
+ throw new import_general.InternalError("currentEndpoint is not set. Should never happen");
96
+ }
97
+ return this.#currentEndpoint;
98
+ }
99
+ /** Guarded accessor for this.#currentCluster. This should never be undefined */
100
+ get #guardedCurrentCluster() {
101
+ if (this.#currentCluster === void 0) {
102
+ throw new import_general.InternalError("currentCluster is not set. Should never happen");
103
+ }
104
+ return this.#currentCluster;
105
+ }
106
+ /**
107
+ * Validate a wildcard path and update the internal state.
108
+ */
109
+ #addWildcard(path) {
110
+ const { nodeId, clusterId, endpointId, eventId } = path;
111
+ if (clusterId === void 0 && eventId !== void 0) {
112
+ throw new import_types.StatusResponseError("Illegal read request with wildcard cluster ID", import_types.StatusCode.InvalidAction);
113
+ }
114
+ if (nodeId !== void 0 && nodeId !== this.nodeId) {
115
+ return;
116
+ }
117
+ if (endpointId === void 0) {
118
+ for (const endpoint2 of this.node) {
119
+ this.#addEndpointForWildcard(endpoint2, path);
120
+ }
121
+ return;
122
+ }
123
+ const endpoint = this.node[endpointId];
124
+ if (endpoint) {
125
+ return this.#addEndpointForWildcard(endpoint, path);
126
+ }
127
+ }
128
+ /**
129
+ * Validate a concrete path and update the internal state.
130
+ */
131
+ #addConcrete(path) {
132
+ const { nodeId, endpointId, clusterId, eventId } = path;
133
+ if (nodeId !== void 0 && this.nodeId !== nodeId) {
134
+ return this.#asStatus(path, import_types.Status.UnsupportedNode);
135
+ }
136
+ const endpoint = this.node[endpointId];
137
+ const cluster = endpoint?.[clusterId];
138
+ const event = cluster?.type.events[eventId];
139
+ let limits;
140
+ if (event === void 0) {
141
+ const modelEvent = this.node.matter.member(path.clusterId, [import_model.ElementTag.Cluster])?.member(path.eventId, [import_model.ElementTag.Event]);
142
+ if (modelEvent) {
143
+ limits = (0, import_AccessControl.AccessControl)(modelEvent).limits;
144
+ } else {
145
+ limits = import_DataResponse.FallbackLimits;
146
+ }
147
+ } else {
148
+ limits = event.limits;
149
+ }
150
+ const location = {
151
+ ...cluster?.location ?? {
152
+ path: import_model.DataModelPath.none,
153
+ endpoint: endpointId,
154
+ cluster: clusterId
155
+ },
156
+ owningFabric: this.session.fabric
157
+ };
158
+ const permission = this.session.authorityAt(limits.readLevel, location);
159
+ switch (permission) {
160
+ case import_AccessControl.AccessControl.Authority.Granted:
161
+ break;
162
+ case import_AccessControl.AccessControl.Authority.Unauthorized:
163
+ return this.#asStatus(path, import_types.Status.UnsupportedAccess);
164
+ case import_AccessControl.AccessControl.Authority.Restricted:
165
+ return this.#asStatus(path, import_types.Status.AccessRestricted);
166
+ default:
167
+ throw new import_general.InternalError(`Unsupported authorization state ${permission}`);
168
+ }
169
+ if (endpoint === void 0) {
170
+ return this.#asStatus(path, import_types.Status.UnsupportedEndpoint);
171
+ }
172
+ if (cluster === void 0) {
173
+ return this.#asStatus(path, import_types.Status.UnsupportedCluster);
174
+ }
175
+ if (event === void 0 || !cluster.type.events[event.id]) {
176
+ return this.#asStatus(path, import_types.Status.UnsupportedEvent);
177
+ }
178
+ if (this.#currentEndpoint !== endpoint) {
179
+ this.#currentEndpoint = endpoint;
180
+ this.#currentCluster = cluster;
181
+ } else if (this.#currentCluster !== cluster) {
182
+ this.#currentCluster = cluster;
183
+ }
184
+ this.#registerEventPath(path);
185
+ }
186
+ /**
187
+ * Starts new chunk or adds to current chunk all values from {@link endpoint} selected by {@link path}.
188
+ *
189
+ * Emits previous chunk if it exists and was not for this endpoint. This means that our chunk size is one endpoint
190
+ * worth of data, except for the initial error chunk if there are path errors.
191
+ *
192
+ * TODO - skip endpoints for which subject is unauthorized
193
+ */
194
+ #addEndpointForWildcard(endpoint, path) {
195
+ if (this.#currentEndpoint !== endpoint) {
196
+ this.#currentEndpoint = endpoint;
197
+ this.#currentCluster = void 0;
198
+ }
199
+ const { clusterId } = path;
200
+ if (clusterId === void 0) {
201
+ for (const cluster of endpoint) {
202
+ this.#addClusterForWildcard(cluster, { ...path, endpointId: endpoint.id });
203
+ }
204
+ } else {
205
+ const cluster = endpoint[clusterId];
206
+ if (cluster !== void 0) {
207
+ this.#addClusterForWildcard(cluster, { ...path, endpointId: endpoint.id });
208
+ }
209
+ }
210
+ }
211
+ /**
212
+ * Read values from a specific {@link cluster} for a wildcard path.
213
+ *
214
+ * Depends on state initialized by {@link #addEndpointForWildcard}.
215
+ *
216
+ * TODO - skip endpoints for which subject is unauthorized as optimization
217
+ */
218
+ #addClusterForWildcard(cluster, path) {
219
+ if (this.#currentCluster !== cluster) {
220
+ this.#currentCluster = cluster;
221
+ }
222
+ const { eventId } = path;
223
+ if (eventId === void 0) {
224
+ for (const event of cluster.type.events) {
225
+ this.#addEventForWildcard(event, {
226
+ ...path,
227
+ clusterId: cluster.type.id
228
+ });
229
+ }
230
+ } else {
231
+ const event = cluster.type.events[eventId];
232
+ if (event !== void 0) {
233
+ this.#addEventForWildcard(event, {
234
+ ...path,
235
+ clusterId: cluster.type.id
236
+ });
237
+ }
238
+ }
239
+ }
240
+ /**
241
+ * Read values from a specific {@link event} for a wildcard path.
242
+ *
243
+ * Depends on state initialized by {@link #addClusterForWildcard}.
244
+ */
245
+ #addEventForWildcard(event, path) {
246
+ if (!this.#guardedCurrentCluster.type.events[event.id]) {
247
+ return;
248
+ }
249
+ if (this.session.authorityAt(event.limits.readLevel, this.#guardedCurrentCluster.location) !== import_AccessControl.AccessControl.Authority.Granted) {
250
+ return;
251
+ }
252
+ this.#registerEventPath({ ...path, eventId: event.id });
253
+ }
254
+ #createEventKey(path) {
255
+ const { endpointId, clusterId, eventId } = path;
256
+ return `${endpointId}:${clusterId}:${eventId}`;
257
+ }
258
+ #registerEventPath(path) {
259
+ const { eventId } = path;
260
+ this.#allowedEventPaths.set(
261
+ this.#createEventKey({
262
+ ...path,
263
+ endpointId: this.#guardedCurrentEndpoint.id,
264
+ clusterId: this.#guardedCurrentCluster.type.id,
265
+ eventId
266
+ }),
267
+ this.#guardedCurrentCluster.type.events[eventId].tlv
268
+ );
269
+ }
270
+ async *#readAllowedEvents() {
271
+ for await (const event of this.node.eventHandler.get(this.#eventMinVersion)) {
272
+ const tlv = this.#allowedEventPaths.get(this.#createEventKey(event));
273
+ if (tlv === void 0) {
274
+ continue;
275
+ }
276
+ if (this.#filteredForFabricIndex !== void 0) {
277
+ const { payload } = event;
278
+ if (!(0, import_general.isObject)(payload)) {
279
+ continue;
280
+ }
281
+ const { fabricIndex } = payload;
282
+ if (fabricIndex !== void 0 && fabricIndex !== this.#filteredForFabricIndex) {
283
+ continue;
284
+ }
285
+ }
286
+ yield this.#asValue(event, tlv);
287
+ }
288
+ }
289
+ /**
290
+ * Add a status value.
291
+ */
292
+ #asStatus(path, status) {
293
+ logger.debug(`Error reading event ${this.node.inspectPath(path)}: Status=${import_types.StatusCode[status]}(${status})`);
294
+ const report = {
295
+ kind: "event-status",
296
+ path,
297
+ status
298
+ };
299
+ return report;
300
+ }
301
+ /**
302
+ * Add event values as separate entries to the result.
303
+ */
304
+ #asValue(event, tlv) {
305
+ const { number, epochTimestamp: timestamp, priority, payload: value, endpointId, clusterId, eventId } = event;
306
+ const report = {
307
+ kind: "event-value",
308
+ path: { endpointId, clusterId, eventId },
309
+ number,
310
+ priority,
311
+ timestamp,
312
+ value,
313
+ tlv
314
+ };
315
+ return report;
316
+ }
317
+ }
318
+ //# sourceMappingURL=EventResponse.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/server/EventResponse.ts"],
4
+ "mappings": "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",
5
+ "names": ["endpoint"]
6
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ServerInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/server/ServerInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CACzF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAIrB,IAAI,EAAE,YAAY;IAIvB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,UAAU;IAUzD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;IAKpE,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAKxE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;CAI9E"}
1
+ {"version":3,"file":"ServerInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/server/ServerInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAOhE;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CACzF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAIrB,IAAI,EAAE,YAAY;IAIvB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,UAAU;IAqBzD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;IAKpE,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAKxE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;CAI9E"}
@@ -22,6 +22,7 @@ __export(ServerInteraction_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(ServerInteraction_exports);
24
24
  var import_Read = require("#action/request/Read.js");
25
+ var import_EventResponse = require("#action/server/EventResponse.js");
25
26
  var import_general = require("#general");
26
27
  var import_AttributeResponse = require("./AttributeResponse.js");
27
28
  /**
@@ -29,15 +30,27 @@ var import_AttributeResponse = require("./AttributeResponse.js");
29
30
  * Copyright 2022-2025 Project CHIP Authors
30
31
  * SPDX-License-Identifier: Apache-2.0
31
32
  */
33
+ const logger = import_general.Logger.get("ServerInteraction");
32
34
  class ServerInteraction {
33
35
  #node;
34
36
  constructor(node) {
35
37
  this.#node = node;
36
38
  }
37
39
  async *read(request, session) {
38
- if (import_Read.Read.isAttribute(request)) {
39
- yield* new import_AttributeResponse.AttributeResponse(this.#node, session, request);
40
+ let readInfo = "";
41
+ if (import_Read.Read.containsAttribute(request)) {
42
+ const attributeReader = new import_AttributeResponse.AttributeResponse(this.#node, session);
43
+ yield* attributeReader.process(request);
44
+ const { existent, status, value } = attributeReader.counts;
45
+ readInfo = `${existent} matching attributes (${status ? `${status} status, ` : ""}${value ? `${value} values` : ""})`;
40
46
  }
47
+ if (import_Read.Read.containsEvent(request)) {
48
+ const eventReader = new import_EventResponse.EventResponse(this.#node, session);
49
+ yield* eventReader.process(request);
50
+ const { existent, status, value } = eventReader.counts;
51
+ readInfo += `${readInfo.length > 0 ? ", " : ""}${existent} matching events (${status ? `${status} status, ` : ""}${value ? `${value} values` : ""})`;
52
+ }
53
+ logger.debug(`Read request resolved to ${readInfo}`);
41
54
  }
42
55
  subscribe(_request, _session) {
43
56
  throw new import_general.NotImplementedError();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/server/ServerInteraction.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,kBAAqB;AAQrB,qBAAoC;AACpC,+BAAkC;AAlBlC;AAAA;AAAA;AAAA;AAAA;AA8BO,MAAM,kBAEb;AAAA,EACI;AAAA,EAEA,YAAY,MAAoB;AAC5B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO,KAAK,SAAe,SAA+B;AAGtD,QAAI,iBAAK,YAAY,OAAO,GAAG;AAC3B,aAAO,IAAI,2CAAkB,KAAK,OAAO,SAAS,OAAO;AAAA,IAC7D;AAAA,EAGJ;AAAA,EAEA,UAAU,UAAqB,UAAsC;AAEjE,UAAM,IAAI,mCAAoB;AAAA,EAClC;AAAA,EAEA,MAAuB,UAAa,UAAqC;AAErE,UAAM,IAAI,mCAAoB;AAAA,EAClC;AAAA,EAEA,OAAyB,UAAa,UAAsC;AAExE,UAAM,IAAI,mCAAoB;AAAA,EAClC;AACJ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,kBAAqB;AAQrB,2BAA8B;AAC9B,qBAA4C;AAC5C,+BAAkC;AAnBlC;AAAA;AAAA;AAAA;AAAA;AAqBA,MAAM,SAAS,sBAAO,IAAI,mBAAmB;AAYtC,MAAM,kBAEb;AAAA,EACI;AAAA,EAEA,YAAY,MAAoB;AAC5B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO,KAAK,SAAe,SAA+B;AAGtD,QAAI,WAAW;AACf,QAAI,iBAAK,kBAAkB,OAAO,GAAG;AACjC,YAAM,kBAAkB,IAAI,2CAAkB,KAAK,OAAO,OAAO;AACjE,aAAO,gBAAgB,QAAQ,OAAO;AAEtC,YAAM,EAAE,UAAU,QAAQ,MAAM,IAAI,gBAAgB;AACpD,iBAAW,GAAG,QAAQ,yBAAyB,SAAS,GAAG,MAAM,cAAc,EAAE,GAAG,QAAQ,GAAG,KAAK,YAAY,EAAE;AAAA,IACtH;AAEA,QAAI,iBAAK,cAAc,OAAO,GAAG;AAC7B,YAAM,cAAc,IAAI,mCAAc,KAAK,OAAO,OAAO;AACzD,aAAO,YAAY,QAAQ,OAAO;AAClC,YAAM,EAAE,UAAU,QAAQ,MAAM,IAAI,YAAY;AAChD,kBAAY,GAAG,SAAS,SAAS,IAAI,OAAO,EAAE,GAAG,QAAQ,qBAAqB,SAAS,GAAG,MAAM,cAAc,EAAE,GAAG,QAAQ,GAAG,KAAK,YAAY,EAAE;AAAA,IACrJ;AACA,WAAO,MAAM,4BAA4B,QAAQ,EAAE;AAAA,EACvD;AAAA,EAEA,UAAU,UAAqB,UAAsC;AAEjE,UAAM,IAAI,mCAAoB;AAAA,EAClC;AAAA,EAEA,MAAuB,UAAa,UAAqC;AAErE,UAAM,IAAI,mCAAoB;AAAA,EAClC;AAAA,EAEA,OAAyB,UAAa,UAAsC;AAExE,UAAM,IAAI,mCAAoB;AAAA,EAClC;AACJ;",
5
5
  "names": []
6
6
  }
@@ -5,5 +5,8 @@
5
5
  */
6
6
  export * from "./AccessControl.js";
7
7
  export * from "./AttributeResponse.js";
8
+ export * from "./AttributeSubscriptionResponse.js";
9
+ export * from "./DataResponse.js";
10
+ export * from "./EventResponse.js";
8
11
  export * from "./ServerInteraction.js";
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/action/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/action/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -17,6 +17,9 @@ var server_exports = {};
17
17
  module.exports = __toCommonJS(server_exports);
18
18
  __reExport(server_exports, require("./AccessControl.js"), module.exports);
19
19
  __reExport(server_exports, require("./AttributeResponse.js"), module.exports);
20
+ __reExport(server_exports, require("./AttributeSubscriptionResponse.js"), module.exports);
21
+ __reExport(server_exports, require("./DataResponse.js"), module.exports);
22
+ __reExport(server_exports, require("./EventResponse.js"), module.exports);
20
23
  __reExport(server_exports, require("./ServerInteraction.js"), module.exports);
21
24
  /**
22
25
  * @license
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/server/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,+BANd;AAOA,2BAAc,mCAPd;AAQA,2BAAc,mCARd;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,+BANd;AAOA,2BAAc,mCAPd;AAQA,2BAAc,+CARd;AASA,2BAAc,8BATd;AAUA,2BAAc,+BAVd;AAWA,2BAAc,mCAXd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -3,8 +3,8 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Construction, MaybePromise } from "#general";
7
- import { FabricIndex, TlvEventFilter, TlvEventPath, TypeFromSchema } from "#types";
6
+ import { Construction, MaybePromise, Observable } from "#general";
7
+ import { EventNumber, FabricIndex, TlvEventFilter, TlvEventPath, TypeFromSchema } from "#types";
8
8
  import { EventStore } from "./EventStore.js";
9
9
  import { NumberedOccurrence, Occurrence } from "./Occurrence.js";
10
10
  export interface OccurrenceManagerContext {
@@ -27,8 +27,26 @@ export declare class OccurrenceManager {
27
27
  get construction(): Construction<OccurrenceManager>;
28
28
  static create(context: OccurrenceManagerContext): Promise<OccurrenceManager>;
29
29
  constructor({ store, bufferConfig }: OccurrenceManagerContext);
30
+ get added(): Observable<[occurrence: NumberedOccurrence], void>;
30
31
  clear(): Promise<void>;
32
+ /**
33
+ * Query the event store for events matching the given path and filters.
34
+ * @deprecated
35
+ */
31
36
  query(eventPath: TypeFromSchema<typeof TlvEventPath>, filters?: TypeFromSchema<typeof TlvEventFilter>[], filterForFabricIndex?: FabricIndex): MaybePromise<NumberedOccurrence[]>;
37
+ /**
38
+ * Return an iterator over all occurrences in the store that are bigger or equal to the minimum eventNumber,
39
+ * if provided.
40
+ */
41
+ get(eventMin?: EventNumber): AsyncGenerator<{
42
+ number: EventNumber;
43
+ endpointId: import("#types").EndpointNumber;
44
+ clusterId: import("#types").ClusterId;
45
+ eventId: import("#types").EventId;
46
+ epochTimestamp: number;
47
+ priority: import("#types").EventPriority;
48
+ payload: unknown;
49
+ }, void, unknown>;
32
50
  close(): MaybePromise<void>;
33
51
  add(occurrence: Occurrence): MaybePromise<NumberedOccurrence>;
34
52
  }
@@ -48,15 +66,6 @@ export declare namespace OccurrenceManager {
48
66
  * {@link minimumEventAllowance}.
49
67
  */
50
68
  maxEventAllowance: number;
51
- /**
52
- * Minimum allowances by priority. This ensures a minimum number of events for each priority avoid LRU
53
- * harvesting.
54
- */
55
- minPriorityEventAllowance: {
56
- critical: number;
57
- info: number;
58
- debug: number;
59
- };
60
69
  }
61
70
  const DefaultBufferConfig: BufferConfig;
62
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OccurrenceManager.d.ts","sourceRoot":"","sources":["../../../src/events/OccurrenceManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EAMZ,YAAY,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAGH,WAAW,EAEX,cAAc,EACd,YAAY,EACZ,cAAc,EACjB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,UAAU,EAAqB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,UAAU,CAAC;IAElB,YAAY,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;;IAgB1B,IAAI,YAAY,oCAEf;WAEY,MAAM,CAAC,OAAO,EAAE,wBAAwB;gBAIzC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,wBAAwB;IAoCvD,KAAK;IASX,KAAK,CACD,SAAS,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,EAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,EACjD,oBAAoB,CAAC,EAAE,WAAW,GACnC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAuFrC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;IAI3B,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,kBAAkB,CAAC;CAmEhE;AAQD,yBAAiB,iBAAiB,CAAC;IAC/B;;OAEG;IACH,UAAiB,YAAY;QACzB;;WAEG;QACH,iBAAiB,EAAE,MAAM,CAAC;QAE1B;;;;;WAKG;QACH,iBAAiB,EAAE,MAAM,CAAC;QAE1B;;;WAGG;QACH,yBAAyB,EAAE;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACjB,CAAC;KACL;IAEM,MAAM,mBAAmB,EAAE,YAQjC,CAAC;CACL"}
1
+ {"version":3,"file":"OccurrenceManager.d.ts","sourceRoot":"","sources":["../../../src/events/OccurrenceManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EAOZ,YAAY,EACZ,UAAU,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAoB,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAClH,OAAO,EAAE,UAAU,EAAqB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,UAAU,CAAC;IAElB,YAAY,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;;IAc1B,IAAI,YAAY,oCAEf;WAEY,MAAM,CAAC,OAAO,EAAE,wBAAwB;gBAIzC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,wBAAwB;IAgC7D,IAAI,KAAK,uDAER;IAEK,KAAK;IA4CX;;;OAGG;IACH,KAAK,CACD,SAAS,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,EAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,EACjD,oBAAoB,CAAC,EAAE,WAAW,GACnC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAmFrC;;;OAGG;IACI,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW;;;;;;;;;IA8BjC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;IAI3B,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,kBAAkB,CAAC;CAqDhE;AAED,yBAAiB,iBAAiB,CAAC;IAC/B;;OAEG;IACH,UAAiB,YAAY;QACzB;;WAEG;QACH,iBAAiB,EAAE,MAAM,CAAC;QAE1B;;;;;WAKG;QACH,iBAAiB,EAAE,MAAM,CAAC;KAC7B;IAEM,MAAM,mBAAmB,EAAE,YAGjC,CAAC;CACL"}