@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,365 @@
1
+ "use strict";
2
+ /**
3
+ * Ruby stdlib binding for Elo
4
+ *
5
+ * This module defines how Elo IR functions are emitted as Ruby code.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.RUBY_OP_MAP = void 0;
9
+ exports.isNativeBinaryOp = isNativeBinaryOp;
10
+ exports.createRubyBinding = createRubyBinding;
11
+ const types_1 = require("../types");
12
+ const stdlib_1 = require("../stdlib");
13
+ /**
14
+ * Map IR function names to Ruby operators
15
+ */
16
+ exports.RUBY_OP_MAP = {
17
+ 'add': '+', 'sub': '-', 'mul': '*', 'div': '/', 'mod': '%', 'pow': '**',
18
+ 'lt': '<', 'gt': '>', 'lte': '<=', 'gte': '>=',
19
+ 'eq': '==', 'neq': '!=', 'and': '&&', 'or': '||',
20
+ };
21
+ /**
22
+ * Check if a call will be emitted as a native Ruby binary operator
23
+ */
24
+ function isNativeBinaryOp(ir) {
25
+ if (ir.type !== 'call')
26
+ return false;
27
+ return exports.RUBY_OP_MAP[ir.fn] !== undefined && ir.argTypes.length === 2;
28
+ }
29
+ /**
30
+ * Create the Ruby standard library binding
31
+ */
32
+ function createRubyBinding() {
33
+ const rubyLib = new stdlib_1.StdLib();
34
+ // Temporal nullary functions
35
+ rubyLib.register('today', [], (0, stdlib_1.nullary)('Date.today'));
36
+ rubyLib.register('now', [], (0, stdlib_1.nullary)('DateTime.now'));
37
+ rubyLib.register('bot', [], (0, stdlib_1.nullary)('DateTime.new(1, 1, 1, 0, 0, 0)'));
38
+ rubyLib.register('eot', [], (0, stdlib_1.nullary)('DateTime.new(9999, 12, 31, 23, 59, 59)'));
39
+ // Period boundary functions
40
+ const periodBoundaryMap = {
41
+ 'start_of_day': 'beginning_of_day',
42
+ 'end_of_day': 'end_of_day',
43
+ 'start_of_week': 'beginning_of_week',
44
+ 'end_of_week': 'end_of_week',
45
+ 'start_of_month': 'beginning_of_month',
46
+ 'end_of_month': 'end_of_month',
47
+ 'start_of_quarter': 'beginning_of_quarter',
48
+ 'end_of_quarter': 'end_of_quarter',
49
+ 'start_of_year': 'beginning_of_year',
50
+ 'end_of_year': 'end_of_year',
51
+ };
52
+ for (const [fn, method] of Object.entries(periodBoundaryMap)) {
53
+ rubyLib.register(fn, [types_1.Types.datetime], (args, ctx) => {
54
+ const arg = args[0];
55
+ // For period boundaries, emit Date.today.method (not DateTime.now.method)
56
+ if (arg.type === 'call' && arg.fn === 'now') {
57
+ return `Date.today.${method}`;
58
+ }
59
+ return `${ctx.emit(arg)}.${method}`;
60
+ });
61
+ }
62
+ // Ruby uses native operators for all types due to operator overloading
63
+ // Using any,any registration - type generalization handles all concrete type combinations
64
+ rubyLib.register('add', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('+'));
65
+ rubyLib.register('sub', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('-'));
66
+ rubyLib.register('mul', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('*'));
67
+ rubyLib.register('div', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('/'));
68
+ rubyLib.register('mod', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('%'));
69
+ rubyLib.register('pow', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('**'));
70
+ // Int * String needs operand swap (Ruby only supports String * Int)
71
+ rubyLib.register('mul', [types_1.Types.int, types_1.Types.string], (args, ctx) => {
72
+ const left = ctx.emitWithParens(args[1], '*', 'left');
73
+ const right = ctx.emitWithParens(args[0], '*', 'right');
74
+ return `${left} * ${right}`;
75
+ });
76
+ // Temporal arithmetic - Ruby's operator overloading handles this
77
+ // Special case: today() + duration('P1D') -> Date.today + 1 (for TOMORROW)
78
+ rubyLib.register('add', [types_1.Types.date, types_1.Types.duration], (args, ctx) => {
79
+ const leftArg = args[0];
80
+ const rightArg = args[1];
81
+ if (leftArg.type === 'call' && leftArg.fn === 'today' &&
82
+ rightArg.type === 'duration_literal' && rightArg.value === 'P1D') {
83
+ return `${ctx.emit(leftArg)} + 1`;
84
+ }
85
+ const left = ctx.emitWithParens(args[0], '+', 'left');
86
+ const right = ctx.emitWithParens(args[1], '+', 'right');
87
+ return `${left} + ${right}`;
88
+ });
89
+ // Other temporal additions (datetime+duration, duration+*, duration+duration)
90
+ // are covered by the any,any registration since they use the same operator
91
+ // Special case: today() - duration('P1D') -> Date.today - 1 (for YESTERDAY)
92
+ rubyLib.register('sub', [types_1.Types.date, types_1.Types.duration], (args, ctx) => {
93
+ const leftArg = args[0];
94
+ const rightArg = args[1];
95
+ if (leftArg.type === 'call' && leftArg.fn === 'today' &&
96
+ rightArg.type === 'duration_literal' && rightArg.value === 'P1D') {
97
+ return `${ctx.emit(leftArg)} - 1`;
98
+ }
99
+ const left = ctx.emitWithParens(args[0], '-', 'left');
100
+ const right = ctx.emitWithParens(args[1], '-', 'right');
101
+ return `${left} - ${right}`;
102
+ });
103
+ // datetime - duration uses the same operator, covered by any,any registration
104
+ // Date - Date returns a Duration (Rational in Ruby, convert to days)
105
+ rubyLib.register('sub', [types_1.Types.date, types_1.Types.date], (args, ctx) => {
106
+ const left = ctx.emitWithParens(args[0], '-', 'left');
107
+ const right = ctx.emitWithParens(args[1], '-', 'right');
108
+ return `(${left} - ${right}).to_i.days`;
109
+ });
110
+ rubyLib.register('sub', [types_1.Types.datetime, types_1.Types.datetime], (args, ctx) => {
111
+ const left = ctx.emitWithParens(args[0], '-', 'left');
112
+ const right = ctx.emitWithParens(args[1], '-', 'right');
113
+ return `((${left} - ${right}) * 86400).to_i.seconds`;
114
+ });
115
+ // Duration + Date/DateTime needs operand swap (Ruby doesn't support Duration + Date)
116
+ rubyLib.register('add', [types_1.Types.duration, types_1.Types.date], (args, ctx) => {
117
+ const left = ctx.emitWithParens(args[1], '+', 'left');
118
+ const right = ctx.emitWithParens(args[0], '+', 'right');
119
+ return `${left} + ${right}`;
120
+ });
121
+ rubyLib.register('add', [types_1.Types.duration, types_1.Types.datetime], (args, ctx) => {
122
+ const left = ctx.emitWithParens(args[1], '+', 'left');
123
+ const right = ctx.emitWithParens(args[0], '+', 'right');
124
+ return `${left} + ${right}`;
125
+ });
126
+ // Comparison operators - Ruby's operator overloading handles all types
127
+ // Type generalization will match any concrete type combination
128
+ rubyLib.register('lt', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('<'));
129
+ rubyLib.register('gt', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('>'));
130
+ rubyLib.register('lte', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('<='));
131
+ rubyLib.register('gte', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('>='));
132
+ rubyLib.register('eq', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('=='));
133
+ rubyLib.register('neq', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('!='));
134
+ // Logical operators
135
+ rubyLib.register('and', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('&&'));
136
+ rubyLib.register('or', [types_1.Types.any, types_1.Types.any], (0, stdlib_1.simpleBinaryOp)('||'));
137
+ // Unary operators - type generalization handles int, float, and any
138
+ rubyLib.register('neg', [types_1.Types.any], (args, ctx) => {
139
+ const operand = ctx.emit(args[0]);
140
+ if (isNativeBinaryOp(args[0]))
141
+ return `-(${operand})`;
142
+ return `-${operand}`;
143
+ });
144
+ rubyLib.register('pos', [types_1.Types.any], (args, ctx) => {
145
+ const operand = ctx.emit(args[0]);
146
+ if (isNativeBinaryOp(args[0]))
147
+ return `+(${operand})`;
148
+ return `+${operand}`;
149
+ });
150
+ rubyLib.register('not', [types_1.Types.any], (args, ctx) => {
151
+ const operand = ctx.emit(args[0]);
152
+ if (isNativeBinaryOp(args[0]))
153
+ return `!(${operand})`;
154
+ return `!${operand}`;
155
+ });
156
+ // Assert function - type generalization handles bool and any
157
+ rubyLib.register('assert', [types_1.Types.any], (args, ctx) => {
158
+ const condition = ctx.emit(args[0]);
159
+ return `(raise "Assertion failed" unless ${condition}; true)`;
160
+ });
161
+ rubyLib.register('assert', [types_1.Types.any, types_1.Types.string], (args, ctx) => {
162
+ const condition = ctx.emit(args[0]);
163
+ const message = ctx.emit(args[1]);
164
+ return `(raise ${message} unless ${condition}; true)`;
165
+ });
166
+ // AssertFails - expects a function to throw when called
167
+ rubyLib.register('assertFails', [types_1.Types.fn], (args, ctx) => {
168
+ const fn = ctx.emit(args[0]);
169
+ return `(begin; (${fn}).call; raise "Expected error but none thrown"; rescue => e; raise e if e.message == "Expected error but none thrown"; true; end)`;
170
+ });
171
+ // Array functions
172
+ rubyLib.register('length', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.length`);
173
+ // Use lambda to ensure nil for negative indices (Ruby's native [-1] returns last element)
174
+ rubyLib.register('at', [types_1.Types.array, types_1.Types.int], (args, ctx) => `(->(a, i) { i >= 0 && i < a.length ? a[i] : nil }).call(${ctx.emit(args[0])}, ${ctx.emit(args[1])})`);
175
+ rubyLib.register('first', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.first`);
176
+ rubyLib.register('last', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.last`);
177
+ rubyLib.register('isEmpty', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.empty?`);
178
+ // Array iteration functions (register for both array and any to support dynamic types)
179
+ for (const t of [types_1.Types.array, types_1.Types.any]) {
180
+ rubyLib.register('map', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.map(&${ctx.emit(args[1])})`);
181
+ rubyLib.register('filter', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.select(&${ctx.emit(args[1])})`);
182
+ rubyLib.register('reduce', [t, types_1.Types.any, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.reduce(${ctx.emit(args[1])}, &${ctx.emit(args[2])})`);
183
+ rubyLib.register('any', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.any?(&${ctx.emit(args[1])})`);
184
+ rubyLib.register('all', [t, types_1.Types.fn], (args, ctx) => `${ctx.emit(args[0])}.all?(&${ctx.emit(args[1])})`);
185
+ }
186
+ // String functions (register for string and any to support lambdas with unknown types)
187
+ // Use rubyMethod to handle binary expression precedence
188
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
189
+ rubyLib.register('length', [t], (0, stdlib_1.rubyMethod)('length'));
190
+ rubyLib.register('upper', [t], (0, stdlib_1.rubyMethod)('upcase'));
191
+ rubyLib.register('lower', [t], (0, stdlib_1.rubyMethod)('downcase'));
192
+ rubyLib.register('trim', [t], (0, stdlib_1.rubyMethod)('strip'));
193
+ rubyLib.register('isEmpty', [t], (0, stdlib_1.rubyMethod)('empty?'));
194
+ }
195
+ // Helper for method calls with arguments - wraps receiver in parens if needed
196
+ const wrapReceiver = (args, ctx) => {
197
+ const operand = ctx.emit(args[0]);
198
+ return (0, stdlib_1.isBinaryOp)(args[0]) ? `(${operand})` : operand;
199
+ };
200
+ // String functions with two args
201
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
202
+ rubyLib.register('startsWith', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.start_with?(${ctx.emit(args[1])})`);
203
+ rubyLib.register('endsWith', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.end_with?(${ctx.emit(args[1])})`);
204
+ rubyLib.register('contains', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.include?(${ctx.emit(args[1])})`);
205
+ rubyLib.register('concat', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.concat(${ctx.emit(args[1])})`);
206
+ // indexOf returns nil when not found (Ruby's index already does this)
207
+ rubyLib.register('indexOf', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.index(${ctx.emit(args[1])})`);
208
+ }
209
+ // String functions with three args
210
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
211
+ rubyLib.register('substring', [t, types_1.Types.int, types_1.Types.int], (args, ctx) => `${wrapReceiver(args, ctx)}[${ctx.emit(args[1])}, ${ctx.emit(args[2])}]`);
212
+ rubyLib.register('replace', [t, types_1.Types.string, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.sub(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
213
+ rubyLib.register('replaceAll', [t, types_1.Types.string, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.gsub(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
214
+ rubyLib.register('padStart', [t, types_1.Types.int, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.rjust(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
215
+ rubyLib.register('padEnd', [t, types_1.Types.int, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.ljust(${ctx.emit(args[1])}, ${ctx.emit(args[2])})`);
216
+ }
217
+ // Numeric functions (use rubyMethod to handle binary op precedence)
218
+ // For int, round/floor/ceil are identity operations (optimization)
219
+ // For float and any, use the method (which also works correctly for ints)
220
+ rubyLib.register('abs', [types_1.Types.int], (0, stdlib_1.rubyMethod)('abs'));
221
+ rubyLib.register('abs', [types_1.Types.float], (0, stdlib_1.rubyMethod)('abs'));
222
+ rubyLib.register('round', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
223
+ rubyLib.register('round', [types_1.Types.float], (0, stdlib_1.rubyMethod)('round'));
224
+ rubyLib.register('round', [types_1.Types.any], (0, stdlib_1.rubyMethod)('round')); // Safe for any numeric type
225
+ rubyLib.register('floor', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
226
+ rubyLib.register('floor', [types_1.Types.float], (0, stdlib_1.rubyMethod)('floor'));
227
+ rubyLib.register('floor', [types_1.Types.any], (0, stdlib_1.rubyMethod)('floor')); // Safe for any numeric type
228
+ rubyLib.register('ceil', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
229
+ rubyLib.register('ceil', [types_1.Types.float], (0, stdlib_1.rubyMethod)('ceil'));
230
+ rubyLib.register('ceil', [types_1.Types.any], (0, stdlib_1.rubyMethod)('ceil')); // Safe for any numeric type
231
+ // Temporal extraction functions
232
+ rubyLib.register('year', [types_1.Types.date], (args, ctx) => `${ctx.emit(args[0])}.year`);
233
+ rubyLib.register('year', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.year`);
234
+ rubyLib.register('month', [types_1.Types.date], (args, ctx) => `${ctx.emit(args[0])}.month`);
235
+ rubyLib.register('month', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.month`);
236
+ rubyLib.register('day', [types_1.Types.date], (args, ctx) => `${ctx.emit(args[0])}.day`);
237
+ rubyLib.register('day', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.day`);
238
+ rubyLib.register('hour', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.hour`);
239
+ rubyLib.register('minute', [types_1.Types.datetime], (args, ctx) => `${ctx.emit(args[0])}.minute`);
240
+ // Type introspection
241
+ rubyLib.register('typeOf', [types_1.Types.any], (args, ctx) => {
242
+ const v = ctx.emit(args[0]);
243
+ return `(->(v) { case v when NilClass; 'Null' when ActiveSupport::Duration; 'Duration' when Date, DateTime, Time; 'DateTime' when Integer; 'Int' when Float; 'Float' when TrueClass, FalseClass; 'Bool' when String; 'String' when Proc; 'Function' when Array; 'List' else 'Tuple' end }).call(${v})`;
244
+ });
245
+ // Null handling
246
+ rubyLib.register('isNull', [types_1.Types.any], (args, ctx) => `(${ctx.emit(args[0])}).nil?`);
247
+ // Data path navigation
248
+ rubyLib.register('fetch', [types_1.Types.any, types_1.Types.fn], (args, ctx) => {
249
+ const data = ctx.emit(args[0]);
250
+ const path = ctx.emit(args[1]);
251
+ return `(->(d, p) { p.reduce(d) { |cur, seg| break nil if cur.nil?; seg.is_a?(Integer) ? (cur.is_a?(Array) ? cur[seg] : nil) : (cur.is_a?(Hash) ? cur[seg] : nil) } }).call(${data}, ${path})`;
252
+ });
253
+ rubyLib.register('patch', [types_1.Types.any, types_1.Types.fn, types_1.Types.any], (args, ctx) => {
254
+ ctx.requireHelper?.('k_patch');
255
+ const data = ctx.emit(args[0]);
256
+ const path = ctx.emit(args[1]);
257
+ const value = ctx.emit(args[2]);
258
+ return `k_patch(${data}, ${path}, ${value})`;
259
+ });
260
+ // Data merge functions
261
+ rubyLib.register('merge', [types_1.Types.any, types_1.Types.any], (args, ctx) => {
262
+ const a = ctx.emit(args[0]);
263
+ const b = ctx.emit(args[1]);
264
+ return `(${a}).merge(${b})`;
265
+ });
266
+ rubyLib.register('deepMerge', [types_1.Types.any, types_1.Types.any], (args, ctx) => {
267
+ ctx.requireHelper?.('k_deep_merge');
268
+ const a = ctx.emit(args[0]);
269
+ const b = ctx.emit(args[1]);
270
+ return `k_deep_merge(${a}, ${b})`;
271
+ });
272
+ // Error handling
273
+ rubyLib.register('fail', [types_1.Types.string], (args, ctx) => {
274
+ const message = ctx.emit(args[0]);
275
+ return `raise ${message}`;
276
+ });
277
+ // Type selectors (Finitio schemas - throw on failure)
278
+ // Int - identity for int, truncate for float, parse for string
279
+ rubyLib.register('Int', [types_1.Types.int], (args, ctx) => ctx.emit(args[0]));
280
+ rubyLib.register('Int', [types_1.Types.float], (args, ctx) => `${ctx.emit(args[0])}.to_i`);
281
+ rubyLib.register('Int', [types_1.Types.string], (args, ctx) => {
282
+ const v = ctx.emit(args[0]);
283
+ return `(->(s) { Integer(s) rescue raise ".: expected Int, got #{s.inspect}" }).call(${v})`;
284
+ });
285
+ rubyLib.register('Int', [types_1.Types.any], (args, ctx) => {
286
+ const v = ctx.emit(args[0]);
287
+ return `(->(v) { case v when Integer; v when Float; v.to_i when String; Integer(v) rescue raise ".: expected Int, got #{v.inspect}" else raise ".: expected Int, got #{v.class}" end }).call(${v})`;
288
+ });
289
+ // Float - identity for float, convert for int, parse for string
290
+ rubyLib.register('Float', [types_1.Types.float], (args, ctx) => ctx.emit(args[0]));
291
+ rubyLib.register('Float', [types_1.Types.int], (args, ctx) => `${ctx.emit(args[0])}.to_f`);
292
+ rubyLib.register('Float', [types_1.Types.string], (args, ctx) => {
293
+ const v = ctx.emit(args[0]);
294
+ return `(->(s) { Float(s) rescue raise ".: expected Float, got #{s.inspect}" }).call(${v})`;
295
+ });
296
+ rubyLib.register('Float', [types_1.Types.any], (args, ctx) => {
297
+ const v = ctx.emit(args[0]);
298
+ return `(->(v) { case v when Float; v when Integer; v.to_f when String; Float(v) rescue raise ".: expected Float, got #{v.inspect}" else raise ".: expected Float, got #{v.class}" end }).call(${v})`;
299
+ });
300
+ // Bool - identity for bool, parse "true"/"false" for string
301
+ rubyLib.register('Bool', [types_1.Types.bool], (args, ctx) => ctx.emit(args[0]));
302
+ rubyLib.register('Bool', [types_1.Types.string], (args, ctx) => {
303
+ const v = ctx.emit(args[0]);
304
+ return `(->(s) { case s when 'true'; true when 'false'; false else raise ".: expected Bool, got #{s.inspect}" end }).call(${v})`;
305
+ });
306
+ rubyLib.register('Bool', [types_1.Types.any], (args, ctx) => {
307
+ const v = ctx.emit(args[0]);
308
+ return `(->(v) { case v when true, false; v when 'true'; true when 'false'; false else raise ".: expected Bool, got #{v.class}" end }).call(${v})`;
309
+ });
310
+ // Date - identity for date, parse ISO for string
311
+ rubyLib.register('Date', [types_1.Types.date], (args, ctx) => ctx.emit(args[0]));
312
+ rubyLib.register('Date', [types_1.Types.string], (args, ctx) => {
313
+ const v = ctx.emit(args[0]);
314
+ return `(->(s) { raise ".: expected Date (YYYY-MM-DD), got #{s.inspect}" unless s =~ /^\\d{4}-\\d{2}-\\d{2}$/; Date.parse(s) }).call(${v})`;
315
+ });
316
+ rubyLib.register('Date', [types_1.Types.any], (args, ctx) => {
317
+ const v = ctx.emit(args[0]);
318
+ return `(->(v) { case v when Date; v when String; raise ".: expected Date (YYYY-MM-DD), got #{v.inspect}" unless v =~ /^\\d{4}-\\d{2}-\\d{2}$/; Date.parse(v) else raise ".: expected Date, got #{v.class}" end }).call(${v})`;
319
+ });
320
+ // Datetime - identity for datetime, parse ISO for string
321
+ rubyLib.register('Datetime', [types_1.Types.datetime], (args, ctx) => ctx.emit(args[0]));
322
+ rubyLib.register('Datetime', [types_1.Types.string], (args, ctx) => {
323
+ const v = ctx.emit(args[0]);
324
+ return `(->(s) { DateTime.parse(s) rescue raise ".: expected Datetime, got invalid datetime #{s.inspect}" }).call(${v})`;
325
+ });
326
+ rubyLib.register('Datetime', [types_1.Types.any], (args, ctx) => {
327
+ const v = ctx.emit(args[0]);
328
+ return `(->(v) { case v when DateTime, Time; v when String; DateTime.parse(v) rescue raise ".: expected Datetime, got #{v.inspect}" else raise ".: expected Datetime, got #{v.class}" end }).call(${v})`;
329
+ });
330
+ // Duration - identity for duration, parse ISO for string
331
+ rubyLib.register('Duration', [types_1.Types.duration], (args, ctx) => ctx.emit(args[0]));
332
+ rubyLib.register('Duration', [types_1.Types.string], (args, ctx) => {
333
+ const v = ctx.emit(args[0]);
334
+ return `(->(s) { ActiveSupport::Duration.parse(s) rescue raise ".: expected Duration (ISO 8601), got #{s.inspect}" }).call(${v})`;
335
+ });
336
+ rubyLib.register('Duration', [types_1.Types.any], (args, ctx) => {
337
+ const v = ctx.emit(args[0]);
338
+ return `(->(v) { case v when ActiveSupport::Duration; v when String; ActiveSupport::Duration.parse(v) rescue raise ".: expected Duration (ISO 8601), got #{v.inspect}" else raise ".: expected Duration, got #{v.class}" end }).call(${v})`;
339
+ });
340
+ // Data - identity for non-strings, parse JSON for strings
341
+ rubyLib.register('Data', [types_1.Types.array], (args, ctx) => ctx.emit(args[0]));
342
+ rubyLib.register('Data', [types_1.Types.object], (args, ctx) => ctx.emit(args[0]));
343
+ rubyLib.register('Data', [types_1.Types.string], (args, ctx) => {
344
+ const v = ctx.emit(args[0]);
345
+ return `(->(s) { JSON.parse(s, symbolize_names: true) rescue raise ".: invalid JSON: #{s.inspect}" }).call(${v})`;
346
+ });
347
+ rubyLib.register('Data', [types_1.Types.any], (args, ctx) => {
348
+ const v = ctx.emit(args[0]);
349
+ return `(->(v) { case v when String; JSON.parse(v, symbolize_names: true) rescue raise ".: invalid JSON: #{v.inspect}" else v end }).call(${v})`;
350
+ });
351
+ // List manipulation functions
352
+ rubyLib.register('reverse', [types_1.Types.array], (args, ctx) => `${ctx.emit(args[0])}.reverse`);
353
+ // Join list elements with separator
354
+ for (const t of [types_1.Types.array, types_1.Types.any]) {
355
+ rubyLib.register('join', [t, types_1.Types.string], (args, ctx) => `${ctx.emit(args[0])}.join(${ctx.emit(args[1])})`);
356
+ }
357
+ // Split string into list
358
+ for (const t of [types_1.Types.string, types_1.Types.any]) {
359
+ rubyLib.register('split', [t, types_1.Types.string], (args, ctx) => `${wrapReceiver(args, ctx)}.split(${ctx.emit(args[1])})`);
360
+ }
361
+ // No fallback - unknown functions should fail at compile time
362
+ // (StdLib.emit() will throw if no implementation is found)
363
+ return rubyLib;
364
+ }
365
+ //# sourceMappingURL=ruby.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../src/bindings/ruby.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SQL (PostgreSQL) stdlib binding for Elo
3
+ *
4
+ * This module defines how Elo IR functions are emitted as PostgreSQL SQL code.
5
+ */
6
+ import { IRExpr } from '../ir';
7
+ import { StdLib } from '../stdlib';
8
+ /**
9
+ * Map IR function names to SQL operators
10
+ */
11
+ export declare const SQL_OP_MAP: Record<string, string>;
12
+ /**
13
+ * Check if a call will be emitted as a native SQL binary operator
14
+ */
15
+ export declare function isNativeBinaryOp(ir: IRExpr): boolean;
16
+ /**
17
+ * Create the SQL standard library binding
18
+ */
19
+ export declare function createSQLBinding(): StdLib<string>;
20
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../src/bindings/sql.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAgC,MAAM,WAAW,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI7C,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGpD;AAaD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,CA2UjD"}