@reidelsaltres/pureper 0.2.3 → 0.2.10

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 (104) hide show
  1. package/out/foundation/api/Observer.d.ts +3 -6
  2. package/out/foundation/api/Observer.d.ts.map +1 -1
  3. package/out/foundation/api/Observer.js +1 -4
  4. package/out/foundation/api/Observer.js.map +1 -1
  5. package/out/foundation/engine/TemplateEngine.d.ts +2 -2
  6. package/out/foundation/engine/TemplateEngine.d.ts.map +1 -1
  7. package/out/foundation/engine/TemplateEngine.js +5 -0
  8. package/out/foundation/engine/TemplateEngine.js.map +1 -1
  9. package/out/foundation/worker/serviceworker.js +1 -0
  10. package/package.json +1 -1
  11. package/src/foundation/api/Observer.ts +4 -7
  12. package/src/foundation/engine/TemplateEngine.ts +8 -5
  13. package/out/components/ContainItSelfTest.d.ts +0 -4
  14. package/out/components/ContainItSelfTest.d.ts.map +0 -1
  15. package/out/components/ContainItSelfTest.js +0 -18
  16. package/out/components/ContainItSelfTest.js.map +0 -1
  17. package/out/components/DynamicBlock.d.ts +0 -10
  18. package/out/components/DynamicBlock.d.ts.map +0 -1
  19. package/out/components/DynamicBlock.js +0 -32
  20. package/out/components/DynamicBlock.js.map +0 -1
  21. package/out/foundation/HMLELoader.d.ts +0 -9
  22. package/out/foundation/HMLELoader.d.ts.map +0 -1
  23. package/out/foundation/HMLELoader.js +0 -14
  24. package/out/foundation/HMLELoader.js.map +0 -1
  25. package/out/foundation/HMLEParser.d.ts +0 -87
  26. package/out/foundation/HMLEParser.d.ts.map +0 -1
  27. package/out/foundation/HMLEParser.js +0 -523
  28. package/out/foundation/HMLEParser.js.map +0 -1
  29. package/out/foundation/HMLEParserReborn.d.ts +0 -49
  30. package/out/foundation/HMLEParserReborn.d.ts.map +0 -1
  31. package/out/foundation/HMLEParserReborn.js +0 -932
  32. package/out/foundation/HMLEParserReborn.js.map +0 -1
  33. package/out/foundation/PHTMLParser.d.ts +0 -12
  34. package/out/foundation/PHTMLParser.d.ts.map +0 -1
  35. package/out/foundation/PHTMLParser.js +0 -222
  36. package/out/foundation/PHTMLParser.js.map +0 -1
  37. package/out/foundation/dynamic/Rule.d.ts +0 -16
  38. package/out/foundation/dynamic/Rule.d.ts.map +0 -1
  39. package/out/foundation/dynamic/Rule.js +0 -20
  40. package/out/foundation/dynamic/Rule.js.map +0 -1
  41. package/out/foundation/engine/BalancedParser.d.ts +0 -58
  42. package/out/foundation/engine/BalancedParser.d.ts.map +0 -1
  43. package/out/foundation/engine/BalancedParser.js +0 -301
  44. package/out/foundation/engine/BalancedParser.js.map +0 -1
  45. package/out/foundation/engine/EscapeHandler.d.ts +0 -27
  46. package/out/foundation/engine/EscapeHandler.d.ts.map +0 -1
  47. package/out/foundation/engine/EscapeHandler.js +0 -47
  48. package/out/foundation/engine/EscapeHandler.js.map +0 -1
  49. package/out/foundation/engine/Rule.d.ts +0 -85
  50. package/out/foundation/engine/Rule.d.ts.map +0 -1
  51. package/out/foundation/engine/Rule.js +0 -69
  52. package/out/foundation/engine/Rule.js.map +0 -1
  53. package/out/foundation/engine/TemplateEngine.old.d.ts +0 -96
  54. package/out/foundation/engine/TemplateEngine.old.d.ts.map +0 -1
  55. package/out/foundation/engine/TemplateEngine.old.js +0 -235
  56. package/out/foundation/engine/TemplateEngine.old.js.map +0 -1
  57. package/out/foundation/engine/TemplateInstance.d.ts +0 -241
  58. package/out/foundation/engine/TemplateInstance.d.ts.map +0 -1
  59. package/out/foundation/engine/TemplateInstance.js +0 -637
  60. package/out/foundation/engine/TemplateInstance.js.map +0 -1
  61. package/out/foundation/engine/TemplateInstance.old.d.ts +0 -219
  62. package/out/foundation/engine/TemplateInstance.old.d.ts.map +0 -1
  63. package/out/foundation/engine/TemplateInstance.old.js +0 -487
  64. package/out/foundation/engine/TemplateInstance.old.js.map +0 -1
  65. package/out/foundation/engine/exceptions/TemplateExceptions.d.ts +0 -21
  66. package/out/foundation/engine/exceptions/TemplateExceptions.d.ts.map +0 -1
  67. package/out/foundation/engine/exceptions/TemplateExceptions.js +0 -26
  68. package/out/foundation/engine/exceptions/TemplateExceptions.js.map +0 -1
  69. package/out/foundation/engine/index.d.ts +0 -18
  70. package/out/foundation/engine/index.d.ts.map +0 -1
  71. package/out/foundation/engine/index.js +0 -19
  72. package/out/foundation/engine/index.js.map +0 -1
  73. package/out/foundation/engine/rules/attribute/EventRule.d.ts +0 -22
  74. package/out/foundation/engine/rules/attribute/EventRule.d.ts.map +0 -1
  75. package/out/foundation/engine/rules/attribute/EventRule.js +0 -129
  76. package/out/foundation/engine/rules/attribute/EventRule.js.map +0 -1
  77. package/out/foundation/engine/rules/attribute/InjectionRule.d.ts +0 -20
  78. package/out/foundation/engine/rules/attribute/InjectionRule.d.ts.map +0 -1
  79. package/out/foundation/engine/rules/attribute/InjectionRule.js +0 -108
  80. package/out/foundation/engine/rules/attribute/InjectionRule.js.map +0 -1
  81. package/out/foundation/engine/rules/attribute/RefRule.d.ts +0 -23
  82. package/out/foundation/engine/rules/attribute/RefRule.d.ts.map +0 -1
  83. package/out/foundation/engine/rules/attribute/RefRule.js +0 -104
  84. package/out/foundation/engine/rules/attribute/RefRule.js.map +0 -1
  85. package/out/foundation/engine/rules/syntax/ExpressionRule.d.ts +0 -19
  86. package/out/foundation/engine/rules/syntax/ExpressionRule.d.ts.map +0 -1
  87. package/out/foundation/engine/rules/syntax/ExpressionRule.js +0 -82
  88. package/out/foundation/engine/rules/syntax/ExpressionRule.js.map +0 -1
  89. package/out/foundation/engine/rules/syntax/ForRule.d.ts +0 -19
  90. package/out/foundation/engine/rules/syntax/ForRule.d.ts.map +0 -1
  91. package/out/foundation/engine/rules/syntax/ForRule.js +0 -226
  92. package/out/foundation/engine/rules/syntax/ForRule.js.map +0 -1
  93. package/out/foundation/engine/rules/syntax/IfRule.d.ts +0 -17
  94. package/out/foundation/engine/rules/syntax/IfRule.d.ts.map +0 -1
  95. package/out/foundation/engine/rules/syntax/IfRule.js +0 -220
  96. package/out/foundation/engine/rules/syntax/IfRule.js.map +0 -1
  97. package/out/foundation/hmle/Context.d.ts +0 -29
  98. package/out/foundation/hmle/Context.d.ts.map +0 -1
  99. package/out/foundation/hmle/Context.js +0 -91
  100. package/out/foundation/hmle/Context.js.map +0 -1
  101. package/out/foundation/hmle/Expression.d.ts +0 -1
  102. package/out/foundation/hmle/Expression.d.ts.map +0 -1
  103. package/out/foundation/hmle/Expression.js +0 -1
  104. package/out/foundation/hmle/Expression.js.map +0 -1
@@ -1,226 +0,0 @@
1
- import { SyntaxRule } from '../../Rule.js';
2
- import Expression from '../../Expression.js';
3
- import { InvalidTemplateEngineSyntaxException } from '../../exceptions/TemplateExceptions.js';
4
- import { isObservable } from '../../../api/Observer.js';
5
- /**
6
- * ForRule - обработка @for
7
- * Варианты:
8
- * 1. @for(item in collection) { ... }
9
- * 2. @for(idx, item in collection) { ... }
10
- * 3. @for(i in 5) { ... } - числовая итерация 0..4
11
- */
12
- export default class ForRule extends SyntaxRule {
13
- name = 'for';
14
- priority = 10; // Выполняется раньше всех
15
- find(template) {
16
- const results = [];
17
- const lowerTemplate = template.toLowerCase();
18
- let i = 0;
19
- while (i < template.length) {
20
- const idx = lowerTemplate.indexOf('@for', i);
21
- if (idx === -1)
22
- break;
23
- // Check for @@ escape
24
- if (idx > 0 && template[idx - 1] === '@') {
25
- i = idx + 1;
26
- continue;
27
- }
28
- const parsed = this.parseForStatement(template, idx);
29
- if (parsed) {
30
- results.push({
31
- fullMatch: template.slice(parsed.start, parsed.end),
32
- start: parsed.start,
33
- end: parsed.end,
34
- data: {
35
- variant: parsed.variant,
36
- variables: parsed.variables,
37
- expression: parsed.expression,
38
- block: parsed.block
39
- }
40
- });
41
- i = parsed.end;
42
- }
43
- else {
44
- i = idx + 1;
45
- }
46
- }
47
- return results;
48
- }
49
- parseForStatement(template, start) {
50
- let pos = start + 4; // '@for'.length
51
- // Skip whitespace
52
- while (pos < template.length && /\s/.test(template[pos])) {
53
- pos++;
54
- }
55
- // Expect (
56
- if (template[pos] !== '(')
57
- return null;
58
- // Parse balanced parentheses
59
- const conditionStart = pos + 1;
60
- pos++;
61
- let depth = 1;
62
- while (pos < template.length && depth > 0) {
63
- const ch = template[pos];
64
- if (ch === '"' || ch === "'" || ch === '`') {
65
- pos = this.skipString(template, pos, ch);
66
- continue;
67
- }
68
- if (ch === '(')
69
- depth++;
70
- else if (ch === ')')
71
- depth--;
72
- pos++;
73
- }
74
- if (depth !== 0)
75
- return null;
76
- const conditionContent = template.slice(conditionStart, pos - 1).trim();
77
- // Parse condition: "var in expr" or "idx, var in expr"
78
- const inMatch = conditionContent.match(/^(.+?)\s+in\s+(.+)$/);
79
- if (!inMatch)
80
- return null;
81
- const varPart = inMatch[1].trim();
82
- const expression = inMatch[2].trim();
83
- // Parse variables
84
- let variables;
85
- let variant;
86
- if (varPart.includes(',')) {
87
- // Indexed variant: "idx, item"
88
- variables = varPart.split(',').map(v => v.trim());
89
- if (variables.length !== 2)
90
- return null;
91
- variant = 'indexed';
92
- }
93
- else {
94
- variables = [varPart];
95
- variant = 'single'; // Will be determined at execution time if numeric
96
- }
97
- // Skip whitespace
98
- while (pos < template.length && /\s/.test(template[pos])) {
99
- pos++;
100
- }
101
- // Expect {
102
- if (template[pos] !== '{')
103
- return null;
104
- // Parse balanced braces
105
- const blockStart = pos + 1;
106
- pos++;
107
- depth = 1;
108
- while (pos < template.length && depth > 0) {
109
- const ch = template[pos];
110
- if (ch === '"' || ch === "'" || ch === '`') {
111
- pos = this.skipString(template, pos, ch);
112
- continue;
113
- }
114
- if (ch === '{')
115
- depth++;
116
- else if (ch === '}')
117
- depth--;
118
- pos++;
119
- }
120
- if (depth !== 0)
121
- return null;
122
- const block = template.slice(blockStart, pos - 1);
123
- return { start, end: pos, variant, variables, expression, block };
124
- }
125
- skipString(input, pos, quote) {
126
- pos++;
127
- while (pos < input.length) {
128
- if (input[pos] === '\\') {
129
- pos += 2;
130
- continue;
131
- }
132
- if (input[pos] === quote) {
133
- return pos + 1;
134
- }
135
- pos++;
136
- }
137
- return pos;
138
- }
139
- execute(match, scope, engine) {
140
- const data = match.data;
141
- const observables = [];
142
- const outputs = [];
143
- // Evaluate expression
144
- const expr = new Expression(data.expression);
145
- // Находим Observable в выражении
146
- const exprObservables = expr.findObservables(scope);
147
- observables.push(...exprObservables);
148
- let collection = expr.execute(scope);
149
- // Check if Observable
150
- if (isObservable(collection)) {
151
- observables.push(collection);
152
- collection = collection.getObject?.() ?? collection;
153
- }
154
- // Determine iteration type
155
- if (typeof collection === 'number') {
156
- // Numeric iteration: 0 to collection-1
157
- if (data.variant === 'indexed') {
158
- throw new InvalidTemplateEngineSyntaxException('@for with numeric value does not support indexed variant (idx, var). Use single variable.');
159
- }
160
- const count = Math.floor(collection);
161
- if (count < 0) {
162
- throw new InvalidTemplateEngineSyntaxException(`@for numeric value must be non-negative, got: ${count}`);
163
- }
164
- for (let i = 0; i < count; i++) {
165
- const localScope = scope.createChild({ [data.variables[0]]: i });
166
- if (engine) {
167
- const result = engine.processTemplate(data.block, localScope);
168
- outputs.push(result.output);
169
- if (result.observables)
170
- observables.push(...result.observables);
171
- }
172
- else {
173
- outputs.push(data.block);
174
- }
175
- }
176
- }
177
- else if (Array.isArray(collection) || (collection && typeof collection[Symbol.iterator] === 'function')) {
178
- // Array or iterable
179
- const items = Array.isArray(collection) ? collection : Array.from(collection);
180
- if (data.variant === 'indexed') {
181
- // (idx, item in collection)
182
- items.forEach((item, idx) => {
183
- const localScope = scope.createChild({
184
- [data.variables[0]]: idx,
185
- [data.variables[1]]: item
186
- });
187
- if (engine) {
188
- const result = engine.processTemplate(data.block, localScope);
189
- outputs.push(result.output);
190
- if (result.observables)
191
- observables.push(...result.observables);
192
- }
193
- else {
194
- outputs.push(data.block);
195
- }
196
- });
197
- }
198
- else {
199
- // (item in collection)
200
- items.forEach((item) => {
201
- const localScope = scope.createChild({ [data.variables[0]]: item });
202
- if (engine) {
203
- const result = engine.processTemplate(data.block, localScope);
204
- outputs.push(result.output);
205
- if (result.observables)
206
- observables.push(...result.observables);
207
- }
208
- else {
209
- outputs.push(data.block);
210
- }
211
- });
212
- }
213
- }
214
- else if (typeof collection === 'string') {
215
- throw new InvalidTemplateEngineSyntaxException(`@for does not support string iteration. Got: "${collection}"`);
216
- }
217
- else if (collection === null || collection === undefined) {
218
- // Empty result
219
- }
220
- else {
221
- throw new InvalidTemplateEngineSyntaxException(`@for expression must return a number, array, or iterable. Got: ${typeof collection}`);
222
- }
223
- return { output: outputs.join(''), observables };
224
- }
225
- }
226
- //# sourceMappingURL=ForRule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForRule.js","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/syntax/ForRule.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { SyntaxRule } from '../../Rule.js';
2
- import type { RuleMatch, RuleResult } from '../../Rule.js';
3
- import Scope from '../../Scope.js';
4
- /**
5
- * IfRule - обработка @if/@elseif/@else
6
- */
7
- export default class IfRule extends SyntaxRule {
8
- readonly name = "if";
9
- readonly priority = 20;
10
- find(template: string): RuleMatch[];
11
- private parseIfChain;
12
- private parseConditionBlock;
13
- private parseElseBlock;
14
- private skipString;
15
- execute(match: RuleMatch, scope: Scope, engine?: any): RuleResult;
16
- }
17
- //# sourceMappingURL=IfRule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IfRule.d.ts","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/syntax/IfRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAgBnC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAC1C,SAAgB,IAAI,QAAQ;IAC5B,SAAgB,QAAQ,MAAM;IAEvB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAiC1C,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,mBAAmB;IAgE3B,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,UAAU;IAeX,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,UAAU;CA+C3E"}
@@ -1,220 +0,0 @@
1
- import { SyntaxRule } from '../../Rule.js';
2
- import Expression from '../../Expression.js';
3
- import { isObservable } from '../../../api/Observer.js';
4
- /**
5
- * IfRule - обработка @if/@elseif/@else
6
- */
7
- export default class IfRule extends SyntaxRule {
8
- name = 'if';
9
- priority = 20; // Выполняется раньше @expression
10
- find(template) {
11
- const results = [];
12
- const lowerTemplate = template.toLowerCase();
13
- let i = 0;
14
- while (i < template.length) {
15
- const idx = lowerTemplate.indexOf('@if', i);
16
- if (idx === -1)
17
- break;
18
- // Check for @@ escape
19
- if (idx > 0 && template[idx - 1] === '@') {
20
- i = idx + 1;
21
- continue;
22
- }
23
- // Parse the full if/elseif/else chain
24
- const chain = this.parseIfChain(template, idx);
25
- if (chain) {
26
- results.push({
27
- fullMatch: template.slice(chain.start, chain.end),
28
- start: chain.start,
29
- end: chain.end,
30
- data: { chain: chain.items }
31
- });
32
- i = chain.end;
33
- }
34
- else {
35
- i = idx + 1;
36
- }
37
- }
38
- return results;
39
- }
40
- parseIfChain(template, startIdx) {
41
- const items = [];
42
- let pos = startIdx;
43
- // Parse @if
44
- const ifParsed = this.parseConditionBlock(template, pos, '@if');
45
- if (!ifParsed)
46
- return null;
47
- items.push({ type: 'if', condition: ifParsed.condition, block: ifParsed.block });
48
- pos = ifParsed.end;
49
- // Parse @elseif/@else chain
50
- while (pos < template.length) {
51
- // Skip whitespace
52
- while (pos < template.length && /\s/.test(template[pos])) {
53
- pos++;
54
- }
55
- const remaining = template.slice(pos).toLowerCase();
56
- if (remaining.startsWith('@elseif')) {
57
- const elseifParsed = this.parseConditionBlock(template, pos, '@elseif');
58
- if (!elseifParsed)
59
- break;
60
- items.push({ type: 'elseif', condition: elseifParsed.condition, block: elseifParsed.block });
61
- pos = elseifParsed.end;
62
- }
63
- else if (remaining.startsWith('@else') && !remaining.startsWith('@elseif')) {
64
- const elseParsed = this.parseElseBlock(template, pos);
65
- if (!elseParsed)
66
- break;
67
- items.push({ type: 'else', block: elseParsed.block });
68
- pos = elseParsed.end;
69
- break; // @else is always last
70
- }
71
- else {
72
- break;
73
- }
74
- }
75
- return { start: startIdx, end: pos, items };
76
- }
77
- parseConditionBlock(template, start, keyword) {
78
- let pos = start + keyword.length;
79
- // Skip whitespace
80
- while (pos < template.length && /\s/.test(template[pos])) {
81
- pos++;
82
- }
83
- // Expect (
84
- if (template[pos] !== '(')
85
- return null;
86
- // Parse balanced condition
87
- const conditionStart = pos + 1;
88
- pos++;
89
- let depth = 1;
90
- while (pos < template.length && depth > 0) {
91
- const ch = template[pos];
92
- if (ch === '"' || ch === "'" || ch === '`') {
93
- pos = this.skipString(template, pos, ch);
94
- continue;
95
- }
96
- if (ch === '(')
97
- depth++;
98
- else if (ch === ')')
99
- depth--;
100
- pos++;
101
- }
102
- if (depth !== 0)
103
- return null;
104
- const condition = template.slice(conditionStart, pos - 1);
105
- // Skip whitespace
106
- while (pos < template.length && /\s/.test(template[pos])) {
107
- pos++;
108
- }
109
- // Expect {
110
- if (template[pos] !== '{')
111
- return null;
112
- // Parse balanced block
113
- const blockStart = pos + 1;
114
- pos++;
115
- depth = 1;
116
- while (pos < template.length && depth > 0) {
117
- const ch = template[pos];
118
- if (ch === '"' || ch === "'" || ch === '`') {
119
- pos = this.skipString(template, pos, ch);
120
- continue;
121
- }
122
- if (ch === '{')
123
- depth++;
124
- else if (ch === '}')
125
- depth--;
126
- pos++;
127
- }
128
- if (depth !== 0)
129
- return null;
130
- const block = template.slice(blockStart, pos - 1);
131
- return { condition, block, end: pos };
132
- }
133
- parseElseBlock(template, start) {
134
- let pos = start + 5; // '@else'.length
135
- // Skip whitespace
136
- while (pos < template.length && /\s/.test(template[pos])) {
137
- pos++;
138
- }
139
- // Expect {
140
- if (template[pos] !== '{')
141
- return null;
142
- // Parse balanced block
143
- const blockStart = pos + 1;
144
- pos++;
145
- let depth = 1;
146
- while (pos < template.length && depth > 0) {
147
- const ch = template[pos];
148
- if (ch === '"' || ch === "'" || ch === '`') {
149
- pos = this.skipString(template, pos, ch);
150
- continue;
151
- }
152
- if (ch === '{')
153
- depth++;
154
- else if (ch === '}')
155
- depth--;
156
- pos++;
157
- }
158
- if (depth !== 0)
159
- return null;
160
- const block = template.slice(blockStart, pos - 1);
161
- return { block, end: pos };
162
- }
163
- skipString(input, pos, quote) {
164
- pos++;
165
- while (pos < input.length) {
166
- if (input[pos] === '\\') {
167
- pos += 2;
168
- continue;
169
- }
170
- if (input[pos] === quote) {
171
- return pos + 1;
172
- }
173
- pos++;
174
- }
175
- return pos;
176
- }
177
- execute(match, scope, engine) {
178
- const chain = match.data.chain;
179
- const observables = [];
180
- for (const item of chain) {
181
- if (item.type === 'else') {
182
- // Process else block
183
- if (engine) {
184
- const result = engine.processTemplate(item.block, scope);
185
- return { output: result.output, observables: [...observables, ...(result.observables || [])] };
186
- }
187
- return { output: item.block, observables };
188
- }
189
- // Evaluate condition
190
- const expr = new Expression(item.condition);
191
- // Находим Observable в условии
192
- const conditionObservables = expr.findObservables(scope);
193
- observables.push(...conditionObservables);
194
- const conditionResult = expr.execute(scope);
195
- // Check if result is Observable
196
- if (isObservable(conditionResult)) {
197
- observables.push(conditionResult);
198
- const value = conditionResult.getObject?.() ?? conditionResult;
199
- if (value) {
200
- if (engine) {
201
- const result = engine.processTemplate(item.block, scope);
202
- return { output: result.output, observables: [...observables, ...(result.observables || [])] };
203
- }
204
- return { output: item.block, observables };
205
- }
206
- }
207
- else if (conditionResult) {
208
- // Condition is truthy
209
- if (engine) {
210
- const result = engine.processTemplate(item.block, scope);
211
- return { output: result.output, observables: [...observables, ...(result.observables || [])] };
212
- }
213
- return { output: item.block, observables };
214
- }
215
- }
216
- // No condition matched and no else
217
- return { output: '', observables };
218
- }
219
- }
220
- //# sourceMappingURL=IfRule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IfRule.js","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/syntax/IfRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAYxD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAC1B,IAAI,GAAG,IAAI,CAAC;IACZ,QAAQ,GAAG,EAAE,CAAC,CAAC,iCAAiC;IAEzD,IAAI,CAAC,QAAgB;QACxB,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,MAAM;YAEtB,sBAAsB;YACtB,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBACZ,SAAS;YACb,CAAC;YAED,sCAAsC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC;oBACT,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;oBACjD,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;iBAC/B,CAAC,CAAC;gBACH,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,QAAgB;QAKnD,MAAM,KAAK,GAAiF,EAAE,CAAC;QAC/F,IAAI,GAAG,GAAG,QAAQ,CAAC;QAEnB,YAAY;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QAEnB,4BAA4B;QAC5B,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3B,kBAAkB;YAClB,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,EAAE,CAAC;YACV,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAEpD,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACxE,IAAI,CAAC,YAAY;oBAAE,MAAM;gBACzB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7F,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;YAC3B,CAAC;iBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,UAAU;oBAAE,MAAM;gBACvB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtD,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;gBACrB,MAAM,CAAC,uBAAuB;YAClC,CAAC;iBAAM,CAAC;gBACJ,MAAM;YACV,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAe;QAKxE,IAAI,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjC,kBAAkB;QAClB,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,EAAE,CAAC;QACV,CAAC;QAED,WAAW;QACX,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAEvC,2BAA2B;QAC3B,MAAM,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC;QAC/B,GAAG,EAAE,CAAC;QACN,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACzC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzC,SAAS;YACb,CAAC;YACD,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACnB,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;YAC7B,GAAG,EAAE,CAAC;QACV,CAAC;QAED,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAE1D,kBAAkB;QAClB,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,EAAE,CAAC;QACV,CAAC;QAED,WAAW;QACX,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAEvC,uBAAuB;QACvB,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;QAC3B,GAAG,EAAE,CAAC;QACN,KAAK,GAAG,CAAC,CAAC;QAEV,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACzC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzC,SAAS;YACb,CAAC;YACD,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACnB,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;YAC7B,GAAG,EAAE,CAAC;QACV,CAAC;QAED,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAElD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC1C,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,KAAa;QAClD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAEtC,kBAAkB;QAClB,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,EAAE,CAAC;QACV,CAAC;QAED,WAAW;QACX,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAEvC,uBAAuB;QACvB,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;QAC3B,GAAG,EAAE,CAAC;QACN,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACzC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzC,SAAS;YACb,CAAC;YACD,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACnB,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;YAC7B,GAAG,EAAE,CAAC;QACV,CAAC;QAED,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAElD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa;QACxD,GAAG,EAAE,CAAC;QACN,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtB,GAAG,IAAI,CAAC,CAAC;gBACT,SAAS;YACb,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,GAAG,EAAE,CAAC;QACV,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,KAAgB,EAAE,KAAY,EAAE,MAAY;QACvD,MAAM,KAAK,GAAI,KAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjD,MAAM,WAAW,GAAU,EAAE,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,qBAAqB;gBACrB,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACzD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACnG,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YAC/C,CAAC;YAED,qBAAqB;YACrB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC;YAE7C,+BAA+B;YAC/B,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACzD,WAAW,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;YAE1C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE5C,gCAAgC;YAChC,IAAI,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAClC,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,IAAI,eAAe,CAAC;gBAC/D,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,MAAM,EAAE,CAAC;wBACT,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBACzD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;oBACnG,CAAC;oBACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;gBAC/C,CAAC;YACL,CAAC;iBAAM,IAAI,eAAe,EAAE,CAAC;gBACzB,sBAAsB;gBACtB,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACzD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACnG,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YAC/C,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;IACvC,CAAC;CACJ"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Context — utility for building a safe evaluation context used by parsers
3
- *
4
- * Features:
5
- * - Merges parser variables and local scope objects
6
- * - Safely copies instance prototype functions bound to the instance
7
- * - Supports merging multiple contexts or objects
8
- *
9
- * This class is intended to replace ad-hoc `buildContext` implementations in
10
- * parsers such as HMLEParser/HMLEParserReborn and PHTMLParser.
11
- */
12
- export default class Context {
13
- private values;
14
- constructor(initial?: Record<string, any>);
15
- /** Create a Context and merge given scope into it */
16
- static from(scopeVars?: Record<string, any>, scope?: Record<string, any>): Context;
17
- /** Merge plain object or another Context into this one */
18
- merge(other?: Record<string, any> | Context): this;
19
- /**
20
- * Copy prototype methods from an instance into the context
21
- * Methods are bound to the given instance to preserve `this` semantics.
22
- */
23
- bindPrototypeMethods(instance?: Record<string, any>): this;
24
- /** Return a plain object suitable for `with(this)` evaluation contexts */
25
- toObject(): Record<string, any>;
26
- /** Convenience static builder returning a plain object for use in parsers */
27
- static build(variables?: Record<string, any>, scope?: Record<string, any>): Record<string, any>;
28
- }
29
- //# sourceMappingURL=Context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../src/foundation/hmle/Context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIzC,qDAAqD;WACvC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAMzF,0DAA0D;IACnD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI;IAOzD;;;OAGG;IACI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAyCjE,0EAA0E;IACnE,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAItC,6EAA6E;WAC/D,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAKzG"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Context — utility for building a safe evaluation context used by parsers
3
- *
4
- * Features:
5
- * - Merges parser variables and local scope objects
6
- * - Safely copies instance prototype functions bound to the instance
7
- * - Supports merging multiple contexts or objects
8
- *
9
- * This class is intended to replace ad-hoc `buildContext` implementations in
10
- * parsers such as HMLEParser/HMLEParserReborn and PHTMLParser.
11
- */
12
- export default class Context {
13
- values;
14
- constructor(initial) {
15
- this.values = Object.assign({}, initial || {});
16
- }
17
- /** Create a Context and merge given scope into it */
18
- static from(scopeVars, scope) {
19
- const ctx = new Context(scopeVars);
20
- if (scope)
21
- ctx.merge(scope);
22
- return ctx;
23
- }
24
- /** Merge plain object or another Context into this one */
25
- merge(other) {
26
- if (!other)
27
- return this;
28
- if (other instanceof Context)
29
- Object.assign(this.values, other.values);
30
- else
31
- Object.assign(this.values, other);
32
- return this;
33
- }
34
- /**
35
- * Copy prototype methods from an instance into the context
36
- * Methods are bound to the given instance to preserve `this` semantics.
37
- */
38
- bindPrototypeMethods(instance) {
39
- if (!instance)
40
- return this;
41
- const bindTarget = instance.__hmle_this ?? instance;
42
- let proto = Object.getPrototypeOf(bindTarget);
43
- while (proto && proto !== Object.prototype) {
44
- // avoid copying host DOM/window prototype methods
45
- const ctorName = proto && proto.constructor ? String(proto.constructor?.name ?? '') : '';
46
- if (/HTMLElement|Element|Node|EventTarget|Window|GlobalThis/i.test(ctorName)) {
47
- proto = Object.getPrototypeOf(proto);
48
- continue;
49
- }
50
- for (const key of Object.getOwnPropertyNames(proto)) {
51
- if (key === 'constructor')
52
- continue;
53
- if (key in this.values)
54
- continue; // do not override existing keys
55
- let desc;
56
- try {
57
- desc = Object.getOwnPropertyDescriptor(proto, key);
58
- }
59
- catch (e) {
60
- // Some host objects may throw when attempting to read descriptors — skip
61
- continue;
62
- }
63
- if (!desc)
64
- continue;
65
- if (typeof desc.value === 'function') {
66
- try {
67
- this.values[key] = desc.value.bind(bindTarget);
68
- }
69
- catch (_e) {
70
- // binding may fail for native host methods — skip
71
- continue;
72
- }
73
- }
74
- }
75
- proto = Object.getPrototypeOf(proto);
76
- }
77
- return this;
78
- }
79
- /** Return a plain object suitable for `with(this)` evaluation contexts */
80
- toObject() {
81
- return Object.assign({}, this.values);
82
- }
83
- /** Convenience static builder returning a plain object for use in parsers */
84
- static build(variables, scope) {
85
- const ctx = new Context(variables);
86
- if (scope)
87
- ctx.merge(scope).bindPrototypeMethods(scope);
88
- return ctx.toObject();
89
- }
90
- }
91
- //# sourceMappingURL=Context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../src/foundation/hmle/Context.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=Expression.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Expression.d.ts","sourceRoot":"","sources":["../../../src/foundation/hmle/Expression.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=Expression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../../src/foundation/hmle/Expression.ts"],"names":[],"mappings":""}