@elaraai/east 0.0.1-beta.2 → 0.0.1-beta.20

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 (110) hide show
  1. package/LICENSE.md +15 -666
  2. package/README.md +30 -8
  3. package/dist/src/ast_to_ir.d.ts +6 -0
  4. package/dist/src/ast_to_ir.d.ts.map +1 -1
  5. package/dist/src/ast_to_ir.js +33 -1
  6. package/dist/src/ast_to_ir.js.map +1 -1
  7. package/dist/src/builtins.d.ts +1 -1
  8. package/dist/src/builtins.d.ts.map +1 -1
  9. package/dist/src/builtins.js +10 -0
  10. package/dist/src/builtins.js.map +1 -1
  11. package/dist/src/comparison.d.ts.map +1 -1
  12. package/dist/src/comparison.js +12 -4
  13. package/dist/src/comparison.js.map +1 -1
  14. package/dist/src/compile.d.ts +7 -1
  15. package/dist/src/compile.d.ts.map +1 -1
  16. package/dist/src/compile.js +219 -172
  17. package/dist/src/compile.js.map +1 -1
  18. package/dist/src/eastir.d.ts.map +1 -1
  19. package/dist/src/eastir.js +21 -5
  20. package/dist/src/eastir.js.map +1 -1
  21. package/dist/src/error.d.ts +4 -0
  22. package/dist/src/error.d.ts.map +1 -1
  23. package/dist/src/error.js +20 -0
  24. package/dist/src/error.js.map +1 -1
  25. package/dist/src/expr/array.d.ts +101 -1
  26. package/dist/src/expr/array.d.ts.map +1 -1
  27. package/dist/src/expr/array.js +149 -0
  28. package/dist/src/expr/array.js.map +1 -1
  29. package/dist/src/expr/blob.d.ts +65 -1
  30. package/dist/src/expr/blob.d.ts.map +1 -1
  31. package/dist/src/expr/blob.js +80 -1
  32. package/dist/src/expr/blob.js.map +1 -1
  33. package/dist/src/expr/block.d.ts +23 -3
  34. package/dist/src/expr/block.d.ts.map +1 -1
  35. package/dist/src/expr/block.js +28 -3
  36. package/dist/src/expr/block.js.map +1 -1
  37. package/dist/src/expr/boolean.d.ts +36 -0
  38. package/dist/src/expr/boolean.d.ts.map +1 -1
  39. package/dist/src/expr/boolean.js +41 -0
  40. package/dist/src/expr/boolean.js.map +1 -1
  41. package/dist/src/expr/datetime.d.ts +107 -0
  42. package/dist/src/expr/datetime.d.ts.map +1 -1
  43. package/dist/src/expr/datetime.js +119 -0
  44. package/dist/src/expr/datetime.js.map +1 -1
  45. package/dist/src/expr/dict.d.ts +34 -0
  46. package/dist/src/expr/dict.d.ts.map +1 -1
  47. package/dist/src/expr/dict.js +39 -0
  48. package/dist/src/expr/dict.js.map +1 -1
  49. package/dist/src/expr/expr.d.ts.map +1 -1
  50. package/dist/src/expr/expr.js.map +1 -1
  51. package/dist/src/expr/float.d.ts +107 -0
  52. package/dist/src/expr/float.d.ts.map +1 -1
  53. package/dist/src/expr/float.js +122 -0
  54. package/dist/src/expr/float.js.map +1 -1
  55. package/dist/src/expr/function.d.ts +9 -2
  56. package/dist/src/expr/function.d.ts.map +1 -1
  57. package/dist/src/expr/function.js.map +1 -1
  58. package/dist/src/expr/index.d.ts +40 -1
  59. package/dist/src/expr/index.d.ts.map +1 -1
  60. package/dist/src/expr/index.js +39 -1
  61. package/dist/src/expr/index.js.map +1 -1
  62. package/dist/src/expr/integer.d.ts +107 -0
  63. package/dist/src/expr/integer.d.ts.map +1 -1
  64. package/dist/src/expr/integer.js +119 -0
  65. package/dist/src/expr/integer.js.map +1 -1
  66. package/dist/src/expr/libs/integer.d.ts +19 -0
  67. package/dist/src/expr/libs/integer.d.ts.map +1 -1
  68. package/dist/src/expr/libs/integer.js +47 -0
  69. package/dist/src/expr/libs/integer.js.map +1 -1
  70. package/dist/src/expr/set.d.ts +36 -2
  71. package/dist/src/expr/set.d.ts.map +1 -1
  72. package/dist/src/expr/set.js +41 -2
  73. package/dist/src/expr/set.js.map +1 -1
  74. package/dist/src/expr/string.d.ts +106 -0
  75. package/dist/src/expr/string.d.ts.map +1 -1
  76. package/dist/src/expr/string.js +119 -0
  77. package/dist/src/expr/string.js.map +1 -1
  78. package/dist/src/expr/struct.d.ts.map +1 -1
  79. package/dist/src/expr/types.d.ts +6 -6
  80. package/dist/src/expr/types.d.ts.map +1 -1
  81. package/dist/src/expr/variant.d.ts +115 -1
  82. package/dist/src/expr/variant.d.ts.map +1 -1
  83. package/dist/src/expr/variant.js +53 -0
  84. package/dist/src/expr/variant.js.map +1 -1
  85. package/dist/src/internal.d.ts +8 -0
  86. package/dist/src/internal.d.ts.map +1 -1
  87. package/dist/src/internal.js +8 -0
  88. package/dist/src/internal.js.map +1 -1
  89. package/dist/src/serialization/beast.d.ts.map +1 -1
  90. package/dist/src/serialization/beast.js +53 -18
  91. package/dist/src/serialization/beast.js.map +1 -1
  92. package/dist/src/serialization/beast2.d.ts +39 -3
  93. package/dist/src/serialization/beast2.d.ts.map +1 -1
  94. package/dist/src/serialization/beast2.js +132 -18
  95. package/dist/src/serialization/beast2.js.map +1 -1
  96. package/dist/src/serialization/csv.d.ts +139 -0
  97. package/dist/src/serialization/csv.d.ts.map +1 -0
  98. package/dist/src/serialization/csv.js +615 -0
  99. package/dist/src/serialization/csv.js.map +1 -0
  100. package/dist/src/serialization/index.d.ts +2 -1
  101. package/dist/src/serialization/index.d.ts.map +1 -1
  102. package/dist/src/serialization/index.js +2 -1
  103. package/dist/src/serialization/index.js.map +1 -1
  104. package/dist/src/type_of_type.d.ts +11 -0
  105. package/dist/src/type_of_type.d.ts.map +1 -1
  106. package/dist/src/type_of_type.js +61 -0
  107. package/dist/src/type_of_type.js.map +1 -1
  108. package/dist/src/types.js +4 -4
  109. package/dist/src/types.js.map +1 -1
  110. package/package.json +4 -4
@@ -0,0 +1,615 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ *
5
+ * CSV serialization following RFC 4180 (Common Format and MIME Type for CSV Files).
6
+ * @see https://www.rfc-editor.org/rfc/rfc4180
7
+ */
8
+ import { StructType, OptionType, StringType, BooleanType, ArrayType as ArrayTypeConstructor, DictType } from "../types.js";
9
+ import { variant, isVariant } from "../containers/variant.js";
10
+ import { SortedMap } from "../containers/sortedmap.js";
11
+ import { isTypeValueEqual, toEastTypeValue } from "../type_of_type.js";
12
+ // =============================================================================
13
+ // CSV Configuration East Types (for runtime config values)
14
+ // =============================================================================
15
+ /**
16
+ * East type for CSV parse configuration.
17
+ */
18
+ export const CsvParseConfigType = StructType({
19
+ delimiter: OptionType(StringType),
20
+ quoteChar: OptionType(StringType),
21
+ escapeChar: OptionType(StringType),
22
+ newline: OptionType(StringType),
23
+ hasHeader: OptionType(BooleanType),
24
+ nullStrings: OptionType(ArrayTypeConstructor(StringType)),
25
+ skipEmptyLines: OptionType(BooleanType),
26
+ trimFields: OptionType(BooleanType),
27
+ columnMapping: OptionType(DictType(StringType, StringType)),
28
+ strict: OptionType(BooleanType),
29
+ });
30
+ /**
31
+ * East type for CSV serialize configuration.
32
+ */
33
+ export const CsvSerializeConfigType = StructType({
34
+ delimiter: OptionType(StringType),
35
+ quoteChar: OptionType(StringType),
36
+ escapeChar: OptionType(StringType),
37
+ newline: OptionType(StringType),
38
+ includeHeader: OptionType(BooleanType),
39
+ nullString: OptionType(StringType),
40
+ alwaysQuote: OptionType(BooleanType),
41
+ });
42
+ // =============================================================================
43
+ // Configuration Conversion Functions
44
+ // =============================================================================
45
+ /**
46
+ * Converts TypeScript CsvParseOptions to an East config value.
47
+ */
48
+ export function csvParseOptionsToValue(options) {
49
+ const columnMappingValue = options?.columnMapping
50
+ ? new SortedMap([...options.columnMapping.entries()])
51
+ : undefined;
52
+ return {
53
+ delimiter: options?.delimiter !== undefined ? variant("some", options.delimiter) : variant("none", null),
54
+ quoteChar: options?.quoteChar !== undefined ? variant("some", options.quoteChar) : variant("none", null),
55
+ escapeChar: options?.escapeChar !== undefined ? variant("some", options.escapeChar) : variant("none", null),
56
+ newline: options?.newline !== undefined ? variant("some", options.newline) : variant("none", null),
57
+ hasHeader: options?.hasHeader !== undefined ? variant("some", options.hasHeader) : variant("none", null),
58
+ nullStrings: options?.nullStrings !== undefined ? variant("some", options.nullStrings) : variant("none", null),
59
+ skipEmptyLines: options?.skipEmptyLines !== undefined ? variant("some", options.skipEmptyLines) : variant("none", null),
60
+ trimFields: options?.trimFields !== undefined ? variant("some", options.trimFields) : variant("none", null),
61
+ columnMapping: columnMappingValue !== undefined ? variant("some", columnMappingValue) : variant("none", null),
62
+ strict: options?.strict !== undefined ? variant("some", options.strict) : variant("none", null),
63
+ };
64
+ }
65
+ /**
66
+ * Converts TypeScript CsvSerializeOptions to an East config value.
67
+ */
68
+ export function csvSerializeOptionsToValue(options) {
69
+ return {
70
+ delimiter: options?.delimiter !== undefined ? variant("some", options.delimiter) : variant("none", null),
71
+ quoteChar: options?.quoteChar !== undefined ? variant("some", options.quoteChar) : variant("none", null),
72
+ escapeChar: options?.escapeChar !== undefined ? variant("some", options.escapeChar) : variant("none", null),
73
+ newline: options?.newline !== undefined ? variant("some", options.newline) : variant("none", null),
74
+ includeHeader: options?.includeHeader !== undefined ? variant("some", options.includeHeader) : variant("none", null),
75
+ nullString: options?.nullString !== undefined ? variant("some", options.nullString) : variant("none", null),
76
+ alwaysQuote: options?.alwaysQuote !== undefined ? variant("some", options.alwaysQuote) : variant("none", null),
77
+ };
78
+ }
79
+ /**
80
+ * Extracts resolved options from an East config value, applying defaults.
81
+ */
82
+ export function resolveParseConfig(config) {
83
+ return {
84
+ delimiter: config.delimiter.type === "some" ? config.delimiter.value : ",",
85
+ quoteChar: config.quoteChar.type === "some" ? config.quoteChar.value : '"',
86
+ escapeChar: config.escapeChar.type === "some" ? config.escapeChar.value : '"',
87
+ newline: config.newline.type === "some" ? config.newline.value : "", // empty = auto-detect
88
+ hasHeader: config.hasHeader.type === "some" ? config.hasHeader.value : true,
89
+ nullStrings: config.nullStrings.type === "some" ? config.nullStrings.value : [""],
90
+ skipEmptyLines: config.skipEmptyLines.type === "some" ? config.skipEmptyLines.value : true,
91
+ trimFields: config.trimFields.type === "some" ? config.trimFields.value : false,
92
+ columnMapping: config.columnMapping.type === "some" ? new Map(config.columnMapping.value) : new Map(),
93
+ strict: config.strict.type === "some" ? config.strict.value : false,
94
+ };
95
+ }
96
+ /**
97
+ * Extracts resolved options from an East config value, applying defaults.
98
+ */
99
+ export function resolveSerializeConfig(config) {
100
+ return {
101
+ delimiter: config.delimiter.type === "some" ? config.delimiter.value : ",",
102
+ quoteChar: config.quoteChar.type === "some" ? config.quoteChar.value : '"',
103
+ escapeChar: config.escapeChar.type === "some" ? config.escapeChar.value : '"',
104
+ newline: config.newline.type === "some" ? config.newline.value : "\r\n",
105
+ includeHeader: config.includeHeader.type === "some" ? config.includeHeader.value : true,
106
+ nullString: config.nullString.type === "some" ? config.nullString.value : "",
107
+ alwaysQuote: config.alwaysQuote.type === "some" ? config.alwaysQuote.value : false,
108
+ };
109
+ }
110
+ /**
111
+ * Error thrown during CSV parsing with location information.
112
+ */
113
+ export class CsvError extends Error {
114
+ location;
115
+ constructor(message, location) {
116
+ const locationStr = location
117
+ ? ` at row ${location.row}, column ${location.column}${location.columnName ? ` (${location.columnName})` : ''}`
118
+ : '';
119
+ super(`CSV error: ${message}${locationStr}`);
120
+ this.location = location;
121
+ this.name = "CsvError";
122
+ }
123
+ }
124
+ // =============================================================================
125
+ // Type Helpers (work with EastTypeValue)
126
+ // =============================================================================
127
+ /**
128
+ * Check if a type is an OptionType (Variant with exactly 'none' and 'some' cases).
129
+ * Variant cases are sorted alphabetically, so none is at index 0, some at index 1.
130
+ */
131
+ function isOptionTypeValue(type) {
132
+ if (type.type !== "Variant")
133
+ return false;
134
+ return type.value.length === 2 && type.value?.[0]?.name === "none" && type.value?.[1]?.name === "some";
135
+ }
136
+ /**
137
+ * Get the inner type of an OptionType.
138
+ * Variant cases are sorted alphabetically, so 'some' is at index 1.
139
+ */
140
+ function getOptionInnerTypeValue(type) {
141
+ if (type.type !== "Variant")
142
+ throw new Error("Not an OptionType");
143
+ return type.value?.[1]?.type;
144
+ }
145
+ /**
146
+ * Check if a type is a supported primitive type for CSV fields.
147
+ */
148
+ function isSupportedFieldTypeValue(type) {
149
+ if (isTypeValueEqual(type, variant("Never", null)) ||
150
+ isTypeValueEqual(type, variant("Null", null)) ||
151
+ isTypeValueEqual(type, variant("Boolean", null)) ||
152
+ isTypeValueEqual(type, variant("Integer", null)) ||
153
+ isTypeValueEqual(type, variant("Float", null)) ||
154
+ isTypeValueEqual(type, variant("String", null)) ||
155
+ isTypeValueEqual(type, variant("DateTime", null)) ||
156
+ isTypeValueEqual(type, variant("Blob", null))) {
157
+ // its an literal
158
+ return true;
159
+ }
160
+ else if (isOptionTypeValue(type)) {
161
+ const inner = type.value?.[1]?.type;
162
+ return isSupportedFieldTypeValue(inner);
163
+ }
164
+ return false;
165
+ }
166
+ /**
167
+ * Create a decoder for a single field based on its type.
168
+ */
169
+ function createFieldDecoder(type, fieldName, nullStrings, trimFields) {
170
+ const isOption = isOptionTypeValue(type);
171
+ const baseType = isOption ? getOptionInnerTypeValue(type) : type;
172
+ return (value, location) => {
173
+ // Apply trim if configured
174
+ if (trimFields) {
175
+ value = value.trim();
176
+ }
177
+ // Check for null
178
+ if (nullStrings.includes(value)) {
179
+ if (isOption) {
180
+ return variant("none", null);
181
+ }
182
+ else {
183
+ throw new CsvError(`null value for required field '${fieldName}'`, location);
184
+ }
185
+ }
186
+ // Parse based on type
187
+ let parsed;
188
+ try {
189
+ parsed = parseValue(value, baseType, location);
190
+ }
191
+ catch (e) {
192
+ if (e instanceof CsvError)
193
+ throw e;
194
+ throw new CsvError(`failed to parse '${value}' as ${baseType.type}: ${e}`, location);
195
+ }
196
+ // Wrap in Option if needed
197
+ if (isOption) {
198
+ return variant("some", parsed);
199
+ }
200
+ return parsed;
201
+ };
202
+ }
203
+ /**
204
+ * Parse a string value to the given type.
205
+ */
206
+ function parseValue(value, type, location) {
207
+ switch (type.type) {
208
+ case "Null":
209
+ if (value !== "" && value !== "null") {
210
+ throw new CsvError(`expected null, got '${value}'`, location);
211
+ }
212
+ return null;
213
+ case "Boolean":
214
+ if (value === "true")
215
+ return true;
216
+ if (value === "false")
217
+ return false;
218
+ throw new CsvError(`expected 'true' or 'false', got '${value}'`, location);
219
+ case "Integer": {
220
+ // Handle bigint
221
+ const trimmed = value.trim();
222
+ if (!/^-?\d+$/.test(trimmed)) {
223
+ throw new CsvError(`expected integer, got '${value}'`, location);
224
+ }
225
+ return BigInt(trimmed);
226
+ }
227
+ case "Float": {
228
+ // Handle special values
229
+ if (value === "NaN")
230
+ return NaN;
231
+ if (value === "Infinity")
232
+ return Infinity;
233
+ if (value === "-Infinity")
234
+ return -Infinity;
235
+ if (value === "-0" || value === "-0.0")
236
+ return -0;
237
+ const num = parseFloat(value);
238
+ if (isNaN(num) && value !== "NaN") {
239
+ throw new CsvError(`expected float, got '${value}'`, location);
240
+ }
241
+ return num;
242
+ }
243
+ case "String":
244
+ return value;
245
+ case "DateTime": {
246
+ // Parse ISO 8601 format
247
+ const date = new Date(value);
248
+ if (isNaN(date.getTime())) {
249
+ throw new CsvError(`expected ISO 8601 date, got '${value}'`, location);
250
+ }
251
+ return date;
252
+ }
253
+ case "Blob": {
254
+ // Parse hex string (0xABCD...)
255
+ if (!value.startsWith("0x")) {
256
+ throw new CsvError(`expected hex string starting with '0x', got '${value}'`, location);
257
+ }
258
+ const hex = value.slice(2);
259
+ if (hex.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(hex)) {
260
+ throw new CsvError(`invalid hex string '${value}'`, location);
261
+ }
262
+ const bytes = new Uint8Array(hex.length / 2);
263
+ for (let i = 0; i < bytes.length; i++) {
264
+ bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);
265
+ }
266
+ return bytes;
267
+ }
268
+ default:
269
+ throw new CsvError(`unsupported field type ${type.type}`, location);
270
+ }
271
+ }
272
+ /**
273
+ * Create an encoder for a single field based on its type.
274
+ */
275
+ function createFieldEncoder(type, nullString) {
276
+ const isOption = isOptionTypeValue(type);
277
+ const baseType = isOption ? getOptionInnerTypeValue(type) : type;
278
+ return (value) => {
279
+ // Handle Option type
280
+ if (isOption) {
281
+ if (value.type === "none") {
282
+ return nullString;
283
+ }
284
+ value = value.value;
285
+ }
286
+ // Handle null
287
+ if (value === null || value === undefined) {
288
+ return nullString;
289
+ }
290
+ return encodeValue(value, baseType);
291
+ };
292
+ }
293
+ /**
294
+ * Encode a value to a string.
295
+ */
296
+ function encodeValue(value, type) {
297
+ switch (type.type) {
298
+ case "Null":
299
+ return "";
300
+ case "Boolean":
301
+ return value ? "true" : "false";
302
+ case "Integer":
303
+ return value.toString();
304
+ case "Float":
305
+ if (Number.isNaN(value))
306
+ return "NaN";
307
+ if (value === Infinity)
308
+ return "Infinity";
309
+ if (value === -Infinity)
310
+ return "-Infinity";
311
+ if (Object.is(value, -0))
312
+ return "-0";
313
+ return value.toString();
314
+ case "String":
315
+ return value;
316
+ case "DateTime":
317
+ // ISO 8601 format without timezone suffix
318
+ const d = value;
319
+ const year = d.getUTCFullYear();
320
+ const month = String(d.getUTCMonth() + 1).padStart(2, '0');
321
+ const day = String(d.getUTCDate()).padStart(2, '0');
322
+ const hour = String(d.getUTCHours()).padStart(2, '0');
323
+ const minute = String(d.getUTCMinutes()).padStart(2, '0');
324
+ const second = String(d.getUTCSeconds()).padStart(2, '0');
325
+ const ms = String(d.getUTCMilliseconds()).padStart(3, '0');
326
+ return `${year}-${month}-${day}T${hour}:${minute}:${second}.${ms}`;
327
+ case "Blob":
328
+ // Encode as hex string
329
+ const bytes = value;
330
+ let hex = "0x";
331
+ for (const byte of bytes) {
332
+ hex += byte.toString(16).padStart(2, '0');
333
+ }
334
+ return hex;
335
+ default:
336
+ throw new Error(`Unsupported field type ${type.type} for CSV encoding`);
337
+ }
338
+ }
339
+ // =============================================================================
340
+ // CSV Parsing
341
+ // =============================================================================
342
+ /**
343
+ * Parse a CSV row into an array of fields, handling quotes and escapes.
344
+ */
345
+ function parseRow(blob, offset, delimiter, quoteChar, escapeChar) {
346
+ const decoder = new TextDecoder();
347
+ const delimCode = delimiter.charCodeAt(0);
348
+ const quoteCode = quoteChar.charCodeAt(0);
349
+ const escapeCode = escapeChar.charCodeAt(0);
350
+ const fields = [];
351
+ let inQuote = false;
352
+ let fieldChars = [];
353
+ let i = offset;
354
+ while (i < blob.length) {
355
+ const byte = blob[i];
356
+ if (inQuote) {
357
+ if (byte === escapeCode && i + 1 < blob.length && blob[i + 1] === quoteCode) {
358
+ // Escaped quote
359
+ fieldChars.push(quoteCode);
360
+ i += 2;
361
+ }
362
+ else if (byte === quoteCode) {
363
+ // End of quoted field
364
+ inQuote = false;
365
+ i++;
366
+ }
367
+ else {
368
+ fieldChars.push(byte);
369
+ i++;
370
+ }
371
+ }
372
+ else {
373
+ if (byte === quoteCode && fieldChars.length === 0) {
374
+ // Start of quoted field
375
+ inQuote = true;
376
+ i++;
377
+ }
378
+ else if (byte === delimCode) {
379
+ // End of field
380
+ fields.push(decoder.decode(new Uint8Array(fieldChars)));
381
+ fieldChars = [];
382
+ i++;
383
+ }
384
+ else if (byte === 0x0D) { // CR
385
+ // Check for CRLF
386
+ if (i + 1 < blob.length && blob[i + 1] === 0x0A) {
387
+ fields.push(decoder.decode(new Uint8Array(fieldChars)));
388
+ return { fields, newOffset: i + 2, isEnd: false };
389
+ }
390
+ // Just CR
391
+ fields.push(decoder.decode(new Uint8Array(fieldChars)));
392
+ return { fields, newOffset: i + 1, isEnd: false };
393
+ }
394
+ else if (byte === 0x0A) { // LF
395
+ fields.push(decoder.decode(new Uint8Array(fieldChars)));
396
+ return { fields, newOffset: i + 1, isEnd: false };
397
+ }
398
+ else {
399
+ fieldChars.push(byte);
400
+ i++;
401
+ }
402
+ }
403
+ }
404
+ // End of file
405
+ if (inQuote) {
406
+ throw new CsvError("unclosed quote at end of file");
407
+ }
408
+ fields.push(decoder.decode(new Uint8Array(fieldChars)));
409
+ return { fields, newOffset: i, isEnd: true };
410
+ }
411
+ /**
412
+ * Check if a row is empty (all fields are empty strings).
413
+ * Per RFC 4180, each line should contain the same number of fields,
414
+ * but the skipEmptyLines option allows skipping rows where all fields are empty.
415
+ * This handles blank lines in messy CSV data.
416
+ */
417
+ function isEmptyRow(fields) {
418
+ if (fields.length === 0)
419
+ return true;
420
+ return fields.every(f => f === "");
421
+ }
422
+ export function decodeCsvFor(structType, config, frozen) {
423
+ // Convert EastType to EastTypeValue if necessary
424
+ if (!isVariant(structType)) {
425
+ structType = toEastTypeValue(structType);
426
+ }
427
+ // structType.value is array of { name: string, type: EastTypeValue }
428
+ const fields = structType.value;
429
+ // Validate that all fields are supported types
430
+ for (const { name, type: fieldType } of fields) {
431
+ if (!isSupportedFieldTypeValue(fieldType)) {
432
+ throw new Error(`CSV field '${name}' has unsupported type`);
433
+ }
434
+ }
435
+ // Resolve config with defaults
436
+ const resolved = config ? resolveParseConfig(config) : {
437
+ delimiter: ",",
438
+ quoteChar: '"',
439
+ escapeChar: '"',
440
+ newline: "",
441
+ hasHeader: true,
442
+ nullStrings: [""],
443
+ skipEmptyLines: true,
444
+ trimFields: false,
445
+ columnMapping: new Map(),
446
+ strict: false,
447
+ };
448
+ const { delimiter, quoteChar, escapeChar, hasHeader, nullStrings, skipEmptyLines, trimFields, columnMapping, strict } = resolved;
449
+ // Pre-build field info array (like Beast does)
450
+ const fieldInfos = fields.map(({ name, type }) => ({
451
+ name,
452
+ type,
453
+ isOptional: isOptionTypeValue(type),
454
+ decoder: createFieldDecoder(type, name, nullStrings, trimFields),
455
+ }));
456
+ const fieldNames = fieldInfos.map(f => f.name);
457
+ return (blob) => {
458
+ // Skip UTF-8 BOM if present
459
+ let offset = 0;
460
+ if (blob.length >= 3 && blob[0] === 0xEF && blob[1] === 0xBB && blob[2] === 0xBF) {
461
+ offset = 3;
462
+ }
463
+ // Parse header row
464
+ let headers;
465
+ if (hasHeader) {
466
+ const headerResult = parseRow(blob, offset, delimiter, quoteChar, escapeChar);
467
+ headers = headerResult.fields.map(h => columnMapping.get(h) ?? h);
468
+ offset = headerResult.newOffset;
469
+ }
470
+ else {
471
+ headers = fieldNames;
472
+ }
473
+ // Build header index lookup
474
+ const headerToIndex = new Map();
475
+ for (let i = 0; i < headers.length; i++) {
476
+ headerToIndex.set(headers[i], i);
477
+ }
478
+ // Validate: check for missing required fields and extra columns
479
+ for (const { name, isOptional } of fieldInfos) {
480
+ if (!headerToIndex.has(name) && !isOptional) {
481
+ throw new CsvError(`missing required column '${name}'`);
482
+ }
483
+ }
484
+ if (strict) {
485
+ for (const header of headers) {
486
+ if (!fieldNames.includes(header)) {
487
+ throw new CsvError(`unexpected column '${header}' in strict mode`);
488
+ }
489
+ }
490
+ }
491
+ // Build per-field decoder info with header indices
492
+ const decoders = fieldInfos.map(({ name, isOptional, decoder }) => ({
493
+ name,
494
+ isOptional,
495
+ decoder,
496
+ headerIndex: headerToIndex.get(name) ?? null,
497
+ }));
498
+ // Parse data rows
499
+ const result = [];
500
+ let rowNum = 1;
501
+ while (offset < blob.length) {
502
+ const rowResult = parseRow(blob, offset, delimiter, quoteChar, escapeChar);
503
+ const rowFields = rowResult.fields;
504
+ offset = rowResult.newOffset;
505
+ if (skipEmptyLines && isEmptyRow(rowFields)) {
506
+ if (rowResult.isEnd)
507
+ break;
508
+ continue;
509
+ }
510
+ // Decode row into struct
511
+ const row = {};
512
+ for (const { name, isOptional, decoder, headerIndex } of decoders) {
513
+ if (headerIndex === null) {
514
+ row[name] = variant("none", null);
515
+ }
516
+ else if (headerIndex >= rowFields.length) {
517
+ if (isOptional) {
518
+ row[name] = variant("none", null);
519
+ }
520
+ else {
521
+ throw new CsvError(`row has ${rowFields.length} fields, expected at least ${headerIndex + 1}`, { row: rowNum, column: headerIndex, columnName: name });
522
+ }
523
+ }
524
+ else {
525
+ row[name] = decoder(rowFields[headerIndex], { row: rowNum, column: headerIndex, columnName: name });
526
+ }
527
+ }
528
+ if (frozen)
529
+ Object.freeze(row);
530
+ result.push(row);
531
+ rowNum++;
532
+ if (rowResult.isEnd)
533
+ break;
534
+ }
535
+ if (frozen)
536
+ Object.freeze(result);
537
+ return result;
538
+ };
539
+ }
540
+ // =============================================================================
541
+ // CSV Serialization
542
+ // =============================================================================
543
+ /**
544
+ * Check if a string needs quoting.
545
+ */
546
+ function needsQuoting(value, delimiter, quoteChar) {
547
+ return value.includes(delimiter) ||
548
+ value.includes(quoteChar) ||
549
+ value.includes('\r') ||
550
+ value.includes('\n');
551
+ }
552
+ /**
553
+ * Quote a string value, escaping internal quotes.
554
+ */
555
+ function quoteField(value, quoteChar, escapeChar) {
556
+ const escaped = value.replace(new RegExp(quoteChar, 'g'), escapeChar + quoteChar);
557
+ return quoteChar + escaped + quoteChar;
558
+ }
559
+ export function encodeCsvFor(structType, config) {
560
+ // Convert EastType to EastTypeValue if necessary
561
+ if (!isVariant(structType)) {
562
+ structType = toEastTypeValue(structType);
563
+ }
564
+ const fields = structType.value;
565
+ // Validate that all fields are supported types
566
+ for (const { name, type: fieldType } of fields) {
567
+ if (!isSupportedFieldTypeValue(fieldType)) {
568
+ throw new Error(`CSV field '${name}' has unsupported type`);
569
+ }
570
+ }
571
+ // Resolve config with defaults
572
+ const resolved = config ? resolveSerializeConfig(config) : {
573
+ delimiter: ",",
574
+ quoteChar: '"',
575
+ escapeChar: '"',
576
+ newline: "\r\n",
577
+ includeHeader: true,
578
+ nullString: "",
579
+ alwaysQuote: false,
580
+ };
581
+ const { delimiter, quoteChar, escapeChar, newline, includeHeader, nullString, alwaysQuote } = resolved;
582
+ const fieldNames = fields.map(f => f.name);
583
+ const encoder = new TextEncoder();
584
+ // Create field encoders
585
+ const encoders = fields.map(({ type }) => createFieldEncoder(type, nullString));
586
+ return (value) => {
587
+ const lines = [];
588
+ // Write header
589
+ if (includeHeader) {
590
+ const headerFields = fieldNames.map(name => {
591
+ if (alwaysQuote || needsQuoting(name, delimiter, quoteChar)) {
592
+ return quoteField(name, quoteChar, escapeChar);
593
+ }
594
+ return name;
595
+ });
596
+ lines.push(headerFields.join(delimiter));
597
+ }
598
+ // Write data rows
599
+ for (const row of value) {
600
+ const rowFields = [];
601
+ for (let i = 0; i < fieldNames.length; i++) {
602
+ const fieldName = fieldNames[i];
603
+ const fieldValue = row[fieldName];
604
+ let encoded = encoders[i](fieldValue);
605
+ if (alwaysQuote || needsQuoting(encoded, delimiter, quoteChar)) {
606
+ encoded = quoteField(encoded, quoteChar, escapeChar);
607
+ }
608
+ rowFields.push(encoded);
609
+ }
610
+ lines.push(rowFields.join(delimiter));
611
+ }
612
+ return encoder.encode(lines.join(newline));
613
+ };
614
+ }
615
+ //# sourceMappingURL=csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/serialization/csv.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@
5
5
  export * from "./east.js";
6
6
  export * from "./binary-utils.js";
7
7
  export * from "./beast.js";
8
- export { encodeBeast2For, decodeBeast2For, decodeBeast2 } from "./beast2.js";
8
+ export { encodeBeast2For, decodeBeast2For, decodeBeast2, compileFunctionIR, compileAsyncFunctionIR, EAST_IR_SYMBOL } from "./beast2.js";
9
9
  export * from "./json.js";
10
+ export * from "./csv.js";
10
11
  export * from "./beast2-stream.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7E,cAAc,WAAW,CAAC;AAG1B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxI,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AAGzB,cAAc,oBAAoB,CAAC"}