diff --git a/README.md b/README.md index 60fa66f5..7fdcb003 100644 --- a/README.md +++ b/README.md @@ -22,63 +22,11 @@ and [old][Old Architecture] [RN][React Native] architectures. [![Sponsor](https://raw.githubusercontent.com/birdofpreyru/react-native-fs/master/.README/sponsor.svg)](https://github.com/sponsors/birdofpreyru) ---- - -_This is a work-in-progress fork of [react-native-fs], aiming to upgrade the library to the standards of the latest React Native v0.72, with support of the [New Architecture], backward compatibility to the [Old Architecture], clean-up and fixes of the library API and internal implementation, and further library development following the best industry practices._ - -_To migrate from the legacy [react-native-fs] install this fork_ -```bash -npm install --save @dr.pogodin/react-native-fs -``` -_then upgrade its imports in the code:_ -```ts -// The legacy RNFS was imported like this: -import RNFS from 'react-native-fs'; - -// Instead, this fork should be imported like this: -import * as RNFS from '@dr.pogodin/react-native-fs'; -// or (preferrably) you should import separate constants / functions you need -// like: -import { - TemporaryDirectoryPath, - writeFile, -} from '@dr.pogodin/react-native-fs'; -``` -_When installing the library into a new project no additional steps are required._ - -**ROADMAP:** -- There were a bunch of **v2.21.0-alpha.X** releases taking care that more and - more functions of the original library work as per documentation. With release - of RN v0.73 this work moves to **v2.22.0-alpha.X** releases, which are upgraded - to work with RN v0.73. - -- The aim for upcoming ~~**v2.21.0**~~ **v2.22.0** release is to be a drop-in - replacement (beside being upgraded to a newer RN v0.73) for - the latest **v2.20.0** release of the original library. It will have matching - functionality and API, with exception of any minor changes needed to fix - inconsistencies between **v2.20.0** and its documentation, and any changes - that just have to be done to satisfy latest React Native standards. - -- In further versions, **v2.X.Y**, we'll be taking care of improvements, - and optimizations of existing functionality, as well as adding new APIs, - and deprecating old ones (without yet dropping them out of the codebase), - with the ultimate goal to release **v3** version of the library. - -- The aims for **v3** release are the following: - - To unify library APIs for all platforms — the current library has - a lots of platform-dependent APIs, which goes against the purpose and spirit - of React Native — we'll abstract out and unify everything that is - possible, to allow smooth cross-plaform ride. - - To make library API closer to [Node's File System API](https://nodejs.org/dist/latest-v18.x/docs/api/fs.html). - - To ensure that library has no intrinsic limitations (like now it is not efficient - for handling large files, _etc._) - -**IMPORTANT:** _Below is partially revised documentation for the library. It still has to be completely revised and updated. For now, for each constant / function that have been verified and tested to work in this fork there will be a **VERIFIED** note next to its description, certifying the state of its support in this fork._ - ---- - ## Table of Contents - [Getting Started] +- [Project History & Roadmap] +- [Background Downloads Tutorial (iOS)](#background-downloads-tutorial-ios) +- [Examples] - [API Reference] - [Constants] - [CachesDirectoryPath] — The absolute path to the caches directory. @@ -101,9 +49,19 @@ _When installing the library into a new project no additional steps are required - [TemporaryDirectoryPath] — The absolute path to the temporary directory. - [Functions] + - [appendFile()] — Appends content to a file. + - [completeHandlerIOS()] — For use when using background downloads, + tell iOS you are done handling a completed download. + - [copyAssetsFileIOS()] — Reads an image file from Camera Roll and + writes it to the specified location. It also can be used to get video + thumbnails. + - [copyAssetsVideoIOS()] — Copies a video from the assets-library + to the specified destination. - [copyFile()] — Copies a file to a new destination. - [copyFileAssets()] — (Android only) Copies an asset file to the given destination. + - [copyFileRes()] — (Android only) Copies specified resource to + the given destination. - [copyFolder()] — (Windows only) Copies a folder to a new location in a Windows-efficient way. - [downloadFile()] — Downloads a file from network. @@ -111,10 +69,21 @@ _When installing the library into a new project no additional steps are required - [existsAssets()] — (Android only) Checks if an item exists at the given path inside the Android assets folder. + - [existsRes()] — (Android only) Checks if the resource exists. + - [hash()] — Calculates file hash. + - [isResumable()] — (iOS only) Check if the the download job with this + ID is resumable with [resumeDownload()]. + - [getAllExternalFilesDirs()] — (Android only) Returns an array with + the absolute paths to application-specific directories on all shared / + external storage devices where the application can place persistent files + it owns. - [getFSInfo()] — Gets info on the free and total storage space on the device, and its external storage. - [mkdir()] — Creates folder(s) at the given path. - [moveFile()] — Moves a file (or a folder with files) to a new location. + - [pathForGroup()] — (iOS only) Returns the absolute path to + the directory shared for all applications with the same security group + identifier. - [pickFile()] — Prompts user to select file(s) with help of a platform-provided file picker UI. - [read()] — Reads a fragment of file content. @@ -125,10 +94,20 @@ _When installing the library into a new project no additional steps are required - [readFile()] — Reads entire file content. - [readFileAssets()] — (Android only) Reads the file at a path in the Android app's assets folder. + - [readFileRes()] — (Android only) Reads specified file in + the Android app's resource folder and return its contents. + - [resumeDownload()] — (iOS only) Resume an interrupted download job. + - [scanFile()] — (Android-only) Scan the file using + [Media Scanner](https://developer.android.com/reference/android/media/MediaScannerConnection). - [stat()] — Returns info on a file system item. + - [stopDownload()] — Aborts a file download job. + - [stopUpload()] — (iOS only) Aborts file upload job. + - [touch()] — Alters creation and modification timestamps of the given file. - [unlink()] — Unlinks (removes) a file or directory with files. and return its contents. - [uploadFiles()] — Uploads files to a remote location. + - [write()] — Writes content to a file at the given random access + position. - [writeFile()] — Writes content into a file. - [Types] - [DownloadBeginCallbackResultT] — The type of argument passed @@ -157,10 +136,6 @@ _When installing the library into a new project no additional steps are required - [UploadResultT] — The type of resolved [uploadFiles()] promise. - [WriteFileOptionsT] — The type of extra options argument of the [writeFile()] function. -- [Legacy] — Everything else inherited from the original library, - but not yet correctly verified to work and match the documentation. -- [Background Downloads Tutorial (iOS)](#background-downloads-tutorial-ios) -- [Test / Demo App](#test--demo-app) ## Getting Started [Getting Started]: #getting-started @@ -175,7 +150,85 @@ $ npm install --save @dr.pogodin/react-native-fs npx react-native autolink-windows --sln "windows\ReactNativeFsExample.sln" --proj "windows\ReactNativeFsExample\ReactNativeFsExample.vcxproj" ``` +## Project History & Roadmap +[Project History & Roadmap]: #project-history--roadmap + +This project is a fork of the upstream [react-native-fs] library, which has been +abandoned by its owners and maintainers. This forks aims to keep the library on +par with the latest React Native standards, with support of the [New Architecture], +backward compatibility with the [Old Architecture]; and to further develop +the library according to the best industry practices. + +To migrate from the legacy [react-native-fs] install this fork_ +```bash +npm install --save @dr.pogodin/react-native-fs +``` +then upgrade its imports in the code: +```ts +// The legacy RNFS was imported like this: +import RNFS from 'react-native-fs'; + +// Instead, this fork should be imported like this: +import * as RNFS from '@dr.pogodin/react-native-fs'; +// or (preferrably) you should import separate constants / functions you need +// like: +import { + TemporaryDirectoryPath, + writeFile, +} from '@dr.pogodin/react-native-fs'; +``` + +**ROADMAP:** +- **v2.22.0** of this library is, presumably, a drop-in replacement for + the latest (**v2.20.0**) release of the original, upstream [react-native-fs] + (beside the need to upgrade host project to the lates RN v0.73). + It has matching functionality and API, with just a handfull of internal + fixes, and a few additions. + +- In further versions, **v2.X.Y**, we'll be taking care of improvements, + and optimizations of existing functionality, as well as adding new APIs, + and deprecating old ones (without yet dropping them out of the codebase), + with the ultimate goal to release **v3** version of the library. + +- The aims for **v3** release are the following: + - To unify library APIs for all platforms — the current library has + a lots of platform-dependent APIs, which goes against the purpose and spirit + of React Native — we'll abstract out and unify everything that is + possible, to allow smooth cross-plaform ride. + - To make library API closer to [Node's File System API](https://nodejs.org/dist/latest-v18.x/docs/api/fs.html). + - To ensure that library has no intrinsic limitations (like now it is not efficient + for handling large files, _etc._) + +## Background Downloads Tutorial (iOS) + +Background downloads in iOS require a bit of a setup. + +First, in your `AppDelegate.m` file add the following: + +```js +#import + +... + +- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler +{ + [RNFSManager setCompletionHandlerForIdentifier:identifier completionHandler:completionHandler]; +} + +``` + +The `handleEventsForBackgroundURLSession` method is called when a background download is done and your app is not in the foreground. + +We need to pass the `completionHandler` to RNFS along with its `identifier`. + +The JavaScript will continue to work as usual when the download is done but now you must call `RNFS.completeHandlerIOS(jobId)` when you're done handling the download (show a notification etc.) + +**BE AWARE!** iOS will give about 30 sec. to run your code after `handleEventsForBackgroundURLSession` is called and until `completionHandler` +is triggered so don't do anything that might take a long time (like unzipping), you will be able to do it after the user re-launces the app, +otherwide iOS will terminate your app. + ## Examples +[Examples]: #examples _These are legacy examples, and should be revised, there is an Example app in the `/example` folder of the codebase, you probably should rather check it than these examples._ ### Basic @@ -427,6 +480,117 @@ least, on Android this constant does not have a slash in the end; but on iOS ## Functions [Functions]: #functions +### appendFile() +[appendFile()]: #appendfile +```ts +function appendFile(filepath: string, contents: string, encoding?: string): Promise; +``` +**VERIFIED:** Android, iOS, macOS, Windows. + +Appends content to a file. +- `filepath` — **string** — File path. +- `contents` — **string** — The content to add. +- `encoding` — [EncodingT] — Optional. Encoding. +- Resolves once the operation has been completed. + +### completeHandlerIOS() +[completeHandlerIOS()]: #completehandlerios +```ts +function completeHandlerIOS(jobId: number): void; +``` +**VERIFIED:** well... not really verified, but is callable on iOS. + +iOS only. For use when using background downloads, tell iOS you are done +handling a completed download. + +Read more about background downloads in the [Background Downloads Tutorial (iOS)](#background-downloads-tutorial-ios) section. + +### copyAssetsFileIOS() +[copyAssetsFileIOS()]: #copyassetsfileios +```ts +function copyAssetsFileIOS( + imageUri: string, + destPath: string, + width: number, + height: number, + scale?: number, + compression?: number, + resizeMode?: string, +): Promise; +``` +**BEWARE:** _After ensuring this method gets called correctly on iOS, calling it +just crashes the example app for me. Though, I don't have much interest to dig into +it now (not for free :)_ + +iOS only. + +*Not available on Mac Catalyst.* + +Reads an image file from Camera Roll and writes to `destPath`. This method +[assumes the image file to be JPEG file](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L752-L753). +This method will download the original from iCloud if necessary. + +One can use this method also to create a thumbNail from a video in a specific +size. Currently it is impossible to specify a concrete position, the OS will +decide which Thumbnail you'll get then. +To copy a video from assets-library and save it as a mp4-file, refer to +copyAssetsVideoIOS. + +Further information: https://developer.apple.com/reference/photos/phimagemanager/1616964-requestimageforasset +The promise will on success return the final destination of the file, as it was defined in the destPath-parameter. + +- `imageUri` — **string** — URI of a file in Camera Roll. + + Can be [either of the following formats](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L781-L785): + - `ph://CC95F08C-88C3-4012-9D6D-64A413D254B3/L0/001` + - `assets-library://asset/asset.JPG?id=CC95F08C-88C3-4012-9D6D-64A413D254B3&ext=JPG` + +- `destPath` — **string** — Destination to which the copied file + will be saved, e.g. `RNFS.TemporaryDirectoryPath + 'example.jpg'`. + +- `width` — **number** — Copied file's image width will be resized + to `width`. [If 0 is provided, width won't be resized.](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L808) + +- `height` — **number** — Copied file's image height will be resized + to `height`. [If 0 is provided, height won't be resized.](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L808) + +- `scale` — **number** | **undefined** — Optional. Copied file's + image will be scaled proportional to `scale` factor from `width` x `height`. + If both `width` and `height` are 0, the image won't scale. Range is [0.0, 1.0] + and default is 1.0. + +- `compression` — **number** | **undefined** — Optional. Quality of + copied file's image. The value 0.0 represents the maximum compression + (or lowest quality) while the value 1.0 represents the least compression + (or best quality). Range is [0.0, 1.0] and default is 1.0. + +- `resizeMode` — **string** | **undefined** — Optional. + If `resizeMode` is 'contain', copied file's image will be scaled so that its + larger dimension fits `width` x `height`. If `resizeMode` is other value than + 'contain', the image will be scaled so that it completely fills + `width` x `height`. Default is 'contain'. + Refer to [PHImageContentMode](https://developer.apple.com/documentation/photokit/phimagecontentmode). + +- Resolves to **string** — Copied file's URI. + +### copyAssetsVideoIOS() +[copyAssetsVideoIOS()]: #copyassetsvideoios +```ts +function copyAssetsVideoIOS(videoUri: string, destPath: string): Promise; +``` +**BEWARE:** _Similarly to [copyAssetsFileIOS()] I believe it gets correctly called +on iOS, but it crashes the example app in my naive test. Perhaps I use it wrong, +or something should be patched in the original implementation._ + +*Not available on Mac Catalyst.* + +Copies a video from assets-library, that is prefixed with +'assets-library://asset/asset.MOV?...' to a specific destination. + +- `videoUri` — **string** — Video URI. +- `destPath` — **string** — Destination. +- Resolves to **string** — copied file path? + ### copyFile() [copyFile()]: #copyfile ```ts @@ -466,6 +630,23 @@ it exists. - `to` — **string** — Destination path. - Resolves once completed. +### copyFileRes() +[copyFileRes()]: #copyfileres +```ts +function copyFileRes(filename: string, destPath: string): Promise +``` +**VERIFIED**: Android. **NOT SUPPORTED:** iOS, macOS, Windows. + +Android-only. Copies the file named `filename` in the Android app's res folder +and copies it to the given `destPath` path. `res/drawable` is used as +the source parent folder for image files, `res/raw` for everything else. + +**BEWARE:** It will overwrite destPath if it already exists. + +- `filename` — **string** — Resource name. +- `destPath` — **string** — Destination. +- Resolves once completed. + ### copyFolder() [copyFolder()]: #copyfolder ```ts @@ -524,17 +705,78 @@ folder. assets folder. - Resolves _true_ if the item exists; _false_ otherwise. +### existsRes() +[existsRes()]: #existsres +```ts +function existsRes(filename: string): Promise; +``` +**VERIFIED:** Android. **NOT SUPPORTED:** iOS, macOS, Windows. + +Android-only. Check if the specified resource exists. +`res/drawable` is used as the parent folder for image files, +`res/raw` for everything else. + +- `filename` — **string** — Resource name. +- Resolves to **boolean** — _true_ if the resource exists; + _false_ otherwise. + +### getAllExternalFilesDirs() +[getAllExternalFilesDirs()]: #getallexternalfilesdirs +```ts +function getAllExternalFilesDirs(): Promise; +``` +**VERIFIED:** Android. **NOT SUPPORTED:** iOS, macOS, Windows. + +Android-only. Returns an array with the absolute paths to application-specific +directories on all shared/external storage devices where the application can +place persistent files it owns. + +- Resolves to **string[]** — the array of external paths. + ### getFSInfo() [getFSInfo()]: #getfsinfo ```ts function getFSInfo(): Promise; ``` -**VERIFIED:** Android, iOS, macOS. +**VERIFIED:** Android, iOS, macOS, Windows. Provides information about free and total file system space. - Resolves to an [FSInfoResultT] object. +### hash() +[hash()]: #hash +```ts +function hash(path: string, algorithm: string): Promise; +``` +**VERIFIED:** Android, iOS, macOS, Windows. + +Calculates file's hash. +- `path` — **string** — File path. +- `algorithm` — **string** — One of `md5`, `sha1`, + `sha224` (**currently it does not work on Windows!**), + `sha256`, `sha384`, `sha512`. +- Resolves to **string** — file hash. + +### isResumable() +[isResumable()]: #isresumable +```ts +function isResumable(jobId: number): Promise; +``` +iOS only. Check if the the download job with this ID is resumable with +[resumeDownload()]. + +Example: + +```js +if (await RNFS.isResumable(jobId) { + RNFS.resumeDownload(jobId) +} +``` + +- `jobId` — **number** — Download job ID. +- Resolves to **boolean** — the result. + ### mkdir() [mkdir()]: #mkdir ```ts @@ -571,6 +813,25 @@ on other platforms it works fine. - `into` — **string** — New path of the item. - Resolves once the operation is completed. +### pathForGroup() +[pathForGroup()]: #pathforgroup +```ts +function pathForGroup(groupIdentifier: string): Promise; +``` +**VERIFIED:** iOS. + +iOS only. Returns the absolute path to the directory shared for all applications +with the same security group identifier. This directory can be used to to share +files between application of the same developer. + +Invalid group identifier will cause a rejection. + +For more information read the [Adding an App to an App Group](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19) section. + +- `groupIdentifier` — **string** — Any value from + the *com.apple.security.application-groups* entitlements list. +- Resolves to **string** — the result path. + ### pickFile() [pickFile()]: #pickfile ```ts @@ -696,7 +957,7 @@ of 1-to-4 bytes of the source file). ### readFileAssets() [readFileAssets()]: #readfileassets ```ts -function readFileAssets(path:string, encoding?: EncodingT | ReadFileOptionsT): Promise; +function readFileAssets(path: string, encoding?: EncodingT | ReadFileOptionsT): Promise; ``` **VERIFIED:** Android. **NOT SUPPORTED:** iOS, macOS, Windows. @@ -710,6 +971,50 @@ and return its contents. `encoding` can be one of `utf8` (default), `ascii`, specifying the encoding. - Resolves to **string** — the asset content. +### readFileRes +[readFileRes()]: #readfileres +```ts +function readFileRes(filename: string, encoding?: EncodingT): Promise; +``` +**VERIFIED:** Android. **NOT SUPPORTED:** iOS, macOS, Windows. + +Android-only. Reads the file named `filename` in the Android app's `res` folder +and return contents. Only the file name (not folder) needs to be specified. + +Original docs say: _The file type will be detected from the extension and +automatically located within `res/drawable` (for image files) or `res/raw` +(for everything else)._ Good luck with it. The test in the example app does not +work if the file extension is not included into the filename... but perhaps +I've overlooked something. + +- `filename` — **string** — Resouce file name. +- `encoding` — [EncodingT] — Optional Encdoing. +- Resolves to **string** — the resource content. + +### resumeDownload() +[resumeDownload()]: #resumedownload +```ts +function resumeDownload(jobId: number): void; +``` + +iOS only. Resume the current download job with this ID. + +- `jobId` — **number** — Download job ID. + +### scanFile() +[scanFile()]: #scanfile +```ts +function scanFile(path: string): Promise; +``` +**VERIFIED:** Android. **NOT SUPPORTED:** iOS, macOS, Windows. + +Android-only. Scan the file using +[Media Scanner](https://developer.android.com/reference/android/media/MediaScannerConnection). +- `path` — **string** — Path of the file to scan. +- Resolve to **string** or **null** — URI of for the file if the scanning + operation succeeded and the file was added to the media database; or _null_ + if scanning failed. + ### stat() [stat()]: #stat ```ts @@ -730,6 +1035,48 @@ It thus requires more troubleshooting, but it is not a priority for now. - `path` — **string** — Item path. - Resolves to a [StatResultT] object. +### stopDownload() +[stopDownload()]: #stopdownload +```ts +function stopDownload(jobId: number): void; +``` +**VERIFIED:** Android, iOS. + +Aborts a file download job. The partial file will remain on the filesystem, +and the promise returned from the aborted [downloadFile()] call will reject +with an error. +- `jobId` — **number** — Download job ID (see [downloadFile()]). + +### stopUpload() +[stopUpload()]: #stopupload +```ts +function stopUpload(jobId: number): void; +``` +**VERIFIED:** iOS. + +iOS only. Abort the current upload job with given ID. + +**NOTE:** Unlike [stopDownload()] it does not cause the pending upload promise +to reject. Perhaps, we'll change it in future to behave similarly. + +- `jobId` — **number** — Upload job ID. + +### touch() +[touch()]: #touch +```ts +function touch(filepath: string, mtime?: Date, ctime?: Date): Promise; +``` +**VERIFIED:** Android, iOS, macOS, Windows. + +Alters creation and modification timestamps of the given file. +- `filepath` — **string** — File path. +- `mtime` — **Date** | **undefined** — Optional. Modification + timestamp. +- `ctime` — **Date** | **undefined** — Optional. Creation timestamp. + It is supported on iOS and Windows; Android always sets both timestamps equal + `mtime`. +- Resolves once done. + ### unlink() [unlink()]: #unlink ```ts @@ -764,6 +1111,24 @@ in this library fork. in-progress download by corresponding functions) and `promise` resolving to [UploadResultT] once the download is completed. +### write() +[write()]: #write +```ts +function write(filepath: string, contents: string, position?: number, encoding?: EncodingT): Promise; +``` +**VERIFIED:** Android, iOS, macOS, Windows \ +**BEWARE:** On Windows it seems to work differently from other platforms, +throwing if attempting to write to a non-existing file. + +Writes content to a file at the given random access position. + +- `filepath` — **string** — File path. +- `contents` — **string** — Content to write. +- `position` — **number** | **undefined** — Write position. + If `undefined` or `-1` the contents is appended to the end of the file. +- `encoding` — [EncodingT] — Write encoding. +- Resolves once the operation has been completed. + ### writeFile() [writeFile()]: #writefile ```ts @@ -1215,182 +1580,3 @@ The type of extra options argument of the [writeFile()] function. to use. Defaults `utf8`. - `NSFileProtectionKey` — **string** | **undefined** — Optional. iOS-only. See: https://developer.apple.com/documentation/foundation/nsfileprotectionkey - -## Legacy -[Legacy]: #legacy -Below is the original documentation for all other methods and types inherited -from the original library. They are present in the codebase, but haven't been -tested to work after refactoring for the new version of the library, and a few -of them were commented out and marked as not yet supported on some platforms. - -### `readFileRes(filename:string, encoding?: string): Promise` - -Reads the file named `filename` in the Android app's `res` folder and return contents. Only the file name (not folder) needs to be specified. The file type will be detected from the extension and automatically located within `res/drawable` (for image files) or `res/raw` (for everything else). `encoding` can be one of `utf8` (default), `ascii`, `base64`. Use `base64` for reading binary files. - -Note: Android only. - -### `appendFile(filepath: string, contents: string, encoding?: string): Promise` - -Append the `contents` to `filepath`. `encoding` can be one of `utf8` (default), `ascii`, `base64`. - -### `write(filepath: string, contents: string, position?: number, encoding?: string): Promise` - -Write the `contents` to `filepath` at the given random access position. When `position` is `undefined` or `-1` the contents is appended to the end of the file. `encoding` can be one of `utf8` (default), `ascii`, `base64`. - -### `copyFileRes(filename: string, destPath: string): Promise` - -Copies the file named `filename` in the Android app's res folder and copies it to the given `destPath ` path. `res/drawable` is used as the source parent folder for image files, `res/raw` for everything else. - -Note: Android only. Will overwrite destPath if it already exists. - -### (iOS only) `copyAssetsFileIOS(imageUri: string, destPath: string, width: number, height: number, scale?: number, compression?: number, resizeMode?: string): Promise` - -*Not available on Mac Catalyst.* - -Reads an image file from Camera Roll and writes to `destPath`. This method [assumes the image file to be JPEG file](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L752-L753). This method will download the original from iCloud if necessary. - -#### Parameters - -##### `imageUri` string (required) - -URI of a file in Camera Roll. Can be [either of the following formats](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L781-L785): - -- `ph://CC95F08C-88C3-4012-9D6D-64A413D254B3/L0/001` -- `assets-library://asset/asset.JPG?id=CC95F08C-88C3-4012-9D6D-64A413D254B3&ext=JPG` - -##### `destPath` string (required) - -Destination to which the copied file will be saved, e.g. `RNFS.TemporaryDirectoryPath + 'example.jpg'`. - -##### `width` number (required) - -Copied file's image width will be resized to `width`. [If 0 is provided, width won't be resized.](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L808) - -##### `height` number (required) - -Copied file's image height will be resized to `height`. [If 0 is provided, height won't be resized.](https://github.com/itinance/react-native-fs/blob/f2f8f4a058cd9acfbcac3b8cf1e08fa1e9b09786/RNFSManager.m#L808) - -##### `scale` number (optional) - -Copied file's image will be scaled proportional to `scale` factor from `width` x `height`. If both `width` and `height` are 0, the image won't scale. Range is [0.0, 1.0] and default is 1.0. - -##### `compression` number (optional) - -Quality of copied file's image. The value 0.0 represents the maximum compression (or lowest quality) while the value 1.0 represents the least compression (or best quality). Range is [0.0, 1.0] and default is 1.0. - -##### `resizeMode` string (optional) - -If `resizeMode` is 'contain', copied file's image will be scaled so that its larger dimension fits `width` x `height`. If `resizeMode` is other value than 'contain', the image will be scaled so that it completely fills `width` x `height`. Default is 'contain'. Refer to [PHImageContentMode](https://developer.apple.com/documentation/photokit/phimagecontentmode). - -#### Return value - -##### `Promise` - -Copied file's URI. - -#### Video-Support - -One can use this method also to create a thumbNail from a video in a specific size. -Currently it is impossible to specify a concrete position, the OS will decide wich -Thumbnail you'll get then. -To copy a video from assets-library and save it as a mp4-file, refer to copyAssetsVideoIOS. - -Further information: https://developer.apple.com/reference/photos/phimagemanager/1616964-requestimageforasset -The promise will on success return the final destination of the file, as it was defined in the destPath-parameter. - -### (iOS only) `copyAssetsVideoIOS(videoUri: string, destPath: string): Promise` - -*Not available on Mac Catalyst.* - -Copies a video from assets-library, that is prefixed with 'assets-library://asset/asset.MOV?...' to a specific destination. - -### `existsRes(filename: string): Promise` - -Check in the Android res folder if the item named `filename` exists. `res/drawable` is used as the parent folder for image files, `res/raw` for everything else. If the item does not exist, return false. - -Note: Android only. - -### `hash(filepath: string, algorithm: string): Promise` - -Reads the file at `path` and returns its checksum as determined by `algorithm`, which can be one of `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`. - -### `touch(filepath: string, mtime?: Date, ctime?: Date): Promise` - -Sets the modification timestamp `mtime` and creation timestamp `ctime` of the file at `filepath`. Setting `ctime` is supported on iOS and Windows, android always sets both timestamps to `mtime`. - -### `stopDownload(jobId: number): void` - -Abort the current download job with this ID. The partial file will remain on the filesystem. - -### (iOS only) `resumeDownload(jobId: number): void` - -Resume the current download job with this ID. - -### (iOS only) `isResumable(jobId: number): Promise` - -Check if the the download job with this ID is resumable with `resumeDownload()`. - -Example: - -```js -if (await RNFS.isResumable(jobId) { - RNFS.resumeDownload(jobId) -} -``` - -### (iOS only) `completeHandlerIOS(jobId: number): void` - -For use when using background downloads, tell iOS you are done handling a completed download. - -Read more about background downloads in the [Background Downloads Tutorial (iOS)](#background-downloads-tutorial-ios) section. - -### (iOS only) `stopUpload(jobId: number): Promise` - -Abort the current upload job with this ID. - -### (Android only) `scanFile(path: string): Promise` - -Scan the file using [Media Scanner](https://developer.android.com/reference/android/media/MediaScannerConnection). - -### (Android only) `getAllExternalFilesDirs(): Promise` - -Returns an array with the absolute paths to application-specific directories on all shared/external storage devices where the application can place persistent files it owns. - -### (iOS only) `pathForGroup(groupIdentifier: string): Promise` - -`groupIdentifier` (`string`) Any value from the *com.apple.security.application-groups* entitlements list. - -Returns the absolute path to the directory shared for all applications with the same security group identifier. -This directory can be used to to share files between application of the same developer. - -Invalid group identifier will cause a rejection. - -For more information read the [Adding an App to an App Group](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19) section. - -## Background Downloads Tutorial (iOS) - -Background downloads in iOS require a bit of a setup. - -First, in your `AppDelegate.m` file add the following: - -```js -#import - -... - -- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler -{ - [RNFSManager setCompletionHandlerForIdentifier:identifier completionHandler:completionHandler]; -} - -``` - -The `handleEventsForBackgroundURLSession` method is called when a background download is done and your app is not in the foreground. - -We need to pass the `completionHandler` to RNFS along with its `identifier`. - -The JavaScript will continue to work as usual when the download is done but now you must call `RNFS.completeHandlerIOS(jobId)` when you're done handling the download (show a notification etc.) - -**BE AWARE!** iOS will give about 30 sec. to run your code after `handleEventsForBackgroundURLSession` is called and until `completionHandler` -is triggered so don't do anything that might take a long time (like unzipping), you will be able to do it after the user re-launces the app, -otherwide iOS will terminate your app. diff --git a/android/src/main/java/com/drpogodin/reactnativefs/ReactNativeFsModule.kt b/android/src/main/java/com/drpogodin/reactnativefs/ReactNativeFsModule.kt index bc0bf966..d61224ad 100644 --- a/android/src/main/java/com/drpogodin/reactnativefs/ReactNativeFsModule.kt +++ b/android/src/main/java/com/drpogodin/reactnativefs/ReactNativeFsModule.kt @@ -69,7 +69,7 @@ class ReactNativeFsModule internal constructor(context: ReactApplicationContext) if (pickFileLauncher != null) pickFileLauncher!!.unregister() } - override fun getTypedExportedConstants(): Map { + override fun getTypedExportedConstants(): Map { val constants: MutableMap = HashMap() constants["DocumentDirectory"] = 0 constants["DocumentDirectoryPath"] = this.getReactApplicationContext().getFilesDir().getAbsolutePath() @@ -82,7 +82,7 @@ class ReactNativeFsModule internal constructor(context: ReactApplicationContext) constants["ExternalStorageDirectoryPath"] = Environment.getExternalStorageDirectory()?.absolutePath constants["ExternalDirectoryPath"] = this.getReactApplicationContext().getExternalFilesDir(null)?.absolutePath constants["ExternalCachesDirectoryPath"] = this.getReactApplicationContext().getExternalCacheDir()?.absolutePath - return constants as MutableMap + return constants } @ReactMethod @@ -600,8 +600,8 @@ class ReactNativeFsModule internal constructor(context: ReactApplicationContext) null, object : MediaScannerConnectionClient { override fun onMediaScannerConnected() {} - override fun onScanCompleted(path: String, uri: Uri) { - promise.resolve(path) + override fun onScanCompleted(path: String, uri: Uri?) { + promise.resolve(uri.toString()) } } ) diff --git a/android/src/oldarch/ReactNativeFsSpec.kt b/android/src/oldarch/ReactNativeFsSpec.kt index 5ad112ae..0e6d71d9 100644 --- a/android/src/oldarch/ReactNativeFsSpec.kt +++ b/android/src/oldarch/ReactNativeFsSpec.kt @@ -6,9 +6,9 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReadableMap abstract class ReactNativeFsSpec(context: ReactApplicationContext?) : ReactContextBaseJavaModule(context) { - abstract fun getTypedExportedConstants(): Map + abstract fun getTypedExportedConstants(): Map - override fun getConstants(): Map? { + override fun getConstants(): Map { return getTypedExportedConstants() } diff --git a/example/android/app/src/main/java/com/reactnativefsexample/MainApplication.kt b/example/android/app/src/main/java/com/reactnativefsexample/MainApplication.kt index fa3568b6..657220a1 100644 --- a/example/android/app/src/main/java/com/reactnativefsexample/MainApplication.kt +++ b/example/android/app/src/main/java/com/reactnativefsexample/MainApplication.kt @@ -16,11 +16,11 @@ class MainApplication : Application(), ReactApplication { override val reactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) { - override fun getPackages(): List { - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return PackageList(this).packages - } + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } override fun getJSMainModuleName(): String = "index" diff --git a/example/android/app/src/main/res/raw/good_latin1.txt b/example/android/app/src/main/res/raw/good_latin1.txt new file mode 100644 index 00000000..e3f059b0 --- /dev/null +++ b/example/android/app/src/main/res/raw/good_latin1.txt @@ -0,0 +1 @@ +G diff --git a/example/android/app/src/main/res/raw/good_utf8.txt b/example/android/app/src/main/res/raw/good_utf8.txt new file mode 100644 index 00000000..cb87dd22 --- /dev/null +++ b/example/android/app/src/main/res/raw/good_utf8.txt @@ -0,0 +1 @@ +GÖÖÐ diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 022c5686..00e3172d 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -2,7 +2,7 @@ PODS: - boost (1.83.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - dr-pogodin-react-native-fs (2.22.0-alpha.0): + - dr-pogodin-react-native-fs (2.22.0): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -21,7 +21,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - dr-pogodin-react-native-static-server (0.9.2): + - dr-pogodin-react-native-static-server (0.10.3): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -40,7 +40,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - FBLazyVector (0.73.0) + - FBLazyVector (0.73.2) - Flipper (0.201.0): - Flipper-Folly (~> 2.6) - Flipper-Boost-iOSX (1.76.0.1.11) @@ -99,9 +99,9 @@ PODS: - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.73.0): - - hermes-engine/Pre-built (= 0.73.0) - - hermes-engine/Pre-built (0.73.0) + - hermes-engine (0.73.2): + - hermes-engine/Pre-built (= 0.73.2) + - hermes-engine/Pre-built (0.73.2) - libevent (2.1.12) - OpenSSL-Universal (1.1.1100) - RCT-Folly (2022.05.16.00): @@ -126,26 +126,26 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.73.0) - - RCTTypeSafety (0.73.0): - - FBLazyVector (= 0.73.0) - - RCTRequired (= 0.73.0) - - React-Core (= 0.73.0) - - React (0.73.0): - - React-Core (= 0.73.0) - - React-Core/DevSupport (= 0.73.0) - - React-Core/RCTWebSocket (= 0.73.0) - - React-RCTActionSheet (= 0.73.0) - - React-RCTAnimation (= 0.73.0) - - React-RCTBlob (= 0.73.0) - - React-RCTImage (= 0.73.0) - - React-RCTLinking (= 0.73.0) - - React-RCTNetwork (= 0.73.0) - - React-RCTSettings (= 0.73.0) - - React-RCTText (= 0.73.0) - - React-RCTVibration (= 0.73.0) - - React-callinvoker (0.73.0) - - React-Codegen (0.73.0): + - RCTRequired (0.73.2) + - RCTTypeSafety (0.73.2): + - FBLazyVector (= 0.73.2) + - RCTRequired (= 0.73.2) + - React-Core (= 0.73.2) + - React (0.73.2): + - React-Core (= 0.73.2) + - React-Core/DevSupport (= 0.73.2) + - React-Core/RCTWebSocket (= 0.73.2) + - React-RCTActionSheet (= 0.73.2) + - React-RCTAnimation (= 0.73.2) + - React-RCTBlob (= 0.73.2) + - React-RCTImage (= 0.73.2) + - React-RCTLinking (= 0.73.2) + - React-RCTNetwork (= 0.73.2) + - React-RCTSettings (= 0.73.2) + - React-RCTText (= 0.73.2) + - React-RCTVibration (= 0.73.2) + - React-callinvoker (0.73.2) + - React-Codegen (0.73.2): - DoubleConversion - glog - hermes-engine @@ -164,11 +164,11 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.73.0): + - React-Core (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.0) + - React-Core/Default (= 0.73.2) - React-cxxreact - React-hermes - React-jsi @@ -178,7 +178,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/CoreModulesHeaders (0.73.0): + - React-Core/CoreModulesHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -192,7 +192,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/Default (0.73.0): + - React-Core/Default (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -205,23 +205,23 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/DevSupport (0.73.0): + - React-Core/DevSupport (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.0) - - React-Core/RCTWebSocket (= 0.73.0) + - React-Core/Default (= 0.73.2) + - React-Core/RCTWebSocket (= 0.73.2) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.73.0) + - React-jsinspector (= 0.73.2) - React-perflogger - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.73.0): + - React-Core/RCTActionSheetHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -235,7 +235,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTAnimationHeaders (0.73.0): + - React-Core/RCTAnimationHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -249,7 +249,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTBlobHeaders (0.73.0): + - React-Core/RCTBlobHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -263,7 +263,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTImageHeaders (0.73.0): + - React-Core/RCTImageHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -277,7 +277,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTLinkingHeaders (0.73.0): + - React-Core/RCTLinkingHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -291,7 +291,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTNetworkHeaders (0.73.0): + - React-Core/RCTNetworkHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -305,7 +305,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTSettingsHeaders (0.73.0): + - React-Core/RCTSettingsHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -319,7 +319,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTTextHeaders (0.73.0): + - React-Core/RCTTextHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -333,7 +333,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTVibrationHeaders (0.73.0): + - React-Core/RCTVibrationHeaders (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -347,11 +347,11 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTWebSocket (0.73.0): + - React-Core/RCTWebSocket (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.0) + - React-Core/Default (= 0.73.2) - React-cxxreact - React-hermes - React-jsi @@ -361,33 +361,33 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-CoreModules (0.73.0): + - React-CoreModules (0.73.2): - RCT-Folly (= 2022.05.16.00) - - RCTTypeSafety (= 0.73.0) + - RCTTypeSafety (= 0.73.2) - React-Codegen - - React-Core/CoreModulesHeaders (= 0.73.0) - - React-jsi (= 0.73.0) + - React-Core/CoreModulesHeaders (= 0.73.2) + - React-jsi (= 0.73.2) - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.73.0) + - React-RCTImage (= 0.73.2) - ReactCommon - SocketRocket (= 0.6.1) - - React-cxxreact (0.73.0): + - React-cxxreact (0.73.2): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.0) - - React-debug (= 0.73.0) - - React-jsi (= 0.73.0) - - React-jsinspector (= 0.73.0) - - React-logger (= 0.73.0) - - React-perflogger (= 0.73.0) - - React-runtimeexecutor (= 0.73.0) - - React-debug (0.73.0) - - React-Fabric (0.73.0): + - React-callinvoker (= 0.73.2) + - React-debug (= 0.73.2) + - React-jsi (= 0.73.2) + - React-jsinspector (= 0.73.2) + - React-logger (= 0.73.2) + - React-perflogger (= 0.73.2) + - React-runtimeexecutor (= 0.73.2) + - React-debug (0.73.2) + - React-Fabric (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -398,20 +398,20 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.73.0) - - React-Fabric/attributedstring (= 0.73.0) - - React-Fabric/componentregistry (= 0.73.0) - - React-Fabric/componentregistrynative (= 0.73.0) - - React-Fabric/components (= 0.73.0) - - React-Fabric/core (= 0.73.0) - - React-Fabric/imagemanager (= 0.73.0) - - React-Fabric/leakchecker (= 0.73.0) - - React-Fabric/mounting (= 0.73.0) - - React-Fabric/scheduler (= 0.73.0) - - React-Fabric/telemetry (= 0.73.0) - - React-Fabric/templateprocessor (= 0.73.0) - - React-Fabric/textlayoutmanager (= 0.73.0) - - React-Fabric/uimanager (= 0.73.0) + - React-Fabric/animations (= 0.73.2) + - React-Fabric/attributedstring (= 0.73.2) + - React-Fabric/componentregistry (= 0.73.2) + - React-Fabric/componentregistrynative (= 0.73.2) + - React-Fabric/components (= 0.73.2) + - React-Fabric/core (= 0.73.2) + - React-Fabric/imagemanager (= 0.73.2) + - React-Fabric/leakchecker (= 0.73.2) + - React-Fabric/mounting (= 0.73.2) + - React-Fabric/scheduler (= 0.73.2) + - React-Fabric/telemetry (= 0.73.2) + - React-Fabric/templateprocessor (= 0.73.2) + - React-Fabric/textlayoutmanager (= 0.73.2) + - React-Fabric/uimanager (= 0.73.2) - React-graphics - React-jsi - React-jsiexecutor @@ -420,7 +420,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.73.0): + - React-Fabric/animations (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -439,7 +439,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.73.0): + - React-Fabric/attributedstring (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -458,7 +458,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.73.0): + - React-Fabric/componentregistry (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -477,7 +477,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.73.0): + - React-Fabric/componentregistrynative (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -496,7 +496,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.73.0): + - React-Fabric/components (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -507,17 +507,17 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.73.0) - - React-Fabric/components/legacyviewmanagerinterop (= 0.73.0) - - React-Fabric/components/modal (= 0.73.0) - - React-Fabric/components/rncore (= 0.73.0) - - React-Fabric/components/root (= 0.73.0) - - React-Fabric/components/safeareaview (= 0.73.0) - - React-Fabric/components/scrollview (= 0.73.0) - - React-Fabric/components/text (= 0.73.0) - - React-Fabric/components/textinput (= 0.73.0) - - React-Fabric/components/unimplementedview (= 0.73.0) - - React-Fabric/components/view (= 0.73.0) + - React-Fabric/components/inputaccessory (= 0.73.2) + - React-Fabric/components/legacyviewmanagerinterop (= 0.73.2) + - React-Fabric/components/modal (= 0.73.2) + - React-Fabric/components/rncore (= 0.73.2) + - React-Fabric/components/root (= 0.73.2) + - React-Fabric/components/safeareaview (= 0.73.2) + - React-Fabric/components/scrollview (= 0.73.2) + - React-Fabric/components/text (= 0.73.2) + - React-Fabric/components/textinput (= 0.73.2) + - React-Fabric/components/unimplementedview (= 0.73.2) + - React-Fabric/components/view (= 0.73.2) - React-graphics - React-jsi - React-jsiexecutor @@ -526,7 +526,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.73.0): + - React-Fabric/components/inputaccessory (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -545,7 +545,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.73.0): + - React-Fabric/components/legacyviewmanagerinterop (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -564,7 +564,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.73.0): + - React-Fabric/components/modal (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -583,7 +583,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.73.0): + - React-Fabric/components/rncore (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -602,7 +602,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.73.0): + - React-Fabric/components/root (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -621,7 +621,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.73.0): + - React-Fabric/components/safeareaview (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -640,7 +640,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.73.0): + - React-Fabric/components/scrollview (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -659,7 +659,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.73.0): + - React-Fabric/components/text (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -678,7 +678,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.73.0): + - React-Fabric/components/textinput (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -697,7 +697,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.73.0): + - React-Fabric/components/unimplementedview (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -716,7 +716,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.73.0): + - React-Fabric/components/view (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -736,7 +736,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - Yoga - - React-Fabric/core (0.73.0): + - React-Fabric/core (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -755,7 +755,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.73.0): + - React-Fabric/imagemanager (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -774,7 +774,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.73.0): + - React-Fabric/leakchecker (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -793,7 +793,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.73.0): + - React-Fabric/mounting (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -812,7 +812,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.73.0): + - React-Fabric/scheduler (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -831,7 +831,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.73.0): + - React-Fabric/telemetry (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -850,7 +850,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.73.0): + - React-Fabric/templateprocessor (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -869,7 +869,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.73.0): + - React-Fabric/textlayoutmanager (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -889,7 +889,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.73.0): + - React-Fabric/uimanager (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -908,42 +908,42 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricImage (0.73.0): + - React-FabricImage (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - - RCTRequired (= 0.73.0) - - RCTTypeSafety (= 0.73.0) + - RCTRequired (= 0.73.2) + - RCTTypeSafety (= 0.73.2) - React-Fabric - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.73.0) + - React-jsiexecutor (= 0.73.2) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-graphics (0.73.0): + - React-graphics (0.73.2): - glog - RCT-Folly/Fabric (= 2022.05.16.00) - - React-Core/Default (= 0.73.0) + - React-Core/Default (= 0.73.2) - React-utils - - React-hermes (0.73.0): + - React-hermes (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - RCT-Folly/Futures (= 2022.05.16.00) - - React-cxxreact (= 0.73.0) + - React-cxxreact (= 0.73.2) - React-jsi - - React-jsiexecutor (= 0.73.0) - - React-jsinspector (= 0.73.0) - - React-perflogger (= 0.73.0) - - React-ImageManager (0.73.0): + - React-jsiexecutor (= 0.73.2) + - React-jsinspector (= 0.73.2) + - React-perflogger (= 0.73.2) + - React-ImageManager (0.73.2): - glog - RCT-Folly/Fabric - React-Core/Default @@ -952,37 +952,37 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.73.0): + - React-jserrorhandler (0.73.2): - RCT-Folly/Fabric (= 2022.05.16.00) - React-debug - React-jsi - React-Mapbuffer - - React-jsi (0.73.0): + - React-jsi (0.73.2): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-jsiexecutor (0.73.0): + - React-jsiexecutor (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-cxxreact (= 0.73.0) - - React-jsi (= 0.73.0) - - React-perflogger (= 0.73.0) - - React-jsinspector (0.73.0) - - React-jsitracing (0.73.0): + - React-cxxreact (= 0.73.2) + - React-jsi (= 0.73.2) + - React-perflogger (= 0.73.2) + - React-jsinspector (0.73.2) + - React-jsitracing (0.73.2): - React-jsi - - React-logger (0.73.0): + - React-logger (0.73.2): - glog - - React-Mapbuffer (0.73.0): + - React-Mapbuffer (0.73.2): - glog - React-debug - - React-nativeconfig (0.73.0) - - React-NativeModulesApple (0.73.0): + - React-nativeconfig (0.73.2) + - React-NativeModulesApple (0.73.2): - glog - hermes-engine - React-callinvoker @@ -992,10 +992,10 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.73.0) - - React-RCTActionSheet (0.73.0): - - React-Core/RCTActionSheetHeaders (= 0.73.0) - - React-RCTAnimation (0.73.0): + - React-perflogger (0.73.2) + - React-RCTActionSheet (0.73.2): + - React-Core/RCTActionSheetHeaders (= 0.73.2) + - React-RCTAnimation (0.73.2): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1003,7 +1003,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTAppDelegate (0.73.0): + - React-RCTAppDelegate (0.73.2): - RCT-Folly - RCTRequired - RCTTypeSafety @@ -1025,7 +1025,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon - - React-RCTBlob (0.73.0): + - React-RCTBlob (0.73.2): - hermes-engine - RCT-Folly (= 2022.05.16.00) - React-Codegen @@ -1035,7 +1035,7 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTFabric (0.73.0): + - React-RCTFabric (0.73.2): - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) @@ -1053,7 +1053,7 @@ PODS: - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.73.0): + - React-RCTImage (0.73.2): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1062,14 +1062,14 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTLinking (0.73.0): + - React-RCTLinking (0.73.2): - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.73.0) - - React-jsi (= 0.73.0) + - React-Core/RCTLinkingHeaders (= 0.73.2) + - React-jsi (= 0.73.2) - React-NativeModulesApple - ReactCommon - - ReactCommon/turbomodule/core (= 0.73.0) - - React-RCTNetwork (0.73.0): + - ReactCommon/turbomodule/core (= 0.73.2) + - React-RCTNetwork (0.73.2): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1077,7 +1077,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTSettings (0.73.0): + - React-RCTSettings (0.73.2): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1085,23 +1085,23 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTText (0.73.0): - - React-Core/RCTTextHeaders (= 0.73.0) + - React-RCTText (0.73.2): + - React-Core/RCTTextHeaders (= 0.73.2) - Yoga - - React-RCTVibration (0.73.0): + - React-RCTVibration (0.73.2): - RCT-Folly (= 2022.05.16.00) - React-Codegen - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-rendererdebug (0.73.0): + - React-rendererdebug (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - RCT-Folly (= 2022.05.16.00) - React-debug - - React-rncore (0.73.0) - - React-RuntimeApple (0.73.0): + - React-rncore (0.73.2) + - React-RuntimeApple (0.73.2): - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - React-callinvoker @@ -1118,7 +1118,7 @@ PODS: - React-runtimeexecutor - React-RuntimeHermes - React-utils - - React-RuntimeCore (0.73.0): + - React-RuntimeCore (0.73.2): - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) @@ -1128,16 +1128,16 @@ PODS: - React-jsiexecutor - React-runtimeexecutor - React-runtimescheduler - - React-runtimeexecutor (0.73.0): - - React-jsi (= 0.73.0) - - React-RuntimeHermes (0.73.0): + - React-runtimeexecutor (0.73.2): + - React-jsi (= 0.73.2) + - React-RuntimeHermes (0.73.2): - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - React-jsi - React-jsitracing - React-nativeconfig - React-utils - - React-runtimescheduler (0.73.0): + - React-runtimescheduler (0.73.2): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -1148,48 +1148,48 @@ PODS: - React-rendererdebug - React-runtimeexecutor - React-utils - - React-utils (0.73.0): + - React-utils (0.73.2): - glog - RCT-Folly (= 2022.05.16.00) - React-debug - - ReactCommon (0.73.0): - - React-logger (= 0.73.0) - - ReactCommon/turbomodule (= 0.73.0) - - ReactCommon/turbomodule (0.73.0): + - ReactCommon (0.73.2): + - React-logger (= 0.73.2) + - ReactCommon/turbomodule (= 0.73.2) + - ReactCommon/turbomodule (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.0) - - React-cxxreact (= 0.73.0) - - React-jsi (= 0.73.0) - - React-logger (= 0.73.0) - - React-perflogger (= 0.73.0) - - ReactCommon/turbomodule/bridging (= 0.73.0) - - ReactCommon/turbomodule/core (= 0.73.0) - - ReactCommon/turbomodule/bridging (0.73.0): + - React-callinvoker (= 0.73.2) + - React-cxxreact (= 0.73.2) + - React-jsi (= 0.73.2) + - React-logger (= 0.73.2) + - React-perflogger (= 0.73.2) + - ReactCommon/turbomodule/bridging (= 0.73.2) + - ReactCommon/turbomodule/core (= 0.73.2) + - ReactCommon/turbomodule/bridging (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.0) - - React-cxxreact (= 0.73.0) - - React-jsi (= 0.73.0) - - React-logger (= 0.73.0) - - React-perflogger (= 0.73.0) - - ReactCommon/turbomodule/core (0.73.0): + - React-callinvoker (= 0.73.2) + - React-cxxreact (= 0.73.2) + - React-jsi (= 0.73.2) + - React-logger (= 0.73.2) + - React-perflogger (= 0.73.2) + - ReactCommon/turbomodule/core (0.73.2): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.0) - - React-cxxreact (= 0.73.0) - - React-jsi (= 0.73.0) - - React-logger (= 0.73.0) - - React-perflogger (= 0.73.0) + - React-callinvoker (= 0.73.2) + - React-cxxreact (= 0.73.2) + - React-jsi (= 0.73.2) + - React-logger (= 0.73.2) + - React-perflogger (= 0.73.2) - SocketRocket (0.6.1) - Yoga (1.14.0) @@ -1399,12 +1399,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 26fad476bfa736552bbfa698a06cc530475c1505 + boost: d3f49c53809116a5d38da093a8aa78bf551aed09 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 - dr-pogodin-react-native-fs: af81245b0e69102f7ea6f5edba8e861138987a34 - dr-pogodin-react-native-static-server: 81b7c9608dff47138ea431e079ed7b178ed99660 - FBLazyVector: 39ba45baf4e398618f8b3a4bb6ba8fcdb7fc2133 + dr-pogodin-react-native-fs: 01eba775da8cb4667844f809fb8f788a9a1d745d + dr-pogodin-react-native-static-server: 24deaa9bb6a60ef12c1f27689376d5896294fe38 + FBLazyVector: fbc4957d9aa695250b55d879c1d86f79d7e69ab4 Flipper: c7a0093234c4bdd456e363f2f19b2e4b27652d44 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 @@ -1415,56 +1415,56 @@ SPEC CHECKSUMS: FlipperKit: 37525a5d056ef9b93d1578e04bc3ea1de940094f fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 - hermes-engine: 34304f8c6e8fa68f63a5fe29af82f227d817d7a7 + hermes-engine: b361c9ef5ef3cda53f66e195599b47e1f84ffa35 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 - RCTRequired: 5e3631b27c08716986980ef23eed8abdee1cdcaf - RCTTypeSafety: 02a64828b0b428eb4f63de1397d44fb2d0747e85 - React: df5dbfbd10c5bd8d4bcb49bd9830551533e11c7e - React-callinvoker: dc0dff59e8d3d1fe4cd9fb5f120f82a775d2a325 - React-Codegen: 739edb7e5721eb4331a0507b8db2914b95b84bd8 - React-Core: 276ccbbf282538138f4429313bb1200a15067c6e - React-CoreModules: 64747180c0329bebed8307ffdc97c331220277a6 - React-cxxreact: 84d98283f701bae882dcd3ad7c573a02f4c9d5c0 - React-debug: 443cf46ade52f3555dd1ec709718793490ac5edc - React-Fabric: 4c877c032b3acc07ed3f2e46ae25b5a39af89382 - React-FabricImage: c46c47ea3c672b9fadd6850795a51d3d9e5df712 - React-graphics: e1cff03acf09098513642535324432d495b6425c - React-hermes: e3356f82c76c5c41688a7e08ced2254a944501c4 - React-ImageManager: c783771479ab0bf1e3dbe711cc8b9f5b0f65972b - React-jserrorhandler: 7cd93ce5165e5d66c87b6f612f94e5642f5c5028 - React-jsi: 81b5fe94500e69051c2f3a775308afaa53e2608b - React-jsiexecutor: 4f790f865ad23fa949396c1a103d06867c0047ed - React-jsinspector: 9f6fb9ed9f03a0fb961ab8dc2e0e0ee0dc729e77 - React-jsitracing: c4f0d56beda781bc3ce6e3594c9f7117f04b37a1 - React-logger: 008caec0d6a587abc1e71be21bfac5ba1662fe6a - React-Mapbuffer: 58fe558faf52ecde6705376700f848d0293d1cef - React-nativeconfig: a063483672b8add47a4875b0281e202908ff6747 - React-NativeModulesApple: 169506a5fd708ab22811f76ee06a976595c367a1 - React-perflogger: b61e5db8e5167f5e70366e820766c492847c082e - React-RCTActionSheet: dcaecff7ffc1888972cd1c1935751ff3bce1e0c1 - React-RCTAnimation: 24b8ae7ebc897ba3f33a93a020bbc66ab7863f5d - React-RCTAppDelegate: a6de16b274cb25098a5960cc5e21a5bb4ff07a8b - React-RCTBlob: 112880abc731c5a0d8eefb5919a591ad30f630e8 - React-RCTFabric: a0289e3bf73da8c03b68b4e9733ba497b021de45 - React-RCTImage: b8065c1b51cc6c2ff58ad81001619352518dd793 - React-RCTLinking: fdf9f43f8bd763d178281a079700105674953849 - React-RCTNetwork: ad3d988e425288492510ee37c9dcdf8259566214 - React-RCTSettings: 67c3876f2775d1cf86298f657e6006afc2a2e4cf - React-RCTText: 671518da40bd548943ec12ee6a60f733a751e2e9 - React-RCTVibration: 60bc4d01d7d8ab7cff14852a195a7fa93b38e1f3 - React-rendererdebug: 6aaab394c9fefe395ef61809580a9bf63b98fd3e - React-rncore: 89dce547cdf87ba254d9c45b91ca4bba481de383 - React-RuntimeApple: e16e0101da3586958bb6be48940f43211ae9eb0b - React-RuntimeCore: fce65e9a37b1e5b9b59ab2f72ce8cb82ddbaf69d - React-runtimeexecutor: 2ca6f02d3fd6eea5b9575eb30720cf12c5d89906 - React-RuntimeHermes: f730d6ac60dee9de505cdd25572f132d93d24fb0 - React-runtimescheduler: 77543c74df984ce56c09d49d427149c53784aaf6 - React-utils: 42708ea436853045ef1eaff29996813d9fbbe209 - ReactCommon: 851280fb976399ca1aabc74cc2c3612069ea70a2 + RCTRequired: 9b1e7e262745fb671e33c51c1078d093bd30e322 + RCTTypeSafety: a759e3b086eccf3e2cbf2493d22f28e082f958e6 + React: 805f5dd55bbdb92c36b4914c64aaae4c97d358dc + React-callinvoker: 6a697867607c990c2c2c085296ee32cfb5e47c01 + React-Codegen: f3cb992539e5c21675f087e536d64b1f2a448655 + React-Core: 49f66fecc7695464e9b7bc7dc7cd9473d2c60584 + React-CoreModules: 710e7c557a1a8180bd1645f5b4bf79f4bd3f5417 + React-cxxreact: 345857b5e4be000c0527df78be3b41a0677a20ce + React-debug: f1637bce73342b2f6eee4982508fdfb088667a87 + React-Fabric: 4dfcff8f14d8e5a7a60b11b7862dad2a9d99c65b + React-FabricImage: 4a9e9510b7f28bbde6a743b18c0cb941a142e938 + React-graphics: dd5af9d8b1b45171fd6933e19fed522f373bcb10 + React-hermes: a52d183a5cf8ccb7020ce3df4275b89d01e6b53e + React-ImageManager: c5b7db131eff71443d7f3a8d686fd841d18befd3 + React-jserrorhandler: 97a6a12e2344c3c4fdd7ba1edefb005215c732f8 + React-jsi: a182068133f80918cd0eec77875abaf943a0b6be + React-jsiexecutor: dacd00ce8a18fc00a0ae6c25e3015a6437e5d2e8 + React-jsinspector: 03644c063fc3621c9a4e8bf263a8150909129618 + React-jsitracing: 7c77101b38fcc8fa7f198de7e1d834350a85af90 + React-logger: 66b168e2b2bee57bd8ce9e69f739d805732a5570 + React-Mapbuffer: 9ee041e1d7be96da6d76a251f92e72b711c651d6 + React-nativeconfig: d753fbbc8cecc8ae413d615599ac378bbf6999bb + React-NativeModulesApple: 964f4eeab1b4325e8b6a799cf4444c3fd4eb0a9c + React-perflogger: 29efe63b7ef5fbaaa50ef6eaa92482f98a24b97e + React-RCTActionSheet: 69134c62aefd362027b20da01cd5d14ffd39db3f + React-RCTAnimation: 3b5a57087c7a5e727855b803d643ac1d445488f5 + React-RCTAppDelegate: cb1a9a8447ddad006f934988016390f4df472e74 + React-RCTBlob: 26ea660f2be1e6de62f2d2ad9a9c7b9bfabb786f + React-RCTFabric: bb6dbbff2f80b9489f8b2f1d2554aa040aa2e3cd + React-RCTImage: 27b27f4663df9e776d0549ed2f3536213e793f1b + React-RCTLinking: 962880ce9d0e2ea83fd182953538fc4ed757d4da + React-RCTNetwork: 73a756b44d4ad584bae13a5f1484e3ce12accac8 + React-RCTSettings: 6d7f8d807f05de3d01cfb182d14e5f400716faac + React-RCTText: 73006e95ca359595c2510c1c0114027c85a6ddd3 + React-RCTVibration: 599f427f9cbdd9c4bf38959ca020e8fef0717211 + React-rendererdebug: f2946e0a1c3b906e71555a7c4a39aa6a6c0e639b + React-rncore: 6e3139cf51cea08068f008da426821d1deaa24b9 + React-RuntimeApple: 08c29690996ed935e35054965bcfb70ebea67318 + React-RuntimeCore: 5b73f40b46d78a825cf71714e1e5044d389702d6 + React-runtimeexecutor: 2d1f64f58193f00a3ad71d3f89c2bfbfe11cf5a5 + React-RuntimeHermes: 01dcb5a4e9073496f6f981a8648843771e3f6516 + React-runtimescheduler: df8945a656356ff10f58f65a70820478bfcf33ad + React-utils: f5bc61e7ea3325c0732ae2d755f4441940163b85 + ReactCommon: 45b5d4f784e869c44a6f5a8fad5b114ca8f78c53 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Yoga: 20d6a900dcc8d61d5e3b799bbf627cc34474a8c4 + Yoga: e64aa65de36c0832d04e8c7bd614396c77a80047 PODFILE CHECKSUM: 2673e1121fca9666d2df5c7ba3b5b287e79ba95f diff --git a/example/package.json b/example/package.json index 68e7f525..674ddeb2 100644 --- a/example/package.json +++ b/example/package.json @@ -13,22 +13,22 @@ "build:ios": "cd ios && xcodebuild -workspace ReactNativeFsExample.xcworkspace -scheme ReactNativeFsExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO" }, "dependencies": { - "@dr.pogodin/react-native-static-server": "^0.9.0", - "@types/lodash": "^4.14.199", + "@dr.pogodin/react-native-static-server": "^0.10.3", + "@types/lodash": "^4.14.202", "lodash": "^4.17.21", "react": "^18.2.0", - "react-native": "0.73.0", - "react-native-windows": "^0.73.2" + "react-native": "0.73.2", + "react-native-windows": "^0.73.4" }, "devDependencies": { - "@babel/core": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@babel/runtime": "^7.23.2", - "@react-native/babel-preset": "^0.73.18", - "@react-native/metro-config": "^0.73.2", + "@babel/core": "^7.23.7", + "@babel/preset-env": "^7.23.8", + "@babel/runtime": "^7.23.8", + "@react-native/babel-preset": "^0.73.19", + "@react-native/metro-config": "^0.73.3", "@react-native/typescript-config": "^0.73.1", "babel-plugin-module-resolver": "^5.0.0", - "metro-config": "^0.80.1" + "metro-config": "^0.80.4" }, "engines": { "node": ">=18" diff --git a/example/src/TestBaseMethods.tsx b/example/src/TestBaseMethods.tsx index 130089aa..bd204549 100644 --- a/example/src/TestBaseMethods.tsx +++ b/example/src/TestBaseMethods.tsx @@ -3,25 +3,42 @@ import React from 'react'; import { Platform, Text, View } from 'react-native'; import { + appendFile, + // copyAssetsFileIOS, + // copyAssetsVideoIOS, + // completeHandlerIOS, copyFile, copyFileAssets, + copyFileRes, copyFolder, downloadFile, exists, existsAssets, + existsRes, + getAllExternalFilesDirs, getFSInfo, + hash, + // isResumable, mkdir, moveFile, + pathForGroup, read, readdir, readDir, readDirAssets, readFile, readFileAssets, + readFileRes, + // resumeDownload, + scanFile, stat, + stopDownload, + stopUpload, TemporaryDirectoryPath, + touch, unlink, uploadFiles, + write, writeFile, } from '@dr.pogodin/react-native-fs'; @@ -79,6 +96,72 @@ const UPLOAD_FILES_CONTROL = Platform.select({ }); const tests: { [name: string]: StatusOrEvaluator } = { + 'appendFile()': async () => { + // TODO: I guess, this test should be improved and elaborated... + // The current version is just copied & modified from the "readFile() and + // writeFile()" test, without much thinking about it. + const good = 'GÖÖÐ\n'; + const utf8 = '\x47\xC3\x96\xC3\x96\xC3\x90\x0A'; + const path = `${TemporaryDirectoryPath}/append-file-test`; + try { + await writeFile(path, utf8, 'ascii'); + await appendFile(path, utf8, 'ascii'); + let res = await readFile(path); + if (res !== `${good}${good}`) return 'fail'; + await writeFile(path, good); + await appendFile(path, good); + res = await readFile(path); + if (res !== `${good}${good}`) return 'fail'; + return 'pass'; + } catch (e) { + return 'fail'; + } + }, + /* + This test actually crashes the app... though... I guess it is correctly + called, not sure what goes wrong inside it. + 'copyAssetsFileIOS()': async () => { + try { + // TODO: I even won't bother myself thinking how to automate this + // test; fine to have it as a manual test for a real device - introduce + // a valid asset name below, and it will try to copy and check it, + // otherwise it will just report the test as hanging. + const asset = 'IMG_6437'; + const path = `${TemporaryDirectoryPath}/copy-assets-file-ios`; + try { + await unlink(path); + } catch {} + await copyAssetsFileIOS( + `ph://assets-library://asset/asset.JPG?id=${asset}`, + path, + 640, + 640, + ); + return 'pass'; + } catch (e) { + console.error(e); + return 'fail'; + } + }, + 'copyAssetsVideoIOS()': async () => { + try { + // TODO: I even won't bother myself thinking how to automate this + // test; fine to have it as a manual test for a real device - introduce + // a valid asset name below, and it will try to copy and check it, + // otherwise it will just report the test as hanging. + const asset = 'IMG_6437'; + const path = `${TemporaryDirectoryPath}/copy-assets-video-ios`; + try { + await unlink(path); + } catch {} + await copyAssetsVideoIOS(asset, path); + return 'pass'; + } catch (e) { + console.error(e); + return 'fail'; + } + }, + */ 'copyFile()': async () => { // TODO: It should be also tested and documented: // - How does it behave if the target item exists? Does it throw or @@ -197,6 +280,21 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + 'copyFileRes()': async () => { + const path = `${TemporaryDirectoryPath}/res_good_utf8.txt`; + try { + await unlink(path); + } catch {} + try { + if (await exists(path)) return 'fail'; + await copyFileRes('good_utf8.txt', path); + const res = await readFile(path); + if (res !== 'GÖÖÐ\n') return 'fail'; + return 'pass'; + } catch { + return 'fail'; + } + }, // TODO: This should live in a dedicated module, with a bunch of tests needed // to cover all download-related functions & scenarious; however, to get this // function checked faster, placing it here for now. @@ -251,6 +349,27 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + 'existsRes()': async () => { + try { + if (!(await existsRes('good_utf8.txt'))) return 'fail'; + if (await existsRes('non_existing.txt')) return 'fail'; + return 'pass'; + } catch (e) { + return 'fail'; + } + }, + // TODO: This is not a very strict test. + 'getAllExternalFilesDirs()': async () => { + try { + const res = await getAllExternalFilesDirs(); + if (!Array.isArray(res) || res.some((x) => typeof x !== 'string')) { + return 'fail'; + } + return 'pass'; + } catch { + return 'fail'; + } + }, 'getFSInfo()': async () => { try { const res = await getFSInfo(); @@ -275,6 +394,52 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + 'hash()': async () => { + const path = `${TemporaryDirectoryPath}/hash`; + try { + await unlink(path); + } catch {} + try { + if (await exists(path)) return 'fail'; + await writeFile(path, 'xxx'); + if ((await hash(path, 'md5')) !== 'f561aaf6ef0bf14d4208bb46a4ccb3ad') + return 'fail'; + if ( + (await hash(path, 'sha1')) !== + 'b60d121b438a380c343d5ec3c2037564b82ffef3' + ) { + return 'fail'; + } + if ( + Platform.OS !== 'windows' && + (await hash(path, 'sha224')) !== + '1e75647b457de7b041b0bd786ac94c3ab53cf3b85243fbe8e97506db' + ) { + return 'fail'; + } + if ( + (await hash(path, 'sha256')) !== + 'cd2eb0837c9b4c962c22d2ff8b5441b7b45805887f051d39bf133b583baf6860' + ) { + return 'fail'; + } + if ( + (await hash(path, 'sha384')) !== + '1249e15f035ed34786a328d9fdb2689ab24f7c7b253d1b7f66ed92a679d663dd502d7beda59973e8c91a728b929fc8cd' + ) { + return 'fail'; + } + if ( + (await hash(path, 'sha512')) !== + '9057ff1aa9509b2a0af624d687461d2bbeb07e2f37d953b1ce4a9dc921a7f19c45dc35d7c5363b373792add57d0d7dc41596e1c585d6ef7844cdf8ae87af443f' + ) { + return 'fail'; + } + return 'pass'; + } catch { + return 'fail'; + } + }, 'mkdir()': async () => { const pathA = `${TemporaryDirectoryPath}/test-mkdir-path`; const pathB = `${pathA}/inner/path`; @@ -342,6 +507,19 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + // TODO: This is yet another dummy test, that should be enhanced (but not + // a priority). + 'pathForGroup()': async () => { + try { + await pathForGroup('dummy-group'); + return 'fail'; + } catch (e: any) { + if (e.message === "ENOENT: no directory for group 'dummy-group' found") { + return 'pass'; + } + return 'fail'; + } + }, 'read()': async () => { try { const good = 'GÖÖÐ\n'; @@ -597,6 +775,44 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + 'readFileRes()': async () => { + try { + let res = await readFileRes('good_latin1.txt', 'ascii'); + if (res !== 'GÖÖÐ\n') return 'fail'; + + res = await readFileRes('good_utf8.txt', 'ascii'); + if (res !== '\x47\xC3\x96\xC3\x96\xC3\x90\x0A') return 'fail'; + + res = await readFileRes('good_utf8.txt', 'utf8'); + if (res !== 'GÖÖÐ\n') return 'fail'; + + res = await readFileRes('good_utf8.txt'); + if (res !== 'GÖÖÐ\n') return 'fail'; + + res = await readFileRes('good_latin1.txt', 'base64'); + if (res !== 'R9bW0Ao=') return 'fail'; + + res = await readFileRes('good_utf8.txt', 'base64'); + if (res !== 'R8OWw5bDkAo=') return 'fail'; + + return 'pass'; + } catch { + return 'fail'; + } + }, + 'scanFile()': async () => { + try { + const path = `${TemporaryDirectoryPath}/scan-file-test`; + await writeFile(path, 'xxx'); + await scanFile(path); + // TODO: Currently scanFile() returns "null" here, indicating the scan has + // failed... not sure why, perhaps it can't access the temporary directory + // of the app? Anyway, not a priority to dig further into it right now. + return 'pass'; + } catch { + return 'fail'; + } + }, 'stat()': async () => { try { const path = `${TemporaryDirectoryPath}${SEP}stat-test`; @@ -718,6 +934,98 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + // TODO: This is quite a sloppy test. + 'stopDownload()': async () => { + const url = + 'https://raw.githubusercontent.com/birdofpreyru/react-native-fs/master/example/assets/test/good-utf8.txt'; + const path = `${TemporaryDirectoryPath}/stop-download-test`; + try { + await unlink(path); + } catch {} + try { + const { jobId, promise } = downloadFile({ + fromUrl: url, + toFile: path, + }); + stopDownload(jobId); + try { + await promise; + } catch (e: any) { + if (e.message === 'Download has been aborted') return 'pass'; + } + return 'fail'; + } catch { + return 'fail'; + } + }, + 'stopUpload()': async () => { + try { + const server = await waitServer(); + + const good = 'GÖÖÐ\n'; + const path = `${TemporaryDirectoryPath}/stop-upload.txt`; + await writeFile(path, good); + + const targetDevicePath = `${FILE_DIR}/dav/stop-upload.txt`; + + try { + unlink(targetDevicePath); + } catch {} + + const res = uploadFiles({ + toUrl: `${server?.origin!}/dav/stop-upload.txt`, + method: 'PUT', + files: [ + { + name: 'upload-files-source-file', + filename: 'upload-files-source-file.txt', + filepath: path, + }, + ], + }); + stopUpload(res.jobId); + await res.promise; + + await readFile(targetDevicePath); + return 'fail'; + } catch (e: any) { + if ( + e.message.startsWith('ENOENT: no such file or directory, open') && + e.message.endsWith("/tmp/test-server/dav/stop-upload.txt'") + ) { + return 'pass'; + } + return 'fail'; + } + }, + 'touch()': async () => { + // TODO: This test fails on Windows, but I guess because stat() + // does not work there the same as on other platforms. + try { + const filePath = `${TemporaryDirectoryPath}/touch-test`; + try { + await unlink(filePath); + } catch {} + await writeFile(filePath, 'xxx'); + const a = await stat(filePath); + const b = await stat(filePath); + if ( + a.ctime.valueOf() !== b.ctime.valueOf() || + a.mtime.valueOf() !== b.mtime.valueOf() + ) { + return 'fail'; + } + const M_TIME = 1705969300000; + await touch(filePath, new Date(M_TIME), new Date(M_TIME)); + const c = await stat(filePath); + if (c.ctime.valueOf() !== M_TIME || c.mtime.valueOf() !== M_TIME) { + return 'fail'; + } + return 'pass'; + } catch { + return 'fail'; + } + }, 'unlink()': async () => { try { const dirPath = `${TemporaryDirectoryPath}/test-unlink-dir`; @@ -779,6 +1087,29 @@ const tests: { [name: string]: StatusOrEvaluator } = { return 'fail'; } }, + 'write()': async () => { + // TODO: This test is copied from "readFile() and writeFile()", and it is + // just slightly modified, without much thinking - it does not test all + // promised behavior of write(). Also, we probably should combine write() + // and writeFile() functions into one. + const good = 'GÖÖÐ\n'; + const utf8 = '\x47\xC3\x96\xC3\x96\xC3\x90\x0A'; + const path = `${TemporaryDirectoryPath}/write-test`; + try { + try { + await unlink(path); + } catch {} + await write(path, utf8, -1, 'ascii'); + let res = await readFile(path); + if (res !== good) return 'fail'; + await write(path, good); + res = await readFile(path); + if (res !== `${good}${good}`) return 'fail'; + return 'pass'; + } catch { + return 'fail'; + } + }, }; export default function TestBaseMethods() { diff --git a/example/windows/ReactNativeFsExample.sln b/example/windows/ReactNativeFsExample.sln index 9f001bb3..9afc6183 100644 --- a/example/windows/ReactNativeFsExample.sln +++ b/example/windows/ReactNativeFsExample.sln @@ -35,7 +35,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Include", "..\node_modules\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactNativeFs", "..\..\windows\ReactNativeFs\ReactNativeFs.vcxproj", "{F912EBDD-F19A-48C7-A32C-49D2956FCE22}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactNativeStaticServer", "..\node_modules\@dr.pogodin\react-native-static-server\windows\ReactNativeStaticServer\ReactNativeStaticServer.vcxproj", "{0324CE2D-6B96-4F99-9A75-10139A52EB04}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactNativeStaticServer", "..\node_modules\@dr.pogodin\react-native-static-server\windows\ReactNativeStaticServer\ReactNativeStaticServer.vcxproj", "{85449ABF-3212-44B4-BE33-D3C6629FD017}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution @@ -150,18 +150,18 @@ Global {F912EBDD-F19A-48C7-A32C-49D2956FCE22}.Release|x86.Build.0 = Release|Win32 {F912EBDD-F19A-48C7-A32C-49D2956FCE22}.Release|ARM64.ActiveCfg = Release|ARM64 {F912EBDD-F19A-48C7-A32C-49D2956FCE22}.Release|ARM64.Build.0 = Release|ARM64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Debug|x64.ActiveCfg = Debug|x64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Debug|x64.Build.0 = Debug|x64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Debug|x86.ActiveCfg = Debug|Win32 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Debug|x86.Build.0 = Debug|Win32 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Debug|ARM64.Build.0 = Debug|ARM64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Release|x64.ActiveCfg = Release|x64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Release|x64.Build.0 = Release|x64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Release|x86.ActiveCfg = Release|Win32 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Release|x86.Build.0 = Release|Win32 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Release|ARM64.ActiveCfg = Release|ARM64 - {0324CE2D-6B96-4F99-9A75-10139A52EB04}.Release|ARM64.Build.0 = Release|ARM64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Debug|x64.ActiveCfg = Debug|x64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Debug|x64.Build.0 = Debug|x64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Debug|x86.ActiveCfg = Debug|Win32 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Debug|x86.Build.0 = Debug|Win32 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Debug|ARM64.Build.0 = Debug|ARM64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Release|x64.ActiveCfg = Release|x64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Release|x64.Build.0 = Release|x64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Release|x86.ActiveCfg = Release|Win32 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Release|x86.Build.0 = Release|Win32 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Release|ARM64.ActiveCfg = Release|ARM64 + {85449ABF-3212-44B4-BE33-D3C6629FD017}.Release|ARM64.Build.0 = Release|ARM64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/example/windows/ReactNativeFsExample/AutolinkedNativeModules.g.targets b/example/windows/ReactNativeFsExample/AutolinkedNativeModules.g.targets index 92350b60..fad88bbf 100644 --- a/example/windows/ReactNativeFsExample/AutolinkedNativeModules.g.targets +++ b/example/windows/ReactNativeFsExample/AutolinkedNativeModules.g.targets @@ -8,7 +8,7 @@ - {0324ce2d-6b96-4f99-9a75-10139a52eb04} + {85449abf-3212-44b4-be33-d3c6629fd017} diff --git a/ios/ReactNativeFs.h b/ios/ReactNativeFs.h index 595b2488..21b8d26d 100644 --- a/ios/ReactNativeFs.h +++ b/ios/ReactNativeFs.h @@ -59,7 +59,6 @@ namespace JS { }; typedef NSDictionary NativeUploadFileOptions; - typedef NSDictionary TouchOptions; /* struct UploadFileItem { @@ -97,17 +96,14 @@ namespace JS { NSDictionary *_v; }; - /* - struct TouchOptions { - std::optional ctime() const; - std::optional mtime() const; + std::optional ctime() const { return [_v[@"ctime"] doubleValue]; } + std::optional mtime() const { return [_v[@"mtime"] doubleValue]; } TouchOptions(NSDictionary *const v) : _v(v) {} private: NSDictionary *_v; }; - */ } } @@ -137,6 +133,14 @@ namespace JS { } @end +@implementation RCTCxxConvert (TouchOptions) ++ (RCTManagedPointer *)JS_NativeReactNativeFs_TouchOptions:(id)json +{ + return + facebook::react::managedPointer(json); +} +@end + @interface ReactNativeFs : RCTEventEmitter #endif diff --git a/ios/ReactNativeFs.mm b/ios/ReactNativeFs.mm index b92f630f..e8aa5611 100644 --- a/ios/ReactNativeFs.mm +++ b/ios/ReactNativeFs.mm @@ -136,7 +136,7 @@ - (instancetype) init } RCT_EXPORT_METHOD(appendFile:(NSString *)filepath - contents:(NSString *)base64Content + b64:(NSString *)b64 resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { @@ -144,7 +144,7 @@ - (instancetype) init BOOL allowed = [url startAccessingSecurityScopedResource]; @try { - NSData *data = [[NSData alloc] initWithBase64EncodedString:base64Content options:NSDataBase64DecodingIgnoreUnknownCharacters]; + NSData *data = [[NSData alloc] initWithBase64EncodedString:b64 options:NSDataBase64DecodingIgnoreUnknownCharacters]; NSFileManager *fM = [NSFileManager defaultManager]; @@ -183,12 +183,12 @@ - (instancetype) init } RCT_EXPORT_METHOD(write:(NSString *)filepath - contents:(NSString *)base64Content - position:(NSInteger)position + b64:(NSString *)b64 + position:(double)position resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - NSData *data = [[NSData alloc] initWithBase64EncodedString:base64Content options:NSDataBase64DecodingIgnoreUnknownCharacters]; + NSData *data = [[NSData alloc] initWithBase64EncodedString:b64 options:NSDataBase64DecodingIgnoreUnknownCharacters]; NSFileManager *fM = [NSFileManager defaultManager]; @@ -654,12 +654,13 @@ - (instancetype) init } } -RCT_EXPORT_METHOD(completeHandlerIOS:(nonnull NSNumber *)jobId +RCT_EXPORT_METHOD(completeHandlerIOS:(double)jobId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { if (self.uuids) { - NSString *uuid = [self.uuids objectForKey:[jobId stringValue]]; + NSNumber *jid = [NSNumber numberWithDouble:jobId]; + NSString *uuid = [self.uuids objectForKey:[jid stringValue]]; CompletionHandler completionHandler = [completionHandlers objectForKey:uuid]; if (completionHandler) { completionHandler(); @@ -828,12 +829,12 @@ - (instancetype) init * width and height. Also the resizeMode will be considered. */ RCT_EXPORT_METHOD(copyAssetsFileIOS: (NSString *) imageUri - toFilepath: (NSString *) destination - width: (NSInteger) width - height: (NSInteger) height - scale: (CGFloat) scale - compression: (CGFloat) compression - resizeMode: (RCTResizeMode) resizeMode + destPath: (NSString *) destination + width: (double) width + height: (double) height + scale: (double) scale + compression: (double) compression + resizeMode: (NSString*) resizeMode resolve: (RCTPromiseResolveBlock) resolve reject: (RCTPromiseRejectBlock) reject) @@ -880,7 +881,7 @@ - (instancetype) init } PHImageContentMode contentMode = PHImageContentModeAspectFill; - if (resizeMode == RCTResizeModeContain) { + if ([resizeMode compare:@"contain"] == NSOrderedSame) { contentMode = PHImageContentModeAspectFit; } @@ -915,7 +916,7 @@ - (instancetype) init * To create a thumbnail from the video, refer to copyAssetsFileIOS */ RCT_EXPORT_METHOD(copyAssetsVideoIOS: (NSString *) imageUri - atFilepath: (NSString *) destination + destPath: (NSString *) destination resolve: (RCTPromiseResolveBlock) resolve reject: (RCTPromiseRejectBlock) reject) { @@ -981,8 +982,6 @@ - (instancetype) init resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { - [[RNFSException NOT_IMPLEMENTED] reject:reject]; - /* NSFileManager *manager = [NSFileManager defaultManager]; BOOL exists = [manager fileExistsAtPath:filepath isDirectory:NULL]; @@ -992,11 +991,15 @@ - (instancetype) init NSMutableDictionary *attr = [NSMutableDictionary dictionary]; - if (mtime) { - [attr setValue:mtime forKey:NSFileModificationDate]; + if (options.mtime().has_value()) { + // NOTE: Mind that the timestamp from the JS layer is in milliseconds, + // and NSDate constructor expects seconds, thus the division by 1000. + NSDate *mtime = [NSDate dateWithTimeIntervalSince1970:options.mtime().value() / 1000]; + [attr setValue:mtime forKey:NSFileModificationDate]; } - if (ctime) { - [attr setValue:ctime forKey:NSFileCreationDate]; + if (options.ctime().has_value()) { + NSDate *ctime = [NSDate dateWithTimeIntervalSince1970:options.ctime().value() / 1000]; + [attr setValue:ctime forKey:NSFileCreationDate]; } NSError *error = nil; @@ -1007,10 +1010,8 @@ - (instancetype) init } resolve(nil); - */ } - - (NSNumber *)dateToTimeIntervalNumber:(NSDate *)date { return @([date timeIntervalSince1970]); @@ -1051,36 +1052,14 @@ - (NSDictionary *) getConstants { return [self constantsToExport]; } -- (void)appendFile:(NSString *)path b64:(NSString *)b64 resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { - [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"appendFile()"]; -} - - -- (void)completeHandlerIOS:(double)jobId { - -} - - -- (void)copyAssetsFileIOS:(NSString *)imageUri destPath:(NSString *)destPath width:(double)width height:(double)height scale:(double)scale compression:(double)compression resizeMode:(NSString *)resizeMode resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { - [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"copyAssetsFileIOS()"]; -} - - -- (void)copyAssetsVideoIOS:(NSString *)imageUri destPath:(NSString *)destPath resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { - [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"copyAssetsVideoIOS()"]; -} - - - (void)copyFileAssets:(NSString *)from into:(NSString *)into resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"copyFileAssets()"]; } - - (void)copyFileRes:(NSString *)from into:(NSString *)into resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"copyFileRes()"]; } - - (void)copyFolder:(NSString *)from into:(NSString *)into resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"copyFolder()"]; } @@ -1089,42 +1068,30 @@ - (void)existsAssets:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve re [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"existsAssets()"]; } - - (void)existsRes:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"existsRes()"]; } - - (void)getAllExternalFilesDirs:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"getAllExternalFilesDirs()"]; } - - (void)readFileAssets:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"readFileAssets()"]; } - - (void)readFileRes:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"readFileRes()"]; } - - (void)scanFile:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"scanFile()"]; } - - (void)scanFile:(NSString *)filepath readable:(BOOL)readable ownerOnly:(BOOL)ownerOnly resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"scanFile()"]; } - -- (void)write:(NSString *)path b64:(NSString *)b64 position:(double)position resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { - [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"write()"]; -} - - - (void)readDirAssets:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { [[RNFSException NOT_IMPLEMENTED] reject:reject details:@"readDirAssets()"]; } diff --git a/package.json b/package.json index 6ecfabba..8569c4ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dr.pogodin/react-native-fs", - "version": "2.22.0-alpha.1", + "version": "2.22.0", "description": "Native filesystem access for react-native", "main": "lib/commonjs/index", "module": "lib/module/index", @@ -49,22 +49,22 @@ "buffer": "^6.0.3" }, "devDependencies": { - "@react-native/eslint-config": "^0.73.1", - "@types/jest": "^29.5.5", - "@types/react": "^18.2.44", + "@react-native/eslint-config": "^0.73.2", + "@types/jest": "^29.5.11", + "@types/react": "^18.2.48", "del-cli": "^5.1.0", - "eslint": "^8.51.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", "jest": "^29.7.0", - "metro-config": "^0.80.1", - "pod-install": "^0.1.39", - "prettier": "^3.0.3", + "metro-config": "^0.80.4", + "pod-install": "^0.2.0", + "prettier": "^3.2.4", "react": "18.2.0", - "react-native": "0.73.0", + "react-native": "0.73.2", "react-native-builder-bob": "^0.23.2", - "react-native-windows": "^0.73.2", - "typescript": "^5.2.2" + "react-native-windows": "^0.73.4", + "typescript": "^5.3.3" }, "resolutions": { "@types/react": "^18.2.44" diff --git a/src/NativeReactNativeFs.ts b/src/NativeReactNativeFs.ts index 460e02c8..b84985d3 100644 --- a/src/NativeReactNativeFs.ts +++ b/src/NativeReactNativeFs.ts @@ -306,7 +306,7 @@ export interface Spec extends TurboModule { readFileAssets(path: string): Promise; readFileRes(path: string): Promise; readDirAssets(path: string): Promise; - scanFile(path: string): Promise; + scanFile(path: string): Promise; setReadable( filepath: string, diff --git a/src/index.ts b/src/index.ts index 757c1f3e..c32968b8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -432,6 +432,8 @@ export function existsRes(filename: string): Promise { export const getAllExternalFilesDirs: () => Promise = RNFS.getAllExternalFilesDirs; +// TODO: algorithm should have a dedicated type, effectively enumerating all +// correct values. export function hash(filepath: string, algorithm: string): Promise { return RNFS.hash(normalizeFilePath(filepath), algorithm); } diff --git a/windows/ReactNativeFs/codegen/.clang-format b/windows/ReactNativeFs/codegen/.clang-format new file mode 100644 index 00000000..a43d914e --- /dev/null +++ b/windows/ReactNativeFs/codegen/.clang-format @@ -0,0 +1,2 @@ +DisableFormat: true +SortIncludes: false \ No newline at end of file diff --git a/windows/ReactNativeFs/codegen/NativeReactNativeFsSpec.g.h b/windows/ReactNativeFs/codegen/NativeReactNativeFsSpec.g.h index a42e85d5..b95cd9b1 100644 --- a/windows/ReactNativeFs/codegen/NativeReactNativeFsSpec.g.h +++ b/windows/ReactNativeFs/codegen/NativeReactNativeFsSpec.g.h @@ -293,7 +293,7 @@ struct ReactNativeFsSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { Method) noexcept>{27, L"readFileAssets"}, Method) noexcept>{28, L"readFileRes"}, Method>) noexcept>{29, L"readDirAssets"}, - Method) noexcept>{30, L"scanFile"}, + Method>) noexcept>{30, L"scanFile"}, Method) noexcept>{31, L"setReadable"}, Method) noexcept>{32, L"copyAssetsFileIOS"}, Method) noexcept>{33, L"copyAssetsVideoIOS"}, @@ -469,8 +469,8 @@ struct ReactNativeFsSpec : winrt::Microsoft::ReactNative::TurboModuleSpec { REACT_SHOW_METHOD_SPEC_ERRORS( 30, "scanFile", - " REACT_METHOD(scanFile) void scanFile(std::string path, ::React::ReactPromise &&result) noexcept { /* implementation */ }\n" - " REACT_METHOD(scanFile) static void scanFile(std::string path, ::React::ReactPromise &&result) noexcept { /* implementation */ }\n"); + " REACT_METHOD(scanFile) void scanFile(std::string path, ::React::ReactPromise> &&result) noexcept { /* implementation */ }\n" + " REACT_METHOD(scanFile) static void scanFile(std::string path, ::React::ReactPromise> &&result) noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 31, "setReadable", diff --git a/yarn.lock b/yarn.lock index 8fd33a39..2177d16b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -129,26 +129,26 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.5, @babel/core@npm:^7.20.0, @babel/core@npm:^7.23.2": - version: 7.23.6 - resolution: "@babel/core@npm:7.23.6" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.5, @babel/core@npm:^7.20.0, @babel/core@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/core@npm:7.23.7" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.23.5 "@babel/generator": ^7.23.6 "@babel/helper-compilation-targets": ^7.23.6 "@babel/helper-module-transforms": ^7.23.3 - "@babel/helpers": ^7.23.6 + "@babel/helpers": ^7.23.7 "@babel/parser": ^7.23.6 "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.6 + "@babel/traverse": ^7.23.7 "@babel/types": ^7.23.6 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 4bddd1b80394a64b2ee33eeb216e8a2a49ad3d74f0ca9ba678c84a37f4502b2540662d72530d78228a2a349fda837fa852eea5cd3ae28465d1188acc6055868e + checksum: 32d5bf73372a47429afaae9adb0af39e47bcea6a831c4b5dcbb4791380cda6949cb8cb1a2fea8b60bb1ebe189209c80e333903df1fa8e9dcb04798c0ce5bf59e languageName: node linkType: hard @@ -256,6 +256,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.5.0": + version: 0.5.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" + dependencies: + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: d24626b819d3875cb65189d761004e9230f2b3fb60542525c4785616f4b2366741369235a864b744f54beb26d625ae4b0af0c9bb3306b61bf4fccb61e0620020 + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.18.9, @babel/helper-environment-visitor@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" @@ -416,14 +431,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helpers@npm:7.23.6" +"@babel/helpers@npm:^7.23.7": + version: 7.23.8 + resolution: "@babel/helpers@npm:7.23.8" dependencies: "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.6 + "@babel/traverse": ^7.23.7 "@babel/types": ^7.23.6 - checksum: c5ba62497e1d717161d107c4b3de727565c68b6b9f50f59d6298e613afeca8895799b227c256e06d362e565aec34e26fb5c675b9c3d25055c52b945a21c21e21 + checksum: 8b522d527921f8df45a983dc7b8e790c021250addf81ba7900ba016e165442a527348f6f877aa55e1debb3eef9e860a334b4e8d834e6c9b438ed61a63d9a7ad4 languageName: node linkType: hard @@ -471,15 +486,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.3" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.7" dependencies: "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4690123f0ef7c11d6bf1a9579e4f463ce363563b75ec3f6ca66cf68687e39d8d747a82c833847653962f79da367eca895d9095c60d8ebb224a1d4277003acc11 + checksum: f88e400b548202a6f8c5dfd25bc4949a13ea1ccb64a170d7dea4deaa655a0fcb001d3fd61c35e1ad9c09a3d5f0d43f783400425471fe6d660ccaf33dabea9aba languageName: node linkType: hard @@ -497,7 +512,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.17.12, @babel/plugin-proposal-class-properties@npm:^7.18.0": +"@babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.17.12, @babel/plugin-proposal-class-properties@npm:^7.18.0": version: 7.18.6 resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: @@ -545,7 +560,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.0": +"@babel/plugin-proposal-object-rest-spread@npm:^7.20.0": version: 7.20.7 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" dependencies: @@ -616,7 +631,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -671,7 +686,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.23.3": +"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.18.0, @babel/plugin-syntax-flow@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-syntax-flow@npm:7.23.3" dependencies: @@ -726,7 +741,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.23.3 resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" dependencies: @@ -770,7 +785,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" dependencies: @@ -859,9 +874,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.4" +"@babel/plugin-transform-async-generator-functions@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.7" dependencies: "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-plugin-utils": ^7.22.5 @@ -869,7 +884,7 @@ __metadata: "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e2fc132c9033711d55209f4781e1fc73f0f4da5e0ca80a2da73dec805166b73c92a6e83571a8994cd2c893a28302e24107e90856202b24781bab734f800102bb + checksum: b1f66b23423933c27336b1161ac92efef46683321caea97e2255a666f992979376f47a5559f64188d3831fa66a4b24c2a7a40838cc0e9737e90eebe20e8e6372 languageName: node linkType: hard @@ -886,7 +901,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.23.3": +"@babel/plugin-transform-block-scoped-functions@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.23.3" dependencies: @@ -933,22 +948,21 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/plugin-transform-classes@npm:7.23.5" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.8": + version: 7.23.8 + resolution: "@babel/plugin-transform-classes@npm:7.23.8" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-compilation-targets": ^7.23.6 "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-function-name": ^7.23.0 - "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-replace-supers": ^7.22.20 "@babel/helper-split-export-declaration": ^7.22.6 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6d0dd3b0828e84a139a51b368f33f315edee5688ef72c68ba25e0175c68ea7357f9c8810b3f61713e368a3063cdcec94f3a2db952e453b0b14ef428a34aa8169 + checksum: 7dee6cebe52131d2d16944f36e1fdb9d4b24f44d0e7e450f93a44435d001f17cc0789a4cb6b15ec67c8e484581b8a730b5c3ec374470f29ff0133086955b8c58 languageName: node linkType: hard @@ -964,7 +978,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.23.3": +"@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-destructuring@npm:7.23.3" dependencies: @@ -1034,7 +1048,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.23.3": +"@babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.23.3" dependencies: @@ -1046,7 +1060,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.23.6": +"@babel/plugin-transform-for-of@npm:^7.23.6": version: 7.23.6 resolution: "@babel/plugin-transform-for-of@npm:7.23.6" dependencies: @@ -1106,7 +1120,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.23.3": +"@babel/plugin-transform-member-expression-literals@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.23.3" dependencies: @@ -1230,7 +1244,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.23.3": +"@babel/plugin-transform-object-super@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-object-super@npm:7.23.3" dependencies: @@ -1304,7 +1318,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.23.3": +"@babel/plugin-transform-property-literals@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-property-literals@npm:7.23.3" dependencies: @@ -1459,7 +1473,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.23.3": +"@babel/plugin-transform-template-literals@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-template-literals@npm:7.23.3" dependencies: @@ -1542,9 +1556,9 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.18.2, @babel/preset-env@npm:^7.23.2": - version: 7.23.6 - resolution: "@babel/preset-env@npm:7.23.6" +"@babel/preset-env@npm:^7.18.2, @babel/preset-env@npm:^7.23.8": + version: 7.23.8 + resolution: "@babel/preset-env@npm:7.23.8" dependencies: "@babel/compat-data": ^7.23.5 "@babel/helper-compilation-targets": ^7.23.6 @@ -1552,7 +1566,7 @@ __metadata: "@babel/helper-validator-option": ^7.23.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.23.3 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.23.3 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.23.3 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.23.7 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-class-properties": ^7.12.13 @@ -1573,13 +1587,13 @@ __metadata: "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.23.3 - "@babel/plugin-transform-async-generator-functions": ^7.23.4 + "@babel/plugin-transform-async-generator-functions": ^7.23.7 "@babel/plugin-transform-async-to-generator": ^7.23.3 "@babel/plugin-transform-block-scoped-functions": ^7.23.3 "@babel/plugin-transform-block-scoping": ^7.23.4 "@babel/plugin-transform-class-properties": ^7.23.3 "@babel/plugin-transform-class-static-block": ^7.23.4 - "@babel/plugin-transform-classes": ^7.23.5 + "@babel/plugin-transform-classes": ^7.23.8 "@babel/plugin-transform-computed-properties": ^7.23.3 "@babel/plugin-transform-destructuring": ^7.23.3 "@babel/plugin-transform-dotall-regex": ^7.23.3 @@ -1621,14 +1635,14 @@ __metadata: "@babel/plugin-transform-unicode-regex": ^7.23.3 "@babel/plugin-transform-unicode-sets-regex": ^7.23.3 "@babel/preset-modules": 0.1.6-no-external-plugins - babel-plugin-polyfill-corejs2: ^0.4.6 - babel-plugin-polyfill-corejs3: ^0.8.5 - babel-plugin-polyfill-regenerator: ^0.5.3 + babel-plugin-polyfill-corejs2: ^0.4.7 + babel-plugin-polyfill-corejs3: ^0.8.7 + babel-plugin-polyfill-regenerator: ^0.5.4 core-js-compat: ^3.31.0 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 130262f263c8a76915ff5361f78afa9e63b4ecbf3ade8e833dc7546db7b9552ab507835bdea0feb5e70861345ca128a31327fd2e187084a215fc9dd1cc0ed38e + checksum: b850f99fc4aed4ba22c7d9207bd2bbc7a729b49ea6f2c2c36e819fe209e309b96fba336096e555b46f791b39f7cdd5ac41246b556283d435a99106eb825a209f languageName: node linkType: hard @@ -1711,12 +1725,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.4": - version: 7.23.6 - resolution: "@babel/runtime@npm:7.23.6" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.23.8, @babel/runtime@npm:^7.8.4": + version: 7.23.8 + resolution: "@babel/runtime@npm:7.23.8" dependencies: regenerator-runtime: ^0.14.0 - checksum: 1a8eaf3d3a103ef5227b60ca7ab5c589118c36ca65ef2d64e65380b32a98a3f3b5b3ef96660fa0471b079a18b619a8317f3e7f03ab2b930c45282a8b69ed9a16 + checksum: 0bd5543c26811153822a9f382fd39886f66825ff2a397a19008011376533747cd05c33a91f6248c0b8b0edf0448d7c167ebfba34786088f1b7eb11c65be7dfc3 languageName: node linkType: hard @@ -1731,9 +1745,9 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/traverse@npm:7.23.6" +"@babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/traverse@npm:7.23.7" dependencies: "@babel/code-frame": ^7.23.5 "@babel/generator": ^7.23.6 @@ -1745,7 +1759,7 @@ __metadata: "@babel/types": ^7.23.6 debug: ^4.3.1 globals: ^11.1.0 - checksum: 48f2eac0e86b6cb60dab13a5ea6a26ba45c450262fccdffc334c01089e75935f7546be195e260e97f6e43cea419862eda095018531a2718fef8189153d479f88 + checksum: d4a7afb922361f710efc97b1e25ec343fab8b2a4ddc81ca84f9a153f22d4482112cba8f263774be8d297918b6c4767c7a98988ab4e53ac73686c986711dd002e languageName: node linkType: hard @@ -1767,10 +1781,10 @@ __metadata: languageName: node linkType: hard -"@dr.pogodin/js-utils@npm:^0.0.6": - version: 0.0.6 - resolution: "@dr.pogodin/js-utils@npm:0.0.6" - checksum: 3170fe2296ce8bd89f500709e4429f87aca40a7b92bd779363213b1bfb2e2cfa8046880929dc70f124b022a963a6dc07c9ab352bac72a1036515fb0ff128ee1b +"@dr.pogodin/js-utils@npm:^0.0.7": + version: 0.0.7 + resolution: "@dr.pogodin/js-utils@npm:0.0.7" + checksum: c7096b058dc295d9336be80ca88f8aa43b9212bce4a0feae1d48476285becdc1d2cc5c63e61d47da9ee9751ebc90d36fc720f6478cc244e70a8715178c8a7c31 languageName: node linkType: hard @@ -1778,20 +1792,20 @@ __metadata: version: 0.0.0-use.local resolution: "@dr.pogodin/react-native-fs-example@workspace:example" dependencies: - "@babel/core": ^7.23.2 - "@babel/preset-env": ^7.23.2 - "@babel/runtime": ^7.23.2 - "@dr.pogodin/react-native-static-server": ^0.9.0 - "@react-native/babel-preset": ^0.73.18 - "@react-native/metro-config": ^0.73.2 + "@babel/core": ^7.23.7 + "@babel/preset-env": ^7.23.8 + "@babel/runtime": ^7.23.8 + "@dr.pogodin/react-native-static-server": ^0.10.3 + "@react-native/babel-preset": ^0.73.19 + "@react-native/metro-config": ^0.73.3 "@react-native/typescript-config": ^0.73.1 - "@types/lodash": ^4.14.199 + "@types/lodash": ^4.14.202 babel-plugin-module-resolver: ^5.0.0 lodash: ^4.17.21 - metro-config: ^0.80.1 + metro-config: ^0.80.4 react: ^18.2.0 - react-native: 0.73.0 - react-native-windows: ^0.73.2 + react-native: 0.73.2 + react-native-windows: ^0.73.4 languageName: unknown linkType: soft @@ -1799,23 +1813,23 @@ __metadata: version: 0.0.0-use.local resolution: "@dr.pogodin/react-native-fs@workspace:." dependencies: - "@react-native/eslint-config": ^0.73.1 - "@types/jest": ^29.5.5 - "@types/react": ^18.2.44 + "@react-native/eslint-config": ^0.73.2 + "@types/jest": ^29.5.11 + "@types/react": ^18.2.48 buffer: ^6.0.3 del-cli: ^5.1.0 - eslint: ^8.51.0 - eslint-config-prettier: ^9.0.0 - eslint-plugin-prettier: ^5.0.1 + eslint: ^8.56.0 + eslint-config-prettier: ^9.1.0 + eslint-plugin-prettier: ^5.1.3 jest: ^29.7.0 - metro-config: ^0.80.1 - pod-install: ^0.1.39 - prettier: ^3.0.3 + metro-config: ^0.80.4 + pod-install: ^0.2.0 + prettier: ^3.2.4 react: 18.2.0 - react-native: 0.73.0 + react-native: 0.73.2 react-native-builder-bob: ^0.23.2 - react-native-windows: ^0.73.2 - typescript: ^5.2.2 + react-native-windows: ^0.73.4 + typescript: ^5.3.3 peerDependencies: react: "*" react-native: ^0.73 @@ -1823,17 +1837,17 @@ __metadata: languageName: unknown linkType: soft -"@dr.pogodin/react-native-static-server@npm:^0.9.0": - version: 0.9.2 - resolution: "@dr.pogodin/react-native-static-server@npm:0.9.2" +"@dr.pogodin/react-native-static-server@npm:^0.10.3": + version: 0.10.3 + resolution: "@dr.pogodin/react-native-static-server@npm:0.10.3" dependencies: - "@dr.pogodin/js-utils": ^0.0.6 + "@dr.pogodin/js-utils": ^0.0.7 peerDependencies: - "@dr.pogodin/react-native-fs": ">=2.21.0-alpha.1" - react: "*" - react-native: "*" - react-native-windows: "*" - checksum: ffe324854cd539c39fb179e1d4b72eab2644da8906e622c7984e990451c8a8aa64a6bd1cd1bb5108780e3dd3de24a2134494dad68b4ecc30c2d49ba7f7414862 + "@dr.pogodin/react-native-fs": ">=2.22.0-alpha.1" + react: ^18 + react-native: ^0.73 + react-native-windows: ^0.73 + checksum: 596135e344d2fbc6866d4b111df7bd6a00d30b00179430695b80a21033c8d2b361ec645778ebd286a45bfa93fe772ba4615e0152bb3eb8ea035846d9ef0bea73 languageName: node linkType: hard @@ -1872,10 +1886,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.55.0": - version: 8.55.0 - resolution: "@eslint/js@npm:8.55.0" - checksum: fa33ef619f0646ed15649b0c2e313e4d9ccee8425884bdbfc78020d6b6b64c0c42fa9d83061d0e6158e1d4274f03f0f9008786540e2efab8fcdc48082259908c +"@eslint/js@npm:8.56.0": + version: 8.56.0 + resolution: "@eslint/js@npm:8.56.0" + checksum: 5804130574ef810207bdf321c265437814e7a26f4e6fac9b496de3206afd52f533e09ec002a3be06cd9adcc9da63e727f1883938e663c4e4751c007d5b58e539 languageName: node linkType: hard @@ -2402,17 +2416,10 @@ __metadata: languageName: node linkType: hard -"@pkgr/utils@npm:^2.4.2": - version: 2.4.2 - resolution: "@pkgr/utils@npm:2.4.2" - dependencies: - cross-spawn: ^7.0.3 - fast-glob: ^3.3.0 - is-glob: ^4.0.3 - open: ^9.1.0 - picocolors: ^1.0.0 - tslib: ^2.6.0 - checksum: 24e04c121269317d259614cd32beea3af38277151c4002df5883c4be920b8e3490bb897748e844f9d46bf68230f86dabd4e8f093773130e7e60529a769a132fc +"@pkgr/core@npm:^0.1.0": + version: 0.1.1 + resolution: "@pkgr/core@npm:0.1.1" + checksum: 6f25fd2e3008f259c77207ac9915b02f1628420403b2630c92a07ff963129238c9262afc9e84344c7a23b5cc1f3965e2cd17e3798219f5fd78a63d144d3cceba languageName: node linkType: hard @@ -2427,6 +2434,17 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-clean@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-clean@npm:12.3.0" + dependencies: + "@react-native-community/cli-tools": 12.3.0 + chalk: ^4.1.2 + execa: ^5.0.0 + checksum: e2e993f4273457b9edd5dadc64d6d12afd78af9c947331f1e56fb46097e34006bf07ea348ce5a5f7f5e1b957af69593c304572e7cc50f19ba170f943de38c128 + languageName: node + linkType: hard + "@react-native-community/cli-config@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-config@npm:12.1.1" @@ -2441,6 +2459,20 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-config@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-config@npm:12.3.0" + dependencies: + "@react-native-community/cli-tools": 12.3.0 + chalk: ^4.1.2 + cosmiconfig: ^5.1.0 + deepmerge: ^4.3.0 + glob: ^7.1.3 + joi: ^17.2.1 + checksum: 43f02674969d55448bc4222a6eb01c730f8aef95f49a47789c5cce809e128e90580e99fd727ba798c9c889db8ec491d428290173ffb9cb352e3d004bd7a1bdab + languageName: node + linkType: hard + "@react-native-community/cli-debugger-ui@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-debugger-ui@npm:12.1.1" @@ -2450,6 +2482,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-debugger-ui@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-debugger-ui@npm:12.3.0" + dependencies: + serve-static: ^1.13.1 + checksum: d1a3103667b5dd427f95e9b7148ffd86e28285af06eb66d091522ebfab4b842d3da51a8f7dc154f3bca6a4f768eacda5a53a62155bc106e52f543b58e9882842 + languageName: node + linkType: hard + "@react-native-community/cli-doctor@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-doctor@npm:12.1.1" @@ -2475,6 +2516,31 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-doctor@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-doctor@npm:12.3.0" + dependencies: + "@react-native-community/cli-config": 12.3.0 + "@react-native-community/cli-platform-android": 12.3.0 + "@react-native-community/cli-platform-ios": 12.3.0 + "@react-native-community/cli-tools": 12.3.0 + chalk: ^4.1.2 + command-exists: ^1.2.8 + deepmerge: ^4.3.0 + envinfo: ^7.10.0 + execa: ^5.0.0 + hermes-profile-transformer: ^0.0.6 + ip: ^1.1.5 + node-stream-zip: ^1.9.1 + ora: ^5.4.1 + semver: ^7.5.2 + strip-ansi: ^5.2.0 + wcwidth: ^1.0.1 + yaml: ^2.2.1 + checksum: cd0ccdf9da63853a2099de90ed3b1264fd3a311ff2a2b61d0882de02e0fb1bb2d854e474497347de8454479f9fb891aaea739f2a4dd1d5bc1142a1f30a1da721 + languageName: node + linkType: hard + "@react-native-community/cli-hermes@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-hermes@npm:12.1.1" @@ -2488,6 +2554,19 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-hermes@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-hermes@npm:12.3.0" + dependencies: + "@react-native-community/cli-platform-android": 12.3.0 + "@react-native-community/cli-tools": 12.3.0 + chalk: ^4.1.2 + hermes-profile-transformer: ^0.0.6 + ip: ^1.1.5 + checksum: 8b9c17184f023466a072bbe5d4bbed76c40b36feab4b3359c526cd561b9231c0b936ee934b2c1bd1c969d6ba1421241a29975f3210b403fc1532f643d7a14447 + languageName: node + linkType: hard + "@react-native-community/cli-platform-android@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-platform-android@npm:12.1.1" @@ -2502,6 +2581,20 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-android@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-platform-android@npm:12.3.0" + dependencies: + "@react-native-community/cli-tools": 12.3.0 + chalk: ^4.1.2 + execa: ^5.0.0 + fast-xml-parser: ^4.2.4 + glob: ^7.1.3 + logkitty: ^0.7.1 + checksum: 21bf7edd73e1aef598a3d443bd7341eff2050fa61f3eed358dbc779620fb77677e0b002470e571812336fe00198c24563b55b3af728c72ebac5df86b344a25b6 + languageName: node + linkType: hard + "@react-native-community/cli-platform-ios@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-platform-ios@npm:12.1.1" @@ -2516,6 +2609,20 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-ios@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-platform-ios@npm:12.3.0" + dependencies: + "@react-native-community/cli-tools": 12.3.0 + chalk: ^4.1.2 + execa: ^5.0.0 + fast-xml-parser: ^4.0.12 + glob: ^7.1.3 + ora: ^5.4.1 + checksum: 2bc5d4955363e0f41d7bfd42b6a61820ae813ecf1d5e057ec42b60175c7b0deac1456fe4c4734b7df353101bfc24745a32a7d0986315fce22b0c89e36bff2bd2 + languageName: node + linkType: hard + "@react-native-community/cli-plugin-metro@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-plugin-metro@npm:12.1.1" @@ -2523,6 +2630,13 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-plugin-metro@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-plugin-metro@npm:12.3.0" + checksum: 6a9f34be596271c4e37729f70099f5996339bf8ceb5023597beb253e43115db394d3ec669a2a6635ab659d3571a7aa1ba5e5ea31d2b460f68edf1b0a82fb2950 + languageName: node + linkType: hard + "@react-native-community/cli-server-api@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-server-api@npm:12.1.1" @@ -2540,6 +2654,23 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-server-api@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-server-api@npm:12.3.0" + dependencies: + "@react-native-community/cli-debugger-ui": 12.3.0 + "@react-native-community/cli-tools": 12.3.0 + compression: ^1.7.1 + connect: ^3.6.5 + errorhandler: ^1.5.1 + nocache: ^3.0.1 + pretty-format: ^26.6.2 + serve-static: ^1.13.1 + ws: ^7.5.1 + checksum: 606989b678036e6290ff613f0506d2c6b07870a62f68d6f35bf41b9ff9b60bc5e85f8275e3b7c10bad00ee2fb92b1f7764e7d8f93a9a79eb45f86ccf042ed6b4 + languageName: node + linkType: hard + "@react-native-community/cli-tools@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-tools@npm:12.1.1" @@ -2558,6 +2689,24 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-tools@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-tools@npm:12.3.0" + dependencies: + appdirsjs: ^1.2.4 + chalk: ^4.1.2 + find-up: ^5.0.0 + mime: ^2.4.1 + node-fetch: ^2.6.0 + open: ^6.2.0 + ora: ^5.4.1 + semver: ^7.5.2 + shell-quote: ^1.7.3 + sudo-prompt: ^9.0.0 + checksum: df9d3e721689644749099e3217bf202143eeaf0e0ea2aa283ce9130445ba7e65c2a9aae22ae194a5c1cef2ff08cbaf7638c3f267af80f92cdff4edf8eae68e22 + languageName: node + linkType: hard + "@react-native-community/cli-types@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli-types@npm:12.1.1" @@ -2567,6 +2716,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-types@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli-types@npm:12.3.0" + dependencies: + joi: ^17.2.1 + checksum: 001bd07cc93e9248ee324334d0c3f55415c7174aae51f62f6884a7f2edc4b39a31c66420b2006d9980a4481da466c048c91cf2b936cc220a6dbc7726e614f981 + languageName: node + linkType: hard + "@react-native-community/cli@npm:12.1.1": version: 12.1.1 resolution: "@react-native-community/cli@npm:12.1.1" @@ -2595,14 +2753,42 @@ __metadata: languageName: node linkType: hard -"@react-native-windows/cli@npm:0.73.0": - version: 0.73.0 - resolution: "@react-native-windows/cli@npm:0.73.0" +"@react-native-community/cli@npm:12.3.0": + version: 12.3.0 + resolution: "@react-native-community/cli@npm:12.3.0" + dependencies: + "@react-native-community/cli-clean": 12.3.0 + "@react-native-community/cli-config": 12.3.0 + "@react-native-community/cli-debugger-ui": 12.3.0 + "@react-native-community/cli-doctor": 12.3.0 + "@react-native-community/cli-hermes": 12.3.0 + "@react-native-community/cli-plugin-metro": 12.3.0 + "@react-native-community/cli-server-api": 12.3.0 + "@react-native-community/cli-tools": 12.3.0 + "@react-native-community/cli-types": 12.3.0 + chalk: ^4.1.2 + commander: ^9.4.1 + deepmerge: ^4.3.0 + execa: ^5.0.0 + find-up: ^4.1.0 + fs-extra: ^8.1.0 + graceful-fs: ^4.1.3 + prompts: ^2.4.2 + semver: ^7.5.2 + bin: + react-native: build/bin.js + checksum: 30ab321b69977c8ac4d0a4634dd6af893c2f055734eed486aaacc93ab85fe9a6dd124bc0c72a32f750bb7dfb3fd4ac5ce30a7ec916905b47efc443598afdae00 + languageName: node + linkType: hard + +"@react-native-windows/cli@npm:0.73.1": + version: 0.73.1 + resolution: "@react-native-windows/cli@npm:0.73.1" dependencies: "@react-native-windows/codegen": 0.73.0 "@react-native-windows/fs": 0.73.0 "@react-native-windows/package-utils": 0.73.0 - "@react-native-windows/telemetry": 0.73.0 + "@react-native-windows/telemetry": 0.73.1 "@xmldom/xmldom": ^0.7.7 chalk: ^4.1.0 cli-spinners: ^2.2.0 @@ -2622,7 +2808,7 @@ __metadata: xpath: ^0.0.27 peerDependencies: react-native: "*" - checksum: d93b258b8a0586522f7c560a74f3c4c569cb1b904e500e8f1f1aa3416efc41de64767753cfa5e3da6313c8784536623673a92a497bb1ba9a649463a139b9ff78 + checksum: a11f4c615967ff399bb2a97153f76c475b67ead5da66d53e60c0b9369867d14c370f44150cec046cbfff402982135d4b7a35a0d41dde1081e6ccc23fbf5798fb languageName: node linkType: hard @@ -2675,23 +2861,23 @@ __metadata: languageName: node linkType: hard -"@react-native-windows/telemetry@npm:0.73.0": - version: 0.73.0 - resolution: "@react-native-windows/telemetry@npm:0.73.0" +"@react-native-windows/telemetry@npm:0.73.1": + version: 0.73.1 + resolution: "@react-native-windows/telemetry@npm:0.73.1" dependencies: "@react-native-windows/fs": 0.73.0 "@xmldom/xmldom": ^0.7.7 - applicationinsights: ^2.3.1 + applicationinsights: 2.7.3 ci-info: ^3.2.0 envinfo: ^7.8.1 lodash: ^4.17.21 os-locale: ^5.0.0 xpath: ^0.0.27 - checksum: bd9720b4f228ed95bca333ee9fc8248dfc024c30f4aa1037299f5aa5e5b3c7439609eede8e86f1b0d907ceab955de09c2203a495186a8711f5664892c5593c66 + checksum: de4c5fe1f3533b1b75a628499e3b4e28f5104f8f368b511a4226dd41709b98437a085c7b2aa660b7b00d987d5055f2ea3673929e915b592c238f6e9cec39a626 languageName: node linkType: hard -"@react-native/assets-registry@npm:^0.73.1": +"@react-native/assets-registry@npm:0.73.1, @react-native/assets-registry@npm:^0.73.1": version: 0.73.1 resolution: "@react-native/assets-registry@npm:0.73.1" checksum: d9d09774d497bae13b1fb6a1c977bf6e442858639ee66fe4e8f955cfc903a16f79de6129471114a918a4b814eb5150bd808a5a7dc9f8b12d49795d9488d4cb67 @@ -2705,70 +2891,18 @@ __metadata: languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:*": - version: 0.74.0 - resolution: "@react-native/babel-plugin-codegen@npm:0.74.0" - dependencies: - "@react-native/codegen": "*" - checksum: 4663bd2395503ce0e14908b718107bc5d82708be709db746eba448b57193e5dfce7a404688b12b319bf6c9e37ca4db5dd9591f471daba9dfe219970eb8ed2bf7 - languageName: node - linkType: hard - -"@react-native/babel-preset@npm:*": - version: 0.74.0 - resolution: "@react-native/babel-preset@npm:0.74.0" +"@react-native/babel-plugin-codegen@npm:0.73.2": + version: 0.73.2 + resolution: "@react-native/babel-plugin-codegen@npm:0.73.2" dependencies: - "@babel/core": ^7.20.0 - "@babel/plugin-proposal-async-generator-functions": ^7.0.0 - "@babel/plugin-proposal-class-properties": ^7.18.0 - "@babel/plugin-proposal-export-default-from": ^7.0.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.0 - "@babel/plugin-proposal-numeric-separator": ^7.0.0 - "@babel/plugin-proposal-object-rest-spread": ^7.20.0 - "@babel/plugin-proposal-optional-catch-binding": ^7.0.0 - "@babel/plugin-proposal-optional-chaining": ^7.20.0 - "@babel/plugin-syntax-dynamic-import": ^7.8.0 - "@babel/plugin-syntax-export-default-from": ^7.0.0 - "@babel/plugin-syntax-flow": ^7.18.0 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.0.0 - "@babel/plugin-syntax-optional-chaining": ^7.0.0 - "@babel/plugin-transform-arrow-functions": ^7.0.0 - "@babel/plugin-transform-async-to-generator": ^7.20.0 - "@babel/plugin-transform-block-scoping": ^7.0.0 - "@babel/plugin-transform-classes": ^7.0.0 - "@babel/plugin-transform-computed-properties": ^7.0.0 - "@babel/plugin-transform-destructuring": ^7.20.0 - "@babel/plugin-transform-flow-strip-types": ^7.20.0 - "@babel/plugin-transform-function-name": ^7.0.0 - "@babel/plugin-transform-literals": ^7.0.0 - "@babel/plugin-transform-modules-commonjs": ^7.0.0 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.0.0 - "@babel/plugin-transform-parameters": ^7.0.0 - "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/plugin-transform-private-property-in-object": ^7.22.11 - "@babel/plugin-transform-react-display-name": ^7.0.0 - "@babel/plugin-transform-react-jsx": ^7.0.0 - "@babel/plugin-transform-react-jsx-self": ^7.0.0 - "@babel/plugin-transform-react-jsx-source": ^7.0.0 - "@babel/plugin-transform-runtime": ^7.0.0 - "@babel/plugin-transform-shorthand-properties": ^7.0.0 - "@babel/plugin-transform-spread": ^7.0.0 - "@babel/plugin-transform-sticky-regex": ^7.0.0 - "@babel/plugin-transform-typescript": ^7.5.0 - "@babel/plugin-transform-unicode-regex": ^7.0.0 - "@babel/template": ^7.0.0 - "@react-native/babel-plugin-codegen": "*" - babel-plugin-transform-flow-enums: ^0.0.2 - react-refresh: ^0.14.0 - peerDependencies: - "@babel/core": "*" - checksum: d0d94e033407f24f09519f8b62ec6e384b4acf9e599cec3a630add0c1fda6ac1959fb91829af420932a418ccdcc147e2e7358908988a141b804e22d6a4093859 + "@react-native/codegen": 0.73.2 + checksum: 0951dd53499342d2ac7c10bf7a764dac9e534b38d0bba673f9fa9cec80171a9bc8ad9dcea86e832453f04bcfa2bf7bf607a1b33056aa431e8666c05aa5f668af languageName: node linkType: hard -"@react-native/babel-preset@npm:^0.73.18": - version: 0.73.18 - resolution: "@react-native/babel-preset@npm:0.73.18" +"@react-native/babel-preset@npm:0.73.19, @react-native/babel-preset@npm:^0.73.19": + version: 0.73.19 + resolution: "@react-native/babel-preset@npm:0.73.19" dependencies: "@babel/core": ^7.20.0 "@babel/plugin-proposal-async-generator-functions": ^7.0.0 @@ -2809,30 +2943,16 @@ __metadata: "@babel/plugin-transform-typescript": ^7.5.0 "@babel/plugin-transform-unicode-regex": ^7.0.0 "@babel/template": ^7.0.0 - "@react-native/babel-plugin-codegen": "*" + "@react-native/babel-plugin-codegen": 0.73.2 babel-plugin-transform-flow-enums: ^0.0.2 react-refresh: ^0.14.0 peerDependencies: "@babel/core": "*" - checksum: 291e9ee5ea916a36103daea2c8209c3e36381763d661a9fd1ed237eed63f7154fa37acfb23a2fd7302bbc60e25fcadecdd319bc2e0d6ef28ac92bd1d7d4a3fbf - languageName: node - linkType: hard - -"@react-native/codegen@npm:*": - version: 0.74.0 - resolution: "@react-native/codegen@npm:0.74.0" - dependencies: - "@babel/parser": ^7.20.0 - flow-parser: ^0.206.0 - jscodeshift: ^0.14.0 - nullthrows: ^1.1.1 - peerDependencies: - "@babel/preset-env": ^7.1.6 - checksum: dcb7abbe142b50b3c0be8f33d2a44a8c891333f4bc2e0af0008fc66a69cb9662dacd08ecc0985670e150347ca8a4281fa80f78527854ff5e1289105b90702ca6 + checksum: 3c3d09f6e0c88efc3cf372ac7d866c1410c60e3dd0a5aeb63a02e732eccefe670ebc8127a60235639590568c2a3343e0f24b7159ad174091932177121cc59e1e languageName: node linkType: hard -"@react-native/codegen@npm:^0.73.2": +"@react-native/codegen@npm:0.73.2, @react-native/codegen@npm:^0.73.2": version: 0.73.2 resolution: "@react-native/codegen@npm:0.73.2" dependencies: @@ -2849,38 +2969,38 @@ __metadata: languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:^0.73.10": - version: 0.73.10 - resolution: "@react-native/community-cli-plugin@npm:0.73.10" +"@react-native/community-cli-plugin@npm:0.73.12, @react-native/community-cli-plugin@npm:^0.73.10": + version: 0.73.12 + resolution: "@react-native/community-cli-plugin@npm:0.73.12" dependencies: - "@react-native-community/cli-server-api": 12.1.1 - "@react-native-community/cli-tools": 12.1.1 - "@react-native/dev-middleware": ^0.73.5 - "@react-native/metro-babel-transformer": ^0.73.12 + "@react-native-community/cli-server-api": 12.3.0 + "@react-native-community/cli-tools": 12.3.0 + "@react-native/dev-middleware": 0.73.7 + "@react-native/metro-babel-transformer": 0.73.13 chalk: ^4.0.0 execa: ^5.1.1 - metro: ^0.80.0 - metro-config: ^0.80.0 - metro-core: ^0.80.0 + metro: ^0.80.3 + metro-config: ^0.80.3 + metro-core: ^0.80.3 node-fetch: ^2.2.0 readline: ^1.3.0 - checksum: dadbebdd0ab7ee4a07509415ad7af5bf21ff7a150caadeb39fcc6ada33dd5928096113385a26ec5e03d406898134104f9ad1e543a98e70bf8b05956b794ba51f + checksum: 503936ea343d4c5d3f6234e59cbd36e750174a9bc80a38f308d2fe317b646b18da6ea3780caffb676320e23be808e529f7bee11667052a86ed75b1cacf5b8b1c languageName: node linkType: hard -"@react-native/debugger-frontend@npm:^0.73.2": - version: 0.73.2 - resolution: "@react-native/debugger-frontend@npm:0.73.2" - checksum: 6c904e7c3565100f86bbfddefe9f4e50f1295acc1158dd51c229a960eef58fc15a71db78212b33e02eb6d610c294d72b6695137e17add7c174cf0663a8a8ec1d +"@react-native/debugger-frontend@npm:0.73.3": + version: 0.73.3 + resolution: "@react-native/debugger-frontend@npm:0.73.3" + checksum: 71ecf6fdf3ecf2cae80818e2b8717acb22e291fd19edf89f570e695a165660a749244fb03465b3b8b9b7166cbdee627577dd75321f6793649b0a255aec722d92 languageName: node linkType: hard -"@react-native/dev-middleware@npm:^0.73.5": - version: 0.73.5 - resolution: "@react-native/dev-middleware@npm:0.73.5" +"@react-native/dev-middleware@npm:0.73.7": + version: 0.73.7 + resolution: "@react-native/dev-middleware@npm:0.73.7" dependencies: "@isaacs/ttlcache": ^1.4.1 - "@react-native/debugger-frontend": ^0.73.2 + "@react-native/debugger-frontend": 0.73.3 chrome-launcher: ^0.15.2 chromium-edge-launcher: ^1.0.0 connect: ^3.6.5 @@ -2889,17 +3009,17 @@ __metadata: open: ^7.0.3 serve-static: ^1.13.1 temp-dir: ^2.0.0 - checksum: 60070ee81f35e92a8cbf4147806da713cc7ec8af95f5754708d54bd2a82c20db74564844439bfc41afee815c755740467673df279de1d5412369385f9f7676be + checksum: fd22acc763282c0cec8776cf1604a063b016b96fce0922c1f6690cd6df1cfde4540f3df3364721a13d12777e84bfc218a2a3b71f9965ee6be6bfad51c5a0d07e languageName: node linkType: hard -"@react-native/eslint-config@npm:^0.73.1": - version: 0.73.1 - resolution: "@react-native/eslint-config@npm:0.73.1" +"@react-native/eslint-config@npm:^0.73.2": + version: 0.73.2 + resolution: "@react-native/eslint-config@npm:0.73.2" dependencies: "@babel/core": ^7.20.0 "@babel/eslint-parser": ^7.20.0 - "@react-native/eslint-plugin": ^0.73.1 + "@react-native/eslint-plugin": 0.73.1 "@typescript-eslint/eslint-plugin": ^5.57.1 "@typescript-eslint/parser": ^5.57.1 eslint-config-prettier: ^8.5.0 @@ -2913,59 +3033,58 @@ __metadata: peerDependencies: eslint: ">=8" prettier: ">=2" - checksum: d2e86572b0c09be999c5033ae49b6dcf3d492b666c027304e0e1c096de20f0adcdc140af98a42ae104d16209c5610457073a92fa04aae0c3de204ea8ef922081 + checksum: 6d9de3267d80f1ee4f046a54a86bb906448dbc2a1a708fa7b7cb92f7611dec666b5908451501cd39b8b67eda4c8cfac6b2707a0ea65eb0228c79dcd47fc9b4c5 languageName: node linkType: hard -"@react-native/eslint-plugin@npm:^0.73.1": +"@react-native/eslint-plugin@npm:0.73.1": version: 0.73.1 resolution: "@react-native/eslint-plugin@npm:0.73.1" checksum: 82a9bd30ada10ec4e926021967d1ffeb7c82eaaba6f7171cc655daf3339d2e2c15897bc3cd0f529e83ef2958c3b9b0365590a6b672a1a0efe7c781bd3e854473 languageName: node linkType: hard -"@react-native/gradle-plugin@npm:^0.73.4": +"@react-native/gradle-plugin@npm:0.73.4, @react-native/gradle-plugin@npm:^0.73.4": version: 0.73.4 resolution: "@react-native/gradle-plugin@npm:0.73.4" checksum: f72e2a9fc44f7a848142f09e939686b85f7f51edb0634407635b742f152f2d5162eb08579a6a03c37f2550397a64915578d185dac1b95c7cf1ba8729fa51f389 languageName: node linkType: hard -"@react-native/js-polyfills@npm:^0.73.1": +"@react-native/js-polyfills@npm:0.73.1, @react-native/js-polyfills@npm:^0.73.1": version: 0.73.1 resolution: "@react-native/js-polyfills@npm:0.73.1" checksum: ec5899c3f2480475a6dccb252f3de6cc0b2eccc32d3d4a61a479e5f09d6458d86860fd60af472448b417d6e19f75c6b4008de245ab7fbb6d9c4300f452a37fd5 languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:^0.73.12": - version: 0.73.12 - resolution: "@react-native/metro-babel-transformer@npm:0.73.12" +"@react-native/metro-babel-transformer@npm:0.73.13": + version: 0.73.13 + resolution: "@react-native/metro-babel-transformer@npm:0.73.13" dependencies: "@babel/core": ^7.20.0 - "@react-native/babel-preset": "*" - babel-preset-fbjs: ^3.4.0 + "@react-native/babel-preset": 0.73.19 hermes-parser: 0.15.0 nullthrows: ^1.1.1 peerDependencies: "@babel/core": "*" - checksum: ba9d27e71d76190bbc97633486e2eaa57a51bdaaad7fd13dc7cca3a864b31533773d38cf9c69ef092148e62cb88243e7f4a643f1b363e9a3f733b598c6f3374a + checksum: 56b7330dd7fef32ede05471bccbab1b3fe73902b165add4150c4302eff19f1d35b196b98cc3dbcff183b5d8ef814a472806ee36d81204c43c920ea832185c123 languageName: node linkType: hard -"@react-native/metro-config@npm:^0.73.2": - version: 0.73.2 - resolution: "@react-native/metro-config@npm:0.73.2" +"@react-native/metro-config@npm:^0.73.3": + version: 0.73.3 + resolution: "@react-native/metro-config@npm:0.73.3" dependencies: - "@react-native/js-polyfills": ^0.73.1 - "@react-native/metro-babel-transformer": ^0.73.12 - metro-config: ^0.80.0 - metro-runtime: ^0.80.0 - checksum: 91b71038c6a33b965c9b598125c78172957395e6bcede695202f846cea0f2dd4668cc3f09b5afa5dcdfce3e212007ec22b855f100473fae8b944877d68e4dbc8 + "@react-native/js-polyfills": 0.73.1 + "@react-native/metro-babel-transformer": 0.73.13 + metro-config: ^0.80.3 + metro-runtime: ^0.80.3 + checksum: f22ef2957235d98898c305b3f9acb0a521f3bd1c759ec9d7f52fd1745f636c6915d224a69ee909e58e6336059c8dee91a66a065a558514d2eff753902edb1c80 languageName: node linkType: hard -"@react-native/normalize-colors@npm:^0.73.0, @react-native/normalize-colors@npm:^0.73.2": +"@react-native/normalize-colors@npm:0.73.2, @react-native/normalize-colors@npm:^0.73.0, @react-native/normalize-colors@npm:^0.73.2": version: 0.73.2 resolution: "@react-native/normalize-colors@npm:0.73.2" checksum: ddf9384ad41adc4f3c8eb61ddd27113130c8060bd2f4255bee284a52aa7ddcff8a5e751f569dd416c45f8b9d4062392fa7219b221f2f7f0b229d02b8d2a5b974 @@ -2979,15 +3098,15 @@ __metadata: languageName: node linkType: hard -"@react-native/virtualized-lists@npm:^0.73.3": - version: 0.73.3 - resolution: "@react-native/virtualized-lists@npm:0.73.3" +"@react-native/virtualized-lists@npm:0.73.4, @react-native/virtualized-lists@npm:^0.73.3": + version: 0.73.4 + resolution: "@react-native/virtualized-lists@npm:0.73.4" dependencies: invariant: ^2.2.4 nullthrows: ^1.1.1 peerDependencies: react-native: "*" - checksum: ff546e88cc2e886ec3b35d685ee21f8f8a7b215a4f9a3fc480a2a5ef7931b99b33232aa78dcaf5f656090bf4d4ceacaff23803e8035491fdb8de61a758912a3c + checksum: 59826b146cdcff358f27b118b9dcc6fa23534f3880b5e8546c79aedff8cb4e028af652b0371e0080610e30a250c69607f45b2066c83762788783ccf2031938e3 languageName: node linkType: hard @@ -3121,7 +3240,7 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.5": +"@types/jest@npm:^29.5.11": version: 29.5.11 resolution: "@types/jest@npm:29.5.11" dependencies: @@ -3138,7 +3257,7 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.199": +"@types/lodash@npm:^4.14.202": version: 4.14.202 resolution: "@types/lodash@npm:4.14.202" checksum: a91acf3564a568c6f199912f3eb2c76c99c5a0d7e219394294213b3f2d54f672619f0fde4da22b29dc5d4c31457cd799acc2e5cb6bd90f9af04a1578483b6ff7 @@ -3581,9 +3700,9 @@ __metadata: languageName: node linkType: hard -"applicationinsights@npm:^2.3.1": - version: 2.9.1 - resolution: "applicationinsights@npm:2.9.1" +"applicationinsights@npm:2.7.3": + version: 2.7.3 + resolution: "applicationinsights@npm:2.7.3" dependencies: "@azure/core-auth": ^1.5.0 "@azure/core-rest-pipeline": 1.10.1 @@ -3603,7 +3722,7 @@ __metadata: peerDependenciesMeta: applicationinsights-native-metrics: optional: true - checksum: c10be2a9b55dec985af044f74847a6035b00120dc3474d4851cbaa9422d454ac18fb9e243068111836b7be8767dd19d34790acce1e59887b11601a4477974fad + checksum: 3f5ebc1063b4ca9e69841736f1b31186b2655202d64dcb082d20cebed56e7bf758faeee9bc52e9e01d9e6eaf6cf1de84b8ecd2ee500388bfdcc5792a58bc10e4 languageName: node linkType: hard @@ -3864,20 +3983,20 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.6": - version: 0.4.7 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.7" +"babel-plugin-polyfill-corejs2@npm:^0.4.6, babel-plugin-polyfill-corejs2@npm:^0.4.7": + version: 0.4.8 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.8" dependencies: "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.4.4 + "@babel/helper-define-polyfill-provider": ^0.5.0 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: b3c84ce44d00211c919a94f76453fb2065861612f3e44862eb7acf854e325c738a7441ad82690deba2b6fddfa2ad2cf2c46960f46fab2e3b17c6ed4fd2d73b38 + checksum: 22857b87268b354e095452199464accba5fd8f690558a2f24b0954807ca2494b96da8d5c13507955802427582015160bce26a66893acf6da5dafbed8b336cf79 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.8.5": +"babel-plugin-polyfill-corejs3@npm:^0.8.5, babel-plugin-polyfill-corejs3@npm:^0.8.7": version: 0.8.7 resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" dependencies: @@ -3889,21 +4008,14 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.5.3": - version: 0.5.4 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.4" +"babel-plugin-polyfill-regenerator@npm:^0.5.3, babel-plugin-polyfill-regenerator@npm:^0.5.4": + version: 0.5.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.4 + "@babel/helper-define-polyfill-provider": ^0.5.0 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 461b735c6c0eca3c7b4434d14bfa98c2ab80f00e2bdc1c69eb46d1d300092a9786d76bbd3ee55e26d2d1a2380c14592d8d638e271dfd2a2b78a9eacffa3645d1 - languageName: node - linkType: hard - -"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": - version: 7.0.0-beta.0 - resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" - checksum: e37509156ca945dd9e4b82c66dd74f2d842ad917bd280cb5aa67960942300cd065eeac476d2514bdcdedec071277a358f6d517c31d9f9244d9bbc3619a8ecf8a + checksum: 3a9b4828673b23cd648dcfb571eadcd9d3fadfca0361d0a7c6feeb5a30474e92faaa49f067a6e1c05e49b6a09812879992028ff3ef3446229ff132d6e1de7eb6 languageName: node linkType: hard @@ -3938,43 +4050,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-fbjs@npm:^3.4.0": - version: 3.4.0 - resolution: "babel-preset-fbjs@npm:3.4.0" - dependencies: - "@babel/plugin-proposal-class-properties": ^7.0.0 - "@babel/plugin-proposal-object-rest-spread": ^7.0.0 - "@babel/plugin-syntax-class-properties": ^7.0.0 - "@babel/plugin-syntax-flow": ^7.0.0 - "@babel/plugin-syntax-jsx": ^7.0.0 - "@babel/plugin-syntax-object-rest-spread": ^7.0.0 - "@babel/plugin-transform-arrow-functions": ^7.0.0 - "@babel/plugin-transform-block-scoped-functions": ^7.0.0 - "@babel/plugin-transform-block-scoping": ^7.0.0 - "@babel/plugin-transform-classes": ^7.0.0 - "@babel/plugin-transform-computed-properties": ^7.0.0 - "@babel/plugin-transform-destructuring": ^7.0.0 - "@babel/plugin-transform-flow-strip-types": ^7.0.0 - "@babel/plugin-transform-for-of": ^7.0.0 - "@babel/plugin-transform-function-name": ^7.0.0 - "@babel/plugin-transform-literals": ^7.0.0 - "@babel/plugin-transform-member-expression-literals": ^7.0.0 - "@babel/plugin-transform-modules-commonjs": ^7.0.0 - "@babel/plugin-transform-object-super": ^7.0.0 - "@babel/plugin-transform-parameters": ^7.0.0 - "@babel/plugin-transform-property-literals": ^7.0.0 - "@babel/plugin-transform-react-display-name": ^7.0.0 - "@babel/plugin-transform-react-jsx": ^7.0.0 - "@babel/plugin-transform-shorthand-properties": ^7.0.0 - "@babel/plugin-transform-spread": ^7.0.0 - "@babel/plugin-transform-template-literals": ^7.0.0 - babel-plugin-syntax-trailing-function-commas: ^7.0.0-beta.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: b3352cf690729125997f254bc31b9c4db347f8646f1571958ced1c45f0da89439e183e1c88e35397eb0361b9e1fbb1dd8142d3f4647814deb427e53c54f44d5f - languageName: node - linkType: hard - "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -4001,13 +4076,6 @@ __metadata: languageName: node linkType: hard -"big-integer@npm:^1.6.44": - version: 1.6.52 - resolution: "big-integer@npm:1.6.52" - checksum: 6e86885787a20fed96521958ae9086960e4e4b5e74d04f3ef7513d4d0ad631a9f3bde2730fc8aaa4b00419fc865f6ec573e5320234531ef37505da7da192c40b - languageName: node - linkType: hard - "bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -4019,15 +4087,6 @@ __metadata: languageName: node linkType: hard -"bplist-parser@npm:^0.2.0": - version: 0.2.0 - resolution: "bplist-parser@npm:0.2.0" - dependencies: - big-integer: ^1.6.44 - checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -4106,15 +4165,6 @@ __metadata: languageName: node linkType: hard -"bundle-name@npm:^3.0.0": - version: 3.0.0 - resolution: "bundle-name@npm:3.0.0" - dependencies: - run-applescript: ^5.0.0 - checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615 - languageName: node - linkType: hard - "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" @@ -4729,28 +4779,6 @@ __metadata: languageName: node linkType: hard -"default-browser-id@npm:^3.0.0": - version: 3.0.0 - resolution: "default-browser-id@npm:3.0.0" - dependencies: - bplist-parser: ^0.2.0 - untildify: ^4.0.0 - checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 - languageName: node - linkType: hard - -"default-browser@npm:^4.0.0": - version: 4.0.0 - resolution: "default-browser@npm:4.0.0" - dependencies: - bundle-name: ^3.0.0 - default-browser-id: ^3.0.0 - execa: ^7.1.1 - titleize: ^3.0.0 - checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7 - languageName: node - linkType: hard - "defaults@npm:^1.0.3": version: 1.0.4 resolution: "defaults@npm:1.0.4" @@ -4771,13 +4799,6 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^3.0.0": - version: 3.0.0 - resolution: "define-lazy-prop@npm:3.0.0" - checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 - languageName: node - linkType: hard - "define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" @@ -5221,7 +5242,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^9.0.0": +"eslint-config-prettier@npm:^9.1.0": version: 9.1.0 resolution: "eslint-config-prettier@npm:9.1.0" peerDependencies: @@ -5289,22 +5310,23 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:^5.0.1": - version: 5.0.1 - resolution: "eslint-plugin-prettier@npm:5.0.1" +"eslint-plugin-prettier@npm:^5.1.3": + version: 5.1.3 + resolution: "eslint-plugin-prettier@npm:5.1.3" dependencies: prettier-linter-helpers: ^1.0.0 - synckit: ^0.8.5 + synckit: ^0.8.6 peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" + eslint-config-prettier: "*" prettier: ">=3.0.0" peerDependenciesMeta: "@types/eslint": optional: true eslint-config-prettier: optional: true - checksum: c2261033b97bafe99ccb7cc47c2fac6fa85b8bbc8b128042e52631f906b69e12afed2cdd9d7e3021cc892ee8dd4204a3574e1f32a0b718b4bb3b440944b6983b + checksum: eb2a7d46a1887e1b93788ee8f8eb81e0b6b2a6f5a66a62bc6f375b033fc4e7ca16448da99380be800042786e76cf5c0df9c87a51a2c9b960ed47acbd7c0b9381 languageName: node linkType: hard @@ -5395,14 +5417,14 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.51.0": - version: 8.55.0 - resolution: "eslint@npm:8.55.0" +"eslint@npm:^8.56.0": + version: 8.56.0 + resolution: "eslint@npm:8.56.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.6.1 "@eslint/eslintrc": ^2.1.4 - "@eslint/js": 8.55.0 + "@eslint/js": 8.56.0 "@humanwhocodes/config-array": ^0.11.13 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -5439,7 +5461,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 83f82a604559dc1faae79d28fdf3dfc9e592ca221052e2ea516e1b379b37e77e4597705a16880e2f5ece4f79087c1dd13fd7f6e9746f794a401175519db18b41 + checksum: 883436d1e809b4a25d9eb03d42f584b84c408dbac28b0019f6ea07b5177940bf3cca86208f749a6a1e0039b63e085ee47aca1236c30721e91f0deef5cc5a5136 languageName: node linkType: hard @@ -5566,23 +5588,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^7.1.1": - version: 7.2.0 - resolution: "execa@npm:7.2.0" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.1 - human-signals: ^4.3.0 - is-stream: ^3.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^5.1.0 - onetime: ^6.0.0 - signal-exit: ^3.0.7 - strip-final-newline: ^3.0.0 - checksum: 14fd17ba0ca8c87b277584d93b1d9fc24f2a65e5152b31d5eb159a3b814854283eaae5f51efa9525e304447e2f757c691877f7adff8fde5746aae67eb1edd1cc - languageName: node - linkType: hard - "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -5992,7 +5997,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": +"get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad @@ -6234,10 +6239,10 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.17.1": - version: 0.17.1 - resolution: "hermes-estree@npm:0.17.1" - checksum: ffa6f997ad0b2a0dfe8ec782fc8cc5224a0d943b330944e62fe58c93c1f590afb67ba064d5a308c51a824b0db6e1bdc1654bfaf6bdfb4b0de4fb8f9cd8cf1050 +"hermes-estree@npm:0.18.2": + version: 0.18.2 + resolution: "hermes-estree@npm:0.18.2" + checksum: 6723aa4c475df27f964cde86518c097075a1b18168834b9329392a8ded4a9f09a854c31bc7720b0656550c05369d1d24d2fa7bee6a8d7ab35d78e1ec283ffe1f languageName: node linkType: hard @@ -6250,12 +6255,12 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.17.1": - version: 0.17.1 - resolution: "hermes-parser@npm:0.17.1" +"hermes-parser@npm:0.18.2": + version: 0.18.2 + resolution: "hermes-parser@npm:0.18.2" dependencies: - hermes-estree: 0.17.1 - checksum: 0a8fd611c708ec076654e9b7aed4b8c5b4302bdef87402a66e9c09ec3f925aa3c12718c80ebc52154ec5712a348ad375a69838f243c9bc2189ec6459415d6760 + hermes-estree: 0.18.2 + checksum: d628f207e8951ee8bdf5b3c798ea9e18e2f4e49f9a5aaed639868207b7163eafb3a55b999c6ed8b4f0c4e39b474c2e1bd1bcb69303f095cab56e1711368bcbdf languageName: node linkType: hard @@ -6359,13 +6364,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^4.3.0": - version: 4.3.1 - resolution: "human-signals@npm:4.3.1" - checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -6634,15 +6632,6 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^3.0.0": - version: 3.0.0 - resolution: "is-docker@npm:3.0.0" - bin: - is-docker: cli.js - checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -6718,17 +6707,6 @@ __metadata: languageName: node linkType: hard -"is-inside-container@npm:^1.0.0": - version: 1.0.0 - resolution: "is-inside-container@npm:1.0.0" - dependencies: - is-docker: ^3.0.0 - bin: - is-inside-container: cli.js - checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 - languageName: node - linkType: hard - "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -6866,13 +6844,6 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^3.0.0": - version: 3.0.0 - resolution: "is-stream@npm:3.0.0" - checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16 - languageName: node - linkType: hard - "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -8066,62 +8037,62 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.80.1": - version: 0.80.1 - resolution: "metro-babel-transformer@npm:0.80.1" +"metro-babel-transformer@npm:0.80.4": + version: 0.80.4 + resolution: "metro-babel-transformer@npm:0.80.4" dependencies: "@babel/core": ^7.20.0 - hermes-parser: 0.17.1 + hermes-parser: 0.18.2 nullthrows: ^1.1.1 - checksum: e0972387b5f531c588c54ea6cca953a9e7ac504acd2e0eafc6b8e01493c9b9fda6e1adeb593cd303514726b85a280fe00b3154fa486ecd8df9f3027581a46527 + checksum: eee402bfc85b7fe1a9362bf5908bef3388ff62643102de5a36e02e0d07c6841c6250a43edc4068ce8b97fb6ce6b11eca91ab46fbf566265ba75bfc2a2d1c5804 languageName: node linkType: hard -"metro-cache-key@npm:0.80.1": - version: 0.80.1 - resolution: "metro-cache-key@npm:0.80.1" - checksum: 22c74162e474bb8ff1a71198b8c2879b1c1d5fb7a24b6d76f9ececdd79c9ddcbe1e5d42def362baffa1c7b024443caf74c3dd0790852f6f99f31a645e7acdf79 +"metro-cache-key@npm:0.80.4": + version: 0.80.4 + resolution: "metro-cache-key@npm:0.80.4" + checksum: 674b0a1e570c35d05602eeef16dcbb6e7b80ae5d67d414db347a3214c0436afe142afaf1393f39651cbef9a54a095ac100ecf0a96a6e59f59536b06911bb78af languageName: node linkType: hard -"metro-cache@npm:0.80.1": - version: 0.80.1 - resolution: "metro-cache@npm:0.80.1" +"metro-cache@npm:0.80.4": + version: 0.80.4 + resolution: "metro-cache@npm:0.80.4" dependencies: - metro-core: 0.80.1 + metro-core: 0.80.4 rimraf: ^3.0.2 - checksum: 5f981a20cc2aa91cc9acc9d2d499c3d8d11807998263df9f2f3df00851a43655f46dab0fa5a104d5f8939e0d89ae71abd155debfee2300243c0771fbb0839fb7 + checksum: 52be5695e4f043bbb0316121db020afa4a12ea2a65c7a090417daeda3dbed1e1ddcfa6f66d2526f6b6f0ee1bc22b7c7400eca1cb512af244dd85a16fdc082366 languageName: node linkType: hard -"metro-config@npm:0.80.1, metro-config@npm:^0.80.0, metro-config@npm:^0.80.1": - version: 0.80.1 - resolution: "metro-config@npm:0.80.1" +"metro-config@npm:0.80.4, metro-config@npm:^0.80.3, metro-config@npm:^0.80.4": + version: 0.80.4 + resolution: "metro-config@npm:0.80.4" dependencies: connect: ^3.6.5 cosmiconfig: ^5.0.5 jest-validate: ^29.6.3 - metro: 0.80.1 - metro-cache: 0.80.1 - metro-core: 0.80.1 - metro-runtime: 0.80.1 - checksum: 5c23c8fe1d9a2599dcc0d542a21e604ce0478f2a4ccd7c96f1ad12b89c4b1a193e28ec20315a18e01b19506c54eaa491ae5651c1e5e5789a6e81863298f3bbf6 + metro: 0.80.4 + metro-cache: 0.80.4 + metro-core: 0.80.4 + metro-runtime: 0.80.4 + checksum: 38c34da0ceeb0e9f6a3793f06ac4ea9bcc06bb4e48f1eff59befb469760f433e6f1fd8a35824eb547ae4413f8746ea1c4ef84d807e15148eba09de252c018459 languageName: node linkType: hard -"metro-core@npm:0.80.1, metro-core@npm:^0.80.0": - version: 0.80.1 - resolution: "metro-core@npm:0.80.1" +"metro-core@npm:0.80.4, metro-core@npm:^0.80.3": + version: 0.80.4 + resolution: "metro-core@npm:0.80.4" dependencies: lodash.throttle: ^4.1.1 - metro-resolver: 0.80.1 - checksum: 1dc79082f13f11c656899be3dd2a8dd99e2c976666e6d53230e4e00d0142dc68792237953cd8b912357ffded4fadb6df9eefb67544082779844bcc2c237f9778 + metro-resolver: 0.80.4 + checksum: e8789d047a55e9e2e5777d9aacdeaaf385153012d1eb7a832e68d3f69dfafc1757d24ee5747a39072f48c31e1b92fa126a57669adc74427f667ff1af6e24577e languageName: node linkType: hard -"metro-file-map@npm:0.80.1": - version: 0.80.1 - resolution: "metro-file-map@npm:0.80.1" +"metro-file-map@npm:0.80.4": + version: 0.80.4 + resolution: "metro-file-map@npm:0.80.4" dependencies: anymatch: ^3.0.3 debug: ^2.2.0 @@ -8137,102 +8108,102 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: cb114d3daba3a247782a5d47589d4e4f8bc6549a750d49a05b5ded601f6ef6d264f4caebb377b44de288476c771f7d50269891f153f9a59c2efca827d5d7056c + checksum: 624832cf02c41fe55b8977cf52b7bbd0c47b00953f9b2e8be6b6f0df7eac67e563795d3b1c39e2ee7265a30be141ffa0320f5dcc7d72db805857bfad71d44c95 languageName: node linkType: hard -"metro-minify-terser@npm:0.80.1": - version: 0.80.1 - resolution: "metro-minify-terser@npm:0.80.1" +"metro-minify-terser@npm:0.80.4": + version: 0.80.4 + resolution: "metro-minify-terser@npm:0.80.4" dependencies: terser: ^5.15.0 - checksum: d8bbccdb0472e48121b7bba2cf1a1aabc38cd162d2b3e6bb500b6bf20741066a406888613dd94e6e69a2862881755b156006e3edc5c5ed857dd081c4539be84c + checksum: 1a8e3dcefce1c4a599e948641fee58cc03f4121371d50adb32af5f8fc3e62958c1a0d9d16a9179a9bab62b9e82c82f8cb5dfb8b517d37552f7de78dc7e0524bf languageName: node linkType: hard -"metro-resolver@npm:0.80.1": - version: 0.80.1 - resolution: "metro-resolver@npm:0.80.1" - checksum: 1cc9bb8033124bbf32efd7072b9e0e4cd9e701b461d33f146464ab5b2bee459e86a48320edd7899e46a9f4b7cacfef4878f9ca1b4c13ef057e156794fe57bc97 +"metro-resolver@npm:0.80.4": + version: 0.80.4 + resolution: "metro-resolver@npm:0.80.4" + checksum: d56009e4ca9e8b0ce1bcb84891fbe98e5ca80a2f43e20a9bcdff565916503546646ed6eb9cb39c072cbb14de2e85acb978ccc9d19ada6a176fc95a7cfd84ee6b languageName: node linkType: hard -"metro-runtime@npm:0.80.1, metro-runtime@npm:^0.80.0": - version: 0.80.1 - resolution: "metro-runtime@npm:0.80.1" +"metro-runtime@npm:0.80.4, metro-runtime@npm:^0.80.0, metro-runtime@npm:^0.80.3": + version: 0.80.4 + resolution: "metro-runtime@npm:0.80.4" dependencies: "@babel/runtime": ^7.0.0 - checksum: 15836913f68c849c2a5c58c025784c3caa9f8a32e0cbe5441a0498b2363a601d1c733c278de5d6bde5ce27e16da3c2aeddf5d42cd7b4af4f6a631ba264af64fb + checksum: 9c6f56c809d60914123eb60b0be4e14428acb94ade70c2e2bf66cedb7d7bf455d2667ca96f9fdbf2fea34229f194dbee6bae3b2020fd4bfc06b8c796f36d4520 languageName: node linkType: hard -"metro-source-map@npm:0.80.1, metro-source-map@npm:^0.80.0": - version: 0.80.1 - resolution: "metro-source-map@npm:0.80.1" +"metro-source-map@npm:0.80.4, metro-source-map@npm:^0.80.0, metro-source-map@npm:^0.80.3": + version: 0.80.4 + resolution: "metro-source-map@npm:0.80.4" dependencies: "@babel/traverse": ^7.20.0 "@babel/types": ^7.20.0 invariant: ^2.2.4 - metro-symbolicate: 0.80.1 + metro-symbolicate: 0.80.4 nullthrows: ^1.1.1 - ob1: 0.80.1 + ob1: 0.80.4 source-map: ^0.5.6 vlq: ^1.0.0 - checksum: 5de90ab199ff90d96cd14ad19c72e114f9717354e50bb257afc29b6ebd26d3dfcf067dac992ec316e6a9d2c626ac86cb25a6f8699e482484f57efad05cbf69f9 + checksum: 881cf9c15c4bedb0cf784ffbdb6e83a73b9c83171f6990f6a2955a8c4382e33bb4175f5989dcd81846636a476517a4db97cee4e1a3b9c8199c0e426926cc8f0f languageName: node linkType: hard -"metro-symbolicate@npm:0.80.1": - version: 0.80.1 - resolution: "metro-symbolicate@npm:0.80.1" +"metro-symbolicate@npm:0.80.4": + version: 0.80.4 + resolution: "metro-symbolicate@npm:0.80.4" dependencies: invariant: ^2.2.4 - metro-source-map: 0.80.1 + metro-source-map: 0.80.4 nullthrows: ^1.1.1 source-map: ^0.5.6 through2: ^2.0.1 vlq: ^1.0.0 bin: metro-symbolicate: src/index.js - checksum: 23ba3fa46edf294245fa6fdd5fb74637ab3194eb04f1420dc19f43a0d29c262bd42d70936aef0bda4f6e2160d8769e92c95f63a77f4c18aee53173121a0fb42a + checksum: 112c77c75b521e45c3e8c3e71e7b352293f892b7a3e2151df43ebf2d7c01165570031468ba40a9d6e0e632af35e3cc764caf5a054a5a4b28f8d24f9407ab7be6 languageName: node linkType: hard -"metro-transform-plugins@npm:0.80.1": - version: 0.80.1 - resolution: "metro-transform-plugins@npm:0.80.1" +"metro-transform-plugins@npm:0.80.4": + version: 0.80.4 + resolution: "metro-transform-plugins@npm:0.80.4" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.0 "@babel/template": ^7.0.0 "@babel/traverse": ^7.20.0 nullthrows: ^1.1.1 - checksum: 66e56a96beacd9fd5e28922e71c84e4e67fa87b5ab65ee4542953e17e968a791ef11521232f7792092215a95704f99e4336b9753509ca810aa710d562f031363 + checksum: bcd3c6e08db2b8b0b3310dbe7f6163d79fc0408b42dfe85b1a2e97c8bd1a99e59d793cf97e9c0c959766dd3b0ccae12bd6adb73cc82e4fd66ebfdcc07957623c languageName: node linkType: hard -"metro-transform-worker@npm:0.80.1": - version: 0.80.1 - resolution: "metro-transform-worker@npm:0.80.1" +"metro-transform-worker@npm:0.80.4": + version: 0.80.4 + resolution: "metro-transform-worker@npm:0.80.4" dependencies: "@babel/core": ^7.20.0 "@babel/generator": ^7.20.0 "@babel/parser": ^7.20.0 "@babel/types": ^7.20.0 - metro: 0.80.1 - metro-babel-transformer: 0.80.1 - metro-cache: 0.80.1 - metro-cache-key: 0.80.1 - metro-source-map: 0.80.1 - metro-transform-plugins: 0.80.1 + metro: 0.80.4 + metro-babel-transformer: 0.80.4 + metro-cache: 0.80.4 + metro-cache-key: 0.80.4 + metro-source-map: 0.80.4 + metro-transform-plugins: 0.80.4 nullthrows: ^1.1.1 - checksum: 9d13198e0d6d6320b27ef962c5260fdc18e6536a029826aa7300c2cb975d9aea2d18e4f83022f31891373e72c13511b11e758cea1fb831e3081655dcfb29c199 + checksum: 8a6ec8d4b94edce5cda1f2a1e054f77372bc12db72d158c8c796abdd1bbc10409068a7100fa96d96c1566e208b86353b19c1ba657cefe467fc340881e5612747 languageName: node linkType: hard -"metro@npm:0.80.1, metro@npm:^0.80.0": - version: 0.80.1 - resolution: "metro@npm:0.80.1" +"metro@npm:0.80.4, metro@npm:^0.80.3": + version: 0.80.4 + resolution: "metro@npm:0.80.4" dependencies: "@babel/code-frame": ^7.0.0 "@babel/core": ^7.20.0 @@ -8249,25 +8220,25 @@ __metadata: denodeify: ^1.2.1 error-stack-parser: ^2.0.6 graceful-fs: ^4.2.4 - hermes-parser: 0.17.1 + hermes-parser: 0.18.2 image-size: ^1.0.2 invariant: ^2.2.4 jest-worker: ^29.6.3 jsc-safe-url: ^0.2.2 lodash.throttle: ^4.1.1 - metro-babel-transformer: 0.80.1 - metro-cache: 0.80.1 - metro-cache-key: 0.80.1 - metro-config: 0.80.1 - metro-core: 0.80.1 - metro-file-map: 0.80.1 - metro-minify-terser: 0.80.1 - metro-resolver: 0.80.1 - metro-runtime: 0.80.1 - metro-source-map: 0.80.1 - metro-symbolicate: 0.80.1 - metro-transform-plugins: 0.80.1 - metro-transform-worker: 0.80.1 + metro-babel-transformer: 0.80.4 + metro-cache: 0.80.4 + metro-cache-key: 0.80.4 + metro-config: 0.80.4 + metro-core: 0.80.4 + metro-file-map: 0.80.4 + metro-minify-terser: 0.80.4 + metro-resolver: 0.80.4 + metro-runtime: 0.80.4 + metro-source-map: 0.80.4 + metro-symbolicate: 0.80.4 + metro-transform-plugins: 0.80.4 + metro-transform-worker: 0.80.4 mime-types: ^2.1.27 node-fetch: ^2.2.0 nullthrows: ^1.1.1 @@ -8280,7 +8251,7 @@ __metadata: yargs: ^17.6.2 bin: metro: src/cli.js - checksum: 11ca9ad89bd085e87a143fcf9461075ae081b5db144f31cf4f575572241576a2742c996257553dd580423163de5ba03378ae0f047d52e1d8a7b0dcde2b8fffce + checksum: cb73294f3fc315e81e6b050e679d2ac8f28a245d16634eb43ef6ff9eb71b52526ce93b1bd372a4e489eee9ba6568422bddbb9e97f2559bbfd30b11c8f5b96471 languageName: node linkType: hard @@ -8342,13 +8313,6 @@ __metadata: languageName: node linkType: hard -"mimic-fn@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-fn@npm:4.0.0" - checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56 - languageName: node - linkType: hard - "min-indent@npm:^1.0.1": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -8703,15 +8667,6 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^5.1.0": - version: 5.1.0 - resolution: "npm-run-path@npm:5.1.0" - dependencies: - path-key: ^4.0.0 - checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66 - languageName: node - linkType: hard - "nullthrows@npm:^1.1.1": version: 1.1.1 resolution: "nullthrows@npm:1.1.1" @@ -8719,10 +8674,10 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.80.1": - version: 0.80.1 - resolution: "ob1@npm:0.80.1" - checksum: 5c30ae37dea37fd2844ec28894e6592de3d12d97035139d7e3796595e839881d610450ddeb5261d7d12a3c76c4512267fe7b088b1a9d72e16c83e5062a57180a +"ob1@npm:0.80.4": + version: 0.80.4 + resolution: "ob1@npm:0.80.4" + checksum: 2b089440537f1babae86edf51f0990fa91e0410ab1a27f1baea9b0a362d14216935ad6f66afb2e532b57fd4972870d86473d38c0576b52d98adc893e456b872f languageName: node linkType: hard @@ -8854,15 +8809,6 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^6.0.0": - version: 6.0.0 - resolution: "onetime@npm:6.0.0" - dependencies: - mimic-fn: ^4.0.0 - checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788 - languageName: node - linkType: hard - "open@npm:^6.2.0": version: 6.4.0 resolution: "open@npm:6.4.0" @@ -8882,18 +8828,6 @@ __metadata: languageName: node linkType: hard -"open@npm:^9.1.0": - version: 9.1.0 - resolution: "open@npm:9.1.0" - dependencies: - default-browser: ^4.0.0 - define-lazy-prop: ^3.0.0 - is-inside-container: ^1.0.0 - is-wsl: ^2.2.0 - checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9 - languageName: node - linkType: hard - "optionator@npm:^0.9.3": version: 0.9.3 resolution: "optionator@npm:0.9.3" @@ -9114,13 +9048,6 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^4.0.0": - version: 4.0.0 - resolution: "path-key@npm:4.0.0" - checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7 - languageName: node - linkType: hard - "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -9216,12 +9143,12 @@ __metadata: languageName: node linkType: hard -"pod-install@npm:^0.1.39": - version: 0.1.39 - resolution: "pod-install@npm:0.1.39" +"pod-install@npm:^0.2.0": + version: 0.2.0 + resolution: "pod-install@npm:0.2.0" bin: pod-install: build/index.js - checksum: 200302341847251d4db25f950d15367f6f45f5358d87b18bf01054094f02b2572d007f73c8020b1565dd3e6b23f861965f9bad434873d3c8e834be0e7124fa3e + checksum: ecfe94d1285b42dd56fb03b9d1850d805f5626b8030acd32f2cb9ea6902e678deaefbb8475d2e307d0a6311159c6b5deea173adcc045c5ff6d58b377b0dcf1b8 languageName: node linkType: hard @@ -9241,12 +9168,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.0.3": - version: 3.1.1 - resolution: "prettier@npm:3.1.1" +"prettier@npm:^3.2.4": + version: 3.2.4 + resolution: "prettier@npm:3.2.4" bin: prettier: bin/prettier.cjs - checksum: e386855e3a1af86a748e16953f168be555ce66d6233f4ba54eb6449b88eb0c6b2ca79441b11eae6d28a7f9a5c96440ce50864b9d5f6356d331d39d6bb66c648e + checksum: 6ec9385a836e0b9bac549e585101c086d1521c31d7b882d5c8bb7d7646da0693da5f31f4fff6dc080710e5e2d34c85e6fb2f8766876b3645c8be2f33b9c3d1a3 languageName: node linkType: hard @@ -9441,16 +9368,16 @@ __metadata: languageName: node linkType: hard -"react-native-windows@npm:^0.73.2": - version: 0.73.2 - resolution: "react-native-windows@npm:0.73.2" +"react-native-windows@npm:^0.73.4": + version: 0.73.4 + resolution: "react-native-windows@npm:0.73.4" dependencies: "@babel/runtime": ^7.0.0 "@jest/create-cache-key-function": ^29.6.3 "@react-native-community/cli": 12.1.1 "@react-native-community/cli-platform-android": 12.1.1 "@react-native-community/cli-platform-ios": 12.1.1 - "@react-native-windows/cli": 0.73.0 + "@react-native-windows/cli": 0.73.1 "@react-native/assets": 1.0.0 "@react-native/assets-registry": ^0.73.1 "@react-native/codegen": ^0.73.2 @@ -9489,25 +9416,25 @@ __metadata: peerDependencies: react: 18.2.0 react-native: ^0.73.0 - checksum: 8f3dcc7a2904a60840670a4b541a9d61fb3817c13fd723b838a0b3088b0631fbad3a05e7fa8332012b3c9e1fec2ec2fb530a46e53c0bf52f8e31febb37cc16d3 + checksum: f097af23b3c92f80140ce67fe2d6182391f4c969bf246788186713d30968cc7d1bf2e0a60937f28834fe8c0ce7dadf387d6800586256b59a8187d3a80f2c7308 languageName: node linkType: hard -"react-native@npm:0.73.0": - version: 0.73.0 - resolution: "react-native@npm:0.73.0" +"react-native@npm:0.73.2": + version: 0.73.2 + resolution: "react-native@npm:0.73.2" dependencies: "@jest/create-cache-key-function": ^29.6.3 - "@react-native-community/cli": 12.1.1 - "@react-native-community/cli-platform-android": 12.1.1 - "@react-native-community/cli-platform-ios": 12.1.1 - "@react-native/assets-registry": ^0.73.1 - "@react-native/codegen": ^0.73.2 - "@react-native/community-cli-plugin": ^0.73.10 - "@react-native/gradle-plugin": ^0.73.4 - "@react-native/js-polyfills": ^0.73.1 - "@react-native/normalize-colors": ^0.73.2 - "@react-native/virtualized-lists": ^0.73.3 + "@react-native-community/cli": 12.3.0 + "@react-native-community/cli-platform-android": 12.3.0 + "@react-native-community/cli-platform-ios": 12.3.0 + "@react-native/assets-registry": 0.73.1 + "@react-native/codegen": 0.73.2 + "@react-native/community-cli-plugin": 0.73.12 + "@react-native/gradle-plugin": 0.73.4 + "@react-native/js-polyfills": 0.73.1 + "@react-native/normalize-colors": 0.73.2 + "@react-native/virtualized-lists": 0.73.4 abort-controller: ^3.0.0 anser: ^1.4.9 ansi-regex: ^5.0.0 @@ -9519,8 +9446,8 @@ __metadata: jest-environment-node: ^29.6.3 jsc-android: ^250231.0.0 memoize-one: ^5.0.0 - metro-runtime: ^0.80.0 - metro-source-map: ^0.80.0 + metro-runtime: ^0.80.3 + metro-source-map: ^0.80.3 mkdirp: ^0.5.1 nullthrows: ^1.1.1 pretty-format: ^26.5.2 @@ -9538,7 +9465,7 @@ __metadata: react: 18.2.0 bin: react-native: cli.js - checksum: d988181d09ca53379d2e67b0928bf7b012b213b6ca1bde52ecff8881bcb36f8d78a767b7e85da629c018a0e326f29d468b9cc97c9196c46aa9a878c2859081b1 + checksum: a9ebbb7879118c2f4d749d7c252606d323b1ee22567348ff833260dcbd73d5a2c3fbd80280cb770b438e5fe63478f85f18876df0410859d37ee18b6080de9ed2 languageName: node linkType: hard @@ -9923,15 +9850,6 @@ __metadata: languageName: node linkType: hard -"run-applescript@npm:^5.0.0": - version: 5.0.0 - resolution: "run-applescript@npm:5.0.0" - dependencies: - execa: ^5.0.0 - checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77 - languageName: node - linkType: hard - "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -10559,13 +10477,6 @@ __metadata: languageName: node linkType: hard -"strip-final-newline@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-final-newline@npm:3.0.0" - checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050 - languageName: node - linkType: hard - "strip-indent@npm:^4.0.0": version: 4.0.0 resolution: "strip-indent@npm:4.0.0" @@ -10630,13 +10541,13 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.8.5": - version: 0.8.6 - resolution: "synckit@npm:0.8.6" +"synckit@npm:^0.8.6": + version: 0.8.8 + resolution: "synckit@npm:0.8.8" dependencies: - "@pkgr/utils": ^2.4.2 + "@pkgr/core": ^0.1.0 tslib: ^2.6.2 - checksum: 7c1f4991d0afd63c090c0537f1cf8619dd5777a40cf83bf46beadbf4eb0f9e400d92044e90a177a305df4bcb56efbaf1b689877f301f2672d865b6eecf1be75a + checksum: 9ed5d33abb785f5f24e2531efd53b2782ca77abf7912f734d170134552b99001915531be5a50297aa45c5701b5c9041e8762e6cd7a38e41e2461c1e7fccdedf8 languageName: node linkType: hard @@ -10719,13 +10630,6 @@ __metadata: languageName: node linkType: hard -"titleize@npm:^3.0.0": - version: 3.0.0 - resolution: "titleize@npm:3.0.0" - checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28 - languageName: node - linkType: hard - "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -10777,7 +10681,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.1, tslib@npm:^2.2.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2": +"tslib@npm:^2.0.1, tslib@npm:^2.2.0, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -10886,7 +10790,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.2.2": +"typescript@npm:^5.3.3": version: 5.3.3 resolution: "typescript@npm:5.3.3" bin: @@ -10896,7 +10800,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^5.2.2#~builtin": +"typescript@patch:typescript@^5.3.3#~builtin": version: 5.3.3 resolution: "typescript@patch:typescript@npm%3A5.3.3#~builtin::version=5.3.3&hash=14eedb" bin: @@ -11002,13 +10906,6 @@ __metadata: languageName: node linkType: hard -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.0.13": version: 1.0.13 resolution: "update-browserslist-db@npm:1.0.13"