@outfoxx/sunday 1.0.8 → 1.1.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -2
- package/dist/any-type.d.ts +2 -0
- package/dist/class-type.d.ts +2 -2
- package/dist/date-time-types.d.ts +2 -7
- package/dist/date-time-types.js +2 -4
- package/dist/date-time-types.js.map +1 -1
- package/dist/event-parser.d.ts +17 -0
- package/dist/event-parser.js +140 -0
- package/dist/event-parser.js.map +1 -0
- package/dist/fetch-event-source.d.ts +12 -10
- package/dist/fetch-event-source.js +141 -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 +87 -71
- package/dist/fetch-request-factory.js.map +1 -1
- package/dist/fetch.d.ts +7 -1
- package/dist/fetch.js +61 -8
- package/dist/fetch.js.map +1 -1
- package/dist/header-parameters.d.ts +3 -0
- package/dist/header-parameters.js +40 -0
- package/dist/header-parameters.js.map +1 -0
- package/dist/index.d.ts +12 -12
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/{binary-decoder.d.ts → media-type-codecs/binary-decoder.d.ts} +2 -2
- package/dist/{binary-decoder.js → media-type-codecs/binary-decoder.js} +0 -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/{binary-encoder.js → media-type-codecs/binary-encoder.js} +0 -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 +413 -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 +226 -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 +5 -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 +367 -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 +263 -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 +6 -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-decoders.js → media-type-codecs/media-type-decoders.js} +6 -6
- 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 +11 -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-encoders.js → media-type-codecs/media-type-encoders.js} +8 -8
- 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} +38 -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 +273 -15
- package/dist/media-type.js.map +1 -1
- package/dist/problem.d.ts +24 -9
- package/dist/problem.js +140 -6
- package/dist/problem.js.map +1 -1
- package/dist/request-factory.d.ts +10 -10
- package/dist/sunday-error.d.ts +11 -0
- package/dist/sunday-error.js +18 -0
- package/dist/sunday-error.js.map +1 -0
- package/dist/util/any.d.ts +2 -0
- package/dist/util/any.js +11 -0
- package/dist/util/any.js.map +1 -0
- package/dist/util/error.d.ts +2 -0
- package/dist/util/error.js +13 -0
- package/dist/util/error.js.map +1 -0
- package/dist/util/hex.js +3 -2
- package/dist/util/hex.js.map +1 -1
- package/dist/util/rxjs.d.ts +3 -0
- package/dist/util/rxjs.js +9 -5
- package/dist/util/rxjs.js.map +1 -1
- package/dist/util/temporal.d.ts +2 -0
- package/dist/util/temporal.js +18 -0
- package/dist/util/temporal.js.map +1 -0
- package/package.json +27 -21
- package/src/any-type.ts +4 -0
- package/src/class-type.ts +6 -2
- package/src/date-time-types.ts +22 -9
- package/src/event-parser.ts +190 -0
- package/src/fetch-event-source.ts +149 -159
- package/src/fetch-request-factory.ts +129 -101
- package/src/fetch.ts +65 -14
- package/src/header-parameters.ts +52 -0
- package/src/index.ts +12 -12
- package/src/{binary-decoder.ts → media-type-codecs/binary-decoder.ts} +3 -3
- package/src/{binary-encoder.ts → media-type-codecs/binary-encoder.ts} +0 -0
- package/src/media-type-codecs/cbor-decoder.ts +515 -0
- package/src/media-type-codecs/cbor-encoder.ts +307 -0
- package/src/media-type-codecs/cbor-tags.ts +4 -0
- package/src/media-type-codecs/json-decoder.ts +470 -0
- package/src/media-type-codecs/json-encoder.ts +328 -0
- package/src/media-type-codecs/media-type-decoder.ts +20 -0
- package/src/{media-type-decoders.ts → media-type-codecs/media-type-decoders.ts} +21 -13
- package/src/media-type-codecs/media-type-encoder.ts +31 -0
- package/src/{media-type-encoders.ts → media-type-codecs/media-type-encoders.ts} +23 -15
- package/src/{url-encoder.ts → media-type-codecs/www-form-url-encoder.ts} +53 -47
- package/src/media-type.ts +326 -22
- package/src/problem.ts +144 -12
- package/src/request-factory.ts +21 -12
- package/src/sunday-error.ts +37 -0
- package/src/util/any.ts +10 -0
- package/src/util/error.ts +14 -0
- package/src/util/hex.ts +3 -2
- package/src/util/rxjs.ts +16 -5
- package/src/util/temporal.ts +18 -0
- package/dist/binary-decoder.js.map +0 -1
- 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 -116
- 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.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.map +0 -1
- package/dist/url-encoder.js.map +0 -1
- 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 -144
- package/src/media-type-decoder.ts +0 -5
- package/src/media-type-encoder.ts +0 -16
package/dist/json-decoder.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { JsonParser } from '@outfoxx/jackson-js';
|
|
2
|
-
import { DateTime } from 'luxon';
|
|
3
|
-
import { Base64 } from './util/base64';
|
|
4
|
-
export class JSONDecoder {
|
|
5
|
-
constructor(numericDateDecoding) {
|
|
6
|
-
this.numericDateDecoding = numericDateDecoding;
|
|
7
|
-
this.parser = new JsonParser();
|
|
8
|
-
this.dateTimeDeserializer = (key, value) => {
|
|
9
|
-
if (value == null) {
|
|
10
|
-
return value;
|
|
11
|
-
}
|
|
12
|
-
if (DateTime.isDateTime(value)) {
|
|
13
|
-
return value;
|
|
14
|
-
}
|
|
15
|
-
if (value instanceof Date) {
|
|
16
|
-
return DateTime.fromJSDate(value, { zone: 'UTC' });
|
|
17
|
-
}
|
|
18
|
-
if (typeof value === 'number') {
|
|
19
|
-
if (this.numericDateDecoding ===
|
|
20
|
-
JSONDecoder.NumericDateDecoding.MILLISECONDS_SINCE_EPOCH) {
|
|
21
|
-
return DateTime.fromMillis(value, { zone: 'UTC' });
|
|
22
|
-
}
|
|
23
|
-
else if (this.numericDateDecoding ===
|
|
24
|
-
JSONDecoder.NumericDateDecoding.SECONDS_SINCE_EPOCH) {
|
|
25
|
-
return DateTime.fromSeconds(value, { zone: 'UTC' });
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
console.error('Unsupported date decoding format');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (typeof value === 'string') {
|
|
32
|
-
return DateTime.fromISO(value, { setZone: true });
|
|
33
|
-
}
|
|
34
|
-
throw new Error(`Invalid date value for property ${key}`);
|
|
35
|
-
};
|
|
36
|
-
this.dateDeserializer = (key, value) => {
|
|
37
|
-
if (value == null) {
|
|
38
|
-
return value;
|
|
39
|
-
}
|
|
40
|
-
if (value instanceof Date) {
|
|
41
|
-
return value;
|
|
42
|
-
}
|
|
43
|
-
if (typeof value === 'number') {
|
|
44
|
-
if (this.numericDateDecoding ===
|
|
45
|
-
JSONDecoder.NumericDateDecoding.MILLISECONDS_SINCE_EPOCH) {
|
|
46
|
-
return new Date(value);
|
|
47
|
-
}
|
|
48
|
-
else if (this.numericDateDecoding ===
|
|
49
|
-
JSONDecoder.NumericDateDecoding.SECONDS_SINCE_EPOCH) {
|
|
50
|
-
return new Date(value * 1000);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
console.error('Unsupported date decoding format');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (typeof value === 'string') {
|
|
57
|
-
return new Date(value);
|
|
58
|
-
}
|
|
59
|
-
throw new Error(`Invalid date value for property ${key}`);
|
|
60
|
-
};
|
|
61
|
-
this.urlDeserializer = (key, value) => {
|
|
62
|
-
if (value == null) {
|
|
63
|
-
return value;
|
|
64
|
-
}
|
|
65
|
-
if (value instanceof URL) {
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
|
-
if (typeof value === 'string') {
|
|
69
|
-
return new URL(value);
|
|
70
|
-
}
|
|
71
|
-
throw Error(`Invalid URL value for property ${key}`);
|
|
72
|
-
};
|
|
73
|
-
this.arrayBufferDeserializer = (key, value) => {
|
|
74
|
-
if (value == null) {
|
|
75
|
-
return value;
|
|
76
|
-
}
|
|
77
|
-
if (value instanceof ArrayBuffer) {
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
if (typeof value === 'string') {
|
|
81
|
-
return Base64.decode(value);
|
|
82
|
-
}
|
|
83
|
-
throw Error(`Invalid ArrayBuffer value for property ${key}`);
|
|
84
|
-
};
|
|
85
|
-
this.customDeserializers = [
|
|
86
|
-
{
|
|
87
|
-
type: () => Date,
|
|
88
|
-
mapper: this.dateDeserializer,
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
type: () => DateTime,
|
|
92
|
-
mapper: this.dateTimeDeserializer,
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
type: () => URL,
|
|
96
|
-
mapper: this.urlDeserializer,
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
type: () => ArrayBuffer,
|
|
100
|
-
mapper: this.arrayBufferDeserializer,
|
|
101
|
-
},
|
|
102
|
-
];
|
|
103
|
-
}
|
|
104
|
-
static get default() {
|
|
105
|
-
return new JSONDecoder(JSONDecoder.NumericDateDecoding.MILLISECONDS_SINCE_EPOCH);
|
|
106
|
-
}
|
|
107
|
-
async decode(response, type) {
|
|
108
|
-
return this.decodeJSON(await response.json(), type);
|
|
109
|
-
}
|
|
110
|
-
decodeText(text, type) {
|
|
111
|
-
return this.parser.parse(text, {
|
|
112
|
-
deserializers: this.customDeserializers,
|
|
113
|
-
mainCreator: () => type,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
decodeJSON(value, type) {
|
|
117
|
-
return this.parser.transform(value, {
|
|
118
|
-
deserializers: this.customDeserializers,
|
|
119
|
-
mainCreator: () => type,
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
(function (JSONDecoder) {
|
|
124
|
-
/**
|
|
125
|
-
* Configures how numeric `Date` & `DateTime` parameters are decoded.
|
|
126
|
-
*/
|
|
127
|
-
let NumericDateDecoding;
|
|
128
|
-
(function (NumericDateDecoding) {
|
|
129
|
-
/**
|
|
130
|
-
* Decode the `Date`/`DateTime` as a UNIX timestamp (floating point seconds since epoch).
|
|
131
|
-
*/
|
|
132
|
-
NumericDateDecoding[NumericDateDecoding["SECONDS_SINCE_EPOCH"] = 0] = "SECONDS_SINCE_EPOCH";
|
|
133
|
-
/**
|
|
134
|
-
* Decode the `Date`/`DateTime` as UNIX millisecond timestamp (integer milliseconds since epoch).
|
|
135
|
-
*/
|
|
136
|
-
NumericDateDecoding[NumericDateDecoding["MILLISECONDS_SINCE_EPOCH"] = 1] = "MILLISECONDS_SINCE_EPOCH";
|
|
137
|
-
})(NumericDateDecoding = JSONDecoder.NumericDateDecoding || (JSONDecoder.NumericDateDecoding = {}));
|
|
138
|
-
})(JSONDecoder || (JSONDecoder = {}));
|
|
139
|
-
//# sourceMappingURL=json-decoder.js.map
|
package/dist/json-decoder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-decoder.js","sourceRoot":"","sources":["../src/json-decoder.ts"],"names":[],"mappings":"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"}
|
package/dist/json-encoder.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { MediaTypeEncoder } from './media-type-encoder';
|
|
2
|
-
import { AnyType } from './any-type';
|
|
3
|
-
import 'reflect-metadata';
|
|
4
|
-
export declare class JSONEncoder implements MediaTypeEncoder {
|
|
5
|
-
readonly dateEncoding: JSONEncoder.DateEncoding;
|
|
6
|
-
static get default(): JSONEncoder;
|
|
7
|
-
private readonly customSerializers;
|
|
8
|
-
private stringifier;
|
|
9
|
-
constructor(dateEncoding: JSONEncoder.DateEncoding);
|
|
10
|
-
encode<T>(value: T, type?: AnyType): string;
|
|
11
|
-
encodeJSON<T>(value: T, type?: AnyType): unknown;
|
|
12
|
-
private dateTimeSerializer;
|
|
13
|
-
private dateSerializer;
|
|
14
|
-
private urlSerializer;
|
|
15
|
-
private arrayBufferSerializer;
|
|
16
|
-
}
|
|
17
|
-
export declare namespace JSONEncoder {
|
|
18
|
-
/**
|
|
19
|
-
* Configures how `Date` & `DateTime` parameters are encoded.
|
|
20
|
-
*/
|
|
21
|
-
enum DateEncoding {
|
|
22
|
-
/**
|
|
23
|
-
* Encode `Date`/`DateTime` values as a UNIX timestamp (floating point seconds since epoch).
|
|
24
|
-
*/
|
|
25
|
-
SECONDS_SINCE_EPOCH = 0,
|
|
26
|
-
/**
|
|
27
|
-
* Encode `Date`/`DateTime` values as UNIX millisecond timestamp (integer milliseconds since epoch).
|
|
28
|
-
*/
|
|
29
|
-
MILLISECONDS_SINCE_EPOCH = 1,
|
|
30
|
-
/**
|
|
31
|
-
* Encode `Date`/`DateTime` values as an ISO-8601-formatted string (in RFC 3339 format). This is the default behavior.
|
|
32
|
-
*/
|
|
33
|
-
ISO8601 = 2
|
|
34
|
-
}
|
|
35
|
-
}
|
package/dist/json-encoder.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { DateTime } from 'luxon';
|
|
2
|
-
import { JsonStringifier } from '@outfoxx/jackson-js';
|
|
3
|
-
import { Base64 } from './util/base64';
|
|
4
|
-
import 'reflect-metadata';
|
|
5
|
-
export class JSONEncoder {
|
|
6
|
-
constructor(dateEncoding) {
|
|
7
|
-
this.dateEncoding = dateEncoding;
|
|
8
|
-
this.stringifier = new JsonStringifier();
|
|
9
|
-
this.dateTimeSerializer = (key, value) => {
|
|
10
|
-
if (value == null) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
switch (this.dateEncoding) {
|
|
14
|
-
case JSONEncoder.DateEncoding.ISO8601:
|
|
15
|
-
return value.toISO();
|
|
16
|
-
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
17
|
-
return value.toMillis();
|
|
18
|
-
case JSONEncoder.DateEncoding.SECONDS_SINCE_EPOCH:
|
|
19
|
-
return value.toSeconds();
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
this.dateSerializer = (key, value) => {
|
|
23
|
-
if (value == null) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
switch (this.dateEncoding) {
|
|
27
|
-
case JSONEncoder.DateEncoding.ISO8601:
|
|
28
|
-
return value.toISOString();
|
|
29
|
-
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
30
|
-
return value.getTime();
|
|
31
|
-
case JSONEncoder.DateEncoding.SECONDS_SINCE_EPOCH:
|
|
32
|
-
return value.getTime() / 1000;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
this.urlSerializer = (key, value) => {
|
|
36
|
-
if (value == null) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
return value.toString();
|
|
40
|
-
};
|
|
41
|
-
this.arrayBufferSerializer = (key, value) => {
|
|
42
|
-
if (value == null) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
return Base64.encode(value);
|
|
46
|
-
};
|
|
47
|
-
this.customSerializers = [
|
|
48
|
-
{
|
|
49
|
-
type: () => Date,
|
|
50
|
-
mapper: this.dateSerializer,
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
type: () => DateTime,
|
|
54
|
-
mapper: this.dateTimeSerializer,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
type: () => URL,
|
|
58
|
-
mapper: this.urlSerializer,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
type: () => ArrayBuffer,
|
|
62
|
-
mapper: this.arrayBufferSerializer,
|
|
63
|
-
},
|
|
64
|
-
];
|
|
65
|
-
}
|
|
66
|
-
static get default() {
|
|
67
|
-
return new JSONEncoder(JSONEncoder.DateEncoding.ISO8601);
|
|
68
|
-
}
|
|
69
|
-
encode(value, type) {
|
|
70
|
-
var _a;
|
|
71
|
-
// Use natural type when subtypes exist
|
|
72
|
-
if (Reflect.hasMetadata('jackson:defaultContextGroup:JsonSubTypes', (_a =
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
|
-
value.constructor) !== null && _a !== void 0 ? _a : {})) {
|
|
75
|
-
type = [Object];
|
|
76
|
-
}
|
|
77
|
-
return this.stringifier.stringify(value, {
|
|
78
|
-
serializers: this.customSerializers,
|
|
79
|
-
mainCreator: () => type !== null && type !== void 0 ? type : [Object],
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
encodeJSON(value, type) {
|
|
83
|
-
var _a;
|
|
84
|
-
// Use natural type when subtypes exist
|
|
85
|
-
if (Reflect.hasMetadata('jackson:defaultContextGroup:JsonSubTypes', (_a =
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
87
|
-
value.constructor) !== null && _a !== void 0 ? _a : {})) {
|
|
88
|
-
type = [Object];
|
|
89
|
-
}
|
|
90
|
-
return this.stringifier.transform(value, {
|
|
91
|
-
serializers: this.customSerializers,
|
|
92
|
-
mainCreator: () => type !== null && type !== void 0 ? type : [Object],
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
(function (JSONEncoder) {
|
|
97
|
-
/**
|
|
98
|
-
* Configures how `Date` & `DateTime` parameters are encoded.
|
|
99
|
-
*/
|
|
100
|
-
let DateEncoding;
|
|
101
|
-
(function (DateEncoding) {
|
|
102
|
-
/**
|
|
103
|
-
* Encode `Date`/`DateTime` values as a UNIX timestamp (floating point seconds since epoch).
|
|
104
|
-
*/
|
|
105
|
-
DateEncoding[DateEncoding["SECONDS_SINCE_EPOCH"] = 0] = "SECONDS_SINCE_EPOCH";
|
|
106
|
-
/**
|
|
107
|
-
* Encode `Date`/`DateTime` values as UNIX millisecond timestamp (integer milliseconds since epoch).
|
|
108
|
-
*/
|
|
109
|
-
DateEncoding[DateEncoding["MILLISECONDS_SINCE_EPOCH"] = 1] = "MILLISECONDS_SINCE_EPOCH";
|
|
110
|
-
/**
|
|
111
|
-
* Encode `Date`/`DateTime` values as an ISO-8601-formatted string (in RFC 3339 format). This is the default behavior.
|
|
112
|
-
*/
|
|
113
|
-
DateEncoding[DateEncoding["ISO8601"] = 2] = "ISO8601";
|
|
114
|
-
})(DateEncoding = JSONEncoder.DateEncoding || (JSONEncoder.DateEncoding = {}));
|
|
115
|
-
})(JSONEncoder || (JSONEncoder = {}));
|
|
116
|
-
//# sourceMappingURL=json-encoder.js.map
|
package/dist/json-encoder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-encoder.js","sourceRoot":"","sources":["../src/json-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-type-decoder.js","sourceRoot":"","sources":["../src/media-type-decoder.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-type-decoders.js","sourceRoot":"","sources":["../src/media-type-decoders.ts"],"names":[],"mappings":"AAAA,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,cAAc,CAAC;AAczC,MAAM,OAAO,iBAAiB;IA4B5B,YAAoB,QAAuC;QAAvC,aAAQ,GAAR,QAAQ,CAA+B;IAAG,CAAC;IAE/D,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;;AAvCM,yBAAO,GAAwC,MAAM,OAAO;IAAb;QAEpD,aAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAmBjD,CAAC;IAjBC,GAAG,CACD,SAAiB,EACjB,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,YAAY,EAAE,IAAI,aAAa,EAAE,CAAC;aAChD,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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-type-encoder.js","sourceRoot":"","sources":["../src/media-type-encoder.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,uBAAuB,CACrC,OAA6D;;IAE7D,MAAM,GAAG,GAAI,OAA8C,CAAC;IAC5D,aAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,mCAAI,KAAK,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-type-encoders.js","sourceRoot":"","sources":["../src/media-type-encoders.ts"],"names":[],"mappings":"AAAA,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,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAa3C,MAAM,OAAO,iBAAiB;IA6B5B,YAAoB,QAAuC;QAAvC,aAAQ,GAAR,QAAQ,CAA+B;IAAG,CAAC;IAE/D,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;;AAxCM,yBAAO,GAAwC,MAAM,OAAO;IAAb;QAEpD,aAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAoBjD,CAAC;IAlBC,GAAG,CACD,SAAiB,EACjB,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,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC;aAClD,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC;aACvD,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"}
|
package/dist/url-encoder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url-encoder.js","sourceRoot":"","sources":["../src/url-encoder.ts"],"names":[],"mappings":"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"}
|
package/src/cbor-decoder.ts
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { CBOR } from '@outfoxx/cbor-redux';
|
|
2
|
-
import { JsonParser } from '@outfoxx/jackson-js';
|
|
3
|
-
import { CustomMapper, Deserializer } from '@outfoxx/jackson-js/dist/@types';
|
|
4
|
-
import { AnyType } from './any-type';
|
|
5
|
-
import { epochDateTag, isoDateTag, uriTag } from './cbor-tags';
|
|
6
|
-
import { DateTime } from './date-time-types';
|
|
7
|
-
import { MediaTypeDecoder } from './media-type-decoder';
|
|
8
|
-
import { Base64 } from './util/base64';
|
|
9
|
-
|
|
10
|
-
export class CBORDecoder implements MediaTypeDecoder {
|
|
11
|
-
static get default(): CBORDecoder {
|
|
12
|
-
return new CBORDecoder();
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
private readonly customDeserializers: CustomMapper<Deserializer>[];
|
|
16
|
-
private readonly parser = new JsonParser();
|
|
17
|
-
|
|
18
|
-
constructor() {
|
|
19
|
-
this.customDeserializers = [
|
|
20
|
-
{
|
|
21
|
-
type: () => Date,
|
|
22
|
-
mapper: this.dateDeserializer,
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
type: () => DateTime,
|
|
26
|
-
mapper: this.dateTimeDeserializer,
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
type: () => URL,
|
|
30
|
-
mapper: this.urlDeserializer,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
type: () => ArrayBuffer,
|
|
34
|
-
mapper: this.arrayBufferDeserializer,
|
|
35
|
-
},
|
|
36
|
-
];
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async decode<T>(response: Response, type: AnyType): Promise<T> {
|
|
40
|
-
return this.decodeData(await response.arrayBuffer(), type);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
decodeData<T>(buffer: ArrayBuffer, type: AnyType): T {
|
|
44
|
-
return this.parser.transform(CBOR.decode(buffer, CBORDecoder.untag), {
|
|
45
|
-
deserializers: this.customDeserializers,
|
|
46
|
-
mainCreator: () => type,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
51
|
-
private static untag = (value: any, tag: number) => {
|
|
52
|
-
switch (tag) {
|
|
53
|
-
case isoDateTag:
|
|
54
|
-
if (typeof value !== 'string') {
|
|
55
|
-
throw Error('Invalid iso date value');
|
|
56
|
-
}
|
|
57
|
-
return DateTime.fromISO(value, { setZone: true });
|
|
58
|
-
case epochDateTag:
|
|
59
|
-
if (typeof value !== 'number') {
|
|
60
|
-
throw Error('Invalid epoch date value');
|
|
61
|
-
}
|
|
62
|
-
return DateTime.fromSeconds(value, { zone: 'UTC' });
|
|
63
|
-
case uriTag:
|
|
64
|
-
if (typeof value !== 'string') {
|
|
65
|
-
throw Error('Invalid URI value');
|
|
66
|
-
}
|
|
67
|
-
return new URL(value);
|
|
68
|
-
default:
|
|
69
|
-
return value;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
private dateTimeDeserializer: Deserializer = (
|
|
74
|
-
key: string,
|
|
75
|
-
value: unknown
|
|
76
|
-
) => {
|
|
77
|
-
if (value == null) {
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
if (DateTime.isDateTime(value)) {
|
|
81
|
-
return value;
|
|
82
|
-
}
|
|
83
|
-
if (value instanceof Date) {
|
|
84
|
-
return DateTime.fromJSDate(value, { zone: 'UTC' });
|
|
85
|
-
}
|
|
86
|
-
if (typeof value === 'number') {
|
|
87
|
-
return DateTime.fromSeconds(value, { zone: 'UTC' });
|
|
88
|
-
}
|
|
89
|
-
if (typeof value === 'string') {
|
|
90
|
-
return DateTime.fromISO(value, { setZone: true });
|
|
91
|
-
}
|
|
92
|
-
throw new Error(`Invalid date value for property ${key}`);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
private dateDeserializer: Deserializer = (key: string, value: unknown) => {
|
|
96
|
-
if (value == null) {
|
|
97
|
-
return value;
|
|
98
|
-
}
|
|
99
|
-
if (value instanceof Date) {
|
|
100
|
-
return value;
|
|
101
|
-
}
|
|
102
|
-
if (DateTime.isDateTime(value)) {
|
|
103
|
-
return value.toJSDate();
|
|
104
|
-
}
|
|
105
|
-
if (typeof value === 'number') {
|
|
106
|
-
return new Date(value * 1000);
|
|
107
|
-
}
|
|
108
|
-
if (typeof value === 'string') {
|
|
109
|
-
return new Date(value);
|
|
110
|
-
}
|
|
111
|
-
throw new Error(`Invalid date value for property ${key}`);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
private urlDeserializer: Deserializer = (key: string, value: unknown) => {
|
|
115
|
-
if (value == null) {
|
|
116
|
-
return value;
|
|
117
|
-
}
|
|
118
|
-
if (value instanceof URL) {
|
|
119
|
-
return value;
|
|
120
|
-
}
|
|
121
|
-
if (typeof value === 'string') {
|
|
122
|
-
return new URL(value);
|
|
123
|
-
}
|
|
124
|
-
throw Error(`Invalid URL value for property ${key}`);
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
private arrayBufferDeserializer: Deserializer = (
|
|
128
|
-
key: string,
|
|
129
|
-
value: unknown
|
|
130
|
-
) => {
|
|
131
|
-
if (value == null) {
|
|
132
|
-
return value;
|
|
133
|
-
}
|
|
134
|
-
if (value instanceof ArrayBuffer) {
|
|
135
|
-
return value;
|
|
136
|
-
}
|
|
137
|
-
if (ArrayBuffer.isView(value)) {
|
|
138
|
-
return value.buffer.slice(
|
|
139
|
-
value.byteOffset,
|
|
140
|
-
value.byteOffset + value.byteLength
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
if (typeof value === 'string') {
|
|
144
|
-
return Base64.decode(value);
|
|
145
|
-
}
|
|
146
|
-
throw Error(`Invalid ArrayBuffer value for property ${key}`);
|
|
147
|
-
};
|
|
148
|
-
}
|
package/src/cbor-encoder.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { CBOR, TaggedValue } from '@outfoxx/cbor-redux';
|
|
2
|
-
import { JsonStringifier } from '@outfoxx/jackson-js';
|
|
3
|
-
import { CustomMapper, Serializer } from '@outfoxx/jackson-js/dist/@types';
|
|
4
|
-
import { DateTime } from 'luxon';
|
|
5
|
-
import { AnyType } from './any-type';
|
|
6
|
-
import { epochDateTag, isoDateTag, uriTag } from './cbor-tags';
|
|
7
|
-
import { MediaTypeEncoder } from './media-type-encoder';
|
|
8
|
-
|
|
9
|
-
export class CBOREncoder implements MediaTypeEncoder {
|
|
10
|
-
static get default(): CBOREncoder {
|
|
11
|
-
return new CBOREncoder(CBOREncoder.DateEncoding.SECONDS_SINCE_EPOCH);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
private readonly customSerializers: CustomMapper<Serializer>[];
|
|
15
|
-
private stringifier = new JsonStringifier();
|
|
16
|
-
|
|
17
|
-
constructor(readonly dateEncoding: CBOREncoder.DateEncoding) {
|
|
18
|
-
this.customSerializers = [
|
|
19
|
-
{
|
|
20
|
-
type: () => Date,
|
|
21
|
-
mapper: this.dateSerializer,
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
type: () => DateTime,
|
|
25
|
-
mapper: this.dateTimeSerializer,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: () => URL,
|
|
29
|
-
mapper: this.urlSerializer,
|
|
30
|
-
},
|
|
31
|
-
];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
encode<T>(value: T, type?: AnyType): ArrayBuffer {
|
|
35
|
-
return CBOR.encode(this.encodeJSON(value, type));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private encodeJSON<T>(value: T, type?: AnyType): unknown {
|
|
39
|
-
return this.stringifier.transform(value, {
|
|
40
|
-
serializers: this.customSerializers,
|
|
41
|
-
mainCreator: () => type ?? [Object],
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
private dateTimeSerializer: Serializer = (key: string, value: DateTime) => {
|
|
46
|
-
if (value == null) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
switch (this.dateEncoding) {
|
|
51
|
-
case CBOREncoder.DateEncoding.ISO8601:
|
|
52
|
-
return new TaggedValue(value.toISO(), isoDateTag);
|
|
53
|
-
case CBOREncoder.DateEncoding.SECONDS_SINCE_EPOCH:
|
|
54
|
-
return new TaggedValue(value.toSeconds(), epochDateTag);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
private dateSerializer: Serializer = (key: string, value: Date) => {
|
|
59
|
-
if (value == null) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
switch (this.dateEncoding) {
|
|
64
|
-
case CBOREncoder.DateEncoding.ISO8601:
|
|
65
|
-
return new TaggedValue(value.toISOString(), isoDateTag);
|
|
66
|
-
case CBOREncoder.DateEncoding.SECONDS_SINCE_EPOCH:
|
|
67
|
-
return new TaggedValue(value.getTime() / 1000.0, epochDateTag);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
private urlSerializer: Serializer = (key: string, value: URL) => {
|
|
72
|
-
if (value == null) {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return new TaggedValue(value.toString(), uriTag);
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export namespace CBOREncoder {
|
|
81
|
-
/**
|
|
82
|
-
* Configures how `Date` & `DateTime` parameters are encoded.
|
|
83
|
-
*/
|
|
84
|
-
export enum DateEncoding {
|
|
85
|
-
/**
|
|
86
|
-
* Encode `Date`/`DateTime` values as a UNIX timestamp (floating point seconds since epoch).
|
|
87
|
-
*/
|
|
88
|
-
SECONDS_SINCE_EPOCH = 'float',
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Encode `Date`/`DateTime` values as an ISO-8601-formatted string (in RFC 3339 format). This is the default behavior.
|
|
92
|
-
*/
|
|
93
|
-
ISO8601 = 'string',
|
|
94
|
-
}
|
|
95
|
-
}
|
package/src/cbor-tags.ts
DELETED
package/src/http-error.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
export class HttpError extends Error {
|
|
2
|
-
constructor(
|
|
3
|
-
message: string,
|
|
4
|
-
public url: string,
|
|
5
|
-
public httpVersion: string,
|
|
6
|
-
public status: number,
|
|
7
|
-
public statusText: string,
|
|
8
|
-
public headers: Headers,
|
|
9
|
-
public body?: string
|
|
10
|
-
) {
|
|
11
|
-
super(message);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
static async fromResponse(
|
|
15
|
-
message: string,
|
|
16
|
-
response: Response
|
|
17
|
-
): Promise<HttpError> {
|
|
18
|
-
let body: string | undefined;
|
|
19
|
-
try {
|
|
20
|
-
if (response.headers.get('content-type')?.startsWith('text/')) {
|
|
21
|
-
body = await response.text();
|
|
22
|
-
} else {
|
|
23
|
-
const blob = await response.blob();
|
|
24
|
-
body = `<binary data: ${blob.size} bytes>`;
|
|
25
|
-
}
|
|
26
|
-
} catch (e) {
|
|
27
|
-
// ignore errors
|
|
28
|
-
body = '<unable to show response data>';
|
|
29
|
-
}
|
|
30
|
-
if (body.length > 512) {
|
|
31
|
-
body = `${body.slice(0, 512)}<<... another ${body.length - 512} bytes>>`;
|
|
32
|
-
}
|
|
33
|
-
const fullMessage = `${message}
|
|
34
|
-
|
|
35
|
-
########## BEGIN REQUEST ##########
|
|
36
|
-
|
|
37
|
-
HTTP/?.? ${response.status} ${response.statusText}
|
|
38
|
-
${Array.from(response.headers.entries())
|
|
39
|
-
.map(([name, value]) => `${name}: ${value}`)
|
|
40
|
-
.join('\n ')}
|
|
41
|
-
${body ?? '<none>'}
|
|
42
|
-
|
|
43
|
-
########### END REQUEST ###########
|
|
44
|
-
`;
|
|
45
|
-
return new HttpError(
|
|
46
|
-
fullMessage,
|
|
47
|
-
response.url,
|
|
48
|
-
'?.?',
|
|
49
|
-
response.status,
|
|
50
|
-
response.statusText,
|
|
51
|
-
response.headers,
|
|
52
|
-
body
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
}
|