doc.yeswiki.pro/node_modules/@algolia/client-common/dist/client-common.esm.js
2023-05-20 19:38:02 +03:00

89 lines
2.7 KiB
JavaScript

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.17.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 };