Package Exports
- extract-files
- extract-files/lib/index
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (extract-files) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
extract-files
Clones a value, recursively extracting File
, Blob
and ReactNativeFile
instances with their object paths, replacing them with null
. FileList
instances are treated as File
instance arrays.
Used by GraphQL multipart request spec client implementations such as graphql-react
and apollo-upload-client
.
Usage
Install with npm:
npm install extract-files
See the extractFiles
documentation to get started.
Support
- Node.js v10+
- Browsers
> 0.5%, not OperaMini all, not dead
- React Native
API
Table of contents
- class ReactNativeFile
- function extractFiles
- function isExtractableFile
- type ExtractableFile
- type ExtractableFileMatcher
- type ExtractFilesResult
- type ObjectPath
- type ReactNativeFileSubstitute
class ReactNativeFile
Used to mark a React Native File
substitute in an object tree for extractFiles
. It’s too risky to assume all objects with uri
, type
and name
properties are files to extract.
Parameter | Type | Description |
---|---|---|
file |
ReactNativeFileSubstitute | A React Native File substitute. |
Examples
An extractable file in React Native.
import { ReactNativeFile } from 'extract-files' const file = new ReactNativeFile({ uri: uriFromCameraRoll, name: 'a.jpg', type: 'image/jpeg' })
function extractFiles
Clones a value, recursively extracting File
, Blob
and ReactNativeFile
instances with their object paths, replacing them with null
. FileList
instances are treated as File
instance arrays.
Parameter | Type | Description |
---|---|---|
value |
* | Value (typically an object tree) to extract files from. |
path |
ObjectPath? = '' |
Prefix for object paths for extracted files. |
isExtractableFile |
ExtractableFileMatcher? = isExtractableFile | The function used to identify extractable files. |
Returns: ExtractFilesResult — Result.
Examples
Extract files from an object.
For the following:
import { extractFiles } from 'extract-files' const file1 = new File(['1'], '1.txt', { type: 'text/plain' }) const file2 = new File(['2'], '2.txt', { type: 'text/plain' }) const value = { a: file1, b: [file1, file2] } const { clone, files } = extractFiles(value, 'prefix')
value
remains the same.
clone
is:{ a: null, b: [null, null] }
files
is aMap
instance containing:
Key Value file1
['prefix.a', 'prefix.b.0']
file2
['prefix.b.1']
function isExtractableFile
Checks if a value is an extractable file.
Type: ExtractableFileMatcher
Parameter | Type | Description |
---|---|---|
value |
* | Value to check. |
Returns: boolean — Is the value an extractable file.
Examples
How to import.
import { isExtractableFile } from 'extract-files'
type ExtractableFile
An extractable file.
Type: File | Blob | ReactNativeFile
type ExtractableFileMatcher
A function that checks if a value is an extractable file.
Type: Function
Parameter | Type | Description |
---|---|---|
value |
* | Value to check. |
Returns: boolean — Is the value an extractable file.
See
isExtractableFile
is the default extractable file matcher.
Examples
How to check for the default exactable files, as well as a custom type of file.
import { isExtractableFile } from 'extract-files' const isExtractableFileEnhanced = value => isExtractableFile(value) || (typeof CustomFile !== 'undefined' && value instanceof CustomFile)
type ExtractFilesResult
What extractFiles
returns.
Type: object
Property | Type | Description |
---|---|---|
clone |
* | Clone of the original input value with files recursively replaced with null . |
files |
Map<ExtractableFile, Array<ObjectPath>> | Extracted files and their locations within the original value. |
type ObjectPath
String notation for the path to a node in an object tree.
Type: string
See
Examples
Object path is property a
, array index 0
, object property b
.
a.0.b
type ReactNativeFileSubstitute
A React Native File
substitute for when using FormData
.
Type: object
Property | Type | Description |
---|---|---|
uri |
string | Filesystem path. |
name |
string? | File name. |
type |
string? | File content type. |
See
Examples
A camera roll file.
{ uri: uriFromCameraRoll, name: 'a.jpg', type: 'image/jpeg' }