Skip to content

Commit 213546b

Browse files
Daeda88nbransby
andauthored
Firestore customizable encoding for where clauses and update methods (#607)
* Moves ValueWithSerializer back into public API It had become part of commons-internal which kind of defeats the purpose. Also made FirebaseEncoder/FirebaseDecoder an interface in the public API. Useful for writing custom Serializers that have custom behaviour on Firebase * Adding support for encoded queries * Add support for customizing encoding behaviour when updating Values at paths * Improves DSL for updating firestore references * Slight api format change for readability * Fixed some bugs and adding tests * Added several tests to stabilize tests * Make builders abstract to allow for testing * Revert "Make builders abstract to allow for testing" This reverts commit 4176fe6. * PR remarks * Fixed broken test * Disable QueryTest for android unit tests * Expanded documentation * Refactored buildSettings variable to encodeNextWith cli * Use different encodeSettings approach * Fixed actually getting values * Lint fix * Corrected Filter implementation * Small bugfix on Filter * Back to PR remarks * Update readme * Run macos tests on newer macos * Deprecation of old update methods * API dump * Trying to fix auto commit issue * Print git status to debug ci * Change trigger from pull_request_target to pull_request --------- Co-authored-by: Nicholas Bransby-Williams <[email protected]>
1 parent 3437e9e commit 213546b

File tree

76 files changed

+2693
-1743
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+2693
-1743
lines changed

.github/workflows/pull_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ jobs:
104104
path: "**/firebase-debug.log"
105105
build-ios:
106106
needs: jobMatrixSetup
107-
runs-on: macos-latest
107+
runs-on: macos-15
108108
strategy:
109109
fail-fast: false
110110
matrix: ${{ fromJson(needs.jobMatrixSetup.outputs.ios_test_jobs_matrix) }}

.github/workflows/pull_request_target.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@ jobs:
3737
run: ./gradlew formatKotlin
3838
- name: Api File Update
3939
run: ./gradlew apiDump
40+
- run: git status
4041
- uses: stefanzweifel/git-auto-commit-action@v6

README.md

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Asynchronous operations that return a single or no value are represented by susp
4242
suspend fun signInWithCustomToken(token: String): AuthResult
4343
```
4444

45-
It is important to remember that unlike a callback based API, wating for suspending functions to complete is implicit and so if you don't want to wait for the result you can `launch` a new coroutine:
45+
It is important to remember that unlike a callback based API, waiting for suspending functions to complete is implicit and so if you don't want to wait for the result you can `launch` a new coroutine:
4646

4747
```kotlin
4848
//TODO don't use GlobalScope
@@ -185,6 +185,52 @@ In combination with a `SerialName` specified for the child class, you have full
185185
}
186186
```
187187

188+
<h4>Serialization of Updates</h4>
189+
Firestore contains update methods that allow for multiple fields to be updated at the same time.
190+
This sdk offers special update methods that allow for applying custom serialization to each individual field though an update builder.
191+
Where an `update` method exists, an `updateFields` method will also be available. In this, each value can have its serializer customized:
192+
193+
```kotlin
194+
documentRef.updateFields {
195+
// Root level encode settings
196+
encodeDefaults = false
197+
serializersModule = module
198+
199+
"field" to "value"
200+
// Set the value of otherField to "1" using a custom Serializer
201+
"otherField".to(IntAsStringSerializer(), 1)
202+
203+
// Overwrite build settings. All fields added within this block will have these build settings applied
204+
withEncodeSettings {
205+
encodeDefaults = true
206+
serializersModule = otherModule
207+
"city" to abstractCity
208+
}
209+
}
210+
```
211+
212+
Similarly, the `Query` methods `startAt`/`startAfter`/`endAt`/`endBefore` have an alternative method in `startAtFieldValues`/`startAfterFieldValues`/`endAtFieldValues`/`endBeforeFieldValues`
213+
214+
```kotlin
215+
query.orderBy("field", "otherField", "city").startAtFieldValues { // similar syntax for startAfter/endAt/endBefore
216+
// Root level encode settings
217+
encodeDefaults = false
218+
serializersModule = module
219+
220+
add("Value")
221+
222+
// Starts at "1" for the otherField value
223+
add(1, IntAsStringSerializer())
224+
225+
// Overwrite build settings. All field values added within this block will have these build settings applied
226+
withEncodeSettings {
227+
encodeDefaults = true
228+
serializersModule = otherModule
229+
add(abstractCity)
230+
}
231+
}
232+
```
233+
188234
<h3><a href="https://kotlinlang.org/docs/reference/functions.html#default-arguments">Default arguments</a></h3>
189235

190236
To reduce boilerplate, default arguments are used in the places where the Firebase Android SDK employs the builder pattern:
@@ -209,8 +255,6 @@ user.updateProfile(profileUpdates)
209255
user.updateProfile(displayName = "Jane Q. User", photoURL = "https://example.com/jane-q-user/profile.jpg")
210256
```
211257

212-
213-
214258
<h3><a href="https://kotlinlang.org/docs/functions.html#infix-notation">Infix notation</a></h3>
215259

216260
To improve readability and reduce boilerplate for functions such as the Cloud Firestore query operators are built with infix notation:

firebase-analytics/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitlive/firebase-analytics",
3-
"version": "2.2.0",
3+
"version": "2.3.0",
44
"description": "Wrapper around firebase for usage in Kotlin Multiplatform projects",
55
"main": "firebase-analytics.js",
66
"scripts": {
@@ -23,7 +23,7 @@
2323
},
2424
"homepage": "https://github.com/GitLiveApp/firebase-kotlin-sdk",
2525
"dependencies": {
26-
"@gitlive/firebase-app": "2.2.0",
26+
"@gitlive/firebase-app": "2.3.0",
2727
"firebase": "9.19.1",
2828
"kotlin": "1.6.10",
2929
"kotlinx-coroutines-core": "1.6.1-native-mt"

firebase-app/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitlive/firebase-app",
3-
"version": "2.2.0",
3+
"version": "2.3.0",
44
"description": "Wrapper around firebase for usage in Kotlin Multiplatform projects",
55
"main": "firebase-app.js",
66
"scripts": {
@@ -23,7 +23,7 @@
2323
},
2424
"homepage": "https://github.com/GitLiveApp/firebase-kotlin-sdk",
2525
"dependencies": {
26-
"@gitlive/firebase-common": "2.2.0",
26+
"@gitlive/firebase-common": "2.3.0",
2727
"firebase": "9.19.1",
2828
"kotlin": "1.8.20",
2929
"kotlinx-coroutines-core": "1.6.4"

firebase-auth/api/android/firebase-auth.api

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,22 @@ public final class dev/gitlive/firebase/auth/ActionCodeResult$VerifyEmail : dev/
3232
}
3333

3434
public final class dev/gitlive/firebase/auth/ActionCodeSettings {
35-
public fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;)V
36-
public synthetic fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
35+
public fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V
36+
public synthetic fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
3737
public final fun component1 ()Ljava/lang/String;
3838
public final fun component2 ()Ldev/gitlive/firebase/auth/AndroidPackageName;
3939
public final fun component3 ()Ljava/lang/String;
4040
public final fun component4 ()Z
4141
public final fun component5 ()Ljava/lang/String;
42-
public final fun copy (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
43-
public static synthetic fun copy$default (Ldev/gitlive/firebase/auth/ActionCodeSettings;Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;ILjava/lang/Object;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
42+
public final fun component6 ()Ljava/lang/String;
43+
public final fun copy (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
44+
public static synthetic fun copy$default (Ldev/gitlive/firebase/auth/ActionCodeSettings;Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
4445
public fun equals (Ljava/lang/Object;)Z
4546
public final fun getAndroidPackageName ()Ldev/gitlive/firebase/auth/AndroidPackageName;
4647
public final fun getCanHandleCodeInApp ()Z
4748
public final fun getDynamicLinkDomain ()Ljava/lang/String;
4849
public final fun getIOSBundleId ()Ljava/lang/String;
50+
public final fun getLinkDomain ()Ljava/lang/String;
4951
public final fun getUrl ()Ljava/lang/String;
5052
public fun hashCode ()I
5153
public fun toString ()Ljava/lang/String;

firebase-auth/api/jvm/firebase-auth.api

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,22 @@ public final class dev/gitlive/firebase/auth/ActionCodeResult$VerifyEmail : dev/
3232
}
3333

3434
public final class dev/gitlive/firebase/auth/ActionCodeSettings {
35-
public fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;)V
36-
public synthetic fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
35+
public fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V
36+
public synthetic fun <init> (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
3737
public final fun component1 ()Ljava/lang/String;
3838
public final fun component2 ()Ldev/gitlive/firebase/auth/AndroidPackageName;
3939
public final fun component3 ()Ljava/lang/String;
4040
public final fun component4 ()Z
4141
public final fun component5 ()Ljava/lang/String;
42-
public final fun copy (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
43-
public static synthetic fun copy$default (Ldev/gitlive/firebase/auth/ActionCodeSettings;Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;ILjava/lang/Object;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
42+
public final fun component6 ()Ljava/lang/String;
43+
public final fun copy (Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
44+
public static synthetic fun copy$default (Ldev/gitlive/firebase/auth/ActionCodeSettings;Ljava/lang/String;Ldev/gitlive/firebase/auth/AndroidPackageName;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ldev/gitlive/firebase/auth/ActionCodeSettings;
4445
public fun equals (Ljava/lang/Object;)Z
4546
public final fun getAndroidPackageName ()Ldev/gitlive/firebase/auth/AndroidPackageName;
4647
public final fun getCanHandleCodeInApp ()Z
4748
public final fun getDynamicLinkDomain ()Ljava/lang/String;
4849
public final fun getIOSBundleId ()Ljava/lang/String;
50+
public final fun getLinkDomain ()Ljava/lang/String;
4951
public final fun getUrl ()Ljava/lang/String;
5052
public fun hashCode ()I
5153
public fun toString ()Ljava/lang/String;

firebase-auth/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitlive/firebase-auth",
3-
"version": "2.2.0",
3+
"version": "2.3.0",
44
"description": "Wrapper around firebase for usage in Kotlin Multiplatform projects",
55
"main": "firebase-auth.js",
66
"scripts": {
@@ -23,7 +23,7 @@
2323
},
2424
"homepage": "https://github.com/GitLiveApp/firebase-kotlin-sdk",
2525
"dependencies": {
26-
"@gitlive/firebase-app": "2.2.0",
26+
"@gitlive/firebase-app": "2.3.0",
2727
"firebase": "9.19.1",
2828
"kotlin": "1.8.20",
2929
"kotlinx-coroutines-core": "1.6.4"

firebase-common-internal/api/android/firebase-common-internal.api

Lines changed: 4 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public final class dev/gitlive/firebase/internal/EncodeDecodeSettingsBuilderImpl
3131
public final class dev/gitlive/firebase/internal/EncodeDecodeSettingsKt {
3232
public static final fun buildDecodeSettings (Ldev/gitlive/firebase/DecodeSettings$Builder;)Ldev/gitlive/firebase/DecodeSettings;
3333
public static final fun buildEncodeSettings (Ldev/gitlive/firebase/EncodeSettings$Builder;)Ldev/gitlive/firebase/EncodeSettings;
34+
public static final fun copyFrom (Ldev/gitlive/firebase/DecodeSettings$Builder;Ldev/gitlive/firebase/DecodeSettings$Builder;)V
35+
public static final fun copyFrom (Ldev/gitlive/firebase/EncodeSettings$Builder;Ldev/gitlive/firebase/EncodeSettings$Builder;)V
3436
}
3537

3638
public final class dev/gitlive/firebase/internal/EncodeSettingsImpl : dev/gitlive/firebase/EncodeSettings {
@@ -78,59 +80,9 @@ public final class dev/gitlive/firebase/internal/EncodersKt {
7880
public static final fun encode (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Z)Ljava/lang/Object;
7981
public static final fun encodeAsObject (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ldev/gitlive/firebase/internal/EncodedObject;
8082
public static synthetic fun encodeAsObject$default (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ldev/gitlive/firebase/internal/EncodedObject;
81-
public static final fun withSerializer (Ljava/lang/Object;Lkotlinx/serialization/SerializationStrategy;)Ljava/lang/Object;
82-
}
83-
84-
public final class dev/gitlive/firebase/internal/FirebaseClassDecoder : dev/gitlive/firebase/internal/FirebaseCompositeDecoder {
85-
public fun <init> (ILdev/gitlive/firebase/DecodeSettings;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V
86-
public fun decodeElementIndex (Lkotlinx/serialization/descriptors/SerialDescriptor;)I
87-
public fun decodeSequentially ()Z
88-
}
89-
90-
public class dev/gitlive/firebase/internal/FirebaseCompositeDecoder : kotlinx/serialization/encoding/CompositeDecoder {
91-
public fun <init> (ILdev/gitlive/firebase/DecodeSettings;Lkotlin/jvm/functions/Function2;)V
92-
public fun decodeBooleanElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z
93-
public fun decodeByteElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)B
94-
public fun decodeCharElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)C
95-
public fun decodeCollectionSize (Lkotlinx/serialization/descriptors/SerialDescriptor;)I
96-
public fun decodeDoubleElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)D
97-
public fun decodeElementIndex (Lkotlinx/serialization/descriptors/SerialDescriptor;)I
98-
public fun decodeFloatElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)F
99-
public fun decodeInlineElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/Decoder;
100-
public fun decodeIntElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)I
101-
public fun decodeLongElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)J
102-
public fun decodeNullableSerializableElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
103-
public fun decodeSequentially ()Z
104-
public fun decodeSerializableElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
105-
public fun decodeShortElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)S
106-
public fun decodeStringElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;
107-
public fun endStructure (Lkotlinx/serialization/descriptors/SerialDescriptor;)V
108-
public fun getSerializersModule ()Lkotlinx/serialization/modules/SerializersModule;
109-
}
110-
111-
public class dev/gitlive/firebase/internal/FirebaseCompositeEncoder : kotlinx/serialization/encoding/CompositeEncoder {
112-
public fun <init> (Ldev/gitlive/firebase/EncodeSettings;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)V
113-
public synthetic fun <init> (Ldev/gitlive/firebase/EncodeSettings;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
114-
public fun encodeBooleanElement (Lkotlinx/serialization/descriptors/SerialDescriptor;IZ)V
115-
public fun encodeByteElement (Lkotlinx/serialization/descriptors/SerialDescriptor;IB)V
116-
public fun encodeCharElement (Lkotlinx/serialization/descriptors/SerialDescriptor;IC)V
117-
public fun encodeDoubleElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ID)V
118-
public fun encodeFloatElement (Lkotlinx/serialization/descriptors/SerialDescriptor;IF)V
119-
public fun encodeInlineElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/Encoder;
120-
public fun encodeIntElement (Lkotlinx/serialization/descriptors/SerialDescriptor;II)V
121-
public fun encodeLongElement (Lkotlinx/serialization/descriptors/SerialDescriptor;IJ)V
122-
public fun encodeNullableSerializableElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
123-
public final fun encodeObject (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/Object;)V
124-
public final fun encodePolymorphicClassDiscriminator (Ljava/lang/String;Ljava/lang/String;)V
125-
public fun encodeSerializableElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
126-
public fun encodeShortElement (Lkotlinx/serialization/descriptors/SerialDescriptor;IS)V
127-
public fun encodeStringElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V
128-
public fun endStructure (Lkotlinx/serialization/descriptors/SerialDescriptor;)V
129-
public fun getSerializersModule ()Lkotlinx/serialization/modules/SerializersModule;
130-
public fun shouldEncodeElementDefault (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z
13183
}
13284

133-
public final class dev/gitlive/firebase/internal/FirebaseDecoder : kotlinx/serialization/encoding/Decoder {
85+
public final class dev/gitlive/firebase/internal/FirebaseDecoderImpl : dev/gitlive/firebase/FirebaseDecoder {
13486
public fun <init> (Ljava/lang/Object;)V
13587
public fun <init> (Ljava/lang/Object;Ldev/gitlive/firebase/DecodeSettings;)V
13688
public fun beginStructure (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;
@@ -153,7 +105,7 @@ public final class dev/gitlive/firebase/internal/FirebaseDecoder : kotlinx/seria
153105
public final fun getValue ()Ljava/lang/Object;
154106
}
155107

156-
public final class dev/gitlive/firebase/internal/FirebaseEncoder : kotlinx/serialization/encoding/Encoder {
108+
public final class dev/gitlive/firebase/internal/FirebaseEncoderImpl : dev/gitlive/firebase/FirebaseEncoder {
157109
public fun <init> (Ldev/gitlive/firebase/EncodeSettings;)V
158110
public fun <init> (Z)V
159111
public fun beginCollection (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/CompositeEncoder;
@@ -217,25 +169,3 @@ public final class dev/gitlive/firebase/internal/SpecialValueSerializer : kotlin
217169
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
218170
}
219171

220-
public final class dev/gitlive/firebase/internal/ValueWithSerializer {
221-
public fun <init> (Ljava/lang/Object;Lkotlinx/serialization/SerializationStrategy;)V
222-
public final fun component1 ()Ljava/lang/Object;
223-
public final fun component2 ()Lkotlinx/serialization/SerializationStrategy;
224-
public final fun copy (Ljava/lang/Object;Lkotlinx/serialization/SerializationStrategy;)Ldev/gitlive/firebase/internal/ValueWithSerializer;
225-
public static synthetic fun copy$default (Ldev/gitlive/firebase/internal/ValueWithSerializer;Ljava/lang/Object;Lkotlinx/serialization/SerializationStrategy;ILjava/lang/Object;)Ldev/gitlive/firebase/internal/ValueWithSerializer;
226-
public fun equals (Ljava/lang/Object;)Z
227-
public final fun getSerializer ()Lkotlinx/serialization/SerializationStrategy;
228-
public final fun getValue ()Ljava/lang/Object;
229-
public fun hashCode ()I
230-
public fun toString ()Ljava/lang/String;
231-
}
232-
233-
public final class dev/gitlive/firebase/internal/_decodersKt {
234-
public static final fun getPolymorphicType (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
235-
public static final fun structureDecoder (Ldev/gitlive/firebase/internal/FirebaseDecoder;Lkotlinx/serialization/descriptors/SerialDescriptor;Z)Lkotlinx/serialization/encoding/CompositeDecoder;
236-
}
237-
238-
public final class dev/gitlive/firebase/internal/_encodersKt {
239-
public static final fun structureEncoder (Ldev/gitlive/firebase/internal/FirebaseEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)Ldev/gitlive/firebase/internal/FirebaseCompositeEncoder;
240-
}
241-

0 commit comments

Comments
 (0)