@elaraai/east-node-io 0.0.1-beta.0 → 0.0.1-beta.2
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/dist/compression/gzip.d.ts +108 -0
- package/dist/compression/gzip.d.ts.map +1 -0
- package/dist/compression/gzip.js +153 -0
- package/dist/compression/gzip.js.map +1 -0
- package/dist/compression/index.d.ts +308 -0
- package/dist/compression/index.d.ts.map +1 -0
- package/dist/compression/index.js +289 -0
- package/dist/compression/index.js.map +1 -0
- package/dist/compression/tar.d.ts +115 -0
- package/dist/compression/tar.d.ts.map +1 -0
- package/dist/compression/tar.js +254 -0
- package/dist/compression/tar.js.map +1 -0
- package/dist/compression/types.d.ts +124 -0
- package/dist/compression/types.d.ts.map +1 -0
- package/dist/compression/types.js +106 -0
- package/dist/compression/types.js.map +1 -0
- package/dist/compression/zip.d.ts +121 -0
- package/dist/compression/zip.d.ts.map +1 -0
- package/dist/compression/zip.js +200 -0
- package/dist/compression/zip.js.map +1 -0
- package/dist/connection/index.d.ts +78 -0
- package/dist/connection/index.d.ts.map +1 -0
- package/dist/connection/index.js +134 -0
- package/dist/connection/index.js.map +1 -0
- package/dist/format/csv.d.ts +210 -0
- package/dist/format/csv.d.ts.map +1 -0
- package/dist/format/csv.js +729 -0
- package/dist/format/csv.js.map +1 -0
- package/dist/format/index.d.ts +641 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +463 -0
- package/dist/format/index.js.map +1 -0
- package/dist/format/types.d.ts +176 -0
- package/dist/format/types.d.ts.map +1 -0
- package/dist/format/types.js +122 -0
- package/dist/format/types.js.map +1 -0
- package/dist/format/xlsx.d.ts +178 -0
- package/dist/format/xlsx.d.ts.map +1 -0
- package/dist/format/xlsx.js +313 -0
- package/dist/format/xlsx.js.map +1 -0
- package/dist/format/xml.d.ts +302 -0
- package/dist/format/xml.d.ts.map +1 -0
- package/dist/format/xml.js +602 -0
- package/dist/format/xml.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/nosql/index.d.ts +503 -0
- package/dist/nosql/index.d.ts.map +1 -0
- package/dist/nosql/index.js +483 -0
- package/dist/nosql/index.js.map +1 -0
- package/dist/nosql/mongodb.d.ts +306 -0
- package/dist/nosql/mongodb.d.ts.map +1 -0
- package/dist/nosql/mongodb.js +552 -0
- package/dist/nosql/mongodb.js.map +1 -0
- package/dist/nosql/redis.d.ts +268 -0
- package/dist/nosql/redis.d.ts.map +1 -0
- package/dist/nosql/redis.js +371 -0
- package/dist/nosql/redis.js.map +1 -0
- package/dist/nosql/types.d.ts +70 -0
- package/dist/nosql/types.d.ts.map +1 -0
- package/dist/nosql/types.js +79 -0
- package/dist/nosql/types.js.map +1 -0
- package/dist/sql/index.d.ts +777 -0
- package/dist/sql/index.d.ts.map +1 -0
- package/dist/sql/index.js +515 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/mysql.d.ts +238 -0
- package/dist/sql/mysql.d.ts.map +1 -0
- package/dist/sql/mysql.js +396 -0
- package/dist/sql/mysql.js.map +1 -0
- package/dist/sql/postgres.d.ts +237 -0
- package/dist/sql/postgres.d.ts.map +1 -0
- package/dist/sql/postgres.js +381 -0
- package/dist/sql/postgres.js.map +1 -0
- package/dist/sql/sqlite.d.ts +217 -0
- package/dist/sql/sqlite.d.ts.map +1 -0
- package/dist/sql/sqlite.js +366 -0
- package/dist/sql/sqlite.js.map +1 -0
- package/dist/sql/types.d.ts +205 -0
- package/dist/sql/types.d.ts.map +1 -0
- package/dist/sql/types.js +175 -0
- package/dist/sql/types.js.map +1 -0
- package/dist/storage/index.d.ts +304 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +234 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/s3.d.ts +373 -0
- package/dist/storage/s3.d.ts.map +1 -0
- package/dist/storage/s3.js +502 -0
- package/dist/storage/s3.js.map +1 -0
- package/dist/storage/types.d.ts +117 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +94 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/transfer/ftp.d.ts +333 -0
- package/dist/transfer/ftp.d.ts.map +1 -0
- package/dist/transfer/ftp.js +437 -0
- package/dist/transfer/ftp.js.map +1 -0
- package/dist/transfer/index.d.ts +456 -0
- package/dist/transfer/index.d.ts.map +1 -0
- package/dist/transfer/index.js +414 -0
- package/dist/transfer/index.js.map +1 -0
- package/dist/transfer/sftp.d.ts +333 -0
- package/dist/transfer/sftp.d.ts.map +1 -0
- package/dist/transfer/sftp.js +436 -0
- package/dist/transfer/sftp.js.map +1 -0
- package/dist/transfer/types.d.ts +108 -0
- package/dist/transfer/types.d.ts.map +1 -0
- package/dist/transfer/types.js +110 -0
- package/dist/transfer/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,641 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* File format platform functions for East Node IO.
|
|
7
|
+
*
|
|
8
|
+
* Provides functions for reading and writing structured file formats like
|
|
9
|
+
* Excel (XLSX), CSV, and more.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { East, BlobType, IntegerType } from "@elaraai/east";
|
|
14
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
15
|
+
*
|
|
16
|
+
* const countRows = East.function([BlobType], IntegerType, ($, xlsxBlob) => {
|
|
17
|
+
* const options = $.let({
|
|
18
|
+
* sheetName: { tag: "none", value: {} },
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* const sheet = $.let(Format.XLSX.read(xlsxBlob, options));
|
|
22
|
+
* return $.return(sheet.size());
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* const compiled = East.compile(countRows.toIR(), Format.XLSX.Implementation);
|
|
26
|
+
* const xlsxBlob = new Uint8Array([]); // XLSX file bytes
|
|
27
|
+
* compiled(xlsxBlob); // 100n
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @packageDocumentation
|
|
31
|
+
*/
|
|
32
|
+
export * from "./types.js";
|
|
33
|
+
export { xlsx_read, xlsx_write, xlsx_info, XlsxImpl } from "./xlsx.js";
|
|
34
|
+
export { csv_parse, csv_serialize, CsvImpl, CsvParseConfig, CsvSerializeConfig, CsvRowType, CsvDataType } from "./csv.js";
|
|
35
|
+
export { xml_parse, xml_serialize, XmlImpl, XmlParseConfig, XmlSerializeConfig, XmlNode } from "./xml.js";
|
|
36
|
+
/**
|
|
37
|
+
* File format platform functions grouped by format type.
|
|
38
|
+
*
|
|
39
|
+
* Provides organized access to format-specific operations for reading and
|
|
40
|
+
* writing structured data files in East programs.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { East, BlobType } from "@elaraai/east";
|
|
45
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
46
|
+
*
|
|
47
|
+
* const createExcel = East.function([], BlobType, $ => {
|
|
48
|
+
* const data = $.let([
|
|
49
|
+
* [East.variant('String', "Name"), East.variant('String', "Age")],
|
|
50
|
+
* [East.variant('String', "Alice"), East.variant('Float', 30)],
|
|
51
|
+
* [East.variant('String', "Bob"), East.variant('Float', 25)],
|
|
52
|
+
* ]);
|
|
53
|
+
*
|
|
54
|
+
* const options = $.let({
|
|
55
|
+
* sheetName: { tag: "some", value: "People" },
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* const blob = $.let(Format.XLSX.write(data, options));
|
|
59
|
+
* return $.return(blob);
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* const compiled = East.compile(createExcel.toIR(), Format.XLSX.Implementation);
|
|
63
|
+
* const xlsxBlob = compiled(); // Uint8Array with XLSX file bytes
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare const Format: {
|
|
67
|
+
/**
|
|
68
|
+
* XLSX (Excel) file format operations.
|
|
69
|
+
*
|
|
70
|
+
* Provides functions for reading and writing Excel files as 2D arrays
|
|
71
|
+
* of literal values (strings, numbers, booleans, null).
|
|
72
|
+
*/
|
|
73
|
+
readonly XLSX: {
|
|
74
|
+
/**
|
|
75
|
+
* Reads an XLSX file and returns a 2D array of cell values.
|
|
76
|
+
*
|
|
77
|
+
* Parses an Excel file from a blob and extracts data as ArrayType<ArrayType<LiteralValueType>>.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* import { East, BlobType, IntegerType, variant } from "@elaraai/east";
|
|
82
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
83
|
+
*
|
|
84
|
+
* const countRows = East.function([BlobType], IntegerType, ($, xlsxBlob) => {
|
|
85
|
+
* const options = $.let({
|
|
86
|
+
* sheetName: variant('none', null),
|
|
87
|
+
* });
|
|
88
|
+
*
|
|
89
|
+
* const sheet = $.let(Format.XLSX.read(xlsxBlob, options));
|
|
90
|
+
* $.return(sheet.size());
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* const compiled = East.compile(countRows.toIR(), Format.XLSX.Implementation);
|
|
94
|
+
* const blob = new Uint8Array([]);
|
|
95
|
+
* compiled(blob); // 100n
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
readonly read: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").BlobType, import("@elaraai/east").StructType<{
|
|
99
|
+
sheetName: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
100
|
+
}>], import("@elaraai/east").ArrayType<import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
101
|
+
Null: import("@elaraai/east").NullType;
|
|
102
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
103
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
104
|
+
Float: import("@elaraai/east").FloatType;
|
|
105
|
+
String: import("@elaraai/east").StringType;
|
|
106
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
107
|
+
Blob: import("@elaraai/east").BlobType;
|
|
108
|
+
}>>>>;
|
|
109
|
+
/**
|
|
110
|
+
* Writes a 2D array of cell values to an XLSX file.
|
|
111
|
+
*
|
|
112
|
+
* Creates an Excel file from a 2D array of literal values.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* import { East, BlobType, variant } from "@elaraai/east";
|
|
117
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
118
|
+
*
|
|
119
|
+
* const createExcel = East.function([], BlobType, $ => {
|
|
120
|
+
* const data = $.let([
|
|
121
|
+
* [variant('String', "Name"), variant('String', "Age")],
|
|
122
|
+
* [variant('String', "Alice"), variant('Float', 30)],
|
|
123
|
+
* ], Format.XLSX.Types.Sheet);
|
|
124
|
+
*
|
|
125
|
+
* const options = $.let({
|
|
126
|
+
* sheetName: variant('some', "People"),
|
|
127
|
+
* });
|
|
128
|
+
*
|
|
129
|
+
* const blob = $.let(Format.XLSX.write(data, options));
|
|
130
|
+
* $.return(blob);
|
|
131
|
+
* });
|
|
132
|
+
*
|
|
133
|
+
* const compiled = East.compile(createExcel.toIR(), Format.XLSX.Implementation);
|
|
134
|
+
* const xlsxBlob = compiled();
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
readonly write: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").ArrayType<import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
138
|
+
Null: import("@elaraai/east").NullType;
|
|
139
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
140
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
141
|
+
Float: import("@elaraai/east").FloatType;
|
|
142
|
+
String: import("@elaraai/east").StringType;
|
|
143
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
144
|
+
Blob: import("@elaraai/east").BlobType;
|
|
145
|
+
}>>>, import("@elaraai/east").StructType<{
|
|
146
|
+
sheetName: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
147
|
+
}>], import("@elaraai/east").BlobType>;
|
|
148
|
+
/**
|
|
149
|
+
* Gets metadata about an XLSX file.
|
|
150
|
+
*
|
|
151
|
+
* Returns sheet names and approximate sizes without reading all data.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* import { East, BlobType, IntegerType, variant } from "@elaraai/east";
|
|
156
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
157
|
+
*
|
|
158
|
+
* const countSheets = East.function([BlobType], IntegerType, ($, xlsxBlob) => {
|
|
159
|
+
* const info = $.let(Format.XLSX.info(xlsxBlob));
|
|
160
|
+
* $.return(info.sheets.size());
|
|
161
|
+
* });
|
|
162
|
+
*
|
|
163
|
+
* const compiled = East.compile(countSheets.toIR(), Format.XLSX.Implementation);
|
|
164
|
+
* const blob = new Uint8Array([]);
|
|
165
|
+
* compiled(blob); // 3n
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
readonly info: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").BlobType], import("@elaraai/east").StructType<{
|
|
169
|
+
sheets: import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
|
|
170
|
+
name: import("@elaraai/east").StringType;
|
|
171
|
+
rowCount: import("@elaraai/east").IntegerType;
|
|
172
|
+
columnCount: import("@elaraai/east").IntegerType;
|
|
173
|
+
}>>;
|
|
174
|
+
}>>;
|
|
175
|
+
/**
|
|
176
|
+
* Node.js implementation of XLSX platform functions.
|
|
177
|
+
*
|
|
178
|
+
* Pass this to {@link East.compile} to enable XLSX operations.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts
|
|
182
|
+
* import { East, BlobType, NullType, variant } from "@elaraai/east";
|
|
183
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
184
|
+
*
|
|
185
|
+
* const myFunction = East.function([BlobType], NullType, ($, xlsxBlob) => {
|
|
186
|
+
* const options = $.let({
|
|
187
|
+
* sheetName: variant('none', null),
|
|
188
|
+
* });
|
|
189
|
+
* const sheet = $.let(Format.XLSX.read(xlsxBlob, options));
|
|
190
|
+
* $.return(null);
|
|
191
|
+
* });
|
|
192
|
+
*
|
|
193
|
+
* const compiled = East.compile(myFunction.toIR(), Format.XLSX.Implementation);
|
|
194
|
+
* const blob = new Uint8Array([]);
|
|
195
|
+
* compiled(blob);
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
readonly Implementation: import("@elaraai/east/internal").PlatformFunction[];
|
|
199
|
+
/**
|
|
200
|
+
* Type definitions for XLSX operations.
|
|
201
|
+
*/
|
|
202
|
+
readonly Types: {
|
|
203
|
+
/**
|
|
204
|
+
* A single cell value in a spreadsheet (LiteralValueType).
|
|
205
|
+
*/
|
|
206
|
+
readonly Cell: import("@elaraai/east").VariantType<{
|
|
207
|
+
Null: import("@elaraai/east").NullType;
|
|
208
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
209
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
210
|
+
Float: import("@elaraai/east").FloatType;
|
|
211
|
+
String: import("@elaraai/east").StringType;
|
|
212
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
213
|
+
Blob: import("@elaraai/east").BlobType;
|
|
214
|
+
}>;
|
|
215
|
+
/**
|
|
216
|
+
* A row of cells in a spreadsheet.
|
|
217
|
+
*/
|
|
218
|
+
readonly Row: import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
219
|
+
Null: import("@elaraai/east").NullType;
|
|
220
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
221
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
222
|
+
Float: import("@elaraai/east").FloatType;
|
|
223
|
+
String: import("@elaraai/east").StringType;
|
|
224
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
225
|
+
Blob: import("@elaraai/east").BlobType;
|
|
226
|
+
}>>;
|
|
227
|
+
/**
|
|
228
|
+
* A 2D array representing a complete worksheet.
|
|
229
|
+
*/
|
|
230
|
+
readonly Sheet: import("@elaraai/east").ArrayType<import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
231
|
+
Null: import("@elaraai/east").NullType;
|
|
232
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
233
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
234
|
+
Float: import("@elaraai/east").FloatType;
|
|
235
|
+
String: import("@elaraai/east").StringType;
|
|
236
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
237
|
+
Blob: import("@elaraai/east").BlobType;
|
|
238
|
+
}>>>;
|
|
239
|
+
/**
|
|
240
|
+
* XLSX read options configuration.
|
|
241
|
+
*/
|
|
242
|
+
readonly ReadOptions: import("@elaraai/east").StructType<{
|
|
243
|
+
sheetName: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
244
|
+
}>;
|
|
245
|
+
/**
|
|
246
|
+
* XLSX write options configuration.
|
|
247
|
+
*/
|
|
248
|
+
readonly WriteOptions: import("@elaraai/east").StructType<{
|
|
249
|
+
sheetName: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
250
|
+
}>;
|
|
251
|
+
/**
|
|
252
|
+
* Information about a single sheet in an XLSX file.
|
|
253
|
+
*/
|
|
254
|
+
readonly SheetInfo: import("@elaraai/east").StructType<{
|
|
255
|
+
name: import("@elaraai/east").StringType;
|
|
256
|
+
rowCount: import("@elaraai/east").IntegerType;
|
|
257
|
+
columnCount: import("@elaraai/east").IntegerType;
|
|
258
|
+
}>;
|
|
259
|
+
/**
|
|
260
|
+
* XLSX file metadata with sheet listing.
|
|
261
|
+
*/
|
|
262
|
+
readonly Info: import("@elaraai/east").StructType<{
|
|
263
|
+
sheets: import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
|
|
264
|
+
name: import("@elaraai/east").StringType;
|
|
265
|
+
rowCount: import("@elaraai/east").IntegerType;
|
|
266
|
+
columnCount: import("@elaraai/east").IntegerType;
|
|
267
|
+
}>>;
|
|
268
|
+
}>;
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
/**
|
|
272
|
+
* CSV (Comma-Separated Values) file format operations.
|
|
273
|
+
*
|
|
274
|
+
* Provides functions for parsing and serializing CSV files as arrays of dictionaries,
|
|
275
|
+
* where each row is a dictionary mapping column names to optional string values.
|
|
276
|
+
*/
|
|
277
|
+
readonly CSV: {
|
|
278
|
+
/**
|
|
279
|
+
* Parses CSV data from a binary blob into structured row data.
|
|
280
|
+
*
|
|
281
|
+
* Converts CSV-formatted binary data into an array of row dictionaries,
|
|
282
|
+
* where each dictionary maps column names to optional string values.
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* ```ts
|
|
286
|
+
* import { East, BlobType, variant } from "@elaraai/east";
|
|
287
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
288
|
+
*
|
|
289
|
+
* const parseCSV = East.function([BlobType], Format.CSV.Types.Data, ($, csvBlob) => {
|
|
290
|
+
* const config = $.let({
|
|
291
|
+
* delimiter: variant('none', null),
|
|
292
|
+
* quoteChar: variant('none', null),
|
|
293
|
+
* escapeChar: variant('none', null),
|
|
294
|
+
* newline: variant('none', null),
|
|
295
|
+
* hasHeader: true,
|
|
296
|
+
* nullString: variant('some', ""),
|
|
297
|
+
* skipEmptyLines: true,
|
|
298
|
+
* trimFields: false,
|
|
299
|
+
* });
|
|
300
|
+
*
|
|
301
|
+
* return $.return(Format.CSV.parse(csvBlob, config));
|
|
302
|
+
* });
|
|
303
|
+
*
|
|
304
|
+
* const compiled = East.compile(parseCSV.toIR(), Format.CSV.Implementation);
|
|
305
|
+
* const csvBlob = new TextEncoder().encode("name,age\nAlice,30\nBob,25");
|
|
306
|
+
* compiled(csvBlob); // Returns parsed CSV data
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
readonly parse: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").BlobType, import("@elaraai/east").StructType<{
|
|
310
|
+
columns: import("@elaraai/east").OptionType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").VariantType<{
|
|
311
|
+
Null: import("@elaraai/east").NullType;
|
|
312
|
+
Boolean: import("@elaraai/east").NullType;
|
|
313
|
+
Integer: import("@elaraai/east").NullType;
|
|
314
|
+
Float: import("@elaraai/east").NullType;
|
|
315
|
+
String: import("@elaraai/east").NullType;
|
|
316
|
+
DateTime: import("@elaraai/east").NullType;
|
|
317
|
+
Blob: import("@elaraai/east").NullType;
|
|
318
|
+
}>>>;
|
|
319
|
+
delimiter: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
320
|
+
quoteChar: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
321
|
+
escapeChar: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
322
|
+
newline: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
323
|
+
hasHeader: import("@elaraai/east").BooleanType;
|
|
324
|
+
nullString: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
325
|
+
skipEmptyLines: import("@elaraai/east").BooleanType;
|
|
326
|
+
trimFields: import("@elaraai/east").BooleanType;
|
|
327
|
+
}>], import("@elaraai/east").ArrayType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").VariantType<{
|
|
328
|
+
Null: import("@elaraai/east").NullType;
|
|
329
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
330
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
331
|
+
Float: import("@elaraai/east").FloatType;
|
|
332
|
+
String: import("@elaraai/east").StringType;
|
|
333
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
334
|
+
Blob: import("@elaraai/east").BlobType;
|
|
335
|
+
}>>>>;
|
|
336
|
+
/**
|
|
337
|
+
* Serializes structured row data into CSV-formatted binary data.
|
|
338
|
+
*
|
|
339
|
+
* Converts an array of row dictionaries into CSV-formatted binary data
|
|
340
|
+
* with configurable formatting options.
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```ts
|
|
344
|
+
* import { East, BlobType, variant } from "@elaraai/east";
|
|
345
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
346
|
+
*
|
|
347
|
+
* const serializeCSV = East.function([Format.CSV.Types.Data], BlobType, ($, data) => {
|
|
348
|
+
* const config = $.let({
|
|
349
|
+
* delimiter: ",",
|
|
350
|
+
* quoteChar: '"',
|
|
351
|
+
* escapeChar: '"',
|
|
352
|
+
* newline: "\n",
|
|
353
|
+
* includeHeader: true,
|
|
354
|
+
* nullString: "",
|
|
355
|
+
* alwaysQuote: false,
|
|
356
|
+
* });
|
|
357
|
+
*
|
|
358
|
+
* return $.return(Format.CSV.serialize(data, config));
|
|
359
|
+
* });
|
|
360
|
+
*
|
|
361
|
+
* const compiled = East.compile(serializeCSV.toIR(), Format.CSV.Implementation);
|
|
362
|
+
* const data = [new Map([["name", variant("some", "Alice")], ["age", variant("some", "30")]])];
|
|
363
|
+
* compiled(data); // Returns CSV blob
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
readonly serialize: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").ArrayType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").VariantType<{
|
|
367
|
+
Null: import("@elaraai/east").NullType;
|
|
368
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
369
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
370
|
+
Float: import("@elaraai/east").FloatType;
|
|
371
|
+
String: import("@elaraai/east").StringType;
|
|
372
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
373
|
+
Blob: import("@elaraai/east").BlobType;
|
|
374
|
+
}>>>, import("@elaraai/east").StructType<{
|
|
375
|
+
delimiter: import("@elaraai/east").StringType;
|
|
376
|
+
quoteChar: import("@elaraai/east").StringType;
|
|
377
|
+
escapeChar: import("@elaraai/east").StringType;
|
|
378
|
+
newline: import("@elaraai/east").StringType;
|
|
379
|
+
includeHeader: import("@elaraai/east").BooleanType;
|
|
380
|
+
nullString: import("@elaraai/east").StringType;
|
|
381
|
+
alwaysQuote: import("@elaraai/east").BooleanType;
|
|
382
|
+
}>], import("@elaraai/east").BlobType>;
|
|
383
|
+
/**
|
|
384
|
+
* Node.js implementation of CSV platform functions.
|
|
385
|
+
*
|
|
386
|
+
* Pass this to {@link East.compile} to enable CSV operations.
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```ts
|
|
390
|
+
* import { East, BlobType } from "@elaraai/east";
|
|
391
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
392
|
+
*
|
|
393
|
+
* const myFunction = East.function([BlobType], BlobType, ($, csvBlob) => {
|
|
394
|
+
* const parseConfig = $.let({
|
|
395
|
+
* delimiter: variant('none', null),
|
|
396
|
+
* quoteChar: variant('none', null),
|
|
397
|
+
* escapeChar: variant('none', null),
|
|
398
|
+
* newline: variant('none', null),
|
|
399
|
+
* hasHeader: true,
|
|
400
|
+
* nullString: variant('none', null),
|
|
401
|
+
* skipEmptyLines: true,
|
|
402
|
+
* trimFields: false,
|
|
403
|
+
* });
|
|
404
|
+
*
|
|
405
|
+
* const data = $.let(Format.CSV.parse(csvBlob, parseConfig));
|
|
406
|
+
*
|
|
407
|
+
* const serializeConfig = $.let({
|
|
408
|
+
* delimiter: ",",
|
|
409
|
+
* quoteChar: '"',
|
|
410
|
+
* escapeChar: '"',
|
|
411
|
+
* newline: "\n",
|
|
412
|
+
* includeHeader: true,
|
|
413
|
+
* nullString: "",
|
|
414
|
+
* alwaysQuote: false,
|
|
415
|
+
* });
|
|
416
|
+
*
|
|
417
|
+
* return $.return(Format.CSV.serialize(data, serializeConfig));
|
|
418
|
+
* });
|
|
419
|
+
*
|
|
420
|
+
* const compiled = East.compile(myFunction.toIR(), Format.CSV.Implementation);
|
|
421
|
+
* const csvBlob = new TextEncoder().encode("name,age\nAlice,30");
|
|
422
|
+
* compiled(csvBlob);
|
|
423
|
+
* ```
|
|
424
|
+
*/
|
|
425
|
+
readonly Implementation: import("@elaraai/east/internal").PlatformFunction[];
|
|
426
|
+
/**
|
|
427
|
+
* Type definitions for CSV operations.
|
|
428
|
+
*/
|
|
429
|
+
readonly Types: {
|
|
430
|
+
/**
|
|
431
|
+
* CSV parse configuration options.
|
|
432
|
+
*/
|
|
433
|
+
readonly ParseConfig: import("@elaraai/east").StructType<{
|
|
434
|
+
columns: import("@elaraai/east").OptionType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").VariantType<{
|
|
435
|
+
Null: import("@elaraai/east").NullType;
|
|
436
|
+
Boolean: import("@elaraai/east").NullType;
|
|
437
|
+
Integer: import("@elaraai/east").NullType;
|
|
438
|
+
Float: import("@elaraai/east").NullType;
|
|
439
|
+
String: import("@elaraai/east").NullType;
|
|
440
|
+
DateTime: import("@elaraai/east").NullType;
|
|
441
|
+
Blob: import("@elaraai/east").NullType;
|
|
442
|
+
}>>>;
|
|
443
|
+
delimiter: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
444
|
+
quoteChar: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
445
|
+
escapeChar: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
446
|
+
newline: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
447
|
+
hasHeader: import("@elaraai/east").BooleanType;
|
|
448
|
+
nullString: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
449
|
+
skipEmptyLines: import("@elaraai/east").BooleanType;
|
|
450
|
+
trimFields: import("@elaraai/east").BooleanType;
|
|
451
|
+
}>;
|
|
452
|
+
/**
|
|
453
|
+
* CSV serialize configuration options.
|
|
454
|
+
*/
|
|
455
|
+
readonly SerializeConfig: import("@elaraai/east").StructType<{
|
|
456
|
+
delimiter: import("@elaraai/east").StringType;
|
|
457
|
+
quoteChar: import("@elaraai/east").StringType;
|
|
458
|
+
escapeChar: import("@elaraai/east").StringType;
|
|
459
|
+
newline: import("@elaraai/east").StringType;
|
|
460
|
+
includeHeader: import("@elaraai/east").BooleanType;
|
|
461
|
+
nullString: import("@elaraai/east").StringType;
|
|
462
|
+
alwaysQuote: import("@elaraai/east").BooleanType;
|
|
463
|
+
}>;
|
|
464
|
+
/**
|
|
465
|
+
* A row in a CSV file (dictionary mapping column names to optional string values).
|
|
466
|
+
*/
|
|
467
|
+
readonly Row: import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").VariantType<{
|
|
468
|
+
Null: import("@elaraai/east").NullType;
|
|
469
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
470
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
471
|
+
Float: import("@elaraai/east").FloatType;
|
|
472
|
+
String: import("@elaraai/east").StringType;
|
|
473
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
474
|
+
Blob: import("@elaraai/east").BlobType;
|
|
475
|
+
}>>;
|
|
476
|
+
/**
|
|
477
|
+
* CSV data as an array of rows.
|
|
478
|
+
*/
|
|
479
|
+
readonly Data: import("@elaraai/east").ArrayType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").VariantType<{
|
|
480
|
+
Null: import("@elaraai/east").NullType;
|
|
481
|
+
Boolean: import("@elaraai/east").BooleanType;
|
|
482
|
+
Integer: import("@elaraai/east").IntegerType;
|
|
483
|
+
Float: import("@elaraai/east").FloatType;
|
|
484
|
+
String: import("@elaraai/east").StringType;
|
|
485
|
+
DateTime: import("@elaraai/east").DateTimeType;
|
|
486
|
+
Blob: import("@elaraai/east").BlobType;
|
|
487
|
+
}>>>;
|
|
488
|
+
};
|
|
489
|
+
};
|
|
490
|
+
/**
|
|
491
|
+
* XML (Extensible Markup Language) file format operations.
|
|
492
|
+
*
|
|
493
|
+
* Provides functions for parsing and serializing XML files as recursive tree structures,
|
|
494
|
+
* where each node contains a tag name, attributes dictionary, and children array.
|
|
495
|
+
*/
|
|
496
|
+
readonly XML: {
|
|
497
|
+
/**
|
|
498
|
+
* Parses XML data from a binary blob into a recursive tree structure.
|
|
499
|
+
*
|
|
500
|
+
* Converts XML-formatted binary data into an XmlNode recursive structure.
|
|
501
|
+
* Supports XML declarations, namespaces, CDATA, entity decoding, and comments.
|
|
502
|
+
*
|
|
503
|
+
* @example
|
|
504
|
+
* ```ts
|
|
505
|
+
* import { East, BlobType } from "@elaraai/east";
|
|
506
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
507
|
+
*
|
|
508
|
+
* const parseXML = East.function([BlobType], Format.XML.Types.Node, ($, xmlBlob) => {
|
|
509
|
+
* const config = $.let({
|
|
510
|
+
* preserveWhitespace: false,
|
|
511
|
+
* decodeEntities: true,
|
|
512
|
+
* });
|
|
513
|
+
*
|
|
514
|
+
* return $.return(Format.XML.parse(xmlBlob, config));
|
|
515
|
+
* });
|
|
516
|
+
*
|
|
517
|
+
* const compiled = East.compile(parseXML.toIR(), Format.XML.Implementation);
|
|
518
|
+
* const xmlBlob = new TextEncoder().encode("<book id='123'><title>East Guide</title></book>");
|
|
519
|
+
* compiled(xmlBlob); // Returns parsed XML tree
|
|
520
|
+
* ```
|
|
521
|
+
*/
|
|
522
|
+
readonly parse: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").BlobType, import("@elaraai/east").StructType<{
|
|
523
|
+
preserveWhitespace: import("@elaraai/east").BooleanType;
|
|
524
|
+
decodeEntities: import("@elaraai/east").BooleanType;
|
|
525
|
+
}>], import("@elaraai/east").RecursiveType<import("@elaraai/east").StructType<{
|
|
526
|
+
tag: import("@elaraai/east").StringType;
|
|
527
|
+
attributes: import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").StringType>;
|
|
528
|
+
children: import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
529
|
+
TEXT: import("@elaraai/east").StringType;
|
|
530
|
+
ELEMENT: import("@elaraai/east").RecursiveTypeMarker;
|
|
531
|
+
}>>;
|
|
532
|
+
}>>>;
|
|
533
|
+
/**
|
|
534
|
+
* Serializes a recursive XML tree structure into XML-formatted binary data.
|
|
535
|
+
*
|
|
536
|
+
* Converts an XmlNode recursive structure into XML-formatted binary data.
|
|
537
|
+
* Supports indentation, XML declarations, entity encoding, and self-closing tags.
|
|
538
|
+
*
|
|
539
|
+
* @example
|
|
540
|
+
* ```ts
|
|
541
|
+
* import { East, BlobType, variant } from "@elaraai/east";
|
|
542
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
543
|
+
*
|
|
544
|
+
* const serializeXML = East.function([Format.XML.Types.Node], BlobType, ($, doc) => {
|
|
545
|
+
* const config = $.let({
|
|
546
|
+
* indent: variant('some', " "),
|
|
547
|
+
* includeXmlDeclaration: true,
|
|
548
|
+
* encodeEntities: true,
|
|
549
|
+
* selfClosingTags: true,
|
|
550
|
+
* });
|
|
551
|
+
*
|
|
552
|
+
* return $.return(Format.XML.serialize(doc, config));
|
|
553
|
+
* });
|
|
554
|
+
*
|
|
555
|
+
* const compiled = East.compile(serializeXML.toIR(), Format.XML.Implementation);
|
|
556
|
+
* const xmlNode = { tag: "book", attributes: new Map([["id", "123"]]), children: [] };
|
|
557
|
+
* compiled(xmlNode); // Returns XML blob
|
|
558
|
+
* ```
|
|
559
|
+
*/
|
|
560
|
+
readonly serialize: import("@elaraai/east").PlatformDefinition<[import("@elaraai/east").RecursiveType<import("@elaraai/east").StructType<{
|
|
561
|
+
tag: import("@elaraai/east").StringType;
|
|
562
|
+
attributes: import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").StringType>;
|
|
563
|
+
children: import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
564
|
+
TEXT: import("@elaraai/east").StringType;
|
|
565
|
+
ELEMENT: import("@elaraai/east").RecursiveTypeMarker;
|
|
566
|
+
}>>;
|
|
567
|
+
}>>, import("@elaraai/east").StructType<{
|
|
568
|
+
indent: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
569
|
+
includeXmlDeclaration: import("@elaraai/east").BooleanType;
|
|
570
|
+
encodeEntities: import("@elaraai/east").BooleanType;
|
|
571
|
+
selfClosingTags: import("@elaraai/east").BooleanType;
|
|
572
|
+
}>], import("@elaraai/east").BlobType>;
|
|
573
|
+
/**
|
|
574
|
+
* Node.js implementation of XML platform functions.
|
|
575
|
+
*
|
|
576
|
+
* Pass this to {@link East.compile} to enable XML operations.
|
|
577
|
+
*
|
|
578
|
+
* @example
|
|
579
|
+
* ```ts
|
|
580
|
+
* import { East, BlobType, variant } from "@elaraai/east";
|
|
581
|
+
* import { Format } from "@elaraai/east-node-io";
|
|
582
|
+
*
|
|
583
|
+
* const myFunction = East.function([BlobType], BlobType, ($, xmlBlob) => {
|
|
584
|
+
* const parseConfig = $.let({
|
|
585
|
+
* preserveWhitespace: false,
|
|
586
|
+
* decodeEntities: true,
|
|
587
|
+
* });
|
|
588
|
+
*
|
|
589
|
+
* const doc = $.let(Format.XML.parse(xmlBlob, parseConfig));
|
|
590
|
+
*
|
|
591
|
+
* const serializeConfig = $.let({
|
|
592
|
+
* indent: variant('some', " "),
|
|
593
|
+
* includeXmlDeclaration: true,
|
|
594
|
+
* encodeEntities: true,
|
|
595
|
+
* selfClosingTags: true,
|
|
596
|
+
* });
|
|
597
|
+
*
|
|
598
|
+
* return $.return(Format.XML.serialize(doc, serializeConfig));
|
|
599
|
+
* });
|
|
600
|
+
*
|
|
601
|
+
* const compiled = East.compile(myFunction.toIR(), Format.XML.Implementation);
|
|
602
|
+
* const xmlBlob = new TextEncoder().encode("<book><title>East</title></book>");
|
|
603
|
+
* compiled(xmlBlob);
|
|
604
|
+
* ```
|
|
605
|
+
*/
|
|
606
|
+
readonly Implementation: import("@elaraai/east/internal").PlatformFunction[];
|
|
607
|
+
/**
|
|
608
|
+
* Type definitions for XML operations.
|
|
609
|
+
*/
|
|
610
|
+
readonly Types: {
|
|
611
|
+
/**
|
|
612
|
+
* XML parsing configuration type.
|
|
613
|
+
*/
|
|
614
|
+
readonly ParseConfig: import("@elaraai/east").StructType<{
|
|
615
|
+
preserveWhitespace: import("@elaraai/east").BooleanType;
|
|
616
|
+
decodeEntities: import("@elaraai/east").BooleanType;
|
|
617
|
+
}>;
|
|
618
|
+
/**
|
|
619
|
+
* XML serialization configuration type.
|
|
620
|
+
*/
|
|
621
|
+
readonly SerializeConfig: import("@elaraai/east").StructType<{
|
|
622
|
+
indent: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
623
|
+
includeXmlDeclaration: import("@elaraai/east").BooleanType;
|
|
624
|
+
encodeEntities: import("@elaraai/east").BooleanType;
|
|
625
|
+
selfClosingTags: import("@elaraai/east").BooleanType;
|
|
626
|
+
}>;
|
|
627
|
+
/**
|
|
628
|
+
* XML node recursive type (element with tag, attributes, and children).
|
|
629
|
+
*/
|
|
630
|
+
readonly Node: import("@elaraai/east").RecursiveType<import("@elaraai/east").StructType<{
|
|
631
|
+
tag: import("@elaraai/east").StringType;
|
|
632
|
+
attributes: import("@elaraai/east").DictType<import("@elaraai/east").StringType, import("@elaraai/east").StringType>;
|
|
633
|
+
children: import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
|
|
634
|
+
TEXT: import("@elaraai/east").StringType;
|
|
635
|
+
ELEMENT: import("@elaraai/east").RecursiveTypeMarker;
|
|
636
|
+
}>>;
|
|
637
|
+
}>>;
|
|
638
|
+
};
|
|
639
|
+
};
|
|
640
|
+
};
|
|
641
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1H,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAgB1G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,MAAM;IACf;;;;;OAKG;;QAEC;;;;;;;;;;;;;;;;;;;;;;;WAuBG;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2BG;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;WAmBG;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;WAsBG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;YAGH;;eAEG;;;;YAGH;;eAEG;;;;;;YAGH;;eAEG;;;;;;;;;;IAKX;;;;;OAKG;;QAEC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BG;;;;;;;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAyCG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;;;;;;;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;;;IAKX;;;;;OAKG;;QAEC;;;;;;;;;;;;;;;;;;;;;;;;WAwBG;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;WA0BG;;;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAgCG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;YAGH;;eAEG;;;;;;;YAGH;;eAEG;;;;;;;;;;;CAIL,CAAC"}
|