@data-client/rest 0.16.5 → 0.17.0

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.
@@ -7,6 +7,13 @@ import NetworkError from './NetworkError.js';
7
7
  import { createPaginationSchema } from './paginatedCollections.js';
8
8
  import paramsToString from './paramsToString.js';
9
9
  import { getUrlBase, getUrlTokens, getPathRegex, isPojo } from './RestHelpers.js';
10
+ const textLikeRe = /\btext\b|\bxml\b|\bhtml\b|\bjavascript\b|\bcss\b|\bcsv\b|\burlencoded\b/;
11
+ function jsonResponse(response) {
12
+ return response.json().catch(error => {
13
+ error.status = 400;
14
+ throw error;
15
+ });
16
+ }
10
17
 
11
18
  /** Simplifies endpoint definitions that follow REST patterns
12
19
  *
@@ -36,6 +43,13 @@ export default class RestEndpoint extends Endpoint {
36
43
  this.urlPrefix = '';
37
44
  }
38
45
  _classPrivateFieldLooseBase(this, _hasBody)[_hasBody] = (!('body' in this) || this.body !== undefined) && !['GET', 'DELETE'].includes(this.method);
46
+
47
+ /* istanbul ignore else */
48
+ if (process.env.NODE_ENV !== 'production') {
49
+ if (this.content && this.content !== 'json' && this.schema != null && typeof this.schema !== 'string' && typeof this.schema !== 'undefined') {
50
+ console.error(`content '${this.content}' is incompatible with schema. Binary/text responses cannot be normalized. Use schema: undefined.`);
51
+ }
52
+ }
39
53
  Object.defineProperty(this, 'name', {
40
54
  get() {
41
55
  // using 'in' to ensure inheritance lookup
@@ -114,41 +128,55 @@ export default class RestEndpoint extends Endpoint {
114
128
  });
115
129
  }
116
130
  parseResponse(response) {
117
- var _response$headers$get;
118
- // this should not have any content to read
119
131
  if (response.status === 204) return Promise.resolve(null);
120
- if (!((_response$headers$get = response.headers.get('content-type')) != null && _response$headers$get.includes('json'))) {
121
- return response.text().then(text => {
122
- // string or 'not set' schema, are valid
123
- // when overriding process they might handle other cases, so we don't want to block on our logic
124
- if (['string', 'undefined'].includes(typeof this.schema) || this.schema === null || this.process !== RestEndpoint.prototype.process) return text;
125
- const error = new NetworkError(response);
126
- error.status = 404;
127
- error.message = `Unexpected text response for schema ${this.schema}`;
128
- // custom dev-only messages for more detailed cause
129
- /* istanbul ignore else */
130
- if (process.env.NODE_ENV !== 'production') {
131
- var _response$headers$get2;
132
- if (!((_response$headers$get2 = response.headers.get('content-type')) != null && _response$headers$get2.includes('html') || text.startsWith('<!doctype html>'))) {
133
- if (tryParse(text) !== undefined) {
134
- error.message = `"content-type" header does not include "json", but JSON response found.
132
+ if (this.content) {
133
+ /* istanbul ignore else */
134
+ if (process.env.NODE_ENV !== 'production') {
135
+ if (this.content !== 'json' && this.schema != null && typeof this.schema !== 'string' && typeof this.schema !== 'undefined') {
136
+ const error = new NetworkError(response);
137
+ error.status = 400;
138
+ error.message = `content '${this.content}' is incompatible with schema. Binary/text responses cannot be normalized. Use schema: undefined.`;
139
+ throw error;
140
+ }
141
+ }
142
+ if (this.content === 'stream') return Promise.resolve(response.body);
143
+ return this.content === 'json' ? jsonResponse(response) : response[this.content]();
144
+ }
145
+ const contentType = response.headers.get('content-type');
146
+ if (contentType != null && contentType.includes('json')) return jsonResponse(response);
147
+ const isBinary = contentType && !textLikeRe.test(contentType);
148
+ if (typeof this.schema === 'string' || typeof this.schema === 'undefined' || this.schema === null || this.process !== RestEndpoint.prototype.process) return isBinary ? response.blob() : response.text();
149
+ if (isBinary) {
150
+ const error = new NetworkError(response);
151
+ error.status = 400;
152
+ error.message = `Unexpected binary content-type for schema ${this.schema}`;
153
+ /* istanbul ignore else */
154
+ if (process.env.NODE_ENV !== 'production') {
155
+ error.message = `Unexpected binary content-type "${contentType}" for schema ${this.schema}. Binary responses cannot be normalized. Use schema: undefined or set content: 'blob'.`;
156
+ }
157
+ throw error;
158
+ }
159
+ return response.text().then(text => {
160
+ const error = new NetworkError(response);
161
+ error.status = 404;
162
+ error.message = `Unexpected text response for schema ${this.schema}`;
163
+ /* istanbul ignore else */
164
+ if (process.env.NODE_ENV !== 'production') {
165
+ if (!(contentType != null && contentType.includes('html') || text.startsWith('<!doctype html>'))) {
166
+ if (tryParse(text) !== undefined) {
167
+ error.message = `"content-type" header does not include "json", but JSON response found.
135
168
  See https://www.rfc-editor.org/rfc/rfc4627 for information on JSON responses
136
169
 
137
170
  Using parsed JSON.
138
171
  If text content was expected see https://dataclient.io/rest/api/RestEndpoint#parseResponse`;
139
- }
140
- } else {
141
- error.message = `Unexpected html response for schema ${this.schema}
172
+ }
173
+ } else {
174
+ error.message = `Unexpected html response for schema ${this.schema}
142
175
  This likely means no API endpoint was configured for this request, resulting in an HTML fallback.
143
176
 
144
177
  Response (first 300 characters): ${text.substring(0, 300)}`;
145
- }
146
178
  }
147
- throw error;
148
- });
149
- }
150
- return response.json().catch(error => {
151
- error.status = 400;
179
+ }
152
180
  throw error;
153
181
  });
154
182
  }
@@ -255,4 +283,4 @@ const tryParse = input => {
255
283
  return undefined;
256
284
  }
257
285
  };
258
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbmRwb2ludCIsImV4dHJhY3RDb2xsZWN0aW9uIiwibWFwQ29sbGVjdGlvbiIsIk5ldHdvcmtFcnJvciIsImNyZWF0ZVBhZ2luYXRpb25TY2hlbWEiLCJwYXJhbXNUb1N0cmluZyIsImdldFVybEJhc2UiLCJnZXRVcmxUb2tlbnMiLCJnZXRQYXRoUmVnZXgiLCJpc1Bvam8iLCJfaGFzQm9keSIsIl9jbGFzc1ByaXZhdGVGaWVsZExvb3NlS2V5IiwiUmVzdEVuZHBvaW50IiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiX29wdGlvbnMkZmV0Y2giLCJmZXRjaCIsImFyZ3MiLCJ1cmxQYXJhbXMiLCJfY2xhc3NQcml2YXRlRmllbGRMb29zZUJhc2UiLCJsZW5ndGgiLCJib2R5IiwidW5kZWZpbmVkIiwiZmV0Y2hSZXNwb25zZSIsInVybCIsImdldFJlcXVlc3RJbml0IiwidGhlbiIsInJlc3BvbnNlIiwicGFyc2VSZXNwb25zZSIsInJlcyIsInByb2Nlc3MiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwidmFsdWUiLCJzaWRlRWZmZWN0IiwibWV0aG9kIiwidXJsUHJlZml4IiwiaW5jbHVkZXMiLCJnZXQiLCJfX25hbWUiLCJwYXRoIiwia2V5IiwidG9rZW5zIiwicGF0aFBhcmFtcyIsInNlYXJjaFBhcmFtcyIsImtleXMiLCJmb3JFYWNoIiwiayIsImhhcyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIlN0cmluZyIsInVybEJhc2UiLCJzZWFyY2hUb1N0cmluZyIsImdldEhlYWRlcnMiLCJoZWFkZXJzIiwiYm9keUlzUG9qbyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbml0IiwicmVxdWVzdEluaXQiLCJzaWduYWwiLCJpbnB1dCIsIm9rIiwiY2F0Y2giLCJlcnJvciIsIlR5cGVFcnJvciIsInN0YXR1cyIsIl9yZXNwb25zZSRoZWFkZXJzJGdldCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGV4dCIsInNjaGVtYSIsInByb3RvdHlwZSIsIm1lc3NhZ2UiLCJlbnYiLCJOT0RFX0VOViIsIl9yZXNwb25zZSRoZWFkZXJzJGdldDIiLCJzdGFydHNXaXRoIiwidHJ5UGFyc2UiLCJzdWJzdHJpbmciLCJqc29uIiwiZXJyb3JQb2xpY3kiLCJwYXRoUmVnZXgiLCJ0ZXN0S2V5IiwicHJlZml4IiwibGFzdFF1ZXN0aW9uIiwibGFzdEluZGV4T2YiLCJ0ZXN0IiwiZXh0ZW5kIiwiRSIsImFzc2lnbiIsInBhZ2luYXRlZCIsInJlbW92ZUN1cnNvciIsImZpZWxkTmFtZSIsInBhcmFtcyIsImZvdW5kIiwiY3JlYXRlUGFnaW5hdGVkU2NoZW1hIiwiY29sbGVjdGlvbiIsIm5ld1NjaGVtYSIsIkVycm9yIiwic3VwIiwiY2FsbCIsIm5hbWUiLCJnZXRQYWdlIiwicGFnaW5hdGlvbkZpZWxkIiwicHVzaCIsInMiLCJ1bnNoaWZ0IiwicmVtb3ZlIiwibW92ZSIsIm1vdmVQYXRoIiwicGFyc2UiLCJlIl0sInNvdXJjZXMiOlsiLi4vc3JjL1Jlc3RFbmRwb2ludC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmRwb2ludCB9IGZyb20gJ0BkYXRhLWNsaWVudC9lbmRwb2ludCc7XG5cbmltcG9ydCBleHRyYWN0Q29sbGVjdGlvbiBmcm9tICcuL2V4dHJhY3RDb2xsZWN0aW9uLmpzJztcbmltcG9ydCBtYXBDb2xsZWN0aW9uIGZyb20gJy4vbWFwQ29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgTmV0d29ya0Vycm9yIGZyb20gJy4vTmV0d29ya0Vycm9yLmpzJztcbmltcG9ydCB7IGNyZWF0ZVBhZ2luYXRpb25TY2hlbWEgfSBmcm9tICcuL3BhZ2luYXRlZENvbGxlY3Rpb25zLmpzJztcbmltcG9ydCBwYXJhbXNUb1N0cmluZyBmcm9tICcuL3BhcmFtc1RvU3RyaW5nLmpzJztcbmltcG9ydCB7XG4gIGdldFVybEJhc2UsXG4gIGdldFVybFRva2VucyxcbiAgZ2V0UGF0aFJlZ2V4LFxuICBpc1Bvam8sXG59IGZyb20gJy4vUmVzdEhlbHBlcnMuanMnO1xuXG4vKiogU2ltcGxpZmllcyBlbmRwb2ludCBkZWZpbml0aW9ucyB0aGF0IGZvbGxvdyBSRVNUIHBhdHRlcm5zXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvUmVzdEVuZHBvaW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc3RFbmRwb2ludCBleHRlbmRzIEVuZHBvaW50IHtcbiAgI2hhc0JvZHk7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcihcbiAgICAgIG9wdGlvbnMuZmV0Y2ggPz9cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPVxuICAgICAgICAgICAgdGhpcy4jaGFzQm9keSAmJiBhcmdzLmxlbmd0aCA8IDIgPyB7fSA6IGFyZ3NbMF0gfHwge307XG4gICAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuI2hhc0JvZHkgPyBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZShcbiAgICAgICAgICAgIHRoaXMudXJsKHVybFBhcmFtcyksXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmdldFJlcXVlc3RJbml0KGJvZHkpLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHRoaXMucGFyc2VSZXNwb25zZShyZXNwb25zZSkpXG4gICAgICAgICAgICAudGhlbihyZXMgPT4gdGhpcy5wcm9jZXNzKHJlcywgLi4uYXJncykpO1xuICAgICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIC8vIHdlIHdhbnQgdG8gdXNlIHRoZSBwcm90b3R5cGUgY2hhaW4gaGVyZVxuICAgIGlmIChcbiAgICAgICEoJ3NpZGVFZmZlY3QnIGluIHRoaXMpIHx8XG4gICAgICAoJ21ldGhvZCcgaW4gb3B0aW9ucyAmJiAhKCdzaWRlRWZmZWN0JyBpbiBvcHRpb25zKSlcbiAgICApIHtcbiAgICAgIHRoaXMuc2lkZUVmZmVjdCA9XG4gICAgICAgIG9wdGlvbnMubWV0aG9kID09PSAnR0VUJyB8fCBvcHRpb25zLm1ldGhvZCA9PT0gdW5kZWZpbmVkID9cbiAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgOiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5tZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tZXRob2QgPSB0aGlzLnNpZGVFZmZlY3QgPyAnUE9TVCcgOiAnR0VUJztcbiAgICB9XG4gICAgaWYgKHRoaXMudXJsUHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXJsUHJlZml4ID0gJyc7XG4gICAgfVxuICAgIHRoaXMuI2hhc0JvZHkgPVxuICAgICAgKCEoJ2JvZHknIGluIHRoaXMpIHx8IHRoaXMuYm9keSAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgIVsnR0VUJywgJ0RFTEVURSddLmluY2x1ZGVzKHRoaXMubWV0aG9kKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbmFtZScsIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgLy8gdXNpbmcgJ2luJyB0byBlbnN1cmUgaW5oZXJpdGFuY2UgbG9va3VwXG4gICAgICAgIGlmICgnX19uYW1lJyBpbiB0aGlzKSByZXR1cm4gdGhpcy5fX25hbWU7XG4gICAgICAgIHJldHVybiB0aGlzLnVybFByZWZpeCArIHRoaXMucGF0aDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBrZXkoLi4uYXJncykge1xuICAgIHJldHVybiBgJHt0aGlzLm1ldGhvZH0gJHt0aGlzLnVybChcbiAgICAgIHRoaXMuI2hhc0JvZHkgJiYgYXJncy5sZW5ndGggPCAyID8ge30gOiBhcmdzWzBdIHx8IHt9LFxuICAgICl9YDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIHVybCAqL1xuICB1cmwodXJsUGFyYW1zID0ge30pIHtcbiAgICBjb25zdCB0b2tlbnMgPSBnZXRVcmxUb2tlbnModGhpcy5wYXRoKTtcbiAgICBjb25zdCBwYXRoUGFyYW1zID0ge307XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0ge307XG4gICAgT2JqZWN0LmtleXModXJsUGFyYW1zKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKHRva2Vucy5oYXMoaykpIHtcbiAgICAgICAgaWYgKHVybFBhcmFtc1trXSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHBhdGhQYXJhbXNba10gPVxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh1cmxQYXJhbXNba10pID9cbiAgICAgICAgICAgICAgdXJsUGFyYW1zW2tdLm1hcChTdHJpbmcpXG4gICAgICAgICAgICA6IFN0cmluZyh1cmxQYXJhbXNba10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VhcmNoUGFyYW1zW2tdID0gdXJsUGFyYW1zW2tdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHVybEJhc2UgPSBnZXRVcmxCYXNlKHRoaXMucGF0aCkocGF0aFBhcmFtcyk7XG4gICAgaWYgKE9iamVjdC5rZXlzKHNlYXJjaFBhcmFtcykubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy51cmxQcmVmaXh9JHt1cmxCYXNlfT8ke3RoaXMuc2VhcmNoVG9TdHJpbmcoc2VhcmNoUGFyYW1zKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy51cmxQcmVmaXh9JHt1cmxCYXNlfWA7XG4gIH1cblxuICAvKiogRW5jb2RlIHRoZSB1cmwgc2VhcmNoUGFyYW1zICovXG4gIHNlYXJjaFRvU3RyaW5nKHNlYXJjaFBhcmFtcykge1xuICAgIHJldHVybiBwYXJhbXNUb1N0cmluZyhzZWFyY2hQYXJhbXMpO1xuICB9XG5cbiAgZ2V0SGVhZGVycyhoZWFkZXJzKSB7XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cblxuICAvKiogSW5pdCBvcHRpb25zIGZvciBmZXRjaCAtIHJ1biBhdCBmZXRjaCAqL1xuICBhc3luYyBnZXRSZXF1ZXN0SW5pdChib2R5KSB7XG4gICAgY29uc3QgYm9keUlzUG9qbyA9IGlzUG9qbyhib2R5KTtcbiAgICBpZiAoYm9keUlzUG9qbykge1xuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIH1cbiAgICBjb25zdCBpbml0ID0ge1xuICAgICAgLi4udGhpcy5yZXF1ZXN0SW5pdCxcbiAgICAgIG1ldGhvZDogdGhpcy5tZXRob2QsXG4gICAgICBzaWduYWw6IHRoaXMuc2lnbmFsLFxuICAgICAgYm9keSxcbiAgICB9O1xuICAgIGlmICghYm9keSB8fCBib2R5SXNQb2pvKSB7XG4gICAgICBpbml0LmhlYWRlcnMgPSB7XG4gICAgICAgIC8vIGRlZmF1bHQgdG8gYXBwbGljYXRpb24vanNvbiBidXQgYWxsb3cgdXNlciBleHBsaWNpdCBvdmVycmlkZXNcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgLi4uaW5pdC5oZWFkZXJzLFxuICAgICAgfTtcbiAgICB9XG4gICAgaW5pdC5oZWFkZXJzID0gYXdhaXQgdGhpcy5nZXRIZWFkZXJzKGluaXQuaGVhZGVycyk7XG4gICAgcmV0dXJuIGluaXQ7XG4gIH1cblxuICAvKiogUGVyZm9ybSBuZXR3b3JrIHJlcXVlc3QgYW5kIHJlc29sdmUgd2l0aCBIVFRQIFJlc3BvbnNlICovXG4gIGZldGNoUmVzcG9uc2UoaW5wdXQsIGluaXQpIHtcbiAgICByZXR1cm4gZmV0Y2goaW5wdXQsIGluaXQpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTmV0d29ya0Vycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgLy8gZW5zdXJlIENPUlMsIG5ldHdvcmsgZG93biwgYW5kIHBhcnNlIGVycm9ycyBhcmUgc3RpbGwgY2F1Z2h0IGJ5IE5ldHdvcmtFcnJvckJvdW5kYXJ5XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICAgIGVycm9yLnN0YXR1cyA9IDUwMDtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgcGFyc2VSZXNwb25zZShyZXNwb25zZSkge1xuICAgIC8vIHRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBjb250ZW50IHRvIHJlYWRcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDQpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgaWYgKCFyZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk/LmluY2x1ZGVzKCdqc29uJykpIHtcbiAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbih0ZXh0ID0+IHtcbiAgICAgICAgLy8gc3RyaW5nIG9yICdub3Qgc2V0JyBzY2hlbWEsIGFyZSB2YWxpZFxuICAgICAgICAvLyB3aGVuIG92ZXJyaWRpbmcgcHJvY2VzcyB0aGV5IG1pZ2h0IGhhbmRsZSBvdGhlciBjYXNlcywgc28gd2UgZG9uJ3Qgd2FudCB0byBibG9jayBvbiBvdXIgbG9naWNcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFsnc3RyaW5nJywgJ3VuZGVmaW5lZCddLmluY2x1ZGVzKHR5cGVvZiB0aGlzLnNjaGVtYSkgfHxcbiAgICAgICAgICB0aGlzLnNjaGVtYSA9PT0gbnVsbCB8fFxuICAgICAgICAgIHRoaXMucHJvY2VzcyAhPT0gUmVzdEVuZHBvaW50LnByb3RvdHlwZS5wcm9jZXNzXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm4gdGV4dDtcblxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBOZXR3b3JrRXJyb3IocmVzcG9uc2UpO1xuICAgICAgICBlcnJvci5zdGF0dXMgPSA0MDQ7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgVW5leHBlY3RlZCB0ZXh0IHJlc3BvbnNlIGZvciBzY2hlbWEgJHt0aGlzLnNjaGVtYX1gO1xuICAgICAgICAvLyBjdXN0b20gZGV2LW9ubHkgbWVzc2FnZXMgZm9yIG1vcmUgZGV0YWlsZWQgY2F1c2VcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk/LmluY2x1ZGVzKCdodG1sJykgfHxcbiAgICAgICAgICAgICAgdGV4dC5zdGFydHNXaXRoKCc8IWRvY3R5cGUgaHRtbD4nKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRyeVBhcnNlKHRleHQpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBcImNvbnRlbnQtdHlwZVwiIGhlYWRlciBkb2VzIG5vdCBpbmNsdWRlIFwianNvblwiLCBidXQgSlNPTiByZXNwb25zZSBmb3VuZC5cblNlZSBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNDYyNyBmb3IgaW5mb3JtYXRpb24gb24gSlNPTiByZXNwb25zZXNcblxuVXNpbmcgcGFyc2VkIEpTT04uXG5JZiB0ZXh0IGNvbnRlbnQgd2FzIGV4cGVjdGVkIHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvUmVzdEVuZHBvaW50I3BhcnNlUmVzcG9uc2VgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gYFVuZXhwZWN0ZWQgaHRtbCByZXNwb25zZSBmb3Igc2NoZW1hICR7dGhpcy5zY2hlbWF9XG5UaGlzIGxpa2VseSBtZWFucyBubyBBUEkgZW5kcG9pbnQgd2FzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgcmVxdWVzdCwgcmVzdWx0aW5nIGluIGFuIEhUTUwgZmFsbGJhY2suXG5cblJlc3BvbnNlIChmaXJzdCAzMDAgY2hhcmFjdGVycyk6ICR7dGV4dC5zdWJzdHJpbmcoMCwgMzAwKX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvY2Vzcyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGVycm9yUG9saWN5KGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yLnN0YXR1cyA+PSA1MDAgPyAnc29mdCcgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgcGF0aFJlZ2V4KCkge1xuICAgIHJldHVybiBnZXRQYXRoUmVnZXgodGhpcy5wYXRoKTtcbiAgfVxuXG4gIHRlc3RLZXkoa2V5KSB7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5tZXRob2QgKyAnICcgKyB0aGlzLnVybFByZWZpeDtcbiAgICBpZiAoIWtleS5zdGFydHNXaXRoKHByZWZpeCkpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgbGFzdFF1ZXN0aW9uID0ga2V5Lmxhc3RJbmRleE9mKCc/Jyk7XG4gICAgaWYgKGxhc3RRdWVzdGlvbiA9PT0gLTEpIGxhc3RRdWVzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5wYXRoUmVnZXgudGVzdChrZXkuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgsIGxhc3RRdWVzdGlvbikpO1xuICB9XG5cbiAgZXh0ZW5kKG9wdGlvbnMpIHtcbiAgICAvLyBtYWtlIGEgY29uc3RydWN0b3IvcHJvdG90eXBlIGJhc2VkIG9mZiB0aGlzXG4gICAgLy8gZXh0ZW5kIGZyb20gaXQgYW5kIGluaXQgd2l0aCBvcHRpb25zIHNlbnRcbiAgICBjbGFzcyBFIGV4dGVuZHMgdGhpcy5jb25zdHJ1Y3RvciB7fVxuXG4gICAgT2JqZWN0LmFzc2lnbihFLnByb3RvdHlwZSwgdGhpcyk7XG5cbiAgICByZXR1cm4gbmV3IEUoXG4gICAgICAvLyAgZmV0Y2ggZ2V0IG92ZXJyaWRkZW4gYnkgZnVuY3Rpb24gcHJvdG90eXBlLCBzbyB3ZSBtdXN0IHNldCBpdCBleHBsaWNpdGx5IGV2ZXJ5IHRpbWVcbiAgICAgIHsgZmV0Y2g6IHRoaXMuZmV0Y2gsIC4uLm9wdGlvbnMgfSxcbiAgICApO1xuICB9XG5cbiAgcGFnaW5hdGVkKHJlbW92ZUN1cnNvcikge1xuICAgIGlmICh0eXBlb2YgcmVtb3ZlQ3Vyc29yID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gcmVtb3ZlQ3Vyc29yO1xuICAgICAgcmVtb3ZlQ3Vyc29yID0gKHsgLi4ucGFyYW1zIH0pID0+IHtcbiAgICAgICAgZGVsZXRlIHBhcmFtc1tmaWVsZE5hbWVdO1xuICAgICAgICByZXR1cm4gW3BhcmFtc107XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBjb25zdCBjcmVhdGVQYWdpbmF0ZWRTY2hlbWEgPSBjb2xsZWN0aW9uID0+IHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIHJldHVybiBjcmVhdGVQYWdpbmF0aW9uU2NoZW1hKHJlbW92ZUN1cnNvciwgY29sbGVjdGlvbik7XG4gICAgfTtcbiAgICBjb25zdCBuZXdTY2hlbWEgPSBtYXBDb2xsZWN0aW9uKHRoaXMuc2NoZW1hLCBjcmVhdGVQYWdpbmF0ZWRTY2hlbWEpO1xuXG4gICAgaWYgKCFmb3VuZCkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIENvbGxlY3Rpb24nKTtcbiAgICBjb25zdCBzdXAgPSB0aGlzO1xuXG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIHNjaGVtYTogbmV3U2NoZW1hLFxuICAgICAga2V5KC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHN1cC5rZXkuY2FsbCh0aGlzLCAuLi5yZW1vdmVDdXJzb3IoLi4uYXJncykpO1xuICAgICAgfSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSArICcuZ2V0UGFnZScsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgZ2V0UGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZWQodGhpcy5wYWdpbmF0aW9uRmllbGQpO1xuICB9XG5cbiAgZ2V0IHB1c2goKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgc2NoZW1hOiBleHRyYWN0Q29sbGVjdGlvbih0aGlzLnNjaGVtYSwgcyA9PiBzLnB1c2gpLFxuICAgICAgbmFtZTogdGhpcy5uYW1lICsgJy5jcmVhdGUnLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHVuc2hpZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgc2NoZW1hOiBleHRyYWN0Q29sbGVjdGlvbih0aGlzLnNjaGVtYSwgcyA9PiBzLnVuc2hpZnQpLFxuICAgICAgbmFtZTogdGhpcy5uYW1lICsgJy5jcmVhdGUnLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGFzc2lnbigpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBzY2hlbWE6IGV4dHJhY3RDb2xsZWN0aW9uKHRoaXMuc2NoZW1hLCBzID0+IHMuYXNzaWduKSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSArICcuY3JlYXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCByZW1vdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIHNjaGVtYTogZXh0cmFjdENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIHMgPT4gcy5yZW1vdmUpLFxuICAgICAgbmFtZTogdGhpcy5uYW1lICsgJy5yZW1vdmUnLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1vdmUoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIHNjaGVtYTogZXh0cmFjdENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIHMgPT4gcy5tb3ZlKSxcbiAgICAgIHNlYXJjaFBhcmFtczogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogdGhpcy5uYW1lICsgJy5wYXJ0aWFsVXBkYXRlJyxcbiAgICB9O1xuICAgIGlmICh0aGlzLm1vdmVQYXRoKSBvcHRpb25zLnBhdGggPSB0aGlzLm1vdmVQYXRoO1xuICAgIHJldHVybiB0aGlzLmV4dGVuZChvcHRpb25zKTtcbiAgfVxufVxuXG5jb25zdCB0cnlQYXJzZSA9IGlucHV0ID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShpbnB1dCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFFBQVEsUUFBUSx1QkFBdUI7QUFFaEQsT0FBT0MsaUJBQWlCLE1BQU0sd0JBQXdCO0FBQ3RELE9BQU9DLGFBQWEsTUFBTSxvQkFBb0I7QUFDOUMsT0FBT0MsWUFBWSxNQUFNLG1CQUFtQjtBQUM1QyxTQUFTQyxzQkFBc0IsUUFBUSwyQkFBMkI7QUFDbEUsT0FBT0MsY0FBYyxNQUFNLHFCQUFxQjtBQUNoRCxTQUNFQyxVQUFVLEVBQ1ZDLFlBQVksRUFDWkMsWUFBWSxFQUNaQyxNQUFNLFFBQ0Qsa0JBQWtCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTtBQUhBLElBQUFDLFFBQUEsZ0JBQUFDLDBCQUFBO0FBSUEsZUFBZSxNQUFNQyxZQUFZLFNBQVNaLFFBQVEsQ0FBQztFQUVqRGEsV0FBV0EsQ0FBQ0MsT0FBTyxFQUFFO0lBQUEsSUFBQUMsY0FBQTtJQUNuQixLQUFLLEVBQUFBLGNBQUEsR0FDSEQsT0FBTyxDQUFDRSxLQUFLLFlBQUFELGNBQUEsR0FDWCxnQkFBZ0IsR0FBR0UsSUFBSSxFQUFFO01B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
286
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbmRwb2ludCIsImV4dHJhY3RDb2xsZWN0aW9uIiwibWFwQ29sbGVjdGlvbiIsIk5ldHdvcmtFcnJvciIsImNyZWF0ZVBhZ2luYXRpb25TY2hlbWEiLCJwYXJhbXNUb1N0cmluZyIsImdldFVybEJhc2UiLCJnZXRVcmxUb2tlbnMiLCJnZXRQYXRoUmVnZXgiLCJpc1Bvam8iLCJ0ZXh0TGlrZVJlIiwianNvblJlc3BvbnNlIiwicmVzcG9uc2UiLCJqc29uIiwiY2F0Y2giLCJlcnJvciIsInN0YXR1cyIsIl9oYXNCb2R5IiwiX2NsYXNzUHJpdmF0ZUZpZWxkTG9vc2VLZXkiLCJSZXN0RW5kcG9pbnQiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfb3B0aW9ucyRmZXRjaCIsImZldGNoIiwiYXJncyIsInVybFBhcmFtcyIsIl9jbGFzc1ByaXZhdGVGaWVsZExvb3NlQmFzZSIsImxlbmd0aCIsImJvZHkiLCJ1bmRlZmluZWQiLCJmZXRjaFJlc3BvbnNlIiwidXJsIiwiZ2V0UmVxdWVzdEluaXQiLCJ0aGVuIiwicGFyc2VSZXNwb25zZSIsInJlcyIsInByb2Nlc3MiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwidmFsdWUiLCJzaWRlRWZmZWN0IiwibWV0aG9kIiwidXJsUHJlZml4IiwiaW5jbHVkZXMiLCJlbnYiLCJOT0RFX0VOViIsImNvbnRlbnQiLCJzY2hlbWEiLCJjb25zb2xlIiwiZ2V0IiwiX19uYW1lIiwicGF0aCIsImtleSIsInRva2VucyIsInBhdGhQYXJhbXMiLCJzZWFyY2hQYXJhbXMiLCJrZXlzIiwiZm9yRWFjaCIsImsiLCJoYXMiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJTdHJpbmciLCJ1cmxCYXNlIiwic2VhcmNoVG9TdHJpbmciLCJnZXRIZWFkZXJzIiwiaGVhZGVycyIsImJvZHlJc1Bvam8iLCJKU09OIiwic3RyaW5naWZ5IiwiaW5pdCIsInJlcXVlc3RJbml0Iiwic2lnbmFsIiwiaW5wdXQiLCJvayIsIlR5cGVFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwibWVzc2FnZSIsImNvbnRlbnRUeXBlIiwiaXNCaW5hcnkiLCJ0ZXN0IiwicHJvdG90eXBlIiwiYmxvYiIsInRleHQiLCJzdGFydHNXaXRoIiwidHJ5UGFyc2UiLCJzdWJzdHJpbmciLCJlcnJvclBvbGljeSIsInBhdGhSZWdleCIsInRlc3RLZXkiLCJwcmVmaXgiLCJsYXN0UXVlc3Rpb24iLCJsYXN0SW5kZXhPZiIsImV4dGVuZCIsIkUiLCJhc3NpZ24iLCJwYWdpbmF0ZWQiLCJyZW1vdmVDdXJzb3IiLCJmaWVsZE5hbWUiLCJwYXJhbXMiLCJmb3VuZCIsImNyZWF0ZVBhZ2luYXRlZFNjaGVtYSIsImNvbGxlY3Rpb24iLCJuZXdTY2hlbWEiLCJFcnJvciIsInN1cCIsImNhbGwiLCJuYW1lIiwiZ2V0UGFnZSIsInBhZ2luYXRpb25GaWVsZCIsInB1c2giLCJzIiwidW5zaGlmdCIsInJlbW92ZSIsIm1vdmUiLCJtb3ZlUGF0aCIsInBhcnNlIiwiZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXN0RW5kcG9pbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW5kcG9pbnQgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuXG5pbXBvcnQgZXh0cmFjdENvbGxlY3Rpb24gZnJvbSAnLi9leHRyYWN0Q29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgbWFwQ29sbGVjdGlvbiBmcm9tICcuL21hcENvbGxlY3Rpb24uanMnO1xuaW1wb3J0IE5ldHdvcmtFcnJvciBmcm9tICcuL05ldHdvcmtFcnJvci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVQYWdpbmF0aW9uU2NoZW1hIH0gZnJvbSAnLi9wYWdpbmF0ZWRDb2xsZWN0aW9ucy5qcyc7XG5pbXBvcnQgcGFyYW1zVG9TdHJpbmcgZnJvbSAnLi9wYXJhbXNUb1N0cmluZy5qcyc7XG5pbXBvcnQge1xuICBnZXRVcmxCYXNlLFxuICBnZXRVcmxUb2tlbnMsXG4gIGdldFBhdGhSZWdleCxcbiAgaXNQb2pvLFxufSBmcm9tICcuL1Jlc3RIZWxwZXJzLmpzJztcblxuY29uc3QgdGV4dExpa2VSZSA9XG4gIC9cXGJ0ZXh0XFxifFxcYnhtbFxcYnxcXGJodG1sXFxifFxcYmphdmFzY3JpcHRcXGJ8XFxiY3NzXFxifFxcYmNzdlxcYnxcXGJ1cmxlbmNvZGVkXFxiLztcblxuZnVuY3Rpb24ganNvblJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gIHJldHVybiByZXNwb25zZS5qc29uKCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSk7XG59XG5cbi8qKiBTaW1wbGlmaWVzIGVuZHBvaW50IGRlZmluaXRpb25zIHRoYXQgZm9sbG93IFJFU1QgcGF0dGVybnNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9SZXN0RW5kcG9pbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVzdEVuZHBvaW50IGV4dGVuZHMgRW5kcG9pbnQge1xuICAjaGFzQm9keTtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKFxuICAgICAgb3B0aW9ucy5mZXRjaCA/P1xuICAgICAgICBhc3luYyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgIGNvbnN0IHVybFBhcmFtcyA9XG4gICAgICAgICAgICB0aGlzLiNoYXNCb2R5ICYmIGFyZ3MubGVuZ3RoIDwgMiA/IHt9IDogYXJnc1swXSB8fCB7fTtcbiAgICAgICAgICBjb25zdCBib2R5ID0gdGhpcy4jaGFzQm9keSA/IGFyZ3NbYXJncy5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFJlc3BvbnNlKFxuICAgICAgICAgICAgdGhpcy51cmwodXJsUGFyYW1zKSxcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0UmVxdWVzdEluaXQoYm9keSksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gdGhpcy5wYXJzZVJlc3BvbnNlKHJlc3BvbnNlKSlcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB0aGlzLnByb2Nlc3MocmVzLCAuLi5hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgLy8gd2Ugd2FudCB0byB1c2UgdGhlIHByb3RvdHlwZSBjaGFpbiBoZXJlXG4gICAgaWYgKFxuICAgICAgISgnc2lkZUVmZmVjdCcgaW4gdGhpcykgfHxcbiAgICAgICgnbWV0aG9kJyBpbiBvcHRpb25zICYmICEoJ3NpZGVFZmZlY3QnIGluIG9wdGlvbnMpKVxuICAgICkge1xuICAgICAgdGhpcy5zaWRlRWZmZWN0ID1cbiAgICAgICAgb3B0aW9ucy5tZXRob2QgPT09ICdHRVQnIHx8IG9wdGlvbnMubWV0aG9kID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICA6IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1ldGhvZCA9IHRoaXMuc2lkZUVmZmVjdCA/ICdQT1NUJyA6ICdHRVQnO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxQcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cmxQcmVmaXggPSAnJztcbiAgICB9XG4gICAgdGhpcy4jaGFzQm9keSA9XG4gICAgICAoISgnYm9keScgaW4gdGhpcykgfHwgdGhpcy5ib2R5ICE9PSB1bmRlZmluZWQpICYmXG4gICAgICAhWydHRVQnLCAnREVMRVRFJ10uaW5jbHVkZXModGhpcy5tZXRob2QpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmNvbnRlbnQgJiZcbiAgICAgICAgdGhpcy5jb250ZW50ICE9PSAnanNvbicgJiZcbiAgICAgICAgdGhpcy5zY2hlbWEgIT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgdGhpcy5zY2hlbWEgIT09ICdzdHJpbmcnICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLnNjaGVtYSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBjb250ZW50ICcke3RoaXMuY29udGVudH0nIGlzIGluY29tcGF0aWJsZSB3aXRoIHNjaGVtYS4gQmluYXJ5L3RleHQgcmVzcG9uc2VzIGNhbm5vdCBiZSBub3JtYWxpemVkLiBVc2Ugc2NoZW1hOiB1bmRlZmluZWQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ25hbWUnLCB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIC8vIHVzaW5nICdpbicgdG8gZW5zdXJlIGluaGVyaXRhbmNlIGxvb2t1cFxuICAgICAgICBpZiAoJ19fbmFtZScgaW4gdGhpcykgcmV0dXJuIHRoaXMuX19uYW1lO1xuICAgICAgICByZXR1cm4gdGhpcy51cmxQcmVmaXggKyB0aGlzLnBhdGg7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAga2V5KC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5tZXRob2R9ICR7dGhpcy51cmwoXG4gICAgICB0aGlzLiNoYXNCb2R5ICYmIGFyZ3MubGVuZ3RoIDwgMiA/IHt9IDogYXJnc1swXSB8fCB7fSxcbiAgICApfWA7XG4gIH1cblxuICAvKiogR2V0IHRoZSB1cmwgKi9cbiAgdXJsKHVybFBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3QgdG9rZW5zID0gZ2V0VXJsVG9rZW5zKHRoaXMucGF0aCk7XG4gICAgY29uc3QgcGF0aFBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHVybFBhcmFtcykuZm9yRWFjaChrID0+IHtcbiAgICAgIGlmICh0b2tlbnMuaGFzKGspKSB7XG4gICAgICAgIGlmICh1cmxQYXJhbXNba10gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICBwYXRoUGFyYW1zW2tdID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodXJsUGFyYW1zW2tdKSA/XG4gICAgICAgICAgICAgIHVybFBhcmFtc1trXS5tYXAoU3RyaW5nKVxuICAgICAgICAgICAgOiBTdHJpbmcodXJsUGFyYW1zW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlYXJjaFBhcmFtc1trXSA9IHVybFBhcmFtc1trXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB1cmxCYXNlID0gZ2V0VXJsQmFzZSh0aGlzLnBhdGgpKHBhdGhQYXJhbXMpO1xuICAgIGlmIChPYmplY3Qua2V5cyhzZWFyY2hQYXJhbXMpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMudXJsUHJlZml4fSR7dXJsQmFzZX0/JHt0aGlzLnNlYXJjaFRvU3RyaW5nKHNlYXJjaFBhcmFtcyl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMudXJsUHJlZml4fSR7dXJsQmFzZX1gO1xuICB9XG5cbiAgLyoqIEVuY29kZSB0aGUgdXJsIHNlYXJjaFBhcmFtcyAqL1xuICBzZWFyY2hUb1N0cmluZyhzZWFyY2hQYXJhbXMpIHtcbiAgICByZXR1cm4gcGFyYW1zVG9TdHJpbmcoc2VhcmNoUGFyYW1zKTtcbiAgfVxuXG4gIGdldEhlYWRlcnMoaGVhZGVycykge1xuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLyoqIEluaXQgb3B0aW9ucyBmb3IgZmV0Y2ggLSBydW4gYXQgZmV0Y2ggKi9cbiAgYXN5bmMgZ2V0UmVxdWVzdEluaXQoYm9keSkge1xuICAgIGNvbnN0IGJvZHlJc1Bvam8gPSBpc1Bvam8oYm9keSk7XG4gICAgaWYgKGJvZHlJc1Bvam8pIHtcbiAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICB9XG4gICAgY29uc3QgaW5pdCA9IHtcbiAgICAgIC4uLnRoaXMucmVxdWVzdEluaXQsXG4gICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgc2lnbmFsOiB0aGlzLnNpZ25hbCxcbiAgICAgIGJvZHksXG4gICAgfTtcbiAgICBpZiAoIWJvZHkgfHwgYm9keUlzUG9qbykge1xuICAgICAgaW5pdC5oZWFkZXJzID0ge1xuICAgICAgICAvLyBkZWZhdWx0IHRvIGFwcGxpY2F0aW9uL2pzb24gYnV0IGFsbG93IHVzZXIgZXhwbGljaXQgb3ZlcnJpZGVzXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIC4uLmluaXQuaGVhZGVycyxcbiAgICAgIH07XG4gICAgfVxuICAgIGluaXQuaGVhZGVycyA9IGF3YWl0IHRoaXMuZ2V0SGVhZGVycyhpbml0LmhlYWRlcnMpO1xuICAgIHJldHVybiBpbml0O1xuICB9XG5cbiAgLyoqIFBlcmZvcm0gbmV0d29yayByZXF1ZXN0IGFuZCByZXNvbHZlIHdpdGggSFRUUCBSZXNwb25zZSAqL1xuICBmZXRjaFJlc3BvbnNlKGlucHV0LCBpbml0KSB7XG4gICAgcmV0dXJuIGZldGNoKGlucHV0LCBpbml0KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IE5ldHdvcmtFcnJvcihyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIC8vIGVuc3VyZSBDT1JTLCBuZXR3b3JrIGRvd24sIGFuZCBwYXJzZSBlcnJvcnMgYXJlIHN0aWxsIGNhdWdodCBieSBOZXR3b3JrRXJyb3JCb3VuZGFyeVxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcbiAgICAgICAgICBlcnJvci5zdGF0dXMgPSA1MDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIHBhcnNlUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDQpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG5cbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuY29udGVudCAhPT0gJ2pzb24nICYmXG4gICAgICAgICAgdGhpcy5zY2hlbWEgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB0aGlzLnNjaGVtYSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5zY2hlbWEgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IE5ldHdvcmtFcnJvcihyZXNwb25zZSk7XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgY29udGVudCAnJHt0aGlzLmNvbnRlbnR9JyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzY2hlbWEuIEJpbmFyeS90ZXh0IHJlc3BvbnNlcyBjYW5ub3QgYmUgbm9ybWFsaXplZC4gVXNlIHNjaGVtYTogdW5kZWZpbmVkLmA7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbnRlbnQgPT09ICdzdHJlYW0nKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlLmJvZHkpO1xuICAgICAgcmV0dXJuIHRoaXMuY29udGVudCA9PT0gJ2pzb24nID9cbiAgICAgICAgICBqc29uUmVzcG9uc2UocmVzcG9uc2UpXG4gICAgICAgIDogcmVzcG9uc2VbdGhpcy5jb250ZW50XSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpO1xuICAgIGlmIChjb250ZW50VHlwZT8uaW5jbHVkZXMoJ2pzb24nKSkgcmV0dXJuIGpzb25SZXNwb25zZShyZXNwb25zZSk7XG5cbiAgICBjb25zdCBpc0JpbmFyeSA9IGNvbnRlbnRUeXBlICYmICF0ZXh0TGlrZVJlLnRlc3QoY29udGVudFR5cGUpO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHRoaXMuc2NoZW1hID09PSAnc3RyaW5nJyB8fFxuICAgICAgdHlwZW9mIHRoaXMuc2NoZW1hID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdGhpcy5zY2hlbWEgPT09IG51bGwgfHxcbiAgICAgIHRoaXMucHJvY2VzcyAhPT0gUmVzdEVuZHBvaW50LnByb3RvdHlwZS5wcm9jZXNzXG4gICAgKVxuICAgICAgcmV0dXJuIGlzQmluYXJ5ID8gcmVzcG9uc2UuYmxvYigpIDogcmVzcG9uc2UudGV4dCgpO1xuXG4gICAgaWYgKGlzQmluYXJ5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBOZXR3b3JrRXJyb3IocmVzcG9uc2UpO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gNDAwO1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBVbmV4cGVjdGVkIGJpbmFyeSBjb250ZW50LXR5cGUgZm9yIHNjaGVtYSAke3RoaXMuc2NoZW1hfWA7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBVbmV4cGVjdGVkIGJpbmFyeSBjb250ZW50LXR5cGUgXCIke2NvbnRlbnRUeXBlfVwiIGZvciBzY2hlbWEgJHt0aGlzLnNjaGVtYX0uIEJpbmFyeSByZXNwb25zZXMgY2Fubm90IGJlIG5vcm1hbGl6ZWQuIFVzZSBzY2hlbWE6IHVuZGVmaW5lZCBvciBzZXQgY29udGVudDogJ2Jsb2InLmA7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpLnRoZW4odGV4dCA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBOZXR3b3JrRXJyb3IocmVzcG9uc2UpO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gNDA0O1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBVbmV4cGVjdGVkIHRleHQgcmVzcG9uc2UgZm9yIHNjaGVtYSAke3RoaXMuc2NoZW1hfWA7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoY29udGVudFR5cGU/LmluY2x1ZGVzKCdodG1sJykgfHwgdGV4dC5zdGFydHNXaXRoKCc8IWRvY3R5cGUgaHRtbD4nKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRyeVBhcnNlKHRleHQpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgXCJjb250ZW50LXR5cGVcIiBoZWFkZXIgZG9lcyBub3QgaW5jbHVkZSBcImpzb25cIiwgYnV0IEpTT04gcmVzcG9uc2UgZm91bmQuXG5TZWUgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzQ2MjcgZm9yIGluZm9ybWF0aW9uIG9uIEpTT04gcmVzcG9uc2VzXG5cblVzaW5nIHBhcnNlZCBKU09OLlxuSWYgdGV4dCBjb250ZW50IHdhcyBleHBlY3RlZCBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL1Jlc3RFbmRwb2ludCNwYXJzZVJlc3BvbnNlYDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBVbmV4cGVjdGVkIGh0bWwgcmVzcG9uc2UgZm9yIHNjaGVtYSAke3RoaXMuc2NoZW1hfVxuVGhpcyBsaWtlbHkgbWVhbnMgbm8gQVBJIGVuZHBvaW50IHdhcyBjb25maWd1cmVkIGZvciB0aGlzIHJlcXVlc3QsIHJlc3VsdGluZyBpbiBhbiBIVE1MIGZhbGxiYWNrLlxuXG5SZXNwb25zZSAoZmlyc3QgMzAwIGNoYXJhY3RlcnMpOiAke3RleHQuc3Vic3RyaW5nKDAsIDMwMCl9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gIH1cblxuICBwcm9jZXNzKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZXJyb3JQb2xpY3koZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3Iuc3RhdHVzID49IDUwMCA/ICdzb2Z0JyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBwYXRoUmVnZXgoKSB7XG4gICAgcmV0dXJuIGdldFBhdGhSZWdleCh0aGlzLnBhdGgpO1xuICB9XG5cbiAgdGVzdEtleShrZXkpIHtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLm1ldGhvZCArICcgJyArIHRoaXMudXJsUHJlZml4O1xuICAgIGlmICgha2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCBsYXN0UXVlc3Rpb24gPSBrZXkubGFzdEluZGV4T2YoJz8nKTtcbiAgICBpZiAobGFzdFF1ZXN0aW9uID09PSAtMSkgbGFzdFF1ZXN0aW9uID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLnBhdGhSZWdleC50ZXN0KGtleS5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCwgbGFzdFF1ZXN0aW9uKSk7XG4gIH1cblxuICBleHRlbmQob3B0aW9ucykge1xuICAgIC8vIG1ha2UgYSBjb25zdHJ1Y3Rvci9wcm90b3R5cGUgYmFzZWQgb2ZmIHRoaXNcbiAgICAvLyBleHRlbmQgZnJvbSBpdCBhbmQgaW5pdCB3aXRoIG9wdGlvbnMgc2VudFxuICAgIGNsYXNzIEUgZXh0ZW5kcyB0aGlzLmNvbnN0cnVjdG9yIHt9XG5cbiAgICBPYmplY3QuYXNzaWduKEUucHJvdG90eXBlLCB0aGlzKTtcblxuICAgIHJldHVybiBuZXcgRShcbiAgICAgIC8vICBmZXRjaCBnZXQgb3ZlcnJpZGRlbiBieSBmdW5jdGlvbiBwcm90b3R5cGUsIHNvIHdlIG11c3Qgc2V0IGl0IGV4cGxpY2l0bHkgZXZlcnkgdGltZVxuICAgICAgeyBmZXRjaDogdGhpcy5mZXRjaCwgLi4ub3B0aW9ucyB9LFxuICAgICk7XG4gIH1cblxuICBwYWdpbmF0ZWQocmVtb3ZlQ3Vyc29yKSB7XG4gICAgaWYgKHR5cGVvZiByZW1vdmVDdXJzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSByZW1vdmVDdXJzb3I7XG4gICAgICByZW1vdmVDdXJzb3IgPSAoeyAuLi5wYXJhbXMgfSkgPT4ge1xuICAgICAgICBkZWxldGUgcGFyYW1zW2ZpZWxkTmFtZV07XG4gICAgICAgIHJldHVybiBbcGFyYW1zXTtcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNyZWF0ZVBhZ2luYXRlZFNjaGVtYSA9IGNvbGxlY3Rpb24gPT4ge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGNyZWF0ZVBhZ2luYXRpb25TY2hlbWEocmVtb3ZlQ3Vyc29yLCBjb2xsZWN0aW9uKTtcbiAgICB9O1xuICAgIGNvbnN0IG5ld1NjaGVtYSA9IG1hcENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIGNyZWF0ZVBhZ2luYXRlZFNjaGVtYSk7XG5cbiAgICBpZiAoIWZvdW5kKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQ29sbGVjdGlvbicpO1xuICAgIGNvbnN0IHN1cCA9IHRoaXM7XG5cbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgc2NoZW1hOiBuZXdTY2hlbWEsXG4gICAgICBrZXkoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gc3VwLmtleS5jYWxsKHRoaXMsIC4uLnJlbW92ZUN1cnNvciguLi5hcmdzKSk7XG4gICAgICB9LFxuICAgICAgbmFtZTogdGhpcy5uYW1lICsgJy5nZXRQYWdlJyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBnZXRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRlZCh0aGlzLnBhZ2luYXRpb25GaWVsZCk7XG4gIH1cblxuICBnZXQgcHVzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBzY2hlbWE6IGV4dHJhY3RDb2xsZWN0aW9uKHRoaXMuc2NoZW1hLCBzID0+IHMucHVzaCksXG4gICAgICBuYW1lOiB0aGlzLm5hbWUgKyAnLmNyZWF0ZScsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgdW5zaGlmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBzY2hlbWE6IGV4dHJhY3RDb2xsZWN0aW9uKHRoaXMuc2NoZW1hLCBzID0+IHMudW5zaGlmdCksXG4gICAgICBuYW1lOiB0aGlzLm5hbWUgKyAnLmNyZWF0ZScsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgYXNzaWduKCkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHNjaGVtYTogZXh0cmFjdENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIHMgPT4gcy5hc3NpZ24pLFxuICAgICAgbmFtZTogdGhpcy5uYW1lICsgJy5jcmVhdGUnLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHJlbW92ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmQoe1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgc2NoZW1hOiBleHRyYWN0Q29sbGVjdGlvbih0aGlzLnNjaGVtYSwgcyA9PiBzLnJlbW92ZSksXG4gICAgICBuYW1lOiB0aGlzLm5hbWUgKyAnLnJlbW92ZScsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgbW92ZSgpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgc2NoZW1hOiBleHRyYWN0Q29sbGVjdGlvbih0aGlzLnNjaGVtYSwgcyA9PiBzLm1vdmUpLFxuICAgICAgc2VhcmNoUGFyYW1zOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUgKyAnLnBhcnRpYWxVcGRhdGUnLFxuICAgIH07XG4gICAgaWYgKHRoaXMubW92ZVBhdGgpIG9wdGlvbnMucGF0aCA9IHRoaXMubW92ZVBhdGg7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKG9wdGlvbnMpO1xuICB9XG59XG5cbmNvbnN0IHRyeVBhcnNlID0gaW5wdXQgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGlucHV0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsUUFBUSxRQUFRLHVCQUF1QjtBQUVoRCxPQUFPQyxpQkFBaUIsTUFBTSx3QkFBd0I7QUFDdEQsT0FBT0MsYUFBYSxNQUFNLG9CQUFvQjtBQUM5QyxPQUFPQyxZQUFZLE1BQU0sbUJBQW1CO0FBQzVDLFNBQVNDLHNCQUFzQixRQUFRLDJCQUEyQjtBQUNsRSxPQUFPQyxjQUFjLE1BQU0scUJBQXFCO0FBQ2hELFNBQ0VDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLE1BQU0sUUFDRCxrQkFBa0I7QUFFekIsTUFBTUMsVUFBVSxHQUNkLHlFQUF5RTtBQUUzRSxTQUFTQyxZQUFZQSxDQUFDQyxRQUFRLEVBQUU7RUFDOUIsT0FBT0EsUUFBUSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDQyxLQUFLLENBQUNDLEtBQUssSUFBSTtJQUNwQ0EsS0FBSyxDQUFDQyxNQUFNLEdBQUcsR0FBRztJQUNsQixNQUFNRCxLQUFLO0VBQ2IsQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFIQSxJQUFBRSxRQUFBLGdCQUFBQywwQkFBQTtBQUlBLGVBQWUsTUFBTUMsWUFBWSxTQUFTbkIsUUFBUSxDQUFDO0VBRWpE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
@@ -1,8 +1,22 @@
1
- import type { EndpointExtraOptions, EndpointInstanceInterface, Schema, FetchFunction, ResolveType } from '@data-client/endpoint';
1
+ import type { Denormalize, EndpointExtraOptions, EndpointInstanceInterface, Schema, FetchFunction, ResolveType } from '@data-client/endpoint';
2
2
  import type { ExtractCollection } from './extractCollection.js';
3
3
  import { OptionsToBodyArgument, OptionsToFunction } from './OptionsToFunction.js';
4
4
  import { PathArgs, SoftPathArgs } from './pathTypes.js';
5
5
  import { EndpointUpdateFunction } from './RestEndpointTypeHelp.js';
6
+ export type ContentType = 'json' | 'blob' | 'text' | 'arrayBuffer' | 'stream';
7
+ interface ContentTypeMap {
8
+ blob: Blob;
9
+ text: string;
10
+ arrayBuffer: ArrayBuffer;
11
+ stream: ReadableStream<Uint8Array>;
12
+ json: any;
13
+ }
14
+ type ContentReturnType<C extends ContentType> = ContentTypeMap[C];
15
+ type ContentSchemaGuard<O> = O extends {
16
+ content: 'blob' | 'text' | 'arrayBuffer' | 'stream';
17
+ } ? {
18
+ schema?: undefined;
19
+ } : {};
6
20
  export interface RestInstanceBase<F extends FetchFunction = FetchFunction, S extends Schema | undefined = any, M extends boolean | undefined = boolean | undefined, O extends {
7
21
  path: string;
8
22
  body?: any;
@@ -33,6 +47,8 @@ export interface RestInstanceBase<F extends FetchFunction = FetchFunction, S ext
33
47
  readonly signal: AbortSignal | undefined;
34
48
  /** @see https://dataclient.io/rest/api/RestEndpoint#paginationField */
35
49
  readonly paginationField?: string;
50
+ /** @see https://dataclient.io/rest/api/RestEndpoint#content */
51
+ readonly content?: ContentType;
36
52
  /** Builds the URL to fetch
37
53
  * @see https://dataclient.io/rest/api/RestEndpoint#url
38
54
  */
@@ -68,7 +84,7 @@ export interface RestInstanceBase<F extends FetchFunction = FetchFunction, S ext
68
84
  /** Creates a child endpoint that inherits from this while overriding provided `options`.
69
85
  * @see https://dataclient.io/rest/api/RestEndpoint#extend
70
86
  */
71
- extend<E extends RestInstanceBase, ExtendOptions extends PartialRestGenerics | {}>(this: E, options: Readonly<RestEndpointExtendOptions<ExtendOptions, E, F> & ExtendOptions>): RestExtendedEndpoint<ExtendOptions, E>;
87
+ extend<E extends RestInstanceBase, ExtendOptions extends PartialRestGenerics | {}>(this: E, options: Readonly<RestEndpointExtendOptions<ExtendOptions, E, F> & ExtendOptions> & ContentSchemaGuard<ExtendOptions>): RestExtendedEndpoint<ExtendOptions, E>;
72
88
  }
73
89
  export interface RestInstance<F extends FetchFunction = FetchFunction, S extends Schema | undefined = any, M extends boolean | undefined = boolean | undefined, O extends {
74
90
  path: string;
@@ -94,33 +110,33 @@ export interface RestInstance<F extends FetchFunction = FetchFunction, S extends
94
110
  /** Create a new item (POST) and `push` to the end
95
111
  * @see https://dataclient.io/rest/api/RestEndpoint#push
96
112
  */
97
- push: AddEndpoint<F, ExtractCollection<S>['push'], Exclude<O, 'body' | 'method'> & {
98
- body: OptionsToAdderBodyArgument<O> | OptionsToAdderBodyArgument<O>[] | FormData;
113
+ push: AddEndpoint<F, ExtractCollection<S>['push'], Omit<O, 'body' | 'method'> & {
114
+ body: OptionsToAdderBodyArgument<O, ExtractCollection<S>['push']> | OptionsToAdderBodyArgument<O, ExtractCollection<S>['push']>[] | FormData;
99
115
  }>;
100
116
  /** Create a new item (POST) and `unshift` to the beginning
101
117
  * @see https://dataclient.io/rest/api/RestEndpoint#unshift
102
118
  */
103
- unshift: AddEndpoint<F, ExtractCollection<S>['unshift'], Exclude<O, 'body' | 'method'> & {
104
- body: OptionsToAdderBodyArgument<O> | OptionsToAdderBodyArgument<O>[] | FormData;
119
+ unshift: AddEndpoint<F, ExtractCollection<S>['unshift'], Omit<O, 'body' | 'method'> & {
120
+ body: OptionsToAdderBodyArgument<O, ExtractCollection<S>['unshift']> | OptionsToAdderBodyArgument<O, ExtractCollection<S>['unshift']>[] | FormData;
105
121
  }>;
106
122
  /** Create new item(s) (POST) and `Object.assign` merge
107
123
  * @see https://dataclient.io/rest/api/RestEndpoint#assign
108
124
  */
109
- assign: AddEndpoint<F, ExtractCollection<S>, Exclude<O, 'body' | 'method'> & {
110
- body: Record<string, OptionsToAdderBodyArgument<O>> | FormData;
125
+ assign: AddEndpoint<F, ExtractCollection<S>, Omit<O, 'body' | 'method'> & {
126
+ body: Record<string, OptionsToAdderBodyArgument<O, ExtractCollection<S>['assign']>> | FormData;
111
127
  }>;
112
128
  /** Remove item(s) (PATCH) from collection
113
129
  * @see https://dataclient.io/rest/api/RestEndpoint#remove
114
130
  */
115
- remove: RemoveEndpoint<F, ExtractCollection<S>['remove'], Exclude<O, 'body' | 'method'> & {
116
- body: OptionsToAdderBodyArgument<O> | OptionsToAdderBodyArgument<O>[] | FormData;
131
+ remove: RemoveEndpoint<F, ExtractCollection<S>['remove'], Omit<O, 'body' | 'method'> & {
132
+ body: Partial<OptionsToAdderBodyArgument<O, ExtractCollection<S>['remove']>> | Partial<OptionsToAdderBodyArgument<O, ExtractCollection<S>['remove']>>[] | FormData;
117
133
  }>;
118
134
  /** Move item between collections (PATCH) - removes from old, adds to new
119
135
  * @see https://dataclient.io/rest/api/RestEndpoint#move
120
136
  */
121
137
  move: MoveEndpoint<F, ExtractCollection<S>['move'], {
122
138
  path: 'movePath' extends keyof O ? O['movePath'] & string : O['path'];
123
- body: OptionsToAdderBodyArgument<O> | FormData;
139
+ body: Partial<OptionsToAdderBodyArgument<O, ExtractCollection<S>['move']>> | FormData;
124
140
  }>;
125
141
  }
126
142
  export type RestEndpointExtendOptions<O extends PartialRestGenerics, E extends {
@@ -134,7 +150,7 @@ type OptionsToRestEndpoint<O extends PartialRestGenerics, E extends RestInstance
134
150
  paginationField?: string;
135
151
  }, F extends FetchFunction> = 'path' extends keyof O ? RestType<'searchParams' extends keyof O ? [
136
152
  O['searchParams']
137
- ] extends [undefined] ? PathArgs<Exclude<O['path'], undefined>> : O['searchParams'] & PathArgs<Exclude<O['path'], undefined>> : PathArgs<Exclude<O['path'], undefined>>, OptionsToBodyArgument<'body' extends keyof O ? O : E, 'method' extends keyof O ? O['method'] : E['method']>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect'], O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>, {
153
+ ] extends [undefined] ? PathArgs<Exclude<O['path'], undefined>> : O['searchParams'] & PathArgs<Exclude<O['path'], undefined>> : PathArgs<Exclude<O['path'], undefined>>, OptionsToBodyArgument<'body' extends keyof O ? O : E, 'method' extends keyof O ? O['method'] : E['method']>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect'], O['process'] extends {} ? ReturnType<O['process']> : 'content' extends keyof O ? ContentReturnType<O['content'] & ContentType> : ResolveType<F>, {
138
154
  path: Exclude<O['path'], undefined>;
139
155
  body: 'body' extends keyof O ? O['body'] : E['body'];
140
156
  searchParams: 'searchParams' extends keyof O ? O['searchParams'] : E['searchParams'];
@@ -142,7 +158,7 @@ type OptionsToRestEndpoint<O extends PartialRestGenerics, E extends RestInstance
142
158
  paginationField: 'paginationField' extends keyof O ? O['paginationField'] : E['paginationField'];
143
159
  }> : 'body' extends keyof O ? RestType<'searchParams' extends keyof O ? [
144
160
  O['searchParams']
145
- ] extends [undefined] ? PathArgs<Exclude<O['path'], undefined>> : O['searchParams'] & PathArgs<Exclude<E['path'], undefined>> : PathArgs<Exclude<E['path'], undefined>>, OptionsToBodyArgument<O, 'method' extends keyof O ? O['method'] : E['method']>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect'], O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>, {
161
+ ] extends [undefined] ? PathArgs<Exclude<O['path'], undefined>> : O['searchParams'] & PathArgs<Exclude<E['path'], undefined>> : PathArgs<Exclude<E['path'], undefined>>, OptionsToBodyArgument<O, 'method' extends keyof O ? O['method'] : E['method']>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect'], O['process'] extends {} ? ReturnType<O['process']> : 'content' extends keyof O ? ContentReturnType<O['content'] & ContentType> : ResolveType<F>, {
146
162
  path: E['path'];
147
163
  body: O['body'];
148
164
  searchParams: 'searchParams' extends keyof O ? O['searchParams'] : E['searchParams'];
@@ -150,7 +166,7 @@ type OptionsToRestEndpoint<O extends PartialRestGenerics, E extends RestInstance
150
166
  paginationField: 'paginationField' extends keyof O ? O['paginationField'] : Extract<E['paginationField'], string>;
151
167
  }> : 'searchParams' extends keyof O ? RestType<[
152
168
  O['searchParams']
153
- ] extends [undefined] ? PathArgs<Exclude<O['path'], undefined>> : O['searchParams'] & PathArgs<Exclude<E['path'], undefined>>, OptionsToBodyArgument<E, 'method' extends keyof O ? O['method'] : E['method']>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect'], O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>, {
169
+ ] extends [undefined] ? PathArgs<Exclude<O['path'], undefined>> : O['searchParams'] & PathArgs<Exclude<E['path'], undefined>>, OptionsToBodyArgument<E, 'method' extends keyof O ? O['method'] : E['method']>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect'], O['process'] extends {} ? ReturnType<O['process']> : 'content' extends keyof O ? ContentReturnType<O['content'] & ContentType> : ResolveType<F>, {
154
170
  path: E['path'];
155
171
  body: E['body'];
156
172
  searchParams: O['searchParams'];
@@ -171,7 +187,7 @@ export type RestExtendedEndpoint<O extends PartialRestGenerics, E extends RestIn
171
187
  };
172
188
  } ? {
173
189
  paginationField: E['getPage']['paginationField'];
174
- } : unknown), RestInstance<(...args: Parameters<E>) => O['process'] extends {} ? Promise<ReturnType<O['process']>> : ReturnType<E>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect']>> & Omit<O, KeyofRestEndpoint> & Omit<E, KeyofRestEndpoint | keyof O>;
190
+ } : unknown), RestInstance<(...args: Parameters<E>) => O['process'] extends {} ? Promise<ReturnType<O['process']>> : 'content' extends keyof O ? Promise<ContentReturnType<O['content'] & ContentType>> : ReturnType<E>, 'schema' extends keyof O ? O['schema'] : E['schema'], 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : 'method' extends keyof O ? MethodToSide<O['method']> : E['sideEffect']>> & Omit<O, KeyofRestEndpoint> & Omit<E, KeyofRestEndpoint | keyof O>;
175
191
  export interface PartialRestGenerics {
176
192
  /** @see https://dataclient.io/rest/api/RestEndpoint#path */
177
193
  readonly path?: string;
@@ -189,6 +205,8 @@ export interface PartialRestGenerics {
189
205
  readonly paginationField?: string;
190
206
  /** @see https://dataclient.io/rest/api/RestEndpoint#process */
191
207
  process?(value: any, ...args: any): any;
208
+ /** @see https://dataclient.io/rest/api/RestEndpoint#content */
209
+ readonly content?: ContentType;
192
210
  }
193
211
  /** Generic types when constructing a RestEndpoint
194
212
  *
@@ -277,7 +295,7 @@ type InferRestMethodWhenOmitted<O extends RestGenerics> = O extends {
277
295
  type MethodArgForBodyInference<O extends RestGenerics> = 'method' extends keyof O ? O['method'] : InferRestMethodWhenOmitted<O>;
278
296
  type OptionsToAdderBodyArgument<O extends {
279
297
  body?: any;
280
- }> = 'body' extends keyof O ? O['body'] : any;
298
+ }, EntitySchema = any> = 'body' extends keyof O ? O['body'] : Partial<Denormalize<EntitySchema>>;
281
299
  export interface RestEndpointOptions<F extends FetchFunction = FetchFunction, S extends Schema | undefined = undefined> extends EndpointExtraOptions<F> {
282
300
  /** Prepended to all urls
283
301
  * @see https://dataclient.io/rest/api/RestEndpoint#urlPrefix
@@ -300,6 +318,8 @@ export interface RestEndpointOptions<F extends FetchFunction = FetchFunction, S
300
318
  * @see https://dataclient.io/rest/api/RestEndpoint#parseResponse
301
319
  */
302
320
  parseResponse?(response: Response): Promise<any>;
321
+ /** @see https://dataclient.io/rest/api/RestEndpoint#content */
322
+ content?: ContentType;
303
323
  sideEffect?: boolean | undefined;
304
324
  name?: string;
305
325
  signal?: AbortSignal;
@@ -310,14 +330,14 @@ export interface RestEndpointOptions<F extends FetchFunction = FetchFunction, S
310
330
  }
311
331
  export type RestEndpointConstructorOptions<O extends RestGenerics = any> = RestEndpointOptions<RestFetch<unknown extends O ? any : 'searchParams' extends keyof O ? [
312
332
  O['searchParams']
313
- ] extends [undefined] ? SoftPathArgs<O['path']> : O['searchParams'] & SoftPathArgs<O['path']> : SoftPathArgs<O['path']>, OptionsToBodyArgument<O, MethodArgForBodyInference<O>>, O['process'] extends {} ? ReturnType<O['process']> : any>, O['schema']>;
333
+ ] extends [undefined] ? SoftPathArgs<O['path']> : O['searchParams'] & SoftPathArgs<O['path']> : SoftPathArgs<O['path']>, OptionsToBodyArgument<O, MethodArgForBodyInference<O>>, O['process'] extends {} ? ReturnType<O['process']> : 'content' extends keyof O ? ContentReturnType<O['content'] & ContentType> : any>, O['schema']>;
314
334
  /** Simplifies endpoint definitions that follow REST patterns
315
335
  *
316
336
  * @see https://dataclient.io/rest/api/RestEndpoint
317
337
  */
318
338
  export interface RestEndpoint<O extends RestGenerics = any> extends RestInstance<RestFetch<unknown extends O ? any : 'searchParams' extends keyof O ? [
319
339
  O['searchParams']
320
- ] extends [undefined] ? PathArgs<O['path']> : O['searchParams'] & PathArgs<O['path']> : PathArgs<O['path']>, OptionsToBodyArgument<O, MethodArgForBodyInference<O>>, O['process'] extends {} ? ReturnType<O['process']> : any>, 'schema' extends keyof O ? O['schema'] : undefined, 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : MethodToSide<MethodArgForBodyInference<O>>, 'method' extends keyof O ? O : O & {
340
+ ] extends [undefined] ? PathArgs<O['path']> : O['searchParams'] & PathArgs<O['path']> : PathArgs<O['path']>, OptionsToBodyArgument<O, MethodArgForBodyInference<O>>, O['process'] extends {} ? ReturnType<O['process']> : 'content' extends keyof O ? ContentReturnType<O['content'] & ContentType> : any>, 'schema' extends keyof O ? O['schema'] : undefined, 'sideEffect' extends keyof O ? Extract<O['sideEffect'], boolean | undefined> : MethodToSide<MethodArgForBodyInference<O>>, 'method' extends keyof O ? O : O & {
321
341
  method: InferRestMethodWhenOmitted<O>;
322
342
  }> {
323
343
  }
@@ -326,7 +346,7 @@ export interface RestEndpointConstructor {
326
346
  *
327
347
  * @see https://dataclient.io/rest/api/RestEndpoint
328
348
  */
329
- new <O extends RestGenerics = any>({ method, sideEffect, name, ...options }: RestEndpointConstructorOptions<O> & Readonly<O>): RestEndpoint<O>;
349
+ new <O extends RestGenerics = any>({ method, sideEffect, name, ...options }: RestEndpointConstructorOptions<O> & Readonly<O> & ContentSchemaGuard<O>): RestEndpoint<O>;
330
350
  readonly prototype: RestInstanceBase;
331
351
  }
332
352
  export type MethodToSide<M> = M extends string ? M extends 'GET' ? undefined : true : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"RestEndpointTypes.d.ts","sourceRoot":"","sources":["../src/RestEndpointTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RestEndpointTypes.d.ts","sourceRoot":"","sources":["../src/RestEndpointTypes.ts"],"names":[],"mappings":"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"}