@matter/node 0.16.0-alpha.0-20251030-e9ca79f93 → 0.16.0-alpha.0-20251031-0f308af69

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ValueValidator.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/ValueValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAe5E;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,GAAG,SAAS,CAyE/G"}
1
+ {"version":3,"file":"ValueValidator.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/ValueValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgB5E;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,GAAG,SAAS,CA4E/G"}
@@ -39,8 +39,8 @@ function ValueValidator(schema, supervisor) {
39
39
  return createStructValidator(schema, supervisor);
40
40
  }
41
41
  let validator;
42
- const metatype = schema.effectiveMetatype;
43
- switch (metatype) {
42
+ const metabase = schema.metabase;
43
+ switch (metabase?.metatype) {
44
44
  case import_model.Metatype.enum:
45
45
  validator = createEnumValidator(schema, supervisor);
46
46
  break;
@@ -48,6 +48,8 @@ function ValueValidator(schema, supervisor) {
48
48
  validator = createBitmapValidator(schema, supervisor);
49
49
  break;
50
50
  case import_model.Metatype.integer:
51
+ validator = createIntegerValidator(schema, supervisor, metabase.name);
52
+ break;
51
53
  case import_model.Metatype.float:
52
54
  validator = createSimpleValidator(schema, supervisor, import_assertions.assertNumeric);
53
55
  break;
@@ -85,7 +87,7 @@ function ValueValidator(schema, supervisor) {
85
87
  default:
86
88
  throw new import_protocol.SchemaImplementationError(
87
89
  (0, import_model.DataModelPath)(schema.path),
88
- `Unsupported validation metatype ${metatype}`
90
+ `Unsupported validation metatype ${metabase?.metatype}`
89
91
  );
90
92
  }
91
93
  validator = createNullValidator(schema, validator);
@@ -111,7 +113,7 @@ function createEnumValidator(schema, supervisor) {
111
113
  return (value, session, location) => {
112
114
  (0, import_assertions.assertNumber)(value, location);
113
115
  if (!valid.has(value)) {
114
- throw new import_protocol.DatatypeError(location, "defined in enum", value, import_types.StatusCode.ConstraintError);
116
+ throw new import_protocol.DatatypeError(location, "defined in enum", value, import_types.Status.ConstraintError);
115
117
  }
116
118
  constraintValidator?.(value, session, location);
117
119
  };
@@ -170,6 +172,18 @@ function createSimpleValidator(schema, supervisor, validateType) {
170
172
  validateConstraint?.(value, session, location);
171
173
  };
172
174
  }
175
+ function createIntegerValidator(schema, supervisor, name) {
176
+ let assertion;
177
+ if (schema.effectiveQuality.nullable) {
178
+ assertion = import_assertions.assertInt.nullable[name];
179
+ } else {
180
+ assertion = import_assertions.assertInt.notNullable[name];
181
+ }
182
+ if (assertion === void 0) {
183
+ throw new import_general.InternalError(`No integer assertion implemented for integer type ${name}`);
184
+ }
185
+ return createSimpleValidator(schema, supervisor, assertion);
186
+ }
173
187
  function createStructValidator(schema, supervisor) {
174
188
  const validators = {};
175
189
  for (const field of supervisor.membersOf(schema)) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/behavior/state/validation/ValueValidator.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -14,4 +14,17 @@ export declare function assertString(value: Val, path: SchemaErrorPath): asserts
14
14
  export declare function assertBytes(value: Val, path: SchemaErrorPath): asserts value is Bytes;
15
15
  export declare function assertSequence(value: Val, path: SchemaErrorPath): asserts value is string | Bytes;
16
16
  export declare function assertArray(value: Val, path: SchemaErrorPath): asserts value is Val[];
17
+ export declare const assertInt: {
18
+ /**
19
+ * Assertions for each integer type that is not nullable.
20
+ */
21
+ notNullable: Record<string, typeof assertNumeric | undefined>;
22
+ /**
23
+ * Assertions for nullable integer types.
24
+ *
25
+ * These are separate from the "not nullable" assertions because Matter reserves a high or low value (for unsigned
26
+ * and signed, respectively) to indicate the field is null.
27
+ */
28
+ nullable: Record<string, typeof assertNumeric | undefined>;
29
+ };
17
30
  //# sourceMappingURL=assertions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/assertions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAiB,GAAG,EAAE,MAAM,WAAW,CAAC;AAE/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKxF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAK3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,MAAM,CAKjG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAKrF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,KAAK,CAKjG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,CAIrF"}
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/assertions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAoC,GAAG,EAAE,MAAM,WAAW,CAAC;AAElE,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKxF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAK3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,MAAM,CAKjG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAKrF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,KAAK,CAKjG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,CAIrF;AAED,eAAO,MAAM,SAAS;IAClB;;OAEG;iBACgB,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,GAAG,SAAS,CAAC;IAEnE;;;;;OAKG;cACa,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,GAAG,SAAS,CAAC;CACnE,CAAC"}
@@ -21,6 +21,7 @@ __export(assertions_exports, {
21
21
  assertArray: () => assertArray,
22
22
  assertBoolean: () => assertBoolean,
23
23
  assertBytes: () => assertBytes,
24
+ assertInt: () => assertInt,
24
25
  assertNumber: () => assertNumber,
25
26
  assertNumeric: () => assertNumeric,
26
27
  assertObject: () => assertObject,
@@ -82,4 +83,47 @@ function assertArray(value, path) {
82
83
  throw new import_protocol.DatatypeError(path, "an array", value);
83
84
  }
84
85
  }
86
+ const assertInt = {
87
+ /**
88
+ * Assertions for each integer type that is not nullable.
89
+ */
90
+ notNullable: {},
91
+ /**
92
+ * Assertions for nullable integer types.
93
+ *
94
+ * These are separate from the "not nullable" assertions because Matter reserves a high or low value (for unsigned
95
+ * and signed, respectively) to indicate the field is null.
96
+ */
97
+ nullable: {}
98
+ };
99
+ for (let i = 1n; i < 9n; i++) {
100
+ const intName = `int${i * 8n}`;
101
+ const uintName = `u${intName}`;
102
+ const numValues = 2n ** (i * 8n);
103
+ const unsignedMax = numValues - 1n;
104
+ assertInt.notNullable[uintName] = createIntAssertion(uintName, 0n, unsignedMax);
105
+ assertInt.nullable[uintName] = createIntAssertion(`nullable ${uintName}`, 0n, unsignedMax - 1n);
106
+ const halfNumValues = numValues / 2n;
107
+ const signedMax = halfNumValues - 1n;
108
+ const signedMin = -halfNumValues;
109
+ assertInt.notNullable[intName] = createIntAssertion(intName, signedMin, signedMax);
110
+ assertInt.nullable[intName] = createIntAssertion(`nullable ${intName}`, signedMin + 1n, signedMax);
111
+ }
112
+ function createIntAssertion(name, lowerBoundInclusive, upperBoundExclusive) {
113
+ if (lowerBoundInclusive < Number.MIN_SAFE_INTEGER || upperBoundExclusive > Number.MAX_SAFE_INTEGER) {
114
+ return createVarIntAssertion(name, lowerBoundInclusive, upperBoundExclusive);
115
+ }
116
+ return createVarIntAssertion(name, Number(lowerBoundInclusive), Number(upperBoundExclusive));
117
+ }
118
+ function createVarIntAssertion(name, min, max) {
119
+ return function assertInt2(value, path) {
120
+ assertNumeric(value, path);
121
+ if (value < min) {
122
+ throw new import_protocol.IntegerRangeError(path, `Value ${value} is below the ${name} minimum of ${min}`);
123
+ }
124
+ if (value > max) {
125
+ throw new import_protocol.IntegerRangeError(path, `Value ${value} is above the ${name} maximum of ${max}`);
126
+ }
127
+ };
128
+ }
85
129
  //# sourceMappingURL=assertions.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/behavior/state/validation/assertions.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAgC;AAEhC,sBAAmC;AARnC;AAAA;AAAA;AAAA;AAAA;AAUO,SAAS,aAAa,OAAY,MAAgD;AACrF,MAAI,OAAO,SAAS,KAAK,GAAG;AACxB;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,YAAY,KAAK;AACnD;AAEO,SAAS,cAAc,OAAY,MAAgD;AACtF,MAAI,OAAO,UAAU,aAAa,UAAU,KAAK,UAAU,GAAG;AAC1D;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,aAAa,KAAK;AACpD;AAEO,SAAS,aAAa,OAAY,MAAoD;AACzF,UAAI,yBAAS,KAAK,GAAG;AACjB;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,aAAa,KAAK;AACpD;AAEO,SAAS,cAAc,OAAY,MAAyD;AAC/F,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AACxD;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,sBAAsB,KAAK;AAC7D;AAEO,SAAS,aAAa,OAAY,MAAgD;AACrF,MAAI,OAAO,UAAU,UAAU;AAC3B;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,YAAY,KAAK;AACnD;AAEO,SAAS,YAAY,OAAY,MAA+C;AACnF,MAAI,qBAAM,QAAQ,KAAK,GAAG;AACtB;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,gBAAgB,KAAK;AACvD;AAEO,SAAS,eAAe,OAAY,MAAwD;AAC/F,MAAI,OAAO,UAAU,YAAY,qBAAM,QAAQ,KAAK,GAAG;AACnD;AAAA,EACJ;AACA,QAAM,IAAI,8BAAc,MAAM,0BAA0B,KAAK;AACjE;AAEO,SAAS,YAAY,OAAY,MAA+C;AACnF,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,UAAM,IAAI,8BAAc,MAAM,YAAY,KAAK;AAAA,EACnD;AACJ;",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["assertInt"]
6
6
  }
@@ -19,7 +19,7 @@ export declare class EndpointContainer<T extends Endpoint = Endpoint> implements
19
19
  has(endpoint: T): boolean;
20
20
  get added(): import("#general").Observable<[T], void>;
21
21
  get deleted(): import("#general").Observable<[T], void>;
22
- get empty(): import("#general").ObservableValue<[boolean]>;
22
+ get empty(): import("#general").ObservableValue<[boolean], void>;
23
23
  get size(): number;
24
24
  map<T2>(fn: (part: T) => T2): T2[];
25
25
  filter(predicate: (part: T) => boolean): T[];
@@ -1 +1 @@
1
- {"version":3,"file":"EndpointContainer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/properties/EndpointContainer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwB,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CACxD,YAAW,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;;IAwH1D,CAAC,UAAU,CAAC,KAAK,CAAC;gBAnHV,QAAQ,EAAE,QAAQ;IAI9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgBvB,GAAG,CAAC,QAAQ,EAAE,CAAC;IAef,MAAM,CAAC,QAAQ,EAAE,CAAC;IAIlB,KAAK;IAIL,GAAG,CAAC,QAAQ,EAAE,CAAC;IAIf,IAAI,KAAK,6CAER;IAED,IAAI,OAAO,6CAEV;IAED,IAAI,KAAK,kDAER;IAED,IAAI,IAAI,WAEP;IAED,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;IAI3B,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAItC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIpC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIhC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAOhD,SAAS,KAAK,KAAK,uDAElB;CAKJ"}
1
+ {"version":3,"file":"EndpointContainer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/properties/EndpointContainer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwB,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CACxD,YAAW,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;;IAwH1D,CAAC,UAAU,CAAC,KAAK,CAAC;gBAnHV,QAAQ,EAAE,QAAQ;IAI9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgBvB,GAAG,CAAC,QAAQ,EAAE,CAAC;IAef,MAAM,CAAC,QAAQ,EAAE,CAAC;IAIlB,KAAK;IAIL,GAAG,CAAC,QAAQ,EAAE,CAAC;IAIf,IAAI,KAAK,6CAER;IAED,IAAI,OAAO,6CAEV;IAED,IAAI,KAAK,wDAER;IAED,IAAI,IAAI,WAEP;IAED,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;IAI3B,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAItC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIpC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIhC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAOhD,SAAS,KAAK,KAAK,uDAElB;CAKJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValueValidator.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/ValueValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAe5E;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,GAAG,SAAS,CAyE/G"}
1
+ {"version":3,"file":"ValueValidator.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/ValueValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgB5E;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,GAAG,SAAS,CA4E/G"}
@@ -3,15 +3,16 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { camelize } from "#general";
6
+ import { camelize, InternalError } from "#general";
7
7
  import { AttributeModel, ClusterModel, DataModelPath, FeatureMap, Metatype } from "#model";
8
8
  import { ConformanceError, DatatypeError, SchemaImplementationError, Val } from "#protocol";
9
- import { StatusCode } from "#types";
9
+ import { Status } from "#types";
10
10
  import { Internal } from "../managed/Internal.js";
11
11
  import {
12
12
  assertArray,
13
13
  assertBoolean,
14
14
  assertBytes,
15
+ assertInt,
15
16
  assertNumber,
16
17
  assertNumeric,
17
18
  assertObject,
@@ -24,8 +25,8 @@ function ValueValidator(schema, supervisor) {
24
25
  return createStructValidator(schema, supervisor);
25
26
  }
26
27
  let validator;
27
- const metatype = schema.effectiveMetatype;
28
- switch (metatype) {
28
+ const metabase = schema.metabase;
29
+ switch (metabase?.metatype) {
29
30
  case Metatype.enum:
30
31
  validator = createEnumValidator(schema, supervisor);
31
32
  break;
@@ -33,6 +34,8 @@ function ValueValidator(schema, supervisor) {
33
34
  validator = createBitmapValidator(schema, supervisor);
34
35
  break;
35
36
  case Metatype.integer:
37
+ validator = createIntegerValidator(schema, supervisor, metabase.name);
38
+ break;
36
39
  case Metatype.float:
37
40
  validator = createSimpleValidator(schema, supervisor, assertNumeric);
38
41
  break;
@@ -70,7 +73,7 @@ function ValueValidator(schema, supervisor) {
70
73
  default:
71
74
  throw new SchemaImplementationError(
72
75
  DataModelPath(schema.path),
73
- `Unsupported validation metatype ${metatype}`
76
+ `Unsupported validation metatype ${metabase?.metatype}`
74
77
  );
75
78
  }
76
79
  validator = createNullValidator(schema, validator);
@@ -96,7 +99,7 @@ function createEnumValidator(schema, supervisor) {
96
99
  return (value, session, location) => {
97
100
  assertNumber(value, location);
98
101
  if (!valid.has(value)) {
99
- throw new DatatypeError(location, "defined in enum", value, StatusCode.ConstraintError);
102
+ throw new DatatypeError(location, "defined in enum", value, Status.ConstraintError);
100
103
  }
101
104
  constraintValidator?.(value, session, location);
102
105
  };
@@ -155,6 +158,18 @@ function createSimpleValidator(schema, supervisor, validateType) {
155
158
  validateConstraint?.(value, session, location);
156
159
  };
157
160
  }
161
+ function createIntegerValidator(schema, supervisor, name) {
162
+ let assertion;
163
+ if (schema.effectiveQuality.nullable) {
164
+ assertion = assertInt.nullable[name];
165
+ } else {
166
+ assertion = assertInt.notNullable[name];
167
+ }
168
+ if (assertion === void 0) {
169
+ throw new InternalError(`No integer assertion implemented for integer type ${name}`);
170
+ }
171
+ return createSimpleValidator(schema, supervisor, assertion);
172
+ }
158
173
  function createStructValidator(schema, supervisor) {
159
174
  const validators = {};
160
175
  for (const field of supervisor.membersOf(schema)) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/behavior/state/validation/ValueValidator.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -14,4 +14,17 @@ export declare function assertString(value: Val, path: SchemaErrorPath): asserts
14
14
  export declare function assertBytes(value: Val, path: SchemaErrorPath): asserts value is Bytes;
15
15
  export declare function assertSequence(value: Val, path: SchemaErrorPath): asserts value is string | Bytes;
16
16
  export declare function assertArray(value: Val, path: SchemaErrorPath): asserts value is Val[];
17
+ export declare const assertInt: {
18
+ /**
19
+ * Assertions for each integer type that is not nullable.
20
+ */
21
+ notNullable: Record<string, typeof assertNumeric | undefined>;
22
+ /**
23
+ * Assertions for nullable integer types.
24
+ *
25
+ * These are separate from the "not nullable" assertions because Matter reserves a high or low value (for unsigned
26
+ * and signed, respectively) to indicate the field is null.
27
+ */
28
+ nullable: Record<string, typeof assertNumeric | undefined>;
29
+ };
17
30
  //# sourceMappingURL=assertions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/assertions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAiB,GAAG,EAAE,MAAM,WAAW,CAAC;AAE/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKxF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAK3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,MAAM,CAKjG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAKrF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,KAAK,CAKjG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,CAIrF"}
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../../../../src/behavior/state/validation/assertions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAoC,GAAG,EAAE,MAAM,WAAW,CAAC;AAElE,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKxF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAK3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,MAAM,CAKjG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAKvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAKrF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,GAAG,KAAK,CAKjG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,CAIrF;AAED,eAAO,MAAM,SAAS;IAClB;;OAEG;iBACgB,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,GAAG,SAAS,CAAC;IAEnE;;;;;OAKG;cACa,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,GAAG,SAAS,CAAC;CACnE,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Bytes, isObject } from "#general";
7
- import { DatatypeError } from "#protocol";
7
+ import { DatatypeError, IntegerRangeError } from "#protocol";
8
8
  function assertNumber(value, path) {
9
9
  if (Number.isFinite(value)) {
10
10
  return;
@@ -52,10 +52,54 @@ function assertArray(value, path) {
52
52
  throw new DatatypeError(path, "an array", value);
53
53
  }
54
54
  }
55
+ const assertInt = {
56
+ /**
57
+ * Assertions for each integer type that is not nullable.
58
+ */
59
+ notNullable: {},
60
+ /**
61
+ * Assertions for nullable integer types.
62
+ *
63
+ * These are separate from the "not nullable" assertions because Matter reserves a high or low value (for unsigned
64
+ * and signed, respectively) to indicate the field is null.
65
+ */
66
+ nullable: {}
67
+ };
68
+ for (let i = 1n; i < 9n; i++) {
69
+ const intName = `int${i * 8n}`;
70
+ const uintName = `u${intName}`;
71
+ const numValues = 2n ** (i * 8n);
72
+ const unsignedMax = numValues - 1n;
73
+ assertInt.notNullable[uintName] = createIntAssertion(uintName, 0n, unsignedMax);
74
+ assertInt.nullable[uintName] = createIntAssertion(`nullable ${uintName}`, 0n, unsignedMax - 1n);
75
+ const halfNumValues = numValues / 2n;
76
+ const signedMax = halfNumValues - 1n;
77
+ const signedMin = -halfNumValues;
78
+ assertInt.notNullable[intName] = createIntAssertion(intName, signedMin, signedMax);
79
+ assertInt.nullable[intName] = createIntAssertion(`nullable ${intName}`, signedMin + 1n, signedMax);
80
+ }
81
+ function createIntAssertion(name, lowerBoundInclusive, upperBoundExclusive) {
82
+ if (lowerBoundInclusive < Number.MIN_SAFE_INTEGER || upperBoundExclusive > Number.MAX_SAFE_INTEGER) {
83
+ return createVarIntAssertion(name, lowerBoundInclusive, upperBoundExclusive);
84
+ }
85
+ return createVarIntAssertion(name, Number(lowerBoundInclusive), Number(upperBoundExclusive));
86
+ }
87
+ function createVarIntAssertion(name, min, max) {
88
+ return function assertInt2(value, path) {
89
+ assertNumeric(value, path);
90
+ if (value < min) {
91
+ throw new IntegerRangeError(path, `Value ${value} is below the ${name} minimum of ${min}`);
92
+ }
93
+ if (value > max) {
94
+ throw new IntegerRangeError(path, `Value ${value} is above the ${name} maximum of ${max}`);
95
+ }
96
+ };
97
+ }
55
98
  export {
56
99
  assertArray,
57
100
  assertBoolean,
58
101
  assertBytes,
102
+ assertInt,
59
103
  assertNumber,
60
104
  assertNumeric,
61
105
  assertObject,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/behavior/state/validation/assertions.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,gBAAgB;AAEhC,SAAS,qBAA0B;AAE5B,SAAS,aAAa,OAAY,MAAgD;AACrF,MAAI,OAAO,SAAS,KAAK,GAAG;AACxB;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,YAAY,KAAK;AACnD;AAEO,SAAS,cAAc,OAAY,MAAgD;AACtF,MAAI,OAAO,UAAU,aAAa,UAAU,KAAK,UAAU,GAAG;AAC1D;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,aAAa,KAAK;AACpD;AAEO,SAAS,aAAa,OAAY,MAAoD;AACzF,MAAI,SAAS,KAAK,GAAG;AACjB;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,aAAa,KAAK;AACpD;AAEO,SAAS,cAAc,OAAY,MAAyD;AAC/F,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AACxD;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,sBAAsB,KAAK;AAC7D;AAEO,SAAS,aAAa,OAAY,MAAgD;AACrF,MAAI,OAAO,UAAU,UAAU;AAC3B;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,YAAY,KAAK;AACnD;AAEO,SAAS,YAAY,OAAY,MAA+C;AACnF,MAAI,MAAM,QAAQ,KAAK,GAAG;AACtB;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,gBAAgB,KAAK;AACvD;AAEO,SAAS,eAAe,OAAY,MAAwD;AAC/F,MAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AACnD;AAAA,EACJ;AACA,QAAM,IAAI,cAAc,MAAM,0BAA0B,KAAK;AACjE;AAEO,SAAS,YAAY,OAAY,MAA+C;AACnF,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,UAAM,IAAI,cAAc,MAAM,YAAY,KAAK;AAAA,EACnD;AACJ;",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["assertInt"]
6
6
  }
@@ -19,7 +19,7 @@ export declare class EndpointContainer<T extends Endpoint = Endpoint> implements
19
19
  has(endpoint: T): boolean;
20
20
  get added(): import("#general").Observable<[T], void>;
21
21
  get deleted(): import("#general").Observable<[T], void>;
22
- get empty(): import("#general").ObservableValue<[boolean]>;
22
+ get empty(): import("#general").ObservableValue<[boolean], void>;
23
23
  get size(): number;
24
24
  map<T2>(fn: (part: T) => T2): T2[];
25
25
  filter(predicate: (part: T) => boolean): T[];
@@ -1 +1 @@
1
- {"version":3,"file":"EndpointContainer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/properties/EndpointContainer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwB,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CACxD,YAAW,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;;IAwH1D,CAAC,UAAU,CAAC,KAAK,CAAC;gBAnHV,QAAQ,EAAE,QAAQ;IAI9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgBvB,GAAG,CAAC,QAAQ,EAAE,CAAC;IAef,MAAM,CAAC,QAAQ,EAAE,CAAC;IAIlB,KAAK;IAIL,GAAG,CAAC,QAAQ,EAAE,CAAC;IAIf,IAAI,KAAK,6CAER;IAED,IAAI,OAAO,6CAEV;IAED,IAAI,KAAK,kDAER;IAED,IAAI,IAAI,WAEP;IAED,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;IAI3B,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAItC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIpC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIhC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAOhD,SAAS,KAAK,KAAK,uDAElB;CAKJ"}
1
+ {"version":3,"file":"EndpointContainer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/properties/EndpointContainer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwB,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CACxD,YAAW,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;;IAwH1D,CAAC,UAAU,CAAC,KAAK,CAAC;gBAnHV,QAAQ,EAAE,QAAQ;IAI9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgBvB,GAAG,CAAC,QAAQ,EAAE,CAAC;IAef,MAAM,CAAC,QAAQ,EAAE,CAAC;IAIlB,KAAK;IAIL,GAAG,CAAC,QAAQ,EAAE,CAAC;IAIf,IAAI,KAAK,6CAER;IAED,IAAI,OAAO,6CAEV;IAED,IAAI,KAAK,wDAER;IAED,IAAI,IAAI,WAEP;IAED,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;IAI3B,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAItC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIpC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAIhC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAOhD,SAAS,KAAK,KAAK,uDAElB;CAKJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/node",
3
- "version": "0.16.0-alpha.0-20251030-e9ca79f93",
3
+ "version": "0.16.0-alpha.0-20251031-0f308af69",
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.16.0-alpha.0-20251030-e9ca79f93",
46
- "@matter/model": "0.16.0-alpha.0-20251030-e9ca79f93",
47
- "@matter/types": "0.16.0-alpha.0-20251030-e9ca79f93",
48
- "@matter/protocol": "0.16.0-alpha.0-20251030-e9ca79f93"
45
+ "@matter/general": "0.16.0-alpha.0-20251031-0f308af69",
46
+ "@matter/model": "0.16.0-alpha.0-20251031-0f308af69",
47
+ "@matter/types": "0.16.0-alpha.0-20251031-0f308af69",
48
+ "@matter/protocol": "0.16.0-alpha.0-20251031-0f308af69"
49
49
  },
50
50
  "devDependencies": {
51
- "@matter/tools": "0.16.0-alpha.0-20251030-e9ca79f93",
52
- "@matter/testing": "0.16.0-alpha.0-20251030-e9ca79f93"
51
+ "@matter/tools": "0.16.0-alpha.0-20251031-0f308af69",
52
+ "@matter/testing": "0.16.0-alpha.0-20251031-0f308af69"
53
53
  },
54
54
  "files": [
55
55
  "dist/**/*",
@@ -4,11 +4,11 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { camelize } from "#general";
7
+ import { camelize, InternalError } from "#general";
8
8
  import type { Schema } from "#model";
9
9
  import { AttributeModel, ClusterModel, DataModelPath, FeatureMap, Metatype, ValueModel } from "#model";
10
10
  import { ConformanceError, DatatypeError, SchemaImplementationError, Val } from "#protocol";
11
- import { StatusCode } from "#types";
11
+ import { Status } from "#types";
12
12
  import { RootSupervisor } from "../../supervision/RootSupervisor.js";
13
13
  import type { ValueSupervisor } from "../../supervision/ValueSupervisor.js";
14
14
  import { Internal } from "../managed/Internal.js";
@@ -16,6 +16,7 @@ import {
16
16
  assertArray,
17
17
  assertBoolean,
18
18
  assertBytes,
19
+ assertInt,
19
20
  assertNumber,
20
21
  assertNumeric,
21
22
  assertObject,
@@ -37,8 +38,8 @@ export function ValueValidator(schema: Schema, supervisor: RootSupervisor): Valu
37
38
  }
38
39
 
39
40
  let validator: ValueSupervisor.Validate | undefined;
40
- const metatype = schema.effectiveMetatype;
41
- switch (metatype) {
41
+ const metabase = schema.metabase;
42
+ switch (metabase?.metatype) {
42
43
  case Metatype.enum:
43
44
  validator = createEnumValidator(schema, supervisor);
44
45
  break;
@@ -48,6 +49,9 @@ export function ValueValidator(schema: Schema, supervisor: RootSupervisor): Valu
48
49
  break;
49
50
 
50
51
  case Metatype.integer:
52
+ validator = createIntegerValidator(schema, supervisor, metabase.name);
53
+ break;
54
+
51
55
  case Metatype.float:
52
56
  validator = createSimpleValidator(schema, supervisor, assertNumeric);
53
57
  break;
@@ -95,7 +99,7 @@ export function ValueValidator(schema: Schema, supervisor: RootSupervisor): Valu
95
99
  default:
96
100
  throw new SchemaImplementationError(
97
101
  DataModelPath((schema as unknown as Schema).path),
98
- `Unsupported validation metatype ${metatype}`,
102
+ `Unsupported validation metatype ${metabase?.metatype}`,
99
103
  );
100
104
  }
101
105
 
@@ -138,7 +142,7 @@ function createEnumValidator(schema: ValueModel, supervisor: RootSupervisor): Va
138
142
  return (value, session, location) => {
139
143
  assertNumber(value, location);
140
144
  if (!valid.has(value)) {
141
- throw new DatatypeError(location, "defined in enum", value, StatusCode.ConstraintError);
145
+ throw new DatatypeError(location, "defined in enum", value, Status.ConstraintError);
142
146
  }
143
147
 
144
148
  constraintValidator?.(value, session, location);
@@ -216,6 +220,21 @@ function createSimpleValidator(
216
220
  };
217
221
  }
218
222
 
223
+ function createIntegerValidator(schema: ValueModel, supervisor: RootSupervisor, name: string) {
224
+ let assertion;
225
+ if (schema.effectiveQuality.nullable) {
226
+ assertion = assertInt.nullable[name];
227
+ } else {
228
+ assertion = assertInt.notNullable[name];
229
+ }
230
+
231
+ if (assertion === undefined) {
232
+ throw new InternalError(`No integer assertion implemented for integer type ${name}`);
233
+ }
234
+
235
+ return createSimpleValidator(schema, supervisor, assertion);
236
+ }
237
+
219
238
  function createStructValidator(schema: Schema, supervisor: RootSupervisor): ValueSupervisor.Validate {
220
239
  const validators = {} as Record<string, ValueSupervisor.Validate>;
221
240
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  import { Bytes, isObject } from "#general";
8
8
  import { SchemaErrorPath } from "#model";
9
- import { DatatypeError, Val } from "#protocol";
9
+ import { DatatypeError, IntegerRangeError, Val } from "#protocol";
10
10
 
11
11
  export function assertNumber(value: Val, path: SchemaErrorPath): asserts value is number {
12
12
  if (Number.isFinite(value)) {
@@ -62,3 +62,56 @@ export function assertArray(value: Val, path: SchemaErrorPath): asserts value is
62
62
  throw new DatatypeError(path, "an array", value);
63
63
  }
64
64
  }
65
+
66
+ export const assertInt = {
67
+ /**
68
+ * Assertions for each integer type that is not nullable.
69
+ */
70
+ notNullable: {} as Record<string, typeof assertNumeric | undefined>,
71
+
72
+ /**
73
+ * Assertions for nullable integer types.
74
+ *
75
+ * These are separate from the "not nullable" assertions because Matter reserves a high or low value (for unsigned
76
+ * and signed, respectively) to indicate the field is null.
77
+ */
78
+ nullable: {} as Record<string, typeof assertNumeric | undefined>,
79
+ };
80
+
81
+ for (let i = 1n; i < 9n; i++) {
82
+ const intName = `int${i * 8n}`;
83
+ const uintName = `u${intName}`;
84
+
85
+ const numValues = 2n ** (i * 8n);
86
+ const unsignedMax = numValues - 1n;
87
+ assertInt.notNullable[uintName] = createIntAssertion(uintName, 0n, unsignedMax);
88
+ assertInt.nullable[uintName] = createIntAssertion(`nullable ${uintName}`, 0n, unsignedMax - 1n);
89
+
90
+ const halfNumValues = numValues / 2n;
91
+ const signedMax = halfNumValues - 1n;
92
+ const signedMin = -halfNumValues;
93
+ assertInt.notNullable[intName] = createIntAssertion(intName, signedMin, signedMax);
94
+ assertInt.nullable[intName] = createIntAssertion(`nullable ${intName}`, signedMin + 1n, signedMax);
95
+ }
96
+
97
+ function createIntAssertion(name: string, lowerBoundInclusive: bigint, upperBoundExclusive: bigint) {
98
+ if (lowerBoundInclusive < Number.MIN_SAFE_INTEGER || upperBoundExclusive > Number.MAX_SAFE_INTEGER) {
99
+ return createVarIntAssertion(name, lowerBoundInclusive, upperBoundExclusive);
100
+ }
101
+
102
+ return createVarIntAssertion(name, Number(lowerBoundInclusive), Number(upperBoundExclusive));
103
+ }
104
+
105
+ function createVarIntAssertion(name: string, min: bigint | number, max: bigint | number): typeof assertNumeric {
106
+ return function assertInt(value, path) {
107
+ assertNumeric(value, path);
108
+
109
+ if (value < min) {
110
+ throw new IntegerRangeError(path, `Value ${value} is below the ${name} minimum of ${min}`);
111
+ }
112
+
113
+ if (value > max) {
114
+ throw new IntegerRangeError(path, `Value ${value} is above the ${name} maximum of ${max}`);
115
+ }
116
+ };
117
+ }