export declare const RE_RECORD_ID: RegExp; /** * Sorts records in a list according to a given ordering. * * @param {String} order The ordering, eg. `-last_modified`. * @param {Array} list The collection to order. * @return {Array} */ export declare function sortObjects(order: string, list: T[]): T[]; /** * Test if a single object matches all given filters. * * @param {Object} filters The filters object. * @param {Object} entry The object to filter. * @return {Boolean} */ export declare function filterObject(filters: { [key: string]: any; }, entry: T): boolean; /** * Filters records in a list matching all given filters. * * @param {Object} filters The filters object. * @param {Array} list The collection to filter. * @return {Array} */ export declare function filterObjects(filters: { [key: string]: any; }, list: T[]): T[]; /** * Resolves a list of functions sequentially, which can be sync or async; in * case of async, functions must return a promise. * * @param {Array} fns The list of functions. * @param {Any} init The initial value. * @return {Promise} */ export declare function waterfall(fns: ((...args: any[]) => unknown)[], init?: unknown): Promise; /** * Simple deep object comparison function. This only supports comparison of * serializable JavaScript objects. * * @param {Object} a The source object. * @param {Object} b The compared object. * @return {Boolean} */ export declare function deepEqual(a: any, b: any): boolean; /** * Return an object without the specified keys. * * @param {Object} obj The original object. * @param {Array} keys The list of keys to exclude. * @return {Object} A copy without the specified keys. */ export declare function omitKeys(obj: T, keys?: K[]): Omit; export declare function arrayEqual(a: unknown[], b: unknown[]): boolean; export declare function transformSubObjectFilters(filtersObj: { [key: string]: any; }): {}; /** * Deeply access an object's properties * @param obj - The object whose property you want to compare * @param key - A dot notation path to the property you want to compare */ export declare function getDeepKey(obj: any, key: string): unknown; /** * Chunks an array into n pieces. * * @private * @param {Array} array * @param {Number} n * @return {Array} */ export declare function partition(array: T[], n: number): T[][]; /** * Returns a Promise always resolving after the specified amount in milliseconds. * * @return Promise */ export declare function delay(ms: number): Promise; interface Entity { id: string; } /** * Always returns a resource data object from the provided argument. * * @private * @param {Object|String} resource * @return {Object} */ export declare function toDataBody(resource: T | string): Entity; /** * Transforms an object into an URL query string, stripping out any undefined * values. * * @param {Object} obj * @return {String} */ export declare function qsify(obj: { [key: string]: any; }): string; /** * Checks if a version is within the provided range. * * @param {String} version The version to check. * @param {String} minVersion The minimum supported version (inclusive). * @param {String} maxVersion The minimum supported version (exclusive). * @throws {Error} If the version is outside of the provided range. */ export declare function checkVersion(version: string, minVersion: string, maxVersion: string): void; type DecoratorReturn = (target: any, key: string, descriptor: TypedPropertyDescriptor<(...args: any[]) => any>) => { configurable: boolean; get(): (...args: any) => Promise; }; /** * Generates a decorator function ensuring a version check is performed against * the provided requirements before executing it. * * @param {String} min The required min version (inclusive). * @param {String} max The required max version (inclusive). * @return {Function} */ export declare function support(min: string, max: string): DecoratorReturn; /** * Generates a decorator function ensuring that the specified capabilities are * available on the server before executing it. * * @param {Array} capabilities The required capabilities. * @return {Function} */ export declare function capable(capabilities: string[]): DecoratorReturn; /** * Generates a decorator function ensuring an operation is not performed from * within a batch request. * * @param {String} message The error message to throw. * @return {Function} */ export declare function nobatch(message: string): DecoratorReturn; /** * Returns true if the specified value is an object (i.e. not an array nor null). * @param {Object} thing The value to inspect. * @return {bool} */ export declare function isObject(thing: unknown): boolean; interface TypedDataURL { type: string; base64: string; [key: string]: string; } /** * Parses a data url. * @param {String} dataURL The data url. * @return {Object} */ export declare function parseDataURL(dataURL: string): TypedDataURL; /** * Extracts file information from a data url. * @param {String} dataURL The data url. * @return {Object} */ export declare function extractFileInfo(dataURL: string): { blob: Blob; name: string; }; /** * Creates a FormData instance from a data url and an existing JSON response * body. * @param {String} dataURL The data url. * @param {Object} body The response body. * @param {Object} [options={}] The options object. * @param {Object} [options.filename] Force attachment file name. * @return {FormData} */ export declare function createFormData(dataURL: string, body: { [key: string]: any; }, options?: { filename?: string; }): FormData; /** * Clones an object with all its undefined keys removed. * @private */ export declare function cleanUndefinedProperties(obj: { [key: string]: any; }): { [key: string]: any; }; /** * Handle common query parameters for Kinto requests. * * @param {String} [path] The endpoint base path. * @param {Array} [options.fields] Fields to limit the * request to. * @param {Object} [options.query={}] Additional query arguments. */ export declare function addEndpointOptions(path: string, options?: { fields?: string[]; query?: { [key: string]: string; }; }): string; /** * Replace authorization header with an obscured version */ export declare function obscureAuthorizationHeader(headers: HeadersInit): { [key: string]: string; }; export {};