1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- function createAuth(authMode, appId, apiKey) {
- const credentials = {
- 'x-algolia-api-key': apiKey,
- 'x-algolia-application-id': appId,
- };
- return {
- headers() {
- return authMode === AuthMode.WithinHeaders ? credentials : {};
- },
- queryParameters() {
- return authMode === AuthMode.WithinQueryParameters ? credentials : {};
- },
- };
- }
- function createRetryablePromise(callback) {
- let retriesCount = 0; // eslint-disable-line functional/no-let
- const retry = () => {
- retriesCount++;
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve(callback(retry));
- }, Math.min(100 * retriesCount, 1000));
- });
- };
- return callback(retry);
- }
- function createWaitablePromise(promise, wait = (_response, _requestOptions) => {
- return Promise.resolve();
- }) {
- // eslint-disable-next-line functional/immutable-data
- return Object.assign(promise, {
- wait(requestOptions) {
- return createWaitablePromise(promise
- .then(response => Promise.all([wait(response, requestOptions), response]))
- .then(promiseResults => promiseResults[1]));
- },
- });
- }
- // eslint-disable-next-line functional/prefer-readonly-type
- function shuffle(array) {
- let c = array.length - 1; // eslint-disable-line functional/no-let
- // eslint-disable-next-line functional/no-loop-statement
- for (c; c > 0; c--) {
- const b = Math.floor(Math.random() * (c + 1));
- const a = array[c];
- array[c] = array[b]; // eslint-disable-line functional/immutable-data, no-param-reassign
- array[b] = a; // eslint-disable-line functional/immutable-data, no-param-reassign
- }
- return array;
- }
- function addMethods(base, methods) {
- if (!methods) {
- return base;
- }
- Object.keys(methods).forEach(key => {
- // eslint-disable-next-line functional/immutable-data, no-param-reassign
- base[key] = methods[key](base);
- });
- return base;
- }
- function encode(format, ...args) {
- // eslint-disable-next-line functional/no-let
- let i = 0;
- return format.replace(/%s/g, () => encodeURIComponent(args[i++]));
- }
- const version = '4.13.0';
- const destroy = (base) => {
- return () => {
- return base.transporter.requester.destroy();
- };
- };
- const AuthMode = {
- /**
- * If auth credentials should be in query parameters.
- */
- WithinQueryParameters: 0,
- /**
- * If auth credentials should be in headers.
- */
- WithinHeaders: 1,
- };
- export { AuthMode, addMethods, createAuth, createRetryablePromise, createWaitablePromise, destroy, encode, shuffle, version };
|