@matter/model 0.16.1 → 0.16.2-alpha.0-20260114-b38c6b796

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 (64) hide show
  1. package/dist/cjs/decoration/decorators/element.d.ts +10 -1
  2. package/dist/cjs/decoration/decorators/element.d.ts.map +1 -1
  3. package/dist/cjs/decoration/decorators/element.js +32 -5
  4. package/dist/cjs/decoration/decorators/element.js.map +1 -1
  5. package/dist/cjs/decoration/decorators/index.d.ts +2 -0
  6. package/dist/cjs/decoration/decorators/index.d.ts.map +1 -1
  7. package/dist/cjs/decoration/decorators/index.js +2 -0
  8. package/dist/cjs/decoration/decorators/index.js.map +1 -1
  9. package/dist/cjs/decoration/decorators/response.d.ts +2 -2
  10. package/dist/cjs/decoration/decorators/response.d.ts.map +1 -1
  11. package/dist/cjs/decoration/decorators/response.js +3 -19
  12. package/dist/cjs/decoration/decorators/response.js.map +1 -1
  13. package/dist/cjs/decoration/semantics/ClassSemantics.d.ts +1 -0
  14. package/dist/cjs/decoration/semantics/ClassSemantics.d.ts.map +1 -1
  15. package/dist/cjs/decoration/semantics/ClassSemantics.js +4 -1
  16. package/dist/cjs/decoration/semantics/ClassSemantics.js.map +1 -1
  17. package/dist/cjs/decoration/semantics/FieldSemantics.d.ts +3 -0
  18. package/dist/cjs/decoration/semantics/FieldSemantics.d.ts.map +1 -1
  19. package/dist/cjs/decoration/semantics/FieldSemantics.js +8 -0
  20. package/dist/cjs/decoration/semantics/FieldSemantics.js.map +1 -1
  21. package/dist/cjs/decoration/semantics/Semantics.d.ts +5 -1
  22. package/dist/cjs/decoration/semantics/Semantics.d.ts.map +1 -1
  23. package/dist/cjs/decoration/semantics/Semantics.js +12 -0
  24. package/dist/cjs/decoration/semantics/Semantics.js.map +1 -1
  25. package/dist/cjs/models/CommandModel.d.ts +9 -1
  26. package/dist/cjs/models/CommandModel.d.ts.map +1 -1
  27. package/dist/cjs/models/CommandModel.js +21 -1
  28. package/dist/cjs/models/CommandModel.js.map +1 -1
  29. package/dist/esm/decoration/decorators/element.d.ts +10 -1
  30. package/dist/esm/decoration/decorators/element.d.ts.map +1 -1
  31. package/dist/esm/decoration/decorators/element.js +32 -5
  32. package/dist/esm/decoration/decorators/element.js.map +1 -1
  33. package/dist/esm/decoration/decorators/index.d.ts +2 -0
  34. package/dist/esm/decoration/decorators/index.d.ts.map +1 -1
  35. package/dist/esm/decoration/decorators/index.js +2 -0
  36. package/dist/esm/decoration/decorators/index.js.map +1 -1
  37. package/dist/esm/decoration/decorators/response.d.ts +2 -2
  38. package/dist/esm/decoration/decorators/response.d.ts.map +1 -1
  39. package/dist/esm/decoration/decorators/response.js +3 -19
  40. package/dist/esm/decoration/decorators/response.js.map +1 -1
  41. package/dist/esm/decoration/semantics/ClassSemantics.d.ts +1 -0
  42. package/dist/esm/decoration/semantics/ClassSemantics.d.ts.map +1 -1
  43. package/dist/esm/decoration/semantics/ClassSemantics.js +4 -1
  44. package/dist/esm/decoration/semantics/ClassSemantics.js.map +1 -1
  45. package/dist/esm/decoration/semantics/FieldSemantics.d.ts +3 -0
  46. package/dist/esm/decoration/semantics/FieldSemantics.d.ts.map +1 -1
  47. package/dist/esm/decoration/semantics/FieldSemantics.js +8 -0
  48. package/dist/esm/decoration/semantics/FieldSemantics.js.map +1 -1
  49. package/dist/esm/decoration/semantics/Semantics.d.ts +5 -1
  50. package/dist/esm/decoration/semantics/Semantics.d.ts.map +1 -1
  51. package/dist/esm/decoration/semantics/Semantics.js +12 -0
  52. package/dist/esm/decoration/semantics/Semantics.js.map +1 -1
  53. package/dist/esm/models/CommandModel.d.ts +9 -1
  54. package/dist/esm/models/CommandModel.d.ts.map +1 -1
  55. package/dist/esm/models/CommandModel.js +21 -1
  56. package/dist/esm/models/CommandModel.js.map +1 -1
  57. package/package.json +4 -4
  58. package/src/decoration/decorators/element.ts +46 -6
  59. package/src/decoration/decorators/index.ts +2 -0
  60. package/src/decoration/decorators/response.ts +3 -22
  61. package/src/decoration/semantics/ClassSemantics.ts +7 -3
  62. package/src/decoration/semantics/FieldSemantics.ts +11 -0
  63. package/src/decoration/semantics/Semantics.ts +19 -0
  64. package/src/models/CommandModel.ts +33 -2
@@ -4,16 +4,39 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { InvalidMetadataError, MetadataConflictError } from "#decoration/errors.js";
7
+ import { FieldSemantics } from "#decoration/semantics/FieldSemantics.js";
7
8
  import { Semantics } from "#decoration/semantics/Semantics.js";
8
9
  import { Decorator } from "#general";
10
+ import { CommandModel } from "#models/CommandModel.js";
9
11
  import { Model } from "#models/Model.js";
10
12
  import { Schema } from "#models/Schema.js";
11
13
  function element(kind, ...modifiers) {
12
- const forceType = !(modifiers[0] instanceof kind);
14
+ let modelType;
15
+ if (kind.Tag === "response") {
16
+ modelType = CommandModel;
17
+ } else {
18
+ modelType = kind;
19
+ }
20
+ const forceType = !(modifiers[0] instanceof modelType);
13
21
  return Decorator((target, context) => {
14
- const semantics = Semantics.of(context);
22
+ let semantics = Semantics.of(context);
23
+ if (kind.Tag === "response") {
24
+ semantics.modelType = CommandModel;
25
+ if (semantics.response === void 0) {
26
+ if (typeof context.name !== "string") {
27
+ throw new InvalidMetadataError(
28
+ `Cannot specify response for ${String(context.name) || "(anonymous)"} because element name is ${typeof context.name}`
29
+ );
30
+ }
31
+ const response = new FieldSemantics(semantics.owner, context.name);
32
+ response.modelType = CommandModel;
33
+ response.mutableModel.name = `${context.name}Response`;
34
+ response.mutableModel.isResponse = true;
35
+ semantics = semantics.response = response;
36
+ }
37
+ }
15
38
  if (forceType) {
16
- semantics.modelType = kind;
39
+ semantics.modelType = modelType;
17
40
  }
18
41
  if (context.kind === "class") {
19
42
  semantics.new = target;
@@ -34,7 +57,9 @@ function element(kind, ...modifiers) {
34
57
  const subresult = modifier(target, context);
35
58
  if (subresult) {
36
59
  if (result) {
37
- throw new MetadataConflictError(`Multiple modifiers returned a value`);
60
+ throw new MetadataConflictError(
61
+ `Multiple modifiers returned a value for ${String(context.name || "(anonymous)")}`
62
+ );
38
63
  }
39
64
  result = subresult;
40
65
  }
@@ -56,7 +81,9 @@ function element(kind, ...modifiers) {
56
81
  }
57
82
  break;
58
83
  }
59
- throw new InvalidMetadataError(`Unsupported modifier ${modifier}`);
84
+ throw new InvalidMetadataError(
85
+ `Unsupported modifier ${modifier} for ${String(context.name || "(anonymous)")}`
86
+ );
60
87
  }
61
88
  return result;
62
89
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/decoration/decorators/element.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,sBAAsB,6BAA6B;AAE5D,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AACtB,SAAS,cAAc;AAKhB,SAAS,QAEd,SAA6B,WAAkC;AAG7D,QAAM,YAAY,EAAE,UAAU,CAAC,aAAa;AAE5C,SAAO,UAAU,CAAC,QAAa,YAA8B;AACzD,UAAM,YAAY,UAAU,GAAG,OAAO;AACtC,QAAI,WAAW;AACX,gBAAU,YAAY;AAAA,IAC1B;AAEA,QAAI,QAAQ,SAAS,SAAS;AAC1B,MAAC,UAA6B,MAAM;AAAA,IACxC;AAEA,QAAI,SAA0B;AAC9B,eAAW,YAAY,WAAW;AAC9B,cAAQ,OAAO,UAAU;AAAA,QACrB,KAAK;AACD,oBAAU,aAAa,KAAK;AAC5B;AAAA,QAEJ,KAAK;AACD,oBAAU,aAAa,OAAO;AAC9B;AAAA,QAEJ,KAAK;AACD,cAAI,SAAS,UAAU;AACnB,sBAAU,YAAY;AAAA,UAC1B,WAAW,UAAU,GAAG,QAAQ,GAAG;AAC/B,kBAAM,YAAa,SAAiB,QAAQ,OAAO;AACnD,gBAAI,WAAW;AACX,kBAAI,QAAQ;AACR,sBAAM,IAAI,sBAAsB,qCAAqC;AAAA,cACzE;AACA,uBAAS;AAAA,YACb;AAAA,UACJ,OAAO;AACH,kBAAM,QAAQ,OAAO,QAA2B;AAChD,gBAAI,UAAU,QAAW;AACrB,oBAAM,IAAI;AAAA,gBACN,gCAAgC,SAAS,QAAQ,aAAa,gBAAgB,OAAO,QAAQ,QAAQ,aAAa,CAAC;AAAA,cACvH;AAAA,YACJ;AAEA,kBAAM,SAAS;AAEf,sBAAU,eAAe;AAAA,UAC7B;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,oBAAoB,OAAO;AAC3B,sBAAU,eAAe;AACzB;AAAA,UACJ;AACA;AAAA,MACR;AAEA,YAAM,IAAI,qBAAqB,wBAAwB,QAAQ,EAAE;AAAA,IACrE;AAEA,WAAO;AAAA,EACX,CAAC;AACL;AAAA,CAEO,CAAUA,aAAV;AAII,WAAS,SAAS,MAA0B;AAC/C,WAAO,IAAI,cAAuD;AAC9D,aAAOA,SAAQ,MAAM,GAAG,SAAS;AAAA,IACrC;AAAA,EACJ;AAJO,EAAAA,SAAS;AAST,WAAS,MAAM,MAA0B;AAC5C,WAAO,IAAI,cAAoD;AAC3D,aAAOA,SAAQ,MAAM,GAAG,SAAS;AAAA,IACrC;AAAA,EACJ;AAJO,EAAAA,SAAS;AAAA,GAbH;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,sBAAsB,6BAA6B;AAE5D,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,aAAa;AACtB,SAAS,cAAc;AAKhB,SAAS,QAEd,SAA8B,WAAkC;AAC9D,MAAI;AACJ,MAAI,KAAK,QAAQ,YAAY;AACzB,gBAAY;AAAA,EAChB,OAAO;AACH,gBAAY;AAAA,EAChB;AAIA,QAAM,YAAY,EAAE,UAAU,CAAC,aAAa;AAE5C,SAAO,UAAU,CAAC,QAAa,YAA8B;AACzD,QAAI,YAAY,UAAU,GAAG,OAAO;AAEpC,QAAI,KAAK,QAAQ,YAAY;AACzB,gBAAU,YAAY;AAEtB,UAAI,UAAU,aAAa,QAAW;AAClC,YAAI,OAAO,QAAQ,SAAS,UAAU;AAClC,gBAAM,IAAI;AAAA,YACN,+BAA+B,OAAO,QAAQ,IAAI,KAAK,aAAa,4BAA4B,OAAO,QAAQ,IAAI;AAAA,UACvH;AAAA,QACJ;AAEA,cAAM,WAAW,IAAI,eAAe,UAAU,OAAO,QAAQ,IAAI;AACjE,iBAAS,YAAY;AACrB,iBAAS,aAAa,OAAO,GAAG,QAAQ,IAAI;AAC5C,QAAC,SAAS,aAA8B,aAAa;AACrD,oBAAY,UAAU,WAAW;AAAA,MACrC;AAAA,IACJ;AAEA,QAAI,WAAW;AACX,gBAAU,YAAY;AAAA,IAC1B;AAEA,QAAI,QAAQ,SAAS,SAAS;AAC1B,MAAC,UAA6B,MAAM;AAAA,IACxC;AAEA,QAAI,SAA0B;AAC9B,eAAW,YAAY,WAAW;AAC9B,cAAQ,OAAO,UAAU;AAAA,QACrB,KAAK;AACD,oBAAU,aAAa,KAAK;AAC5B;AAAA,QAEJ,KAAK;AACD,oBAAU,aAAa,OAAO;AAC9B;AAAA,QAEJ,KAAK;AACD,cAAI,SAAS,UAAU;AACnB,sBAAU,YAAY;AAAA,UAC1B,WAAW,UAAU,GAAG,QAAQ,GAAG;AAC/B,kBAAM,YAAa,SAAiB,QAAQ,OAAO;AACnD,gBAAI,WAAW;AACX,kBAAI,QAAQ;AACR,sBAAM,IAAI;AAAA,kBACN,2CAA2C,OAAO,QAAQ,QAAQ,aAAa,CAAC;AAAA,gBACpF;AAAA,cACJ;AACA,uBAAS;AAAA,YACb;AAAA,UACJ,OAAO;AACH,kBAAM,QAAQ,OAAO,QAA2B;AAChD,gBAAI,UAAU,QAAW;AACrB,oBAAM,IAAI;AAAA,gBACN,gCAAgC,SAAS,QAAQ,aAAa,gBAAgB,OAAO,QAAQ,QAAQ,aAAa,CAAC;AAAA,cACvH;AAAA,YACJ;AAEA,kBAAM,SAAS;AAEf,sBAAU,eAAe;AAAA,UAC7B;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,oBAAoB,OAAO;AAC3B,sBAAU,eAAe;AACzB;AAAA,UACJ;AACA;AAAA,MACR;AAEA,YAAM,IAAI;AAAA,QACN,wBAAwB,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,aAAa,CAAC;AAAA,MACjF;AAAA,IACJ;AAEA,WAAO;AAAA,EACX,CAAC;AACL;AAAA,CAEO,CAAUA,aAAV;AAII,WAAS,SAAS,MAA0B;AAC/C,WAAO,IAAI,cAAuD;AAC9D,aAAOA,SAAQ,MAAM,GAAG,SAAS;AAAA,IACrC;AAAA,EACJ;AAJO,EAAAA,SAAS;AAST,WAAS,MAAM,MAA0B;AAC5C,WAAO,IAAI,cAAoD;AAC3D,aAAOA,SAAQ,MAAM,GAAG,SAAS;AAAA,IACrC;AAAA,EACJ;AAJO,EAAAA,SAAS;AAAA,GAbH;",
5
5
  "names": ["element"]
6
6
  }
@@ -5,8 +5,10 @@
5
5
  */
6
6
  export * from "./attribute.js";
7
7
  export * from "./cluster.js";
8
+ export * from "./command.js";
8
9
  export * from "./datatype.js";
9
10
  export * from "./element.js";
11
+ export * from "./event.js";
10
12
  export * from "./field.js";
11
13
  export * from "./listOf.js";
12
14
  export * from "./mandatory.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/decoration/decorators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/decoration/decorators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -5,8 +5,10 @@
5
5
  */
6
6
  export * from "./attribute.js";
7
7
  export * from "./cluster.js";
8
+ export * from "./command.js";
8
9
  export * from "./datatype.js";
9
10
  export * from "./element.js";
11
+ export * from "./event.js";
10
12
  export * from "./field.js";
11
13
  export * from "./listOf.js";
12
14
  export * from "./mandatory.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/decoration/decorators/index.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
5
  "names": []
6
6
  }
@@ -4,9 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Decorator } from "#general";
7
- import { DatatypeModel } from "#models/DatatypeModel.js";
7
+ import { element } from "./element.js";
8
8
  /**
9
9
  * Specify the response type for a command.
10
10
  */
11
- export declare function response(type: DatatypeModel): Decorator.ClassMethod;
11
+ export declare function response(...modifiers: element.Modifier<Decorator.MethodCollector>[]): Decorator.MethodCollector;
12
12
  //# sourceMappingURL=response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/decoration/decorators/response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC,WAAW,CAkBnE"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/decoration/decorators/response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,6BAEnF"}
@@ -3,25 +3,9 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { FieldSemantics } from "#decoration/semantics/FieldSemantics.js";
7
- import { CommandElement } from "#elements/CommandElement.js";
8
- import { Decorator } from "#general";
9
- import { CommandModel } from "#models/CommandModel.js";
10
- function response(type) {
11
- return Decorator((_target, context) => {
12
- const requestSemantics = FieldSemantics.of(context);
13
- requestSemantics.modelType = CommandModel;
14
- const request = requestSemantics.mutableModel;
15
- const name = `${request.name}Response`;
16
- new CommandModel({
17
- name,
18
- id: request.id,
19
- parent: request.parent,
20
- direction: CommandElement.Direction.Response,
21
- operationalBase: type
22
- });
23
- request.response = name;
24
- });
6
+ import { element } from "./element.js";
7
+ function response(...modifiers) {
8
+ return element({ Tag: "response" }, ...modifiers);
25
9
  }
26
10
  export {
27
11
  response
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/decoration/decorators/response.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAMtB,SAAS,SAAS,MAA4C;AACjE,SAAO,UAAU,CAAC,SAAS,YAAY;AACnC,UAAM,mBAAmB,eAAe,GAAG,OAAO;AAElD,qBAAiB,YAAY;AAC7B,UAAM,UAAU,iBAAiB;AAEjC,UAAM,OAAO,GAAG,QAAQ,IAAI;AAC5B,QAAI,aAAa;AAAA,MACb;AAAA,MACA,IAAI,QAAQ;AAAA,MACZ,QAAQ,QAAQ;AAAA,MAChB,WAAW,eAAe,UAAU;AAAA,MACpC,iBAAiB;AAAA,IACrB,CAAC;AAED,YAAQ,WAAW;AAAA,EACvB,CAAC;AACL;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,eAAe;AAKjB,SAAS,YAAY,WAA0D;AAClF,SAAO,QAAQ,EAAE,KAAK,WAAW,GAAG,GAAG,SAAS;AACpD;",
5
5
  "names": []
6
6
  }
@@ -64,6 +64,7 @@ export declare class ClassSemantics extends Semantics {
64
64
  finalize(): void;
65
65
  protected integrateModel(model: Model): Model<import("../../index.js").BaseElement, Model<import("../../index.js").BaseElement, any>>;
66
66
  protected createModel(type?: Model.ConcreteType): Model<import("../../index.js").BaseElement, Model<import("../../index.js").BaseElement, any>>;
67
+ get owner(): this;
67
68
  }
68
69
  export declare namespace ClassSemantics {
69
70
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ClassSemantics.d.ts","sourceRoot":"","sources":["../../../../src/decoration/semantics/ClassSemantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA6B,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAMpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAmB3C;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,SAAQ,SAAS;;IAIzC;;;;OAIG;IACH,IAAI,aAAa,8GAahB;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,cAAc,CAAC,WAAW,GAAG,SAAS,CAEhD;IAED;;OAEG;IACH,IAAI,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,WAAW,EA6BrC;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,KAAK,GAAG,SAAS,CAsB1C;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmB9B;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,OAAO;IAuDtC;;OAEG;WACa,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM;IAuChD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW;IAOzD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW;IAUxC,QAAQ;cA6CE,cAAc,CAAC,KAAK,EAAE,KAAK;cAoB3B,WAAW,CAAC,IAAI,GAAE,KAAK,CAAC,YAA4B;CAO1E;AAED,yBAAiB,cAAc,CAAC;IAC5B;;OAEG;IACH,UAAiB,WAAY,SAAQ,eAAe;QAChD;;WAEG;QACH,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;KAClD;IAED;;OAEG;IACH,KAAY,MAAM,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;IAE9D,MAAM,MAAM,eAAmB,CAAC;CAC1C"}
1
+ {"version":3,"file":"ClassSemantics.d.ts","sourceRoot":"","sources":["../../../../src/decoration/semantics/ClassSemantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA6B,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAMpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAmB3C;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,SAAQ,SAAS;;IAIzC;;;;OAIG;IACH,IAAI,aAAa,8GAahB;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,cAAc,CAAC,WAAW,GAAG,SAAS,CAEhD;IAED;;OAEG;IACH,IAAI,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,WAAW,EA6BrC;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,KAAK,GAAG,SAAS,CAsB1C;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmB9B;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,OAAO;IAuDtC;;OAEG;WACa,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM;IAuChD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW;IAOzD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW;IAUxC,QAAQ;cA6CE,cAAc,CAAC,KAAK,EAAE,KAAK;cAoB3B,WAAW,CAAC,IAAI,GAAE,KAAK,CAAC,YAA4B;IAQvE,IAAI,KAAK,SAER;CACJ;AAED,yBAAiB,cAAc,CAAC;IAC5B;;OAEG;IACH,UAAiB,WAAY,SAAQ,eAAe;QAChD;;WAEG;QACH,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;KAClD;IAED;;OAEG;IACH,KAAY,MAAM,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;IAE9D,MAAM,MAAM,eAAmB,CAAC;CAC1C"}
@@ -195,12 +195,12 @@ class ClassSemantics extends Semantics {
195
195
  return;
196
196
  }
197
197
  this.#new?.[ClassSemantics.extend]?.(this);
198
- super.finalize();
199
198
  if (this.#definedFields) {
200
199
  for (const field of this.#definedFields.values()) {
201
200
  field.finalize();
202
201
  }
203
202
  }
203
+ super.finalize();
204
204
  }
205
205
  #applyBaseSemantics() {
206
206
  const base = this.prototypeBaseModel;
@@ -239,6 +239,9 @@ class ClassSemantics extends Semantics {
239
239
  }
240
240
  return new type({ name, operationalBase: struct });
241
241
  }
242
+ get owner() {
243
+ return this;
244
+ }
242
245
  }
243
246
  ((ClassSemantics2) => {
244
247
  ClassSemantics2.extend = /* @__PURE__ */ Symbol("extend");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/decoration/semantics/ClassSemantics.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["metadata", "ClassSemantics"]
6
6
  }
@@ -10,7 +10,10 @@ import { Semantics } from "./Semantics.js";
10
10
  * Decorator metadata associated with a specific class field.
11
11
  */
12
12
  export declare class FieldSemantics extends Semantics {
13
+ #private;
13
14
  constructor(owner: ClassSemantics, name: string);
15
+ get owner(): ClassSemantics;
16
+ get semanticModel(): Model<import("../../index.js").BaseElement, Model<import("../../index.js").BaseElement, any>> | undefined;
14
17
  protected createModel(): Model;
15
18
  protected integrateModel(model: Model): Model;
16
19
  static of(source: FieldSemantics.Source): FieldSemantics;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldSemantics.d.ts","sourceRoot":"","sources":["../../../../src/decoration/semantics/FieldSemantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;gBAC7B,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;cAM5B,WAAW,IAAI,KAAK;cAKpB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;WAQtC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM;CAQnD;AAED,yBAAiB,cAAc,CAAC;IAC5B,KAAY,MAAM,GAAG,gBAAgB,CAAC;CACzC"}
1
+ {"version":3,"file":"FieldSemantics.d.ts","sourceRoot":"","sources":["../../../../src/decoration/semantics/FieldSemantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;;gBAG7B,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;IAO/C,IAAI,KAAK,mBAER;IAED,IAAI,aAAa,8GAEhB;cAEkB,WAAW,IAAI,KAAK;cAKpB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;WAQtC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM;CAQnD;AAED,yBAAiB,cAAc,CAAC;IAC5B,KAAY,MAAM,GAAG,gBAAgB,CAAC;CACzC"}
@@ -8,10 +8,18 @@ import { InternalError } from "#general";
8
8
  import { FieldModel } from "#models/FieldModel.js";
9
9
  import { Semantics } from "./Semantics.js";
10
10
  class FieldSemantics extends Semantics {
11
+ #owner;
11
12
  constructor(owner, name) {
12
13
  super();
14
+ this.#owner = owner;
13
15
  this.mutableModel = new FieldModel({ name, parent: owner.mutableModel });
14
16
  }
17
+ get owner() {
18
+ return this.#owner;
19
+ }
20
+ get semanticModel() {
21
+ return this.localModel;
22
+ }
15
23
  createModel() {
16
24
  throw new InternalError("Unexpected FieldSemantics.createModel");
17
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/decoration/semantics/FieldSemantics.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAG3B,SAAS,iBAAiB;AAKnB,MAAM,uBAAuB,UAAU;AAAA,EAC1C,YAAY,OAAuB,MAAc;AAC7C,UAAM;AAEN,SAAK,eAAe,IAAI,WAAW,EAAE,MAAM,QAAQ,MAAM,aAAa,CAAC;AAAA,EAC3E;AAAA,EAEmB,cAAqB;AAEpC,UAAM,IAAI,cAAc,uCAAuC;AAAA,EACnE;AAAA,EAEmB,eAAe,OAAqB;AACnD,QAAI,KAAK,eAAe,QAAW;AAC/B,aAAO;AAAA,IACX;AACA,SAAK,aAAa,kBAAkB;AACpC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,OAAgB,GAAG,QAA+B;AAC9C,QAAI,OAAO,SAAS,SAAS;AACzB,YAAM,IAAI;AAAA,QACN,uDAAuD,OAAO,QAAQ,oBAAoB;AAAA,MAC9F;AAAA,IACJ;AACA,WAAO,UAAU,QAAQ,MAAM,EAAE,SAAS,OAAO,IAAI;AAAA,EACzD;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAG3B,SAAS,iBAAiB;AAKnB,MAAM,uBAAuB,UAAU;AAAA,EAC1C;AAAA,EAEA,YAAY,OAAuB,MAAc;AAC7C,UAAM;AACN,SAAK,SAAS;AAEd,SAAK,eAAe,IAAI,WAAW,EAAE,MAAM,QAAQ,MAAM,aAAa,CAAC;AAAA,EAC3E;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEmB,cAAqB;AAEpC,UAAM,IAAI,cAAc,uCAAuC;AAAA,EACnE;AAAA,EAEmB,eAAe,OAAqB;AACnD,QAAI,KAAK,eAAe,QAAW;AAC/B,aAAO;AAAA,IACX;AACA,SAAK,aAAa,kBAAkB;AACpC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,OAAgB,GAAG,QAA+B;AAC9C,QAAI,OAAO,SAAS,SAAS;AACzB,YAAM,IAAI;AAAA,QACN,uDAAuD,OAAO,QAAQ,oBAAoB;AAAA,MAC9F;AAAA,IACJ;AACA,WAAO,UAAU,QAAQ,MAAM,EAAE,SAAS,OAAO,IAAI;AAAA,EACzD;AACJ;",
5
5
  "names": []
6
6
  }
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { Model } from "#models/Model.js";
7
7
  import type { ClassSemantics } from "./ClassSemantics.js";
8
+ import type { FieldSemantics } from "./FieldSemantics.js";
8
9
  /**
9
10
  * Base class for Matter semantics associated with JavaScript classes and properties.
10
11
  *
@@ -13,6 +14,7 @@ import type { ClassSemantics } from "./ClassSemantics.js";
13
14
  */
14
15
  export declare abstract class Semantics {
15
16
  #private;
17
+ response?: FieldSemantics;
16
18
  /**
17
19
  * Determine whether these semantics are final.
18
20
  *
@@ -53,13 +55,15 @@ export declare abstract class Semantics {
53
55
  */
54
56
  get modelType(): Model.Type | undefined;
55
57
  set modelType(type: Model.ConcreteType);
58
+ abstract owner: ClassSemantics;
59
+ abstract semanticModel?: Model;
56
60
  protected abstract createModel(type?: Model.ConcreteType): Model;
57
61
  }
58
62
  export declare namespace Semantics {
59
63
  /**
60
64
  * Access the {@link Semantics} of a {@link DecoratorContext}.
61
65
  */
62
- function of(context: DecoratorContext): import("./FieldSemantics.js").FieldSemantics | ClassSemantics;
66
+ function of(context: DecoratorContext): FieldSemantics | ClassSemantics;
63
67
  /**
64
68
  * Access the {@link ClassSemantics} of a constructor or decorator context.
65
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Semantics.d.ts","sourceRoot":"","sources":["../../../../src/decoration/semantics/Semantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D;;;;;GAKG;AACH,8BAAsB,SAAS;;IAI3B;;;;OAIG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,QAAQ;IAUR;;OAEG;IACH,IAAI,UAAU,8GAEb;IAED;;;;;;;;OAQG;IACH,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,EAgB5B;IAED;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAEtD;;OAEG;IACH,IAAI,YAAY,IA1BQ,KAAK,CAqC5B;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,CAKtC;IAED,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EA8BrC;IAED,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK;CACnE;AAED,yBAAiB,SAAS,CAAC;IACvB;;OAEG;IACH,SAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,iEAM3C;IAED;;OAEG;IAEI,IAAI,OAAO,GAAI,SAAS,cAAc,CAAC,MAAM,KAAG,cAGtD,CAAC;CACL"}
1
+ {"version":3,"file":"Semantics.d.ts","sourceRoot":"","sources":["../../../../src/decoration/semantics/Semantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D;;;;;GAKG;AACH,8BAAsB,SAAS;;IAI3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;;OAIG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,QAAQ;IAuBR;;OAEG;IACH,IAAI,UAAU,8GAEb;IAED;;;;;;;;OAQG;IACH,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,EAgB5B;IAED;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAEtD;;OAEG;IACH,IAAI,YAAY,IA1BQ,KAAK,CAqC5B;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,CAKtC;IAED,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EA8BrC;IAED,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK;CACnE;AAED,yBAAiB,SAAS,CAAC;IACvB;;OAEG;IACH,SAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,mCAM3C;IAED;;OAEG;IAEI,IAAI,OAAO,GAAI,SAAS,cAAc,CAAC,MAAM,KAAG,cAGtD,CAAC;CACL"}
@@ -5,11 +5,13 @@
5
5
  */
6
6
  import { MetadataConflictError } from "#decoration/errors.js";
7
7
  import { InternalError } from "#general";
8
+ import { CommandModel } from "#models/CommandModel.js";
8
9
  import * as models from "#standard/elements/models.js";
9
10
  const standardModels = new Set(Object.values(models));
10
11
  class Semantics {
11
12
  #localModel;
12
13
  #isFinal = false;
14
+ response;
13
15
  /**
14
16
  * Determine whether these semantics are final.
15
17
  *
@@ -25,6 +27,16 @@ class Semantics {
25
27
  if (this.#isFinal) {
26
28
  return;
27
29
  }
30
+ if (this.response && this.semanticModel instanceof CommandModel) {
31
+ this.response.finalize();
32
+ const response = this.response.localModel;
33
+ if (response) {
34
+ if (response.id === void 0) {
35
+ response.id = this.semanticModel.id;
36
+ }
37
+ this.mutableModel.operationalResponse = this.response.localModel;
38
+ }
39
+ }
28
40
  this.#isFinal = true;
29
41
  Object.freeze(this);
30
42
  this.#localModel?.finalize();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/decoration/semantics/Semantics.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAE9B,YAAY,YAAY;AAGxB,MAAM,iBAAiB,IAAI,IAAI,OAAO,OAAO,MAAM,CAAY;AAQxD,MAAe,UAAU;AAAA,EAC5B;AAAA,EACA,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOX,IAAI,UAAmB;AACnB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACP,QAAI,KAAK,UAAU;AACf;AAAA,IACJ;AAEA,SAAK,WAAW;AAChB,WAAO,OAAO,IAAI;AAClB,SAAK,aAAa,SAAS;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,aAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,IAAI,aAAa,OAAc;AAC3B,QAAI,KAAK,UAAU;AACf,YAAM,IAAI,sBAAsB,oCAAoC,KAAK,aAAa,QAAQ,QAAQ,EAAE;AAAA,IAC5G;AAEA,QAAI,KAAK,gBAAgB,OAAO;AAC5B;AAAA,IACJ;AAIA,QAAI,eAAe,IAAI,KAAK,GAAG;AAC3B,YAAM,SAAS;AAAA,IACnB;AAEA,SAAK,cAAc,KAAK,eAAe,KAAK;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAUA,IAAI,eAAe;AACf,QAAI,KAAK,UAAU;AACf,YAAM,IAAI,sBAAsB,oCAAoC,KAAK,aAAa,QAAQ,QAAQ,EAAE;AAAA,IAC5G;AAEA,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,KAAK,YAAY;AAAA,IACxC,WAAW,KAAK,YAAY,SAAS;AACjC,WAAK,cAAc,KAAK,YAAY,OAAO;AAAA,IAC/C;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,YAAoC;AACpC,QAAI,KAAK,gBAAgB,QAAW;AAChC;AAAA,IACJ;AACA,WAAO,KAAK,aAAa;AAAA,EAC7B;AAAA,EAEA,IAAI,UAAU,MAA0B;AACpC,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,KAAK,YAAY,IAAI;AACxC;AAAA,IACJ;AAEA,QAAI,KAAK,uBAAuB,MAAM;AAClC;AAAA,IACJ;AAGA,UAAM,WAAW,KAAK;AACtB,UAAM,EAAE,OAAO,IAAI;AACnB,aAAS,SAAS;AAGlB,UAAM,cAAc,IAAI,KAAK;AAAA,MACzB,MAAM,SAAS;AAAA,MACf,IAAI,SAAS;AAAA,MACb,MAAM,SAAS;AAAA,MACf;AAAA,MACA,iBAAiB,SAAS;AAAA,MAC1B,UAAU,SAAS;AAAA,IACvB,CAAC;AAED,QAAI,aAAa,YAAY,aAAa,aAAa;AACnD,kBAAY,UAAU,SAAS;AAAA,IACnC;AAEA,SAAK,cAAc;AAAA,EACvB;AAGJ;AAAA,CAEO,CAAUA,eAAV;AAII,WAAS,GAAG,SAA2B;AAC1C,UAAM,qBAAiBA,WAAA,SAAQ,OAAO;AACtC,QAAI,QAAQ,SAAS,SAAS;AAC1B,aAAO;AAAA,IACX;AACA,WAAO,eAAe,SAAS,QAAQ,IAAI;AAAA,EAC/C;AANO,EAAAA,WAAS;AAYT,EAAIA,WAAA,UAAU,CAAC,YAAmD;AAErE,UAAM,IAAI,cAAc,uCAAuC;AAAA,EACnE;AAAA,GAnBa;",
4
+ "mappings": "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",
5
5
  "names": ["Semantics"]
6
6
  }
@@ -10,9 +10,11 @@ export declare class CommandModel extends ValueModel<CommandElement> implements
10
10
  tag: CommandElement.Tag;
11
11
  direction?: CommandElement.Direction;
12
12
  response?: string;
13
+ operationalResponse?: CommandModel | null;
13
14
  get fabricScoped(): boolean;
14
15
  get isRequest(): boolean;
15
16
  get isResponse(): boolean;
17
+ set isResponse(isResponse: boolean);
16
18
  get responseModel(): CommandModel | undefined;
17
19
  get effectiveDirection(): CommandElement.Direction | undefined;
18
20
  get requiredFields(): {
@@ -43,9 +45,15 @@ export declare class CommandModel extends ValueModel<CommandElement> implements
43
45
  * direction.
44
46
  */
45
47
  get discriminator(): CommandElement.Direction;
46
- constructor(definition: Model.Definition<CommandModel>, ...children: Model.ChildDefinition<CommandModel>[]);
48
+ constructor(definition: CommandModel.Definition, ...children: Model.ChildDefinition<CommandModel>[]);
47
49
  toElement(omitResources?: boolean, extra?: Record<string, unknown>): CommandElement;
50
+ finalize(): void;
48
51
  static Tag: import("../index.js").ElementTag;
49
52
  static requiresId: boolean;
50
53
  }
54
+ export declare namespace CommandModel {
55
+ type Definition = Model.Definition<CommandModel> & {
56
+ operationalResponse?: CommandModel;
57
+ };
58
+ }
51
59
  //# sourceMappingURL=CommandModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandModel.d.ts","sourceRoot":"","sources":["../../../src/models/CommandModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,YAAa,SAAQ,UAAU,CAAC,cAAc,CAAE,YAAW,cAAc;IACzE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAsB;IACtD,SAAS,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,IAAI,YAAY,YAEf;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,UAAU,YAEb;IAED,IAAI,aAAa,6BAEhB;IAED,IAAI,kBAAkB,yCAErB;IAED,IAAa,cAAc;;;;;;;;;;;;;;;;;;;;;;MAE1B;IAED;;;OAGG;IACH,IAAa,aAAa,6BAWzB;gBAEW,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;IAOjG,SAAS,CAAC,aAAa,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQzE,MAAM,CAAC,GAAG,mCAAsB;IAChC,MAAM,CAAC,UAAU,UAAQ;CAC5B"}
1
+ {"version":3,"file":"CommandModel.d.ts","sourceRoot":"","sources":["../../../src/models/CommandModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,YAAa,SAAQ,UAAU,CAAC,cAAc,CAAE,YAAW,cAAc;IACzE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAsB;IACtD,SAAS,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mBAAmB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE1C,IAAI,YAAY,YAEf;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,UAAU,IAIa,OAAO,CAFjC;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,EAEjC;IAED,IAAI,aAAa,6BAWhB;IAED,IAAI,kBAAkB,yCAErB;IAED,IAAa,cAAc;;;;;;;;;;;;;;;;;;;;;;MAE1B;IAED;;;OAGG;IACH,IAAa,aAAa,6BAWzB;gBAEW,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;IAQ1F,SAAS,CAAC,aAAa,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQhE,QAAQ;IAWjB,MAAM,CAAC,GAAG,mCAAsB;IAChC,MAAM,CAAC,UAAU,UAAQ;CAC5B;AAED,yBAAiB,YAAY,CAAC;IAC1B,KAAY,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG;QAAE,mBAAmB,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;CACpG"}
@@ -10,6 +10,7 @@ class CommandModel extends ValueModel {
10
10
  tag = CommandElement.Tag;
11
11
  direction;
12
12
  response;
13
+ operationalResponse;
13
14
  get fabricScoped() {
14
15
  return !!this.effectiveAccess.fabric;
15
16
  }
@@ -19,8 +20,18 @@ class CommandModel extends ValueModel {
19
20
  get isResponse() {
20
21
  return this.effectiveDirection === CommandElement.Direction.Response;
21
22
  }
23
+ set isResponse(isResponse) {
24
+ this.direction = isResponse ? CommandElement.Direction.Response : CommandElement.Direction.Request;
25
+ }
22
26
  get responseModel() {
23
- return new ModelTraversal().findResponse(this);
27
+ switch (this.operationalResponse) {
28
+ case void 0:
29
+ return new ModelTraversal().findResponse(this);
30
+ case null:
31
+ return void 0;
32
+ default:
33
+ return this.operationalResponse;
34
+ }
24
35
  }
25
36
  get effectiveDirection() {
26
37
  return this.direction ?? this.base?.direction;
@@ -45,6 +56,7 @@ class CommandModel extends ValueModel {
45
56
  super(definition, ...children);
46
57
  this.direction = definition.direction;
47
58
  this.response = definition.response;
59
+ this.operationalResponse = definition.operationalResponse;
48
60
  }
49
61
  toElement(omitResources = false, extra) {
50
62
  return super.toElement(omitResources, {
@@ -53,6 +65,14 @@ class CommandModel extends ValueModel {
53
65
  ...extra
54
66
  });
55
67
  }
68
+ finalize() {
69
+ if (this.isFinal) {
70
+ return;
71
+ }
72
+ const operationalResponse = this.operationalResponse ?? (this.operationalResponse = this.responseModel ?? null);
73
+ operationalResponse?.finalize();
74
+ super.finalize();
75
+ }
56
76
  static Tag = CommandElement.Tag;
57
77
  static requiresId = true;
58
78
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/models/CommandModel.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAE/B,SAAS,kBAAkB;AAEpB,MAAM,qBAAqB,WAAqD;AAAA,EAC1E,MAA0B,eAAe;AAAA,EAClD;AAAA,EACA;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,CAAC,CAAC,KAAK,gBAAgB;AAAA,EAClC;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK,uBAAuB,eAAe,UAAU;AAAA,EAChE;AAAA,EAEA,IAAI,aAAa;AACb,WAAO,KAAK,uBAAuB,eAAe,UAAU;AAAA,EAChE;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,IAAI,eAAe,EAAE,aAAa,IAAI;AAAA,EACjD;AAAA,EAEA,IAAI,qBAAqB;AACrB,WAAO,KAAK,aAAc,KAAK,MAAmC;AAAA,EACtE;AAAA,EAEA,IAAa,iBAAiB;AAC1B,WAAO,EAAE,GAAG,MAAM,gBAAgB,IAAI,KAAK,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAa,gBAAgB;AAGzB,QAAI,KAAK,cAAc,QAAW;AAC9B,UAAI,KAAK,KAAK,SAAS,UAAU,GAAG;AAChC,eAAO,eAAe,UAAU;AAAA,MACpC;AACA,aAAO,eAAe,UAAU;AAAA,IACpC;AAEA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,YAAY,eAA+C,UAAiD;AACxG,UAAM,YAAY,GAAG,QAAQ;AAE7B,SAAK,YAAY,WAAW;AAC5B,SAAK,WAAW,WAAW;AAAA,EAC/B;AAAA,EAES,UAAU,gBAAgB,OAAO,OAAiC;AACvE,WAAO,MAAM,UAAU,eAAe;AAAA,MAClC,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AAAA,EAEA,OAAO,MAAM,eAAe;AAAA,EAC5B,OAAO,aAAa;AACxB;AAEA,aAAa,SAAS;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAE/B,SAAS,kBAAkB;AAEpB,MAAM,qBAAqB,WAAqD;AAAA,EAC1E,MAA0B,eAAe;AAAA,EAClD;AAAA,EACA;AAAA,EAEA;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,CAAC,CAAC,KAAK,gBAAgB;AAAA,EAClC;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK,uBAAuB,eAAe,UAAU;AAAA,EAChE;AAAA,EAEA,IAAI,aAAa;AACb,WAAO,KAAK,uBAAuB,eAAe,UAAU;AAAA,EAChE;AAAA,EAEA,IAAI,WAAW,YAAqB;AAChC,SAAK,YAAY,aAAa,eAAe,UAAU,WAAW,eAAe,UAAU;AAAA,EAC/F;AAAA,EAEA,IAAI,gBAAgB;AAChB,YAAQ,KAAK,qBAAqB;AAAA,MAC9B,KAAK;AACD,eAAO,IAAI,eAAe,EAAE,aAAa,IAAI;AAAA,MAEjD,KAAK;AACD,eAAO;AAAA,MAEX;AACI,eAAO,KAAK;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,qBAAqB;AACrB,WAAO,KAAK,aAAc,KAAK,MAAmC;AAAA,EACtE;AAAA,EAEA,IAAa,iBAAiB;AAC1B,WAAO,EAAE,GAAG,MAAM,gBAAgB,IAAI,KAAK,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAa,gBAAgB;AAGzB,QAAI,KAAK,cAAc,QAAW;AAC9B,UAAI,KAAK,KAAK,SAAS,UAAU,GAAG;AAChC,eAAO,eAAe,UAAU;AAAA,MACpC;AACA,aAAO,eAAe,UAAU;AAAA,IACpC;AAEA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,YAAY,eAAwC,UAAiD;AACjG,UAAM,YAAY,GAAG,QAAQ;AAE7B,SAAK,YAAY,WAAW;AAC5B,SAAK,WAAW,WAAW;AAC3B,SAAK,sBAAsB,WAAW;AAAA,EAC1C;AAAA,EAES,UAAU,gBAAgB,OAAO,OAAiC;AACvE,WAAO,MAAM,UAAU,eAAe;AAAA,MAClC,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AAAA,EAES,WAAW;AAChB,QAAI,KAAK,SAAS;AACd;AAAA,IACJ;AAEA,UAAM,sBAAsB,KAAK,wBAAwB,KAAK,sBAAsB,KAAK,iBAAiB;AAC1G,yBAAqB,SAAS;AAE9B,UAAM,SAAS;AAAA,EACnB;AAAA,EAEA,OAAO,MAAM,eAAe;AAAA,EAC5B,OAAO,aAAa;AACxB;AAMA,aAAa,SAAS;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/model",
3
- "version": "0.16.1",
3
+ "version": "0.16.2-alpha.0-20260114-b38c6b796",
4
4
  "description": "Matter data model",
5
5
  "keywords": [
6
6
  "iot",
@@ -31,11 +31,11 @@
31
31
  "embed-examples": "embedme **/README.md"
32
32
  },
33
33
  "dependencies": {
34
- "@matter/general": "0.16.1"
34
+ "@matter/general": "0.16.2-alpha.0-20260114-b38c6b796"
35
35
  },
36
36
  "devDependencies": {
37
- "@matter/testing": "0.16.1",
38
- "@matter/tools": "0.16.1"
37
+ "@matter/testing": "0.16.2-alpha.0-20260114-b38c6b796",
38
+ "@matter/tools": "0.16.2-alpha.0-20260114-b38c6b796"
39
39
  },
40
40
  "files": [
41
41
  "dist/**/*",
@@ -6,8 +6,10 @@
6
6
 
7
7
  import { InvalidMetadataError, MetadataConflictError } from "#decoration/errors.js";
8
8
  import type { ClassSemantics } from "#decoration/semantics/ClassSemantics.js";
9
+ import { FieldSemantics } from "#decoration/semantics/FieldSemantics.js";
9
10
  import { Semantics } from "#decoration/semantics/Semantics.js";
10
11
  import { Decorator } from "#general";
12
+ import { CommandModel } from "#models/CommandModel.js";
11
13
  import { Model } from "#models/Model.js";
12
14
  import { Schema } from "#models/Schema.js";
13
15
 
@@ -16,15 +18,41 @@ import { Schema } from "#models/Schema.js";
16
18
  */
17
19
  export function element<
18
20
  T extends Decorator.Collector | Decorator.ClassCollector | Decorator.PropertyCollector | Decorator.MethodCollector,
19
- >(kind: Model.ConcreteType, ...modifiers: element.Modifier<T>[]) {
21
+ >(kind: element.ElementKind, ...modifiers: element.Modifier<T>[]) {
22
+ let modelType: Model.ConcreteType;
23
+ if (kind.Tag === "response") {
24
+ modelType = CommandModel;
25
+ } else {
26
+ modelType = kind;
27
+ }
28
+
20
29
  // We want to force the element to the specific type. Do this explicitly unless the initial modifier will do it for
21
30
  // us. This prevents us from creating a separate local model if there is no further annotation
22
- const forceType = !(modifiers[0] instanceof kind);
31
+ const forceType = !(modifiers[0] instanceof modelType);
23
32
 
24
33
  return Decorator((target: any, context: DecoratorContext) => {
25
- const semantics = Semantics.of(context);
34
+ let semantics = Semantics.of(context);
35
+
36
+ if (kind.Tag === "response") {
37
+ semantics.modelType = CommandModel;
38
+
39
+ if (semantics.response === undefined) {
40
+ if (typeof context.name !== "string") {
41
+ throw new InvalidMetadataError(
42
+ `Cannot specify response for ${String(context.name) || "(anonymous)"} because element name is ${typeof context.name}`,
43
+ );
44
+ }
45
+
46
+ const response = new FieldSemantics(semantics.owner, context.name);
47
+ response.modelType = CommandModel;
48
+ response.mutableModel.name = `${context.name}Response`;
49
+ (response.mutableModel as CommandModel).isResponse = true;
50
+ semantics = semantics.response = response;
51
+ }
52
+ }
53
+
26
54
  if (forceType) {
27
- semantics.modelType = kind;
55
+ semantics.modelType = modelType;
28
56
  }
29
57
 
30
58
  if (context.kind === "class") {
@@ -49,7 +77,9 @@ export function element<
49
77
  const subresult = (modifier as any)(target, context);
50
78
  if (subresult) {
51
79
  if (result) {
52
- throw new MetadataConflictError(`Multiple modifiers returned a value`);
80
+ throw new MetadataConflictError(
81
+ `Multiple modifiers returned a value for ${String(context.name || "(anonymous)")}`,
82
+ );
53
83
  }
54
84
  result = subresult;
55
85
  }
@@ -75,7 +105,9 @@ export function element<
75
105
  break;
76
106
  }
77
107
 
78
- throw new InvalidMetadataError(`Unsupported modifier ${modifier}`);
108
+ throw new InvalidMetadataError(
109
+ `Unsupported modifier ${modifier} for ${String(context.name || "(anonymous)")}`,
110
+ );
79
111
  }
80
112
 
81
113
  return result;
@@ -125,4 +157,12 @@ export namespace element {
125
157
  | Decorator.PropertyCollector
126
158
  | Decorator.MethodCollector,
127
159
  > = Model.ConcreteType | Model | NewableFunction | number | string | T;
160
+
161
+ /**
162
+ * Specifies the type of model associated with an element.
163
+ *
164
+ * This is a concrete model class except in the case of responses which we special case to differentiate between
165
+ * commands a responses.
166
+ */
167
+ export type ElementKind = Model.ConcreteType | { Tag: "response" };
128
168
  }
@@ -6,8 +6,10 @@
6
6
 
7
7
  export * from "./attribute.js";
8
8
  export * from "./cluster.js";
9
+ export * from "./command.js";
9
10
  export * from "./datatype.js";
10
11
  export * from "./element.js";
12
+ export * from "./event.js";
11
13
  export * from "./field.js";
12
14
  export * from "./listOf.js";
13
15
  export * from "./mandatory.js";