@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,89 +1,114 @@
1
- import { Observable, of } from 'rxjs';
2
- import { mapTo, switchMap } from 'rxjs/operators';
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 { defer, map, Observable, of, switchMap } from 'rxjs';
3
15
  import { validate } from './fetch';
4
16
  import { FetchEventSource } from './fetch-event-source';
5
- import { HttpError } from './http-error';
6
- import { mediaType, MediaType } from './media-type';
7
- import { MediaTypeDecoders } from './media-type-decoders';
8
- import { isURLQueryParamsEncoder } from './media-type-encoder';
9
- import { MediaTypeEncoders } from './media-type-encoders';
17
+ import { HeaderParameters } from './header-parameters';
18
+ import { MediaType } from './media-type';
19
+ import { MediaTypeDecoders } from './media-type-codecs/media-type-decoders';
20
+ import { isURLQueryParamsEncoder } from './media-type-codecs/media-type-encoder';
21
+ import { MediaTypeEncoders } from './media-type-codecs/media-type-encoders';
22
+ import { SundayError } from './sunday-error';
10
23
  import { URLTemplate } from './url-template';
24
+ import { errorToMessage } from './util/error';
11
25
  export class FetchRequestFactory {
12
26
  constructor(baseUrl, options) {
13
27
  var _a, _b, _c;
28
+ this.problemTypes = new Map();
14
29
  this.baseUrl =
15
30
  typeof baseUrl === 'string' ? new URLTemplate(baseUrl) : baseUrl;
16
31
  this.adapter = options === null || options === void 0 ? void 0 : options.adapter;
17
- this.mediaTypeEncoders = (_a = options === null || options === void 0 ? void 0 : options.mediaTypeEncoders) !== null && _a !== void 0 ? _a : MediaTypeEncoders.DEFAULT;
18
- this.mediaTypeDecoders = (_b = options === null || options === void 0 ? void 0 : options.mediaTypeDecoders) !== null && _b !== void 0 ? _b : MediaTypeDecoders.DEFAULT;
32
+ this.mediaTypeEncoders =
33
+ (_a = options === null || options === void 0 ? void 0 : options.mediaTypeEncoders) !== null && _a !== void 0 ? _a : MediaTypeEncoders.DEFAULT;
34
+ this.mediaTypeDecoders =
35
+ (_b = options === null || options === void 0 ? void 0 : options.mediaTypeDecoders) !== null && _b !== void 0 ? _b : MediaTypeDecoders.DEFAULT;
19
36
  this.logger = (_c = options === null || options === void 0 ? void 0 : options.logger) !== null && _c !== void 0 ? _c : console;
20
37
  }
38
+ registerProblem(type, problemType) {
39
+ const typeStr = type instanceof URL ? type.toString() : type;
40
+ this.problemTypes.set(typeStr, problemType);
41
+ }
21
42
  request(requestSpec, requestInit) {
22
- var _a, _b, _c, _d, _e;
23
43
  //
24
- const url = this.baseUrl.complete(requestSpec.pathTemplate, (_a = requestSpec.pathParameters) !== null && _a !== void 0 ? _a : {});
25
- if (requestSpec.queryParameters) {
26
- const encoder = this.mediaTypeEncoders.find(MediaType.WWW_URL_FORM_ENCODED);
27
- if (!isURLQueryParamsEncoder(encoder)) {
28
- throw Error(`MediaTypeEncoder for ${MediaType.WWW_URL_FORM_ENCODED} must be an instance of URLEncoder`);
44
+ return defer(() => {
45
+ var _a, _b, _c, _d;
46
+ const url = this.baseUrl.complete(requestSpec.pathTemplate, (_a = requestSpec.pathParameters) !== null && _a !== void 0 ? _a : {});
47
+ if (requestSpec.queryParameters) {
48
+ const encoder = this.mediaTypeEncoders.find(MediaType.WWWFormUrlEncoded);
49
+ if (!isURLQueryParamsEncoder(encoder)) {
50
+ throw Error(`MediaTypeEncoder for ${MediaType.WWWFormUrlEncoded} must be an instance of URLQueryParamsEncoder`);
51
+ }
52
+ url.search = `?${encoder.encodeQueryString(requestSpec.queryParameters)}`;
29
53
  }
30
- url.search = `?${encoder.encodeQueryString(requestSpec.queryParameters)}`;
31
- }
32
- const headers = new Headers(requestSpec.headers);
33
- // Determine & add accept header
34
- const supportedAcceptTypes = (_b = requestSpec.acceptTypes) === null || _b === void 0 ? void 0 : _b.filter((type) => this.mediaTypeDecoders.supports(type));
35
- if (supportedAcceptTypes === null || supportedAcceptTypes === void 0 ? void 0 : supportedAcceptTypes.length) {
36
- const accept = supportedAcceptTypes.join(' , ');
37
- headers.set('accept', accept);
38
- }
39
- // Determine content type
40
- const contentType = (_c = requestSpec.contentTypes) === null || _c === void 0 ? void 0 : _c.find((type) => this.mediaTypeEncoders.supports(type));
41
- // If matched, add content type (even if body is nil, to match any expected server requirements)
42
- if (contentType) {
43
- headers.set('content-type', contentType);
44
- }
45
- // Encode & add body data
46
- let body;
47
- if (requestSpec.body) {
48
- if (!contentType) {
49
- throw Error('Unsupported content-type for request body');
54
+ const headers = new Headers(HeaderParameters.encode(requestSpec.headers));
55
+ // Determine & add accept header
56
+ if (requestSpec.acceptTypes) {
57
+ const supportedAcceptTypes = requestSpec.acceptTypes.filter((type) => this.mediaTypeDecoders.supports(type));
58
+ if (!supportedAcceptTypes.length) {
59
+ throw Error('None of the provided accept types has a reqistered decoder');
60
+ }
61
+ const accept = supportedAcceptTypes.join(' , ');
62
+ headers.set('accept', accept);
50
63
  }
51
- body = this.mediaTypeEncoders
52
- .find(contentType)
53
- .encode(requestSpec.body, requestSpec.bodyType);
54
- }
55
- const init = Object.assign({}, requestInit, {
56
- headers,
57
- body,
58
- method: requestSpec.method,
64
+ // Determine content type
65
+ const contentType = (_b = requestSpec.contentTypes) === null || _b === void 0 ? void 0 : _b.find((type) => this.mediaTypeEncoders.supports(type));
66
+ // If matched, add content type (even if body is nil, to match any expected server requirements)
67
+ if (contentType) {
68
+ headers.set('content-type', contentType.toString());
69
+ }
70
+ // Encode & add body data
71
+ let body;
72
+ if (requestSpec.body) {
73
+ if (!contentType) {
74
+ throw Error('None of the provided content types has a registered encoder');
75
+ }
76
+ body = this.mediaTypeEncoders
77
+ .find(contentType)
78
+ .encode(requestSpec.body, requestSpec.bodyType);
79
+ }
80
+ const init = Object.assign({}, requestInit, {
81
+ headers,
82
+ body,
83
+ method: requestSpec.method,
84
+ });
85
+ const request = new Request(url.toString(), init);
86
+ return (_d = (_c = this.adapter) === null || _c === void 0 ? void 0 : _c.call(this, request)) !== null && _d !== void 0 ? _d : of(request);
59
87
  });
60
- const request = new Request(url.toString(), init);
61
- return (_e = (_d = this.adapter) === null || _d === void 0 ? void 0 : _d.call(this, request)) !== null && _e !== void 0 ? _e : of(request);
62
88
  }
63
89
  response(request, dataExpected) {
64
90
  const request$ = request instanceof Request ? of(request) : this.request(request);
65
- return request$.pipe(switchMap((req) => fetch(req)), switchMap((response) => validate(response, dataExpected !== null && dataExpected !== void 0 ? dataExpected : false)));
91
+ return request$.pipe(switchMap((req) => fetch(req)), switchMap((response) => validate(response, dataExpected !== null && dataExpected !== void 0 ? dataExpected : false, this.problemTypes)));
66
92
  }
67
93
  result(request, responseType) {
68
94
  const response$ = this.response(request, !!responseType);
69
95
  if (!responseType) {
70
- return response$.pipe(mapTo(undefined));
96
+ return response$.pipe(map(() => undefined));
71
97
  }
72
98
  else {
73
99
  return response$.pipe(switchMap(async (response) => {
74
- var _a;
75
100
  try {
76
- const contentType = mediaType(response.headers.get('content-type'), MediaType.OCTET_STREAM);
101
+ const contentType = MediaType.from(response.headers.get('content-type'), MediaType.OctetStream);
77
102
  const decoder = this.mediaTypeDecoders.find(contentType);
78
103
  return await decoder.decode(response, responseType);
79
104
  }
80
105
  catch (error) {
81
- throw await HttpError.fromResponse((_a = error.message) !== null && _a !== void 0 ? _a : 'Unknown Error', response);
106
+ throw await SundayError.fromResponse(errorToMessage(error, 'Response Decoding Failed'), response);
82
107
  }
83
108
  }));
84
109
  }
85
110
  }
86
- events(requestSpec, eventTypes) {
111
+ eventSource(requestSpec) {
87
112
  //
88
113
  const adapter = (url, requestInit) => {
89
114
  const eventSourceSpec = Object.assign({}, requestSpec, {
@@ -91,30 +116,34 @@ export class FetchRequestFactory {
91
116
  });
92
117
  return this.request(eventSourceSpec, requestInit);
93
118
  };
94
- const eventSource = new FetchEventSource(requestSpec.pathTemplate, {
119
+ return new FetchEventSource(requestSpec.pathTemplate, {
95
120
  logger: this.logger,
96
121
  adapter,
97
122
  });
98
- if (!eventTypes) {
99
- return eventSource;
100
- }
101
- const generateEventHandler = (eventType, subscriber) => {
102
- return async (event) => {
103
- const decoder = this.mediaTypeDecoders.find('application/json');
104
- const msgEvent = event;
105
- const deserializedEvent = await decoder.decodeText(msgEvent.data, eventType);
106
- subscriber.next(deserializedEvent);
107
- };
108
- };
123
+ }
124
+ eventStream(requestSpec, decoder) {
125
+ const eventSource = this.eventSource(requestSpec);
126
+ const jsonDecoder = this.mediaTypeDecoders.find(MediaType.JSON);
109
127
  return new Observable((subscriber) => {
110
- for (const eventTypeName of Object.keys(eventTypes)) {
111
- const eventType = eventTypes[eventTypeName];
112
- eventSource.addEventListener(eventTypeName, generateEventHandler(eventType, subscriber));
113
- eventSource.onerror = (event) => {
114
- var _a, _b;
115
- (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, { event }, 'event source error');
116
- };
117
- }
128
+ eventSource.onmessage = (event) => {
129
+ if (!event.data) {
130
+ return;
131
+ }
132
+ try {
133
+ const decodedEvent = decoder(jsonDecoder, event.type, event.lastEventId, event.data, this.logger);
134
+ if (!decodedEvent) {
135
+ return;
136
+ }
137
+ subscriber.next(decodedEvent);
138
+ }
139
+ catch (error) {
140
+ subscriber.error(error);
141
+ }
142
+ };
143
+ eventSource.onerror = (event) => {
144
+ var _a, _b;
145
+ (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, { event }, 'event source error');
146
+ };
118
147
  eventSource.connect();
119
148
  return () => {
120
149
  eventSource.close();
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-request-factory.js","sourceRoot":"","sources":["../src/fetch-request-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-request-factory.js","sourceRoot":"","sources":["../src/fetch-request-factory.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAQ5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,OAAO,mBAAmB;IAQ9B,YACE,OAA6B,EAC7B,OAKC;;QAVI,iBAAY,GAAG,IAAI,GAAG,EAA2C,CAAC;QAYvE,IAAI,CAAC,OAAO;YACV,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC;QAChC,IAAI,CAAC,iBAAiB;YACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,mCAAI,iBAAiB,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,iBAAiB;YACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,mCAAI,iBAAiB,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,OAAO,CAAC;IAC3C,CAAC;IAED,eAAe,CACb,IAAkB,EAClB,WAA4C;QAE5C,MAAM,OAAO,GAAG,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CACL,WAAiC,EACjC,WAAyB;QAEzB,EAAE;QACF,OAAO,KAAK,CAAC,GAAG,EAAE;;YAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAC/B,WAAW,CAAC,YAAY,EACxB,MAAA,WAAW,CAAC,cAAc,mCAAI,EAAE,CACjC,CAAC;YAEF,IAAI,WAAW,CAAC,eAAe,EAAE;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzC,SAAS,CAAC,iBAAiB,CAC5B,CAAC;gBACF,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE;oBACrC,MAAM,KAAK,CACT,wBAAwB,SAAS,CAAC,iBAAiB,+CAA+C,CACnG,CAAC;iBACH;gBACD,GAAG,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,iBAAiB,CACxC,WAAW,CAAC,eAAe,CAC5B,EAAE,CAAC;aACL;YAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YAE1E,gCAAgC;YAChC,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC3B,MAAM,oBAAoB,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACtC,CAAC;gBAEF,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;oBAChC,MAAM,KAAK,CACT,4DAA4D,CAC7D,CAAC;iBACH;gBAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEhD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC/B;YAED,yBAAyB;YACzB,MAAM,WAAW,GAAG,MAAA,WAAW,CAAC,YAAY,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACtC,CAAC;YAEF,gGAAgG;YAChG,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;aACrD;YAED,yBAAyB;YACzB,IAAI,IAA0B,CAAC;YAC/B,IAAI,WAAW,CAAC,IAAI,EAAE;gBACpB,IAAI,CAAC,WAAW,EAAE;oBAChB,MAAM,KAAK,CACT,6DAA6D,CAC9D,CAAC;iBACH;gBAED,IAAI,GAAG,IAAI,CAAC,iBAAiB;qBAC1B,IAAI,CAAC,WAAW,CAAC;qBACjB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;aACnD;YAED,MAAM,IAAI,GAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE;gBACvD,OAAO;gBACP,IAAI;gBACJ,MAAM,EAAE,WAAW,CAAC,MAAM;aAC3B,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;YAElD,OAAO,MAAA,MAAA,IAAI,CAAC,OAAO,+CAAZ,IAAI,EAAW,OAAO,CAAC,mCAAI,EAAE,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CACN,OAAuC,EACvC,YAAsB;QAEtB,MAAM,QAAQ,GACZ,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,CAClB,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAC9B,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAC7D,CACF,CAAC;IACJ,CAAC;IAID,MAAM,CACJ,OAA6B,EAC7B,YAAsB;QAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,SAAS,CAAC,IAAI,CACnB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC3B,IAAI;oBACF,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAChC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EACpC,SAAS,CAAC,WAAW,CACtB,CAAC;oBACF,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzD,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;iBACrD;gBAAC,OAAO,KAAK,EAAE;oBACd,MAAM,MAAM,WAAW,CAAC,YAAY,CAClC,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC,EACjD,QAAQ,CACT,CAAC;iBACH;YACH,CAAC,CAAC,CACH,CAAC;SACH;IACH,CAAC;IAED,WAAW,CAAC,WAA8B;QACxC,EAAE;QACF,MAAM,OAAO,GAAG,CACd,GAAW,EACX,WAAwB,EACH,EAAE;YACvB,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE;gBACrD,YAAY,EAAE,GAAG;aAClB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC;QAEF,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,YAAY,EAAE;YACpD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CACT,WAA8B,EAC9B,OAMkB;QAElB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC7C,SAAS,CAAC,IAAI,CACS,CAAC;QAE1B,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,EAAE,EAAE;YACnC,WAAW,CAAC,SAAS,GAAG,CAAC,KAA2B,EAAE,EAAE;gBACtD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBACf,OAAO;iBACR;gBAED,IAAI;oBACF,MAAM,YAAY,GAAG,OAAO,CAC1B,WAAW,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,MAAM,CACZ,CAAC;oBACF,IAAI,CAAC,YAAY,EAAE;wBACjB,OAAO;qBACR;oBAED,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC/B;gBAAC,OAAO,KAAK,EAAE;oBACd,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACzB;YACH,CAAC,CAAC;YAEF,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;;gBAC9B,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,mDAAG,EAAE,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAC;YACxD,CAAC,CAAC;YAEF,WAAW,CAAC,OAAO,EAAE,CAAC;YAEtB,OAAO,GAAG,EAAE;gBACV,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/fetch.d.ts CHANGED
@@ -1 +1,7 @@
1
- export declare function validate(response: Response, dataExpected: boolean): Promise<Response>;
1
+ import { ConstructableClassType } from './class-type';
2
+ import { Problem } from './problem';
3
+ export declare function validate(response: Response, dataExpected: boolean, problemTypes?: Map<string, ConstructableClassType<Problem>>): Promise<Response>;
4
+ export declare namespace ResponseExample {
5
+ function build(response: Response, bodyExample?: string): string;
6
+ function bodyExcerpt(response: Response, maxLength: number): Promise<[string, unknown]>;
7
+ }
package/dist/fetch.js CHANGED
@@ -1,19 +1,85 @@
1
- import { mediaType, MediaType } from './media-type';
2
- import { HttpError } from './http-error';
1
+ // Copyright 2020 Outfox, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { MediaType } from './media-type';
3
15
  import { Problem } from './problem';
4
- export async function validate(response, dataExpected) {
16
+ import { SundayError } from './sunday-error';
17
+ import { Base64 } from './util/base64';
18
+ import { errorToMessage } from './util/error';
19
+ export async function validate(response, dataExpected, problemTypes) {
5
20
  var _a, _b;
6
21
  if (response.status < 200 || response.status >= 300) {
7
- if (mediaType(response.headers.get('content-type')) !== MediaType.PROBLEM_JSON) {
8
- await ((_b = (_a = response.body) === null || _a === void 0 ? void 0 : _a.cancel) === null || _b === void 0 ? void 0 : _b.call(_a));
9
- throw await HttpError.fromResponse('Unacceptable response status code', response);
22
+ const mediaType = MediaType.from(response.headers.get('content-type'), MediaType.OctetStream);
23
+ const isProblemJSON = (_a = mediaType === null || mediaType === void 0 ? void 0 : mediaType.compatible(MediaType.ProblemJSON)) !== null && _a !== void 0 ? _a : false;
24
+ if (!isProblemJSON) {
25
+ throw await Problem.fromResponse(response);
10
26
  }
11
27
  const problemData = await response.json();
12
- throw new Problem(problemData);
28
+ const problemType = (_b = problemTypes === null || problemTypes === void 0 ? void 0 : problemTypes.get(problemData.type)) !== null && _b !== void 0 ? _b : Problem;
29
+ throw new problemType(problemData);
13
30
  }
14
31
  if (dataExpected && (response.status === 204 || response.status === 205)) {
15
- throw await HttpError.fromResponse('Unexpected empty response', response);
32
+ throw await SundayError.fromResponse('Unexpected Empty Response', response);
16
33
  }
17
34
  return response;
18
35
  }
36
+ export var ResponseExample;
37
+ (function (ResponseExample) {
38
+ function build(response, bodyExample) {
39
+ return (`HTTP/?.? ${response.status} ${response.statusText}\n` +
40
+ Array.from(response.headers.entries())
41
+ .map(([name, value]) => `${name}: ${value}\n`)
42
+ .join('') +
43
+ '\n' +
44
+ (bodyExample !== null && bodyExample !== void 0 ? bodyExample : '<none>'));
45
+ }
46
+ ResponseExample.build = build;
47
+ async function bodyExcerpt(response, maxLength) {
48
+ var _a;
49
+ let body;
50
+ let bodyExcerpt;
51
+ try {
52
+ if ((_a = response.headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.startsWith('text/')) {
53
+ const text = await response.text();
54
+ body = text;
55
+ if (text.length > maxLength) {
56
+ const exampleText = text.slice(0, maxLength);
57
+ const remainingTextLength = text.length - maxLength;
58
+ bodyExcerpt = `${exampleText}<<... ${remainingTextLength} characters>>`;
59
+ }
60
+ else {
61
+ bodyExcerpt = text;
62
+ }
63
+ }
64
+ else {
65
+ const blob = await response.blob();
66
+ body = blob;
67
+ if (blob.size > maxLength) {
68
+ bodyExcerpt = `<<binary data: ${blob.size} bytes>>`;
69
+ }
70
+ else {
71
+ const dataSlice = await blob.slice(0, maxLength).arrayBuffer();
72
+ bodyExcerpt = Base64.encode(dataSlice);
73
+ }
74
+ }
75
+ }
76
+ catch (error) {
77
+ // ignore errors
78
+ const message = errorToMessage(error);
79
+ body = bodyExcerpt = `<<error displaying response data: ${message}>>`;
80
+ }
81
+ return [bodyExcerpt, body];
82
+ }
83
+ ResponseExample.bodyExcerpt = bodyExcerpt;
84
+ })(ResponseExample || (ResponseExample = {}));
19
85
  //# sourceMappingURL=fetch.js.map
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAkB,EAClB,YAAqB;;IAErB,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;QACnD,IACE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,SAAS,CAAC,YAAY,EAC1E;YACA,mBAAM,QAAQ,CAAC,IAAI,0CAAE,MAAM,mDAAI,CAAC;YAChC,MAAM,MAAM,SAAS,CAAC,YAAY,CAChC,mCAAmC,EACnC,QAAQ,CACT,CAAC;SACH;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE1C,MAAM,IAAI,OAAO,CAAC,WAAsB,CAAC,CAAC;KAC3C;IAED,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE;QACxE,MAAM,MAAM,SAAS,CAAC,YAAY,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;KAC3E;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare namespace HeaderParameters {
2
+ function encode(parameters?: Record<string, unknown>): [string, string][];
3
+ }
@@ -0,0 +1,53 @@
1
+ // Copyright 2020 Outfox, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ export var HeaderParameters;
15
+ (function (HeaderParameters) {
16
+ function encode(parameters) {
17
+ if (parameters == null) {
18
+ return [];
19
+ }
20
+ const headers = [];
21
+ Object.entries(parameters).forEach(([name, parameter]) => {
22
+ for (const value of encodeParam(name, parameter)) {
23
+ headers.push([name, value]);
24
+ }
25
+ });
26
+ return headers;
27
+ }
28
+ HeaderParameters.encode = encode;
29
+ function encodeParam(name, value) {
30
+ if (value == null) {
31
+ return [];
32
+ }
33
+ if (value instanceof Array) {
34
+ const result = [];
35
+ for (const item of value) {
36
+ if (item == null) {
37
+ continue;
38
+ }
39
+ result.push(validate(name, `${item}`));
40
+ }
41
+ return result;
42
+ }
43
+ return [validate(name, `${value}`)];
44
+ }
45
+ const asciiRegex = /^[\x20-\x7F]*$/;
46
+ function validate(name, value) {
47
+ if (!asciiRegex.test(value)) {
48
+ throw new Error(`The encoded header value contains one or more invalid characters: header=${name}, value=${value}`);
49
+ }
50
+ return value;
51
+ }
52
+ })(HeaderParameters || (HeaderParameters = {}));
53
+ //# sourceMappingURL=header-parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-parameters.js","sourceRoot":"","sources":["../src/header-parameters.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,KAAW,gBAAgB,CAmDhC;AAnDD,WAAiB,gBAAgB;IAC/B,SAAgB,MAAM,CACpB,UAAoC;QAEpC,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;YACvD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC7B;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAhBe,uBAAM,SAgBrB,CAAA;IAED,SAAS,WAAW,CAAC,IAAY,EAAE,KAAc;QAC/C,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAO,EAAE,CAAC;SACX;QAED,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,IAAI,IAAI,IAAI,EAAE;oBAChB,SAAS;iBACV;gBAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;aACxC;YAED,OAAO,MAAM,CAAC;SACf;QAED,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC;IAEpC,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,IAAI,KAAK,CACb,4EAA4E,IAAI,WAAW,KAAK,EAAE,CACnG,CAAC;SACH;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAnDgB,gBAAgB,KAAhB,gBAAgB,QAmDhC"}
package/dist/index.d.ts CHANGED
@@ -5,19 +5,19 @@ export * from './fetch-request-factory';
5
5
  export * from './fetch-event-source';
6
6
  export * from './url-template';
7
7
  export * from './media-type';
8
- export * from './media-type-decoder';
9
- export * from './media-type-decoders';
10
- export * from './media-type-encoder';
11
- export * from './media-type-encoders';
12
- export * from './json-decoder';
13
- export * from './json-encoder';
14
- export * from './cbor-decoder';
15
- export * from './cbor-encoder';
16
- export * from './binary-decoder';
17
- export * from './binary-encoder';
18
- export * from './url-encoder';
8
+ export * from './media-type-codecs/media-type-decoder';
9
+ export * from './media-type-codecs/media-type-decoders';
10
+ export * from './media-type-codecs/media-type-encoder';
11
+ export * from './media-type-codecs/media-type-encoders';
12
+ export * from './media-type-codecs/json-decoder';
13
+ export * from './media-type-codecs/json-encoder';
14
+ export * from './media-type-codecs/cbor-decoder';
15
+ export * from './media-type-codecs/cbor-encoder';
16
+ export * from './media-type-codecs/binary-decoder';
17
+ export * from './media-type-codecs/binary-encoder';
18
+ export * from './media-type-codecs/www-form-url-encoder';
19
19
  export * from './logger';
20
- export * from './http-error';
20
+ export * from './sunday-error';
21
21
  export * from './problem';
22
22
  export * from './date-time-types';
23
23
  export * from './util/base64';
package/dist/index.js CHANGED
@@ -1,3 +1,16 @@
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.
1
14
  export * from './any-type';
2
15
  export * from './class-type';
3
16
  export * from './request-factory';
@@ -5,19 +18,19 @@ export * from './fetch-request-factory';
5
18
  export * from './fetch-event-source';
6
19
  export * from './url-template';
7
20
  export * from './media-type';
8
- export * from './media-type-decoder';
9
- export * from './media-type-decoders';
10
- export * from './media-type-encoder';
11
- export * from './media-type-encoders';
12
- export * from './json-decoder';
13
- export * from './json-encoder';
14
- export * from './cbor-decoder';
15
- export * from './cbor-encoder';
16
- export * from './binary-decoder';
17
- export * from './binary-encoder';
18
- export * from './url-encoder';
21
+ export * from './media-type-codecs/media-type-decoder';
22
+ export * from './media-type-codecs/media-type-decoders';
23
+ export * from './media-type-codecs/media-type-encoder';
24
+ export * from './media-type-codecs/media-type-encoders';
25
+ export * from './media-type-codecs/json-decoder';
26
+ export * from './media-type-codecs/json-encoder';
27
+ export * from './media-type-codecs/cbor-decoder';
28
+ export * from './media-type-codecs/cbor-encoder';
29
+ export * from './media-type-codecs/binary-decoder';
30
+ export * from './media-type-codecs/binary-encoder';
31
+ export * from './media-type-codecs/www-form-url-encoder';
19
32
  export * from './logger';
20
- export * from './http-error';
33
+ export * from './sunday-error';
21
34
  export * from './problem';
22
35
  export * from './date-time-types';
23
36
  export * from './util/base64';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
package/dist/logger.js CHANGED
@@ -1,2 +1,15 @@
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.
1
14
  export {};
2
15
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.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"}
@@ -1,6 +1,6 @@
1
1
  import { MediaTypeDecoder } from './media-type-decoder';
2
- import { AnyType } from './any-type';
2
+ import { AnyConstructableType } from '../any-type';
3
3
  export declare class BinaryDecoder implements MediaTypeDecoder {
4
4
  static default: BinaryDecoder;
5
- decode<T>(response: Response, type: AnyType): Promise<T>;
5
+ decode<T>(response: Response, type: AnyConstructableType): Promise<T>;
6
6
  }
@@ -0,0 +1,29 @@
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 BinaryDecoder {
15
+ async decode(response, type) {
16
+ const arrayBuffer = await response.arrayBuffer();
17
+ if (type[0] === ArrayBuffer) {
18
+ return arrayBuffer;
19
+ }
20
+ else if (type[0] === Uint8Array ||
21
+ type[0] === Int8Array ||
22
+ type[0] === DataView) {
23
+ return new type[0](arrayBuffer);
24
+ }
25
+ throw Error('Invalid value, expected ArrayBuffer, (Int|Uint)Array or DataView');
26
+ }
27
+ }
28
+ BinaryDecoder.default = new BinaryDecoder();
29
+ //# sourceMappingURL=binary-decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-decoder.js","sourceRoot":"","sources":["../../src/media-type-codecs/binary-decoder.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAKjC,MAAM,OAAO,aAAa;IAGxB,KAAK,CAAC,MAAM,CAAI,QAAkB,EAAE,IAA0B;QAC5D,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEjD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;YAC3B,OAAO,WAA2B,CAAC;SACpC;aAAM,IACL,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;YACtB,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;YACrB,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpB;YACA,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAM,CAAC;SACtC;QAED,MAAM,KAAK,CACT,kEAAkE,CACnE,CAAC;IACJ,CAAC;;AAlBM,qBAAO,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,26 @@
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 BinaryEncoder {
15
+ encode(value) {
16
+ if (!ArrayBuffer.isView(value) &&
17
+ !(value instanceof ArrayBuffer) &&
18
+ !(value instanceof Blob) &&
19
+ !(value instanceof ReadableStream)) {
20
+ throw Error('Invalid value, expected BufferSource, Blob or ReadableStream');
21
+ }
22
+ return value;
23
+ }
24
+ }
25
+ BinaryEncoder.default = new BinaryEncoder();
26
+ //# sourceMappingURL=binary-encoder.js.map