client-common.cjs.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. function createAuth(authMode, appId, apiKey) {
  4. const credentials = {
  5. 'x-algolia-api-key': apiKey,
  6. 'x-algolia-application-id': appId,
  7. };
  8. return {
  9. headers() {
  10. return authMode === AuthMode.WithinHeaders ? credentials : {};
  11. },
  12. queryParameters() {
  13. return authMode === AuthMode.WithinQueryParameters ? credentials : {};
  14. },
  15. };
  16. }
  17. function createRetryablePromise(callback) {
  18. let retriesCount = 0; // eslint-disable-line functional/no-let
  19. const retry = () => {
  20. retriesCount++;
  21. return new Promise((resolve) => {
  22. setTimeout(() => {
  23. resolve(callback(retry));
  24. }, Math.min(100 * retriesCount, 1000));
  25. });
  26. };
  27. return callback(retry);
  28. }
  29. function createWaitablePromise(promise, wait = (_response, _requestOptions) => {
  30. return Promise.resolve();
  31. }) {
  32. // eslint-disable-next-line functional/immutable-data
  33. return Object.assign(promise, {
  34. wait(requestOptions) {
  35. return createWaitablePromise(promise
  36. .then(response => Promise.all([wait(response, requestOptions), response]))
  37. .then(promiseResults => promiseResults[1]));
  38. },
  39. });
  40. }
  41. // eslint-disable-next-line functional/prefer-readonly-type
  42. function shuffle(array) {
  43. let c = array.length - 1; // eslint-disable-line functional/no-let
  44. // eslint-disable-next-line functional/no-loop-statement
  45. for (c; c > 0; c--) {
  46. const b = Math.floor(Math.random() * (c + 1));
  47. const a = array[c];
  48. array[c] = array[b]; // eslint-disable-line functional/immutable-data, no-param-reassign
  49. array[b] = a; // eslint-disable-line functional/immutable-data, no-param-reassign
  50. }
  51. return array;
  52. }
  53. function addMethods(base, methods) {
  54. if (!methods) {
  55. return base;
  56. }
  57. Object.keys(methods).forEach(key => {
  58. // eslint-disable-next-line functional/immutable-data, no-param-reassign
  59. base[key] = methods[key](base);
  60. });
  61. return base;
  62. }
  63. function encode(format, ...args) {
  64. // eslint-disable-next-line functional/no-let
  65. let i = 0;
  66. return format.replace(/%s/g, () => encodeURIComponent(args[i++]));
  67. }
  68. const version = '4.13.0';
  69. const destroy = (base) => {
  70. return () => {
  71. return base.transporter.requester.destroy();
  72. };
  73. };
  74. const AuthMode = {
  75. /**
  76. * If auth credentials should be in query parameters.
  77. */
  78. WithinQueryParameters: 0,
  79. /**
  80. * If auth credentials should be in headers.
  81. */
  82. WithinHeaders: 1,
  83. };
  84. exports.AuthMode = AuthMode;
  85. exports.addMethods = addMethods;
  86. exports.createAuth = createAuth;
  87. exports.createRetryablePromise = createRetryablePromise;
  88. exports.createWaitablePromise = createWaitablePromise;
  89. exports.destroy = destroy;
  90. exports.encode = encode;
  91. exports.shuffle = shuffle;
  92. exports.version = version;