@altopelago/aeon-aes 0.12.0 → 0.12.1
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 +19 -2
- package/dist/events.d.ts +5 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +3 -0
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/modes.d.ts.map +1 -1
- package/dist/modes.js +14 -8
- package/dist/modes.js.map +1 -1
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +33 -29
- package/dist/paths.js.map +1 -1
- package/dist/portable.d.ts +98 -0
- package/dist/portable.d.ts.map +1 -0
- package/dist/portable.js +524 -0
- package/dist/portable.js.map +1 -0
- package/dist/references.d.ts.map +1 -1
- package/dist/references.js +9 -4
- package/dist/references.js.map +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +52 -2
- package/dist/resolve.js.map +1 -1
- package/dist/sha256.d.ts +3 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +82 -0
- package/dist/sha256.js.map +1 -0
- package/dist/telex-datatype-internal.d.ts +12 -0
- package/dist/telex-datatype-internal.d.ts.map +1 -0
- package/dist/telex-datatype-internal.js +323 -0
- package/dist/telex-datatype-internal.js.map +1 -0
- package/dist/telex-internal.d.ts +60 -0
- package/dist/telex-internal.d.ts.map +1 -0
- package/dist/telex-internal.js +1101 -0
- package/dist/telex-internal.js.map +1 -0
- package/dist/telex-limits-internal.d.ts +35 -0
- package/dist/telex-limits-internal.d.ts.map +1 -0
- package/dist/telex-limits-internal.js +70 -0
- package/dist/telex-limits-internal.js.map +1 -0
- package/dist/telex.d.ts +128 -0
- package/dist/telex.d.ts.map +1 -0
- package/dist/telex.js +46 -0
- package/dist/telex.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// Kept behaviorally aligned with the published Telex v1 reference codec.
|
|
3
|
+
import { normalizeDatatypeLimits } from './telex-limits-internal.js';
|
|
4
|
+
const DATATYPE_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
5
|
+
const NUMBER = /^[+-]?(?:(?:[0-9]+(?:\.[0-9]*)?)|(?:\.[0-9]+))(?:[eE][+-]?[0-9]+)?$/u;
|
|
6
|
+
/**
|
|
7
|
+
* Decode the compact datatype descriptor used by telex.aes into the
|
|
8
|
+
* transport-neutral AES datatype fields.
|
|
9
|
+
*/
|
|
10
|
+
export function parseDatatypeDescriptor(input, options = {}) {
|
|
11
|
+
if (typeof input !== 'string') {
|
|
12
|
+
throw new TypeError('Datatype descriptor must be a string');
|
|
13
|
+
}
|
|
14
|
+
const limits = normalizeDatatypeLimits(options);
|
|
15
|
+
if (DATATYPE_NAME.test(input) && limits.maxDatatypeComponents >= 1) {
|
|
16
|
+
return { datatype: input, generics: [], clarifiers: [] };
|
|
17
|
+
}
|
|
18
|
+
const parser = new DatatypeParser(input, limits);
|
|
19
|
+
const descriptor = parser.parseDescriptor(0);
|
|
20
|
+
parser.skipWhitespace();
|
|
21
|
+
if (!parser.atEnd())
|
|
22
|
+
parser.fail('Unexpected trailing datatype syntax');
|
|
23
|
+
return descriptor;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Encode the transport-neutral AES datatype fields as one canonical Telex
|
|
27
|
+
* datatype descriptor.
|
|
28
|
+
*/
|
|
29
|
+
export function formatDatatypeDescriptor(descriptor, options = {}) {
|
|
30
|
+
const limits = normalizeDatatypeLimits(options);
|
|
31
|
+
if (isSimpleDatatypeDescriptor(descriptor) && limits.maxDatatypeComponents >= 1) {
|
|
32
|
+
return descriptor.datatype;
|
|
33
|
+
}
|
|
34
|
+
assertDatatypeDescriptor(descriptor, limits);
|
|
35
|
+
return formatCheckedDatatypeDescriptor(descriptor);
|
|
36
|
+
}
|
|
37
|
+
function isSimpleDatatypeDescriptor(descriptor) {
|
|
38
|
+
return descriptor !== null
|
|
39
|
+
&& typeof descriptor === 'object'
|
|
40
|
+
&& !Array.isArray(descriptor)
|
|
41
|
+
&& typeof descriptor.datatype === 'string'
|
|
42
|
+
&& DATATYPE_NAME.test(descriptor.datatype)
|
|
43
|
+
&& Array.isArray(descriptor.generics)
|
|
44
|
+
&& descriptor.generics.length === 0
|
|
45
|
+
&& Array.isArray(descriptor.clarifiers)
|
|
46
|
+
&& descriptor.clarifiers.length === 0
|
|
47
|
+
&& hasExactKeys(descriptor, ['datatype', 'generics', 'clarifiers']);
|
|
48
|
+
}
|
|
49
|
+
function formatCheckedDatatypeDescriptor(descriptor) {
|
|
50
|
+
const generics = descriptor.generics.length === 0
|
|
51
|
+
? ''
|
|
52
|
+
: `<${descriptor.generics.map(formatGenericArgument).join(', ')}>`;
|
|
53
|
+
const clarifiers = descriptor.clarifiers.length === 0
|
|
54
|
+
? ''
|
|
55
|
+
: `[${descriptor.clarifiers.map(formatClarifier).join(', ')}]`;
|
|
56
|
+
return `${descriptor.datatype}${generics}${clarifiers}`;
|
|
57
|
+
}
|
|
58
|
+
export function assertDatatypeDescriptor(descriptor, options = {}) {
|
|
59
|
+
const limits = normalizeDatatypeLimits(options);
|
|
60
|
+
assertDatatypeDescriptorAtDepth(descriptor, limits, { items: 0 }, 0);
|
|
61
|
+
}
|
|
62
|
+
function assertDatatypeDescriptorAtDepth(descriptor, limits, state, depth) {
|
|
63
|
+
if (descriptor === null || typeof descriptor !== 'object' || Array.isArray(descriptor)) {
|
|
64
|
+
throw new TypeError('Datatype descriptor must be an object');
|
|
65
|
+
}
|
|
66
|
+
if (typeof descriptor.datatype !== 'string' || !DATATYPE_NAME.test(descriptor.datatype)) {
|
|
67
|
+
throw new TypeError('Datatype must be an ASCII identifier');
|
|
68
|
+
}
|
|
69
|
+
if (!hasExactKeys(descriptor, ['datatype', 'generics', 'clarifiers'])) {
|
|
70
|
+
throw new TypeError('Datatype descriptor has unknown or missing fields');
|
|
71
|
+
}
|
|
72
|
+
if (!Array.isArray(descriptor.generics)) {
|
|
73
|
+
throw new TypeError('Datatype generics must be an array');
|
|
74
|
+
}
|
|
75
|
+
if (!Array.isArray(descriptor.clarifiers)) {
|
|
76
|
+
throw new TypeError('Datatype clarifiers must be an array');
|
|
77
|
+
}
|
|
78
|
+
countLogicalItem(state, limits);
|
|
79
|
+
if (descriptor.generics.length > limits.maxGenericArguments) {
|
|
80
|
+
throw datatypeValidationError(limitMessage('max_generic_arguments', descriptor.generics.length, limits.maxGenericArguments), 'AES_DATATYPE_LIMIT', 'max_generic_arguments', descriptor.generics.length, limits.maxGenericArguments);
|
|
81
|
+
}
|
|
82
|
+
if (descriptor.clarifiers.length > limits.maxClarifierValues) {
|
|
83
|
+
throw datatypeValidationError(limitMessage('max_clarifier_values', descriptor.clarifiers.length, limits.maxClarifierValues), 'AES_DATATYPE_LIMIT', 'max_clarifier_values', descriptor.clarifiers.length, limits.maxClarifierValues);
|
|
84
|
+
}
|
|
85
|
+
if (descriptor.generics.length > 0 && depth > limits.maxGenericDepth) {
|
|
86
|
+
throw datatypeValidationError(limitMessage('max_generic_depth', depth, limits.maxGenericDepth), 'AES_DATATYPE_DEPTH', 'max_generic_depth', depth, limits.maxGenericDepth);
|
|
87
|
+
}
|
|
88
|
+
for (const argument of descriptor.generics) {
|
|
89
|
+
assertGenericArgument(argument, limits, state, depth);
|
|
90
|
+
}
|
|
91
|
+
for (const clarifier of descriptor.clarifiers) {
|
|
92
|
+
countLogicalItem(state, limits);
|
|
93
|
+
assertTaggedLiteral(clarifier, 'clarifier');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function assertGenericArgument(argument, limits, state, depth) {
|
|
97
|
+
if (argument !== null
|
|
98
|
+
&& typeof argument === 'object'
|
|
99
|
+
&& !Array.isArray(argument)
|
|
100
|
+
&& Object.hasOwn(argument, 'datatype')) {
|
|
101
|
+
assertDatatypeDescriptorAtDepth(argument, limits, state, depth + 1);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
countLogicalItem(state, limits);
|
|
105
|
+
assertTaggedLiteral(argument, 'generic argument', new Set(['NumberLiteral']));
|
|
106
|
+
}
|
|
107
|
+
function assertTaggedLiteral(literal, label, allowedKinds = new Set(['StringLiteral', 'NumberLiteral'])) {
|
|
108
|
+
if (literal === null || typeof literal !== 'object' || Array.isArray(literal)) {
|
|
109
|
+
throw new TypeError(`Datatype ${label} must be a tagged literal`);
|
|
110
|
+
}
|
|
111
|
+
if (!hasExactKeys(literal, ['kind', 'value'])) {
|
|
112
|
+
throw new TypeError(`Datatype ${label} has unknown or missing fields`);
|
|
113
|
+
}
|
|
114
|
+
if (!allowedKinds.has(literal.kind) || typeof literal.value !== 'string') {
|
|
115
|
+
throw new TypeError(`Invalid datatype ${label}`);
|
|
116
|
+
}
|
|
117
|
+
if (!hasOnlyUnicodeScalars(literal.value)) {
|
|
118
|
+
throw new TypeError(`Datatype ${label} must contain only Unicode scalar values`);
|
|
119
|
+
}
|
|
120
|
+
if (literal.kind === 'NumberLiteral' && !NUMBER.test(literal.value)) {
|
|
121
|
+
throw new TypeError(`Invalid numeric datatype ${label}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function formatGenericArgument(argument) {
|
|
125
|
+
return Object.hasOwn(argument, 'datatype')
|
|
126
|
+
? formatCheckedDatatypeDescriptor(argument)
|
|
127
|
+
: formatNumberLiteral(argument, 'generic argument');
|
|
128
|
+
}
|
|
129
|
+
function formatClarifier(clarifier) {
|
|
130
|
+
if (clarifier.kind === 'StringLiteral')
|
|
131
|
+
return JSON.stringify(clarifier.value);
|
|
132
|
+
return formatNumberLiteral(clarifier, 'clarifier');
|
|
133
|
+
}
|
|
134
|
+
function formatNumberLiteral(literal, label) {
|
|
135
|
+
assertTaggedLiteral(literal, label, new Set(['NumberLiteral']));
|
|
136
|
+
return literal.value;
|
|
137
|
+
}
|
|
138
|
+
class DatatypeParser {
|
|
139
|
+
constructor(input, options) {
|
|
140
|
+
this.input = input;
|
|
141
|
+
this.cursor = 0;
|
|
142
|
+
const limits = normalizeDatatypeLimits(options);
|
|
143
|
+
this.maxGenericDepth = limits.maxGenericDepth;
|
|
144
|
+
this.maxGenericArguments = limits.maxGenericArguments;
|
|
145
|
+
this.maxClarifierValues = limits.maxClarifierValues;
|
|
146
|
+
this.maxDatatypeComponents = limits.maxDatatypeComponents;
|
|
147
|
+
this.items = 0;
|
|
148
|
+
}
|
|
149
|
+
parseDescriptor(depth) {
|
|
150
|
+
this.countItem();
|
|
151
|
+
this.skipWhitespace();
|
|
152
|
+
const datatype = this.parseName();
|
|
153
|
+
this.skipWhitespace();
|
|
154
|
+
if (this.peek() === '<' && depth > this.maxGenericDepth) {
|
|
155
|
+
this.failLimit('max_generic_depth', depth, this.maxGenericDepth);
|
|
156
|
+
}
|
|
157
|
+
const generics = this.peek() === '<' ? this.parseGenerics(depth) : [];
|
|
158
|
+
this.skipWhitespace();
|
|
159
|
+
const clarifiers = this.peek() === '[' ? this.parseClarifiers() : [];
|
|
160
|
+
return { datatype, generics, clarifiers };
|
|
161
|
+
}
|
|
162
|
+
parseName() {
|
|
163
|
+
const match = this.input.slice(this.cursor).match(/^[A-Za-z_][A-Za-z0-9_]*/u);
|
|
164
|
+
if (match === null)
|
|
165
|
+
this.fail('Expected datatype name');
|
|
166
|
+
this.cursor += match[0].length;
|
|
167
|
+
return match[0];
|
|
168
|
+
}
|
|
169
|
+
parseGenerics(depth) {
|
|
170
|
+
this.consume('<');
|
|
171
|
+
this.skipWhitespace();
|
|
172
|
+
if (this.peek() === '>')
|
|
173
|
+
this.fail('Generic argument list must not be empty');
|
|
174
|
+
const values = [];
|
|
175
|
+
while (true) {
|
|
176
|
+
values.push(this.parseGenericArgument(depth));
|
|
177
|
+
if (values.length > this.maxGenericArguments) {
|
|
178
|
+
this.failLimit('max_generic_arguments', values.length, this.maxGenericArguments);
|
|
179
|
+
}
|
|
180
|
+
this.skipWhitespace();
|
|
181
|
+
if (this.peek() === '>') {
|
|
182
|
+
this.cursor += 1;
|
|
183
|
+
return values;
|
|
184
|
+
}
|
|
185
|
+
this.consume(',');
|
|
186
|
+
this.skipWhitespace();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
parseGenericArgument(depth) {
|
|
190
|
+
this.skipWhitespace();
|
|
191
|
+
if (/[A-Za-z_]/u.test(this.peek() ?? ''))
|
|
192
|
+
return this.parseDescriptor(depth + 1);
|
|
193
|
+
this.countItem();
|
|
194
|
+
return { kind: 'NumberLiteral', value: this.parseNumber(',>') };
|
|
195
|
+
}
|
|
196
|
+
parseClarifiers() {
|
|
197
|
+
this.consume('[');
|
|
198
|
+
this.skipWhitespace();
|
|
199
|
+
if (this.peek() === ']')
|
|
200
|
+
this.fail('Clarifier list must not be empty');
|
|
201
|
+
const values = [];
|
|
202
|
+
while (true) {
|
|
203
|
+
this.countItem();
|
|
204
|
+
values.push(this.peek() === '"'
|
|
205
|
+
? { kind: 'StringLiteral', value: this.parseString() }
|
|
206
|
+
: { kind: 'NumberLiteral', value: this.parseNumber(',]') });
|
|
207
|
+
if (values.length > this.maxClarifierValues) {
|
|
208
|
+
this.failLimit('max_clarifier_values', values.length, this.maxClarifierValues);
|
|
209
|
+
}
|
|
210
|
+
this.skipWhitespace();
|
|
211
|
+
if (this.peek() === ']') {
|
|
212
|
+
this.cursor += 1;
|
|
213
|
+
return values;
|
|
214
|
+
}
|
|
215
|
+
this.consume(',');
|
|
216
|
+
this.skipWhitespace();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
parseString() {
|
|
220
|
+
const start = this.cursor;
|
|
221
|
+
this.cursor += 1;
|
|
222
|
+
let escaped = false;
|
|
223
|
+
while (!this.atEnd()) {
|
|
224
|
+
const character = this.input[this.cursor];
|
|
225
|
+
this.cursor += 1;
|
|
226
|
+
if (escaped) {
|
|
227
|
+
escaped = false;
|
|
228
|
+
}
|
|
229
|
+
else if (character === '\\') {
|
|
230
|
+
escaped = true;
|
|
231
|
+
}
|
|
232
|
+
else if (character === '"') {
|
|
233
|
+
const encoded = this.input.slice(start, this.cursor);
|
|
234
|
+
try {
|
|
235
|
+
const value = JSON.parse(encoded);
|
|
236
|
+
if (typeof value !== 'string')
|
|
237
|
+
this.fail('Expected string clarifier');
|
|
238
|
+
if (!hasOnlyUnicodeScalars(value))
|
|
239
|
+
this.fail('Invalid Unicode scalar in string clarifier');
|
|
240
|
+
return value;
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
this.fail('Invalid string clarifier');
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
this.fail('Unterminated string clarifier');
|
|
248
|
+
}
|
|
249
|
+
parseNumber(delimiters) {
|
|
250
|
+
const start = this.cursor;
|
|
251
|
+
while (!this.atEnd() && !delimiters.includes(this.peek()) && !/\s/u.test(this.peek())) {
|
|
252
|
+
this.cursor += 1;
|
|
253
|
+
}
|
|
254
|
+
const value = this.input.slice(start, this.cursor);
|
|
255
|
+
if (!NUMBER.test(value))
|
|
256
|
+
this.fail('Expected numeric datatype argument');
|
|
257
|
+
return value;
|
|
258
|
+
}
|
|
259
|
+
consume(expected) {
|
|
260
|
+
this.skipWhitespace();
|
|
261
|
+
if (this.peek() !== expected)
|
|
262
|
+
this.fail(`Expected '${expected}'`);
|
|
263
|
+
this.cursor += 1;
|
|
264
|
+
}
|
|
265
|
+
skipWhitespace() {
|
|
266
|
+
while (!this.atEnd() && /[ \t\r\n]/u.test(this.peek()))
|
|
267
|
+
this.cursor += 1;
|
|
268
|
+
}
|
|
269
|
+
peek() {
|
|
270
|
+
return this.input[this.cursor];
|
|
271
|
+
}
|
|
272
|
+
atEnd() {
|
|
273
|
+
return this.cursor >= this.input.length;
|
|
274
|
+
}
|
|
275
|
+
countItem() {
|
|
276
|
+
this.items += 1;
|
|
277
|
+
if (this.items > this.maxDatatypeComponents) {
|
|
278
|
+
this.failLimit('max_datatype_components', this.items, this.maxDatatypeComponents);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
failLimit(counter, observed, limit) {
|
|
282
|
+
this.fail(limitMessage(counter, observed, limit), 'TELEX_DATATYPE_LIMIT', {
|
|
283
|
+
counter,
|
|
284
|
+
observed,
|
|
285
|
+
limit,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
fail(message, code = 'TELEX_INVALID_DATATYPE', details = {}) {
|
|
289
|
+
const error = new TypeError(`${message} at datatype offset ${this.cursor}`);
|
|
290
|
+
error.code = code;
|
|
291
|
+
Object.assign(error, details);
|
|
292
|
+
throw error;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function hasOnlyUnicodeScalars(value) {
|
|
296
|
+
for (const character of value) {
|
|
297
|
+
const scalar = character.codePointAt(0);
|
|
298
|
+
if (scalar >= 0xd800 && scalar <= 0xdfff)
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
function hasExactKeys(value, expected) {
|
|
304
|
+
const keys = Object.keys(value);
|
|
305
|
+
return keys.length === expected.length && expected.every((key) => Object.hasOwn(value, key));
|
|
306
|
+
}
|
|
307
|
+
function countLogicalItem(state, limits) {
|
|
308
|
+
state.items += 1;
|
|
309
|
+
if (state.items > limits.maxDatatypeComponents) {
|
|
310
|
+
throw datatypeValidationError(limitMessage('max_datatype_components', state.items, limits.maxDatatypeComponents), 'AES_DATATYPE_LIMIT', 'max_datatype_components', state.items, limits.maxDatatypeComponents);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function datatypeValidationError(message, code, counter, observed, limit) {
|
|
314
|
+
const error = new TypeError(message);
|
|
315
|
+
error.code = code;
|
|
316
|
+
if (counter !== undefined)
|
|
317
|
+
Object.assign(error, { counter, observed, limit });
|
|
318
|
+
return error;
|
|
319
|
+
}
|
|
320
|
+
function limitMessage(counter, observed, limit) {
|
|
321
|
+
return `${counter} observed value ${observed} exceeds configured limit ${limit}`;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=telex-datatype-internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telex-datatype-internal.js","sourceRoot":"","sources":["../src/telex-datatype-internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export { DEFAULT_TELEX_LIMITS, normalizeTelexLimits } from './telex-limits-internal.js';
|
|
2
|
+
export declare const TELEX_VERSION = "1";
|
|
3
|
+
export declare const COMPLETE_AES_PROFILE = "aes.complete.v1";
|
|
4
|
+
export declare const PARTIAL_AES_PROFILE = "aes.partial.v1";
|
|
5
|
+
export declare const AEON_DOCUMENT_PROJECTION = "aeon.document.v1";
|
|
6
|
+
export declare class TelexSyntaxError extends Error {
|
|
7
|
+
constructor(message: any, line: any, code?: string, details?: {});
|
|
8
|
+
}
|
|
9
|
+
export declare function parseTelex(input: any, options?: {}): {
|
|
10
|
+
version: string;
|
|
11
|
+
profile: string;
|
|
12
|
+
profileExplicit: boolean;
|
|
13
|
+
projection: any;
|
|
14
|
+
projectionExplicit: boolean;
|
|
15
|
+
records: {}[];
|
|
16
|
+
canonical: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare function encodeTelex(records: any, options?: {}): string;
|
|
19
|
+
export declare function canonicalizeTelex(input: any, limitsOptions?: {}): string;
|
|
20
|
+
/**
|
|
21
|
+
* Parse Telex and report whether every non-root path prefix is present.
|
|
22
|
+
* This is a structural convenience check, not full AES profile validation.
|
|
23
|
+
*/
|
|
24
|
+
export declare function checkTelexCompleteness(input: any, options?: {}): {
|
|
25
|
+
complete: boolean;
|
|
26
|
+
missing: {
|
|
27
|
+
field?: string;
|
|
28
|
+
path: string;
|
|
29
|
+
requiredBy: any;
|
|
30
|
+
}[];
|
|
31
|
+
};
|
|
32
|
+
export declare function checkPrefixCompleteness(records: any, options?: {}): {
|
|
33
|
+
complete: boolean;
|
|
34
|
+
missing: {
|
|
35
|
+
field?: string;
|
|
36
|
+
path: string;
|
|
37
|
+
requiredBy: any;
|
|
38
|
+
}[];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Validate decoded events against the selected AES profile.
|
|
42
|
+
* Syntax errors still throw from parseTelex; semantic failures are diagnostics.
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateTelex(input: any, options?: {}): {
|
|
45
|
+
valid: boolean;
|
|
46
|
+
profile: string;
|
|
47
|
+
diagnostics: {
|
|
48
|
+
code: any;
|
|
49
|
+
message: any;
|
|
50
|
+
}[];
|
|
51
|
+
};
|
|
52
|
+
export declare function validateTelexRecords(records: any, options?: {}): {
|
|
53
|
+
valid: boolean;
|
|
54
|
+
profile: string;
|
|
55
|
+
diagnostics: {
|
|
56
|
+
code: any;
|
|
57
|
+
message: any;
|
|
58
|
+
}[];
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=telex-internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telex-internal.d.ts","sourceRoot":"","sources":["../src/telex-internal.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAiExF,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAO,KAAA,EAAE,IAAI,KAAA,EAAE,IAAI,SAAuB,EAAE,OAAO,KAAK,EAMnE;CACF;AAED,wBAAgB,UAAU,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK;;;;;;;;EA8L7C;AAED,wBAAgB,WAAW,CAAC,OAAO,KAAA,EAAE,OAAO,KAAK,UAmEhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,KAAA,EAAE,aAAa,KAAK,UAQ1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK;;;;;;;EAGzD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,KAAA,EAAE,OAAO,KAAK;;;;;;;EAoC5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,KAAA,EAAE,OAAO,KAAK;;;;;;;EAUhD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,KAAA,EAAE,OAAO,KAAK;;;;;;;EAoKzD"}
|