@rcrsr/rill 0.9.0 → 0.11.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 +43 -10
- 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 +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +273 -6
- package/dist/error-registry.js.map +1 -1
- package/dist/ext/crypto/index.d.ts.map +1 -1
- package/dist/ext/crypto/index.js +23 -12
- package/dist/ext/crypto/index.js.map +1 -1
- package/dist/ext/exec/index.d.ts.map +1 -1
- package/dist/ext/exec/index.js +10 -11
- package/dist/ext/exec/index.js.map +1 -1
- package/dist/ext/fetch/index.d.ts.map +1 -1
- package/dist/ext/fetch/index.js +15 -15
- package/dist/ext/fetch/index.js.map +1 -1
- package/dist/ext/fs/index.d.ts.map +1 -1
- package/dist/ext/fs/index.js +139 -47
- package/dist/ext/fs/index.js.map +1 -1
- package/dist/ext/kv/index.d.ts.map +1 -1
- package/dist/ext/kv/index.js +130 -31
- 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 +109 -8
- package/dist/generated/introspection-data.js.map +1 -1
- package/dist/generated/version-data.d.ts +1 -1
- package/dist/generated/version-data.d.ts.map +1 -1
- package/dist/generated/version-data.js +2 -2
- package/dist/generated/version-data.js.map +1 -1
- package/dist/highlight-map.d.ts.map +1 -1
- package/dist/highlight-map.js +1 -0
- package/dist/highlight-map.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lexer/readers.d.ts.map +1 -1
- package/dist/lexer/readers.js +1 -0
- package/dist/lexer/readers.js.map +1 -1
- package/dist/parser/index.d.ts +3 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +4 -1
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser-control.d.ts +1 -1
- package/dist/parser/parser-control.d.ts.map +1 -1
- package/dist/parser/parser-control.js +2 -2
- package/dist/parser/parser-control.js.map +1 -1
- package/dist/parser/parser-expr.d.ts +2 -1
- package/dist/parser/parser-expr.d.ts.map +1 -1
- package/dist/parser/parser-expr.js +15 -2
- package/dist/parser/parser-expr.js.map +1 -1
- package/dist/parser/parser-extract.d.ts.map +1 -1
- package/dist/parser/parser-extract.js +10 -9
- package/dist/parser/parser-extract.js.map +1 -1
- package/dist/parser/parser-functions.js +11 -6
- package/dist/parser/parser-functions.js.map +1 -1
- package/dist/parser/parser-literals.d.ts +1 -1
- package/dist/parser/parser-literals.d.ts.map +1 -1
- package/dist/parser/parser-literals.js +61 -7
- package/dist/parser/parser-literals.js.map +1 -1
- package/dist/parser/parser-types.d.ts +22 -6
- package/dist/parser/parser-types.d.ts.map +1 -1
- package/dist/parser/parser-types.js +126 -9
- package/dist/parser/parser-types.js.map +1 -1
- package/dist/parser/parser-use.d.ts +11 -0
- package/dist/parser/parser-use.d.ts.map +1 -0
- package/dist/parser/parser-use.js +68 -0
- package/dist/parser/parser-use.js.map +1 -0
- package/dist/parser/parser-variables.d.ts.map +1 -1
- package/dist/parser/parser-variables.js +5 -4
- package/dist/parser/parser-variables.js.map +1 -1
- package/dist/runtime/core/callable.d.ts +59 -70
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js +37 -93
- 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 +104 -33
- 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 +59 -17
- package/dist/runtime/core/equals.js.map +1 -1
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.js +2 -1
- package/dist/runtime/core/eval/evaluator.js.map +1 -1
- package/dist/runtime/core/eval/index.d.ts +2 -2
- package/dist/runtime/core/eval/index.d.ts.map +1 -1
- package/dist/runtime/core/eval/index.js +5 -0
- package/dist/runtime/core/eval/index.js.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.d.ts +3 -5
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.js +76 -40
- 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 +4 -2
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
- package/dist/runtime/core/eval/mixins/conversion.d.ts +9 -9
- package/dist/runtime/core/eval/mixins/conversion.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/conversion.js +51 -21
- package/dist/runtime/core/eval/mixins/conversion.js.map +1 -1
- package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/core.js +8 -2
- 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 +20 -8
- package/dist/runtime/core/eval/mixins/extraction.js.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.js +32 -15
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
- package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/types.js +166 -21
- package/dist/runtime/core/eval/mixins/types.js.map +1 -1
- package/dist/runtime/core/eval/mixins/use.d.ts +25 -0
- package/dist/runtime/core/eval/mixins/use.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/use.js +152 -0
- package/dist/runtime/core/eval/mixins/use.js.map +1 -0
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.js +67 -32
- 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 +11 -1
- package/dist/runtime/core/execute.js.map +1 -1
- package/dist/runtime/core/field-descriptor.d.ts +6 -6
- package/dist/runtime/core/field-descriptor.d.ts.map +1 -1
- package/dist/runtime/core/field-descriptor.js +2 -2
- package/dist/runtime/core/field-descriptor.js.map +1 -1
- package/dist/runtime/core/introspection.d.ts +16 -0
- package/dist/runtime/core/introspection.d.ts.map +1 -1
- package/dist/runtime/core/introspection.js +102 -7
- package/dist/runtime/core/introspection.js.map +1 -1
- package/dist/runtime/core/resolvers.d.ts +39 -0
- package/dist/runtime/core/resolvers.d.ts.map +1 -0
- package/dist/runtime/core/resolvers.js +89 -0
- package/dist/runtime/core/resolvers.js.map +1 -0
- package/dist/runtime/core/types.d.ts +54 -5
- 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 +43 -29
- package/dist/runtime/core/values.d.ts.map +1 -1
- package/dist/runtime/core/values.js +153 -68
- package/dist/runtime/core/values.js.map +1 -1
- package/dist/runtime/ext/builtins.d.ts +3 -4
- package/dist/runtime/ext/builtins.d.ts.map +1 -1
- package/dist/runtime/ext/builtins.js +621 -444
- package/dist/runtime/ext/builtins.js.map +1 -1
- package/dist/runtime/ext/extensions.d.ts +43 -43
- 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 +8 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +6 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/signature-parser.d.ts +43 -0
- package/dist/signature-parser.d.ts.map +1 -0
- package/dist/signature-parser.js +289 -0
- package/dist/signature-parser.js.map +1 -0
- package/dist/token-types.d.ts +1 -0
- package/dist/token-types.d.ts.map +1 -1
- package/dist/token-types.js +1 -0
- package/dist/token-types.js.map +1 -1
- package/dist/value-types.d.ts +20 -6
- package/dist/value-types.d.ts.map +1 -1
- package/dist/value-types.js +1 -1
- package/dist/value-types.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signature Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses annotated rill closure type signature strings at registration time.
|
|
5
|
+
* This module bridges the lexer/parser boundary so that runtime/core/context.ts
|
|
6
|
+
* can parse signatures without importing from parser/* or lexer/* directly.
|
|
7
|
+
*
|
|
8
|
+
* Import boundary note (§NOD.2.1):
|
|
9
|
+
* - This file lives at src/ level (not in runtime/), so it may import from
|
|
10
|
+
* both lexer and parser barrels.
|
|
11
|
+
* - runtime/core/context.ts imports from this file (../../signature-parser.js),
|
|
12
|
+
* which is NOT in parser/* or lexer/* — boundary preserved.
|
|
13
|
+
*/
|
|
14
|
+
import { tokenize } from './lexer/index.js';
|
|
15
|
+
import { ParseError, TOKEN_TYPES } from './types.js';
|
|
16
|
+
import { createParserState, advance, check, current, expect, skipNewlines, isAtEnd, parseTypeRef, } from './parser/index.js';
|
|
17
|
+
// ============================================================
|
|
18
|
+
// TypeRef → RillType static conversion
|
|
19
|
+
// ============================================================
|
|
20
|
+
/**
|
|
21
|
+
* Convert a static TypeRef to a RillType.
|
|
22
|
+
*
|
|
23
|
+
* Only handles static refs (type names and unions). Dynamic refs ($var)
|
|
24
|
+
* are not valid in registration-time signatures — they throw Error.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
function staticTypeRefToRillType(typeRef, functionName) {
|
|
29
|
+
if (typeRef.kind === 'dynamic') {
|
|
30
|
+
throw new Error(`Invalid signature for function '${functionName}': dynamic type references ($variable) are not allowed in signatures`);
|
|
31
|
+
}
|
|
32
|
+
if (typeRef.kind === 'union') {
|
|
33
|
+
return {
|
|
34
|
+
type: 'union',
|
|
35
|
+
members: typeRef.members.map((m) => staticTypeRefToRillType(m, functionName)),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// static kind
|
|
39
|
+
const { typeName, args } = typeRef;
|
|
40
|
+
if (!args || args.length === 0) {
|
|
41
|
+
return { type: typeName };
|
|
42
|
+
}
|
|
43
|
+
// Parameterized types
|
|
44
|
+
if (typeName === 'list') {
|
|
45
|
+
if (args.length === 1 &&
|
|
46
|
+
args[0] !== undefined &&
|
|
47
|
+
args[0].name === undefined) {
|
|
48
|
+
const element = staticTypeRefToRillType(args[0].ref, functionName);
|
|
49
|
+
return { type: 'list', element };
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`Invalid signature for function '${functionName}': list requires exactly one positional type argument`);
|
|
52
|
+
}
|
|
53
|
+
if (typeName === 'dict') {
|
|
54
|
+
const fields = {};
|
|
55
|
+
for (const arg of args) {
|
|
56
|
+
if (arg.name === undefined) {
|
|
57
|
+
throw new Error(`Invalid signature for function '${functionName}': dict type arguments must be named (e.g. dict(key: string))`);
|
|
58
|
+
}
|
|
59
|
+
fields[arg.name] = staticTypeRefToRillType(arg.ref, functionName);
|
|
60
|
+
}
|
|
61
|
+
return { type: 'dict', fields };
|
|
62
|
+
}
|
|
63
|
+
if (typeName === 'tuple') {
|
|
64
|
+
const elements = args.map((arg) => staticTypeRefToRillType(arg.ref, functionName));
|
|
65
|
+
return { type: 'tuple', elements };
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`Invalid signature for function '${functionName}': type '${typeName}' does not accept type arguments`);
|
|
68
|
+
}
|
|
69
|
+
// ============================================================
|
|
70
|
+
// Annotation parsing
|
|
71
|
+
// ============================================================
|
|
72
|
+
/**
|
|
73
|
+
* Extract a string literal value from the current token position.
|
|
74
|
+
* Only string literals are valid as annotation values in signatures.
|
|
75
|
+
*
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
function extractAnnotationStringValue(state, functionName) {
|
|
79
|
+
if (!check(state, TOKEN_TYPES.STRING)) {
|
|
80
|
+
throw new Error(`Invalid signature for function '${functionName}': annotation values must be string literals`);
|
|
81
|
+
}
|
|
82
|
+
const tok = advance(state);
|
|
83
|
+
return tok.value;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse annotation args: `key: "value", ...` inside `^(...)`.
|
|
87
|
+
* Returns a record of annotation key-value pairs.
|
|
88
|
+
* Only string literal values are supported in signatures.
|
|
89
|
+
*
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
function parseSignatureAnnotations(state, functionName) {
|
|
93
|
+
const annotations = {};
|
|
94
|
+
while (!check(state, TOKEN_TYPES.RPAREN) && !isAtEnd(state)) {
|
|
95
|
+
// Support bare string shorthand: "description text" → description: "description text"
|
|
96
|
+
if (check(state, TOKEN_TYPES.STRING)) {
|
|
97
|
+
const tok = advance(state);
|
|
98
|
+
annotations['description'] = tok.value;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Named arg: key: "value"
|
|
102
|
+
const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, `Expected annotation key in function '${functionName}'`);
|
|
103
|
+
expect(state, TOKEN_TYPES.COLON, `Expected ':' after annotation key in function '${functionName}'`);
|
|
104
|
+
const value = extractAnnotationStringValue(state, functionName);
|
|
105
|
+
annotations[nameToken.value] = value;
|
|
106
|
+
}
|
|
107
|
+
if (check(state, TOKEN_TYPES.COMMA)) {
|
|
108
|
+
advance(state); // consume comma
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return annotations;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parse a rill closure type signature string into structured parameter declarations.
|
|
115
|
+
*
|
|
116
|
+
* Signature format (optional closure-level annotation before param list):
|
|
117
|
+
* ```
|
|
118
|
+
* ^(description: "...") |^(description: "...") x: string = "default", y: number|:string
|
|
119
|
+
* ```
|
|
120
|
+
* The return type follows `:type` directly after the closing `|`.
|
|
121
|
+
*
|
|
122
|
+
* Throws Error with message `Invalid signature for function '{name}': {parse error}`
|
|
123
|
+
* on any parse failure (EC-8, EC-9).
|
|
124
|
+
*
|
|
125
|
+
* @param signature - The signature string to parse
|
|
126
|
+
* @param functionName - The function name (for error messages)
|
|
127
|
+
* @returns Parsed params, return type, and description
|
|
128
|
+
*
|
|
129
|
+
* @internal
|
|
130
|
+
*/
|
|
131
|
+
export function parseSignatureRegistration(signature, functionName) {
|
|
132
|
+
let tokens;
|
|
133
|
+
try {
|
|
134
|
+
tokens = tokenize(signature);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
138
|
+
throw new Error(`Invalid signature for function '${functionName}': ${message}`, { cause: err });
|
|
139
|
+
}
|
|
140
|
+
// Filter out newlines and comments for cleaner parsing
|
|
141
|
+
const filtered = tokens.filter((t) => t.type !== TOKEN_TYPES.NEWLINE && t.type !== TOKEN_TYPES.COMMENT);
|
|
142
|
+
const state = createParserState(filtered, { recoveryMode: false });
|
|
143
|
+
try {
|
|
144
|
+
return parseSignatureBody(state, functionName);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
if (err instanceof ParseError) {
|
|
148
|
+
throw new Error(`Invalid signature for function '${functionName}': ${err.message}`, { cause: err });
|
|
149
|
+
}
|
|
150
|
+
// Re-throw registration errors (already have proper message format)
|
|
151
|
+
throw err;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Parse the body of the signature string given a parser state.
|
|
156
|
+
*
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
function parseSignatureBody(state, functionName) {
|
|
160
|
+
// Step 1: Optional closure-level annotation ^(...)
|
|
161
|
+
let description = undefined;
|
|
162
|
+
if (check(state, TOKEN_TYPES.CARET)) {
|
|
163
|
+
advance(state); // consume ^
|
|
164
|
+
expect(state, TOKEN_TYPES.LPAREN, `Expected '(' after '^' in signature for function '${functionName}'`);
|
|
165
|
+
const annots = parseSignatureAnnotations(state, functionName);
|
|
166
|
+
expect(state, TOKEN_TYPES.RPAREN, `Expected ')' to close annotation in signature for function '${functionName}'`);
|
|
167
|
+
description = annots['description'];
|
|
168
|
+
skipNewlines(state);
|
|
169
|
+
}
|
|
170
|
+
// Step 2: Param list between | ... | (or || for zero params)
|
|
171
|
+
const params = [];
|
|
172
|
+
if (check(state, TOKEN_TYPES.OR)) {
|
|
173
|
+
// || — zero params
|
|
174
|
+
advance(state);
|
|
175
|
+
}
|
|
176
|
+
else if (check(state, TOKEN_TYPES.PIPE_BAR)) {
|
|
177
|
+
advance(state); // consume opening |
|
|
178
|
+
skipNewlines(state);
|
|
179
|
+
// Parse params until closing |
|
|
180
|
+
while (!check(state, TOKEN_TYPES.PIPE_BAR) && !isAtEnd(state)) {
|
|
181
|
+
const param = parseSignatureParam(state, functionName);
|
|
182
|
+
params.push(param);
|
|
183
|
+
if (check(state, TOKEN_TYPES.COMMA)) {
|
|
184
|
+
advance(state);
|
|
185
|
+
skipNewlines(state);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (!check(state, TOKEN_TYPES.PIPE_BAR)) {
|
|
189
|
+
throw new Error(`Invalid signature for function '${functionName}': expected '|' to close parameter list`);
|
|
190
|
+
}
|
|
191
|
+
advance(state); // consume closing |
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
throw new Error(`Invalid signature for function '${functionName}': expected '|' or '||' to start parameter list`);
|
|
195
|
+
}
|
|
196
|
+
skipNewlines(state);
|
|
197
|
+
// Step 3: Optional return type :type
|
|
198
|
+
let returnType = undefined;
|
|
199
|
+
if (check(state, TOKEN_TYPES.COLON)) {
|
|
200
|
+
advance(state); // consume :
|
|
201
|
+
skipNewlines(state);
|
|
202
|
+
const typeRef = parseTypeRef(state);
|
|
203
|
+
returnType = staticTypeRefToRillType(typeRef, functionName);
|
|
204
|
+
}
|
|
205
|
+
// Step 5: Verify no trailing tokens
|
|
206
|
+
if (!isAtEnd(state)) {
|
|
207
|
+
const tok = current(state);
|
|
208
|
+
throw new Error(`Invalid signature for function '${functionName}': unexpected token '${tok.value}' after signature`);
|
|
209
|
+
}
|
|
210
|
+
return { params, returnType, description };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Parse a single parameter from a signature param list.
|
|
214
|
+
*
|
|
215
|
+
* Grammar: `^(annots) name : type = literal`
|
|
216
|
+
*
|
|
217
|
+
* @internal
|
|
218
|
+
*/
|
|
219
|
+
function parseSignatureParam(state, functionName) {
|
|
220
|
+
// Optional param-level annotation ^(...)
|
|
221
|
+
const annotations = {};
|
|
222
|
+
if (check(state, TOKEN_TYPES.CARET)) {
|
|
223
|
+
advance(state); // consume ^
|
|
224
|
+
expect(state, TOKEN_TYPES.LPAREN, `Expected '(' after '^' in parameter annotation for function '${functionName}'`);
|
|
225
|
+
const annots = parseSignatureAnnotations(state, functionName);
|
|
226
|
+
expect(state, TOKEN_TYPES.RPAREN, `Expected ')' to close parameter annotation for function '${functionName}'`);
|
|
227
|
+
// Store annotation values as strings in annotations record
|
|
228
|
+
for (const [key, value] of Object.entries(annots)) {
|
|
229
|
+
annotations[key] = value;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Param name
|
|
233
|
+
const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, `Expected parameter name in signature for function '${functionName}'`);
|
|
234
|
+
const name = nameToken.value;
|
|
235
|
+
// Optional type annotation : type
|
|
236
|
+
let type = undefined;
|
|
237
|
+
skipNewlines(state);
|
|
238
|
+
if (check(state, TOKEN_TYPES.COLON)) {
|
|
239
|
+
advance(state); // consume :
|
|
240
|
+
skipNewlines(state);
|
|
241
|
+
const typeRef = parseTypeRef(state, { allowTrailingPipe: true });
|
|
242
|
+
type = staticTypeRefToRillType(typeRef, functionName);
|
|
243
|
+
}
|
|
244
|
+
// Optional default value = literal
|
|
245
|
+
let defaultValue = undefined;
|
|
246
|
+
skipNewlines(state);
|
|
247
|
+
if (check(state, TOKEN_TYPES.ASSIGN)) {
|
|
248
|
+
advance(state); // consume =
|
|
249
|
+
skipNewlines(state);
|
|
250
|
+
defaultValue = parseSignatureLiteral(state, functionName);
|
|
251
|
+
}
|
|
252
|
+
return { name, type, defaultValue, annotations };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Parse a simple literal value for a default parameter value.
|
|
256
|
+
* Supported: string, number, bool (true/false), negative number.
|
|
257
|
+
*
|
|
258
|
+
* @internal
|
|
259
|
+
*/
|
|
260
|
+
function parseSignatureLiteral(state, functionName) {
|
|
261
|
+
if (check(state, TOKEN_TYPES.STRING)) {
|
|
262
|
+
const tok = advance(state);
|
|
263
|
+
return tok.value;
|
|
264
|
+
}
|
|
265
|
+
if (check(state, TOKEN_TYPES.NUMBER)) {
|
|
266
|
+
const tok = advance(state);
|
|
267
|
+
return parseFloat(tok.value);
|
|
268
|
+
}
|
|
269
|
+
if (check(state, TOKEN_TYPES.TRUE)) {
|
|
270
|
+
advance(state);
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
if (check(state, TOKEN_TYPES.FALSE)) {
|
|
274
|
+
advance(state);
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
// Negative number: - NUMBER
|
|
278
|
+
if (check(state, TOKEN_TYPES.MINUS)) {
|
|
279
|
+
advance(state); // consume -
|
|
280
|
+
if (check(state, TOKEN_TYPES.NUMBER)) {
|
|
281
|
+
const tok = advance(state);
|
|
282
|
+
return -parseFloat(tok.value);
|
|
283
|
+
}
|
|
284
|
+
throw new Error(`Invalid signature for function '${functionName}': expected number after '-' in default value`);
|
|
285
|
+
}
|
|
286
|
+
const tok = current(state);
|
|
287
|
+
throw new Error(`Invalid signature for function '${functionName}': unsupported default value '${tok.value}' (only string, number, bool supported)`);
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=signature-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-parser.js","sourceRoot":"","sources":["../src/signature-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/token-types.d.ts
CHANGED
|
@@ -49,6 +49,7 @@ export declare const TOKEN_TYPES: {
|
|
|
49
49
|
readonly ORDERED_LBRACKET: "ORDERED_LBRACKET";
|
|
50
50
|
readonly DESTRUCT_LANGLE: "DESTRUCT_LANGLE";
|
|
51
51
|
readonly SLICE_LANGLE: "SLICE_LANGLE";
|
|
52
|
+
readonly USE_LANGLE: "USE_LANGLE";
|
|
52
53
|
readonly CONVERT: "CONVERT";
|
|
53
54
|
readonly BREAK: "BREAK";
|
|
54
55
|
readonly RETURN: "RETURN";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-types.d.ts","sourceRoot":"","sources":["../src/token-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMvD,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"token-types.d.ts","sourceRoot":"","sources":["../src/token-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMvD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEvE,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B"}
|
package/dist/token-types.js
CHANGED
|
@@ -64,6 +64,7 @@ export const TOKEN_TYPES = {
|
|
|
64
64
|
ORDERED_LBRACKET: 'ORDERED_LBRACKET', // ordered[
|
|
65
65
|
DESTRUCT_LANGLE: 'DESTRUCT_LANGLE', // destruct<
|
|
66
66
|
SLICE_LANGLE: 'SLICE_LANGLE', // slice<
|
|
67
|
+
USE_LANGLE: 'USE_LANGLE', // use<
|
|
67
68
|
// Type conversion operator
|
|
68
69
|
CONVERT: 'CONVERT', // :>
|
|
69
70
|
// Keywords
|
package/dist/token-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-types.js","sourceRoot":"","sources":["../src/token-types.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW;IACX,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IAEd,cAAc;IACd,UAAU,EAAE,YAAY;IAExB,YAAY;IACZ,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,QAAQ,EAAE,UAAU,EAAE,uBAAuB;IAE7C,YAAY;IACZ,KAAK,EAAE,OAAO,EAAE,KAAK;IACrB,aAAa,EAAE,eAAe,EAAE,KAAK;IACrC,GAAG,EAAE,KAAK,EAAE,IAAI;IAChB,QAAQ,EAAE,UAAU,EAAE,IAAI;IAC1B,EAAE,EAAE,IAAI,EAAE,IAAI;IACd,KAAK,EAAE,OAAO,EAAE,wBAAwB;IACxC,KAAK,EAAE,OAAO,EAAE,IAAI;IACpB,YAAY,EAAE,cAAc,EAAE,2BAA2B;IACzD,KAAK,EAAE,OAAO,EAAE,IAAI;IAEpB,oBAAoB;IACpB,IAAI,EAAE,MAAM,EAAE,IAAI;IAClB,GAAG,EAAE,KAAK,EAAE,KAAK;IACjB,EAAE,EAAE,IAAI,EAAE,KAAK;IAEf,gCAAgC;IAChC,gBAAgB,EAAE,kBAAkB,EAAE,KAAK;IAC3C,YAAY,EAAE,cAAc,EAAE,KAAK;IACnC,SAAS,EAAE,WAAW,EAAE,IAAI;IAE5B,aAAa;IACb,MAAM,EAAE,QAAQ,EAAE,IAAI;IAEtB,uBAAuB;IACvB,EAAE,EAAE,IAAI,EAAE,KAAK;IACf,EAAE,EAAE,IAAI,EAAE,KAAK;IACf,EAAE,EAAE,IAAI,EAAE,IAAI;IACd,EAAE,EAAE,IAAI,EAAE,IAAI;IACd,EAAE,EAAE,IAAI,EAAE,KAAK;IACf,EAAE,EAAE,IAAI,EAAE,KAAK;IAEf,uBAAuB;IACvB,UAAU,EAAE,YAAY,EAAE,0BAA0B;IAEpD,kBAAkB;IAClB,QAAQ,EAAE,UAAU,EAAE,oBAAoB;IAE1C,uBAAuB;IACvB,QAAQ,EAAE,UAAU,EAAE,IAAI;IAC1B,IAAI,EAAE,MAAM,EAAE,IAAI;IAClB,KAAK,EAAE,OAAO,EAAE,IAAI;IACpB,IAAI,EAAE,MAAM,EAAE,IAAI;IAClB,KAAK,EAAE,OAAO,EAAE,IAAI;IACpB,OAAO,EAAE,SAAS,EAAE,IAAI;IAExB,aAAa;IACb,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,QAAQ,EAAE,UAAU,EAAE,IAAI;IAC1B,QAAQ,EAAE,UAAU,EAAE,IAAI;IAE1B,6DAA6D;IAC7D,aAAa,EAAE,eAAe,EAAE,QAAQ;IACxC,aAAa,EAAE,eAAe,EAAE,QAAQ;IACxC,cAAc,EAAE,gBAAgB,EAAE,SAAS;IAC3C,gBAAgB,EAAE,kBAAkB,EAAE,WAAW;IACjD,eAAe,EAAE,iBAAiB,EAAE,YAAY;IAChD,YAAY,EAAE,cAAc,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"token-types.js","sourceRoot":"","sources":["../src/token-types.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW;IACX,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IAEd,cAAc;IACd,UAAU,EAAE,YAAY;IAExB,YAAY;IACZ,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,QAAQ,EAAE,UAAU,EAAE,uBAAuB;IAE7C,YAAY;IACZ,KAAK,EAAE,OAAO,EAAE,KAAK;IACrB,aAAa,EAAE,eAAe,EAAE,KAAK;IACrC,GAAG,EAAE,KAAK,EAAE,IAAI;IAChB,QAAQ,EAAE,UAAU,EAAE,IAAI;IAC1B,EAAE,EAAE,IAAI,EAAE,IAAI;IACd,KAAK,EAAE,OAAO,EAAE,wBAAwB;IACxC,KAAK,EAAE,OAAO,EAAE,IAAI;IACpB,YAAY,EAAE,cAAc,EAAE,2BAA2B;IACzD,KAAK,EAAE,OAAO,EAAE,IAAI;IAEpB,oBAAoB;IACpB,IAAI,EAAE,MAAM,EAAE,IAAI;IAClB,GAAG,EAAE,KAAK,EAAE,KAAK;IACjB,EAAE,EAAE,IAAI,EAAE,KAAK;IAEf,gCAAgC;IAChC,gBAAgB,EAAE,kBAAkB,EAAE,KAAK;IAC3C,YAAY,EAAE,cAAc,EAAE,KAAK;IACnC,SAAS,EAAE,WAAW,EAAE,IAAI;IAE5B,aAAa;IACb,MAAM,EAAE,QAAQ,EAAE,IAAI;IAEtB,uBAAuB;IACvB,EAAE,EAAE,IAAI,EAAE,KAAK;IACf,EAAE,EAAE,IAAI,EAAE,KAAK;IACf,EAAE,EAAE,IAAI,EAAE,IAAI;IACd,EAAE,EAAE,IAAI,EAAE,IAAI;IACd,EAAE,EAAE,IAAI,EAAE,KAAK;IACf,EAAE,EAAE,IAAI,EAAE,KAAK;IAEf,uBAAuB;IACvB,UAAU,EAAE,YAAY,EAAE,0BAA0B;IAEpD,kBAAkB;IAClB,QAAQ,EAAE,UAAU,EAAE,oBAAoB;IAE1C,uBAAuB;IACvB,QAAQ,EAAE,UAAU,EAAE,IAAI;IAC1B,IAAI,EAAE,MAAM,EAAE,IAAI;IAClB,KAAK,EAAE,OAAO,EAAE,IAAI;IACpB,IAAI,EAAE,MAAM,EAAE,IAAI;IAClB,KAAK,EAAE,OAAO,EAAE,IAAI;IACpB,OAAO,EAAE,SAAS,EAAE,IAAI;IAExB,aAAa;IACb,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,MAAM,EAAE,QAAQ,EAAE,IAAI;IACtB,QAAQ,EAAE,UAAU,EAAE,IAAI;IAC1B,QAAQ,EAAE,UAAU,EAAE,IAAI;IAE1B,6DAA6D;IAC7D,aAAa,EAAE,eAAe,EAAE,QAAQ;IACxC,aAAa,EAAE,eAAe,EAAE,QAAQ;IACxC,cAAc,EAAE,gBAAgB,EAAE,SAAS;IAC3C,gBAAgB,EAAE,kBAAkB,EAAE,WAAW;IACjD,eAAe,EAAE,iBAAiB,EAAE,YAAY;IAChD,YAAY,EAAE,cAAc,EAAE,SAAS;IACvC,UAAU,EAAE,YAAY,EAAE,OAAO;IAEjC,2BAA2B;IAC3B,OAAO,EAAE,SAAS,EAAE,KAAK;IAEzB,WAAW;IACX,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAEhB,cAAc;IACd,iBAAiB,EAAE,mBAAmB,EAAE,MAAM;IAE9C,UAAU;IACV,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;CACF,CAAC"}
|
package/dist/value-types.d.ts
CHANGED
|
@@ -1,21 +1,35 @@
|
|
|
1
|
+
import { VALID_TYPE_NAMES } from './constants.js';
|
|
1
2
|
/** Rill type names for type annotations */
|
|
2
|
-
export type RillTypeName =
|
|
3
|
+
export type RillTypeName = (typeof VALID_TYPE_NAMES)[number];
|
|
3
4
|
/**
|
|
4
|
-
* A reference to a type — either a static type name literal
|
|
5
|
-
* variable holding a type value at runtime.
|
|
5
|
+
* A reference to a type — either a static type name literal, a dynamic
|
|
6
|
+
* variable holding a type value at runtime, or a union of multiple type refs.
|
|
6
7
|
*
|
|
7
|
-
* - `static`: a known RillTypeName literal (e.g. `string`, `number`)
|
|
8
|
+
* - `static`: a known RillTypeName literal (e.g. `string`, `number`), optionally
|
|
9
|
+
* parameterized with `args` (e.g. `list(string)`, `dict(key: string)`)
|
|
8
10
|
* - `dynamic`: a variable name whose runtime value provides the type
|
|
11
|
+
* - `union`: two or more type refs (flattened at parse time; no nested unions)
|
|
12
|
+
* Members preserve source order. `members.length >= 2`.
|
|
9
13
|
*/
|
|
10
14
|
export type TypeRef = {
|
|
11
15
|
kind: 'static';
|
|
12
16
|
typeName: RillTypeName;
|
|
17
|
+
args?: TypeRefArg[];
|
|
13
18
|
} | {
|
|
14
19
|
kind: 'dynamic';
|
|
15
20
|
varName: string;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'union';
|
|
23
|
+
members: TypeRef[];
|
|
16
24
|
};
|
|
17
25
|
/**
|
|
18
|
-
*
|
|
26
|
+
* A single argument in a parameterized type reference.
|
|
27
|
+
*
|
|
28
|
+
* - Named form: `field: string` → `{ name: 'field', ref: { kind: 'static', typeName: 'string' } }`
|
|
29
|
+
* - Positional form: `string` → `{ ref: { kind: 'static', typeName: 'string' } }`
|
|
19
30
|
*/
|
|
20
|
-
export
|
|
31
|
+
export interface TypeRefArg {
|
|
32
|
+
name?: string;
|
|
33
|
+
ref: TypeRef;
|
|
34
|
+
}
|
|
21
35
|
//# sourceMappingURL=value-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-types.d.ts","sourceRoot":"","sources":["../src/value-types.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"value-types.d.ts","sourceRoot":"","sources":["../src/value-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CACd"}
|
package/dist/value-types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { VALID_TYPE_NAMES } from './constants.js';
|
|
2
2
|
//# sourceMappingURL=value-types.js.map
|
package/dist/value-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-types.js","sourceRoot":"","sources":["../src/value-types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"value-types.js","sourceRoot":"","sources":["../src/value-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rcrsr/rill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Scripting designed for machine-generated code",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Andre Bremer",
|
|
@@ -54,6 +54,9 @@
|
|
|
54
54
|
"bugs": {
|
|
55
55
|
"url": "https://github.com/rcrsr/rill/issues"
|
|
56
56
|
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=20.0.0"
|
|
59
|
+
},
|
|
57
60
|
"publishConfig": {
|
|
58
61
|
"access": "public"
|
|
59
62
|
},
|