@altopelago/aeon-transport 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # @altopelago/aeon-transport
2
+
3
+ Transport framing helpers for AEON document units.
4
+
5
+ This package implements **u32 big-endian length-prefix framing** and
6
+ lightweight header inspection utilities for streaming workflows.
7
+
8
+ ## Quick Start
9
+
10
+ ```ts
11
+ import {
12
+ encodeFrame,
13
+ decodeFrame,
14
+ FrameDecoder,
15
+ inspectHeader,
16
+ } from '@altopelago/aeon-transport';
17
+
18
+ const framed = encodeFrame('a = 1');
19
+ const decoded = decodeFrame(framed);
20
+ console.log(decoded?.frame);
21
+
22
+ const decoder = new FrameDecoder({ maxFrameSize: 8 * 1024 * 1024 });
23
+ const frames = decoder.push(framed);
24
+
25
+ const inspection = inspectHeader('aeon:version = "2.0"\na = 1');
26
+ console.log(inspection.header);
27
+ ```
28
+
29
+ ## Common Patterns
30
+
31
+ ### Decode incrementally from a stream
32
+
33
+ ```ts
34
+ const decoder = new FrameDecoder({ maxFrameSize: 8 * 1024 * 1024 });
35
+ const frames = decoder.push(chunk);
36
+ ```
37
+
38
+ ### Inspect only the transport header
39
+
40
+ ```ts
41
+ const inspection = inspectHeader(sourceText);
42
+ console.log(inspection.header.mode);
43
+ console.log(inspection.errors);
44
+ ```
45
+
46
+ ## API
47
+
48
+ - `encodeFrame(payload, options?)`
49
+ - `decodeFrame(buffer, options?)`
50
+ - `FrameDecoder`
51
+ - `createFrameEncoderStream(options?)`
52
+ - `createFrameDecoderStream(options?)`
53
+ - `inspectHeader(input, options?)`
54
+
55
+ ## Notes
56
+
57
+ - Frames are encoded as: 4-byte length prefix (big-endian) + payload bytes.
58
+ - Resource limits are enforced to fail closed on oversized frames.
@@ -0,0 +1,46 @@
1
+ import { Transform } from 'node:stream';
2
+ export interface FrameOptions {
3
+ readonly maxFrameSize?: number;
4
+ readonly maxBufferSize?: number;
5
+ }
6
+ export interface HeaderInfo {
7
+ version?: string;
8
+ mode?: 'transport' | 'strict';
9
+ profile?: string;
10
+ schema?: string;
11
+ schemas?: Readonly<Record<string, string>>;
12
+ encoding?: string;
13
+ }
14
+ export interface HeaderInspectionOptions {
15
+ readonly maxHeaderBytes?: number;
16
+ }
17
+ export interface TransportDiagnostic {
18
+ readonly level: 'error' | 'warning';
19
+ readonly code: string;
20
+ readonly message: string;
21
+ }
22
+ export interface HeaderInspectionResult {
23
+ readonly header: HeaderInfo;
24
+ readonly errors: readonly TransportDiagnostic[];
25
+ readonly warnings: readonly TransportDiagnostic[];
26
+ }
27
+ export declare class TransportError extends Error {
28
+ readonly code: string;
29
+ constructor(code: string, message: string);
30
+ }
31
+ export declare function encodeFrame(payload: Uint8Array | string, options?: FrameOptions): Uint8Array;
32
+ export declare function decodeFrame(buffer: Uint8Array, options?: FrameOptions): {
33
+ frame: Uint8Array;
34
+ rest: Uint8Array;
35
+ } | null;
36
+ export declare class FrameDecoder {
37
+ private buffer;
38
+ private readonly options;
39
+ constructor(options?: FrameOptions);
40
+ push(chunk: Uint8Array): Uint8Array[];
41
+ flush(): Uint8Array[];
42
+ }
43
+ export declare function createFrameEncoderStream(options?: FrameOptions): Transform;
44
+ export declare function createFrameDecoderStream(options?: FrameOptions): Transform;
45
+ export declare function inspectHeader(input: string | Uint8Array, options?: HeaderInspectionOptions): HeaderInspectionResult;
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACrD;AAED,qBAAa,cAAe,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5C;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,UAAU,CAgBhG;AAED,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,YAAiB,GAC3B;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAehD;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,OAAO,GAAE,YAAiB;IAKtC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE;IAgBrC,KAAK,IAAI,UAAU,EAAE;CAMxB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,YAAiB,GAAG,SAAS,CAc9E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,YAAiB,GAAG,SAAS,CAyB9E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,uBAA4B,GAAG,sBAAsB,CAuEvH"}
package/dist/index.js ADDED
@@ -0,0 +1,371 @@
1
+ import { Transform } from 'node:stream';
2
+ export class TransportError extends Error {
3
+ code;
4
+ constructor(code, message) {
5
+ super(`${code}: ${message}`);
6
+ this.code = code;
7
+ }
8
+ }
9
+ const DEFAULT_MAX_FRAME = 16 * 1024 * 1024;
10
+ const DEFAULT_MAX_BUFFER = 32 * 1024 * 1024;
11
+ const DEFAULT_MAX_HEADER = 64 * 1024;
12
+ export function encodeFrame(payload, options = {}) {
13
+ const data = toBytes(payload);
14
+ const maxFrameSize = options.maxFrameSize ?? DEFAULT_MAX_FRAME;
15
+ if (data.length > maxFrameSize) {
16
+ throw new TransportError('FRAME_TOO_LARGE', `Frame size ${data.length} exceeds max ${maxFrameSize}`);
17
+ }
18
+ const header = new Uint8Array(4);
19
+ const length = data.length >>> 0;
20
+ header[0] = (length >>> 24) & 0xff;
21
+ header[1] = (length >>> 16) & 0xff;
22
+ header[2] = (length >>> 8) & 0xff;
23
+ header[3] = length & 0xff;
24
+ const framed = new Uint8Array(4 + data.length);
25
+ framed.set(header, 0);
26
+ framed.set(data, 4);
27
+ return framed;
28
+ }
29
+ export function decodeFrame(buffer, options = {}) {
30
+ if (buffer.length < 4)
31
+ return null;
32
+ const length = (buffer[0] << 24) |
33
+ (buffer[1] << 16) |
34
+ (buffer[2] << 8) |
35
+ buffer[3];
36
+ const maxFrameSize = options.maxFrameSize ?? DEFAULT_MAX_FRAME;
37
+ if (length < 0 || length > maxFrameSize) {
38
+ throw new TransportError('FRAME_TOO_LARGE', `Frame size ${length} exceeds max ${maxFrameSize}`);
39
+ }
40
+ if (buffer.length < 4 + length)
41
+ return null;
42
+ const frame = buffer.slice(4, 4 + length);
43
+ const rest = buffer.slice(4 + length);
44
+ return { frame, rest };
45
+ }
46
+ export class FrameDecoder {
47
+ buffer;
48
+ options;
49
+ constructor(options = {}) {
50
+ this.options = options;
51
+ this.buffer = new Uint8Array(0);
52
+ }
53
+ push(chunk) {
54
+ this.buffer = concatBytes(this.buffer, chunk);
55
+ const maxBufferSize = this.options.maxBufferSize ?? DEFAULT_MAX_BUFFER;
56
+ if (this.buffer.length > maxBufferSize) {
57
+ throw new TransportError('BUFFER_TOO_LARGE', `Buffer size ${this.buffer.length} exceeds max ${maxBufferSize}`);
58
+ }
59
+ const frames = [];
60
+ while (true) {
61
+ const decoded = decodeFrame(this.buffer, this.options);
62
+ if (!decoded)
63
+ break;
64
+ frames.push(decoded.frame);
65
+ this.buffer = decoded.rest;
66
+ }
67
+ return frames;
68
+ }
69
+ flush() {
70
+ if (this.buffer.length > 0) {
71
+ throw new TransportError('INCOMPLETE_FRAME', 'Trailing bytes without a complete frame');
72
+ }
73
+ return [];
74
+ }
75
+ }
76
+ export function createFrameEncoderStream(options = {}) {
77
+ return new Transform({
78
+ readableObjectMode: false,
79
+ writableObjectMode: false,
80
+ transform(chunk, _encoding, callback) {
81
+ try {
82
+ const data = typeof chunk === 'string' ? chunk : chunk;
83
+ const framed = encodeFrame(data, options);
84
+ callback(null, framed);
85
+ }
86
+ catch (err) {
87
+ callback(err);
88
+ }
89
+ },
90
+ });
91
+ }
92
+ export function createFrameDecoderStream(options = {}) {
93
+ const decoder = new FrameDecoder(options);
94
+ return new Transform({
95
+ readableObjectMode: true,
96
+ writableObjectMode: false,
97
+ transform(chunk, _encoding, callback) {
98
+ try {
99
+ const frames = decoder.push(chunk);
100
+ for (const frame of frames) {
101
+ this.push(frame);
102
+ }
103
+ callback();
104
+ }
105
+ catch (err) {
106
+ callback(err);
107
+ }
108
+ },
109
+ flush(callback) {
110
+ try {
111
+ decoder.flush();
112
+ callback();
113
+ }
114
+ catch (err) {
115
+ callback(err);
116
+ }
117
+ },
118
+ });
119
+ }
120
+ export function inspectHeader(input, options = {}) {
121
+ const maxHeaderBytes = options.maxHeaderBytes ?? DEFAULT_MAX_HEADER;
122
+ const sourceBytes = typeof input === 'string' ? toBytes(input) : input;
123
+ if (sourceBytes.length > maxHeaderBytes) {
124
+ return {
125
+ header: {},
126
+ errors: [{
127
+ level: 'error',
128
+ code: 'HEADER_TOO_LARGE',
129
+ message: `Header inspection limit ${maxHeaderBytes} bytes exceeded`,
130
+ }],
131
+ warnings: [],
132
+ };
133
+ }
134
+ const source = typeof input === 'string' ? input : new TextDecoder('utf-8').decode(input);
135
+ const header = {};
136
+ const errors = [];
137
+ const warnings = [];
138
+ const lines = source.split(/\r?\n/);
139
+ let inBlockComment = false;
140
+ for (let i = 0; i < lines.length; i++) {
141
+ const raw = lines[i] ?? '';
142
+ let line = raw.trim();
143
+ if (line.length === 0)
144
+ continue;
145
+ if (inBlockComment) {
146
+ const end = line.indexOf('*/');
147
+ if (end !== -1) {
148
+ inBlockComment = false;
149
+ line = line.slice(end + 2).trim();
150
+ }
151
+ else {
152
+ continue;
153
+ }
154
+ }
155
+ if (line.startsWith('/*')) {
156
+ inBlockComment = !line.includes('*/');
157
+ continue;
158
+ }
159
+ if (line.startsWith('//'))
160
+ continue;
161
+ if (line.startsWith('aeon:header')) {
162
+ const block = collectBraceBlock(lines, i);
163
+ if (!block) {
164
+ warnings.push({
165
+ level: 'warning',
166
+ code: 'HEADER_BLOCK_INCOMPLETE',
167
+ message: 'Unable to parse structured header block',
168
+ });
169
+ break;
170
+ }
171
+ const { body, endIndex } = block;
172
+ parseStructuredHeader(body, header);
173
+ i = endIndex;
174
+ continue;
175
+ }
176
+ if (!line.startsWith('aeon:')) {
177
+ break;
178
+ }
179
+ const parsed = parseHeaderLine(line);
180
+ if (parsed) {
181
+ applyHeaderField(header, parsed.key, parsed.value);
182
+ }
183
+ }
184
+ if (!header.encoding) {
185
+ header.encoding = 'utf-8';
186
+ }
187
+ return { header, errors, warnings };
188
+ }
189
+ function parseHeaderLine(line) {
190
+ if (!line.startsWith('aeon:'))
191
+ return null;
192
+ const equals = findAssignmentEquals(line, 'aeon:'.length);
193
+ if (equals === -1)
194
+ return null;
195
+ const key = line.slice('aeon:'.length, equals).trim();
196
+ if (!isHeaderFieldName(key))
197
+ return null;
198
+ const rawValue = line.slice(equals + 1).trim();
199
+ if (rawValue.length === 0)
200
+ return null;
201
+ const value = stripQuotes(rawValue);
202
+ return { key, value };
203
+ }
204
+ function parseStructuredHeader(body, header) {
205
+ const lines = body.split(/\r?\n/);
206
+ for (let i = 0; i < lines.length; i += 1) {
207
+ const raw = lines[i] ?? '';
208
+ const line = raw.trim();
209
+ if (!line || line.startsWith('//'))
210
+ continue;
211
+ if (line.startsWith('schemas')) {
212
+ const block = collectBraceBlock(lines, i);
213
+ if (block) {
214
+ header.schemas = parseHeaderSchemaContexts(block.body);
215
+ i = block.endIndex;
216
+ continue;
217
+ }
218
+ }
219
+ const equals = findAssignmentEquals(line, 0);
220
+ if (equals === -1)
221
+ continue;
222
+ const key = line.slice(0, equals).trim();
223
+ if (!isHeaderFieldName(key))
224
+ continue;
225
+ const rawValue = line.slice(equals + 1).trim();
226
+ if (!rawValue)
227
+ continue;
228
+ const value = stripQuotes(rawValue);
229
+ applyHeaderField(header, key, value);
230
+ }
231
+ }
232
+ function parseHeaderSchemaContexts(body) {
233
+ const contexts = {};
234
+ const lines = body.split(/\r?\n/);
235
+ for (const raw of lines) {
236
+ const line = raw.trim();
237
+ if (!line || line.startsWith('//'))
238
+ continue;
239
+ const equals = findAssignmentEquals(line, 0);
240
+ if (equals === -1)
241
+ continue;
242
+ const key = line.slice(0, equals).trim();
243
+ if (!isHeaderFieldName(key))
244
+ continue;
245
+ const rawValue = line.slice(equals + 1).trim();
246
+ if (!rawValue)
247
+ continue;
248
+ contexts[key] = stripQuotes(rawValue);
249
+ }
250
+ return contexts;
251
+ }
252
+ function findAssignmentEquals(line, start) {
253
+ for (let i = start; i < line.length; i += 1) {
254
+ if (line[i] === '=')
255
+ return i;
256
+ }
257
+ return -1;
258
+ }
259
+ function isHeaderFieldName(value) {
260
+ if (value.length === 0)
261
+ return false;
262
+ for (let i = 0; i < value.length; i += 1) {
263
+ const ch = value[i];
264
+ const isAlphaNum = (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9');
265
+ if (isAlphaNum || ch === ':' || ch === '_' || ch === '-')
266
+ continue;
267
+ return false;
268
+ }
269
+ return true;
270
+ }
271
+ function collectBraceBlock(lines, startIndex) {
272
+ const startLine = lines[startIndex] ?? '';
273
+ const startPos = startLine.indexOf('{');
274
+ if (startPos === -1)
275
+ return null;
276
+ let depth = 0;
277
+ let quote = null;
278
+ let escaped = false;
279
+ const collected = [];
280
+ for (let i = startIndex; i < lines.length; i++) {
281
+ const line = lines[i] ?? '';
282
+ for (const ch of line) {
283
+ if (escaped) {
284
+ escaped = false;
285
+ continue;
286
+ }
287
+ if (quote) {
288
+ if (ch === '\\') {
289
+ escaped = true;
290
+ continue;
291
+ }
292
+ if (ch === quote) {
293
+ quote = null;
294
+ }
295
+ continue;
296
+ }
297
+ if (ch === '"' || ch === "'") {
298
+ quote = ch;
299
+ continue;
300
+ }
301
+ if (ch === '{')
302
+ depth += 1;
303
+ if (ch === '}')
304
+ depth -= 1;
305
+ }
306
+ if (i === startIndex) {
307
+ collected.push(line.slice(startPos + 1));
308
+ }
309
+ else {
310
+ collected.push(line);
311
+ }
312
+ if (depth === 0) {
313
+ const body = collected.join('\n').replace(/}\s*$/, '');
314
+ return { body, endIndex: i };
315
+ }
316
+ }
317
+ return null;
318
+ }
319
+ function applyHeaderField(header, key, value) {
320
+ switch (key) {
321
+ case 'version':
322
+ case 'aeon:version':
323
+ header.version = value;
324
+ break;
325
+ case 'mode':
326
+ case 'aeon:mode':
327
+ header.mode = value === 'strict' ? 'strict' : 'transport';
328
+ break;
329
+ case 'profile':
330
+ case 'aeon:profile':
331
+ case 'profile:id':
332
+ case 'aeon:profile:id':
333
+ header.profile = value;
334
+ break;
335
+ case 'schema':
336
+ case 'aeon:schema':
337
+ case 'schema:id':
338
+ case 'aeon:schema:id':
339
+ header.schema = value;
340
+ break;
341
+ case 'encoding':
342
+ case 'aeon:encoding':
343
+ header.encoding = value;
344
+ break;
345
+ default:
346
+ break;
347
+ }
348
+ }
349
+ function stripQuotes(value) {
350
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
351
+ return value.slice(1, -1);
352
+ }
353
+ return value;
354
+ }
355
+ function concatBytes(a, b) {
356
+ if (a.length === 0)
357
+ return b.slice();
358
+ if (b.length === 0)
359
+ return a.slice();
360
+ const out = new Uint8Array(a.length + b.length);
361
+ out.set(a, 0);
362
+ out.set(b, a.length);
363
+ return out;
364
+ }
365
+ function toBytes(payload) {
366
+ if (typeof payload === 'string') {
367
+ return new TextEncoder().encode(payload);
368
+ }
369
+ return payload;
370
+ }
371
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAgCxC,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC5B,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE,OAAe;QACrC,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAED,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3C,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC,MAAM,UAAU,WAAW,CAAC,OAA4B,EAAE,UAAwB,EAAE;IAChF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,cAAc,CAAC,iBAAiB,EAAE,cAAc,IAAI,CAAC,MAAM,gBAAgB,YAAY,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW,CACvB,MAAkB,EAClB,UAAwB,EAAE;IAE1B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,MAAM,GACR,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC;QAClB,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC;QAClB,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC;QACjB,MAAM,CAAC,CAAC,CAAE,CAAC;IACf,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC;IAC/D,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC;QACtC,MAAM,IAAI,cAAc,CAAC,iBAAiB,EAAE,cAAc,MAAM,gBAAgB,YAAY,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,OAAO,YAAY;IACb,MAAM,CAAa;IACV,OAAO,CAAe;IAEvC,YAAY,UAAwB,EAAE;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,KAAiB;QAClB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,kBAAkB,CAAC;QACvE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACrC,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,gBAAgB,aAAa,EAAE,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,MAAM;YACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,yCAAyC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAwB,EAAE;IAC/D,OAAO,IAAI,SAAS,CAAC;QACjB,kBAAkB,EAAE,KAAK;QACzB,kBAAkB,EAAE,KAAK;QACzB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ;YAChC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAAoB,CAAC;gBACvE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAY,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAwB,EAAE;IAC/D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,SAAS,CAAC;QACjB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,KAAK;QACzB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ;YAChC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAC;gBACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;gBACD,QAAQ,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAY,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QACD,KAAK,CAAC,QAAQ;YACV,IAAI,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,QAAQ,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAY,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAA0B,EAAE,UAAmC,EAAE;IAC3F,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,kBAAkB,CAAC;IACpE,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,IAAI,WAAW,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QACtC,OAAO;YACH,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,CAAC;oBACL,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,2BAA2B,cAAc,iBAAiB;iBACtE,CAAC;YACF,QAAQ,EAAE,EAAE;SACf,CAAC;IACN,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,cAAc,GAAG,KAAK,CAAC;gBACvB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,SAAS;YACb,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,cAAc,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,SAAS;QACb,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAEpC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,yCAAyC;iBACrD,CAAC,CAAC;gBACH,MAAM;YACV,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;YACjC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC,GAAG,QAAQ,CAAC;YACb,SAAS;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,MAAkB;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACnB,SAAS;YACb,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,SAAS;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAAE,SAAS;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,SAAS;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAAE,SAAS;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa;IACrD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;QACpG,IAAI,UAAU,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YAAE,SAAS;QACnE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe,EAAE,UAAkB;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACpB,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,GAAG,KAAK,CAAC;gBAChB,SAAS;YACb,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBACd,OAAO,GAAG,IAAI,CAAC;oBACf,SAAS;gBACb,CAAC;gBACD,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;oBACf,KAAK,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,SAAS;YACb,CAAC;YACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC3B,KAAK,GAAG,EAAE,CAAC;gBACX,SAAS;YACb,CAAC;YACD,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,IAAI,CAAC,CAAC;YAC3B,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAkB,EAAE,GAAW,EAAE,KAAa;IACpE,QAAQ,GAAG,EAAE,CAAC;QACV,KAAK,SAAS,CAAC;QACf,KAAK,cAAc;YACf,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM;QACV,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACZ,MAAM,CAAC,IAAI,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1D,MAAM;QACV,KAAK,SAAS,CAAC;QACf,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,iBAAiB;YAClB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM;QACV,KAAK,QAAQ,CAAC;QACd,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,gBAAgB;YACjB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM;QACV,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe;YAChB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,MAAM;QACV;YACI,MAAM;IACd,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,CAAa,EAAE,CAAa;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,OAA4B;IACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@altopelago/aeon-transport",
3
+ "version": "0.9.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "!dist/**/*.test.d.ts",
16
+ "!dist/**/*.test.d.ts.map",
17
+ "!dist/**/*.test.js",
18
+ "!dist/**/*.test.js.map"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.json",
22
+ "test": "node --test dist/*.test.js",
23
+ "clean": "rm -rf dist",
24
+ "typecheck": "tsc -p tsconfig.json --noEmit"
25
+ }
26
+ }