@enspirit/elo 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +322 -0
  3. package/bin/elo +2 -0
  4. package/bin/eloc +2 -0
  5. package/dist/src/ast.d.ts +309 -0
  6. package/dist/src/ast.d.ts.map +1 -0
  7. package/dist/src/ast.js +173 -0
  8. package/dist/src/ast.js.map +1 -0
  9. package/dist/src/bindings/javascript.d.ts +17 -0
  10. package/dist/src/bindings/javascript.d.ts.map +1 -0
  11. package/dist/src/bindings/javascript.js +350 -0
  12. package/dist/src/bindings/javascript.js.map +1 -0
  13. package/dist/src/bindings/ruby.d.ts +20 -0
  14. package/dist/src/bindings/ruby.d.ts.map +1 -0
  15. package/dist/src/bindings/ruby.js +365 -0
  16. package/dist/src/bindings/ruby.js.map +1 -0
  17. package/dist/src/bindings/sql.d.ts +20 -0
  18. package/dist/src/bindings/sql.d.ts.map +1 -0
  19. package/dist/src/bindings/sql.js +319 -0
  20. package/dist/src/bindings/sql.js.map +1 -0
  21. package/dist/src/cli.d.ts +3 -0
  22. package/dist/src/cli.d.ts.map +1 -0
  23. package/dist/src/cli.js +225 -0
  24. package/dist/src/cli.js.map +1 -0
  25. package/dist/src/compile.d.ts +47 -0
  26. package/dist/src/compile.d.ts.map +1 -0
  27. package/dist/src/compile.js +55 -0
  28. package/dist/src/compile.js.map +1 -0
  29. package/dist/src/compilers/javascript.d.ts +41 -0
  30. package/dist/src/compilers/javascript.d.ts.map +1 -0
  31. package/dist/src/compilers/javascript.js +323 -0
  32. package/dist/src/compilers/javascript.js.map +1 -0
  33. package/dist/src/compilers/ruby.d.ts +40 -0
  34. package/dist/src/compilers/ruby.d.ts.map +1 -0
  35. package/dist/src/compilers/ruby.js +326 -0
  36. package/dist/src/compilers/ruby.js.map +1 -0
  37. package/dist/src/compilers/sql.d.ts +37 -0
  38. package/dist/src/compilers/sql.d.ts.map +1 -0
  39. package/dist/src/compilers/sql.js +164 -0
  40. package/dist/src/compilers/sql.js.map +1 -0
  41. package/dist/src/elo.d.ts +3 -0
  42. package/dist/src/elo.d.ts.map +1 -0
  43. package/dist/src/elo.js +187 -0
  44. package/dist/src/elo.js.map +1 -0
  45. package/dist/src/eloc.d.ts +3 -0
  46. package/dist/src/eloc.d.ts.map +1 -0
  47. package/dist/src/eloc.js +232 -0
  48. package/dist/src/eloc.js.map +1 -0
  49. package/dist/src/eval.d.ts +3 -0
  50. package/dist/src/eval.d.ts.map +1 -0
  51. package/dist/src/eval.js +196 -0
  52. package/dist/src/eval.js.map +1 -0
  53. package/dist/src/index.d.ts +17 -0
  54. package/dist/src/index.d.ts.map +1 -0
  55. package/dist/src/index.js +36 -0
  56. package/dist/src/index.js.map +1 -0
  57. package/dist/src/ir.d.ts +295 -0
  58. package/dist/src/ir.d.ts.map +1 -0
  59. package/dist/src/ir.js +224 -0
  60. package/dist/src/ir.js.map +1 -0
  61. package/dist/src/parser.d.ts +137 -0
  62. package/dist/src/parser.d.ts.map +1 -0
  63. package/dist/src/parser.js +1266 -0
  64. package/dist/src/parser.js.map +1 -0
  65. package/dist/src/preludes/index.d.ts +14 -0
  66. package/dist/src/preludes/index.d.ts.map +1 -0
  67. package/dist/src/preludes/index.js +27 -0
  68. package/dist/src/preludes/index.js.map +1 -0
  69. package/dist/src/runtime.d.ts +23 -0
  70. package/dist/src/runtime.d.ts.map +1 -0
  71. package/dist/src/runtime.js +326 -0
  72. package/dist/src/runtime.js.map +1 -0
  73. package/dist/src/stdlib.d.ts +121 -0
  74. package/dist/src/stdlib.d.ts.map +1 -0
  75. package/dist/src/stdlib.js +237 -0
  76. package/dist/src/stdlib.js.map +1 -0
  77. package/dist/src/transform.d.ts +38 -0
  78. package/dist/src/transform.d.ts.map +1 -0
  79. package/dist/src/transform.js +322 -0
  80. package/dist/src/transform.js.map +1 -0
  81. package/dist/src/typedefs.d.ts +50 -0
  82. package/dist/src/typedefs.d.ts.map +1 -0
  83. package/dist/src/typedefs.js +294 -0
  84. package/dist/src/typedefs.js.map +1 -0
  85. package/dist/src/types.d.ts +54 -0
  86. package/dist/src/types.d.ts.map +1 -0
  87. package/dist/src/types.js +62 -0
  88. package/dist/src/types.js.map +1 -0
  89. package/package.json +66 -0
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * AST node types for Elo expressions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.literal = literal;
7
+ exports.nullLiteral = nullLiteral;
8
+ exports.stringLiteral = stringLiteral;
9
+ exports.dateLiteral = dateLiteral;
10
+ exports.dateTimeLiteral = dateTimeLiteral;
11
+ exports.durationLiteral = durationLiteral;
12
+ exports.variable = variable;
13
+ exports.binary = binary;
14
+ exports.unary = unary;
15
+ exports.temporalKeyword = temporalKeyword;
16
+ exports.functionCall = functionCall;
17
+ exports.apply = apply;
18
+ exports.memberAccess = memberAccess;
19
+ exports.letExpr = letExpr;
20
+ exports.ifExpr = ifExpr;
21
+ exports.lambda = lambda;
22
+ exports.objectLiteral = objectLiteral;
23
+ exports.arrayLiteral = arrayLiteral;
24
+ exports.alternative = alternative;
25
+ exports.dataPath = dataPath;
26
+ exports.typeRef = typeRef;
27
+ exports.typeSchema = typeSchema;
28
+ exports.typeDef = typeDef;
29
+ exports.subtypeConstraint = subtypeConstraint;
30
+ exports.arrayType = arrayType;
31
+ exports.unionType = unionType;
32
+ /**
33
+ * Helper functions to create AST nodes
34
+ */
35
+ function literal(value) {
36
+ return { type: 'literal', value };
37
+ }
38
+ function nullLiteral() {
39
+ return { type: 'null' };
40
+ }
41
+ function stringLiteral(value) {
42
+ return { type: 'string', value };
43
+ }
44
+ function dateLiteral(value) {
45
+ return { type: 'date', value };
46
+ }
47
+ function dateTimeLiteral(value) {
48
+ return { type: 'datetime', value };
49
+ }
50
+ function durationLiteral(value) {
51
+ return { type: 'duration', value };
52
+ }
53
+ function variable(name) {
54
+ return { type: 'variable', name };
55
+ }
56
+ function binary(operator, left, right) {
57
+ return { type: 'binary', operator, left, right };
58
+ }
59
+ function unary(operator, operand) {
60
+ return { type: 'unary', operator, operand };
61
+ }
62
+ function temporalKeyword(keyword) {
63
+ return { type: 'temporal_keyword', keyword };
64
+ }
65
+ function functionCall(name, args) {
66
+ return { type: 'function_call', name, args };
67
+ }
68
+ function apply(fn, args) {
69
+ return { type: 'apply', fn, args };
70
+ }
71
+ function memberAccess(object, property) {
72
+ return { type: 'member_access', object, property };
73
+ }
74
+ /**
75
+ * Creates a let expression, desugaring multiple bindings into nested let expressions.
76
+ * `let a = 1, b = 2 in body` becomes `let a = 1 in let b = 2 in body`
77
+ * This ensures that later bindings can reference earlier ones.
78
+ */
79
+ function letExpr(bindings, body) {
80
+ if (bindings.length === 0) {
81
+ throw new Error('Let expression must have at least one binding');
82
+ }
83
+ if (bindings.length === 1) {
84
+ return { type: 'let', bindings, body };
85
+ }
86
+ // Desugar: let a = 1, b = 2, c = 3 in body
87
+ // becomes: let a = 1 in let b = 2 in let c = 3 in body
88
+ const [first, ...rest] = bindings;
89
+ const nestedBody = letExpr(rest, body);
90
+ return { type: 'let', bindings: [first], body: nestedBody };
91
+ }
92
+ /**
93
+ * Creates an if expression: if condition then consequent else alternative
94
+ */
95
+ function ifExpr(condition, thenBranch, elseBranch) {
96
+ return { type: 'if', condition, then: thenBranch, else: elseBranch };
97
+ }
98
+ /**
99
+ * Creates a lambda expression: fn( params ~> body )
100
+ */
101
+ function lambda(params, body) {
102
+ return { type: 'lambda', params, body };
103
+ }
104
+ /**
105
+ * Creates an object literal: {key: value, ...}
106
+ */
107
+ function objectLiteral(properties) {
108
+ return { type: 'object', properties };
109
+ }
110
+ /**
111
+ * Creates an array literal: [expr, expr, ...]
112
+ */
113
+ function arrayLiteral(elements) {
114
+ return { type: 'array', elements };
115
+ }
116
+ /**
117
+ * Creates an alternative expression: a | b | c
118
+ */
119
+ function alternative(alternatives) {
120
+ if (alternatives.length < 2) {
121
+ throw new Error('Alternative expression must have at least two alternatives');
122
+ }
123
+ return { type: 'alternative', alternatives };
124
+ }
125
+ /**
126
+ * Creates a datapath literal: .x.y.z
127
+ */
128
+ function dataPath(segments) {
129
+ if (segments.length === 0) {
130
+ throw new Error('DataPath must have at least one segment');
131
+ }
132
+ return { type: 'datapath', segments };
133
+ }
134
+ /**
135
+ * Creates a type reference: String, Int, etc.
136
+ */
137
+ function typeRef(name) {
138
+ return { kind: 'type_ref', name };
139
+ }
140
+ /**
141
+ * Creates a type schema: { name: String, age: Int }
142
+ */
143
+ function typeSchema(properties, extras) {
144
+ return { kind: 'type_schema', properties, extras };
145
+ }
146
+ /**
147
+ * Creates a type definition expression
148
+ */
149
+ function typeDef(name, typeExpr, body) {
150
+ return { type: 'typedef', name, typeExpr, body };
151
+ }
152
+ /**
153
+ * Creates a subtype constraint: Int(i | i > 0)
154
+ */
155
+ function subtypeConstraint(baseType, variable, constraint) {
156
+ return { kind: 'subtype_constraint', baseType, variable, constraint };
157
+ }
158
+ /**
159
+ * Creates an array type: [Int]
160
+ */
161
+ function arrayType(elementType) {
162
+ return { kind: 'array_type', elementType };
163
+ }
164
+ /**
165
+ * Creates a union type: Int|String
166
+ */
167
+ function unionType(types) {
168
+ if (types.length < 2) {
169
+ throw new Error('Union type must have at least two types');
170
+ }
171
+ return { kind: 'union_type', types };
172
+ }
173
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * JavaScript stdlib binding for Elo
3
+ *
4
+ * This module defines how Elo IR functions are emitted as JavaScript code.
5
+ * Uses luxon for temporal operations.
6
+ */
7
+ import { IRExpr } from '../ir';
8
+ import { StdLib } from '../stdlib';
9
+ /**
10
+ * Check if a call will be emitted as a native JS binary operator
11
+ */
12
+ export declare function isNativeBinaryOp(ir: IRExpr): boolean;
13
+ /**
14
+ * Create the JavaScript standard library binding
15
+ */
16
+ export declare function createJavaScriptBinding(): StdLib<string>;
17
+ //# sourceMappingURL=javascript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../src/bindings/javascript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAgE,MAAM,WAAW,CAAC;AAgBjG;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAuBpD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,CAAC,CA0XxD"}
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+ /**
3
+ * JavaScript stdlib binding for Elo
4
+ *
5
+ * This module defines how Elo IR functions are emitted as JavaScript code.
6
+ * Uses luxon for temporal operations.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.isNativeBinaryOp = isNativeBinaryOp;
10
+ exports.createJavaScriptBinding = createJavaScriptBinding;
11
+ const types_1 = require("../types");
12
+ const stdlib_1 = require("../stdlib");
13
+ /**
14
+ * Helper for type selector using Finitio parser + pUnwrap.
15
+ * Generates: pUnwrap(pParser(value, ''))
16
+ * This throws on parse failure instead of returning null.
17
+ */
18
+ function parserUnwrap(parserName) {
19
+ return (args, ctx) => {
20
+ ctx.requireHelper?.(parserName);
21
+ ctx.requireHelper?.('pUnwrap');
22
+ const emittedArg = ctx.emit(args[0]);
23
+ return `pUnwrap(${parserName}(${emittedArg}, ''))`;
24
+ };
25
+ }
26
+ /**
27
+ * Check if a call will be emitted as a native JS binary operator
28
+ */
29
+ function isNativeBinaryOp(ir) {
30
+ if (ir.type !== 'call')
31
+ return false;
32
+ const { fn, argTypes } = ir;
33
+ // Arithmetic with numeric types
34
+ if (['add', 'sub', 'mul', 'div', 'mod'].includes(fn)) {
35
+ const [left, right] = argTypes;
36
+ if ((left.kind === 'int' || left.kind === 'float') &&
37
+ (right.kind === 'int' || right.kind === 'float')) {
38
+ return true;
39
+ }
40
+ // String concatenation
41
+ if (fn === 'add' && left.kind === 'string' && right.kind === 'string') {
42
+ return true;
43
+ }
44
+ }
45
+ // Comparison and logical operators
46
+ if (['lt', 'gt', 'lte', 'gte', 'eq', 'neq', 'and', 'or'].includes(fn)) {
47
+ return true;
48
+ }
49
+ return false;
50
+ }
51
+ /**
52
+ * Create the JavaScript standard library binding
53
+ */
54
+ function createJavaScriptBinding() {
55
+ const jsLib = new stdlib_1.StdLib();
56
+ // Temporal nullary functions
57
+ jsLib.register('today', [], (0, stdlib_1.nullary)("DateTime.now().startOf('day')"));
58
+ jsLib.register('now', [], (0, stdlib_1.nullary)('DateTime.now()'));
59
+ jsLib.register('bot', [], (0, stdlib_1.nullary)("DateTime.fromISO('0001-01-01T00:00:00.000Z')"));
60
+ jsLib.register('eot', [], (0, stdlib_1.nullary)("DateTime.fromISO('9999-12-31T23:59:59.999Z')"));
61
+ // Period boundary functions
62
+ const periodBoundaryMap = {
63
+ 'start_of_day': "startOf('day')",
64
+ 'end_of_day': "endOf('day')",
65
+ 'start_of_week': "startOf('week')",
66
+ 'end_of_week': "endOf('week')",
67
+ 'start_of_month': "startOf('month')",
68
+ 'end_of_month': "endOf('month')",
69
+ 'start_of_quarter': "startOf('quarter')",
70
+ 'end_of_quarter': "endOf('quarter')",
71
+ 'start_of_year': "startOf('year')",
72
+ 'end_of_year': "endOf('year')",
73
+ };
74
+ for (const [fn, method] of Object.entries(periodBoundaryMap)) {
75
+ jsLib.register(fn, [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.${method}`);
76
+ }
77
+ // Numeric arithmetic - native JS operators only for known numeric types
78
+ // Unknown types fall through to elo.* fallback
79
+ for (const leftType of [types_1.Types.int, types_1.Types.float]) {
80
+ for (const rightType of [types_1.Types.int, types_1.Types.float]) {
81
+ jsLib.register('add', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('+'));
82
+ jsLib.register('sub', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('-'));
83
+ jsLib.register('mul', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('*'));
84
+ jsLib.register('div', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('/'));
85
+ jsLib.register('mod', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('%'));
86
+ jsLib.register('pow', [leftType, rightType], (0, stdlib_1.fnCall)('Math.pow'));
87
+ }
88
+ }
89
+ // String concatenation
90
+ jsLib.register('add', [types_1.Types.string, types_1.Types.string], (0, stdlib_1.simpleBinaryOp)('+'));
91
+ // String multiplication (repeat)
92
+ jsLib.register('mul', [types_1.Types.string, types_1.Types.int], (args, ctx) => `${ctx.emit(args[0])}.repeat(${ctx.emit(args[1])})`);
93
+ jsLib.register('mul', [types_1.Types.int, types_1.Types.string], (args, ctx) => `${ctx.emit(args[1])}.repeat(${ctx.emit(args[0])})`);
94
+ // List concatenation
95
+ jsLib.register('add', [types_1.Types.array, types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.concat(${ctx.emit(args[1])})`);
96
+ // Temporal addition
97
+ jsLib.register('add', [types_1.Types.date, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.plus(${ctx.emit(args[1])})`);
98
+ jsLib.register('add', [types_1.Types.datetime, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.plus(${ctx.emit(args[1])})`);
99
+ jsLib.register('add', [types_1.Types.duration, types_1.Types.date], (args, ctx) => `${ctx.emit(args[1])}.plus(${ctx.emit(args[0])})`);
100
+ jsLib.register('add', [types_1.Types.duration, types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[1])}.plus(${ctx.emit(args[0])})`);
101
+ jsLib.register('add', [types_1.Types.duration, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.plus(${ctx.emit(args[1])})`);
102
+ // Temporal subtraction
103
+ jsLib.register('sub', [types_1.Types.date, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.minus(${ctx.emit(args[1])})`);
104
+ jsLib.register('sub', [types_1.Types.datetime, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.minus(${ctx.emit(args[1])})`);
105
+ // Duration scaling: n * duration or duration * n
106
+ jsLib.register('mul', [types_1.Types.int, types_1.Types.duration], (args, ctx) => `Duration.fromMillis(${ctx.emit(args[1])}.toMillis() * ${ctx.emit(args[0])})`);
107
+ jsLib.register('mul', [types_1.Types.float, types_1.Types.duration], (args, ctx) => `Duration.fromMillis(${ctx.emit(args[1])}.toMillis() * ${ctx.emit(args[0])})`);
108
+ jsLib.register('mul', [types_1.Types.duration, types_1.Types.int], (args, ctx) => `Duration.fromMillis(${ctx.emit(args[0])}.toMillis() * ${ctx.emit(args[1])})`);
109
+ jsLib.register('mul', [types_1.Types.duration, types_1.Types.float], (args, ctx) => `Duration.fromMillis(${ctx.emit(args[0])}.toMillis() * ${ctx.emit(args[1])})`);
110
+ // Duration division
111
+ jsLib.register('div', [types_1.Types.duration, types_1.Types.int], (args, ctx) => `Duration.fromMillis(${ctx.emit(args[0])}.toMillis() / ${ctx.emit(args[1])})`);
112
+ jsLib.register('div', [types_1.Types.duration, types_1.Types.float], (args, ctx) => `Duration.fromMillis(${ctx.emit(args[0])}.toMillis() / ${ctx.emit(args[1])})`);
113
+ // Comparison operators - type generalization handles most combinations
114
+ // Date/datetime equality needs special toMillis comparison
115
+ const temporalTypes = [types_1.Types.date, types_1.Types.datetime];
116
+ for (const leftType of temporalTypes) {
117
+ for (const rightType of temporalTypes) {
118
+ jsLib.register('eq', [leftType, rightType], (args, ctx) => `${ctx.emit(args[0])}.toMillis() === ${ctx.emit(args[1])}.toMillis()`);
119
+ jsLib.register('neq', [leftType, rightType], (args, ctx) => `${ctx.emit(args[0])}.toMillis() !== ${ctx.emit(args[1])}.toMillis()`);
120
+ }
121
+ }
122
+ // Duration equality needs milliseconds comparison
123
+ jsLib.register('eq', [types_1.Types.duration, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.toMillis() === ${ctx.emit(args[1])}.toMillis()`);
124
+ jsLib.register('neq', [types_1.Types.duration, types_1.Types.duration], (args, ctx) => `${ctx.emit(args[0])}.toMillis() !== ${ctx.emit(args[1])}.toMillis()`);
125
+ // Numeric/boolean/string equality uses native operators
126
+ const primitiveTypes = [types_1.Types.int, types_1.Types.float, types_1.Types.bool, types_1.Types.string];
127
+ for (const leftType of primitiveTypes) {
128
+ for (const rightType of primitiveTypes) {
129
+ jsLib.register('eq', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('=='));
130
+ jsLib.register('neq', [leftType, rightType], (0, stdlib_1.simpleBinaryOp)('!='));
131
+ }
132
+ }
133
+ // All other comparisons use native JS operators
134
+ jsLib.register('lt', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('<'));
135
+ jsLib.register('gt', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('>'));
136
+ jsLib.register('lte', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('<='));
137
+ jsLib.register('gte', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('>='));
138
+ // Fallback for unknown types - needs helper for duration/date comparison
139
+ jsLib.register('eq', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kEq'));
140
+ jsLib.register('neq', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kNeq'));
141
+ // Logical operators
142
+ jsLib.register('and', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('&&'));
143
+ jsLib.register('or', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('||'));
144
+ // Unary operators - only for known types, unknown falls through to elo.* fallback
145
+ for (const t of [types_1.Types.int, types_1.Types.float]) {
146
+ jsLib.register('neg', [t], (args, ctx) => {
147
+ const operand = ctx.emit(args[0]);
148
+ if (isNativeBinaryOp(args[0]))
149
+ return `-(${operand})`;
150
+ return `-${operand}`;
151
+ });
152
+ jsLib.register('pos', [t], (args, ctx) => {
153
+ const operand = ctx.emit(args[0]);
154
+ if (isNativeBinaryOp(args[0]))
155
+ return `+(${operand})`;
156
+ return `+${operand}`;
157
+ });
158
+ }
159
+ jsLib.register('not', [types_1.Types.bool], (args, ctx) => {
160
+ const operand = ctx.emit(args[0]);
161
+ if (isNativeBinaryOp(args[0]))
162
+ return `!(${operand})`;
163
+ return `!${operand}`;
164
+ });
165
+ // Assert function - accept both bool and any (for dynamic expressions)
166
+ for (const conditionType of [types_1.Types.bool, types_1.Types.any]) {
167
+ jsLib.register('assert', [conditionType], (args, ctx) => {
168
+ const condition = ctx.emit(args[0]);
169
+ return `(function() { if (!(${condition})) throw new Error("Assertion failed"); return true; })()`;
170
+ });
171
+ jsLib.register('assert', [conditionType, types_1.Types.string], (args, ctx) => {
172
+ const condition = ctx.emit(args[0]);
173
+ const message = ctx.emit(args[1]);
174
+ return `(function() { if (!(${condition})) throw new Error(${message}); return true; })()`;
175
+ });
176
+ }
177
+ // AssertFails - expects a function to throw when called
178
+ jsLib.register('assertFails', [types_1.Types.fn], (args, ctx) => {
179
+ const fn = ctx.emit(args[0]);
180
+ return `(function() { try { (${fn})(); throw new Error("Expected error but none thrown"); } catch(e) { if (e.message === "Expected error but none thrown") throw e; return true; } })()`;
181
+ });
182
+ // Array functions
183
+ jsLib.register('length', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.length`);
184
+ jsLib.register('at', [types_1.Types.array, types_1.Types.int], (args, ctx) => `${ctx.emit(args[0])}[${ctx.emit(args[1])}] ?? null`);
185
+ jsLib.register('first', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}[0] ?? null`);
186
+ jsLib.register('last', [types_1.Types.array], (args, ctx) => `(a => a[a.length - 1] ?? null)(${ctx.emit(args[0])})`);
187
+ jsLib.register('isEmpty', [types_1.Types.array], (args, ctx) => `(${ctx.emit(args[0])}.length === 0)`);
188
+ // Array iteration functions (register for both array and any to support dynamic types)
189
+ for (const t of [types_1.Types.array, types_1.Types.any]) {
190
+ jsLib.register('map', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.map(${ctx.emit(args[1])})`);
191
+ jsLib.register('filter', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.filter(${ctx.emit(args[1])})`);
192
+ jsLib.register('reduce', [t, types_1.Types.any, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.reduce(${ctx.emit(args[2])}, ${ctx.emit(args[1])})`);
193
+ jsLib.register('any', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.some(${ctx.emit(args[1])})`);
194
+ jsLib.register('all', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.every(${ctx.emit(args[1])})`);
195
+ }
196
+ // String functions (register for both string and any to support lambdas with unknown types)
197
+ // Helper to wrap binary expressions in parentheses for method calls
198
+ const methodCall = (method) => (args, ctx) => {
199
+ const operand = ctx.emit(args[0]);
200
+ if (isNativeBinaryOp(args[0]))
201
+ return `(${operand})${method}`;
202
+ return `${operand}${method}`;
203
+ };
204
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
205
+ jsLib.register('length', [t], methodCall('.length'));
206
+ jsLib.register('upper', [t], methodCall('.toUpperCase()'));
207
+ jsLib.register('lower', [t], methodCall('.toLowerCase()'));
208
+ jsLib.register('trim', [t], methodCall('.trim()'));
209
+ }
210
+ // Helper for method calls with arguments - wraps receiver in parens if needed
211
+ const wrapReceiver = (args, ctx) => {
212
+ const operand = ctx.emit(args[0]);
213
+ return isNativeBinaryOp(args[0]) ? `(${operand})` : operand;
214
+ };
215
+ // String functions with two args (register for string and any)
216
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
217
+ jsLib.register('startsWith', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.startsWith(${ctx.emit(args[1])})`);
218
+ jsLib.register('endsWith', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.endsWith(${ctx.emit(args[1])})`);
219
+ jsLib.register('contains', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.includes(${ctx.emit(args[1])})`);
220
+ jsLib.register('concat', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.concat(${ctx.emit(args[1])})`);
221
+ jsLib.register('indexOf', [t, types_1.Types.string], (args, ctx) => `(i => i === -1 ? null : i)(${wrapReceiver(args, ctx)}.indexOf(${ctx.emit(args[1])}))`);
222
+ jsLib.register('isEmpty', [t], (args, ctx) => `(${wrapReceiver(args, ctx)}.length === 0)`);
223
+ }
224
+ // String functions with three args
225
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
226
+ jsLib.register('substring', [t, types_1.Types.int, types_1.Types.int], (args, ctx) => {
227
+ const s = wrapReceiver(args, ctx);
228
+ const start = ctx.emit(args[1]);
229
+ const len = ctx.emit(args[2]);
230
+ return `${s}.substring(${start}, ${start} + ${len})`;
231
+ });
232
+ jsLib.register('replace', [t, types_1.Types.string, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.replace(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
233
+ jsLib.register('replaceAll', [t, types_1.Types.string, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.replaceAll(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
234
+ jsLib.register('padStart', [t, types_1.Types.int, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.padStart(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
235
+ jsLib.register('padEnd', [t, types_1.Types.int, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.padEnd(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
236
+ }
237
+ // Numeric functions
238
+ // For int, round/floor/ceil are identity operations (optimization)
239
+ // For float and any, use Math.x (which also works correctly for ints)
240
+ jsLib.register('abs', [types_1.Types.int], (0, stdlib_1.fnCall)('Math.abs'));
241
+ jsLib.register('abs', [types_1.Types.float], (0, stdlib_1.fnCall)('Math.abs'));
242
+ jsLib.register('round', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
243
+ jsLib.register('round', [types_1.Types.float], (0, stdlib_1.fnCall)('Math.round'));
244
+ jsLib.register('round', [types_1.Types.any], (0, stdlib_1.fnCall)('Math.round')); // Safe for any numeric type
245
+ jsLib.register('floor', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
246
+ jsLib.register('floor', [types_1.Types.float], (0, stdlib_1.fnCall)('Math.floor'));
247
+ jsLib.register('floor', [types_1.Types.any], (0, stdlib_1.fnCall)('Math.floor')); // Safe for any numeric type
248
+ jsLib.register('ceil', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
249
+ jsLib.register('ceil', [types_1.Types.float], (0, stdlib_1.fnCall)('Math.ceil'));
250
+ jsLib.register('ceil', [types_1.Types.any], (0, stdlib_1.fnCall)('Math.ceil')); // Safe for any numeric type
251
+ // Temporal extraction functions
252
+ jsLib.register('year', [types_1.Types.date], (args, ctx) => `${ctx.emit(args[0])}.year`);
253
+ jsLib.register('year', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.year`);
254
+ jsLib.register('month', [types_1.Types.date], (args, ctx) => `${ctx.emit(args[0])}.month`);
255
+ jsLib.register('month', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.month`);
256
+ jsLib.register('day', [types_1.Types.date], (args, ctx) => `${ctx.emit(args[0])}.day`);
257
+ jsLib.register('day', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.day`);
258
+ jsLib.register('hour', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.toUTC().hour`);
259
+ jsLib.register('minute', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.toUTC().minute`);
260
+ // Runtime helpers for unknown types (dynamic dispatch)
261
+ // These use kAdd, kSub, etc. helper functions that handle temporal/numeric operations at runtime
262
+ jsLib.register('add', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kAdd'));
263
+ jsLib.register('sub', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kSub'));
264
+ jsLib.register('mul', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kMul'));
265
+ jsLib.register('div', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kDiv'));
266
+ jsLib.register('mod', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kMod'));
267
+ jsLib.register('pow', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kPow'));
268
+ // Unary operators for unknown types
269
+ jsLib.register('neg', [types_1.Types.any], (args, ctx) => {
270
+ ctx.requireHelper?.('kNeg');
271
+ return `kNeg(${ctx.emit(args[0])})`;
272
+ });
273
+ jsLib.register('pos', [types_1.Types.any], (args, ctx) => {
274
+ ctx.requireHelper?.('kPos');
275
+ return `kPos(${ctx.emit(args[0])})`;
276
+ });
277
+ jsLib.register('not', [types_1.Types.any], (args, ctx) => {
278
+ const operand = ctx.emit(args[0]);
279
+ if (isNativeBinaryOp(args[0]))
280
+ return `!(${operand})`;
281
+ return `!${operand}`;
282
+ });
283
+ // Type introspection
284
+ jsLib.register('typeOf', [types_1.Types.any], (0, stdlib_1.helperCall)('kTypeOf'));
285
+ // Null handling
286
+ jsLib.register('isNull', [types_1.Types.any], (0, stdlib_1.helperCall)('kIsNull'));
287
+ // Data path navigation
288
+ jsLib.register('fetch', [types_1.Types.any, types_1.Types.fn], (0, stdlib_1.helperCall)('kFetch'));
289
+ jsLib.register('patch', [types_1.Types.any, types_1.Types.fn, types_1.Types.any], (0, stdlib_1.helperCall)('kPatch'));
290
+ // Data merge functions
291
+ jsLib.register('merge', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kMerge'));
292
+ jsLib.register('deepMerge', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.helperCall)('kDeepMerge'));
293
+ // Error handling
294
+ jsLib.register('fail', [types_1.Types.string], (args, ctx) => {
295
+ const message = ctx.emit(args[0]);
296
+ return `(function() { throw new Error(${message}); })()`;
297
+ });
298
+ // Type selectors (Finitio schemas - throw on failure)
299
+ // Int - identity for int, truncate float, parse for string
300
+ jsLib.register('Int', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
301
+ jsLib.register('Int', [types_1.Types.float], (args, ctx) => `Math.trunc(${ctx.emit(args[0])})`);
302
+ jsLib.register('Int', [types_1.Types.string], parserUnwrap('pInt'));
303
+ jsLib.register('Int', [types_1.Types.any], parserUnwrap('pInt'));
304
+ // Float - identity for float/int, parse for string
305
+ jsLib.register('Float', [types_1.Types.float], (args, ctx) => ctx.emit(args[0]));
306
+ jsLib.register('Float', [types_1.Types.int], (args, ctx) => ctx.emit(args[0])); // JS numbers are already floats
307
+ jsLib.register('Float', [types_1.Types.string], parserUnwrap('pFloat'));
308
+ jsLib.register('Float', [types_1.Types.any], parserUnwrap('pFloat'));
309
+ // Bool - identity for bool, parse "true"/"false" for string
310
+ jsLib.register('Bool', [types_1.Types.bool], (args, ctx) => ctx.emit(args[0]));
311
+ jsLib.register('Bool', [types_1.Types.string], parserUnwrap('pBool'));
312
+ jsLib.register('Bool', [types_1.Types.any], parserUnwrap('pBool'));
313
+ // Date - identity for date, parse ISO for string
314
+ jsLib.register('Date', [types_1.Types.date], (args, ctx) => ctx.emit(args[0]));
315
+ jsLib.register('Date', [types_1.Types.string], parserUnwrap('pDate'));
316
+ jsLib.register('Date', [types_1.Types.any], parserUnwrap('pDate'));
317
+ // Datetime - identity for datetime, parse ISO for string
318
+ jsLib.register('Datetime', [types_1.Types.datetime], (args, ctx) => ctx.emit(args[0]));
319
+ jsLib.register('Datetime', [types_1.Types.string], parserUnwrap('pDatetime'));
320
+ jsLib.register('Datetime', [types_1.Types.any], parserUnwrap('pDatetime'));
321
+ // Duration - identity for duration, parse ISO for string
322
+ jsLib.register('Duration', [types_1.Types.duration], (args, ctx) => ctx.emit(args[0]));
323
+ jsLib.register('Duration', [types_1.Types.string], parserUnwrap('pDuration'));
324
+ jsLib.register('Duration', [types_1.Types.any], parserUnwrap('pDuration'));
325
+ // Data - identity for non-strings, parse JSON for strings
326
+ jsLib.register('Data', [types_1.Types.array], (args, ctx) => ctx.emit(args[0]));
327
+ jsLib.register('Data', [types_1.Types.object], (args, ctx) => ctx.emit(args[0]));
328
+ jsLib.register('Data', [types_1.Types.string], parserUnwrap('pData'));
329
+ jsLib.register('Data', [types_1.Types.any], parserUnwrap('pData'));
330
+ // List manipulation functions
331
+ jsLib.register('reverse', [types_1.Types.array], (args, ctx) => `[...${ctx.emit(args[0])}].reverse()`);
332
+ // Join list elements with separator
333
+ for (const t of [types_1.Types.array, types_1.Types.any]) {
334
+ jsLib.register('join', [t, types_1.Types.string], (args, ctx) => `${ctx.emit(args[0])}.join(${ctx.emit(args[1])})`);
335
+ }
336
+ // Split string into list
337
+ // Note: We use a wrapper to normalize empty string behavior across targets
338
+ // JavaScript returns [''] for ''.split(','), but Ruby/SQL return []
339
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
340
+ jsLib.register('split', [t, types_1.Types.string], (args, ctx) => {
341
+ const str = wrapReceiver(args, ctx);
342
+ const sep = ctx.emit(args[1]);
343
+ return `(${str} === '' ? [] : ${str}.split(${sep}))`;
344
+ });
345
+ }
346
+ // No fallback - unknown functions should fail at compile time
347
+ // (StdLib.emit() will throw if no implementation is found)
348
+ return jsLib;
349
+ }
350
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/bindings/javascript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Ruby stdlib binding for Elo
3
+ *
4
+ * This module defines how Elo IR functions are emitted as Ruby code.
5
+ */
6
+ import { IRExpr } from '../ir';
7
+ import { StdLib } from '../stdlib';
8
+ /**
9
+ * Map IR function names to Ruby operators
10
+ */
11
+ export declare const RUBY_OP_MAP: Record<string, string>;
12
+ /**
13
+ * Check if a call will be emitted as a native Ruby binary operator
14
+ */
15
+ export declare function isNativeBinaryOp(ir: IRExpr): boolean;
16
+ /**
17
+ * Create the Ruby standard library binding
18
+ */
19
+ export declare function createRubyBinding(): StdLib<string>;
20
+ //# sourceMappingURL=ruby.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/bindings/ruby.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAgE,MAAM,WAAW,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI9C,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,CAmYlD"}