@rsconcept/domain 1.0.0 → 1.2.0

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 (185) hide show
  1. package/README.md +3 -3
  2. package/dist/analyzer-DlSq3Y3r.d.ts +39 -0
  3. package/dist/arguments-extractor-1acwjQNc.d.ts +38 -0
  4. package/dist/ast-C8sIpKdL.d.ts +51 -0
  5. package/dist/ast-annotations-BiMjkKvz.d.ts +16 -0
  6. package/dist/branded-ZlzIcxzu.d.ts +9 -0
  7. package/dist/calculator-C9W2jkSx.d.ts +39 -0
  8. package/dist/cctext/index.d.ts +2 -1
  9. package/dist/cctext/index.js +2 -42
  10. package/dist/cctext/language-api.d.ts +10 -12
  11. package/dist/cctext/language-api.js +157 -227
  12. package/dist/cctext/language-api.js.map +1 -1
  13. package/dist/cctext/language.d.ts +24 -22
  14. package/dist/cctext/language.js +43 -39
  15. package/dist/cctext/language.js.map +1 -1
  16. package/dist/error-E1LVq_3w.d.ts +87 -0
  17. package/dist/graph/graph.d.ts +2 -62
  18. package/dist/graph/graph.js +339 -382
  19. package/dist/graph/graph.js.map +1 -1
  20. package/dist/graph/index.d.ts +2 -1
  21. package/dist/graph/index.js +2 -384
  22. package/dist/graph-DR8rL2o3.d.ts +64 -0
  23. package/dist/hash-Y8I4c6Al.d.ts +8 -0
  24. package/dist/index-BKZ67WMa.d.ts +1 -0
  25. package/dist/index-BVVgDSdq.d.ts +1 -0
  26. package/dist/index-DmtQKWjk.d.ts +1 -0
  27. package/dist/index-_6s0AX1B.d.ts +1 -0
  28. package/dist/index.d.ts +27 -28
  29. package/dist/index.js +23 -5851
  30. package/dist/lezer-tree-iS7LpLBJ.d.ts +14 -0
  31. package/dist/library/folder-tree.d.ts +22 -20
  32. package/dist/library/folder-tree.js +108 -130
  33. package/dist/library/folder-tree.js.map +1 -1
  34. package/dist/library/index.d.ts +8 -17
  35. package/dist/library/index.js +7 -2800
  36. package/dist/library/library-api.d.ts +3 -1
  37. package/dist/library/library-api.js +9 -8
  38. package/dist/library/library-api.js.map +1 -1
  39. package/dist/library/library.d.ts +2 -56
  40. package/dist/library/library.js +23 -19
  41. package/dist/library/library.js.map +1 -1
  42. package/dist/library/oss-api.d.ts +26 -37
  43. package/dist/library/oss-api.js +258 -1096
  44. package/dist/library/oss-api.js.map +1 -1
  45. package/dist/library/oss-layout-api.d.ts +28 -28
  46. package/dist/library/oss-layout-api.js +239 -316
  47. package/dist/library/oss-layout-api.js.map +1 -1
  48. package/dist/library/oss-layout.d.ts +2 -25
  49. package/dist/library/oss-layout.js +1 -1
  50. package/dist/library/oss.d.ts +87 -89
  51. package/dist/library/oss.js +27 -26
  52. package/dist/library/oss.js.map +1 -1
  53. package/dist/library/rsengine.d.ts +100 -106
  54. package/dist/library/rsengine.js +439 -2599
  55. package/dist/library/rsengine.js.map +1 -1
  56. package/dist/library/rsform-api.d.ts +11 -16
  57. package/dist/library/rsform-api.js +313 -825
  58. package/dist/library/rsform-api.js.map +1 -1
  59. package/dist/library/rsform.d.ts +159 -167
  60. package/dist/library/rsform.js +29 -28
  61. package/dist/library/rsform.js.map +1 -1
  62. package/dist/library/rsmodel-api.d.ts +8 -15
  63. package/dist/library/rsmodel-api.js +172 -813
  64. package/dist/library/rsmodel-api.js.map +1 -1
  65. package/dist/library/rsmodel.d.ts +27 -33
  66. package/dist/library/rsmodel.js +16 -23
  67. package/dist/library/rsmodel.js.map +1 -1
  68. package/dist/library/structure-planner.d.ts +20 -26
  69. package/dist/library/structure-planner.js +106 -474
  70. package/dist/library/structure-planner.js.map +1 -1
  71. package/dist/library-CYun28Xz.d.ts +58 -0
  72. package/dist/oss-layout-3glgAqfn.d.ts +27 -0
  73. package/dist/parser-Bwd8LxJ1.d.ts +7 -0
  74. package/dist/parsing/ast.d.ts +2 -49
  75. package/dist/parsing/ast.js +68 -76
  76. package/dist/parsing/ast.js.map +1 -1
  77. package/dist/parsing/index.d.ts +3 -3
  78. package/dist/parsing/index.js +3 -141
  79. package/dist/parsing/lezer-tree.d.ts +2 -13
  80. package/dist/parsing/lezer-tree.js +50 -43
  81. package/dist/parsing/lezer-tree.js.map +1 -1
  82. package/dist/rslang/api.d.ts +9 -14
  83. package/dist/rslang/api.js +114 -827
  84. package/dist/rslang/api.js.map +1 -1
  85. package/dist/rslang/ast-annotations.d.ts +2 -18
  86. package/dist/rslang/ast-annotations.js +34 -45
  87. package/dist/rslang/ast-annotations.js.map +1 -1
  88. package/dist/rslang/error.d.ts +2 -85
  89. package/dist/rslang/error.js +88 -150
  90. package/dist/rslang/error.js.map +1 -1
  91. package/dist/rslang/eval/calculator.d.ts +2 -43
  92. package/dist/rslang/eval/calculator.js +81 -1636
  93. package/dist/rslang/eval/calculator.js.map +1 -1
  94. package/dist/rslang/eval/evaluation-cache.d.ts +22 -26
  95. package/dist/rslang/eval/evaluation-cache.js +168 -287
  96. package/dist/rslang/eval/evaluation-cache.js.map +1 -1
  97. package/dist/rslang/eval/evaluator.d.ts +59 -63
  98. package/dist/rslang/eval/evaluator.js +602 -1509
  99. package/dist/rslang/eval/evaluator.js.map +1 -1
  100. package/dist/rslang/eval/value-api.d.ts +2 -48
  101. package/dist/rslang/eval/value-api.js +2 -490
  102. package/dist/rslang/eval/value.d.ts +2 -36
  103. package/dist/rslang/eval/value.js +2 -118
  104. package/dist/rslang/index.d.ts +14 -17
  105. package/dist/rslang/index.js +12 -4314
  106. package/dist/rslang/labels.d.ts +6 -6
  107. package/dist/rslang/labels.js +139 -305
  108. package/dist/rslang/labels.js.map +1 -1
  109. package/dist/rslang/parser/expression-generator.d.ts +5 -5
  110. package/dist/rslang/parser/expression-generator.js +248 -446
  111. package/dist/rslang/parser/expression-generator.js.map +1 -1
  112. package/dist/rslang/parser/normalize.d.ts +4 -8
  113. package/dist/rslang/parser/normalize.js +286 -481
  114. package/dist/rslang/parser/normalize.js.map +1 -1
  115. package/dist/rslang/parser/parser.d.ts +2 -5
  116. package/dist/rslang/parser/parser.js +30 -21
  117. package/dist/rslang/parser/parser.js.map +1 -1
  118. package/dist/rslang/parser/parser.terms.d.ts +43 -41
  119. package/dist/rslang/parser/parser.terms.js +44 -83
  120. package/dist/rslang/parser/parser.terms.js.map +1 -1
  121. package/dist/rslang/parser/syntax-errors.d.ts +5 -8
  122. package/dist/rslang/parser/syntax-errors.js +113 -382
  123. package/dist/rslang/parser/syntax-errors.js.map +1 -1
  124. package/dist/rslang/parser/token.d.ts +2 -79
  125. package/dist/rslang/parser/token.js +81 -93
  126. package/dist/rslang/parser/token.js.map +1 -1
  127. package/dist/rslang/semantic/analyzer.d.ts +2 -39
  128. package/dist/rslang/semantic/analyzer.js +186 -2600
  129. package/dist/rslang/semantic/analyzer.js.map +1 -1
  130. package/dist/rslang/semantic/arguments-extractor.d.ts +2 -42
  131. package/dist/rslang/semantic/arguments-extractor.js +202 -361
  132. package/dist/rslang/semantic/arguments-extractor.js.map +1 -1
  133. package/dist/rslang/semantic/type-auditor.d.ts +64 -68
  134. package/dist/rslang/semantic/type-auditor.js +594 -1564
  135. package/dist/rslang/semantic/type-auditor.js.map +1 -1
  136. package/dist/rslang/semantic/typification-api.d.ts +4 -7
  137. package/dist/rslang/semantic/typification-api.js +162 -303
  138. package/dist/rslang/semantic/typification-api.js.map +1 -1
  139. package/dist/rslang/semantic/typification-parser.d.ts +2 -12
  140. package/dist/rslang/semantic/typification-parser.js +165 -219
  141. package/dist/rslang/semantic/typification-parser.js.map +1 -1
  142. package/dist/rslang/semantic/typification.d.ts +2 -119
  143. package/dist/rslang/semantic/typification.js +66 -52
  144. package/dist/rslang/semantic/typification.js.map +1 -1
  145. package/dist/rslang/semantic/value-auditor.d.ts +32 -38
  146. package/dist/rslang/semantic/value-auditor.js +206 -518
  147. package/dist/rslang/semantic/value-auditor.js.map +1 -1
  148. package/dist/rslang/semantic/value-class.d.ts +2 -10
  149. package/dist/rslang/semantic/value-class.js +8 -7
  150. package/dist/rslang/semantic/value-class.js.map +1 -1
  151. package/dist/rslang/typification-graph.d.ts +2 -33
  152. package/dist/rslang/typification-graph.js +94 -306
  153. package/dist/rslang/typification-graph.js.map +1 -1
  154. package/dist/shared/branded.d.ts +2 -7
  155. package/dist/shared/branded.js +1 -1
  156. package/dist/shared/hash.d.ts +2 -6
  157. package/dist/shared/hash.js +13 -13
  158. package/dist/shared/hash.js.map +1 -1
  159. package/dist/shared/index.d.ts +3 -2
  160. package/dist/shared/index.js +2 -18
  161. package/dist/token-DeXAmzwr.d.ts +81 -0
  162. package/dist/typification-Dk-fisgO.d.ts +120 -0
  163. package/dist/typification-graph-6HcZ-rKH.d.ts +30 -0
  164. package/dist/typification-parser-BBVx1RxP.d.ts +13 -0
  165. package/dist/value-B8UtCqaK.js +366 -0
  166. package/dist/value-B8UtCqaK.js.map +1 -0
  167. package/dist/value-CTjX6825.d.ts +33 -0
  168. package/dist/value-api-Bw-SgaYY.d.ts +49 -0
  169. package/dist/value-class-CNI-lqXJ.d.ts +12 -0
  170. package/package.json +8 -8
  171. package/src/library/oss-api.test.ts +76 -0
  172. package/src/library/oss-api.ts +4 -1
  173. package/src/library/rsform-api.test.ts +24 -0
  174. package/src/library/rsform-api.ts +12 -4
  175. package/dist/cctext/index.js.map +0 -1
  176. package/dist/graph/index.js.map +0 -1
  177. package/dist/index.js.map +0 -1
  178. package/dist/library/index.js.map +0 -1
  179. package/dist/library/oss-layout.js.map +0 -1
  180. package/dist/parsing/index.js.map +0 -1
  181. package/dist/rslang/eval/value-api.js.map +0 -1
  182. package/dist/rslang/eval/value.js.map +0 -1
  183. package/dist/rslang/index.js.map +0 -1
  184. package/dist/shared/branded.js.map +0 -1
  185. package/dist/shared/index.js.map +0 -1
@@ -1,836 +1,195 @@
1
- // src/parsing/ast.ts
2
- var TOKEN_ERROR = 0;
3
-
4
- // src/rslang/parser/token.ts
5
- var TokenID = {
6
- // Global, local IDs and literals
7
- ERROR: TOKEN_ERROR,
8
- ID_LOCAL: 258,
9
- ID_GLOBAL: 259,
10
- ID_FUNCTION: 260,
11
- ID_PREDICATE: 261,
12
- ID_RADICAL: 262,
13
- LIT_INTEGER: 263,
14
- LIT_WHOLE_NUMBERS: 264,
15
- LIT_EMPTYSET: 265,
16
- // Arithmetic
17
- PLUS: 266,
18
- MINUS: 267,
19
- MULTIPLY: 268,
20
- // Integer predicate symbols
21
- GREATER: 269,
22
- LESSER: 270,
23
- GREATER_OR_EQ: 271,
24
- LESSER_OR_EQ: 272,
25
- // Equality comparison
26
- EQUAL: 273,
27
- NOTEQUAL: 274,
28
- // Logic predicate symbols
29
- QUANTOR_UNIVERSAL: 275,
30
- QUANTOR_EXISTS: 276,
31
- LOGIC_NOT: 277,
32
- LOGIC_EQUIVALENT: 278,
33
- LOGIC_IMPLICATION: 279,
34
- LOGIC_OR: 280,
35
- LOGIC_AND: 281,
36
- // Set theory predicate symbols
37
- SET_IN: 282,
38
- SET_NOT_IN: 283,
39
- SUBSET: 284,
40
- SUBSET_OR_EQ: 285,
41
- NOT_SUBSET: 286,
42
- // Set theory operators
43
- DECART: 287,
44
- SET_UNION: 288,
45
- SET_INTERSECTION: 289,
46
- SET_MINUS: 290,
47
- SET_SYMMETRIC_MINUS: 291,
48
- BOOLEAN: 292,
49
- // Structure operations
50
- BIGPR: 293,
51
- SMALLPR: 294,
52
- FILTER: 295,
53
- CARD: 296,
54
- BOOL: 297,
55
- DEBOOL: 298,
56
- REDUCE: 299,
57
- // Term constructions prefixes
58
- DECLARATIVE: 300,
59
- RECURSIVE: 301,
60
- IMPERATIVE: 302,
61
- ITERATE: 303,
62
- ASSIGN: 304,
63
- // Punctuation
64
- PUNCTUATION_DEFINE: 305,
65
- PUNCTUATION_STRUCT: 306,
66
- PUNCTUATION_PL: 307,
67
- PUNCTUATION_PR: 308,
68
- PUNCTUATION_CL: 309,
69
- PUNCTUATION_CR: 310,
70
- PUNCTUATION_SL: 311,
71
- PUNCTUATION_SR: 312,
72
- PUNCTUATION_BAR: 313,
73
- PUNCTUATION_COMMA: 314,
74
- PUNCTUATION_SEMICOLON: 315,
75
- // ======= Non-terminal tokens =========
76
- NT_ENUM_DECL: 316,
77
- NT_TUPLE: 317,
78
- NT_ENUMERATION: 318,
79
- NT_TUPLE_DECL: 319,
80
- NT_ARG_DECL: 320,
81
- NT_FUNC_DEFINITION: 321,
82
- NT_ARGUMENTS: 322,
83
- NT_FUNC_CALL: 323,
84
- NT_DECLARATIVE_EXPR: 324,
85
- NT_IMPERATIVE_EXPR: 325,
86
- NT_RECURSIVE_FULL: 326,
87
- NT_RECURSIVE_SHORT: 327,
88
- // ======= Helper tokens ========
89
- INTERRUPT: 328,
90
- END: 329
91
- };
92
-
93
- // src/rslang/semantic/typification.ts
94
- var TypeID = {
95
- anyTypification: 1,
96
- integer: 2,
97
- basic: 3,
98
- tuple: 4,
99
- collection: 5,
100
- logic: 6,
101
- function: 7,
102
- predicate: 8
103
- };
104
- var TypeClass = {
105
- logic: 1,
106
- typification: 2,
107
- function: 3,
108
- predicate: 4
109
- };
110
- var LogicT = { typeID: TypeID.logic };
111
- var IntegerT = {
112
- typeID: TypeID.integer,
113
- isOrdered: true,
114
- isArithmetic: true,
115
- isIntegerCompatible: true
116
- };
117
- var AnyTypificationT = { typeID: TypeID.anyTypification };
118
- var EmptySetT = bool(AnyTypificationT);
119
- function bool(base) {
120
- return { typeID: TypeID.collection, base };
121
- }
122
-
123
- // src/rslang/eval/value-api.ts
124
- function printValue(data) {
125
- if (!Array.isArray(data)) {
126
- return String(data);
127
- }
128
- const len = data.length;
129
- if (data.length === 0) {
130
- return "{}";
131
- }
132
- const isTuple = data[0] === TUPLE_ID;
133
- const start = isTuple ? 1 : 0;
134
- let result = isTuple ? "(" : "{";
135
- for (let i = start; i < len; i++) {
136
- if (i > start) result += ", ";
137
- result += printValue(data[i]);
138
- }
139
- result += isTuple ? ")" : "}";
140
- return result;
141
- }
142
- function isTupleValue(data) {
143
- return Array.isArray(data) && data.length > 1 && data[0] === TUPLE_ID;
144
- }
145
- function extractValue(target, path) {
146
- let current = target;
147
- let i = 0;
148
- while (i < path.length) {
149
- if (!Array.isArray(current) || current.length <= path[i]) {
150
- return null;
151
- }
152
- current = current[path[i]];
153
- i++;
154
- }
155
- return current;
156
- }
157
- function makeDefaultValue(type) {
158
- switch (type.typeID) {
159
- case TypeID.anyTypification:
160
- case TypeID.integer:
161
- case TypeID.basic:
162
- return INVALID_ELEMENT;
163
- case TypeID.collection:
164
- return [];
165
- case TypeID.tuple:
166
- return tuple(type.factors.map((item) => makeDefaultValue(item)));
167
- }
168
- }
169
- function setNestedValue(target, path, newVal) {
170
- if (path.length === 0) {
171
- return newVal;
172
- }
173
- const [head, ...rest] = path;
174
- const arr = Array.isArray(target) ? [...target] : [];
175
- arr[head] = setNestedValue(arr[head], makeValuePath(rest), newVal);
176
- return arr;
177
- }
178
-
179
- // src/rslang/eval/value.ts
180
- var TUPLE_ID = -111;
181
- var INVALID_ELEMENT = -1;
182
- var VALUE_TRUE = 1;
183
- function makeValuePath(path) {
184
- return path;
185
- }
186
- function compare(v1, v2) {
187
- const stack1 = [v1];
188
- const stack2 = [v2];
189
- while (stack1.length > 0 && stack2.length > 0) {
190
- const el1 = stack1.pop();
191
- const el2 = stack2.pop();
192
- if (el1 === el2) {
193
- continue;
194
- }
195
- const type1 = typeof el1;
196
- const type2 = typeof el2;
197
- if (type1 === "number" && type2 === "number") {
198
- const numDiff = el1 - el2;
199
- if (numDiff !== 0) return numDiff;
200
- continue;
201
- }
202
- const isArray1 = Array.isArray(el1);
203
- const isArray2 = Array.isArray(el2);
204
- if (!isArray1 || !isArray2) {
205
- throw new Error(`Cannot compare different types ${printValue(el1)} and ${printValue(el2)}`);
206
- }
207
- const arr1 = el1;
208
- const arr2 = el2;
209
- const len1 = arr1.length;
210
- const len2 = arr2.length;
211
- if (len1 !== len2) {
212
- return len1 - len2;
213
- }
214
- for (let i = len1 - 1; i >= 0; i--) {
215
- stack1.push(arr1[i]);
216
- stack2.push(arr2[i]);
217
- }
218
- }
219
- return 0;
220
- }
221
- function tuple(components) {
222
- return [TUPLE_ID, ...components];
223
- }
224
-
225
- // src/rslang/parser/parser.ts
226
- import { LRParser } from "@lezer/lr";
227
- var parser = LRParser.deserialize({
228
- version: 14,
229
- states: "2lO!sQPOOOVQPO'#CdO$qQPO'#C`O&pQPO'#C`O*bQPO'#C_Q*jQPOOO,TQPO'#CyOVQPO'#CtO,]QPO'#CtOOQO'#Ct'#CtOOQO'#C^'#C^OOQO'#ES'#ESOOQO'#ET'#ETO,bQPO'#DeO,iQPO'#DfO,qQPO'#DhO,vQPO'#DjO,{QPO'#DnO-QQPO'#DrOOQO'#EU'#EUOOQO'#EV'#EVOOQO'#DS'#DSO-VQPO'#DSO-[QPO'#DSOOQO'#EQ'#EQO,TQPO'#DzQOQPOOO-aQPO'#ERO-nQPO,59OO-vQPO'#CeO-{QPO,58xO/lQPO,59tOVQPO,58yOVQPO,58yOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO'#CdOOQO'#C`'#C`OOQO'#C{'#C{O1]QPO,59eO2rQPO,59`OVQPO,59`OOQO'#ER'#ERO5TQPO,5:PO5]QPO,5:UOVQPO,5:QOOQO,5:Q,5:QOVQPO,5:SO,TQPO,5:UOVQPO,5:YO,TQPO,5:^OVQPO,59nOVQPO,59nO5dQPO'#D|OOQO'#D{'#D{O5iQPO,5:fOOQO1G.j1G.jOVQPO,59POOQO1G.d1G.dOOQO1G/`1G/`O5qQPO1G.eO7vQPO1G.eO:zQPO1G/TO=]QPO1G/TO?nQPO1G/TOBPQPO1G/TOGyQPO1G/`OHQQPO1G/`OKpQPO1G/`O! `QPO1G/`O! gQPO1G/`O! nQPO1G/`O! uQPO1G/`O,TQPO,59gOVQPO1G/PO!%aQPO1G.zOOQO1G/k1G/kOVQPO1G/pO!%iQPO1G/lO!%pQPO1G/nO!%xQPO1G/pO!%}QPO1G/tO!&UQPO1G/xO!&ZQPO1G/YO!&cQPO1G/YOVQPO,5:hO,TQPO,5:gOVQPO1G0QO!&jQPO1G.kOOQO1G/R1G/RO!&zQPO7+$kOOQO7+$f7+$fO!(gQPO7+%[OOQO7+%W7+%WO!(nQPO7+%YOVQPO7+%[OVQPO7+%`OVQPO7+%dOOQO7+$t7+$tO!(sQPO1G0SOOQO1G0R1G0RO!(}QPO7+%lO!)UQPO<<HVOVQPO<<HvOVQPO<<HtO!+gQPO<<HvO!+nQPO'#DoO!+xQPO<<HzO!,QQPO<<IOO!,XQPOAN>bO!,`QPOAN>`OVQPOAN>bOVQPO,5:ZOOQOAN>fAN>fOVQPOAN>jOOQOG23|G23|OOQOG23zG23zO!,gQPOG23|O!,nQPO1G/uO!,xQPOG24UOOQOLD)hLD)hOOQOLD)pLD)pOVQPOLD)pO!-SQPO!$'M[OOQO!)9Bv!)9Bv",
230
- stateData: "!-l~O!sOS~OTQOVPOiVOjWOnUOpUOwZOxZOyZOz[O{[O!W]O!Z^O!]_O!``O!aaO!ebO!gfO!hdO!idO!jdO!kdO!ldO!mdO~OkiO~PVOZSX[SX]!wX^!wX_!wX`!wXa!wXb!wXc!wXd!wXe!wXf!wXg!wXr!wXs!wXt!wXu!wX}!wX!O!wX!P!wX!Q!wX!R!wX!S!wX!T!wX!U!wXY!wX!V!wX~O!q!wXU!wXl!wX!_!wXT!wXV!wXi!wXj!wXn!wXp!wXw!wXx!wXy!wXz!wX{!wX!W!wX!Z!wX!]!wX!`!wX!a!wX!e!wX!g!wX!h!wX!i!wX!j!wX!k!wX!l!wX!m!wX!d!wX~P!zOZSX[SX]!xX^!xX_!xX`!xXa!xXb!xXc!xXd!xXe!xXf!xXg!xXr!xXs!xXt!xXu!xX}!xX!O!xX!P!xX!Q!xX!R!xX!S!xX!T!xX!U!xX!q!xXY!xX!V!xXU!xXl!xX!_!xXT!xXV!xXi!xXj!xXn!xXp!xXw!xXx!xXy!xXz!xX{!xX!W!xX!Z!xX!]!xX!`!xX!a!xX!e!xX!g!xX!h!xX!i!xX!j!xX!k!xX!l!xX!m!xX!d!xX~OZpO[pO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~OT!POV!OO~Ok!TO~OT!WO~PYOV!XO!Z^O~Ok!ZO~O!W![O~O!W!]O~O!W!^O~Ok!_O~OV!`O~OY!uX!V!uXl!uX~P*jOU!dOY!uX~OY!eO~OU!fOY!tX]!tX^!tX_!tX`!tXa!tXb!tXc!tXd!tXe!tXf!tXg!tXr!tXs!tXt!tXu!tX}!tX!O!tX!P!tX!Q!tX!R!tX!S!tX!T!tX!U!tX~OU!gOYvX]vX^vX_vX`vXavXbvXcvXdvXevXfvXgvXrvXsvXtvXuvX}vX!OvX!PvX!QvX!RvX!SvX!TvX!UvX~OY!uO]!vO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~Orhashathauha!qhaUhaYha!Vhalha!_haThaVhaihajhanhaphawhaxhayhazha{ha!Wha!Zha!]ha!`ha!aha!eha!gha!hha!iha!jha!kha!lha!mha!dha~P1eOY!eO!V!xO~O]!yO~P!zO]#RO~OY#SOl#TO~O!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P*jO]Ri^Ri_Ri`RiaRibRicRidRieRifRigRirRisRitRiuRi!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P+iOssOttOuuOrqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOttOuuOrqisqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOuuOrqisqitqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOrqisqitqiuqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eO}vO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!P|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!O|i~PDbO!OwO~PDbO}vO!OwO!PxO!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!R|i!S|i!T|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!Q|i~PHXO}vO!OwO!PxO!QyO!T|O!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!S|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!R|i~PKwO!RzO~PKwO!QyO~PHXO}vO!OwO!PxO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~OY!eOl#XO~OU#ZO~P*jOY!eOl#[O~O]#]O~O!_#^O~P*jO[#_O~OY!eOl#`O~OU#`O~P*jOUXiYXi!VXilXi~P*jO]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~PVO!_#eO~P*jOV#fO~OY!pil!pi~P*jO!q!nq~P*jOrmysmytmyumy!qmyUmyYmy!Vmylmy!_myTmyVmyimyjmynmypmywmyxmyymyzmy{my!Wmy!Zmy!]my!`my!amy!emy!gmy!hmy!imy!jmy!kmy!lmy!mmy!dmy~P1eO!_#mO~P*jO!V!cX!d!cX~P*jO!V#oO!d#nO~O!_#pO~P*jO!V#qO~P*jOU#rO~P*jO!V#vO~P*jO!V!ci!d!ci~P*jO!V#wO!_#xO~P*jO!V#zO~P*jO!]!hj!gz{!j!k!l!m!iT!e!a!`!a~",
231
- goto: "1O!zPP!{#y$uPPP&R'VPPPPPPPPPPPPPP#yPPPP'aP(]P#yPPPP(`PPPPP)[PPPPPPPPPP*Y+UP*YP*YPPP*Y,TPP*YPPPPPPP,W,Z,^PPP,d.v/W/W/W0S!phOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRnP!sYOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rSOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xQ!QUS!ai#SQ!|![Q#O!^R#V!u!rROPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x]!PUi![!^!u#SSlP!OX!U]!T!Z!_!sXOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!RU!shOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!peOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRoP!scOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rcOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!Y^R#i#^RjOR!ciQ!biR#b#SQTO[kP]!O!T!Z!_Q!SVQ!gvQ!hpQ!iqQ!jrQ!ksQ!ltQ!muQ!nwQ!oxQ!pyQ!qzQ!r{Q!s|Q!t}Q!z!XQ!}!]Q#Q!`Q#U!eQ#W!vQ#Y!yQ#a#RQ#c#TQ#d#WQ#g#]Q#h#^Q#j#_Q#k#eQ#l#fQ#s#mQ#t#nQ#u#pR#y#xSmP!OQ!V]Q!w!TQ!{!ZR#P!_!seOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!sgOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x",
232
- nodeNames: "\u26A0 Expression Logic Logic_predicates Variable Local ) ( Tuple Expr_enum_min2 , :\u2208 := \u2208 \u2209 \u2286 \u2284 \u2282 > \u2265 < \u2264 \u2260 = Logic_unary \xAC Predicate [ ] Logic_quantor \u2200 Variable_pack \u2203 Logic_binary \u21D4 \u21D2 \u2228 & Setexpr Integer EmptySet IntegerSet Global Radical Setexpr_binary * + - \u222A \\ \u2206 \u2229 \xD7 } { Enumeration Boolean \u212C Filter_expression Filter Declarative | PrefixD PrefixI Imperative Imp_blocks ; PrefixR Recursion Function BigPr SmallPr Card Bool Debool Red Function_decl Arguments Declaration",
233
- maxTerm: 87,
234
- nodeProps: [
235
- ["openedBy", 6, "(", 53, "{"],
236
- ["closedBy", 7, ")", 54, "}"]
237
- ],
238
- skippedNodes: [0],
239
- repeatNodeCount: 0,
240
- tokenData: "6j~R!jX^%spq%svw&hxy&myz&rz{&w{|&||}'R}!O'W!Q![']![!]'e!]!^'x!^!_'}!_!`(S!`!a(X!c!d(^!e!f(^!f!g(l!h!i(t!k!l)h!p!q(^!r!s)m!t!u*a!u!v(^!v!w(^!z!{(^!|!}*q!}#O*v#O#P*{#P#Q+Q#R#S+V#T#U+V#U#V+m#V#W-]#W#X.x#X#d+V#d#e1b#e#f+V#f#g2w#g#o+V#o#p4R#p#q4W#q#r4]#y#z%s$f$g%s$r$s4b%o%p4g5i6S+V#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s% l% m4l%%Y%%Z4q%%[%%]4v%&Y%&Z4{%&]%&^5Q%&_%&`5V%&`%&a5[%&b%&c5a%&c%&d5f%'S%'T5k%'T%'U5p%'U%'V5u%(^%(_5z%(b%(c6P%(c%(d6U%)Q%)R6Z%)S%)T6`%)U%)V6e&FU&FV%s~%xY!s~X^%spq%s#y#z%s$f$g%s#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s&FU&FV%s~&mOu~~&rOV~~&wOU~~&|O}~~'RO!O~~'WOY~~']O!P~~'bPw~!Q![']~'hQ!_!`'n%&b%&c's~'sO[~~'xOZ~~'}O!d~~(SOd~~(XOg~~(^Ob~~(aP!Q![(d~(iPz~!Q![(d~(qP!`~!Q![(d~(wQ!Q![(}#]#^)V~)SP!g~!Q![(}~)YP!R![)]~)bQ!]~|})V!Q![)]~)mO!a~~)pQ!Q![)v#f#g*O~){Pj~!Q![)v~*RP!R![*U~*ZQ!h~|}*O!Q![*U~*fP!e~!Q![*i~*nP{~!Q![*i~*vOy~~*{Ok~~+QO!R~~+VOl~~+[RT~!Q![+e#T#o+V5i6S+V~+jPT~!Q![+e~+rTT~!Q![+e#T#c+V#c#d,R#d#o+V5i6S+V~,WTT~!Q![+e#T#c+V#c#d,g#d#o+V5i6S+V~,lTT~!Q![+e#T#`+V#`#a,{#a#o+V5i6S+V~-SR!k~T~!Q![+e#T#o+V5i6S+V~-bST~!Q![+e#T#U-n#U#o+V5i6S+V~-sTT~!Q![+e#T#f+V#f#g.S#g#o+V5i6S+V~.XTT~!Q![+e#T#W+V#W#X.h#X#o+V5i6S+V~.oR!j~T~!Q![+e#T#o+V5i6S+V~.}TT~!Q![+e#T#X+V#X#Y/^#Y#o+V5i6S+V~/cTT~!Q![+e#T#U+V#U#V/r#V#o+V5i6S+V~/wTT~!Q![+e#T#c+V#c#d0W#d#o+V5i6S+V~0]TT~!Q![+e#T#c+V#c#d0l#d#o+V5i6S+V~0qTT~!Q![+e#T#`+V#`#a1Q#a#o+V5i6S+V~1XR!l~T~!Q![+e#T#o+V5i6S+V~1gTT~!Q![+e#T#f+V#f#g1v#g#o+V5i6S+V~1{ST~!Q!R+e!R![2X#T#o+V5i6S+V~2`Q!i~T~|}2f!Q![2X~2iP!R![2l~2qQ!i~|}2f!Q![2l~2|TT~!Q![+e#T#X+V#X#Y3]#Y#o+V5i6S+V~3bTT~!Q![+e#T#W+V#W#X3q#X#o+V5i6S+V~3xR!m~T~!Q![+e#T#o+V5i6S+V~4WO!W~~4]O!_~~4bO!V~~4gOi~~4lO!U~~4qO!Z~~4vOs~~4{Or~~5QOn~~5VOp~~5[Ox~~5aO!S~~5fO]~~5kO^~~5pOt~~5uO!T~~5zO!Q~~6POf~~6UOe~~6ZOc~~6`Oa~~6eO`~~6jO_~",
241
- tokenizers: [0],
242
- topRules: { "Expression": [0, 1] },
243
- tokenPrec: 2679
244
- });
245
-
246
- // src/rslang/parser/parser.terms.ts
247
- var Local = 5;
248
- var Tuple = 8;
249
- var Predicate = 26;
250
- var Variable_pack = 31;
251
- var Integer = 39;
252
- var EmptySet = 40;
253
- var IntegerSet = 41;
254
- var Global = 42;
255
- var Radical = 43;
256
- var Enumeration = 55;
257
- var Boolean = 56;
258
- var Filter = 59;
259
- var Declarative = 60;
260
- var Imperative = 64;
261
- var Function = 69;
262
- var BigPr = 70;
263
- var SmallPr = 71;
264
- var Card = 72;
265
- var Bool = 73;
266
- var Debool = 74;
267
- var Red = 75;
268
- var Function_decl = 76;
269
- var Arguments = 77;
270
- var Declaration = 78;
271
-
272
- // src/rslang/parser/normalize.ts
273
- var idRecord = {
274
- [Global]: TokenID.ID_GLOBAL,
275
- [Local]: TokenID.ID_LOCAL,
276
- [Radical]: TokenID.ID_RADICAL,
277
- [Function]: TokenID.ID_FUNCTION,
278
- [Predicate]: TokenID.ID_PREDICATE,
279
- [Integer]: TokenID.LIT_INTEGER,
280
- [EmptySet]: TokenID.LIT_EMPTYSET,
281
- [IntegerSet]: TokenID.LIT_WHOLE_NUMBERS,
282
- [Boolean]: TokenID.BOOLEAN,
283
- [BigPr]: TokenID.BIGPR,
284
- [SmallPr]: TokenID.SMALLPR,
285
- [Filter]: TokenID.FILTER,
286
- [Bool]: TokenID.BOOL,
287
- [Debool]: TokenID.DEBOOL,
288
- [Red]: TokenID.REDUCE,
289
- [Card]: TokenID.CARD,
290
- [Enumeration]: TokenID.NT_ENUMERATION,
291
- [Tuple]: TokenID.NT_TUPLE,
292
- [Arguments]: TokenID.NT_ARGUMENTS,
293
- [Declaration]: TokenID.NT_ARG_DECL,
294
- [Function_decl]: TokenID.NT_FUNC_DEFINITION,
295
- [Variable_pack]: TokenID.NT_ENUM_DECL,
296
- [Declarative]: TokenID.NT_DECLARATIVE_EXPR,
297
- [Imperative]: TokenID.NT_IMPERATIVE_EXPR
298
- };
299
-
300
- // src/rslang/labels.ts
301
- var labelTokenRecord = {
302
- [TokenID.DECART]: "\xD7",
303
- [TokenID.PUNCTUATION_PL]: "( )",
304
- [TokenID.PUNCTUATION_SL]: "[ ]",
305
- [TokenID.QUANTOR_UNIVERSAL]: "\u2200",
306
- [TokenID.QUANTOR_EXISTS]: "\u2203",
307
- [TokenID.LOGIC_NOT]: "\xAC",
308
- [TokenID.LOGIC_AND]: "&",
309
- [TokenID.LOGIC_OR]: "\u2228",
310
- [TokenID.LOGIC_IMPLICATION]: "\u21D2",
311
- [TokenID.LOGIC_EQUIVALENT]: "\u21D4",
312
- [TokenID.LIT_EMPTYSET]: "\u2205",
313
- [TokenID.LIT_WHOLE_NUMBERS]: "Z",
314
- [TokenID.MULTIPLY]: "*",
315
- [TokenID.EQUAL]: "=",
316
- [TokenID.NOTEQUAL]: "\u2260",
317
- [TokenID.GREATER_OR_EQ]: "\u2265",
318
- [TokenID.LESSER_OR_EQ]: "\u2264",
319
- [TokenID.SET_IN]: "\u2208",
320
- [TokenID.SET_NOT_IN]: "\u2209",
321
- [TokenID.SUBSET_OR_EQ]: "\u2286",
322
- [TokenID.SUBSET]: "\u2282",
323
- [TokenID.NOT_SUBSET]: "\u2284",
324
- [TokenID.SET_INTERSECTION]: "\u2229",
325
- [TokenID.SET_UNION]: "\u222A",
326
- [TokenID.SET_MINUS]: "\\",
327
- [TokenID.SET_SYMMETRIC_MINUS]: "\u2206",
328
- [TokenID.BOOLEAN]: "\u212C()",
329
- [TokenID.NT_DECLARATIVE_EXPR]: "D{}",
330
- [TokenID.NT_IMPERATIVE_EXPR]: "I{}",
331
- [TokenID.NT_RECURSIVE_FULL]: "R{}",
332
- [TokenID.BIGPR]: "Pr1()",
333
- [TokenID.SMALLPR]: "pr1()",
334
- [TokenID.FILTER]: "Fi1[]()",
335
- [TokenID.REDUCE]: "red()",
336
- [TokenID.CARD]: "card()",
337
- [TokenID.BOOL]: "bool()",
338
- [TokenID.DEBOOL]: "debool()",
339
- [TokenID.ASSIGN]: ":=",
340
- [TokenID.ITERATE]: ":\u2208"
341
- };
342
-
343
- // src/rslang/semantic/typification-api.ts
344
- var TypeIDToClass = {
345
- [TypeID.anyTypification]: TypeClass.typification,
346
- [TypeID.integer]: TypeClass.typification,
347
- [TypeID.basic]: TypeClass.typification,
348
- [TypeID.tuple]: TypeClass.typification,
349
- [TypeID.collection]: TypeClass.typification,
350
- [TypeID.logic]: TypeClass.logic,
351
- [TypeID.function]: TypeClass.function,
352
- [TypeID.predicate]: TypeClass.predicate
353
- };
354
-
355
- // src/rslang/semantic/value-class.ts
356
- var ValueClass = {
357
- VALUE: "value",
358
- PROPERTY: "property"
359
- };
360
-
361
- // src/library/rsform.ts
362
- var CstType = {
363
- NOMINAL: "nominal",
364
- BASE: "basic",
365
- STRUCTURED: "structure",
366
- TERM: "term",
367
- AXIOM: "axiom",
368
- FUNCTION: "function",
369
- PREDICATE: "predicate",
370
- CONSTANT: "constant",
371
- STATEMENT: "statement"
372
- };
373
- var CstClass = {
374
- NOMINAL: "nominal",
375
- BASIC: "basic",
376
- DERIVED: "derived",
377
- STATEMENT: "statement",
378
- TEMPLATE: "template"
379
- };
380
- var CstStatus = {
381
- VERIFIED: "verified",
382
- INCORRECT: "incorrect",
383
- INCALCULABLE: "incalculable",
384
- PROPERTY: "property",
385
- UNKNOWN: "unknown"
386
- };
387
-
388
- // src/library/rsform-api.ts
389
- var CST_TYPE_PREFIX = {
390
- [CstType.NOMINAL]: "N",
391
- [CstType.BASE]: "X",
392
- [CstType.CONSTANT]: "C",
393
- [CstType.STRUCTURED]: "S",
394
- [CstType.AXIOM]: "A",
395
- [CstType.TERM]: "D",
396
- [CstType.FUNCTION]: "F",
397
- [CstType.PREDICATE]: "P",
398
- [CstType.STATEMENT]: "T"
399
- };
400
- var CST_TYPE_TO_CLASS = {
401
- [CstType.NOMINAL]: CstClass.NOMINAL,
402
- [CstType.BASE]: CstClass.BASIC,
403
- [CstType.CONSTANT]: CstClass.BASIC,
404
- [CstType.STRUCTURED]: CstClass.BASIC,
405
- [CstType.TERM]: CstClass.DERIVED,
406
- [CstType.FUNCTION]: CstClass.DERIVED,
407
- [CstType.AXIOM]: CstClass.STATEMENT,
408
- [CstType.PREDICATE]: CstClass.DERIVED,
409
- [CstType.STATEMENT]: CstClass.STATEMENT
410
- };
411
- function isSchemaIssue(cst) {
412
- if (cst.homonyms.length > 0 || cst.formalDuplicates.length > 0 || cst.status === CstStatus.INCORRECT || cst.status === CstStatus.INCALCULABLE || cst.is_type_mismatch) {
413
- return true;
414
- }
415
- if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
416
- if (!cst.convention || !cst.term_resolved) {
417
- return true;
418
- }
419
- }
420
- return false;
421
- }
422
- function isBasicConcept(type) {
423
- switch (type) {
424
- case CstType.NOMINAL:
425
- case CstType.BASE:
426
- case CstType.CONSTANT:
427
- case CstType.STRUCTURED:
428
- case CstType.AXIOM:
429
- return true;
430
- case CstType.TERM:
431
- case CstType.FUNCTION:
432
- case CstType.PREDICATE:
433
- case CstType.STATEMENT:
434
- return false;
435
- }
436
- }
437
- function isBaseSet(type) {
438
- switch (type) {
439
- case CstType.BASE:
440
- case CstType.CONSTANT:
441
- return true;
442
- case CstType.NOMINAL:
443
- case CstType.STRUCTURED:
444
- case CstType.AXIOM:
445
- case CstType.TERM:
446
- case CstType.FUNCTION:
447
- case CstType.PREDICATE:
448
- case CstType.STATEMENT:
449
- return false;
450
- }
451
- }
452
- function isLogical(type) {
453
- switch (type) {
454
- case CstType.AXIOM:
455
- case CstType.STATEMENT:
456
- return true;
457
- case CstType.NOMINAL:
458
- case CstType.BASE:
459
- case CstType.CONSTANT:
460
- case CstType.STRUCTURED:
461
- case CstType.TERM:
462
- case CstType.FUNCTION:
463
- case CstType.PREDICATE:
464
- return false;
465
- }
466
- }
467
- function calculateSchemaStats(target) {
468
- const items = target.items;
469
- return {
470
- count_all: items.length,
471
- count_crucial: items.reduce((sum, cst) => sum + (cst.crucial ? 1 : 0), 0),
472
- step_complexity: items.reduce((sum, cst) => sum + calculateStepComplexity(cst), 0),
473
- count_problematic: items.reduce((sum, cst) => sum + (isSchemaIssue(cst) ? 1 : 0), 0),
474
- count_homonyms: items.reduce((sum, cst) => sum + (cst.homonyms.length > 0 ? 1 : 0), 0),
475
- count_formal_duplicates: items.reduce((sum, cst) => sum + (cst.formalDuplicates.length > 0 ? 1 : 0), 0),
476
- count_missing_convention: items.reduce((sum, cst) => sum + (isMissingConvention(cst) ? 1 : 0), 0),
477
- count_type_mismatch: items.reduce((sum, cst) => sum + (cst.is_type_mismatch ? 1 : 0), 0),
478
- count_incorrect: items.reduce((sum, cst) => sum + (cst.status === CstStatus.INCORRECT ? 1 : 0), 0),
479
- count_property: items.reduce((sum, cst) => sum + (cst.analysis?.valueClass === ValueClass.PROPERTY ? 1 : 0), 0),
480
- count_incalculable: items.reduce(
481
- (sum, cst) => sum + (cst.analysis?.success && cst.analysis.valueClass === null ? 1 : 0),
482
- 0
483
- ),
484
- count_inherited: items.reduce((sum, cst) => sum + (cst.is_inherited ? 1 : 0), 0),
485
- count_text_term: items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0), 0),
486
- count_definition: items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0), 0),
487
- count_convention: items.reduce((sum, cst) => sum + (isBasicConcept(cst.cst_type) && cst.convention ? 1 : 0), 0),
488
- count_comment: items.reduce((sum, cst) => sum + (!isBasicConcept(cst.cst_type) && !cst.convention ? 1 : 0), 0),
489
- count_base: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0),
490
- count_constant: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0),
491
- count_structured: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0),
492
- count_axiom: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0),
493
- count_term: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0),
494
- count_function: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0),
495
- count_predicate: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0),
496
- count_statement: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STATEMENT ? 1 : 0), 0),
497
- count_nominal: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.NOMINAL ? 1 : 0), 0)
498
- };
499
- }
500
- function calculateStepComplexity(cst) {
501
- if (cst.cst_type === CstType.AXIOM || cst.cst_type === CstType.NOMINAL || !isBasicConcept(cst.cst_type)) {
502
- return 0;
503
- }
504
- if (cst.cst_type === CstType.BASE || cst.cst_type === CstType.CONSTANT || !cst.effectiveType) {
505
- return 1;
506
- }
507
- const type = cst.effectiveType;
508
- return calculateTypificationComplexity(type) + 1;
509
- }
510
- function calculateTypificationComplexity(type) {
511
- switch (type.typeID) {
512
- case TypeID.basic:
513
- case TypeID.integer:
514
- case TypeID.anyTypification:
515
- return 0;
516
- case TypeID.tuple:
517
- return type.factors.length + type.factors.reduce((sum, factor) => sum + calculateTypificationComplexity(factor), 0);
518
- case TypeID.collection:
519
- if (type.base.typeID === TypeID.tuple) {
520
- let sum = 0;
521
- type.base.factors.forEach((factor) => {
522
- sum += calculateTypificationComplexity(factor);
523
- });
524
- return sum + type.base.factors.length;
525
- } else if (type.base.typeID === TypeID.collection) {
526
- return calculateTypificationComplexity(type.base) + 1;
527
- }
528
- return 0;
529
- }
530
- }
531
- function isMissingConvention(cst) {
532
- if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
533
- if (!cst.convention || !cst.term_resolved) {
534
- return true;
535
- }
536
- }
537
- return false;
538
- }
539
-
540
- // src/library/rsmodel.ts
541
- var EvalStatus = {
542
- NO_EVAL: 1,
543
- // не вычисляется
544
- NOT_PROCESSED: 2,
545
- // Интерпретация не вычислялась
546
- INVALID_DATA: 3,
547
- // Неверные данные
548
- EVAL_FAIL: 4,
549
- // Ошибка при вычислении
550
- AXIOM_FALSE: 5,
551
- // Значение аксиомы = FALSE
552
- EMPTY: 6,
553
- // Значение пусто
554
- HAS_DATA: 7
555
- // Интерпретация вычислена и не пуста
556
- };
557
-
558
- // src/library/rsmodel-api.ts
559
- var RANDOM_INTEGER_MIN = -100;
560
- var RANDOM_INTEGER_MAX = 100;
561
- var DEFAULT_RANDOM_SET_ELEMENTS_COUNT = 5;
1
+ import { TypeID } from "../rslang/semantic/typification.js";
2
+ import { D as setNestedValue, b as makeDefaultValue, c as compare, d as tuple, g as extractValue, y as isTupleValue } from "../value-B8UtCqaK.js";
3
+ import "../rslang/index.js";
4
+ import { CstType } from "./rsform.js";
5
+ import { calculateSchemaStats, isBaseSet, isBasicConcept } from "./rsform-api.js";
6
+ import { EvalStatus } from "./rsmodel.js";
7
+ //#region src/library/rsmodel-api.ts
8
+ const RANDOM_INTEGER_MIN = -100;
9
+ const DEFAULT_RANDOM_SET_ELEMENTS_COUNT = 5;
10
+ /** Evaluate if parsed data is a basic binding data. */
562
11
  function validateBasicBindingData(data) {
563
- if (!data || typeof data !== "object" || Array.isArray(data)) {
564
- return false;
565
- }
566
- return Object.entries(data).every(([key, value]) => typeof value === "string" && Number.isInteger(Number(key)));
12
+ if (!data || typeof data !== "object" || Array.isArray(data)) return false;
13
+ return Object.entries(data).every(([key, value]) => typeof value === "string" && Number.isInteger(Number(key)));
567
14
  }
15
+ /** Convert parsed data to a basic binding. */
568
16
  function toBasicBinding(data) {
569
- const result = {};
570
- for (const [k, v] of Object.entries(data)) {
571
- result[Number(k)] = v;
572
- }
573
- return result;
17
+ const result = {};
18
+ for (const [k, v] of Object.entries(data)) result[Number(k)] = v;
19
+ return result;
574
20
  }
21
+ /** Evaluate if parsed data is a {@link Value} data. */
575
22
  function validateValueData(data) {
576
- if (typeof data === "number") {
577
- return Number.isFinite(data);
578
- }
579
- if (!Array.isArray(data)) {
580
- return false;
581
- }
582
- return data.every((item) => validateValueData(item));
23
+ if (typeof data === "number") return Number.isFinite(data);
24
+ if (!Array.isArray(data)) return false;
25
+ return data.every((item) => validateValueData(item));
583
26
  }
584
27
  function generateRandomValue(type, basics, cstByAlias, setElementsCount = DEFAULT_RANDOM_SET_ELEMENTS_COUNT) {
585
- switch (type.typeID) {
586
- case TypeID.integer:
587
- return Math.floor(Math.random() * (RANDOM_INTEGER_MAX - RANDOM_INTEGER_MIN + 1)) + RANDOM_INTEGER_MIN;
588
- case TypeID.basic: {
589
- const cst = cstByAlias.get(type.baseID);
590
- const binding = cst ? basics.get(cst.id) : void 0;
591
- const ids = Object.keys(binding ?? {}).map(Number);
592
- if (ids.length === 0) {
593
- return null;
594
- }
595
- return ids[Math.floor(Math.random() * ids.length)];
596
- }
597
- case TypeID.tuple: {
598
- const factors = [];
599
- for (const factor of type.factors) {
600
- const sample = generateRandomValue(factor, basics, cstByAlias, setElementsCount);
601
- if (sample === null) {
602
- return null;
603
- }
604
- factors.push(sample);
605
- }
606
- return tuple(factors);
607
- }
608
- case TypeID.collection: {
609
- const result = [];
610
- const randomElementsCount = Math.floor(Math.random() * (setElementsCount + 1));
611
- for (let i = 0; i < randomElementsCount; i++) {
612
- const sample = generateRandomValue(type.base, basics, cstByAlias, setElementsCount);
613
- if (sample === null) {
614
- return null;
615
- }
616
- result.push(sample);
617
- }
618
- return result;
619
- }
620
- case TypeID.anyTypification:
621
- return null;
622
- }
623
- }
28
+ switch (type.typeID) {
29
+ case TypeID.integer: return Math.floor(Math.random() * 201) + RANDOM_INTEGER_MIN;
30
+ case TypeID.basic: {
31
+ const cst = cstByAlias.get(type.baseID);
32
+ const binding = cst ? basics.get(cst.id) : void 0;
33
+ const ids = Object.keys(binding ?? {}).map(Number);
34
+ if (ids.length === 0) return null;
35
+ return ids[Math.floor(Math.random() * ids.length)];
36
+ }
37
+ case TypeID.tuple: {
38
+ const factors = [];
39
+ for (const factor of type.factors) {
40
+ const sample = generateRandomValue(factor, basics, cstByAlias, setElementsCount);
41
+ if (sample === null) return null;
42
+ factors.push(sample);
43
+ }
44
+ return tuple(factors);
45
+ }
46
+ case TypeID.collection: {
47
+ const result = [];
48
+ const randomElementsCount = Math.floor(Math.random() * (setElementsCount + 1));
49
+ for (let i = 0; i < randomElementsCount; i++) {
50
+ const sample = generateRandomValue(type.base, basics, cstByAlias, setElementsCount);
51
+ if (sample === null) return null;
52
+ result.push(sample);
53
+ }
54
+ return result;
55
+ }
56
+ case TypeID.anyTypification: return null;
57
+ }
58
+ }
59
+ /** Calculate statistics for {@link RSModel}. */
624
60
  function calculateModelStats(schema, engine, _engineGeneration) {
625
- const items = schema.items;
626
- const statusByID = /* @__PURE__ */ new Map();
627
- for (const cst of items) {
628
- statusByID.set(cst.id, engine.getCstStatus(cst.id));
629
- }
630
- return {
631
- ...calculateSchemaStats(schema),
632
- base_elements: items.reduce((sum, cst) => sum + countBaseElements(cst, engine), 0),
633
- count_missing_base: items.reduce(
634
- (sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && isBasicConcept(cst.cst_type) ? 1 : 0),
635
- 0
636
- ),
637
- count_false_axioms: items.reduce(
638
- (sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.AXIOM_FALSE ? 1 : 0),
639
- 0
640
- ),
641
- count_invalid_data: items.reduce(
642
- (sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.INVALID_DATA ? 1 : 0),
643
- 0
644
- ),
645
- count_invalid_calculations: items.reduce(
646
- (sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EVAL_FAIL || statusByID.get(cst.id) === EvalStatus.NOT_PROCESSED ? 1 : 0),
647
- 0
648
- ),
649
- count_empty_terms: items.reduce(
650
- (sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && cst.cst_type === CstType.TERM ? 1 : 0),
651
- 0
652
- )
653
- };
654
- }
61
+ const items = schema.items;
62
+ const statusByID = /* @__PURE__ */ new Map();
63
+ for (const cst of items) statusByID.set(cst.id, engine.getCstStatus(cst.id));
64
+ return {
65
+ ...calculateSchemaStats(schema),
66
+ base_elements: items.reduce((sum, cst) => sum + countBaseElements(cst, engine), 0),
67
+ count_missing_base: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && isBasicConcept(cst.cst_type) ? 1 : 0), 0),
68
+ count_false_axioms: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.AXIOM_FALSE ? 1 : 0), 0),
69
+ count_invalid_data: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.INVALID_DATA ? 1 : 0), 0),
70
+ count_invalid_calculations: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EVAL_FAIL || statusByID.get(cst.id) === EvalStatus.NOT_PROCESSED ? 1 : 0), 0),
71
+ count_empty_terms: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && cst.cst_type === CstType.TERM ? 1 : 0), 0)
72
+ };
73
+ }
74
+ /** Checks whether evaluation status contributes to model status issues. */
655
75
  function isModelIssue(engine, cst) {
656
- const status = engine.getCstStatus(cst.id);
657
- const isBasic = isBasicConcept(cst.cst_type);
658
- return status === EvalStatus.EVAL_FAIL || status === EvalStatus.AXIOM_FALSE || status === EvalStatus.INVALID_DATA || isBasic && status === EvalStatus.EMPTY;
76
+ const status = engine.getCstStatus(cst.id);
77
+ const isBasic = isBasicConcept(cst.cst_type);
78
+ return status === EvalStatus.EVAL_FAIL || status === EvalStatus.AXIOM_FALSE || status === EvalStatus.INVALID_DATA || isBasic && status === EvalStatus.EMPTY;
659
79
  }
80
+ /** Evaluate if {@link CstType} is interpretable. */
660
81
  function isInterpretable(type) {
661
- switch (type) {
662
- case CstType.BASE:
663
- case CstType.CONSTANT:
664
- case CstType.STRUCTURED:
665
- case CstType.AXIOM:
666
- case CstType.TERM:
667
- case CstType.STATEMENT:
668
- return true;
669
- case CstType.NOMINAL:
670
- case CstType.FUNCTION:
671
- case CstType.PREDICATE:
672
- return false;
673
- }
674
- }
82
+ switch (type) {
83
+ case CstType.BASE:
84
+ case CstType.CONSTANT:
85
+ case CstType.STRUCTURED:
86
+ case CstType.AXIOM:
87
+ case CstType.TERM:
88
+ case CstType.STATEMENT: return true;
89
+ case CstType.NOMINAL:
90
+ case CstType.FUNCTION:
91
+ case CstType.PREDICATE: return false;
92
+ }
93
+ }
94
+ /** Evaluate if {@link CstType} is inferrable. */
675
95
  function isInferrable(type) {
676
- switch (type) {
677
- case CstType.AXIOM:
678
- case CstType.STATEMENT:
679
- case CstType.TERM:
680
- return true;
681
- case CstType.NOMINAL:
682
- case CstType.BASE:
683
- case CstType.CONSTANT:
684
- case CstType.STRUCTURED:
685
- case CstType.FUNCTION:
686
- case CstType.PREDICATE:
687
- return false;
688
- }
689
- }
96
+ switch (type) {
97
+ case CstType.AXIOM:
98
+ case CstType.STATEMENT:
99
+ case CstType.TERM: return true;
100
+ case CstType.NOMINAL:
101
+ case CstType.BASE:
102
+ case CstType.CONSTANT:
103
+ case CstType.STRUCTURED:
104
+ case CstType.FUNCTION:
105
+ case CstType.PREDICATE: return false;
106
+ }
107
+ }
108
+ /** Infers status of a given {@link Value} and {@link CstType}. */
690
109
  function inferEvalStatus(value, cstType, wasCalculated = true, isInvalid = false) {
691
- if (isBaseSet(cstType) || cstType === CstType.STRUCTURED) {
692
- if (isInvalid) {
693
- return EvalStatus.INVALID_DATA;
694
- }
695
- if (value === null || Array.isArray(value) && value.length === 0) {
696
- return EvalStatus.EMPTY;
697
- }
698
- return EvalStatus.HAS_DATA;
699
- }
700
- if (!isInferrable(cstType)) {
701
- return EvalStatus.NO_EVAL;
702
- }
703
- if (!wasCalculated) {
704
- return EvalStatus.NOT_PROCESSED;
705
- }
706
- if (value === null) {
707
- return EvalStatus.EVAL_FAIL;
708
- }
709
- if (cstType === CstType.AXIOM && value !== VALUE_TRUE) {
710
- return EvalStatus.AXIOM_FALSE;
711
- }
712
- if (Array.isArray(value) && value.length === 0) {
713
- return EvalStatus.EMPTY;
714
- }
715
- return EvalStatus.HAS_DATA;
716
- }
110
+ if (isBaseSet(cstType) || cstType === CstType.STRUCTURED) {
111
+ if (isInvalid) return EvalStatus.INVALID_DATA;
112
+ if (value === null || Array.isArray(value) && value.length === 0) return EvalStatus.EMPTY;
113
+ return EvalStatus.HAS_DATA;
114
+ }
115
+ if (!isInferrable(cstType)) return EvalStatus.NO_EVAL;
116
+ if (!wasCalculated) return EvalStatus.NOT_PROCESSED;
117
+ if (value === null) return EvalStatus.EVAL_FAIL;
118
+ if (cstType === CstType.AXIOM && value !== 1) return EvalStatus.AXIOM_FALSE;
119
+ if (Array.isArray(value) && value.length === 0) return EvalStatus.EMPTY;
120
+ return EvalStatus.HAS_DATA;
121
+ }
122
+ /** Tries to fix value removing invalid base elements not present in the target value.
123
+ * returns null if no fixing is possible.
124
+ * returns true if fixing was successful.
125
+ * returns false if fixing was not needed.
126
+ */
717
127
  function tryFixValue(value, type, targetAlias, targetValue) {
718
- switch (type.typeID) {
719
- case TypeID.integer:
720
- return false;
721
- case TypeID.basic:
722
- if (type.baseID !== targetAlias) {
723
- return false;
724
- }
725
- if (typeof value !== "number") {
726
- return null;
727
- }
728
- if (!targetValue.includes(value)) {
729
- return null;
730
- }
731
- return false;
732
- case TypeID.tuple: {
733
- if (!isTupleValue(value)) {
734
- return null;
735
- }
736
- let wasChanged2 = false;
737
- for (let i = 0; i < type.factors.length; i++) {
738
- const componentChanged = tryFixValue(value[i + 1], type.factors[i], targetAlias, targetValue);
739
- if (componentChanged === null) {
740
- return null;
741
- }
742
- if (componentChanged) {
743
- wasChanged2 = true;
744
- }
745
- }
746
- return wasChanged2;
747
- }
748
- case TypeID.collection:
749
- if (!Array.isArray(value) || value.length > 1 && value[0] === TUPLE_ID) {
750
- return null;
751
- }
752
- let wasChanged = false;
753
- const removeElements = [];
754
- for (const item of value) {
755
- const elementChanged = tryFixValue(item, type.base, targetAlias, targetValue);
756
- if (elementChanged === null || elementChanged === true) {
757
- wasChanged = true;
758
- if (elementChanged === null) {
759
- removeElements.push(item);
760
- }
761
- }
762
- }
763
- for (const item of removeElements) {
764
- const index = value.indexOf(item);
765
- if (index !== -1) {
766
- value.splice(index, 1);
767
- }
768
- }
769
- if (wasChanged) {
770
- value.sort((a, b) => compare(a, b));
771
- let i = 1;
772
- while (i < value.length) {
773
- if (compare(value[i], value[i - 1]) === 0) {
774
- value.splice(i, 1);
775
- } else {
776
- i++;
777
- }
778
- }
779
- }
780
- return wasChanged;
781
- case TypeID.logic:
782
- case TypeID.anyTypification:
783
- case TypeID.predicate:
784
- case TypeID.function:
785
- return null;
786
- }
128
+ switch (type.typeID) {
129
+ case TypeID.integer: return false;
130
+ case TypeID.basic:
131
+ if (type.baseID !== targetAlias) return false;
132
+ if (typeof value !== "number") return null;
133
+ if (!targetValue.includes(value)) return null;
134
+ return false;
135
+ case TypeID.tuple: {
136
+ if (!isTupleValue(value)) return null;
137
+ let wasChanged = false;
138
+ for (let i = 0; i < type.factors.length; i++) {
139
+ const componentChanged = tryFixValue(value[i + 1], type.factors[i], targetAlias, targetValue);
140
+ if (componentChanged === null) return null;
141
+ if (componentChanged) wasChanged = true;
142
+ }
143
+ return wasChanged;
144
+ }
145
+ case TypeID.collection:
146
+ if (!Array.isArray(value) || value.length > 1 && value[0] === -111) return null;
147
+ let wasChanged = false;
148
+ const removeElements = [];
149
+ for (const item of value) {
150
+ const elementChanged = tryFixValue(item, type.base, targetAlias, targetValue);
151
+ if (elementChanged === null || elementChanged === true) {
152
+ wasChanged = true;
153
+ if (elementChanged === null) removeElements.push(item);
154
+ }
155
+ }
156
+ for (const item of removeElements) {
157
+ const index = value.indexOf(item);
158
+ if (index !== -1) value.splice(index, 1);
159
+ }
160
+ if (wasChanged) {
161
+ value.sort((a, b) => compare(a, b));
162
+ let i = 1;
163
+ while (i < value.length) if (compare(value[i], value[i - 1]) === 0) value.splice(i, 1);
164
+ else i++;
165
+ }
166
+ return wasChanged;
167
+ case TypeID.logic:
168
+ case TypeID.anyTypification:
169
+ case TypeID.predicate:
170
+ case TypeID.function: return null;
171
+ }
787
172
  }
788
173
  function updateValueElement(value, path, newValue) {
789
- return setNestedValue(value, path, newValue);
174
+ return setNestedValue(value, path, newValue);
790
175
  }
791
176
  function deleteValueElement(value, path, type, target) {
792
- if (path.length === 0 && type.typeID !== TypeID.collection) {
793
- return null;
794
- }
795
- const arrayValue = extractValue(value, path);
796
- const updatedArray = [...arrayValue.slice(0, target), ...arrayValue.slice(target + 1)];
797
- return setNestedValue(value, path, updatedArray);
177
+ if (path.length === 0 && type.typeID !== TypeID.collection) return null;
178
+ const arrayValue = extractValue(value, path);
179
+ return setNestedValue(value, path, [...arrayValue.slice(0, target), ...arrayValue.slice(target + 1)]);
798
180
  }
799
181
  function addValueElement(value, path, type, currentType) {
800
- if (path.length === 0 && type.typeID !== TypeID.collection) {
801
- return makeDefaultValue(type);
802
- }
803
- const newElem = makeDefaultValue(currentType.base);
804
- const arrayValue = extractValue(value, path) ?? [];
805
- const updatedArray = [newElem, ...arrayValue];
806
- return setNestedValue(value, path, updatedArray);
182
+ if (path.length === 0 && type.typeID !== TypeID.collection) return makeDefaultValue(type);
183
+ return setNestedValue(value, path, [makeDefaultValue(currentType.base), ...extractValue(value, path) ?? []]);
807
184
  }
808
185
  function countBaseElements(cst, engine) {
809
- if (!isBasicConcept(cst.cst_type)) {
810
- return 0;
811
- }
812
- const value = engine.getCstValue(cst.id);
813
- if (value === null) {
814
- return 0;
815
- }
816
- if (!Array.isArray(value) || value[0] === TUPLE_ID) {
817
- return 1;
818
- }
819
- return value.length;
820
- }
821
- export {
822
- addValueElement,
823
- calculateModelStats,
824
- deleteValueElement,
825
- generateRandomValue,
826
- inferEvalStatus,
827
- isInferrable,
828
- isInterpretable,
829
- isModelIssue,
830
- toBasicBinding,
831
- tryFixValue,
832
- updateValueElement,
833
- validateBasicBindingData,
834
- validateValueData
835
- };
186
+ if (!isBasicConcept(cst.cst_type)) return 0;
187
+ const value = engine.getCstValue(cst.id);
188
+ if (value === null) return 0;
189
+ if (!Array.isArray(value) || value[0] === -111) return 1;
190
+ return value.length;
191
+ }
192
+ //#endregion
193
+ export { addValueElement, calculateModelStats, deleteValueElement, generateRandomValue, inferEvalStatus, isInferrable, isInterpretable, isModelIssue, toBasicBinding, tryFixValue, updateValueElement, validateBasicBindingData, validateValueData };
194
+
836
195
  //# sourceMappingURL=rsmodel-api.js.map