From 99316224d51118a38e1b3f6ae09b570641bd03bc Mon Sep 17 00:00:00 2001 From: Alexander T Date: Wed, 6 Nov 2019 23:36:01 +0200 Subject: [PATCH] react-native-fs: Provides its own types (#39516) --- notNeededPackages.json | 6 + types/react-native-doc-viewer/package.json | 6 + types/react-native-fs/index.d.ts | 239 ------------------ .../react-native-fs/react-native-fs-tests.ts | 118 --------- types/react-native-fs/tsconfig.json | 25 -- types/react-native-fs/tslint.json | 1 - 6 files changed, 12 insertions(+), 383 deletions(-) create mode 100644 types/react-native-doc-viewer/package.json delete mode 100644 types/react-native-fs/index.d.ts delete mode 100644 types/react-native-fs/react-native-fs-tests.ts delete mode 100644 types/react-native-fs/tsconfig.json delete mode 100644 types/react-native-fs/tslint.json diff --git a/notNeededPackages.json b/notNeededPackages.json index 2ad1c6c28c..0751f253e6 100644 --- a/notNeededPackages.json +++ b/notNeededPackages.json @@ -3696,6 +3696,12 @@ "sourceRepoURL": "https://github.com/react-native-training/react-native-elements", "asOfVersion": "0.18.0" }, + { + "libraryName": "react-native-fs", + "typingsPackageName": "react-native-fs", + "sourceRepoURL": "https://github.com/itinance/react-native-fs", + "asOfVersion": "2.13.0" + }, { "libraryName": "react-native-fabric", "typingsPackageName": "react-native-fabric", diff --git a/types/react-native-doc-viewer/package.json b/types/react-native-doc-viewer/package.json new file mode 100644 index 0000000000..66c0e6a7db --- /dev/null +++ b/types/react-native-doc-viewer/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "react-native-fs": "^2.13.0" + } +} diff --git a/types/react-native-fs/index.d.ts b/types/react-native-fs/index.d.ts deleted file mode 100644 index 11abaffb46..0000000000 --- a/types/react-native-fs/index.d.ts +++ /dev/null @@ -1,239 +0,0 @@ -// Type definitions for react-native-fs 2.8 -// Project: https://github.com/itinance/react-native-fs -// Definitions by: Paulo Cesar -// Joseph Roque -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.8 - -/// - -export interface ReadDirItem { - // The creation date of the file (iOS only) - ctime: Date | undefined; - // The last modified date of the file - mtime: Date | undefined; - // The name of the item - name: string; - // The absolute path to the item - path: string; - // Size in bytes - size: string; - // Is the file just a file? - isFile(): boolean; - // Is the file a directory? - isDirectory(): boolean; -} - -export interface StatResult { - // The name of the item - name: string; - // The absolute path to the item - path: string; - // Size in bytes - size: string; - // UNIX file mode - mode: number; - // Created date - ctime: number; - // Updated date - mtime: number; - // Is the file just a file? - isFile(): boolean; - // Is the file a directory? - isDirectory(): boolean; -} - -export interface Headers { - [index: string]: string; -} -export type Fields = Headers; - -export interface MkdirOptions { - // iOS only - NSURLIsExcludedFromBackupKey?: boolean; -} - -export interface DownloadResult { - // The download job ID, required if one wishes to cancel the download. See `stopDownload`. - jobId: number; - // The HTTP status code - statusCode: number; - // The number of bytes written to the file - bytesWritten: number; -} - -export type DownloadCallbackBegin = (res: DownloadBeginCallbackResult) => void; -export type DownloadCallbackProgress = (res: DownloadProgressCallbackResult) => void; - -export interface DownloadFileOptions { - // URL to download file from - fromUrl: string; - // Local filesystem path to save the file to - toFile: string; - // An object of headers to be passed to the server - headers?: Headers; - // iOS only - background?: boolean; - progressDivider?: number; - readTimeout?: number; - connectionTimeout?: number; - begin?: DownloadCallbackBegin; - progress?: DownloadCallbackProgress; -} - -export interface DownloadProgressCallbackResult { - // The download job ID, required if one wishes to cancel the download. See `stopDownload`. - jobId: number; - // The total size in bytes of the download resource - contentLength: number; - // The number of bytes written to the file so far - bytesWritten: number; -} - -export interface DownloadBeginCallbackResult { - // The download job ID, required if one wishes to cancel the download. See `stopDownload`. - jobId: number; - // The HTTP status code - statusCode: number; - // The total size in bytes of the download resource - contentLength: number; - // The HTTP response headers from the server - headers: Headers; -} - -export type UploadCallbackBegin = (res: UploadBeginCallbackResult) => void; -export type UploadCallbackProgress = (res: UploadProgressCallbackResult) => void; - -export interface UploadFileOptions { - // URL to upload file to - toUrl: string; - // An array of objects with the file information to be uploaded. - files: UploadFileItem[]; - // An object of headers to be passed to the server - headers?: Headers; - // An object of fields to be passed to the server - fields?: Fields; - // Default is 'POST', supports 'POST' and 'PUT' - method?: string; - begin?: UploadCallbackBegin; - progress?: UploadCallbackProgress; -} - -export interface UploadResult { - // The upload job ID, required if one wishes to cancel the upload. See `stopUpload`. - jobId: number; - // The HTTP status code - statusCode: number; - // The HTTP response headers from the server - headers: Headers; - // The HTTP response body - body: string; -} - -export interface UploadFileItem { - // Name of the file, if not defined then filename is used - name: string; - // Name of file - filename: string; - // Path to file - filepath: string; - // The mimetype of the file to be uploaded, if not defined it will get mimetype from `filepath` extension - filetype: string; -} - -export interface UploadBeginCallbackResult { - // The upload job ID, required if one wishes to cancel the upload. See `stopUpload`. - jobId: number; -} - -export interface UploadProgressCallbackResult { - // The upload job ID, required if one wishes to cancel the upload. See `stopUpload`. - jobId: number; - // The total number of bytes that will be sent to the server - totalBytesExpectedToSend: number; - // The number of bytes sent to the server - totalBytesSent: number; -} - -export interface FSInfoResult { - // The total amount of storage space on the device (in bytes). - totalSpace: number; - // The amount of available storage space on the device (in bytes). - freeSpace: number; -} - -export interface JobReturnValue { - jobId: number; - promise: Promise; -} - -// Can be one of utf8 (default), ascii, base64. Use base64 for reading binary files -export type Encoding = - | 'utf8' - | 'ascii' - | 'base64' - ; - -// Optional object wrapper for encoding options -export type EncodingOrOptions = - | Encoding - | { encoding?: Encoding } - ; - -// Available hashing algorithms -export type HashAlgorithm = - | "md5" - | "sha1" - | "sha224" - | "sha256" - | "sha384" - | "sha512" - ; - -// The absolute path to the main bundle directory -export const MainBundlePath: string; -// The absolute path to the caches directory -export const CachesDirectoryPath: string; -// The absolute path to the document directory -export const DocumentDirectoryPath: string; -// The absolute path to the temporary directory (iOS only) -export const TemporaryDirectoryPath: string; -// The absolute path to the external files, shared directory (android only) -export const ExternalDirectoryPath: string; -// The absolute path to the external storage, shared directory (android only) -export const ExternalStorageDirectoryPath: string; -// The absolute path to the NSLibraryDirectory (iOS only) -export const LibraryDirectoryPath: string; -// The absolute path to the pictures directory (android only) -export const PicturesDirectoryPath: string; - -export function readDir(path: string): Promise; -export function readDirAssets(dirpath: string): Promise; -export function readdir(path: string): Promise; -export function stat(filepath: string): Promise; -export function read(filepath: string, length?: number, position?: number, encodingOrOptions?: EncodingOrOptions): Promise; -export function readFile(filepath: string, encodingOrOptions?: EncodingOrOptions): Promise; -export function readFileAssets(filepath: string, encodingOrOptions?: EncodingOrOptions): Promise; -export function existsAssets(filepath: string): Promise; -export function unlink(filepath: string): Promise; -export function write(filepath: string, contents: string, position?: number, encodingOrOptions?: EncodingOrOptions): Promise; -export function writeFile(filepath: string, contents: string, encodingOrOptions?: EncodingOrOptions): Promise; -export function appendFile(filepath: string, contents: string, encodingOrOptions?: EncodingOrOptions): Promise; -export function moveFile(filepath: string, destPath: string): Promise; -export function copyFile(filepath: string, destPath: string): Promise; -export function copyFileAssets(filepath: string, destPath: string): Promise; -export function copyAssetsFileIOS(imageUri: string, destPath: string, width: number, height: number, - scale?: number, compression?: number, resizeMode?: string): Promise; -export function copyAssetsVideoIOS(imageUri: string, destPath: string): Promise; -export function exists(filepath: string): Promise; -export function hash(filepath: string, algorithm: HashAlgorithm): Promise; -export function mkdir(filepath: string, options?: MkdirOptions): Promise; -export function touch(filepath: string, mtime?: Date, ctime?: Date): Promise; -export function downloadFile(options: DownloadFileOptions): JobReturnValue; -export function stopDownload(jobId: number): void; -export function uploadFiles(options: UploadFileOptions): JobReturnValue; -export function stopUpload(jobId: number): void; -export function pathForBundle(bundleNamed: string): Promise; -export function pathForGroup(groupName: string): Promise; -export function setReadable(filepath: string, readable: boolean, ownerOnly: boolean): Promise; -export function getFSInfo(): Promise; diff --git a/types/react-native-fs/react-native-fs-tests.ts b/types/react-native-fs/react-native-fs-tests.ts deleted file mode 100644 index 88d9093872..0000000000 --- a/types/react-native-fs/react-native-fs-tests.ts +++ /dev/null @@ -1,118 +0,0 @@ -import * as RNFS from 'react-native-fs'; - -// get a list of files and directories in the main bundle -RNFS.readDir(RNFS.MainBundlePath) // On Android, use "RNFS.DocumentDirectoryPath" (MainBundlePath is not defined) - .then((result) => { - console.log('GOT RESULT', result); - - // stat the first file - return Promise.all([RNFS.stat(result[0].path), result[0].path]); - }) - .then((statResult) => { - if (statResult[0].isFile()) { - // if we have a file, read it - return RNFS.readFile(statResult[1], 'utf8'); - } - - return 'no file'; - }) - .then((contents) => { - // log the file contents - console.log(contents); - }) - .catch((err) => { - console.log(err.message, err.code); - }); - -// create a path you want to write to -const path = RNFS.DocumentDirectoryPath + '/test.txt'; - -// write the file -RNFS.writeFile(path, 'Lorem ipsum dolor sit amet', 'utf8') - .then(() => { - console.log('FILE WRITTEN!'); - }) - .catch((err) => { - console.log(err.message); - }); - -RNFS.unlink('path') - .then(() => { - console.log('FILE DELETED'); - }) - // `unlink` will throw an error, if the item to unlink does not exist - .catch((err) => { - console.log(err.message); - }); - -const uploadUrl = 'http://requestb.in/XXXXXXX'; // For testing purposes, go to http://requestb.in/ and create your own link -// create an array of objects of the files you want to upload -const files = [ - { - name: 'test1', - filename: 'test1.w4a', - filepath: RNFS.DocumentDirectoryPath + '/test1.w4a', - filetype: 'audio/x-m4a' - }, { - name: 'test2', - filename: 'test2.w4a', - filepath: RNFS.DocumentDirectoryPath + '/test2.w4a', - filetype: 'audio/x-m4a' - } -]; - -const uploadBegin: RNFS.UploadCallbackBegin = (response) => { - const jobId = response.jobId; - console.log('UPLOAD HAS BEGUN! JobId: ' + jobId); -}; - -const uploadProgress: RNFS.UploadCallbackProgress = (response) => { - const percentage = Math.floor((response.totalBytesSent / response.totalBytesExpectedToSend) * 100); - console.log(`UPLOAD IS ${percentage}% DONE!`); -}; - -// upload files -RNFS.uploadFiles({ - toUrl: uploadUrl, - files, - method: 'POST', - headers: { - Accept: 'application/json', - }, - fields: { - hello: 'world', - }, - begin: uploadBegin, - progress: uploadProgress -}).promise.then((response) => { - if (response.statusCode === 200) { - console.log('FILES UPLOADED!'); // response.statusCode, response.headers, response.body - } else { - console.log('SERVER ERROR'); - } - }) - .catch((err) => { - if (err.description === "cancelled") { - // cancelled by user - } - console.log(err); - }); - -const downloadProgress: RNFS.DownloadCallbackProgress = (result) => { - result.bytesWritten === 0; - result.contentLength > 10; - result.jobId; -}; - -const downloadBegin: RNFS.DownloadCallbackBegin = (result) => { - result.headers === {}; -}; - -RNFS.downloadFile({ - fromUrl: 'http://.txt', - toFile: 'file.txt', - begin: downloadBegin, - progress: downloadProgress -}).promise.then((response) => { - response.statusCode === 200; -}); diff --git a/types/react-native-fs/tsconfig.json b/types/react-native-fs/tsconfig.json deleted file mode 100644 index 5e4ae5b88a..0000000000 --- a/types/react-native-fs/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "lib": [ - "es6" - ], - "noImplicitAny": true, - "noImplicitThis": true, - "strictNullChecks": true, - "strictFunctionTypes": true, - "noUnusedParameters": true, - "noUnusedLocals": true, - "baseUrl": "../", - "typeRoots": [ - "../" - ], - "types": [], - "noEmit": true, - "forceConsistentCasingInFileNames": true - }, - "files": [ - "index.d.ts", - "react-native-fs-tests.ts" - ] -} \ No newline at end of file diff --git a/types/react-native-fs/tslint.json b/types/react-native-fs/tslint.json deleted file mode 100644 index 3db14f85ea..0000000000 --- a/types/react-native-fs/tslint.json +++ /dev/null @@ -1 +0,0 @@ -{ "extends": "dtslint/dt.json" }