@enspirit/elo 0.9.3 → 0.9.5
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 +27 -9
- package/dist/src/ast.d.ts +29 -6
- package/dist/src/ast.d.ts.map +1 -1
- package/dist/src/ast.js +14 -3
- package/dist/src/ast.js.map +1 -1
- package/dist/src/bindings/javascript.d.ts.map +1 -1
- package/dist/src/bindings/javascript.js +11 -0
- package/dist/src/bindings/javascript.js.map +1 -1
- package/dist/src/bindings/ruby.d.ts.map +1 -1
- package/dist/src/bindings/ruby.js +31 -2
- package/dist/src/bindings/ruby.js.map +1 -1
- package/dist/src/bindings/sql.d.ts.map +1 -1
- package/dist/src/bindings/sql.js +35 -0
- package/dist/src/bindings/sql.js.map +1 -1
- package/dist/src/compilers/javascript.d.ts +2 -0
- package/dist/src/compilers/javascript.d.ts.map +1 -1
- package/dist/src/compilers/javascript.js +39 -10
- package/dist/src/compilers/javascript.js.map +1 -1
- package/dist/src/compilers/ruby.d.ts +2 -0
- package/dist/src/compilers/ruby.d.ts.map +1 -1
- package/dist/src/compilers/ruby.js +37 -10
- package/dist/src/compilers/ruby.js.map +1 -1
- package/dist/src/compilers/sql.js +2 -0
- package/dist/src/compilers/sql.js.map +1 -1
- package/dist/src/csv.d.ts +39 -0
- package/dist/src/csv.d.ts.map +1 -0
- package/dist/src/csv.js +177 -0
- package/dist/src/csv.js.map +1 -0
- package/dist/src/elo.js +64 -13
- package/dist/src/elo.js.map +1 -1
- package/dist/src/eloc.js +10 -4
- package/dist/src/eloc.js.map +1 -1
- package/dist/src/formats.d.ts +94 -0
- package/dist/src/formats.d.ts.map +1 -0
- package/dist/src/formats.js +92 -0
- package/dist/src/formats.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/ir.d.ts +23 -4
- package/dist/src/ir.d.ts.map +1 -1
- package/dist/src/ir.js +12 -2
- package/dist/src/ir.js.map +1 -1
- package/dist/src/parser.d.ts +41 -1
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +212 -7
- package/dist/src/parser.js.map +1 -1
- package/dist/src/runtime.d.ts.map +1 -1
- package/dist/src/runtime.js +47 -0
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/serialize.d.ts +24 -0
- package/dist/src/serialize.d.ts.map +1 -0
- package/dist/src/serialize.js +138 -0
- package/dist/src/serialize.js.map +1 -0
- package/dist/src/transform.d.ts.map +1 -1
- package/dist/src/transform.js +40 -5
- package/dist/src/transform.js.map +1 -1
- package/package.json +1 -1
package/dist/src/csv.js
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CSV parsing and serialization utilities for Elo.
|
|
4
|
+
*
|
|
5
|
+
* CSV data is represented as an array of objects, where:
|
|
6
|
+
* - Headers become object keys
|
|
7
|
+
* - All values are kept as strings (Elo's type coercion handles conversion)
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.parseCSV = parseCSV;
|
|
11
|
+
exports.toCSV = toCSV;
|
|
12
|
+
/**
|
|
13
|
+
* Parse a CSV string into an array of objects.
|
|
14
|
+
* First row is treated as headers (keys for each row object).
|
|
15
|
+
* All values are kept as strings.
|
|
16
|
+
*
|
|
17
|
+
* @param csv - The CSV string to parse
|
|
18
|
+
* @returns An array of objects, one per data row
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* parseCSV('name,age\nAlice,30\nBob,25')
|
|
22
|
+
* // => [{name: 'Alice', age: '30'}, {name: 'Bob', age: '25'}]
|
|
23
|
+
*/
|
|
24
|
+
function parseCSV(csv) {
|
|
25
|
+
const lines = parseCSVLines(csv);
|
|
26
|
+
if (lines.length === 0) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
const headers = lines[0];
|
|
30
|
+
const result = [];
|
|
31
|
+
for (let i = 1; i < lines.length; i++) {
|
|
32
|
+
const values = lines[i];
|
|
33
|
+
const row = {};
|
|
34
|
+
for (let j = 0; j < headers.length; j++) {
|
|
35
|
+
row[headers[j]] = values[j] ?? '';
|
|
36
|
+
}
|
|
37
|
+
result.push(row);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse CSV into a 2D array of strings (rows × columns).
|
|
43
|
+
* Handles quoted values, escaped quotes, and multi-line values.
|
|
44
|
+
*/
|
|
45
|
+
function parseCSVLines(csv) {
|
|
46
|
+
const result = [];
|
|
47
|
+
let currentRow = [];
|
|
48
|
+
let currentValue = '';
|
|
49
|
+
let inQuotes = false;
|
|
50
|
+
let i = 0;
|
|
51
|
+
while (i < csv.length) {
|
|
52
|
+
const char = csv[i];
|
|
53
|
+
if (inQuotes) {
|
|
54
|
+
if (char === '"') {
|
|
55
|
+
// Check for escaped quote
|
|
56
|
+
if (csv[i + 1] === '"') {
|
|
57
|
+
currentValue += '"';
|
|
58
|
+
i += 2;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// End of quoted value
|
|
62
|
+
inQuotes = false;
|
|
63
|
+
i++;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
currentValue += char;
|
|
68
|
+
i++;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (char === '"') {
|
|
73
|
+
// Start of quoted value
|
|
74
|
+
inQuotes = true;
|
|
75
|
+
i++;
|
|
76
|
+
}
|
|
77
|
+
else if (char === ',') {
|
|
78
|
+
// Field separator
|
|
79
|
+
currentRow.push(currentValue);
|
|
80
|
+
currentValue = '';
|
|
81
|
+
i++;
|
|
82
|
+
}
|
|
83
|
+
else if (char === '\n') {
|
|
84
|
+
// End of line
|
|
85
|
+
currentRow.push(currentValue);
|
|
86
|
+
if (currentRow.length > 0 && !(currentRow.length === 1 && currentRow[0] === '')) {
|
|
87
|
+
result.push(currentRow);
|
|
88
|
+
}
|
|
89
|
+
currentRow = [];
|
|
90
|
+
currentValue = '';
|
|
91
|
+
i++;
|
|
92
|
+
}
|
|
93
|
+
else if (char === '\r') {
|
|
94
|
+
// Handle \r\n
|
|
95
|
+
i++;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
currentValue += char;
|
|
99
|
+
i++;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Handle last value/row
|
|
104
|
+
if (currentValue || currentRow.length > 0) {
|
|
105
|
+
currentRow.push(currentValue);
|
|
106
|
+
if (currentRow.length > 0 && !(currentRow.length === 1 && currentRow[0] === '')) {
|
|
107
|
+
result.push(currentRow);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Serialize a value to CSV format.
|
|
114
|
+
*
|
|
115
|
+
* For arrays of objects, the first object's keys become headers.
|
|
116
|
+
* For a single object, it becomes a single-row CSV with headers.
|
|
117
|
+
* For other values, an error is thrown.
|
|
118
|
+
*
|
|
119
|
+
* @param value - The value to serialize (array of objects, or single object)
|
|
120
|
+
* @returns A CSV string
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* toCSV([{name: 'Alice', age: 30}, {name: 'Bob', age: 25}])
|
|
124
|
+
* // => 'name,age\nAlice,30\nBob,25'
|
|
125
|
+
*
|
|
126
|
+
* toCSV({name: 'Alice', age: 30})
|
|
127
|
+
* // => 'name,age\nAlice,30'
|
|
128
|
+
*/
|
|
129
|
+
function toCSV(value) {
|
|
130
|
+
// Handle array of objects
|
|
131
|
+
if (Array.isArray(value)) {
|
|
132
|
+
if (value.length === 0) {
|
|
133
|
+
return '';
|
|
134
|
+
}
|
|
135
|
+
// Get headers from first object
|
|
136
|
+
const first = value[0];
|
|
137
|
+
if (typeof first !== 'object' || first === null || Array.isArray(first)) {
|
|
138
|
+
throw new Error('CSV output requires an array of objects');
|
|
139
|
+
}
|
|
140
|
+
const headers = Object.keys(first);
|
|
141
|
+
const lines = [];
|
|
142
|
+
// Add header row
|
|
143
|
+
lines.push(headers.map(escapeCSVValue).join(','));
|
|
144
|
+
// Add data rows
|
|
145
|
+
for (const row of value) {
|
|
146
|
+
if (typeof row !== 'object' || row === null || Array.isArray(row)) {
|
|
147
|
+
throw new Error('CSV output requires all elements to be objects');
|
|
148
|
+
}
|
|
149
|
+
const rowObj = row;
|
|
150
|
+
const values = headers.map(h => escapeCSVValue(String(rowObj[h] ?? '')));
|
|
151
|
+
lines.push(values.join(','));
|
|
152
|
+
}
|
|
153
|
+
return lines.join('\n');
|
|
154
|
+
}
|
|
155
|
+
// Handle single object as single-row CSV
|
|
156
|
+
if (typeof value === 'object' && value !== null) {
|
|
157
|
+
const obj = value;
|
|
158
|
+
const headers = Object.keys(obj);
|
|
159
|
+
const values = headers.map(h => escapeCSVValue(String(obj[h] ?? '')));
|
|
160
|
+
return headers.map(escapeCSVValue).join(',') + '\n' + values.join(',');
|
|
161
|
+
}
|
|
162
|
+
throw new Error('CSV output requires an object or array of objects');
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Escape a value for CSV output.
|
|
166
|
+
* Wraps in quotes if the value contains commas, quotes, or newlines.
|
|
167
|
+
* Doubles any internal quotes.
|
|
168
|
+
*/
|
|
169
|
+
function escapeCSVValue(value) {
|
|
170
|
+
// Check if quoting is needed
|
|
171
|
+
if (value.includes(',') || value.includes('"') || value.includes('\n') || value.includes('\r')) {
|
|
172
|
+
// Double any internal quotes and wrap in quotes
|
|
173
|
+
return '"' + value.replace(/"/g, '""') + '"';
|
|
174
|
+
}
|
|
175
|
+
return value;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"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"}
|
package/dist/src/elo.js
CHANGED
|
@@ -5,6 +5,7 @@ const fs_1 = require("fs");
|
|
|
5
5
|
const parser_1 = require("./parser");
|
|
6
6
|
const javascript_1 = require("./compilers/javascript");
|
|
7
7
|
const luxon_1 = require("luxon");
|
|
8
|
+
const formats_1 = require("./formats");
|
|
8
9
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
9
10
|
const pkg = require('../../package.json');
|
|
10
11
|
function parseArgs(args) {
|
|
@@ -23,6 +24,22 @@ function parseArgs(args) {
|
|
|
23
24
|
case '--stdin':
|
|
24
25
|
options.stdinData = true;
|
|
25
26
|
break;
|
|
27
|
+
case '-f':
|
|
28
|
+
case '--input-format':
|
|
29
|
+
options.inputFormat = args[++i];
|
|
30
|
+
if (options.inputFormat !== 'json' && options.inputFormat !== 'csv') {
|
|
31
|
+
console.error(`Invalid input format: ${options.inputFormat}. Use 'json' or 'csv'.`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case '-o':
|
|
36
|
+
case '--output-format':
|
|
37
|
+
options.outputFormat = args[++i];
|
|
38
|
+
if (options.outputFormat !== 'json' && options.outputFormat !== 'elo' && options.outputFormat !== 'csv') {
|
|
39
|
+
console.error(`Invalid output format: ${options.outputFormat}. Use 'json', 'elo', or 'csv'.`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
26
43
|
case '-h':
|
|
27
44
|
case '--help':
|
|
28
45
|
printHelp();
|
|
@@ -60,8 +77,10 @@ Usage:
|
|
|
60
77
|
|
|
61
78
|
Options:
|
|
62
79
|
-e, --expression <expr> Expression to evaluate (like ruby -e)
|
|
63
|
-
-d, --data <
|
|
64
|
-
--stdin Read input data
|
|
80
|
+
-d, --data <data> Input data for _ variable (or @file to read from file)
|
|
81
|
+
--stdin Read input data from stdin
|
|
82
|
+
-f, --input-format <fmt> Input data format: json (default) or csv
|
|
83
|
+
-o, --output-format <fmt> Output format: json (default), elo, or csv
|
|
65
84
|
-v, --version Show version number
|
|
66
85
|
-h, --help Show this help message
|
|
67
86
|
|
|
@@ -69,10 +88,19 @@ Examples:
|
|
|
69
88
|
# Evaluate a simple expression
|
|
70
89
|
elo -e "2 + 3 * 4"
|
|
71
90
|
|
|
72
|
-
# Evaluate with input data
|
|
91
|
+
# Evaluate with JSON input data
|
|
73
92
|
elo -e "_.x + _.y" -d '{"x": 1, "y": 2}'
|
|
74
93
|
|
|
75
|
-
# Evaluate with input data
|
|
94
|
+
# Evaluate with CSV input data
|
|
95
|
+
elo -e "map(_, fn(r ~> r.name))" -d @data.csv -f csv
|
|
96
|
+
|
|
97
|
+
# Output as Elo code
|
|
98
|
+
elo -e "{a: 1, b: 2}" -o elo
|
|
99
|
+
|
|
100
|
+
# Output as CSV
|
|
101
|
+
elo -e "[{name: 'Alice', age: 30}]" -o csv
|
|
102
|
+
|
|
103
|
+
# Evaluate with input data from file (format auto-detected from extension)
|
|
76
104
|
elo -e "_.name" -d @data.json
|
|
77
105
|
|
|
78
106
|
# Evaluate from .elo file
|
|
@@ -86,26 +114,44 @@ Examples:
|
|
|
86
114
|
`);
|
|
87
115
|
}
|
|
88
116
|
/**
|
|
89
|
-
*
|
|
117
|
+
* Detect input format from file extension
|
|
90
118
|
*/
|
|
91
|
-
function
|
|
92
|
-
|
|
119
|
+
function detectInputFormat(filePath) {
|
|
120
|
+
if (filePath.endsWith('.csv')) {
|
|
121
|
+
return 'csv';
|
|
122
|
+
}
|
|
123
|
+
return 'json';
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Parse input data from CLI option (JSON/CSV string or @file path)
|
|
127
|
+
*/
|
|
128
|
+
function parseInputData(inputData, format, formats) {
|
|
129
|
+
let dataString = inputData;
|
|
130
|
+
let detectedFormat = format;
|
|
93
131
|
// If starts with @, read from file
|
|
94
132
|
if (inputData.startsWith('@')) {
|
|
95
133
|
const filePath = inputData.slice(1);
|
|
134
|
+
// Auto-detect format from extension if not specified
|
|
135
|
+
if (!detectedFormat) {
|
|
136
|
+
detectedFormat = detectInputFormat(filePath);
|
|
137
|
+
}
|
|
96
138
|
try {
|
|
97
|
-
|
|
139
|
+
dataString = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
98
140
|
}
|
|
99
141
|
catch (error) {
|
|
100
142
|
console.error(`Error reading input file ${filePath}: ${error}`);
|
|
101
143
|
process.exit(1);
|
|
102
144
|
}
|
|
103
145
|
}
|
|
146
|
+
// Default to JSON if not specified
|
|
147
|
+
if (!detectedFormat) {
|
|
148
|
+
detectedFormat = 'json';
|
|
149
|
+
}
|
|
104
150
|
try {
|
|
105
|
-
return
|
|
151
|
+
return (0, formats_1.getFormat)(formats, detectedFormat).parse(dataString);
|
|
106
152
|
}
|
|
107
153
|
catch (error) {
|
|
108
|
-
console.error(`Error parsing input
|
|
154
|
+
console.error(`Error parsing input ${detectedFormat.toUpperCase()}: ${error}`);
|
|
109
155
|
process.exit(1);
|
|
110
156
|
}
|
|
111
157
|
}
|
|
@@ -128,6 +174,8 @@ function main() {
|
|
|
128
174
|
process.exit(0);
|
|
129
175
|
}
|
|
130
176
|
const options = parseArgs(args);
|
|
177
|
+
// Use default formats (can be extended by users in programmatic usage)
|
|
178
|
+
const formats = formats_1.defaultFormats;
|
|
131
179
|
// Get the source expression(s)
|
|
132
180
|
let sources;
|
|
133
181
|
if (options.expression) {
|
|
@@ -157,10 +205,11 @@ function main() {
|
|
|
157
205
|
}
|
|
158
206
|
// Get input data
|
|
159
207
|
let inputValue = null;
|
|
208
|
+
const inputFormat = options.inputFormat || 'json';
|
|
160
209
|
if (options.stdinData) {
|
|
161
210
|
try {
|
|
162
211
|
const stdinContent = (0, fs_1.readFileSync)(0, 'utf-8');
|
|
163
|
-
inputValue =
|
|
212
|
+
inputValue = (0, formats_1.getFormat)(formats, inputFormat).parse(stdinContent);
|
|
164
213
|
}
|
|
165
214
|
catch (error) {
|
|
166
215
|
console.error(`Error reading/parsing stdin: ${error}`);
|
|
@@ -168,9 +217,11 @@ function main() {
|
|
|
168
217
|
}
|
|
169
218
|
}
|
|
170
219
|
else if (options.inputData) {
|
|
171
|
-
inputValue = parseInputData(options.inputData);
|
|
220
|
+
inputValue = parseInputData(options.inputData, options.inputFormat, formats);
|
|
172
221
|
}
|
|
173
222
|
// Evaluate each expression
|
|
223
|
+
const outputFormat = options.outputFormat || 'json';
|
|
224
|
+
const outputAdapter = (0, formats_1.getFormat)(formats, outputFormat);
|
|
174
225
|
const outputs = [];
|
|
175
226
|
for (let i = 0; i < sources.length; i++) {
|
|
176
227
|
const source = sources[i];
|
|
@@ -181,7 +232,7 @@ function main() {
|
|
|
181
232
|
}
|
|
182
233
|
try {
|
|
183
234
|
const result = evaluate(trimmed, inputValue);
|
|
184
|
-
outputs.push(
|
|
235
|
+
outputs.push(outputAdapter.serialize(result));
|
|
185
236
|
}
|
|
186
237
|
catch (error) {
|
|
187
238
|
console.error(`Error on line ${i + 1}: ${error}`);
|
package/dist/src/elo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elo.js","sourceRoot":"","sources":["../../src/elo.ts"],"names":[],"mappings":";;;AAEA,2BAAkC;AAClC,qCAAiC;AACjC,uDAAqE;AACrE,iCAA2C;
|
|
1
|
+
{"version":3,"file":"elo.js","sourceRoot":"","sources":["../../src/elo.ts"],"names":[],"mappings":"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"}
|
package/dist/src/eloc.js
CHANGED
|
@@ -48,6 +48,9 @@ function parseArgs(args) {
|
|
|
48
48
|
case '--execute':
|
|
49
49
|
options.execute = true;
|
|
50
50
|
break;
|
|
51
|
+
case '--strip-guards':
|
|
52
|
+
options.stripGuards = true;
|
|
53
|
+
break;
|
|
51
54
|
case '-h':
|
|
52
55
|
case '--help':
|
|
53
56
|
printHelp();
|
|
@@ -89,6 +92,7 @@ Options:
|
|
|
89
92
|
-x, --execute Output self-executing code (calls function with null/nil)
|
|
90
93
|
-p, --prelude Include necessary library imports/requires
|
|
91
94
|
--prelude-only Output only the prelude (no expression needed)
|
|
95
|
+
--strip-guards Strip guard/check assertions from output
|
|
92
96
|
-f, --file <path> Output to file instead of stdout
|
|
93
97
|
-v, --version Show version number
|
|
94
98
|
-h, --help Show this help message
|
|
@@ -124,21 +128,22 @@ For evaluating expressions, use the 'elo' command instead.
|
|
|
124
128
|
}
|
|
125
129
|
function compile(source, target, options = {}) {
|
|
126
130
|
const ast = (0, parser_1.parse)(source);
|
|
127
|
-
const { includePrelude = false, execute = false } = options;
|
|
131
|
+
const { includePrelude = false, execute = false, stripGuards = false } = options;
|
|
128
132
|
let code;
|
|
129
133
|
switch (target) {
|
|
130
134
|
case 'ruby': {
|
|
131
|
-
const result = (0, ruby_1.compileToRubyWithMeta)(ast, { execute });
|
|
135
|
+
const result = (0, ruby_1.compileToRubyWithMeta)(ast, { execute, stripGuards });
|
|
132
136
|
code = result.code;
|
|
133
137
|
break;
|
|
134
138
|
}
|
|
135
139
|
case 'js': {
|
|
136
|
-
const result = (0, javascript_1.compileToJavaScriptWithMeta)(ast, { execute });
|
|
140
|
+
const result = (0, javascript_1.compileToJavaScriptWithMeta)(ast, { execute, stripGuards });
|
|
137
141
|
code = result.code;
|
|
138
142
|
break;
|
|
139
143
|
}
|
|
140
144
|
case 'sql': {
|
|
141
145
|
// SQL doesn't support execute option (no function wrapping)
|
|
146
|
+
// and guards already throw an error, so stripGuards is not needed
|
|
142
147
|
const result = (0, sql_1.compileToSQLWithMeta)(ast);
|
|
143
148
|
code = result.code;
|
|
144
149
|
break;
|
|
@@ -205,7 +210,8 @@ function main() {
|
|
|
205
210
|
}
|
|
206
211
|
return compile(trimmed, options.target, {
|
|
207
212
|
includePrelude: index === 0 && options.prelude,
|
|
208
|
-
execute: options.execute
|
|
213
|
+
execute: options.execute,
|
|
214
|
+
stripGuards: options.stripGuards
|
|
209
215
|
});
|
|
210
216
|
}
|
|
211
217
|
catch (error) {
|
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,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC;
|
|
1
|
+
{"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable data format adapters for Elo.
|
|
3
|
+
*
|
|
4
|
+
* This module defines interfaces for parsing and serializing different data formats
|
|
5
|
+
* (JSON, CSV, XLSX, etc.). Users can provide their own implementations using
|
|
6
|
+
* libraries like PapaParse or SheetJS.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // Using the built-in CSV adapter
|
|
10
|
+
* import { defaultFormats } from '@enspirit/elo';
|
|
11
|
+
* const data = defaultFormats.csv.parse('name,age\nAlice,30');
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // Providing a custom adapter with PapaParse
|
|
15
|
+
* import Papa from 'papaparse';
|
|
16
|
+
* import { FormatAdapter } from '@enspirit/elo';
|
|
17
|
+
*
|
|
18
|
+
* const csvAdapter: FormatAdapter = {
|
|
19
|
+
* parse: (s) => Papa.parse(s, { header: true }).data,
|
|
20
|
+
* serialize: (v) => Papa.unparse(v)
|
|
21
|
+
* };
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Interface for a data format adapter.
|
|
25
|
+
* Implement this to add support for custom data formats.
|
|
26
|
+
*/
|
|
27
|
+
export interface FormatAdapter {
|
|
28
|
+
/**
|
|
29
|
+
* Parse a string into a JavaScript value.
|
|
30
|
+
* @param input - The string to parse
|
|
31
|
+
* @returns The parsed value
|
|
32
|
+
* @throws Error if parsing fails
|
|
33
|
+
*/
|
|
34
|
+
parse(input: string): unknown;
|
|
35
|
+
/**
|
|
36
|
+
* Serialize a JavaScript value to a string.
|
|
37
|
+
* @param value - The value to serialize
|
|
38
|
+
* @returns The serialized string
|
|
39
|
+
* @throws Error if the value cannot be serialized to this format
|
|
40
|
+
*/
|
|
41
|
+
serialize(value: unknown): string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Registry of format adapters by name.
|
|
45
|
+
* Extend this to add custom formats.
|
|
46
|
+
*/
|
|
47
|
+
export interface FormatRegistry {
|
|
48
|
+
json: FormatAdapter;
|
|
49
|
+
csv: FormatAdapter;
|
|
50
|
+
elo: FormatAdapter;
|
|
51
|
+
[key: string]: FormatAdapter | undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Built-in JSON format adapter.
|
|
55
|
+
*/
|
|
56
|
+
export declare const jsonAdapter: FormatAdapter;
|
|
57
|
+
/**
|
|
58
|
+
* Built-in CSV format adapter.
|
|
59
|
+
* CSV data is parsed as an array of objects with string values.
|
|
60
|
+
* For output, requires an array of objects or a single object.
|
|
61
|
+
*/
|
|
62
|
+
export declare const csvAdapter: FormatAdapter;
|
|
63
|
+
/**
|
|
64
|
+
* Built-in Elo code format adapter.
|
|
65
|
+
* This format is output-only (serialize only).
|
|
66
|
+
* Parsing Elo code requires the full parser.
|
|
67
|
+
*/
|
|
68
|
+
export declare const eloAdapter: FormatAdapter;
|
|
69
|
+
/**
|
|
70
|
+
* Default format registry with built-in adapters.
|
|
71
|
+
* Use this as-is or extend with custom adapters.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* // Extend with a custom XLSX adapter
|
|
75
|
+
* import XLSX from 'xlsx';
|
|
76
|
+
*
|
|
77
|
+
* const formats = {
|
|
78
|
+
* ...defaultFormats,
|
|
79
|
+
* xlsx: {
|
|
80
|
+
* parse: (s) => XLSX.read(s, { type: 'string' }),
|
|
81
|
+
* serialize: (v) => XLSX.write(v, { type: 'string' })
|
|
82
|
+
* }
|
|
83
|
+
* };
|
|
84
|
+
*/
|
|
85
|
+
export declare const defaultFormats: FormatRegistry;
|
|
86
|
+
/**
|
|
87
|
+
* Helper to get a format adapter by name.
|
|
88
|
+
* @param formats - The format registry to search
|
|
89
|
+
* @param name - The format name (e.g., 'json', 'csv')
|
|
90
|
+
* @returns The adapter
|
|
91
|
+
* @throws Error if format is not found
|
|
92
|
+
*/
|
|
93
|
+
export declare function getFormat(formats: FormatRegistry, name: string): FormatAdapter;
|
|
94
|
+
//# sourceMappingURL=formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CAC1C;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAGzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,aAGxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,aAKxB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,EAAE,cAI5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAO9E"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pluggable data format adapters for Elo.
|
|
4
|
+
*
|
|
5
|
+
* This module defines interfaces for parsing and serializing different data formats
|
|
6
|
+
* (JSON, CSV, XLSX, etc.). Users can provide their own implementations using
|
|
7
|
+
* libraries like PapaParse or SheetJS.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* // Using the built-in CSV adapter
|
|
11
|
+
* import { defaultFormats } from '@enspirit/elo';
|
|
12
|
+
* const data = defaultFormats.csv.parse('name,age\nAlice,30');
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Providing a custom adapter with PapaParse
|
|
16
|
+
* import Papa from 'papaparse';
|
|
17
|
+
* import { FormatAdapter } from '@enspirit/elo';
|
|
18
|
+
*
|
|
19
|
+
* const csvAdapter: FormatAdapter = {
|
|
20
|
+
* parse: (s) => Papa.parse(s, { header: true }).data,
|
|
21
|
+
* serialize: (v) => Papa.unparse(v)
|
|
22
|
+
* };
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.defaultFormats = exports.eloAdapter = exports.csvAdapter = exports.jsonAdapter = void 0;
|
|
26
|
+
exports.getFormat = getFormat;
|
|
27
|
+
const csv_1 = require("./csv");
|
|
28
|
+
const serialize_1 = require("./serialize");
|
|
29
|
+
/**
|
|
30
|
+
* Built-in JSON format adapter.
|
|
31
|
+
*/
|
|
32
|
+
exports.jsonAdapter = {
|
|
33
|
+
parse: (input) => JSON.parse(input),
|
|
34
|
+
serialize: (value) => JSON.stringify(value)
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Built-in CSV format adapter.
|
|
38
|
+
* CSV data is parsed as an array of objects with string values.
|
|
39
|
+
* For output, requires an array of objects or a single object.
|
|
40
|
+
*/
|
|
41
|
+
exports.csvAdapter = {
|
|
42
|
+
parse: (input) => (0, csv_1.parseCSV)(input),
|
|
43
|
+
serialize: (value) => (0, csv_1.toCSV)(value)
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Built-in Elo code format adapter.
|
|
47
|
+
* This format is output-only (serialize only).
|
|
48
|
+
* Parsing Elo code requires the full parser.
|
|
49
|
+
*/
|
|
50
|
+
exports.eloAdapter = {
|
|
51
|
+
parse: (_input) => {
|
|
52
|
+
throw new Error('Elo format is output-only. Use the parser for Elo expressions.');
|
|
53
|
+
},
|
|
54
|
+
serialize: (value) => (0, serialize_1.toEloCode)(value)
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Default format registry with built-in adapters.
|
|
58
|
+
* Use this as-is or extend with custom adapters.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // Extend with a custom XLSX adapter
|
|
62
|
+
* import XLSX from 'xlsx';
|
|
63
|
+
*
|
|
64
|
+
* const formats = {
|
|
65
|
+
* ...defaultFormats,
|
|
66
|
+
* xlsx: {
|
|
67
|
+
* parse: (s) => XLSX.read(s, { type: 'string' }),
|
|
68
|
+
* serialize: (v) => XLSX.write(v, { type: 'string' })
|
|
69
|
+
* }
|
|
70
|
+
* };
|
|
71
|
+
*/
|
|
72
|
+
exports.defaultFormats = {
|
|
73
|
+
json: exports.jsonAdapter,
|
|
74
|
+
csv: exports.csvAdapter,
|
|
75
|
+
elo: exports.eloAdapter
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Helper to get a format adapter by name.
|
|
79
|
+
* @param formats - The format registry to search
|
|
80
|
+
* @param name - The format name (e.g., 'json', 'csv')
|
|
81
|
+
* @returns The adapter
|
|
82
|
+
* @throws Error if format is not found
|
|
83
|
+
*/
|
|
84
|
+
function getFormat(formats, name) {
|
|
85
|
+
const adapter = formats[name];
|
|
86
|
+
if (!adapter) {
|
|
87
|
+
const available = Object.keys(formats).join(', ');
|
|
88
|
+
throw new Error(`Unknown format '${name}'. Available: ${available}`);
|
|
89
|
+
}
|
|
90
|
+
return adapter;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../../src/formats.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAiGH,8BAOC;AAtGD,+BAAwC;AACxC,2CAAwC;AAmCxC;;GAEG;AACU,QAAA,WAAW,GAAkB;IACxC,KAAK,EAAE,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACpD,SAAS,EAAE,CAAC,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;CAC7D,CAAC;AAEF;;;;GAIG;AACU,QAAA,UAAU,GAAkB;IACvC,KAAK,EAAE,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,cAAQ,EAAC,KAAK,CAAC;IAClD,SAAS,EAAE,CAAC,KAAc,EAAU,EAAE,CAAC,IAAA,WAAK,EAAC,KAAK,CAAC;CACpD,CAAC;AAEF;;;;GAIG;AACU,QAAA,UAAU,GAAkB;IACvC,KAAK,EAAE,CAAC,MAAc,EAAW,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,SAAS,EAAE,CAAC,KAAc,EAAU,EAAE,CAAC,IAAA,qBAAS,EAAC,KAAK,CAAC;CACxD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACU,QAAA,cAAc,GAAmB;IAC5C,IAAI,EAAE,mBAAW;IACjB,GAAG,EAAE,kBAAU;IACf,GAAG,EAAE,kBAAU;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,SAAS,CAAC,OAAuB,EAAE,IAAY;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,iBAAiB,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -14,4 +14,8 @@ export type { SQLCompileOptions } from './compilers/sql';
|
|
|
14
14
|
export { JS_HELPERS } from './runtime';
|
|
15
15
|
export { getPrelude } from './preludes';
|
|
16
16
|
export type { Target as PreludeTarget } from './preludes';
|
|
17
|
+
export { toEloCode } from './serialize';
|
|
18
|
+
export { parseCSV, toCSV } from './csv';
|
|
19
|
+
export type { FormatAdapter, FormatRegistry } from './formats';
|
|
20
|
+
export { jsonAdapter, csvAdapter, eloAdapter, defaultFormats, getFormat } from './formats';
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|