@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.
Files changed (151) hide show
  1. package/README.md +35 -2
  2. package/dist/any-type.d.ts +2 -0
  3. package/dist/class-type.d.ts +2 -2
  4. package/dist/date-time-types.d.ts +2 -7
  5. package/dist/date-time-types.js +2 -4
  6. package/dist/date-time-types.js.map +1 -1
  7. package/dist/event-parser.d.ts +17 -0
  8. package/dist/event-parser.js +140 -0
  9. package/dist/event-parser.js.map +1 -0
  10. package/dist/fetch-event-source.d.ts +12 -10
  11. package/dist/fetch-event-source.js +141 -138
  12. package/dist/fetch-event-source.js.map +1 -1
  13. package/dist/fetch-request-factory.d.ts +10 -5
  14. package/dist/fetch-request-factory.js +87 -71
  15. package/dist/fetch-request-factory.js.map +1 -1
  16. package/dist/fetch.d.ts +7 -1
  17. package/dist/fetch.js +61 -8
  18. package/dist/fetch.js.map +1 -1
  19. package/dist/header-parameters.d.ts +3 -0
  20. package/dist/header-parameters.js +40 -0
  21. package/dist/header-parameters.js.map +1 -0
  22. package/dist/index.d.ts +12 -12
  23. package/dist/index.js +12 -12
  24. package/dist/index.js.map +1 -1
  25. package/dist/{binary-decoder.d.ts → media-type-codecs/binary-decoder.d.ts} +2 -2
  26. package/dist/{binary-decoder.js → media-type-codecs/binary-decoder.js} +0 -0
  27. package/dist/media-type-codecs/binary-decoder.js.map +1 -0
  28. package/dist/{binary-encoder.d.ts → media-type-codecs/binary-encoder.d.ts} +0 -0
  29. package/dist/{binary-encoder.js → media-type-codecs/binary-encoder.js} +0 -0
  30. package/dist/media-type-codecs/binary-encoder.js.map +1 -0
  31. package/dist/media-type-codecs/cbor-decoder.d.ts +39 -0
  32. package/dist/media-type-codecs/cbor-decoder.js +413 -0
  33. package/dist/media-type-codecs/cbor-decoder.js.map +1 -0
  34. package/dist/media-type-codecs/cbor-encoder.d.ts +43 -0
  35. package/dist/media-type-codecs/cbor-encoder.js +226 -0
  36. package/dist/media-type-codecs/cbor-encoder.js.map +1 -0
  37. package/dist/media-type-codecs/cbor-tags.d.ts +4 -0
  38. package/dist/media-type-codecs/cbor-tags.js +5 -0
  39. package/dist/media-type-codecs/cbor-tags.js.map +1 -0
  40. package/dist/media-type-codecs/json-decoder.d.ts +39 -0
  41. package/dist/media-type-codecs/json-decoder.js +367 -0
  42. package/dist/media-type-codecs/json-decoder.js.map +1 -0
  43. package/dist/media-type-codecs/json-encoder.d.ts +44 -0
  44. package/dist/media-type-codecs/json-encoder.js +263 -0
  45. package/dist/media-type-codecs/json-encoder.js.map +1 -0
  46. package/dist/media-type-codecs/media-type-decoder.d.ts +11 -0
  47. package/dist/media-type-codecs/media-type-decoder.js +6 -0
  48. package/dist/media-type-codecs/media-type-decoder.js.map +1 -0
  49. package/dist/{media-type-decoders.d.ts → media-type-codecs/media-type-decoders.d.ts} +5 -4
  50. package/dist/{media-type-decoders.js → media-type-codecs/media-type-decoders.js} +6 -6
  51. package/dist/media-type-codecs/media-type-decoders.js.map +1 -0
  52. package/dist/{media-type-encoder.d.ts → media-type-codecs/media-type-encoder.d.ts} +5 -1
  53. package/dist/media-type-codecs/media-type-encoder.js +11 -0
  54. package/dist/media-type-codecs/media-type-encoder.js.map +1 -0
  55. package/dist/{media-type-encoders.d.ts → media-type-codecs/media-type-encoders.d.ts} +5 -4
  56. package/dist/{media-type-encoders.js → media-type-codecs/media-type-encoders.js} +8 -8
  57. package/dist/media-type-codecs/media-type-encoders.js.map +1 -0
  58. package/dist/{url-encoder.d.ts → media-type-codecs/www-form-url-encoder.d.ts} +8 -8
  59. package/dist/{url-encoder.js → media-type-codecs/www-form-url-encoder.js} +38 -37
  60. package/dist/media-type-codecs/www-form-url-encoder.js.map +1 -0
  61. package/dist/media-type.d.ts +91 -13
  62. package/dist/media-type.js +273 -15
  63. package/dist/media-type.js.map +1 -1
  64. package/dist/problem.d.ts +24 -9
  65. package/dist/problem.js +140 -6
  66. package/dist/problem.js.map +1 -1
  67. package/dist/request-factory.d.ts +10 -10
  68. package/dist/sunday-error.d.ts +11 -0
  69. package/dist/sunday-error.js +18 -0
  70. package/dist/sunday-error.js.map +1 -0
  71. package/dist/util/any.d.ts +2 -0
  72. package/dist/util/any.js +11 -0
  73. package/dist/util/any.js.map +1 -0
  74. package/dist/util/error.d.ts +2 -0
  75. package/dist/util/error.js +13 -0
  76. package/dist/util/error.js.map +1 -0
  77. package/dist/util/hex.js +3 -2
  78. package/dist/util/hex.js.map +1 -1
  79. package/dist/util/rxjs.d.ts +3 -0
  80. package/dist/util/rxjs.js +9 -5
  81. package/dist/util/rxjs.js.map +1 -1
  82. package/dist/util/temporal.d.ts +2 -0
  83. package/dist/util/temporal.js +18 -0
  84. package/dist/util/temporal.js.map +1 -0
  85. package/package.json +27 -21
  86. package/src/any-type.ts +4 -0
  87. package/src/class-type.ts +6 -2
  88. package/src/date-time-types.ts +22 -9
  89. package/src/event-parser.ts +190 -0
  90. package/src/fetch-event-source.ts +149 -159
  91. package/src/fetch-request-factory.ts +129 -101
  92. package/src/fetch.ts +65 -14
  93. package/src/header-parameters.ts +52 -0
  94. package/src/index.ts +12 -12
  95. package/src/{binary-decoder.ts → media-type-codecs/binary-decoder.ts} +3 -3
  96. package/src/{binary-encoder.ts → media-type-codecs/binary-encoder.ts} +0 -0
  97. package/src/media-type-codecs/cbor-decoder.ts +515 -0
  98. package/src/media-type-codecs/cbor-encoder.ts +307 -0
  99. package/src/media-type-codecs/cbor-tags.ts +4 -0
  100. package/src/media-type-codecs/json-decoder.ts +470 -0
  101. package/src/media-type-codecs/json-encoder.ts +328 -0
  102. package/src/media-type-codecs/media-type-decoder.ts +20 -0
  103. package/src/{media-type-decoders.ts → media-type-codecs/media-type-decoders.ts} +21 -13
  104. package/src/media-type-codecs/media-type-encoder.ts +31 -0
  105. package/src/{media-type-encoders.ts → media-type-codecs/media-type-encoders.ts} +23 -15
  106. package/src/{url-encoder.ts → media-type-codecs/www-form-url-encoder.ts} +53 -47
  107. package/src/media-type.ts +326 -22
  108. package/src/problem.ts +144 -12
  109. package/src/request-factory.ts +21 -12
  110. package/src/sunday-error.ts +37 -0
  111. package/src/util/any.ts +10 -0
  112. package/src/util/error.ts +14 -0
  113. package/src/util/hex.ts +3 -2
  114. package/src/util/rxjs.ts +16 -5
  115. package/src/util/temporal.ts +18 -0
  116. package/dist/binary-decoder.js.map +0 -1
  117. package/dist/binary-encoder.js.map +0 -1
  118. package/dist/cbor-decoder.d.ts +0 -15
  119. package/dist/cbor-decoder.js +0 -126
  120. package/dist/cbor-decoder.js.map +0 -1
  121. package/dist/cbor-encoder.d.ts +0 -29
  122. package/dist/cbor-encoder.js +0 -81
  123. package/dist/cbor-encoder.js.map +0 -1
  124. package/dist/cbor-tags.d.ts +0 -3
  125. package/dist/cbor-tags.js +0 -4
  126. package/dist/cbor-tags.js.map +0 -1
  127. package/dist/http-error.d.ts +0 -10
  128. package/dist/http-error.js +0 -45
  129. package/dist/http-error.js.map +0 -1
  130. package/dist/json-decoder.d.ts +0 -31
  131. package/dist/json-decoder.js +0 -139
  132. package/dist/json-decoder.js.map +0 -1
  133. package/dist/json-encoder.d.ts +0 -35
  134. package/dist/json-encoder.js +0 -116
  135. package/dist/json-encoder.js.map +0 -1
  136. package/dist/media-type-decoder.d.ts +0 -4
  137. package/dist/media-type-decoder.js +0 -2
  138. package/dist/media-type-decoder.js.map +0 -1
  139. package/dist/media-type-decoders.js.map +0 -1
  140. package/dist/media-type-encoder.js +0 -6
  141. package/dist/media-type-encoder.js.map +0 -1
  142. package/dist/media-type-encoders.js.map +0 -1
  143. package/dist/url-encoder.js.map +0 -1
  144. package/src/cbor-decoder.ts +0 -148
  145. package/src/cbor-encoder.ts +0 -95
  146. package/src/cbor-tags.ts +0 -3
  147. package/src/http-error.ts +0 -55
  148. package/src/json-decoder.ts +0 -164
  149. package/src/json-encoder.ts +0 -144
  150. package/src/media-type-decoder.ts +0 -5
  151. package/src/media-type-encoder.ts +0 -16
@@ -1,6 +1,6 @@
1
- import { DateTime } from 'luxon';
1
+ import { Instant } from '@js-joda/core';
2
2
  import { JsonStringifier } from '@outfoxx/jackson-js';
3
- export class URLEncoder {
3
+ export class WWWFormUrlEncoder {
4
4
  constructor(arrayEncoding, boolEncoding, dateEncoding, json = new JsonStringifier(), encoder = new TextEncoder()) {
5
5
  this.arrayEncoding = arrayEncoding;
6
6
  this.boolEncoding = boolEncoding;
@@ -9,7 +9,7 @@ export class URLEncoder {
9
9
  this.encoder = encoder;
10
10
  }
11
11
  static get default() {
12
- return new URLEncoder(URLEncoder.ArrayEncoding.BRACKETED, URLEncoder.BoolEncoding.NUMERIC, URLEncoder.DateEncoding.ISO8601);
12
+ return new WWWFormUrlEncoder(WWWFormUrlEncoder.ArrayEncoding.UNBRACKETED, WWWFormUrlEncoder.BoolEncoding.LITERAL, WWWFormUrlEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH);
13
13
  }
14
14
  encode(value) {
15
15
  const parameters = this.json.transform(value);
@@ -20,77 +20,78 @@ export class URLEncoder {
20
20
  for (const key of Object.keys(parameters).sort()) {
21
21
  components.push(...this.encodeQueryComponent(key, parameters[key]));
22
22
  }
23
- return components.map((e) => `${e[0]}=${e[1]}`).join('&');
23
+ return components.join('&');
24
24
  }
25
25
  encodeQueryComponent(key, value) {
26
26
  const components = [];
27
27
  if (value === undefined) {
28
28
  return components;
29
29
  }
30
- if (value instanceof Array) {
30
+ if (value == null) {
31
+ //
32
+ components.push(encodeURIComponent(key));
33
+ }
34
+ else if (value instanceof Array) {
31
35
  // encode key according to `arrayEncoding`
32
36
  for (const item of value) {
33
37
  components.push(...this.encodeQueryComponent(encodeArrayKey(key, this.arrayEncoding), item));
34
38
  }
35
39
  }
36
- else if (DateTime.isDateTime(value) || value instanceof DateTime) {
40
+ else if (value instanceof Instant) {
37
41
  //
38
- components.push([
39
- encodeURIComponent(key),
40
- encodeURIComponent(encodeDate(value, this.dateEncoding)),
41
- ]);
42
+ components.push(encodeURIComponent(key) +
43
+ '=' +
44
+ encodeURIComponent(encodeDate(value, this.dateEncoding)));
42
45
  }
43
46
  else if (typeof value === 'boolean') {
44
47
  //
45
- components.push([
46
- encodeURIComponent(key),
47
- encodeURIComponent(encodeBoolean(value, this.boolEncoding)),
48
- ]);
48
+ components.push(encodeURIComponent(key) +
49
+ '=' +
50
+ encodeURIComponent(encodeBoolean(value, this.boolEncoding)));
49
51
  }
50
52
  else if (typeof value === 'object') {
51
53
  //
52
54
  const rec = (value !== null && value !== void 0 ? value : {});
53
- for (const nestedKey of Object.keys(rec)) {
55
+ for (const nestedKey of Object.keys(rec).sort()) {
54
56
  components.push(...this.encodeQueryComponent(`${key}[${nestedKey}]`, rec[nestedKey]));
55
57
  }
56
58
  }
57
59
  else {
58
60
  //
59
- components.push([
60
- encodeURIComponent(key),
61
- encodeURIComponent(`${value}`),
62
- ]);
61
+ components.push(encodeURIComponent(key) + '=' + encodeURIComponent(`${value}`));
63
62
  }
64
63
  return components;
65
64
  }
66
65
  }
67
66
  function encodeArrayKey(key, encoding) {
68
- return encoding === URLEncoder.ArrayEncoding.BRACKETED ? `${key}[]` : key;
67
+ return encoding === WWWFormUrlEncoder.ArrayEncoding.BRACKETED
68
+ ? `${key}[]`
69
+ : key;
69
70
  }
70
71
  function encodeBoolean(value, encoding) {
71
72
  switch (encoding) {
72
- case URLEncoder.BoolEncoding.NUMERIC:
73
+ case WWWFormUrlEncoder.BoolEncoding.NUMERIC:
73
74
  return value ? '1' : '0';
74
- case URLEncoder.BoolEncoding.LITERAL:
75
+ case WWWFormUrlEncoder.BoolEncoding.LITERAL:
75
76
  return value ? 'true' : 'false';
76
77
  default:
77
78
  throw new Error('unknown boolean encoding');
78
79
  }
79
80
  }
80
81
  function encodeDate(value, encoding) {
81
- value = value instanceof Date ? DateTime.fromJSDate(value) : value;
82
+ value = value instanceof Date ? Instant.ofEpochMilli(value.getTime()) : value;
82
83
  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();
84
+ case WWWFormUrlEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
85
+ return (value.epochSecond() + value.nano() / 1000000000).toFixed(7);
86
+ case WWWFormUrlEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
87
+ return `${value.toEpochMilli()}`;
88
+ case WWWFormUrlEncoder.DateEncoding.ISO8601:
89
+ return value.toString();
89
90
  default:
90
91
  throw new Error('unknown date encoding');
91
92
  }
92
93
  }
93
- (function (URLEncoder) {
94
+ (function (WWWFormUrlEncoder) {
94
95
  /**
95
96
  * Configures how `Array` parameters are encoded.
96
97
  */
@@ -104,7 +105,7 @@ function encodeDate(value, encoding) {
104
105
  * No brackets are appended. The key is encoded as is.
105
106
  */
106
107
  ArrayEncoding[ArrayEncoding["UNBRACKETED"] = 1] = "UNBRACKETED";
107
- })(ArrayEncoding = URLEncoder.ArrayEncoding || (URLEncoder.ArrayEncoding = {}));
108
+ })(ArrayEncoding = WWWFormUrlEncoder.ArrayEncoding || (WWWFormUrlEncoder.ArrayEncoding = {}));
108
109
  /**
109
110
  * Configures how `Bool` parameters are encoded.
110
111
  */
@@ -118,16 +119,16 @@ function encodeDate(value, encoding) {
118
119
  * Encode `true` and `false` as string literals.
119
120
  */
120
121
  BoolEncoding[BoolEncoding["LITERAL"] = 1] = "LITERAL";
121
- })(BoolEncoding = URLEncoder.BoolEncoding || (URLEncoder.BoolEncoding = {}));
122
+ })(BoolEncoding = WWWFormUrlEncoder.BoolEncoding || (WWWFormUrlEncoder.BoolEncoding = {}));
122
123
  /**
123
124
  * Configures how `Date` parameters are encoded.
124
125
  */
125
126
  let DateEncoding;
126
127
  (function (DateEncoding) {
127
128
  /**
128
- * Encode the `Date` as a UNIX timestamp (floating point seconds since epoch).
129
+ * Encode the `Date` as a UNIX timestamp (decimal seconds since epoch).
129
130
  */
130
- DateEncoding[DateEncoding["SECONDS_SINCE_EPOCH"] = 0] = "SECONDS_SINCE_EPOCH";
131
+ DateEncoding[DateEncoding["DECIMAL_SECONDS_SINCE_EPOCH"] = 0] = "DECIMAL_SECONDS_SINCE_EPOCH";
131
132
  /**
132
133
  * Encode the `Date` as UNIX millisecond timestamp (integer milliseconds since epoch).
133
134
  */
@@ -136,6 +137,6 @@ function encodeDate(value, encoding) {
136
137
  * Encode the `Date` as an ISO-8601-formatted string (in RFC 3339 format). This is the default behavior.
137
138
  */
138
139
  DateEncoding[DateEncoding["ISO8601"] = 2] = "ISO8601";
139
- })(DateEncoding = URLEncoder.DateEncoding || (URLEncoder.DateEncoding = {}));
140
- })(URLEncoder || (URLEncoder = {}));
141
- //# sourceMappingURL=url-encoder.js.map
140
+ })(DateEncoding = WWWFormUrlEncoder.DateEncoding || (WWWFormUrlEncoder.DateEncoding = {}));
141
+ })(WWWFormUrlEncoder || (WWWFormUrlEncoder = {}));
142
+ //# 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,276 @@
1
- export var MediaType;
1
+ export class MediaType {
2
+ constructor(params) {
3
+ var _a, _b;
4
+ this.type = params.type;
5
+ this.tree = (_a = params.tree) !== null && _a !== void 0 ? _a : MediaType.Tree.Standard;
6
+ this.subtype = params.subtype.toLowerCase();
7
+ this.suffix = params.suffix;
8
+ this.parameters = Object.entries((_b = params.parameters) !== null && _b !== void 0 ? _b : {}).reduce((obj, [name, value]) => {
9
+ obj[name.toLowerCase()] = value.toLowerCase();
10
+ return obj;
11
+ }, {});
12
+ }
13
+ parameter(name) {
14
+ return this.parameters[name];
15
+ }
16
+ with(params) {
17
+ var _a, _b, _c, _d, _e;
18
+ return new MediaType({
19
+ type: (_a = params.type) !== null && _a !== void 0 ? _a : this.type,
20
+ tree: (_b = params.tree) !== null && _b !== void 0 ? _b : this.tree,
21
+ subtype: (_c = params.subtype) !== null && _c !== void 0 ? _c : this.subtype,
22
+ suffix: (_d = params.suffix) !== null && _d !== void 0 ? _d : this.suffix,
23
+ parameters: (_e = params.parameters) !== null && _e !== void 0 ? _e : this.parameters,
24
+ });
25
+ }
26
+ withParameter(parameter, value) {
27
+ const parameters = Object.assign({}, this.parameters, {
28
+ [parameter]: value,
29
+ });
30
+ return this.with({ parameters });
31
+ }
32
+ get value() {
33
+ const type = this.type;
34
+ const tree = this.tree;
35
+ const suffix = this.suffix ? `+${this.suffix.toLowerCase()}` : '';
36
+ const parameters = Object.keys(this.parameters)
37
+ .sort()
38
+ .map((key) => `;${key}=${this.parameters[key]}`)
39
+ .join('');
40
+ return `${type}/${tree}${this.subtype}${suffix}${parameters}`;
41
+ }
42
+ compatible(other) {
43
+ if (this.type != MediaType.Type.Any &&
44
+ other.type != MediaType.Type.Any &&
45
+ this.type != other.type) {
46
+ return false;
47
+ }
48
+ if (this.tree != MediaType.Tree.Any &&
49
+ other.tree != MediaType.Tree.Any &&
50
+ this.tree != other.tree) {
51
+ return false;
52
+ }
53
+ if (this.subtype != '*' &&
54
+ other.subtype != '*' &&
55
+ this.subtype != other.subtype) {
56
+ return false;
57
+ }
58
+ if (this.suffix != other.suffix) {
59
+ return false;
60
+ }
61
+ const thisKeys = Object.keys(this.parameters);
62
+ const otherKeys = Object.keys(other.parameters);
63
+ return thisKeys
64
+ .filter((key) => otherKeys.includes(key))
65
+ .every((key) => this.parameters[key] == other.parameters[key]);
66
+ }
67
+ equals(other) {
68
+ if (this === other)
69
+ return true;
70
+ if (this.type != other.type)
71
+ return false;
72
+ if (this.tree != other.tree)
73
+ return false;
74
+ if (this.suffix != other.suffix)
75
+ return false;
76
+ if (this.subtype != other.subtype)
77
+ return false;
78
+ for (const parameterName of Object.keys(this.parameters)) {
79
+ if (this.parameters[parameterName] != other.parameters[parameterName]) {
80
+ return false;
81
+ }
82
+ }
83
+ return true;
84
+ }
85
+ toString() {
86
+ return this.value;
87
+ }
88
+ }
2
89
  (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";
90
+ let Type;
91
+ (function (Type) {
92
+ Type["Application"] = "application";
93
+ Type["Audio"] = "audio";
94
+ Type["Example"] = "example";
95
+ Type["Font"] = "font";
96
+ Type["Image"] = "image";
97
+ Type["Message"] = "message";
98
+ Type["Model"] = "model";
99
+ Type["Multipart"] = "multipart";
100
+ Type["Text"] = "text";
101
+ Type["Video"] = "video";
102
+ Type["Any"] = "*";
103
+ })(Type = MediaType.Type || (MediaType.Type = {}));
104
+ (function (Type) {
105
+ function from(value) {
106
+ return Object.values(Type).includes(value)
107
+ ? value
108
+ : undefined;
109
+ }
110
+ Type.from = from;
111
+ })(Type = MediaType.Type || (MediaType.Type = {}));
112
+ let Tree;
113
+ (function (Tree) {
114
+ Tree["Standard"] = "";
115
+ Tree["Vendor"] = "vnd.";
116
+ Tree["Personal"] = "prs.";
117
+ Tree["Unregistered"] = "x.";
118
+ Tree["Obsolete"] = "x-";
119
+ Tree["Any"] = "*";
120
+ })(Tree = MediaType.Tree || (MediaType.Tree = {}));
121
+ (function (Tree) {
122
+ function from(value) {
123
+ return Object.values(Tree).includes(value)
124
+ ? value
125
+ : undefined;
126
+ }
127
+ Tree.from = from;
128
+ })(Tree = MediaType.Tree || (MediaType.Tree = {}));
129
+ let Suffix;
130
+ (function (Suffix) {
131
+ Suffix["XML"] = "xml";
132
+ Suffix["JSON"] = "json";
133
+ Suffix["BER"] = "ber";
134
+ Suffix["DER"] = "der";
135
+ Suffix["FastInfoSet"] = "fastinfoset";
136
+ Suffix["WBXML"] = "wbxml";
137
+ Suffix["Zip"] = "zip";
138
+ Suffix["CBOR"] = "cbor";
139
+ })(Suffix = MediaType.Suffix || (MediaType.Suffix = {}));
140
+ (function (Suffix) {
141
+ function from(value) {
142
+ return Object.values(Suffix).includes(value)
143
+ ? value
144
+ : undefined;
145
+ }
146
+ Suffix.from = from;
147
+ })(Suffix = MediaType.Suffix || (MediaType.Suffix = {}));
148
+ let ParameterName;
149
+ (function (ParameterName) {
150
+ ParameterName["CharSet"] = "charset";
151
+ })(ParameterName = MediaType.ParameterName || (MediaType.ParameterName = {}));
152
+ function from(value, def = undefined) {
153
+ var _a, _b, _c, _d, _e, _f;
154
+ if (!value) {
155
+ return def;
156
+ }
157
+ fullRegex.lastIndex = 0;
158
+ const match = fullRegex.exec(value);
159
+ if ((match === null || match === void 0 ? void 0 : match[0]) != value) {
160
+ return def;
161
+ }
162
+ const type = MediaType.Type.from((_a = match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase());
163
+ if (!type) {
164
+ return def;
165
+ }
166
+ 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;
167
+ const subtype = (_d = match[3]) === null || _d === void 0 ? void 0 : _d.toLowerCase();
168
+ if (!subtype) {
169
+ return def;
170
+ }
171
+ const suffix = MediaType.Suffix.from((_e = match[4]) === null || _e === void 0 ? void 0 : _e.toLowerCase());
172
+ const parameters = {};
173
+ let parametersMatch = paramRegex.exec((_f = match[5]) !== null && _f !== void 0 ? _f : '');
174
+ while (parametersMatch === null || parametersMatch === void 0 ? void 0 : parametersMatch[0]) {
175
+ const name = parametersMatch[1];
176
+ if (!name)
177
+ continue;
178
+ const value = parametersMatch[2];
179
+ if (!value)
180
+ continue;
181
+ parameters[name.toLowerCase()] = value.toLowerCase();
182
+ parametersMatch = paramRegex.exec(match[5]);
183
+ }
184
+ return new MediaType({
185
+ type,
186
+ tree,
187
+ subtype,
188
+ suffix,
189
+ parameters,
190
+ });
191
+ }
192
+ MediaType.from = from;
193
+ const fullRegex = /^((?:[a-z]+|\*))\/(x(?:-|\\.)|(?:(?:vnd|prs|x)\.)|\*)?([a-z0-9\-.]+|\*)(?:\+([a-z]+))?( *(?:; *(?:(?:[\w.-]+) *= *(?:[\w.-]+)) *)*)$/gi;
194
+ const paramRegex = / *; *([\w.-]+) *= *([\w.-]+)/gi;
195
+ MediaType.Plain = new MediaType({
196
+ type: MediaType.Type.Text,
197
+ subtype: 'plain',
198
+ });
199
+ MediaType.HTML = new MediaType({
200
+ type: MediaType.Type.Text,
201
+ subtype: 'html',
202
+ });
203
+ MediaType.JSON = new MediaType({
204
+ type: MediaType.Type.Application,
205
+ subtype: 'json',
206
+ });
207
+ MediaType.YAML = new MediaType({
208
+ type: MediaType.Type.Application,
209
+ subtype: 'yaml',
210
+ });
211
+ MediaType.CBOR = new MediaType({
212
+ type: MediaType.Type.Application,
213
+ subtype: 'cbor',
214
+ });
215
+ MediaType.EventStream = new MediaType({
216
+ type: MediaType.Type.Text,
217
+ subtype: 'event-stream',
218
+ });
219
+ MediaType.OctetStream = new MediaType({
220
+ type: MediaType.Type.Application,
221
+ subtype: 'octet-stream',
222
+ });
223
+ MediaType.WWWFormUrlEncoded = new MediaType({
224
+ type: MediaType.Type.Application,
225
+ tree: MediaType.Tree.Obsolete,
226
+ subtype: 'www-form-urlencoded',
227
+ });
228
+ MediaType.X509CACert = new MediaType({
229
+ type: MediaType.Type.Application,
230
+ tree: MediaType.Tree.Obsolete,
231
+ subtype: 'x509-ca-cert',
232
+ });
233
+ MediaType.X509UserCert = new MediaType({
234
+ type: MediaType.Type.Application,
235
+ tree: MediaType.Tree.Obsolete,
236
+ subtype: 'x509-user-cert',
237
+ });
238
+ MediaType.Any = new MediaType({
239
+ type: MediaType.Type.Any,
240
+ subtype: '*',
241
+ });
242
+ MediaType.AnyText = new MediaType({
243
+ type: MediaType.Type.Text,
244
+ subtype: '*',
245
+ });
246
+ MediaType.AnyImage = new MediaType({
247
+ type: MediaType.Type.Image,
248
+ subtype: '*',
249
+ });
250
+ MediaType.AnyAudio = new MediaType({
251
+ type: MediaType.Type.Audio,
252
+ subtype: '*',
253
+ });
254
+ MediaType.AnyVideo = new MediaType({
255
+ type: MediaType.Type.Video,
256
+ subtype: '*',
257
+ });
258
+ MediaType.JSONStructured = new MediaType({
259
+ type: MediaType.Type.Any,
260
+ tree: MediaType.Tree.Any,
261
+ subtype: '*',
262
+ suffix: Suffix.JSON,
263
+ });
264
+ MediaType.XMLStructured = new MediaType({
265
+ type: MediaType.Type.Any,
266
+ tree: MediaType.Tree.Any,
267
+ subtype: '*',
268
+ suffix: Suffix.XML,
269
+ });
270
+ MediaType.ProblemJSON = new MediaType({
271
+ type: MediaType.Type.Application,
272
+ subtype: 'problem',
273
+ suffix: Suffix.JSON,
274
+ });
13
275
  })(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
276
  //# 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":"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"}
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
  }