@rcrsr/rill 0.1.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/LICENSE +21 -0
- package/README.md +187 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +69 -0
- package/dist/cli.js.map +1 -0
- package/dist/demo.d.ts +6 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +121 -0
- package/dist/demo.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer/errors.d.ts +9 -0
- package/dist/lexer/errors.d.ts.map +1 -0
- package/dist/lexer/errors.js +12 -0
- package/dist/lexer/errors.js.map +1 -0
- package/dist/lexer/helpers.d.ts +14 -0
- package/dist/lexer/helpers.d.ts.map +1 -0
- package/dist/lexer/helpers.js +30 -0
- package/dist/lexer/helpers.js.map +1 -0
- package/dist/lexer/index.d.ts +8 -0
- package/dist/lexer/index.d.ts.map +1 -0
- package/dist/lexer/index.js +8 -0
- package/dist/lexer/index.js.map +1 -0
- package/dist/lexer/operators.d.ts +11 -0
- package/dist/lexer/operators.d.ts.map +1 -0
- package/dist/lexer/operators.js +58 -0
- package/dist/lexer/operators.js.map +1 -0
- package/dist/lexer/readers.d.ts +12 -0
- package/dist/lexer/readers.d.ts.map +1 -0
- package/dist/lexer/readers.js +144 -0
- package/dist/lexer/readers.js.map +1 -0
- package/dist/lexer/state.d.ts +18 -0
- package/dist/lexer/state.d.ts.map +1 -0
- package/dist/lexer/state.js +37 -0
- package/dist/lexer/state.js.map +1 -0
- package/dist/lexer/tokenizer.d.ts +9 -0
- package/dist/lexer/tokenizer.d.ts.map +1 -0
- package/dist/lexer/tokenizer.js +100 -0
- package/dist/lexer/tokenizer.js.map +1 -0
- package/dist/lexer.d.ts +19 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +344 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser/arithmetic.d.ts +16 -0
- package/dist/parser/arithmetic.d.ts.map +1 -0
- package/dist/parser/arithmetic.js +128 -0
- package/dist/parser/arithmetic.js.map +1 -0
- package/dist/parser/boolean.d.ts +15 -0
- package/dist/parser/boolean.d.ts.map +1 -0
- package/dist/parser/boolean.js +20 -0
- package/dist/parser/boolean.js.map +1 -0
- package/dist/parser/control-flow.d.ts +56 -0
- package/dist/parser/control-flow.d.ts.map +1 -0
- package/dist/parser/control-flow.js +167 -0
- package/dist/parser/control-flow.js.map +1 -0
- package/dist/parser/expressions.d.ts +23 -0
- package/dist/parser/expressions.d.ts.map +1 -0
- package/dist/parser/expressions.js +950 -0
- package/dist/parser/expressions.js.map +1 -0
- package/dist/parser/extraction.d.ts +48 -0
- package/dist/parser/extraction.d.ts.map +1 -0
- package/dist/parser/extraction.js +279 -0
- package/dist/parser/extraction.js.map +1 -0
- package/dist/parser/functions.d.ts +20 -0
- package/dist/parser/functions.d.ts.map +1 -0
- package/dist/parser/functions.js +96 -0
- package/dist/parser/functions.js.map +1 -0
- package/dist/parser/helpers.d.ts +94 -0
- package/dist/parser/helpers.d.ts.map +1 -0
- package/dist/parser/helpers.js +225 -0
- package/dist/parser/helpers.js.map +1 -0
- package/dist/parser/index.d.ts +49 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +73 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/literals.d.ts +37 -0
- package/dist/parser/literals.d.ts.map +1 -0
- package/dist/parser/literals.js +373 -0
- package/dist/parser/literals.js.map +1 -0
- package/dist/parser/parser-collect.d.ts +16 -0
- package/dist/parser/parser-collect.d.ts.map +1 -0
- package/dist/parser/parser-collect.js +125 -0
- package/dist/parser/parser-collect.js.map +1 -0
- package/dist/parser/parser-control.d.ts +20 -0
- package/dist/parser/parser-control.d.ts.map +1 -0
- package/dist/parser/parser-control.js +120 -0
- package/dist/parser/parser-control.js.map +1 -0
- package/dist/parser/parser-expr.d.ts +37 -0
- package/dist/parser/parser-expr.d.ts.map +1 -0
- package/dist/parser/parser-expr.js +639 -0
- package/dist/parser/parser-expr.js.map +1 -0
- package/dist/parser/parser-extract.d.ts +17 -0
- package/dist/parser/parser-extract.d.ts.map +1 -0
- package/dist/parser/parser-extract.js +222 -0
- package/dist/parser/parser-extract.js.map +1 -0
- package/dist/parser/parser-functions.d.ts +21 -0
- package/dist/parser/parser-functions.d.ts.map +1 -0
- package/dist/parser/parser-functions.js +155 -0
- package/dist/parser/parser-functions.js.map +1 -0
- package/dist/parser/parser-literals.d.ts +22 -0
- package/dist/parser/parser-literals.d.ts.map +1 -0
- package/dist/parser/parser-literals.js +288 -0
- package/dist/parser/parser-literals.js.map +1 -0
- package/dist/parser/parser-script.d.ts +21 -0
- package/dist/parser/parser-script.d.ts.map +1 -0
- package/dist/parser/parser-script.js +174 -0
- package/dist/parser/parser-script.js.map +1 -0
- package/dist/parser/parser-variables.d.ts +20 -0
- package/dist/parser/parser-variables.d.ts.map +1 -0
- package/dist/parser/parser-variables.js +146 -0
- package/dist/parser/parser-variables.js.map +1 -0
- package/dist/parser/parser.d.ts +49 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +54 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/script.d.ts +14 -0
- package/dist/parser/script.d.ts.map +1 -0
- package/dist/parser/script.js +196 -0
- package/dist/parser/script.js.map +1 -0
- package/dist/parser/state.d.ts +40 -0
- package/dist/parser/state.d.ts.map +1 -0
- package/dist/parser/state.js +129 -0
- package/dist/parser/state.js.map +1 -0
- package/dist/parser/variables.d.ts +10 -0
- package/dist/parser/variables.d.ts.map +1 -0
- package/dist/parser/variables.js +215 -0
- package/dist/parser/variables.js.map +1 -0
- package/dist/runtime/ast-equals.d.ts +13 -0
- package/dist/runtime/ast-equals.d.ts.map +1 -0
- package/dist/runtime/ast-equals.js +447 -0
- package/dist/runtime/ast-equals.js.map +1 -0
- package/dist/runtime/builtins.d.ts +13 -0
- package/dist/runtime/builtins.d.ts.map +1 -0
- package/dist/runtime/builtins.js +180 -0
- package/dist/runtime/builtins.js.map +1 -0
- package/dist/runtime/callable.d.ts +88 -0
- package/dist/runtime/callable.d.ts.map +1 -0
- package/dist/runtime/callable.js +98 -0
- package/dist/runtime/callable.js.map +1 -0
- package/dist/runtime/context.d.ts +13 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +73 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/core/callable.d.ts +171 -0
- package/dist/runtime/core/callable.d.ts.map +1 -0
- package/dist/runtime/core/callable.js +246 -0
- package/dist/runtime/core/callable.js.map +1 -0
- package/dist/runtime/core/context.d.ts +29 -0
- package/dist/runtime/core/context.d.ts.map +1 -0
- package/dist/runtime/core/context.js +154 -0
- package/dist/runtime/core/context.js.map +1 -0
- package/dist/runtime/core/equals.d.ts +9 -0
- package/dist/runtime/core/equals.d.ts.map +1 -0
- package/dist/runtime/core/equals.js +381 -0
- package/dist/runtime/core/equals.js.map +1 -0
- package/dist/runtime/core/eval/base.d.ts +65 -0
- package/dist/runtime/core/eval/base.d.ts.map +1 -0
- package/dist/runtime/core/eval/base.js +112 -0
- package/dist/runtime/core/eval/base.js.map +1 -0
- package/dist/runtime/core/eval/evaluator.d.ts +47 -0
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -0
- package/dist/runtime/core/eval/evaluator.js +73 -0
- package/dist/runtime/core/eval/evaluator.js.map +1 -0
- package/dist/runtime/core/eval/index.d.ts +57 -0
- package/dist/runtime/core/eval/index.d.ts.map +1 -0
- package/dist/runtime/core/eval/index.js +95 -0
- package/dist/runtime/core/eval/index.js.map +1 -0
- package/dist/runtime/core/eval/mixins/annotations.d.ts +19 -0
- package/dist/runtime/core/eval/mixins/annotations.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/annotations.js +146 -0
- package/dist/runtime/core/eval/mixins/annotations.js.map +1 -0
- package/dist/runtime/core/eval/mixins/closures.d.ts +49 -0
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/closures.js +479 -0
- package/dist/runtime/core/eval/mixins/closures.js.map +1 -0
- package/dist/runtime/core/eval/mixins/collections.d.ts +24 -0
- package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/collections.js +466 -0
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -0
- package/dist/runtime/core/eval/mixins/control-flow.d.ts +27 -0
- package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/control-flow.js +369 -0
- package/dist/runtime/core/eval/mixins/control-flow.js.map +1 -0
- package/dist/runtime/core/eval/mixins/core.d.ts +24 -0
- package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/core.js +335 -0
- package/dist/runtime/core/eval/mixins/core.js.map +1 -0
- package/dist/runtime/core/eval/mixins/expressions.d.ts +19 -0
- package/dist/runtime/core/eval/mixins/expressions.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/expressions.js +202 -0
- package/dist/runtime/core/eval/mixins/expressions.js.map +1 -0
- package/dist/runtime/core/eval/mixins/extraction.d.ts +10 -0
- package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/extraction.js +250 -0
- package/dist/runtime/core/eval/mixins/extraction.js.map +1 -0
- package/dist/runtime/core/eval/mixins/literals.d.ts +23 -0
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/literals.js +180 -0
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -0
- package/dist/runtime/core/eval/mixins/types.d.ts +20 -0
- package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/types.js +109 -0
- package/dist/runtime/core/eval/mixins/types.js.map +1 -0
- package/dist/runtime/core/eval/mixins/variables.d.ts +34 -0
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/variables.js +247 -0
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -0
- package/dist/runtime/core/eval/types.d.ts +41 -0
- package/dist/runtime/core/eval/types.d.ts.map +1 -0
- package/dist/runtime/core/eval/types.js +10 -0
- package/dist/runtime/core/eval/types.js.map +1 -0
- package/dist/runtime/core/evaluate.d.ts +42 -0
- package/dist/runtime/core/evaluate.d.ts.map +1 -0
- package/dist/runtime/core/evaluate.debug.js +1251 -0
- package/dist/runtime/core/evaluate.js +1913 -0
- package/dist/runtime/core/evaluate.js.map +1 -0
- package/dist/runtime/core/execute.d.ts +26 -0
- package/dist/runtime/core/execute.d.ts.map +1 -0
- package/dist/runtime/core/execute.js +177 -0
- package/dist/runtime/core/execute.js.map +1 -0
- package/dist/runtime/core/signals.d.ts +19 -0
- package/dist/runtime/core/signals.d.ts.map +1 -0
- package/dist/runtime/core/signals.js +26 -0
- package/dist/runtime/core/signals.js.map +1 -0
- package/dist/runtime/core/types.d.ts +177 -0
- package/dist/runtime/core/types.d.ts.map +1 -0
- package/dist/runtime/core/types.js +50 -0
- package/dist/runtime/core/types.js.map +1 -0
- package/dist/runtime/core/values.d.ts +66 -0
- package/dist/runtime/core/values.d.ts.map +1 -0
- package/dist/runtime/core/values.js +240 -0
- package/dist/runtime/core/values.js.map +1 -0
- package/dist/runtime/evaluate.d.ts +32 -0
- package/dist/runtime/evaluate.d.ts.map +1 -0
- package/dist/runtime/evaluate.js +1111 -0
- package/dist/runtime/evaluate.js.map +1 -0
- package/dist/runtime/execute.d.ts +26 -0
- package/dist/runtime/execute.d.ts.map +1 -0
- package/dist/runtime/execute.js +121 -0
- package/dist/runtime/execute.js.map +1 -0
- package/dist/runtime/ext/builtins.d.ts +16 -0
- package/dist/runtime/ext/builtins.d.ts.map +1 -0
- package/dist/runtime/ext/builtins.js +528 -0
- package/dist/runtime/ext/builtins.js.map +1 -0
- package/dist/runtime/ext/content-parser.d.ts +83 -0
- package/dist/runtime/ext/content-parser.d.ts.map +1 -0
- package/dist/runtime/ext/content-parser.js +536 -0
- package/dist/runtime/ext/content-parser.js.map +1 -0
- package/dist/runtime/index.d.ts +28 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +34 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/signals.d.ts +19 -0
- package/dist/runtime/signals.d.ts.map +1 -0
- package/dist/runtime/signals.js +26 -0
- package/dist/runtime/signals.js.map +1 -0
- package/dist/runtime/types.d.ts +169 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +50 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/values.d.ts +50 -0
- package/dist/runtime/values.d.ts.map +1 -0
- package/dist/runtime/values.js +209 -0
- package/dist/runtime/values.js.map +1 -0
- package/dist/runtime.d.ts +254 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +2014 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +752 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +189 -0
- package/dist/types.js.map +1 -0
- package/docs/00_INDEX.md +65 -0
- package/docs/01_guide.md +390 -0
- package/docs/02_types.md +399 -0
- package/docs/03_variables.md +314 -0
- package/docs/04_operators.md +551 -0
- package/docs/05_control-flow.md +350 -0
- package/docs/06_closures.md +353 -0
- package/docs/07_collections.md +686 -0
- package/docs/08_iterators.md +330 -0
- package/docs/09_strings.md +205 -0
- package/docs/10_parsing.md +366 -0
- package/docs/11_reference.md +350 -0
- package/docs/12_examples.md +771 -0
- package/docs/13_modules.md +519 -0
- package/docs/14_host-integration.md +826 -0
- package/docs/15_grammar.ebnf +693 -0
- package/docs/16_conventions.md +696 -0
- package/docs/99_llm-reference.txt +300 -0
- package/docs/assets/logo.png +0 -0
- package/package.json +70 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Types
|
|
3
|
+
*
|
|
4
|
+
* Public types for runtime configuration and execution results.
|
|
5
|
+
* These types are the primary interface for host applications.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Bind callables in a dict to their containing dict.
|
|
9
|
+
* This sets boundDict on each callable so they can access their container.
|
|
10
|
+
*/
|
|
11
|
+
export function bindDictCallables(value) {
|
|
12
|
+
if (typeof value !== 'object' ||
|
|
13
|
+
value === null ||
|
|
14
|
+
Array.isArray(value) ||
|
|
15
|
+
'__type' in value ||
|
|
16
|
+
'__rill_args' in value) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
const dict = value;
|
|
20
|
+
let hasBoundCallables = false;
|
|
21
|
+
// Check if any values are callables that need binding
|
|
22
|
+
for (const v of Object.values(dict)) {
|
|
23
|
+
if (typeof v === 'object' &&
|
|
24
|
+
v !== null &&
|
|
25
|
+
'__type' in v &&
|
|
26
|
+
v.__type === 'callable' &&
|
|
27
|
+
!('boundDict' in v && v['boundDict'])) {
|
|
28
|
+
hasBoundCallables = true;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!hasBoundCallables)
|
|
33
|
+
return value;
|
|
34
|
+
// Create a new dict with bound callables
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const [key, v] of Object.entries(dict)) {
|
|
37
|
+
if (typeof v === 'object' &&
|
|
38
|
+
v !== null &&
|
|
39
|
+
'__type' in v &&
|
|
40
|
+
v.__type === 'callable' &&
|
|
41
|
+
!('boundDict' in v && v['boundDict'])) {
|
|
42
|
+
result[key] = { ...v, boundDict: result };
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
result[key] = v;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2LH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,QAAQ,IAAI,KAAK;QACjB,aAAa,IAAI,KAAK,EACtB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,KAAkC,CAAC;IAChD,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,sDAAsD;IACtD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IACE,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACV,QAAQ,IAAI,CAAC;YACb,CAAC,CAAC,MAAM,KAAK,UAAU;YACvB,CAAC,CAAC,WAAW,IAAI,CAAC,IAAK,CAA6B,CAAC,WAAW,CAAC,CAAC,EAClE,CAAC;YACD,iBAAiB,GAAG,IAAI,CAAC;YACzB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB;QAAE,OAAO,KAAK,CAAC;IAErC,yCAAyC;IACzC,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IACE,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACV,QAAQ,IAAI,CAAC;YACb,CAAC,CAAC,MAAM,KAAK,UAAU;YACvB,CAAC,CAAC,WAAW,IAAI,CAAC,IAAK,CAA6B,CAAC,WAAW,CAAC,CAAC,EAClE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAe,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rill Value Types and Utilities
|
|
3
|
+
*
|
|
4
|
+
* Core value types that flow through Rill programs.
|
|
5
|
+
* Public API for host applications.
|
|
6
|
+
*/
|
|
7
|
+
import type { RillTypeName } from '../../types.js';
|
|
8
|
+
interface CallableMarker {
|
|
9
|
+
readonly __type: 'callable';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Tuple type - represents unpacked arguments for closure invocation.
|
|
13
|
+
* Created by the * (spread) operator from lists or dicts.
|
|
14
|
+
* Entries are keyed by position (number) or name (string).
|
|
15
|
+
*
|
|
16
|
+
* Note: In Rill, "tuple" refers to fixed-size argument packing (like function signatures),
|
|
17
|
+
* while "list" refers to dynamic ordered collections ([1, 2, 3]).
|
|
18
|
+
*/
|
|
19
|
+
export interface RillTuple {
|
|
20
|
+
readonly __rill_tuple: true;
|
|
21
|
+
readonly entries: Map<string | number, RillValue>;
|
|
22
|
+
}
|
|
23
|
+
/** Any value that can flow through Rill */
|
|
24
|
+
export type RillValue = string | number | boolean | null | RillValue[] | {
|
|
25
|
+
[key: string]: RillValue;
|
|
26
|
+
} | CallableMarker | RillTuple;
|
|
27
|
+
/** Type guard for RillTuple (spread args) */
|
|
28
|
+
export declare function isTuple(value: RillValue): value is RillTuple;
|
|
29
|
+
/** Create tuple from a list (positional) */
|
|
30
|
+
export declare function createTupleFromList(list: RillValue[]): RillTuple;
|
|
31
|
+
/** Create tuple from a dict (named) */
|
|
32
|
+
export declare function createTupleFromDict(dict: Record<string, RillValue>): RillTuple;
|
|
33
|
+
/** Infer the Rill type from a runtime value */
|
|
34
|
+
export declare function inferType(value: RillValue): RillTypeName;
|
|
35
|
+
/**
|
|
36
|
+
* Check if a value is of the expected type.
|
|
37
|
+
* Returns true if the value matches the expected type, false otherwise.
|
|
38
|
+
*/
|
|
39
|
+
export declare function checkType(value: RillValue, expected: RillTypeName): boolean;
|
|
40
|
+
/** Check if a value is truthy in Rill semantics */
|
|
41
|
+
export declare function isTruthy(value: RillValue): boolean;
|
|
42
|
+
/** Check if a value is empty (inverse of truthy) */
|
|
43
|
+
export declare function isEmpty(value: RillValue): boolean;
|
|
44
|
+
/** Format a value for display */
|
|
45
|
+
export declare function formatValue(value: RillValue): string;
|
|
46
|
+
/**
|
|
47
|
+
* Deep structural equality for all Rill values.
|
|
48
|
+
* - Primitives: value equality
|
|
49
|
+
* - Tuples: length + recursive element equality
|
|
50
|
+
* - Dicts: same keys + recursive value equality (order-independent)
|
|
51
|
+
*/
|
|
52
|
+
export declare function deepEquals(a: RillValue, b: RillValue): boolean;
|
|
53
|
+
/** Reserved dict method names that cannot be overridden */
|
|
54
|
+
export declare const RESERVED_DICT_METHODS: readonly ["keys", "values", "entries"];
|
|
55
|
+
/** Check if a key name is reserved */
|
|
56
|
+
export declare function isReservedMethod(name: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Check if a value is a Rill iterator (lazy sequence).
|
|
59
|
+
* An iterator is a dict with:
|
|
60
|
+
* - done: boolean - whether iteration is complete
|
|
61
|
+
* - next: callable - function to get next iterator
|
|
62
|
+
* - value: any (only required when not done) - current element
|
|
63
|
+
*/
|
|
64
|
+
export declare function isRillIterator(value: RillValue): boolean;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/values.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUnD,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;CACnD;AAED,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC5B,cAAc,GACd,SAAS,CAAC;AAEd,6CAA6C;AAC7C,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,SAAS,CAO5D;AAED,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,SAAS,CAShE;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAC9B,SAAS,CAMX;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAgBxD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE3E;AAED,mDAAmD;AACnD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAYlD;AAED,oDAAoD;AACpD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEjD;AAED,iCAAiC;AACjC,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA0BpD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CA8E9D;AAED,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,wCAAyC,CAAC;AAE5E,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAQxD"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rill Value Types and Utilities
|
|
3
|
+
*
|
|
4
|
+
* Core value types that flow through Rill programs.
|
|
5
|
+
* Public API for host applications.
|
|
6
|
+
*/
|
|
7
|
+
import { callableEquals, isCallable, isDict, isScriptCallable, } from './callable.js';
|
|
8
|
+
/** Type guard for RillTuple (spread args) */
|
|
9
|
+
export function isTuple(value) {
|
|
10
|
+
return (typeof value === 'object' &&
|
|
11
|
+
value !== null &&
|
|
12
|
+
'__rill_tuple' in value &&
|
|
13
|
+
value.__rill_tuple === true);
|
|
14
|
+
}
|
|
15
|
+
/** Create tuple from a list (positional) */
|
|
16
|
+
export function createTupleFromList(list) {
|
|
17
|
+
const entries = new Map();
|
|
18
|
+
for (let i = 0; i < list.length; i++) {
|
|
19
|
+
const val = list[i];
|
|
20
|
+
if (val !== undefined) {
|
|
21
|
+
entries.set(i, val);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return { __rill_tuple: true, entries };
|
|
25
|
+
}
|
|
26
|
+
/** Create tuple from a dict (named) */
|
|
27
|
+
export function createTupleFromDict(dict) {
|
|
28
|
+
const entries = new Map();
|
|
29
|
+
for (const [key, value] of Object.entries(dict)) {
|
|
30
|
+
entries.set(key, value);
|
|
31
|
+
}
|
|
32
|
+
return { __rill_tuple: true, entries };
|
|
33
|
+
}
|
|
34
|
+
/** Infer the Rill type from a runtime value */
|
|
35
|
+
export function inferType(value) {
|
|
36
|
+
if (value === null)
|
|
37
|
+
return 'string'; // null treated as empty string
|
|
38
|
+
if (typeof value === 'string')
|
|
39
|
+
return 'string';
|
|
40
|
+
if (typeof value === 'number')
|
|
41
|
+
return 'number';
|
|
42
|
+
if (typeof value === 'boolean')
|
|
43
|
+
return 'bool';
|
|
44
|
+
if (isTuple(value))
|
|
45
|
+
return 'tuple';
|
|
46
|
+
if (Array.isArray(value))
|
|
47
|
+
return 'list';
|
|
48
|
+
if (typeof value === 'object' &&
|
|
49
|
+
'__type' in value &&
|
|
50
|
+
value.__type === 'callable') {
|
|
51
|
+
return 'closure';
|
|
52
|
+
}
|
|
53
|
+
if (typeof value === 'object')
|
|
54
|
+
return 'dict';
|
|
55
|
+
return 'string'; // fallback
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if a value is of the expected type.
|
|
59
|
+
* Returns true if the value matches the expected type, false otherwise.
|
|
60
|
+
*/
|
|
61
|
+
export function checkType(value, expected) {
|
|
62
|
+
return inferType(value) === expected;
|
|
63
|
+
}
|
|
64
|
+
/** Check if a value is truthy in Rill semantics */
|
|
65
|
+
export function isTruthy(value) {
|
|
66
|
+
if (value === null)
|
|
67
|
+
return false;
|
|
68
|
+
if (typeof value === 'boolean')
|
|
69
|
+
return value;
|
|
70
|
+
if (typeof value === 'number')
|
|
71
|
+
return value !== 0;
|
|
72
|
+
if (typeof value === 'string')
|
|
73
|
+
return value.length > 0;
|
|
74
|
+
if (isTuple(value))
|
|
75
|
+
return value.entries.size > 0;
|
|
76
|
+
if (Array.isArray(value))
|
|
77
|
+
return value.length > 0;
|
|
78
|
+
if (typeof value === 'object') {
|
|
79
|
+
if ('__type' in value && value.__type === 'callable')
|
|
80
|
+
return true;
|
|
81
|
+
return Object.keys(value).length > 0;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/** Check if a value is empty (inverse of truthy) */
|
|
86
|
+
export function isEmpty(value) {
|
|
87
|
+
return !isTruthy(value);
|
|
88
|
+
}
|
|
89
|
+
/** Format a value for display */
|
|
90
|
+
export function formatValue(value) {
|
|
91
|
+
if (value === null)
|
|
92
|
+
return '';
|
|
93
|
+
if (typeof value === 'string')
|
|
94
|
+
return value;
|
|
95
|
+
if (typeof value === 'number')
|
|
96
|
+
return String(value);
|
|
97
|
+
if (typeof value === 'boolean')
|
|
98
|
+
return value ? 'true' : 'false';
|
|
99
|
+
if (isTuple(value)) {
|
|
100
|
+
const parts = [];
|
|
101
|
+
for (const [key, val] of value.entries) {
|
|
102
|
+
if (typeof key === 'number') {
|
|
103
|
+
parts.push(formatValue(val));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
parts.push(`${key}: ${formatValue(val)}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return `*[${parts.join(', ')}]`;
|
|
110
|
+
}
|
|
111
|
+
if (typeof value === 'object' &&
|
|
112
|
+
'__type' in value &&
|
|
113
|
+
value.__type === 'callable') {
|
|
114
|
+
// Basic callable formatting - full formatting in callable.ts
|
|
115
|
+
return '(...) { ... }';
|
|
116
|
+
}
|
|
117
|
+
if (Array.isArray(value))
|
|
118
|
+
return JSON.stringify(value);
|
|
119
|
+
return JSON.stringify(value);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Deep structural equality for all Rill values.
|
|
123
|
+
* - Primitives: value equality
|
|
124
|
+
* - Tuples: length + recursive element equality
|
|
125
|
+
* - Dicts: same keys + recursive value equality (order-independent)
|
|
126
|
+
*/
|
|
127
|
+
export function deepEquals(a, b) {
|
|
128
|
+
// Handle primitives and null
|
|
129
|
+
if (a === b)
|
|
130
|
+
return true;
|
|
131
|
+
if (a === null || b === null)
|
|
132
|
+
return false;
|
|
133
|
+
if (typeof a !== typeof b)
|
|
134
|
+
return false;
|
|
135
|
+
// Primitives (string, number, boolean) - covered by === above
|
|
136
|
+
if (typeof a !== 'object' || typeof b !== 'object')
|
|
137
|
+
return false;
|
|
138
|
+
// Both are non-null objects at this point
|
|
139
|
+
const aObj = a;
|
|
140
|
+
const bObj = b;
|
|
141
|
+
// Check for tuples (spread args)
|
|
142
|
+
const aIsTuple = isTuple(a);
|
|
143
|
+
const bIsTuple = isTuple(b);
|
|
144
|
+
if (aIsTuple !== bIsTuple)
|
|
145
|
+
return false;
|
|
146
|
+
if (aIsTuple && bIsTuple) {
|
|
147
|
+
if (a.entries.size !== b.entries.size)
|
|
148
|
+
return false;
|
|
149
|
+
for (const [key, aVal] of a.entries) {
|
|
150
|
+
const bVal = b.entries.get(key);
|
|
151
|
+
if (bVal === undefined || !deepEquals(aVal, bVal))
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
// Check for arrays (lists)
|
|
157
|
+
const aIsArray = Array.isArray(a);
|
|
158
|
+
const bIsArray = Array.isArray(b);
|
|
159
|
+
if (aIsArray !== bIsArray)
|
|
160
|
+
return false;
|
|
161
|
+
if (aIsArray && bIsArray) {
|
|
162
|
+
if (a.length !== b.length)
|
|
163
|
+
return false;
|
|
164
|
+
for (let i = 0; i < a.length; i++) {
|
|
165
|
+
const aElem = a[i];
|
|
166
|
+
const bElem = b[i];
|
|
167
|
+
if (aElem === undefined || bElem === undefined) {
|
|
168
|
+
if (aElem !== bElem)
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
else if (!deepEquals(aElem, bElem)) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
// Both are dicts (plain objects) or callables
|
|
178
|
+
// For script callables, use structural equality (params + body AST + captured values)
|
|
179
|
+
// For runtime/application callables, use reference equality
|
|
180
|
+
if ('__type' in aObj || '__type' in bObj) {
|
|
181
|
+
// Both must be callables to be equal
|
|
182
|
+
if (!('__type' in aObj) || !('__type' in bObj))
|
|
183
|
+
return false;
|
|
184
|
+
if (aObj.__type !== 'callable' || bObj.__type !== 'callable')
|
|
185
|
+
return false;
|
|
186
|
+
// Script callables: structural equality
|
|
187
|
+
if (isScriptCallable(a) && isScriptCallable(b)) {
|
|
188
|
+
return callableEquals(a, b, deepEquals);
|
|
189
|
+
}
|
|
190
|
+
// Runtime/application callables: reference equality
|
|
191
|
+
return a === b;
|
|
192
|
+
}
|
|
193
|
+
const aDict = a;
|
|
194
|
+
const bDict = b;
|
|
195
|
+
const aKeys = Object.keys(aDict);
|
|
196
|
+
const bKeys = Object.keys(bDict);
|
|
197
|
+
if (aKeys.length !== bKeys.length)
|
|
198
|
+
return false;
|
|
199
|
+
for (const key of aKeys) {
|
|
200
|
+
if (!(key in bDict))
|
|
201
|
+
return false;
|
|
202
|
+
const aVal = aDict[key];
|
|
203
|
+
const bVal = bDict[key];
|
|
204
|
+
if (aVal === undefined || bVal === undefined) {
|
|
205
|
+
if (aVal !== bVal)
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
else if (!deepEquals(aVal, bVal)) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
/** Reserved dict method names that cannot be overridden */
|
|
215
|
+
export const RESERVED_DICT_METHODS = ['keys', 'values', 'entries'];
|
|
216
|
+
/** Check if a key name is reserved */
|
|
217
|
+
export function isReservedMethod(name) {
|
|
218
|
+
return RESERVED_DICT_METHODS.includes(name);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Check if a value is a Rill iterator (lazy sequence).
|
|
222
|
+
* An iterator is a dict with:
|
|
223
|
+
* - done: boolean - whether iteration is complete
|
|
224
|
+
* - next: callable - function to get next iterator
|
|
225
|
+
* - value: any (only required when not done) - current element
|
|
226
|
+
*/
|
|
227
|
+
export function isRillIterator(value) {
|
|
228
|
+
if (!isDict(value))
|
|
229
|
+
return false;
|
|
230
|
+
const dict = value;
|
|
231
|
+
if (!('done' in dict && typeof dict['done'] === 'boolean'))
|
|
232
|
+
return false;
|
|
233
|
+
if (!('next' in dict && isCallable(dict['next'])))
|
|
234
|
+
return false;
|
|
235
|
+
// 'value' field only required when not done
|
|
236
|
+
if (!dict['done'] && !('value' in dict))
|
|
237
|
+
return false;
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/runtime/core/values.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Evaluation
|
|
3
|
+
*
|
|
4
|
+
* Internal module for AST evaluation. Not part of public API.
|
|
5
|
+
* All evaluation functions are internal implementation details.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
import type { ASTNode, CaptureNode, ExpressionNode, StatementNode } from '../types.js';
|
|
10
|
+
import type { RuntimeContext } from './types.js';
|
|
11
|
+
import { type RillValue } from './values.js';
|
|
12
|
+
/**
|
|
13
|
+
* Check if execution has been aborted via AbortSignal.
|
|
14
|
+
* Throws AbortError if signal is aborted.
|
|
15
|
+
*/
|
|
16
|
+
export declare function checkAborted(ctx: RuntimeContext, node?: ASTNode): void;
|
|
17
|
+
/**
|
|
18
|
+
* Check if the current pipe value matches any autoException pattern.
|
|
19
|
+
* Only checks string values. Throws AutoExceptionError on match.
|
|
20
|
+
*/
|
|
21
|
+
export declare function checkAutoExceptions(value: RillValue, ctx: RuntimeContext, node?: ASTNode): void;
|
|
22
|
+
/**
|
|
23
|
+
* Handle statement capture: set variable and fire observability event.
|
|
24
|
+
* Returns capture info if a capture occurred.
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleCapture(capture: CaptureNode | null, value: RillValue, ctx: RuntimeContext): {
|
|
27
|
+
name: string;
|
|
28
|
+
value: RillValue;
|
|
29
|
+
} | undefined;
|
|
30
|
+
export declare function evaluateExpression(expr: ExpressionNode, ctx: RuntimeContext): Promise<RillValue>;
|
|
31
|
+
export declare function executeStatement(stmt: StatementNode, ctx: RuntimeContext): Promise<RillValue>;
|
|
32
|
+
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/runtime/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,OAAO,EAGP,WAAW,EAMX,cAAc,EAed,aAAa,EAMd,MAAM,aAAa,CAAC;AAkBrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAWrB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAItE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,cAAc,EACnB,IAAI,CAAC,EAAE,OAAO,GACb,IAAI,CAcN;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,cAAc,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAOhD;AAkGD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,SAAS,CAAC,CAEpB;AAuKD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,SAAS,CAAC,CAepB"}
|