@outfoxx/sunday 1.0.9 → 1.1.0-alpha.11
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.txt +203 -0
- package/README.md +35 -2
- package/dist/any-type.d.ts +2 -0
- package/dist/any-type.js +13 -0
- package/dist/any-type.js.map +1 -1
- package/dist/class-type.d.ts +2 -2
- package/dist/class-type.js +13 -0
- package/dist/class-type.js.map +1 -1
- package/dist/date-time-types.d.ts +2 -7
- package/dist/date-time-types.js +15 -4
- package/dist/date-time-types.js.map +1 -1
- package/dist/event-parser.d.ts +17 -0
- package/dist/event-parser.js +153 -0
- package/dist/event-parser.js.map +1 -0
- package/dist/fetch-event-source.d.ts +12 -10
- package/dist/fetch-event-source.js +154 -138
- package/dist/fetch-event-source.js.map +1 -1
- package/dist/fetch-request-factory.d.ts +10 -5
- package/dist/fetch-request-factory.js +100 -71
- package/dist/fetch-request-factory.js.map +1 -1
- package/dist/fetch.d.ts +7 -1
- package/dist/fetch.js +74 -8
- package/dist/fetch.js.map +1 -1
- package/dist/header-parameters.d.ts +3 -0
- package/dist/header-parameters.js +53 -0
- package/dist/header-parameters.js.map +1 -0
- package/dist/index.d.ts +12 -12
- package/dist/index.js +25 -12
- package/dist/index.js.map +1 -1
- package/dist/logger.js +13 -0
- package/dist/logger.js.map +1 -1
- package/dist/{binary-decoder.d.ts → media-type-codecs/binary-decoder.d.ts} +2 -2
- package/dist/media-type-codecs/binary-decoder.js +29 -0
- package/dist/media-type-codecs/binary-decoder.js.map +1 -0
- package/dist/{binary-encoder.d.ts → media-type-codecs/binary-encoder.d.ts} +0 -0
- package/dist/media-type-codecs/binary-encoder.js +26 -0
- package/dist/media-type-codecs/binary-encoder.js.map +1 -0
- package/dist/media-type-codecs/cbor-decoder.d.ts +39 -0
- package/dist/media-type-codecs/cbor-decoder.js +426 -0
- package/dist/media-type-codecs/cbor-decoder.js.map +1 -0
- package/dist/media-type-codecs/cbor-encoder.d.ts +43 -0
- package/dist/media-type-codecs/cbor-encoder.js +239 -0
- package/dist/media-type-codecs/cbor-encoder.js.map +1 -0
- package/dist/media-type-codecs/cbor-tags.d.ts +4 -0
- package/dist/media-type-codecs/cbor-tags.js +18 -0
- package/dist/media-type-codecs/cbor-tags.js.map +1 -0
- package/dist/media-type-codecs/json-decoder.d.ts +39 -0
- package/dist/media-type-codecs/json-decoder.js +380 -0
- package/dist/media-type-codecs/json-decoder.js.map +1 -0
- package/dist/media-type-codecs/json-encoder.d.ts +44 -0
- package/dist/media-type-codecs/json-encoder.js +276 -0
- package/dist/media-type-codecs/json-encoder.js.map +1 -0
- package/dist/media-type-codecs/media-type-decoder.d.ts +11 -0
- package/dist/media-type-codecs/media-type-decoder.js +19 -0
- package/dist/media-type-codecs/media-type-decoder.js.map +1 -0
- package/dist/{media-type-decoders.d.ts → media-type-codecs/media-type-decoders.d.ts} +5 -4
- package/dist/media-type-codecs/media-type-decoders.js +53 -0
- package/dist/media-type-codecs/media-type-decoders.js.map +1 -0
- package/dist/{media-type-encoder.d.ts → media-type-codecs/media-type-encoder.d.ts} +5 -1
- package/dist/media-type-codecs/media-type-encoder.js +24 -0
- package/dist/media-type-codecs/media-type-encoder.js.map +1 -0
- package/dist/{media-type-encoders.d.ts → media-type-codecs/media-type-encoders.d.ts} +5 -4
- package/dist/media-type-codecs/media-type-encoders.js +55 -0
- package/dist/media-type-codecs/media-type-encoders.js.map +1 -0
- package/dist/{url-encoder.d.ts → media-type-codecs/www-form-url-encoder.d.ts} +8 -8
- package/dist/{url-encoder.js → media-type-codecs/www-form-url-encoder.js} +51 -37
- package/dist/media-type-codecs/www-form-url-encoder.js.map +1 -0
- package/dist/media-type.d.ts +91 -13
- package/dist/media-type.js +286 -15
- package/dist/media-type.js.map +1 -1
- package/dist/problem.d.ts +24 -9
- package/dist/problem.js +153 -6
- package/dist/problem.js.map +1 -1
- package/dist/request-factory.d.ts +10 -10
- package/dist/request-factory.js +13 -0
- package/dist/request-factory.js.map +1 -1
- package/dist/sunday-error.d.ts +11 -0
- package/dist/sunday-error.js +31 -0
- package/dist/sunday-error.js.map +1 -0
- package/dist/url-template.js +13 -0
- package/dist/url-template.js.map +1 -1
- package/dist/util/any.d.ts +2 -0
- package/dist/util/any.js +24 -0
- package/dist/util/any.js.map +1 -0
- package/dist/util/base64.js +13 -0
- package/dist/util/base64.js.map +1 -1
- package/dist/util/error.d.ts +2 -0
- package/dist/util/error.js +26 -0
- package/dist/util/error.js.map +1 -0
- package/dist/util/hex.js +16 -2
- package/dist/util/hex.js.map +1 -1
- package/dist/util/rxjs.d.ts +3 -0
- package/dist/util/rxjs.js +22 -5
- package/dist/util/rxjs.js.map +1 -1
- package/dist/util/stream-rxjs.js +13 -0
- package/dist/util/stream-rxjs.js.map +1 -1
- package/dist/util/temporal.d.ts +2 -0
- package/dist/util/temporal.js +31 -0
- package/dist/util/temporal.js.map +1 -0
- package/package.json +29 -22
- package/src/any-type.ts +18 -0
- package/src/class-type.ts +20 -2
- package/src/date-time-types.ts +35 -8
- package/src/event-parser.ts +204 -0
- package/src/fetch-event-source.ts +163 -159
- package/src/fetch-request-factory.ts +142 -100
- package/src/fetch.ts +79 -14
- package/src/header-parameters.ts +66 -0
- package/src/index.ts +26 -12
- package/src/logger.ts +14 -0
- package/src/media-type-codecs/binary-decoder.ts +38 -0
- package/src/media-type-codecs/binary-encoder.ts +33 -0
- package/src/media-type-codecs/cbor-decoder.ts +529 -0
- package/src/media-type-codecs/cbor-encoder.ts +321 -0
- package/src/media-type-codecs/cbor-tags.ts +18 -0
- package/src/media-type-codecs/json-decoder.ts +484 -0
- package/src/media-type-codecs/json-encoder.ts +342 -0
- package/src/media-type-codecs/media-type-decoder.ts +34 -0
- package/src/media-type-codecs/media-type-decoders.ts +81 -0
- package/src/media-type-codecs/media-type-encoder.ts +45 -0
- package/src/media-type-codecs/media-type-encoders.ts +83 -0
- package/src/media-type-codecs/www-form-url-encoder.ts +193 -0
- package/src/media-type.ts +340 -22
- package/src/problem.ts +158 -12
- package/src/request-factory.ts +35 -12
- package/src/sunday-error.ts +51 -0
- package/src/url-template.ts +14 -0
- package/src/util/any.ts +24 -0
- package/src/util/base64.ts +14 -0
- package/src/util/error.ts +28 -0
- package/src/util/hex.ts +17 -2
- package/src/util/rxjs.ts +30 -5
- package/src/util/stream-rxjs.ts +14 -0
- package/src/util/temporal.ts +32 -0
- package/dist/binary-decoder.js +0 -16
- package/dist/binary-decoder.js.map +0 -1
- package/dist/binary-encoder.js +0 -13
- package/dist/binary-encoder.js.map +0 -1
- package/dist/cbor-decoder.d.ts +0 -15
- package/dist/cbor-decoder.js +0 -126
- package/dist/cbor-decoder.js.map +0 -1
- package/dist/cbor-encoder.d.ts +0 -29
- package/dist/cbor-encoder.js +0 -81
- package/dist/cbor-encoder.js.map +0 -1
- package/dist/cbor-tags.d.ts +0 -3
- package/dist/cbor-tags.js +0 -4
- package/dist/cbor-tags.js.map +0 -1
- package/dist/http-error.d.ts +0 -10
- package/dist/http-error.js +0 -45
- package/dist/http-error.js.map +0 -1
- package/dist/json-decoder.d.ts +0 -31
- package/dist/json-decoder.js +0 -139
- package/dist/json-decoder.js.map +0 -1
- package/dist/json-encoder.d.ts +0 -35
- package/dist/json-encoder.js +0 -134
- package/dist/json-encoder.js.map +0 -1
- package/dist/media-type-decoder.d.ts +0 -4
- package/dist/media-type-decoder.js +0 -2
- package/dist/media-type-decoder.js.map +0 -1
- package/dist/media-type-decoders.js +0 -40
- package/dist/media-type-decoders.js.map +0 -1
- package/dist/media-type-encoder.js +0 -6
- package/dist/media-type-encoder.js.map +0 -1
- package/dist/media-type-encoders.js +0 -42
- package/dist/media-type-encoders.js.map +0 -1
- package/dist/url-encoder.js.map +0 -1
- package/src/binary-decoder.ts +0 -24
- package/src/binary-encoder.ts +0 -19
- package/src/cbor-decoder.ts +0 -148
- package/src/cbor-encoder.ts +0 -95
- package/src/cbor-tags.ts +0 -3
- package/src/http-error.ts +0 -55
- package/src/json-decoder.ts +0 -164
- package/src/json-encoder.ts +0 -162
- package/src/media-type-decoder.ts +0 -5
- package/src/media-type-decoders.ts +0 -59
- package/src/media-type-encoder.ts +0 -16
- package/src/media-type-encoders.ts +0 -61
- package/src/url-encoder.ts +0 -173
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { ChronoField, DateTimeFormatter, DateTimeFormatterBuilder, Instant, LocalDate, LocalDateTime, LocalTime, OffsetDateTime, OffsetTime, ResolverStyle, ZonedDateTime, } from '@js-joda/core';
|
|
15
|
+
import { JsonIncludeType, JsonStringifier } from '@outfoxx/jackson-js';
|
|
16
|
+
import 'reflect-metadata';
|
|
17
|
+
import { Base64 } from '../util/base64';
|
|
18
|
+
import { encodeSeconds, secondsToNumber } from '../util/temporal';
|
|
19
|
+
export class JSONEncoder {
|
|
20
|
+
constructor(dateEncoding) {
|
|
21
|
+
this.dateEncoding = dateEncoding;
|
|
22
|
+
this.stringifier = new JsonStringifier();
|
|
23
|
+
this.instantSerializer = (_, value) => {
|
|
24
|
+
if (value == null) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
switch (this.dateEncoding) {
|
|
28
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
29
|
+
return DateTimeFormatter.ISO_INSTANT.format(value);
|
|
30
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
31
|
+
return value.toEpochMilli();
|
|
32
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
33
|
+
return secondsToNumber(value.epochSecond(), value.nano());
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
this.zonedDateTimeSerializer = (_, value) => {
|
|
37
|
+
if (value == null) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
switch (this.dateEncoding) {
|
|
41
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
42
|
+
return DateTimeFormatter.ISO_ZONED_DATE_TIME.format(value);
|
|
43
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
44
|
+
return value.toInstant().toEpochMilli();
|
|
45
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
46
|
+
const instant = value.toInstant();
|
|
47
|
+
return secondsToNumber(instant.epochSecond(), instant.nano());
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
this.offsetDateTimeSerializer = (_, value) => {
|
|
51
|
+
if (value == null) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
switch (this.dateEncoding) {
|
|
55
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
56
|
+
return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value);
|
|
57
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
58
|
+
return value.toInstant().toEpochMilli();
|
|
59
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
60
|
+
const instant = value.toInstant();
|
|
61
|
+
return secondsToNumber(instant.epochSecond(), instant.nano());
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
this.offsetTimeFormatter = new DateTimeFormatterBuilder()
|
|
65
|
+
.parseCaseInsensitive()
|
|
66
|
+
.append(DateTimeFormatter.ISO_LOCAL_TIME)
|
|
67
|
+
.appendOffsetId()
|
|
68
|
+
.toFormatter(ResolverStyle.STRICT);
|
|
69
|
+
this.offsetTimeSerializer = (_, value) => {
|
|
70
|
+
if (value == null) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
switch (this.dateEncoding) {
|
|
74
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
75
|
+
return this.offsetTimeFormatter.format(value);
|
|
76
|
+
default:
|
|
77
|
+
return [
|
|
78
|
+
value.hour(),
|
|
79
|
+
value.minute(),
|
|
80
|
+
...encodeSeconds(value.second(), this.dateEncoding ==
|
|
81
|
+
JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH
|
|
82
|
+
? value.get(ChronoField.MILLI_OF_SECOND)
|
|
83
|
+
: value.nano()),
|
|
84
|
+
value.offset().toString(),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
this.localDateTimeSerializer = (_, value) => {
|
|
89
|
+
if (value == null) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
switch (this.dateEncoding) {
|
|
93
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
94
|
+
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value);
|
|
95
|
+
default:
|
|
96
|
+
return [
|
|
97
|
+
value.year(),
|
|
98
|
+
value.monthValue(),
|
|
99
|
+
value.dayOfMonth(),
|
|
100
|
+
value.hour(),
|
|
101
|
+
value.minute(),
|
|
102
|
+
...encodeSeconds(value.second(), this.dateEncoding ==
|
|
103
|
+
JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH
|
|
104
|
+
? value.get(ChronoField.MILLI_OF_SECOND)
|
|
105
|
+
: value.nano()),
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
this.localDateSerializer = (_, value) => {
|
|
110
|
+
if (value == null) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
switch (this.dateEncoding) {
|
|
114
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
115
|
+
return DateTimeFormatter.ISO_LOCAL_DATE.format(value);
|
|
116
|
+
default:
|
|
117
|
+
return [value.year(), value.monthValue(), value.dayOfMonth()];
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
this.localTimeSerializer = (_, value) => {
|
|
121
|
+
if (value == null) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
switch (this.dateEncoding) {
|
|
125
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
126
|
+
return DateTimeFormatter.ISO_LOCAL_TIME.format(value);
|
|
127
|
+
default:
|
|
128
|
+
return [
|
|
129
|
+
value.hour(),
|
|
130
|
+
value.minute(),
|
|
131
|
+
...encodeSeconds(value.second(), this.dateEncoding ==
|
|
132
|
+
JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH
|
|
133
|
+
? value.get(ChronoField.MILLI_OF_SECOND)
|
|
134
|
+
: value.nano()),
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
this.dateSerializer = (_, value) => {
|
|
139
|
+
if (value == null) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
switch (this.dateEncoding) {
|
|
143
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
144
|
+
return value.toISOString();
|
|
145
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
146
|
+
return value.getTime();
|
|
147
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
148
|
+
return value.getTime() / 1000.0;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
this.urlSerializer = (_, value) => {
|
|
152
|
+
if (value == null) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
return value.toString();
|
|
156
|
+
};
|
|
157
|
+
this.arrayBufferSerializer = (_, value) => {
|
|
158
|
+
if (value == null) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
return Base64.encode(value);
|
|
162
|
+
};
|
|
163
|
+
this.customSerializers = [
|
|
164
|
+
{
|
|
165
|
+
type: () => Date,
|
|
166
|
+
mapper: this.dateSerializer,
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: () => Instant,
|
|
170
|
+
mapper: this.instantSerializer,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: () => ZonedDateTime,
|
|
174
|
+
mapper: this.zonedDateTimeSerializer,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: () => OffsetDateTime,
|
|
178
|
+
mapper: this.offsetDateTimeSerializer,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: () => OffsetTime,
|
|
182
|
+
mapper: this.offsetTimeSerializer,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
type: () => LocalDateTime,
|
|
186
|
+
mapper: this.localDateTimeSerializer,
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
type: () => LocalDate,
|
|
190
|
+
mapper: this.localDateSerializer,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
type: () => LocalTime,
|
|
194
|
+
mapper: this.localTimeSerializer,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: () => URL,
|
|
198
|
+
mapper: this.urlSerializer,
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: () => ArrayBuffer,
|
|
202
|
+
mapper: this.arrayBufferSerializer,
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
}
|
|
206
|
+
static get default() {
|
|
207
|
+
return new JSONEncoder(JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH);
|
|
208
|
+
}
|
|
209
|
+
encode(value, type, includeNulls = false) {
|
|
210
|
+
var _a;
|
|
211
|
+
// Use natural type when subtypes exist
|
|
212
|
+
if (Reflect.hasMetadata('jackson:defaultContextGroup:JsonSubTypes',
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
214
|
+
(_a = value.constructor) !== null && _a !== void 0 ? _a : {})) {
|
|
215
|
+
type = [Object];
|
|
216
|
+
}
|
|
217
|
+
return this.stringifier.stringify(value, {
|
|
218
|
+
serializers: this.customSerializers,
|
|
219
|
+
features: {
|
|
220
|
+
serialization: {
|
|
221
|
+
DEFAULT_PROPERTY_INCLUSION: {
|
|
222
|
+
value: includeNulls
|
|
223
|
+
? JsonIncludeType.ALWAYS
|
|
224
|
+
: JsonIncludeType.NON_NULL,
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
mainCreator: () => type !== null && type !== void 0 ? type : [Object],
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
encodeObject(value, type, includeNulls = false) {
|
|
232
|
+
var _a;
|
|
233
|
+
// Use natural type when subtypes exist
|
|
234
|
+
if (Reflect.hasMetadata('jackson:defaultContextGroup:JsonSubTypes',
|
|
235
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
236
|
+
(_a = value.constructor) !== null && _a !== void 0 ? _a : {})) {
|
|
237
|
+
type = [Object];
|
|
238
|
+
}
|
|
239
|
+
return this.stringifier.transform(value, {
|
|
240
|
+
serializers: this.customSerializers,
|
|
241
|
+
features: {
|
|
242
|
+
serialization: {
|
|
243
|
+
DEFAULT_PROPERTY_INCLUSION: {
|
|
244
|
+
value: includeNulls
|
|
245
|
+
? JsonIncludeType.ALWAYS
|
|
246
|
+
: JsonIncludeType.NON_NULL,
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
mainCreator: () => type !== null && type !== void 0 ? type : [Object],
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
(function (JSONEncoder) {
|
|
255
|
+
/**
|
|
256
|
+
* Configures how temporal values are encoded.
|
|
257
|
+
*/
|
|
258
|
+
let DateEncoding;
|
|
259
|
+
(function (DateEncoding) {
|
|
260
|
+
/**
|
|
261
|
+
* Encode temporal values numerically using seconds with decimal
|
|
262
|
+
* sub-second precision.
|
|
263
|
+
*/
|
|
264
|
+
DateEncoding[DateEncoding["DECIMAL_SECONDS_SINCE_EPOCH"] = 0] = "DECIMAL_SECONDS_SINCE_EPOCH";
|
|
265
|
+
/**
|
|
266
|
+
* Encode temporal values numerically using integer milliseconds.
|
|
267
|
+
*/
|
|
268
|
+
DateEncoding[DateEncoding["MILLISECONDS_SINCE_EPOCH"] = 1] = "MILLISECONDS_SINCE_EPOCH";
|
|
269
|
+
/**
|
|
270
|
+
* Encode temporal values values as an ISO-8601-formatted string (in
|
|
271
|
+
* RFC 3339 format). This is the default behavior.
|
|
272
|
+
*/
|
|
273
|
+
DateEncoding[DateEncoding["ISO8601"] = 2] = "ISO8601";
|
|
274
|
+
})(DateEncoding = JSONEncoder.DateEncoding || (JSONEncoder.DateEncoding = {}));
|
|
275
|
+
})(JSONEncoder || (JSONEncoder = {}));
|
|
276
|
+
//# sourceMappingURL=json-encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-encoder.js","sourceRoot":"","sources":["../../src/media-type-codecs/json-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AnyType } from '../any-type';
|
|
2
|
+
export interface MediaTypeDecoder {
|
|
3
|
+
decode<T>(response: Response, type: AnyType): Promise<T>;
|
|
4
|
+
}
|
|
5
|
+
export interface TextMediaTypeDecoder extends MediaTypeDecoder {
|
|
6
|
+
decodeText<T>(text: string, type: AnyType): T;
|
|
7
|
+
}
|
|
8
|
+
export interface StructuredMediaTypeDecoder extends MediaTypeDecoder {
|
|
9
|
+
decodeObject<T>(data: unknown, type: AnyType): T;
|
|
10
|
+
}
|
|
11
|
+
export declare function isStructuredMediaTypeDecoder(decoder: MediaTypeDecoder | StructuredMediaTypeDecoder | undefined): decoder is StructuredMediaTypeDecoder;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export function isStructuredMediaTypeDecoder(decoder) {
|
|
15
|
+
var _a;
|
|
16
|
+
const rec = decoder;
|
|
17
|
+
return (_a = !!rec.decodeObject) !== null && _a !== void 0 ? _a : false;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=media-type-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-decoder.js","sourceRoot":"","sources":["../../src/media-type-codecs/media-type-decoder.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAgBjC,MAAM,UAAU,4BAA4B,CAC1C,OAAkE;;IAElE,MAAM,GAAG,GAAG,OAA6C,CAAC;IAC1D,OAAO,MAAA,CAAC,CAAC,GAAG,CAAC,YAAY,mCAAI,KAAK,CAAC;AACrC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { MediaType } from '../media-type';
|
|
1
2
|
import { MediaTypeDecoder } from './media-type-decoder';
|
|
2
3
|
export interface MediaTypeDecodersBuilder {
|
|
3
4
|
addDefaults(): MediaTypeDecodersBuilder;
|
|
4
|
-
add(mediaType:
|
|
5
|
+
add(mediaType: MediaType, decoder: MediaTypeDecoder): MediaTypeDecodersBuilder;
|
|
5
6
|
build(): MediaTypeDecoders;
|
|
6
7
|
}
|
|
7
8
|
export interface MediaTypeDecodersBuilderConstructor {
|
|
@@ -11,7 +12,7 @@ export declare class MediaTypeDecoders {
|
|
|
11
12
|
private decoders;
|
|
12
13
|
static Builder: MediaTypeDecodersBuilderConstructor;
|
|
13
14
|
static DEFAULT: MediaTypeDecoders;
|
|
14
|
-
constructor(decoders: Map<
|
|
15
|
-
supports(mediaType:
|
|
16
|
-
find(mediaType:
|
|
15
|
+
constructor(decoders: Map<MediaType, MediaTypeDecoder>);
|
|
16
|
+
supports(mediaType: MediaType): boolean;
|
|
17
|
+
find(mediaType: MediaType): MediaTypeDecoder;
|
|
17
18
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { BinaryDecoder } from './binary-decoder';
|
|
15
|
+
import { CBORDecoder } from './cbor-decoder';
|
|
16
|
+
import { JSONDecoder } from './json-decoder';
|
|
17
|
+
import { MediaType } from '../media-type';
|
|
18
|
+
export class MediaTypeDecoders {
|
|
19
|
+
constructor(decoders) {
|
|
20
|
+
this.decoders = decoders;
|
|
21
|
+
}
|
|
22
|
+
supports(mediaType) {
|
|
23
|
+
return Array.from(this.decoders.keys()).some((key) => key.compatible(mediaType));
|
|
24
|
+
}
|
|
25
|
+
find(mediaType) {
|
|
26
|
+
const found = Array.from(this.decoders.entries()).find(([type]) => type.compatible(mediaType));
|
|
27
|
+
if (!found) {
|
|
28
|
+
throw Error(`Unsupported media type - ${mediaType}`);
|
|
29
|
+
}
|
|
30
|
+
return found[1];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
MediaTypeDecoders.Builder = class Builder {
|
|
34
|
+
constructor() {
|
|
35
|
+
this.decoders = new Map();
|
|
36
|
+
}
|
|
37
|
+
add(mediaType, decoder) {
|
|
38
|
+
this.decoders.set(mediaType, decoder);
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
addDefaults() {
|
|
42
|
+
return this.add(MediaType.JSON, JSONDecoder.default)
|
|
43
|
+
.add(MediaType.OctetStream, new BinaryDecoder())
|
|
44
|
+
.add(MediaType.CBOR, CBORDecoder.default);
|
|
45
|
+
}
|
|
46
|
+
build() {
|
|
47
|
+
return new MediaTypeDecoders(this.decoders);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
MediaTypeDecoders.DEFAULT = new MediaTypeDecoders.Builder()
|
|
51
|
+
.addDefaults()
|
|
52
|
+
.build();
|
|
53
|
+
//# sourceMappingURL=media-type-decoders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-decoders.js","sourceRoot":"","sources":["../../src/media-type-codecs/media-type-decoders.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB1C,MAAM,OAAO,iBAAiB;IA6B5B,YAAoB,QAA0C;QAA1C,aAAQ,GAAR,QAAQ,CAAkC;IAAG,CAAC;IAElE,QAAQ,CAAC,SAAoB;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAoB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;;AA5CM,yBAAO,GAAwC,MAAM,OAAO;IAAb;QAGpD,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAmBpD,CAAC;IAjBC,GAAG,CACD,SAAoB,EACpB,OAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aACjD,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE,CAAC;aAC/C,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC;AAEK,yBAAO,GAAsB,IAAI,iBAAiB,CAAC,OAAO,EAAE;KAChE,WAAW,EAAE;KACb,KAAK,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyType } from '
|
|
1
|
+
import { AnyType } from '../any-type';
|
|
2
2
|
export interface MediaTypeEncoder {
|
|
3
3
|
encode<T = unknown>(value: T, type: AnyType | undefined): BodyInit;
|
|
4
4
|
}
|
|
@@ -6,3 +6,7 @@ export interface URLQueryParamsEncoder extends MediaTypeEncoder {
|
|
|
6
6
|
encodeQueryString(value: Record<string, unknown>): string;
|
|
7
7
|
}
|
|
8
8
|
export declare function isURLQueryParamsEncoder(encoder: MediaTypeEncoder | URLQueryParamsEncoder | undefined): encoder is URLQueryParamsEncoder;
|
|
9
|
+
export interface StructuredMediaTypeEncoder extends MediaTypeEncoder {
|
|
10
|
+
encodeObject<T = unknown>(value: T, type?: AnyType, includeNulls?: boolean): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare function isStructuredMediaTypeEncoder(encoder: MediaTypeEncoder | StructuredMediaTypeEncoder | undefined): encoder is StructuredMediaTypeEncoder;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export function isURLQueryParamsEncoder(encoder) {
|
|
15
|
+
var _a;
|
|
16
|
+
const rec = encoder;
|
|
17
|
+
return (_a = !!rec.encodeQueryString) !== null && _a !== void 0 ? _a : false;
|
|
18
|
+
}
|
|
19
|
+
export function isStructuredMediaTypeEncoder(encoder) {
|
|
20
|
+
var _a;
|
|
21
|
+
const rec = encoder;
|
|
22
|
+
return (_a = !!rec.encodeObject) !== null && _a !== void 0 ? _a : false;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=media-type-encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-encoder.js","sourceRoot":"","sources":["../../src/media-type-codecs/media-type-encoder.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAYjC,MAAM,UAAU,uBAAuB,CACrC,OAA6D;;IAE7D,MAAM,GAAG,GAAG,OAA6C,CAAC;IAC1D,OAAO,MAAA,CAAC,CAAC,GAAG,CAAC,iBAAiB,mCAAI,KAAK,CAAC;AAC1C,CAAC;AAUD,MAAM,UAAU,4BAA4B,CAC1C,OAAkE;;IAElE,MAAM,GAAG,GAAG,OAA6C,CAAC;IAC1D,OAAO,MAAA,CAAC,CAAC,GAAG,CAAC,YAAY,mCAAI,KAAK,CAAC;AACrC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { MediaType } from '../media-type';
|
|
1
2
|
import { MediaTypeEncoder } from './media-type-encoder';
|
|
2
3
|
export interface MediaTypeEncodersBuilder {
|
|
3
4
|
addDefaults(): MediaTypeEncodersBuilder;
|
|
4
|
-
add(mediaType:
|
|
5
|
+
add(mediaType: MediaType, encoder: MediaTypeEncoder): MediaTypeEncodersBuilder;
|
|
5
6
|
build(): MediaTypeEncoders;
|
|
6
7
|
}
|
|
7
8
|
export interface MediaTypeEncodersBuilderConstructor {
|
|
@@ -11,7 +12,7 @@ export declare class MediaTypeEncoders {
|
|
|
11
12
|
private encoders;
|
|
12
13
|
static Builder: MediaTypeEncodersBuilderConstructor;
|
|
13
14
|
static DEFAULT: MediaTypeEncoders;
|
|
14
|
-
constructor(encoders: Map<
|
|
15
|
-
supports(mediaType:
|
|
16
|
-
find(mediaType:
|
|
15
|
+
constructor(encoders: Map<MediaType, MediaTypeEncoder>);
|
|
16
|
+
supports(mediaType: MediaType): boolean;
|
|
17
|
+
find(mediaType: MediaType): MediaTypeEncoder;
|
|
17
18
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { MediaType } from '../media-type';
|
|
15
|
+
import { BinaryEncoder } from './binary-encoder';
|
|
16
|
+
import { CBOREncoder } from './cbor-encoder';
|
|
17
|
+
import { JSONEncoder } from './json-encoder';
|
|
18
|
+
import { WWWFormUrlEncoder } from './www-form-url-encoder';
|
|
19
|
+
export class MediaTypeEncoders {
|
|
20
|
+
constructor(encoders) {
|
|
21
|
+
this.encoders = encoders;
|
|
22
|
+
}
|
|
23
|
+
supports(mediaType) {
|
|
24
|
+
return Array.from(this.encoders.keys()).some((key) => key.compatible(mediaType));
|
|
25
|
+
}
|
|
26
|
+
find(mediaType) {
|
|
27
|
+
const found = Array.from(this.encoders.entries()).find(([type]) => type.compatible(mediaType));
|
|
28
|
+
if (!found) {
|
|
29
|
+
throw Error(`Unsupported media type - ${mediaType}`);
|
|
30
|
+
}
|
|
31
|
+
return found[1];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
MediaTypeEncoders.Builder = class Builder {
|
|
35
|
+
constructor() {
|
|
36
|
+
this.encoders = new Map();
|
|
37
|
+
}
|
|
38
|
+
add(mediaType, encoder) {
|
|
39
|
+
this.encoders.set(mediaType, encoder);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
addDefaults() {
|
|
43
|
+
return this.add(MediaType.JSON, JSONEncoder.default)
|
|
44
|
+
.add(MediaType.OctetStream, BinaryEncoder.default)
|
|
45
|
+
.add(MediaType.WWWFormUrlEncoded, WWWFormUrlEncoder.default)
|
|
46
|
+
.add(MediaType.CBOR, CBOREncoder.default);
|
|
47
|
+
}
|
|
48
|
+
build() {
|
|
49
|
+
return new MediaTypeEncoders(this.encoders);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
MediaTypeEncoders.DEFAULT = new MediaTypeEncoders.Builder()
|
|
53
|
+
.addDefaults()
|
|
54
|
+
.build();
|
|
55
|
+
//# sourceMappingURL=media-type-encoders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-encoders.js","sourceRoot":"","sources":["../../src/media-type-codecs/media-type-encoders.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAgB3D,MAAM,OAAO,iBAAiB;IA8B5B,YAAoB,QAA0C;QAA1C,aAAQ,GAAR,QAAQ,CAAkC;IAAG,CAAC;IAElE,QAAQ,CAAC,SAAoB;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAoB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;;AA7CM,yBAAO,GAAwC,MAAM,OAAO;IAAb;QAGpD,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAoBpD,CAAC;IAlBC,GAAG,CACD,SAAoB,EACpB,OAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aACjD,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;aACjD,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC;aAC3D,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC;AAEK,yBAAO,GAAsB,IAAI,iBAAiB,CAAC,OAAO,EAAE;KAChE,WAAW,EAAE;KACb,KAAK,EAAE,CAAC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { URLQueryParamsEncoder } from './media-type-encoder';
|
|
2
1
|
import { JsonStringifier } from '@outfoxx/jackson-js';
|
|
3
|
-
|
|
2
|
+
import { URLQueryParamsEncoder } from './media-type-encoder';
|
|
3
|
+
export declare class WWWFormUrlEncoder implements URLQueryParamsEncoder {
|
|
4
4
|
private arrayEncoding;
|
|
5
5
|
private boolEncoding;
|
|
6
6
|
private dateEncoding;
|
|
7
7
|
private json;
|
|
8
8
|
private encoder;
|
|
9
|
-
static get default():
|
|
10
|
-
constructor(arrayEncoding:
|
|
9
|
+
static get default(): WWWFormUrlEncoder;
|
|
10
|
+
constructor(arrayEncoding: WWWFormUrlEncoder.ArrayEncoding, boolEncoding: WWWFormUrlEncoder.BoolEncoding, dateEncoding: WWWFormUrlEncoder.DateEncoding, json?: JsonStringifier<unknown>, encoder?: TextEncoder);
|
|
11
11
|
encode<T = unknown>(value: T): ArrayBuffer | SharedArrayBuffer;
|
|
12
12
|
encodeQueryString(parameters: Record<string, unknown>): string;
|
|
13
|
-
encodeQueryComponent(key: string, value: unknown):
|
|
13
|
+
encodeQueryComponent(key: string, value: unknown): string[];
|
|
14
14
|
}
|
|
15
|
-
export declare namespace
|
|
15
|
+
export declare namespace WWWFormUrlEncoder {
|
|
16
16
|
/**
|
|
17
17
|
* Configures how `Array` parameters are encoded.
|
|
18
18
|
*/
|
|
@@ -44,9 +44,9 @@ export declare namespace URLEncoder {
|
|
|
44
44
|
*/
|
|
45
45
|
enum DateEncoding {
|
|
46
46
|
/**
|
|
47
|
-
* Encode the `Date` as a UNIX timestamp (
|
|
47
|
+
* Encode the `Date` as a UNIX timestamp (decimal seconds since epoch).
|
|
48
48
|
*/
|
|
49
|
-
|
|
49
|
+
DECIMAL_SECONDS_SINCE_EPOCH = 0,
|
|
50
50
|
/**
|
|
51
51
|
* Encode the `Date` as UNIX millisecond timestamp (integer milliseconds since epoch).
|
|
52
52
|
*/
|