@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.
Files changed (179) hide show
  1. package/LICENSE.txt +203 -0
  2. package/README.md +35 -2
  3. package/dist/any-type.d.ts +2 -0
  4. package/dist/any-type.js +13 -0
  5. package/dist/any-type.js.map +1 -1
  6. package/dist/class-type.d.ts +2 -2
  7. package/dist/class-type.js +13 -0
  8. package/dist/class-type.js.map +1 -1
  9. package/dist/date-time-types.d.ts +2 -7
  10. package/dist/date-time-types.js +15 -4
  11. package/dist/date-time-types.js.map +1 -1
  12. package/dist/event-parser.d.ts +17 -0
  13. package/dist/event-parser.js +153 -0
  14. package/dist/event-parser.js.map +1 -0
  15. package/dist/fetch-event-source.d.ts +12 -10
  16. package/dist/fetch-event-source.js +154 -138
  17. package/dist/fetch-event-source.js.map +1 -1
  18. package/dist/fetch-request-factory.d.ts +10 -5
  19. package/dist/fetch-request-factory.js +100 -71
  20. package/dist/fetch-request-factory.js.map +1 -1
  21. package/dist/fetch.d.ts +7 -1
  22. package/dist/fetch.js +74 -8
  23. package/dist/fetch.js.map +1 -1
  24. package/dist/header-parameters.d.ts +3 -0
  25. package/dist/header-parameters.js +53 -0
  26. package/dist/header-parameters.js.map +1 -0
  27. package/dist/index.d.ts +12 -12
  28. package/dist/index.js +25 -12
  29. package/dist/index.js.map +1 -1
  30. package/dist/logger.js +13 -0
  31. package/dist/logger.js.map +1 -1
  32. package/dist/{binary-decoder.d.ts → media-type-codecs/binary-decoder.d.ts} +2 -2
  33. package/dist/media-type-codecs/binary-decoder.js +29 -0
  34. package/dist/media-type-codecs/binary-decoder.js.map +1 -0
  35. package/dist/{binary-encoder.d.ts → media-type-codecs/binary-encoder.d.ts} +0 -0
  36. package/dist/media-type-codecs/binary-encoder.js +26 -0
  37. package/dist/media-type-codecs/binary-encoder.js.map +1 -0
  38. package/dist/media-type-codecs/cbor-decoder.d.ts +39 -0
  39. package/dist/media-type-codecs/cbor-decoder.js +426 -0
  40. package/dist/media-type-codecs/cbor-decoder.js.map +1 -0
  41. package/dist/media-type-codecs/cbor-encoder.d.ts +43 -0
  42. package/dist/media-type-codecs/cbor-encoder.js +239 -0
  43. package/dist/media-type-codecs/cbor-encoder.js.map +1 -0
  44. package/dist/media-type-codecs/cbor-tags.d.ts +4 -0
  45. package/dist/media-type-codecs/cbor-tags.js +18 -0
  46. package/dist/media-type-codecs/cbor-tags.js.map +1 -0
  47. package/dist/media-type-codecs/json-decoder.d.ts +39 -0
  48. package/dist/media-type-codecs/json-decoder.js +380 -0
  49. package/dist/media-type-codecs/json-decoder.js.map +1 -0
  50. package/dist/media-type-codecs/json-encoder.d.ts +44 -0
  51. package/dist/media-type-codecs/json-encoder.js +276 -0
  52. package/dist/media-type-codecs/json-encoder.js.map +1 -0
  53. package/dist/media-type-codecs/media-type-decoder.d.ts +11 -0
  54. package/dist/media-type-codecs/media-type-decoder.js +19 -0
  55. package/dist/media-type-codecs/media-type-decoder.js.map +1 -0
  56. package/dist/{media-type-decoders.d.ts → media-type-codecs/media-type-decoders.d.ts} +5 -4
  57. package/dist/media-type-codecs/media-type-decoders.js +53 -0
  58. package/dist/media-type-codecs/media-type-decoders.js.map +1 -0
  59. package/dist/{media-type-encoder.d.ts → media-type-codecs/media-type-encoder.d.ts} +5 -1
  60. package/dist/media-type-codecs/media-type-encoder.js +24 -0
  61. package/dist/media-type-codecs/media-type-encoder.js.map +1 -0
  62. package/dist/{media-type-encoders.d.ts → media-type-codecs/media-type-encoders.d.ts} +5 -4
  63. package/dist/media-type-codecs/media-type-encoders.js +55 -0
  64. package/dist/media-type-codecs/media-type-encoders.js.map +1 -0
  65. package/dist/{url-encoder.d.ts → media-type-codecs/www-form-url-encoder.d.ts} +8 -8
  66. package/dist/{url-encoder.js → media-type-codecs/www-form-url-encoder.js} +51 -37
  67. package/dist/media-type-codecs/www-form-url-encoder.js.map +1 -0
  68. package/dist/media-type.d.ts +91 -13
  69. package/dist/media-type.js +286 -15
  70. package/dist/media-type.js.map +1 -1
  71. package/dist/problem.d.ts +24 -9
  72. package/dist/problem.js +153 -6
  73. package/dist/problem.js.map +1 -1
  74. package/dist/request-factory.d.ts +10 -10
  75. package/dist/request-factory.js +13 -0
  76. package/dist/request-factory.js.map +1 -1
  77. package/dist/sunday-error.d.ts +11 -0
  78. package/dist/sunday-error.js +31 -0
  79. package/dist/sunday-error.js.map +1 -0
  80. package/dist/url-template.js +13 -0
  81. package/dist/url-template.js.map +1 -1
  82. package/dist/util/any.d.ts +2 -0
  83. package/dist/util/any.js +24 -0
  84. package/dist/util/any.js.map +1 -0
  85. package/dist/util/base64.js +13 -0
  86. package/dist/util/base64.js.map +1 -1
  87. package/dist/util/error.d.ts +2 -0
  88. package/dist/util/error.js +26 -0
  89. package/dist/util/error.js.map +1 -0
  90. package/dist/util/hex.js +16 -2
  91. package/dist/util/hex.js.map +1 -1
  92. package/dist/util/rxjs.d.ts +3 -0
  93. package/dist/util/rxjs.js +22 -5
  94. package/dist/util/rxjs.js.map +1 -1
  95. package/dist/util/stream-rxjs.js +13 -0
  96. package/dist/util/stream-rxjs.js.map +1 -1
  97. package/dist/util/temporal.d.ts +2 -0
  98. package/dist/util/temporal.js +31 -0
  99. package/dist/util/temporal.js.map +1 -0
  100. package/package.json +29 -22
  101. package/src/any-type.ts +18 -0
  102. package/src/class-type.ts +20 -2
  103. package/src/date-time-types.ts +35 -8
  104. package/src/event-parser.ts +204 -0
  105. package/src/fetch-event-source.ts +163 -159
  106. package/src/fetch-request-factory.ts +142 -100
  107. package/src/fetch.ts +79 -14
  108. package/src/header-parameters.ts +66 -0
  109. package/src/index.ts +26 -12
  110. package/src/logger.ts +14 -0
  111. package/src/media-type-codecs/binary-decoder.ts +38 -0
  112. package/src/media-type-codecs/binary-encoder.ts +33 -0
  113. package/src/media-type-codecs/cbor-decoder.ts +529 -0
  114. package/src/media-type-codecs/cbor-encoder.ts +321 -0
  115. package/src/media-type-codecs/cbor-tags.ts +18 -0
  116. package/src/media-type-codecs/json-decoder.ts +484 -0
  117. package/src/media-type-codecs/json-encoder.ts +342 -0
  118. package/src/media-type-codecs/media-type-decoder.ts +34 -0
  119. package/src/media-type-codecs/media-type-decoders.ts +81 -0
  120. package/src/media-type-codecs/media-type-encoder.ts +45 -0
  121. package/src/media-type-codecs/media-type-encoders.ts +83 -0
  122. package/src/media-type-codecs/www-form-url-encoder.ts +193 -0
  123. package/src/media-type.ts +340 -22
  124. package/src/problem.ts +158 -12
  125. package/src/request-factory.ts +35 -12
  126. package/src/sunday-error.ts +51 -0
  127. package/src/url-template.ts +14 -0
  128. package/src/util/any.ts +24 -0
  129. package/src/util/base64.ts +14 -0
  130. package/src/util/error.ts +28 -0
  131. package/src/util/hex.ts +17 -2
  132. package/src/util/rxjs.ts +30 -5
  133. package/src/util/stream-rxjs.ts +14 -0
  134. package/src/util/temporal.ts +32 -0
  135. package/dist/binary-decoder.js +0 -16
  136. package/dist/binary-decoder.js.map +0 -1
  137. package/dist/binary-encoder.js +0 -13
  138. package/dist/binary-encoder.js.map +0 -1
  139. package/dist/cbor-decoder.d.ts +0 -15
  140. package/dist/cbor-decoder.js +0 -126
  141. package/dist/cbor-decoder.js.map +0 -1
  142. package/dist/cbor-encoder.d.ts +0 -29
  143. package/dist/cbor-encoder.js +0 -81
  144. package/dist/cbor-encoder.js.map +0 -1
  145. package/dist/cbor-tags.d.ts +0 -3
  146. package/dist/cbor-tags.js +0 -4
  147. package/dist/cbor-tags.js.map +0 -1
  148. package/dist/http-error.d.ts +0 -10
  149. package/dist/http-error.js +0 -45
  150. package/dist/http-error.js.map +0 -1
  151. package/dist/json-decoder.d.ts +0 -31
  152. package/dist/json-decoder.js +0 -139
  153. package/dist/json-decoder.js.map +0 -1
  154. package/dist/json-encoder.d.ts +0 -35
  155. package/dist/json-encoder.js +0 -134
  156. package/dist/json-encoder.js.map +0 -1
  157. package/dist/media-type-decoder.d.ts +0 -4
  158. package/dist/media-type-decoder.js +0 -2
  159. package/dist/media-type-decoder.js.map +0 -1
  160. package/dist/media-type-decoders.js +0 -40
  161. package/dist/media-type-decoders.js.map +0 -1
  162. package/dist/media-type-encoder.js +0 -6
  163. package/dist/media-type-encoder.js.map +0 -1
  164. package/dist/media-type-encoders.js +0 -42
  165. package/dist/media-type-encoders.js.map +0 -1
  166. package/dist/url-encoder.js.map +0 -1
  167. package/src/binary-decoder.ts +0 -24
  168. package/src/binary-encoder.ts +0 -19
  169. package/src/cbor-decoder.ts +0 -148
  170. package/src/cbor-encoder.ts +0 -95
  171. package/src/cbor-tags.ts +0 -3
  172. package/src/http-error.ts +0 -55
  173. package/src/json-decoder.ts +0 -164
  174. package/src/json-encoder.ts +0 -162
  175. package/src/media-type-decoder.ts +0 -5
  176. package/src/media-type-decoders.ts +0 -59
  177. package/src/media-type-encoder.ts +0 -16
  178. package/src/media-type-encoders.ts +0 -61
  179. package/src/url-encoder.ts +0 -173
@@ -1,6 +1,19 @@
1
- import { DateTime } from 'luxon';
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 { Instant } from '@js-joda/core';
2
15
  import { JsonStringifier } from '@outfoxx/jackson-js';
3
- export class URLEncoder {
16
+ export class WWWFormUrlEncoder {
4
17
  constructor(arrayEncoding, boolEncoding, dateEncoding, json = new JsonStringifier(), encoder = new TextEncoder()) {
5
18
  this.arrayEncoding = arrayEncoding;
6
19
  this.boolEncoding = boolEncoding;
@@ -9,7 +22,7 @@ export class URLEncoder {
9
22
  this.encoder = encoder;
10
23
  }
11
24
  static get default() {
12
- return new URLEncoder(URLEncoder.ArrayEncoding.BRACKETED, URLEncoder.BoolEncoding.NUMERIC, URLEncoder.DateEncoding.ISO8601);
25
+ return new WWWFormUrlEncoder(WWWFormUrlEncoder.ArrayEncoding.UNBRACKETED, WWWFormUrlEncoder.BoolEncoding.LITERAL, WWWFormUrlEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH);
13
26
  }
14
27
  encode(value) {
15
28
  const parameters = this.json.transform(value);
@@ -20,77 +33,78 @@ export class URLEncoder {
20
33
  for (const key of Object.keys(parameters).sort()) {
21
34
  components.push(...this.encodeQueryComponent(key, parameters[key]));
22
35
  }
23
- return components.map((e) => `${e[0]}=${e[1]}`).join('&');
36
+ return components.join('&');
24
37
  }
25
38
  encodeQueryComponent(key, value) {
26
39
  const components = [];
27
40
  if (value === undefined) {
28
41
  return components;
29
42
  }
30
- if (value instanceof Array) {
43
+ if (value == null) {
44
+ //
45
+ components.push(encodeURIComponent(key));
46
+ }
47
+ else if (value instanceof Array) {
31
48
  // encode key according to `arrayEncoding`
32
49
  for (const item of value) {
33
50
  components.push(...this.encodeQueryComponent(encodeArrayKey(key, this.arrayEncoding), item));
34
51
  }
35
52
  }
36
- else if (DateTime.isDateTime(value) || value instanceof DateTime) {
53
+ else if (value instanceof Instant) {
37
54
  //
38
- components.push([
39
- encodeURIComponent(key),
40
- encodeURIComponent(encodeDate(value, this.dateEncoding)),
41
- ]);
55
+ components.push(encodeURIComponent(key) +
56
+ '=' +
57
+ encodeURIComponent(encodeDate(value, this.dateEncoding)));
42
58
  }
43
59
  else if (typeof value === 'boolean') {
44
60
  //
45
- components.push([
46
- encodeURIComponent(key),
47
- encodeURIComponent(encodeBoolean(value, this.boolEncoding)),
48
- ]);
61
+ components.push(encodeURIComponent(key) +
62
+ '=' +
63
+ encodeURIComponent(encodeBoolean(value, this.boolEncoding)));
49
64
  }
50
65
  else if (typeof value === 'object') {
51
66
  //
52
67
  const rec = (value !== null && value !== void 0 ? value : {});
53
- for (const nestedKey of Object.keys(rec)) {
68
+ for (const nestedKey of Object.keys(rec).sort()) {
54
69
  components.push(...this.encodeQueryComponent(`${key}[${nestedKey}]`, rec[nestedKey]));
55
70
  }
56
71
  }
57
72
  else {
58
73
  //
59
- components.push([
60
- encodeURIComponent(key),
61
- encodeURIComponent(`${value}`),
62
- ]);
74
+ components.push(encodeURIComponent(key) + '=' + encodeURIComponent(`${value}`));
63
75
  }
64
76
  return components;
65
77
  }
66
78
  }
67
79
  function encodeArrayKey(key, encoding) {
68
- return encoding === URLEncoder.ArrayEncoding.BRACKETED ? `${key}[]` : key;
80
+ return encoding === WWWFormUrlEncoder.ArrayEncoding.BRACKETED
81
+ ? `${key}[]`
82
+ : key;
69
83
  }
70
84
  function encodeBoolean(value, encoding) {
71
85
  switch (encoding) {
72
- case URLEncoder.BoolEncoding.NUMERIC:
86
+ case WWWFormUrlEncoder.BoolEncoding.NUMERIC:
73
87
  return value ? '1' : '0';
74
- case URLEncoder.BoolEncoding.LITERAL:
88
+ case WWWFormUrlEncoder.BoolEncoding.LITERAL:
75
89
  return value ? 'true' : 'false';
76
90
  default:
77
91
  throw new Error('unknown boolean encoding');
78
92
  }
79
93
  }
80
94
  function encodeDate(value, encoding) {
81
- value = value instanceof Date ? DateTime.fromJSDate(value) : value;
95
+ value = value instanceof Date ? Instant.ofEpochMilli(value.getTime()) : value;
82
96
  switch (encoding) {
83
- case URLEncoder.DateEncoding.SECONDS_SINCE_EPOCH:
84
- return `${value.toSeconds()}`;
85
- case URLEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
86
- return `${value.toMillis()}`;
87
- case URLEncoder.DateEncoding.ISO8601:
88
- return value.toISO();
97
+ case WWWFormUrlEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
98
+ return (value.epochSecond() + value.nano() / 1000000000).toFixed(7);
99
+ case WWWFormUrlEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
100
+ return `${value.toEpochMilli()}`;
101
+ case WWWFormUrlEncoder.DateEncoding.ISO8601:
102
+ return value.toString();
89
103
  default:
90
104
  throw new Error('unknown date encoding');
91
105
  }
92
106
  }
93
- (function (URLEncoder) {
107
+ (function (WWWFormUrlEncoder) {
94
108
  /**
95
109
  * Configures how `Array` parameters are encoded.
96
110
  */
@@ -104,7 +118,7 @@ function encodeDate(value, encoding) {
104
118
  * No brackets are appended. The key is encoded as is.
105
119
  */
106
120
  ArrayEncoding[ArrayEncoding["UNBRACKETED"] = 1] = "UNBRACKETED";
107
- })(ArrayEncoding = URLEncoder.ArrayEncoding || (URLEncoder.ArrayEncoding = {}));
121
+ })(ArrayEncoding = WWWFormUrlEncoder.ArrayEncoding || (WWWFormUrlEncoder.ArrayEncoding = {}));
108
122
  /**
109
123
  * Configures how `Bool` parameters are encoded.
110
124
  */
@@ -118,16 +132,16 @@ function encodeDate(value, encoding) {
118
132
  * Encode `true` and `false` as string literals.
119
133
  */
120
134
  BoolEncoding[BoolEncoding["LITERAL"] = 1] = "LITERAL";
121
- })(BoolEncoding = URLEncoder.BoolEncoding || (URLEncoder.BoolEncoding = {}));
135
+ })(BoolEncoding = WWWFormUrlEncoder.BoolEncoding || (WWWFormUrlEncoder.BoolEncoding = {}));
122
136
  /**
123
137
  * Configures how `Date` parameters are encoded.
124
138
  */
125
139
  let DateEncoding;
126
140
  (function (DateEncoding) {
127
141
  /**
128
- * Encode the `Date` as a UNIX timestamp (floating point seconds since epoch).
142
+ * Encode the `Date` as a UNIX timestamp (decimal seconds since epoch).
129
143
  */
130
- DateEncoding[DateEncoding["SECONDS_SINCE_EPOCH"] = 0] = "SECONDS_SINCE_EPOCH";
144
+ DateEncoding[DateEncoding["DECIMAL_SECONDS_SINCE_EPOCH"] = 0] = "DECIMAL_SECONDS_SINCE_EPOCH";
131
145
  /**
132
146
  * Encode the `Date` as UNIX millisecond timestamp (integer milliseconds since epoch).
133
147
  */
@@ -136,6 +150,6 @@ function encodeDate(value, encoding) {
136
150
  * Encode the `Date` as an ISO-8601-formatted string (in RFC 3339 format). This is the default behavior.
137
151
  */
138
152
  DateEncoding[DateEncoding["ISO8601"] = 2] = "ISO8601";
139
- })(DateEncoding = URLEncoder.DateEncoding || (URLEncoder.DateEncoding = {}));
140
- })(URLEncoder || (URLEncoder = {}));
141
- //# sourceMappingURL=url-encoder.js.map
153
+ })(DateEncoding = WWWFormUrlEncoder.DateEncoding || (WWWFormUrlEncoder.DateEncoding = {}));
154
+ })(WWWFormUrlEncoder || (WWWFormUrlEncoder = {}));
155
+ //# sourceMappingURL=www-form-url-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"www-form-url-encoder.js","sourceRoot":"","sources":["../../src/media-type-codecs/www-form-url-encoder.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,92 @@
1
- export declare enum MediaType {
2
- TEXT = "text/plain",
3
- HTML = "text/html",
4
- JSON = "application/json",
5
- YAML = "application/yaml",
6
- CBOR = "application/cbor",
7
- OCTET_STREAM = "application/octet-stream",
8
- EVENT_STREAM = "text/event-stream",
9
- X509_CA_CERT = "application/x-x509-ca-cert",
10
- WWW_URL_FORM_ENCODED = "application/x-www-form-urlencoded",
11
- PROBLEM_JSON = "application/problem+json"
1
+ export declare class MediaType {
2
+ type: MediaType.Type;
3
+ tree: MediaType.Tree;
4
+ subtype: string;
5
+ suffix?: MediaType.Suffix;
6
+ parameters: Record<string, string>;
7
+ constructor(params: {
8
+ type: MediaType.Type;
9
+ tree?: MediaType.Tree;
10
+ subtype: string;
11
+ suffix?: MediaType.Suffix;
12
+ parameters?: Record<string, string>;
13
+ });
14
+ parameter(name: MediaType.ParameterName | string): string | undefined;
15
+ with(params: {
16
+ type?: MediaType.Type;
17
+ tree?: MediaType.Tree;
18
+ subtype?: string;
19
+ suffix?: MediaType.Suffix;
20
+ parameters?: Record<string, string>;
21
+ }): MediaType;
22
+ withParameter(parameter: MediaType.ParameterName | string, value: string): MediaType;
23
+ get value(): string;
24
+ compatible(other: MediaType): boolean;
25
+ equals(other: MediaType): boolean;
26
+ toString(): string;
27
+ }
28
+ export declare namespace MediaType {
29
+ enum Type {
30
+ Application = "application",
31
+ Audio = "audio",
32
+ Example = "example",
33
+ Font = "font",
34
+ Image = "image",
35
+ Message = "message",
36
+ Model = "model",
37
+ Multipart = "multipart",
38
+ Text = "text",
39
+ Video = "video",
40
+ Any = "*"
41
+ }
42
+ namespace Type {
43
+ function from(value: string): Type | undefined;
44
+ }
45
+ enum Tree {
46
+ Standard = "",
47
+ Vendor = "vnd.",
48
+ Personal = "prs.",
49
+ Unregistered = "x.",
50
+ Obsolete = "x-",
51
+ Any = "*"
52
+ }
53
+ namespace Tree {
54
+ function from(value: string): Tree | undefined;
55
+ }
56
+ enum Suffix {
57
+ XML = "xml",
58
+ JSON = "json",
59
+ BER = "ber",
60
+ DER = "der",
61
+ FastInfoSet = "fastinfoset",
62
+ WBXML = "wbxml",
63
+ Zip = "zip",
64
+ CBOR = "cbor"
65
+ }
66
+ namespace Suffix {
67
+ function from(value: string): Suffix | undefined;
68
+ }
69
+ enum ParameterName {
70
+ CharSet = "charset"
71
+ }
72
+ function from(value?: string | null): MediaType | undefined;
73
+ function from(value: string | null | undefined, def: MediaType): MediaType;
74
+ const Plain: MediaType;
75
+ const HTML: MediaType;
76
+ const JSON: MediaType;
77
+ const YAML: MediaType;
78
+ const CBOR: MediaType;
79
+ const EventStream: MediaType;
80
+ const OctetStream: MediaType;
81
+ const WWWFormUrlEncoded: MediaType;
82
+ const X509CACert: MediaType;
83
+ const X509UserCert: MediaType;
84
+ const Any: MediaType;
85
+ const AnyText: MediaType;
86
+ const AnyImage: MediaType;
87
+ const AnyAudio: MediaType;
88
+ const AnyVideo: MediaType;
89
+ const JSONStructured: MediaType;
90
+ const XMLStructured: MediaType;
91
+ const ProblemJSON: MediaType;
12
92
  }
13
- export declare function mediaType(value: string | null | undefined): string | undefined;
14
- export declare function mediaType(value: string | null | undefined, def: string): string;
@@ -1,18 +1,289 @@
1
- export var MediaType;
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 class MediaType {
15
+ constructor(params) {
16
+ var _a, _b;
17
+ this.type = params.type;
18
+ this.tree = (_a = params.tree) !== null && _a !== void 0 ? _a : MediaType.Tree.Standard;
19
+ this.subtype = params.subtype.toLowerCase();
20
+ this.suffix = params.suffix;
21
+ this.parameters = Object.entries((_b = params.parameters) !== null && _b !== void 0 ? _b : {}).reduce((obj, [name, value]) => {
22
+ obj[name.toLowerCase()] = value.toLowerCase();
23
+ return obj;
24
+ }, {});
25
+ }
26
+ parameter(name) {
27
+ return this.parameters[name];
28
+ }
29
+ with(params) {
30
+ var _a, _b, _c, _d, _e;
31
+ return new MediaType({
32
+ type: (_a = params.type) !== null && _a !== void 0 ? _a : this.type,
33
+ tree: (_b = params.tree) !== null && _b !== void 0 ? _b : this.tree,
34
+ subtype: (_c = params.subtype) !== null && _c !== void 0 ? _c : this.subtype,
35
+ suffix: (_d = params.suffix) !== null && _d !== void 0 ? _d : this.suffix,
36
+ parameters: (_e = params.parameters) !== null && _e !== void 0 ? _e : this.parameters,
37
+ });
38
+ }
39
+ withParameter(parameter, value) {
40
+ const parameters = Object.assign({}, this.parameters, {
41
+ [parameter]: value,
42
+ });
43
+ return this.with({ parameters });
44
+ }
45
+ get value() {
46
+ const type = this.type;
47
+ const tree = this.tree;
48
+ const suffix = this.suffix ? `+${this.suffix.toLowerCase()}` : '';
49
+ const parameters = Object.keys(this.parameters)
50
+ .sort()
51
+ .map((key) => `;${key}=${this.parameters[key]}`)
52
+ .join('');
53
+ return `${type}/${tree}${this.subtype}${suffix}${parameters}`;
54
+ }
55
+ compatible(other) {
56
+ if (this.type != MediaType.Type.Any &&
57
+ other.type != MediaType.Type.Any &&
58
+ this.type != other.type) {
59
+ return false;
60
+ }
61
+ if (this.tree != MediaType.Tree.Any &&
62
+ other.tree != MediaType.Tree.Any &&
63
+ this.tree != other.tree) {
64
+ return false;
65
+ }
66
+ if (this.subtype != '*' &&
67
+ other.subtype != '*' &&
68
+ this.subtype != other.subtype) {
69
+ return false;
70
+ }
71
+ if (this.suffix != other.suffix) {
72
+ return false;
73
+ }
74
+ const thisKeys = Object.keys(this.parameters);
75
+ const otherKeys = Object.keys(other.parameters);
76
+ return thisKeys
77
+ .filter((key) => otherKeys.includes(key))
78
+ .every((key) => this.parameters[key] == other.parameters[key]);
79
+ }
80
+ equals(other) {
81
+ if (this === other)
82
+ return true;
83
+ if (this.type != other.type)
84
+ return false;
85
+ if (this.tree != other.tree)
86
+ return false;
87
+ if (this.suffix != other.suffix)
88
+ return false;
89
+ if (this.subtype != other.subtype)
90
+ return false;
91
+ for (const parameterName of Object.keys(this.parameters)) {
92
+ if (this.parameters[parameterName] != other.parameters[parameterName]) {
93
+ return false;
94
+ }
95
+ }
96
+ return true;
97
+ }
98
+ toString() {
99
+ return this.value;
100
+ }
101
+ }
2
102
  (function (MediaType) {
3
- MediaType["TEXT"] = "text/plain";
4
- MediaType["HTML"] = "text/html";
5
- MediaType["JSON"] = "application/json";
6
- MediaType["YAML"] = "application/yaml";
7
- MediaType["CBOR"] = "application/cbor";
8
- MediaType["OCTET_STREAM"] = "application/octet-stream";
9
- MediaType["EVENT_STREAM"] = "text/event-stream";
10
- MediaType["X509_CA_CERT"] = "application/x-x509-ca-cert";
11
- MediaType["WWW_URL_FORM_ENCODED"] = "application/x-www-form-urlencoded";
12
- MediaType["PROBLEM_JSON"] = "application/problem+json";
103
+ let Type;
104
+ (function (Type) {
105
+ Type["Application"] = "application";
106
+ Type["Audio"] = "audio";
107
+ Type["Example"] = "example";
108
+ Type["Font"] = "font";
109
+ Type["Image"] = "image";
110
+ Type["Message"] = "message";
111
+ Type["Model"] = "model";
112
+ Type["Multipart"] = "multipart";
113
+ Type["Text"] = "text";
114
+ Type["Video"] = "video";
115
+ Type["Any"] = "*";
116
+ })(Type = MediaType.Type || (MediaType.Type = {}));
117
+ (function (Type) {
118
+ function from(value) {
119
+ return Object.values(Type).includes(value)
120
+ ? value
121
+ : undefined;
122
+ }
123
+ Type.from = from;
124
+ })(Type = MediaType.Type || (MediaType.Type = {}));
125
+ let Tree;
126
+ (function (Tree) {
127
+ Tree["Standard"] = "";
128
+ Tree["Vendor"] = "vnd.";
129
+ Tree["Personal"] = "prs.";
130
+ Tree["Unregistered"] = "x.";
131
+ Tree["Obsolete"] = "x-";
132
+ Tree["Any"] = "*";
133
+ })(Tree = MediaType.Tree || (MediaType.Tree = {}));
134
+ (function (Tree) {
135
+ function from(value) {
136
+ return Object.values(Tree).includes(value)
137
+ ? value
138
+ : undefined;
139
+ }
140
+ Tree.from = from;
141
+ })(Tree = MediaType.Tree || (MediaType.Tree = {}));
142
+ let Suffix;
143
+ (function (Suffix) {
144
+ Suffix["XML"] = "xml";
145
+ Suffix["JSON"] = "json";
146
+ Suffix["BER"] = "ber";
147
+ Suffix["DER"] = "der";
148
+ Suffix["FastInfoSet"] = "fastinfoset";
149
+ Suffix["WBXML"] = "wbxml";
150
+ Suffix["Zip"] = "zip";
151
+ Suffix["CBOR"] = "cbor";
152
+ })(Suffix = MediaType.Suffix || (MediaType.Suffix = {}));
153
+ (function (Suffix) {
154
+ function from(value) {
155
+ return Object.values(Suffix).includes(value)
156
+ ? value
157
+ : undefined;
158
+ }
159
+ Suffix.from = from;
160
+ })(Suffix = MediaType.Suffix || (MediaType.Suffix = {}));
161
+ let ParameterName;
162
+ (function (ParameterName) {
163
+ ParameterName["CharSet"] = "charset";
164
+ })(ParameterName = MediaType.ParameterName || (MediaType.ParameterName = {}));
165
+ function from(value, def = undefined) {
166
+ var _a, _b, _c, _d, _e, _f;
167
+ if (!value) {
168
+ return def;
169
+ }
170
+ fullRegex.lastIndex = 0;
171
+ const match = fullRegex.exec(value);
172
+ if ((match === null || match === void 0 ? void 0 : match[0]) != value) {
173
+ return def;
174
+ }
175
+ const type = MediaType.Type.from((_a = match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase());
176
+ if (!type) {
177
+ return def;
178
+ }
179
+ const tree = (_c = MediaType.Tree.from((_b = match[2]) === null || _b === void 0 ? void 0 : _b.toLowerCase())) !== null && _c !== void 0 ? _c : MediaType.Tree.Standard;
180
+ const subtype = (_d = match[3]) === null || _d === void 0 ? void 0 : _d.toLowerCase();
181
+ if (!subtype) {
182
+ return def;
183
+ }
184
+ const suffix = MediaType.Suffix.from((_e = match[4]) === null || _e === void 0 ? void 0 : _e.toLowerCase());
185
+ const parameters = {};
186
+ let parametersMatch = paramRegex.exec((_f = match[5]) !== null && _f !== void 0 ? _f : '');
187
+ while (parametersMatch === null || parametersMatch === void 0 ? void 0 : parametersMatch[0]) {
188
+ const name = parametersMatch[1];
189
+ if (!name)
190
+ continue;
191
+ const value = parametersMatch[2];
192
+ if (!value)
193
+ continue;
194
+ parameters[name.toLowerCase()] = value.toLowerCase();
195
+ parametersMatch = paramRegex.exec(match[5]);
196
+ }
197
+ return new MediaType({
198
+ type,
199
+ tree,
200
+ subtype,
201
+ suffix,
202
+ parameters,
203
+ });
204
+ }
205
+ MediaType.from = from;
206
+ const fullRegex = /^((?:[a-z]+|\*))\/(x(?:-|\\.)|(?:(?:vnd|prs|x)\.)|\*)?([a-z0-9\-.]+|\*)(?:\+([a-z]+))?( *(?:; *(?:(?:[\w.-]+) *= *(?:[\w.-]+)) *)*)$/gi;
207
+ const paramRegex = / *; *([\w.-]+) *= *([\w.-]+)/gi;
208
+ MediaType.Plain = new MediaType({
209
+ type: MediaType.Type.Text,
210
+ subtype: 'plain',
211
+ });
212
+ MediaType.HTML = new MediaType({
213
+ type: MediaType.Type.Text,
214
+ subtype: 'html',
215
+ });
216
+ MediaType.JSON = new MediaType({
217
+ type: MediaType.Type.Application,
218
+ subtype: 'json',
219
+ });
220
+ MediaType.YAML = new MediaType({
221
+ type: MediaType.Type.Application,
222
+ subtype: 'yaml',
223
+ });
224
+ MediaType.CBOR = new MediaType({
225
+ type: MediaType.Type.Application,
226
+ subtype: 'cbor',
227
+ });
228
+ MediaType.EventStream = new MediaType({
229
+ type: MediaType.Type.Text,
230
+ subtype: 'event-stream',
231
+ });
232
+ MediaType.OctetStream = new MediaType({
233
+ type: MediaType.Type.Application,
234
+ subtype: 'octet-stream',
235
+ });
236
+ MediaType.WWWFormUrlEncoded = new MediaType({
237
+ type: MediaType.Type.Application,
238
+ tree: MediaType.Tree.Obsolete,
239
+ subtype: 'www-form-urlencoded',
240
+ });
241
+ MediaType.X509CACert = new MediaType({
242
+ type: MediaType.Type.Application,
243
+ tree: MediaType.Tree.Obsolete,
244
+ subtype: 'x509-ca-cert',
245
+ });
246
+ MediaType.X509UserCert = new MediaType({
247
+ type: MediaType.Type.Application,
248
+ tree: MediaType.Tree.Obsolete,
249
+ subtype: 'x509-user-cert',
250
+ });
251
+ MediaType.Any = new MediaType({
252
+ type: MediaType.Type.Any,
253
+ subtype: '*',
254
+ });
255
+ MediaType.AnyText = new MediaType({
256
+ type: MediaType.Type.Text,
257
+ subtype: '*',
258
+ });
259
+ MediaType.AnyImage = new MediaType({
260
+ type: MediaType.Type.Image,
261
+ subtype: '*',
262
+ });
263
+ MediaType.AnyAudio = new MediaType({
264
+ type: MediaType.Type.Audio,
265
+ subtype: '*',
266
+ });
267
+ MediaType.AnyVideo = new MediaType({
268
+ type: MediaType.Type.Video,
269
+ subtype: '*',
270
+ });
271
+ MediaType.JSONStructured = new MediaType({
272
+ type: MediaType.Type.Any,
273
+ tree: MediaType.Tree.Any,
274
+ subtype: '*',
275
+ suffix: Suffix.JSON,
276
+ });
277
+ MediaType.XMLStructured = new MediaType({
278
+ type: MediaType.Type.Any,
279
+ tree: MediaType.Tree.Any,
280
+ subtype: '*',
281
+ suffix: Suffix.XML,
282
+ });
283
+ MediaType.ProblemJSON = new MediaType({
284
+ type: MediaType.Type.Application,
285
+ subtype: 'problem',
286
+ suffix: Suffix.JSON,
287
+ });
13
288
  })(MediaType || (MediaType = {}));
14
- export function mediaType(value, def) {
15
- var _a;
16
- return (_a = value === null || value === void 0 ? void 0 : value.split(';')[0].trim()) !== null && _a !== void 0 ? _a : def;
17
- }
18
289
  //# sourceMappingURL=media-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-type.js","sourceRoot":"","sources":["../src/media-type.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,+BAAkB,CAAA;IAClB,sCAAyB,CAAA;IACzB,sCAAyB,CAAA;IACzB,sCAAyB,CAAA;IACzB,sDAAyC,CAAA;IACzC,+CAAkC,CAAA;IAClC,wDAA2C,CAAA;IAC3C,uEAA0D,CAAA;IAC1D,sDAAyC,CAAA;AAC3C,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AAQD,MAAM,UAAU,SAAS,CACvB,KAAgC,EAChC,GAAY;;IAEZ,aAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,qCAAM,GAAG,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"media-type.js","sourceRoot":"","sources":["../src/media-type.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,MAAM,OAAO,SAAS;IAOpB,YAAY,MAMX;;QACC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,mCAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC9D,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACrB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAsC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,MAMJ;;QACC,OAAO,IAAI,SAAS,CAAC;YACnB,IAAI,EAAE,MAAA,MAAM,CAAC,IAAI,mCAAI,IAAI,CAAC,IAAI;YAC9B,IAAI,EAAE,MAAA,MAAM,CAAC,IAAI,mCAAI,IAAI,CAAC,IAAI;YAC9B,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,mCAAI,IAAI,CAAC,OAAO;YACvC,MAAM,EAAE,MAAA,MAAM,CAAC,MAAM,mCAAI,IAAI,CAAC,MAAM;YACpC,UAAU,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,IAAI,CAAC,UAAU;SACjD,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CACX,SAA2C,EAC3C,KAAa;QAEb,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE;YACpD,CAAC,SAAS,CAAC,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;aAC5C,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,IACE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAC/B,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAChC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EACvB;YACA,OAAO,KAAK,CAAC;SACd;QACD,IACE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAC/B,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAChC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EACvB;YACA,OAAO,KAAK,CAAC;SACd;QACD,IACE,IAAI,CAAC,OAAO,IAAI,GAAG;YACnB,KAAK,CAAC,OAAO,IAAI,GAAG;YACpB,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAC7B;YACA,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAEhC,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChD,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACxD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBACrE,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,WAAiB,SAAS;IACxB,IAAY,IAYX;IAZD,WAAY,IAAI;QACd,mCAA2B,CAAA;QAC3B,uBAAe,CAAA;QACf,2BAAmB,CAAA;QACnB,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,+BAAuB,CAAA;QACvB,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,iBAAS,CAAA;IACX,CAAC,EAZW,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAYf;IAED,WAAiB,IAAI;QACnB,SAAgB,IAAI,CAAC,KAAa;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAa,CAAC;gBAChD,CAAC,CAAE,KAAc;gBACjB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAJe,SAAI,OAInB,CAAA;IACH,CAAC,EANgB,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAMpB;IAED,IAAY,IAOX;IAPD,WAAY,IAAI;QACd,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,yBAAiB,CAAA;QACjB,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,iBAAS,CAAA;IACX,CAAC,EAPW,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAOf;IAED,WAAiB,IAAI;QACnB,SAAgB,IAAI,CAAC,KAAa;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAa,CAAC;gBAChD,CAAC,CAAE,KAAc;gBACjB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAJe,SAAI,OAInB,CAAA;IACH,CAAC,EANgB,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAMpB;IAED,IAAY,MASX;IATD,WAAY,MAAM;QAChB,qBAAW,CAAA;QACX,uBAAa,CAAA;QACb,qBAAW,CAAA;QACX,qBAAW,CAAA;QACX,qCAA2B,CAAA;QAC3B,yBAAe,CAAA;QACf,qBAAW,CAAA;QACX,uBAAa,CAAA;IACf,CAAC,EATW,MAAM,GAAN,gBAAM,KAAN,gBAAM,QASjB;IAED,WAAiB,MAAM;QACrB,SAAgB,IAAI,CAAC,KAAa;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAe,CAAC;gBACpD,CAAC,CAAE,KAAgB;gBACnB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAJe,WAAI,OAInB,CAAA;IACH,CAAC,EANgB,MAAM,GAAN,gBAAM,KAAN,gBAAM,QAMtB;IAED,IAAY,aAEX;IAFD,WAAY,aAAa;QACvB,oCAAmB,CAAA;IACrB,CAAC,EAFW,aAAa,GAAb,uBAAa,KAAb,uBAAa,QAExB;IAOD,SAAgB,IAAI,CAClB,KAAqB,EACrB,MAA6B,SAAS;;QAEtC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,GAAG,CAAC;SACZ;QAED,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,KAAI,KAAK,EAAE;YACvB,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,IAAI,GACR,MAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAC,mCAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE1E,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,IAAI,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;QACtD,OAAO,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,CAAC,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAErD,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7C;QAED,OAAO,IAAI,SAAS,CAAC;YACnB,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAnDe,cAAI,OAmDnB,CAAA;IAED,MAAM,SAAS,GACb,wIAAwI,CAAC;IAC3I,MAAM,UAAU,GAAG,gCAAgC,CAAC;IAEvC,eAAK,GAAG,IAAI,SAAS,CAAC;QACjC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IACU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACU,qBAAW,GAAG,IAAI,SAAS,CAAC;QACvC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IACU,qBAAW,GAAG,IAAI,SAAS,CAAC;QACvC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IACU,2BAAiB,GAAG,IAAI,SAAS,CAAC;QAC7C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;QAC7B,OAAO,EAAE,qBAAqB;KAC/B,CAAC,CAAC;IACU,oBAAU,GAAG,IAAI,SAAS,CAAC;QACtC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;QAC7B,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IACU,sBAAY,GAAG,IAAI,SAAS,CAAC;QACxC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;QAC7B,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IAEU,aAAG,GAAG,IAAI,SAAS,CAAC;QAC/B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IACU,iBAAO,GAAG,IAAI,SAAS,CAAC;QACnC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IACU,kBAAQ,GAAG,IAAI,SAAS,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;QAC1B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IACU,kBAAQ,GAAG,IAAI,SAAS,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;QAC1B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IACU,kBAAQ,GAAG,IAAI,SAAS,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;QAC1B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEU,wBAAc,GAAG,IAAI,SAAS,CAAC;QAC1C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CAAC;IACU,uBAAa,GAAG,IAAI,SAAS,CAAC;QACzC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,GAAG;KACnB,CAAC,CAAC;IAEU,qBAAW,GAAG,IAAI,SAAS,CAAC;QACvC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CAAC;AACL,CAAC,EAhNgB,SAAS,KAAT,SAAS,QAgNzB"}
package/dist/problem.d.ts CHANGED
@@ -1,16 +1,31 @@
1
- export interface Problem {
2
- type: string;
1
+ export interface ProblemSpec {
2
+ type: URL | string;
3
+ title: string;
3
4
  status: number;
5
+ detail?: string;
6
+ instance?: URL | string;
7
+ [key: string]: unknown;
8
+ }
9
+ export interface Problem {
10
+ type: URL;
4
11
  title: string;
5
- detail: string;
6
- instance: string;
12
+ status: number;
13
+ detail?: string;
14
+ instance?: URL;
7
15
  [key: string]: unknown;
8
16
  }
9
17
  export declare class Problem extends Error implements Problem {
10
- type: string;
11
- status: number;
18
+ type: URL;
12
19
  title: string;
13
- detail: string;
14
- instance: string;
15
- constructor(json: Record<string, unknown>);
20
+ status: number;
21
+ detail?: string;
22
+ instance?: URL;
23
+ private _parameters?;
24
+ get parameters(): Record<string, unknown> | undefined;
25
+ private setParameter;
26
+ constructor(spec: ProblemSpec);
27
+ toString(): string;
28
+ static fromStatus(status: number, title: string): Problem;
29
+ static fromResponse(response: Response): Promise<Problem>;
30
+ private static parseURL;
16
31
  }