@matter/model 0.12.0-alpha.0-20241228-9f74a0273 → 0.12.0-alpha.0-20241231-14ac774ba

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 (73) hide show
  1. package/dist/cjs/aspects/Constraint.d.ts +24 -15
  2. package/dist/cjs/aspects/Constraint.d.ts.map +1 -1
  3. package/dist/cjs/aspects/Constraint.js +268 -198
  4. package/dist/cjs/aspects/Constraint.js.map +2 -2
  5. package/dist/cjs/common/FieldValue.d.ts +10 -4
  6. package/dist/cjs/common/FieldValue.d.ts.map +1 -1
  7. package/dist/cjs/common/FieldValue.js +1 -1
  8. package/dist/cjs/common/FieldValue.js.map +1 -1
  9. package/dist/cjs/common/Metatype.d.ts +19 -1
  10. package/dist/cjs/common/Metatype.d.ts.map +1 -1
  11. package/dist/cjs/common/Metatype.js +171 -170
  12. package/dist/cjs/common/Metatype.js.map +1 -1
  13. package/dist/cjs/common/Specification.d.ts +1 -1
  14. package/dist/cjs/common/Specification.d.ts.map +1 -1
  15. package/dist/cjs/logic/ModelDiff.d.ts +40 -0
  16. package/dist/cjs/logic/ModelDiff.d.ts.map +1 -0
  17. package/dist/cjs/logic/ModelDiff.js +119 -0
  18. package/dist/cjs/logic/ModelDiff.js.map +6 -0
  19. package/dist/cjs/logic/definition-validation/ValueValidator.js +1 -1
  20. package/dist/cjs/logic/definition-validation/ValueValidator.js.map +1 -1
  21. package/dist/cjs/logic/index.d.ts +1 -0
  22. package/dist/cjs/logic/index.d.ts.map +1 -1
  23. package/dist/cjs/logic/index.js +1 -0
  24. package/dist/cjs/logic/index.js.map +1 -1
  25. package/dist/cjs/parser/Lexer.d.ts +3 -3
  26. package/dist/cjs/parser/Lexer.d.ts.map +1 -1
  27. package/dist/cjs/parser/Lexer.js +35 -31
  28. package/dist/cjs/parser/Lexer.js.map +1 -1
  29. package/dist/cjs/parser/Token.d.ts +5 -2
  30. package/dist/cjs/parser/Token.d.ts.map +1 -1
  31. package/dist/cjs/parser/TokenStream.js +2 -2
  32. package/dist/esm/aspects/Constraint.d.ts +24 -15
  33. package/dist/esm/aspects/Constraint.d.ts.map +1 -1
  34. package/dist/esm/aspects/Constraint.js +269 -199
  35. package/dist/esm/aspects/Constraint.js.map +2 -2
  36. package/dist/esm/common/FieldValue.d.ts +10 -4
  37. package/dist/esm/common/FieldValue.d.ts.map +1 -1
  38. package/dist/esm/common/FieldValue.js +1 -1
  39. package/dist/esm/common/FieldValue.js.map +1 -1
  40. package/dist/esm/common/Metatype.d.ts +19 -1
  41. package/dist/esm/common/Metatype.d.ts.map +1 -1
  42. package/dist/esm/common/Metatype.js +171 -170
  43. package/dist/esm/common/Metatype.js.map +1 -1
  44. package/dist/esm/common/Specification.d.ts +1 -1
  45. package/dist/esm/common/Specification.d.ts.map +1 -1
  46. package/dist/esm/logic/ModelDiff.d.ts +40 -0
  47. package/dist/esm/logic/ModelDiff.d.ts.map +1 -0
  48. package/dist/esm/logic/ModelDiff.js +99 -0
  49. package/dist/esm/logic/ModelDiff.js.map +6 -0
  50. package/dist/esm/logic/definition-validation/ValueValidator.js +1 -1
  51. package/dist/esm/logic/definition-validation/ValueValidator.js.map +1 -1
  52. package/dist/esm/logic/index.d.ts +1 -0
  53. package/dist/esm/logic/index.d.ts.map +1 -1
  54. package/dist/esm/logic/index.js +1 -0
  55. package/dist/esm/logic/index.js.map +1 -1
  56. package/dist/esm/parser/Lexer.d.ts +3 -3
  57. package/dist/esm/parser/Lexer.d.ts.map +1 -1
  58. package/dist/esm/parser/Lexer.js +35 -31
  59. package/dist/esm/parser/Lexer.js.map +1 -1
  60. package/dist/esm/parser/Token.d.ts +5 -2
  61. package/dist/esm/parser/Token.d.ts.map +1 -1
  62. package/dist/esm/parser/TokenStream.js +2 -2
  63. package/package.json +4 -4
  64. package/src/aspects/Constraint.ts +340 -215
  65. package/src/common/FieldValue.ts +10 -5
  66. package/src/common/Metatype.ts +200 -181
  67. package/src/common/Specification.ts +1 -1
  68. package/src/logic/ModelDiff.ts +150 -0
  69. package/src/logic/definition-validation/ValueValidator.ts +1 -1
  70. package/src/logic/index.ts +1 -0
  71. package/src/parser/Lexer.ts +38 -40
  72. package/src/parser/Token.ts +11 -1
  73. package/src/parser/TokenStream.ts +2 -2
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ElementTag } from "#common/ElementTag.js";
7
+ import { Model } from "#models/Model.js";
8
+ /**
9
+ * A high level summary of changes between two models.
10
+ */
11
+ export type ModelDiff = ModelDiff.Add | ModelDiff.Delete | ModelDiff.List | ModelDiff.Summary;
12
+ /**
13
+ * Diff two models.
14
+ */
15
+ export declare function ModelDiff(from: Model, to: Model, depth?: number): ModelDiff | undefined;
16
+ export declare namespace ModelDiff {
17
+ /**
18
+ * Convert a diff to a diagnostic for serialization.
19
+ */
20
+ function diagnosticOf(diff: ModelDiff | undefined): unknown;
21
+ interface Identity {
22
+ name: string;
23
+ tag: ElementTag;
24
+ }
25
+ interface Add extends Identity {
26
+ kind: "add";
27
+ }
28
+ interface Delete extends Identity {
29
+ kind: "delete";
30
+ }
31
+ interface List extends Identity {
32
+ kind: "list";
33
+ children: ModelDiff[];
34
+ }
35
+ interface Summary extends Identity {
36
+ kind: "summary";
37
+ changes: Record<ElementTag, number>;
38
+ }
39
+ }
40
+ //# sourceMappingURL=ModelDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelDiff.d.ts","sourceRoot":"","sources":["../../../src/logic/ModelDiff.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;AAE9F;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,SAAI,yBAG1D;AAkED,yBAAiB,SAAS,CAAC;IACvB;;OAEG;IACH,SAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAgCjE;IAED,UAAiB,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,UAAU,CAAC;KACnB;IAED,UAAiB,GAAI,SAAQ,QAAQ;QACjC,IAAI,EAAE,KAAK,CAAC;KACf;IAED,UAAiB,MAAO,SAAQ,QAAQ;QACpC,IAAI,EAAE,QAAQ,CAAC;KAClB;IAED,UAAiB,IAAK,SAAQ,QAAQ;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,SAAS,EAAE,CAAC;KACzB;IAED,UAAiB,OAAQ,SAAQ,QAAQ;QACrC,IAAI,EAAE,SAAS,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACvC;CACJ"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ModelDiff_exports = {};
20
+ __export(ModelDiff_exports, {
21
+ ModelDiff: () => ModelDiff
22
+ });
23
+ module.exports = __toCommonJS(ModelDiff_exports);
24
+ var import_index = require("#index.js");
25
+ var import_general = require("@matter/general");
26
+ var import_ModelVariantTraversal = require("./ModelVariantTraversal.js");
27
+ /**
28
+ * @license
29
+ * Copyright 2022-2024 Matter.js Authors
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ */
32
+ function ModelDiff(from, to, depth = 2) {
33
+ const traversal = new DiffTraversal(depth);
34
+ return traversal.traverse({ from, to });
35
+ }
36
+ class DiffTraversal extends import_ModelVariantTraversal.ModelVariantTraversal {
37
+ #detailDepth;
38
+ #currentDepth = 0;
39
+ constructor(depth) {
40
+ super(import_index.Specification.REVISION, ["from", "to"]);
41
+ this.#detailDepth = depth;
42
+ }
43
+ visit(variants, recurse) {
44
+ if (variants.map.to === void 0) {
45
+ if (variants.map.from === void 0) {
46
+ return;
47
+ }
48
+ return {
49
+ kind: "delete",
50
+ tag: variants.tag,
51
+ name: variants.name
52
+ };
53
+ }
54
+ if (variants.map.from === void 0) {
55
+ return {
56
+ kind: "add",
57
+ tag: variants.tag,
58
+ name: variants.name
59
+ };
60
+ }
61
+ if (this.#currentDepth >= this.#detailDepth) {
62
+ return;
63
+ }
64
+ this.#currentDepth++;
65
+ const children = recurse().filter((child) => child !== void 0);
66
+ this.#currentDepth--;
67
+ if (!children.length) {
68
+ return;
69
+ }
70
+ if (this.#currentDepth < this.#detailDepth - 1) {
71
+ return {
72
+ kind: "list",
73
+ tag: variants.tag,
74
+ name: variants.name,
75
+ children
76
+ };
77
+ }
78
+ const changes = {};
79
+ for (const child of children) {
80
+ changes[child.tag] = (changes[child.tag] ?? 0) + 1;
81
+ }
82
+ return {
83
+ kind: "summary",
84
+ tag: variants.tag,
85
+ name: variants.name,
86
+ changes
87
+ };
88
+ }
89
+ }
90
+ ((ModelDiff2) => {
91
+ function diagnosticOf(diff) {
92
+ const id = `${diff?.tag}#${diff?.name}`;
93
+ switch (diff?.kind) {
94
+ case "add":
95
+ return import_general.Diagnostic.added(id);
96
+ case "delete":
97
+ return import_general.Diagnostic.deleted(id);
98
+ case "list":
99
+ if (diff.children.length) {
100
+ return [id, import_general.Diagnostic.list(diff.children.map(diagnosticOf))];
101
+ }
102
+ break;
103
+ case "summary":
104
+ const changes = Object.entries(diff.changes).map(([tag, count]) => {
105
+ if (count < 0) {
106
+ return import_general.Diagnostic.deleted(`${-count} ${tag}`);
107
+ }
108
+ if (count > 0) {
109
+ return import_general.Diagnostic.added(`${count} ${tag}`);
110
+ }
111
+ return import_general.Diagnostic.weak(`${0} ${tag}`);
112
+ });
113
+ return [`${id}`, ...changes];
114
+ }
115
+ return import_general.Diagnostic.weak("(unchanged)");
116
+ }
117
+ ModelDiff2.diagnosticOf = diagnosticOf;
118
+ })(ModelDiff || (ModelDiff = {}));
119
+ //# sourceMappingURL=ModelDiff.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/logic/ModelDiff.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,mBAA8B;AAE9B,qBAA2B;AAC3B,mCAAqD;AAVrD;AAAA;AAAA;AAAA;AAAA;AAoBO,SAAS,UAAU,MAAa,IAAW,QAAQ,GAAG;AACzD,QAAM,YAAY,IAAI,cAAc,KAAK;AACzC,SAAO,UAAU,SAAS,EAAE,MAAM,GAAG,CAAC;AAC1C;AAEA,MAAM,sBAAsB,mDAA6C;AAAA,EACrE;AAAA,EACA,gBAAgB;AAAA,EAEhB,YAAY,OAAe;AACvB,UAAM,2BAAc,UAAU,CAAC,QAAQ,IAAI,CAAC;AAC5C,SAAK,eAAe;AAAA,EACxB;AAAA,EAEmB,MAAM,UAAyB,SAAiE;AAC/G,QAAI,SAAS,IAAI,OAAO,QAAW;AAC/B,UAAI,SAAS,IAAI,SAAS,QAAW;AACjC;AAAA,MACJ;AACA,aAAO;AAAA,QACH,MAAM;AAAA,QACN,KAAK,SAAS;AAAA,QACd,MAAM,SAAS;AAAA,MACnB;AAAA,IACJ;AAEA,QAAI,SAAS,IAAI,SAAS,QAAW;AACjC,aAAO;AAAA,QACH,MAAM;AAAA,QACN,KAAK,SAAS;AAAA,QACd,MAAM,SAAS;AAAA,MACnB;AAAA,IACJ;AAEA,QAAI,KAAK,iBAAiB,KAAK,cAAc;AACzC;AAAA,IACJ;AAEA,SAAK;AACL,UAAM,WAAW,QAAQ,EAAE,OAAO,WAAS,UAAU,MAAS;AAC9D,SAAK;AAEL,QAAI,CAAC,SAAS,QAAQ;AAClB;AAAA,IACJ;AAEA,QAAI,KAAK,gBAAgB,KAAK,eAAe,GAAG;AAC5C,aAAO;AAAA,QACH,MAAM;AAAA,QACN,KAAK,SAAS;AAAA,QACd,MAAM,SAAS;AAAA,QACf;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,UAAU,CAAC;AACjB,eAAW,SAAS,UAAU;AAC1B,cAAQ,MAAM,GAAG,KAAK,QAAQ,MAAM,GAAG,KAAK,KAAK;AAAA,IACrD;AAEA,WAAO;AAAA,MACH,MAAM;AAAA,MACN,KAAK,SAAS;AAAA,MACd,MAAM,SAAS;AAAA,MACf;AAAA,IACJ;AAAA,EACJ;AACJ;AAAA,CAEO,CAAUA,eAAV;AAII,WAAS,aAAa,MAAsC;AAC/D,UAAM,KAAK,GAAG,MAAM,GAAG,IAAI,MAAM,IAAI;AACrC,YAAQ,MAAM,MAAM;AAAA,MAChB,KAAK;AACD,eAAO,0BAAW,MAAM,EAAE;AAAA,MAE9B,KAAK;AACD,eAAO,0BAAW,QAAQ,EAAE;AAAA,MAEhC,KAAK;AACD,YAAI,KAAK,SAAS,QAAQ;AACtB,iBAAO,CAAC,IAAI,0BAAW,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,CAAC;AAAA,QAChE;AACA;AAAA,MAEJ,KAAK;AACD,cAAM,UAAU,OAAO,QAAQ,KAAK,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/D,cAAI,QAAQ,GAAG;AACX,mBAAO,0BAAW,QAAQ,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE;AAAA,UAChD;AAEA,cAAI,QAAQ,GAAG;AACX,mBAAO,0BAAW,MAAM,GAAG,KAAK,IAAI,GAAG,EAAE;AAAA,UAC7C;AAEA,iBAAO,0BAAW,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE;AAAA,QACxC,CAAC;AAED,eAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;AAAA,IACnC;AAEA,WAAO,0BAAW,KAAK,aAAa;AAAA,EACxC;AAhCO,EAAAA,WAAS;AAAA,GAJH;",
5
+ "names": ["ModelDiff"]
6
+ }
@@ -59,7 +59,7 @@ class ValueValidator extends import_ModelValidator.ModelValidator {
59
59
  validateAspect(name) {
60
60
  const aspect = this.model[name];
61
61
  if (aspect?.errors) {
62
- aspect.errors.forEach((e) => this.model.error(e.code, e.message));
62
+ aspect.errors.forEach((e) => this.model.error(e.code, `${e.source}: ${e.message}`));
63
63
  }
64
64
  }
65
65
  validateType() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/logic/definition-validation/ValueValidator.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -11,6 +11,7 @@ export * from "./cluster-variance/VarianceCondition.js";
11
11
  export * from "./ClusterVariance.js";
12
12
  export * from "./DefaultValue.js";
13
13
  export * from "./MergedModel.js";
14
+ export * from "./ModelDiff.js";
14
15
  export * from "./ModelVariantTraversal.js";
15
16
  export * from "./Scope.js";
16
17
  export * from "./ValidateModel.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qCAAqC,CAAC;AACpD,cAAc,kDAAkD,CAAC;AACjE,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qCAAqC,CAAC;AACpD,cAAc,kDAAkD,CAAC;AACjE,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,kCAAkC,CAAC"}
@@ -23,6 +23,7 @@ __reExport(logic_exports, require("./cluster-variance/VarianceCondition.js"), mo
23
23
  __reExport(logic_exports, require("./ClusterVariance.js"), module.exports);
24
24
  __reExport(logic_exports, require("./DefaultValue.js"), module.exports);
25
25
  __reExport(logic_exports, require("./MergedModel.js"), module.exports);
26
+ __reExport(logic_exports, require("./ModelDiff.js"), module.exports);
26
27
  __reExport(logic_exports, require("./ModelVariantTraversal.js"), module.exports);
27
28
  __reExport(logic_exports, require("./Scope.js"), module.exports);
28
29
  __reExport(logic_exports, require("./ValidateModel.js"), module.exports);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/logic/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,0BAAc,gDANd;AAOA,0BAAc,6DAPd;AAQA,0BAAc,qDARd;AASA,0BAAc,kDATd;AAUA,0BAAc,oDAVd;AAWA,0BAAc,iCAXd;AAYA,0BAAc,8BAZd;AAaA,0BAAc,6BAbd;AAcA,0BAAc,uCAdd;AAeA,0BAAc,uBAfd;AAgBA,0BAAc,+BAhBd;AAiBA,mCAAO;AAjBP;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,0BAAc,gDANd;AAOA,0BAAc,6DAPd;AAQA,0BAAc,qDARd;AASA,0BAAc,kDATd;AAUA,0BAAc,oDAVd;AAWA,0BAAc,iCAXd;AAYA,0BAAc,8BAZd;AAaA,0BAAc,6BAbd;AAcA,0BAAc,2BAdd;AAeA,0BAAc,uCAfd;AAgBA,0BAAc,uBAhBd;AAiBA,0BAAc,+BAjBd;AAkBA,mCAAO;AAlBP;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -9,12 +9,12 @@ import { BasicToken } from "./Token.js";
9
9
  *
10
10
  * Tokenizes simple text dialects. Currently sufficient for Matter conformance and constraint tokenization.
11
11
  */
12
- export declare class Lexer<T extends BasicToken> {
12
+ export declare class Lexer<T extends BasicToken<KW>, const KW extends string[] = []> {
13
13
  #private;
14
- constructor(keywords?: Iterable<string>);
14
+ constructor(keywords?: KW);
15
15
  lex(text: string, error: (code: string, message: string) => void): Iterator<T>;
16
16
  }
17
17
  export declare namespace Lexer {
18
- const Basic: Lexer<BasicToken>;
18
+ const Basic: Lexer<BasicToken<[]>, []>;
19
19
  }
20
20
  //# sourceMappingURL=Lexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../../../src/parser/Lexer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAS,MAAM,YAAY,CAAC;AAM/C;;;;GAIG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,UAAU;;gBAGvB,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAM;IAQ3C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACjB,QAAQ,CAAC,CAAC,CAAC;CAE7D;AAED,yBAAiB,KAAK,CAAC;IACZ,MAAM,KAAK,mBAAc,CAAC;CACpC"}
1
+ {"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../../../src/parser/Lexer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAS,MAAM,YAAY,CAAC;AAM/C;;;;GAIG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,EAAE;;gBAG3D,QAAQ,CAAC,EAAE,EAAE;IAQzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACjB,QAAQ,CAAC,CAAC,CAAC;CAE7D;AAED,yBAAiB,KAAK,CAAC;IACZ,MAAM,KAAK,2BAAc,CAAC;CACpC"}
@@ -32,7 +32,7 @@ function isNameChar(c) {
32
32
  }
33
33
  class Lexer {
34
34
  #keywords;
35
- constructor(keywords = []) {
35
+ constructor(keywords) {
36
36
  if (keywords instanceof Set) {
37
37
  this.#keywords = keywords;
38
38
  } else {
@@ -111,25 +111,7 @@ function* lex(text, error, keywords) {
111
111
  }
112
112
  return;
113
113
  }
114
- function tokenizeNumber(sign) {
115
- markStart();
116
- if (sign === -1) {
117
- next();
118
- }
119
- if (current.value === "0") {
120
- if (peeked.value === "x") {
121
- next();
122
- next();
123
- return tokenizeDigits(16, sign, hexadecimalValueOf);
124
- } else if (peeked.value === "b") {
125
- next();
126
- next();
127
- return tokenizeDigits(2, sign, binaryValueOf);
128
- }
129
- }
130
- return tokenizeDigits(10, sign, decimalValueOf);
131
- }
132
- function tokenizeDigits(base, sign, valueOf) {
114
+ function tokenizeDigits(base, valueOf) {
133
115
  let num = valueOf(current.value);
134
116
  if (num === void 0) {
135
117
  error("INVALID_NUMBER", `Expected digit following numeric suffix`);
@@ -143,13 +125,25 @@ function* lex(text, error, keywords) {
143
125
  next();
144
126
  num = num * base + digitValue;
145
127
  }
146
- num *= sign;
128
+ if (base === 10 && peeked.value === ".") {
129
+ next();
130
+ let fraction = "";
131
+ while (true) {
132
+ const digitValue = valueOf(peeked.value);
133
+ if (digitValue === void 0) {
134
+ break;
135
+ }
136
+ fraction += peeked.value;
137
+ next();
138
+ }
139
+ num = Number.parseFloat(`${num}.${fraction}`);
140
+ }
147
141
  if (peeked.value === "%") {
148
142
  next();
149
143
  return { type: "value", value: import_common.FieldValue.Percent(num), startLine, startChar };
150
144
  } else if (peeked.value === "\xB0") {
151
145
  next();
152
- if (peeked.value?.toLowerCase() === "C") {
146
+ if (peeked.value?.toLowerCase() === "c") {
153
147
  next();
154
148
  }
155
149
  return { type: "value", value: import_common.FieldValue.Celsius(num), startLine, startChar };
@@ -167,20 +161,30 @@ function* lex(text, error, keywords) {
167
161
  case "]":
168
162
  case "(":
169
163
  case ")":
164
+ case "{":
165
+ case "}":
166
+ case "-":
170
167
  case "+":
171
168
  case "/":
172
169
  case "*":
173
170
  yield { type: current.value, startLine: line, startChar: char };
174
171
  break;
175
- case "-":
176
- if (peeked.value !== void 0 && (peeked.value >= "0" || peeked.value <= "0")) {
177
- yield tokenizeNumber(-1);
178
- } else {
179
- yield { type: current.value, startLine: line, startChar: char };
180
- }
181
- break;
182
172
  case "0":
183
- yield tokenizeNumber(1);
173
+ markStart();
174
+ if (current.value === "0") {
175
+ if (peeked.value === "x") {
176
+ next();
177
+ next();
178
+ yield tokenizeDigits(16, hexadecimalValueOf);
179
+ break;
180
+ }
181
+ if (peeked.value === "b") {
182
+ next();
183
+ next();
184
+ yield tokenizeDigits(2, binaryValueOf);
185
+ }
186
+ }
187
+ yield tokenizeDigits(10, decimalValueOf);
184
188
  break;
185
189
  case "1":
186
190
  case "2":
@@ -191,7 +195,7 @@ function* lex(text, error, keywords) {
191
195
  case "7":
192
196
  case "8":
193
197
  case "9":
194
- yield tokenizeDigits(10, 1, decimalValueOf);
198
+ yield tokenizeDigits(10, decimalValueOf);
195
199
  break;
196
200
  case "!":
197
201
  case ">":
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/parser/Lexer.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["Lexer"]
6
6
  }
@@ -15,7 +15,7 @@ export interface Token {
15
15
  /**
16
16
  * The base token produced by the tokenizer.
17
17
  */
18
- export type BasicToken = BasicToken.Special | BasicToken.Word | BasicToken.Number;
18
+ export type BasicToken<KW extends string[] = []> = BasicToken.Special | BasicToken.Word | BasicToken.Number | BasicToken.Keyword<KW>;
19
19
  /**
20
20
  * A {@link BasicToken} with additional keywords.
21
21
  */
@@ -23,7 +23,7 @@ export type ExtendedToken<K extends string> = BasicToken | (Token & {
23
23
  type: K[number];
24
24
  });
25
25
  export declare namespace BasicToken {
26
- type Operator = "!" | "==" | "!=" | "|" | "^" | "&" | "." | "," | "[" | "]" | "(" | ")" | "-" | "+" | "*" | "/" | ">" | "<" | ">=" | "<=";
26
+ type Operator = "!" | "==" | "!=" | "|" | "^" | "&" | "." | "," | "[" | "]" | "(" | ")" | "{" | "}" | "-" | "+" | "*" | "/" | ">" | "<" | ">=" | "<=";
27
27
  interface Special extends Token {
28
28
  type: Operator;
29
29
  }
@@ -35,5 +35,8 @@ export declare namespace BasicToken {
35
35
  type: "value";
36
36
  value: FieldValue;
37
37
  }
38
+ interface Keyword<T extends string[]> extends Token {
39
+ type: T[number];
40
+ }
38
41
  }
39
42
  //# sourceMappingURL=Token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../../src/parser/Token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;AAElF;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,GAAG,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAEzF,yBAAiB,UAAU,CAAC;IACxB,KAAY,QAAQ,GACd,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,CAAC;IAEX,UAAiB,OAAQ,SAAQ,KAAK;QAClC,IAAI,EAAE,QAAQ,CAAC;KAClB;IAED,UAAiB,IAAK,SAAQ,KAAK;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACjB;IAED,UAAiB,MAAO,SAAQ,KAAK;QACjC,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,UAAU,CAAC;KACrB;CACJ"}
1
+ {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../../src/parser/Token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,EAAE,IACzC,UAAU,CAAC,OAAO,GAClB,UAAU,CAAC,IAAI,GACf,UAAU,CAAC,MAAM,GACjB,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,GAAG,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAEzF,yBAAiB,UAAU,CAAC;IACxB,KAAY,QAAQ,GACd,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,CAAC;IAEX,UAAiB,OAAQ,SAAQ,KAAK;QAClC,IAAI,EAAE,QAAQ,CAAC;KAClB;IAED,UAAiB,IAAK,SAAQ,KAAK;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACjB;IAED,UAAiB,MAAO,SAAQ,KAAK;QACjC,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,UAAU,CAAC;KACrB;IAED,UAAiB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAE,SAAQ,KAAK;QACtD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;KACnB;CACJ"}
@@ -53,9 +53,9 @@ function TokenStream(iterator) {
53
53
  case void 0:
54
54
  return "end of statement";
55
55
  case "word":
56
- return `word "${this.token.value}`;
56
+ return `word "${this.token.value}"`;
57
57
  case "number":
58
- return `number "${this.token.value}`;
58
+ return `number "${this.token.value}"`;
59
59
  default:
60
60
  if (this.token?.type.match(/[a-z]/i)) {
61
61
  return `keyword "${this.token?.type}"`;
@@ -9,17 +9,15 @@ import { Aspect } from "./Aspect.js";
9
9
  * An operational view of constraints as defined by the Matter specification.
10
10
  *
11
11
  * A "constraint" limits possible data values.
12
- *
13
- * Formally a constraint is not considered a quality by the specification. It is handled similarly to qualities, though,
14
- * so we keep it in the same section.
15
12
  */
16
13
  export declare class Constraint extends Aspect<Constraint.Definition> implements Constraint.Ast {
17
14
  desc?: boolean;
18
- value?: FieldValue;
19
- min?: FieldValue;
20
- max?: FieldValue;
15
+ value?: Constraint.Expression;
16
+ min?: Constraint.Expression;
17
+ max?: Constraint.Expression;
21
18
  in?: FieldValue;
22
19
  entry?: Constraint;
20
+ cpMax?: number;
23
21
  parts?: Constraint[];
24
22
  /**
25
23
  * Initialize from a Constraint.Definition or the constraint DSL defined by the Matter Specification.
@@ -35,7 +33,7 @@ export declare class Constraint extends Aspect<Constraint.Definition> implements
35
33
  export declare namespace Constraint {
36
34
  type NumberOrIdentifier = number | string;
37
35
  /**
38
- * Parsed list structure.
36
+ * Parsed constraint.
39
37
  */
40
38
  type Ast = {
41
39
  /**
@@ -45,15 +43,15 @@ export declare namespace Constraint {
45
43
  /**
46
44
  * Constant value.
47
45
  */
48
- value?: FieldValue;
46
+ value?: Expression;
49
47
  /**
50
48
  * Lower bound on value or sequence length.
51
49
  */
52
- min?: FieldValue;
50
+ min?: Expression;
53
51
  /**
54
52
  * Upper bound on value or sequence length.
55
53
  */
56
- max?: FieldValue;
54
+ max?: Expression;
57
55
  /**
58
56
  * Require set membership for the value.
59
57
  */
@@ -62,21 +60,32 @@ export declare namespace Constraint {
62
60
  * Constraint on list child element.
63
61
  */
64
62
  entry?: Ast;
63
+ /**
64
+ * Constraint on codepoints in a string.
65
+ */
66
+ cpMax?: number;
65
67
  /**
66
68
  * List of sub-constraints in a sequence.
67
69
  */
68
70
  parts?: Ast[];
69
71
  };
72
+ /**
73
+ * Parsed binary operator.
74
+ */
75
+ interface BinaryOperator {
76
+ type: "+" | "-";
77
+ lhs: Expression;
78
+ rhs: Expression;
79
+ }
80
+ /**
81
+ * Parsed expression.
82
+ */
83
+ type Expression = FieldValue | BinaryOperator;
70
84
  /**
71
85
  * These are all ways to describe a constraint.
72
86
  */
73
87
  type Definition = (Ast & {
74
88
  definition?: Definition;
75
89
  }) | string | number | undefined;
76
- /**
77
- * Parse constraint DSL. Extremely lenient.
78
- */
79
- function parse(constraint: Constraint, definition: string): Ast;
80
- function serialize(ast: Ast): string;
81
90
  }
82
91
  //# sourceMappingURL=Constraint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Constraint.d.ts","sourceRoot":"","sources":["../../../src/aspects/Constraint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,MAAM,CAAC,UAAU,CAAC,UAAU,CAAE,YAAW,UAAU,CAAC,GAAG;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAE7B;;OAEG;gBACS,UAAU,EAAE,UAAU,CAAC,UAAU;IAwD7C;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IA0DzD,QAAQ;cAOE,MAAM;CAM5B;AAED,yBAAiB,UAAU,CAAC;IACxB,KAAY,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjD;;OAEG;IACH,KAAY,GAAG,GAAG;QACd;;WAEG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;QAEf;;WAEG;QACH,KAAK,CAAC,EAAE,UAAU,CAAC;QAEnB;;WAEG;QACH,GAAG,CAAC,EAAE,UAAU,CAAC;QAEjB;;WAEG;QACH,GAAG,CAAC,EAAE,UAAU,CAAC;QAEjB;;WAEG;QACH,EAAE,CAAC,EAAE,UAAU,CAAC;QAEhB;;WAEG;QACH,KAAK,CAAC,EAAE,GAAG,CAAC;QAEZ;;WAEG;QACH,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;KACjB,CAAC;IAEF;;OAEG;IACH,KAAY,UAAU,GAAG,CAAC,GAAG,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IA8G3F;;OAEG;IACH,SAAgB,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAwGrE;IA6BD,SAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQ1C;CACJ"}
1
+ {"version":3,"file":"Constraint.d.ts","sourceRoot":"","sources":["../../../src/aspects/Constraint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,MAAM,CAAC,UAAU,CAAC,UAAU,CAAE,YAAW,UAAU,CAAC,GAAG;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IAC9B,GAAG,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IAC5B,GAAG,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IAC5B,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAE7B;;OAEG;gBACS,UAAU,EAAE,UAAU,CAAC,UAAU;IA2D7C;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAoFzD,QAAQ;cAOE,MAAM;CAM5B;AAED,yBAAiB,UAAU,CAAC;IACxB,KAAY,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjD;;OAEG;IACH,KAAY,GAAG,GAAG;QACd;;WAEG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;QAEf;;WAEG;QACH,KAAK,CAAC,EAAE,UAAU,CAAC;QAEnB;;WAEG;QACH,GAAG,CAAC,EAAE,UAAU,CAAC;QAEjB;;WAEG;QACH,GAAG,CAAC,EAAE,UAAU,CAAC;QAEjB;;WAEG;QACH,EAAE,CAAC,EAAE,UAAU,CAAC;QAEhB;;WAEG;QACH,KAAK,CAAC,EAAE,GAAG,CAAC;QAEZ;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf;;WAEG;QACH,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;KACjB,CAAC;IAEF;;OAEG;IACH,UAAiB,cAAc;QAC3B,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAEhB,GAAG,EAAE,UAAU,CAAC;QAEhB,GAAG,EAAE,UAAU,CAAC;KACnB;IAED;;OAEG;IACH,KAAY,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;IAErD;;OAEG;IACH,KAAY,UAAU,GAAG,CAAC,GAAG,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9F"}