@enspirit/elo 0.9.7 → 0.9.8
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/README.md +8 -3
- package/dist/src/bindings/python.d.ts +20 -0
- package/dist/src/bindings/python.d.ts.map +1 -0
- package/dist/src/bindings/python.js +403 -0
- package/dist/src/bindings/python.js.map +1 -0
- package/dist/src/compilers/python.d.ts +28 -0
- package/dist/src/compilers/python.d.ts.map +1 -0
- package/dist/src/compilers/python.js +297 -0
- package/dist/src/compilers/python.js.map +1 -0
- package/dist/src/eloc.js +12 -4
- package/dist/src/eloc.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/preludes/index.d.ts +1 -1
- package/dist/src/preludes/index.d.ts.map +1 -1
- package/dist/src/preludes/index.js +13 -1
- package/dist/src/preludes/index.js.map +1 -1
- package/dist/src/runtime.d.ts +7 -0
- package/dist/src/runtime.d.ts.map +1 -1
- package/dist/src/runtime.js +403 -1
- package/dist/src/runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compileToPython = compileToPython;
|
|
4
|
+
exports.compileToPythonWithMeta = compileToPythonWithMeta;
|
|
5
|
+
const ir_1 = require("../ir");
|
|
6
|
+
const transform_1 = require("../transform");
|
|
7
|
+
const python_1 = require("../bindings/python");
|
|
8
|
+
const runtime_1 = require("../runtime");
|
|
9
|
+
/**
|
|
10
|
+
* Python operator precedence (higher = binds tighter)
|
|
11
|
+
*/
|
|
12
|
+
const PY_PRECEDENCE = {
|
|
13
|
+
'or': 0,
|
|
14
|
+
'and': 1,
|
|
15
|
+
'==': 2, '!=': 2,
|
|
16
|
+
'<': 3, '>': 3, '<=': 3, '>=': 3,
|
|
17
|
+
'+': 4, '-': 4,
|
|
18
|
+
'*': 5, '/': 5, '%': 5,
|
|
19
|
+
'**': 6,
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Check if an IR expression needs parentheses when used as child of a binary op
|
|
23
|
+
*/
|
|
24
|
+
function needsParens(child, parentOp, side) {
|
|
25
|
+
if (!(0, python_1.isNativeBinaryOp)(child))
|
|
26
|
+
return false;
|
|
27
|
+
const call = child;
|
|
28
|
+
const childOp = python_1.PYTHON_OP_MAP[call.fn];
|
|
29
|
+
if (!childOp)
|
|
30
|
+
return false;
|
|
31
|
+
const parentPrec = PY_PRECEDENCE[parentOp] || 0;
|
|
32
|
+
const childPrec = PY_PRECEDENCE[childOp] || 0;
|
|
33
|
+
if (childPrec < parentPrec)
|
|
34
|
+
return true;
|
|
35
|
+
if (childPrec === parentPrec && side === 'right' && (parentOp === '-' || parentOp === '/')) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
// Non-associative operators need parens when chained
|
|
39
|
+
const nonAssociative = ['==', '!=', '<', '>', '<=', '>='];
|
|
40
|
+
if (childPrec === parentPrec && nonAssociative.includes(parentOp) && nonAssociative.includes(childOp)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
// Create the Python standard library binding
|
|
46
|
+
const pyLib = (0, python_1.createPythonBinding)();
|
|
47
|
+
/**
|
|
48
|
+
* Compiles Elo expressions to Python code
|
|
49
|
+
*/
|
|
50
|
+
function compileToPython(expr, options) {
|
|
51
|
+
const result = compileToPythonWithMeta(expr, options);
|
|
52
|
+
return result.code;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Compiles Elo expressions to Python with metadata about input usage.
|
|
56
|
+
*/
|
|
57
|
+
function compileToPythonWithMeta(expr, options) {
|
|
58
|
+
const ir = (0, transform_1.transform)(expr);
|
|
59
|
+
const actuallyUsesInput = (0, ir_1.usesInput)(ir);
|
|
60
|
+
const emitOptions = { stripGuards: options?.stripGuards || false };
|
|
61
|
+
const result = emitPyWithHelpers(ir, emitOptions);
|
|
62
|
+
// Resolve helper dependencies
|
|
63
|
+
const allHelpers = new Set(result.requiredHelpers);
|
|
64
|
+
for (const helper of result.requiredHelpers) {
|
|
65
|
+
const deps = runtime_1.PY_HELPER_DEPS[helper];
|
|
66
|
+
if (deps) {
|
|
67
|
+
for (const dep of deps) {
|
|
68
|
+
allHelpers.add(dep);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Helpers are provided by the prelude (--prelude-only), not embedded per-expression.
|
|
73
|
+
// Wrap as lambda: (lambda _: CODE)(None)
|
|
74
|
+
const suffix = options?.execute ? '(None)' : '';
|
|
75
|
+
return { code: `(lambda _: ${result.code})${suffix}`, usesInput: actuallyUsesInput };
|
|
76
|
+
}
|
|
77
|
+
function emitPyWithHelpers(ir, options) {
|
|
78
|
+
const requiredHelpers = new Set();
|
|
79
|
+
const code = emitPy(ir, requiredHelpers, options);
|
|
80
|
+
return { code, requiredHelpers };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Emit Python code from IR
|
|
84
|
+
*/
|
|
85
|
+
function emitPy(ir, requiredHelpers, options) {
|
|
86
|
+
const ctx = {
|
|
87
|
+
emit: (child) => emitPy(child, requiredHelpers, options),
|
|
88
|
+
emitWithParens: (child, parentOp, side) => {
|
|
89
|
+
const emitted = emitPy(child, requiredHelpers, options);
|
|
90
|
+
if (needsParens(child, parentOp, side)) {
|
|
91
|
+
return `(${emitted})`;
|
|
92
|
+
}
|
|
93
|
+
return emitted;
|
|
94
|
+
},
|
|
95
|
+
requireHelper: requiredHelpers ? (name) => requiredHelpers.add(name) : undefined,
|
|
96
|
+
};
|
|
97
|
+
switch (ir.type) {
|
|
98
|
+
case 'int_literal':
|
|
99
|
+
case 'float_literal':
|
|
100
|
+
return ir.value.toString();
|
|
101
|
+
case 'bool_literal':
|
|
102
|
+
return ir.value ? 'True' : 'False';
|
|
103
|
+
case 'null_literal':
|
|
104
|
+
return 'None';
|
|
105
|
+
case 'string_literal':
|
|
106
|
+
return JSON.stringify(ir.value);
|
|
107
|
+
case 'date_literal': {
|
|
108
|
+
// Parse date string to emit as _elo_dt(y, m, d)
|
|
109
|
+
const [y, m, d] = ir.value.split('-').map(Number);
|
|
110
|
+
return `_elo_dt(${y}, ${m}, ${d})`;
|
|
111
|
+
}
|
|
112
|
+
case 'datetime_literal': {
|
|
113
|
+
// Parse datetime string: "2024-01-15T10:30:00" or "2024-01-15T10:30:00Z"
|
|
114
|
+
const dtVal = ir.value.replace(/Z$/, '');
|
|
115
|
+
const [datePart, timePart] = dtVal.split('T');
|
|
116
|
+
const [dy, dm, dd] = datePart.split('-').map(Number);
|
|
117
|
+
if (timePart) {
|
|
118
|
+
const [th, tm, ts] = timePart.split(':').map(Number);
|
|
119
|
+
return `_elo_dt(${dy}, ${dm}, ${dd}, ${th}, ${tm}, ${ts || 0})`;
|
|
120
|
+
}
|
|
121
|
+
return `_elo_dt(${dy}, ${dm}, ${dd})`;
|
|
122
|
+
}
|
|
123
|
+
case 'duration_literal':
|
|
124
|
+
return `EloDuration.from_iso(${JSON.stringify(ir.value)})`;
|
|
125
|
+
case 'object_literal': {
|
|
126
|
+
const props = ir.properties.map(p => `${JSON.stringify(p.key)}: ${ctx.emit(p.value)}`).join(', ');
|
|
127
|
+
return `{${props}}`;
|
|
128
|
+
}
|
|
129
|
+
case 'array_literal': {
|
|
130
|
+
const elements = ir.elements.map(e => ctx.emit(e)).join(', ');
|
|
131
|
+
return `[${elements}]`;
|
|
132
|
+
}
|
|
133
|
+
case 'variable':
|
|
134
|
+
return ir.name;
|
|
135
|
+
case 'member_access': {
|
|
136
|
+
const object = ctx.emit(ir.object);
|
|
137
|
+
// Use .get() for safe access (returns None for missing keys)
|
|
138
|
+
return `${object}.get(${JSON.stringify(ir.property)})`;
|
|
139
|
+
}
|
|
140
|
+
case 'let': {
|
|
141
|
+
// Use walrus operator: (x := val, body)[-1]
|
|
142
|
+
// For multiple bindings, chain: (a := 1, b := 2, body)[-1]
|
|
143
|
+
const allBindings = [];
|
|
144
|
+
let current = ir;
|
|
145
|
+
while (current.type === 'let') {
|
|
146
|
+
for (const b of current.bindings) {
|
|
147
|
+
allBindings.push({ name: b.name, value: ctx.emit(b.value) });
|
|
148
|
+
}
|
|
149
|
+
current = current.body;
|
|
150
|
+
}
|
|
151
|
+
const body = ctx.emit(current);
|
|
152
|
+
const assignments = allBindings.map(b => `${b.name} := ${b.value}`);
|
|
153
|
+
return `(${[...assignments, body].join(', ')})[-1]`;
|
|
154
|
+
}
|
|
155
|
+
case 'call':
|
|
156
|
+
return pyLib.emit(ir.fn, ir.args, ir.argTypes, ctx);
|
|
157
|
+
case 'if': {
|
|
158
|
+
const cond = ctx.emit(ir.condition);
|
|
159
|
+
const thenBranch = ctx.emit(ir.then);
|
|
160
|
+
const elseBranch = ctx.emit(ir.else);
|
|
161
|
+
return `(${thenBranch}) if (${cond}) else (${elseBranch})`;
|
|
162
|
+
}
|
|
163
|
+
case 'lambda': {
|
|
164
|
+
const params = ir.params.map(p => p.name).join(', ');
|
|
165
|
+
const body = ctx.emit(ir.body);
|
|
166
|
+
return `lambda ${params}: ${body}`;
|
|
167
|
+
}
|
|
168
|
+
case 'apply': {
|
|
169
|
+
const fn = ctx.emit(ir.fn);
|
|
170
|
+
const args = ir.args.map(a => ctx.emit(a)).join(', ');
|
|
171
|
+
// Wrap lambda in parens
|
|
172
|
+
const needsParensWrap = ir.fn.type === 'lambda';
|
|
173
|
+
const fnExpr = needsParensWrap ? `(${fn})` : fn;
|
|
174
|
+
return `${fnExpr}(${args})`;
|
|
175
|
+
}
|
|
176
|
+
case 'alternative': {
|
|
177
|
+
// Null-coalescing: (lambda: v if (v := a) is not None else b)()
|
|
178
|
+
// For simplicity, use nested ternary
|
|
179
|
+
const alts = ir.alternatives;
|
|
180
|
+
if (alts.length === 1)
|
|
181
|
+
return ctx.emit(alts[0]);
|
|
182
|
+
// Build from right: last is default, each prior checks for None
|
|
183
|
+
let result = ctx.emit(alts[alts.length - 1]);
|
|
184
|
+
for (let i = alts.length - 2; i >= 0; i--) {
|
|
185
|
+
const alt = ctx.emit(alts[i]);
|
|
186
|
+
const tmpVar = `_alt${i}`;
|
|
187
|
+
result = `(${tmpVar}) if (${tmpVar} := ${alt}) is not None else (${result})`;
|
|
188
|
+
}
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
case 'datapath': {
|
|
192
|
+
const segments = ir.segments.map(s => typeof s === 'string' ? JSON.stringify(s) : s.toString());
|
|
193
|
+
return `[${segments.join(', ')}]`;
|
|
194
|
+
}
|
|
195
|
+
case 'typedef': {
|
|
196
|
+
// Generate parser function for the type and bind it
|
|
197
|
+
const parserCode = emitTypeExprParser(ir.typeExpr, ctx);
|
|
198
|
+
ctx.requireHelper?.('pUnwrap');
|
|
199
|
+
const body = ctx.emit(ir.body);
|
|
200
|
+
// Use walrus pattern: (_p_Name := parser, Name := lambda v: pUnwrap(_p_Name(v, '')), body)[-1]
|
|
201
|
+
return `(_p_${ir.name} := ${parserCode}, ${ir.name} := lambda v: pUnwrap(_p_${ir.name}(v, '')), ${body})[-1]`;
|
|
202
|
+
}
|
|
203
|
+
case 'guard': {
|
|
204
|
+
const body = ctx.emit(ir.body);
|
|
205
|
+
if (options?.stripGuards) {
|
|
206
|
+
return body;
|
|
207
|
+
}
|
|
208
|
+
// Generate guard checks using kAssert helper
|
|
209
|
+
ctx.requireHelper?.('kAssert');
|
|
210
|
+
const guardChecks = ir.constraints.map(c => {
|
|
211
|
+
const conditionCode = ctx.emit(c.condition);
|
|
212
|
+
const errorMsg = c.label
|
|
213
|
+
? (c.label.includes(' ') ? c.label : `${ir.guardType} '${c.label}' failed`)
|
|
214
|
+
: `${ir.guardType} failed`;
|
|
215
|
+
return `kAssert(${conditionCode}, ${JSON.stringify(errorMsg)})`;
|
|
216
|
+
});
|
|
217
|
+
// Chain with tuple: (check1, check2, body)[-1]
|
|
218
|
+
return `(${[...guardChecks, body].join(', ')})[-1]`;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Emit a parser expression for a type expression in Python.
|
|
224
|
+
* Uses combinator helpers (pSchema, pArray, pUnion, pSubtype) so that
|
|
225
|
+
* each result is a single expression compatible with walrus-operator chains.
|
|
226
|
+
*/
|
|
227
|
+
function emitTypeExprParser(typeExpr, ctx) {
|
|
228
|
+
switch (typeExpr.kind) {
|
|
229
|
+
case 'type_ref': {
|
|
230
|
+
const parserMap = {
|
|
231
|
+
'Any': 'pAny',
|
|
232
|
+
'Null': 'pNull',
|
|
233
|
+
'String': 'pString',
|
|
234
|
+
'Int': 'pInt',
|
|
235
|
+
'Float': 'pFloat',
|
|
236
|
+
'Bool': 'pBool',
|
|
237
|
+
'Boolean': 'pBool',
|
|
238
|
+
'Datetime': 'pDatetime',
|
|
239
|
+
};
|
|
240
|
+
const parserName = parserMap[typeExpr.name];
|
|
241
|
+
if (parserName) {
|
|
242
|
+
ctx.requireHelper?.(parserName);
|
|
243
|
+
return parserName;
|
|
244
|
+
}
|
|
245
|
+
// User-defined type reference
|
|
246
|
+
const firstChar = typeExpr.name.charAt(0);
|
|
247
|
+
if (firstChar === firstChar.toUpperCase() && firstChar !== firstChar.toLowerCase()) {
|
|
248
|
+
return `_p_${typeExpr.name}`;
|
|
249
|
+
}
|
|
250
|
+
throw new Error(`Unknown type in type definition: ${typeExpr.name}`);
|
|
251
|
+
}
|
|
252
|
+
case 'type_schema': {
|
|
253
|
+
ctx.requireHelper?.('pSchema');
|
|
254
|
+
const propEntries = typeExpr.properties.map(prop => {
|
|
255
|
+
const propParser = emitTypeExprParser(prop.typeExpr, ctx);
|
|
256
|
+
return `(${JSON.stringify(prop.key)}, ${propParser}, ${prop.optional ? 'True' : 'False'})`;
|
|
257
|
+
});
|
|
258
|
+
let extrasMode;
|
|
259
|
+
let extrasParser = 'None';
|
|
260
|
+
if (typeExpr.extras === undefined || typeExpr.extras === 'closed') {
|
|
261
|
+
extrasMode = '"closed"';
|
|
262
|
+
}
|
|
263
|
+
else if (typeExpr.extras === 'ignored') {
|
|
264
|
+
extrasMode = '"ignored"';
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
extrasMode = '"typed"';
|
|
268
|
+
extrasParser = emitTypeExprParser(typeExpr.extras, ctx);
|
|
269
|
+
}
|
|
270
|
+
return `pSchema([${propEntries.join(', ')}], ${extrasMode}, ${extrasParser})`;
|
|
271
|
+
}
|
|
272
|
+
case 'subtype_constraint': {
|
|
273
|
+
ctx.requireHelper?.('pSubtype');
|
|
274
|
+
const baseParser = emitTypeExprParser(typeExpr.baseType, ctx);
|
|
275
|
+
const varName = typeExpr.variable;
|
|
276
|
+
const checks = typeExpr.constraints.map(c => {
|
|
277
|
+
const conditionCode = ctx.emit(c.condition);
|
|
278
|
+
const errorMsg = c.label
|
|
279
|
+
? (c.label.includes(' ') ? c.label : `constraint '${c.label}' failed`)
|
|
280
|
+
: 'constraint failed';
|
|
281
|
+
return `(${JSON.stringify(errorMsg)}, lambda ${varName}: ${conditionCode})`;
|
|
282
|
+
});
|
|
283
|
+
return `pSubtype(${baseParser}, [${checks.join(', ')}])`;
|
|
284
|
+
}
|
|
285
|
+
case 'array_type': {
|
|
286
|
+
ctx.requireHelper?.('pArray');
|
|
287
|
+
const elemParser = emitTypeExprParser(typeExpr.elementType, ctx);
|
|
288
|
+
return `pArray(${elemParser})`;
|
|
289
|
+
}
|
|
290
|
+
case 'union_type': {
|
|
291
|
+
ctx.requireHelper?.('pUnion');
|
|
292
|
+
const parsers = typeExpr.types.map(t => emitTypeExprParser(t, ctx));
|
|
293
|
+
return `pUnion([${parsers.join(', ')}])`;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/compilers/python.ts"],"names":[],"mappings":"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"}
|
package/dist/src/eloc.js
CHANGED
|
@@ -6,12 +6,15 @@ const parser_1 = require("./parser");
|
|
|
6
6
|
const ruby_1 = require("./compilers/ruby");
|
|
7
7
|
const javascript_1 = require("./compilers/javascript");
|
|
8
8
|
const sql_1 = require("./compilers/sql");
|
|
9
|
+
const python_1 = require("./compilers/python");
|
|
9
10
|
const preludes_1 = require("./preludes");
|
|
10
11
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
11
12
|
const pkg = require('../../package.json');
|
|
12
13
|
// Map CLI target names to prelude target names
|
|
13
14
|
function toPreludeTarget(target) {
|
|
14
|
-
|
|
15
|
+
if (target === 'js')
|
|
16
|
+
return 'javascript';
|
|
17
|
+
return target;
|
|
15
18
|
}
|
|
16
19
|
function parseArgs(args) {
|
|
17
20
|
const options = {
|
|
@@ -31,8 +34,8 @@ function parseArgs(args) {
|
|
|
31
34
|
case '-t':
|
|
32
35
|
case '--target':
|
|
33
36
|
const target = args[++i];
|
|
34
|
-
if (target !== 'ruby' && target !== 'js' && target !== 'sql') {
|
|
35
|
-
console.error(`Invalid target: ${target}. Must be one of: ruby, js, sql`);
|
|
37
|
+
if (target !== 'ruby' && target !== 'js' && target !== 'sql' && target !== 'python') {
|
|
38
|
+
console.error(`Invalid target: ${target}. Must be one of: ruby, js, sql, python`);
|
|
36
39
|
process.exit(1);
|
|
37
40
|
}
|
|
38
41
|
options.target = target;
|
|
@@ -88,7 +91,7 @@ Usage:
|
|
|
88
91
|
|
|
89
92
|
Options:
|
|
90
93
|
-e, --expression <expr> Expression to compile (like ruby -e)
|
|
91
|
-
-t, --target <lang> Target language: ruby, js (default), sql
|
|
94
|
+
-t, --target <lang> Target language: ruby, js (default), sql, python
|
|
92
95
|
-x, --execute Output self-executing code (calls function with null/nil)
|
|
93
96
|
-p, --prelude Include necessary library imports/requires
|
|
94
97
|
--prelude-only Output only the prelude (no expression needed)
|
|
@@ -148,6 +151,11 @@ function compile(source, target, options = {}) {
|
|
|
148
151
|
code = result.code;
|
|
149
152
|
break;
|
|
150
153
|
}
|
|
154
|
+
case 'python': {
|
|
155
|
+
const result = (0, python_1.compileToPythonWithMeta)(ast, { execute, stripGuards });
|
|
156
|
+
code = result.code;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
151
159
|
}
|
|
152
160
|
if (includePrelude) {
|
|
153
161
|
const preludeContent = (0, preludes_1.getPrelude)(toPreludeTarget(target));
|
package/dist/src/eloc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":";;;AAEA,2BAAiD;AACjD,qCAAiC;AACjC,2CAAyD;AACzD,uDAAqE;AACrE,yCAAuD;AACvD,yCAAiE;AAEjE,8DAA8D;AAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAI1C,+CAA+C;AAC/C,SAAS,eAAe,CAAC,MAAc;IACrC,
|
|
1
|
+
{"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export { compileToJavaScript, compileToJavaScriptWithMeta } from './compilers/ja
|
|
|
11
11
|
export type { JavaScriptCompileOptions, JavaScriptCompileResult } from './compilers/javascript';
|
|
12
12
|
export { compileToSQL } from './compilers/sql';
|
|
13
13
|
export type { SQLCompileOptions } from './compilers/sql';
|
|
14
|
+
export { compileToPython } from './compilers/python';
|
|
15
|
+
export type { PythonCompileOptions } from './compilers/python';
|
|
14
16
|
export { JS_HELPERS } from './runtime';
|
|
15
17
|
export { getPrelude } from './preludes';
|
|
16
18
|
export type { Target as PreludeTarget } from './preludes';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1F,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1F,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,WAAW,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
17
17
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.getFormat = exports.defaultFormats = exports.eloAdapter = exports.csvAdapter = exports.jsonAdapter = exports.toCSV = exports.parseCSV = exports.toEloCode = exports.getPrelude = exports.JS_HELPERS = exports.compileToSQL = exports.compileToJavaScriptWithMeta = exports.compileToJavaScript = exports.compileToRuby = exports.compile = void 0;
|
|
20
|
+
exports.getFormat = exports.defaultFormats = exports.eloAdapter = exports.csvAdapter = exports.jsonAdapter = exports.toCSV = exports.parseCSV = exports.toEloCode = exports.getPrelude = exports.JS_HELPERS = exports.compileToPython = exports.compileToSQL = exports.compileToJavaScriptWithMeta = exports.compileToJavaScript = exports.compileToRuby = exports.compile = void 0;
|
|
21
21
|
__exportStar(require("./ast"), exports);
|
|
22
22
|
__exportStar(require("./parser"), exports);
|
|
23
23
|
var compile_1 = require("./compile");
|
|
@@ -29,6 +29,8 @@ Object.defineProperty(exports, "compileToJavaScript", { enumerable: true, get: f
|
|
|
29
29
|
Object.defineProperty(exports, "compileToJavaScriptWithMeta", { enumerable: true, get: function () { return javascript_1.compileToJavaScriptWithMeta; } });
|
|
30
30
|
var sql_1 = require("./compilers/sql");
|
|
31
31
|
Object.defineProperty(exports, "compileToSQL", { enumerable: true, get: function () { return sql_1.compileToSQL; } });
|
|
32
|
+
var python_1 = require("./compilers/python");
|
|
33
|
+
Object.defineProperty(exports, "compileToPython", { enumerable: true, get: function () { return python_1.compileToPython; } });
|
|
32
34
|
var runtime_1 = require("./runtime");
|
|
33
35
|
Object.defineProperty(exports, "JS_HELPERS", { enumerable: true, get: function () { return runtime_1.JS_HELPERS; } });
|
|
34
36
|
var preludes_1 = require("./preludes");
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,wCAAsB;AACtB,2CAAyB;AACzB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,yCAAiD;AAAxC,qGAAA,aAAa,OAAA;AAEtB,qDAA0F;AAAjF,iHAAA,mBAAmB,OAAA;AAAE,yHAAA,2BAA2B,OAAA;AAEzD,uCAA+C;AAAtC,mGAAA,YAAY,OAAA;AAErB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AAEnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,6BAAwC;AAA/B,+FAAA,QAAQ,OAAA;AAAE,4FAAA,KAAK,OAAA;AAExB,qCAMmB;AALjB,sGAAA,WAAW,OAAA;AACX,qGAAA,UAAU,OAAA;AACV,qGAAA,UAAU,OAAA;AACV,yGAAA,cAAc,OAAA;AACd,oGAAA,SAAS,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,wCAAsB;AACtB,2CAAyB;AACzB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,yCAAiD;AAAxC,qGAAA,aAAa,OAAA;AAEtB,qDAA0F;AAAjF,iHAAA,mBAAmB,OAAA;AAAE,yHAAA,2BAA2B,OAAA;AAEzD,uCAA+C;AAAtC,mGAAA,YAAY,OAAA;AAErB,6CAAqD;AAA5C,yGAAA,eAAe,OAAA;AAExB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AAEnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,6BAAwC;AAA/B,+FAAA,QAAQ,OAAA;AAAE,4FAAA,KAAK,OAAA;AAExB,qCAMmB;AALjB,sGAAA,WAAW,OAAA;AACX,qGAAA,UAAU,OAAA;AACV,qGAAA,UAAU,OAAA;AACV,yGAAA,cAAc,OAAA;AACd,oGAAA,SAAS,OAAA"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Runtime helpers (kAdd, kSub, etc.) are now embedded directly in the
|
|
7
7
|
* compiled output as needed, wrapped in an IIFE.
|
|
8
8
|
*/
|
|
9
|
-
export type Target = 'javascript' | 'ruby' | 'sql';
|
|
9
|
+
export type Target = 'javascript' | 'ruby' | 'sql' | 'python';
|
|
10
10
|
/**
|
|
11
11
|
* Get the prelude content for a given target language.
|
|
12
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/preludes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/preludes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AA6B9D;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD"}
|
|
@@ -13,10 +13,22 @@ const javascriptPrelude = `const { DateTime, Duration } = require('luxon');`;
|
|
|
13
13
|
const rubyPrelude = `require 'date'
|
|
14
14
|
require 'active_support/all'`;
|
|
15
15
|
const sqlPrelude = `-- No prelude needed for SQL`;
|
|
16
|
+
const runtime_1 = require("../runtime");
|
|
17
|
+
// Build Python prelude with imports and all helper functions
|
|
18
|
+
const pythonImports = Object.entries(runtime_1.PY_HELPERS)
|
|
19
|
+
.filter(([name]) => name.startsWith('_import_'))
|
|
20
|
+
.map(([, code]) => code)
|
|
21
|
+
.join('\n');
|
|
22
|
+
const pythonFunctions = Object.entries(runtime_1.PY_HELPERS)
|
|
23
|
+
.filter(([name]) => !name.startsWith('_import_'))
|
|
24
|
+
.map(([, code]) => code)
|
|
25
|
+
.join('\n');
|
|
26
|
+
const pythonPrelude = pythonImports + '\n' + pythonFunctions;
|
|
16
27
|
const preludes = {
|
|
17
28
|
javascript: javascriptPrelude,
|
|
18
29
|
ruby: rubyPrelude,
|
|
19
|
-
sql: sqlPrelude
|
|
30
|
+
sql: sqlPrelude,
|
|
31
|
+
python: pythonPrelude
|
|
20
32
|
};
|
|
21
33
|
/**
|
|
22
34
|
* Get the prelude content for a given target language.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preludes/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preludes/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAkCH,gCAEC;AAhCD,MAAM,iBAAiB,GAAG,kDAAkD,CAAC;AAE7E,MAAM,WAAW,GAAG;6BACS,CAAC;AAE9B,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,wCAAwC;AAExC,6DAA6D;AAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAU,CAAC;KAC7C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;KAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;KACvB,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAU,CAAC;KAC/C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;KAChD,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;KACvB,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,GAAG,eAAe,CAAC;AAE7D,MAAM,QAAQ,GAA2B;IACvC,UAAU,EAAE,iBAAiB;IAC7B,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,aAAa;CACtB,CAAC;AAEF;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/src/runtime.d.ts
CHANGED
|
@@ -20,4 +20,11 @@ export declare const JS_HELPERS: Record<string, string>;
|
|
|
20
20
|
*/
|
|
21
21
|
export declare const RUBY_HELPER_DEPS: Record<string, string[]>;
|
|
22
22
|
export declare const RUBY_HELPERS: Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Python helper function snippets.
|
|
25
|
+
* These are embedded in compiled Python output when needed.
|
|
26
|
+
* Special entries starting with _ are import statements, not functions.
|
|
27
|
+
*/
|
|
28
|
+
export declare const PY_HELPER_DEPS: Record<string, string[]>;
|
|
29
|
+
export declare const PY_HELPERS: Record<string, string>;
|
|
23
30
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAenD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmO7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAWrD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+F/C,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAenD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmO7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAWrD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+F/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAqCnD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsW7C,CAAC"}
|