@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.
- package/dist/cjs/aspects/Constraint.d.ts +24 -15
- package/dist/cjs/aspects/Constraint.d.ts.map +1 -1
- package/dist/cjs/aspects/Constraint.js +268 -198
- package/dist/cjs/aspects/Constraint.js.map +2 -2
- package/dist/cjs/common/FieldValue.d.ts +10 -4
- package/dist/cjs/common/FieldValue.d.ts.map +1 -1
- package/dist/cjs/common/FieldValue.js +1 -1
- package/dist/cjs/common/FieldValue.js.map +1 -1
- package/dist/cjs/common/Metatype.d.ts +19 -1
- package/dist/cjs/common/Metatype.d.ts.map +1 -1
- package/dist/cjs/common/Metatype.js +171 -170
- package/dist/cjs/common/Metatype.js.map +1 -1
- package/dist/cjs/common/Specification.d.ts +1 -1
- package/dist/cjs/common/Specification.d.ts.map +1 -1
- package/dist/cjs/logic/ModelDiff.d.ts +40 -0
- package/dist/cjs/logic/ModelDiff.d.ts.map +1 -0
- package/dist/cjs/logic/ModelDiff.js +119 -0
- package/dist/cjs/logic/ModelDiff.js.map +6 -0
- package/dist/cjs/logic/definition-validation/ValueValidator.js +1 -1
- package/dist/cjs/logic/definition-validation/ValueValidator.js.map +1 -1
- package/dist/cjs/logic/index.d.ts +1 -0
- package/dist/cjs/logic/index.d.ts.map +1 -1
- package/dist/cjs/logic/index.js +1 -0
- package/dist/cjs/logic/index.js.map +1 -1
- package/dist/cjs/parser/Lexer.d.ts +3 -3
- package/dist/cjs/parser/Lexer.d.ts.map +1 -1
- package/dist/cjs/parser/Lexer.js +35 -31
- package/dist/cjs/parser/Lexer.js.map +1 -1
- package/dist/cjs/parser/Token.d.ts +5 -2
- package/dist/cjs/parser/Token.d.ts.map +1 -1
- package/dist/cjs/parser/TokenStream.js +2 -2
- package/dist/esm/aspects/Constraint.d.ts +24 -15
- package/dist/esm/aspects/Constraint.d.ts.map +1 -1
- package/dist/esm/aspects/Constraint.js +269 -199
- package/dist/esm/aspects/Constraint.js.map +2 -2
- package/dist/esm/common/FieldValue.d.ts +10 -4
- package/dist/esm/common/FieldValue.d.ts.map +1 -1
- package/dist/esm/common/FieldValue.js +1 -1
- package/dist/esm/common/FieldValue.js.map +1 -1
- package/dist/esm/common/Metatype.d.ts +19 -1
- package/dist/esm/common/Metatype.d.ts.map +1 -1
- package/dist/esm/common/Metatype.js +171 -170
- package/dist/esm/common/Metatype.js.map +1 -1
- package/dist/esm/common/Specification.d.ts +1 -1
- package/dist/esm/common/Specification.d.ts.map +1 -1
- package/dist/esm/logic/ModelDiff.d.ts +40 -0
- package/dist/esm/logic/ModelDiff.d.ts.map +1 -0
- package/dist/esm/logic/ModelDiff.js +99 -0
- package/dist/esm/logic/ModelDiff.js.map +6 -0
- package/dist/esm/logic/definition-validation/ValueValidator.js +1 -1
- package/dist/esm/logic/definition-validation/ValueValidator.js.map +1 -1
- package/dist/esm/logic/index.d.ts +1 -0
- package/dist/esm/logic/index.d.ts.map +1 -1
- package/dist/esm/logic/index.js +1 -0
- package/dist/esm/logic/index.js.map +1 -1
- package/dist/esm/parser/Lexer.d.ts +3 -3
- package/dist/esm/parser/Lexer.d.ts.map +1 -1
- package/dist/esm/parser/Lexer.js +35 -31
- package/dist/esm/parser/Lexer.js.map +1 -1
- package/dist/esm/parser/Token.d.ts +5 -2
- package/dist/esm/parser/Token.d.ts.map +1 -1
- package/dist/esm/parser/TokenStream.js +2 -2
- package/package.json +4 -4
- package/src/aspects/Constraint.ts +340 -215
- package/src/common/FieldValue.ts +10 -5
- package/src/common/Metatype.ts +200 -181
- package/src/common/Specification.ts +1 -1
- package/src/logic/ModelDiff.ts +150 -0
- package/src/logic/definition-validation/ValueValidator.ts +1 -1
- package/src/logic/index.ts +1 -0
- package/src/parser/Lexer.ts +38 -40
- package/src/parser/Token.ts +11 -1
- 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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAiE;AACjE,oBAAsD;AACtD,oBAAkD;AAClD,4BAA+B;AAC/B,kCAAqC;AAVrC;AAAA;AAAA;AAAA;AAAA;AAeO,MAAM,uBAA6C,qCAAkB;AAAA,EAC/D,WAAW;AAChB,SAAK,iBAAiB,EAAE,MAAM,QAAQ,MAAM,SAAS,CAAC;AACtD,SAAK,iBAAiB,EAAE,MAAM,YAAY,MAAM,SAAS,CAAC;AAC1D,SAAK,iBAAiB,EAAE,MAAM,cAAc,MAAM,0BAAW,CAAC;AAC9D,SAAK,iBAAiB,EAAE,MAAM,eAAe,MAAM,2BAAY,CAAC;AAChE,SAAK,iBAAiB,EAAE,MAAM,UAAU,MAAM,sBAAO,CAAC;AACtD,SAAK,iBAAiB,EAAE,MAAM,WAAW,MAAM,uBAAQ,CAAC;AACxD,SAAK,iBAAiB,EAAE,MAAM,YAAY,MAAM,uBAAS,CAAC;AAE1D,SAAK,eAAe,aAAa;AACjC,SAAK,MAAM,YAAY,mBAAmB,MAAM,UAAQ;AAEpD,UAAI,KAAK,MAAM,eAAe,GAAG;AAE7B,cAAM,UAAU,KAAK,MAAM,MAAM,0BAAY;AAC7C,eAAO,CAAC,CAAC,SAAS,SAAS,KAAK,OAAK,EAAE,SAAS,IAAI;AAAA,MACxD,OAAO;AAEH,eAAO,CAAC,CAAC,KAAK,MAAM,QAAQ,OAAO,IAAI;AAAA,MAC3C;AAAA,IACJ,CAAC;AAED,SAAK,eAAe,YAAY;AAChC,SAAK,eAAe,QAAQ;AAC5B,SAAK,eAAe,SAAS;AAE7B,SAAK,aAAa;AAClB,SAAK,gBAAgB;AAErB,UAAM,SAAS;AAAA,EACnB;AAAA,EAEQ,eAAe,MAAc;AACjC,UAAM,SAAU,KAAK,MAAc,IAAI;AACvC,QAAI,QAAQ,QAAQ;AAChB,aAAO,OAAO,QAAQ,CAAC,MAAuB,KAAK,MAAM,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,
|
|
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"}
|
package/dist/cjs/logic/index.js
CHANGED
|
@@ -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,
|
|
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?:
|
|
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
|
|
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"}
|
package/dist/cjs/parser/Lexer.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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() === "
|
|
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
|
-
|
|
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,
|
|
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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA2B;AAN3B;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,WAAW,GAAW;AAC3B,SAAQ,KAAK,OAAO,KAAK,OAAS,KAAK,OAAO,KAAK,OAAS,KAAK,OAAO,KAAK,OAAQ,MAAM;AAC/F;AAOO,MAAM,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA2B;AAN3B;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,WAAW,GAAW;AAC3B,SAAQ,KAAK,OAAO,KAAK,OAAS,KAAK,OAAO,KAAK,OAAS,KAAK,OAAO,KAAK,OAAQ,MAAM;AAC/F;AAOO,MAAM,MAAgE;AAAA,EACzE;AAAA,EAEA,YAAY,UAAe;AACvB,QAAI,oBAAoB,KAAK;AACzB,WAAK,YAAY;AAAA,IACrB,OAAO;AACH,WAAK,YAAY,IAAI,IAAI,QAAQ;AAAA,IACrC;AAAA,EACJ;AAAA,EAEA,IAAI,MAAc,OAAgD;AAC9D,WAAO,IAAI,MAAM,OAAO,KAAK,SAAS;AAAA,EAC1C;AACJ;AAAA,CAEO,CAAUA,WAAV;AACI,EAAMA,OAAA,QAAQ,IAAIA,OAAM;AAAA,GADlB;AAIjB,UAAU,IACN,MACA,OACA,UAC2B;AAC3B,QAAM,IAAI,KAAK,OAAO,QAAQ,EAAE;AAEhC,MAAI,UAAU,EAAE,KAAK;AACrB,MAAI,QAAQ,MAAM;AACd;AAAA,EACJ;AACA,MAAI,SAAS,EAAE,KAAK;AAEpB,MAAI,OAAO;AACX,MAAI,OAAO;AAEX,MAAI,YAAY;AAChB,MAAI,YAAY;AAEhB,WAAS,YAAY;AACjB,gBAAY;AACZ,gBAAY;AAAA,EAChB;AAEA,WAAS,OAAO;AACZ,cAAU;AACV,QAAI,CAAC,QAAQ,MAAM;AACf;AACA,eAAS,EAAE,KAAK;AAAA,IACpB;AAAA,EACJ;AAEA,WAAS,eAAwC;AAC7C,UAAM,QAAQ,CAAC,QAAQ,KAAK;AAC5B,WAAO,OAAO,UAAU,UAAa,WAAW,OAAO,KAAK,GAAG;AAC3D,WAAK;AACL,YAAM,KAAK,QAAQ,KAAK;AAAA,IAC5B;AACA,UAAM,OAAO,MAAM,KAAK,EAAE;AAE1B,QAAI,SAAS,IAAI,IAAI,GAAG;AACpB,aAAO,EAAE,MAAM,MAAM,WAAW,UAAU;AAAA,IAC9C;AAEA,WAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,WAAW,UAAU;AAAA,EAC7D;AAEA,WAAS,cAAc,OAA2B;AAC9C,QAAI,UAAU,KAAK;AACf,aAAO;AAAA,IACX;AACA,QAAI,UAAU,KAAK;AACf,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,WAAS,eAAe,OAA2B;AAC/C,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AACA,QAAI,SAAS,OAAO,SAAS,KAAK;AAC9B,aAAO,MAAM,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC;AAAA,IACjD;AAAA,EACJ;AAEA,WAAS,mBAAmB,OAA2B;AACnD,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AACA,QAAI,SAAS,OAAO,SAAS,KAAK;AAC9B,aAAO,MAAM,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC;AAAA,IACjD;AACA,QAAI,SAAS,OAAO,SAAS,KAAK;AAC9B,aAAO,KAAK,MAAM,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC;AAAA,IACtD;AACA,QAAI,SAAS,OAAO,SAAS,KAAK;AAC9B,aAAO,KAAK,MAAM,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC;AAAA,IACtD;AACA;AAAA,EACJ;AAEA,WAAS,eAAe,MAAc,SAA2E;AAE7G,QAAI,MAAM,QAAQ,QAAQ,KAAK;AAC/B,QAAI,QAAQ,QAAW;AACnB,YAAM,kBAAkB,yCAAyC;AACjE,aAAO,EAAE,MAAM,SAAS,OAAO,GAAG,WAAW,UAAU;AAAA,IAC3D;AAGA,WAAO,MAAM;AACT,YAAM,aAAa,QAAQ,OAAO,KAAK;AACvC,UAAI,eAAe,QAAW;AAC1B;AAAA,MACJ;AACA,WAAK;AACL,YAAM,MAAM,OAAO;AAAA,IACvB;AAEA,QAAI,SAAS,MAAM,OAAO,UAAU,KAAK;AACrC,WAAK;AACL,UAAI,WAAW;AACf,aAAO,MAAM;AACT,cAAM,aAAa,QAAQ,OAAO,KAAK;AACvC,YAAI,eAAe,QAAW;AAC1B;AAAA,QACJ;AACA,oBAAY,OAAO;AACnB,aAAK;AAAA,MACT;AACA,YAAM,OAAO,WAAW,GAAG,GAAG,IAAI,QAAQ,EAAE;AAAA,IAChD;AAGA,QAAI,OAAO,UAAU,KAAK;AACtB,WAAK;AACL,aAAO,EAAE,MAAM,SAAS,OAAO,yBAAW,QAAQ,GAAG,GAAG,WAAW,UAAU;AAAA,IACjF,WAAW,OAAO,UAAU,QAAK;AAC7B,WAAK;AACL,UAAI,OAAO,OAAO,YAAY,MAAM,KAAK;AACrC,aAAK;AAAA,MACT;AACA,aAAO,EAAE,MAAM,SAAS,OAAO,yBAAW,QAAQ,GAAG,GAAG,WAAW,UAAU;AAAA,IACjF;AAGA,WAAO,EAAE,MAAM,SAAS,OAAO,KAAK,WAAW,UAAU;AAAA,EAC7D;AAEA,SAAO,CAAC,QAAQ,MAAM;AAClB,YAAQ,QAAQ,OAAO;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,cAAM,EAAE,MAAM,QAAQ,OAAO,WAAW,MAAM,WAAW,KAAK;AAC9D;AAAA,MAEJ,KAAK;AACD,kBAAU;AAEV,YAAI,QAAQ,UAAU,KAAK;AACvB,cAAI,OAAO,UAAU,KAAK;AACtB,iBAAK;AACL,iBAAK;AACL,kBAAM,eAAe,IAAI,kBAAkB;AAC3C;AAAA,UACJ;AAEA,cAAI,OAAO,UAAU,KAAK;AACtB,iBAAK;AACL,iBAAK;AACL,kBAAM,eAAe,GAAG,aAAa;AAAA,UACzC;AAAA,QACJ;AAEA,cAAM,eAAe,IAAI,cAAc;AACvC;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,cAAM,eAAe,IAAI,cAAc;AACvC;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD;AACI,gBAAM,OAAO,QAAQ;AACrB,cAAI,OAAO,UAAU,KAAK;AACtB,kBAAM,OAAO,GAAG,IAAI,GAAG,OAAO,KAAK;AACnC,iBAAK;AACL,kBAAM;AAAA,cACF;AAAA,cACA,WAAW;AAAA,cACX,WAAW;AAAA,YACf;AAAA,UACJ,OAAO;AACH,kBAAM,EAAE,MAAM,MAAM,WAAW,MAAM,WAAW,KAAK;AAAA,UACzD;AAAA,QACJ;AACA;AAAA,MAEJ,KAAK;AACD,kBAAU;AACV,YAAI,OAAO,UAAU,KAAK;AACtB,eAAK;AAAA,QACT,OAAO;AACH,gBAAM,aAAa,qCAAqC;AAAA,QAC5D;AACA,cAAM,EAAE,MAAM,MAAM,WAAW,UAAU;AACzC;AAAA,MAEJ,KAAK;AACD;AACA,eAAO;AACP;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD;AAAA,MAEJ;AACI,YAAI,WAAW,QAAQ,KAAK,GAAG;AAC3B,oBAAU;AACV,gBAAM,aAAa;AAAA,QACvB,OAAO;AACH,gBAAM,qBAAqB,yBAAyB,QAAQ,KAAK,GAAG;AAAA,QACxE;AACA;AAAA,IACR;AACA,SAAK;AAAA,EACT;AACJ;",
|
|
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,
|
|
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?:
|
|
19
|
-
min?:
|
|
20
|
-
max?:
|
|
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
|
|
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?:
|
|
46
|
+
value?: Expression;
|
|
49
47
|
/**
|
|
50
48
|
* Lower bound on value or sequence length.
|
|
51
49
|
*/
|
|
52
|
-
min?:
|
|
50
|
+
min?: Expression;
|
|
53
51
|
/**
|
|
54
52
|
* Upper bound on value or sequence length.
|
|
55
53
|
*/
|
|
56
|
-
max?:
|
|
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;
|
|
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"}
|