@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.
Files changed (169) hide show
  1. package/dist/ast-nodes.d.ts +43 -10
  2. package/dist/ast-nodes.d.ts.map +1 -1
  3. package/dist/ast-unions.d.ts +1 -1
  4. package/dist/ast-unions.d.ts.map +1 -1
  5. package/dist/constants.d.ts +1 -1
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +1 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/error-registry.d.ts.map +1 -1
  10. package/dist/error-registry.js +273 -6
  11. package/dist/error-registry.js.map +1 -1
  12. package/dist/ext/crypto/index.d.ts.map +1 -1
  13. package/dist/ext/crypto/index.js +23 -12
  14. package/dist/ext/crypto/index.js.map +1 -1
  15. package/dist/ext/exec/index.d.ts.map +1 -1
  16. package/dist/ext/exec/index.js +10 -11
  17. package/dist/ext/exec/index.js.map +1 -1
  18. package/dist/ext/fetch/index.d.ts.map +1 -1
  19. package/dist/ext/fetch/index.js +15 -15
  20. package/dist/ext/fetch/index.js.map +1 -1
  21. package/dist/ext/fs/index.d.ts.map +1 -1
  22. package/dist/ext/fs/index.js +139 -47
  23. package/dist/ext/fs/index.js.map +1 -1
  24. package/dist/ext/kv/index.d.ts.map +1 -1
  25. package/dist/ext/kv/index.js +130 -31
  26. package/dist/ext/kv/index.js.map +1 -1
  27. package/dist/generated/introspection-data.d.ts +1 -1
  28. package/dist/generated/introspection-data.d.ts.map +1 -1
  29. package/dist/generated/introspection-data.js +109 -8
  30. package/dist/generated/introspection-data.js.map +1 -1
  31. package/dist/generated/version-data.d.ts +1 -1
  32. package/dist/generated/version-data.d.ts.map +1 -1
  33. package/dist/generated/version-data.js +2 -2
  34. package/dist/generated/version-data.js.map +1 -1
  35. package/dist/highlight-map.d.ts.map +1 -1
  36. package/dist/highlight-map.js +1 -0
  37. package/dist/highlight-map.js.map +1 -1
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/lexer/readers.d.ts.map +1 -1
  43. package/dist/lexer/readers.js +1 -0
  44. package/dist/lexer/readers.js.map +1 -1
  45. package/dist/parser/index.d.ts +3 -1
  46. package/dist/parser/index.d.ts.map +1 -1
  47. package/dist/parser/index.js +4 -1
  48. package/dist/parser/index.js.map +1 -1
  49. package/dist/parser/parser-control.d.ts +1 -1
  50. package/dist/parser/parser-control.d.ts.map +1 -1
  51. package/dist/parser/parser-control.js +2 -2
  52. package/dist/parser/parser-control.js.map +1 -1
  53. package/dist/parser/parser-expr.d.ts +2 -1
  54. package/dist/parser/parser-expr.d.ts.map +1 -1
  55. package/dist/parser/parser-expr.js +15 -2
  56. package/dist/parser/parser-expr.js.map +1 -1
  57. package/dist/parser/parser-extract.d.ts.map +1 -1
  58. package/dist/parser/parser-extract.js +10 -9
  59. package/dist/parser/parser-extract.js.map +1 -1
  60. package/dist/parser/parser-functions.js +11 -6
  61. package/dist/parser/parser-functions.js.map +1 -1
  62. package/dist/parser/parser-literals.d.ts +1 -1
  63. package/dist/parser/parser-literals.d.ts.map +1 -1
  64. package/dist/parser/parser-literals.js +61 -7
  65. package/dist/parser/parser-literals.js.map +1 -1
  66. package/dist/parser/parser-types.d.ts +22 -6
  67. package/dist/parser/parser-types.d.ts.map +1 -1
  68. package/dist/parser/parser-types.js +126 -9
  69. package/dist/parser/parser-types.js.map +1 -1
  70. package/dist/parser/parser-use.d.ts +11 -0
  71. package/dist/parser/parser-use.d.ts.map +1 -0
  72. package/dist/parser/parser-use.js +68 -0
  73. package/dist/parser/parser-use.js.map +1 -0
  74. package/dist/parser/parser-variables.d.ts.map +1 -1
  75. package/dist/parser/parser-variables.js +5 -4
  76. package/dist/parser/parser-variables.js.map +1 -1
  77. package/dist/runtime/core/callable.d.ts +59 -70
  78. package/dist/runtime/core/callable.d.ts.map +1 -1
  79. package/dist/runtime/core/callable.js +37 -93
  80. package/dist/runtime/core/callable.js.map +1 -1
  81. package/dist/runtime/core/context.d.ts.map +1 -1
  82. package/dist/runtime/core/context.js +104 -33
  83. package/dist/runtime/core/context.js.map +1 -1
  84. package/dist/runtime/core/equals.d.ts.map +1 -1
  85. package/dist/runtime/core/equals.js +59 -17
  86. package/dist/runtime/core/equals.js.map +1 -1
  87. package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
  88. package/dist/runtime/core/eval/evaluator.js +2 -1
  89. package/dist/runtime/core/eval/evaluator.js.map +1 -1
  90. package/dist/runtime/core/eval/index.d.ts +2 -2
  91. package/dist/runtime/core/eval/index.d.ts.map +1 -1
  92. package/dist/runtime/core/eval/index.js +5 -0
  93. package/dist/runtime/core/eval/index.js.map +1 -1
  94. package/dist/runtime/core/eval/mixins/closures.d.ts +3 -5
  95. package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
  96. package/dist/runtime/core/eval/mixins/closures.js +76 -40
  97. package/dist/runtime/core/eval/mixins/closures.js.map +1 -1
  98. package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -1
  99. package/dist/runtime/core/eval/mixins/collections.js +4 -2
  100. package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
  101. package/dist/runtime/core/eval/mixins/conversion.d.ts +9 -9
  102. package/dist/runtime/core/eval/mixins/conversion.d.ts.map +1 -1
  103. package/dist/runtime/core/eval/mixins/conversion.js +51 -21
  104. package/dist/runtime/core/eval/mixins/conversion.js.map +1 -1
  105. package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -1
  106. package/dist/runtime/core/eval/mixins/core.js +8 -2
  107. package/dist/runtime/core/eval/mixins/core.js.map +1 -1
  108. package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -1
  109. package/dist/runtime/core/eval/mixins/extraction.js +20 -8
  110. package/dist/runtime/core/eval/mixins/extraction.js.map +1 -1
  111. package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
  112. package/dist/runtime/core/eval/mixins/literals.js +32 -15
  113. package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
  114. package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -1
  115. package/dist/runtime/core/eval/mixins/types.js +166 -21
  116. package/dist/runtime/core/eval/mixins/types.js.map +1 -1
  117. package/dist/runtime/core/eval/mixins/use.d.ts +25 -0
  118. package/dist/runtime/core/eval/mixins/use.d.ts.map +1 -0
  119. package/dist/runtime/core/eval/mixins/use.js +152 -0
  120. package/dist/runtime/core/eval/mixins/use.js.map +1 -0
  121. package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
  122. package/dist/runtime/core/eval/mixins/variables.js +67 -32
  123. package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
  124. package/dist/runtime/core/execute.d.ts.map +1 -1
  125. package/dist/runtime/core/execute.js +11 -1
  126. package/dist/runtime/core/execute.js.map +1 -1
  127. package/dist/runtime/core/field-descriptor.d.ts +6 -6
  128. package/dist/runtime/core/field-descriptor.d.ts.map +1 -1
  129. package/dist/runtime/core/field-descriptor.js +2 -2
  130. package/dist/runtime/core/field-descriptor.js.map +1 -1
  131. package/dist/runtime/core/introspection.d.ts +16 -0
  132. package/dist/runtime/core/introspection.d.ts.map +1 -1
  133. package/dist/runtime/core/introspection.js +102 -7
  134. package/dist/runtime/core/introspection.js.map +1 -1
  135. package/dist/runtime/core/resolvers.d.ts +39 -0
  136. package/dist/runtime/core/resolvers.d.ts.map +1 -0
  137. package/dist/runtime/core/resolvers.js +89 -0
  138. package/dist/runtime/core/resolvers.js.map +1 -0
  139. package/dist/runtime/core/types.d.ts +54 -5
  140. package/dist/runtime/core/types.d.ts.map +1 -1
  141. package/dist/runtime/core/types.js.map +1 -1
  142. package/dist/runtime/core/values.d.ts +43 -29
  143. package/dist/runtime/core/values.d.ts.map +1 -1
  144. package/dist/runtime/core/values.js +153 -68
  145. package/dist/runtime/core/values.js.map +1 -1
  146. package/dist/runtime/ext/builtins.d.ts +3 -4
  147. package/dist/runtime/ext/builtins.d.ts.map +1 -1
  148. package/dist/runtime/ext/builtins.js +621 -444
  149. package/dist/runtime/ext/builtins.js.map +1 -1
  150. package/dist/runtime/ext/extensions.d.ts +43 -43
  151. package/dist/runtime/ext/extensions.d.ts.map +1 -1
  152. package/dist/runtime/ext/extensions.js.map +1 -1
  153. package/dist/runtime/index.d.ts +8 -5
  154. package/dist/runtime/index.d.ts.map +1 -1
  155. package/dist/runtime/index.js +6 -2
  156. package/dist/runtime/index.js.map +1 -1
  157. package/dist/signature-parser.d.ts +43 -0
  158. package/dist/signature-parser.d.ts.map +1 -0
  159. package/dist/signature-parser.js +289 -0
  160. package/dist/signature-parser.js.map +1 -0
  161. package/dist/token-types.d.ts +1 -0
  162. package/dist/token-types.d.ts.map +1 -1
  163. package/dist/token-types.js +1 -0
  164. package/dist/token-types.js.map +1 -1
  165. package/dist/value-types.d.ts +20 -6
  166. package/dist/value-types.d.ts.map +1 -1
  167. package/dist/value-types.js +1 -1
  168. package/dist/value-types.js.map +1 -1
  169. 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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"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGd,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"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"token-types.js","sourceRoot":"","sources":["../src/token-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-types.js","sourceRoot":"","sources":["../src/token-types.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,35 @@
1
+ import { VALID_TYPE_NAMES } from './constants.js';
1
2
  /** Rill type names for type annotations */
2
- export type RillTypeName = 'string' | 'number' | 'bool' | 'closure' | 'list' | 'dict' | 'tuple' | 'ordered' | 'vector' | 'any' | 'type';
3
+ export type RillTypeName = (typeof VALID_TYPE_NAMES)[number];
3
4
  /**
4
- * A reference to a type — either a static type name literal or a dynamic
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
- * Return type declaration for host-provided and script functions.
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 type RillFunctionReturnType = RillTypeName;
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,GACpB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,QAAQ,GACR,KAAK,GACL,MAAM,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC"}
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"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ import { VALID_TYPE_NAMES } from './constants.js';
2
2
  //# sourceMappingURL=value-types.js.map
@@ -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.9.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
  },