From 895a56bfe24b759b14b3b01ea1ff486ac63fce28 Mon Sep 17 00:00:00 2001 From: "Vladimir P." Date: Mon, 18 Nov 2024 15:17:51 +0700 Subject: [PATCH] Revert "feat: migrations for Platform v0.22 to v1" --- DashSync.podspec | 1 + .../Models/DAPI/DSPlatformDocumentsRequest.m | 8 +- .../Networking/DSDAPIPlatformNetworkService.m | 87 +-- .../DSDAPIPlatformNetworkServiceProtocol.h | 26 +- .../Models/Identity/DSBlockchainIdentity.m | 2 +- .../Chain Managers/DSMasternodeManager.m | 6 +- .../Masternode/DSMasternodeListDiffService.m | 2 +- .../Masternode/DSMasternodeListService.h | 6 +- .../Masternode/DSMasternodeListService.m | 4 +- DashSync/shared/dpns-contract.json | 97 +-- Example/DashSync.xcodeproj/project.pbxproj | 10 + Example/Podfile.lock | 673 +++++++++++++++++- Gemfile | 2 +- 13 files changed, 781 insertions(+), 143 deletions(-) diff --git a/DashSync.podspec b/DashSync.podspec index b185dc97d..f052a94ad 100644 --- a/DashSync.podspec +++ b/DashSync.podspec @@ -38,6 +38,7 @@ Pod::Spec.new do |s| s.dependency 'CocoaLumberjack', '3.7.2' s.ios.dependency 'DWAlertController', '0.2.1' s.dependency 'DSDynamicOptions', '0.1.2' + s.dependency 'DAPI-GRPC', '0.22.0-dev.8' s.dependency 'TinyCborObjc', '0.4.6' s.prefix_header_contents = '#import "DSEnvironment.h"' diff --git a/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m b/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m index 5019d61fc..1fde02804 100644 --- a/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m +++ b/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m @@ -57,7 +57,7 @@ + (instancetype)dpnsRequestForUsername:(NSString *)username inDomain:(NSString * + (instancetype)dpnsRequestForUserId:(NSData *)userId { DSPlatformDocumentsRequest *platformDocumentsRequest = [[DSPlatformDocumentsRequest alloc] init]; - platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"records.identity == %@", userId]; // why not path predicate and then predicate? + platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"records.dashUniqueIdentityId == %@", userId]; platformDocumentsRequest.startAt = nil; platformDocumentsRequest.limit = 100; platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverIndex; @@ -115,7 +115,7 @@ + (instancetype)dashpayRequestForContactRequestsForSendingUserId:(NSData *)userI platformDocumentsRequest.startAtIncluded = false; platformDocumentsRequest.limit = 100; platformDocumentsRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"$createdAt" ascending:YES]]; - platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; // why not over index? + platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; platformDocumentsRequest.type = DSPlatformDocumentType_Document; platformDocumentsRequest.tableName = @"contactRequest"; platformDocumentsRequest.prove = DSPROVE_PLATFORM_SINDEXES; @@ -131,7 +131,7 @@ + (instancetype)dashpayRequestForContactRequestsForRecipientUserId:(NSData *)use platformDocumentsRequest.startAtIncluded = false; platformDocumentsRequest.limit = 100; platformDocumentsRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"$createdAt" ascending:YES]]; - platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; // why not over index? + platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; platformDocumentsRequest.type = DSPlatformDocumentType_Document; platformDocumentsRequest.tableName = @"contactRequest"; platformDocumentsRequest.prove = DSPROVE_PLATFORM_SINDEXES; @@ -140,7 +140,7 @@ + (instancetype)dashpayRequestForContactRequestsForRecipientUserId:(NSData *)use + (instancetype)dashpayRequestForContactRequestForSendingUserId:(NSData *)userId toRecipientUserId:(NSData *)toUserId { DSPlatformDocumentsRequest *platformDocumentsRequest = [[DSPlatformDocumentsRequest alloc] init]; - platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"%K == %@ && toUserId == %@", @"$ownerId", userId, toUserId]; // why not path predicate and predicate? + platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"%K == %@ && toUserId == %@", @"$ownerId", userId, toUserId]; platformDocumentsRequest.startAt = nil; platformDocumentsRequest.limit = 100; platformDocumentsRequest.type = DSPlatformDocumentType_Document; diff --git a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m index da679a3e6..eb061c47b 100644 --- a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m +++ b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m @@ -450,6 +450,27 @@ - (void)loadBloomFilter:(NSString *)filter #pragma mark Layer 2 +- (id)fetchIdentityIdsByKeyHashes:(NSArray *)keyHashesArray + completionQueue:(dispatch_queue_t)completionQueue + success:(void (^)(NSArray *identityIds))success + failure:(void (^)(NSError *error))failure { + NSParameterAssert(keyHashesArray); + NSParameterAssert(completionQueue); + DSPlatformRequestLog(@"fetchIdentityIdsByKeyHashes %@", keyHashesArray); + GetIdentityIdsByPublicKeyHashesRequest *getIdentityIdsByPublicKeyHashesRequest = [[GetIdentityIdsByPublicKeyHashesRequest alloc] init]; + getIdentityIdsByPublicKeyHashesRequest.publicKeyHashesArray = [keyHashesArray mutableCopy]; + getIdentityIdsByPublicKeyHashesRequest.prove = DSPROVE_PLATFORM; + DSDAPIGRPCResponseHandler *responseHandler = [[DSDAPIGRPCResponseHandler alloc] initForGetIdentityIDsByPublicKeyHashesRequest:keyHashesArray withChain:self.chain requireProof:DSPROVE_PLATFORM]; + responseHandler.host = [NSString stringWithFormat:@"%@:%d", self.ipAddress, self.chain.standardDapiGRPCPort]; + responseHandler.dispatchQueue = self.grpcDispatchQueue; + responseHandler.completionQueue = completionQueue; + responseHandler.successHandler = success; + responseHandler.errorHandler = failure; + GRPCUnaryProtoCall *call = [self.gRPCClient getIdentityIdsByPublicKeyHashesWithMessage:getIdentityIdsByPublicKeyHashesRequest responseHandler:responseHandler callOptions:nil]; + [call start]; + return (id)call; +} + - (id)fetchIdentitiesByKeyHashes:(NSArray *)keyHashesArray completionQueue:(dispatch_queue_t)completionQueue success:(void (^)(NSArray *identityDictionaries))success @@ -457,60 +478,18 @@ - (void)loadBloomFilter:(NSString *)filter NSParameterAssert(keyHashesArray); NSParameterAssert(completionQueue); DSPlatformRequestLog(@"fetchIdentitiesByKeyHashes %@", keyHashesArray); - - NSMutableArray *identityDictionaries = [NSMutableArray array]; - __block NSUInteger remainingRequests = keyHashesArray.count; - __block NSError *lastError = nil; - - for (NSData *keyHash in keyHashesArray) { - GetIdentityByPublicKeyHashRequest *getIdentityByPublicKeyHashRequest = [[GetIdentityByPublicKeyHashRequest alloc] init]; - getIdentityByPublicKeyHashRequest.publicKeyHash = keyHash; - getIdentityByPublicKeyHashRequest.prove = DSPROVE_PLATFORM; - - DSDAPIGRPCResponseHandler *responseHandler = [[DSDAPIGRPCResponseHandler alloc] initForGetIdentitiesByPublicKeyHashesRequest:@[keyHash] withChain:self.chain requireProof:DSPROVE_PLATFORM]; - responseHandler.host = [NSString stringWithFormat:@"%@:%d", self.ipAddress, self.chain.standardDapiGRPCPort]; - responseHandler.dispatchQueue = self.grpcDispatchQueue; - responseHandler.completionQueue = completionQueue; - - responseHandler.successHandler = ^(NSDictionary *responseDictionary) { - if (responseDictionary) { - @synchronized(identityDictionaries) { - [identityDictionaries addObject:responseDictionary]; - } - } - @synchronized(self) { - remainingRequests--; - if (remainingRequests == 0) { - if (lastError) { - if (failure) { - failure(lastError); - } - } else { - if (success) { - success([identityDictionaries copy]); - } - } - } - } - }; - - responseHandler.errorHandler = ^(NSError *error) { - lastError = error; - @synchronized(self) { - remainingRequests--; - if (remainingRequests == 0) { - if (failure) { - failure(error); - } - } - } - }; - - GRPCUnaryProtoCall *call = [self.gRPCClient getIdentityByPublicKeyHashWithMessage:getIdentityByPublicKeyHashRequest responseHandler:responseHandler callOptions:nil]; - [call start]; - } - - return nil; + GetIdentitiesByPublicKeyHashesRequest *getIdentitiesByPublicKeyHashesRequest = [[GetIdentitiesByPublicKeyHashesRequest alloc] init]; + getIdentitiesByPublicKeyHashesRequest.publicKeyHashesArray = [keyHashesArray mutableCopy]; + getIdentitiesByPublicKeyHashesRequest.prove = DSPROVE_PLATFORM; + DSDAPIGRPCResponseHandler *responseHandler = [[DSDAPIGRPCResponseHandler alloc] initForGetIdentitiesByPublicKeyHashesRequest:keyHashesArray withChain:self.chain requireProof:DSPROVE_PLATFORM]; + responseHandler.host = [NSString stringWithFormat:@"%@:%d", self.ipAddress, self.chain.standardDapiGRPCPort]; + responseHandler.dispatchQueue = self.grpcDispatchQueue; + responseHandler.completionQueue = completionQueue; + responseHandler.successHandler = success; + responseHandler.errorHandler = failure; + GRPCUnaryProtoCall *call = [self.gRPCClient getIdentitiesByPublicKeyHashesWithMessage:getIdentitiesByPublicKeyHashesRequest responseHandler:responseHandler callOptions:nil]; + [call start]; + return (id)call; } - (id)fetchContractForId:(NSData *)contractId diff --git a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h index ad67d2e08..ae5dc9118 100644 --- a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h +++ b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h @@ -487,21 +487,31 @@ Get a list of users after matching search criteria failure:(void (^)(NSError *error))failure; /** -Get a list of identities corresponding to the provided key hashes. +Get a list of identities knowing only keys they possess -This method makes individual requests for each key hash in the array and returns a list of identity dictionaries upon successful completion. If any request fails, the failure block is called. - -@param keyHashesArray An array of hashes of keys for which to fetch identities. -@param completionQueue The queue on which to execute the success or failure block. -@param success A block object to be executed when all requests finish successfully, providing an array of identity dictionaries. -@param failure A block object to be executed if any request fails, providing the error encountered. -@return Returns an object conforming to `DSDAPINetworkServiceRequest`, or `nil` if no request is made. +@param keyHashesArray An array of hashes of keys +@param completionQueue The queue in which to return the result on +@param success A block object to be executed when the request operation finishes successfully +@param failure A block object to be executed when the request operation finishes unsuccessfully */ - (id)fetchIdentitiesByKeyHashes:(NSArray *)keyHashesArray completionQueue:(dispatch_queue_t)completionQueue success:(void (^)(NSArray *identityDictionaries))success failure:(void (^)(NSError *error))failure; +/** +Get a list of identity Ids knowing only keys they possess + +@param keyHashesArray An array of hashes of keys +@param completionQueue The queue in which to return the result on +@param success A block object to be executed when the request operation finishes successfully +@param failure A block object to be executed when the request operation finishes unsuccessfully +*/ +- (id)fetchIdentityIdsByKeyHashes:(NSArray *)keyHashesArray + completionQueue:(dispatch_queue_t)completionQueue + success:(void (^)(NSArray *identityIds))success + failure:(void (^)(NSError *error))failure; + @end NS_ASSUME_NONNULL_END diff --git a/DashSync/shared/Models/Identity/DSBlockchainIdentity.m b/DashSync/shared/Models/Identity/DSBlockchainIdentity.m index bfc7b862f..f62ffd288 100644 --- a/DashSync/shared/Models/Identity/DSBlockchainIdentity.m +++ b/DashSync/shared/Models/Identity/DSBlockchainIdentity.m @@ -2197,7 +2197,7 @@ - (NSString *)dashpayDomainName { @"normalizedLabel": [username lowercaseString], @"normalizedParentDomainName": domain, @"preorderSalt": [self.usernameSalts objectForKey:usernameFullPath], - @"records": @{@"identity": uint256_data(self.uniqueID)}, + @"records": @{@"dashUniqueIdentityId": uint256_data(self.uniqueID)}, @"subdomainRules": @{@"allowSubdomains": @NO} }; DPDocument *document = [self.dpnsDocumentFactory documentOnTable:@"domain" withDataDictionary:dataDictionary usingEntropy:entropyData error:error]; diff --git a/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m b/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m index d63a89b47..92cf5bd40 100644 --- a/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m +++ b/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m @@ -104,15 +104,15 @@ - (instancetype)initWithChain:(DSChain *)chain { #pragma mark - DSMasternodeListServiceDelegate -- (DSMasternodeList *__nullable)masternodeListServiceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { +- (DSMasternodeList *__nullable)masternodeListSerivceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { return [self processRequestFromFileForBlockHash:blockHash]; } -- (void)masternodeListServiceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { +- (void)masternodeListSerivceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { [self removeOutdatedMasternodeListsBeforeBlockHash:blockHash]; } -- (void)masternodeListServiceEmptiedRetrievalQueue:(DSMasternodeListService *)service { +- (void)masternodeListSerivceEmptiedRetrievalQueue:(DSMasternodeListService *)service { if (![self.masternodeListDiffService retrievalQueueCount]) { if (![self.quorumRotationService retrievalQueueCount]) [self removeOutdatedMasternodeListsBeforeBlockHash:self.store.lastQueriedBlockHash]; diff --git a/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m b/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m index d4cc93789..8bb336468 100644 --- a/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m +++ b/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m @@ -30,7 +30,7 @@ - (void)composeMasternodeListRequest:(NSOrderedSet *)list { //there is the rare possibility we have the masternode list as a checkpoint, so lets first try that NSUInteger pos = [list indexOfObject:blockHashData]; UInt256 blockHash = blockHashData.UInt256; - DSMasternodeList *masternodeList = [self.delegate masternodeListServiceDidRequestFileFromBlockHash:self blockHash:blockHash]; + DSMasternodeList *masternodeList = [self.delegate masternodeListSerivceDidRequestFileFromBlockHash:self blockHash:blockHash]; if (masternodeList) { [self removeFromRetrievalQueue:blockHashData]; [self checkWaitingForQuorums]; diff --git a/DashSync/shared/Models/Masternode/DSMasternodeListService.h b/DashSync/shared/Models/Masternode/DSMasternodeListService.h index bb7c4de38..ae1c225f8 100644 --- a/DashSync/shared/Models/Masternode/DSMasternodeListService.h +++ b/DashSync/shared/Models/Masternode/DSMasternodeListService.h @@ -39,9 +39,9 @@ typedef NS_ENUM(NSUInteger, DSMasternodeListRequestMode) { @protocol DSMasternodeListServiceDelegate -- (DSMasternodeList *__nullable)masternodeListServiceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; -- (void)masternodeListServiceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; -- (void)masternodeListServiceEmptiedRetrievalQueue:(DSMasternodeListService *)service; +- (DSMasternodeList *__nullable)masternodeListSerivceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; +- (void)masternodeListSerivceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; +- (void)masternodeListSerivceEmptiedRetrievalQueue:(DSMasternodeListService *)service; @end diff --git a/DashSync/shared/Models/Masternode/DSMasternodeListService.m b/DashSync/shared/Models/Masternode/DSMasternodeListService.m index 5dcc72d68..17c7dd746 100644 --- a/DashSync/shared/Models/Masternode/DSMasternodeListService.m +++ b/DashSync/shared/Models/Masternode/DSMasternodeListService.m @@ -312,7 +312,7 @@ - (void)updateMasternodeRetrievalQueue { - (void)fetchMasternodeListsToRetrieve:(void (^)(NSOrderedSet *listsToRetrieve))completion { if (![self retrievalQueueCount]) { DSLog(@"[%@] No masternode lists in retrieval: %@", self.chain.name, self); - [self.delegate masternodeListServiceEmptiedRetrievalQueue:self]; + [self.delegate masternodeListSerivceEmptiedRetrievalQueue:self]; return; } if ([self.requestsInRetrieval count]) { @@ -385,7 +385,7 @@ - (void)issueWithMasternodeListFromPeer:(DSPeer *)peer { //no need to remove local masternodes [self cleanListsRetrievalQueue]; [self.store deleteAllOnChain]; - [self.delegate masternodeListServiceExceededMaxFailuresForMasternodeList:self blockHash:self.currentMasternodeList.blockHash]; + [self.delegate masternodeListSerivceExceededMaxFailuresForMasternodeList:self blockHash:self.currentMasternodeList.blockHash]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:CHAIN_FAULTY_DML_MASTERNODE_PEERS]; [self getRecentMasternodeList]; } else { diff --git a/DashSync/shared/dpns-contract.json b/DashSync/shared/dpns-contract.json index b620bb79c..81692dd88 100644 --- a/DashSync/shared/dpns-contract.json +++ b/DashSync/shared/dpns-contract.json @@ -1,14 +1,8 @@ { "documents": { "domain": { - "documentsMutable": false, - "canBeDeleted": true, - "transferable": 1, - "tradeMode": 1, - "type": "object", "indices": [ { - "name": "parentNameAndLabel", "properties": [ { "normalizedParentDomainName": "asc" @@ -17,24 +11,20 @@ "normalizedLabel": "asc" } ], - "unique": true, - "contested": { - "fieldMatches": [ - { - "field": "normalizedLabel", - "regexPattern": "^[a-zA-Z01-]{3,19}$" - } - ], - "resolution": 0, - "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name" - } + "unique": true }, { - "name": "identityId", - "nullSearchable": false, "properties": [ { - "records.identity": "asc" + "records.dashUniqueIdentityId": "asc" + } + ], + "unique": true + }, + { + "properties": [ + { + "records.dashAliasIdentityId": "asc" } ] } @@ -42,60 +32,58 @@ "properties": { "label": { "type": "string", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "pattern": "^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])$", "minLength": 3, "maxLength": 63, - "position": 0, "description": "Domain label. e.g. 'Bob'." }, "normalizedLabel": { "type": "string", - "pattern": "^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$", + "pattern": "^((?!-)[a-z0-9-]{0,62}[a-z0-9])$", "maxLength": 63, - "position": 1, - "description": "Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'", - "$comment": "Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"." - }, - "parentDomainName": { - "type": "string", - "pattern": "^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", - "minLength": 0, - "maxLength": 63, - "position": 2, - "description": "A full parent domain name. e.g. 'dash'." + "description": "Domain label in lowercase for case-insensitive uniqueness validation. e.g. 'bob'", + "$comment": "Must be equal to the label in lowercase. This property will be deprecated due to case insensitive indices" }, "normalizedParentDomainName": { "type": "string", - "pattern": "^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$", + "pattern": "^$|^((?!-)[a-z0-9-\\.]{0,189}[a-z0-9])$", "minLength": 0, - "maxLength": 63, - "position": 3, - "description": "A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'", - "$comment": "Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains." + "maxLength": 190, + "description": "A full parent domain name in lowercase for case-insensitive uniqueness validation. e.g. 'dash'", + "$comment": "Must either be equal to an existing domain or empty to create a top level domain. Only the data contract owner can create top level domains." }, "preorderSalt": { "type": "array", "byteArray": true, "minItems": 32, "maxItems": 32, - "position": 4, "description": "Salt used in the preorder document" }, "records": { "type": "object", "properties": { - "identity": { + "dashUniqueIdentityId": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identity ID to be used to create the primary name the Identity", + "$comment": "Must be equal to the document owner" + }, + "dashAliasIdentityId": { "type": "array", "byteArray": true, "minItems": 32, "maxItems": 32, - "position": 1, "contentMediaType": "application/x.dash.dpp.identifier", - "description": "Identifier name record that refers to an Identity" + "description": "Identity ID to be used to create alias names for the Identity", + "$comment": "Must be equal to the document owner" } }, + "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`", "minProperties": 1, - "position": 5, + "maxProperties": 1, "additionalProperties": false }, "subdomainRules": { @@ -104,22 +92,15 @@ "allowSubdomains": { "type": "boolean", "description": "This option defines who can create subdomains: true - anyone; false - only the domain owner", - "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains", - "position": 0 + "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains" } }, - "position": 6, "description": "Subdomain rules allow domain owners to define rules for subdomains", "additionalProperties": false, - "required": [ - "allowSubdomains" - ] + "required": ["allowSubdomains"] } }, "required": [ - "$createdAt", - "$updatedAt", - "$transferredAt", "label", "normalizedLabel", "normalizedParentDomainName", @@ -127,19 +108,12 @@ "records", "subdomainRules" ], - "transient": [ - "preorderSalt" - ], "additionalProperties": false, "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" }, "preorder": { - "documentsMutable": false, - "canBeDeleted": true, - "type": "object", "indices": [ { - "name": "saltedHash", "properties": [ { "saltedDomainHash": "asc" @@ -154,7 +128,6 @@ "byteArray": true, "minItems": 32, "maxItems": 32, - "position": 0, "description": "Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name" } }, @@ -165,4 +138,4 @@ "$comment": "Preorder documents are immutable: modification and deletion are restricted" } } -} \ No newline at end of file +} diff --git a/Example/DashSync.xcodeproj/project.pbxproj b/Example/DashSync.xcodeproj/project.pbxproj index dc8216820..53cc4cd0a 100644 --- a/Example/DashSync.xcodeproj/project.pbxproj +++ b/Example/DashSync.xcodeproj/project.pbxproj @@ -2773,10 +2773,14 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-NetworkInfo/Pods-NetworkInfo-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/DashSync-macOS/DashSync.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf-macOS/Protobuf_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/gRPC-macOS/gRPCCertificates.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DashSync.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Protobuf_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -2813,10 +2817,14 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-DashSync-DashSync_Example/Pods-DashSync-DashSync_Example-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/DashSync-iOS/DashSync.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf-iOS/Protobuf_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/gRPC-iOS/gRPCCertificates.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DashSync.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Protobuf_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -3242,6 +3250,7 @@ "-l\"BoringSSL-GRPC-iOS\"", "-l\"CocoaImageHashing-iOS\"", "-l\"CocoaLumberjack-iOS\"", + "-l\"DAPI-GRPC-iOS\"", "-l\"DSDynamicOptions-iOS\"", "-l\"DWAlertController\"", "-l\"DashSync-iOS\"", @@ -3303,6 +3312,7 @@ "-l\"BoringSSL-GRPC-iOS\"", "-l\"CocoaImageHashing-iOS\"", "-l\"CocoaLumberjack-iOS\"", + "-l\"DAPI-GRPC-iOS\"", "-l\"DSDynamicOptions-iOS\"", "-l\"DWAlertController\"", "-l\"DashSync-iOS\"", diff --git a/Example/Podfile.lock b/Example/Podfile.lock index d9b4e0e7d..c12111213 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,18 +1,663 @@ PODS: + - "!ProtoCompiler (3.21.5)": + - Protobuf (~> 3.0) + - "!ProtoCompiler-gRPCPlugin (1.49.0)": + - "!ProtoCompiler (= 3.21.5)" + - gRPC-ProtoRPC (= 1.49.0) + - abseil/algorithm/algorithm (1.20220623.0): + - abseil/base/config + - abseil/algorithm/container (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/base/atomic_hook (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/base (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/log_severity + - abseil/base/raw_logging_internal + - abseil/base/spinlock_wait + - abseil/meta/type_traits + - abseil/base/base_internal (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/base/config (1.20220623.0) + - abseil/base/core_headers (1.20220623.0): + - abseil/base/config + - abseil/base/dynamic_annotations (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver (1.20220623.0): + - abseil/base/config + - abseil/base/fast_type_id (1.20220623.0): + - abseil/base/config + - abseil/base/log_severity (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/malloc_internal (1.20220623.0): + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/raw_logging_internal + - abseil/base/prefetch (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/log_severity + - abseil/base/spinlock_wait (1.20220623.0): + - abseil/base/base_internal + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/strerror (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/throw_delegate (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/container/common (1.20220623.0): + - abseil/meta/type_traits + - abseil/types/optional + - abseil/container/compressed_tuple (1.20220623.0): + - abseil/utility/utility + - abseil/container/container_memory (1.20220623.0): + - abseil/base/config + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/container/fixed_array (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/throw_delegate + - abseil/container/compressed_tuple + - abseil/memory/memory + - abseil/container/flat_hash_map (1.20220623.0): + - abseil/algorithm/container + - abseil/base/core_headers + - abseil/container/container_memory + - abseil/container/hash_function_defaults + - abseil/container/raw_hash_map + - abseil/memory/memory + - abseil/container/flat_hash_set (1.20220623.0): + - abseil/algorithm/container + - abseil/base/core_headers + - abseil/container/container_memory + - abseil/container/hash_function_defaults + - abseil/container/raw_hash_set + - abseil/memory/memory + - abseil/container/hash_function_defaults (1.20220623.0): + - abseil/base/config + - abseil/hash/hash + - abseil/strings/cord + - abseil/strings/strings + - abseil/container/hash_policy_traits (1.20220623.0): + - abseil/meta/type_traits + - abseil/container/hashtable_debug_hooks (1.20220623.0): + - abseil/base/config + - abseil/container/hashtablez_sampler (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/stacktrace + - abseil/memory/memory + - abseil/profiling/exponential_biased + - abseil/profiling/sample_recorder + - abseil/synchronization/synchronization + - abseil/utility/utility + - abseil/container/inlined_vector (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/throw_delegate + - abseil/container/inlined_vector_internal + - abseil/memory/memory + - abseil/container/inlined_vector_internal (1.20220623.0): + - abseil/base/core_headers + - abseil/container/compressed_tuple + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/types/span + - abseil/container/layout (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/strings/strings + - abseil/types/span + - abseil/utility/utility + - abseil/container/raw_hash_map (1.20220623.0): + - abseil/base/throw_delegate + - abseil/container/container_memory + - abseil/container/raw_hash_set + - abseil/container/raw_hash_set (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/prefetch + - abseil/container/common + - abseil/container/compressed_tuple + - abseil/container/container_memory + - abseil/container/hash_policy_traits + - abseil/container/hashtable_debug_hooks + - abseil/container/hashtablez_sampler + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/utility/utility + - abseil/debugging/debugging_internal (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/errno_saver + - abseil/base/raw_logging_internal + - abseil/debugging/demangle_internal (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/stacktrace (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/debugging_internal + - abseil/debugging/symbolize (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/debugging/debugging_internal + - abseil/debugging/demangle_internal + - abseil/strings/strings + - abseil/functional/any_invocable (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/functional/bind_front (1.20220623.0): + - abseil/base/base_internal + - abseil/container/compressed_tuple + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/functional/function_ref (1.20220623.0): + - abseil/base/base_internal + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/hash/city (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/hash/hash (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/container/fixed_array + - abseil/functional/function_ref + - abseil/hash/city + - abseil/hash/low_level_hash + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/types/optional + - abseil/types/variant + - abseil/utility/utility + - abseil/hash/low_level_hash (1.20220623.0): + - abseil/base/config + - abseil/base/endian + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/memory/memory (1.20220623.0): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/meta/type_traits (1.20220623.0): + - abseil/base/config + - abseil/numeric/bits (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/numeric/int128 (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/numeric/bits + - abseil/numeric/representation (1.20220623.0): + - abseil/base/config + - abseil/profiling/exponential_biased (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/profiling/sample_recorder (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/synchronization/synchronization + - abseil/time/time + - abseil/random/distributions (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/random/internal/distribution_caller + - abseil/random/internal/fast_uniform_bits + - abseil/random/internal/fastmath + - abseil/random/internal/generate_real + - abseil/random/internal/iostream_state_saver + - abseil/random/internal/traits + - abseil/random/internal/uniform_helper + - abseil/random/internal/wide_multiply + - abseil/strings/strings + - abseil/random/internal/distribution_caller (1.20220623.0): + - abseil/base/config + - abseil/base/fast_type_id + - abseil/utility/utility + - abseil/random/internal/fast_uniform_bits (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/random/internal/traits + - abseil/random/internal/fastmath (1.20220623.0): + - abseil/numeric/bits + - abseil/random/internal/generate_real (1.20220623.0): + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/random/internal/fastmath + - abseil/random/internal/traits + - abseil/random/internal/iostream_state_saver (1.20220623.0): + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/random/internal/nonsecure_base (1.20220623.0): + - abseil/base/core_headers + - abseil/container/inlined_vector + - abseil/meta/type_traits + - abseil/random/internal/pool_urbg + - abseil/random/internal/salted_seed_seq + - abseil/random/internal/seed_material + - abseil/types/span + - abseil/random/internal/pcg_engine (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/random/internal/fastmath + - abseil/random/internal/iostream_state_saver + - abseil/random/internal/platform (1.20220623.0): + - abseil/base/config + - abseil/random/internal/pool_urbg (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/random/internal/randen + - abseil/random/internal/seed_material + - abseil/random/internal/traits + - abseil/random/seed_gen_exception + - abseil/types/span + - abseil/random/internal/randen (1.20220623.0): + - abseil/base/raw_logging_internal + - abseil/random/internal/platform + - abseil/random/internal/randen_hwaes + - abseil/random/internal/randen_slow + - abseil/random/internal/randen_engine (1.20220623.0): + - abseil/base/endian + - abseil/meta/type_traits + - abseil/random/internal/iostream_state_saver + - abseil/random/internal/randen + - abseil/random/internal/randen_hwaes (1.20220623.0): + - abseil/base/config + - abseil/random/internal/platform + - abseil/random/internal/randen_hwaes_impl + - abseil/random/internal/randen_hwaes_impl (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/numeric/int128 + - abseil/random/internal/platform + - abseil/random/internal/randen_slow (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/numeric/int128 + - abseil/random/internal/platform + - abseil/random/internal/salted_seed_seq (1.20220623.0): + - abseil/container/inlined_vector + - abseil/meta/type_traits + - abseil/random/internal/seed_material + - abseil/types/optional + - abseil/types/span + - abseil/random/internal/seed_material (1.20220623.0): + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/raw_logging_internal + - abseil/random/internal/fast_uniform_bits + - abseil/strings/strings + - abseil/types/optional + - abseil/types/span + - abseil/random/internal/traits (1.20220623.0): + - abseil/base/config + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/random/internal/uniform_helper (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/random/internal/traits + - abseil/random/internal/wide_multiply (1.20220623.0): + - abseil/base/config + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/random/internal/traits + - abseil/random/random (1.20220623.0): + - abseil/random/distributions + - abseil/random/internal/nonsecure_base + - abseil/random/internal/pcg_engine + - abseil/random/internal/pool_urbg + - abseil/random/internal/randen_engine + - abseil/random/seed_sequences + - abseil/random/seed_gen_exception (1.20220623.0): + - abseil/base/config + - abseil/random/seed_sequences (1.20220623.0): + - abseil/base/config + - abseil/random/internal/pool_urbg + - abseil/random/internal/salted_seed_seq + - abseil/random/internal/seed_material + - abseil/random/seed_gen_exception + - abseil/types/span + - abseil/status/status (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/base/strerror + - abseil/container/inlined_vector + - abseil/debugging/stacktrace + - abseil/debugging/symbolize + - abseil/functional/function_ref + - abseil/strings/cord + - abseil/strings/str_format + - abseil/strings/strings + - abseil/types/optional + - abseil/status/statusor (1.20220623.0): + - abseil/base/base + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/meta/type_traits + - abseil/status/status + - abseil/strings/strings + - abseil/types/variant + - abseil/utility/utility + - abseil/strings/cord (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/container/fixed_array + - abseil/container/inlined_vector + - abseil/functional/function_ref + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/strings/cord_internal + - abseil/strings/cordz_functions + - abseil/strings/cordz_info + - abseil/strings/cordz_statistics + - abseil/strings/cordz_update_scope + - abseil/strings/cordz_update_tracker + - abseil/strings/internal + - abseil/strings/str_format + - abseil/strings/strings + - abseil/types/optional + - abseil/types/span + - abseil/strings/cord_internal (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/base/throw_delegate + - abseil/container/compressed_tuple + - abseil/container/inlined_vector + - abseil/container/layout + - abseil/functional/function_ref + - abseil/meta/type_traits + - abseil/strings/strings + - abseil/types/span + - abseil/strings/cordz_functions (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/profiling/exponential_biased + - abseil/strings/cordz_handle (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/synchronization/synchronization + - abseil/strings/cordz_info (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/container/inlined_vector + - abseil/debugging/stacktrace + - abseil/strings/cord_internal + - abseil/strings/cordz_functions + - abseil/strings/cordz_handle + - abseil/strings/cordz_statistics + - abseil/strings/cordz_update_tracker + - abseil/synchronization/synchronization + - abseil/types/span + - abseil/strings/cordz_statistics (1.20220623.0): + - abseil/base/config + - abseil/strings/cordz_update_tracker + - abseil/strings/cordz_update_scope (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/strings/cord_internal + - abseil/strings/cordz_info + - abseil/strings/cordz_update_tracker + - abseil/strings/cordz_update_tracker (1.20220623.0): + - abseil/base/config + - abseil/strings/internal (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/meta/type_traits + - abseil/strings/str_format (1.20220623.0): + - abseil/strings/str_format_internal + - abseil/strings/str_format_internal (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/functional/function_ref + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/numeric/representation + - abseil/strings/strings + - abseil/types/optional + - abseil/types/span + - abseil/utility/utility + - abseil/strings/strings (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/base/throw_delegate + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/strings/internal + - abseil/synchronization/graphcycles_internal (1.20220623.0): + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/synchronization/kernel_timeout_internal (1.20220623.0): + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/time/time + - abseil/synchronization/synchronization (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/debugging/stacktrace + - abseil/debugging/symbolize + - abseil/synchronization/graphcycles_internal + - abseil/synchronization/kernel_timeout_internal + - abseil/time/time + - abseil/time/internal/cctz/civil_time (1.20220623.0): + - abseil/base/config + - abseil/time/internal/cctz/time_zone (1.20220623.0): + - abseil/base/config + - abseil/time/internal/cctz/civil_time + - abseil/time/time (1.20220623.0): + - abseil/base/base + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/time/internal/cctz/civil_time + - abseil/time/internal/cctz/time_zone + - abseil/types/bad_optional_access (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/bad_variant_access (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/optional (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/types/bad_optional_access + - abseil/utility/utility + - abseil/types/span (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/throw_delegate + - abseil/meta/type_traits + - abseil/types/variant (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/types/bad_variant_access + - abseil/utility/utility + - abseil/utility/utility (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/meta/type_traits + - BoringSSL-GRPC (0.0.24): + - BoringSSL-GRPC/Implementation (= 0.0.24) + - BoringSSL-GRPC/Interface (= 0.0.24) + - BoringSSL-GRPC/Implementation (0.0.24): + - BoringSSL-GRPC/Interface (= 0.0.24) + - BoringSSL-GRPC/Interface (0.0.24) - CocoaImageHashing (1.9.0) - CocoaLumberjack (3.7.2): - CocoaLumberjack/Core (= 3.7.2) - CocoaLumberjack/Core (3.7.2) - - DashSharedCore (0.4.16) + - DAPI-GRPC (0.22.0-dev.8): + - "!ProtoCompiler-gRPCPlugin (~> 1.0)" + - DAPI-GRPC/Messages (= 0.22.0-dev.8) + - DAPI-GRPC/Services (= 0.22.0-dev.8) + - DAPI-GRPC/Messages (0.22.0-dev.8): + - "!ProtoCompiler-gRPCPlugin (~> 1.0)" + - Protobuf + - DAPI-GRPC/Services (0.22.0-dev.8): + - "!ProtoCompiler-gRPCPlugin (~> 1.0)" + - DAPI-GRPC/Messages + - gRPC-ProtoRPC + - DashSharedCore (0.4.19) - DashSync (0.1.0): - CocoaLumberjack (= 3.7.2) - - DashSharedCore (= 0.4.16) + - DAPI-GRPC (= 0.22.0-dev.8) + - DashSharedCore (= 0.4.19) - DSDynamicOptions (= 0.1.2) - DWAlertController (= 0.2.1) - TinyCborObjc (= 0.4.6) - DSDynamicOptions (0.1.2) - DWAlertController (0.2.1) + - gRPC-Core (1.49.0): + - gRPC-Core/Implementation (= 1.49.0) + - gRPC-Core/Interface (= 1.49.0) + - gRPC-Core/Implementation (1.49.0): + - abseil/base/base (= 1.20220623.0) + - abseil/base/core_headers (= 1.20220623.0) + - abseil/container/flat_hash_map (= 1.20220623.0) + - abseil/container/flat_hash_set (= 1.20220623.0) + - abseil/container/inlined_vector (= 1.20220623.0) + - abseil/functional/any_invocable (= 1.20220623.0) + - abseil/functional/bind_front (= 1.20220623.0) + - abseil/functional/function_ref (= 1.20220623.0) + - abseil/hash/hash (= 1.20220623.0) + - abseil/memory/memory (= 1.20220623.0) + - abseil/meta/type_traits (= 1.20220623.0) + - abseil/random/random (= 1.20220623.0) + - abseil/status/status (= 1.20220623.0) + - abseil/status/statusor (= 1.20220623.0) + - abseil/strings/cord (= 1.20220623.0) + - abseil/strings/str_format (= 1.20220623.0) + - abseil/strings/strings (= 1.20220623.0) + - abseil/synchronization/synchronization (= 1.20220623.0) + - abseil/time/time (= 1.20220623.0) + - abseil/types/optional (= 1.20220623.0) + - abseil/types/span (= 1.20220623.0) + - abseil/types/variant (= 1.20220623.0) + - abseil/utility/utility (= 1.20220623.0) + - BoringSSL-GRPC (= 0.0.24) + - gRPC-Core/Interface (= 1.49.0) + - gRPC-Core/Interface (1.49.0) + - gRPC-ProtoRPC (1.49.0): + - gRPC-ProtoRPC/Legacy (= 1.49.0) + - gRPC-ProtoRPC/Legacy-Header (= 1.49.0) + - gRPC-ProtoRPC/Main (= 1.49.0) + - gRPC-ProtoRPC/Legacy (1.49.0): + - gRPC-ProtoRPC/Legacy-Header (= 1.49.0) + - gRPC-ProtoRPC/Main (= 1.49.0) + - gRPC-RxLibrary (= 1.49.0) + - gRPC/GRPCCore (= 1.49.0) + - Protobuf (~> 3.0) + - gRPC-ProtoRPC/Legacy-Header (1.49.0) + - gRPC-ProtoRPC/Main (1.49.0): + - gRPC-ProtoRPC/Legacy-Header (= 1.49.0) + - gRPC/Interface (= 1.49.0) + - Protobuf (~> 3.0) + - gRPC-RxLibrary (1.49.0): + - gRPC-RxLibrary/Implementation (= 1.49.0) + - gRPC-RxLibrary/Interface (= 1.49.0) + - gRPC-RxLibrary/Implementation (1.49.0): + - gRPC-RxLibrary/Interface + - gRPC-RxLibrary/Interface (1.49.0) + - gRPC/GRPCCore (1.49.0): + - gRPC-Core (= 1.49.0) + - gRPC-RxLibrary (= 1.49.0) + - gRPC/Interface (= 1.49.0) + - gRPC/Interface-Legacy (= 1.49.0) + - gRPC/Interface (1.49.0): + - gRPC/Interface-Legacy (= 1.49.0) + - gRPC/Interface-Legacy (1.49.0): + - gRPC-RxLibrary/Interface (= 1.49.0) - KVO-MVVM (0.5.1) + - Protobuf (3.28.3) - SDWebImage (5.14.3): - SDWebImage/Core (= 5.14.3) - SDWebImage/Core (5.14.3) @@ -28,11 +673,21 @@ DEPENDENCIES: SPEC REPOS: trunk: + - "!ProtoCompiler" + - "!ProtoCompiler-gRPCPlugin" + - abseil + - BoringSSL-GRPC - CocoaLumberjack + - DAPI-GRPC - DashSharedCore - DSDynamicOptions - DWAlertController + - gRPC + - gRPC-Core + - gRPC-ProtoRPC + - gRPC-RxLibrary - KVO-MVVM + - Protobuf - SDWebImage - tinycbor - TinyCborObjc @@ -50,13 +705,23 @@ CHECKOUT OPTIONS: :git: https://github.com/ameingast/cocoaimagehashing.git SPEC CHECKSUMS: + "!ProtoCompiler": e9c09244955a8565817aa59a4787b6bb849a63c6 + "!ProtoCompiler-gRPCPlugin": 755f0ee414a0d5f0028e0dcfe98c23bdbc3e6fa3 + abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46 + BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33 CocoaImageHashing: 8656031d0899abe6c1c415827de43e9798189c53 CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da - DashSharedCore: 81d3327cbea4103114b768eed4d36e742417b63b - DashSync: dd9d652b73938fbef99137b3d60e12962ca915ea + DAPI-GRPC: 138d62523bbfe7e88a39896f1053c0bc12390d9f + DashSharedCore: 009f29640756017406ee2b0ab5f1073f1856f85e + DashSync: f0ee76fe1409c9071bcee21202cc8002944c801d DSDynamicOptions: 347cc5d2c4e080eb3de6a86719ad3d861b82adfc DWAlertController: 5f4cd8adf90336331c054857f709f5f8d4b16a5b + gRPC: 64f36d689b2ecd99c4351f74e6f91347cdc65d9f + gRPC-Core: 3a9fdb5967d42211e875826f3f6fc163ea02c2a1 + gRPC-ProtoRPC: 1c223e0f1732bb8d0b9e9e0ea60cc0fe995b8e2d + gRPC-RxLibrary: 92327f150e11cf3b1c0f52e083944fd9f5cb5d1e KVO-MVVM: 4df3afd1f7ebcb69735458b85db59c4271ada7c6 + Protobuf: 5a8a7781d8e1004302f108977ac2d5b99323146f SDWebImage: 9c36e66c8ce4620b41a7407698dda44211a96764 tinycbor: d4d71dddda1f8392fbb4249f63faf8552f327590 TinyCborObjc: 5204540fb90ff0c40fb22d408fa51bab79d78a80 diff --git a/Gemfile b/Gemfile index 2af168f6e..a289656a4 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' gem 'rexml' -gem 'cocoapods', '>=1.15.2' +gem 'cocoapods', '>=1.11.3' gem 'xcpretty' # ethon is manually updated to avoid segmentation fault crashes on the M1. See https://github.com/CocoaPods/CocoaPods/issues/10446 gem 'ethon', '>=0.13.0'