'use strict';
exports.ReactNativeFile = require('./ReactNativeFile.js');
exports.extractFiles = require('./extractFiles.js');
exports.isExtractableFile = require('./isExtractableFile.js');
/**
* An extractable file.
* @kind typedef
* @name ExtractableFile
* @type {File|Blob|ReactNativeFile}
*/
/**
* A function that checks if a value is an
* [extractable file]{@link ExtractableFile}.
* @kind typedef
* @name ExtractableFileMatcher
* @type {Function}
* @param {*} value Value to check.
* @returns {boolean} Is the value an [extractable file]{@link ExtractableFile}.
* @see [`isExtractableFile`]{@link isExtractableFile} is the default extractable file matcher.
* @example
How to check for the default exactable files, as well as a custom type of file.
* ```js
* import isExtractableFile from 'extract-files/public/isExtractableFile.js';
*
* const isExtractableFileEnhanced = (value) =>
* isExtractableFile(value) ||
* (typeof CustomFile !== 'undefined' && value instanceof CustomFile);
* ```
*/
/**
* What [`extractFiles`]{@link extractFiles} returns.
* @kind typedef
* @name ExtractFilesResult
* @type {object}
* @prop {*} clone Clone of the original input value with files recursively replaced with `null`.
* @prop {Map>} files Extracted files and their locations within the original value.
*/
/**
* String notation for the path to a node in an object tree.
* @kind typedef
* @name ObjectPath
* @type {string}
* @see [`object-path` on npm](https://npm.im/object-path).
* @example Object path is property `a`, array index `0`, object property `b`.
* ```
* a.0.b
* ```
*/
/**
* A [React Native](https://reactnative.dev)
* [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File)
* substitute for when using
* [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData).
* @kind typedef
* @name ReactNativeFileSubstitute
* @type {object}
* @see [React Native `FormData` polyfill source](https://github.com/facebook/react-native/blob/v0.45.1/Libraries/Network/FormData.js#L34).
* @prop {string} uri Filesystem path.
* @prop {string} [name] File name.
* @prop {string} [type] File content type.
* @example A camera roll file.
* ```js
* const fileSubstitute = {
* uri: uriFromCameraRoll,
* name: 'a.jpg',
* type: 'image/jpeg',
* };
* ```
*/