feat(firestore): array-contains, array-contains-any & in filters (#2868)

* feat(firestore) Add IN query support (JS/Android)
* feat(firestore) in query validation
* feat(firestore) in query ios support / tests
* docs(firestore): update reference docs to include in query support
This commit is contained in:
Mike Diarmid
2019-11-24 18:21:38 +00:00
committed by GitHub
parent e14680adde
commit 42e034c480
43 changed files with 2908 additions and 2657 deletions

4825
docs/typedoc.json vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBAdMob: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase : [
bom: "21.1.0"
bom: "24.1.0"
],
ads : [

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBAnalytics: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase : [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -2,7 +2,7 @@ require 'json'
require './firebase_json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBApp: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBAuth: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -2,7 +2,7 @@ require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
# Firebase SDK Override
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBCrashlytics: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read('./package.json'))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBDatabase: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBDynamicLinks: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBDynamicLinks: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "21.3.0",
],
],
])

View File

@@ -84,6 +84,12 @@ public class ReactNativeFirebaseFirestoreQuery {
case "ARRAY_CONTAINS":
query = query.whereArrayContains(Objects.requireNonNull(fieldPath), Objects.requireNonNull(value));
break;
case "ARRAY_CONTAINS_ANY":
query = query.whereArrayContainsAny(Objects.requireNonNull(fieldPath), Objects.requireNonNull((List<Object>) value));
break;
case "IN":
query = query.whereIn(Objects.requireNonNull(fieldPath), Objects.requireNonNull((List<Object>) value));
break;
}
}
}

View File

@@ -128,6 +128,107 @@ describe('firestore().collection().where()', () => {
.where(new firebase.firestore.FieldPath('foo', 'bar'), '>', 1234);
});
it('throws if in query with no array value', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'in', '123');
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql('A non-empty array is required');
return Promise.resolve();
}
});
it('throws if array-contains-any query with no array value', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'array-contains-any', '123');
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql('A non-empty array is required');
return Promise.resolve();
}
});
it('throws if in query array length is greater than 10', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'in', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql('maximum of 10 elements in the value');
return Promise.resolve();
}
});
it('throws if query has multiple array-contains-any filter', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'array-contains-any', [1])
.where('foo.bar', 'array-contains-any', [2]);
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql("You cannot use more than one 'array-contains-any' filter");
return Promise.resolve();
}
});
it('throws if query has array-contains-any & in filter', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'array-contains-any', [1])
.where('foo.bar', 'in', [2]);
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql(
"You cannot use 'in' filters with 'array-contains-any' filters",
);
return Promise.resolve();
}
});
it('throws if query has multiple in filter', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'in', [1])
.where('foo.bar', 'in', [2]);
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql("You cannot use more than one 'in' filter");
return Promise.resolve();
}
});
it('throws if query has in & array-contains-any filter', () => {
try {
firebase
.firestore()
.collection('v6')
.where('foo.bar', 'in', [1])
.where('foo.bar', 'array-contains-any', [2]);
return Promise.reject(new Error('Did not throw an Error.'));
} catch (error) {
error.message.should.containEql(
"You cannot use 'array-contains-any' filters with 'in' filters",
);
return Promise.resolve();
}
});
/* Queries */
it('returns with where equal filter', async () => {
const colRef = firebase.firestore().collection('v6/filter/equal');
@@ -222,7 +323,7 @@ describe('firestore().collection().where()', () => {
});
it('returns with where array-contains filter', async () => {
const colRef = firebase.firestore().collection('v6/filter/arraycontains');
const colRef = firebase.firestore().collection('v6/filter/array-contains');
const match = Date.now();
await Promise.all([
@@ -239,4 +340,38 @@ describe('firestore().collection().where()', () => {
s.data().foo.should.eql(jet.contextify(expected));
});
});
it('returns with in filter', async () => {
const colRef = firebase.firestore().collection('v6/filter/in');
await Promise.all([
colRef.add({ status: 'Ordered' }),
colRef.add({ status: 'Ready to Ship' }),
colRef.add({ status: 'Ready to Ship' }),
colRef.add({ status: 'Incomplete' }),
]);
const expect = ['Ready to Ship', 'Ordered'];
const snapshot = await colRef.where('status', 'in', expect).get();
snapshot.size.should.eql(3);
snapshot.forEach(s => {
s.data().status.should.equalOneOf(...expect);
});
});
it('returns with array-contains-any filter', async () => {
const colRef = firebase.firestore().collection('v6/filter/array-contains-any');
await Promise.all([
colRef.add({ category: ['Appliances', 'Housewares', 'Cooking'] }),
colRef.add({ category: ['Appliances', 'Electronics', 'Nursery'] }),
colRef.add({ category: ['Audio/Video', 'Electronics'] }),
colRef.add({ category: ['Beauty'] }),
]);
const expect = ['Appliances', 'Electronics'];
const snapshot = await colRef.where('category', 'array-contains-any', expect).get();
snapshot.size.should.eql(3); // 2nd record should only be returned once
});
});

View File

@@ -67,6 +67,10 @@
_query = [_query queryWhereField:fieldPath isLessThanOrEqualTo:value];
} else if ([operator isEqualToString:@"ARRAY_CONTAINS"]) {
_query = [_query queryWhereField:fieldPath arrayContains:value];
} else if ([operator isEqualToString:@"IN"]) {
_query = [_query queryWhereField:fieldPath in:value];
} else if ([operator isEqualToString:@"ARRAY_CONTAINS_ANY"]) {
_query = [_query queryWhereField:fieldPath arrayContainsAny:value];
}
}
}
@@ -107,4 +111,4 @@
}
}
@end
@end

View File

@@ -15,7 +15,13 @@
*
*/
import { isNull, isObject, isString, isUndefined } from '@react-native-firebase/app/lib/common';
import {
isArray,
isNull,
isObject,
isString,
isUndefined,
} from '@react-native-firebase/app/lib/common';
import NativeError from '@react-native-firebase/app/lib/internal/NativeFirebaseError';
import FirestoreDocumentSnapshot from './FirestoreDocumentSnapshot';
import FirestoreFieldPath, { fromDotSeparatedString } from './FirestoreFieldPath';
@@ -349,7 +355,7 @@ export default class FirestoreQuery {
if (!this._modifiers.isValidOperator(opStr)) {
throw new Error(
"firebase.firestore().collection().where(_, *) 'opStr' is invalid. Expected one of '==', '>', '>=', '<', '<=' or 'array-contains'.",
"firebase.firestore().collection().where(_, *) 'opStr' is invalid. Expected one of '==', '>', '>=', '<', '<=', 'array-contains', 'array-contains-any' or 'in'.",
);
}
@@ -365,6 +371,20 @@ export default class FirestoreQuery {
);
}
if (this._modifiers.isInOperator(opStr)) {
if (!isArray(value) || !value.length) {
throw new Error(
`firebase.firestore().collection().where(_, _, *) 'value' is invalid. A non-empty array is required for '${opStr}' filters.`,
);
}
if (value.length > 10) {
throw new Error(
`firebase.firestore().collection().where(_, _, *) 'value' is invalid. '${opStr}' filters support a maximum of 10 elements in the value array.`,
);
}
}
const modifiers = this._modifiers._copy().where(path, opStr, value);
try {

View File

@@ -25,6 +25,8 @@ const OPERATORS = {
'<': 'LESS_THAN',
'<=': 'LESS_THAN_OR_EQUAL',
'array-contains': 'ARRAY_CONTAINS',
'array-contains-any': 'ARRAY_CONTAINS_ANY',
in: 'IN',
};
const INEQUALITY = {
@@ -150,6 +152,10 @@ export default class FirestoreQueryModifiers {
return OPERATORS[operator] === 'EQUAL';
}
isInOperator(operator) {
return OPERATORS[operator] === 'IN' || OPERATORS[operator] === 'ARRAY_CONTAINS_ANY';
}
where(fieldPath, opStr, value) {
const filter = {
fieldPath: fieldPath._toPath(),
@@ -190,20 +196,48 @@ export default class FirestoreQueryModifiers {
}
let hasArrayContains;
let hasArrayContainsAny;
let hasIn;
for (let i = 0; i < this._filters.length; i++) {
const filter = this._filters[i];
// Skip if no array-contains
if (filter.operator !== OPERATORS['array-contains']) {
continue;
}
if (!hasArrayContains) {
if (filter.operator === OPERATORS['array-contains']) {
if (hasArrayContains) {
throw new Error('Invalid query. Queries only support a single array-contains filter.');
}
hasArrayContains = true;
continue;
}
throw new Error('Invalid query. Queries only support a single array-contains filter.');
if (filter.operator === OPERATORS['array-contains-any']) {
if (hasArrayContainsAny) {
throw new Error(
"Invalid query. You cannot use more than one 'array-contains-any' filter.",
);
}
if (hasIn) {
throw new Error(
"Invalid query. You cannot use 'array-contains-any' filters with 'in' filters.",
);
}
hasArrayContainsAny = true;
}
if (filter.operator === OPERATORS.in) {
if (hasIn) {
throw new Error("Invalid query. You cannot use more than one 'in' filter.");
}
if (hasArrayContainsAny) {
throw new Error(
"Invalid query. You cannot use 'in' filters with 'array-contains-any' filters.",
);
}
hasIn = true;
}
}
}

View File

@@ -1165,16 +1165,24 @@ export namespace FirebaseFirestoreTypes {
* ```
*
* @param fieldPath The path to compare.
* @param opStr The operation string (e.g "<", "<=", "==", ">", ">=", "array-contains").
* @param opStr The operation string (e.g "<", "<=", "==", ">", ">=", "array-contains", "array-contains-any", "in").
* @param value The comparison value.
*/
where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: any): Query;
}
/**
* Filter conditions in a `Query.where()` clause are specified using the strings '<', '<=', '==', '>=', '>', and 'array-contains'.
* Filter conditions in a `Query.where()` clause are specified using the strings '<', '<=', '==', '>=', '>', 'array-contains', 'array-contains-any' or 'in'.
*/
export type WhereFilterOp = '<' | '<=' | '==' | '>' | '>=' | 'array-contains';
export type WhereFilterOp =
| '<'
| '<='
| '=='
| '>'
| '>='
| 'array-contains'
| 'array-contains-any'
| 'in';
/**
* A `QuerySnapshot` contains zero or more `DocumentSnapshot` objects representing the results of a query. The documents

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBFirestore: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBIid: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBInAppMessaging: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read('../package.json'))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBIndexing: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBMessaging: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -2,7 +2,7 @@ require 'json'
require '../app/firebase_json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBMLNaturalLanguage: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -2,7 +2,7 @@ require 'json'
require '../app/firebase_json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBMLVision: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBPerf: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBRemoteConfig: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase : [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -1,7 +1,7 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
firebase_sdk_version = '~> 6.8.1'
firebase_sdk_version = '~> 6.12.0'
using_custom_firebase_sdk_version = defined? $FirebaseSDKVersion
if using_custom_firebase_sdk_version
Pod::UI.puts "RNFBStorage: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"

View File

@@ -31,7 +31,7 @@ project.ext {
],
firebase: [
bom: "21.1.0",
bom: "24.1.0",
],
],
])

View File

@@ -10,144 +10,145 @@ PODS:
- Fabric (~> 1.9.0)
- DoubleConversion (1.1.6)
- Fabric (1.9.0)
- Firebase/AdMob (6.8.1):
- Firebase/AdMob (6.12.0):
- Firebase/CoreOnly
- Google-Mobile-Ads-SDK (~> 7.49)
- Firebase/Analytics (6.8.1):
- Google-Mobile-Ads-SDK (~> 7.50)
- Firebase/Analytics (6.12.0):
- Firebase/Core
- Firebase/Auth (6.8.1):
- Firebase/Auth (6.12.0):
- Firebase/CoreOnly
- FirebaseAuth (~> 6.2.3)
- Firebase/Core (6.8.1):
- FirebaseAuth (~> 6.3.1)
- Firebase/Core (6.12.0):
- Firebase/CoreOnly
- FirebaseAnalytics (= 6.1.1)
- Firebase/CoreOnly (6.8.1):
- FirebaseCore (= 6.2.3)
- Firebase/Database (6.8.1):
- FirebaseAnalytics (= 6.1.5)
- Firebase/CoreOnly (6.12.0):
- FirebaseCore (= 6.3.3)
- Firebase/Database (6.12.0):
- Firebase/CoreOnly
- FirebaseDatabase (~> 6.1.0)
- Firebase/DynamicLinks (6.8.1):
- FirebaseDatabase (~> 6.1.2)
- Firebase/DynamicLinks (6.12.0):
- Firebase/CoreOnly
- FirebaseDynamicLinks (~> 4.0.5)
- Firebase/Firestore (6.8.1):
- Firebase/Firestore (6.12.0):
- Firebase/CoreOnly
- FirebaseFirestore (~> 1.5.0)
- Firebase/Functions (6.8.1):
- FirebaseFirestore (~> 1.7.0)
- Firebase/Functions (6.12.0):
- Firebase/CoreOnly
- FirebaseFunctions (~> 2.5.1)
- Firebase/InAppMessagingDisplay (6.8.1):
- Firebase/InAppMessagingDisplay (6.12.0):
- Firebase/CoreOnly
- FirebaseInAppMessagingDisplay (~> 0.15.4)
- Firebase/Messaging (6.8.1):
- FirebaseInAppMessagingDisplay (~> 0.15.5)
- Firebase/Messaging (6.12.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 4.1.4)
- Firebase/MLCommon (6.8.1):
- FirebaseMessaging (~> 4.1.8)
- Firebase/MLCommon (6.12.0):
- Firebase/CoreOnly
- FirebaseMLCommon (~> 0.18.0)
- Firebase/MLNaturalLanguage (6.8.1):
- FirebaseMLCommon (~> 0.19.0)
- Firebase/MLNaturalLanguage (6.12.0):
- Firebase/CoreOnly
- FirebaseMLNaturalLanguage (~> 0.16.3)
- Firebase/MLNLLanguageID (6.8.1):
- FirebaseMLNaturalLanguage (~> 0.17.0)
- Firebase/MLNLLanguageID (6.12.0):
- Firebase/CoreOnly
- FirebaseMLNLLanguageID (~> 0.16.3)
- Firebase/MLNLSmartReply (6.8.1):
- FirebaseMLNLLanguageID (~> 0.17.0)
- Firebase/MLNLSmartReply (6.12.0):
- Firebase/CoreOnly
- FirebaseMLNLSmartReply (~> 0.16.3)
- Firebase/MLVision (6.8.1):
- FirebaseMLNLSmartReply (~> 0.17.0)
- Firebase/MLVision (6.12.0):
- Firebase/CoreOnly
- FirebaseMLVision (~> 0.18.0)
- Firebase/MLVisionBarcodeModel (6.8.1):
- FirebaseMLVision (~> 0.19.0)
- Firebase/MLVisionBarcodeModel (6.12.0):
- Firebase/CoreOnly
- FirebaseMLVisionBarcodeModel (~> 0.18.0)
- Firebase/MLVisionFaceModel (6.8.1):
- FirebaseMLVisionBarcodeModel (~> 0.19.0)
- Firebase/MLVisionFaceModel (6.12.0):
- Firebase/CoreOnly
- FirebaseMLVisionFaceModel (~> 0.18.0)
- Firebase/MLVisionLabelModel (6.8.1):
- FirebaseMLVisionFaceModel (~> 0.19.0)
- Firebase/MLVisionLabelModel (6.12.0):
- Firebase/CoreOnly
- FirebaseMLVisionLabelModel (~> 0.18.0)
- Firebase/MLVisionTextModel (6.8.1):
- FirebaseMLVisionLabelModel (~> 0.19.0)
- Firebase/MLVisionTextModel (6.12.0):
- Firebase/CoreOnly
- FirebaseMLVisionTextModel (~> 0.18.0)
- Firebase/Performance (6.8.1):
- FirebaseMLVisionTextModel (~> 0.19.0)
- Firebase/Performance (6.12.0):
- Firebase/CoreOnly
- FirebasePerformance (~> 3.1.4)
- Firebase/RemoteConfig (6.8.1):
- FirebasePerformance (~> 3.1.6)
- Firebase/RemoteConfig (6.12.0):
- Firebase/CoreOnly
- FirebaseRemoteConfig (~> 4.4.0)
- Firebase/Storage (6.8.1):
- FirebaseRemoteConfig (~> 4.4.4)
- Firebase/Storage (6.12.0):
- Firebase/CoreOnly
- FirebaseStorage (~> 3.4.1)
- FirebaseABTesting (3.1.1):
- FirebaseABTesting (3.1.2):
- FirebaseAnalyticsInterop (~> 1.3)
- FirebaseCore (~> 6.1)
- Protobuf (~> 3.8)
- FirebaseAnalytics (6.1.1):
- FirebaseCore (~> 6.2)
- Protobuf (>= 3.9.2, ~> 3.9)
- FirebaseAnalytics (6.1.5):
- FirebaseCore (~> 6.3)
- FirebaseInstanceID (~> 4.2)
- GoogleAppMeasurement (= 6.1.1)
- GoogleAppMeasurement (= 6.1.5)
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (~> 0.3)
- nanopb (= 0.3.9011)
- FirebaseAnalyticsInterop (1.4.0)
- FirebaseAuth (6.2.3):
- FirebaseAuth (6.3.1):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.2)
- GoogleUtilities/AppDelegateSwizzler (~> 6.2)
- GoogleUtilities/Environment (~> 6.2)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseAuthInterop (1.0.0)
- FirebaseCore (6.2.3):
- FirebaseCore (6.3.3):
- FirebaseCoreDiagnostics (~> 1.0)
- FirebaseCoreDiagnosticsInterop (~> 1.0)
- GoogleUtilities/Environment (~> 6.2)
- GoogleUtilities/Logger (~> 6.2)
- FirebaseCoreDiagnostics (1.0.1):
- FirebaseCoreDiagnostics (1.1.1):
- FirebaseCoreDiagnosticsInterop (~> 1.0)
- GoogleDataTransportCCTSupport (~> 1.0)
- GoogleUtilities/Environment (~> 6.2)
- GoogleUtilities/Logger (~> 6.2)
- FirebaseCoreDiagnosticsInterop (1.0.0)
- FirebaseDatabase (6.1.0):
- nanopb (~> 0.3.901)
- FirebaseCoreDiagnosticsInterop (1.1.0)
- FirebaseDatabase (6.1.2):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.0)
- leveldb-library (~> 1.18)
- leveldb-library (~> 1.22)
- FirebaseDynamicLinks (4.0.5):
- FirebaseAnalyticsInterop (~> 1.3)
- FirebaseCore (~> 6.2)
- FirebaseFirestore (1.5.0):
- FirebaseFirestore (1.7.0):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.2)
- FirebaseFirestore/abseil-cpp (= 1.5.0)
- FirebaseFirestore/abseil-cpp (= 1.7.0)
- "gRPC-C++ (= 0.0.9)"
- leveldb-library (~> 1.22)
- nanopb (~> 0.3.901)
- Protobuf (~> 3.1)
- FirebaseFirestore/abseil-cpp (1.5.0):
- Protobuf (>= 3.9.2, ~> 3.9)
- FirebaseFirestore/abseil-cpp (1.7.0):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.2)
- "gRPC-C++ (= 0.0.9)"
- leveldb-library (~> 1.22)
- nanopb (~> 0.3.901)
- Protobuf (~> 3.1)
- Protobuf (>= 3.9.2, ~> 3.9)
- FirebaseFunctions (2.5.1):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.0)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseInAppMessaging (0.15.4):
- FirebaseInAppMessaging (0.15.5):
- FirebaseAnalyticsInterop (~> 1.3)
- FirebaseCore (~> 6.2)
- FirebaseInstanceID (~> 4.0)
- GoogleDataTransportCCTSupport (~> 1.0)
- FirebaseInAppMessagingDisplay (0.15.4):
- FirebaseInAppMessagingDisplay (0.15.5):
- FirebaseCore (~> 6.2)
- FirebaseInAppMessaging (>= 0.15.0)
- FirebaseInstanceID (4.2.5):
- FirebaseInstanceID (4.2.7):
- FirebaseCore (~> 6.0)
- GoogleUtilities/Environment (~> 6.0)
- GoogleUtilities/UserDefaults (~> 6.0)
- FirebaseMessaging (4.1.4):
- FirebaseMessaging (4.1.8):
- FirebaseAnalyticsInterop (~> 1.3)
- FirebaseCore (~> 6.2)
- FirebaseInstanceID (~> 4.1)
@@ -155,9 +156,9 @@ PODS:
- GoogleUtilities/Environment (~> 6.2)
- GoogleUtilities/Reachability (~> 6.2)
- GoogleUtilities/UserDefaults (~> 6.2)
- Protobuf (~> 3.1)
- FirebaseMLCommon (0.18.0):
- FirebaseCore (~> 6.2)
- Protobuf (>= 3.9.2, ~> 3.9)
- FirebaseMLCommon (0.19.0):
- FirebaseCore (~> 6.3)
- FirebaseInstanceID (~> 4.2)
- GoogleToolboxForMac/Logger (~> 2.1)
- "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
@@ -165,41 +166,41 @@ PODS:
- GoogleUtilities/UserDefaults (~> 6.0)
- GTMSessionFetcher/Core (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseMLNaturalLanguage (0.16.3):
- FirebaseCore (~> 6.0)
- FirebaseMLCommon (~> 0.17)
- FirebaseMLNaturalLanguage (0.17.0):
- FirebaseCore (~> 6.3)
- FirebaseMLCommon (~> 0.19)
- GoogleToolboxForMac/Logger (~> 2.1)
- "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
- "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)"
- GTMSessionFetcher/Core (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseMLNLLanguageID (0.16.3):
- FirebaseCore (~> 6.0)
- FirebaseMLNaturalLanguage (~> 0.16)
- FirebaseMLNLSmartReply (0.16.3):
- FirebaseCore (~> 6.0)
- FirebaseMLNaturalLanguage (~> 0.16)
- FirebaseMLNLLanguageID (~> 0.16)
- FirebaseRemoteConfig (~> 4.2)
- FirebaseMLVision (0.18.0):
- FirebaseCore (~> 6.2)
- FirebaseMLCommon (~> 0.18)
- FirebaseMLNLLanguageID (0.17.0):
- FirebaseCore (~> 6.3)
- FirebaseMLNaturalLanguage (~> 0.17)
- FirebaseMLNLSmartReply (0.17.0):
- FirebaseCore (~> 6.3)
- FirebaseMLNaturalLanguage (~> 0.17)
- FirebaseMLNLLanguageID (~> 0.17)
- FirebaseRemoteConfig (~> 4.4)
- FirebaseMLVision (0.19.0):
- FirebaseCore (~> 6.3)
- FirebaseMLCommon (~> 0.19)
- GoogleAPIClientForREST/Core (~> 1.3)
- GoogleAPIClientForREST/Vision (~> 1.3)
- GoogleToolboxForMac/Logger (~> 2.1)
- "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
- GTMSessionFetcher/Core (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseMLVisionBarcodeModel (0.18.0):
- FirebaseMLVision (~> 0.18)
- FirebaseMLVisionFaceModel (0.18.0):
- FirebaseMLVision (~> 0.18)
- FirebaseMLVisionLabelModel (0.18.0):
- FirebaseMLVision (~> 0.18)
- FirebaseMLVisionTextModel (0.18.0):
- FirebaseMLVision (~> 0.18)
- FirebasePerformance (3.1.4):
- FirebaseCore (~> 6.2)
- FirebaseMLVisionBarcodeModel (0.19.0):
- FirebaseMLVision (~> 0.19)
- FirebaseMLVisionFaceModel (0.19.0):
- FirebaseMLVision (~> 0.19)
- FirebaseMLVisionLabelModel (0.19.0):
- FirebaseMLVision (~> 0.19)
- FirebaseMLVisionTextModel (0.19.0):
- FirebaseMLVision (~> 0.19)
- FirebasePerformance (3.1.6):
- FirebaseCore (~> 6.3)
- FirebaseInstanceID (~> 4.2)
- FirebaseRemoteConfig (~> 4.4)
- GoogleToolboxForMac/Logger (~> 2.1)
@@ -209,14 +210,14 @@ PODS:
- GoogleUtilities/MethodSwizzler (~> 6.2)
- GTMSessionFetcher/Core (~> 1.1)
- Protobuf (~> 3.9)
- FirebaseRemoteConfig (4.4.0):
- FirebaseRemoteConfig (4.4.4):
- FirebaseABTesting (~> 3.1)
- FirebaseAnalyticsInterop (~> 1.4)
- FirebaseCore (~> 6.2)
- FirebaseInstanceID (~> 4.2)
- GoogleUtilities/Environment (~> 6.2)
- "GoogleUtilities/NSData+zlib (~> 6.2)"
- Protobuf (~> 3.9)
- Protobuf (>= 3.9.2, ~> 3.9)
- FirebaseStorage (3.4.1):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.0)
@@ -231,53 +232,53 @@ PODS:
- DoubleConversion
- glog
- glog (0.3.5)
- Google-Mobile-Ads-SDK (7.50.0):
- Google-Mobile-Ads-SDK (7.52.0):
- GoogleAppMeasurement (~> 6.0)
- GoogleAPIClientForREST/Core (1.3.10):
- GTMSessionFetcher (>= 1.1.7)
- GoogleAPIClientForREST/Vision (1.3.10):
- GoogleAPIClientForREST/Core
- GTMSessionFetcher (>= 1.1.7)
- GoogleAppMeasurement (6.1.1):
- GoogleAppMeasurement (6.1.5):
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (~> 0.3)
- GoogleDataTransport (1.2.0)
- GoogleDataTransportCCTSupport (1.0.4):
- GoogleDataTransport (~> 1.2)
- nanopb
- GoogleToolboxForMac/DebugUtils (2.2.1):
- GoogleToolboxForMac/Defines (= 2.2.1)
- GoogleToolboxForMac/Defines (2.2.1)
- GoogleToolboxForMac/Logger (2.2.1):
- GoogleToolboxForMac/Defines (= 2.2.1)
- "GoogleToolboxForMac/NSData+zlib (2.2.1)":
- GoogleToolboxForMac/Defines (= 2.2.1)
- "GoogleToolboxForMac/NSDictionary+URLArguments (2.2.1)":
- GoogleToolboxForMac/DebugUtils (= 2.2.1)
- GoogleToolboxForMac/Defines (= 2.2.1)
- "GoogleToolboxForMac/NSString+URLArguments (= 2.2.1)"
- "GoogleToolboxForMac/NSString+URLArguments (2.2.1)"
- GoogleUtilities/AppDelegateSwizzler (6.3.0):
- nanopb (= 0.3.9011)
- GoogleDataTransport (3.0.1)
- GoogleDataTransportCCTSupport (1.2.1):
- GoogleDataTransport (~> 3.0)
- nanopb (~> 0.3.901)
- GoogleToolboxForMac/DebugUtils (2.2.2):
- GoogleToolboxForMac/Defines (= 2.2.2)
- GoogleToolboxForMac/Defines (2.2.2)
- GoogleToolboxForMac/Logger (2.2.2):
- GoogleToolboxForMac/Defines (= 2.2.2)
- "GoogleToolboxForMac/NSData+zlib (2.2.2)":
- GoogleToolboxForMac/Defines (= 2.2.2)
- "GoogleToolboxForMac/NSDictionary+URLArguments (2.2.2)":
- GoogleToolboxForMac/DebugUtils (= 2.2.2)
- GoogleToolboxForMac/Defines (= 2.2.2)
- "GoogleToolboxForMac/NSString+URLArguments (= 2.2.2)"
- "GoogleToolboxForMac/NSString+URLArguments (2.2.2)"
- GoogleUtilities/AppDelegateSwizzler (6.3.1):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (6.3.0)
- GoogleUtilities/ISASwizzler (6.3.0)
- GoogleUtilities/Logger (6.3.0):
- GoogleUtilities/Environment (6.3.1)
- GoogleUtilities/ISASwizzler (6.3.1)
- GoogleUtilities/Logger (6.3.1):
- GoogleUtilities/Environment
- GoogleUtilities/MethodSwizzler (6.3.0):
- GoogleUtilities/MethodSwizzler (6.3.1):
- GoogleUtilities/Logger
- GoogleUtilities/Network (6.3.0):
- GoogleUtilities/Network (6.3.1):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (6.3.0)"
- GoogleUtilities/Reachability (6.3.0):
- "GoogleUtilities/NSData+zlib (6.3.1)"
- GoogleUtilities/Reachability (6.3.1):
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (6.3.0):
- GoogleUtilities/UserDefaults (6.3.1):
- GoogleUtilities/Logger
- "gRPC-C++ (0.0.9)":
- "gRPC-C++/Implementation (= 0.0.9)"
@@ -295,21 +296,21 @@ PODS:
- gRPC-Core/Interface (= 1.21.0)
- nanopb (~> 0.3)
- gRPC-Core/Interface (1.21.0)
- GTMSessionFetcher (1.2.2):
- GTMSessionFetcher/Full (= 1.2.2)
- GTMSessionFetcher/Core (1.2.2)
- GTMSessionFetcher/Full (1.2.2):
- GTMSessionFetcher/Core (= 1.2.2)
- GTMSessionFetcher (1.3.0):
- GTMSessionFetcher/Full (= 1.3.0)
- GTMSessionFetcher/Core (1.3.0)
- GTMSessionFetcher/Full (1.3.0):
- GTMSessionFetcher/Core (= 1.3.0)
- Jet (0.4.4):
- React
- leveldb-library (1.22)
- nanopb (0.3.901):
- nanopb/decode (= 0.3.901)
- nanopb/encode (= 0.3.901)
- nanopb/decode (0.3.901)
- nanopb/encode (0.3.901)
- nanopb (0.3.9011):
- nanopb/decode (= 0.3.9011)
- nanopb/encode (= 0.3.9011)
- nanopb/decode (0.3.9011)
- nanopb/encode (0.3.9011)
- PersonalizedAdConsent (1.0.3)
- Protobuf (3.9.2)
- Protobuf (3.10.0)
- React (0.60.5):
- React-Core (= 0.60.5)
- React-DevSupport (= 0.60.5)
@@ -379,92 +380,92 @@ PODS:
- React-RCTWebSocket (0.60.5):
- React-Core (= 0.60.5)
- RNFBAdmob (6.0.4):
- Firebase/AdMob (~> 6.8.1)
- Firebase/Analytics (~> 6.8.1)
- Firebase/Core (~> 6.8.1)
- Firebase/AdMob (~> 6.12.0)
- Firebase/Analytics (~> 6.12.0)
- Firebase/Core (~> 6.12.0)
- PersonalizedAdConsent
- React
- RNFBApp
- RNFBAnalytics (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- React
- RNFBApp
- RNFBApp (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- React
- RNFBAuth (6.0.4):
- Firebase/Auth (~> 6.8.1)
- Firebase/Core (~> 6.8.1)
- Firebase/Auth (~> 6.12.0)
- Firebase/Core (~> 6.12.0)
- React
- RNFBApp
- RNFBCrashlytics (6.0.4):
- Crashlytics (~> 3.12.0)
- Fabric (~> 1.9.0)
- Firebase/Core (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- React
- RNFBApp
- RNFBDatabase (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Database (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/Database (~> 6.12.0)
- React
- RNFBApp
- RNFBDynamicLinks (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/DynamicLinks (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/DynamicLinks (~> 6.12.0)
- React
- RNFBApp
- RNFBFirestore (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Firestore (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/Firestore (~> 6.12.0)
- React
- RNFBApp
- RNFBFunctions (6.0.4):
- Firebase/Functions (~> 6.8.1)
- Firebase/Functions (~> 6.12.0)
- React
- RNFBApp
- RNFBIid (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- React
- RNFBApp
- RNFBInAppMessaging (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/InAppMessagingDisplay (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/InAppMessagingDisplay (~> 6.12.0)
- React
- RNFBApp
- RNFBMessaging (6.0.4):
- Firebase/Messaging (~> 6.8.1)
- Firebase/Messaging (~> 6.12.0)
- React
- RNFBApp
- RNFBMLNaturalLanguage (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/MLCommon (~> 6.8.1)
- Firebase/MLNaturalLanguage (~> 6.8.1)
- Firebase/MLNLLanguageID (~> 6.8.1)
- Firebase/MLNLSmartReply (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/MLCommon (~> 6.12.0)
- Firebase/MLNaturalLanguage (~> 6.12.0)
- Firebase/MLNLLanguageID (~> 6.12.0)
- Firebase/MLNLSmartReply (~> 6.12.0)
- React
- RNFBApp
- RNFBMLVision (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/MLVision (~> 6.8.1)
- Firebase/MLVisionBarcodeModel (~> 6.8.1)
- Firebase/MLVisionFaceModel (~> 6.8.1)
- Firebase/MLVisionLabelModel (~> 6.8.1)
- Firebase/MLVisionTextModel (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/MLVision (~> 6.12.0)
- Firebase/MLVisionBarcodeModel (~> 6.12.0)
- Firebase/MLVisionFaceModel (~> 6.12.0)
- Firebase/MLVisionLabelModel (~> 6.12.0)
- Firebase/MLVisionTextModel (~> 6.12.0)
- React
- RNFBApp
- RNFBPerf (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Performance (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/Performance (~> 6.12.0)
- React
- RNFBApp
- RNFBRemoteConfig (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/RemoteConfig (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/RemoteConfig (~> 6.12.0)
- React
- RNFBApp
- RNFBStorage (6.0.4):
- Firebase/Core (~> 6.8.1)
- Firebase/Storage (~> 6.8.1)
- Firebase/Core (~> 6.12.0)
- Firebase/Storage (~> 6.12.0)
- React
- RNFBApp
- yoga (0.60.5.React)
@@ -646,52 +647,52 @@ SPEC CHECKSUMS:
Crashlytics: 07fb167b1694128c1c9a5a5cc319b0e9c3ca0933
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
Fabric: f988e33c97f08930a413e08123064d2e5f68d655
Firebase: 9cbe4e5b5eaafa05dc932be58b7c8c3820d71e88
FirebaseABTesting: 662e8de812ceb5d57ad66381f6402f4d28dc5c91
FirebaseAnalytics: 843c7f64a8f9c79f0d03281197ebe7bb1d58d477
Firebase: da031bc7012374e3bed17a6731b89327b29863b9
FirebaseABTesting: 0d10f3cdc3fa00f3f175b5b56c1003c8e888299f
FirebaseAnalytics: 4e53a7eb7b76bc703c4d9239bc964545e9b23361
FirebaseAnalyticsInterop: d48b6ab67bcf016a05e55b71fc39c61c0cb6b7f3
FirebaseAuth: e7f86c2dfc57281cd01f7da5e4b40e01e4510a4a
FirebaseAuth: b401a012cc33b04df3b52bb308b04e8766f2693e
FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc
FirebaseCore: e9d9bd1dae61c1e82bc1e0e617a9d832392086a0
FirebaseCoreDiagnostics: 4c04ae09d0ab027c30179828c6bb47764df1bd13
FirebaseCoreDiagnosticsInterop: 6829da2b8d1fc795ff1bd99df751d3788035d2cb
FirebaseDatabase: 518cd94286de2ee999e19383a2a6ae04c81ce993
FirebaseCore: bcd6c112429249d7921e907d661e8955a3549e26
FirebaseCoreDiagnostics: af29e43048607588c050889d19204f4d7b758c9f
FirebaseCoreDiagnosticsInterop: e9b1b023157e3a2fc6418b5cb601e79b9af7b3a0
FirebaseDatabase: 963515d232ded06f36f6ce830507c94551866170
FirebaseDynamicLinks: db62e9da4788f9c5ebce2028dab933a0c158cfe2
FirebaseFirestore: c5873e279490fbe02239ab2cdfb91c2d546261cc
FirebaseFirestore: 1c7ed32c09d6b0148034e035d0c07783ca45bac3
FirebaseFunctions: 5af7c35d1c5e41608fecbb667eb6c4e672e318d0
FirebaseInAppMessaging: 54bcfe1cf2a48a8f5cdcac487a585c0e9b440d9a
FirebaseInAppMessagingDisplay: 66267552890939d394a961ee4cac5cdfd41f17bb
FirebaseInstanceID: 550df9be1f99f751d8fcde3ac342a1e21a0e6c42
FirebaseMessaging: 9483ac438b7b223c09dad8712310e9ee7d562c99
FirebaseMLCommon: 45b456098f5d38c0fe023dd6dca3ee0f91256b2d
FirebaseMLNaturalLanguage: a8b1308281ba28950a9a82e084ac998800abd506
FirebaseMLNLLanguageID: bb78d1a81a610c6e99f756724c0326c732c70cb3
FirebaseMLNLSmartReply: 94d6270f9ec11591b8988e027aa11e1c3a0f3a55
FirebaseMLVision: 33745e08da6adc5375c7979b581b3521dc057f74
FirebaseMLVisionBarcodeModel: 2dbbd5eb768bb3893d3f6096c8bafadd3c54daa9
FirebaseMLVisionFaceModel: dc8b6f04d7f704a6ae135d4636e80e952b6988d7
FirebaseMLVisionLabelModel: 9ceabd1e369c72716b47916a14278fcc17583da3
FirebaseMLVisionTextModel: a552ff2baa26074923f71b499152a93955bba233
FirebasePerformance: a28490ad3b116380ff2d8300a67051626d01d09e
FirebaseRemoteConfig: a1b49ebfddeaccda10d76fd8dc2cc1aa215f9c43
FirebaseInAppMessaging: acbfa8c5582b11ccc0366511d29ef1d288f302fc
FirebaseInAppMessagingDisplay: 60a65c8277f17675a8a5b92e9a97cd914b45d4ff
FirebaseInstanceID: ebd2ea79ee38db0cb5f5167b17a0d387e1cc7b6e
FirebaseMessaging: de30f83a372a390be6f2ba44ec43a45b7ccdb43f
FirebaseMLCommon: 074a67e05122b1c9f6401a4e33b2cea3b4efd224
FirebaseMLNaturalLanguage: 9d38301a41b1201d248588bf66937b975391e8f4
FirebaseMLNLLanguageID: afd2e97dfc8ff215f7527acc7e4cd56d4f537737
FirebaseMLNLSmartReply: 9fb6e404516ea4a3425d210542fedba4fe9a92be
FirebaseMLVision: 7a456009787690e3b53436092ae9b635563de8f3
FirebaseMLVisionBarcodeModel: 96ef18a75ecdf867244ef2e75c8c1f01517667dc
FirebaseMLVisionFaceModel: d6ba42000f263df52187aee936262bc2002b3389
FirebaseMLVisionLabelModel: 7638a20d27219d5baa4b534a62375fc1d5bd077d
FirebaseMLVisionTextModel: c264caa3100ca804580bf2a7c1cb9ff390d1f471
FirebasePerformance: 23670aa4299dc16da54f816cc5ccca937639f463
FirebaseRemoteConfig: 8bb483b372bf859635c719d01911d5f7bf6df4b4
FirebaseStorage: b7c6d00997bc21d4465453bdcc5cc65513110fed
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
Google-Mobile-Ads-SDK: d48dbaf5bae1ab7a94a9786f493c26c454bc6f16
Google-Mobile-Ads-SDK: 62f6244637306cb60a1b4adda067f53224c7a860
GoogleAPIClientForREST: 4acfffd77f1c3c8741b6be9eaed0e603278efbde
GoogleAppMeasurement: 86a82f0e1f20b8eedf8e20326530138fd71409de
GoogleDataTransport: 8f9897b8e073687f24ca8d3c3a8013dec7d2d1cc
GoogleDataTransportCCTSupport: 7455d07b98851aa63e4c05a34dad356ca588479e
GoogleToolboxForMac: b3553629623a3b1bff17f555e736cd5a6d95ad55
GoogleUtilities: 9c2c544202301110b29f7974a82e77fdcf12bf51
GoogleAppMeasurement: 037f46d1d8ae8b312720f1042585ab961a1289e3
GoogleDataTransport: 166f9b9f82cbf60a204e8fe2daa9db3e3ec1fb15
GoogleDataTransportCCTSupport: f6ab1962e9dc05ab1fb938b795e5b310209edeec
GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3
GoogleUtilities: f895fde57977df4e0233edda0dbeac490e3703b6
"gRPC-C++": 9dfe7b44821e7b3e44aacad2af29d2c21f7cde83
gRPC-Core: c9aef9a261a1247e881b18059b84d597293c9947
GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23
GTMSessionFetcher: 43b8b64263023d4f32caa0b40f4c8bfa3c5f36d8
Jet: 28e2deb607658bd5c5d24e3fcb926bb3f7daf59e
leveldb-library: 55d93ee664b4007aac644a782d11da33fba316f7
nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
PersonalizedAdConsent: b50a8a5d6065b6db23121e8fcc0dce2ae983f6ea
Protobuf: 67fb42ba613def994e61854de2b3164f13790cc4
Protobuf: a4dc852ad69c027ca2166ed287b856697814375b
React: 53c53c4d99097af47cf60594b8706b4e3321e722
React-Core: ba421f6b4f4cbe2fb17c0b6fc675f87622e78a64
React-cxxreact: 8384287780c4999351ad9b6e7a149d9ed10a2395
@@ -709,23 +710,23 @@ SPEC CHECKSUMS:
React-RCTText: b074d89033583d4f2eb5faf7ea2db3a13c7553a2
React-RCTVibration: 2105b2e0e2b66a6408fc69a46c8a7fb5b2fdade0
React-RCTWebSocket: cd932a16b7214898b6b7f788c8bddb3637246ac4
RNFBAdmob: 06e97901b77a18f0d44c687707acd1d02d4f5f69
RNFBAnalytics: 89c49cea835306bcd72f872f05966fc2e8dbffcf
RNFBApp: cce40af7fd9a8bc12858ce5ec21e20ac7987e0ca
RNFBAuth: 3b4847dd59141f4c7ad59eee50a37347f3db8eb7
RNFBCrashlytics: 662f3b34926cb682147e04215b154cfa6d2880c0
RNFBDatabase: 4db24df43ee682567cfc6f882cd05de6e5f4c752
RNFBDynamicLinks: d25812cbf58a16926fc890cb5ff3c76f3494d315
RNFBFirestore: 3aa9a1d4572b2bad1770173790dc2187deac36ea
RNFBFunctions: 86095c4dfef6b5c4eeef686a0d4e54a8c82965a7
RNFBIid: aba2148db40ca2dd9ca5955fcd0d9b4774ea468e
RNFBInAppMessaging: 64b0641be9d0881b1de8d71558a757d1cbf158a7
RNFBMessaging: 26f689e1b3e531c2cb5ae94469e77ec736fe0f05
RNFBMLNaturalLanguage: ed5873c88f57f55074080b9705970e647a8a7bb6
RNFBMLVision: 9bd170f46918412115ae91df22dce2e624d4780a
RNFBPerf: d39ca8bac80eb25adbf4f6ec600df5f90528c667
RNFBRemoteConfig: 616780b11a4be81a7c40b681446b071be0663cca
RNFBStorage: 0fba295bf17319285e40d6f118c70e86fa81b391
RNFBAdmob: 7f18fb194535a9c20ee860241106d1676845b849
RNFBAnalytics: 20b856acfcb4bc9fcba21acdbf12b9e8382abb0d
RNFBApp: e8297a5fe13b0cb3764454d292df92fa52a7bc59
RNFBAuth: 8a1abc2cc14addec47a2284539e2da08ba831fb6
RNFBCrashlytics: d631707f40c550156e6b71346dd49c18d5d094b0
RNFBDatabase: a0b2c0703d72f11313e54659603776be7a7077e2
RNFBDynamicLinks: 0f36268e3ec5bec3314dca1c05d5e2d9aa6b9359
RNFBFirestore: 60c3a7a3c97ad60e77cc6250b6e17256d729c077
RNFBFunctions: ccab4595677467834a236146e52da41fadc8b758
RNFBIid: a54368ec8f34aa51867a82a39c9c7be9a5f3adba
RNFBInAppMessaging: c0eaf187bb2a4e8f0a4e101110ce408934cab672
RNFBMessaging: a60210621cbc54210b2ae7dc9c90fae29977700d
RNFBMLNaturalLanguage: 3dc12e02eb952358be2c8616718c241382585d3a
RNFBMLVision: 4e3c113b6e9e5103bef55370a605125ee85c2596
RNFBPerf: 53a2a1d48446329080f91421a8dbd56929b918f6
RNFBRemoteConfig: 65027e31851aa005735121d9a907892e8fbb043f
RNFBStorage: 24365201a8aba2d468fadadebe54ccecd8126160
yoga: 312528f5bbbba37b4dcea5ef00e8b4033fdd9411
PODFILE CHECKSUM: 4ceb34e93fa1dd96bcca7e61934b407531c8e96e