UNPKG

34.7 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var axios = _interopDefault(require('axios'));
8
9/*! *****************************************************************************
10Copyright (c) Microsoft Corporation. All rights reserved.
11Licensed under the Apache License, Version 2.0 (the "License"); you may not use
12this file except in compliance with the License. You may obtain a copy of the
13License at http://www.apache.org/licenses/LICENSE-2.0
14
15THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
17WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
18MERCHANTABLITY OR NON-INFRINGEMENT.
19
20See the Apache Version 2.0 License for specific language governing permissions
21and limitations under the License.
22***************************************************************************** */
23
24var __assign = function() {
25 __assign = Object.assign || function __assign(t) {
26 for (var s, i = 1, n = arguments.length; i < n; i++) {
27 s = arguments[i];
28 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
29 }
30 return t;
31 };
32 return __assign.apply(this, arguments);
33};
34
35function __awaiter(thisArg, _arguments, P, generator) {
36 return new (P || (P = Promise))(function (resolve, reject) {
37 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
38 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
39 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
40 step((generator = generator.apply(thisArg, _arguments || [])).next());
41 });
42}
43
44function __generator(thisArg, body) {
45 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
46 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47 function verb(n) { return function (v) { return step([n, v]); }; }
48 function step(op) {
49 if (f) throw new TypeError("Generator is already executing.");
50 while (_) try {
51 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
52 if (y = 0, t) op = [op[0] & 2, t.value];
53 switch (op[0]) {
54 case 0: case 1: t = op; break;
55 case 4: _.label++; return { value: op[1], done: false };
56 case 5: _.label++; y = op[1]; op = [0]; continue;
57 case 7: op = _.ops.pop(); _.trys.pop(); continue;
58 default:
59 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63 if (t[2]) _.ops.pop();
64 _.trys.pop(); continue;
65 }
66 op = body.call(thisArg, _);
67 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69 }
70}
71
72var has = Object.prototype.hasOwnProperty;
73var isArray = Array.isArray;
74
75var hexTable = (function () {
76 var array = [];
77 for (var i = 0; i < 256; ++i) {
78 array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
79 }
80
81 return array;
82}());
83
84var compactQueue = function compactQueue(queue) {
85 while (queue.length > 1) {
86 var item = queue.pop();
87 var obj = item.obj[item.prop];
88
89 if (isArray(obj)) {
90 var compacted = [];
91
92 for (var j = 0; j < obj.length; ++j) {
93 if (typeof obj[j] !== 'undefined') {
94 compacted.push(obj[j]);
95 }
96 }
97
98 item.obj[item.prop] = compacted;
99 }
100 }
101};
102
103var arrayToObject = function arrayToObject(source, options) {
104 var obj = options && options.plainObjects ? Object.create(null) : {};
105 for (var i = 0; i < source.length; ++i) {
106 if (typeof source[i] !== 'undefined') {
107 obj[i] = source[i];
108 }
109 }
110
111 return obj;
112};
113
114var merge = function merge(target, source, options) {
115 /* eslint no-param-reassign: 0 */
116 if (!source) {
117 return target;
118 }
119
120 if (typeof source !== 'object') {
121 if (isArray(target)) {
122 target.push(source);
123 } else if (target && typeof target === 'object') {
124 if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
125 target[source] = true;
126 }
127 } else {
128 return [target, source];
129 }
130
131 return target;
132 }
133
134 if (!target || typeof target !== 'object') {
135 return [target].concat(source);
136 }
137
138 var mergeTarget = target;
139 if (isArray(target) && !isArray(source)) {
140 mergeTarget = arrayToObject(target, options);
141 }
142
143 if (isArray(target) && isArray(source)) {
144 source.forEach(function (item, i) {
145 if (has.call(target, i)) {
146 var targetItem = target[i];
147 if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
148 target[i] = merge(targetItem, item, options);
149 } else {
150 target.push(item);
151 }
152 } else {
153 target[i] = item;
154 }
155 });
156 return target;
157 }
158
159 return Object.keys(source).reduce(function (acc, key) {
160 var value = source[key];
161
162 if (has.call(acc, key)) {
163 acc[key] = merge(acc[key], value, options);
164 } else {
165 acc[key] = value;
166 }
167 return acc;
168 }, mergeTarget);
169};
170
171var assign = function assignSingleSource(target, source) {
172 return Object.keys(source).reduce(function (acc, key) {
173 acc[key] = source[key];
174 return acc;
175 }, target);
176};
177
178var decode = function (str, decoder, charset) {
179 var strWithoutPlus = str.replace(/\+/g, ' ');
180 if (charset === 'iso-8859-1') {
181 // unescape never throws, no try...catch needed:
182 return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
183 }
184 // utf-8
185 try {
186 return decodeURIComponent(strWithoutPlus);
187 } catch (e) {
188 return strWithoutPlus;
189 }
190};
191
192var encode = function encode(str, defaultEncoder, charset) {
193 // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
194 // It has been adapted here for stricter adherence to RFC 3986
195 if (str.length === 0) {
196 return str;
197 }
198
199 var string = str;
200 if (typeof str === 'symbol') {
201 string = Symbol.prototype.toString.call(str);
202 } else if (typeof str !== 'string') {
203 string = String(str);
204 }
205
206 if (charset === 'iso-8859-1') {
207 return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
208 return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
209 });
210 }
211
212 var out = '';
213 for (var i = 0; i < string.length; ++i) {
214 var c = string.charCodeAt(i);
215
216 if (
217 c === 0x2D // -
218 || c === 0x2E // .
219 || c === 0x5F // _
220 || c === 0x7E // ~
221 || (c >= 0x30 && c <= 0x39) // 0-9
222 || (c >= 0x41 && c <= 0x5A) // a-z
223 || (c >= 0x61 && c <= 0x7A) // A-Z
224 ) {
225 out += string.charAt(i);
226 continue;
227 }
228
229 if (c < 0x80) {
230 out = out + hexTable[c];
231 continue;
232 }
233
234 if (c < 0x800) {
235 out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
236 continue;
237 }
238
239 if (c < 0xD800 || c >= 0xE000) {
240 out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
241 continue;
242 }
243
244 i += 1;
245 c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
246 out += hexTable[0xF0 | (c >> 18)]
247 + hexTable[0x80 | ((c >> 12) & 0x3F)]
248 + hexTable[0x80 | ((c >> 6) & 0x3F)]
249 + hexTable[0x80 | (c & 0x3F)];
250 }
251
252 return out;
253};
254
255var compact = function compact(value) {
256 var queue = [{ obj: { o: value }, prop: 'o' }];
257 var refs = [];
258
259 for (var i = 0; i < queue.length; ++i) {
260 var item = queue[i];
261 var obj = item.obj[item.prop];
262
263 var keys = Object.keys(obj);
264 for (var j = 0; j < keys.length; ++j) {
265 var key = keys[j];
266 var val = obj[key];
267 if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
268 queue.push({ obj: obj, prop: key });
269 refs.push(val);
270 }
271 }
272 }
273
274 compactQueue(queue);
275
276 return value;
277};
278
279var isRegExp = function isRegExp(obj) {
280 return Object.prototype.toString.call(obj) === '[object RegExp]';
281};
282
283var isBuffer = function isBuffer(obj) {
284 if (!obj || typeof obj !== 'object') {
285 return false;
286 }
287
288 return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
289};
290
291var combine = function combine(a, b) {
292 return [].concat(a, b);
293};
294
295var utils = {
296 arrayToObject: arrayToObject,
297 assign: assign,
298 combine: combine,
299 compact: compact,
300 decode: decode,
301 encode: encode,
302 isBuffer: isBuffer,
303 isRegExp: isRegExp,
304 merge: merge
305};
306
307var replace = String.prototype.replace;
308var percentTwenties = /%20/g;
309
310
311
312var Format = {
313 RFC1738: 'RFC1738',
314 RFC3986: 'RFC3986'
315};
316
317var formats = utils.assign(
318 {
319 'default': Format.RFC3986,
320 formatters: {
321 RFC1738: function (value) {
322 return replace.call(value, percentTwenties, '+');
323 },
324 RFC3986: function (value) {
325 return String(value);
326 }
327 }
328 },
329 Format
330);
331
332var has$1 = Object.prototype.hasOwnProperty;
333
334var arrayPrefixGenerators = {
335 brackets: function brackets(prefix) {
336 return prefix + '[]';
337 },
338 comma: 'comma',
339 indices: function indices(prefix, key) {
340 return prefix + '[' + key + ']';
341 },
342 repeat: function repeat(prefix) {
343 return prefix;
344 }
345};
346
347var isArray$1 = Array.isArray;
348var push = Array.prototype.push;
349var pushToArray = function (arr, valueOrArray) {
350 push.apply(arr, isArray$1(valueOrArray) ? valueOrArray : [valueOrArray]);
351};
352
353var toISO = Date.prototype.toISOString;
354
355var defaultFormat = formats['default'];
356var defaults = {
357 addQueryPrefix: false,
358 allowDots: false,
359 charset: 'utf-8',
360 charsetSentinel: false,
361 delimiter: '&',
362 encode: true,
363 encoder: utils.encode,
364 encodeValuesOnly: false,
365 format: defaultFormat,
366 formatter: formats.formatters[defaultFormat],
367 // deprecated
368 indices: false,
369 serializeDate: function serializeDate(date) {
370 return toISO.call(date);
371 },
372 skipNulls: false,
373 strictNullHandling: false
374};
375
376var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
377 return typeof v === 'string'
378 || typeof v === 'number'
379 || typeof v === 'boolean'
380 || typeof v === 'symbol'
381 || typeof v === 'bigint';
382};
383
384var stringify = function stringify(
385 object,
386 prefix,
387 generateArrayPrefix,
388 strictNullHandling,
389 skipNulls,
390 encoder,
391 filter,
392 sort,
393 allowDots,
394 serializeDate,
395 formatter,
396 encodeValuesOnly,
397 charset
398) {
399 var obj = object;
400 if (typeof filter === 'function') {
401 obj = filter(prefix, obj);
402 } else if (obj instanceof Date) {
403 obj = serializeDate(obj);
404 } else if (generateArrayPrefix === 'comma' && isArray$1(obj)) {
405 obj = obj.join(',');
406 }
407
408 if (obj === null) {
409 if (strictNullHandling) {
410 return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix;
411 }
412
413 obj = '';
414 }
415
416 if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
417 if (encoder) {
418 var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key');
419 return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))];
420 }
421 return [formatter(prefix) + '=' + formatter(String(obj))];
422 }
423
424 var values = [];
425
426 if (typeof obj === 'undefined') {
427 return values;
428 }
429
430 var objKeys;
431 if (isArray$1(filter)) {
432 objKeys = filter;
433 } else {
434 var keys = Object.keys(obj);
435 objKeys = sort ? keys.sort(sort) : keys;
436 }
437
438 for (var i = 0; i < objKeys.length; ++i) {
439 var key = objKeys[i];
440
441 if (skipNulls && obj[key] === null) {
442 continue;
443 }
444
445 if (isArray$1(obj)) {
446 pushToArray(values, stringify(
447 obj[key],
448 typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,
449 generateArrayPrefix,
450 strictNullHandling,
451 skipNulls,
452 encoder,
453 filter,
454 sort,
455 allowDots,
456 serializeDate,
457 formatter,
458 encodeValuesOnly,
459 charset
460 ));
461 } else {
462 pushToArray(values, stringify(
463 obj[key],
464 prefix + (allowDots ? '.' + key : '[' + key + ']'),
465 generateArrayPrefix,
466 strictNullHandling,
467 skipNulls,
468 encoder,
469 filter,
470 sort,
471 allowDots,
472 serializeDate,
473 formatter,
474 encodeValuesOnly,
475 charset
476 ));
477 }
478 }
479
480 return values;
481};
482
483var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
484 if (!opts) {
485 return defaults;
486 }
487
488 if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {
489 throw new TypeError('Encoder has to be a function.');
490 }
491
492 var charset = opts.charset || defaults.charset;
493 if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
494 throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
495 }
496
497 var format = formats['default'];
498 if (typeof opts.format !== 'undefined') {
499 if (!has$1.call(formats.formatters, opts.format)) {
500 throw new TypeError('Unknown format option provided.');
501 }
502 format = opts.format;
503 }
504 var formatter = formats.formatters[format];
505
506 var filter = defaults.filter;
507 if (typeof opts.filter === 'function' || isArray$1(opts.filter)) {
508 filter = opts.filter;
509 }
510
511 return {
512 addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
513 allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
514 charset: charset,
515 charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
516 delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
517 encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
518 encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
519 encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
520 filter: filter,
521 formatter: formatter,
522 serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
523 skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
524 sort: typeof opts.sort === 'function' ? opts.sort : null,
525 strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
526 };
527};
528
529var stringify_1 = function (object, opts) {
530 var obj = object;
531 var options = normalizeStringifyOptions(opts);
532
533 var objKeys;
534 var filter;
535
536 if (typeof options.filter === 'function') {
537 filter = options.filter;
538 obj = filter('', obj);
539 } else if (isArray$1(options.filter)) {
540 filter = options.filter;
541 objKeys = filter;
542 }
543
544 var keys = [];
545
546 if (typeof obj !== 'object' || obj === null) {
547 return '';
548 }
549
550 var arrayFormat;
551 if (opts && opts.arrayFormat in arrayPrefixGenerators) {
552 arrayFormat = opts.arrayFormat;
553 } else if (opts && 'indices' in opts) {
554 arrayFormat = opts.indices ? 'indices' : 'repeat';
555 } else {
556 arrayFormat = 'indices';
557 }
558
559 var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
560
561 if (!objKeys) {
562 objKeys = Object.keys(obj);
563 }
564
565 if (options.sort) {
566 objKeys.sort(options.sort);
567 }
568
569 for (var i = 0; i < objKeys.length; ++i) {
570 var key = objKeys[i];
571
572 if (options.skipNulls && obj[key] === null) {
573 continue;
574 }
575 pushToArray(keys, stringify(
576 obj[key],
577 key,
578 generateArrayPrefix,
579 options.strictNullHandling,
580 options.skipNulls,
581 options.encode ? options.encoder : null,
582 options.filter,
583 options.sort,
584 options.allowDots,
585 options.serializeDate,
586 options.formatter,
587 options.encodeValuesOnly,
588 options.charset
589 ));
590 }
591
592 var joined = keys.join(options.delimiter);
593 var prefix = options.addQueryPrefix === true ? '?' : '';
594
595 if (options.charsetSentinel) {
596 if (options.charset === 'iso-8859-1') {
597 // encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
598 prefix += 'utf8=%26%2310003%3B&';
599 } else {
600 // encodeURIComponent('✓')
601 prefix += 'utf8=%E2%9C%93&';
602 }
603 }
604
605 return joined.length > 0 ? prefix + joined : '';
606};
607
608var has$2 = Object.prototype.hasOwnProperty;
609var isArray$2 = Array.isArray;
610
611var defaults$1 = {
612 allowDots: false,
613 allowPrototypes: false,
614 arrayLimit: 20,
615 charset: 'utf-8',
616 charsetSentinel: false,
617 comma: false,
618 decoder: utils.decode,
619 delimiter: '&',
620 depth: 5,
621 ignoreQueryPrefix: false,
622 interpretNumericEntities: false,
623 parameterLimit: 1000,
624 parseArrays: true,
625 plainObjects: false,
626 strictNullHandling: false
627};
628
629var interpretNumericEntities = function (str) {
630 return str.replace(/&#(\d+);/g, function ($0, numberStr) {
631 return String.fromCharCode(parseInt(numberStr, 10));
632 });
633};
634
635// This is what browsers will submit when the ✓ character occurs in an
636// application/x-www-form-urlencoded body and the encoding of the page containing
637// the form is iso-8859-1, or when the submitted form has an accept-charset
638// attribute of iso-8859-1. Presumably also with other charsets that do not contain
639// the ✓ character, such as us-ascii.
640var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
641
642// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
643var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
644
645var parseValues = function parseQueryStringValues(str, options) {
646 var obj = {};
647 var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
648 var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
649 var parts = cleanStr.split(options.delimiter, limit);
650 var skipIndex = -1; // Keep track of where the utf8 sentinel was found
651 var i;
652
653 var charset = options.charset;
654 if (options.charsetSentinel) {
655 for (i = 0; i < parts.length; ++i) {
656 if (parts[i].indexOf('utf8=') === 0) {
657 if (parts[i] === charsetSentinel) {
658 charset = 'utf-8';
659 } else if (parts[i] === isoSentinel) {
660 charset = 'iso-8859-1';
661 }
662 skipIndex = i;
663 i = parts.length; // The eslint settings do not allow break;
664 }
665 }
666 }
667
668 for (i = 0; i < parts.length; ++i) {
669 if (i === skipIndex) {
670 continue;
671 }
672 var part = parts[i];
673
674 var bracketEqualsPos = part.indexOf(']=');
675 var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
676
677 var key, val;
678 if (pos === -1) {
679 key = options.decoder(part, defaults$1.decoder, charset, 'key');
680 val = options.strictNullHandling ? null : '';
681 } else {
682 key = options.decoder(part.slice(0, pos), defaults$1.decoder, charset, 'key');
683 val = options.decoder(part.slice(pos + 1), defaults$1.decoder, charset, 'value');
684 }
685
686 if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
687 val = interpretNumericEntities(val);
688 }
689
690 if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
691 val = val.split(',');
692 }
693
694 if (part.indexOf('[]=') > -1) {
695 val = isArray$2(val) ? [val] : val;
696 }
697
698 if (has$2.call(obj, key)) {
699 obj[key] = utils.combine(obj[key], val);
700 } else {
701 obj[key] = val;
702 }
703 }
704
705 return obj;
706};
707
708var parseObject = function (chain, val, options) {
709 var leaf = val;
710
711 for (var i = chain.length - 1; i >= 0; --i) {
712 var obj;
713 var root = chain[i];
714
715 if (root === '[]' && options.parseArrays) {
716 obj = [].concat(leaf);
717 } else {
718 obj = options.plainObjects ? Object.create(null) : {};
719 var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
720 var index = parseInt(cleanRoot, 10);
721 if (!options.parseArrays && cleanRoot === '') {
722 obj = { 0: leaf };
723 } else if (
724 !isNaN(index)
725 && root !== cleanRoot
726 && String(index) === cleanRoot
727 && index >= 0
728 && (options.parseArrays && index <= options.arrayLimit)
729 ) {
730 obj = [];
731 obj[index] = leaf;
732 } else {
733 obj[cleanRoot] = leaf;
734 }
735 }
736
737 leaf = obj;
738 }
739
740 return leaf;
741};
742
743var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
744 if (!givenKey) {
745 return;
746 }
747
748 // Transform dot notation to bracket notation
749 var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
750
751 // The regex chunks
752
753 var brackets = /(\[[^[\]]*])/;
754 var child = /(\[[^[\]]*])/g;
755
756 // Get the parent
757
758 var segment = options.depth > 0 && brackets.exec(key);
759 var parent = segment ? key.slice(0, segment.index) : key;
760
761 // Stash the parent if it exists
762
763 var keys = [];
764 if (parent) {
765 // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
766 if (!options.plainObjects && has$2.call(Object.prototype, parent)) {
767 if (!options.allowPrototypes) {
768 return;
769 }
770 }
771
772 keys.push(parent);
773 }
774
775 // Loop through children appending to the array until we hit depth
776
777 var i = 0;
778 while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
779 i += 1;
780 if (!options.plainObjects && has$2.call(Object.prototype, segment[1].slice(1, -1))) {
781 if (!options.allowPrototypes) {
782 return;
783 }
784 }
785 keys.push(segment[1]);
786 }
787
788 // If there's a remainder, just add whatever is left
789
790 if (segment) {
791 keys.push('[' + key.slice(segment.index) + ']');
792 }
793
794 return parseObject(keys, val, options);
795};
796
797var normalizeParseOptions = function normalizeParseOptions(opts) {
798 if (!opts) {
799 return defaults$1;
800 }
801
802 if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
803 throw new TypeError('Decoder has to be a function.');
804 }
805
806 if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
807 throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');
808 }
809 var charset = typeof opts.charset === 'undefined' ? defaults$1.charset : opts.charset;
810
811 return {
812 allowDots: typeof opts.allowDots === 'undefined' ? defaults$1.allowDots : !!opts.allowDots,
813 allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults$1.allowPrototypes,
814 arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults$1.arrayLimit,
815 charset: charset,
816 charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults$1.charsetSentinel,
817 comma: typeof opts.comma === 'boolean' ? opts.comma : defaults$1.comma,
818 decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults$1.decoder,
819 delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults$1.delimiter,
820 // eslint-disable-next-line no-implicit-coercion, no-extra-parens
821 depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults$1.depth,
822 ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
823 interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults$1.interpretNumericEntities,
824 parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults$1.parameterLimit,
825 parseArrays: opts.parseArrays !== false,
826 plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults$1.plainObjects,
827 strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults$1.strictNullHandling
828 };
829};
830
831var parse = function (str, opts) {
832 var options = normalizeParseOptions(opts);
833
834 if (str === '' || str === null || typeof str === 'undefined') {
835 return options.plainObjects ? Object.create(null) : {};
836 }
837
838 var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
839 var obj = options.plainObjects ? Object.create(null) : {};
840
841 // Iterate over the keys and setup the new object
842
843 var keys = Object.keys(tempObj);
844 for (var i = 0; i < keys.length; ++i) {
845 var key = keys[i];
846 var newObj = parseKeys(key, tempObj[key], options);
847 obj = utils.merge(obj, newObj, options);
848 }
849
850 return utils.compact(obj);
851};
852
853var lib = {
854 formats: formats,
855 parse: parse,
856 stringify: stringify_1
857};
858
859function oauth(axiosInstance, clientId, clientSecret) {
860 var _this = this;
861 return {
862 token: function (headers) { return __awaiter(_this, void 0, void 0, function () {
863 var _a, data, responseHeaders;
864 return __generator(this, function (_b) {
865 switch (_b.label) {
866 case 0: return [4 /*yield*/, axiosInstance.post('/oauth/token', lib.stringify({
867 client_id: clientId,
868 client_secret: clientSecret,
869 grant_type: 'client_credentials'
870 }), {
871 headers: {
872 'Content-Type': 'application/x-www-form-urlencoded',
873 'Zuora-Track-Id': (headers === null || headers === void 0 ? void 0 : headers['Zuora-Track-Id']) || ''
874 }
875 })];
876 case 1:
877 _a = _b.sent(), data = _a.data, responseHeaders = _a.headers;
878 return [2 /*return*/, {
879 accessToken: data.access_token,
880 expiresIn: data.expires_in,
881 jti: data.jti,
882 scope: data.scope,
883 tokenType: data.token_type,
884 limitMinute: responseHeaders['x-ratelimit-limit-minute'],
885 remainingMinute: responseHeaders['x-ratelimit-remaining-minute'],
886 trackId: responseHeaders['zuora-track-id']
887 }];
888 }
889 });
890 }); }
891 };
892}
893
894var bearerTokenProvider = function (oauthEndpoint) {
895 return function (trackId) { return __awaiter(void 0, void 0, void 0, function () {
896 var accessToken;
897 return __generator(this, function (_a) {
898 switch (_a.label) {
899 case 0: return [4 /*yield*/, oauthEndpoint.token({ 'Zuora-Track-Id': trackId })];
900 case 1:
901 accessToken = (_a.sent()).accessToken;
902 return [2 /*return*/, "Bearer " + accessToken];
903 }
904 });
905 }); };
906};
907var basicAuthProvider = function (clientId, clientSecret) {
908 // eslint-disable-next-line @typescript-eslint/no-unused-vars
909 return function (_) { return __awaiter(void 0, void 0, void 0, function () {
910 var toEncode, buffer;
911 return __generator(this, function (_a) {
912 try {
913 toEncode = clientId + ":" + clientSecret;
914 buffer = Buffer.from(toEncode);
915 return [2 /*return*/, Promise.resolve("Basic " + buffer.toString('base64'))];
916 }
917 catch (e) {
918 return [2 /*return*/, Promise.reject(new Error('cannot generate basic auth header'))];
919 }
920 return [2 /*return*/];
921 });
922 }); };
923};
924
925var actionEndpoints = function (axiosInstance, authHeaderProvider) {
926 return {
927 query: function (zoqlQuery, batchSize, headers) {
928 if (batchSize === void 0) { batchSize = 2000; }
929 return __awaiter(void 0, void 0, void 0, function () {
930 var authHeader, data;
931 return __generator(this, function (_a) {
932 switch (_a.label) {
933 case 0: return [4 /*yield*/, authHeaderProvider((headers === null || headers === void 0 ? void 0 : headers['Zuora-Track-Id']) || '')];
934 case 1:
935 authHeader = _a.sent();
936 return [4 /*yield*/, axiosInstance.post('/v1/action/query', JSON.stringify({ queryString: zoqlQuery, conf: { batchSize: batchSize } }), {
937 headers: {
938 Authorization: authHeader,
939 'Content-Type': 'application/json'
940 }
941 })];
942 case 2:
943 data = (_a.sent()).data;
944 return [2 /*return*/, data];
945 }
946 });
947 });
948 },
949 queryMore: function (queryLocator, headers) { return __awaiter(void 0, void 0, void 0, function () {
950 var authHeader, data;
951 return __generator(this, function (_a) {
952 switch (_a.label) {
953 case 0: return [4 /*yield*/, authHeaderProvider((headers === null || headers === void 0 ? void 0 : headers['Zuora-Track-Id']) || '')];
954 case 1:
955 authHeader = _a.sent();
956 return [4 /*yield*/, axiosInstance.post('/v1/action/queryMore', JSON.stringify({ queryLocator: queryLocator }), {
957 headers: {
958 Authorization: authHeader,
959 'Content-Type': 'application/json'
960 }
961 })];
962 case 2:
963 data = (_a.sent()).data;
964 return [2 /*return*/, data];
965 }
966 });
967 }); }
968 };
969};
970
971var describeEndpoint = function (axiosInstance, authHeaderProvider) {
972 return function (objectName, headers) { return __awaiter(void 0, void 0, void 0, function () {
973 var authHeader, data;
974 return __generator(this, function (_a) {
975 switch (_a.label) {
976 case 0: return [4 /*yield*/, authHeaderProvider((headers === null || headers === void 0 ? void 0 : headers['Zuora-Track-Id']) || '')];
977 case 1:
978 authHeader = _a.sent();
979 return [4 /*yield*/, axiosInstance.get("/v1/describe/" + objectName, {
980 headers: __assign({ Authorization: authHeader, 'Content-Type': 'application/json' }, headers)
981 })];
982 case 2:
983 data = (_a.sent()).data;
984 return [2 /*return*/, data];
985 }
986 });
987 }); };
988};
989
990function zuoraApi(baseURL, clientId, clientSecret, useBasicAuth) {
991 if (useBasicAuth === void 0) { useBasicAuth = false; }
992 var axiosInstance = axios.create({ baseURL: baseURL });
993 var oauthEndpoints = oauth(axiosInstance, clientId, clientSecret);
994 var authHeaderProvider = useBasicAuth ? basicAuthProvider(clientId, clientSecret) : bearerTokenProvider(oauthEndpoints);
995 return {
996 oauth: oauthEndpoints,
997 v1: {
998 action: actionEndpoints(axiosInstance, authHeaderProvider),
999 describe: describeEndpoint(axiosInstance, authHeaderProvider)
1000 }
1001 };
1002}
1003
1004exports.zuoraApi = zuoraApi;
1005//# sourceMappingURL=index.js.map