@svta/cml-structured-field-values 1.1.6 → 1.1.7
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/index.d.ts +223 -223
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -66
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { decodeBase64, encodeBase64, roundToEven } from "@svta/cml-utils";
|
|
2
|
-
|
|
3
2
|
//#region src/SfItem.ts
|
|
4
3
|
/**
|
|
5
4
|
* Structured Field Item
|
|
@@ -19,11 +18,9 @@ var SfItem = class SfItem {
|
|
|
19
18
|
this.params = params;
|
|
20
19
|
}
|
|
21
20
|
};
|
|
22
|
-
|
|
23
21
|
//#endregion
|
|
24
22
|
//#region src/utils/DICT.ts
|
|
25
23
|
const DICT = "Dict";
|
|
26
|
-
|
|
27
24
|
//#endregion
|
|
28
25
|
//#region src/parse/ParsedValue.ts
|
|
29
26
|
/**
|
|
@@ -35,7 +32,6 @@ function parsedValue(value, src) {
|
|
|
35
32
|
src
|
|
36
33
|
};
|
|
37
34
|
}
|
|
38
|
-
|
|
39
35
|
//#endregion
|
|
40
36
|
//#region src/utils/throwError.ts
|
|
41
37
|
function format(value) {
|
|
@@ -48,7 +44,6 @@ function format(value) {
|
|
|
48
44
|
function throwError(action, src, type, cause) {
|
|
49
45
|
return new Error(`failed to ${action} "${format(src)}" as ${type}`, { cause });
|
|
50
46
|
}
|
|
51
|
-
|
|
52
47
|
//#endregion
|
|
53
48
|
//#region src/parse/parseError.ts
|
|
54
49
|
/**
|
|
@@ -57,19 +52,15 @@ function throwError(action, src, type, cause) {
|
|
|
57
52
|
function parseError(src, type, cause) {
|
|
58
53
|
return throwError("parse", src, type, cause);
|
|
59
54
|
}
|
|
60
|
-
|
|
61
55
|
//#endregion
|
|
62
56
|
//#region src/utils/INNER.ts
|
|
63
57
|
const INNER = "Inner List";
|
|
64
|
-
|
|
65
58
|
//#endregion
|
|
66
59
|
//#region src/utils/BARE_ITEM.ts
|
|
67
60
|
const BARE_ITEM = "Bare Item";
|
|
68
|
-
|
|
69
61
|
//#endregion
|
|
70
62
|
//#region src/utils/BOOLEAN.ts
|
|
71
63
|
const BOOLEAN = "Boolean";
|
|
72
|
-
|
|
73
64
|
//#endregion
|
|
74
65
|
//#region src/parse/parseBoolean.ts
|
|
75
66
|
/**
|
|
@@ -83,11 +74,9 @@ function parseBoolean(src) {
|
|
|
83
74
|
if (src[i] === "0") return parsedValue(false, src.substring(++i));
|
|
84
75
|
throw parseError(src, BOOLEAN);
|
|
85
76
|
}
|
|
86
|
-
|
|
87
77
|
//#endregion
|
|
88
78
|
//#region src/utils/BYTES.ts
|
|
89
79
|
const BYTES = "Byte Sequence";
|
|
90
|
-
|
|
91
80
|
//#endregion
|
|
92
81
|
//#region src/parse/parseByteSequence.ts
|
|
93
82
|
/**
|
|
@@ -102,25 +91,20 @@ function parseByteSequence(src) {
|
|
|
102
91
|
src = src.substring(re.lastIndex);
|
|
103
92
|
return parsedValue(decodeBase64(b64_content), src);
|
|
104
93
|
}
|
|
105
|
-
|
|
106
94
|
//#endregion
|
|
107
95
|
//#region src/utils/DATE.ts
|
|
108
96
|
const DATE = "Date";
|
|
109
|
-
|
|
110
97
|
//#endregion
|
|
111
98
|
//#region src/utils/DECIMAL.ts
|
|
112
99
|
const DECIMAL = "Decimal";
|
|
113
|
-
|
|
114
100
|
//#endregion
|
|
115
101
|
//#region src/utils/INTEGER.ts
|
|
116
102
|
const INTEGER = "Integer";
|
|
117
|
-
|
|
118
103
|
//#endregion
|
|
119
104
|
//#region src/utils/isInvalidInt.ts
|
|
120
105
|
function isInvalidInt(value) {
|
|
121
106
|
return value < -999999999999999 || 999999999999999 < value;
|
|
122
107
|
}
|
|
123
|
-
|
|
124
108
|
//#endregion
|
|
125
109
|
//#region src/parse/parseIntegerOrDecimal.ts
|
|
126
110
|
function integerOrDecimalError(src) {
|
|
@@ -160,7 +144,6 @@ function parseIntegerOrDecimal(src) {
|
|
|
160
144
|
}
|
|
161
145
|
return parsedValue(value, src);
|
|
162
146
|
}
|
|
163
|
-
|
|
164
147
|
//#endregion
|
|
165
148
|
//#region src/parse/parseDate.ts
|
|
166
149
|
/**
|
|
@@ -174,15 +157,12 @@ function parseDate(src) {
|
|
|
174
157
|
if (Number.isInteger(date.value) === false) throw parseError(src, DATE);
|
|
175
158
|
return parsedValue(/* @__PURE__ */ new Date(date.value * 1e3), date.src);
|
|
176
159
|
}
|
|
177
|
-
|
|
178
160
|
//#endregion
|
|
179
161
|
//#region src/utils/STRING.ts
|
|
180
162
|
const STRING = "String";
|
|
181
|
-
|
|
182
163
|
//#endregion
|
|
183
164
|
//#region src/utils/STRING_REGEX.ts
|
|
184
165
|
const STRING_REGEX = /[\x00-\x1f\x7f]+/;
|
|
185
|
-
|
|
186
166
|
//#endregion
|
|
187
167
|
//#region src/parse/parseString.ts
|
|
188
168
|
/**
|
|
@@ -206,7 +186,6 @@ function parseString(src) {
|
|
|
206
186
|
}
|
|
207
187
|
throw parseError(src, STRING);
|
|
208
188
|
}
|
|
209
|
-
|
|
210
189
|
//#endregion
|
|
211
190
|
//#region src/SfToken.ts
|
|
212
191
|
/**
|
|
@@ -219,11 +198,9 @@ var SfToken = class {
|
|
|
219
198
|
this.description = description;
|
|
220
199
|
}
|
|
221
200
|
};
|
|
222
|
-
|
|
223
201
|
//#endregion
|
|
224
202
|
//#region src/utils/TOKEN.ts
|
|
225
203
|
const TOKEN = "Token";
|
|
226
|
-
|
|
227
204
|
//#endregion
|
|
228
205
|
//#region src/parse/parseToken.ts
|
|
229
206
|
/**
|
|
@@ -236,7 +213,6 @@ function parseToken(src, options) {
|
|
|
236
213
|
src = src.substring(re.lastIndex);
|
|
237
214
|
return parsedValue(options?.useSymbol === false ? new SfToken(value) : Symbol.for(value), src);
|
|
238
215
|
}
|
|
239
|
-
|
|
240
216
|
//#endregion
|
|
241
217
|
//#region src/parse/parseBareItem.ts
|
|
242
218
|
/**
|
|
@@ -252,11 +228,6 @@ function parseBareItem(src, options) {
|
|
|
252
228
|
if (first === `@`) return parseDate(src);
|
|
253
229
|
throw parseError(src, BARE_ITEM);
|
|
254
230
|
}
|
|
255
|
-
|
|
256
|
-
//#endregion
|
|
257
|
-
//#region src/utils/KEY.ts
|
|
258
|
-
const KEY = "Key";
|
|
259
|
-
|
|
260
231
|
//#endregion
|
|
261
232
|
//#region src/parse/parseKey.ts
|
|
262
233
|
/**
|
|
@@ -264,7 +235,7 @@ const KEY = "Key";
|
|
|
264
235
|
*/
|
|
265
236
|
function parseKey(src) {
|
|
266
237
|
let i = 0;
|
|
267
|
-
if (/^[a-z*]$/.test(src[i]) === false) throw parseError(src,
|
|
238
|
+
if (/^[a-z*]$/.test(src[i]) === false) throw parseError(src, "Key");
|
|
268
239
|
let value = "";
|
|
269
240
|
while (src.length > i) {
|
|
270
241
|
if (/^[a-z0-9_\-.*]$/.test(src[i]) === false) return parsedValue(value, src.substring(i));
|
|
@@ -273,7 +244,6 @@ function parseKey(src) {
|
|
|
273
244
|
}
|
|
274
245
|
return parsedValue(value, src.substring(i));
|
|
275
246
|
}
|
|
276
|
-
|
|
277
247
|
//#endregion
|
|
278
248
|
//#region src/parse/parseParameters.ts
|
|
279
249
|
/**
|
|
@@ -299,7 +269,6 @@ function parseParameters(src, options) {
|
|
|
299
269
|
}
|
|
300
270
|
return parsedValue(parameters, src);
|
|
301
271
|
}
|
|
302
|
-
|
|
303
272
|
//#endregion
|
|
304
273
|
//#region src/parse/parseItem.ts
|
|
305
274
|
/**
|
|
@@ -312,7 +281,6 @@ function parseItem(src, options) {
|
|
|
312
281
|
src = parsedParameters.src;
|
|
313
282
|
return parsedValue(new SfItem(parsedBareItem.value, parsedParameters.value), src);
|
|
314
283
|
}
|
|
315
|
-
|
|
316
284
|
//#endregion
|
|
317
285
|
//#region src/parse/parseInnerList.ts
|
|
318
286
|
/**
|
|
@@ -336,7 +304,6 @@ function parseInnerList(src, options) {
|
|
|
336
304
|
}
|
|
337
305
|
throw parseError(src, INNER);
|
|
338
306
|
}
|
|
339
|
-
|
|
340
307
|
//#endregion
|
|
341
308
|
//#region src/parse/parseItemOrInnerList.ts
|
|
342
309
|
/**
|
|
@@ -346,7 +313,6 @@ function parseItemOrInnerList(src, options) {
|
|
|
346
313
|
if (src[0] === "(") return parseInnerList(src, options);
|
|
347
314
|
return parseItem(src, options);
|
|
348
315
|
}
|
|
349
|
-
|
|
350
316
|
//#endregion
|
|
351
317
|
//#region src/parse/parseDict.ts
|
|
352
318
|
/**
|
|
@@ -377,7 +343,6 @@ function parseDict(src, options) {
|
|
|
377
343
|
}
|
|
378
344
|
return parsedValue(value, src);
|
|
379
345
|
}
|
|
380
|
-
|
|
381
346
|
//#endregion
|
|
382
347
|
//#region src/decodeSfDict.ts
|
|
383
348
|
/**
|
|
@@ -397,11 +362,9 @@ function decodeSfDict(input, options) {
|
|
|
397
362
|
throw parseError(input, DICT, cause);
|
|
398
363
|
}
|
|
399
364
|
}
|
|
400
|
-
|
|
401
365
|
//#endregion
|
|
402
366
|
//#region src/utils/ITEM.ts
|
|
403
367
|
const ITEM = "Item";
|
|
404
|
-
|
|
405
368
|
//#endregion
|
|
406
369
|
//#region src/decodeSfItem.ts
|
|
407
370
|
/**
|
|
@@ -421,11 +384,9 @@ function decodeSfItem(input, options) {
|
|
|
421
384
|
throw parseError(input, ITEM, cause);
|
|
422
385
|
}
|
|
423
386
|
}
|
|
424
|
-
|
|
425
387
|
//#endregion
|
|
426
388
|
//#region src/utils/LIST.ts
|
|
427
389
|
const LIST = "List";
|
|
428
|
-
|
|
429
390
|
//#endregion
|
|
430
391
|
//#region src/parse/parseList.ts
|
|
431
392
|
/**
|
|
@@ -444,7 +405,6 @@ function parseList(src, options) {
|
|
|
444
405
|
}
|
|
445
406
|
return parsedValue(value, src);
|
|
446
407
|
}
|
|
447
|
-
|
|
448
408
|
//#endregion
|
|
449
409
|
//#region src/decodeSfList.ts
|
|
450
410
|
/**
|
|
@@ -464,7 +424,6 @@ function decodeSfList(input, options) {
|
|
|
464
424
|
throw parseError(input, LIST, cause);
|
|
465
425
|
}
|
|
466
426
|
}
|
|
467
|
-
|
|
468
427
|
//#endregion
|
|
469
428
|
//#region src/serialize/serializeError.ts
|
|
470
429
|
/**
|
|
@@ -473,7 +432,6 @@ function decodeSfList(input, options) {
|
|
|
473
432
|
function serializeError(src, type, cause) {
|
|
474
433
|
return throwError("serialize", src, type, cause);
|
|
475
434
|
}
|
|
476
|
-
|
|
477
435
|
//#endregion
|
|
478
436
|
//#region src/serialize/serializeBoolean.ts
|
|
479
437
|
/**
|
|
@@ -483,7 +441,6 @@ function serializeBoolean(value) {
|
|
|
483
441
|
if (typeof value !== "boolean") throw serializeError(value, BOOLEAN);
|
|
484
442
|
return value ? "?1" : "?0";
|
|
485
443
|
}
|
|
486
|
-
|
|
487
444
|
//#endregion
|
|
488
445
|
//#region src/serialize/serializeByteSequence.ts
|
|
489
446
|
/**
|
|
@@ -493,7 +450,6 @@ function serializeByteSequence(value) {
|
|
|
493
450
|
if (ArrayBuffer.isView(value) === false) throw serializeError(value, BYTES);
|
|
494
451
|
return `:${encodeBase64(value)}:`;
|
|
495
452
|
}
|
|
496
|
-
|
|
497
453
|
//#endregion
|
|
498
454
|
//#region src/serialize/serializeInteger.ts
|
|
499
455
|
/**
|
|
@@ -503,7 +459,6 @@ function serializeInteger(value) {
|
|
|
503
459
|
if (isInvalidInt(value)) throw serializeError(value, INTEGER);
|
|
504
460
|
return value.toString();
|
|
505
461
|
}
|
|
506
|
-
|
|
507
462
|
//#endregion
|
|
508
463
|
//#region src/serialize/serializeDate.ts
|
|
509
464
|
/**
|
|
@@ -512,7 +467,6 @@ function serializeInteger(value) {
|
|
|
512
467
|
function serializeDate(value) {
|
|
513
468
|
return `@${serializeInteger(value.getTime() / 1e3)}`;
|
|
514
469
|
}
|
|
515
|
-
|
|
516
470
|
//#endregion
|
|
517
471
|
//#region src/serialize/serializeDecimal.ts
|
|
518
472
|
/**
|
|
@@ -524,7 +478,6 @@ function serializeDecimal(value) {
|
|
|
524
478
|
const stringValue = roundedValue.toString();
|
|
525
479
|
return stringValue.includes(".") ? stringValue : `${stringValue}.0`;
|
|
526
480
|
}
|
|
527
|
-
|
|
528
481
|
//#endregion
|
|
529
482
|
//#region src/serialize/serializeString.ts
|
|
530
483
|
const ESCAPE_OR_CONTROL_REGEX = /[\x00-\x1f\x7f"\\]/;
|
|
@@ -538,7 +491,6 @@ function serializeString(value) {
|
|
|
538
491
|
if (STRING_REGEX.test(value)) throw serializeError(value, STRING);
|
|
539
492
|
return `"${value.replace(BACKSLASH_REGEX, "\\\\").replace(DQUOTE_REGEX, "\\\"")}"`;
|
|
540
493
|
}
|
|
541
|
-
|
|
542
494
|
//#endregion
|
|
543
495
|
//#region src/utils/symbolToStr.ts
|
|
544
496
|
/**
|
|
@@ -553,7 +505,6 @@ function serializeString(value) {
|
|
|
553
505
|
function symbolToStr(symbol) {
|
|
554
506
|
return symbol.description || symbol.toString().slice(7, -1);
|
|
555
507
|
}
|
|
556
|
-
|
|
557
508
|
//#endregion
|
|
558
509
|
//#region src/serialize/serializeToken.ts
|
|
559
510
|
const TOKEN_REGEX = /^[a-zA-Z*][!#$%&'*+\-.^_`|~\w:/]*$/;
|
|
@@ -565,7 +516,6 @@ function serializeToken(token) {
|
|
|
565
516
|
if (TOKEN_REGEX.test(value) === false) throw serializeError(value, TOKEN);
|
|
566
517
|
return value;
|
|
567
518
|
}
|
|
568
|
-
|
|
569
519
|
//#endregion
|
|
570
520
|
//#region src/serialize/serializeBareItem.ts
|
|
571
521
|
/**
|
|
@@ -587,23 +537,21 @@ function serializeBareItem(value) {
|
|
|
587
537
|
default: throw serializeError(value, BARE_ITEM);
|
|
588
538
|
}
|
|
589
539
|
}
|
|
590
|
-
|
|
591
540
|
//#endregion
|
|
592
541
|
//#region src/serialize/serializeKey.ts
|
|
593
542
|
/**
|
|
594
543
|
* @internal
|
|
595
544
|
*/
|
|
596
545
|
function serializeKey(value) {
|
|
597
|
-
if (typeof value !== "string" || value.length === 0) throw serializeError(value,
|
|
546
|
+
if (typeof value !== "string" || value.length === 0) throw serializeError(value, "Key");
|
|
598
547
|
let code = value.charCodeAt(0);
|
|
599
|
-
if ((code < 97 || code > 122) && code !== 42) throw serializeError(value,
|
|
548
|
+
if ((code < 97 || code > 122) && code !== 42) throw serializeError(value, "Key");
|
|
600
549
|
for (let i = 1; i < value.length; i++) {
|
|
601
550
|
code = value.charCodeAt(i);
|
|
602
|
-
if ((code < 97 || code > 122) && (code < 48 || code > 57) && code !== 95 && code !== 45 && code !== 46 && code !== 42) throw serializeError(value,
|
|
551
|
+
if ((code < 97 || code > 122) && (code < 48 || code > 57) && code !== 95 && code !== 45 && code !== 46 && code !== 42) throw serializeError(value, "Key");
|
|
603
552
|
}
|
|
604
553
|
return value;
|
|
605
554
|
}
|
|
606
|
-
|
|
607
555
|
//#endregion
|
|
608
556
|
//#region src/serialize/serializeParams.ts
|
|
609
557
|
/**
|
|
@@ -619,7 +567,6 @@ function serializeParams(params) {
|
|
|
619
567
|
}
|
|
620
568
|
return output;
|
|
621
569
|
}
|
|
622
|
-
|
|
623
570
|
//#endregion
|
|
624
571
|
//#region src/serialize/serializeItem.ts
|
|
625
572
|
/**
|
|
@@ -629,7 +576,6 @@ function serializeItem(value) {
|
|
|
629
576
|
if (value instanceof SfItem) return `${serializeBareItem(value.value)}${serializeParams(value.params)}`;
|
|
630
577
|
else return serializeBareItem(value);
|
|
631
578
|
}
|
|
632
|
-
|
|
633
579
|
//#endregion
|
|
634
580
|
//#region src/serialize/serializeInnerList.ts
|
|
635
581
|
function serializeInnerList(value, params) {
|
|
@@ -646,7 +592,6 @@ function serializeInnerList(value, params) {
|
|
|
646
592
|
}
|
|
647
593
|
return `${output})${serializeParams(params)}`;
|
|
648
594
|
}
|
|
649
|
-
|
|
650
595
|
//#endregion
|
|
651
596
|
//#region src/serialize/serializeDictMember.ts
|
|
652
597
|
/**
|
|
@@ -666,7 +611,6 @@ function serializeDictMember(key, member) {
|
|
|
666
611
|
if (Array.isArray(member)) return `${output}=${serializeInnerList(member)}`;
|
|
667
612
|
return `${output}=${serializeBareItem(member)}`;
|
|
668
613
|
}
|
|
669
|
-
|
|
670
614
|
//#endregion
|
|
671
615
|
//#region src/serialize/serializeDict.ts
|
|
672
616
|
/**
|
|
@@ -679,7 +623,6 @@ function serializeDict(dict, options) {
|
|
|
679
623
|
else for (const key of Object.keys(dict)) parts.push(serializeDictMember(key, dict[key]));
|
|
680
624
|
return parts.join(options?.whitespace === false ? "," : ", ");
|
|
681
625
|
}
|
|
682
|
-
|
|
683
626
|
//#endregion
|
|
684
627
|
//#region src/encodeSfDict.ts
|
|
685
628
|
/**
|
|
@@ -695,14 +638,12 @@ function serializeDict(dict, options) {
|
|
|
695
638
|
function encodeSfDict(value, options) {
|
|
696
639
|
return serializeDict(value, options);
|
|
697
640
|
}
|
|
698
|
-
|
|
699
641
|
//#endregion
|
|
700
642
|
//#region src/encodeSfItem.ts
|
|
701
643
|
function encodeSfItem(value, params) {
|
|
702
644
|
if (value instanceof SfItem) return serializeItem(value);
|
|
703
645
|
return `${serializeBareItem(value)}${serializeParams(params)}`;
|
|
704
646
|
}
|
|
705
|
-
|
|
706
647
|
//#endregion
|
|
707
648
|
//#region src/serialize/serializeMember.ts
|
|
708
649
|
/**
|
|
@@ -719,7 +660,6 @@ function serializeMember(member) {
|
|
|
719
660
|
if (Array.isArray(member)) return serializeInnerList(member);
|
|
720
661
|
return serializeBareItem(member);
|
|
721
662
|
}
|
|
722
|
-
|
|
723
663
|
//#endregion
|
|
724
664
|
//#region src/serialize/serializeList.ts
|
|
725
665
|
/**
|
|
@@ -735,7 +675,6 @@ function serializeList(list, options) {
|
|
|
735
675
|
}
|
|
736
676
|
return output;
|
|
737
677
|
}
|
|
738
|
-
|
|
739
678
|
//#endregion
|
|
740
679
|
//#region src/encodeSfList.ts
|
|
741
680
|
/**
|
|
@@ -751,7 +690,7 @@ function serializeList(list, options) {
|
|
|
751
690
|
function encodeSfList(value, options) {
|
|
752
691
|
return serializeList(value, options);
|
|
753
692
|
}
|
|
754
|
-
|
|
755
693
|
//#endregion
|
|
756
694
|
export { SfItem, SfToken, decodeSfDict, decodeSfItem, decodeSfList, encodeSfDict, encodeSfItem, encodeSfList, parseBareItem, parseBoolean, parseByteSequence, parseDate, parseDict, parseError, parseInnerList, parseIntegerOrDecimal, parseItem, parseItemOrInnerList, parseKey, parseList, parseParameters, parseString, parseToken, serializeBareItem, serializeBoolean, serializeByteSequence, serializeDate, serializeDecimal, serializeDict, serializeError, serializeInnerList, serializeInteger, serializeItem, serializeKey, serializeList, serializeParams, serializeString, serializeToken, symbolToStr };
|
|
695
|
+
|
|
757
696
|
//# sourceMappingURL=index.js.map
|