From b4fee0aff4e8af1ed2e4e32120f059c60c2eab4e Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Mon, 21 Jun 2021 22:39:10 +0900 Subject: [PATCH] half decent album list with art --- App.tsx | 9 +- .../java/com/subsonify/MainApplication.java | 1 + android/settings.gradle | 2 + ios/Podfile | 2 + package-lock.json | 1576 ++++++++++++++++- package.json | 1 + res/record-l.png | Bin 0 -> 23871 bytes res/record-m.png | Bin 0 -> 8686 bytes src/components/SplashPage.tsx | 61 + src/components/library/AlbumsTab.tsx | 111 +- src/components/library/ArtistsTab.tsx | 20 +- src/models/music.ts | 5 + src/state/albums.ts | 113 +- src/storage/db.ts | 30 +- src/storage/music.ts | 70 +- src/styles/colors.ts | 1 + src/subsonic/api.ts | 43 +- src/subsonic/params.ts | 9 + 18 files changed, 1964 insertions(+), 90 deletions(-) create mode 100644 res/record-l.png create mode 100644 res/record-m.png create mode 100644 src/components/SplashPage.tsx diff --git a/App.tsx b/App.tsx index 79653a8..8322053 100644 --- a/App.tsx +++ b/App.tsx @@ -1,13 +1,16 @@ import React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { RecoilRoot } from 'recoil'; +import SplashPage from './src/components/SplashPage'; import RootNavigator from './src/components/navigation/RootNavigator'; const App = () => ( - - - + + + + + ); diff --git a/android/app/src/main/java/com/subsonify/MainApplication.java b/android/app/src/main/java/com/subsonify/MainApplication.java index e04aeb8..281d8e1 100644 --- a/android/app/src/main/java/com/subsonify/MainApplication.java +++ b/android/app/src/main/java/com/subsonify/MainApplication.java @@ -4,6 +4,7 @@ import android.app.Application; import android.content.Context; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; +import com.rnfs.RNFSPackage; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; diff --git a/android/settings.gradle b/android/settings.gradle index d8e7082..3450a70 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,3 +1,5 @@ rootProject.name = 'SubSonify' +include ':react-native-fs' +project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/android') apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' diff --git a/ios/Podfile b/ios/Podfile index 87acaf8..6fba822 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -12,6 +12,8 @@ target 'SubSonify' do :hermes_enabled => false ) + pod 'RNFS', :path => '../node_modules/react-native-fs' + target 'SubSonifyTests' do inherit! :complete # Pods for testing diff --git a/package-lock.json b/package-lock.json index b644c8d..32bf1a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "md5": "^2.3.0", "react": "17.0.1", "react-native": "0.64.1", + "react-native-fs": "^2.18.0", "react-native-gesture-handler": "^1.10.3", "react-native-get-random-values": "^1.7.0", "react-native-linear-gradient": "^2.5.6", @@ -2959,6 +2960,155 @@ "react-native": ">=0.57" } }, + "node_modules/@react-native-windows/cli": { + "version": "0.64.4", + "resolved": "https://registry.npmjs.org/@react-native-windows/cli/-/cli-0.64.4.tgz", + "integrity": "sha512-4I5dJ/FFiU0oEEXMgAdLo61XS5zuIOKhREP7cCbsYIISV1I/Q9IHnujpAyqgqXlXlxc6OLhjTI3ZKAgmQyd6DQ==", + "peer": true, + "dependencies": { + "@react-native-windows/package-utils": "0.64.0", + "@react-native-windows/telemetry": "0.64.0", + "chalk": "^4.1.0", + "cli-spinners": "^2.2.0", + "envinfo": "^7.5.0", + "find-up": "^4.1.0", + "glob": "^7.1.1", + "inquirer": "^3.0.6", + "mustache": "^4.0.1", + "ora": "^3.4.0", + "semver": "^7.3.2", + "shelljs": "^0.8.4", + "username": "^5.1.0", + "uuid": "^3.3.2", + "xml-parser": "^1.2.1", + "xmldom": "^0.5.0", + "xpath": "^0.0.27" + } + }, + "node_modules/@react-native-windows/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-windows/cli/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-windows/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-windows/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "node_modules/@react-native-windows/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-windows/cli/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-windows/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-windows/cli/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "peer": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@react-native-windows/find-repo-root": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@react-native-windows/find-repo-root/-/find-repo-root-0.64.0.tgz", + "integrity": "sha512-qGWr5wdJrJIraQv7i2v17l3uazhYDMSeqyH96PiJ7XVuPS4dYnsxj4mIXqEneQwaS8T/xs5unAOHKMkGxlkynA==", + "peer": true, + "dependencies": { + "find-up": "^4.1.0" + } + }, + "node_modules/@react-native-windows/package-utils": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@react-native-windows/package-utils/-/package-utils-0.64.0.tgz", + "integrity": "sha512-rzfZlNlrFtt0BRH1Pis2oEHpEDSgeLoS72VnSw4lLasfRR22bckGvB40SXSK15+CjPLgyycf0i65q1prR/Ciig==", + "peer": true, + "dependencies": { + "@react-native-windows/find-repo-root": "0.64.0", + "get-monorepo-packages": "^1.2.0", + "lodash": "^4.17.15" + } + }, + "node_modules/@react-native-windows/telemetry": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@react-native-windows/telemetry/-/telemetry-0.64.0.tgz", + "integrity": "sha512-63tRE65qwahH+9iencPxDq31n/k/VVS4aG3aLDvAmBjnjIqS67ZLv7ewWrVQ0XJLBKn9Xcx38lU2xnJ9IhQN6A==", + "peer": true, + "dependencies": { + "applicationinsights": "^1.8.8" + } + }, "node_modules/@react-native/assets": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", @@ -3709,6 +3859,18 @@ "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.4.tgz", "integrity": "sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w==" }, + "node_modules/applicationinsights": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.8.10.tgz", + "integrity": "sha512-ZLDA7mShh4mP2Z/HlFolmvhBPX1LfnbIWXrselyYVA7EKjHhri1fZzpu2EiWAmfbRxNBY6fRjoPJWbx5giKy4A==", + "peer": true, + "dependencies": { + "cls-hooked": "^4.2.2", + "continuation-local-storage": "^3.2.1", + "diagnostic-channel": "0.3.1", + "diagnostic-channel-publishers": "0.4.4" + } + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -3775,6 +3937,27 @@ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "peer": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -3841,11 +4024,45 @@ "lodash": "^4.17.14" } }, + "node_modules/async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "peer": true, + "dependencies": { + "stack-chain": "^1.3.7" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3" + } + }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, + "node_modules/async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "peer": true, + "dependencies": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + }, + "engines": { + "node": "<=0.11.8 || >0.11.10" + } + }, + "node_modules/async-listener/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -4162,6 +4379,11 @@ "node": ">=0.10.0" } }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs=" + }, "node_modules/base/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", @@ -4408,6 +4630,12 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "peer": true + }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -4539,6 +4767,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "peer": true + }, "node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -4570,6 +4804,29 @@ "node": ">=6" } }, + "node_modules/cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "peer": true, + "dependencies": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" + } + }, + "node_modules/cls-hooked/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4747,6 +5004,16 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "peer": true, + "dependencies": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, "node_modules/convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -5022,6 +5289,33 @@ "node": ">=8" } }, + "node_modules/diagnostic-channel": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.3.1.tgz", + "integrity": "sha512-6eb9YRrimz8oTr5+JDzGmSYnXy5V7YnK5y/hd8AUDK1MssHjQKm9LlD6NSrHx4vMDF3+e/spI2hmWTviElgWZA==", + "peer": true, + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/diagnostic-channel-publishers": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.4.4.tgz", + "integrity": "sha512-l126t01d2ZS9EreskvEtZPrcgstuvH3rbKy82oUhUrVmBaGx4hO9wECdl3cvZbKDYjMF3QJDB5z5dL9yWAjvZQ==", + "peer": true, + "peerDependencies": { + "diagnostic-channel": "*" + } + }, + "node_modules/diagnostic-channel/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/diff-sequences": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", @@ -5031,6 +5325,18 @@ "node": ">= 10.14.2" } }, + "node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "peer": true, + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -5074,6 +5380,15 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz", "integrity": "sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==" }, + "node_modules/emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "peer": true, + "dependencies": { + "shimmer": "^1.2.0" + } + }, "node_modules/emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -6046,6 +6361,20 @@ "node": ">=0.10.0" } }, + "node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "peer": true, + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -6158,6 +6487,18 @@ "asap": "~2.0.3" } }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "peer": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -6456,6 +6797,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-monorepo-packages": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz", + "integrity": "sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ==", + "peer": true, + "dependencies": { + "globby": "^7.1.1", + "load-json-file": "^4.0.0" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -6536,6 +6887,47 @@ "node": ">=4" } }, + "node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "peer": true, + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "peer": true + }, + "node_modules/globby/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -6766,7 +7158,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -6857,6 +7248,71 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "peer": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -9256,6 +9712,39 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -9339,7 +9828,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -9370,6 +9858,18 @@ "tmpl": "1.0.x" } }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "peer": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -9399,6 +9899,20 @@ "is-buffer": "~1.1.6" } }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "peer": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -9893,7 +10407,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } @@ -9947,6 +10460,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "peer": true, + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "peer": true + }, "node_modules/nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", @@ -10468,6 +10996,15 @@ "node": ">=0.10.0" } }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -10488,6 +11025,15 @@ "node": ">=4" } }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -10597,6 +11143,27 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "peer": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -10919,6 +11486,19 @@ "nullthrows": "^1.1.1" } }, + "node_modules/react-native-fs": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.18.0.tgz", + "integrity": "sha512-9iQhkUNnN2JNED0in06JwZy88YEVyIGKWz4KLlQYxa5Y2U0U2AZh9FUHtA04oWj+xt2LlHh0LFPCzhmNsAsUDg==", + "dependencies": { + "base-64": "^0.1.0", + "utf8": "^3.0.0" + }, + "peerDependencies": { + "react-native": "*", + "react-native-windows": "*" + } + }, "node_modules/react-native-gesture-handler": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.10.3.tgz", @@ -11014,6 +11594,52 @@ "react-native-reanimated": "*" } }, + "node_modules/react-native-windows": { + "version": "0.64.11", + "resolved": "https://registry.npmjs.org/react-native-windows/-/react-native-windows-0.64.11.tgz", + "integrity": "sha512-zlR5YOULsHOFIjUTFncToRkNSpNdM2M8xz3SSIb3vKMnz+V4WxyEzc92SY+AgeWuOcbKqpiSHjkSkmUb/Hzh1w==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "@jest/create-cache-key-function": "^26.5.0", + "@react-native-community/cli": "^5.0.1-alpha.0", + "@react-native-community/cli-platform-android": "^5.0.1-alpha.0", + "@react-native-community/cli-platform-ios": "^5.0.1-alpha.0", + "@react-native-windows/cli": "0.64.4", + "@react-native/assets": "1.0.0", + "@react-native/normalize-color": "1.0.0", + "@react-native/polyfills": "1.0.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "base64-js": "^1.1.2", + "event-target-shim": "^5.0.1", + "hermes-engine": "~0.7.0", + "invariant": "^2.2.4", + "jsc-android": "^245459.0.0", + "metro-babel-register": "0.64.0", + "metro-react-native-babel-transformer": "0.64.0", + "metro-runtime": "0.64.0", + "metro-source-map": "0.64.0", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.0.3", + "prop-types": "^15.7.2", + "react-devtools-core": "^4.6.0", + "react-native-codegen": "^0.0.6", + "react-refresh": "^0.4.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "^0.20.1", + "shelljs": "^0.8.4", + "stacktrace-parser": "^0.1.3", + "use-subscription": "^1.0.0", + "whatwg-fetch": "^3.0.0", + "ws": "^7.4.6" + }, + "peerDependencies": { + "react": "17.0.1", + "react-native": "^0.64.0" + } + }, "node_modules/react-native/node_modules/ws": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", @@ -11445,6 +12071,30 @@ "node": "6.* || >= 7.*" } }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "peer": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "peer": true + }, + "node_modules/rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "peer": true, + "dependencies": { + "rx-lite": "*" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -11461,8 +12111,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sane": { "version": "4.1.0", @@ -11957,6 +12606,12 @@ "dev": true, "optional": true }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "peer": true + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -12295,6 +12950,12 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "node_modules/stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=", + "peer": true + }, "node_modules/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", @@ -12817,6 +13478,12 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "peer": true + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -12826,6 +13493,18 @@ "xtend": "~4.0.1" } }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "peer": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -13220,6 +13899,142 @@ "react": "^16.8.0 || ^17.0.0" } }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "peer": true, + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/username/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "peer": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/username/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/username/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/username/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/username/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/username/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/username/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/username/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -13530,6 +14345,30 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "node_modules/xml-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/xml-parser/-/xml-parser-1.2.1.tgz", + "integrity": "sha1-wx9MNPKXXbgq0BMiISBZJzYVb80=", + "peer": true, + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/xml-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/xml-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "peer": true + }, "node_modules/xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", @@ -13560,6 +14399,15 @@ "node": ">=10.0.0" } }, + "node_modules/xpath": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz", + "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==", + "peer": true, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -13576,8 +14424,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "15.4.1", @@ -15920,6 +16767,126 @@ "integrity": "sha512-rQfMIGSR/1r/SyN87+VD8xHHzDYeHaJq6elOSCAD+0iLagXkSI2pfA0LmSXP21uw5i3em7GkkRjfJ8wpqWXZNw==", "requires": {} }, + "@react-native-windows/cli": { + "version": "0.64.4", + "resolved": "https://registry.npmjs.org/@react-native-windows/cli/-/cli-0.64.4.tgz", + "integrity": "sha512-4I5dJ/FFiU0oEEXMgAdLo61XS5zuIOKhREP7cCbsYIISV1I/Q9IHnujpAyqgqXlXlxc6OLhjTI3ZKAgmQyd6DQ==", + "peer": true, + "requires": { + "@react-native-windows/package-utils": "0.64.0", + "@react-native-windows/telemetry": "0.64.0", + "chalk": "^4.1.0", + "cli-spinners": "^2.2.0", + "envinfo": "^7.5.0", + "find-up": "^4.1.0", + "glob": "^7.1.1", + "inquirer": "^3.0.6", + "mustache": "^4.0.1", + "ora": "^3.4.0", + "semver": "^7.3.2", + "shelljs": "^0.8.4", + "username": "^5.1.0", + "uuid": "^3.3.2", + "xml-parser": "^1.2.1", + "xmldom": "^0.5.0", + "xpath": "^0.0.27" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "peer": true + } + } + }, + "@react-native-windows/find-repo-root": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@react-native-windows/find-repo-root/-/find-repo-root-0.64.0.tgz", + "integrity": "sha512-qGWr5wdJrJIraQv7i2v17l3uazhYDMSeqyH96PiJ7XVuPS4dYnsxj4mIXqEneQwaS8T/xs5unAOHKMkGxlkynA==", + "peer": true, + "requires": { + "find-up": "^4.1.0" + } + }, + "@react-native-windows/package-utils": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@react-native-windows/package-utils/-/package-utils-0.64.0.tgz", + "integrity": "sha512-rzfZlNlrFtt0BRH1Pis2oEHpEDSgeLoS72VnSw4lLasfRR22bckGvB40SXSK15+CjPLgyycf0i65q1prR/Ciig==", + "peer": true, + "requires": { + "@react-native-windows/find-repo-root": "0.64.0", + "get-monorepo-packages": "^1.2.0", + "lodash": "^4.17.15" + } + }, + "@react-native-windows/telemetry": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@react-native-windows/telemetry/-/telemetry-0.64.0.tgz", + "integrity": "sha512-63tRE65qwahH+9iencPxDq31n/k/VVS4aG3aLDvAmBjnjIqS67ZLv7ewWrVQ0XJLBKn9Xcx38lU2xnJ9IhQN6A==", + "peer": true, + "requires": { + "applicationinsights": "^1.8.8" + } + }, "@react-native/assets": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", @@ -16509,6 +17476,18 @@ "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.4.tgz", "integrity": "sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w==" }, + "applicationinsights": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.8.10.tgz", + "integrity": "sha512-ZLDA7mShh4mP2Z/HlFolmvhBPX1LfnbIWXrselyYVA7EKjHhri1fZzpu2EiWAmfbRxNBY6fRjoPJWbx5giKy4A==", + "peer": true, + "requires": { + "cls-hooked": "^4.2.2", + "continuation-local-storage": "^3.2.1", + "diagnostic-channel": "0.3.1", + "diagnostic-channel-publishers": "0.4.4" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -16560,6 +17539,21 @@ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "peer": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "peer": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -16608,11 +17602,38 @@ "lodash": "^4.17.14" } }, + "async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "peer": true, + "requires": { + "stack-chain": "^1.3.7" + } + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, + "async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "peer": true, + "requires": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true + } + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -16869,6 +17890,11 @@ } } }, + "base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs=" + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -17036,6 +18062,12 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "peer": true + }, "charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -17137,6 +18169,12 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==" }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "peer": true + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -17162,6 +18200,25 @@ "shallow-clone": "^3.0.0" } }, + "cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "peer": true, + "requires": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true + } + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -17321,6 +18378,16 @@ } } }, + "continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "peer": true, + "requires": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -17539,12 +18606,45 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "diagnostic-channel": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.3.1.tgz", + "integrity": "sha512-6eb9YRrimz8oTr5+JDzGmSYnXy5V7YnK5y/hd8AUDK1MssHjQKm9LlD6NSrHx4vMDF3+e/spI2hmWTviElgWZA==", + "peer": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true + } + } + }, + "diagnostic-channel-publishers": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.4.4.tgz", + "integrity": "sha512-l126t01d2ZS9EreskvEtZPrcgstuvH3rbKy82oUhUrVmBaGx4hO9wECdl3cvZbKDYjMF3QJDB5z5dL9yWAjvZQ==", + "peer": true, + "requires": {} + }, "diff-sequences": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "peer": true, + "requires": { + "path-type": "^3.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -17581,6 +18681,15 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz", "integrity": "sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==" }, + "emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "peer": true, + "requires": { + "shimmer": "^1.2.0" + } + }, "emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -18294,6 +19403,17 @@ "is-extendable": "^1.0.1" } }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "peer": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -18398,6 +19518,15 @@ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "peer": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -18624,6 +19753,16 @@ "has-symbols": "^1.0.1" } }, + "get-monorepo-packages": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz", + "integrity": "sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ==", + "peer": true, + "requires": { + "globby": "^7.1.1", + "load-json-file": "^4.0.0" + } + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -18677,6 +19816,40 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "peer": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "peer": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "peer": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "peer": true + } + } + }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -18864,7 +20037,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -18927,6 +20099,61 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "peer": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "peer": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "peer": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "peer": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "peer": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -20719,6 +21946,32 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "peer": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "peer": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "peer": true + } + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -20790,7 +22043,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -20812,6 +22064,15 @@ "tmpl": "1.0.x" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "peer": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -20835,6 +22096,17 @@ "is-buffer": "~1.1.6" } }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "peer": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -21274,8 +22546,7 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "minimatch": { "version": "3.0.4", @@ -21317,6 +22588,18 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "peer": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "peer": true + }, "nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", @@ -21711,6 +22994,12 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "peer": true + }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -21722,6 +23011,12 @@ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "peer": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -21798,6 +23093,23 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "peer": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "peer": true + } + } + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -22059,6 +23371,15 @@ "nullthrows": "^1.1.1" } }, + "react-native-fs": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.18.0.tgz", + "integrity": "sha512-9iQhkUNnN2JNED0in06JwZy88YEVyIGKWz4KLlQYxa5Y2U0U2AZh9FUHtA04oWj+xt2LlHh0LFPCzhmNsAsUDg==", + "requires": { + "base-64": "^0.1.0", + "utf8": "^3.0.0" + } + }, "react-native-gesture-handler": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.10.3.tgz", @@ -22128,6 +23449,48 @@ "integrity": "sha512-ac2DmT7+l13wzIFqtbfXn4wwfgtPoKzWjjZyrK1t+T8sdemuUvD4zIt+UImg03fu3s3VD8Wh/fBrIdcqQyZJWg==", "requires": {} }, + "react-native-windows": { + "version": "0.64.11", + "resolved": "https://registry.npmjs.org/react-native-windows/-/react-native-windows-0.64.11.tgz", + "integrity": "sha512-zlR5YOULsHOFIjUTFncToRkNSpNdM2M8xz3SSIb3vKMnz+V4WxyEzc92SY+AgeWuOcbKqpiSHjkSkmUb/Hzh1w==", + "peer": true, + "requires": { + "@babel/runtime": "^7.0.0", + "@jest/create-cache-key-function": "^26.5.0", + "@react-native-community/cli": "^5.0.1-alpha.0", + "@react-native-community/cli-platform-android": "^5.0.1-alpha.0", + "@react-native-community/cli-platform-ios": "^5.0.1-alpha.0", + "@react-native-windows/cli": "0.64.4", + "@react-native/assets": "1.0.0", + "@react-native/normalize-color": "1.0.0", + "@react-native/polyfills": "1.0.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "base64-js": "^1.1.2", + "event-target-shim": "^5.0.1", + "hermes-engine": "~0.7.0", + "invariant": "^2.2.4", + "jsc-android": "^245459.0.0", + "metro-babel-register": "0.64.0", + "metro-react-native-babel-transformer": "0.64.0", + "metro-runtime": "0.64.0", + "metro-source-map": "0.64.0", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.0.3", + "prop-types": "^15.7.2", + "react-devtools-core": "^4.6.0", + "react-native-codegen": "^0.0.6", + "react-refresh": "^0.4.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "^0.20.1", + "shelljs": "^0.8.4", + "stacktrace-parser": "^0.1.3", + "use-subscription": "^1.0.0", + "whatwg-fetch": "^3.0.0", + "ws": "^7.4.6" + } + }, "react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", @@ -22441,6 +23804,27 @@ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "peer": true + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "peer": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "peer": true, + "requires": { + "rx-lite": "*" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -22457,8 +23841,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { "version": "4.1.0", @@ -22856,6 +24239,12 @@ "dev": true, "optional": true }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "peer": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -23145,6 +24534,12 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=", + "peer": true + }, "stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", @@ -23549,6 +24944,12 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "peer": true + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -23558,6 +24959,15 @@ "xtend": "~4.0.1" } }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "peer": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -23846,6 +25256,111 @@ "object-assign": "^4.1.1" } }, + "username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "peer": true, + "requires": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "peer": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "peer": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -24093,6 +25608,32 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xml-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/xml-parser/-/xml-parser-1.2.1.tgz", + "integrity": "sha1-wx9MNPKXXbgq0BMiISBZJzYVb80=", + "peer": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "peer": true + } + } + }, "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", @@ -24117,6 +25658,12 @@ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==" }, + "xpath": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz", + "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==", + "peer": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -24130,8 +25677,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "15.4.1", diff --git a/package.json b/package.json index 369ece4..507cccb 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "md5": "^2.3.0", "react": "17.0.1", "react-native": "0.64.1", + "react-native-fs": "^2.18.0", "react-native-gesture-handler": "^1.10.3", "react-native-get-random-values": "^1.7.0", "react-native-linear-gradient": "^2.5.6", diff --git a/res/record-l.png b/res/record-l.png new file mode 100644 index 0000000000000000000000000000000000000000..5e85c1303c904cc35e7f075bec9d621f005cf923 GIT binary patch literal 23871 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

#@v|M5N~qXb&2&0L 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

    !S=e_jXGp~r> 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 { + const exists = await RNFS.exists(path); + if (exists) { + const isDir = (await RNFS.stat(path)).isDirectory(); + if (!isDir) { + throw new Error(`path exists and is not a directory: ${path}`); + } else { + return; + } + } + + return await RNFS.mkdir(path); +} + +const SplashPage: React.FC<{}> = ({ children }) => { + const [ready, setReady] = useState(false); + + const minSplashTime = new Promise(resolve => setTimeout(resolve, 1)); + + const prepare = async () => { + const filesPath = RNFS.DocumentDirectoryPath; + + await mkdir(`${filesPath}/image_cache`); + await mkdir(`${filesPath}/song_cache`); + await mkdir(`${filesPath}/songs`); + + await musicDb.openDb(); + await settingsDb.openDb(); + + if (!(await musicDb.dbExists())) { + await musicDb.createDb(); + } + if (!(await settingsDb.dbExists())) { + await settingsDb.createDb(); + } + } + + const promise = Promise.all([ + prepare(), minSplashTime, + ]); + + useEffect(() => { + promise.then(() => { + setReady(true); + }); + }) + + if (!ready) { + return Loading THE GOOD SHIT... + } + return ( + {children} + ); +} + +export default SplashPage; diff --git a/src/components/library/AlbumsTab.tsx b/src/components/library/AlbumsTab.tsx index 8d93194..fa23645 100644 --- a/src/components/library/AlbumsTab.tsx +++ b/src/components/library/AlbumsTab.tsx @@ -1,8 +1,117 @@ -import React from 'react'; +import React, { memo, useEffect, useState } from 'react'; +import { View, Image, Text, FlatList, Button, ListRenderItem } from 'react-native'; +import { useRecoilState, useRecoilValue } from 'recoil'; +import { Album } from '../../models/music'; +import { albumsState, albumState, useUpdateAlbums, albumIdsState, useCoverArtUri } from '../../state/albums'; import TopTabContainer from '../common/TopTabContainer'; +import textStyles from '../../styles/text'; +import { ScrollView } from 'react-native-gesture-handler'; +import colors from '../../styles/colors'; +import LinearGradient from 'react-native-linear-gradient'; + +const AlbumArt: React.FC<{ height: number, width: number, id?: string }> = ({ height, width, id }) => { + const coverArtSource = useCoverArtUri(id); + + return ( + + + + ) +} + +const AlbumItem: React.FC<{ id: string } > = ({ id }) => { + const album = useRecoilValue(albumState(id)); + + // useEffect(() => { + // console.log(album.name); + // }); + + return ( + + + {album.name} + + ); +} + +const MemoAlbumItem = memo(AlbumItem, (prev, next) => { + // console.log('prev: ' + JSON.stringify(prev) + ' next: ' + JSON.stringify(next)) + return prev.id == next.id; +}); + +const AlbumsList = () => { + const albumIds = useRecoilValue(albumIdsState); + const updateAlbums = useUpdateAlbums(); + + const [refreshing, setRefreshing] = useState(false); + + const renderItem: React.FC<{ item: string }> = ({ item }) => ( + + ); + + const refresh = async () => { + setRefreshing(true); + await updateAlbums(); + setRefreshing(false); + } + + useEffect(() => { + if (!refreshing && albumIds.length === 0) { + refresh(); + } + }) + + return ( + + {/*