@svta/cml-structured-field-values 0.19.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/LICENSE +202 -0
- package/NOTICE +36 -0
- package/dist/SfBareItem.d.ts +9 -0
- package/dist/SfBareItem.d.ts.map +1 -0
- package/dist/SfBareItem.js +2 -0
- package/dist/SfBareItem.js.map +1 -0
- package/dist/SfDecodeOptions.d.ts +13 -0
- package/dist/SfDecodeOptions.d.ts.map +1 -0
- package/dist/SfDecodeOptions.js +2 -0
- package/dist/SfDecodeOptions.js.map +1 -0
- package/dist/SfDictionary.d.ts +9 -0
- package/dist/SfDictionary.d.ts.map +1 -0
- package/dist/SfDictionary.js +2 -0
- package/dist/SfDictionary.js.map +1 -0
- package/dist/SfEncodeOptions.d.ts +13 -0
- package/dist/SfEncodeOptions.d.ts.map +1 -0
- package/dist/SfEncodeOptions.js +2 -0
- package/dist/SfEncodeOptions.js.map +1 -0
- package/dist/SfInnerList.d.ts +14 -0
- package/dist/SfInnerList.d.ts.map +1 -0
- package/dist/SfInnerList.js +2 -0
- package/dist/SfInnerList.js.map +1 -0
- package/dist/SfItem.d.ts +14 -0
- package/dist/SfItem.d.ts.map +1 -0
- package/dist/SfItem.js +16 -0
- package/dist/SfItem.js.map +1 -0
- package/dist/SfMember.d.ts +11 -0
- package/dist/SfMember.d.ts.map +1 -0
- package/dist/SfMember.js +2 -0
- package/dist/SfMember.js.map +1 -0
- package/dist/SfParameters.d.ts +8 -0
- package/dist/SfParameters.d.ts.map +1 -0
- package/dist/SfParameters.js +2 -0
- package/dist/SfParameters.js.map +1 -0
- package/dist/SfToken.d.ts +11 -0
- package/dist/SfToken.d.ts.map +1 -0
- package/dist/SfToken.js +12 -0
- package/dist/SfToken.js.map +1 -0
- package/dist/decodeSfDict.d.ts +13 -0
- package/dist/decodeSfDict.d.ts.map +1 -0
- package/dist/decodeSfDict.js +25 -0
- package/dist/decodeSfDict.js.map +1 -0
- package/dist/decodeSfItem.d.ts +13 -0
- package/dist/decodeSfItem.d.ts.map +1 -0
- package/dist/decodeSfItem.js +46 -0
- package/dist/decodeSfItem.js.map +1 -0
- package/dist/decodeSfList.d.ts +13 -0
- package/dist/decodeSfList.d.ts.map +1 -0
- package/dist/decodeSfList.js +25 -0
- package/dist/decodeSfList.js.map +1 -0
- package/dist/encodeSfDict.d.ts +14 -0
- package/dist/encodeSfDict.d.ts.map +1 -0
- package/dist/encodeSfDict.js +16 -0
- package/dist/encodeSfDict.js.map +1 -0
- package/dist/encodeSfItem.d.ts +26 -0
- package/dist/encodeSfItem.d.ts.map +1 -0
- package/dist/encodeSfItem.js +9 -0
- package/dist/encodeSfItem.js.map +1 -0
- package/dist/encodeSfList.d.ts +15 -0
- package/dist/encodeSfList.d.ts.map +1 -0
- package/dist/encodeSfList.js +16 -0
- package/dist/encodeSfList.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/parse/ParsedValue.d.ts +6 -0
- package/dist/parse/ParsedValue.d.ts.map +1 -0
- package/dist/parse/ParsedValue.js +4 -0
- package/dist/parse/ParsedValue.js.map +1 -0
- package/dist/parse/index.d.ts +22 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +21 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/parseBareItem.d.ts +5 -0
- package/dist/parse/parseBareItem.d.ts.map +1 -0
- package/dist/parse/parseBareItem.js +59 -0
- package/dist/parse/parseBareItem.js.map +1 -0
- package/dist/parse/parseBoolean.d.ts +3 -0
- package/dist/parse/parseBoolean.d.ts.map +1 -0
- package/dist/parse/parseBoolean.js +34 -0
- package/dist/parse/parseBoolean.js.map +1 -0
- package/dist/parse/parseByteSequence.d.ts +3 -0
- package/dist/parse/parseByteSequence.d.ts.map +1 -0
- package/dist/parse/parseByteSequence.js +59 -0
- package/dist/parse/parseByteSequence.js.map +1 -0
- package/dist/parse/parseDate.d.ts +3 -0
- package/dist/parse/parseDate.d.ts.map +1 -0
- package/dist/parse/parseDate.js +32 -0
- package/dist/parse/parseDate.js.map +1 -0
- package/dist/parse/parseDict.d.ts +5 -0
- package/dist/parse/parseDict.d.ts.map +1 -0
- package/dist/parse/parseDict.js +90 -0
- package/dist/parse/parseDict.js.map +1 -0
- package/dist/parse/parseError.d.ts +2 -0
- package/dist/parse/parseError.d.ts.map +1 -0
- package/dist/parse/parseError.js +5 -0
- package/dist/parse/parseError.js.map +1 -0
- package/dist/parse/parseInnerList.d.ts +5 -0
- package/dist/parse/parseInnerList.d.ts.map +1 -0
- package/dist/parse/parseInnerList.js +62 -0
- package/dist/parse/parseInnerList.js.map +1 -0
- package/dist/parse/parseIntegerOrDecimal.d.ts +3 -0
- package/dist/parse/parseIntegerOrDecimal.d.ts.map +1 -0
- package/dist/parse/parseIntegerOrDecimal.js +123 -0
- package/dist/parse/parseIntegerOrDecimal.js.map +1 -0
- package/dist/parse/parseItem.d.ts +5 -0
- package/dist/parse/parseItem.d.ts.map +1 -0
- package/dist/parse/parseItem.js +25 -0
- package/dist/parse/parseItem.js.map +1 -0
- package/dist/parse/parseItemOrInnerList.d.ts +6 -0
- package/dist/parse/parseItemOrInnerList.d.ts.map +1 -0
- package/dist/parse/parseItemOrInnerList.js +22 -0
- package/dist/parse/parseItemOrInnerList.js.map +1 -0
- package/dist/parse/parseKey.d.ts +3 -0
- package/dist/parse/parseKey.d.ts.map +1 -0
- package/dist/parse/parseKey.js +40 -0
- package/dist/parse/parseKey.js.map +1 -0
- package/dist/parse/parseList.d.ts +5 -0
- package/dist/parse/parseList.d.ts.map +1 -0
- package/dist/parse/parseList.js +51 -0
- package/dist/parse/parseList.js.map +1 -0
- package/dist/parse/parseParameters.d.ts +5 -0
- package/dist/parse/parseParameters.d.ts.map +1 -0
- package/dist/parse/parseParameters.js +68 -0
- package/dist/parse/parseParameters.js.map +1 -0
- package/dist/parse/parseString.d.ts +3 -0
- package/dist/parse/parseString.d.ts.map +1 -0
- package/dist/parse/parseString.js +73 -0
- package/dist/parse/parseString.js.map +1 -0
- package/dist/parse/parseToken.d.ts +5 -0
- package/dist/parse/parseToken.d.ts.map +1 -0
- package/dist/parse/parseToken.js +35 -0
- package/dist/parse/parseToken.js.map +1 -0
- package/dist/serialize/index.d.ts +21 -0
- package/dist/serialize/index.d.ts.map +1 -0
- package/dist/serialize/index.js +21 -0
- package/dist/serialize/index.js.map +1 -0
- package/dist/serialize/serializeBareItem.d.ts +2 -0
- package/dist/serialize/serializeBareItem.d.ts.map +1 -0
- package/dist/serialize/serializeBareItem.js +69 -0
- package/dist/serialize/serializeBareItem.js.map +1 -0
- package/dist/serialize/serializeBoolean.d.ts +2 -0
- package/dist/serialize/serializeBoolean.d.ts.map +1 -0
- package/dist/serialize/serializeBoolean.js +25 -0
- package/dist/serialize/serializeBoolean.js.map +1 -0
- package/dist/serialize/serializeByteSequence.d.ts +2 -0
- package/dist/serialize/serializeByteSequence.d.ts.map +1 -0
- package/dist/serialize/serializeByteSequence.js +34 -0
- package/dist/serialize/serializeByteSequence.js.map +1 -0
- package/dist/serialize/serializeDate.d.ts +2 -0
- package/dist/serialize/serializeDate.d.ts.map +1 -0
- package/dist/serialize/serializeDate.js +13 -0
- package/dist/serialize/serializeDate.js.map +1 -0
- package/dist/serialize/serializeDecimal.d.ts +2 -0
- package/dist/serialize/serializeDecimal.d.ts.map +1 -0
- package/dist/serialize/serializeDecimal.js +46 -0
- package/dist/serialize/serializeDecimal.js.map +1 -0
- package/dist/serialize/serializeDict.d.ts +3 -0
- package/dist/serialize/serializeDict.d.ts.map +1 -0
- package/dist/serialize/serializeDict.js +74 -0
- package/dist/serialize/serializeDict.js.map +1 -0
- package/dist/serialize/serializeError.d.ts +2 -0
- package/dist/serialize/serializeError.d.ts.map +1 -0
- package/dist/serialize/serializeError.js +5 -0
- package/dist/serialize/serializeError.js.map +1 -0
- package/dist/serialize/serializeInnerList.d.ts +3 -0
- package/dist/serialize/serializeInnerList.d.ts.map +1 -0
- package/dist/serialize/serializeInnerList.js +28 -0
- package/dist/serialize/serializeInnerList.js.map +1 -0
- package/dist/serialize/serializeInteger.d.ts +2 -0
- package/dist/serialize/serializeInteger.d.ts.map +1 -0
- package/dist/serialize/serializeInteger.js +28 -0
- package/dist/serialize/serializeInteger.js.map +1 -0
- package/dist/serialize/serializeItem.d.ts +4 -0
- package/dist/serialize/serializeItem.d.ts.map +1 -0
- package/dist/serialize/serializeItem.js +26 -0
- package/dist/serialize/serializeItem.js.map +1 -0
- package/dist/serialize/serializeKey.d.ts +2 -0
- package/dist/serialize/serializeKey.d.ts.map +1 -0
- package/dist/serialize/serializeKey.js +28 -0
- package/dist/serialize/serializeKey.js.map +1 -0
- package/dist/serialize/serializeList.d.ts +4 -0
- package/dist/serialize/serializeList.d.ts.map +1 -0
- package/dist/serialize/serializeList.js +48 -0
- package/dist/serialize/serializeList.js.map +1 -0
- package/dist/serialize/serializeParams.d.ts +2 -0
- package/dist/serialize/serializeParams.d.ts.map +1 -0
- package/dist/serialize/serializeParams.js +40 -0
- package/dist/serialize/serializeParams.js.map +1 -0
- package/dist/serialize/serializeString.d.ts +2 -0
- package/dist/serialize/serializeString.d.ts.map +1 -0
- package/dist/serialize/serializeString.js +34 -0
- package/dist/serialize/serializeString.js.map +1 -0
- package/dist/serialize/serializeToken.d.ts +4 -0
- package/dist/serialize/serializeToken.d.ts.map +1 -0
- package/dist/serialize/serializeToken.js +11 -0
- package/dist/serialize/serializeToken.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/utils/BARE_ITEM.d.ts +2 -0
- package/dist/utils/BARE_ITEM.d.ts.map +1 -0
- package/dist/utils/BARE_ITEM.js +2 -0
- package/dist/utils/BARE_ITEM.js.map +1 -0
- package/dist/utils/BOOLEAN.d.ts +2 -0
- package/dist/utils/BOOLEAN.d.ts.map +1 -0
- package/dist/utils/BOOLEAN.js +2 -0
- package/dist/utils/BOOLEAN.js.map +1 -0
- package/dist/utils/BYTES.d.ts +2 -0
- package/dist/utils/BYTES.d.ts.map +1 -0
- package/dist/utils/BYTES.js +2 -0
- package/dist/utils/BYTES.js.map +1 -0
- package/dist/utils/DATE.d.ts +2 -0
- package/dist/utils/DATE.d.ts.map +1 -0
- package/dist/utils/DATE.js +2 -0
- package/dist/utils/DATE.js.map +1 -0
- package/dist/utils/DECIMAL.d.ts +2 -0
- package/dist/utils/DECIMAL.d.ts.map +1 -0
- package/dist/utils/DECIMAL.js +2 -0
- package/dist/utils/DECIMAL.js.map +1 -0
- package/dist/utils/DICT.d.ts +2 -0
- package/dist/utils/DICT.d.ts.map +1 -0
- package/dist/utils/DICT.js +2 -0
- package/dist/utils/DICT.js.map +1 -0
- package/dist/utils/INNER.d.ts +2 -0
- package/dist/utils/INNER.d.ts.map +1 -0
- package/dist/utils/INNER.js +2 -0
- package/dist/utils/INNER.js.map +1 -0
- package/dist/utils/INTEGER.d.ts +2 -0
- package/dist/utils/INTEGER.d.ts.map +1 -0
- package/dist/utils/INTEGER.js +2 -0
- package/dist/utils/INTEGER.js.map +1 -0
- package/dist/utils/INTEGER_DECIMAL.d.ts +2 -0
- package/dist/utils/INTEGER_DECIMAL.d.ts.map +1 -0
- package/dist/utils/INTEGER_DECIMAL.js +4 -0
- package/dist/utils/INTEGER_DECIMAL.js.map +1 -0
- package/dist/utils/ITEM.d.ts +2 -0
- package/dist/utils/ITEM.d.ts.map +1 -0
- package/dist/utils/ITEM.js +2 -0
- package/dist/utils/ITEM.js.map +1 -0
- package/dist/utils/KEY.d.ts +2 -0
- package/dist/utils/KEY.d.ts.map +1 -0
- package/dist/utils/KEY.js +2 -0
- package/dist/utils/KEY.js.map +1 -0
- package/dist/utils/LIST.d.ts +2 -0
- package/dist/utils/LIST.d.ts.map +1 -0
- package/dist/utils/LIST.js +2 -0
- package/dist/utils/LIST.js.map +1 -0
- package/dist/utils/STRING.d.ts +2 -0
- package/dist/utils/STRING.d.ts.map +1 -0
- package/dist/utils/STRING.js +2 -0
- package/dist/utils/STRING.js.map +1 -0
- package/dist/utils/STRING_REGEX.d.ts +2 -0
- package/dist/utils/STRING_REGEX.d.ts.map +1 -0
- package/dist/utils/STRING_REGEX.js +2 -0
- package/dist/utils/STRING_REGEX.js.map +1 -0
- package/dist/utils/TOKEN.d.ts +2 -0
- package/dist/utils/TOKEN.d.ts.map +1 -0
- package/dist/utils/TOKEN.js +2 -0
- package/dist/utils/TOKEN.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/isInvalidInt.d.ts +2 -0
- package/dist/utils/isInvalidInt.d.ts.map +1 -0
- package/dist/utils/isInvalidInt.js +4 -0
- package/dist/utils/isInvalidInt.js.map +1 -0
- package/dist/utils/symbolToStr.d.ts +13 -0
- package/dist/utils/symbolToStr.d.ts.map +1 -0
- package/dist/utils/symbolToStr.js +14 -0
- package/dist/utils/symbolToStr.js.map +1 -0
- package/dist/utils/throwError.d.ts +2 -0
- package/dist/utils/throwError.d.ts.map +1 -0
- package/dist/utils/throwError.js +19 -0
- package/dist/utils/throwError.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { SfItem } from '../SfItem.js';
|
|
2
|
+
import { DICT } from '../utils/DICT.js';
|
|
3
|
+
import { serializeError } from './serializeError.js';
|
|
4
|
+
import { serializeInnerList } from './serializeInnerList.js';
|
|
5
|
+
import { serializeItem } from './serializeItem.js';
|
|
6
|
+
import { serializeKey } from './serializeKey.js';
|
|
7
|
+
import { serializeParams } from './serializeParams.js';
|
|
8
|
+
// 4.1.2. Serializing a Dictionary
|
|
9
|
+
//
|
|
10
|
+
// Given an ordered Dictionary as input_dictionary (each member having a
|
|
11
|
+
// member_name and a tuple value of (member_value, parameters)), return
|
|
12
|
+
// an ASCII string suitable for use in a HTTP field value.
|
|
13
|
+
//
|
|
14
|
+
// 1. Let output be an empty string.
|
|
15
|
+
//
|
|
16
|
+
// 2. For each member_name with a value of (member_value, parameters)
|
|
17
|
+
// in input_dictionary:
|
|
18
|
+
//
|
|
19
|
+
// 1. Append the result of running Serializing a Key
|
|
20
|
+
// (Section 4.1.1.3) with member's member_name to output.
|
|
21
|
+
//
|
|
22
|
+
// 2. If member_value is Boolean true:
|
|
23
|
+
//
|
|
24
|
+
// 1. Append the result of running Serializing Parameters
|
|
25
|
+
// (Section 4.1.1.2) with parameters to output.
|
|
26
|
+
//
|
|
27
|
+
// 3. Otherwise:
|
|
28
|
+
//
|
|
29
|
+
// 1. Append "=" to output.
|
|
30
|
+
//
|
|
31
|
+
// 2. If member_value is an array, append the result of running
|
|
32
|
+
// Serializing an Inner List (Section 4.1.1.1) with
|
|
33
|
+
// (member_value, parameters) to output.
|
|
34
|
+
//
|
|
35
|
+
// 3. Otherwise, append the result of running Serializing an
|
|
36
|
+
// Item (Section 4.1.3) with (member_value, parameters) to
|
|
37
|
+
// output.
|
|
38
|
+
//
|
|
39
|
+
// 4. If more members remain in input_dictionary:
|
|
40
|
+
//
|
|
41
|
+
// 1. Append "," to output.
|
|
42
|
+
//
|
|
43
|
+
// 2. Append a single SP to output.
|
|
44
|
+
//
|
|
45
|
+
// 3. Return output.
|
|
46
|
+
export function serializeDict(dict, options = { whitespace: true }) {
|
|
47
|
+
if (typeof dict !== 'object' || dict == null) {
|
|
48
|
+
throw serializeError(dict, DICT);
|
|
49
|
+
}
|
|
50
|
+
const entries = dict instanceof Map ? dict.entries() : Object.entries(dict);
|
|
51
|
+
const optionalWhiteSpace = (options === null || options === void 0 ? void 0 : options.whitespace) ? ' ' : '';
|
|
52
|
+
return Array.from(entries)
|
|
53
|
+
.map(([key, item]) => {
|
|
54
|
+
if (item instanceof SfItem === false) {
|
|
55
|
+
item = new SfItem(item);
|
|
56
|
+
}
|
|
57
|
+
let output = serializeKey(key);
|
|
58
|
+
if (item.value === true) {
|
|
59
|
+
output += serializeParams(item.params);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
output += '=';
|
|
63
|
+
if (Array.isArray(item.value)) {
|
|
64
|
+
output += serializeInnerList(item);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
output += serializeItem(item);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return output;
|
|
71
|
+
})
|
|
72
|
+
.join(`,${optionalWhiteSpace}`);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=serializeDict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeDict.js","sourceRoot":"","sources":["../../src/serialize/serializeDict.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,mCAAmC;AACnC,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,sEAAsE;AACtE,2BAA2B;AAC3B,EAAE;AACF,yDAAyD;AACzD,iEAAiE;AACjE,EAAE;AACF,2CAA2C;AAC3C,EAAE;AACF,kEAAkE;AAClE,2DAA2D;AAC3D,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,wEAAwE;AACxE,+DAA+D;AAC/D,oDAAoD;AACpD,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,sBAAsB;AACtB,EAAE;AACF,sDAAsD;AACtD,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,4CAA4C;AAC5C,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,aAAa,CAAC,IAA4C,EAAE,UAA2B,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1H,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC9C,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1D,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACpB,IAAI,IAAI,YAAY,MAAM,KAAK,KAAK,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aACI,CAAC;YACL,MAAM,IAAI,GAAG,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;iBACI,CAAC;gBACL,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;AAClC,CAAC","sourcesContent":["import type { SfEncodeOptions } from '../SfEncodeOptions.js';\nimport { SfItem } from '../SfItem.js';\nimport { DICT } from '../utils/DICT.js';\nimport { serializeError } from './serializeError.js';\nimport { serializeInnerList } from './serializeInnerList.js';\nimport { serializeItem } from './serializeItem.js';\nimport { serializeKey } from './serializeKey.js';\nimport { serializeParams } from './serializeParams.js';\n\n// 4.1.2. Serializing a Dictionary\n//\n// Given an ordered Dictionary as input_dictionary (each member having a\n// member_name and a tuple value of (member_value, parameters)), return\n// an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each member_name with a value of (member_value, parameters)\n// in input_dictionary:\n//\n// 1. Append the result of running Serializing a Key\n// (Section 4.1.1.3) with member's member_name to output.\n//\n// 2. If member_value is Boolean true:\n//\n// 1. Append the result of running Serializing Parameters\n// (Section 4.1.1.2) with parameters to output.\n//\n// 3. Otherwise:\n//\n// 1. Append \"=\" to output.\n//\n// 2. If member_value is an array, append the result of running\n// Serializing an Inner List (Section 4.1.1.1) with\n// (member_value, parameters) to output.\n//\n// 3. Otherwise, append the result of running Serializing an\n// Item (Section 4.1.3) with (member_value, parameters) to\n// output.\n//\n// 4. If more members remain in input_dictionary:\n//\n// 1. Append \",\" to output.\n//\n// 2. Append a single SP to output.\n//\n// 3. Return output.\nexport function serializeDict(dict: Record<string, any> | Map<string, any>, options: SfEncodeOptions = { whitespace: true }): string {\n\tif (typeof dict !== 'object' || dict == null) {\n\t\tthrow serializeError(dict, DICT);\n\t}\n\n\tconst entries = dict instanceof Map ? dict.entries() : Object.entries(dict);\n\tconst optionalWhiteSpace = options?.whitespace ? ' ' : '';\n\n\treturn Array.from(entries)\n\t\t.map(([key, item]) => {\n\t\t\tif (item instanceof SfItem === false) {\n\t\t\t\titem = new SfItem(item);\n\t\t\t}\n\t\t\tlet output = serializeKey(key);\n\t\t\tif (item.value === true) {\n\t\t\t\toutput += serializeParams(item.params);\n\t\t\t}\n\t\t\telse {\n\t\t\t\toutput += '=';\n\t\t\t\tif (Array.isArray(item.value)) {\n\t\t\t\t\toutput += serializeInnerList(item);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\toutput += serializeItem(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t})\n\t\t.join(`,${optionalWhiteSpace}`);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeError.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeError.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAEzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeError.js","sourceRoot":"","sources":["../../src/serialize/serializeError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,UAAU,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAE,KAAW;IACjE,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC","sourcesContent":["import { throwError } from '../utils/throwError.js';\n\nexport function serializeError(src: any, type: string, cause?: any): Error {\n\treturn throwError('serialize', src, type, cause);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeInnerList.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeInnerList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0BrD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,UAEpD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { serializeItem } from './serializeItem.js';
|
|
2
|
+
import { serializeParams } from './serializeParams.js';
|
|
3
|
+
// 4.1.1.1. Serializing an Inner List
|
|
4
|
+
//
|
|
5
|
+
// Given an array of (member_value, parameters) tuples as inner_list,
|
|
6
|
+
// and parameters as list_parameters, return an ASCII string suitable
|
|
7
|
+
// for use in a HTTP field value.
|
|
8
|
+
//
|
|
9
|
+
// 1. Let output be the string "(".
|
|
10
|
+
//
|
|
11
|
+
// 2. For each (member_value, parameters) of inner_list:
|
|
12
|
+
//
|
|
13
|
+
// 1. Append the result of running Serializing an Item
|
|
14
|
+
// (Section 4.1.3) with (member_value, parameters) to output.
|
|
15
|
+
//
|
|
16
|
+
// 2. If more values remain in inner_list, append a single SP to
|
|
17
|
+
// output.
|
|
18
|
+
//
|
|
19
|
+
// 3. Append ")" to output.
|
|
20
|
+
//
|
|
21
|
+
// 4. Append the result of running Serializing Parameters
|
|
22
|
+
// (Section 4.1.1.2) with list_parameters to output.
|
|
23
|
+
//
|
|
24
|
+
// 5. Return output.
|
|
25
|
+
export function serializeInnerList(value) {
|
|
26
|
+
return `(${value.value.map(serializeItem).join(' ')})${serializeParams(value.params)}`;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=serializeInnerList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeInnerList.js","sourceRoot":"","sources":["../../src/serialize/serializeInnerList.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,sCAAsC;AACtC,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,yDAAyD;AACzD,EAAE;AACF,2DAA2D;AAC3D,qEAAqE;AACrE,EAAE;AACF,qEAAqE;AACrE,kBAAkB;AAClB,EAAE;AACF,4BAA4B;AAC5B,EAAE;AACF,0DAA0D;AAC1D,wDAAwD;AACxD,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,kBAAkB,CAAC,KAAkB;IACpD,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACxF,CAAC","sourcesContent":["import type { SfInnerList } from '../SfInnerList.js';\nimport { serializeItem } from './serializeItem.js';\nimport { serializeParams } from './serializeParams.js';\n\n// 4.1.1.1. Serializing an Inner List\n//\n// Given an array of (member_value, parameters) tuples as inner_list,\n// and parameters as list_parameters, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. Let output be the string \"(\".\n//\n// 2. For each (member_value, parameters) of inner_list:\n//\n// 1. Append the result of running Serializing an Item\n// (Section 4.1.3) with (member_value, parameters) to output.\n//\n// 2. If more values remain in inner_list, append a single SP to\n// output.\n//\n// 3. Append \")\" to output.\n//\n// 4. Append the result of running Serializing Parameters\n// (Section 4.1.1.2) with list_parameters to output.\n//\n// 5. Return output.\nexport function serializeInnerList(value: SfInnerList) {\n\treturn `(${value.value.map(serializeItem).join(' ')})${serializeParams(value.params)}`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeInteger.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeInteger.ts"],"names":[],"mappings":"AAsBA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { INTEGER } from '../utils/INTEGER.js';
|
|
2
|
+
import { isInvalidInt } from '../utils/isInvalidInt.js';
|
|
3
|
+
import { serializeError } from './serializeError.js';
|
|
4
|
+
// 4.1.4. Serializing an Integer
|
|
5
|
+
//
|
|
6
|
+
// Given an Integer as input_integer, return an ASCII string suitable
|
|
7
|
+
// for use in a HTTP field value.
|
|
8
|
+
//
|
|
9
|
+
// 1. If input_integer is not an integer in the range of
|
|
10
|
+
// -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail
|
|
11
|
+
// serialization.
|
|
12
|
+
//
|
|
13
|
+
// 2. Let output be an empty string.
|
|
14
|
+
//
|
|
15
|
+
// 3. If input_integer is less than (but not equal to) 0, append "-" to
|
|
16
|
+
// output.
|
|
17
|
+
//
|
|
18
|
+
// 4. Append input_integer's numeric value represented in base 10 using
|
|
19
|
+
// only decimal digits to output.
|
|
20
|
+
//
|
|
21
|
+
// 5. Return output.
|
|
22
|
+
export function serializeInteger(value) {
|
|
23
|
+
if (isInvalidInt(value)) {
|
|
24
|
+
throw serializeError(value, INTEGER);
|
|
25
|
+
}
|
|
26
|
+
return value.toString();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=serializeInteger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeInteger.js","sourceRoot":"","sources":["../../src/serialize/serializeInteger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,iCAAiC;AACjC,EAAE;AACF,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,yDAAyD;AACzD,kEAAkE;AAClE,qBAAqB;AACrB,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,wEAAwE;AACxE,cAAc;AACd,EAAE;AACF,wEAAwE;AACxE,qCAAqC;AACrC,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC7C,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC","sourcesContent":["import { INTEGER } from '../utils/INTEGER.js';\nimport { isInvalidInt } from '../utils/isInvalidInt.js';\nimport { serializeError } from './serializeError.js';\n\n// 4.1.4. Serializing an Integer\n//\n// Given an Integer as input_integer, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. If input_integer is not an integer in the range of\n// -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail\n// serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. If input_integer is less than (but not equal to) 0, append \"-\" to\n// output.\n//\n// 4. Append input_integer's numeric value represented in base 10 using\n// only decimal digits to output.\n//\n// 5. Return output.\nexport function serializeInteger(value: number): string {\n\tif (isInvalidInt(value)) {\n\t\tthrow serializeError(value, INTEGER);\n\t}\n\n\treturn value.toString();\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeItem.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeItem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkBtC,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAOhE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SfItem } from '../SfItem.js';
|
|
2
|
+
import { serializeBareItem } from './serializeBareItem.js';
|
|
3
|
+
import { serializeParams } from './serializeParams.js';
|
|
4
|
+
// 4.1.3. Serializing an Item
|
|
5
|
+
//
|
|
6
|
+
// Given an Item as bare_item and Parameters as item_parameters, return
|
|
7
|
+
// an ASCII string suitable for use in a HTTP field value.
|
|
8
|
+
//
|
|
9
|
+
// 1. Let output be an empty string.
|
|
10
|
+
//
|
|
11
|
+
// 2. Append the result of running Serializing a Bare Item
|
|
12
|
+
// Section 4.1.3.1 with bare_item to output.
|
|
13
|
+
//
|
|
14
|
+
// 3. Append the result of running Serializing Parameters
|
|
15
|
+
// Section 4.1.1.2 with item_parameters to output.
|
|
16
|
+
//
|
|
17
|
+
// 4. Return output.
|
|
18
|
+
export function serializeItem(value) {
|
|
19
|
+
if (value instanceof SfItem) {
|
|
20
|
+
return `${serializeBareItem(value.value)}${serializeParams(value.params)}`;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return serializeBareItem(value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=serializeItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeItem.js","sourceRoot":"","sources":["../../src/serialize/serializeItem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,8BAA8B;AAC9B,EAAE;AACF,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,2DAA2D;AAC3D,gDAAgD;AAChD,EAAE;AACF,0DAA0D;AAC1D,sDAAsD;AACtD,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,aAAa,CAAC,KAA0B;IACvD,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC7B,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5E,CAAC;SACI,CAAC;QACL,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACF,CAAC","sourcesContent":["import type { SfBareItem } from '../SfBareItem.js';\nimport { SfItem } from '../SfItem.js';\nimport { serializeBareItem } from './serializeBareItem.js';\nimport { serializeParams } from './serializeParams.js';\n\n// 4.1.3. Serializing an Item\n//\n// Given an Item as bare_item and Parameters as item_parameters, return\n// an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. Append the result of running Serializing a Bare Item\n// Section 4.1.3.1 with bare_item to output.\n//\n// 3. Append the result of running Serializing Parameters\n// Section 4.1.1.2 with item_parameters to output.\n//\n// 4. Return output.\nexport function serializeItem(value: SfItem | SfBareItem): string {\n\tif (value instanceof SfItem) {\n\t\treturn `${serializeBareItem(value.value)}${serializeParams(value.params)}`;\n\t}\n\telse {\n\t\treturn serializeBareItem(value);\n\t}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeKey.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeKey.ts"],"names":[],"mappings":"AAsBA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { KEY } from '../utils/KEY.js';
|
|
2
|
+
import { serializeError } from './serializeError.js';
|
|
3
|
+
// 4.1.1.3. Serializing a Key
|
|
4
|
+
//
|
|
5
|
+
// Given a key as input_key, return an ASCII string suitable for use in
|
|
6
|
+
// a HTTP field value.
|
|
7
|
+
//
|
|
8
|
+
// 1. Convert input_key into a sequence of ASCII characters; if
|
|
9
|
+
// conversion fails, fail serialization.
|
|
10
|
+
//
|
|
11
|
+
// 2. If input_key contains characters not in lcalpha, DIGIT, "_", "-",
|
|
12
|
+
// ".", or "*" fail serialization.
|
|
13
|
+
//
|
|
14
|
+
// 3. If the first character of input_key is not lcalpha or "*", fail
|
|
15
|
+
// serialization.
|
|
16
|
+
//
|
|
17
|
+
// 4. Let output be an empty string.
|
|
18
|
+
//
|
|
19
|
+
// 5. Append input_key to output.
|
|
20
|
+
//
|
|
21
|
+
// 6. Return output.
|
|
22
|
+
export function serializeKey(value) {
|
|
23
|
+
if (/^[a-z*][a-z0-9\-_.*]*$/.test(value) === false) {
|
|
24
|
+
throw serializeError(value, KEY);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=serializeKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeKey.js","sourceRoot":"","sources":["../../src/serialize/serializeKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,8BAA8B;AAC9B,EAAE;AACF,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,gEAAgE;AAChE,4CAA4C;AAC5C,EAAE;AACF,wEAAwE;AACxE,sCAAsC;AACtC,EAAE;AACF,sEAAsE;AACtE,qBAAqB;AACrB,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,kCAAkC;AAClC,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,YAAY,CAAC,KAAa;IACzC,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["import { KEY } from '../utils/KEY.js';\nimport { serializeError } from './serializeError.js';\n\n// 4.1.1.3. Serializing a Key\n//\n// Given a key as input_key, return an ASCII string suitable for use in\n// a HTTP field value.\n//\n// 1. Convert input_key into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If input_key contains characters not in lcalpha, DIGIT, \"_\", \"-\",\n// \".\", or \"*\" fail serialization.\n//\n// 3. If the first character of input_key is not lcalpha or \"*\", fail\n// serialization.\n//\n// 4. Let output be an empty string.\n//\n// 5. Append input_key to output.\n//\n// 6. Return output.\nexport function serializeKey(value: string): string {\n\tif (/^[a-z*][a-z0-9\\-_.*]*$/.test(value) === false) {\n\t\tthrow serializeError(value, KEY);\n\t}\n\treturn value;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeList.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA6B/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAE,eAAsC,GAAG,MAAM,CAsBvG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { SfItem } from '../SfItem.js';
|
|
2
|
+
import { LIST } from '../utils/LIST.js';
|
|
3
|
+
import { serializeError } from './serializeError.js';
|
|
4
|
+
import { serializeInnerList } from './serializeInnerList.js';
|
|
5
|
+
import { serializeItem } from './serializeItem.js';
|
|
6
|
+
// 4.1.1. Serializing a List
|
|
7
|
+
//
|
|
8
|
+
// Given an array of (member_value, parameters) tuples as input_list,
|
|
9
|
+
// return an ASCII string suitable for use in a HTTP field value.
|
|
10
|
+
//
|
|
11
|
+
// 1. Let output be an empty string.
|
|
12
|
+
//
|
|
13
|
+
// 2. For each (member_value, parameters) of input_list:
|
|
14
|
+
//
|
|
15
|
+
// 1. If member_value is an array, append the result of running
|
|
16
|
+
// Serializing an Inner List (Section 4.1.1.1) with
|
|
17
|
+
// (member_value, parameters) to output.
|
|
18
|
+
//
|
|
19
|
+
// 2. Otherwise, append the result of running Serializing an Item
|
|
20
|
+
// (Section 4.1.3) with (member_value, parameters) to output.
|
|
21
|
+
//
|
|
22
|
+
// 3. If more member_values remain in input_list:
|
|
23
|
+
//
|
|
24
|
+
// 1. Append "," to output.
|
|
25
|
+
//
|
|
26
|
+
// 2. Append a single SP to output.
|
|
27
|
+
//
|
|
28
|
+
// 3. Return output.
|
|
29
|
+
export function serializeList(list, options = { whitespace: true }) {
|
|
30
|
+
if (Array.isArray(list) === false) {
|
|
31
|
+
throw serializeError(list, LIST);
|
|
32
|
+
}
|
|
33
|
+
const optionalWhiteSpace = (options === null || options === void 0 ? void 0 : options.whitespace) ? ' ' : '';
|
|
34
|
+
return list
|
|
35
|
+
.map(item => {
|
|
36
|
+
if (item instanceof SfItem === false) {
|
|
37
|
+
item = new SfItem(item);
|
|
38
|
+
}
|
|
39
|
+
// TODO: Fix this type assertion
|
|
40
|
+
const i = item;
|
|
41
|
+
if (Array.isArray(i.value)) {
|
|
42
|
+
return serializeInnerList(i);
|
|
43
|
+
}
|
|
44
|
+
return serializeItem(i);
|
|
45
|
+
})
|
|
46
|
+
.join(`,${optionalWhiteSpace}`);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=serializeList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeList.js","sourceRoot":"","sources":["../../src/serialize/serializeList.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,6BAA6B;AAC7B,EAAE;AACF,qEAAqE;AACrE,iEAAiE;AACjE,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,yDAAyD;AACzD,EAAE;AACF,oEAAoE;AACpE,2DAA2D;AAC3D,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,EAAE;AACF,sDAAsD;AACtD,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,4CAA4C;AAC5C,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,UAA2B,EAAE,UAAU,EAAE,IAAI,EAAE;IAC9F,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1D,OAAO,IAAI;SACT,GAAG,CAAC,IAAI,CAAC,EAAE;QACX,IAAI,IAAI,YAAY,MAAM,KAAK,KAAK,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,gCAAgC;QAChC,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;AAClC,CAAC","sourcesContent":["import type { SfEncodeOptions } from '../SfEncodeOptions.js';\nimport { SfItem } from '../SfItem.js';\nimport type { SfMember } from '../SfMember.js';\nimport { LIST } from '../utils/LIST.js';\nimport { serializeError } from './serializeError.js';\nimport { serializeInnerList } from './serializeInnerList.js';\nimport { serializeItem } from './serializeItem.js';\n\n// 4.1.1. Serializing a List\n//\n// Given an array of (member_value, parameters) tuples as input_list,\n// return an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each (member_value, parameters) of input_list:\n//\n// 1. If member_value is an array, append the result of running\n// Serializing an Inner List (Section 4.1.1.1) with\n// (member_value, parameters) to output.\n//\n// 2. Otherwise, append the result of running Serializing an Item\n// (Section 4.1.3) with (member_value, parameters) to output.\n//\n// 3. If more member_values remain in input_list:\n//\n// 1. Append \",\" to output.\n//\n// 2. Append a single SP to output.\n//\n// 3. Return output.\nexport function serializeList(list: SfMember[], options: SfEncodeOptions = { whitespace: true }): string {\n\tif (Array.isArray(list) === false) {\n\t\tthrow serializeError(list, LIST);\n\t}\n\n\tconst optionalWhiteSpace = options?.whitespace ? ' ' : '';\n\n\treturn list\n\t\t.map(item => {\n\t\t\tif (item instanceof SfItem === false) {\n\t\t\t\titem = new SfItem(item);\n\t\t\t}\n\n\t\t\t// TODO: Fix this type assertion\n\t\t\tconst i = item as any;\n\t\t\tif (Array.isArray(i.value)) {\n\t\t\t\treturn serializeInnerList(i);\n\t\t\t}\n\n\t\t\treturn serializeItem(i);\n\t\t})\n\t\t.join(`,${optionalWhiteSpace}`);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeParams.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeParams.ts"],"names":[],"mappings":"AA2BA,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAcpE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { serializeBareItem } from './serializeBareItem.js';
|
|
2
|
+
import { serializeKey } from './serializeKey.js';
|
|
3
|
+
// 4.1.1.2. Serializing Parameters
|
|
4
|
+
//
|
|
5
|
+
// Given an ordered Dictionary as input_parameters (each member having a
|
|
6
|
+
// param_name and a param_value), return an ASCII string suitable for
|
|
7
|
+
// use in a HTTP field value.
|
|
8
|
+
//
|
|
9
|
+
// 1. Let output be an empty string.
|
|
10
|
+
//
|
|
11
|
+
// 2. For each param_name with a value of param_value in
|
|
12
|
+
// input_parameters:
|
|
13
|
+
//
|
|
14
|
+
// 1. Append ";" to output.
|
|
15
|
+
//
|
|
16
|
+
// 2. Append the result of running Serializing a Key
|
|
17
|
+
// (Section 4.1.1.3) with param_name to output.
|
|
18
|
+
//
|
|
19
|
+
// 3. If param_value is not Boolean true:
|
|
20
|
+
//
|
|
21
|
+
// 1. Append "=" to output.
|
|
22
|
+
//
|
|
23
|
+
// 2. Append the result of running Serializing a bare Item
|
|
24
|
+
// (Section 4.1.3.1) with param_value to output.
|
|
25
|
+
//
|
|
26
|
+
// 3. Return output.
|
|
27
|
+
export function serializeParams(params) {
|
|
28
|
+
if (params == null) {
|
|
29
|
+
return '';
|
|
30
|
+
}
|
|
31
|
+
return Object.entries(params)
|
|
32
|
+
.map(([key, value]) => {
|
|
33
|
+
if (value === true) {
|
|
34
|
+
return `;${serializeKey(key)}`; // omit true
|
|
35
|
+
}
|
|
36
|
+
return `;${serializeKey(key)}=${serializeBareItem(value)}`;
|
|
37
|
+
})
|
|
38
|
+
.join('');
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=serializeParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeParams.js","sourceRoot":"","sources":["../../src/serialize/serializeParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,mCAAmC;AACnC,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,6BAA6B;AAC7B,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,yDAAyD;AACzD,wBAAwB;AACxB,EAAE;AACF,gCAAgC;AAChC,EAAE;AACF,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,8CAA8C;AAC9C,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,mEAAmE;AACnE,4DAA4D;AAC5D,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,eAAe,CAAC,MAA4B;IAC3D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY;QAC7C,CAAC;QAED,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACZ,CAAC","sourcesContent":["import { serializeBareItem } from './serializeBareItem.js';\nimport { serializeKey } from './serializeKey.js';\n\n// 4.1.1.2. Serializing Parameters\n//\n// Given an ordered Dictionary as input_parameters (each member having a\n// param_name and a param_value), return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each param_name with a value of param_value in\n// input_parameters:\n//\n// 1. Append \";\" to output.\n//\n// 2. Append the result of running Serializing a Key\n// (Section 4.1.1.3) with param_name to output.\n//\n// 3. If param_value is not Boolean true:\n//\n// 1. Append \"=\" to output.\n//\n// 2. Append the result of running Serializing a bare Item\n// (Section 4.1.3.1) with param_value to output.\n//\n// 3. Return output.\nexport function serializeParams(params?: Record<string, any>): string {\n\tif (params == null) {\n\t\treturn '';\n\t}\n\n\treturn Object.entries(params)\n\t\t.map(([key, value]) => {\n\t\t\tif (value === true) {\n\t\t\t\treturn `;${serializeKey(key)}`; // omit true\n\t\t\t}\n\n\t\t\treturn `;${serializeKey(key)}=${serializeBareItem(value)}`;\n\t\t})\n\t\t.join('');\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeString.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeString.ts"],"names":[],"mappings":"AA4BA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAM5C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { STRING } from '../utils/STRING.js';
|
|
2
|
+
import { STRING_REGEX } from '../utils/STRING_REGEX.js';
|
|
3
|
+
import { serializeError } from './serializeError.js';
|
|
4
|
+
// 4.1.6. Serializing a String
|
|
5
|
+
//
|
|
6
|
+
// Given a String as input_string, return an ASCII string suitable for
|
|
7
|
+
// use in a HTTP field value.
|
|
8
|
+
//
|
|
9
|
+
// 1. Convert input_string into a sequence of ASCII characters; if
|
|
10
|
+
// conversion fails, fail serialization.
|
|
11
|
+
//
|
|
12
|
+
// 2. If input_string contains characters in the range %x00-1f or %x7f
|
|
13
|
+
// (i.e., not in VCHAR or SP), fail serialization.
|
|
14
|
+
//
|
|
15
|
+
// 3. Let output be the string DQUOTE.
|
|
16
|
+
//
|
|
17
|
+
// 4. For each character char in input_string:
|
|
18
|
+
//
|
|
19
|
+
// 1. If char is "\" or DQUOTE:
|
|
20
|
+
//
|
|
21
|
+
// 1. Append "\" to output.
|
|
22
|
+
//
|
|
23
|
+
// 2. Append char to output.
|
|
24
|
+
//
|
|
25
|
+
// 5. Append DQUOTE to output.
|
|
26
|
+
//
|
|
27
|
+
// 6. Return output.
|
|
28
|
+
export function serializeString(value) {
|
|
29
|
+
if (STRING_REGEX.test(value)) {
|
|
30
|
+
throw serializeError(value, STRING);
|
|
31
|
+
}
|
|
32
|
+
return `"${value.replace(/\\/g, `\\\\`).replace(/"/g, `\\"`)}"`;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=serializeString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeString.js","sourceRoot":"","sources":["../../src/serialize/serializeString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,+BAA+B;AAC/B,EAAE;AACF,sEAAsE;AACtE,6BAA6B;AAC7B,EAAE;AACF,mEAAmE;AACnE,4CAA4C;AAC5C,EAAE;AACF,uEAAuE;AACvE,sDAAsD;AACtD,EAAE;AACF,uCAAuC;AACvC,EAAE;AACF,+CAA+C;AAC/C,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,iCAAiC;AACjC,EAAE;AACF,+BAA+B;AAC/B,EAAE;AACF,qBAAqB;AACrB,MAAM,UAAU,eAAe,CAAC,KAAa;IAC5C,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACjE,CAAC","sourcesContent":["import { STRING } from '../utils/STRING.js';\nimport { STRING_REGEX } from '../utils/STRING_REGEX.js';\nimport { serializeError } from './serializeError.js';\n\n// 4.1.6. Serializing a String\n//\n// Given a String as input_string, return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. Convert input_string into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If input_string contains characters in the range %x00-1f or %x7f\n// (i.e., not in VCHAR or SP), fail serialization.\n//\n// 3. Let output be the string DQUOTE.\n//\n// 4. For each character char in input_string:\n//\n// 1. If char is \"\\\" or DQUOTE:\n//\n// 1. Append \"\\\" to output.\n//\n// 2. Append char to output.\n//\n// 5. Append DQUOTE to output.\n//\n// 6. Return output.\nexport function serializeString(value: string) {\n\tif (STRING_REGEX.test(value)) {\n\t\tthrow serializeError(value, STRING);\n\t}\n\n\treturn `\"${value.replace(/\\\\/g, `\\\\\\\\`).replace(/\"/g, `\\\\\"`)}\"`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeToken.d.ts","sourceRoot":"","sources":["../../src/serialize/serializeToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAsB7C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;AACtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { symbolToStr } from '../utils/symbolToStr.js';
|
|
2
|
+
import { TOKEN } from '../utils/TOKEN.js';
|
|
3
|
+
import { serializeError } from './serializeError.js';
|
|
4
|
+
export function serializeToken(token) {
|
|
5
|
+
const value = symbolToStr(token);
|
|
6
|
+
if (/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(value) === false) {
|
|
7
|
+
throw serializeError(value, TOKEN);
|
|
8
|
+
}
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=serializeToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeToken.js","sourceRoot":"","sources":["../../src/serialize/serializeToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAqBrD,MAAM,UAAU,cAAc,CAAC,KAAuB;IACrD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACpE,MAAM,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["import type { SfToken } from '../SfToken.js';\nimport { symbolToStr } from '../utils/symbolToStr.js';\nimport { TOKEN } from '../utils/TOKEN.js';\nimport { serializeError } from './serializeError.js';\n\n// 4.1.7. Serializing a Token\n//\n// Given a Token as input_token, return an ASCII string suitable for use\n// in a HTTP field value.\n//\n// 1. Convert input_token into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If the first character of input_token is not ALPHA or \"*\", or the\n// remaining portion contains a character not in tchar, \":\" or \"/\",\n// fail serialization.\n//\n// 3. Let output be an empty string.\n//\n// 4. Append input_token to output.\n//\n// 5. Return output.\nexport function serializeToken(token: symbol): string;\nexport function serializeToken(token: SfToken): string;\nexport function serializeToken(token: symbol | SfToken) {\n\tconst value = symbolToStr(token);\n\tif (/^([a-zA-Z*])([!#$%&'*+\\-.^_`|~\\w:/]*)$/.test(value) === false) {\n\t\tthrow serializeError(value, TOKEN);\n\t}\n\treturn value;\n}\n"]}
|