@rcrsr/rill 0.8.6 → 0.9.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.
- package/dist/ast-nodes.d.ts +189 -49
- package/dist/ast-nodes.d.ts.map +1 -1
- package/dist/ast-unions.d.ts +1 -1
- package/dist/ast-unions.d.ts.map +1 -1
- package/dist/constants.d.ts +14 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +29 -0
- package/dist/constants.js.map +1 -0
- package/dist/error-classes.d.ts +3 -1
- package/dist/error-classes.d.ts.map +1 -1
- package/dist/error-classes.js +11 -5
- package/dist/error-classes.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +293 -9
- package/dist/error-registry.js.map +1 -1
- package/dist/ext/crypto/index.d.ts +2 -1
- package/dist/ext/crypto/index.d.ts.map +1 -1
- package/dist/ext/crypto/index.js +7 -0
- package/dist/ext/crypto/index.js.map +1 -1
- package/dist/ext/exec/index.d.ts +2 -1
- package/dist/ext/exec/index.d.ts.map +1 -1
- package/dist/ext/exec/index.js +6 -0
- package/dist/ext/exec/index.js.map +1 -1
- package/dist/ext/fetch/index.d.ts +2 -1
- package/dist/ext/fetch/index.d.ts.map +1 -1
- package/dist/ext/fetch/index.js +6 -0
- package/dist/ext/fetch/index.js.map +1 -1
- package/dist/ext/fs/index.d.ts +2 -1
- package/dist/ext/fs/index.d.ts.map +1 -1
- package/dist/ext/fs/index.js +3 -0
- package/dist/ext/fs/index.js.map +1 -1
- package/dist/ext/kv/index.d.ts +2 -1
- package/dist/ext/kv/index.d.ts.map +1 -1
- package/dist/ext/kv/index.js +5 -1
- package/dist/ext/kv/index.js.map +1 -1
- package/dist/generated/introspection-data.d.ts +1 -1
- package/dist/generated/introspection-data.d.ts.map +1 -1
- package/dist/generated/introspection-data.js +194 -185
- package/dist/generated/introspection-data.js.map +1 -1
- package/dist/generated/version-data.d.ts +1 -1
- package/dist/generated/version-data.js +3 -3
- package/dist/highlight-map.d.ts.map +1 -1
- package/dist/highlight-map.js +8 -2
- package/dist/highlight-map.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lexer/operators.d.ts.map +1 -1
- package/dist/lexer/operators.js +0 -2
- package/dist/lexer/operators.js.map +1 -1
- package/dist/lexer/readers.d.ts +18 -1
- package/dist/lexer/readers.d.ts.map +1 -1
- package/dist/lexer/readers.js +55 -0
- package/dist/lexer/readers.js.map +1 -1
- package/dist/parser/helpers.d.ts +8 -13
- package/dist/parser/helpers.d.ts.map +1 -1
- package/dist/parser/helpers.js +42 -35
- package/dist/parser/helpers.js.map +1 -1
- package/dist/parser/index.d.ts +1 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +1 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser-collect.d.ts.map +1 -1
- package/dist/parser/parser-collect.js +34 -5
- package/dist/parser/parser-collect.js.map +1 -1
- package/dist/parser/parser-control.d.ts.map +1 -1
- package/dist/parser/parser-control.js +9 -0
- package/dist/parser/parser-control.js.map +1 -1
- package/dist/parser/parser-expr.d.ts +3 -1
- package/dist/parser/parser-expr.d.ts.map +1 -1
- package/dist/parser/parser-expr.js +377 -100
- package/dist/parser/parser-expr.js.map +1 -1
- package/dist/parser/parser-extract.d.ts +3 -5
- package/dist/parser/parser-extract.d.ts.map +1 -1
- package/dist/parser/parser-extract.js +37 -69
- package/dist/parser/parser-extract.js.map +1 -1
- package/dist/parser/parser-functions.d.ts +2 -2
- package/dist/parser/parser-functions.d.ts.map +1 -1
- package/dist/parser/parser-functions.js +112 -36
- package/dist/parser/parser-functions.js.map +1 -1
- package/dist/parser/parser-literals.d.ts +4 -3
- package/dist/parser/parser-literals.d.ts.map +1 -1
- package/dist/parser/parser-literals.js +257 -42
- package/dist/parser/parser-literals.js.map +1 -1
- package/dist/parser/parser-script.d.ts.map +1 -1
- package/dist/parser/parser-script.js +25 -12
- package/dist/parser/parser-script.js.map +1 -1
- package/dist/parser/parser-shape.d.ts +13 -0
- package/dist/parser/parser-shape.d.ts.map +1 -0
- package/dist/parser/parser-shape.js +72 -0
- package/dist/parser/parser-shape.js.map +1 -0
- package/dist/parser/parser-types.d.ts +21 -0
- package/dist/parser/parser-types.d.ts.map +1 -0
- package/dist/parser/parser-types.js +30 -0
- package/dist/parser/parser-types.js.map +1 -0
- package/dist/parser/parser-variables.d.ts.map +1 -1
- package/dist/parser/parser-variables.js +10 -1
- package/dist/parser/parser-variables.js.map +1 -1
- package/dist/runtime/core/callable.d.ts +23 -20
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js +26 -24
- package/dist/runtime/core/callable.js.map +1 -1
- package/dist/runtime/core/context.d.ts.map +1 -1
- package/dist/runtime/core/context.js +8 -8
- package/dist/runtime/core/context.js.map +1 -1
- package/dist/runtime/core/equals.d.ts.map +1 -1
- package/dist/runtime/core/equals.js +142 -30
- package/dist/runtime/core/equals.js.map +1 -1
- package/dist/runtime/core/eval/base.d.ts +2 -2
- package/dist/runtime/core/eval/base.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.js +3 -1
- package/dist/runtime/core/eval/evaluator.js.map +1 -1
- package/dist/runtime/core/eval/index.d.ts +16 -1
- package/dist/runtime/core/eval/index.d.ts.map +1 -1
- package/dist/runtime/core/eval/index.js +22 -2
- package/dist/runtime/core/eval/index.js.map +1 -1
- package/dist/runtime/core/eval/mixins/annotations.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/annotations.js +14 -8
- package/dist/runtime/core/eval/mixins/annotations.js.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.d.ts +0 -2
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.js +286 -105
- package/dist/runtime/core/eval/mixins/closures.js.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.js +65 -25
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
- package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/control-flow.js +21 -17
- package/dist/runtime/core/eval/mixins/control-flow.js.map +1 -1
- package/dist/runtime/core/eval/mixins/conversion.d.ts +30 -0
- package/dist/runtime/core/eval/mixins/conversion.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/conversion.js +203 -0
- package/dist/runtime/core/eval/mixins/conversion.js.map +1 -0
- package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/core.js +101 -32
- package/dist/runtime/core/eval/mixins/core.js.map +1 -1
- package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/extraction.js +136 -30
- package/dist/runtime/core/eval/mixins/extraction.js.map +1 -1
- package/dist/runtime/core/eval/mixins/list-dispatch.d.ts +17 -0
- package/dist/runtime/core/eval/mixins/list-dispatch.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/list-dispatch.js +97 -0
- package/dist/runtime/core/eval/mixins/list-dispatch.js.map +1 -0
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.js +64 -82
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
- package/dist/runtime/core/eval/mixins/types.d.ts +4 -0
- package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/types.js +202 -3
- package/dist/runtime/core/eval/mixins/types.js.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.js +42 -7
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
- package/dist/runtime/core/execute.d.ts.map +1 -1
- package/dist/runtime/core/execute.js +2 -15
- package/dist/runtime/core/execute.js.map +1 -1
- package/dist/runtime/core/field-descriptor.d.ts +29 -0
- package/dist/runtime/core/field-descriptor.d.ts.map +1 -0
- package/dist/runtime/core/field-descriptor.js +27 -0
- package/dist/runtime/core/field-descriptor.js.map +1 -0
- package/dist/runtime/core/types.d.ts +15 -6
- package/dist/runtime/core/types.d.ts.map +1 -1
- package/dist/runtime/core/types.js.map +1 -1
- package/dist/runtime/core/values.d.ts +107 -9
- package/dist/runtime/core/values.d.ts.map +1 -1
- package/dist/runtime/core/values.js +453 -43
- package/dist/runtime/core/values.js.map +1 -1
- package/dist/runtime/ext/builtins.d.ts.map +1 -1
- package/dist/runtime/ext/builtins.js +47 -107
- package/dist/runtime/ext/builtins.js.map +1 -1
- package/dist/runtime/ext/extensions.d.ts +21 -2
- package/dist/runtime/ext/extensions.d.ts.map +1 -1
- package/dist/runtime/ext/extensions.js.map +1 -1
- package/dist/runtime/index.d.ts +6 -4
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/token-types.d.ts +7 -2
- package/dist/token-types.d.ts.map +1 -1
- package/dist/token-types.js +9 -2
- package/dist/token-types.js.map +1 -1
- package/dist/value-types.d.ts +19 -1
- package/dist/value-types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ import { Parser } from './parser.js';
|
|
|
6
6
|
import { ParseError, TOKEN_TYPES } from '../types.js';
|
|
7
7
|
import { LexerError } from '../lexer/index.js';
|
|
8
8
|
import { check, advance, expect, current, isAtEnd, skipNewlines, makeSpan, } from './state.js';
|
|
9
|
+
const RESERVED_ANNOTATION_KEYS = ['type', 'input', 'output'];
|
|
9
10
|
// ============================================================
|
|
10
11
|
// SCRIPT PARSING
|
|
11
12
|
// ============================================================
|
|
@@ -166,20 +167,19 @@ Parser.prototype.parseAnnotatedStatement = function () {
|
|
|
166
167
|
expect(this.state, TOKEN_TYPES.LPAREN, 'Expected (');
|
|
167
168
|
const annotations = this.parseAnnotationArgs();
|
|
168
169
|
expect(this.state, TOKEN_TYPES.RPAREN, 'Expected )', 'RILL-P005');
|
|
170
|
+
skipNewlines(this.state);
|
|
169
171
|
// Parse the inner statement (which could also be annotated)
|
|
170
172
|
const statement = this.parseStatement();
|
|
171
|
-
// If inner is annotated,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
: statement;
|
|
173
|
+
// If inner is already annotated, return it unchanged.
|
|
174
|
+
// BC-2: The immediately-preceding annotation attaches to the closure;
|
|
175
|
+
// the outer annotation is discarded.
|
|
176
|
+
if (statement.type === 'AnnotatedStatement') {
|
|
177
|
+
return statement;
|
|
178
|
+
}
|
|
179
179
|
return {
|
|
180
180
|
type: 'AnnotatedStatement',
|
|
181
181
|
annotations,
|
|
182
|
-
statement
|
|
182
|
+
statement,
|
|
183
183
|
span: makeSpan(start, current(this.state).span.end),
|
|
184
184
|
};
|
|
185
185
|
};
|
|
@@ -199,9 +199,9 @@ Parser.prototype.parseAnnotationArgs = function () {
|
|
|
199
199
|
};
|
|
200
200
|
Parser.prototype.parseAnnotationArg = function () {
|
|
201
201
|
const start = current(this.state).span.start;
|
|
202
|
-
// Spread argument:
|
|
203
|
-
if (check(this.state, TOKEN_TYPES.
|
|
204
|
-
advance(this.state); // consume
|
|
202
|
+
// Spread argument: ...expr
|
|
203
|
+
if (check(this.state, TOKEN_TYPES.ELLIPSIS)) {
|
|
204
|
+
advance(this.state); // consume ...
|
|
205
205
|
const expression = this.parseExpression();
|
|
206
206
|
return {
|
|
207
207
|
type: 'SpreadArg',
|
|
@@ -209,8 +209,21 @@ Parser.prototype.parseAnnotationArg = function () {
|
|
|
209
209
|
span: makeSpan(start, current(this.state).span.end),
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
|
+
// Description shorthand: bare string expands to description: <string>
|
|
213
|
+
if (check(this.state, TOKEN_TYPES.STRING)) {
|
|
214
|
+
const value = this.parseExpression();
|
|
215
|
+
return {
|
|
216
|
+
type: 'NamedArg',
|
|
217
|
+
name: 'description',
|
|
218
|
+
value,
|
|
219
|
+
span: makeSpan(start, current(this.state).span.end),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
212
222
|
// Named argument: key: value
|
|
213
223
|
const nameToken = expect(this.state, TOKEN_TYPES.IDENTIFIER, 'Expected annotation name');
|
|
224
|
+
if (RESERVED_ANNOTATION_KEYS.includes(nameToken.value)) {
|
|
225
|
+
throw new ParseError('RILL-P001', `Annotation key "${nameToken.value}" is reserved`, nameToken.span.start);
|
|
226
|
+
}
|
|
214
227
|
expect(this.state, TOKEN_TYPES.COLON, 'Expected :');
|
|
215
228
|
const value = this.parseExpression();
|
|
216
229
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-script.js","sourceRoot":"","sources":["../../src/parser/parser-script.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,QAAQ,GACT,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-script.js","sourceRoot":"","sources":["../../src/parser/parser-script.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Extension: Type Constructor Parsing
|
|
3
|
+
* type-constructor = ("list" | "dict" | "tuple" | "ordered") "(" [type-arg-list] ")" ;
|
|
4
|
+
* type-arg-list = type-arg ("," type-arg)* [","] ;
|
|
5
|
+
* type-arg = identifier ":" expression | expression ;
|
|
6
|
+
*/
|
|
7
|
+
import type { TypeConstructorNode } from '../types.js';
|
|
8
|
+
declare module './parser.js' {
|
|
9
|
+
interface Parser {
|
|
10
|
+
parseTypeConstructor(constructorName: string): TypeConstructorNode;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=parser-shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-shape.d.ts","sourceRoot":"","sources":["../../src/parser/parser-shape.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AAarB,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,MAAM;QACd,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,mBAAmB,CAAC;KACpE;CACF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Extension: Type Constructor Parsing
|
|
3
|
+
* type-constructor = ("list" | "dict" | "tuple" | "ordered") "(" [type-arg-list] ")" ;
|
|
4
|
+
* type-arg-list = type-arg ("," type-arg)* [","] ;
|
|
5
|
+
* type-arg = identifier ":" expression | expression ;
|
|
6
|
+
*/
|
|
7
|
+
import { Parser } from './parser.js';
|
|
8
|
+
import { ParseError, TOKEN_TYPES } from '../types.js';
|
|
9
|
+
import { check, advance, expect, current, skipNewlines, makeSpan, peek, } from './state.js';
|
|
10
|
+
// ============================================================
|
|
11
|
+
// TYPE CONSTRUCTOR PARSING
|
|
12
|
+
// ============================================================
|
|
13
|
+
/**
|
|
14
|
+
* Parse a type constructor: list(args), dict(k: T, ...), tuple(T...), ordered(k: T, ...).
|
|
15
|
+
* Called when current identifier is in ['list', 'dict', 'tuple', 'ordered'] and next token is LPAREN.
|
|
16
|
+
* Consumes: constructorName "(" [type-arg-list] ")"
|
|
17
|
+
* Produces TypeConstructorNode.
|
|
18
|
+
*/
|
|
19
|
+
Parser.prototype.parseTypeConstructor = function (constructorName) {
|
|
20
|
+
const validNames = ['list', 'dict', 'tuple', 'ordered'];
|
|
21
|
+
if (!validNames.includes(constructorName)) {
|
|
22
|
+
throw new ParseError('RILL-P001', `Expected type constructor name (list, dict, tuple, ordered), got: ${constructorName}`, current(this.state).span.start);
|
|
23
|
+
}
|
|
24
|
+
const start = current(this.state).span.start;
|
|
25
|
+
// Consume the constructor name identifier token
|
|
26
|
+
advance(this.state);
|
|
27
|
+
expect(this.state, TOKEN_TYPES.LPAREN, 'Expected (');
|
|
28
|
+
skipNewlines(this.state);
|
|
29
|
+
const args = [];
|
|
30
|
+
if (!check(this.state, TOKEN_TYPES.RPAREN)) {
|
|
31
|
+
args.push(parseTypeArg(this));
|
|
32
|
+
skipNewlines(this.state);
|
|
33
|
+
while (check(this.state, TOKEN_TYPES.COMMA)) {
|
|
34
|
+
advance(this.state);
|
|
35
|
+
skipNewlines(this.state);
|
|
36
|
+
if (check(this.state, TOKEN_TYPES.RPAREN))
|
|
37
|
+
break; // trailing comma
|
|
38
|
+
args.push(parseTypeArg(this));
|
|
39
|
+
skipNewlines(this.state);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const rparen = expect(this.state, TOKEN_TYPES.RPAREN, 'Expected )', 'RILL-P005');
|
|
43
|
+
return {
|
|
44
|
+
type: 'TypeConstructor',
|
|
45
|
+
constructorName: constructorName,
|
|
46
|
+
args,
|
|
47
|
+
span: makeSpan(start, rparen.span.end),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
// ============================================================
|
|
51
|
+
// TYPE ARG PARSING (internal)
|
|
52
|
+
// ============================================================
|
|
53
|
+
/**
|
|
54
|
+
* Parse a single type argument: `identifier ":" expression` (named) or `expression` (positional).
|
|
55
|
+
* Lookahead: if current is IDENTIFIER and next is COLON, parse as named arg.
|
|
56
|
+
* Otherwise parse as positional.
|
|
57
|
+
*/
|
|
58
|
+
function parseTypeArg(parser) {
|
|
59
|
+
// Named arg: identifier ":" expression
|
|
60
|
+
if (check(parser.state, TOKEN_TYPES.IDENTIFIER) &&
|
|
61
|
+
peek(parser.state, 1).type === TOKEN_TYPES.COLON) {
|
|
62
|
+
const nameToken = advance(parser.state); // consume identifier
|
|
63
|
+
advance(parser.state); // consume ':'
|
|
64
|
+
skipNewlines(parser.state);
|
|
65
|
+
const value = parser.parseExpression();
|
|
66
|
+
return { kind: 'named', name: nameToken.value, value };
|
|
67
|
+
}
|
|
68
|
+
// Positional arg: expression
|
|
69
|
+
const value = parser.parseExpression();
|
|
70
|
+
return { kind: 'positional', value };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=parser-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-shape.js","sourceRoot":"","sources":["../../src/parser/parser-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Utility: Type Reference Parsing
|
|
3
|
+
* Parses a type-ref production: either a static type name or a dynamic $variable.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
import { type TypeRef } from '../types.js';
|
|
7
|
+
import { type ParserState } from './state.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parse a type reference from the current position in the token stream.
|
|
10
|
+
*
|
|
11
|
+
* Grammar: `type-ref = type-name | "$" , identifier`
|
|
12
|
+
*
|
|
13
|
+
* - `$identifier` → `{ kind: 'dynamic', varName: identifier }`
|
|
14
|
+
* - `type-name` → `{ kind: 'static', typeName }`
|
|
15
|
+
*
|
|
16
|
+
* Throws ParseError if neither a `$identifier` nor a valid type name is found.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseTypeRef(state: ParserState): TypeRef;
|
|
21
|
+
//# sourceMappingURL=parser-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-types.d.ts","sourceRoot":"","sources":["../../src/parser/parser-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,KAAK,WAAW,EAA0B,MAAM,YAAY,CAAC;AAGtE;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAaxD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Utility: Type Reference Parsing
|
|
3
|
+
* Parses a type-ref production: either a static type name or a dynamic $variable.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
import { TOKEN_TYPES } from '../types.js';
|
|
7
|
+
import { check, advance, expect } from './state.js';
|
|
8
|
+
import { VALID_TYPE_NAMES, parseTypeName } from './helpers.js';
|
|
9
|
+
/**
|
|
10
|
+
* Parse a type reference from the current position in the token stream.
|
|
11
|
+
*
|
|
12
|
+
* Grammar: `type-ref = type-name | "$" , identifier`
|
|
13
|
+
*
|
|
14
|
+
* - `$identifier` → `{ kind: 'dynamic', varName: identifier }`
|
|
15
|
+
* - `type-name` → `{ kind: 'static', typeName }`
|
|
16
|
+
*
|
|
17
|
+
* Throws ParseError if neither a `$identifier` nor a valid type name is found.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export function parseTypeRef(state) {
|
|
22
|
+
if (check(state, TOKEN_TYPES.DOLLAR)) {
|
|
23
|
+
advance(state); // consume $
|
|
24
|
+
const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, 'Expected variable name after $');
|
|
25
|
+
return { kind: 'dynamic', varName: nameToken.value };
|
|
26
|
+
}
|
|
27
|
+
const typeName = parseTypeName(state, VALID_TYPE_NAMES);
|
|
28
|
+
return { kind: 'static', typeName };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=parser-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-types.js","sourceRoot":"","sources":["../../src/parser/parser-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgB,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAoB,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB;IAC7C,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QAC5B,MAAM,SAAS,GAAG,MAAM,CACtB,KAAK,EACL,WAAW,CAAC,UAAU,EACtB,gCAAgC,CACjC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-variables.d.ts","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-variables.d.ts","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAiBrB,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,MAAM;QACd,aAAa,IAAI,YAAY,CAAC;QAC9B,sBAAsB,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,cAAc,GACpB,YAAY,CAAC;QAChB,gBAAgB,IAAI;YAClB,WAAW,EAAE,cAAc,EAAE,CAAC;YAC9B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;SACvC,CAAC;QACF,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC;QACxE,2BAA2B,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;QACrE,oBAAoB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC;QACxC,iBAAiB,IAAI,QAAQ,CAAC;KAC/B;CACF"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Parser } from './parser.js';
|
|
6
6
|
import { TOKEN_TYPES, ParseError } from '../types.js';
|
|
7
|
-
import { check, advance, expect, makeSpan, current } from './state.js';
|
|
7
|
+
import { check, advance, expect, makeSpan, current, skipNewlinesIfFollowedBy, } from './state.js';
|
|
8
8
|
import { isMethodCallWithArgs, VALID_TYPE_NAMES, parseTypeName, } from './helpers.js';
|
|
9
9
|
// ============================================================
|
|
10
10
|
// VARIABLE PARSING
|
|
@@ -52,6 +52,9 @@ Parser.prototype.makeVariableWithAccess = function (name, isPipeVar, start) {
|
|
|
52
52
|
Parser.prototype.parseAccessChain = function () {
|
|
53
53
|
const accessChain = [];
|
|
54
54
|
let existenceCheck = null;
|
|
55
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT);
|
|
56
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT_QUESTION);
|
|
57
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.LBRACKET);
|
|
55
58
|
while (check(this.state, TOKEN_TYPES.DOT, TOKEN_TYPES.DOT_QUESTION, TOKEN_TYPES.LBRACKET)) {
|
|
56
59
|
if (check(this.state, TOKEN_TYPES.DOT) &&
|
|
57
60
|
isMethodCallWithArgs(this.state)) {
|
|
@@ -63,6 +66,9 @@ Parser.prototype.parseAccessChain = function () {
|
|
|
63
66
|
const closeBracket = expect(this.state, TOKEN_TYPES.RBRACKET, 'Expected ] after index expression', 'RILL-P005');
|
|
64
67
|
const span = makeSpan(openBracket.span.start, closeBracket.span.end);
|
|
65
68
|
accessChain.push({ accessKind: 'bracket', expression, span });
|
|
69
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT);
|
|
70
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT_QUESTION);
|
|
71
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.LBRACKET);
|
|
66
72
|
continue;
|
|
67
73
|
}
|
|
68
74
|
if (check(this.state, TOKEN_TYPES.DOT_QUESTION)) {
|
|
@@ -85,6 +91,9 @@ Parser.prototype.parseAccessChain = function () {
|
|
|
85
91
|
break;
|
|
86
92
|
}
|
|
87
93
|
accessChain.push(access);
|
|
94
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT);
|
|
95
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT_QUESTION);
|
|
96
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.LBRACKET);
|
|
88
97
|
}
|
|
89
98
|
return { accessChain, existenceCheck };
|
|
90
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-variables.js","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"parser-variables.js","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,12 +24,14 @@
|
|
|
24
24
|
* - Per spec algorithm: "Apply default values for missing arguments before validation"
|
|
25
25
|
* - Mutation occurs before host function receives args, maintaining immutability contract
|
|
26
26
|
*/
|
|
27
|
-
import type { BodyNode, SourceLocation } from '../../types.js';
|
|
28
|
-
|
|
27
|
+
import type { BodyNode, RillFunctionReturnType, RillTypeName, SourceLocation } from '../../types.js';
|
|
28
|
+
export type { RillFunctionReturnType } from '../../types.js';
|
|
29
|
+
import type { RillStructuralType, RillTypeValue, RillValue } from './values.js';
|
|
29
30
|
interface RuntimeContextLike {
|
|
30
31
|
readonly parent?: RuntimeContextLike | undefined;
|
|
31
32
|
readonly variables: Map<string, RillValue>;
|
|
32
33
|
pipeValue: RillValue;
|
|
34
|
+
readonly metadata?: Record<string, string> | undefined;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Callable function signature.
|
|
@@ -44,18 +46,13 @@ export type CallableFn = (args: RillValue[], ctx: RuntimeContextLike, location?:
|
|
|
44
46
|
*/
|
|
45
47
|
export interface CallableParam {
|
|
46
48
|
readonly name: string;
|
|
47
|
-
readonly typeName:
|
|
49
|
+
readonly typeName: RillTypeName | null;
|
|
48
50
|
readonly defaultValue: RillValue | null;
|
|
49
51
|
/** Evaluated parameter-level annotations (e.g., ^(cache: true)) */
|
|
50
52
|
readonly annotations: Record<string, RillValue>;
|
|
51
53
|
/** Human-readable parameter description (optional, from host functions) */
|
|
52
54
|
readonly description?: string;
|
|
53
55
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Return type declaration for host-provided functions.
|
|
56
|
-
* Limited to 6 primitive types plus 'any' (default).
|
|
57
|
-
*/
|
|
58
|
-
export type RillFunctionReturnType = 'string' | 'number' | 'bool' | 'list' | 'dict' | 'vector' | 'any';
|
|
59
56
|
/**
|
|
60
57
|
* Parameter metadata for host-provided functions.
|
|
61
58
|
*
|
|
@@ -115,6 +112,10 @@ export interface ScriptCallable extends CallableBase {
|
|
|
115
112
|
readonly annotations: Record<string, RillValue>;
|
|
116
113
|
/** Evaluated parameter annotations keyed by parameter name */
|
|
117
114
|
readonly paramAnnotations: Record<string, Record<string, RillValue>>;
|
|
115
|
+
/** Cached input structural type built from params at creation time — used by `$fn.^input` */
|
|
116
|
+
readonly inputShape: RillStructuralType;
|
|
117
|
+
/** Return type target from `:type-target` syntax — set in Phase 2, undefined until then */
|
|
118
|
+
readonly returnShape?: RillTypeValue | undefined;
|
|
118
119
|
}
|
|
119
120
|
/** Runtime callable - Rill's built-in functions (type, log, json, identity) */
|
|
120
121
|
export interface RuntimeCallable extends CallableBase {
|
|
@@ -164,6 +165,20 @@ export declare function formatCallable(callable: RillCallable): string;
|
|
|
164
165
|
* 5. Same parameter-level annotations
|
|
165
166
|
*/
|
|
166
167
|
export declare function callableEquals(a: ScriptCallable, b: ScriptCallable, valueEquals?: (a: RillValue, b: RillValue) => boolean): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Build a RillStructuralType closure variant from a closure's parameter list.
|
|
170
|
+
*
|
|
171
|
+
* Called at closure creation time to build the structural type for `$fn.^input`.
|
|
172
|
+
* - Typed params map to { kind: 'primitive', name }
|
|
173
|
+
* - Untyped params (typeName: null) map to { kind: 'any' }
|
|
174
|
+
* - Return type is always { kind: 'any' }
|
|
175
|
+
*
|
|
176
|
+
* No validation: parser already validates type names.
|
|
177
|
+
*
|
|
178
|
+
* @param params - Closure parameter definitions
|
|
179
|
+
* @returns Frozen RillStructuralType with closure variant
|
|
180
|
+
*/
|
|
181
|
+
export declare function paramsToStructuralType(params: CallableParam[]): RillStructuralType;
|
|
167
182
|
/**
|
|
168
183
|
* Validate defaultValue type matches declared parameter type.
|
|
169
184
|
*
|
|
@@ -175,17 +190,6 @@ export declare function callableEquals(a: ScriptCallable, b: ScriptCallable, val
|
|
|
175
190
|
* @throws Error if defaultValue type doesn't match param.type
|
|
176
191
|
*/
|
|
177
192
|
export declare function validateDefaultValueType(param: HostFunctionParam, _functionName: string): void;
|
|
178
|
-
/**
|
|
179
|
-
* Validate returnType is a valid RillFunctionReturnType literal.
|
|
180
|
-
*
|
|
181
|
-
* Called at registration time to catch configuration errors early.
|
|
182
|
-
* Throws Error (not RuntimeError) to indicate registration failure.
|
|
183
|
-
*
|
|
184
|
-
* @param returnType - Return type value to validate
|
|
185
|
-
* @param functionName - Function name for error messages
|
|
186
|
-
* @throws Error if returnType is not a valid literal
|
|
187
|
-
*/
|
|
188
|
-
export declare function validateReturnType(returnType: unknown, functionName: string): void;
|
|
189
193
|
/**
|
|
190
194
|
* Validate host function arguments against parameter declarations.
|
|
191
195
|
*
|
|
@@ -212,5 +216,4 @@ export declare function validateHostFunctionArgs(args: RillValue[], params: read
|
|
|
212
216
|
* @throws RuntimeError with RUNTIME_TYPE_ERROR on validation failure
|
|
213
217
|
*/
|
|
214
218
|
export declare function validateCallableArgs(args: RillValue[], params: readonly CallableParam[], functionName: string, location?: SourceLocation): void;
|
|
215
|
-
export {};
|
|
216
219
|
//# sourceMappingURL=callable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,6 +154,32 @@ export function callableEquals(a, b, valueEquals = (x, y) => formatValue(x) ===
|
|
|
154
154
|
}
|
|
155
155
|
return true;
|
|
156
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Build a RillStructuralType closure variant from a closure's parameter list.
|
|
159
|
+
*
|
|
160
|
+
* Called at closure creation time to build the structural type for `$fn.^input`.
|
|
161
|
+
* - Typed params map to { kind: 'primitive', name }
|
|
162
|
+
* - Untyped params (typeName: null) map to { kind: 'any' }
|
|
163
|
+
* - Return type is always { kind: 'any' }
|
|
164
|
+
*
|
|
165
|
+
* No validation: parser already validates type names.
|
|
166
|
+
*
|
|
167
|
+
* @param params - Closure parameter definitions
|
|
168
|
+
* @returns Frozen RillStructuralType with closure variant
|
|
169
|
+
*/
|
|
170
|
+
export function paramsToStructuralType(params) {
|
|
171
|
+
const closureParams = params.map((param) => {
|
|
172
|
+
const paramType = param.typeName !== null
|
|
173
|
+
? { kind: 'primitive', name: param.typeName }
|
|
174
|
+
: { kind: 'any' };
|
|
175
|
+
return [param.name, paramType];
|
|
176
|
+
});
|
|
177
|
+
return Object.freeze({
|
|
178
|
+
kind: 'closure',
|
|
179
|
+
params: closureParams,
|
|
180
|
+
ret: { kind: 'any' },
|
|
181
|
+
});
|
|
182
|
+
}
|
|
157
183
|
/**
|
|
158
184
|
* Validate defaultValue type matches declared parameter type.
|
|
159
185
|
*
|
|
@@ -176,30 +202,6 @@ export function validateDefaultValueType(param, _functionName) {
|
|
|
176
202
|
throw new Error(`Invalid defaultValue for parameter '${param.name}': expected ${expectedType}, got ${actualType}`);
|
|
177
203
|
}
|
|
178
204
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Validate returnType is a valid RillFunctionReturnType literal.
|
|
181
|
-
*
|
|
182
|
-
* Called at registration time to catch configuration errors early.
|
|
183
|
-
* Throws Error (not RuntimeError) to indicate registration failure.
|
|
184
|
-
*
|
|
185
|
-
* @param returnType - Return type value to validate
|
|
186
|
-
* @param functionName - Function name for error messages
|
|
187
|
-
* @throws Error if returnType is not a valid literal
|
|
188
|
-
*/
|
|
189
|
-
export function validateReturnType(returnType, functionName) {
|
|
190
|
-
const validTypes = [
|
|
191
|
-
'string',
|
|
192
|
-
'number',
|
|
193
|
-
'bool',
|
|
194
|
-
'list',
|
|
195
|
-
'dict',
|
|
196
|
-
'vector',
|
|
197
|
-
'any',
|
|
198
|
-
];
|
|
199
|
-
if (!validTypes.includes(returnType)) {
|
|
200
|
-
throw new Error(`Invalid returnType for function '${functionName}': expected one of string, number, bool, list, dict, vector, any`);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
205
|
/**
|
|
204
206
|
* Validate host function arguments against parameter declarations.
|
|
205
207
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callable.js","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"callable.js","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAGV,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAGV,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAaxD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,cAAmB,GAC3B,cAAc,CA8IhB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAmBzE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,GACX,SAAS,GAAG,SAAS,CAQvB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,gBAAgB,EAAE,SAAS,GACxC,SAAS,OAAO,gBAAgB,EAAE,SAAS,EAAE,CAkB/C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,OAAO,gBAAgB,EAAE,SAAS,GACxC,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAKtD"}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
import { RuntimeError } from '../../types.js';
|
|
8
8
|
import { BUILTIN_FUNCTIONS, BUILTIN_METHODS } from '../ext/builtins.js';
|
|
9
9
|
import { bindDictCallables } from './types.js';
|
|
10
|
-
import {
|
|
11
|
-
import { callable, validateDefaultValueType,
|
|
10
|
+
import { inferType } from './values.js';
|
|
11
|
+
import { callable, validateDefaultValueType, } from './callable.js';
|
|
12
12
|
const defaultCallbacks = {
|
|
13
|
-
onLog: (
|
|
14
|
-
console.log(
|
|
13
|
+
onLog: (message) => {
|
|
14
|
+
console.log(message);
|
|
15
15
|
},
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
@@ -41,10 +41,6 @@ export function createRuntimeContext(options = {}) {
|
|
|
41
41
|
for (const [name, definition] of Object.entries(options.functions)) {
|
|
42
42
|
// All functions must be HostFunctionDefinition with params
|
|
43
43
|
const { params, fn, description, returnType } = definition;
|
|
44
|
-
// Validate return type at registration time (IR-1)
|
|
45
|
-
if (returnType !== undefined) {
|
|
46
|
-
validateReturnType(returnType, name);
|
|
47
|
-
}
|
|
48
44
|
// Validate default values at registration time (EC-4)
|
|
49
45
|
for (const param of params) {
|
|
50
46
|
validateDefaultValueType(param, name);
|
|
@@ -126,6 +122,8 @@ export function createRuntimeContext(options = {}) {
|
|
|
126
122
|
maxCallStackDepth: options.maxCallStackDepth ?? 100,
|
|
127
123
|
annotationStack: [],
|
|
128
124
|
callStack: [],
|
|
125
|
+
metadata: options.metadata,
|
|
126
|
+
immediateAnnotation: undefined,
|
|
129
127
|
};
|
|
130
128
|
}
|
|
131
129
|
/**
|
|
@@ -149,6 +147,8 @@ export function createChildContext(parent) {
|
|
|
149
147
|
maxCallStackDepth: parent.maxCallStackDepth,
|
|
150
148
|
annotationStack: parent.annotationStack,
|
|
151
149
|
callStack: parent.callStack,
|
|
150
|
+
metadata: parent.metadata,
|
|
151
|
+
immediateAnnotation: undefined,
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
/**
|