@matter/node 0.15.2-alpha.0-20250718-7e661c331 → 0.15.2-alpha.0-20250719-e4aeb457c
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/dist/cjs/behaviors/service-area/ServiceAreaServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/service-area/ServiceAreaServer.js +41 -23
- package/dist/cjs/behaviors/service-area/ServiceAreaServer.js.map +1 -1
- package/dist/esm/behaviors/service-area/ServiceAreaServer.d.ts.map +1 -1
- package/dist/esm/behaviors/service-area/ServiceAreaServer.js +41 -23
- package/dist/esm/behaviors/service-area/ServiceAreaServer.js.map +1 -1
- package/package.json +7 -7
- package/src/behaviors/service-area/ServiceAreaServer.ts +49 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceAreaServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/service-area/ServiceAreaServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAyB,YAAY,EAAE,MAAM,UAAU,CAAC;AAI/D,QAAA,MAAM,eAAe,4TAA4F,CAAC;AAElH,KAAK,+BAA+B,GAAG;IACnC,MAAM,EAAE,WAAW,CAAC,mBAAmB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;;IAC7C,UAAU,IAAI,YAAY;
|
|
1
|
+
{"version":3,"file":"ServiceAreaServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/service-area/ServiceAreaServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAyB,YAAY,EAAE,MAAM,UAAU,CAAC;AAI/D,QAAA,MAAM,eAAe,4TAA4F,CAAC;AAElH,KAAK,+BAA+B,GAAG;IACnC,MAAM,EAAE,WAAW,CAAC,mBAAmB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;;IAC7C,UAAU,IAAI,YAAY;IAqJnC;;;;;;;;OAQG;IACM,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC;IAmBjH,SAAS,CAAC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,kBAAkB,GAAG,+BAA+B;IAuBhH,SAAS,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,gBAAgB;IAmB3G,yBAAyB,CAAC,MAAM,EAAE,MAAM;IAexC;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM;CAczC;AAED,yBAAiB,qBAAqB,CAAC;IACpB,MAAM,kBAAkB,EAAE;QACrC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,kBAAkB,GAAG,+BAA+B,CAAC;QACvG,qBAAqB,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;KACrG,CAAC;CACL;;AAID,qBAAa,iBAAkB,SAAQ,sBAA4B;CAAG"}
|
|
@@ -36,6 +36,8 @@ class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
36
36
|
initialize() {
|
|
37
37
|
this.#assertSupportedAreas(this.state.supportedAreas);
|
|
38
38
|
this.reactTo(this.events.supportedAreas$Changing, this.#assertSupportedAreas);
|
|
39
|
+
this.#assertSupportedMaps(this.state.supportedMaps);
|
|
40
|
+
this.reactTo(this.events.supportedMaps$Changing, this.#assertSupportedMaps);
|
|
39
41
|
this.#assertSelectedAreas(this.state.selectedAreas);
|
|
40
42
|
this.reactTo(this.events.selectedAreas$Changing, this.#assertSelectedAreas);
|
|
41
43
|
if (this.state.currentArea !== void 0 && this.events.currentArea$Changing !== void 0) {
|
|
@@ -57,35 +59,54 @@ class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
|
-
#
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
throw new import_types.ValidationError(`Area ${areaId} has no location or landmark info`);
|
|
62
|
+
#assertSupportedMaps(maps) {
|
|
63
|
+
if (maps.length === 0) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const mapIds = /* @__PURE__ */ new Set();
|
|
67
|
+
const mapNames = /* @__PURE__ */ new Set();
|
|
68
|
+
for (const { mapId, name } of maps) {
|
|
69
|
+
if (mapIds.has(mapId)) {
|
|
70
|
+
throw new import_types.ValidationError(`MapID ${mapId} is not unique`);
|
|
70
71
|
}
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
if (locationName === "" && floorNumber === null && areaType === null && landmarkInfo === null) {
|
|
74
|
-
throw new import_types.ValidationError(`Area ${areaId} has no location info`);
|
|
75
|
-
}
|
|
72
|
+
if (mapNames.has(name)) {
|
|
73
|
+
throw new import_types.ValidationError(`MapName "${name}" is not unique`);
|
|
76
74
|
}
|
|
77
|
-
|
|
75
|
+
mapIds.add(mapId);
|
|
76
|
+
mapNames.add(name);
|
|
78
77
|
}
|
|
78
|
+
}
|
|
79
|
+
#assertSupportedAreas(areas) {
|
|
80
|
+
const areaIds = /* @__PURE__ */ new Set();
|
|
79
81
|
if (areas.length > 0) {
|
|
82
|
+
for (const { areaId, areaInfo } of areas) {
|
|
83
|
+
if (areaIds.has(areaId)) {
|
|
84
|
+
throw new import_types.ValidationError(`AreaID ${areaId} is not unique`);
|
|
85
|
+
}
|
|
86
|
+
const { locationInfo, landmarkInfo } = areaInfo;
|
|
87
|
+
if (locationInfo === null && landmarkInfo === null) {
|
|
88
|
+
throw new import_types.ValidationError(`Area ${areaId} has no location or landmark info`);
|
|
89
|
+
}
|
|
90
|
+
if (locationInfo !== null) {
|
|
91
|
+
const { locationName, floorNumber, areaType } = locationInfo;
|
|
92
|
+
if (locationName === "" && floorNumber === null && areaType === null && landmarkInfo === null) {
|
|
93
|
+
throw new import_types.ValidationError(`Area ${areaId} has no location info`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
areaIds.add(areaId);
|
|
97
|
+
}
|
|
80
98
|
const mapIds = /* @__PURE__ */ new Set();
|
|
81
99
|
for (let i = 0; i < areas.length; i++) {
|
|
82
|
-
const
|
|
83
|
-
mapIds.add(
|
|
100
|
+
const { areaId, mapId, areaInfo } = areas[i];
|
|
101
|
+
mapIds.add(mapId);
|
|
84
102
|
for (let j = i + 1; j < areas.length; j++) {
|
|
85
103
|
const otherArea = areas[j];
|
|
86
|
-
if (
|
|
104
|
+
if (otherArea.mapId !== mapId) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if ((0, import_general.isDeepEqual)(areaInfo, otherArea.areaInfo)) {
|
|
87
108
|
throw new import_types.ValidationError(
|
|
88
|
-
`Areas must have a unique AreaInfo field, but area ${
|
|
109
|
+
`Areas must have a unique AreaInfo field, but area ${areaId} and area ${otherArea.areaId} are equal`
|
|
89
110
|
);
|
|
90
111
|
}
|
|
91
112
|
}
|
|
@@ -94,9 +115,6 @@ class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
94
115
|
if (mapIds.has(null)) {
|
|
95
116
|
throw new import_types.ValidationError(`Areas must not have a null mapId when supportedMaps is defined`);
|
|
96
117
|
}
|
|
97
|
-
if (mapIds.size !== areas.length) {
|
|
98
|
-
throw new import_types.ValidationError(`Areas must have a unique mapId`);
|
|
99
|
-
}
|
|
100
118
|
} else {
|
|
101
119
|
if (!mapIds.has(null) || mapIds.size > 1) {
|
|
102
120
|
throw new import_types.ValidationError(`Areas must have a null mapId when supportedMaps is empty`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/behaviors/service-area/ServiceAreaServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAA4B;AAC5B,qBAAoD;AACpD,mBAAgC;AAChC,iCAAoC;AATpC;AAAA;AAAA;AAAA;AAAA;AAWA,MAAM,kBAAkB,+CAAoB,KAAK,gCAAY,QAAQ,MAAM,gCAAY,QAAQ,iBAAiB;AAuBzG,MAAM,8BAA8B,gBAAgB;AAAA,EAC9C,aAA2B;AAChC,SAAK,sBAAsB,KAAK,MAAM,cAAc;AACpD,SAAK,QAAQ,KAAK,OAAO,yBAAyB,KAAK,qBAAqB;AAC5E,SAAK,qBAAqB,KAAK,MAAM,aAAa;AAClD,SAAK,QAAQ,KAAK,OAAO,wBAAwB,KAAK,oBAAoB;AAC1E,QAAI,KAAK,MAAM,gBAAgB,UAAa,KAAK,OAAO,yBAAyB,QAAW;AACxF,WAAK,mBAAmB,KAAK,MAAM,WAAW;AAC9C,WAAK,QAAQ,KAAK,OAAO,sBAAsB,KAAK,kBAAkB;AAAA,IAC1E;AACA,QAAI,KAAK,MAAM,aAAa,QAAW;AACnC,WAAK,gBAAgB,KAAK,MAAM,QAAQ;AACxC,WAAK,QAAQ,KAAK,OAAO,mBAAmB,KAAK,eAAe;AAAA,IACpE;AACA,QAAI,KAAK,MAAM,gBAAgB,UAAa,KAAK,MAAM,qBAAqB,QAAW;AACnF,UAAI,KAAK,MAAM,gBAAgB,MAAM;AACjC,aAAK,MAAM,mBAAmB;AAAA,MAClC;AACA,UAAI,KAAK,OAAO,6BAA6B,QAAW;AAKpD,aAAK,OAAO,yBAAyB,MAAM,aAAa,CAAC,UAAU,aAAa;AAC5E,iBAAO,aAAa,QAChB,aAAa,KACb,aAAa,QACb,aAAa,KACb,WAAW,WACT,QACA;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,sBAAsB,OAA2B;AAE7C,UAAM,UAAU,oBAAI,IAAY;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["ServiceAreaBaseServer"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceAreaServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/service-area/ServiceAreaServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAyB,YAAY,EAAE,MAAM,UAAU,CAAC;AAI/D,QAAA,MAAM,eAAe,4TAA4F,CAAC;AAElH,KAAK,+BAA+B,GAAG;IACnC,MAAM,EAAE,WAAW,CAAC,mBAAmB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;;IAC7C,UAAU,IAAI,YAAY;
|
|
1
|
+
{"version":3,"file":"ServiceAreaServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/service-area/ServiceAreaServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAyB,YAAY,EAAE,MAAM,UAAU,CAAC;AAI/D,QAAA,MAAM,eAAe,4TAA4F,CAAC;AAElH,KAAK,+BAA+B,GAAG;IACnC,MAAM,EAAE,WAAW,CAAC,mBAAmB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;;IAC7C,UAAU,IAAI,YAAY;IAqJnC;;;;;;;;OAQG;IACM,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC;IAmBjH,SAAS,CAAC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,kBAAkB,GAAG,+BAA+B;IAuBhH,SAAS,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,gBAAgB;IAmB3G,yBAAyB,CAAC,MAAM,EAAE,MAAM;IAexC;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM;CAczC;AAED,yBAAiB,qBAAqB,CAAC;IACpB,MAAM,kBAAkB,EAAE;QACrC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,kBAAkB,GAAG,+BAA+B,CAAC;QACvG,qBAAqB,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;KACrG,CAAC;CACL;;AAID,qBAAa,iBAAkB,SAAQ,sBAA4B;CAAG"}
|
|
@@ -12,6 +12,8 @@ class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
12
12
|
initialize() {
|
|
13
13
|
this.#assertSupportedAreas(this.state.supportedAreas);
|
|
14
14
|
this.reactTo(this.events.supportedAreas$Changing, this.#assertSupportedAreas);
|
|
15
|
+
this.#assertSupportedMaps(this.state.supportedMaps);
|
|
16
|
+
this.reactTo(this.events.supportedMaps$Changing, this.#assertSupportedMaps);
|
|
15
17
|
this.#assertSelectedAreas(this.state.selectedAreas);
|
|
16
18
|
this.reactTo(this.events.selectedAreas$Changing, this.#assertSelectedAreas);
|
|
17
19
|
if (this.state.currentArea !== void 0 && this.events.currentArea$Changing !== void 0) {
|
|
@@ -33,35 +35,54 @@ class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
throw new ValidationError(`Area ${areaId} has no location or landmark info`);
|
|
38
|
+
#assertSupportedMaps(maps) {
|
|
39
|
+
if (maps.length === 0) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const mapIds = /* @__PURE__ */ new Set();
|
|
43
|
+
const mapNames = /* @__PURE__ */ new Set();
|
|
44
|
+
for (const { mapId, name } of maps) {
|
|
45
|
+
if (mapIds.has(mapId)) {
|
|
46
|
+
throw new ValidationError(`MapID ${mapId} is not unique`);
|
|
46
47
|
}
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
if (locationName === "" && floorNumber === null && areaType === null && landmarkInfo === null) {
|
|
50
|
-
throw new ValidationError(`Area ${areaId} has no location info`);
|
|
51
|
-
}
|
|
48
|
+
if (mapNames.has(name)) {
|
|
49
|
+
throw new ValidationError(`MapName "${name}" is not unique`);
|
|
52
50
|
}
|
|
53
|
-
|
|
51
|
+
mapIds.add(mapId);
|
|
52
|
+
mapNames.add(name);
|
|
54
53
|
}
|
|
54
|
+
}
|
|
55
|
+
#assertSupportedAreas(areas) {
|
|
56
|
+
const areaIds = /* @__PURE__ */ new Set();
|
|
55
57
|
if (areas.length > 0) {
|
|
58
|
+
for (const { areaId, areaInfo } of areas) {
|
|
59
|
+
if (areaIds.has(areaId)) {
|
|
60
|
+
throw new ValidationError(`AreaID ${areaId} is not unique`);
|
|
61
|
+
}
|
|
62
|
+
const { locationInfo, landmarkInfo } = areaInfo;
|
|
63
|
+
if (locationInfo === null && landmarkInfo === null) {
|
|
64
|
+
throw new ValidationError(`Area ${areaId} has no location or landmark info`);
|
|
65
|
+
}
|
|
66
|
+
if (locationInfo !== null) {
|
|
67
|
+
const { locationName, floorNumber, areaType } = locationInfo;
|
|
68
|
+
if (locationName === "" && floorNumber === null && areaType === null && landmarkInfo === null) {
|
|
69
|
+
throw new ValidationError(`Area ${areaId} has no location info`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
areaIds.add(areaId);
|
|
73
|
+
}
|
|
56
74
|
const mapIds = /* @__PURE__ */ new Set();
|
|
57
75
|
for (let i = 0; i < areas.length; i++) {
|
|
58
|
-
const
|
|
59
|
-
mapIds.add(
|
|
76
|
+
const { areaId, mapId, areaInfo } = areas[i];
|
|
77
|
+
mapIds.add(mapId);
|
|
60
78
|
for (let j = i + 1; j < areas.length; j++) {
|
|
61
79
|
const otherArea = areas[j];
|
|
62
|
-
if (
|
|
80
|
+
if (otherArea.mapId !== mapId) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (isDeepEqual(areaInfo, otherArea.areaInfo)) {
|
|
63
84
|
throw new ValidationError(
|
|
64
|
-
`Areas must have a unique AreaInfo field, but area ${
|
|
85
|
+
`Areas must have a unique AreaInfo field, but area ${areaId} and area ${otherArea.areaId} are equal`
|
|
65
86
|
);
|
|
66
87
|
}
|
|
67
88
|
}
|
|
@@ -70,9 +91,6 @@ class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
70
91
|
if (mapIds.has(null)) {
|
|
71
92
|
throw new ValidationError(`Areas must not have a null mapId when supportedMaps is defined`);
|
|
72
93
|
}
|
|
73
|
-
if (mapIds.size !== areas.length) {
|
|
74
|
-
throw new ValidationError(`Areas must have a unique mapId`);
|
|
75
|
-
}
|
|
76
94
|
} else {
|
|
77
95
|
if (!mapIds.has(null) || mapIds.size > 1) {
|
|
78
96
|
throw new ValidationError(`Areas must have a null mapId when supportedMaps is empty`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/behaviors/service-area/ServiceAreaServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,UAAU,mBAAiC;AACpD,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AAEpC,MAAM,kBAAkB,oBAAoB,KAAK,YAAY,QAAQ,MAAM,YAAY,QAAQ,iBAAiB;AAuBzG,MAAM,8BAA8B,gBAAgB;AAAA,EAC9C,aAA2B;AAChC,SAAK,sBAAsB,KAAK,MAAM,cAAc;AACpD,SAAK,QAAQ,KAAK,OAAO,yBAAyB,KAAK,qBAAqB;AAC5E,SAAK,qBAAqB,KAAK,MAAM,aAAa;AAClD,SAAK,QAAQ,KAAK,OAAO,wBAAwB,KAAK,oBAAoB;AAC1E,QAAI,KAAK,MAAM,gBAAgB,UAAa,KAAK,OAAO,yBAAyB,QAAW;AACxF,WAAK,mBAAmB,KAAK,MAAM,WAAW;AAC9C,WAAK,QAAQ,KAAK,OAAO,sBAAsB,KAAK,kBAAkB;AAAA,IAC1E;AACA,QAAI,KAAK,MAAM,aAAa,QAAW;AACnC,WAAK,gBAAgB,KAAK,MAAM,QAAQ;AACxC,WAAK,QAAQ,KAAK,OAAO,mBAAmB,KAAK,eAAe;AAAA,IACpE;AACA,QAAI,KAAK,MAAM,gBAAgB,UAAa,KAAK,MAAM,qBAAqB,QAAW;AACnF,UAAI,KAAK,MAAM,gBAAgB,MAAM;AACjC,aAAK,MAAM,mBAAmB;AAAA,MAClC;AACA,UAAI,KAAK,OAAO,6BAA6B,QAAW;AAKpD,aAAK,OAAO,yBAAyB,MAAM,aAAa,CAAC,UAAU,aAAa;AAC5E,iBAAO,aAAa,QAChB,aAAa,KACb,aAAa,QACb,aAAa,KACb,WAAW,WACT,QACA;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,sBAAsB,OAA2B;AAE7C,UAAM,UAAU,oBAAI,IAAY;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["ServiceAreaBaseServer"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/node",
|
|
3
|
-
"version": "0.15.2-alpha.0-
|
|
3
|
+
"version": "0.15.2-alpha.0-20250719-e4aeb457c",
|
|
4
4
|
"description": "API for building Matter nodes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"#*": "./src/*"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@matter/general": "0.15.2-alpha.0-
|
|
46
|
-
"@matter/model": "0.15.2-alpha.0-
|
|
47
|
-
"@matter/types": "0.15.2-alpha.0-
|
|
48
|
-
"@matter/protocol": "0.15.2-alpha.0-
|
|
45
|
+
"@matter/general": "0.15.2-alpha.0-20250719-e4aeb457c",
|
|
46
|
+
"@matter/model": "0.15.2-alpha.0-20250719-e4aeb457c",
|
|
47
|
+
"@matter/types": "0.15.2-alpha.0-20250719-e4aeb457c",
|
|
48
|
+
"@matter/protocol": "0.15.2-alpha.0-20250719-e4aeb457c"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.15.2-alpha.0-
|
|
52
|
-
"@matter/testing": "0.15.2-alpha.0-
|
|
51
|
+
"@matter/tools": "0.15.2-alpha.0-20250719-e4aeb457c",
|
|
52
|
+
"@matter/testing": "0.15.2-alpha.0-20250719-e4aeb457c"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"dist/**/*",
|
|
@@ -36,6 +36,8 @@ export class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
36
36
|
override initialize(): MaybePromise {
|
|
37
37
|
this.#assertSupportedAreas(this.state.supportedAreas);
|
|
38
38
|
this.reactTo(this.events.supportedAreas$Changing, this.#assertSupportedAreas);
|
|
39
|
+
this.#assertSupportedMaps(this.state.supportedMaps);
|
|
40
|
+
this.reactTo(this.events.supportedMaps$Changing, this.#assertSupportedMaps);
|
|
39
41
|
this.#assertSelectedAreas(this.state.selectedAreas);
|
|
40
42
|
this.reactTo(this.events.selectedAreas$Changing, this.#assertSelectedAreas);
|
|
41
43
|
if (this.state.currentArea !== undefined && this.events.currentArea$Changing !== undefined) {
|
|
@@ -68,48 +70,72 @@ export class ServiceAreaBaseServer extends ServiceAreaBase {
|
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
|
|
73
|
+
#assertSupportedMaps(maps: ServiceArea.Map[]) {
|
|
74
|
+
if (maps.length === 0) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const mapIds = new Set<number>();
|
|
79
|
+
const mapNames = new Set<string>();
|
|
80
|
+
for (const { mapId, name } of maps) {
|
|
81
|
+
if (mapIds.has(mapId)) {
|
|
82
|
+
throw new ValidationError(`MapID ${mapId} is not unique`);
|
|
83
|
+
}
|
|
84
|
+
if (mapNames.has(name)) {
|
|
85
|
+
throw new ValidationError(`MapName "${name}" is not unique`);
|
|
86
|
+
}
|
|
87
|
+
mapIds.add(mapId);
|
|
88
|
+
mapNames.add(name);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
71
92
|
#assertSupportedAreas(areas: ServiceArea.Area[]) {
|
|
72
93
|
// Each entry in this list SHALL have a unique value for the AreaID field.
|
|
73
94
|
const areaIds = new Set<number>();
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
|
|
95
|
+
|
|
96
|
+
if (areas.length > 0) {
|
|
97
|
+
// Validate the areas and collect the areaIds for easy access.
|
|
98
|
+
for (const { areaId, areaInfo } of areas) {
|
|
99
|
+
if (areaIds.has(areaId)) {
|
|
100
|
+
throw new ValidationError(`AreaID ${areaId} is not unique`);
|
|
101
|
+
}
|
|
102
|
+
const { locationInfo, landmarkInfo } = areaInfo;
|
|
103
|
+
if (locationInfo === null && landmarkInfo === null) {
|
|
104
|
+
throw new ValidationError(`Area ${areaId} has no location or landmark info`);
|
|
105
|
+
}
|
|
106
|
+
if (locationInfo !== null) {
|
|
107
|
+
const { locationName, floorNumber, areaType } = locationInfo;
|
|
108
|
+
if (locationName === "" && floorNumber === null && areaType === null && landmarkInfo === null) {
|
|
109
|
+
throw new ValidationError(`Area ${areaId} has no location info`);
|
|
110
|
+
}
|
|
87
111
|
}
|
|
112
|
+
areaIds.add(areaId);
|
|
88
113
|
}
|
|
89
|
-
areaIds.add(areaId);
|
|
90
|
-
}
|
|
91
114
|
|
|
92
|
-
|
|
115
|
+
// Collect and validate the mapIds and details
|
|
93
116
|
const mapIds = new Set<number | null>();
|
|
94
117
|
for (let i = 0; i < areas.length; i++) {
|
|
95
|
-
const
|
|
96
|
-
mapIds.add(
|
|
118
|
+
const { areaId, mapId, areaInfo } = areas[i];
|
|
119
|
+
mapIds.add(mapId);
|
|
120
|
+
// Check for unique MapId and AreaInfo combination
|
|
97
121
|
for (let j = i + 1; j < areas.length; j++) {
|
|
98
122
|
const otherArea = areas[j];
|
|
99
|
-
if (
|
|
123
|
+
if (otherArea.mapId !== mapId) {
|
|
124
|
+
// Different mapId is different combination
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (isDeepEqual(areaInfo, otherArea.areaInfo)) {
|
|
100
128
|
throw new ValidationError(
|
|
101
|
-
`Areas must have a unique AreaInfo field, but area ${
|
|
129
|
+
`Areas must have a unique AreaInfo field, but area ${areaId} and area ${otherArea.areaId} are equal`,
|
|
102
130
|
);
|
|
103
131
|
}
|
|
104
132
|
}
|
|
105
133
|
}
|
|
134
|
+
|
|
106
135
|
if (this.state.supportedMaps !== undefined && this.state.supportedMaps.length > 0) {
|
|
107
136
|
if (mapIds.has(null)) {
|
|
108
137
|
throw new ValidationError(`Areas must not have a null mapId when supportedMaps is defined`);
|
|
109
138
|
}
|
|
110
|
-
if (mapIds.size !== areas.length) {
|
|
111
|
-
throw new ValidationError(`Areas must have a unique mapId`);
|
|
112
|
-
}
|
|
113
139
|
} else {
|
|
114
140
|
if (!mapIds.has(null) || mapIds.size > 1) {
|
|
115
141
|
throw new ValidationError(`Areas must have a null mapId when supportedMaps is empty`);
|