@react-native-firebase/app 23.7.0 → 23.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/android/src/main/java/io/invertase/firebase/common/UniversalFirebaseModule.java +2 -2
- package/android/src/reactnative/java/io/invertase/firebase/app/ReactNativeFirebaseVersion.java +1 -1
- package/dist/commonjs/FirebaseApp.js +85 -0
- package/dist/commonjs/FirebaseApp.js.map +1 -0
- package/dist/commonjs/common/Base64.js +106 -0
- package/dist/commonjs/common/Base64.js.map +1 -0
- package/dist/commonjs/common/MutatableParams.js +50 -0
- package/dist/commonjs/common/MutatableParams.js.map +1 -0
- package/dist/commonjs/common/ReferenceBase.js +49 -0
- package/dist/commonjs/common/ReferenceBase.js.map +1 -0
- package/dist/commonjs/common/deeps.js +82 -0
- package/dist/commonjs/common/deeps.js.map +1 -0
- package/dist/commonjs/common/id.js +88 -0
- package/dist/commonjs/common/id.js.map +1 -0
- package/dist/commonjs/common/index.js +799 -0
- package/dist/commonjs/common/index.js.map +1 -0
- package/dist/commonjs/common/path.js +133 -0
- package/dist/commonjs/common/path.js.map +1 -0
- package/dist/commonjs/common/promise.js +65 -0
- package/dist/commonjs/common/promise.js.map +1 -0
- package/dist/commonjs/common/serialize.js +48 -0
- package/dist/commonjs/common/serialize.js.map +1 -0
- package/dist/commonjs/common/unitTestUtils.js +54 -0
- package/dist/commonjs/common/unitTestUtils.js.map +1 -0
- package/dist/commonjs/common/validate.js +236 -0
- package/dist/commonjs/common/validate.js.map +1 -0
- package/dist/commonjs/index.js +42 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/internal/FirebaseModule.js +63 -0
- package/dist/commonjs/internal/FirebaseModule.js.map +1 -0
- package/dist/commonjs/internal/NativeFirebaseError.js +92 -0
- package/dist/commonjs/internal/NativeFirebaseError.js.map +1 -0
- package/dist/commonjs/internal/NativeModules.js +6 -0
- package/dist/commonjs/internal/NativeModules.js.map +1 -0
- package/dist/commonjs/internal/RNFBNativeEventEmitter.js +118 -0
- package/dist/commonjs/internal/RNFBNativeEventEmitter.js.map +1 -0
- package/dist/commonjs/internal/SharedEventEmitter.js +26 -0
- package/dist/commonjs/internal/SharedEventEmitter.js.map +1 -0
- package/dist/commonjs/internal/asyncStorage.js +83 -0
- package/dist/commonjs/internal/asyncStorage.js.map +1 -0
- package/dist/commonjs/internal/constants.js +27 -0
- package/dist/commonjs/internal/constants.js.map +1 -0
- package/dist/commonjs/internal/index.js +109 -0
- package/dist/commonjs/internal/index.js.map +1 -0
- package/dist/commonjs/internal/logger.js +256 -0
- package/dist/commonjs/internal/logger.js.map +1 -0
- package/dist/commonjs/internal/nativeModule.android.js +19 -0
- package/dist/commonjs/internal/nativeModule.android.js.map +1 -0
- package/dist/commonjs/internal/nativeModule.ios.js +19 -0
- package/dist/commonjs/internal/nativeModule.ios.js.map +1 -0
- package/dist/commonjs/internal/nativeModule.js +19 -0
- package/dist/commonjs/internal/nativeModule.js.map +1 -0
- package/dist/commonjs/internal/nativeModuleAndroidIos.js +51 -0
- package/dist/commonjs/internal/nativeModuleAndroidIos.js.map +1 -0
- package/dist/commonjs/internal/nativeModuleWeb.js +52 -0
- package/dist/commonjs/internal/nativeModuleWeb.js.map +1 -0
- package/dist/commonjs/internal/nullSerialization.js +162 -0
- package/dist/commonjs/internal/nullSerialization.js.map +1 -0
- package/dist/commonjs/internal/registry/app.js +238 -0
- package/dist/commonjs/internal/registry/app.js.map +1 -0
- package/dist/commonjs/internal/registry/namespace.js +269 -0
- package/dist/commonjs/internal/registry/namespace.js.map +1 -0
- package/dist/commonjs/internal/registry/nativeModule.js +224 -0
- package/dist/commonjs/internal/registry/nativeModule.js.map +1 -0
- package/dist/commonjs/internal/web/RNFBAppModule.js +273 -0
- package/dist/commonjs/internal/web/RNFBAppModule.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseApp.js +17 -0
- package/dist/commonjs/internal/web/firebaseApp.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseAppCheck.js +36 -0
- package/dist/commonjs/internal/web/firebaseAppCheck.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseAuth.js +28 -0
- package/dist/commonjs/internal/web/firebaseAuth.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseDatabase.js +28 -0
- package/dist/commonjs/internal/web/firebaseDatabase.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseFirestore.js +28 -0
- package/dist/commonjs/internal/web/firebaseFirestore.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseFunctions.js +28 -0
- package/dist/commonjs/internal/web/firebaseFunctions.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseInstallations.js +36 -0
- package/dist/commonjs/internal/web/firebaseInstallations.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseRemoteConfig.js +36 -0
- package/dist/commonjs/internal/web/firebaseRemoteConfig.js.map +1 -0
- package/dist/commonjs/internal/web/firebaseStorage.js +28 -0
- package/dist/commonjs/internal/web/firebaseStorage.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBCursor.js +479 -0
- package/dist/commonjs/internal/web/memidb/FDBCursor.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBCursorWithValue.js +19 -0
- package/dist/commonjs/internal/web/memidb/FDBCursorWithValue.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBDatabase.js +163 -0
- package/dist/commonjs/internal/web/memidb/FDBDatabase.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBFactory.js +264 -0
- package/dist/commonjs/internal/web/memidb/FDBFactory.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBIndex.js +191 -0
- package/dist/commonjs/internal/web/memidb/FDBIndex.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBKeyRange.js +78 -0
- package/dist/commonjs/internal/web/memidb/FDBKeyRange.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBObjectStore.js +383 -0
- package/dist/commonjs/internal/web/memidb/FDBObjectStore.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBOpenDBRequest.js +17 -0
- package/dist/commonjs/internal/web/memidb/FDBOpenDBRequest.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBRequest.js +41 -0
- package/dist/commonjs/internal/web/memidb/FDBRequest.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBTransaction.js +221 -0
- package/dist/commonjs/internal/web/memidb/FDBTransaction.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/FDBVersionChangeEvent.js +20 -0
- package/dist/commonjs/internal/web/memidb/FDBVersionChangeEvent.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/LICENSE +208 -0
- package/dist/commonjs/internal/web/memidb/index.js +45 -0
- package/dist/commonjs/internal/web/memidb/index.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/Database.js +38 -0
- package/dist/commonjs/internal/web/memidb/lib/Database.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/FakeDOMStringList.js +78 -0
- package/dist/commonjs/internal/web/memidb/lib/FakeDOMStringList.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/FakeEvent.js +45 -0
- package/dist/commonjs/internal/web/memidb/lib/FakeEvent.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/FakeEventTarget.js +111 -0
- package/dist/commonjs/internal/web/memidb/lib/FakeEventTarget.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/Index.js +164 -0
- package/dist/commonjs/internal/web/memidb/lib/Index.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/KeyGenerator.js +29 -0
- package/dist/commonjs/internal/web/memidb/lib/KeyGenerator.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/ObjectStore.js +180 -0
- package/dist/commonjs/internal/web/memidb/lib/ObjectStore.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/RecordStore.js +141 -0
- package/dist/commonjs/internal/web/memidb/lib/RecordStore.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/binarySearch.js +86 -0
- package/dist/commonjs/internal/web/memidb/lib/binarySearch.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/canInjectKey.js +30 -0
- package/dist/commonjs/internal/web/memidb/lib/canInjectKey.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/cmp.js +85 -0
- package/dist/commonjs/internal/web/memidb/lib/cmp.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/enforceRange.js +20 -0
- package/dist/commonjs/internal/web/memidb/lib/enforceRange.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/errors.js +95 -0
- package/dist/commonjs/internal/web/memidb/lib/errors.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/extractKey.js +46 -0
- package/dist/commonjs/internal/web/memidb/lib/extractKey.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/scheduling.js +37 -0
- package/dist/commonjs/internal/web/memidb/lib/scheduling.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/types.js +6 -0
- package/dist/commonjs/internal/web/memidb/lib/types.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/validateKeyPath.js +51 -0
- package/dist/commonjs/internal/web/memidb/lib/validateKeyPath.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/valueToKey.js +62 -0
- package/dist/commonjs/internal/web/memidb/lib/valueToKey.js.map +1 -0
- package/dist/commonjs/internal/web/memidb/lib/valueToKeyRange.js +26 -0
- package/dist/commonjs/internal/web/memidb/lib/valueToKeyRange.js.map +1 -0
- package/dist/commonjs/internal/web/structuredClone/index.js +239 -0
- package/dist/commonjs/internal/web/structuredClone/index.js.map +1 -0
- package/dist/commonjs/internal/web/utils.js +59 -0
- package/dist/commonjs/internal/web/utils.js.map +1 -0
- package/dist/commonjs/modular.js +190 -0
- package/dist/commonjs/modular.js.map +1 -0
- package/dist/commonjs/namespaced.js +35 -0
- package/dist/commonjs/namespaced.js.map +1 -0
- package/dist/commonjs/package.json +1 -0
- package/dist/commonjs/types/app.js +139 -0
- package/dist/commonjs/types/app.js.map +1 -0
- package/dist/commonjs/types/internal.js +6 -0
- package/dist/commonjs/types/internal.js.map +1 -0
- package/dist/commonjs/utils/UtilsStatics.js +59 -0
- package/dist/commonjs/utils/UtilsStatics.js.map +1 -0
- package/dist/commonjs/utils/index.js +94 -0
- package/dist/commonjs/utils/index.js.map +1 -0
- package/dist/commonjs/version.js +9 -0
- package/dist/commonjs/version.js.map +1 -0
- package/{lib → dist/module}/FirebaseApp.js +14 -14
- package/dist/module/FirebaseApp.js.map +1 -0
- package/dist/module/common/Base64.js +100 -0
- package/dist/module/common/Base64.js.map +1 -0
- package/{lib → dist/module}/common/MutatableParams.js +4 -6
- package/dist/module/common/MutatableParams.js.map +1 -0
- package/{lib → dist/module}/common/ReferenceBase.js +3 -2
- package/dist/module/common/ReferenceBase.js.map +1 -0
- package/{lib → dist/module}/common/deeps.js +5 -9
- package/dist/module/common/deeps.js.map +1 -0
- package/{lib → dist/module}/common/id.js +20 -11
- package/dist/module/common/id.js.map +1 -0
- package/dist/module/common/index.js +701 -0
- package/dist/module/common/index.js.map +1 -0
- package/{lib → dist/module}/common/path.js +4 -8
- package/dist/module/common/path.js.map +1 -0
- package/{lib → dist/module}/common/promise.js +21 -23
- package/dist/module/common/promise.js.map +1 -0
- package/dist/module/common/serialize.js +43 -0
- package/dist/module/common/serialize.js.map +1 -0
- package/dist/module/common/unitTestUtils.js +48 -0
- package/dist/module/common/unitTestUtils.js.map +1 -0
- package/{lib → dist/module}/common/validate.js +20 -16
- package/dist/module/common/validate.js.map +1 -0
- package/dist/module/index.js +22 -0
- package/dist/module/index.js.map +1 -0
- package/{lib → dist/module}/internal/FirebaseModule.js +6 -11
- package/dist/module/internal/FirebaseModule.js.map +1 -0
- package/{lib → dist/module}/internal/NativeFirebaseError.js +19 -24
- package/dist/module/internal/NativeFirebaseError.js.map +1 -0
- package/dist/module/internal/NativeModules.js +4 -0
- package/dist/module/internal/NativeModules.js.map +1 -0
- package/{lib → dist/module}/internal/RNFBNativeEventEmitter.js +30 -21
- package/dist/module/internal/RNFBNativeEventEmitter.js.map +1 -0
- package/dist/module/internal/SharedEventEmitter.js +22 -0
- package/dist/module/internal/SharedEventEmitter.js.map +1 -0
- package/dist/module/internal/asyncStorage.js +73 -0
- package/dist/module/internal/asyncStorage.js.map +1 -0
- package/dist/module/internal/constants.js +23 -0
- package/dist/module/internal/constants.js.map +1 -0
- package/dist/module/internal/index.js +30 -0
- package/dist/module/internal/index.js.map +1 -0
- package/{lib → dist/module}/internal/logger.js +65 -55
- package/dist/module/internal/logger.js.map +1 -0
- package/dist/module/internal/nativeModule.android.js +5 -0
- package/dist/module/internal/nativeModule.android.js.map +1 -0
- package/dist/module/internal/nativeModule.ios.js +5 -0
- package/dist/module/internal/nativeModule.ios.js.map +1 -0
- package/dist/module/internal/nativeModule.js +7 -0
- package/dist/module/internal/nativeModule.js.map +1 -0
- package/dist/module/internal/nativeModuleAndroidIos.js +46 -0
- package/dist/module/internal/nativeModuleAndroidIos.js.map +1 -0
- package/dist/module/internal/nativeModuleWeb.js +45 -0
- package/dist/module/internal/nativeModuleWeb.js.map +1 -0
- package/dist/module/internal/nullSerialization.js +158 -0
- package/dist/module/internal/nullSerialization.js.map +1 -0
- package/{lib → dist/module}/internal/registry/app.js +41 -79
- package/dist/module/internal/registry/app.js.map +1 -0
- package/dist/module/internal/registry/namespace.js +262 -0
- package/dist/module/internal/registry/namespace.js.map +1 -0
- package/{lib → dist/module}/internal/registry/nativeModule.js +46 -62
- package/dist/module/internal/registry/nativeModule.js.map +1 -0
- package/{lib → dist/module}/internal/web/RNFBAppModule.js +76 -67
- package/dist/module/internal/web/RNFBAppModule.js.map +1 -0
- package/dist/module/internal/web/firebaseApp.js +23 -0
- package/dist/module/internal/web/firebaseApp.js.map +1 -0
- package/dist/module/internal/web/firebaseAppCheck.js +26 -0
- package/dist/module/internal/web/firebaseAppCheck.js.map +1 -0
- package/dist/module/internal/web/firebaseAuth.js +24 -0
- package/dist/module/internal/web/firebaseAuth.js.map +1 -0
- package/dist/module/internal/web/firebaseDatabase.js +24 -0
- package/dist/module/internal/web/firebaseDatabase.js.map +1 -0
- package/dist/module/internal/web/firebaseFirestore.js +24 -0
- package/dist/module/internal/web/firebaseFirestore.js.map +1 -0
- package/dist/module/internal/web/firebaseFunctions.js +24 -0
- package/dist/module/internal/web/firebaseFunctions.js.map +1 -0
- package/dist/module/internal/web/firebaseInstallations.js +26 -0
- package/dist/module/internal/web/firebaseInstallations.js.map +1 -0
- package/dist/module/internal/web/firebaseRemoteConfig.js +26 -0
- package/dist/module/internal/web/firebaseRemoteConfig.js.map +1 -0
- package/dist/module/internal/web/firebaseStorage.js +24 -0
- package/dist/module/internal/web/firebaseStorage.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBCursor.js +474 -0
- package/dist/module/internal/web/memidb/FDBCursor.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBCursorWithValue.js +14 -0
- package/dist/module/internal/web/memidb/FDBCursorWithValue.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBDatabase.js +158 -0
- package/dist/module/internal/web/memidb/FDBDatabase.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBFactory.js +259 -0
- package/dist/module/internal/web/memidb/FDBFactory.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBIndex.js +186 -0
- package/dist/module/internal/web/memidb/FDBIndex.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBKeyRange.js +74 -0
- package/dist/module/internal/web/memidb/FDBKeyRange.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBObjectStore.js +378 -0
- package/dist/module/internal/web/memidb/FDBObjectStore.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBOpenDBRequest.js +12 -0
- package/dist/module/internal/web/memidb/FDBOpenDBRequest.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBRequest.js +36 -0
- package/dist/module/internal/web/memidb/FDBRequest.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBTransaction.js +216 -0
- package/dist/module/internal/web/memidb/FDBTransaction.js.map +1 -0
- package/dist/module/internal/web/memidb/FDBVersionChangeEvent.js +15 -0
- package/dist/module/internal/web/memidb/FDBVersionChangeEvent.js.map +1 -0
- package/dist/module/internal/web/memidb/LICENSE +208 -0
- package/dist/module/internal/web/memidb/index.js +41 -0
- package/dist/module/internal/web/memidb/index.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/Database.js +35 -0
- package/dist/module/internal/web/memidb/lib/Database.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/FakeDOMStringList.js +75 -0
- package/dist/module/internal/web/memidb/lib/FakeDOMStringList.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/FakeEvent.js +41 -0
- package/dist/module/internal/web/memidb/lib/FakeEvent.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/FakeEventTarget.js +107 -0
- package/dist/module/internal/web/memidb/lib/FakeEventTarget.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/Index.js +160 -0
- package/dist/module/internal/web/memidb/lib/Index.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/KeyGenerator.js +25 -0
- package/dist/module/internal/web/memidb/lib/KeyGenerator.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/ObjectStore.js +175 -0
- package/dist/module/internal/web/memidb/lib/ObjectStore.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/RecordStore.js +136 -0
- package/dist/module/internal/web/memidb/lib/RecordStore.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/binarySearch.js +77 -0
- package/dist/module/internal/web/memidb/lib/binarySearch.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/canInjectKey.js +26 -0
- package/dist/module/internal/web/memidb/lib/canInjectKey.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/cmp.js +80 -0
- package/dist/module/internal/web/memidb/lib/cmp.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/enforceRange.js +16 -0
- package/dist/module/internal/web/memidb/lib/enforceRange.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/errors.js +81 -0
- package/dist/module/internal/web/memidb/lib/errors.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/extractKey.js +42 -0
- package/dist/module/internal/web/memidb/lib/extractKey.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/scheduling.js +32 -0
- package/dist/module/internal/web/memidb/lib/scheduling.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/types.js +4 -0
- package/dist/module/internal/web/memidb/lib/types.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/validateKeyPath.js +47 -0
- package/dist/module/internal/web/memidb/lib/validateKeyPath.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/valueToKey.js +58 -0
- package/dist/module/internal/web/memidb/lib/valueToKey.js.map +1 -0
- package/dist/module/internal/web/memidb/lib/valueToKeyRange.js +22 -0
- package/dist/module/internal/web/memidb/lib/valueToKeyRange.js.map +1 -0
- package/dist/module/internal/web/structuredClone/index.js +235 -0
- package/dist/module/internal/web/structuredClone/index.js.map +1 -0
- package/{lib → dist/module}/internal/web/utils.js +24 -5
- package/dist/module/internal/web/utils.js.map +1 -0
- package/dist/module/modular.js +172 -0
- package/dist/module/modular.js.map +1 -0
- package/dist/module/namespaced.js +25 -0
- package/dist/module/namespaced.js.map +1 -0
- package/dist/module/package.json +1 -0
- package/dist/module/types/app.js +135 -0
- package/dist/module/types/app.js.map +1 -0
- package/dist/module/types/internal.js +4 -0
- package/dist/module/types/internal.js.map +1 -0
- package/dist/module/utils/UtilsStatics.js +55 -0
- package/dist/module/utils/UtilsStatics.js.map +1 -0
- package/{lib → dist/module}/utils/index.js +13 -15
- package/dist/module/utils/index.js.map +1 -0
- package/dist/module/version.js +5 -0
- package/dist/module/version.js.map +1 -0
- package/dist/typescript/commonjs/lib/FirebaseApp.d.ts +21 -0
- package/dist/typescript/commonjs/lib/FirebaseApp.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/Base64.d.ts +23 -0
- package/dist/typescript/commonjs/lib/common/Base64.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/MutatableParams.d.ts +10 -0
- package/dist/typescript/commonjs/lib/common/MutatableParams.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/ReferenceBase.d.ts +12 -0
- package/dist/typescript/commonjs/lib/common/ReferenceBase.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/deeps.d.ts +19 -0
- package/dist/typescript/commonjs/lib/common/deeps.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/id.d.ts +12 -0
- package/dist/typescript/commonjs/lib/common/id.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/index.d.ts +33 -0
- package/dist/typescript/commonjs/lib/common/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/path.d.ts +51 -0
- package/dist/typescript/commonjs/lib/common/path.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/promise.d.ts +12 -0
- package/dist/typescript/commonjs/lib/common/promise.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/serialize.d.ts +4 -0
- package/dist/typescript/commonjs/lib/common/serialize.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/unitTestUtils.d.ts +4 -0
- package/dist/typescript/commonjs/lib/common/unitTestUtils.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/common/validate.d.ts +100 -0
- package/dist/typescript/commonjs/lib/common/validate.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/index.d.ts +4 -0
- package/dist/typescript/commonjs/lib/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/FirebaseModule.d.ts +17 -0
- package/dist/typescript/commonjs/lib/internal/FirebaseModule.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/NativeFirebaseError.d.ts +20 -0
- package/dist/typescript/commonjs/lib/internal/NativeFirebaseError.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/NativeModules.d.ts +83 -0
- package/dist/typescript/commonjs/lib/internal/NativeModules.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/RNFBNativeEventEmitter.d.ts +13 -0
- package/dist/typescript/commonjs/lib/internal/RNFBNativeEventEmitter.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/SharedEventEmitter.d.ts +4 -0
- package/dist/typescript/commonjs/lib/internal/SharedEventEmitter.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/asyncStorage.d.ts +10 -0
- package/dist/typescript/commonjs/lib/internal/asyncStorage.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/constants.d.ts +5 -0
- package/dist/typescript/commonjs/lib/internal/constants.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/index.d.ts +12 -0
- package/dist/typescript/commonjs/lib/internal/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/logger.d.ts +83 -0
- package/dist/typescript/commonjs/lib/internal/logger.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/nativeModule.android.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/nativeModule.android.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/nativeModule.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/nativeModule.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/nativeModule.ios.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/nativeModule.ios.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/nativeModuleAndroidIos.d.ts +10 -0
- package/dist/typescript/commonjs/lib/internal/nativeModuleAndroidIos.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/nativeModuleWeb.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/nativeModuleWeb.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/nullSerialization.d.ts +16 -0
- package/dist/typescript/commonjs/lib/internal/nullSerialization.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/registry/app.d.ts +47 -0
- package/dist/typescript/commonjs/lib/internal/registry/app.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/registry/namespace.d.ts +26 -0
- package/dist/typescript/commonjs/lib/internal/registry/namespace.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/registry/nativeModule.d.ts +17 -0
- package/dist/typescript/commonjs/lib/internal/registry/nativeModule.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/RNFBAppModule.d.ts +139 -0
- package/dist/typescript/commonjs/lib/internal/web/RNFBAppModule.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseApp.d.ts +2 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseApp.d.ts.map +1 -0
- package/{lib/internal/web/firebaseAppCheck.js → dist/typescript/commonjs/lib/internal/web/firebaseAppCheck.d.ts} +1 -2
- package/dist/typescript/commonjs/lib/internal/web/firebaseAppCheck.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseAuth.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseAuth.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseDatabase.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseDatabase.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseFirestore.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseFirestore.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseFunctions.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseFunctions.d.ts.map +1 -0
- package/{lib/internal/web/firebaseInstallations.js → dist/typescript/commonjs/lib/internal/web/firebaseInstallations.d.ts} +1 -2
- package/dist/typescript/commonjs/lib/internal/web/firebaseInstallations.d.ts.map +1 -0
- package/{lib/internal/web/firebaseRemoteConfig.js → dist/typescript/commonjs/lib/internal/web/firebaseRemoteConfig.d.ts} +1 -2
- package/dist/typescript/commonjs/lib/internal/web/firebaseRemoteConfig.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseStorage.d.ts +3 -0
- package/dist/typescript/commonjs/lib/internal/web/firebaseStorage.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/internal/web/utils.d.ts +13 -0
- package/dist/typescript/commonjs/lib/internal/web/utils.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/modular.d.ts +95 -0
- package/dist/typescript/commonjs/lib/modular.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/namespaced.d.ts +5 -0
- package/dist/typescript/commonjs/lib/namespaced.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/types/app.d.ts +561 -0
- package/dist/typescript/commonjs/lib/types/app.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/types/internal.d.ts +101 -0
- package/dist/typescript/commonjs/lib/types/internal.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/utils/UtilsStatics.d.ts +4 -0
- package/dist/typescript/commonjs/lib/utils/UtilsStatics.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/utils/index.d.ts +4 -0
- package/dist/typescript/commonjs/lib/utils/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/version.d.ts +2 -0
- package/dist/typescript/commonjs/lib/version.d.ts.map +1 -0
- package/dist/typescript/commonjs/package.json +1 -0
- package/dist/typescript/module/lib/FirebaseApp.d.ts +21 -0
- package/dist/typescript/module/lib/FirebaseApp.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/Base64.d.ts +23 -0
- package/dist/typescript/module/lib/common/Base64.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/MutatableParams.d.ts +10 -0
- package/dist/typescript/module/lib/common/MutatableParams.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/ReferenceBase.d.ts +12 -0
- package/dist/typescript/module/lib/common/ReferenceBase.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/deeps.d.ts +19 -0
- package/dist/typescript/module/lib/common/deeps.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/id.d.ts +12 -0
- package/dist/typescript/module/lib/common/id.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/index.d.ts +33 -0
- package/dist/typescript/module/lib/common/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/path.d.ts +51 -0
- package/dist/typescript/module/lib/common/path.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/promise.d.ts +12 -0
- package/dist/typescript/module/lib/common/promise.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/serialize.d.ts +4 -0
- package/dist/typescript/module/lib/common/serialize.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/unitTestUtils.d.ts +4 -0
- package/dist/typescript/module/lib/common/unitTestUtils.d.ts.map +1 -0
- package/dist/typescript/module/lib/common/validate.d.ts +100 -0
- package/dist/typescript/module/lib/common/validate.d.ts.map +1 -0
- package/dist/typescript/module/lib/index.d.ts +4 -0
- package/dist/typescript/module/lib/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/FirebaseModule.d.ts +17 -0
- package/dist/typescript/module/lib/internal/FirebaseModule.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/NativeFirebaseError.d.ts +20 -0
- package/dist/typescript/module/lib/internal/NativeFirebaseError.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/NativeModules.d.ts +83 -0
- package/dist/typescript/module/lib/internal/NativeModules.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/RNFBNativeEventEmitter.d.ts +13 -0
- package/dist/typescript/module/lib/internal/RNFBNativeEventEmitter.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/SharedEventEmitter.d.ts +4 -0
- package/dist/typescript/module/lib/internal/SharedEventEmitter.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/asyncStorage.d.ts +10 -0
- package/dist/typescript/module/lib/internal/asyncStorage.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/constants.d.ts +5 -0
- package/dist/typescript/module/lib/internal/constants.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/index.d.ts +12 -0
- package/dist/typescript/module/lib/internal/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/logger.d.ts +83 -0
- package/dist/typescript/module/lib/internal/logger.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/nativeModule.android.d.ts +3 -0
- package/dist/typescript/module/lib/internal/nativeModule.android.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/nativeModule.d.ts +3 -0
- package/dist/typescript/module/lib/internal/nativeModule.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/nativeModule.ios.d.ts +3 -0
- package/dist/typescript/module/lib/internal/nativeModule.ios.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/nativeModuleAndroidIos.d.ts +10 -0
- package/dist/typescript/module/lib/internal/nativeModuleAndroidIos.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/nativeModuleWeb.d.ts +3 -0
- package/dist/typescript/module/lib/internal/nativeModuleWeb.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/nullSerialization.d.ts +16 -0
- package/dist/typescript/module/lib/internal/nullSerialization.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/registry/app.d.ts +47 -0
- package/dist/typescript/module/lib/internal/registry/app.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/registry/namespace.d.ts +26 -0
- package/dist/typescript/module/lib/internal/registry/namespace.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/registry/nativeModule.d.ts +17 -0
- package/dist/typescript/module/lib/internal/registry/nativeModule.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/RNFBAppModule.d.ts +139 -0
- package/dist/typescript/module/lib/internal/web/RNFBAppModule.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseApp.d.ts +2 -0
- package/dist/typescript/module/lib/internal/web/firebaseApp.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseAppCheck.d.ts +5 -0
- package/dist/typescript/module/lib/internal/web/firebaseAppCheck.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseAuth.d.ts +3 -0
- package/dist/typescript/module/lib/internal/web/firebaseAuth.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseDatabase.d.ts +3 -0
- package/dist/typescript/module/lib/internal/web/firebaseDatabase.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseFirestore.d.ts +3 -0
- package/dist/typescript/module/lib/internal/web/firebaseFirestore.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseFunctions.d.ts +3 -0
- package/dist/typescript/module/lib/internal/web/firebaseFunctions.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseInstallations.d.ts +5 -0
- package/dist/typescript/module/lib/internal/web/firebaseInstallations.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseRemoteConfig.d.ts +5 -0
- package/dist/typescript/module/lib/internal/web/firebaseRemoteConfig.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/firebaseStorage.d.ts +3 -0
- package/dist/typescript/module/lib/internal/web/firebaseStorage.d.ts.map +1 -0
- package/dist/typescript/module/lib/internal/web/utils.d.ts +13 -0
- package/dist/typescript/module/lib/internal/web/utils.d.ts.map +1 -0
- package/dist/typescript/module/lib/modular.d.ts +95 -0
- package/dist/typescript/module/lib/modular.d.ts.map +1 -0
- package/dist/typescript/module/lib/namespaced.d.ts +5 -0
- package/dist/typescript/module/lib/namespaced.d.ts.map +1 -0
- package/dist/typescript/module/lib/types/app.d.ts +561 -0
- package/dist/typescript/module/lib/types/app.d.ts.map +1 -0
- package/dist/typescript/module/lib/types/internal.d.ts +101 -0
- package/dist/typescript/module/lib/types/internal.d.ts.map +1 -0
- package/dist/typescript/module/lib/utils/UtilsStatics.d.ts +4 -0
- package/dist/typescript/module/lib/utils/UtilsStatics.d.ts.map +1 -0
- package/dist/typescript/module/lib/utils/index.d.ts +4 -0
- package/dist/typescript/module/lib/utils/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/version.d.ts +2 -0
- package/dist/typescript/module/lib/version.d.ts.map +1 -0
- package/dist/typescript/module/package.json +1 -0
- package/ios/RNFBApp/RNFBNullSentinelInterceptor.h +47 -0
- package/ios/RNFBApp/RNFBNullSentinelInterceptor.m +74 -0
- package/ios/RNFBApp/RNFBSharedUtils.h +2 -0
- package/ios/RNFBApp/RNFBSharedUtils.m +118 -0
- package/ios/RNFBApp/RNFBVersion.m +1 -1
- package/ios/RNFBApp.xcodeproj/project.pbxproj +6 -0
- package/lib/FirebaseApp.ts +98 -0
- package/lib/common/{Base64.js → Base64.ts} +19 -11
- package/lib/common/MutatableParams.ts +50 -0
- package/lib/common/ReferenceBase.ts +45 -0
- package/lib/common/deeps.ts +92 -0
- package/lib/common/id.ts +91 -0
- package/lib/common/{index.js → index.ts} +60 -38
- package/lib/common/path.ts +124 -0
- package/lib/common/promise.ts +68 -0
- package/lib/common/{serialize.js → serialize.ts} +3 -2
- package/lib/common/unitTestUtils.ts +5 -4
- package/lib/common/validate.ts +232 -0
- package/lib/index.ts +27 -0
- package/lib/internal/FirebaseModule.ts +78 -0
- package/lib/internal/NativeFirebaseError.ts +111 -0
- package/lib/internal/NativeModules.ts +116 -0
- package/lib/internal/RNFBNativeEventEmitter.ts +139 -0
- package/lib/internal/asyncStorage.ts +76 -0
- package/lib/internal/{constants.js → constants.ts} +3 -1
- package/lib/internal/global.d.ts +33 -0
- package/lib/internal/{index.js → index.ts} +2 -0
- package/lib/internal/logger.ts +270 -0
- package/lib/internal/nativeModuleAndroidIos.ts +55 -0
- package/lib/internal/nativeModuleWeb.ts +60 -0
- package/lib/internal/nullSerialization.ts +186 -0
- package/lib/internal/registry/app.ts +278 -0
- package/lib/internal/registry/{namespace.js → namespace.ts} +93 -54
- package/lib/internal/registry/nativeModule.ts +282 -0
- package/lib/internal/web/RNFBAppModule.ts +318 -0
- package/lib/internal/web/firebaseApp.ts +20 -0
- package/lib/internal/web/firebaseAppCheck.ts +23 -0
- package/lib/internal/web/firebaseAuth.ts +21 -0
- package/lib/internal/web/firebaseDatabase.ts +21 -0
- package/lib/internal/web/firebaseFirestore.ts +21 -0
- package/lib/internal/web/firebaseFunctions.ts +21 -0
- package/lib/internal/web/firebaseInstallations.ts +23 -0
- package/lib/internal/web/firebaseRemoteConfig.ts +23 -0
- package/lib/internal/web/firebaseStorage.ts +21 -0
- package/lib/internal/web/memidb/index.d.ts +21 -0
- package/lib/internal/web/memidb/lib/errors.js +17 -0
- package/lib/internal/web/utils.ts +57 -0
- package/lib/modular.ts +219 -0
- package/lib/{index.js → namespaced.ts} +2 -2
- package/lib/{index.d.ts → types/app.ts} +81 -40
- package/lib/types/internal.ts +142 -0
- package/lib/utils/{UtilsStatics.js → UtilsStatics.ts} +20 -12
- package/lib/utils/index.ts +94 -0
- package/lib/version.ts +2 -0
- package/package.json +99 -9
- package/tsconfig.json +10 -0
- package/lib/internal/asyncStorage.js +0 -47
- package/lib/internal/logger.d.ts +0 -85
- package/lib/internal/nativeModuleAndroidIos.js +0 -45
- package/lib/internal/nativeModuleWeb.js +0 -49
- package/lib/internal/web/firebaseApp.js +0 -3
- package/lib/internal/web/firebaseAuth.js +0 -4
- package/lib/internal/web/firebaseDatabase.js +0 -4
- package/lib/internal/web/firebaseFirestore.js +0 -4
- package/lib/internal/web/firebaseFunctions.js +0 -4
- package/lib/internal/web/firebaseStorage.js +0 -4
- package/lib/modular/index.d.ts +0 -131
- package/lib/modular/index.js +0 -150
- package/lib/version.js +0 -2
- /package/lib/internal/{SharedEventEmitter.js → SharedEventEmitter.ts} +0 -0
- /package/lib/internal/{nativeModule.android.js → nativeModule.android.ts} +0 -0
- /package/lib/internal/{nativeModule.ios.js → nativeModule.ios.ts} +0 -0
- /package/lib/internal/{nativeModule.js → nativeModule.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../lib/utils/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;wBAyEpB,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;AATrD,wBASsD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../lib/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef RNFBNullSentinelInterceptor_h
|
|
19
|
+
#define RNFBNullSentinelInterceptor_h
|
|
20
|
+
|
|
21
|
+
#import <Foundation/Foundation.h>
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Intercepts TurboModule conversions to automatically decode null sentinels.
|
|
25
|
+
*
|
|
26
|
+
* iOS TurboModules strip null values from object properties during serialization.
|
|
27
|
+
* See: https://github.com/facebook/react-native/issues/52802
|
|
28
|
+
* The JavaScript side encodes nulls as sentinel objects,
|
|
29
|
+
* and this interceptor automatically converts them back to NSNull before they
|
|
30
|
+
* reach module implementation methods.
|
|
31
|
+
*
|
|
32
|
+
* This class uses method swizzling on RCTCxxConvert to intercept all TurboModule
|
|
33
|
+
* data conversion methods (JS_*Module_Spec*Data:), decoding sentinels before the
|
|
34
|
+
* data reaches the C++ bridging layer and ultimately your module methods.
|
|
35
|
+
*/
|
|
36
|
+
@interface RNFBNullSentinelInterceptor : NSObject
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Initializes the null sentinel interceptor.
|
|
40
|
+
* This swizzles RCTCxxConvert (TurboModule converter) to automatically decode null sentinels.
|
|
41
|
+
* Called automatically when the class is loaded via +load.
|
|
42
|
+
*/
|
|
43
|
+
+ (void)initialize;
|
|
44
|
+
|
|
45
|
+
@end
|
|
46
|
+
|
|
47
|
+
#endif
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#import "RNFBNullSentinelInterceptor.h"
|
|
19
|
+
#import <objc/runtime.h>
|
|
20
|
+
#import "RNFBSharedUtils.h"
|
|
21
|
+
|
|
22
|
+
@implementation RNFBNullSentinelInterceptor
|
|
23
|
+
|
|
24
|
+
+ (void)load {
|
|
25
|
+
static dispatch_once_t onceToken;
|
|
26
|
+
dispatch_once(&onceToken, ^{
|
|
27
|
+
[self swizzleRCTConvertMethods];
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
+ (void)swizzleRCTConvertMethods {
|
|
32
|
+
// For TurboModules: Swizzle RCTCxxConvert to intercept all conversion methods
|
|
33
|
+
Class cxxConvertClass = NSClassFromString(@"RCTCxxConvert");
|
|
34
|
+
if (cxxConvertClass) {
|
|
35
|
+
[self swizzleTurboModuleConversions:cxxConvertClass];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
+ (void)swizzleTurboModuleConversions:(Class)cxxConvertClass {
|
|
40
|
+
// Get all methods from RCTCxxConvert
|
|
41
|
+
unsigned int methodCount = 0;
|
|
42
|
+
Method *methods = class_copyMethodList(object_getClass(cxxConvertClass), &methodCount);
|
|
43
|
+
|
|
44
|
+
for (unsigned int i = 0; i < methodCount; i++) {
|
|
45
|
+
Method method = methods[i];
|
|
46
|
+
SEL selector = method_getName(method);
|
|
47
|
+
NSString *selectorName = NSStringFromSelector(selector);
|
|
48
|
+
|
|
49
|
+
// Intercept TurboModule data conversion methods (they follow pattern:
|
|
50
|
+
// JS_NativeRNFBTurbo*_Spec*)
|
|
51
|
+
if ([selectorName hasPrefix:@"JS_NativeRNFBTurbo"] && [selectorName containsString:@"_Spec"]) {
|
|
52
|
+
// Create a swizzled version using IMP
|
|
53
|
+
IMP originalIMP = method_getImplementation(method);
|
|
54
|
+
const char *typeEncoding = method_getTypeEncoding(method);
|
|
55
|
+
|
|
56
|
+
// Replace with our wrapper that decodes nulls
|
|
57
|
+
IMP newIMP = imp_implementationWithBlock(^id(id self, id json) {
|
|
58
|
+
// Decode null sentinels before passing to original conversion
|
|
59
|
+
id decoded = [RNFBSharedUtils decodeNullSentinels:json];
|
|
60
|
+
|
|
61
|
+
// Call original implementation with decoded data
|
|
62
|
+
typedef id (*OriginalFunc)(id, SEL, id);
|
|
63
|
+
OriginalFunc originalFunc = (OriginalFunc)originalIMP;
|
|
64
|
+
return originalFunc(self, selector, decoded);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
method_setImplementation(method, newIMP);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
free(methods);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@end
|
|
@@ -164,4 +164,122 @@ static NSString *const RNFBErrorDomain = @"RNFBErrorDomain";
|
|
|
164
164
|
return enabled;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Decodes null sentinel objects back to NSNull values.
|
|
169
|
+
* Uses iterative stack-based traversal to avoid stack overflow on deeply nested structures.
|
|
170
|
+
*
|
|
171
|
+
* This reverses the encoding done on the JavaScript side where null values in object
|
|
172
|
+
* properties are replaced with {__rnfbNull: true} sentinel objects to survive iOS
|
|
173
|
+
* TurboModule serialization.
|
|
174
|
+
*
|
|
175
|
+
* Process:
|
|
176
|
+
* 1. Detects sentinel objects: dictionaries with single key "__rnfbNull" set to true
|
|
177
|
+
* 2. Replaces sentinels with NSNull in object properties and arrays
|
|
178
|
+
* 3. Preserves regular NSNull values that were in arrays (never encoded as sentinels)
|
|
179
|
+
* 4. Deep processes all nested objects and arrays using a stack-based iteration
|
|
180
|
+
*
|
|
181
|
+
* @param value - The value to decode (dictionary, array, or primitive)
|
|
182
|
+
* @return The decoded value with sentinels replaced by NSNull
|
|
183
|
+
*/
|
|
184
|
+
+ (id)decodeNullSentinels:(id)value {
|
|
185
|
+
// Non-container values are returned as-is
|
|
186
|
+
if (![value isKindOfClass:[NSDictionary class]] && ![value isKindOfClass:[NSArray class]]) {
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Helper to detect the sentinel
|
|
191
|
+
BOOL (^isNullSentinel)(NSDictionary *) = ^BOOL(NSDictionary *dict) {
|
|
192
|
+
id flag = dict[@"__rnfbNull"];
|
|
193
|
+
return (dict.count == 1 && flag != nil && [flag boolValue]);
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
// Helper to process a child element and add it to the parent container
|
|
197
|
+
void (^processChild)(id, id, id, BOOL, NSMutableArray *) =
|
|
198
|
+
^void(id child, id parentMutable, id keyOrNil, BOOL isParentDict, NSMutableArray *stack) {
|
|
199
|
+
id processedValue = nil;
|
|
200
|
+
|
|
201
|
+
if ([child isKindOfClass:[NSDictionary class]]) {
|
|
202
|
+
NSDictionary *childDict = (NSDictionary *)child;
|
|
203
|
+
|
|
204
|
+
if (isNullSentinel(childDict)) {
|
|
205
|
+
// Replace sentinel with NSNull
|
|
206
|
+
processedValue = [NSNull null];
|
|
207
|
+
} else {
|
|
208
|
+
// Process nested dictionary
|
|
209
|
+
NSMutableDictionary *childMut =
|
|
210
|
+
[NSMutableDictionary dictionaryWithCapacity:childDict.count];
|
|
211
|
+
processedValue = childMut;
|
|
212
|
+
[stack addObject:@{@"original" : childDict, @"mutable" : childMut}];
|
|
213
|
+
}
|
|
214
|
+
} else if ([child isKindOfClass:[NSArray class]]) {
|
|
215
|
+
// Process nested array
|
|
216
|
+
NSArray *childArray = (NSArray *)child;
|
|
217
|
+
NSMutableArray *childMut = [NSMutableArray arrayWithCapacity:childArray.count];
|
|
218
|
+
processedValue = childMut;
|
|
219
|
+
[stack addObject:@{@"original" : childArray, @"mutable" : childMut}];
|
|
220
|
+
} else {
|
|
221
|
+
// Preserve primitive values
|
|
222
|
+
processedValue = child ?: [NSNull null];
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Add to parent container based on type
|
|
226
|
+
if (isParentDict) {
|
|
227
|
+
NSMutableDictionary *mutDict = (NSMutableDictionary *)parentMutable;
|
|
228
|
+
if (processedValue) {
|
|
229
|
+
mutDict[keyOrNil] = processedValue;
|
|
230
|
+
}
|
|
231
|
+
// NSDictionary can't store nil, and original code wouldn't see nil values either.
|
|
232
|
+
} else {
|
|
233
|
+
NSMutableArray *mutArray = (NSMutableArray *)parentMutable;
|
|
234
|
+
[mutArray addObject:processedValue];
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// Root-level sentinel case
|
|
239
|
+
if ([value isKindOfClass:[NSDictionary class]] && isNullSentinel((NSDictionary *)value)) {
|
|
240
|
+
return [NSNull null];
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
id rootOriginal = value;
|
|
244
|
+
id rootMutable = nil;
|
|
245
|
+
|
|
246
|
+
if ([value isKindOfClass:[NSDictionary class]]) {
|
|
247
|
+
NSDictionary *dict = (NSDictionary *)value;
|
|
248
|
+
rootMutable = [NSMutableDictionary dictionaryWithCapacity:dict.count];
|
|
249
|
+
} else {
|
|
250
|
+
NSArray *array = (NSArray *)value;
|
|
251
|
+
rootMutable = [NSMutableArray arrayWithCapacity:array.count];
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Stack-based iteration to process nested structures without recursion
|
|
255
|
+
// Stack frames: { @"original": container, @"mutable": mutableContainer }
|
|
256
|
+
NSMutableArray<NSDictionary *> *stack = [NSMutableArray array];
|
|
257
|
+
[stack addObject:@{@"original" : rootOriginal, @"mutable" : rootMutable}];
|
|
258
|
+
|
|
259
|
+
while (stack.count > 0) {
|
|
260
|
+
NSDictionary *frame = [stack lastObject];
|
|
261
|
+
[stack removeLastObject];
|
|
262
|
+
|
|
263
|
+
id original = frame[@"original"];
|
|
264
|
+
id mutable = frame[@"mutable"];
|
|
265
|
+
|
|
266
|
+
if ([original isKindOfClass:[NSDictionary class]]) {
|
|
267
|
+
NSDictionary *origDict = (NSDictionary *)original;
|
|
268
|
+
|
|
269
|
+
for (id key in origDict) {
|
|
270
|
+
id child = origDict[key];
|
|
271
|
+
processChild(child, mutable, key, YES, stack);
|
|
272
|
+
}
|
|
273
|
+
} else if ([original isKindOfClass:[NSArray class]]) {
|
|
274
|
+
NSArray *origArray = (NSArray *)original;
|
|
275
|
+
|
|
276
|
+
for (id child in origArray) {
|
|
277
|
+
processChild(child, mutable, nil, NO, stack);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
return rootMutable;
|
|
283
|
+
}
|
|
284
|
+
|
|
167
285
|
@end
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
2748D8202237018600FC8DC8 /* RNFBMeta.m in Sources */ = {isa = PBXBuildFile; fileRef = 2748D81F2237018600FC8DC8 /* RNFBMeta.m */; };
|
|
18
18
|
4D97BAD423042F2700077358 /* RNFBUtilsModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D97BAD323042F2700077358 /* RNFBUtilsModule.m */; };
|
|
19
19
|
DAA1F28522FCF6AD00F4DEC1 /* RNFBVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA1F28422FCF6AD00F4DEC1 /* RNFBVersion.m */; };
|
|
20
|
+
RNFB00001A2025011100000001 /* RNFBNullSentinelInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = RNFB00001A2025011100000002 /* RNFBNullSentinelInterceptor.m */; };
|
|
20
21
|
/* End PBXBuildFile section */
|
|
21
22
|
|
|
22
23
|
/* Begin PBXCopyFilesBuildPhase section */
|
|
@@ -53,6 +54,8 @@
|
|
|
53
54
|
4D97BAD323042F2700077358 /* RNFBUtilsModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBUtilsModule.m; sourceTree = "<group>"; };
|
|
54
55
|
DAA1F28422FCF6AD00F4DEC1 /* RNFBVersion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBVersion.m; sourceTree = "<group>"; };
|
|
55
56
|
DAA1F28622FCF6C200F4DEC1 /* RNFBVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBVersion.h; sourceTree = "<group>"; };
|
|
57
|
+
RNFB00001A2025011100000002 /* RNFBNullSentinelInterceptor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBNullSentinelInterceptor.m; sourceTree = "<group>"; };
|
|
58
|
+
RNFB00001A2025011100000003 /* RNFBNullSentinelInterceptor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBNullSentinelInterceptor.h; sourceTree = "<group>"; };
|
|
56
59
|
/* End PBXFileReference section */
|
|
57
60
|
|
|
58
61
|
/* Begin PBXFrameworksBuildPhase section */
|
|
@@ -97,6 +100,8 @@
|
|
|
97
100
|
DAA1F28622FCF6C200F4DEC1 /* RNFBVersion.h */,
|
|
98
101
|
4D97BAD223042F0800077358 /* RNFBUtilsModule.h */,
|
|
99
102
|
4D97BAD323042F2700077358 /* RNFBUtilsModule.m */,
|
|
103
|
+
RNFB00001A2025011100000003 /* RNFBNullSentinelInterceptor.h */,
|
|
104
|
+
RNFB00001A2025011100000002 /* RNFBNullSentinelInterceptor.m */,
|
|
100
105
|
);
|
|
101
106
|
path = RNFBApp;
|
|
102
107
|
sourceTree = "<group>";
|
|
@@ -178,6 +183,7 @@
|
|
|
178
183
|
2744B99121F46140004F8E3F /* RNFBRCTEventEmitter.m in Sources */,
|
|
179
184
|
2744B9A421F48A4F004F8E3F /* RCTConvert+FIROptions.m in Sources */,
|
|
180
185
|
2748D8152236426300FC8DC8 /* RNFBJSON.m in Sources */,
|
|
186
|
+
RNFB00001A2025011100000001 /* RNFBNullSentinelInterceptor.m in Sources */,
|
|
181
187
|
);
|
|
182
188
|
runOnlyForDeploymentPostprocessing = 0;
|
|
183
189
|
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
import { warnIfNotModularCall } from './common';
|
|
18
|
+
import { getAppModule } from './internal/registry/nativeModule';
|
|
19
|
+
import type { ReactNativeFirebase, Utils } from './types/app';
|
|
20
|
+
|
|
21
|
+
export default class FirebaseApp implements ReactNativeFirebase.FirebaseAppBase {
|
|
22
|
+
private _name: string;
|
|
23
|
+
private _deleted: boolean;
|
|
24
|
+
private _deleteApp: () => Promise<void>;
|
|
25
|
+
private _options: ReactNativeFirebase.FirebaseAppOptions;
|
|
26
|
+
private _automaticDataCollectionEnabled: boolean;
|
|
27
|
+
_initialized: boolean;
|
|
28
|
+
_nativeInitialized: boolean;
|
|
29
|
+
|
|
30
|
+
constructor(
|
|
31
|
+
options: ReactNativeFirebase.FirebaseAppOptions,
|
|
32
|
+
appConfig: ReactNativeFirebase.FirebaseAppConfig,
|
|
33
|
+
fromNative: boolean,
|
|
34
|
+
deleteApp: () => Promise<void>,
|
|
35
|
+
) {
|
|
36
|
+
const { name = '[DEFAULT]', automaticDataCollectionEnabled } = appConfig;
|
|
37
|
+
|
|
38
|
+
this._name = name;
|
|
39
|
+
this._deleted = false;
|
|
40
|
+
this._deleteApp = deleteApp;
|
|
41
|
+
this._options = Object.assign({}, options);
|
|
42
|
+
this._automaticDataCollectionEnabled = !!automaticDataCollectionEnabled;
|
|
43
|
+
|
|
44
|
+
if (fromNative) {
|
|
45
|
+
this._initialized = true;
|
|
46
|
+
this._nativeInitialized = true;
|
|
47
|
+
} else {
|
|
48
|
+
this._initialized = false;
|
|
49
|
+
this._nativeInitialized = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get name(): string {
|
|
54
|
+
return this._name;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get options(): ReactNativeFirebase.FirebaseAppOptions {
|
|
58
|
+
return Object.assign({}, this._options);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get automaticDataCollectionEnabled(): boolean {
|
|
62
|
+
return this._automaticDataCollectionEnabled;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
set automaticDataCollectionEnabled(enabled: boolean) {
|
|
66
|
+
this._checkDestroyed();
|
|
67
|
+
getAppModule().setAutomaticDataCollectionEnabled(this.name, enabled);
|
|
68
|
+
this._automaticDataCollectionEnabled = enabled;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private _checkDestroyed(): void {
|
|
72
|
+
if (this._deleted) {
|
|
73
|
+
throw new Error(`Firebase App named '${this._name}' already deleted`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
extendApp(extendedProps: Record<string, unknown>): void {
|
|
78
|
+
warnIfNotModularCall(arguments);
|
|
79
|
+
this._checkDestroyed();
|
|
80
|
+
Object.assign(this, extendedProps);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
delete(): Promise<void> {
|
|
84
|
+
warnIfNotModularCall(arguments, 'deleteApp()');
|
|
85
|
+
this._checkDestroyed();
|
|
86
|
+
return this._deleteApp();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
toString(): string {
|
|
90
|
+
warnIfNotModularCall(arguments, '.name property');
|
|
91
|
+
return this.name;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// For backward compatibility - utils method added by registry
|
|
95
|
+
utils(): Utils.Module {
|
|
96
|
+
throw new Error('utils() should be added by registry');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
// @ts-expect-error - No type declarations available
|
|
18
19
|
import binaryToBase64 from 'react-native/Libraries/Utilities/binaryToBase64';
|
|
19
20
|
import { promiseDefer } from './promise';
|
|
20
21
|
|
|
@@ -23,7 +24,7 @@ const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
|
23
24
|
/**
|
|
24
25
|
* window.btoa
|
|
25
26
|
*/
|
|
26
|
-
function btoa(input) {
|
|
27
|
+
function btoa(input: string): string {
|
|
27
28
|
let map;
|
|
28
29
|
let i = 0;
|
|
29
30
|
let block = 0;
|
|
@@ -51,11 +52,11 @@ function btoa(input) {
|
|
|
51
52
|
/**
|
|
52
53
|
* window.atob
|
|
53
54
|
*/
|
|
54
|
-
function atob(input) {
|
|
55
|
+
function atob(input: string): string {
|
|
55
56
|
let i = 0;
|
|
56
57
|
let bc = 0;
|
|
57
58
|
let bs = 0;
|
|
58
|
-
let buffer;
|
|
59
|
+
let buffer: number | string;
|
|
59
60
|
let output = '';
|
|
60
61
|
|
|
61
62
|
const str = input.replace(/[=]+$/, '');
|
|
@@ -69,7 +70,7 @@ function atob(input) {
|
|
|
69
70
|
for (
|
|
70
71
|
bc = 0, bs = 0, i = 0;
|
|
71
72
|
(buffer = str.charAt(i++));
|
|
72
|
-
~buffer && ((bs = bc % 4 ? bs * 64 + buffer : buffer), bc++ % 4)
|
|
73
|
+
~buffer && ((bs = bc % 4 ? bs * 64 + (buffer as number) : buffer), bc++ % 4)
|
|
73
74
|
? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))
|
|
74
75
|
: 0
|
|
75
76
|
) {
|
|
@@ -79,23 +80,30 @@ function atob(input) {
|
|
|
79
80
|
return output;
|
|
80
81
|
}
|
|
81
82
|
|
|
83
|
+
export interface Base64Result {
|
|
84
|
+
string: string | ArrayBuffer | null;
|
|
85
|
+
format: 'data_url' | 'base64';
|
|
86
|
+
}
|
|
87
|
+
|
|
82
88
|
/**
|
|
83
89
|
* Converts a Blob, ArrayBuffer or Uint8Array to a base64 string.
|
|
84
90
|
*/
|
|
85
|
-
function fromData(data) {
|
|
91
|
+
function fromData(data: Blob | ArrayBuffer | Uint8Array): Promise<Base64Result> {
|
|
86
92
|
if (data instanceof Blob) {
|
|
87
93
|
const fileReader = new FileReader();
|
|
88
|
-
const { resolve, reject, promise } = promiseDefer();
|
|
94
|
+
const { resolve, reject, promise } = promiseDefer<Base64Result>();
|
|
89
95
|
|
|
90
96
|
fileReader.readAsDataURL(data);
|
|
91
97
|
|
|
92
|
-
fileReader.onloadend =
|
|
93
|
-
|
|
98
|
+
fileReader.onloadend = () => {
|
|
99
|
+
if (fileReader?.result) {
|
|
100
|
+
resolve?.({ string: fileReader.result, format: 'data_url' });
|
|
101
|
+
}
|
|
94
102
|
};
|
|
95
103
|
|
|
96
|
-
fileReader.onerror =
|
|
97
|
-
fileReader
|
|
98
|
-
reject(event);
|
|
104
|
+
fileReader.onerror = event => {
|
|
105
|
+
fileReader?.abort();
|
|
106
|
+
reject?.(event);
|
|
99
107
|
};
|
|
100
108
|
|
|
101
109
|
return promise;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { deepGet, deepSet } from './deeps';
|
|
19
|
+
|
|
20
|
+
export default class MutatableParams {
|
|
21
|
+
_mutatableParams: Record<string, unknown>;
|
|
22
|
+
_parentInstance: MutatableParams;
|
|
23
|
+
|
|
24
|
+
constructor(parentInstance?: MutatableParams) {
|
|
25
|
+
if (parentInstance) {
|
|
26
|
+
this._mutatableParams = parentInstance._mutatableParams;
|
|
27
|
+
this._parentInstance = parentInstance;
|
|
28
|
+
} else {
|
|
29
|
+
this._mutatableParams = {};
|
|
30
|
+
this._parentInstance = this;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
set(param: string, value: unknown): MutatableParams {
|
|
35
|
+
deepSet(this._mutatableParams, param, value);
|
|
36
|
+
return this._parentInstance;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
get<T = unknown>(param: string): T | undefined {
|
|
40
|
+
return deepGet<T>(this._mutatableParams, param, '.');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
toJSON(): Record<string, unknown> {
|
|
44
|
+
return Object.assign({}, this._mutatableParams);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
validate(): void {
|
|
48
|
+
// do nothing
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export default class ReferenceBase {
|
|
19
|
+
path: string;
|
|
20
|
+
|
|
21
|
+
constructor(_path: string) {
|
|
22
|
+
let path = _path;
|
|
23
|
+
|
|
24
|
+
if (path) {
|
|
25
|
+
path = path.length > 1 && path.endsWith('/') ? path.substring(0, path.length - 1) : path;
|
|
26
|
+
if (path.startsWith('/') && path.length > 1) {
|
|
27
|
+
path = path.substring(1, path.length);
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
path = '/';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
this.path = path;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The last part of a Reference's path (after the last '/')
|
|
38
|
+
* The key of a root Reference is null.
|
|
39
|
+
* @type {String}
|
|
40
|
+
* {@link https://firebase.google.com/docs/reference/js/firebase.database.Reference#key}
|
|
41
|
+
*/
|
|
42
|
+
get key(): string | null {
|
|
43
|
+
return this.path === '/' ? null : this.path.substring(this.path.lastIndexOf('/') + 1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { isArray, isObject } from './validate';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Deep get a value from an object.
|
|
22
|
+
* @website https://github.com/Salakar/deeps
|
|
23
|
+
* @param object
|
|
24
|
+
* @param path
|
|
25
|
+
* @param joiner
|
|
26
|
+
* @returns {*}
|
|
27
|
+
*/
|
|
28
|
+
export function deepGet<T = unknown>(
|
|
29
|
+
object: Record<string, unknown> | unknown[],
|
|
30
|
+
path: string,
|
|
31
|
+
joiner: string = '/',
|
|
32
|
+
): T | undefined {
|
|
33
|
+
if (!isObject(object) && !Array.isArray(object)) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const keys = path.split(joiner);
|
|
37
|
+
|
|
38
|
+
let i = 0;
|
|
39
|
+
let tmp: unknown = object;
|
|
40
|
+
const len = keys.length;
|
|
41
|
+
|
|
42
|
+
while (i < len) {
|
|
43
|
+
const key = keys[i++]!;
|
|
44
|
+
if (!tmp || !Object.hasOwnProperty.call(tmp, key)) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
tmp = (tmp as Record<string, unknown>)[key];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return tmp as T;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Deep set a value
|
|
55
|
+
* @param object
|
|
56
|
+
* @param path
|
|
57
|
+
* @param value
|
|
58
|
+
* @param initPaths
|
|
59
|
+
* @param joiner
|
|
60
|
+
*/
|
|
61
|
+
export function deepSet(
|
|
62
|
+
object: Record<string, unknown>,
|
|
63
|
+
path: string,
|
|
64
|
+
value: unknown,
|
|
65
|
+
initPaths: boolean = true,
|
|
66
|
+
joiner: string = '.',
|
|
67
|
+
): boolean {
|
|
68
|
+
if (!isObject(object)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const keys = path.split(joiner);
|
|
72
|
+
|
|
73
|
+
let i = 0;
|
|
74
|
+
let _object: unknown = object;
|
|
75
|
+
const len = keys.length - 1;
|
|
76
|
+
|
|
77
|
+
while (i < len) {
|
|
78
|
+
const key = keys[i++]!;
|
|
79
|
+
if (initPaths && !Object.hasOwnProperty.call(object, key)) {
|
|
80
|
+
(_object as Record<string, unknown>)[key] = {};
|
|
81
|
+
}
|
|
82
|
+
_object = (_object as Record<string, unknown>)[key];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (isObject(_object) || (isArray(_object) && !Number.isNaN(keys[i]))) {
|
|
86
|
+
(_object as Record<string, unknown>)[keys[i]!] = value;
|
|
87
|
+
} else {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return true;
|
|
92
|
+
}
|