@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,76 @@
|
|
|
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 type { AsyncStorageStatic } from '../types/internal';
|
|
19
|
+
|
|
20
|
+
// Memory storage Map instance
|
|
21
|
+
export const memoryStorage = new Map<string, string>();
|
|
22
|
+
|
|
23
|
+
// Storage key prefix
|
|
24
|
+
export const prefix = '@react-native-firebase:';
|
|
25
|
+
|
|
26
|
+
const asyncStorageMemory: AsyncStorageStatic = {
|
|
27
|
+
setItem(key: string, value: string): Promise<void> {
|
|
28
|
+
memoryStorage.set(key, value);
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
},
|
|
31
|
+
getItem(key: string): Promise<string | null> {
|
|
32
|
+
const hasValue = memoryStorage.has(key);
|
|
33
|
+
if (hasValue) {
|
|
34
|
+
return Promise.resolve(memoryStorage.get(key) || null);
|
|
35
|
+
}
|
|
36
|
+
return Promise.resolve(null);
|
|
37
|
+
},
|
|
38
|
+
removeItem(key: string): Promise<void> {
|
|
39
|
+
memoryStorage.delete(key);
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
let asyncStorage: AsyncStorageStatic = asyncStorageMemory;
|
|
45
|
+
|
|
46
|
+
// Get the current AsyncStorage instance (either React Native AsyncStorage or memory storage)
|
|
47
|
+
export async function getReactNativeAsyncStorageInternal(): Promise<AsyncStorageStatic> {
|
|
48
|
+
return asyncStorage;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Set the AsyncStorage instance to use (React Native AsyncStorage or fallback to memory storage)
|
|
52
|
+
export function setReactNativeAsyncStorageInternal(
|
|
53
|
+
asyncStorageInstance?: AsyncStorageStatic,
|
|
54
|
+
): void {
|
|
55
|
+
asyncStorage = asyncStorageInstance || asyncStorageMemory;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Check if currently using memory storage (fallback)
|
|
59
|
+
export function isMemoryStorage(): boolean {
|
|
60
|
+
return asyncStorage === asyncStorageMemory;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Set an item in storage with the React Native Firebase prefix
|
|
64
|
+
export async function setItem(key: string, value: string): Promise<void> {
|
|
65
|
+
return await asyncStorage.setItem(prefix + key, value);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Get an item from storage with the React Native Firebase prefix
|
|
69
|
+
export async function getItem(key: string): Promise<string | null> {
|
|
70
|
+
return await asyncStorage.getItem(prefix + key);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Remove an item from storage with the React Native Firebase prefix
|
|
74
|
+
export async function removeItem(key: string): Promise<void> {
|
|
75
|
+
return await asyncStorage.removeItem(prefix + key);
|
|
76
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
/**
|
|
19
|
+
* Global RNFB properties for debugging and testing
|
|
20
|
+
*/
|
|
21
|
+
declare global {
|
|
22
|
+
// Debug and testing flags
|
|
23
|
+
var RNFBDebug: boolean | undefined;
|
|
24
|
+
var RNFBTest: boolean | undefined;
|
|
25
|
+
var RNFBDebugInTestLeakDetection: boolean | undefined;
|
|
26
|
+
var RNFBDebugLastTest: string | undefined;
|
|
27
|
+
|
|
28
|
+
// Modular API deprecation flags
|
|
29
|
+
var RNFB_SILENCE_MODULAR_DEPRECATION_WARNINGS: boolean | undefined;
|
|
30
|
+
var RNFB_MODULAR_DEPRECATION_STRICT_MODE: boolean | undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export {};
|
|
@@ -19,8 +19,10 @@ export { default as FirebaseApp } from '../FirebaseApp';
|
|
|
19
19
|
export * from './constants';
|
|
20
20
|
export { default as FirebaseModule } from './FirebaseModule';
|
|
21
21
|
export { default as NativeFirebaseError } from './NativeFirebaseError';
|
|
22
|
+
export * from './NativeModules';
|
|
22
23
|
export * from './registry/app';
|
|
23
24
|
export * from './registry/namespace';
|
|
24
25
|
export * from './registry/nativeModule';
|
|
25
26
|
export { default as SharedEventEmitter } from './SharedEventEmitter';
|
|
26
27
|
export { Logger } from './logger';
|
|
28
|
+
export type { ModuleConfig } from '../types/internal';
|
|
@@ -0,0 +1,270 @@
|
|
|
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 type { LogCallback, LogOptions } from '../types/app';
|
|
19
|
+
|
|
20
|
+
type LogLevelString = 'debug' | 'verbose' | 'info' | 'warn' | 'error' | 'silent';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The JS SDK supports 5 log levels and also allows a user the ability to
|
|
24
|
+
* silence the logs altogether.
|
|
25
|
+
*
|
|
26
|
+
* The order is a follows:
|
|
27
|
+
* DEBUG < VERBOSE < INFO < WARN < ERROR
|
|
28
|
+
*
|
|
29
|
+
* All of the log types above the current log level will be captured (i.e. if
|
|
30
|
+
* you set the log level to `INFO`, errors will still be logged, but `DEBUG` and
|
|
31
|
+
* `VERBOSE` logs will not)
|
|
32
|
+
*/
|
|
33
|
+
export enum LogLevel {
|
|
34
|
+
DEBUG = 0,
|
|
35
|
+
VERBOSE = 1,
|
|
36
|
+
INFO = 2,
|
|
37
|
+
WARN = 3,
|
|
38
|
+
ERROR = 4,
|
|
39
|
+
SILENT = 5,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// mimic the LogLevel in firebase-js-sdk TS
|
|
43
|
+
const reverseLogLevel = (obj: typeof LogLevel): Record<number, string> => {
|
|
44
|
+
const reversed: Record<number, string> = {};
|
|
45
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
46
|
+
if (typeof value === 'number') {
|
|
47
|
+
reversed[value] = key;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return reversed;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const LogLevelReversed = reverseLogLevel(LogLevel);
|
|
54
|
+
|
|
55
|
+
type LevelStringToEnum = {
|
|
56
|
+
[K in LogLevelString]: LogLevel;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const levelStringToEnum: LevelStringToEnum = {
|
|
60
|
+
debug: LogLevel.DEBUG,
|
|
61
|
+
verbose: LogLevel.VERBOSE,
|
|
62
|
+
info: LogLevel.INFO,
|
|
63
|
+
warn: LogLevel.WARN,
|
|
64
|
+
error: LogLevel.ERROR,
|
|
65
|
+
silent: LogLevel.SILENT,
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* By default, `console.debug` is not displayed in the developer console (in
|
|
70
|
+
* chrome). To avoid forcing users to have to opt-in to these logs twice
|
|
71
|
+
* (i.e. once for firebase, and once in the console), we are sending `DEBUG`
|
|
72
|
+
* logs to the `console.log` function.
|
|
73
|
+
*/
|
|
74
|
+
const ConsoleMethod: Record<LogLevel, 'log' | 'info' | 'warn' | 'error'> = {
|
|
75
|
+
[LogLevel.DEBUG]: 'log',
|
|
76
|
+
[LogLevel.VERBOSE]: 'log',
|
|
77
|
+
[LogLevel.INFO]: 'info',
|
|
78
|
+
[LogLevel.WARN]: 'warn',
|
|
79
|
+
[LogLevel.ERROR]: 'error',
|
|
80
|
+
[LogLevel.SILENT]: 'error', // fallback, should never be used
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* We allow users the ability to pass their own log handler. We will pass the
|
|
85
|
+
* type of log, the current log level, and any other arguments passed (i.e. the
|
|
86
|
+
* messages that the user wants to log) to this function.
|
|
87
|
+
*/
|
|
88
|
+
export type LogHandler = (loggerInstance: Logger, logType: LogLevel, ...args: unknown[]) => void;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR
|
|
92
|
+
* messages on to their corresponding console counterparts (if the log method
|
|
93
|
+
* is supported by the current log level)
|
|
94
|
+
*/
|
|
95
|
+
const defaultLogHandler: LogHandler = (instance, logType, ...args) => {
|
|
96
|
+
if (logType < instance.logLevel) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const now = new Date().toISOString();
|
|
100
|
+
const method = ConsoleMethod[logType];
|
|
101
|
+
if (method) {
|
|
102
|
+
// 'log' | 'info' | 'warn' | 'error'
|
|
103
|
+
(console as any)[method](`[${now}] ${instance.name}:`, ...args);
|
|
104
|
+
} else {
|
|
105
|
+
throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const defaultLogLevel = LogLevel.INFO;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* A container for all of the Logger instances
|
|
113
|
+
*/
|
|
114
|
+
export const instances: Logger[] = [];
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Logger class for Firebase
|
|
118
|
+
*/
|
|
119
|
+
export class Logger {
|
|
120
|
+
name: string;
|
|
121
|
+
private _logLevel: LogLevel = defaultLogLevel;
|
|
122
|
+
private _logHandler: LogHandler = defaultLogHandler;
|
|
123
|
+
private _userLogHandler: LogHandler | null = null;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Gives you an instance of a Logger to capture messages according to
|
|
127
|
+
* Firebase's logging scheme.
|
|
128
|
+
*
|
|
129
|
+
* @param name The name that the logs will be associated with
|
|
130
|
+
*/
|
|
131
|
+
constructor(name: string) {
|
|
132
|
+
/**
|
|
133
|
+
* Capture the current instance for later use
|
|
134
|
+
*/
|
|
135
|
+
this.name = name;
|
|
136
|
+
instances.push(this);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* The log level of the given Logger instance.
|
|
141
|
+
*/
|
|
142
|
+
get logLevel(): LogLevel {
|
|
143
|
+
return this._logLevel;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
set logLevel(val: LogLevel) {
|
|
147
|
+
if (!(val in LogLevel)) {
|
|
148
|
+
throw new TypeError(`Invalid value "${val}" assigned to \`logLevel\``);
|
|
149
|
+
}
|
|
150
|
+
this._logLevel = val;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Workaround for setter/getter having to be the same type.
|
|
154
|
+
setLogLevel(val: LogLevel | LogLevelString): void {
|
|
155
|
+
this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* The main (internal) log handler for the Logger instance.
|
|
160
|
+
* Can be set to a new function in internal package code but not by user.
|
|
161
|
+
*/
|
|
162
|
+
get logHandler(): LogHandler {
|
|
163
|
+
return this._logHandler;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
set logHandler(val: LogHandler) {
|
|
167
|
+
if (typeof val !== 'function') {
|
|
168
|
+
throw new TypeError('Value assigned to `logHandler` must be a function');
|
|
169
|
+
}
|
|
170
|
+
this._logHandler = val;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* The optional, additional, user-defined log handler for the Logger instance.
|
|
175
|
+
*/
|
|
176
|
+
get userLogHandler(): LogHandler | null {
|
|
177
|
+
return this._userLogHandler;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
set userLogHandler(val: LogHandler | null) {
|
|
181
|
+
this._userLogHandler = val;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* The functions below are all based on the `console` interface
|
|
186
|
+
*/
|
|
187
|
+
|
|
188
|
+
debug(...args: unknown[]): void {
|
|
189
|
+
this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);
|
|
190
|
+
this._logHandler(this, LogLevel.DEBUG, ...args);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
log(...args: unknown[]): void {
|
|
194
|
+
this._userLogHandler && this._userLogHandler(this, LogLevel.VERBOSE, ...args);
|
|
195
|
+
this._logHandler(this, LogLevel.VERBOSE, ...args);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
info(...args: unknown[]): void {
|
|
199
|
+
this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);
|
|
200
|
+
this._logHandler(this, LogLevel.INFO, ...args);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
warn(...args: unknown[]): void {
|
|
204
|
+
this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);
|
|
205
|
+
this._logHandler(this, LogLevel.WARN, ...args);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
error(...args: unknown[]): void {
|
|
209
|
+
this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);
|
|
210
|
+
this._logHandler(this, LogLevel.ERROR, ...args);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Sets the log level for all Logger instances
|
|
216
|
+
*/
|
|
217
|
+
export function setLogLevel(level: LogLevelString | LogLevel): void {
|
|
218
|
+
instances.forEach(inst => {
|
|
219
|
+
inst.setLogLevel(level);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Alias for compatibility
|
|
224
|
+
export const setLogLevelInternal = setLogLevel;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Sets a custom user log handler for all Logger instances
|
|
228
|
+
*/
|
|
229
|
+
export function setUserLogHandler(logCallback: LogCallback | null, options?: LogOptions): void {
|
|
230
|
+
for (const instance of instances) {
|
|
231
|
+
let customLogLevel: LogLevel | null = null;
|
|
232
|
+
if (options?.level) {
|
|
233
|
+
customLogLevel = levelStringToEnum[options.level];
|
|
234
|
+
}
|
|
235
|
+
if (logCallback === null) {
|
|
236
|
+
instance.userLogHandler = null;
|
|
237
|
+
} else {
|
|
238
|
+
instance.userLogHandler = (_instance, level, ...args) => {
|
|
239
|
+
const message = args
|
|
240
|
+
.map(arg => {
|
|
241
|
+
if (arg == null) {
|
|
242
|
+
return null;
|
|
243
|
+
} else if (typeof arg === 'string') {
|
|
244
|
+
return arg;
|
|
245
|
+
} else if (typeof arg === 'number' || typeof arg === 'boolean') {
|
|
246
|
+
return arg.toString();
|
|
247
|
+
} else if (arg instanceof Error) {
|
|
248
|
+
return arg.message;
|
|
249
|
+
} else {
|
|
250
|
+
try {
|
|
251
|
+
return JSON.stringify(arg);
|
|
252
|
+
} catch (_ignored) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
})
|
|
257
|
+
.filter(arg => arg)
|
|
258
|
+
.join(' ');
|
|
259
|
+
if (level >= (customLogLevel ?? _instance.logLevel)) {
|
|
260
|
+
logCallback({
|
|
261
|
+
level: LogLevelReversed[level]!.toLowerCase() as LogLevelString,
|
|
262
|
+
message,
|
|
263
|
+
args,
|
|
264
|
+
type: _instance.name,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { NativeModules } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This is used by Android and iOS to get a native module.
|
|
6
|
+
* We additionally add a Proxy to the module to intercept calls
|
|
7
|
+
* and log them to the console for debugging purposes, if enabled.
|
|
8
|
+
* @param moduleName
|
|
9
|
+
* @returns Raw native module from React Native (object with methods/properties or undefined)
|
|
10
|
+
*/
|
|
11
|
+
export function getReactNativeModule(moduleName: string): Record<string, unknown> | undefined {
|
|
12
|
+
const nativeModule = NativeModules[moduleName];
|
|
13
|
+
if (!globalThis.RNFBDebug) {
|
|
14
|
+
return nativeModule;
|
|
15
|
+
}
|
|
16
|
+
return new Proxy(nativeModule, {
|
|
17
|
+
ownKeys(target) {
|
|
18
|
+
return Object.keys(target);
|
|
19
|
+
},
|
|
20
|
+
get: (_, name) => {
|
|
21
|
+
const prop = nativeModule[name as string];
|
|
22
|
+
if (typeof prop !== 'function') return prop;
|
|
23
|
+
return (...args: unknown[]) => {
|
|
24
|
+
console.debug(
|
|
25
|
+
`[RNFB->Native][🔵] ${moduleName}.${String(name)} -> ${JSON.stringify(args)}`,
|
|
26
|
+
);
|
|
27
|
+
const result: unknown = (prop as (...args: unknown[]) => unknown)(...args);
|
|
28
|
+
if (result && typeof result === 'object' && 'then' in result) {
|
|
29
|
+
return (result as Promise<unknown>).then(
|
|
30
|
+
(res: unknown) => {
|
|
31
|
+
console.debug(
|
|
32
|
+
`[RNFB<-Native][🟢] ${moduleName}.${String(name)} <- ${JSON.stringify(res)}`,
|
|
33
|
+
);
|
|
34
|
+
return res;
|
|
35
|
+
},
|
|
36
|
+
(err: unknown) => {
|
|
37
|
+
console.debug(
|
|
38
|
+
`[RNFB<-Native][🔴] ${moduleName}.${String(name)} <- ${JSON.stringify(err)}`,
|
|
39
|
+
);
|
|
40
|
+
throw err;
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
console.debug(
|
|
45
|
+
`[RNFB<-Native][🟢] ${moduleName}.${String(name)} <- ${JSON.stringify(result)}`,
|
|
46
|
+
);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function setReactNativeModule(): void {
|
|
54
|
+
// No-op
|
|
55
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import RNFBAppModule from './web/RNFBAppModule';
|
|
3
|
+
|
|
4
|
+
const nativeModuleRegistry: Record<string, Record<string, unknown>> = {};
|
|
5
|
+
|
|
6
|
+
export function getReactNativeModule(moduleName: string): Record<string, unknown> | undefined {
|
|
7
|
+
const nativeModule = nativeModuleRegistry[moduleName];
|
|
8
|
+
// Throw an error if the module is not registered.
|
|
9
|
+
if (!nativeModule) {
|
|
10
|
+
throw new Error(`Native module ${moduleName} is not registered.`);
|
|
11
|
+
}
|
|
12
|
+
if (!globalThis.RNFBDebug) {
|
|
13
|
+
return nativeModule;
|
|
14
|
+
}
|
|
15
|
+
return new Proxy(nativeModule, {
|
|
16
|
+
ownKeys(target) {
|
|
17
|
+
// FIXME - test in new arch context - I don't think Object.keys works
|
|
18
|
+
return Object.keys(target);
|
|
19
|
+
},
|
|
20
|
+
get: (_, name) => {
|
|
21
|
+
const prop = nativeModule[name as string];
|
|
22
|
+
if (typeof prop !== 'function') return prop;
|
|
23
|
+
return (...args: unknown[]) => {
|
|
24
|
+
console.debug(
|
|
25
|
+
`[RNFB->Native][🔵] ${moduleName}.${String(name)} -> ${JSON.stringify(args)}`,
|
|
26
|
+
);
|
|
27
|
+
const result: unknown = (prop as (...args: unknown[]) => unknown)(...args);
|
|
28
|
+
if (result && typeof result === 'object' && 'then' in result) {
|
|
29
|
+
return (result as Promise<unknown>).then(
|
|
30
|
+
(res: unknown) => {
|
|
31
|
+
console.debug(
|
|
32
|
+
`[RNFB<-Native][🟢] ${moduleName}.${String(name)} <- ${JSON.stringify(res)}`,
|
|
33
|
+
);
|
|
34
|
+
return res;
|
|
35
|
+
},
|
|
36
|
+
(err: unknown) => {
|
|
37
|
+
console.debug(
|
|
38
|
+
`[RNFB<-Native][🔴] ${moduleName}.${String(name)} <- ${JSON.stringify(err)}`,
|
|
39
|
+
);
|
|
40
|
+
throw err;
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
console.debug(
|
|
45
|
+
`[RNFB<-Native][🟢] ${moduleName}.${String(name)} <- ${JSON.stringify(result)}`,
|
|
46
|
+
);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function setReactNativeModule(
|
|
54
|
+
moduleName: string,
|
|
55
|
+
nativeModule: Record<string, unknown>,
|
|
56
|
+
): void {
|
|
57
|
+
nativeModuleRegistry[moduleName] = nativeModule;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
setReactNativeModule('RNFBAppModule', RNFBAppModule);
|
|
@@ -0,0 +1,186 @@
|
|
|
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
|
+
const NULL_SENTINEL = { __rnfbNull: true };
|
|
19
|
+
|
|
20
|
+
type Encodable = string | number | boolean | null | EncodableObject | EncodableArray;
|
|
21
|
+
type EncodableObject = { [key: string]: Encodable };
|
|
22
|
+
type EncodableArray = Encodable[];
|
|
23
|
+
|
|
24
|
+
type ArrayFrame = {
|
|
25
|
+
type: 'array';
|
|
26
|
+
original: unknown[];
|
|
27
|
+
encoded: unknown[];
|
|
28
|
+
index: number;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
type ObjectFrame = {
|
|
32
|
+
type: 'object';
|
|
33
|
+
original: Record<string, unknown>;
|
|
34
|
+
encoded: Record<string, unknown>;
|
|
35
|
+
keys: string[];
|
|
36
|
+
index: number;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
type StackFrame = ArrayFrame | ObjectFrame;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Replaces null values in object properties with sentinel objects for iOS TurboModule compatibility.
|
|
43
|
+
* Uses iterative stack-based traversal to avoid stack overflow on deeply nested structures.
|
|
44
|
+
*
|
|
45
|
+
* iOS TurboModules strip null values from object properties during serialization,
|
|
46
|
+
* so we replace them with sentinel objects that can survive the serialization
|
|
47
|
+
* and be detected/restored on the native side.
|
|
48
|
+
*
|
|
49
|
+
* Note: Null values in arrays are preserved by iOS TurboModules, so we don't
|
|
50
|
+
* encode them (but we still process nested objects within arrays).
|
|
51
|
+
*
|
|
52
|
+
* @param data - The data to encode
|
|
53
|
+
* @returns The encoded data with null object properties replaced by sentinels
|
|
54
|
+
*/
|
|
55
|
+
export function encodeNullValues(data: unknown): unknown {
|
|
56
|
+
if (data === null) {
|
|
57
|
+
// only null values within objects are encoded
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
if (typeof data !== 'object') {
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Helper to process a child element and add it to the encoded container
|
|
65
|
+
function processArrayChild(
|
|
66
|
+
child: unknown,
|
|
67
|
+
encoded: unknown[],
|
|
68
|
+
index: number,
|
|
69
|
+
stack: StackFrame[],
|
|
70
|
+
): void {
|
|
71
|
+
if (child === null) {
|
|
72
|
+
// Arrays preserve nulls as null
|
|
73
|
+
encoded[index] = null;
|
|
74
|
+
} else if (typeof child !== 'object') {
|
|
75
|
+
encoded[index] = child;
|
|
76
|
+
} else if (Array.isArray(child)) {
|
|
77
|
+
const childEncoded: unknown[] = new Array(child.length);
|
|
78
|
+
encoded[index] = childEncoded;
|
|
79
|
+
stack.push({
|
|
80
|
+
type: 'array',
|
|
81
|
+
original: child,
|
|
82
|
+
encoded: childEncoded,
|
|
83
|
+
index: 0,
|
|
84
|
+
});
|
|
85
|
+
} else {
|
|
86
|
+
const childEncoded: Record<string, unknown> = {};
|
|
87
|
+
encoded[index] = childEncoded;
|
|
88
|
+
stack.push({
|
|
89
|
+
type: 'object',
|
|
90
|
+
original: child as Record<string, unknown>,
|
|
91
|
+
encoded: childEncoded,
|
|
92
|
+
keys: Object.keys(child),
|
|
93
|
+
index: 0,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function processObjectChild(
|
|
99
|
+
child: unknown,
|
|
100
|
+
encoded: Record<string, unknown>,
|
|
101
|
+
key: string,
|
|
102
|
+
stack: StackFrame[],
|
|
103
|
+
): void {
|
|
104
|
+
if (child === null) {
|
|
105
|
+
// Objects convert null to sentinel
|
|
106
|
+
encoded[key] = NULL_SENTINEL;
|
|
107
|
+
} else if (typeof child !== 'object') {
|
|
108
|
+
encoded[key] = child;
|
|
109
|
+
} else if (Array.isArray(child)) {
|
|
110
|
+
const childEncoded: unknown[] = new Array(child.length);
|
|
111
|
+
encoded[key] = childEncoded;
|
|
112
|
+
stack.push({
|
|
113
|
+
type: 'array',
|
|
114
|
+
original: child,
|
|
115
|
+
encoded: childEncoded,
|
|
116
|
+
index: 0,
|
|
117
|
+
});
|
|
118
|
+
} else {
|
|
119
|
+
const childEncoded: Record<string, unknown> = {};
|
|
120
|
+
encoded[key] = childEncoded;
|
|
121
|
+
stack.push({
|
|
122
|
+
type: 'object',
|
|
123
|
+
original: child as Record<string, unknown>,
|
|
124
|
+
encoded: childEncoded,
|
|
125
|
+
keys: Object.keys(child),
|
|
126
|
+
index: 0,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Prepare root encoded container
|
|
132
|
+
let rootEncoded: unknown[] | Record<string, unknown>;
|
|
133
|
+
const stack: StackFrame[] = [];
|
|
134
|
+
|
|
135
|
+
if (Array.isArray(data)) {
|
|
136
|
+
rootEncoded = new Array(data.length);
|
|
137
|
+
stack.push({
|
|
138
|
+
type: 'array',
|
|
139
|
+
original: data,
|
|
140
|
+
encoded: rootEncoded,
|
|
141
|
+
index: 0,
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
rootEncoded = {};
|
|
145
|
+
stack.push({
|
|
146
|
+
type: 'object',
|
|
147
|
+
original: data as Record<string, unknown>,
|
|
148
|
+
encoded: rootEncoded,
|
|
149
|
+
keys: Object.keys(data),
|
|
150
|
+
index: 0,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
while (stack.length > 0) {
|
|
155
|
+
const frame = stack[stack.length - 1]!; // Non-null assertion safe due to while condition
|
|
156
|
+
|
|
157
|
+
if (frame.type === 'array') {
|
|
158
|
+
const { original, encoded } = frame;
|
|
159
|
+
|
|
160
|
+
if (frame.index >= original.length) {
|
|
161
|
+
// Done with this array
|
|
162
|
+
stack.pop();
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const i = frame.index++;
|
|
167
|
+
const item = original[i];
|
|
168
|
+
processArrayChild(item, encoded, i, stack);
|
|
169
|
+
} else {
|
|
170
|
+
// frame.type === 'object'
|
|
171
|
+
const { original, encoded, keys } = frame;
|
|
172
|
+
|
|
173
|
+
if (frame.index >= keys.length) {
|
|
174
|
+
// Done with this object
|
|
175
|
+
stack.pop();
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const key = keys[frame.index++]!; // Non-null assertion safe due to length check above
|
|
180
|
+
const value = original[key];
|
|
181
|
+
processObjectChild(value, encoded, key, stack);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return rootEncoded;
|
|
186
|
+
}
|