From 66991a85e61e5b0de12ebf6685ddd545a14a4209 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 30 Jul 2020 07:27:14 -0500 Subject: [PATCH] Convert Account into a Swift Package --- Account/.gitignore | 5 + .../xcshareddata/xcschemes/Account.xcscheme | 22 +- Account/Package.swift | 51 + Account/README.md | 3 + .../Sources}/Account/Account.swift | 0 .../Sources}/Account/AccountBehaviors.swift | 0 .../Sources}/Account/AccountDelegate.swift | 0 .../Sources}/Account/AccountError.swift | 0 .../Sources}/Account/AccountManager.swift | 0 .../Sources}/Account/AccountMetadata.swift | 0 .../Account/AccountMetadataFile.swift | 0 .../Sources}/Account/AccountSyncError.swift | 0 .../Sources}/Account/ArticleFetcher.swift | 0 .../CloudKit/CKRecord+Extensions.swift | 0 .../CloudKit/CloudKitAccountDelegate.swift | 0 .../CloudKit/CloudKitAccountZone.swift | 0 .../CloudKitAccountZoneDelegate.swift | 0 .../CloudKitArticleStatusUpdate.swift | 0 .../CloudKit/CloudKitArticlesZone.swift | 0 .../CloudKitArticlesZoneDelegate.swift | 0 .../Account/CloudKit/CloudKitError.swift | 0 .../CloudKitReceiveStatusOperation.swift | 0 .../CloudKitRemoteNotificationOperation.swift | 0 .../CloudKitSendStatusOperation.swift | 0 .../Account/CloudKit/CloudKitZone.swift | 0 .../Account/CloudKit/CloudKitZoneResult.swift | 0 .../Account/CombinedRefreshProgress.swift | 0 .../Sources}/Account/Container.swift | 0 .../Account/ContainerIdentifier.swift | 0 .../Sources}/Account/ContainerPath.swift | 0 .../Sources}/Account/DataExtensions.swift | 0 .../Sources}/Account/Feed.swift | 0 .../Account/FeedFinder/FeedFinder.swift | 0 .../Account/FeedFinder/FeedSpecifier.swift | 0 .../Account/FeedFinder/HTMLFeedFinder.swift | 0 .../Sources}/Account/FeedIdentifier.swift | 0 .../Account/FeedProvider/FeedProvider.swift | 0 .../FeedProvider/FeedProviderManager.swift | 0 .../Reddit/RedditFeedProvider.swift | 0 .../Reddit/RedditGalleryData.swift | 0 .../FeedProvider/Reddit/RedditLink.swift | 0 .../Reddit/RedditLinkListing.swift | 0 .../FeedProvider/Reddit/RedditMe.swift | 0 .../FeedProvider/Reddit/RedditMedia.swift | 0 .../Reddit/RedditMediaEmbed.swift | 0 .../Reddit/RedditMediaMetadata.swift | 0 .../FeedProvider/Reddit/RedditPreview.swift | 0 .../FeedProvider/Reddit/RedditSort.swift | 0 .../FeedProvider/Reddit/RedditSubreddit.swift | 0 .../Twitter/TwitterEntities.swift | 0 .../Twitter/TwitterExtendedEntities.swift | 0 .../Twitter/TwitterExtendedMedia.swift | 0 .../Twitter/TwitterFeedProvider.swift | 0 .../FeedProvider/Twitter/TwitterHashtag.swift | 0 .../FeedProvider/Twitter/TwitterMedia.swift | 0 .../FeedProvider/Twitter/TwitterMention.swift | 0 .../Twitter/TwitterSearchResult.swift | 0 .../FeedProvider/Twitter/TwitterStatus.swift | 0 .../FeedProvider/Twitter/TwitterSymbol.swift | 0 .../FeedProvider/Twitter/TwitterURL.swift | 0 .../FeedProvider/Twitter/TwitterUser.swift | 0 .../FeedProvider/Twitter/TwitterVideo.swift | 0 .../FeedWrangler/FeedWranglerAPICaller.swift | 0 .../FeedWranglerAccountDelegate.swift | 0 .../FeedWranglerAuthorizationResult.swift | 0 .../FeedWrangler/FeedWranglerConfig.swift | 0 .../FeedWrangler/FeedWranglerFeedItem.swift | 0 .../FeedWranglerFeedItemsRequest.swift | 0 .../FeedWranglerGenericResult.swift | 0 .../FeedWranglerSubscription.swift | 0 .../FeedWranglerSubscriptionResult.swift | 0 .../FeedWranglerSubscriptionsRequest.swift | 0 .../Account/Feedbin/FeedbinAPICaller.swift | 0 .../Feedbin/FeedbinAccountDelegate.swift | 0 .../Account/Feedbin/FeedbinDate.swift | 0 .../Account/Feedbin/FeedbinEntry.swift | 0 .../Account/Feedbin/FeedbinImportResult.swift | 0 .../Account/Feedbin/FeedbinStarredEntry.swift | 0 .../Account/Feedbin/FeedbinSubscription.swift | 0 .../Sources}/Account/Feedbin/FeedbinTag.swift | 0 .../Account/Feedbin/FeedbinTagging.swift | 0 .../Account/Feedbin/FeedbinUnreadEntry.swift | 0 .../Account/Feedly/FeedlyAPICaller.swift | 0 .../Feedly/FeedlyAccountDelegate+OAuth.swift | 0 .../Feedly/FeedlyAccountDelegate.swift | 0 .../Feedly/FeedlyAccountDelegateError.swift | 0 .../Feedly/FeedlyFeedContainerValidator.swift | 0 .../Feedly/FeedlyResourceProviding.swift | 0 .../Feedly/Models/FeedlyCategory.swift | 0 .../Feedly/Models/FeedlyCollection.swift | 0 .../Models/FeedlyCollectionParser.swift | 0 .../Account/Feedly/Models/FeedlyEntry.swift | 0 .../FeedlyEntryIdentifierProviding.swift | 0 .../Feedly/Models/FeedlyEntryParser.swift | 0 .../Account/Feedly/Models/FeedlyFeed.swift | 0 .../Feedly/Models/FeedlyFeedParser.swift | 0 .../Models/FeedlyFeedsSearchResponse.swift | 0 .../Account/Feedly/Models/FeedlyLink.swift | 0 .../Account/Feedly/Models/FeedlyOrigin.swift | 0 .../Models/FeedlyRTLTextSanitizer.swift | 0 .../Feedly/Models/FeedlyResourceId.swift | 0 .../Account/Feedly/Models/FeedlyStream.swift | 0 .../Feedly/Models/FeedlyStreamIds.swift | 0 .../Account/Feedly/Models/FeedlyTag.swift | 0 .../OAuthAccountAuthorizationOperation.swift | 0 .../Feedly/OAuthAcessTokenRefreshing.swift | 0 .../OAuthAuthorizationClient+Feedly.swift | 0 .../OAuthAuthorizationCodeGranting.swift | 0 .../FeedlyAddExistingFeedOperation.swift | 0 .../FeedlyAddFeedToCollectionOperation.swift | 0 .../FeedlyAddNewFeedOperation.swift | 0 .../FeedlyCheckpointOperation.swift | 0 ...teFeedsForCollectionFoldersOperation.swift | 0 .../FeedlyDownloadArticlesOperation.swift | 0 ...yFetchIdsForMissingArticlesOperation.swift | 0 .../FeedlyGetCollectionsOperation.swift | 0 .../FeedlyGetEntriesOperation.swift | 0 .../FeedlyGetStreamContentsOperation.swift | 0 .../FeedlyGetStreamIdsOperation.swift | 0 .../FeedlyGetUpdatedArticleIdsOperation.swift | 0 ...edlyIngestStarredArticleIdsOperation.swift | 0 ...eedlyIngestStreamArticleIdsOperation.swift | 0 ...eedlyIngestUnreadArticleIdsOperation.swift | 0 .../Operations/FeedlyLogoutOperation.swift | 0 ...yMirrorCollectionsAsFoldersOperation.swift | 0 .../Feedly/Operations/FeedlyOperation.swift | 0 ...lyOrganiseParsedItemsByFeedOperation.swift | 0 .../FeedlyRefreshAccessTokenOperation.swift | 0 .../FeedlyRequestStreamsOperation.swift | 0 .../Operations/FeedlySearchOperation.swift | 0 .../FeedlySendArticleStatusesOperation.swift | 0 .../Operations/FeedlySyncAllOperation.swift | 0 .../FeedlySyncStreamContentsOperation.swift | 0 ...UpdateAccountFeedsWithItemsOperation.swift | 0 .../FeedlyGetCollectionsService.swift | 0 .../Services/FeedlyGetEntriesService.swift | 0 .../FeedlyGetStreamContentsService.swift | 0 .../Services/FeedlyGetStreamIdsService.swift | 0 .../Services/FeedlyMarkArticlesService.swift | 0 .../Sources}/Account/Folder.swift | 0 .../LocalAccount/InitialFeedDownloader.swift | 0 .../LocalAccount/LocalAccountDelegate.swift | 0 .../LocalAccount/LocalAccountRefresher.swift | 0 .../NewsBlurAPICaller+Internal.swift | 0 .../NewsBlurAccountDelegate+Internal.swift | 0 .../NewsBlur/Models/NewsBlurFeed.swift | 0 .../NewsBlur/Models/NewsBlurFeedChange.swift | 0 .../Models/NewsBlurFolderChange.swift | 0 .../Models/NewsBlurGenericCodingKeys.swift | 0 .../Models/NewsBlurLoginResponse.swift | 0 .../NewsBlur/Models/NewsBlurStory.swift | 0 .../NewsBlur/Models/NewsBlurStoryHash.swift | 0 .../Models/NewsBlurStoryStatusChange.swift | 0 .../Account/NewsBlur/NewsBlurAPICaller.swift | 0 .../NewsBlur/NewsBlurAccountDelegate.swift | 0 .../Sources}/Account/OPMLFile.swift | 0 .../Sources}/Account/OPMLNormalizer.swift | 0 .../ReaderAPI/ReaderAPIAccountDelegate.swift | 0 .../Account/ReaderAPI/ReaderAPICaller.swift | 0 .../Account/ReaderAPI/ReaderAPIEntry.swift | 0 .../ReaderAPI/ReaderAPISubscription.swift | 0 .../Account/ReaderAPI/ReaderAPITag.swift | 0 .../Account/ReaderAPI/ReaderAPITagging.swift | 0 .../ReaderAPI/ReaderAPIUnreadEntry.swift | 0 .../Account/SingleArticleFetcher.swift | 0 .../Sources}/Account/URLRequest+RSWeb.swift | 0 .../Account/UnreadCountProvider.swift | 0 .../Sources}/Account/WebFeed.swift | 0 .../Sources}/Account/WebFeedMetadata.swift | 0 .../Account/WebFeedMetadataFile.swift | 0 .../AccountTests/AccountCredentialsTest.swift | 0 ...AccountFeedbinFolderContentsSyncTest.swift | 0 .../AccountFeedbinFolderSyncTest.swift | 0 .../Feedbin/AccountFeedbinSyncTest.swift | 0 .../FeedlyAddNewFeedOperationTests.swift | 0 .../FeedlyCheckpointOperationTests.swift | 0 .../Feedly/FeedlyCollectionParserTests.swift | 0 ...dsForCollectionFoldersOperationTests.swift | 0 .../Feedly/FeedlyEntryParserTests.swift | 0 .../Feedly/FeedlyFeedParserTests.swift | 0 .../FeedlyGetCollectionsOperationTests.swift | 0 ...eedlyGetStreamContentsOperationTests.swift | 0 .../FeedlyGetStreamIdsOperationTests.swift | 0 .../Feedly/FeedlyLogoutOperationTests.swift | 0 ...orCollectionsAsFoldersOperationTests.swift | 0 .../Feedly/FeedlyOperationTests.swift | 0 ...aniseParsedItemsByFeedOperationTests.swift | 0 ...edlyRefreshAccessTokenOperationTests.swift | 0 .../Feedly/FeedlyResourceIdTests.swift | 0 ...dlySendArticleStatusesOperationTests.swift | 0 .../FeedlySyncAllMockResponseProvider.swift | 0 .../Feedly/FeedlySyncAllOperationTests.swift | 0 ...edlySyncStreamContentsOperationTests.swift | 0 .../Feedly/FeedlyTestSupport.swift | 0 .../Feedly/FeedlyTextSanitizationTests.swift | 0 ...eAccountFeedsWithItemsOperationTests.swift | 0 .../Feedly/Initial/gobalall_initial.json | 0 .../Initial/newcollection_addcollection.json | 0 .../Feedly/TestGetCollectionsService.swift | 0 .../Feedly/TestGetEntriesService.swift | 0 .../TestGetPagedStreamContentsService.swift | 0 .../Feedly/TestGetPagedStreamIdsService.swift | 0 .../Feedly/TestGetStreamContentsService.swift | 0 .../Feedly/TestGetStreamIdsService.swift | 0 .../Feedly/TestMarkArticlesService.swift | 0 .../Feedly/feedly-1-initial/collections.json | 0 .../Feedly/feedly-1-initial/global.all.json | 0 ....all@MTZkOTdkZWQ1NzM6NTE2OjUzYjgyNmEy.json | 0 .../Feedly/feedly-1-initial/starred.json | 0 .../Feedly/feedly-1-initial/unreadIds.json | 0 ...dIds@MTZkOTRhOTNhZTQ6MzExOjUzYjgyNmEy.json | 0 .../feedly-2-changestatuses/collections.json | 0 .../feedly-2-changestatuses/global.all.json | 0 .../feedly-2-changestatuses/starred.json | 0 .../feedly-2-changestatuses/unreadIds.json | 0 ...@MTZkOTJkNjIwM2Q6MTEzYjpkNDUwNjA3MQ==.json | 0 .../collections.json | 0 .../global.all.json | 0 .../feedly-3-changestatusesagain/starred.json | 0 .../unreadIds.json | 0 ...dIds@MTZkOGRlMjVmM2M6M2YyOmQ0NTA2MDcx.json | 0 .../collections.json | 0 .../global.all.json | 0 .../feedly-4-addfeedsandfolders/starred.json | 0 .../unreadIds.json | 0 ...dIds@MTZkOTE3YTRlMzQ6YWZjOmQ0NTA2MDcx.json | 0 .../collections.json | 0 .../global.all.json | 0 .../starred.json | 0 .../unreadIds.json | 0 ...dIds@MTZkOGRlMjVmM2M6M2YxOmQ0NTA2MDcx.json | 0 .../feedly-add-new-feed/collections.json | 0 .../feedly-add-new-feed/emptyCollections.json | 0 .../feedly-add-new-feed/feedStream.json | 0 .../Feedly/feedly-add-new-feed/putFeed.json | 0 .../feedly-add-new-feed/searchResults.json | 0 .../Feedly/feedly-add-new-feed/unreadIds.json | 0 .../JSON/feedly_collections_initial.json | 0 .../JSON/feedly_macintosh_initial.json | 0 .../JSON/feedly_unreads_1000.json | 0 .../JSON/feedly_unreads_initial.json | 0 .../AccountTests/JSON/subscriptions_add.json | 0 .../JSON/subscriptions_initial.json | 0 .../AccountTests/JSON/taggings_add.json | 0 .../AccountTests/JSON/taggings_delete.json | 0 .../AccountTests/JSON/taggings_initial.json | 0 .../Tests}/AccountTests/JSON/tags_add.json | 0 .../Tests}/AccountTests/JSON/tags_delete.json | 0 .../AccountTests/JSON/tags_initial.json | 0 .../AccountTests/TestAccountManager.swift | 0 .../Tests}/AccountTests/TestTransport.swift | 0 Account/Tests/LinuxMain.swift | 7 + .../xcshareddata/xcschemes/Articles.xcscheme | 77 + Articles/Package.swift | 7 +- ArticlesDatabase/Package.swift | 9 +- .../Account/Account.xcodeproj/project.pbxproj | 1562 ----------------- .../contents.xcworkspacedata | 7 - .../Account/CloudKit/CloudKitResult.swift | 67 - .../Operations/FeedlyCompoundOperation.swift | 61 - NetNewsWire.xcodeproj/project.pbxproj | 317 +--- Secrets/Package.swift | 5 +- SyncDatabase/Package.swift | 7 +- xcconfig/NetNewsWire_project.xcconfig | 3 + 263 files changed, 229 insertions(+), 1981 deletions(-) create mode 100644 Account/.gitignore rename {Frameworks/Account/Account.xcodeproj => Account/.swiftpm/xcode}/xcshareddata/xcschemes/Account.xcscheme (78%) create mode 100644 Account/Package.swift create mode 100644 Account/README.md rename {Frameworks => Account/Sources}/Account/Account.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountBehaviors.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountError.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountManager.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountMetadata.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountMetadataFile.swift (100%) rename {Frameworks => Account/Sources}/Account/AccountSyncError.swift (100%) rename {Frameworks => Account/Sources}/Account/ArticleFetcher.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CKRecord+Extensions.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitAccountZone.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitAccountZoneDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitArticleStatusUpdate.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitArticlesZone.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitArticlesZoneDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitError.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitReceiveStatusOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitRemoteNotificationOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitSendStatusOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitZone.swift (100%) rename {Frameworks => Account/Sources}/Account/CloudKit/CloudKitZoneResult.swift (100%) rename {Frameworks => Account/Sources}/Account/CombinedRefreshProgress.swift (100%) rename {Frameworks => Account/Sources}/Account/Container.swift (100%) rename {Frameworks => Account/Sources}/Account/ContainerIdentifier.swift (100%) rename {Frameworks => Account/Sources}/Account/ContainerPath.swift (100%) rename {Frameworks => Account/Sources}/Account/DataExtensions.swift (100%) rename {Frameworks => Account/Sources}/Account/Feed.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedFinder/FeedFinder.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedFinder/FeedSpecifier.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedFinder/HTMLFeedFinder.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedIdentifier.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/FeedProvider.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/FeedProviderManager.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditFeedProvider.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditGalleryData.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditLink.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditLinkListing.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditMe.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditMedia.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditMediaEmbed.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditMediaMetadata.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditPreview.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditSort.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Reddit/RedditSubreddit.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterEntities.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterExtendedEntities.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterExtendedMedia.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterFeedProvider.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterHashtag.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterMedia.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterMention.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterSearchResult.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterStatus.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterSymbol.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterURL.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterUser.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedProvider/Twitter/TwitterVideo.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerAPICaller.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerConfig.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerFeedItem.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerFeedItemsRequest.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerGenericResult.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerSubscription.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerSubscriptionResult.swift (100%) rename {Frameworks => Account/Sources}/Account/FeedWrangler/FeedWranglerSubscriptionsRequest.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinAPICaller.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinDate.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinEntry.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinImportResult.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinStarredEntry.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinSubscription.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinTag.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinTagging.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedbin/FeedbinUnreadEntry.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/FeedlyAPICaller.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/FeedlyAccountDelegate+OAuth.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/FeedlyAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/FeedlyAccountDelegateError.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/FeedlyFeedContainerValidator.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/FeedlyResourceProviding.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyCategory.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyCollection.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyCollectionParser.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyEntry.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyEntryIdentifierProviding.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyEntryParser.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyFeed.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyFeedParser.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyFeedsSearchResponse.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyLink.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyOrigin.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyRTLTextSanitizer.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyResourceId.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyStream.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyStreamIds.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Models/FeedlyTag.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/OAuthAccountAuthorizationOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/OAuthAcessTokenRefreshing.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/OAuthAuthorizationClient+Feedly.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/OAuthAuthorizationCodeGranting.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyAddFeedToCollectionOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyCheckpointOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyCreateFeedsForCollectionFoldersOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyLogoutOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyMirrorCollectionsAsFoldersOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyOrganiseParsedItemsByFeedOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyRequestStreamsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlySearchOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlySyncAllOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Operations/FeedlyUpdateAccountFeedsWithItemsOperation.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Services/FeedlyGetCollectionsService.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Services/FeedlyGetEntriesService.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Services/FeedlyGetStreamContentsService.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Services/FeedlyGetStreamIdsService.swift (100%) rename {Frameworks => Account/Sources}/Account/Feedly/Services/FeedlyMarkArticlesService.swift (100%) rename {Frameworks => Account/Sources}/Account/Folder.swift (100%) rename {Frameworks => Account/Sources}/Account/LocalAccount/InitialFeedDownloader.swift (100%) rename {Frameworks => Account/Sources}/Account/LocalAccount/LocalAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/LocalAccount/LocalAccountRefresher.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Internals/NewsBlurAPICaller+Internal.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurFeed.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurFeedChange.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurFolderChange.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurGenericCodingKeys.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurLoginResponse.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurStory.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurStoryHash.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/Models/NewsBlurStoryStatusChange.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/NewsBlurAPICaller.swift (100%) rename {Frameworks => Account/Sources}/Account/NewsBlur/NewsBlurAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/OPMLFile.swift (100%) rename {Frameworks => Account/Sources}/Account/OPMLNormalizer.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPIAccountDelegate.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPICaller.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPIEntry.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPISubscription.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPITag.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPITagging.swift (100%) rename {Frameworks => Account/Sources}/Account/ReaderAPI/ReaderAPIUnreadEntry.swift (100%) rename {Frameworks => Account/Sources}/Account/SingleArticleFetcher.swift (100%) rename {Frameworks => Account/Sources}/Account/URLRequest+RSWeb.swift (100%) rename {Frameworks => Account/Sources}/Account/UnreadCountProvider.swift (100%) rename {Frameworks => Account/Sources}/Account/WebFeed.swift (100%) rename {Frameworks => Account/Sources}/Account/WebFeedMetadata.swift (100%) rename {Frameworks => Account/Sources}/Account/WebFeedMetadataFile.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/AccountCredentialsTest.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedbin/AccountFeedbinFolderContentsSyncTest.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedbin/AccountFeedbinFolderSyncTest.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedbin/AccountFeedbinSyncTest.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyAddNewFeedOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyCheckpointOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyCollectionParserTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyCreateFeedsForCollectionFoldersOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyEntryParserTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyFeedParserTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyGetCollectionsOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyGetStreamContentsOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyGetStreamIdsOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyLogoutOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyMirrorCollectionsAsFoldersOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyOrganiseParsedItemsByFeedOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyRefreshAccessTokenOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyResourceIdTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlySendArticleStatusesOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlySyncAllMockResponseProvider.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlySyncAllOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlySyncStreamContentsOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyTestSupport.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyTextSanitizationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/FeedlyUpdateAccountFeedsWithItemsOperationTests.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/Initial/gobalall_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/Initial/newcollection_addcollection.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestGetCollectionsService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestGetEntriesService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestGetPagedStreamContentsService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestGetPagedStreamIdsService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestGetStreamContentsService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestGetStreamIdsService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/TestMarkArticlesService.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-1-initial/collections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-1-initial/global.all.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-1-initial/global.all@MTZkOTdkZWQ1NzM6NTE2OjUzYjgyNmEy.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-1-initial/starred.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-1-initial/unreadIds.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-1-initial/unreadIds@MTZkOTRhOTNhZTQ6MzExOjUzYjgyNmEy.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-2-changestatuses/collections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-2-changestatuses/global.all.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-2-changestatuses/starred.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-2-changestatuses/unreadIds.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-2-changestatuses/unreadIds@MTZkOTJkNjIwM2Q6MTEzYjpkNDUwNjA3MQ==.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-3-changestatusesagain/collections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-3-changestatusesagain/global.all.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-3-changestatusesagain/starred.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds@MTZkOGRlMjVmM2M6M2YyOmQ0NTA2MDcx.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-4-addfeedsandfolders/collections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-4-addfeedsandfolders/global.all.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-4-addfeedsandfolders/starred.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds@MTZkOTE3YTRlMzQ6YWZjOmQ0NTA2MDcx.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-5-removefeedsandfolders/collections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-5-removefeedsandfolders/global.all.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-5-removefeedsandfolders/starred.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds@MTZkOGRlMjVmM2M6M2YxOmQ0NTA2MDcx.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-add-new-feed/collections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-add-new-feed/emptyCollections.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-add-new-feed/feedStream.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-add-new-feed/putFeed.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-add-new-feed/searchResults.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/Feedly/feedly-add-new-feed/unreadIds.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/feedly_collections_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/feedly_macintosh_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/feedly_unreads_1000.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/feedly_unreads_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/subscriptions_add.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/subscriptions_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/taggings_add.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/taggings_delete.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/taggings_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/tags_add.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/tags_delete.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/JSON/tags_initial.json (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/TestAccountManager.swift (100%) rename {Frameworks/Account => Account/Tests}/AccountTests/TestTransport.swift (100%) create mode 100644 Account/Tests/LinuxMain.swift create mode 100644 Articles/.swiftpm/xcode/xcshareddata/xcschemes/Articles.xcscheme delete mode 100644 Frameworks/Account/Account.xcodeproj/project.pbxproj delete mode 100644 Frameworks/Account/Account.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 Frameworks/Account/CloudKit/CloudKitResult.swift delete mode 100644 Frameworks/Account/Feedly/Operations/FeedlyCompoundOperation.swift diff --git a/Account/.gitignore b/Account/.gitignore new file mode 100644 index 000000000..95c432091 --- /dev/null +++ b/Account/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ diff --git a/Frameworks/Account/Account.xcodeproj/xcshareddata/xcschemes/Account.xcscheme b/Account/.swiftpm/xcode/xcshareddata/xcschemes/Account.xcscheme similarity index 78% rename from Frameworks/Account/Account.xcodeproj/xcshareddata/xcschemes/Account.xcscheme rename to Account/.swiftpm/xcode/xcshareddata/xcschemes/Account.xcscheme index 07ba5eefa..c54b72020 100644 --- a/Frameworks/Account/Account.xcodeproj/xcshareddata/xcschemes/Account.xcscheme +++ b/Account/.swiftpm/xcode/xcshareddata/xcschemes/Account.xcscheme @@ -1,6 +1,6 @@ + ReferencedContainer = "container:"> @@ -32,10 +32,10 @@ skipped = "NO"> + ReferencedContainer = "container:"> @@ -60,10 +60,10 @@ + ReferencedContainer = "container:"> diff --git a/Account/Package.swift b/Account/Package.swift new file mode 100644 index 000000000..a60288ea9 --- /dev/null +++ b/Account/Package.swift @@ -0,0 +1,51 @@ +// swift-tools-version:5.3 +import PackageDescription + +let package = Package( + name: "Account", + platforms: [.macOS(SupportedPlatform.MacOSVersion.v10_15), .iOS(SupportedPlatform.IOSVersion.v13)], + products: [ + .library( + name: "Account", + targets: ["Account"]), + ], + dependencies: [ + .package(url: "https://github.com/Ranchero-Software/RSCore.git", .upToNextMajor(from: "1.0.0-beta1")), + .package(url: "https://github.com/Ranchero-Software/RSDatabase.git", .upToNextMajor(from: "1.0.0-beta1")), + .package(url: "https://github.com/Ranchero-Software/RSParser.git", .upToNextMajor(from: "2.0.0-beta1")), + .package(url: "https://github.com/Ranchero-Software/RSWeb.git", .upToNextMajor(from: "1.0.0-beta1")), + .package(url: "../Articles", .upToNextMajor(from: "1.0.0")), + .package(url: "../ArticlesDatabase", .upToNextMajor(from: "1.0.0")), + .package(url: "../Secrets", .upToNextMajor(from: "1.0.0")), + .package(url: "../SyncDatabase", .upToNextMajor(from: "1.0.0")), + ], + targets: [ + .target( + name: "Account", + dependencies: [ + .product(name: "RSCore", package: "RSCore"), + .product(name: "RSDatabase", package: "RSDatabase"), +// .product(name: "RSDatabaseObjC", package: "RSDatabase"), + .product(name: "RSParser", package: "RSParser"), +// .product(name: "RSParserObjC", package: "RSParser"), + .product(name: "RSWeb", package: "RSWeb"), + .product(name: "Articles", package: "Articles"), + .product(name: "ArticlesDatabase", package: "ArticlesDatabase"), + .product(name: "Secrets", package: "Secrets"), + .product(name: "SyncDatabase", package: "SyncDatabase"), + ]), + .testTarget( + name: "AccountTests", + dependencies: ["Account"], + resources: [ + .copy("JSON"), + .copy("Feedly/feedly-1-initial"), + .copy("Feedly/feedly-2-changestatuses"), + .copy("Feedly/feedly-3-changestatusesagain"), + .copy("Feedly/feedly-4-addfeedsandfolders"), + .copy("Feedly/feedly-5-removefeedsandfolders"), + .copy("Feedly/feedly-add-new-feed"), + .copy("Feedly/Initial"), + ]), + ] +) diff --git a/Account/README.md b/Account/README.md new file mode 100644 index 000000000..87802e1cb --- /dev/null +++ b/Account/README.md @@ -0,0 +1,3 @@ +# Account + +A description of this package. diff --git a/Frameworks/Account/Account.swift b/Account/Sources/Account/Account.swift similarity index 100% rename from Frameworks/Account/Account.swift rename to Account/Sources/Account/Account.swift diff --git a/Frameworks/Account/AccountBehaviors.swift b/Account/Sources/Account/AccountBehaviors.swift similarity index 100% rename from Frameworks/Account/AccountBehaviors.swift rename to Account/Sources/Account/AccountBehaviors.swift diff --git a/Frameworks/Account/AccountDelegate.swift b/Account/Sources/Account/AccountDelegate.swift similarity index 100% rename from Frameworks/Account/AccountDelegate.swift rename to Account/Sources/Account/AccountDelegate.swift diff --git a/Frameworks/Account/AccountError.swift b/Account/Sources/Account/AccountError.swift similarity index 100% rename from Frameworks/Account/AccountError.swift rename to Account/Sources/Account/AccountError.swift diff --git a/Frameworks/Account/AccountManager.swift b/Account/Sources/Account/AccountManager.swift similarity index 100% rename from Frameworks/Account/AccountManager.swift rename to Account/Sources/Account/AccountManager.swift diff --git a/Frameworks/Account/AccountMetadata.swift b/Account/Sources/Account/AccountMetadata.swift similarity index 100% rename from Frameworks/Account/AccountMetadata.swift rename to Account/Sources/Account/AccountMetadata.swift diff --git a/Frameworks/Account/AccountMetadataFile.swift b/Account/Sources/Account/AccountMetadataFile.swift similarity index 100% rename from Frameworks/Account/AccountMetadataFile.swift rename to Account/Sources/Account/AccountMetadataFile.swift diff --git a/Frameworks/Account/AccountSyncError.swift b/Account/Sources/Account/AccountSyncError.swift similarity index 100% rename from Frameworks/Account/AccountSyncError.swift rename to Account/Sources/Account/AccountSyncError.swift diff --git a/Frameworks/Account/ArticleFetcher.swift b/Account/Sources/Account/ArticleFetcher.swift similarity index 100% rename from Frameworks/Account/ArticleFetcher.swift rename to Account/Sources/Account/ArticleFetcher.swift diff --git a/Frameworks/Account/CloudKit/CKRecord+Extensions.swift b/Account/Sources/Account/CloudKit/CKRecord+Extensions.swift similarity index 100% rename from Frameworks/Account/CloudKit/CKRecord+Extensions.swift rename to Account/Sources/Account/CloudKit/CKRecord+Extensions.swift diff --git a/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift b/Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift rename to Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift diff --git a/Frameworks/Account/CloudKit/CloudKitAccountZone.swift b/Account/Sources/Account/CloudKit/CloudKitAccountZone.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitAccountZone.swift rename to Account/Sources/Account/CloudKit/CloudKitAccountZone.swift diff --git a/Frameworks/Account/CloudKit/CloudKitAccountZoneDelegate.swift b/Account/Sources/Account/CloudKit/CloudKitAccountZoneDelegate.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitAccountZoneDelegate.swift rename to Account/Sources/Account/CloudKit/CloudKitAccountZoneDelegate.swift diff --git a/Frameworks/Account/CloudKit/CloudKitArticleStatusUpdate.swift b/Account/Sources/Account/CloudKit/CloudKitArticleStatusUpdate.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitArticleStatusUpdate.swift rename to Account/Sources/Account/CloudKit/CloudKitArticleStatusUpdate.swift diff --git a/Frameworks/Account/CloudKit/CloudKitArticlesZone.swift b/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitArticlesZone.swift rename to Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift diff --git a/Frameworks/Account/CloudKit/CloudKitArticlesZoneDelegate.swift b/Account/Sources/Account/CloudKit/CloudKitArticlesZoneDelegate.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitArticlesZoneDelegate.swift rename to Account/Sources/Account/CloudKit/CloudKitArticlesZoneDelegate.swift diff --git a/Frameworks/Account/CloudKit/CloudKitError.swift b/Account/Sources/Account/CloudKit/CloudKitError.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitError.swift rename to Account/Sources/Account/CloudKit/CloudKitError.swift diff --git a/Frameworks/Account/CloudKit/CloudKitReceiveStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitReceiveStatusOperation.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitReceiveStatusOperation.swift rename to Account/Sources/Account/CloudKit/CloudKitReceiveStatusOperation.swift diff --git a/Frameworks/Account/CloudKit/CloudKitRemoteNotificationOperation.swift b/Account/Sources/Account/CloudKit/CloudKitRemoteNotificationOperation.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitRemoteNotificationOperation.swift rename to Account/Sources/Account/CloudKit/CloudKitRemoteNotificationOperation.swift diff --git a/Frameworks/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitSendStatusOperation.swift rename to Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift diff --git a/Frameworks/Account/CloudKit/CloudKitZone.swift b/Account/Sources/Account/CloudKit/CloudKitZone.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitZone.swift rename to Account/Sources/Account/CloudKit/CloudKitZone.swift diff --git a/Frameworks/Account/CloudKit/CloudKitZoneResult.swift b/Account/Sources/Account/CloudKit/CloudKitZoneResult.swift similarity index 100% rename from Frameworks/Account/CloudKit/CloudKitZoneResult.swift rename to Account/Sources/Account/CloudKit/CloudKitZoneResult.swift diff --git a/Frameworks/Account/CombinedRefreshProgress.swift b/Account/Sources/Account/CombinedRefreshProgress.swift similarity index 100% rename from Frameworks/Account/CombinedRefreshProgress.swift rename to Account/Sources/Account/CombinedRefreshProgress.swift diff --git a/Frameworks/Account/Container.swift b/Account/Sources/Account/Container.swift similarity index 100% rename from Frameworks/Account/Container.swift rename to Account/Sources/Account/Container.swift diff --git a/Frameworks/Account/ContainerIdentifier.swift b/Account/Sources/Account/ContainerIdentifier.swift similarity index 100% rename from Frameworks/Account/ContainerIdentifier.swift rename to Account/Sources/Account/ContainerIdentifier.swift diff --git a/Frameworks/Account/ContainerPath.swift b/Account/Sources/Account/ContainerPath.swift similarity index 100% rename from Frameworks/Account/ContainerPath.swift rename to Account/Sources/Account/ContainerPath.swift diff --git a/Frameworks/Account/DataExtensions.swift b/Account/Sources/Account/DataExtensions.swift similarity index 100% rename from Frameworks/Account/DataExtensions.swift rename to Account/Sources/Account/DataExtensions.swift diff --git a/Frameworks/Account/Feed.swift b/Account/Sources/Account/Feed.swift similarity index 100% rename from Frameworks/Account/Feed.swift rename to Account/Sources/Account/Feed.swift diff --git a/Frameworks/Account/FeedFinder/FeedFinder.swift b/Account/Sources/Account/FeedFinder/FeedFinder.swift similarity index 100% rename from Frameworks/Account/FeedFinder/FeedFinder.swift rename to Account/Sources/Account/FeedFinder/FeedFinder.swift diff --git a/Frameworks/Account/FeedFinder/FeedSpecifier.swift b/Account/Sources/Account/FeedFinder/FeedSpecifier.swift similarity index 100% rename from Frameworks/Account/FeedFinder/FeedSpecifier.swift rename to Account/Sources/Account/FeedFinder/FeedSpecifier.swift diff --git a/Frameworks/Account/FeedFinder/HTMLFeedFinder.swift b/Account/Sources/Account/FeedFinder/HTMLFeedFinder.swift similarity index 100% rename from Frameworks/Account/FeedFinder/HTMLFeedFinder.swift rename to Account/Sources/Account/FeedFinder/HTMLFeedFinder.swift diff --git a/Frameworks/Account/FeedIdentifier.swift b/Account/Sources/Account/FeedIdentifier.swift similarity index 100% rename from Frameworks/Account/FeedIdentifier.swift rename to Account/Sources/Account/FeedIdentifier.swift diff --git a/Frameworks/Account/FeedProvider/FeedProvider.swift b/Account/Sources/Account/FeedProvider/FeedProvider.swift similarity index 100% rename from Frameworks/Account/FeedProvider/FeedProvider.swift rename to Account/Sources/Account/FeedProvider/FeedProvider.swift diff --git a/Frameworks/Account/FeedProvider/FeedProviderManager.swift b/Account/Sources/Account/FeedProvider/FeedProviderManager.swift similarity index 100% rename from Frameworks/Account/FeedProvider/FeedProviderManager.swift rename to Account/Sources/Account/FeedProvider/FeedProviderManager.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditFeedProvider.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditFeedProvider.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditGalleryData.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditGalleryData.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditGalleryData.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditGalleryData.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditLink.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditLink.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditLink.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditLink.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditLinkListing.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditLinkListing.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditLinkListing.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditLinkListing.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditMe.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditMe.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditMe.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditMe.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditMedia.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditMedia.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditMedia.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditMedia.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditMediaEmbed.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditMediaEmbed.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditMediaEmbed.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditMediaEmbed.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditMediaMetadata.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditMediaMetadata.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditMediaMetadata.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditMediaMetadata.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditPreview.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditPreview.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditPreview.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditPreview.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditSort.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditSort.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditSort.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditSort.swift diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditSubreddit.swift b/Account/Sources/Account/FeedProvider/Reddit/RedditSubreddit.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Reddit/RedditSubreddit.swift rename to Account/Sources/Account/FeedProvider/Reddit/RedditSubreddit.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterEntities.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterEntities.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterEntities.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterEntities.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterExtendedEntities.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterExtendedEntities.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterExtendedEntities.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterExtendedEntities.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterExtendedMedia.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterExtendedMedia.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterExtendedMedia.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterExtendedMedia.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterFeedProvider.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterFeedProvider.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterHashtag.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterHashtag.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterHashtag.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterHashtag.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterMedia.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterMedia.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterMedia.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterMedia.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterMention.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterMention.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterMention.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterMention.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterSearchResult.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterSearchResult.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterSearchResult.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterSearchResult.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterStatus.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterSymbol.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterSymbol.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterURL.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterURL.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterURL.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterURL.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterUser.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterUser.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterUser.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterUser.swift diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterVideo.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterVideo.swift similarity index 100% rename from Frameworks/Account/FeedProvider/Twitter/TwitterVideo.swift rename to Account/Sources/Account/FeedProvider/Twitter/TwitterVideo.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerAPICaller.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerAPICaller.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAccountDelegate.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerAccountDelegate.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerAccountDelegate.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerAccountDelegate.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerConfig.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerConfig.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerConfig.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerConfig.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerFeedItem.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerFeedItem.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerFeedItem.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerFeedItem.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerFeedItemsRequest.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerFeedItemsRequest.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerFeedItemsRequest.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerFeedItemsRequest.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerGenericResult.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerGenericResult.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerGenericResult.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerGenericResult.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerSubscription.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerSubscription.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerSubscription.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerSubscription.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerSubscriptionResult.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerSubscriptionResult.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerSubscriptionResult.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerSubscriptionResult.swift diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerSubscriptionsRequest.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerSubscriptionsRequest.swift similarity index 100% rename from Frameworks/Account/FeedWrangler/FeedWranglerSubscriptionsRequest.swift rename to Account/Sources/Account/FeedWrangler/FeedWranglerSubscriptionsRequest.swift diff --git a/Frameworks/Account/Feedbin/FeedbinAPICaller.swift b/Account/Sources/Account/Feedbin/FeedbinAPICaller.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinAPICaller.swift rename to Account/Sources/Account/Feedbin/FeedbinAPICaller.swift diff --git a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift rename to Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift diff --git a/Frameworks/Account/Feedbin/FeedbinDate.swift b/Account/Sources/Account/Feedbin/FeedbinDate.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinDate.swift rename to Account/Sources/Account/Feedbin/FeedbinDate.swift diff --git a/Frameworks/Account/Feedbin/FeedbinEntry.swift b/Account/Sources/Account/Feedbin/FeedbinEntry.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinEntry.swift rename to Account/Sources/Account/Feedbin/FeedbinEntry.swift diff --git a/Frameworks/Account/Feedbin/FeedbinImportResult.swift b/Account/Sources/Account/Feedbin/FeedbinImportResult.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinImportResult.swift rename to Account/Sources/Account/Feedbin/FeedbinImportResult.swift diff --git a/Frameworks/Account/Feedbin/FeedbinStarredEntry.swift b/Account/Sources/Account/Feedbin/FeedbinStarredEntry.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinStarredEntry.swift rename to Account/Sources/Account/Feedbin/FeedbinStarredEntry.swift diff --git a/Frameworks/Account/Feedbin/FeedbinSubscription.swift b/Account/Sources/Account/Feedbin/FeedbinSubscription.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinSubscription.swift rename to Account/Sources/Account/Feedbin/FeedbinSubscription.swift diff --git a/Frameworks/Account/Feedbin/FeedbinTag.swift b/Account/Sources/Account/Feedbin/FeedbinTag.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinTag.swift rename to Account/Sources/Account/Feedbin/FeedbinTag.swift diff --git a/Frameworks/Account/Feedbin/FeedbinTagging.swift b/Account/Sources/Account/Feedbin/FeedbinTagging.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinTagging.swift rename to Account/Sources/Account/Feedbin/FeedbinTagging.swift diff --git a/Frameworks/Account/Feedbin/FeedbinUnreadEntry.swift b/Account/Sources/Account/Feedbin/FeedbinUnreadEntry.swift similarity index 100% rename from Frameworks/Account/Feedbin/FeedbinUnreadEntry.swift rename to Account/Sources/Account/Feedbin/FeedbinUnreadEntry.swift diff --git a/Frameworks/Account/Feedly/FeedlyAPICaller.swift b/Account/Sources/Account/Feedly/FeedlyAPICaller.swift similarity index 100% rename from Frameworks/Account/Feedly/FeedlyAPICaller.swift rename to Account/Sources/Account/Feedly/FeedlyAPICaller.swift diff --git a/Frameworks/Account/Feedly/FeedlyAccountDelegate+OAuth.swift b/Account/Sources/Account/Feedly/FeedlyAccountDelegate+OAuth.swift similarity index 100% rename from Frameworks/Account/Feedly/FeedlyAccountDelegate+OAuth.swift rename to Account/Sources/Account/Feedly/FeedlyAccountDelegate+OAuth.swift diff --git a/Frameworks/Account/Feedly/FeedlyAccountDelegate.swift b/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift similarity index 100% rename from Frameworks/Account/Feedly/FeedlyAccountDelegate.swift rename to Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift diff --git a/Frameworks/Account/Feedly/FeedlyAccountDelegateError.swift b/Account/Sources/Account/Feedly/FeedlyAccountDelegateError.swift similarity index 100% rename from Frameworks/Account/Feedly/FeedlyAccountDelegateError.swift rename to Account/Sources/Account/Feedly/FeedlyAccountDelegateError.swift diff --git a/Frameworks/Account/Feedly/FeedlyFeedContainerValidator.swift b/Account/Sources/Account/Feedly/FeedlyFeedContainerValidator.swift similarity index 100% rename from Frameworks/Account/Feedly/FeedlyFeedContainerValidator.swift rename to Account/Sources/Account/Feedly/FeedlyFeedContainerValidator.swift diff --git a/Frameworks/Account/Feedly/FeedlyResourceProviding.swift b/Account/Sources/Account/Feedly/FeedlyResourceProviding.swift similarity index 100% rename from Frameworks/Account/Feedly/FeedlyResourceProviding.swift rename to Account/Sources/Account/Feedly/FeedlyResourceProviding.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyCategory.swift b/Account/Sources/Account/Feedly/Models/FeedlyCategory.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyCategory.swift rename to Account/Sources/Account/Feedly/Models/FeedlyCategory.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyCollection.swift b/Account/Sources/Account/Feedly/Models/FeedlyCollection.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyCollection.swift rename to Account/Sources/Account/Feedly/Models/FeedlyCollection.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyCollectionParser.swift b/Account/Sources/Account/Feedly/Models/FeedlyCollectionParser.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyCollectionParser.swift rename to Account/Sources/Account/Feedly/Models/FeedlyCollectionParser.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyEntry.swift b/Account/Sources/Account/Feedly/Models/FeedlyEntry.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyEntry.swift rename to Account/Sources/Account/Feedly/Models/FeedlyEntry.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyEntryIdentifierProviding.swift b/Account/Sources/Account/Feedly/Models/FeedlyEntryIdentifierProviding.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyEntryIdentifierProviding.swift rename to Account/Sources/Account/Feedly/Models/FeedlyEntryIdentifierProviding.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyEntryParser.swift b/Account/Sources/Account/Feedly/Models/FeedlyEntryParser.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyEntryParser.swift rename to Account/Sources/Account/Feedly/Models/FeedlyEntryParser.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyFeed.swift b/Account/Sources/Account/Feedly/Models/FeedlyFeed.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyFeed.swift rename to Account/Sources/Account/Feedly/Models/FeedlyFeed.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyFeedParser.swift b/Account/Sources/Account/Feedly/Models/FeedlyFeedParser.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyFeedParser.swift rename to Account/Sources/Account/Feedly/Models/FeedlyFeedParser.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyFeedsSearchResponse.swift b/Account/Sources/Account/Feedly/Models/FeedlyFeedsSearchResponse.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyFeedsSearchResponse.swift rename to Account/Sources/Account/Feedly/Models/FeedlyFeedsSearchResponse.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyLink.swift b/Account/Sources/Account/Feedly/Models/FeedlyLink.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyLink.swift rename to Account/Sources/Account/Feedly/Models/FeedlyLink.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyOrigin.swift b/Account/Sources/Account/Feedly/Models/FeedlyOrigin.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyOrigin.swift rename to Account/Sources/Account/Feedly/Models/FeedlyOrigin.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyRTLTextSanitizer.swift b/Account/Sources/Account/Feedly/Models/FeedlyRTLTextSanitizer.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyRTLTextSanitizer.swift rename to Account/Sources/Account/Feedly/Models/FeedlyRTLTextSanitizer.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyResourceId.swift b/Account/Sources/Account/Feedly/Models/FeedlyResourceId.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyResourceId.swift rename to Account/Sources/Account/Feedly/Models/FeedlyResourceId.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyStream.swift b/Account/Sources/Account/Feedly/Models/FeedlyStream.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyStream.swift rename to Account/Sources/Account/Feedly/Models/FeedlyStream.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyStreamIds.swift b/Account/Sources/Account/Feedly/Models/FeedlyStreamIds.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyStreamIds.swift rename to Account/Sources/Account/Feedly/Models/FeedlyStreamIds.swift diff --git a/Frameworks/Account/Feedly/Models/FeedlyTag.swift b/Account/Sources/Account/Feedly/Models/FeedlyTag.swift similarity index 100% rename from Frameworks/Account/Feedly/Models/FeedlyTag.swift rename to Account/Sources/Account/Feedly/Models/FeedlyTag.swift diff --git a/Frameworks/Account/Feedly/OAuthAccountAuthorizationOperation.swift b/Account/Sources/Account/Feedly/OAuthAccountAuthorizationOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/OAuthAccountAuthorizationOperation.swift rename to Account/Sources/Account/Feedly/OAuthAccountAuthorizationOperation.swift diff --git a/Frameworks/Account/Feedly/OAuthAcessTokenRefreshing.swift b/Account/Sources/Account/Feedly/OAuthAcessTokenRefreshing.swift similarity index 100% rename from Frameworks/Account/Feedly/OAuthAcessTokenRefreshing.swift rename to Account/Sources/Account/Feedly/OAuthAcessTokenRefreshing.swift diff --git a/Frameworks/Account/Feedly/OAuthAuthorizationClient+Feedly.swift b/Account/Sources/Account/Feedly/OAuthAuthorizationClient+Feedly.swift similarity index 100% rename from Frameworks/Account/Feedly/OAuthAuthorizationClient+Feedly.swift rename to Account/Sources/Account/Feedly/OAuthAuthorizationClient+Feedly.swift diff --git a/Frameworks/Account/Feedly/OAuthAuthorizationCodeGranting.swift b/Account/Sources/Account/Feedly/OAuthAuthorizationCodeGranting.swift similarity index 100% rename from Frameworks/Account/Feedly/OAuthAuthorizationCodeGranting.swift rename to Account/Sources/Account/Feedly/OAuthAuthorizationCodeGranting.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyAddFeedToCollectionOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyAddFeedToCollectionOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyAddFeedToCollectionOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyAddFeedToCollectionOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyCheckpointOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyCheckpointOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyCheckpointOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyCheckpointOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyCreateFeedsForCollectionFoldersOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyCreateFeedsForCollectionFoldersOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyCreateFeedsForCollectionFoldersOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyCreateFeedsForCollectionFoldersOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyLogoutOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyLogoutOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyLogoutOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyLogoutOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyMirrorCollectionsAsFoldersOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyMirrorCollectionsAsFoldersOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyMirrorCollectionsAsFoldersOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyMirrorCollectionsAsFoldersOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyOrganiseParsedItemsByFeedOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyOrganiseParsedItemsByFeedOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyOrganiseParsedItemsByFeedOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyOrganiseParsedItemsByFeedOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyRequestStreamsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyRequestStreamsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyRequestStreamsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyRequestStreamsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlySearchOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlySearchOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlySearchOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlySearchOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlySyncAllOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlySyncAllOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlySyncAllOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlySyncAllOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift diff --git a/Frameworks/Account/Feedly/Operations/FeedlyUpdateAccountFeedsWithItemsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyUpdateAccountFeedsWithItemsOperation.swift similarity index 100% rename from Frameworks/Account/Feedly/Operations/FeedlyUpdateAccountFeedsWithItemsOperation.swift rename to Account/Sources/Account/Feedly/Operations/FeedlyUpdateAccountFeedsWithItemsOperation.swift diff --git a/Frameworks/Account/Feedly/Services/FeedlyGetCollectionsService.swift b/Account/Sources/Account/Feedly/Services/FeedlyGetCollectionsService.swift similarity index 100% rename from Frameworks/Account/Feedly/Services/FeedlyGetCollectionsService.swift rename to Account/Sources/Account/Feedly/Services/FeedlyGetCollectionsService.swift diff --git a/Frameworks/Account/Feedly/Services/FeedlyGetEntriesService.swift b/Account/Sources/Account/Feedly/Services/FeedlyGetEntriesService.swift similarity index 100% rename from Frameworks/Account/Feedly/Services/FeedlyGetEntriesService.swift rename to Account/Sources/Account/Feedly/Services/FeedlyGetEntriesService.swift diff --git a/Frameworks/Account/Feedly/Services/FeedlyGetStreamContentsService.swift b/Account/Sources/Account/Feedly/Services/FeedlyGetStreamContentsService.swift similarity index 100% rename from Frameworks/Account/Feedly/Services/FeedlyGetStreamContentsService.swift rename to Account/Sources/Account/Feedly/Services/FeedlyGetStreamContentsService.swift diff --git a/Frameworks/Account/Feedly/Services/FeedlyGetStreamIdsService.swift b/Account/Sources/Account/Feedly/Services/FeedlyGetStreamIdsService.swift similarity index 100% rename from Frameworks/Account/Feedly/Services/FeedlyGetStreamIdsService.swift rename to Account/Sources/Account/Feedly/Services/FeedlyGetStreamIdsService.swift diff --git a/Frameworks/Account/Feedly/Services/FeedlyMarkArticlesService.swift b/Account/Sources/Account/Feedly/Services/FeedlyMarkArticlesService.swift similarity index 100% rename from Frameworks/Account/Feedly/Services/FeedlyMarkArticlesService.swift rename to Account/Sources/Account/Feedly/Services/FeedlyMarkArticlesService.swift diff --git a/Frameworks/Account/Folder.swift b/Account/Sources/Account/Folder.swift similarity index 100% rename from Frameworks/Account/Folder.swift rename to Account/Sources/Account/Folder.swift diff --git a/Frameworks/Account/LocalAccount/InitialFeedDownloader.swift b/Account/Sources/Account/LocalAccount/InitialFeedDownloader.swift similarity index 100% rename from Frameworks/Account/LocalAccount/InitialFeedDownloader.swift rename to Account/Sources/Account/LocalAccount/InitialFeedDownloader.swift diff --git a/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift similarity index 100% rename from Frameworks/Account/LocalAccount/LocalAccountDelegate.swift rename to Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift diff --git a/Frameworks/Account/LocalAccount/LocalAccountRefresher.swift b/Account/Sources/Account/LocalAccount/LocalAccountRefresher.swift similarity index 100% rename from Frameworks/Account/LocalAccount/LocalAccountRefresher.swift rename to Account/Sources/Account/LocalAccount/LocalAccountRefresher.swift diff --git a/Frameworks/Account/NewsBlur/Internals/NewsBlurAPICaller+Internal.swift b/Account/Sources/Account/NewsBlur/Internals/NewsBlurAPICaller+Internal.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Internals/NewsBlurAPICaller+Internal.swift rename to Account/Sources/Account/NewsBlur/Internals/NewsBlurAPICaller+Internal.swift diff --git a/Frameworks/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift b/Account/Sources/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift rename to Account/Sources/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurFeed.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurFeed.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurFeed.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurFeed.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurFeedChange.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurFeedChange.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurFeedChange.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurFeedChange.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurFolderChange.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurFolderChange.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurFolderChange.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurFolderChange.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurGenericCodingKeys.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurGenericCodingKeys.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurGenericCodingKeys.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurGenericCodingKeys.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurLoginResponse.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurLoginResponse.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurLoginResponse.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurLoginResponse.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurStory.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurStory.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurStory.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurStory.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurStoryHash.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurStoryHash.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurStoryHash.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurStoryHash.swift diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurStoryStatusChange.swift b/Account/Sources/Account/NewsBlur/Models/NewsBlurStoryStatusChange.swift similarity index 100% rename from Frameworks/Account/NewsBlur/Models/NewsBlurStoryStatusChange.swift rename to Account/Sources/Account/NewsBlur/Models/NewsBlurStoryStatusChange.swift diff --git a/Frameworks/Account/NewsBlur/NewsBlurAPICaller.swift b/Account/Sources/Account/NewsBlur/NewsBlurAPICaller.swift similarity index 100% rename from Frameworks/Account/NewsBlur/NewsBlurAPICaller.swift rename to Account/Sources/Account/NewsBlur/NewsBlurAPICaller.swift diff --git a/Frameworks/Account/NewsBlur/NewsBlurAccountDelegate.swift b/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift similarity index 100% rename from Frameworks/Account/NewsBlur/NewsBlurAccountDelegate.swift rename to Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift diff --git a/Frameworks/Account/OPMLFile.swift b/Account/Sources/Account/OPMLFile.swift similarity index 100% rename from Frameworks/Account/OPMLFile.swift rename to Account/Sources/Account/OPMLFile.swift diff --git a/Frameworks/Account/OPMLNormalizer.swift b/Account/Sources/Account/OPMLNormalizer.swift similarity index 100% rename from Frameworks/Account/OPMLNormalizer.swift rename to Account/Sources/Account/OPMLNormalizer.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPICaller.swift b/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPICaller.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPIEntry.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIEntry.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPIEntry.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPIEntry.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPISubscription.swift b/Account/Sources/Account/ReaderAPI/ReaderAPISubscription.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPISubscription.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPISubscription.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPITag.swift b/Account/Sources/Account/ReaderAPI/ReaderAPITag.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPITag.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPITag.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPITagging.swift b/Account/Sources/Account/ReaderAPI/ReaderAPITagging.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPITagging.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPITagging.swift diff --git a/Frameworks/Account/ReaderAPI/ReaderAPIUnreadEntry.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIUnreadEntry.swift similarity index 100% rename from Frameworks/Account/ReaderAPI/ReaderAPIUnreadEntry.swift rename to Account/Sources/Account/ReaderAPI/ReaderAPIUnreadEntry.swift diff --git a/Frameworks/Account/SingleArticleFetcher.swift b/Account/Sources/Account/SingleArticleFetcher.swift similarity index 100% rename from Frameworks/Account/SingleArticleFetcher.swift rename to Account/Sources/Account/SingleArticleFetcher.swift diff --git a/Frameworks/Account/URLRequest+RSWeb.swift b/Account/Sources/Account/URLRequest+RSWeb.swift similarity index 100% rename from Frameworks/Account/URLRequest+RSWeb.swift rename to Account/Sources/Account/URLRequest+RSWeb.swift diff --git a/Frameworks/Account/UnreadCountProvider.swift b/Account/Sources/Account/UnreadCountProvider.swift similarity index 100% rename from Frameworks/Account/UnreadCountProvider.swift rename to Account/Sources/Account/UnreadCountProvider.swift diff --git a/Frameworks/Account/WebFeed.swift b/Account/Sources/Account/WebFeed.swift similarity index 100% rename from Frameworks/Account/WebFeed.swift rename to Account/Sources/Account/WebFeed.swift diff --git a/Frameworks/Account/WebFeedMetadata.swift b/Account/Sources/Account/WebFeedMetadata.swift similarity index 100% rename from Frameworks/Account/WebFeedMetadata.swift rename to Account/Sources/Account/WebFeedMetadata.swift diff --git a/Frameworks/Account/WebFeedMetadataFile.swift b/Account/Sources/Account/WebFeedMetadataFile.swift similarity index 100% rename from Frameworks/Account/WebFeedMetadataFile.swift rename to Account/Sources/Account/WebFeedMetadataFile.swift diff --git a/Frameworks/Account/AccountTests/AccountCredentialsTest.swift b/Account/Tests/AccountTests/AccountCredentialsTest.swift similarity index 100% rename from Frameworks/Account/AccountTests/AccountCredentialsTest.swift rename to Account/Tests/AccountTests/AccountCredentialsTest.swift diff --git a/Frameworks/Account/AccountTests/Feedbin/AccountFeedbinFolderContentsSyncTest.swift b/Account/Tests/AccountTests/Feedbin/AccountFeedbinFolderContentsSyncTest.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedbin/AccountFeedbinFolderContentsSyncTest.swift rename to Account/Tests/AccountTests/Feedbin/AccountFeedbinFolderContentsSyncTest.swift diff --git a/Frameworks/Account/AccountTests/Feedbin/AccountFeedbinFolderSyncTest.swift b/Account/Tests/AccountTests/Feedbin/AccountFeedbinFolderSyncTest.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedbin/AccountFeedbinFolderSyncTest.swift rename to Account/Tests/AccountTests/Feedbin/AccountFeedbinFolderSyncTest.swift diff --git a/Frameworks/Account/AccountTests/Feedbin/AccountFeedbinSyncTest.swift b/Account/Tests/AccountTests/Feedbin/AccountFeedbinSyncTest.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedbin/AccountFeedbinSyncTest.swift rename to Account/Tests/AccountTests/Feedbin/AccountFeedbinSyncTest.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyAddNewFeedOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyAddNewFeedOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyAddNewFeedOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyAddNewFeedOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyCheckpointOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyCheckpointOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyCheckpointOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyCheckpointOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyCollectionParserTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyCollectionParserTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyCollectionParserTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyCollectionParserTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyCreateFeedsForCollectionFoldersOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyCreateFeedsForCollectionFoldersOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyCreateFeedsForCollectionFoldersOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyCreateFeedsForCollectionFoldersOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyEntryParserTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyEntryParserTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyEntryParserTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyEntryParserTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyFeedParserTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyFeedParserTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyFeedParserTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyFeedParserTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyGetCollectionsOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyGetCollectionsOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyGetCollectionsOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyGetCollectionsOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyGetStreamContentsOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyGetStreamContentsOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyGetStreamContentsOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyGetStreamContentsOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyGetStreamIdsOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyGetStreamIdsOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyGetStreamIdsOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyGetStreamIdsOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyLogoutOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyLogoutOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyLogoutOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyLogoutOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyMirrorCollectionsAsFoldersOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyMirrorCollectionsAsFoldersOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyMirrorCollectionsAsFoldersOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyMirrorCollectionsAsFoldersOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyOrganiseParsedItemsByFeedOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyOrganiseParsedItemsByFeedOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyOrganiseParsedItemsByFeedOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyOrganiseParsedItemsByFeedOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyRefreshAccessTokenOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyRefreshAccessTokenOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyRefreshAccessTokenOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyRefreshAccessTokenOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyResourceIdTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyResourceIdTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyResourceIdTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyResourceIdTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlySendArticleStatusesOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlySendArticleStatusesOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlySendArticleStatusesOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlySendArticleStatusesOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlySyncAllMockResponseProvider.swift b/Account/Tests/AccountTests/Feedly/FeedlySyncAllMockResponseProvider.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlySyncAllMockResponseProvider.swift rename to Account/Tests/AccountTests/Feedly/FeedlySyncAllMockResponseProvider.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlySyncAllOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlySyncAllOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlySyncAllOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlySyncAllOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlySyncStreamContentsOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlySyncStreamContentsOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlySyncStreamContentsOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlySyncStreamContentsOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyTestSupport.swift b/Account/Tests/AccountTests/Feedly/FeedlyTestSupport.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyTestSupport.swift rename to Account/Tests/AccountTests/Feedly/FeedlyTestSupport.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyTextSanitizationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyTextSanitizationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyTextSanitizationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyTextSanitizationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/FeedlyUpdateAccountFeedsWithItemsOperationTests.swift b/Account/Tests/AccountTests/Feedly/FeedlyUpdateAccountFeedsWithItemsOperationTests.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/FeedlyUpdateAccountFeedsWithItemsOperationTests.swift rename to Account/Tests/AccountTests/Feedly/FeedlyUpdateAccountFeedsWithItemsOperationTests.swift diff --git a/Frameworks/Account/AccountTests/Feedly/Initial/gobalall_initial.json b/Account/Tests/AccountTests/Feedly/Initial/gobalall_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/Initial/gobalall_initial.json rename to Account/Tests/AccountTests/Feedly/Initial/gobalall_initial.json diff --git a/Frameworks/Account/AccountTests/Feedly/Initial/newcollection_addcollection.json b/Account/Tests/AccountTests/Feedly/Initial/newcollection_addcollection.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/Initial/newcollection_addcollection.json rename to Account/Tests/AccountTests/Feedly/Initial/newcollection_addcollection.json diff --git a/Frameworks/Account/AccountTests/Feedly/TestGetCollectionsService.swift b/Account/Tests/AccountTests/Feedly/TestGetCollectionsService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestGetCollectionsService.swift rename to Account/Tests/AccountTests/Feedly/TestGetCollectionsService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/TestGetEntriesService.swift b/Account/Tests/AccountTests/Feedly/TestGetEntriesService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestGetEntriesService.swift rename to Account/Tests/AccountTests/Feedly/TestGetEntriesService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/TestGetPagedStreamContentsService.swift b/Account/Tests/AccountTests/Feedly/TestGetPagedStreamContentsService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestGetPagedStreamContentsService.swift rename to Account/Tests/AccountTests/Feedly/TestGetPagedStreamContentsService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/TestGetPagedStreamIdsService.swift b/Account/Tests/AccountTests/Feedly/TestGetPagedStreamIdsService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestGetPagedStreamIdsService.swift rename to Account/Tests/AccountTests/Feedly/TestGetPagedStreamIdsService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/TestGetStreamContentsService.swift b/Account/Tests/AccountTests/Feedly/TestGetStreamContentsService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestGetStreamContentsService.swift rename to Account/Tests/AccountTests/Feedly/TestGetStreamContentsService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/TestGetStreamIdsService.swift b/Account/Tests/AccountTests/Feedly/TestGetStreamIdsService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestGetStreamIdsService.swift rename to Account/Tests/AccountTests/Feedly/TestGetStreamIdsService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/TestMarkArticlesService.swift b/Account/Tests/AccountTests/Feedly/TestMarkArticlesService.swift similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/TestMarkArticlesService.swift rename to Account/Tests/AccountTests/Feedly/TestMarkArticlesService.swift diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-1-initial/collections.json b/Account/Tests/AccountTests/Feedly/feedly-1-initial/collections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-1-initial/collections.json rename to Account/Tests/AccountTests/Feedly/feedly-1-initial/collections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-1-initial/global.all.json b/Account/Tests/AccountTests/Feedly/feedly-1-initial/global.all.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-1-initial/global.all.json rename to Account/Tests/AccountTests/Feedly/feedly-1-initial/global.all.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-1-initial/global.all@MTZkOTdkZWQ1NzM6NTE2OjUzYjgyNmEy.json b/Account/Tests/AccountTests/Feedly/feedly-1-initial/global.all@MTZkOTdkZWQ1NzM6NTE2OjUzYjgyNmEy.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-1-initial/global.all@MTZkOTdkZWQ1NzM6NTE2OjUzYjgyNmEy.json rename to Account/Tests/AccountTests/Feedly/feedly-1-initial/global.all@MTZkOTdkZWQ1NzM6NTE2OjUzYjgyNmEy.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-1-initial/starred.json b/Account/Tests/AccountTests/Feedly/feedly-1-initial/starred.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-1-initial/starred.json rename to Account/Tests/AccountTests/Feedly/feedly-1-initial/starred.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-1-initial/unreadIds.json b/Account/Tests/AccountTests/Feedly/feedly-1-initial/unreadIds.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-1-initial/unreadIds.json rename to Account/Tests/AccountTests/Feedly/feedly-1-initial/unreadIds.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-1-initial/unreadIds@MTZkOTRhOTNhZTQ6MzExOjUzYjgyNmEy.json b/Account/Tests/AccountTests/Feedly/feedly-1-initial/unreadIds@MTZkOTRhOTNhZTQ6MzExOjUzYjgyNmEy.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-1-initial/unreadIds@MTZkOTRhOTNhZTQ6MzExOjUzYjgyNmEy.json rename to Account/Tests/AccountTests/Feedly/feedly-1-initial/unreadIds@MTZkOTRhOTNhZTQ6MzExOjUzYjgyNmEy.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/collections.json b/Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/collections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/collections.json rename to Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/collections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/global.all.json b/Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/global.all.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/global.all.json rename to Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/global.all.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/starred.json b/Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/starred.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/starred.json rename to Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/starred.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/unreadIds.json b/Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/unreadIds.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/unreadIds.json rename to Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/unreadIds.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/unreadIds@MTZkOTJkNjIwM2Q6MTEzYjpkNDUwNjA3MQ==.json b/Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/unreadIds@MTZkOTJkNjIwM2Q6MTEzYjpkNDUwNjA3MQ==.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-2-changestatuses/unreadIds@MTZkOTJkNjIwM2Q6MTEzYjpkNDUwNjA3MQ==.json rename to Account/Tests/AccountTests/Feedly/feedly-2-changestatuses/unreadIds@MTZkOTJkNjIwM2Q6MTEzYjpkNDUwNjA3MQ==.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/collections.json b/Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/collections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/collections.json rename to Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/collections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/global.all.json b/Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/global.all.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/global.all.json rename to Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/global.all.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/starred.json b/Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/starred.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/starred.json rename to Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/starred.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds.json b/Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds.json rename to Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds@MTZkOGRlMjVmM2M6M2YyOmQ0NTA2MDcx.json b/Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds@MTZkOGRlMjVmM2M6M2YyOmQ0NTA2MDcx.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds@MTZkOGRlMjVmM2M6M2YyOmQ0NTA2MDcx.json rename to Account/Tests/AccountTests/Feedly/feedly-3-changestatusesagain/unreadIds@MTZkOGRlMjVmM2M6M2YyOmQ0NTA2MDcx.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/collections.json b/Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/collections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/collections.json rename to Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/collections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/global.all.json b/Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/global.all.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/global.all.json rename to Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/global.all.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/starred.json b/Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/starred.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/starred.json rename to Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/starred.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds.json b/Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds.json rename to Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds@MTZkOTE3YTRlMzQ6YWZjOmQ0NTA2MDcx.json b/Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds@MTZkOTE3YTRlMzQ6YWZjOmQ0NTA2MDcx.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds@MTZkOTE3YTRlMzQ6YWZjOmQ0NTA2MDcx.json rename to Account/Tests/AccountTests/Feedly/feedly-4-addfeedsandfolders/unreadIds@MTZkOTE3YTRlMzQ6YWZjOmQ0NTA2MDcx.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/collections.json b/Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/collections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/collections.json rename to Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/collections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/global.all.json b/Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/global.all.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/global.all.json rename to Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/global.all.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/starred.json b/Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/starred.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/starred.json rename to Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/starred.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds.json b/Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds.json rename to Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds@MTZkOGRlMjVmM2M6M2YxOmQ0NTA2MDcx.json b/Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds@MTZkOGRlMjVmM2M6M2YxOmQ0NTA2MDcx.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds@MTZkOGRlMjVmM2M6M2YxOmQ0NTA2MDcx.json rename to Account/Tests/AccountTests/Feedly/feedly-5-removefeedsandfolders/unreadIds@MTZkOGRlMjVmM2M6M2YxOmQ0NTA2MDcx.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/collections.json b/Account/Tests/AccountTests/Feedly/feedly-add-new-feed/collections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/collections.json rename to Account/Tests/AccountTests/Feedly/feedly-add-new-feed/collections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/emptyCollections.json b/Account/Tests/AccountTests/Feedly/feedly-add-new-feed/emptyCollections.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/emptyCollections.json rename to Account/Tests/AccountTests/Feedly/feedly-add-new-feed/emptyCollections.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/feedStream.json b/Account/Tests/AccountTests/Feedly/feedly-add-new-feed/feedStream.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/feedStream.json rename to Account/Tests/AccountTests/Feedly/feedly-add-new-feed/feedStream.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/putFeed.json b/Account/Tests/AccountTests/Feedly/feedly-add-new-feed/putFeed.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/putFeed.json rename to Account/Tests/AccountTests/Feedly/feedly-add-new-feed/putFeed.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/searchResults.json b/Account/Tests/AccountTests/Feedly/feedly-add-new-feed/searchResults.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/searchResults.json rename to Account/Tests/AccountTests/Feedly/feedly-add-new-feed/searchResults.json diff --git a/Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/unreadIds.json b/Account/Tests/AccountTests/Feedly/feedly-add-new-feed/unreadIds.json similarity index 100% rename from Frameworks/Account/AccountTests/Feedly/feedly-add-new-feed/unreadIds.json rename to Account/Tests/AccountTests/Feedly/feedly-add-new-feed/unreadIds.json diff --git a/Frameworks/Account/AccountTests/JSON/feedly_collections_initial.json b/Account/Tests/AccountTests/JSON/feedly_collections_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/feedly_collections_initial.json rename to Account/Tests/AccountTests/JSON/feedly_collections_initial.json diff --git a/Frameworks/Account/AccountTests/JSON/feedly_macintosh_initial.json b/Account/Tests/AccountTests/JSON/feedly_macintosh_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/feedly_macintosh_initial.json rename to Account/Tests/AccountTests/JSON/feedly_macintosh_initial.json diff --git a/Frameworks/Account/AccountTests/JSON/feedly_unreads_1000.json b/Account/Tests/AccountTests/JSON/feedly_unreads_1000.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/feedly_unreads_1000.json rename to Account/Tests/AccountTests/JSON/feedly_unreads_1000.json diff --git a/Frameworks/Account/AccountTests/JSON/feedly_unreads_initial.json b/Account/Tests/AccountTests/JSON/feedly_unreads_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/feedly_unreads_initial.json rename to Account/Tests/AccountTests/JSON/feedly_unreads_initial.json diff --git a/Frameworks/Account/AccountTests/JSON/subscriptions_add.json b/Account/Tests/AccountTests/JSON/subscriptions_add.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/subscriptions_add.json rename to Account/Tests/AccountTests/JSON/subscriptions_add.json diff --git a/Frameworks/Account/AccountTests/JSON/subscriptions_initial.json b/Account/Tests/AccountTests/JSON/subscriptions_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/subscriptions_initial.json rename to Account/Tests/AccountTests/JSON/subscriptions_initial.json diff --git a/Frameworks/Account/AccountTests/JSON/taggings_add.json b/Account/Tests/AccountTests/JSON/taggings_add.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/taggings_add.json rename to Account/Tests/AccountTests/JSON/taggings_add.json diff --git a/Frameworks/Account/AccountTests/JSON/taggings_delete.json b/Account/Tests/AccountTests/JSON/taggings_delete.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/taggings_delete.json rename to Account/Tests/AccountTests/JSON/taggings_delete.json diff --git a/Frameworks/Account/AccountTests/JSON/taggings_initial.json b/Account/Tests/AccountTests/JSON/taggings_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/taggings_initial.json rename to Account/Tests/AccountTests/JSON/taggings_initial.json diff --git a/Frameworks/Account/AccountTests/JSON/tags_add.json b/Account/Tests/AccountTests/JSON/tags_add.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/tags_add.json rename to Account/Tests/AccountTests/JSON/tags_add.json diff --git a/Frameworks/Account/AccountTests/JSON/tags_delete.json b/Account/Tests/AccountTests/JSON/tags_delete.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/tags_delete.json rename to Account/Tests/AccountTests/JSON/tags_delete.json diff --git a/Frameworks/Account/AccountTests/JSON/tags_initial.json b/Account/Tests/AccountTests/JSON/tags_initial.json similarity index 100% rename from Frameworks/Account/AccountTests/JSON/tags_initial.json rename to Account/Tests/AccountTests/JSON/tags_initial.json diff --git a/Frameworks/Account/AccountTests/TestAccountManager.swift b/Account/Tests/AccountTests/TestAccountManager.swift similarity index 100% rename from Frameworks/Account/AccountTests/TestAccountManager.swift rename to Account/Tests/AccountTests/TestAccountManager.swift diff --git a/Frameworks/Account/AccountTests/TestTransport.swift b/Account/Tests/AccountTests/TestTransport.swift similarity index 100% rename from Frameworks/Account/AccountTests/TestTransport.swift rename to Account/Tests/AccountTests/TestTransport.swift diff --git a/Account/Tests/LinuxMain.swift b/Account/Tests/LinuxMain.swift new file mode 100644 index 000000000..4b4b70c69 --- /dev/null +++ b/Account/Tests/LinuxMain.swift @@ -0,0 +1,7 @@ +import XCTest + +import AccountTests + +var tests = [XCTestCaseEntry]() +tests += AccountTests.allTests() +XCTMain(tests) diff --git a/Articles/.swiftpm/xcode/xcshareddata/xcschemes/Articles.xcscheme b/Articles/.swiftpm/xcode/xcshareddata/xcschemes/Articles.xcscheme new file mode 100644 index 000000000..417bf8dd2 --- /dev/null +++ b/Articles/.swiftpm/xcode/xcshareddata/xcschemes/Articles.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Articles/Package.swift b/Articles/Package.swift index 980a6ada3..71972e2dc 100644 --- a/Articles/Package.swift +++ b/Articles/Package.swift @@ -3,6 +3,7 @@ import PackageDescription let package = Package( name: "Articles", + platforms: [.macOS(SupportedPlatform.MacOSVersion.v10_15), .iOS(SupportedPlatform.IOSVersion.v13)], products: [ .library( name: "Articles", @@ -14,6 +15,8 @@ let package = Package( targets: [ .target( name: "Articles", - dependencies: []), - ] + dependencies: [ + .product(name: "RSCore", package: "RSCore"), + ]), + ] ) diff --git a/ArticlesDatabase/Package.swift b/ArticlesDatabase/Package.swift index 856927d37..1009fa95e 100644 --- a/ArticlesDatabase/Package.swift +++ b/ArticlesDatabase/Package.swift @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "ArticlesDatabase", + platforms: [.macOS(SupportedPlatform.MacOSVersion.v10_15), .iOS(SupportedPlatform.IOSVersion.v13)], products: [ .library( name: "ArticlesDatabase", @@ -14,10 +15,16 @@ let package = Package( .package(url: "https://github.com/Ranchero-Software/RSCore.git", .upToNextMajor(from: "1.0.0-beta1")), .package(url: "https://github.com/Ranchero-Software/RSDatabase.git", .upToNextMajor(from: "1.0.0-beta1")), .package(url: "https://github.com/Ranchero-Software/RSParser.git", .upToNextMajor(from: "2.0.0-beta1")), + .package(url: "../Articles", .upToNextMajor(from: "1.0.0")), ], targets: [ .target( name: "ArticlesDatabase", - dependencies: []), + dependencies: [ + .product(name: "RSCore", package: "RSCore"), + .product(name: "RSDatabase", package: "RSDatabase"), + .product(name: "RSParser", package: "RSParser"), + .product(name: "Articles", package: "Articles"), + ]), ] ) diff --git a/Frameworks/Account/Account.xcodeproj/project.pbxproj b/Frameworks/Account/Account.xcodeproj/project.pbxproj deleted file mode 100644 index 7855ee31f..000000000 --- a/Frameworks/Account/Account.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1562 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 52; - objects = { - -/* Begin PBXBuildFile section */ - 1748B4A724CADA17008F9850 /* AccountSyncError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1748B4A624CADA17008F9850 /* AccountSyncError.swift */; }; - 179DB02FFBC17AC9798F0EBC /* NewsBlurStory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB7399814F6FB3247825C /* NewsBlurStory.swift */; }; - 179DB0B17A6C51B95ABC1741 /* NewsBlurStoryStatusChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB5B421C5433B45C5F13E /* NewsBlurStoryStatusChange.swift */; }; - 179DB28CF49F73A945EBF5DB /* NewsBlurLoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB088236E3236010462E8 /* NewsBlurLoginResponse.swift */; }; - 179DB3A93E3205EF29C2AF62 /* NewsBlurAPICaller+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBF346CF712AB2F0E9E6 /* NewsBlurAPICaller+Internal.swift */; }; - 179DB49A960F8B78C4924458 /* NewsBlurGenericCodingKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB66D933E976C29159DEE /* NewsBlurGenericCodingKeys.swift */; }; - 179DBCB4B11C88EBE852A015 /* NewsBlurFeedChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB3CBADAFCF5377DA3D02 /* NewsBlurFeedChange.swift */; }; - 179DBD4ECC1C9712DF51DB8C /* NewsBlurFolderChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBDDC00B68411AA28941F /* NewsBlurFolderChange.swift */; }; - 179DBE829FDF48E102F73244 /* NewsBlurAccountDelegate+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB78C47256A122A281942 /* NewsBlurAccountDelegate+Internal.swift */; }; - 179DBED55C9B4D6A413486C1 /* NewsBlurStoryHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB818180A51098A9816B2 /* NewsBlurStoryHash.swift */; }; - 179DBF4DE2562D4C532F6008 /* NewsBlurFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB1B909672E0E807B5E8C /* NewsBlurFeed.swift */; }; - 3B826DA72385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826D9E2385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift */; }; - 3B826DA82385C81C00FC1ADB /* FeedWranglerFeedItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826D9F2385C81C00FC1ADB /* FeedWranglerFeedItem.swift */; }; - 3B826DA92385C81C00FC1ADB /* FeedWranglerAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA02385C81C00FC1ADB /* FeedWranglerAPICaller.swift */; }; - 3B826DAA2385C81C00FC1ADB /* FeedWranglerSubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA12385C81C00FC1ADB /* FeedWranglerSubscription.swift */; }; - 3B826DAB2385C81C00FC1ADB /* FeedWranglerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA22385C81C00FC1ADB /* FeedWranglerConfig.swift */; }; - 3B826DAC2385C81C00FC1ADB /* FeedWranglerAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA32385C81C00FC1ADB /* FeedWranglerAccountDelegate.swift */; }; - 3B826DAD2385C81C00FC1ADB /* FeedWranglerFeedItemsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA42385C81C00FC1ADB /* FeedWranglerFeedItemsRequest.swift */; }; - 3B826DAE2385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA52385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift */; }; - 3B826DAF2385C81C00FC1ADB /* FeedWranglerGenericResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA62385C81C00FC1ADB /* FeedWranglerGenericResult.swift */; }; - 3BC23AB92385ECB100371CBA /* FeedWranglerSubscriptionResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BC23AB82385ECB100371CBA /* FeedWranglerSubscriptionResult.swift */; }; - 5100E4CD246243990010A63D /* RedditPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5100E4CC246243990010A63D /* RedditPreview.swift */; }; - 5102FD80244009E000534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7F244009E000534F17 /* Secrets.framework */; }; - 5103A9D92422546800410853 /* CloudKitAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5103A9D82422546800410853 /* CloudKitAccountDelegate.swift */; }; - 5107A09B227DE49500C7C3C5 /* TestAccountManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5107A09A227DE49500C7C3C5 /* TestAccountManager.swift */; }; - 5107A09D227DE77700C7C3C5 /* TestTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5107A09C227DE77700C7C3C5 /* TestTransport.swift */; }; - 510BD111232C3801002692E4 /* AccountMetadataFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510BD110232C3801002692E4 /* AccountMetadataFile.swift */; }; - 510BD113232C3E9D002692E4 /* WebFeedMetadataFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510BD112232C3E9D002692E4 /* WebFeedMetadataFile.swift */; }; - 510E3317244E0CED00E7A6AF /* TwitterMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510E3316244E0CED00E7A6AF /* TwitterMedia.swift */; }; - 511B9804237CD4270028BCAA /* FeedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 511B9803237CD4270028BCAA /* FeedIdentifier.swift */; }; - 512DD4CB2431000600C17B1F /* CKRecord+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 512DD4CA2431000600C17B1F /* CKRecord+Extensions.swift */; }; - 512DD4CD2431098700C17B1F /* CloudKitAccountZoneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 512DD4CC2431098700C17B1F /* CloudKitAccountZoneDelegate.swift */; }; - 5132AAC42448BAD90077840A /* FeedProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132AAC12448BAD90077840A /* FeedProvider.swift */; }; - 5132AAC52448BAD90077840A /* TwitterFeedProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132AAC32448BAD90077840A /* TwitterFeedProvider.swift */; }; - 5132DE812449159100806ADE /* TwitterUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132DE802449159100806ADE /* TwitterUser.swift */; }; - 5132DE832449306F00806ADE /* TwitterStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132DE822449306F00806ADE /* TwitterStatus.swift */; }; - 513323082281070D00C30F19 /* AccountFeedbinSyncTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513323072281070C00C30F19 /* AccountFeedbinSyncTest.swift */; }; - 5133230A2281082F00C30F19 /* subscriptions_initial.json in Resources */ = {isa = PBXBuildFile; fileRef = 513323092281082F00C30F19 /* subscriptions_initial.json */; }; - 5133230C2281088A00C30F19 /* subscriptions_add.json in Resources */ = {isa = PBXBuildFile; fileRef = 5133230B2281088A00C30F19 /* subscriptions_add.json */; }; - 5133BB47245FD8140001E3D0 /* RedditLinkListing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5133BB46245FD8140001E3D0 /* RedditLinkListing.swift */; }; - 5133BB49246078910001E3D0 /* RedditLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5133BB48246078910001E3D0 /* RedditLink.swift */; }; - 5133BB4B2460BDF30001E3D0 /* RedditSubreddit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5133BB4A2460BDF30001E3D0 /* RedditSubreddit.swift */; }; - 5133BB4D2460CA0B0001E3D0 /* RedditMe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5133BB4C2460CA0B0001E3D0 /* RedditMe.swift */; }; - 5133BB4F2460EC230001E3D0 /* RedditMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5133BB4E2460EC230001E3D0 /* RedditMedia.swift */; }; - 5133BB512460EE730001E3D0 /* RedditMediaEmbed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5133BB502460EE730001E3D0 /* RedditMediaEmbed.swift */; }; - 51383A4324D1FF030027E272 /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 51383A4224D1FF030027E272 /* RSCore */; }; - 51383A4424D1FF030027E272 /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51383A4224D1FF030027E272 /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51383A4624D1FF160027E272 /* RSWeb in Frameworks */ = {isa = PBXBuildFile; productRef = 51383A4524D1FF160027E272 /* RSWeb */; }; - 51383A4724D1FF160027E272 /* RSWeb in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51383A4524D1FF160027E272 /* RSWeb */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 5138B4CA24CF85050018089B /* RedditMediaMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5138B4C924CF85050018089B /* RedditMediaMetadata.swift */; }; - 5138B4CC24CF877A0018089B /* RedditGalleryData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5138B4CB24CF877A0018089B /* RedditGalleryData.swift */; }; - 5139A6382459822D004D960C /* CloudKitArticleStatusUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5139A6372459822D004D960C /* CloudKitArticleStatusUpdate.swift */; }; - 5141000A2464DAA6001DA326 /* RedditSort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514100092464DAA6001DA326 /* RedditSort.swift */; }; - 5144EA49227B497600D19003 /* FeedbinAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5144EA48227B497600D19003 /* FeedbinAPICaller.swift */; }; - 5144EA4E227B829A00D19003 /* FeedbinAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5144EA4D227B829A00D19003 /* FeedbinAccountDelegate.swift */; }; - 514BF5202391B0DB00902FE8 /* SingleArticleFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514BF51F2391B0DB00902FE8 /* SingleArticleFetcher.swift */; }; - 5150FFFE243823B800C1A442 /* CloudKitError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5150FFFD243823B800C1A442 /* CloudKitError.swift */; }; - 5154367B228EEB28005E1CDF /* FeedbinImportResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5154367A228EEB28005E1CDF /* FeedbinImportResult.swift */; }; - 515E4EB62324FF8C0057B0E7 /* URLRequest+RSWeb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */; }; - 5165D7122282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5165D7112282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift */; }; - 5165D71622821C2400D9D53D /* taggings_delete.json in Resources */ = {isa = PBXBuildFile; fileRef = 5165D71322821C2400D9D53D /* taggings_delete.json */; }; - 5165D71722821C2400D9D53D /* taggings_add.json in Resources */ = {isa = PBXBuildFile; fileRef = 5165D71422821C2400D9D53D /* taggings_add.json */; }; - 5165D71822821C2400D9D53D /* taggings_initial.json in Resources */ = {isa = PBXBuildFile; fileRef = 5165D71522821C2400D9D53D /* taggings_initial.json */; }; - 5165D72822835F7800D9D53D /* FeedFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5165D71C22835E9800D9D53D /* FeedFinder.swift */; }; - 5165D72922835F7A00D9D53D /* FeedSpecifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5165D71D22835E9800D9D53D /* FeedSpecifier.swift */; }; - 5165D72A22835F7D00D9D53D /* HTMLFeedFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5165D71E22835E9800D9D53D /* HTMLFeedFinder.swift */; }; - 5165D73122837F3400D9D53D /* InitialFeedDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5165D73022837F3400D9D53D /* InitialFeedDownloader.swift */; }; - 516896352448EBEA00185AC5 /* FeedProviderManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516896342448EBEA00185AC5 /* FeedProviderManager.swift */; }; - 5170743C232AEDB500A461A3 /* OPMLFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5170743B232AEDB500A461A3 /* OPMLFile.swift */; }; - 5193CD54245E3F7A0092735E /* RedditFeedProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193CD53245E3F7A0092735E /* RedditFeedProvider.swift */; }; - 519E84A62433D49000D238B0 /* OPMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 519E84A52433D49000D238B0 /* OPMLNormalizer.swift */; }; - 519E84A82434C5EF00D238B0 /* CloudKitArticlesZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 519E84A72434C5EF00D238B0 /* CloudKitArticlesZone.swift */; }; - 519E84AC2435019100D238B0 /* CloudKitArticlesZoneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 519E84AB2435019100D238B0 /* CloudKitArticlesZoneDelegate.swift */; }; - 51B0DF1B24D24F12000AD99E /* RSDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF1A24D24F12000AD99E /* RSDatabase */; }; - 51B0DF1C24D24F12000AD99E /* RSDatabase in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF1A24D24F12000AD99E /* RSDatabase */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DF2D24D2C8B1000AD99E /* RSParser in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2C24D2C8B1000AD99E /* RSParser */; }; - 51B0DF2E24D2C8B1000AD99E /* RSParser in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2C24D2C8B1000AD99E /* RSParser */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B36305244B6135000DEF2A /* TwitterEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B36304244B6135000DEF2A /* TwitterEntities.swift */; }; - 51B36307244B6234000DEF2A /* TwitterHashtag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B36306244B6234000DEF2A /* TwitterHashtag.swift */; }; - 51B36309244B62A5000DEF2A /* TwitterURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B36308244B62A5000DEF2A /* TwitterURL.swift */; }; - 51B3630B244B634A000DEF2A /* TwitterMention.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B3630A244B634A000DEF2A /* TwitterMention.swift */; }; - 51B3630D244B6428000DEF2A /* TwitterSymbol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B3630C244B6428000DEF2A /* TwitterSymbol.swift */; }; - 51B3630F244B6CB9000DEF2A /* TwitterExtendedEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B3630E244B6CB9000DEF2A /* TwitterExtendedEntities.swift */; }; - 51B36311244B6CFB000DEF2A /* TwitterExtendedMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B36310244B6CFA000DEF2A /* TwitterExtendedMedia.swift */; }; - 51B36313244B8B5E000DEF2A /* TwitterVideo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B36312244B8B5E000DEF2A /* TwitterVideo.swift */; }; - 51B36315244BCCA4000DEF2A /* TwitterSearchResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B36314244BCCA4000DEF2A /* TwitterSearchResult.swift */; }; - 51BB7B84233531BC008E8144 /* AccountBehaviors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BB7B83233531BC008E8144 /* AccountBehaviors.swift */; }; - 51BC8FCC237EC055004F8B56 /* Feed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BC8FCB237EC055004F8B56 /* Feed.swift */; }; - 51BFDECE238B508D00216323 /* ContainerIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BFDECD238B508D00216323 /* ContainerIdentifier.swift */; }; - 51C034DF242D65D20014DC71 /* CloudKitZoneResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C034DE242D65D20014DC71 /* CloudKitZoneResult.swift */; }; - 51D58755227F53BE00900287 /* FeedbinTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51D58754227F53BE00900287 /* FeedbinTag.swift */; }; - 51D5875A227F630B00900287 /* tags_delete.json in Resources */ = {isa = PBXBuildFile; fileRef = 51D58757227F630B00900287 /* tags_delete.json */; }; - 51D5875B227F630B00900287 /* tags_add.json in Resources */ = {isa = PBXBuildFile; fileRef = 51D58758227F630B00900287 /* tags_add.json */; }; - 51D5875C227F630B00900287 /* tags_initial.json in Resources */ = {isa = PBXBuildFile; fileRef = 51D58759227F630B00900287 /* tags_initial.json */; }; - 51D5875E227F643C00900287 /* AccountFeedbinFolderSyncTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51D5875D227F643C00900287 /* AccountFeedbinFolderSyncTest.swift */; }; - 51E148EC234B8FFC0004F7A5 /* SyncDatabase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E148EB234B8FFC0004F7A5 /* SyncDatabase.framework */; }; - 51E3EB41229AF61B00645299 /* AccountError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E3EB40229AF61B00645299 /* AccountError.swift */; }; - 51E490362288C37100C791F0 /* FeedbinDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E490352288C37100C791F0 /* FeedbinDate.swift */; }; - 51E4DB2E242633ED0091EB5B /* CloudKitZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E4DB2D242633ED0091EB5B /* CloudKitZone.swift */; }; - 51E4DB302426353D0091EB5B /* CloudKitAccountZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E4DB2F2426353D0091EB5B /* CloudKitAccountZone.swift */; }; - 51E59599228C77BC00FCC42B /* FeedbinUnreadEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E59598228C77BC00FCC42B /* FeedbinUnreadEntry.swift */; }; - 51E5959B228C781500FCC42B /* FeedbinStarredEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E5959A228C781500FCC42B /* FeedbinStarredEntry.swift */; }; - 51F6C58F245DB2E8001E41CA /* CloudKitSendStatusOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F6C58E245DB2E8001E41CA /* CloudKitSendStatusOperation.swift */; }; - 51F6C591245DB302001E41CA /* CloudKitReceiveStatusOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F6C590245DB302001E41CA /* CloudKitReceiveStatusOperation.swift */; }; - 51F6C593245DBA8E001E41CA /* CloudKitRemoteNotificationOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F6C592245DBA8E001E41CA /* CloudKitRemoteNotificationOperation.swift */; }; - 552032F8229D5D5A009559E0 /* ReaderAPIEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032ED229D5D5A009559E0 /* ReaderAPIEntry.swift */; }; - 552032F9229D5D5A009559E0 /* ReaderAPISubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032EE229D5D5A009559E0 /* ReaderAPISubscription.swift */; }; - 552032FB229D5D5A009559E0 /* ReaderAPITag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032F0229D5D5A009559E0 /* ReaderAPITag.swift */; }; - 552032FC229D5D5A009559E0 /* ReaderAPIUnreadEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032F1229D5D5A009559E0 /* ReaderAPIUnreadEntry.swift */; }; - 552032FD229D5D5A009559E0 /* ReaderAPITagging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032F2229D5D5A009559E0 /* ReaderAPITagging.swift */; }; - 552032FE229D5D5A009559E0 /* ReaderAPIAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032F3229D5D5A009559E0 /* ReaderAPIAccountDelegate.swift */; }; - 55203300229D5D5A009559E0 /* ReaderAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552032F5229D5D5A009559E0 /* ReaderAPICaller.swift */; }; - 769F295938E5A30D03DFF88F /* NewsBlurAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769F2A8DF190549E24B5D110 /* NewsBlurAccountDelegate.swift */; }; - 769F2BA02EF5F329CDE45F5A /* NewsBlurAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769F275FD5D942502C5B4716 /* NewsBlurAPICaller.swift */; }; - 841974011F6DD1EC006346C4 /* Folder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841974001F6DD1EC006346C4 /* Folder.swift */; }; - 841974251F6DDCE4006346C4 /* AccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841974241F6DDCE4006346C4 /* AccountDelegate.swift */; }; - 841D4D702106B40400DD04E6 /* ArticlesDatabase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 841D4D6F2106B40400DD04E6 /* ArticlesDatabase.framework */; }; - 841D4D722106B40A00DD04E6 /* Articles.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 841D4D712106B40A00DD04E6 /* Articles.framework */; }; - 84245C851FDDD8CB0074AFBB /* FeedbinSubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84245C841FDDD8CB0074AFBB /* FeedbinSubscription.swift */; }; - 844B297D2106C7EC004020B3 /* WebFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844B297C2106C7EC004020B3 /* WebFeed.swift */; }; - 844B297F210CE37E004020B3 /* UnreadCountProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844B297E210CE37E004020B3 /* UnreadCountProvider.swift */; }; - 8469F81C1F6DD15E0084783E /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848935101F62486800CEBD24 /* Account.swift */; }; - 846E77451F6EF9B900A165E2 /* Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8419740D1F6DD25F006346C4 /* Container.swift */; }; - 846E774F1F6EF9C000A165E2 /* LocalAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8419742C1F6DDE84006346C4 /* LocalAccountDelegate.swift */; }; - 846E77501F6EF9C400A165E2 /* LocalAccountRefresher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8419742D1F6DDE96006346C4 /* LocalAccountRefresher.swift */; }; - 846E77541F6F00E300A165E2 /* AccountManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 846E77531F6F00E300A165E2 /* AccountManager.swift */; }; - 848935001F62484F00CEBD24 /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 848934F61F62484F00CEBD24 /* Account.framework */; }; - 84B2D4D02238CD8A00498ADA /* WebFeedMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B2D4CE2238C13D00498ADA /* WebFeedMetadata.swift */; }; - 84B99C9F1FAE8D3200ECDEDB /* ContainerPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C9E1FAE8D3200ECDEDB /* ContainerPath.swift */; }; - 84C3654A1F899F3B001EC85C /* CombinedRefreshProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C365491F899F3B001EC85C /* CombinedRefreshProgress.swift */; }; - 84C8B3F41F89DE430053CCA6 /* DataExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C8B3F31F89DE430053CCA6 /* DataExtensions.swift */; }; - 84CAD7161FDF2E22000F0755 /* FeedbinEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CAD7151FDF2E22000F0755 /* FeedbinEntry.swift */; }; - 84D09623217418DC00D77525 /* FeedbinTagging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D09622217418DC00D77525 /* FeedbinTagging.swift */; }; - 84F1F06E2243524700DA0616 /* AccountMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AF4EA3222CFDD100F6A800 /* AccountMetadata.swift */; }; - 84F73CF1202788D90000BCEF /* ArticleFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F73CF0202788D80000BCEF /* ArticleFetcher.swift */; }; - 9E03C11C235D921400FB6D9E /* FeedlyOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E03C11B235D921400FB6D9E /* FeedlyOperationTests.swift */; }; - 9E03C11E235D976500FB6D9E /* FeedlyGetCollectionsOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E03C11D235D976500FB6D9E /* FeedlyGetCollectionsOperationTests.swift */; }; - 9E03C122235E62E100FB6D9E /* FeedlyTestSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E03C121235E62E100FB6D9E /* FeedlyTestSupport.swift */; }; - 9E12B0202334696A00ADE5A0 /* FeedlyCreateFeedsForCollectionFoldersOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E12B01F2334696A00ADE5A0 /* FeedlyCreateFeedsForCollectionFoldersOperation.swift */; }; - 9E1773D32345700F0056A5A8 /* FeedlyLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1773D22345700E0056A5A8 /* FeedlyLink.swift */; }; - 9E1773D5234570E30056A5A8 /* FeedlyEntryParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1773D4234570E30056A5A8 /* FeedlyEntryParser.swift */; }; - 9E1773D7234575AB0056A5A8 /* FeedlyTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1773D6234575AB0056A5A8 /* FeedlyTag.swift */; }; - 9E1773D923458D590056A5A8 /* FeedlyResourceId.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1773D823458D590056A5A8 /* FeedlyResourceId.swift */; }; - 9E1773DB234593CF0056A5A8 /* FeedlyResourceIdTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1773DA234593CF0056A5A8 /* FeedlyResourceIdTests.swift */; }; - 9E1D154D233370D800F4944C /* FeedlySyncAllOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D154C233370D800F4944C /* FeedlySyncAllOperation.swift */; }; - 9E1D154F233371DD00F4944C /* FeedlyGetCollectionsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D154E233371DD00F4944C /* FeedlyGetCollectionsOperation.swift */; }; - 9E1D15512334282100F4944C /* FeedlyMirrorCollectionsAsFoldersOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D15502334282100F4944C /* FeedlyMirrorCollectionsAsFoldersOperation.swift */; }; - 9E1D15532334304B00F4944C /* FeedlyGetStreamContentsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D15522334304B00F4944C /* FeedlyGetStreamContentsOperation.swift */; }; - 9E1D1555233431A600F4944C /* FeedlyOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D1554233431A600F4944C /* FeedlyOperation.swift */; }; - 9E1D15572334355900F4944C /* FeedlyRequestStreamsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D15562334355900F4944C /* FeedlyRequestStreamsOperation.swift */; }; - 9E1D155B2334423300F4944C /* FeedlyOrganiseParsedItemsByFeedOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D155A2334423300F4944C /* FeedlyOrganiseParsedItemsByFeedOperation.swift */; }; - 9E1D155D233447F000F4944C /* FeedlyUpdateAccountFeedsWithItemsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1D155C233447F000F4944C /* FeedlyUpdateAccountFeedsWithItemsOperation.swift */; }; - 9E1FF8602368216B00834C24 /* TestGetStreamIdsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1FF85F2368216B00834C24 /* TestGetStreamIdsService.swift */; }; - 9E1FF8622368219B00834C24 /* TestGetPagedStreamIdsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1FF8612368219B00834C24 /* TestGetPagedStreamIdsService.swift */; }; - 9E1FF8662368ED7E00834C24 /* TestMarkArticlesService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1FF8652368ED7E00834C24 /* TestMarkArticlesService.swift */; }; - 9E1FF8682368EE4900834C24 /* TestGetCollectionsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E1FF8672368EE4900834C24 /* TestGetCollectionsService.swift */; }; - 9E44C90F23C6FF3600CCC286 /* FeedlyIngestStreamArticleIdsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E44C90E23C6FF3600CCC286 /* FeedlyIngestStreamArticleIdsOperation.swift */; }; - 9E5ABE9A236BE6BD00B5DE9F /* feedly-1-initial in Resources */ = {isa = PBXBuildFile; fileRef = 9E5ABE99236BE6BC00B5DE9F /* feedly-1-initial */; }; - 9E5DE60E23C3F4B70064DA30 /* FeedlyFetchIdsForMissingArticlesOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5DE60D23C3F4B70064DA30 /* FeedlyFetchIdsForMissingArticlesOperation.swift */; }; - 9E5EC15923E01D8A00A4E503 /* FeedlyCollectionParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5EC15823E01D8A00A4E503 /* FeedlyCollectionParser.swift */; }; - 9E5EC15B23E01DEF00A4E503 /* FeedlyRTLTextSanitizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5EC15A23E01DEF00A4E503 /* FeedlyRTLTextSanitizer.swift */; }; - 9E5EC15D23E0D58500A4E503 /* FeedlyFeedParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5EC15C23E0D58500A4E503 /* FeedlyFeedParser.swift */; }; - 9E672394236F7CA0000BE141 /* FeedlyRefreshAccessTokenOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E672393236F7CA0000BE141 /* FeedlyRefreshAccessTokenOperation.swift */; }; - 9E672396236F7E68000BE141 /* OAuthAcessTokenRefreshing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E672395236F7E68000BE141 /* OAuthAcessTokenRefreshing.swift */; }; - 9E7299D723505E9600DAEFB7 /* FeedlyAddFeedToCollectionOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7299D623505E9600DAEFB7 /* FeedlyAddFeedToCollectionOperation.swift */; }; - 9E7299D9235062A200DAEFB7 /* FeedlyResourceProviding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7299D8235062A200DAEFB7 /* FeedlyResourceProviding.swift */; }; - 9E784EBE237E890600099B1B /* FeedlyLogoutOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E784EBD237E890600099B1B /* FeedlyLogoutOperation.swift */; }; - 9E79F7742395C9F00031DB98 /* feedly-add-new-feed in Resources */ = {isa = PBXBuildFile; fileRef = 9E79F7732395C9EF0031DB98 /* feedly-add-new-feed */; }; - 9E84DC472359A23200D6E809 /* FeedlyIngestUnreadArticleIdsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E84DC462359A23200D6E809 /* FeedlyIngestUnreadArticleIdsOperation.swift */; }; - 9E84DC492359A73600D6E809 /* FeedlyCheckpointOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E84DC482359A73600D6E809 /* FeedlyCheckpointOperation.swift */; }; - 9E85C8E62366FED600D0F1F7 /* TestGetStreamContentsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E85C8E52366FED600D0F1F7 /* TestGetStreamContentsService.swift */; }; - 9E85C8E82366FF4200D0F1F7 /* TestGetPagedStreamContentsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E85C8E72366FF4200D0F1F7 /* TestGetPagedStreamContentsService.swift */; }; - 9E85C8EB236700E600D0F1F7 /* FeedlyGetEntriesOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E85C8E9236700AD00D0F1F7 /* FeedlyGetEntriesOperation.swift */; }; - 9E85C8ED2367020700D0F1F7 /* FeedlyGetEntriesService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E85C8EC2367020700D0F1F7 /* FeedlyGetEntriesService.swift */; }; - 9E964EB823754AC400A7AF2E /* OAuthAuthorizationClient+Feedly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E964E9E23754AC400A7AF2E /* OAuthAuthorizationClient+Feedly.swift */; }; - 9E964EBA23754B4000A7AF2E /* OAuthAccountAuthorizationOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E964EB923754B4000A7AF2E /* OAuthAccountAuthorizationOperation.swift */; }; - 9EA3133B231E368100268BA0 /* FeedlyAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA3133A231E368100268BA0 /* FeedlyAccountDelegate.swift */; }; - 9EA643CF2391D3560018A28C /* FeedlyAddExistingFeedOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA643CE2391D3550018A28C /* FeedlyAddExistingFeedOperation.swift */; }; - 9EA643D3239305680018A28C /* FeedlySearchOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA643D2239305680018A28C /* FeedlySearchOperation.swift */; }; - 9EA643D5239306AC0018A28C /* FeedlyFeedsSearchResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA643D4239306AC0018A28C /* FeedlyFeedsSearchResponse.swift */; }; - 9EAADA1023C93144003A801F /* TestGetEntriesService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAADA0F23C93144003A801F /* TestGetEntriesService.swift */; }; - 9EAEC60C2332FE830085D7C9 /* FeedlyCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEC60B2332FE830085D7C9 /* FeedlyCollection.swift */; }; - 9EAEC60E2332FEC20085D7C9 /* FeedlyFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEC60D2332FEC20085D7C9 /* FeedlyFeed.swift */; }; - 9EAEC624233315F60085D7C9 /* FeedlyEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEC623233315F60085D7C9 /* FeedlyEntry.swift */; }; - 9EAEC626233318400085D7C9 /* FeedlyStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEC625233318400085D7C9 /* FeedlyStream.swift */; }; - 9EAEC62823331C350085D7C9 /* FeedlyCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEC62723331C350085D7C9 /* FeedlyCategory.swift */; }; - 9EAEC62A23331EE70085D7C9 /* FeedlyOrigin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEC62923331EE70085D7C9 /* FeedlyOrigin.swift */; }; - 9EB1D576238E6A3900A753D7 /* FeedlyAddNewFeedOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB1D575238E6A3900A753D7 /* FeedlyAddNewFeedOperation.swift */; }; - 9EBD49C023C67602005AD5CD /* FeedlyDownloadArticlesOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBD49BF23C67602005AD5CD /* FeedlyDownloadArticlesOperation.swift */; }; - 9EBD49C223C67784005AD5CD /* FeedlyEntryIdentifierProviding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBD49C123C67784005AD5CD /* FeedlyEntryIdentifierProviding.swift */; }; - 9EC228572362C7F900766EF8 /* FeedlyCheckpointOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC228562362C7F900766EF8 /* FeedlyCheckpointOperationTests.swift */; }; - 9EC688EA232B973C00A8D0A2 /* FeedlyAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC688E9232B973C00A8D0A2 /* FeedlyAPICaller.swift */; }; - 9EC688EC232C583300A8D0A2 /* FeedlyAccountDelegate+OAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC688EB232C583300A8D0A2 /* FeedlyAccountDelegate+OAuth.swift */; }; - 9EC688EE232C58E800A8D0A2 /* OAuthAuthorizationCodeGranting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC688ED232C58E800A8D0A2 /* OAuthAuthorizationCodeGranting.swift */; }; - 9EC804E3236C18AB0057CFCB /* FeedlySyncAllMockResponseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC804E2236C18AB0057CFCB /* FeedlySyncAllMockResponseProvider.swift */; }; - 9EC804E5236C1A7F0057CFCB /* feedly-2-changestatuses in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804E4236C1A7F0057CFCB /* feedly-2-changestatuses */; }; - 9EC804E7236C1BA60057CFCB /* feedly-3-changestatusesagain in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804E6236C1BA60057CFCB /* feedly-3-changestatusesagain */; }; - 9EC804E9236C1CBF0057CFCB /* feedly-4-addfeedsandfolders in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804E8236C1CBE0057CFCB /* feedly-4-addfeedsandfolders */; }; - 9EC804EB236C1DFB0057CFCB /* feedly-5-removefeedsandfolders in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804EA236C1DFA0057CFCB /* feedly-5-removefeedsandfolders */; }; - 9EC804ED236C206A0057CFCB /* feedly_collections_initial.json in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804EC236C206A0057CFCB /* feedly_collections_initial.json */; }; - 9EC804EF236C20DD0057CFCB /* feedly_macintosh_initial.json in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804EE236C20DD0057CFCB /* feedly_macintosh_initial.json */; }; - 9EC804F2236C21320057CFCB /* feedly_unreads_1000.json in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804F0236C21320057CFCB /* feedly_unreads_1000.json */; }; - 9EC804F3236C21320057CFCB /* feedly_unreads_initial.json in Resources */ = {isa = PBXBuildFile; fileRef = 9EC804F1236C21320057CFCB /* feedly_unreads_initial.json */; }; - 9ECC9A85234DC16E009B5144 /* FeedlyAccountDelegateError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ECC9A84234DC16E009B5144 /* FeedlyAccountDelegateError.swift */; }; - 9EE4CCFA234F106600FBAE4B /* FeedlyFeedContainerValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE4CCF9234F106600FBAE4B /* FeedlyFeedContainerValidator.swift */; }; - 9EEAE06E235D002D00E3FEE4 /* FeedlyGetCollectionsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEAE06D235D002D00E3FEE4 /* FeedlyGetCollectionsService.swift */; }; - 9EEAE071235D019B00E3FEE4 /* FeedlyGetStreamContentsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEAE070235D019B00E3FEE4 /* FeedlyGetStreamContentsService.swift */; }; - 9EEAE073235D01AE00E3FEE4 /* FeedlyGetStreamIdsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEAE072235D01AE00E3FEE4 /* FeedlyGetStreamIdsService.swift */; }; - 9EEAE075235D01C400E3FEE4 /* FeedlyMarkArticlesService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEAE074235D01C400E3FEE4 /* FeedlyMarkArticlesService.swift */; }; - 9EEEF71F23545CB4009E9D80 /* FeedlySendArticleStatusesOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEEF71E23545CB4009E9D80 /* FeedlySendArticleStatusesOperation.swift */; }; - 9EEEF7212355277F009E9D80 /* FeedlyIngestStarredArticleIdsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEEF7202355277F009E9D80 /* FeedlyIngestStarredArticleIdsOperation.swift */; }; - 9EF1B10323584B4C000A486A /* FeedlySyncStreamContentsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF1B10223584B4C000A486A /* FeedlySyncStreamContentsOperation.swift */; }; - 9EF1B10723590D61000A486A /* FeedlyGetStreamIdsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF1B10623590D61000A486A /* FeedlyGetStreamIdsOperation.swift */; }; - 9EF1B10923590E93000A486A /* FeedlyStreamIds.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF1B10823590E93000A486A /* FeedlyStreamIds.swift */; }; - 9EF2602C23C91FFE006D160C /* FeedlyGetUpdatedArticleIdsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF2602B23C91FFE006D160C /* FeedlyGetUpdatedArticleIdsOperation.swift */; }; - 9EF58EB023E1606000992A2B /* FeedlyTextSanitizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF58EAF23E1606000992A2B /* FeedlyTextSanitizationTests.swift */; }; - 9EF58EB223E1647400992A2B /* FeedlyCollectionParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF58EB123E1647400992A2B /* FeedlyCollectionParserTests.swift */; }; - 9EF58EB423E1655300992A2B /* FeedlyFeedParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF58EB323E1655300992A2B /* FeedlyFeedParserTests.swift */; }; - 9EF58EB623E1669F00992A2B /* FeedlyEntryParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF58EB523E1669F00992A2B /* FeedlyEntryParserTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 841973EE1F6DD19E006346C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 841973E81F6DD19E006346C4 /* RSCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 84CFF4F41AC3C69700CEA6C8; - remoteInfo = RSCore; - }; - 841973F01F6DD19E006346C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 841973E81F6DD19E006346C4 /* RSCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 84CFF4FF1AC3C69700CEA6C8; - remoteInfo = RSCoreTests; - }; - 841973F21F6DD19E006346C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 841973E81F6DD19E006346C4 /* RSCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 842DD7BC1E14993900E061EB; - remoteInfo = RSCoreiOS; - }; - 841973F91F6DD1AC006346C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 841973F41F6DD1AC006346C4 /* RSParser.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 84FF5F841EFA285800C15A01; - remoteInfo = RSParser; - }; - 841973FB1F6DD1AC006346C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 841973F41F6DD1AC006346C4 /* RSParser.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 84FF5F8D1EFA285800C15A01; - remoteInfo = RSParserTests; - }; - 848935011F62484F00CEBD24 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 848934ED1F62484F00CEBD24 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 848934F51F62484F00CEBD24; - remoteInfo = Account; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 5102AE8424D180A90050839C /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 51383A4724D1FF160027E272 /* RSWeb in Embed Frameworks */, - 51383A4424D1FF030027E272 /* RSCore in Embed Frameworks */, - 51B0DF2E24D2C8B1000AD99E /* RSParser in Embed Frameworks */, - 51B0DF1C24D24F12000AD99E /* RSDatabase in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1748B4A624CADA17008F9850 /* AccountSyncError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountSyncError.swift; sourceTree = ""; }; - 179DB088236E3236010462E8 /* NewsBlurLoginResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurLoginResponse.swift; sourceTree = ""; }; - 179DB1B909672E0E807B5E8C /* NewsBlurFeed.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurFeed.swift; sourceTree = ""; }; - 179DB3CBADAFCF5377DA3D02 /* NewsBlurFeedChange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurFeedChange.swift; sourceTree = ""; }; - 179DB5B421C5433B45C5F13E /* NewsBlurStoryStatusChange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurStoryStatusChange.swift; sourceTree = ""; }; - 179DB66D933E976C29159DEE /* NewsBlurGenericCodingKeys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurGenericCodingKeys.swift; sourceTree = ""; }; - 179DB7399814F6FB3247825C /* NewsBlurStory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurStory.swift; sourceTree = ""; }; - 179DB78C47256A122A281942 /* NewsBlurAccountDelegate+Internal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NewsBlurAccountDelegate+Internal.swift"; sourceTree = ""; }; - 179DB818180A51098A9816B2 /* NewsBlurStoryHash.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurStoryHash.swift; sourceTree = ""; }; - 179DBBF346CF712AB2F0E9E6 /* NewsBlurAPICaller+Internal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NewsBlurAPICaller+Internal.swift"; sourceTree = ""; }; - 179DBDDC00B68411AA28941F /* NewsBlurFolderChange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurFolderChange.swift; sourceTree = ""; }; - 3B826D9E2385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAuthorizationResult.swift; sourceTree = ""; }; - 3B826D9F2385C81C00FC1ADB /* FeedWranglerFeedItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerFeedItem.swift; sourceTree = ""; }; - 3B826DA02385C81C00FC1ADB /* FeedWranglerAPICaller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAPICaller.swift; sourceTree = ""; }; - 3B826DA12385C81C00FC1ADB /* FeedWranglerSubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerSubscription.swift; sourceTree = ""; }; - 3B826DA22385C81C00FC1ADB /* FeedWranglerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerConfig.swift; sourceTree = ""; }; - 3B826DA32385C81C00FC1ADB /* FeedWranglerAccountDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAccountDelegate.swift; sourceTree = ""; }; - 3B826DA42385C81C00FC1ADB /* FeedWranglerFeedItemsRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerFeedItemsRequest.swift; sourceTree = ""; }; - 3B826DA52385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerSubscriptionsRequest.swift; sourceTree = ""; }; - 3B826DA62385C81C00FC1ADB /* FeedWranglerGenericResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerGenericResult.swift; sourceTree = ""; }; - 3BC23AB82385ECB100371CBA /* FeedWranglerSubscriptionResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedWranglerSubscriptionResult.swift; sourceTree = ""; }; - 5100E4CC246243990010A63D /* RedditPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditPreview.swift; sourceTree = ""; }; - 5102FD7F244009E000534F17 /* Secrets.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Secrets.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5103A9D82422546800410853 /* CloudKitAccountDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitAccountDelegate.swift; sourceTree = ""; }; - 5107A098227DE42E00C7C3C5 /* AccountCredentialsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountCredentialsTest.swift; sourceTree = ""; }; - 5107A09A227DE49500C7C3C5 /* TestAccountManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestAccountManager.swift; sourceTree = ""; }; - 5107A09C227DE77700C7C3C5 /* TestTransport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestTransport.swift; sourceTree = ""; }; - 510BD110232C3801002692E4 /* AccountMetadataFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountMetadataFile.swift; sourceTree = ""; }; - 510BD112232C3E9D002692E4 /* WebFeedMetadataFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebFeedMetadataFile.swift; sourceTree = ""; }; - 510E3316244E0CED00E7A6AF /* TwitterMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterMedia.swift; sourceTree = ""; }; - 511076A3243BD33100D97C8C /* .framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = .framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 511076F4243BD96D00D97C8C /* FeedProvider.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = FeedProvider.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 511B9803237CD4270028BCAA /* FeedIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedIdentifier.swift; sourceTree = ""; }; - 512DD4CA2431000600C17B1F /* CKRecord+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CKRecord+Extensions.swift"; sourceTree = ""; }; - 512DD4CC2431098700C17B1F /* CloudKitAccountZoneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitAccountZoneDelegate.swift; sourceTree = ""; }; - 5132AAC12448BAD90077840A /* FeedProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedProvider.swift; sourceTree = ""; }; - 5132AAC32448BAD90077840A /* TwitterFeedProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwitterFeedProvider.swift; sourceTree = ""; }; - 5132DE802449159100806ADE /* TwitterUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterUser.swift; sourceTree = ""; }; - 5132DE822449306F00806ADE /* TwitterStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterStatus.swift; sourceTree = ""; }; - 513323072281070C00C30F19 /* AccountFeedbinSyncTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountFeedbinSyncTest.swift; sourceTree = ""; }; - 513323092281082F00C30F19 /* subscriptions_initial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = subscriptions_initial.json; sourceTree = ""; }; - 5133230B2281088A00C30F19 /* subscriptions_add.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = subscriptions_add.json; sourceTree = ""; }; - 5133BB46245FD8140001E3D0 /* RedditLinkListing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditLinkListing.swift; sourceTree = ""; }; - 5133BB48246078910001E3D0 /* RedditLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditLink.swift; sourceTree = ""; }; - 5133BB4A2460BDF30001E3D0 /* RedditSubreddit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditSubreddit.swift; sourceTree = ""; }; - 5133BB4C2460CA0B0001E3D0 /* RedditMe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditMe.swift; sourceTree = ""; }; - 5133BB4E2460EC230001E3D0 /* RedditMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditMedia.swift; sourceTree = ""; }; - 5133BB502460EE730001E3D0 /* RedditMediaEmbed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditMediaEmbed.swift; sourceTree = ""; }; - 5138B4C924CF85050018089B /* RedditMediaMetadata.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditMediaMetadata.swift; sourceTree = ""; }; - 5138B4CB24CF877A0018089B /* RedditGalleryData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditGalleryData.swift; sourceTree = ""; }; - 5139A6372459822D004D960C /* CloudKitArticleStatusUpdate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitArticleStatusUpdate.swift; sourceTree = ""; }; - 514100092464DAA6001DA326 /* RedditSort.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditSort.swift; sourceTree = ""; }; - 5144EA48227B497600D19003 /* FeedbinAPICaller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinAPICaller.swift; sourceTree = ""; }; - 5144EA4D227B829A00D19003 /* FeedbinAccountDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinAccountDelegate.swift; sourceTree = ""; }; - 514BF51F2391B0DB00902FE8 /* SingleArticleFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleArticleFetcher.swift; sourceTree = ""; }; - 5150FFFD243823B800C1A442 /* CloudKitError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CloudKitError.swift; sourceTree = ""; }; - 5154367A228EEB28005E1CDF /* FeedbinImportResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinImportResult.swift; sourceTree = ""; }; - 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLRequest+RSWeb.swift"; sourceTree = ""; }; - 5165D7112282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountFeedbinFolderContentsSyncTest.swift; sourceTree = ""; }; - 5165D71322821C2400D9D53D /* taggings_delete.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = taggings_delete.json; sourceTree = ""; }; - 5165D71422821C2400D9D53D /* taggings_add.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = taggings_add.json; sourceTree = ""; }; - 5165D71522821C2400D9D53D /* taggings_initial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = taggings_initial.json; sourceTree = ""; }; - 5165D71C22835E9800D9D53D /* FeedFinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedFinder.swift; sourceTree = ""; }; - 5165D71D22835E9800D9D53D /* FeedSpecifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedSpecifier.swift; sourceTree = ""; }; - 5165D71E22835E9800D9D53D /* HTMLFeedFinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTMLFeedFinder.swift; sourceTree = ""; }; - 5165D73022837F3400D9D53D /* InitialFeedDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitialFeedDownloader.swift; sourceTree = ""; }; - 516896342448EBEA00185AC5 /* FeedProviderManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedProviderManager.swift; sourceTree = ""; }; - 5170743B232AEDB500A461A3 /* OPMLFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OPMLFile.swift; sourceTree = ""; }; - 5193CD53245E3F7A0092735E /* RedditFeedProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditFeedProvider.swift; sourceTree = ""; }; - 519E84A52433D49000D238B0 /* OPMLNormalizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OPMLNormalizer.swift; sourceTree = ""; }; - 519E84A72434C5EF00D238B0 /* CloudKitArticlesZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitArticlesZone.swift; sourceTree = ""; }; - 519E84AB2435019100D238B0 /* CloudKitArticlesZoneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CloudKitArticlesZoneDelegate.swift; sourceTree = ""; }; - 51B36304244B6135000DEF2A /* TwitterEntities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterEntities.swift; sourceTree = ""; }; - 51B36306244B6234000DEF2A /* TwitterHashtag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterHashtag.swift; sourceTree = ""; }; - 51B36308244B62A5000DEF2A /* TwitterURL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterURL.swift; sourceTree = ""; }; - 51B3630A244B634A000DEF2A /* TwitterMention.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterMention.swift; sourceTree = ""; }; - 51B3630C244B6428000DEF2A /* TwitterSymbol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterSymbol.swift; sourceTree = ""; }; - 51B3630E244B6CB9000DEF2A /* TwitterExtendedEntities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterExtendedEntities.swift; sourceTree = ""; }; - 51B36310244B6CFA000DEF2A /* TwitterExtendedMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterExtendedMedia.swift; sourceTree = ""; }; - 51B36312244B8B5E000DEF2A /* TwitterVideo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterVideo.swift; sourceTree = ""; }; - 51B36314244BCCA4000DEF2A /* TwitterSearchResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterSearchResult.swift; sourceTree = ""; }; - 51BB7B83233531BC008E8144 /* AccountBehaviors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountBehaviors.swift; sourceTree = ""; }; - 51BC8FCB237EC055004F8B56 /* Feed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feed.swift; sourceTree = ""; }; - 51BFDECD238B508D00216323 /* ContainerIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContainerIdentifier.swift; sourceTree = ""; }; - 51C034DE242D65D20014DC71 /* CloudKitZoneResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitZoneResult.swift; sourceTree = ""; }; - 51D58754227F53BE00900287 /* FeedbinTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinTag.swift; sourceTree = ""; }; - 51D58757227F630B00900287 /* tags_delete.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tags_delete.json; sourceTree = ""; }; - 51D58758227F630B00900287 /* tags_add.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tags_add.json; sourceTree = ""; }; - 51D58759227F630B00900287 /* tags_initial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tags_initial.json; sourceTree = ""; }; - 51D5875D227F643C00900287 /* AccountFeedbinFolderSyncTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountFeedbinFolderSyncTest.swift; sourceTree = ""; }; - 51E148EB234B8FFC0004F7A5 /* SyncDatabase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SyncDatabase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 51E3EB40229AF61B00645299 /* AccountError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountError.swift; sourceTree = ""; }; - 51E490352288C37100C791F0 /* FeedbinDate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinDate.swift; sourceTree = ""; }; - 51E4DB2D242633ED0091EB5B /* CloudKitZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitZone.swift; sourceTree = ""; }; - 51E4DB2F2426353D0091EB5B /* CloudKitAccountZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitAccountZone.swift; sourceTree = ""; }; - 51E59598228C77BC00FCC42B /* FeedbinUnreadEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinUnreadEntry.swift; sourceTree = ""; }; - 51E5959A228C781500FCC42B /* FeedbinStarredEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinStarredEntry.swift; sourceTree = ""; }; - 51F6C58E245DB2E8001E41CA /* CloudKitSendStatusOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitSendStatusOperation.swift; sourceTree = ""; }; - 51F6C590245DB302001E41CA /* CloudKitReceiveStatusOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitReceiveStatusOperation.swift; sourceTree = ""; }; - 51F6C592245DBA8E001E41CA /* CloudKitRemoteNotificationOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitRemoteNotificationOperation.swift; sourceTree = ""; }; - 552032ED229D5D5A009559E0 /* ReaderAPIEntry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPIEntry.swift; sourceTree = ""; }; - 552032EE229D5D5A009559E0 /* ReaderAPISubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPISubscription.swift; sourceTree = ""; }; - 552032F0229D5D5A009559E0 /* ReaderAPITag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPITag.swift; sourceTree = ""; }; - 552032F1229D5D5A009559E0 /* ReaderAPIUnreadEntry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPIUnreadEntry.swift; sourceTree = ""; }; - 552032F2229D5D5A009559E0 /* ReaderAPITagging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPITagging.swift; sourceTree = ""; }; - 552032F3229D5D5A009559E0 /* ReaderAPIAccountDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPIAccountDelegate.swift; sourceTree = ""; }; - 552032F5229D5D5A009559E0 /* ReaderAPICaller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderAPICaller.swift; sourceTree = ""; }; - 769F275FD5D942502C5B4716 /* NewsBlurAPICaller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurAPICaller.swift; sourceTree = ""; }; - 769F2A8DF190549E24B5D110 /* NewsBlurAccountDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurAccountDelegate.swift; sourceTree = ""; }; - 841973E81F6DD19E006346C4 /* RSCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSCore.xcodeproj; path = ../RSCore/RSCore.xcodeproj; sourceTree = ""; }; - 841973F41F6DD1AC006346C4 /* RSParser.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSParser.xcodeproj; path = ../RSParser/RSParser.xcodeproj; sourceTree = ""; }; - 841974001F6DD1EC006346C4 /* Folder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Folder.swift; sourceTree = ""; }; - 8419740D1F6DD25F006346C4 /* Container.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Container.swift; sourceTree = ""; }; - 841974241F6DDCE4006346C4 /* AccountDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountDelegate.swift; sourceTree = ""; }; - 8419742C1F6DDE84006346C4 /* LocalAccountDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAccountDelegate.swift; sourceTree = ""; }; - 8419742D1F6DDE96006346C4 /* LocalAccountRefresher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAccountRefresher.swift; sourceTree = ""; }; - 841D4D6F2106B40400DD04E6 /* ArticlesDatabase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ArticlesDatabase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 841D4D712106B40A00DD04E6 /* Articles.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Articles.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 84245C841FDDD8CB0074AFBB /* FeedbinSubscription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinSubscription.swift; sourceTree = ""; }; - 844B297C2106C7EC004020B3 /* WebFeed.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebFeed.swift; sourceTree = ""; }; - 844B297E210CE37E004020B3 /* UnreadCountProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnreadCountProvider.swift; sourceTree = ""; }; - 844B2980210CE3BF004020B3 /* RSWeb.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RSWeb.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 846E77531F6F00E300A165E2 /* AccountManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountManager.swift; sourceTree = ""; }; - 848934F61F62484F00CEBD24 /* Account.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Account.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 848934FA1F62484F00CEBD24 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 848934FF1F62484F00CEBD24 /* AccountTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AccountTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 848935061F62485000CEBD24 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 848935101F62486800CEBD24 /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; - 84AF4EA3222CFDD100F6A800 /* AccountMetadata.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountMetadata.swift; sourceTree = ""; }; - 84B2D4CE2238C13D00498ADA /* WebFeedMetadata.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebFeedMetadata.swift; sourceTree = ""; }; - 84B99C9E1FAE8D3200ECDEDB /* ContainerPath.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContainerPath.swift; sourceTree = ""; }; - 84C365491F899F3B001EC85C /* CombinedRefreshProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CombinedRefreshProgress.swift; sourceTree = ""; }; - 84C8B3F31F89DE430053CCA6 /* DataExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataExtensions.swift; sourceTree = ""; }; - 84CAD7151FDF2E22000F0755 /* FeedbinEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinEntry.swift; sourceTree = ""; }; - 84D09622217418DC00D77525 /* FeedbinTagging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinTagging.swift; sourceTree = ""; }; - 84EAC4812148CC6300F154AB /* RSDatabase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RSDatabase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 84F73CF0202788D80000BCEF /* ArticleFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleFetcher.swift; sourceTree = ""; }; - 9E0260CA236FF99A00D122D3 /* FeedlyRefreshAccessTokenOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyRefreshAccessTokenOperationTests.swift; sourceTree = ""; }; - 9E03C11B235D921400FB6D9E /* FeedlyOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyOperationTests.swift; sourceTree = ""; }; - 9E03C11D235D976500FB6D9E /* FeedlyGetCollectionsOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetCollectionsOperationTests.swift; sourceTree = ""; }; - 9E03C11F235E62A500FB6D9E /* FeedlyMirrorCollectionsAsFoldersOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyMirrorCollectionsAsFoldersOperationTests.swift; sourceTree = ""; }; - 9E03C121235E62E100FB6D9E /* FeedlyTestSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyTestSupport.swift; sourceTree = ""; }; - 9E12B01F2334696A00ADE5A0 /* FeedlyCreateFeedsForCollectionFoldersOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCreateFeedsForCollectionFoldersOperation.swift; sourceTree = ""; }; - 9E1773D22345700E0056A5A8 /* FeedlyLink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedlyLink.swift; sourceTree = ""; }; - 9E1773D4234570E30056A5A8 /* FeedlyEntryParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyEntryParser.swift; sourceTree = ""; }; - 9E1773D6234575AB0056A5A8 /* FeedlyTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyTag.swift; sourceTree = ""; }; - 9E1773D823458D590056A5A8 /* FeedlyResourceId.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyResourceId.swift; sourceTree = ""; }; - 9E1773DA234593CF0056A5A8 /* FeedlyResourceIdTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyResourceIdTests.swift; sourceTree = ""; }; - 9E1D154C233370D800F4944C /* FeedlySyncAllOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySyncAllOperation.swift; sourceTree = ""; }; - 9E1D154E233371DD00F4944C /* FeedlyGetCollectionsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetCollectionsOperation.swift; sourceTree = ""; }; - 9E1D15502334282100F4944C /* FeedlyMirrorCollectionsAsFoldersOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyMirrorCollectionsAsFoldersOperation.swift; sourceTree = ""; }; - 9E1D15522334304B00F4944C /* FeedlyGetStreamContentsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetStreamContentsOperation.swift; sourceTree = ""; }; - 9E1D1554233431A600F4944C /* FeedlyOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyOperation.swift; sourceTree = ""; }; - 9E1D15562334355900F4944C /* FeedlyRequestStreamsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyRequestStreamsOperation.swift; sourceTree = ""; }; - 9E1D155A2334423300F4944C /* FeedlyOrganiseParsedItemsByFeedOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyOrganiseParsedItemsByFeedOperation.swift; sourceTree = ""; }; - 9E1D155C233447F000F4944C /* FeedlyUpdateAccountFeedsWithItemsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyUpdateAccountFeedsWithItemsOperation.swift; sourceTree = ""; }; - 9E1FF85F2368216B00834C24 /* TestGetStreamIdsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGetStreamIdsService.swift; sourceTree = ""; }; - 9E1FF8612368219B00834C24 /* TestGetPagedStreamIdsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGetPagedStreamIdsService.swift; sourceTree = ""; }; - 9E1FF8632368EC2400834C24 /* FeedlySyncAllOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySyncAllOperationTests.swift; sourceTree = ""; }; - 9E1FF8652368ED7E00834C24 /* TestMarkArticlesService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestMarkArticlesService.swift; sourceTree = ""; }; - 9E1FF8672368EE4900834C24 /* TestGetCollectionsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGetCollectionsService.swift; sourceTree = ""; }; - 9E44C90E23C6FF3600CCC286 /* FeedlyIngestStreamArticleIdsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyIngestStreamArticleIdsOperation.swift; sourceTree = ""; }; - 9E489E8C2360652C004372EE /* FeedlyGetStreamIdsOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetStreamIdsOperationTests.swift; sourceTree = ""; }; - 9E489E902360ED30004372EE /* FeedlyOrganiseParsedItemsByFeedOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyOrganiseParsedItemsByFeedOperationTests.swift; sourceTree = ""; }; - 9E489E92236101FC004372EE /* FeedlyUpdateAccountFeedsWithItemsOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyUpdateAccountFeedsWithItemsOperationTests.swift; sourceTree = ""; }; - 9E5ABE99236BE6BC00B5DE9F /* feedly-1-initial */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "feedly-1-initial"; sourceTree = ""; }; - 9E5DE60D23C3F4B70064DA30 /* FeedlyFetchIdsForMissingArticlesOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyFetchIdsForMissingArticlesOperation.swift; sourceTree = ""; }; - 9E5EC15823E01D8A00A4E503 /* FeedlyCollectionParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCollectionParser.swift; sourceTree = ""; }; - 9E5EC15A23E01DEF00A4E503 /* FeedlyRTLTextSanitizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyRTLTextSanitizer.swift; sourceTree = ""; }; - 9E5EC15C23E0D58500A4E503 /* FeedlyFeedParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyFeedParser.swift; sourceTree = ""; }; - 9E672393236F7CA0000BE141 /* FeedlyRefreshAccessTokenOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyRefreshAccessTokenOperation.swift; sourceTree = ""; }; - 9E672395236F7E68000BE141 /* OAuthAcessTokenRefreshing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OAuthAcessTokenRefreshing.swift; sourceTree = ""; }; - 9E7299D623505E9600DAEFB7 /* FeedlyAddFeedToCollectionOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyAddFeedToCollectionOperation.swift; sourceTree = ""; }; - 9E7299D8235062A200DAEFB7 /* FeedlyResourceProviding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyResourceProviding.swift; sourceTree = ""; }; - 9E784EBD237E890600099B1B /* FeedlyLogoutOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyLogoutOperation.swift; sourceTree = ""; }; - 9E784EBF237E8BE100099B1B /* FeedlyLogoutOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyLogoutOperationTests.swift; sourceTree = ""; }; - 9E79F7732395C9EF0031DB98 /* feedly-add-new-feed */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "feedly-add-new-feed"; sourceTree = ""; }; - 9E7F88AB235EDDC2009AB9DF /* FeedlyCreateFeedsForCollectionFoldersOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCreateFeedsForCollectionFoldersOperationTests.swift; sourceTree = ""; }; - 9E7F88AD235FBB11009AB9DF /* FeedlyGetStreamContentsOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetStreamContentsOperationTests.swift; sourceTree = ""; }; - 9E84DC462359A23200D6E809 /* FeedlyIngestUnreadArticleIdsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyIngestUnreadArticleIdsOperation.swift; sourceTree = ""; }; - 9E84DC482359A73600D6E809 /* FeedlyCheckpointOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCheckpointOperation.swift; sourceTree = ""; }; - 9E85C8E52366FED600D0F1F7 /* TestGetStreamContentsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGetStreamContentsService.swift; sourceTree = ""; }; - 9E85C8E72366FF4200D0F1F7 /* TestGetPagedStreamContentsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGetPagedStreamContentsService.swift; sourceTree = ""; }; - 9E85C8E9236700AD00D0F1F7 /* FeedlyGetEntriesOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetEntriesOperation.swift; sourceTree = ""; }; - 9E85C8EC2367020700D0F1F7 /* FeedlyGetEntriesService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetEntriesService.swift; sourceTree = ""; }; - 9E964E9E23754AC400A7AF2E /* OAuthAuthorizationClient+Feedly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OAuthAuthorizationClient+Feedly.swift"; sourceTree = ""; }; - 9E964EB923754B4000A7AF2E /* OAuthAccountAuthorizationOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OAuthAccountAuthorizationOperation.swift; sourceTree = ""; }; - 9EA3133A231E368100268BA0 /* FeedlyAccountDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedlyAccountDelegate.swift; sourceTree = ""; }; - 9EA643CE2391D3550018A28C /* FeedlyAddExistingFeedOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedlyAddExistingFeedOperation.swift; sourceTree = ""; }; - 9EA643D2239305680018A28C /* FeedlySearchOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySearchOperation.swift; sourceTree = ""; }; - 9EA643D4239306AC0018A28C /* FeedlyFeedsSearchResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyFeedsSearchResponse.swift; sourceTree = ""; }; - 9EA643D823945CE00018A28C /* FeedlyAddNewFeedOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyAddNewFeedOperationTests.swift; sourceTree = ""; }; - 9EAADA0F23C93144003A801F /* TestGetEntriesService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGetEntriesService.swift; sourceTree = ""; }; - 9EAEC60B2332FE830085D7C9 /* FeedlyCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCollection.swift; sourceTree = ""; }; - 9EAEC60D2332FEC20085D7C9 /* FeedlyFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyFeed.swift; sourceTree = ""; }; - 9EAEC623233315F60085D7C9 /* FeedlyEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyEntry.swift; sourceTree = ""; }; - 9EAEC625233318400085D7C9 /* FeedlyStream.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyStream.swift; sourceTree = ""; }; - 9EAEC62723331C350085D7C9 /* FeedlyCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCategory.swift; sourceTree = ""; }; - 9EAEC62923331EE70085D7C9 /* FeedlyOrigin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyOrigin.swift; sourceTree = ""; }; - 9EB1D575238E6A3900A753D7 /* FeedlyAddNewFeedOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyAddNewFeedOperation.swift; sourceTree = ""; }; - 9EBD49BF23C67602005AD5CD /* FeedlyDownloadArticlesOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyDownloadArticlesOperation.swift; sourceTree = ""; }; - 9EBD49C123C67784005AD5CD /* FeedlyEntryIdentifierProviding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyEntryIdentifierProviding.swift; sourceTree = ""; }; - 9EC228562362C7F900766EF8 /* FeedlyCheckpointOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCheckpointOperationTests.swift; sourceTree = ""; }; - 9EC228582362D0EA00766EF8 /* FeedlySendArticleStatusesOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySendArticleStatusesOperationTests.swift; sourceTree = ""; }; - 9EC2285A23639A6500766EF8 /* FeedlySyncStreamContentsOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySyncStreamContentsOperationTests.swift; sourceTree = ""; }; - 9EC688E9232B973C00A8D0A2 /* FeedlyAPICaller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyAPICaller.swift; sourceTree = ""; }; - 9EC688EB232C583300A8D0A2 /* FeedlyAccountDelegate+OAuth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FeedlyAccountDelegate+OAuth.swift"; sourceTree = ""; }; - 9EC688ED232C58E800A8D0A2 /* OAuthAuthorizationCodeGranting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OAuthAuthorizationCodeGranting.swift; sourceTree = ""; }; - 9EC804E2236C18AB0057CFCB /* FeedlySyncAllMockResponseProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySyncAllMockResponseProvider.swift; sourceTree = ""; }; - 9EC804E4236C1A7F0057CFCB /* feedly-2-changestatuses */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "feedly-2-changestatuses"; sourceTree = ""; }; - 9EC804E6236C1BA60057CFCB /* feedly-3-changestatusesagain */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "feedly-3-changestatusesagain"; sourceTree = ""; }; - 9EC804E8236C1CBE0057CFCB /* feedly-4-addfeedsandfolders */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "feedly-4-addfeedsandfolders"; sourceTree = ""; }; - 9EC804EA236C1DFA0057CFCB /* feedly-5-removefeedsandfolders */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "feedly-5-removefeedsandfolders"; sourceTree = ""; }; - 9EC804EC236C206A0057CFCB /* feedly_collections_initial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = feedly_collections_initial.json; sourceTree = ""; }; - 9EC804EE236C20DD0057CFCB /* feedly_macintosh_initial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = feedly_macintosh_initial.json; sourceTree = ""; }; - 9EC804F0236C21320057CFCB /* feedly_unreads_1000.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = feedly_unreads_1000.json; sourceTree = ""; }; - 9EC804F1236C21320057CFCB /* feedly_unreads_initial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = feedly_unreads_initial.json; sourceTree = ""; }; - 9ECC9A84234DC16E009B5144 /* FeedlyAccountDelegateError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyAccountDelegateError.swift; sourceTree = ""; }; - 9EE4CCF9234F106600FBAE4B /* FeedlyFeedContainerValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyFeedContainerValidator.swift; sourceTree = ""; }; - 9EEAE06D235D002D00E3FEE4 /* FeedlyGetCollectionsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetCollectionsService.swift; sourceTree = ""; }; - 9EEAE070235D019B00E3FEE4 /* FeedlyGetStreamContentsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetStreamContentsService.swift; sourceTree = ""; }; - 9EEAE072235D01AE00E3FEE4 /* FeedlyGetStreamIdsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetStreamIdsService.swift; sourceTree = ""; }; - 9EEAE074235D01C400E3FEE4 /* FeedlyMarkArticlesService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyMarkArticlesService.swift; sourceTree = ""; }; - 9EEEF71E23545CB4009E9D80 /* FeedlySendArticleStatusesOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySendArticleStatusesOperation.swift; sourceTree = ""; }; - 9EEEF7202355277F009E9D80 /* FeedlyIngestStarredArticleIdsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyIngestStarredArticleIdsOperation.swift; sourceTree = ""; }; - 9EF1B10223584B4C000A486A /* FeedlySyncStreamContentsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlySyncStreamContentsOperation.swift; sourceTree = ""; }; - 9EF1B10623590D61000A486A /* FeedlyGetStreamIdsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetStreamIdsOperation.swift; sourceTree = ""; }; - 9EF1B10823590E93000A486A /* FeedlyStreamIds.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyStreamIds.swift; sourceTree = ""; }; - 9EF2602B23C91FFE006D160C /* FeedlyGetUpdatedArticleIdsOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyGetUpdatedArticleIdsOperation.swift; sourceTree = ""; }; - 9EF58EAF23E1606000992A2B /* FeedlyTextSanitizationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyTextSanitizationTests.swift; sourceTree = ""; }; - 9EF58EB123E1647400992A2B /* FeedlyCollectionParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyCollectionParserTests.swift; sourceTree = ""; }; - 9EF58EB323E1655300992A2B /* FeedlyFeedParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyFeedParserTests.swift; sourceTree = ""; }; - 9EF58EB523E1669F00992A2B /* FeedlyEntryParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedlyEntryParserTests.swift; sourceTree = ""; }; - D511EEB5202422BB00712EC3 /* Account_project_debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Account_project_debug.xcconfig; sourceTree = ""; }; - D511EEB6202422BB00712EC3 /* Account_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Account_target.xcconfig; sourceTree = ""; }; - D511EEB7202422BB00712EC3 /* Account_project_release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Account_project_release.xcconfig; sourceTree = ""; }; - D511EEB8202422BB00712EC3 /* Account_project.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Account_project.xcconfig; sourceTree = ""; }; - D511EEB9202422BB00712EC3 /* Accounttests_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Accounttests_target.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 848934F21F62484F00CEBD24 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 51B0DF2D24D2C8B1000AD99E /* RSParser in Frameworks */, - 51383A4624D1FF160027E272 /* RSWeb in Frameworks */, - 841D4D722106B40A00DD04E6 /* Articles.framework in Frameworks */, - 841D4D702106B40400DD04E6 /* ArticlesDatabase.framework in Frameworks */, - 51383A4324D1FF030027E272 /* RSCore in Frameworks */, - 51B0DF1B24D24F12000AD99E /* RSDatabase in Frameworks */, - 51E148EC234B8FFC0004F7A5 /* SyncDatabase.framework in Frameworks */, - 5102FD80244009E000534F17 /* Secrets.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 848934FC1F62484F00CEBD24 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 848935001F62484F00CEBD24 /* Account.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 179DB1571B95BAD0F833AF6D /* Internals */ = { - isa = PBXGroup; - children = ( - 179DB78C47256A122A281942 /* NewsBlurAccountDelegate+Internal.swift */, - 179DBBF346CF712AB2F0E9E6 /* NewsBlurAPICaller+Internal.swift */, - ); - path = Internals; - sourceTree = ""; - }; - 179DBD810D353D9CED7C3BED /* Models */ = { - isa = PBXGroup; - children = ( - 179DB088236E3236010462E8 /* NewsBlurLoginResponse.swift */, - 179DB1B909672E0E807B5E8C /* NewsBlurFeed.swift */, - 179DB7399814F6FB3247825C /* NewsBlurStory.swift */, - 179DB66D933E976C29159DEE /* NewsBlurGenericCodingKeys.swift */, - 179DB818180A51098A9816B2 /* NewsBlurStoryHash.swift */, - 179DB5B421C5433B45C5F13E /* NewsBlurStoryStatusChange.swift */, - 179DBDDC00B68411AA28941F /* NewsBlurFolderChange.swift */, - 179DB3CBADAFCF5377DA3D02 /* NewsBlurFeedChange.swift */, - ); - path = Models; - sourceTree = ""; - }; - 3B826D9D2385C81C00FC1ADB /* FeedWrangler */ = { - isa = PBXGroup; - children = ( - 3B826D9E2385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift */, - 3B826D9F2385C81C00FC1ADB /* FeedWranglerFeedItem.swift */, - 3B826DA02385C81C00FC1ADB /* FeedWranglerAPICaller.swift */, - 3B826DA12385C81C00FC1ADB /* FeedWranglerSubscription.swift */, - 3B826DA22385C81C00FC1ADB /* FeedWranglerConfig.swift */, - 3B826DA32385C81C00FC1ADB /* FeedWranglerAccountDelegate.swift */, - 3B826DA42385C81C00FC1ADB /* FeedWranglerFeedItemsRequest.swift */, - 3B826DA52385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift */, - 3B826DA62385C81C00FC1ADB /* FeedWranglerGenericResult.swift */, - 3BC23AB82385ECB100371CBA /* FeedWranglerSubscriptionResult.swift */, - ); - path = FeedWrangler; - sourceTree = ""; - }; - 5103A9D7242253DC00410853 /* CloudKit */ = { - isa = PBXGroup; - children = ( - 512DD4CA2431000600C17B1F /* CKRecord+Extensions.swift */, - 5103A9D82422546800410853 /* CloudKitAccountDelegate.swift */, - 51E4DB2F2426353D0091EB5B /* CloudKitAccountZone.swift */, - 512DD4CC2431098700C17B1F /* CloudKitAccountZoneDelegate.swift */, - 5139A6372459822D004D960C /* CloudKitArticleStatusUpdate.swift */, - 519E84A72434C5EF00D238B0 /* CloudKitArticlesZone.swift */, - 519E84AB2435019100D238B0 /* CloudKitArticlesZoneDelegate.swift */, - 5150FFFD243823B800C1A442 /* CloudKitError.swift */, - 51F6C590245DB302001E41CA /* CloudKitReceiveStatusOperation.swift */, - 51F6C592245DBA8E001E41CA /* CloudKitRemoteNotificationOperation.swift */, - 51F6C58E245DB2E8001E41CA /* CloudKitSendStatusOperation.swift */, - 51E4DB2D242633ED0091EB5B /* CloudKitZone.swift */, - 51C034DE242D65D20014DC71 /* CloudKitZoneResult.swift */, - ); - path = CloudKit; - sourceTree = ""; - }; - 5111D71C2357534700737D45 /* Feedbin */ = { - isa = PBXGroup; - children = ( - 513323072281070C00C30F19 /* AccountFeedbinSyncTest.swift */, - 5165D7112282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift */, - 51D5875D227F643C00900287 /* AccountFeedbinFolderSyncTest.swift */, - ); - path = Feedbin; - sourceTree = ""; - }; - 5132AABB2448BA5B0077840A /* FeedProvider */ = { - isa = PBXGroup; - children = ( - 5132AAC12448BAD90077840A /* FeedProvider.swift */, - 516896342448EBEA00185AC5 /* FeedProviderManager.swift */, - 5132AAC22448BAD90077840A /* Twitter */, - 5193CD52245E3F520092735E /* Reddit */, - ); - path = FeedProvider; - sourceTree = ""; - }; - 5132AAC22448BAD90077840A /* Twitter */ = { - isa = PBXGroup; - children = ( - 51B36304244B6135000DEF2A /* TwitterEntities.swift */, - 51B3630E244B6CB9000DEF2A /* TwitterExtendedEntities.swift */, - 5132AAC32448BAD90077840A /* TwitterFeedProvider.swift */, - 51B36306244B6234000DEF2A /* TwitterHashtag.swift */, - 51B36310244B6CFA000DEF2A /* TwitterExtendedMedia.swift */, - 51B3630A244B634A000DEF2A /* TwitterMention.swift */, - 51B36314244BCCA4000DEF2A /* TwitterSearchResult.swift */, - 5132DE822449306F00806ADE /* TwitterStatus.swift */, - 51B3630C244B6428000DEF2A /* TwitterSymbol.swift */, - 51B36308244B62A5000DEF2A /* TwitterURL.swift */, - 5132DE802449159100806ADE /* TwitterUser.swift */, - 51B36312244B8B5E000DEF2A /* TwitterVideo.swift */, - 510E3316244E0CED00E7A6AF /* TwitterMedia.swift */, - ); - path = Twitter; - sourceTree = ""; - }; - 5165D71F22835E9800D9D53D /* FeedFinder */ = { - isa = PBXGroup; - children = ( - 5165D71C22835E9800D9D53D /* FeedFinder.swift */, - 5165D71D22835E9800D9D53D /* FeedSpecifier.swift */, - 5165D71E22835E9800D9D53D /* HTMLFeedFinder.swift */, - ); - path = FeedFinder; - sourceTree = ""; - }; - 5193CD52245E3F520092735E /* Reddit */ = { - isa = PBXGroup; - children = ( - 5193CD53245E3F7A0092735E /* RedditFeedProvider.swift */, - 5138B4CB24CF877A0018089B /* RedditGalleryData.swift */, - 5133BB48246078910001E3D0 /* RedditLink.swift */, - 5133BB46245FD8140001E3D0 /* RedditLinkListing.swift */, - 5133BB4C2460CA0B0001E3D0 /* RedditMe.swift */, - 5133BB4E2460EC230001E3D0 /* RedditMedia.swift */, - 5133BB502460EE730001E3D0 /* RedditMediaEmbed.swift */, - 5138B4C924CF85050018089B /* RedditMediaMetadata.swift */, - 5100E4CC246243990010A63D /* RedditPreview.swift */, - 514100092464DAA6001DA326 /* RedditSort.swift */, - 5133BB4A2460BDF30001E3D0 /* RedditSubreddit.swift */, - ); - path = Reddit; - sourceTree = ""; - }; - 51D58756227F62E300900287 /* JSON */ = { - isa = PBXGroup; - children = ( - 9EC804F0236C21320057CFCB /* feedly_unreads_1000.json */, - 9EC804F1236C21320057CFCB /* feedly_unreads_initial.json */, - 9EC804EE236C20DD0057CFCB /* feedly_macintosh_initial.json */, - 9EC804EC236C206A0057CFCB /* feedly_collections_initial.json */, - 5133230B2281088A00C30F19 /* subscriptions_add.json */, - 513323092281082F00C30F19 /* subscriptions_initial.json */, - 5165D71422821C2400D9D53D /* taggings_add.json */, - 5165D71322821C2400D9D53D /* taggings_delete.json */, - 5165D71522821C2400D9D53D /* taggings_initial.json */, - 51D58758227F630B00900287 /* tags_add.json */, - 51D58757227F630B00900287 /* tags_delete.json */, - 51D58759227F630B00900287 /* tags_initial.json */, - ); - path = JSON; - sourceTree = ""; - }; - 552032EA229D5D5A009559E0 /* ReaderAPI */ = { - isa = PBXGroup; - children = ( - 552032ED229D5D5A009559E0 /* ReaderAPIEntry.swift */, - 552032EE229D5D5A009559E0 /* ReaderAPISubscription.swift */, - 552032F0229D5D5A009559E0 /* ReaderAPITag.swift */, - 552032F1229D5D5A009559E0 /* ReaderAPIUnreadEntry.swift */, - 552032F2229D5D5A009559E0 /* ReaderAPITagging.swift */, - 552032F3229D5D5A009559E0 /* ReaderAPIAccountDelegate.swift */, - 552032F5229D5D5A009559E0 /* ReaderAPICaller.swift */, - ); - path = ReaderAPI; - sourceTree = ""; - }; - 769F2630AF8DC873D4A73567 /* NewsBlur */ = { - isa = PBXGroup; - children = ( - 769F2A8DF190549E24B5D110 /* NewsBlurAccountDelegate.swift */, - 769F275FD5D942502C5B4716 /* NewsBlurAPICaller.swift */, - 179DBD810D353D9CED7C3BED /* Models */, - 179DB1571B95BAD0F833AF6D /* Internals */, - ); - path = NewsBlur; - sourceTree = ""; - }; - 841973E91F6DD19E006346C4 /* Products */ = { - isa = PBXGroup; - children = ( - 841973EF1F6DD19E006346C4 /* RSCore.framework */, - 841973F11F6DD19E006346C4 /* RSCoreTests.xctest */, - 841973F31F6DD19E006346C4 /* RSCore.framework */, - ); - name = Products; - sourceTree = ""; - }; - 841973F51F6DD1AC006346C4 /* Products */ = { - isa = PBXGroup; - children = ( - 841973FA1F6DD1AC006346C4 /* RSParser.framework */, - 841973FC1F6DD1AC006346C4 /* RSParserTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 8419742B1F6DDE84006346C4 /* LocalAccount */ = { - isa = PBXGroup; - children = ( - 8419742C1F6DDE84006346C4 /* LocalAccountDelegate.swift */, - 8419742D1F6DDE96006346C4 /* LocalAccountRefresher.swift */, - 5165D73022837F3400D9D53D /* InitialFeedDownloader.swift */, - ); - path = LocalAccount; - sourceTree = ""; - }; - 84245C7D1FDDD2580074AFBB /* Feedbin */ = { - isa = PBXGroup; - children = ( - 5144EA4D227B829A00D19003 /* FeedbinAccountDelegate.swift */, - 5144EA48227B497600D19003 /* FeedbinAPICaller.swift */, - 51E490352288C37100C791F0 /* FeedbinDate.swift */, - 84CAD7151FDF2E22000F0755 /* FeedbinEntry.swift */, - 5154367A228EEB28005E1CDF /* FeedbinImportResult.swift */, - 51E5959A228C781500FCC42B /* FeedbinStarredEntry.swift */, - 84245C841FDDD8CB0074AFBB /* FeedbinSubscription.swift */, - 51D58754227F53BE00900287 /* FeedbinTag.swift */, - 84D09622217418DC00D77525 /* FeedbinTagging.swift */, - 51E59598228C77BC00FCC42B /* FeedbinUnreadEntry.swift */, - ); - path = Feedbin; - sourceTree = ""; - }; - 8469F80F1F6DC3C10084783E /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5102FD7F244009E000534F17 /* Secrets.framework */, - 511076F4243BD96D00D97C8C /* FeedProvider.framework */, - 511076A3243BD33100D97C8C /* .framework */, - 51E148EB234B8FFC0004F7A5 /* SyncDatabase.framework */, - 84EAC4812148CC6300F154AB /* RSDatabase.framework */, - 844B2980210CE3BF004020B3 /* RSWeb.framework */, - 841D4D712106B40A00DD04E6 /* Articles.framework */, - 841D4D6F2106B40400DD04E6 /* ArticlesDatabase.framework */, - 841973F41F6DD1AC006346C4 /* RSParser.xcodeproj */, - 841973E81F6DD19E006346C4 /* RSCore.xcodeproj */, - ); - name = Frameworks; - sourceTree = ""; - }; - 848934EC1F62484F00CEBD24 = { - isa = PBXGroup; - children = ( - 848935101F62486800CEBD24 /* Account.swift */, - 841974241F6DDCE4006346C4 /* AccountDelegate.swift */, - 51BB7B83233531BC008E8144 /* AccountBehaviors.swift */, - 51E3EB40229AF61B00645299 /* AccountError.swift */, - 846E77531F6F00E300A165E2 /* AccountManager.swift */, - 1748B4A624CADA17008F9850 /* AccountSyncError.swift */, - 5170743B232AEDB500A461A3 /* OPMLFile.swift */, - 519E84A52433D49000D238B0 /* OPMLNormalizer.swift */, - 84AF4EA3222CFDD100F6A800 /* AccountMetadata.swift */, - 510BD110232C3801002692E4 /* AccountMetadataFile.swift */, - 84F73CF0202788D80000BCEF /* ArticleFetcher.swift */, - 514BF51F2391B0DB00902FE8 /* SingleArticleFetcher.swift */, - 84C365491F899F3B001EC85C /* CombinedRefreshProgress.swift */, - 8419740D1F6DD25F006346C4 /* Container.swift */, - 51BFDECD238B508D00216323 /* ContainerIdentifier.swift */, - 84B99C9E1FAE8D3200ECDEDB /* ContainerPath.swift */, - 84C8B3F31F89DE430053CCA6 /* DataExtensions.swift */, - 51BC8FCB237EC055004F8B56 /* Feed.swift */, - 511B9803237CD4270028BCAA /* FeedIdentifier.swift */, - 841974001F6DD1EC006346C4 /* Folder.swift */, - 844B297E210CE37E004020B3 /* UnreadCountProvider.swift */, - 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */, - 844B297C2106C7EC004020B3 /* WebFeed.swift */, - 84B2D4CE2238C13D00498ADA /* WebFeedMetadata.swift */, - 510BD112232C3E9D002692E4 /* WebFeedMetadataFile.swift */, - 5165D71F22835E9800D9D53D /* FeedFinder */, - 5132AABB2448BA5B0077840A /* FeedProvider */, - 8419742B1F6DDE84006346C4 /* LocalAccount */, - 5103A9D7242253DC00410853 /* CloudKit */, - 84245C7D1FDDD2580074AFBB /* Feedbin */, - 9EA31339231E368100268BA0 /* Feedly */, - 3B826D9D2385C81C00FC1ADB /* FeedWrangler */, - 769F2630AF8DC873D4A73567 /* NewsBlur */, - 552032EA229D5D5A009559E0 /* ReaderAPI */, - 848935031F62484F00CEBD24 /* AccountTests */, - 848934F71F62484F00CEBD24 /* Products */, - 8469F80F1F6DC3C10084783E /* Frameworks */, - D511EEB4202422BB00712EC3 /* xcconfig */, - 848934FA1F62484F00CEBD24 /* Info.plist */, - ); - sourceTree = ""; - usesTabs = 1; - }; - 848934F71F62484F00CEBD24 /* Products */ = { - isa = PBXGroup; - children = ( - 848934F61F62484F00CEBD24 /* Account.framework */, - 848934FF1F62484F00CEBD24 /* AccountTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 848935031F62484F00CEBD24 /* AccountTests */ = { - isa = PBXGroup; - children = ( - 5107A098227DE42E00C7C3C5 /* AccountCredentialsTest.swift */, - 5107A09C227DE77700C7C3C5 /* TestTransport.swift */, - 5107A09A227DE49500C7C3C5 /* TestAccountManager.swift */, - 5111D71C2357534700737D45 /* Feedbin */, - 9E7F15082341E97100F860D1 /* Feedly */, - 51D58756227F62E300900287 /* JSON */, - 848935061F62485000CEBD24 /* Info.plist */, - ); - path = AccountTests; - sourceTree = ""; - }; - 9E7F15082341E97100F860D1 /* Feedly */ = { - isa = PBXGroup; - children = ( - 9E03C121235E62E100FB6D9E /* FeedlyTestSupport.swift */, - 9E85C8E52366FED600D0F1F7 /* TestGetStreamContentsService.swift */, - 9E1FF85F2368216B00834C24 /* TestGetStreamIdsService.swift */, - 9E85C8E72366FF4200D0F1F7 /* TestGetPagedStreamContentsService.swift */, - 9E1FF8612368219B00834C24 /* TestGetPagedStreamIdsService.swift */, - 9E1FF8672368EE4900834C24 /* TestGetCollectionsService.swift */, - 9EAADA0F23C93144003A801F /* TestGetEntriesService.swift */, - 9E1FF8652368ED7E00834C24 /* TestMarkArticlesService.swift */, - 9E03C11B235D921400FB6D9E /* FeedlyOperationTests.swift */, - 9E03C11D235D976500FB6D9E /* FeedlyGetCollectionsOperationTests.swift */, - 9E03C11F235E62A500FB6D9E /* FeedlyMirrorCollectionsAsFoldersOperationTests.swift */, - 9E7F88AB235EDDC2009AB9DF /* FeedlyCreateFeedsForCollectionFoldersOperationTests.swift */, - 9E7F88AD235FBB11009AB9DF /* FeedlyGetStreamContentsOperationTests.swift */, - 9E489E8C2360652C004372EE /* FeedlyGetStreamIdsOperationTests.swift */, - 9E489E902360ED30004372EE /* FeedlyOrganiseParsedItemsByFeedOperationTests.swift */, - 9E489E92236101FC004372EE /* FeedlyUpdateAccountFeedsWithItemsOperationTests.swift */, - 9EC228562362C7F900766EF8 /* FeedlyCheckpointOperationTests.swift */, - 9EC228582362D0EA00766EF8 /* FeedlySendArticleStatusesOperationTests.swift */, - 9EC2285A23639A6500766EF8 /* FeedlySyncStreamContentsOperationTests.swift */, - 9E1FF8632368EC2400834C24 /* FeedlySyncAllOperationTests.swift */, - 9EC804E2236C18AB0057CFCB /* FeedlySyncAllMockResponseProvider.swift */, - 9E1773DA234593CF0056A5A8 /* FeedlyResourceIdTests.swift */, - 9E0260CA236FF99A00D122D3 /* FeedlyRefreshAccessTokenOperationTests.swift */, - 9E784EBF237E8BE100099B1B /* FeedlyLogoutOperationTests.swift */, - 9EA643D823945CE00018A28C /* FeedlyAddNewFeedOperationTests.swift */, - 9EF58EAF23E1606000992A2B /* FeedlyTextSanitizationTests.swift */, - 9EF58EB123E1647400992A2B /* FeedlyCollectionParserTests.swift */, - 9EF58EB323E1655300992A2B /* FeedlyFeedParserTests.swift */, - 9EF58EB523E1669F00992A2B /* FeedlyEntryParserTests.swift */, - 9E79F7732395C9EF0031DB98 /* feedly-add-new-feed */, - 9E5ABE99236BE6BC00B5DE9F /* feedly-1-initial */, - 9EC804E4236C1A7F0057CFCB /* feedly-2-changestatuses */, - 9EC804E6236C1BA60057CFCB /* feedly-3-changestatusesagain */, - 9EC804E8236C1CBE0057CFCB /* feedly-4-addfeedsandfolders */, - 9EC804EA236C1DFA0057CFCB /* feedly-5-removefeedsandfolders */, - ); - path = Feedly; - sourceTree = ""; - }; - 9EA31339231E368100268BA0 /* Feedly */ = { - isa = PBXGroup; - children = ( - 9EA3133A231E368100268BA0 /* FeedlyAccountDelegate.swift */, - 9EE4CCF9234F106600FBAE4B /* FeedlyFeedContainerValidator.swift */, - 9ECC9A84234DC16E009B5144 /* FeedlyAccountDelegateError.swift */, - 9EC688EB232C583300A8D0A2 /* FeedlyAccountDelegate+OAuth.swift */, - 9E964E9E23754AC400A7AF2E /* OAuthAuthorizationClient+Feedly.swift */, - 9EC688ED232C58E800A8D0A2 /* OAuthAuthorizationCodeGranting.swift */, - 9E964EB923754B4000A7AF2E /* OAuthAccountAuthorizationOperation.swift */, - 9E672395236F7E68000BE141 /* OAuthAcessTokenRefreshing.swift */, - 9EC688E9232B973C00A8D0A2 /* FeedlyAPICaller.swift */, - 9E7299D8235062A200DAEFB7 /* FeedlyResourceProviding.swift */, - 9EEAE06F235D003400E3FEE4 /* Services */, - 9EBC31B32338AC2E002A567B /* Models */, - 9EBC31B22338AC0F002A567B /* Operations */, - ); - path = Feedly; - sourceTree = SOURCE_ROOT; - }; - 9EBC31B22338AC0F002A567B /* Operations */ = { - isa = PBXGroup; - children = ( - 9E1D1554233431A600F4944C /* FeedlyOperation.swift */, - 9E1D154C233370D800F4944C /* FeedlySyncAllOperation.swift */, - 9EA643D2239305680018A28C /* FeedlySearchOperation.swift */, - 9E7299D623505E9600DAEFB7 /* FeedlyAddFeedToCollectionOperation.swift */, - 9EB1D575238E6A3900A753D7 /* FeedlyAddNewFeedOperation.swift */, - 9EA643CE2391D3550018A28C /* FeedlyAddExistingFeedOperation.swift */, - 9E1D154E233371DD00F4944C /* FeedlyGetCollectionsOperation.swift */, - 9E1D15502334282100F4944C /* FeedlyMirrorCollectionsAsFoldersOperation.swift */, - 9E12B01F2334696A00ADE5A0 /* FeedlyCreateFeedsForCollectionFoldersOperation.swift */, - 9E1D15562334355900F4944C /* FeedlyRequestStreamsOperation.swift */, - 9E1D15522334304B00F4944C /* FeedlyGetStreamContentsOperation.swift */, - 9EF1B10623590D61000A486A /* FeedlyGetStreamIdsOperation.swift */, - 9E1D155A2334423300F4944C /* FeedlyOrganiseParsedItemsByFeedOperation.swift */, - 9E1D155C233447F000F4944C /* FeedlyUpdateAccountFeedsWithItemsOperation.swift */, - 9E85C8E9236700AD00D0F1F7 /* FeedlyGetEntriesOperation.swift */, - 9EEEF71E23545CB4009E9D80 /* FeedlySendArticleStatusesOperation.swift */, - 9E84DC482359A73600D6E809 /* FeedlyCheckpointOperation.swift */, - 9EF1B10223584B4C000A486A /* FeedlySyncStreamContentsOperation.swift */, - 9E44C90E23C6FF3600CCC286 /* FeedlyIngestStreamArticleIdsOperation.swift */, - 9EEEF7202355277F009E9D80 /* FeedlyIngestStarredArticleIdsOperation.swift */, - 9E84DC462359A23200D6E809 /* FeedlyIngestUnreadArticleIdsOperation.swift */, - 9EF2602B23C91FFE006D160C /* FeedlyGetUpdatedArticleIdsOperation.swift */, - 9E672393236F7CA0000BE141 /* FeedlyRefreshAccessTokenOperation.swift */, - 9E784EBD237E890600099B1B /* FeedlyLogoutOperation.swift */, - 9E5DE60D23C3F4B70064DA30 /* FeedlyFetchIdsForMissingArticlesOperation.swift */, - 9EBD49BF23C67602005AD5CD /* FeedlyDownloadArticlesOperation.swift */, - ); - path = Operations; - sourceTree = ""; - }; - 9EBC31B32338AC2E002A567B /* Models */ = { - isa = PBXGroup; - children = ( - 9E1773D823458D590056A5A8 /* FeedlyResourceId.swift */, - 9EAEC60B2332FE830085D7C9 /* FeedlyCollection.swift */, - 9E5EC15823E01D8A00A4E503 /* FeedlyCollectionParser.swift */, - 9EAEC60D2332FEC20085D7C9 /* FeedlyFeed.swift */, - 9E5EC15C23E0D58500A4E503 /* FeedlyFeedParser.swift */, - 9EAEC623233315F60085D7C9 /* FeedlyEntry.swift */, - 9E1773D4234570E30056A5A8 /* FeedlyEntryParser.swift */, - 9EAEC625233318400085D7C9 /* FeedlyStream.swift */, - 9EF1B10823590E93000A486A /* FeedlyStreamIds.swift */, - 9EAEC62723331C350085D7C9 /* FeedlyCategory.swift */, - 9EAEC62923331EE70085D7C9 /* FeedlyOrigin.swift */, - 9E1773D22345700E0056A5A8 /* FeedlyLink.swift */, - 9E1773D6234575AB0056A5A8 /* FeedlyTag.swift */, - 9EA643D4239306AC0018A28C /* FeedlyFeedsSearchResponse.swift */, - 9EBD49C123C67784005AD5CD /* FeedlyEntryIdentifierProviding.swift */, - 9E5EC15A23E01DEF00A4E503 /* FeedlyRTLTextSanitizer.swift */, - ); - path = Models; - sourceTree = ""; - }; - 9EEAE06F235D003400E3FEE4 /* Services */ = { - isa = PBXGroup; - children = ( - 9EEAE06D235D002D00E3FEE4 /* FeedlyGetCollectionsService.swift */, - 9EEAE070235D019B00E3FEE4 /* FeedlyGetStreamContentsService.swift */, - 9E85C8EC2367020700D0F1F7 /* FeedlyGetEntriesService.swift */, - 9EEAE072235D01AE00E3FEE4 /* FeedlyGetStreamIdsService.swift */, - 9EEAE074235D01C400E3FEE4 /* FeedlyMarkArticlesService.swift */, - ); - path = Services; - sourceTree = ""; - }; - D511EEB4202422BB00712EC3 /* xcconfig */ = { - isa = PBXGroup; - children = ( - D511EEB8202422BB00712EC3 /* Account_project.xcconfig */, - D511EEB5202422BB00712EC3 /* Account_project_debug.xcconfig */, - D511EEB7202422BB00712EC3 /* Account_project_release.xcconfig */, - D511EEB6202422BB00712EC3 /* Account_target.xcconfig */, - D511EEB9202422BB00712EC3 /* Accounttests_target.xcconfig */, - ); - path = xcconfig; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 848934F31F62484F00CEBD24 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 848934F51F62484F00CEBD24 /* Account */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8489350A1F62485000CEBD24 /* Build configuration list for PBXNativeTarget "Account" */; - buildPhases = ( - 848934F11F62484F00CEBD24 /* Sources */, - 848934F21F62484F00CEBD24 /* Frameworks */, - 848934F31F62484F00CEBD24 /* Headers */, - 848934F41F62484F00CEBD24 /* Resources */, - 51C8F34C234FB14B0048ED95 /* Run Script: Verify No Build Settings */, - 5102AE8424D180A90050839C /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Account; - packageProductDependencies = ( - 51383A4224D1FF030027E272 /* RSCore */, - 51383A4524D1FF160027E272 /* RSWeb */, - 51B0DF1A24D24F12000AD99E /* RSDatabase */, - 51B0DF2C24D2C8B1000AD99E /* RSParser */, - ); - productName = Account; - productReference = 848934F61F62484F00CEBD24 /* Account.framework */; - productType = "com.apple.product-type.framework"; - }; - 848934FE1F62484F00CEBD24 /* AccountTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8489350D1F62485000CEBD24 /* Build configuration list for PBXNativeTarget "AccountTests" */; - buildPhases = ( - 848934FB1F62484F00CEBD24 /* Sources */, - 848934FC1F62484F00CEBD24 /* Frameworks */, - 848934FD1F62484F00CEBD24 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 848935021F62484F00CEBD24 /* PBXTargetDependency */, - ); - name = AccountTests; - productName = AccountTests; - productReference = 848934FF1F62484F00CEBD24 /* AccountTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 848934ED1F62484F00CEBD24 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0930; - ORGANIZATIONNAME = "Ranchero Software, LLC"; - TargetAttributes = { - 848934F51F62484F00CEBD24 = { - CreatedOnToolsVersion = 9.0; - LastSwiftMigration = 0900; - ProvisioningStyle = Automatic; - }; - 848934FE1F62484F00CEBD24 = { - CreatedOnToolsVersion = 9.0; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 848934F01F62484F00CEBD24 /* Build configuration list for PBXProject "Account" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 848934EC1F62484F00CEBD24; - packageReferences = ( - 5102AE8024D180A80050839C /* XCRemoteSwiftPackageReference "RSCore" */, - 51383A3E24D1FE9A0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */, - 51B0DF1924D24F12000AD99E /* XCRemoteSwiftPackageReference "RSDatabase" */, - 51B0DF2B24D2C8B1000AD99E /* XCRemoteSwiftPackageReference "RSParser" */, - ); - productRefGroup = 848934F71F62484F00CEBD24 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 841973E91F6DD19E006346C4 /* Products */; - ProjectRef = 841973E81F6DD19E006346C4 /* RSCore.xcodeproj */; - }, - { - ProductGroup = 841973F51F6DD1AC006346C4 /* Products */; - ProjectRef = 841973F41F6DD1AC006346C4 /* RSParser.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 848934F51F62484F00CEBD24 /* Account */, - 848934FE1F62484F00CEBD24 /* AccountTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 841973EF1F6DD19E006346C4 /* RSCore.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = RSCore.framework; - remoteRef = 841973EE1F6DD19E006346C4 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 841973F11F6DD19E006346C4 /* RSCoreTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = RSCoreTests.xctest; - remoteRef = 841973F01F6DD19E006346C4 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 841973F31F6DD19E006346C4 /* RSCore.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = RSCore.framework; - remoteRef = 841973F21F6DD19E006346C4 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 841973FA1F6DD1AC006346C4 /* RSParser.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = RSParser.framework; - remoteRef = 841973F91F6DD1AC006346C4 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 841973FC1F6DD1AC006346C4 /* RSParserTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = RSParserTests.xctest; - remoteRef = 841973FB1F6DD1AC006346C4 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 848934F41F62484F00CEBD24 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 848934FD1F62484F00CEBD24 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9EC804ED236C206A0057CFCB /* feedly_collections_initial.json in Resources */, - 9E5ABE9A236BE6BD00B5DE9F /* feedly-1-initial in Resources */, - 5165D71822821C2400D9D53D /* taggings_initial.json in Resources */, - 9EC804F3236C21320057CFCB /* feedly_unreads_initial.json in Resources */, - 51D5875B227F630B00900287 /* tags_add.json in Resources */, - 9EC804E9236C1CBF0057CFCB /* feedly-4-addfeedsandfolders in Resources */, - 9EC804EB236C1DFB0057CFCB /* feedly-5-removefeedsandfolders in Resources */, - 5133230C2281088A00C30F19 /* subscriptions_add.json in Resources */, - 51D5875C227F630B00900287 /* tags_initial.json in Resources */, - 9EC804E5236C1A7F0057CFCB /* feedly-2-changestatuses in Resources */, - 51D5875A227F630B00900287 /* tags_delete.json in Resources */, - 9EC804E7236C1BA60057CFCB /* feedly-3-changestatusesagain in Resources */, - 9E79F7742395C9F00031DB98 /* feedly-add-new-feed in Resources */, - 9EC804EF236C20DD0057CFCB /* feedly_macintosh_initial.json in Resources */, - 5165D71722821C2400D9D53D /* taggings_add.json in Resources */, - 5165D71622821C2400D9D53D /* taggings_delete.json in Resources */, - 9EC804F2236C21320057CFCB /* feedly_unreads_1000.json in Resources */, - 5133230A2281082F00C30F19 /* subscriptions_initial.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 51C8F34C234FB14B0048ED95 /* Run Script: Verify No Build Settings */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Run Script: Verify No Build Settings"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if [ \"$ENABLE_PREVIEWS\" = \"YES\" ]; then exit 0; fi\n\nxcrun -sdk macosx swiftc -target x86_64-macosx10.11 ../../buildscripts/VerifyNoBuildSettings.swift -o $CONFIGURATION_TEMP_DIR/VerifyNoBS\n$CONFIGURATION_TEMP_DIR/VerifyNoBS ${PROJECT_NAME}.xcodeproj/project.pbxproj\n\nif [ $? -ne 0 ]\nthen\n echo \"error: Build Setting were found in the project.pbxproj file. Most likely you didn't intend to change this file and should revert it.\"\n exit 1\nfi\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 848934F11F62484F00CEBD24 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84C8B3F41F89DE430053CCA6 /* DataExtensions.swift in Sources */, - 552032F9229D5D5A009559E0 /* ReaderAPISubscription.swift in Sources */, - 51E4DB2E242633ED0091EB5B /* CloudKitZone.swift in Sources */, - 84C3654A1F899F3B001EC85C /* CombinedRefreshProgress.swift in Sources */, - 9EC688EE232C58E800A8D0A2 /* OAuthAuthorizationCodeGranting.swift in Sources */, - 9EEAE071235D019B00E3FEE4 /* FeedlyGetStreamContentsService.swift in Sources */, - 9E7299D9235062A200DAEFB7 /* FeedlyResourceProviding.swift in Sources */, - 51F6C591245DB302001E41CA /* CloudKitReceiveStatusOperation.swift in Sources */, - 9E672394236F7CA0000BE141 /* FeedlyRefreshAccessTokenOperation.swift in Sources */, - 1748B4A724CADA17008F9850 /* AccountSyncError.swift in Sources */, - 5138B4CA24CF85050018089B /* RedditMediaMetadata.swift in Sources */, - 514BF5202391B0DB00902FE8 /* SingleArticleFetcher.swift in Sources */, - 9EC688EC232C583300A8D0A2 /* FeedlyAccountDelegate+OAuth.swift in Sources */, - 8469F81C1F6DD15E0084783E /* Account.swift in Sources */, - 9EA643D5239306AC0018A28C /* FeedlyFeedsSearchResponse.swift in Sources */, - 9EAEC60E2332FEC20085D7C9 /* FeedlyFeed.swift in Sources */, - 5144EA4E227B829A00D19003 /* FeedbinAccountDelegate.swift in Sources */, - 5132AAC52448BAD90077840A /* TwitterFeedProvider.swift in Sources */, - 519E84AC2435019100D238B0 /* CloudKitArticlesZoneDelegate.swift in Sources */, - 51B3630B244B634A000DEF2A /* TwitterMention.swift in Sources */, - 512DD4CB2431000600C17B1F /* CKRecord+Extensions.swift in Sources */, - 3B826DAF2385C81C00FC1ADB /* FeedWranglerGenericResult.swift in Sources */, - 9ECC9A85234DC16E009B5144 /* FeedlyAccountDelegateError.swift in Sources */, - 9EA3133B231E368100268BA0 /* FeedlyAccountDelegate.swift in Sources */, - 51E5959B228C781500FCC42B /* FeedbinStarredEntry.swift in Sources */, - 5133BB4D2460CA0B0001E3D0 /* RedditMe.swift in Sources */, - 846E77451F6EF9B900A165E2 /* Container.swift in Sources */, - 9EA643D3239305680018A28C /* FeedlySearchOperation.swift in Sources */, - 5150FFFE243823B800C1A442 /* CloudKitError.swift in Sources */, - 516896352448EBEA00185AC5 /* FeedProviderManager.swift in Sources */, - 9E5EC15D23E0D58500A4E503 /* FeedlyFeedParser.swift in Sources */, - 9E1D15532334304B00F4944C /* FeedlyGetStreamContentsOperation.swift in Sources */, - 9E12B0202334696A00ADE5A0 /* FeedlyCreateFeedsForCollectionFoldersOperation.swift in Sources */, - 552032FD229D5D5A009559E0 /* ReaderAPITagging.swift in Sources */, - 9EAEC62A23331EE70085D7C9 /* FeedlyOrigin.swift in Sources */, - 5139A6382459822D004D960C /* CloudKitArticleStatusUpdate.swift in Sources */, - 9E5EC15B23E01DEF00A4E503 /* FeedlyRTLTextSanitizer.swift in Sources */, - 51B36305244B6135000DEF2A /* TwitterEntities.swift in Sources */, - 5132DE832449306F00806ADE /* TwitterStatus.swift in Sources */, - 511B9804237CD4270028BCAA /* FeedIdentifier.swift in Sources */, - 84F73CF1202788D90000BCEF /* ArticleFetcher.swift in Sources */, - 841974251F6DDCE4006346C4 /* AccountDelegate.swift in Sources */, - 510BD113232C3E9D002692E4 /* WebFeedMetadataFile.swift in Sources */, - 51B36309244B62A5000DEF2A /* TwitterURL.swift in Sources */, - 5193CD54245E3F7A0092735E /* RedditFeedProvider.swift in Sources */, - 5103A9D92422546800410853 /* CloudKitAccountDelegate.swift in Sources */, - 5165D73122837F3400D9D53D /* InitialFeedDownloader.swift in Sources */, - 9E784EBE237E890600099B1B /* FeedlyLogoutOperation.swift in Sources */, - 519E84A62433D49000D238B0 /* OPMLNormalizer.swift in Sources */, - 9EEEF71F23545CB4009E9D80 /* FeedlySendArticleStatusesOperation.swift in Sources */, - 9EBD49C223C67784005AD5CD /* FeedlyEntryIdentifierProviding.swift in Sources */, - 51F6C593245DBA8E001E41CA /* CloudKitRemoteNotificationOperation.swift in Sources */, - 846E77541F6F00E300A165E2 /* AccountManager.swift in Sources */, - 51E490362288C37100C791F0 /* FeedbinDate.swift in Sources */, - 5133BB47245FD8140001E3D0 /* RedditLinkListing.swift in Sources */, - 9EEAE06E235D002D00E3FEE4 /* FeedlyGetCollectionsService.swift in Sources */, - 5165D72922835F7A00D9D53D /* FeedSpecifier.swift in Sources */, - 9E85C8ED2367020700D0F1F7 /* FeedlyGetEntriesService.swift in Sources */, - 9E5EC15923E01D8A00A4E503 /* FeedlyCollectionParser.swift in Sources */, - 9E84DC492359A73600D6E809 /* FeedlyCheckpointOperation.swift in Sources */, - 9E85C8EB236700E600D0F1F7 /* FeedlyGetEntriesOperation.swift in Sources */, - 9E1D154D233370D800F4944C /* FeedlySyncAllOperation.swift in Sources */, - 9E44C90F23C6FF3600CCC286 /* FeedlyIngestStreamArticleIdsOperation.swift in Sources */, - 844B297D2106C7EC004020B3 /* WebFeed.swift in Sources */, - 3B826DA72385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift in Sources */, - 9E964EBA23754B4000A7AF2E /* OAuthAccountAuthorizationOperation.swift in Sources */, - 9E1D15572334355900F4944C /* FeedlyRequestStreamsOperation.swift in Sources */, - 9E1D15512334282100F4944C /* FeedlyMirrorCollectionsAsFoldersOperation.swift in Sources */, - 9E1773D7234575AB0056A5A8 /* FeedlyTag.swift in Sources */, - 3B826DAB2385C81C00FC1ADB /* FeedWranglerConfig.swift in Sources */, - 515E4EB62324FF8C0057B0E7 /* URLRequest+RSWeb.swift in Sources */, - 51B36315244BCCA4000DEF2A /* TwitterSearchResult.swift in Sources */, - 9EB1D576238E6A3900A753D7 /* FeedlyAddNewFeedOperation.swift in Sources */, - 3B826DA82385C81C00FC1ADB /* FeedWranglerFeedItem.swift in Sources */, - 9E672396236F7E68000BE141 /* OAuthAcessTokenRefreshing.swift in Sources */, - 9E7299D723505E9600DAEFB7 /* FeedlyAddFeedToCollectionOperation.swift in Sources */, - 9EEAE075235D01C400E3FEE4 /* FeedlyMarkArticlesService.swift in Sources */, - 9EF1B10323584B4C000A486A /* FeedlySyncStreamContentsOperation.swift in Sources */, - 5154367B228EEB28005E1CDF /* FeedbinImportResult.swift in Sources */, - 84B2D4D02238CD8A00498ADA /* WebFeedMetadata.swift in Sources */, - 5138B4CC24CF877A0018089B /* RedditGalleryData.swift in Sources */, - 9E84DC472359A23200D6E809 /* FeedlyIngestUnreadArticleIdsOperation.swift in Sources */, - 9EAEC624233315F60085D7C9 /* FeedlyEntry.swift in Sources */, - 9EEAE073235D01AE00E3FEE4 /* FeedlyGetStreamIdsService.swift in Sources */, - 9EEEF7212355277F009E9D80 /* FeedlyIngestStarredArticleIdsOperation.swift in Sources */, - 3BC23AB92385ECB100371CBA /* FeedWranglerSubscriptionResult.swift in Sources */, - 5144EA49227B497600D19003 /* FeedbinAPICaller.swift in Sources */, - 51B3630F244B6CB9000DEF2A /* TwitterExtendedEntities.swift in Sources */, - 84B99C9F1FAE8D3200ECDEDB /* ContainerPath.swift in Sources */, - 51BC8FCC237EC055004F8B56 /* Feed.swift in Sources */, - 5133BB4B2460BDF30001E3D0 /* RedditSubreddit.swift in Sources */, - 846E77501F6EF9C400A165E2 /* LocalAccountRefresher.swift in Sources */, - 9EA643CF2391D3560018A28C /* FeedlyAddExistingFeedOperation.swift in Sources */, - 55203300229D5D5A009559E0 /* ReaderAPICaller.swift in Sources */, - 5132AAC42448BAD90077840A /* FeedProvider.swift in Sources */, - 9E1D154F233371DD00F4944C /* FeedlyGetCollectionsOperation.swift in Sources */, - 9EAEC626233318400085D7C9 /* FeedlyStream.swift in Sources */, - 9E5DE60E23C3F4B70064DA30 /* FeedlyFetchIdsForMissingArticlesOperation.swift in Sources */, - 5133BB512460EE730001E3D0 /* RedditMediaEmbed.swift in Sources */, - 3B826DA92385C81C00FC1ADB /* FeedWranglerAPICaller.swift in Sources */, - 9EAEC60C2332FE830085D7C9 /* FeedlyCollection.swift in Sources */, - 51B36307244B6234000DEF2A /* TwitterHashtag.swift in Sources */, - 51E3EB41229AF61B00645299 /* AccountError.swift in Sources */, - 9E1D155D233447F000F4944C /* FeedlyUpdateAccountFeedsWithItemsOperation.swift in Sources */, - 51E59599228C77BC00FCC42B /* FeedbinUnreadEntry.swift in Sources */, - 552032F8229D5D5A009559E0 /* ReaderAPIEntry.swift in Sources */, - 552032FB229D5D5A009559E0 /* ReaderAPITag.swift in Sources */, - 51B36313244B8B5E000DEF2A /* TwitterVideo.swift in Sources */, - 5133BB4F2460EC230001E3D0 /* RedditMedia.swift in Sources */, - 5165D72822835F7800D9D53D /* FeedFinder.swift in Sources */, - 9EBD49C023C67602005AD5CD /* FeedlyDownloadArticlesOperation.swift in Sources */, - 51D58755227F53BE00900287 /* FeedbinTag.swift in Sources */, - 9E1D155B2334423300F4944C /* FeedlyOrganiseParsedItemsByFeedOperation.swift in Sources */, - 552032FE229D5D5A009559E0 /* ReaderAPIAccountDelegate.swift in Sources */, - 5170743C232AEDB500A461A3 /* OPMLFile.swift in Sources */, - 51BB7B84233531BC008E8144 /* AccountBehaviors.swift in Sources */, - 9E1773D923458D590056A5A8 /* FeedlyResourceId.swift in Sources */, - 9EE4CCFA234F106600FBAE4B /* FeedlyFeedContainerValidator.swift in Sources */, - 519E84A82434C5EF00D238B0 /* CloudKitArticlesZone.swift in Sources */, - 552032FC229D5D5A009559E0 /* ReaderAPIUnreadEntry.swift in Sources */, - 9EC688EA232B973C00A8D0A2 /* FeedlyAPICaller.swift in Sources */, - 9E1773D32345700F0056A5A8 /* FeedlyLink.swift in Sources */, - 9EAEC62823331C350085D7C9 /* FeedlyCategory.swift in Sources */, - 5100E4CD246243990010A63D /* RedditPreview.swift in Sources */, - 3B826DAE2385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift in Sources */, - 9E964EB823754AC400A7AF2E /* OAuthAuthorizationClient+Feedly.swift in Sources */, - 9EF1B10923590E93000A486A /* FeedlyStreamIds.swift in Sources */, - 84D09623217418DC00D77525 /* FeedbinTagging.swift in Sources */, - 5133BB49246078910001E3D0 /* RedditLink.swift in Sources */, - 84CAD7161FDF2E22000F0755 /* FeedbinEntry.swift in Sources */, - 5165D72A22835F7D00D9D53D /* HTMLFeedFinder.swift in Sources */, - 841974011F6DD1EC006346C4 /* Folder.swift in Sources */, - 510BD111232C3801002692E4 /* AccountMetadataFile.swift in Sources */, - 51E4DB302426353D0091EB5B /* CloudKitAccountZone.swift in Sources */, - 3B826DAD2385C81C00FC1ADB /* FeedWranglerFeedItemsRequest.swift in Sources */, - 846E774F1F6EF9C000A165E2 /* LocalAccountDelegate.swift in Sources */, - 844B297F210CE37E004020B3 /* UnreadCountProvider.swift in Sources */, - 9E1773D5234570E30056A5A8 /* FeedlyEntryParser.swift in Sources */, - 512DD4CD2431098700C17B1F /* CloudKitAccountZoneDelegate.swift in Sources */, - 51BFDECE238B508D00216323 /* ContainerIdentifier.swift in Sources */, - 9E1D1555233431A600F4944C /* FeedlyOperation.swift in Sources */, - 5141000A2464DAA6001DA326 /* RedditSort.swift in Sources */, - 84F1F06E2243524700DA0616 /* AccountMetadata.swift in Sources */, - 9EF1B10723590D61000A486A /* FeedlyGetStreamIdsOperation.swift in Sources */, - 84245C851FDDD8CB0074AFBB /* FeedbinSubscription.swift in Sources */, - 510E3317244E0CED00E7A6AF /* TwitterMedia.swift in Sources */, - 9EF2602C23C91FFE006D160C /* FeedlyGetUpdatedArticleIdsOperation.swift in Sources */, - 3B826DAA2385C81C00FC1ADB /* FeedWranglerSubscription.swift in Sources */, - 5132DE812449159100806ADE /* TwitterUser.swift in Sources */, - 3B826DAC2385C81C00FC1ADB /* FeedWranglerAccountDelegate.swift in Sources */, - 769F295938E5A30D03DFF88F /* NewsBlurAccountDelegate.swift in Sources */, - 51B3630D244B6428000DEF2A /* TwitterSymbol.swift in Sources */, - 769F2BA02EF5F329CDE45F5A /* NewsBlurAPICaller.swift in Sources */, - 51C034DF242D65D20014DC71 /* CloudKitZoneResult.swift in Sources */, - 51B36311244B6CFB000DEF2A /* TwitterExtendedMedia.swift in Sources */, - 179DB28CF49F73A945EBF5DB /* NewsBlurLoginResponse.swift in Sources */, - 179DBF4DE2562D4C532F6008 /* NewsBlurFeed.swift in Sources */, - 179DB02FFBC17AC9798F0EBC /* NewsBlurStory.swift in Sources */, - 179DB49A960F8B78C4924458 /* NewsBlurGenericCodingKeys.swift in Sources */, - 179DBED55C9B4D6A413486C1 /* NewsBlurStoryHash.swift in Sources */, - 179DB0B17A6C51B95ABC1741 /* NewsBlurStoryStatusChange.swift in Sources */, - 179DBD4ECC1C9712DF51DB8C /* NewsBlurFolderChange.swift in Sources */, - 179DBCB4B11C88EBE852A015 /* NewsBlurFeedChange.swift in Sources */, - 179DBE829FDF48E102F73244 /* NewsBlurAccountDelegate+Internal.swift in Sources */, - 51F6C58F245DB2E8001E41CA /* CloudKitSendStatusOperation.swift in Sources */, - 179DB3A93E3205EF29C2AF62 /* NewsBlurAPICaller+Internal.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 848934FB1F62484F00CEBD24 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9EC228572362C7F900766EF8 /* FeedlyCheckpointOperationTests.swift in Sources */, - 9E03C122235E62E100FB6D9E /* FeedlyTestSupport.swift in Sources */, - 9EAADA1023C93144003A801F /* TestGetEntriesService.swift in Sources */, - 9EF58EB423E1655300992A2B /* FeedlyFeedParserTests.swift in Sources */, - 9E1FF8622368219B00834C24 /* TestGetPagedStreamIdsService.swift in Sources */, - 9E03C11E235D976500FB6D9E /* FeedlyGetCollectionsOperationTests.swift in Sources */, - 9E85C8E62366FED600D0F1F7 /* TestGetStreamContentsService.swift in Sources */, - 9E1FF8662368ED7E00834C24 /* TestMarkArticlesService.swift in Sources */, - 9E03C11C235D921400FB6D9E /* FeedlyOperationTests.swift in Sources */, - 9E1FF8602368216B00834C24 /* TestGetStreamIdsService.swift in Sources */, - 9E85C8E82366FF4200D0F1F7 /* TestGetPagedStreamContentsService.swift in Sources */, - 9EF58EB023E1606000992A2B /* FeedlyTextSanitizationTests.swift in Sources */, - 5165D7122282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift in Sources */, - 51D5875E227F643C00900287 /* AccountFeedbinFolderSyncTest.swift in Sources */, - 9EF58EB623E1669F00992A2B /* FeedlyEntryParserTests.swift in Sources */, - 9EC804E3236C18AB0057CFCB /* FeedlySyncAllMockResponseProvider.swift in Sources */, - 9E1FF8682368EE4900834C24 /* TestGetCollectionsService.swift in Sources */, - 5107A09B227DE49500C7C3C5 /* TestAccountManager.swift in Sources */, - 513323082281070D00C30F19 /* AccountFeedbinSyncTest.swift in Sources */, - 5107A09D227DE77700C7C3C5 /* TestTransport.swift in Sources */, - 9E1773DB234593CF0056A5A8 /* FeedlyResourceIdTests.swift in Sources */, - 9EF58EB223E1647400992A2B /* FeedlyCollectionParserTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 848935021F62484F00CEBD24 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 848934F51F62484F00CEBD24 /* Account */; - targetProxy = 848935011F62484F00CEBD24 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 848935081F62485000CEBD24 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D511EEB5202422BB00712EC3 /* Account_project_debug.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - 848935091F62485000CEBD24 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D511EEB7202422BB00712EC3 /* Account_project_release.xcconfig */; - buildSettings = { - }; - name = Release; - }; - 8489350B1F62485000CEBD24 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D511EEB6202422BB00712EC3 /* Account_target.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - 8489350C1F62485000CEBD24 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D511EEB6202422BB00712EC3 /* Account_target.xcconfig */; - buildSettings = { - }; - name = Release; - }; - 8489350E1F62485000CEBD24 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D511EEB9202422BB00712EC3 /* Accounttests_target.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - 8489350F1F62485000CEBD24 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D511EEB9202422BB00712EC3 /* Accounttests_target.xcconfig */; - buildSettings = { - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 848934F01F62484F00CEBD24 /* Build configuration list for PBXProject "Account" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 848935081F62485000CEBD24 /* Debug */, - 848935091F62485000CEBD24 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8489350A1F62485000CEBD24 /* Build configuration list for PBXNativeTarget "Account" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8489350B1F62485000CEBD24 /* Debug */, - 8489350C1F62485000CEBD24 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8489350D1F62485000CEBD24 /* Build configuration list for PBXNativeTarget "AccountTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8489350E1F62485000CEBD24 /* Debug */, - 8489350F1F62485000CEBD24 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - 5102AE8024D180A80050839C /* XCRemoteSwiftPackageReference "RSCore" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Ranchero-Software/RSCore.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = "1.0.0-beta1"; - }; - }; - 51383A3E24D1FE9A0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Ranchero-Software/RSWeb.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = "1.0.0-beta2"; - }; - }; - 51B0DF1924D24F12000AD99E /* XCRemoteSwiftPackageReference "RSDatabase" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Ranchero-Software/RSDatabase.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = "1.0.0-beta1"; - }; - }; - 51B0DF2B24D2C8B1000AD99E /* XCRemoteSwiftPackageReference "RSParser" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Ranchero-Software/RSParser.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = "2.0.0-beta1"; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 51383A4224D1FF030027E272 /* RSCore */ = { - isa = XCSwiftPackageProductDependency; - package = 5102AE8024D180A80050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCore; - }; - 51383A4524D1FF160027E272 /* RSWeb */ = { - isa = XCSwiftPackageProductDependency; - package = 51383A3E24D1FE9A0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */; - productName = RSWeb; - }; - 51B0DF1A24D24F12000AD99E /* RSDatabase */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF1924D24F12000AD99E /* XCRemoteSwiftPackageReference "RSDatabase" */; - productName = RSDatabase; - }; - 51B0DF2C24D2C8B1000AD99E /* RSParser */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF2B24D2C8B1000AD99E /* XCRemoteSwiftPackageReference "RSParser" */; - productName = RSParser; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 848934ED1F62484F00CEBD24 /* Project object */; -} diff --git a/Frameworks/Account/Account.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Frameworks/Account/Account.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 588a2d5d4..000000000 --- a/Frameworks/Account/Account.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Frameworks/Account/CloudKit/CloudKitResult.swift b/Frameworks/Account/CloudKit/CloudKitResult.swift deleted file mode 100644 index c1ce67f86..000000000 --- a/Frameworks/Account/CloudKit/CloudKitResult.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// CloudKitResult.swift -// Account -// -// Created by Maurice Parker on 3/26/20. -// Copyright © 2020 Ranchero Software, LLC. All rights reserved. -// - -import Foundation -import CloudKit - -enum CloudKitZoneResult { - case success - case retry(afterSeconds: Double) - case limitExceeded - case changeTokenExpired - case partialFailure(errors: [CKRecord.ID: CKError]) - case serverRecordChanged - case noZone - case failure(error: Error) - - static func resolve(_ error: Error?) -> CloudKitZoneResult { - - guard error != nil else { return .success } - - guard let ckError = error as? CKError else { - return .failure(error: error!) - } - - switch ckError.code { - case .serviceUnavailable, .requestRateLimited, .zoneBusy: - if let retry = ckError.userInfo[CKErrorRetryAfterKey] as? Double { - return .retry(afterSeconds: retry) - } else { - return .failure(error: error!) - } - case .changeTokenExpired: - return .changeTokenExpired - case .serverRecordChanged: - return .serverRecordChanged - case .partialFailure: - if let partialErrors = ckError.userInfo[CKPartialErrorsByItemIDKey] as? [CKRecord.ID: CKError] { - if anyZoneErrors(partialErrors) { - return .noZone - } else { - return .partialFailure(errors: partialErrors) - } - } else { - return .failure(error: error!) - } - case .limitExceeded: - return .limitExceeded - default: - return .failure(error: error!) - } - - } - -} - -private extension CloudKitZoneResult { - - static func anyZoneErrors(_ errors: [CKRecord.ID: CKError]) -> Bool { - return errors.values.contains(where: { $0.code == .zoneNotFound || $0.code == .userDeletedZone } ) - } - -} diff --git a/Frameworks/Account/Feedly/Operations/FeedlyCompoundOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyCompoundOperation.swift deleted file mode 100644 index ff8911f04..000000000 --- a/Frameworks/Account/Feedly/Operations/FeedlyCompoundOperation.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// FeedlyCompoundOperation.swift -// Account -// -// Created by Kiel Gillard on 10/10/19. -// Copyright © 2019 Ranchero Software, LLC. All rights reserved. -// - -import Foundation - -/// An operation with a queue of its own. -final class FeedlyCompoundOperation: FeedlyOperation, FeedlyCheckpointOperationDelegate { - private let operationQueue = OperationQueue() - private let finishOperation = FeedlyCheckpointOperation() - - init(operations: [Operation]) { - assert(!operations.isEmpty) - operationQueue.isSuspended = true - - super.init() - - finishOperation.checkpointDelegate = self - - for operation in operations { - finishOperation.addDependency(operation) - } - - var initialOperations = operations - initialOperations.append(finishOperation) - - operationQueue.addOperations(initialOperations, waitUntilFinished: false) - } - - convenience init(operationsBlock: () -> ([Operation])) { - let operations = operationsBlock() - self.init(operations: operations) - } - - override func main() { - guard !isCancelled else { - didFinish() - return - } - operationQueue.isSuspended = false - } - - func feedlyCheckpointOperationDidReachCheckpoint(_ operation: FeedlyCheckpointOperation) { - didFinish() - } - - func addAnotherOperation(_ operation: Operation) { - guard !isCancelled else { return } - finishOperation.addDependency(operation) - operationQueue.addOperation(operation) - } - - override func cancel() { - operationQueue.cancelAllOperations() - super.cancel() - } -} diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 8538ef04e..9cfd0a784 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -63,19 +63,9 @@ 510289D22451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */; }; 510289D42451BD7B00426DDF /* SelectURLBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D32451BD7B00426DDF /* SelectURLBuilder.swift */; }; 510289D62451DDD100426DDF /* TwitterSelectAccountTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */; }; - 5102AE6424D17F640050839C /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6324D17F640050839C /* RSCore */; }; - 5102AE6524D17F640050839C /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6324D17F640050839C /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 5102AE6724D17F640050839C /* RSCoreResources in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6624D17F640050839C /* RSCoreResources */; }; 5102AE6924D17F7C0050839C /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6824D17F7C0050839C /* RSCore */; }; 5102AE6A24D17F7C0050839C /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6824D17F7C0050839C /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 5102AE6C24D17F7C0050839C /* RSCoreResources in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6B24D17F7C0050839C /* RSCoreResources */; }; - 5102AE6E24D17F9C0050839C /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6D24D17F9C0050839C /* RSCore */; }; - 5102AE6F24D17F9C0050839C /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE6D24D17F9C0050839C /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 5102AE7924D17FF20050839C /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE7824D17FF20050839C /* RSCore */; }; - 5102AE7A24D17FF20050839C /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE7824D17FF20050839C /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 5102AE7C24D17FFB0050839C /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE7B24D17FFB0050839C /* RSCore */; }; - 5102AE7D24D17FFB0050839C /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE7B24D17FFB0050839C /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 5102AE7F24D17FFB0050839C /* RSCoreResources in Frameworks */ = {isa = PBXBuildFile; productRef = 5102AE7E24D17FFB0050839C /* RSCoreResources */; }; 5103A9982421643300410853 /* blank.html in Resources */ = {isa = PBXBuildFile; fileRef = 5103A9972421643300410853 /* blank.html */; }; 5103A9992421643300410853 /* blank.html in Resources */ = {isa = PBXBuildFile; fileRef = 5103A9972421643300410853 /* blank.html */; }; 5103A9B424216A4200410853 /* blank.html in Resources */ = {isa = PBXBuildFile; fileRef = 5103A9B324216A4200410853 /* blank.html */; }; @@ -96,10 +86,6 @@ 510C43F4243C11FE009F70C3 /* ExtensionPointAddTableCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510C43F2243C11FE009F70C3 /* ExtensionPointAddTableCellView.swift */; }; 510C43F7243D035C009F70C3 /* ExtensionPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510C43F6243D035C009F70C3 /* ExtensionPoint.swift */; }; 510C43F8243D035C009F70C3 /* ExtensionPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510C43F6243D035C009F70C3 /* ExtensionPoint.swift */; }; - 510ECA4224D1DCD0001C31A6 /* RSTree in Frameworks */ = {isa = PBXBuildFile; productRef = 510ECA4124D1DCD0001C31A6 /* RSTree */; }; - 510ECA4324D1DCD0001C31A6 /* RSTree in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 510ECA4124D1DCD0001C31A6 /* RSTree */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 510ECA4524D1E010001C31A6 /* RSTree in Frameworks */ = {isa = PBXBuildFile; productRef = 510ECA4424D1E010001C31A6 /* RSTree */; }; - 510ECA4624D1E010001C31A6 /* RSTree in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 510ECA4424D1E010001C31A6 /* RSTree */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 51102165233A7D6C0007A5F7 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */; }; 51107746243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51107745243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift */; }; 51107747243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51107745243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift */; }; @@ -131,7 +117,6 @@ 51314668235A7E4600387FDC /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51314666235A7E4600387FDC /* IntentHandler.swift */; }; 513146B2235A81A400387FDC /* AddWebFeedIntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513146B1235A81A400387FDC /* AddWebFeedIntentHandler.swift */; }; 513146B3235A81A400387FDC /* AddWebFeedIntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513146B1235A81A400387FDC /* AddWebFeedIntentHandler.swift */; }; - 513146BF235A8FDB00387FDC /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; 51314704235C41FC00387FDC /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 51314707235C41FC00387FDC /* Intents.intentdefinition */; }; 51314705235C41FC00387FDC /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 51314707235C41FC00387FDC /* Intents.intentdefinition */; }; 513228FB233037630033D4ED /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513228F2233037620033D4ED /* Reachability.swift */; }; @@ -140,14 +125,6 @@ 51333D1724685D2E00EB5C91 /* AddRedditFeedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51333D1524685D2E00EB5C91 /* AddRedditFeedWindowController.swift */; }; 51333D3B2468615D00EB5C91 /* AddRedditFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 51333D392468615D00EB5C91 /* AddRedditFeedSheet.xib */; }; 51333D3C2468615D00EB5C91 /* AddRedditFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 51333D392468615D00EB5C91 /* AddRedditFeedSheet.xib */; }; - 51383A3224D1F90E0027E272 /* RSWeb in Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3124D1F90E0027E272 /* RSWeb */; }; - 51383A3324D1F90E0027E272 /* RSWeb in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3124D1F90E0027E272 /* RSWeb */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51383A3524D1F91F0027E272 /* RSWeb in Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3424D1F91F0027E272 /* RSWeb */; }; - 51383A3624D1F91F0027E272 /* RSWeb in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3424D1F91F0027E272 /* RSWeb */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51383A3824D1F9470027E272 /* RSWeb in Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3724D1F9470027E272 /* RSWeb */; }; - 51383A3924D1F9470027E272 /* RSWeb in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3724D1F9470027E272 /* RSWeb */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51383A3B24D1F9510027E272 /* RSWeb in Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3A24D1F9510027E272 /* RSWeb */; }; - 51383A3C24D1F9510027E272 /* RSWeb in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51383A3A24D1F9510027E272 /* RSWeb */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 51392D1B24AC19A000BE0D35 /* SidebarExpandedContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51392D1A24AC19A000BE0D35 /* SidebarExpandedContainers.swift */; }; 51392D1C24AC19A000BE0D35 /* SidebarExpandedContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51392D1A24AC19A000BE0D35 /* SidebarExpandedContainers.swift */; }; 513C5CE9232571C2003D4054 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513C5CE8232571C2003D4054 /* ShareViewController.swift */; }; @@ -176,6 +153,10 @@ 514A89A6244FD6640085E65D /* AddTwitterFeedWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514A89A4244FD6640085E65D /* AddTwitterFeedWindowController.swift */; }; 514B7C8323205EFB00BAC947 /* RootSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514B7C8223205EFB00BAC947 /* RootSplitViewController.swift */; }; 514B7D1F23219F3C00BAC947 /* AddControllerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514B7D1E23219F3C00BAC947 /* AddControllerType.swift */; }; + 514C16CE24D2E63F009A3AFA /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 514C16CD24D2E63F009A3AFA /* Account */; }; + 514C16DE24D2EF15009A3AFA /* RSTree in Frameworks */ = {isa = PBXBuildFile; productRef = 514C16DD24D2EF15009A3AFA /* RSTree */; }; + 514C16DF24D2EF15009A3AFA /* RSTree in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 514C16DD24D2EF15009A3AFA /* RSTree */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */ = {isa = PBXBuildFile; productRef = 514C16E024D2EF38009A3AFA /* RSCoreResources */; }; 514E6BDA24ACEA0400AC6F6E /* TimelineItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514E6BD924ACEA0400AC6F6E /* TimelineItemView.swift */; }; 514E6BDB24ACEA0400AC6F6E /* TimelineItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514E6BD924ACEA0400AC6F6E /* TimelineItemView.swift */; }; 514E6BFF24AD255D00AC6F6E /* PreviewArticles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514E6BFE24AD255D00AC6F6E /* PreviewArticles.swift */; }; @@ -225,6 +206,11 @@ 516AE9B32371C372007DEEAA /* MasterFeedTableViewSectionHeaderLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE9B22371C372007DEEAA /* MasterFeedTableViewSectionHeaderLayout.swift */; }; 516AE9DF2372269A007DEEAA /* IconImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE9DE2372269A007DEEAA /* IconImage.swift */; }; 516AE9E02372269A007DEEAA /* IconImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE9DE2372269A007DEEAA /* IconImage.swift */; }; + 516B695B24D2F28600B5702F /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 516B695A24D2F28600B5702F /* Account */; }; + 516B695D24D2F28E00B5702F /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 516B695C24D2F28E00B5702F /* Account */; }; + 516B695F24D2F33B00B5702F /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 516B695E24D2F33B00B5702F /* Account */; }; + 516B696124D2F34600B5702F /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 516B696024D2F34600B5702F /* Account */; }; + 516B696324D2F34E00B5702F /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 516B696224D2F34E00B5702F /* Account */; }; 51707439232AA97100A461A3 /* ShareFolderPickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51707438232AA97100A461A3 /* ShareFolderPickerController.swift */; }; 5171B4D424B7BABA00FB8D3B /* MarkStatusCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84702AA31FA27AC0006B8943 /* MarkStatusCommand.swift */; }; 5171B4F624B7BABA00FB8D3B /* MarkStatusCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84702AA31FA27AC0006B8943 /* MarkStatusCommand.swift */; }; @@ -347,22 +333,6 @@ 51A9A5F52380F6A60033AADF /* ModalNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A9A5F42380F6A60033AADF /* ModalNavigationController.swift */; }; 51A9A60A2382FD240033AADF /* PoppableGestureRecognizerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A9A6092382FD240033AADF /* PoppableGestureRecognizerDelegate.swift */; }; 51AB8AB323B7F4C6008F147D /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51AB8AB223B7F4C6008F147D /* WebViewController.swift */; }; - 51B0DEF224D24A19000AD99E /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DEF124D24A19000AD99E /* RSCore */; }; - 51B0DEF324D24A19000AD99E /* RSCore in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DEF124D24A19000AD99E /* RSCore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DEF624D24A9D000AD99E /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; - 51B0DEF724D24A9D000AD99E /* Account.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 51B0DF0F24D24E3B000AD99E /* RSDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF0E24D24E3B000AD99E /* RSDatabase */; }; - 51B0DF1024D24E3B000AD99E /* RSDatabase in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF0E24D24E3B000AD99E /* RSDatabase */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DF1E24D24F53000AD99E /* RSDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF1D24D24F53000AD99E /* RSDatabase */; }; - 51B0DF1F24D24F53000AD99E /* RSDatabase in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF1D24D24F53000AD99E /* RSDatabase */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DF2124D24F66000AD99E /* RSDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2024D24F66000AD99E /* RSDatabase */; }; - 51B0DF2224D24F66000AD99E /* RSDatabase in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2024D24F66000AD99E /* RSDatabase */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DF2524D2C7FA000AD99E /* RSParser in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2424D2C7FA000AD99E /* RSParser */; }; - 51B0DF2624D2C7FA000AD99E /* RSParser in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2424D2C7FA000AD99E /* RSParser */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DF3024D2C8F6000AD99E /* RSParser in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2F24D2C8F6000AD99E /* RSParser */; }; - 51B0DF3124D2C8F6000AD99E /* RSParser in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF2F24D2C8F6000AD99E /* RSParser */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 51B0DF3324D2C903000AD99E /* RSParser in Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF3224D2C903000AD99E /* RSParser */; }; - 51B0DF3424D2C903000AD99E /* RSParser in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51B0DF3224D2C903000AD99E /* RSParser */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 51B54A4324B5499B0014348B /* WebViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5177471924B3863000EB0F74 /* WebViewProvider.swift */; }; 51B54A6524B549B20014348B /* WrapperScriptMessageHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517B2EBB24B3E62A001AC46C /* WrapperScriptMessageHandler.swift */; }; 51B54A6624B549CB0014348B /* PreloadedWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5177471324B37D4000EB0F74 /* PreloadedWebView.swift */; }; @@ -412,10 +382,6 @@ 51C0516224A77DF800194D5E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 51C0513824A77DF800194D5E /* Assets.xcassets */; }; 51C0516324A77DF800194D5E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 51C0513824A77DF800194D5E /* Assets.xcassets */; }; 51C266EA238C334800F53014 /* ContextMenuPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C266E9238C334800F53014 /* ContextMenuPreviewViewController.swift */; }; - 51C451BD226377D000C03939 /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; - 51C451BE226377D000C03939 /* Account.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 51C451F82264C83E00C03939 /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; - 51C451F92264C83E00C03939 /* Account.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 51C45258226508CF00C03939 /* AppAssets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C45254226507D200C03939 /* AppAssets.swift */; }; 51C45259226508D300C03939 /* AppDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C45255226507D200C03939 /* AppDefaults.swift */; }; 51C4525A226508D600C03939 /* UIStoryboard-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C4524E226506F400C03939 /* UIStoryboard-Extensions.swift */; }; @@ -482,12 +448,8 @@ 51E3EB3D229AB08300645299 /* ErrorHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E3EB3C229AB08300645299 /* ErrorHandler.swift */; }; 51E43962238037C400015C31 /* AddWebFeedFolderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E43961238037C400015C31 /* AddWebFeedFolderViewController.swift */; }; 51E4398023805EBC00015C31 /* AddComboTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51E4397F23805EBC00015C31 /* AddComboTableViewCell.swift */; }; - 51E4987F24A8061400B667CB /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; - 51E4988024A8061400B667CB /* Account.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 51E4989724A8065700B667CB /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E4989624A8065700B667CB /* CloudKit.framework */; }; 51E4989924A8067000B667CB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E4989824A8067000B667CB /* WebKit.framework */; }; - 51E4989A24A8069300B667CB /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; - 51E4989B24A8069300B667CB /* Account.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 51E498B124A806A400B667CB /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E4DAEC2425F6940091EB5B /* CloudKit.framework */; }; 51E498B324A806AA00B667CB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E498B224A806AA00B667CB /* WebKit.framework */; }; 51E498C724A8085D00B667CB /* StarredFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845EE7B01FC2366500854A1F /* StarredFeedDelegate.swift */; }; @@ -823,7 +785,6 @@ 65ED403E235DEF6C0081F399 /* TimelineCellAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97701ED9EC04007D329B /* TimelineCellAppearance.swift */; }; 65ED403F235DEF6C0081F399 /* ArticleRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A977D1ED9EC42007D329B /* ArticleRenderer.swift */; }; 65ED4040235DEF6C0081F399 /* GeneralPrefencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC6D22629E1200D921D6 /* GeneralPrefencesViewController.swift */; }; - 65ED4048235DEF6C0081F399 /* Account.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; }; 65ED404E235DEF6C0081F399 /* NNW3OpenPanelAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 849ADEE523598189000E1B81 /* NNW3OpenPanelAccessoryView.xib */; }; 65ED404F235DEF6C0081F399 /* GlobalKeyboardShortcuts.plist in Resources */ = {isa = PBXBuildFile; fileRef = 844B5B641FEA11F200C7C76A /* GlobalKeyboardShortcuts.plist */; }; 65ED4050235DEF6C0081F399 /* DetailKeyboardShortcuts.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */; }; @@ -855,7 +816,6 @@ 65ED406C235DEF6C0081F399 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8922629E8F00D921D6 /* Credits.rtf */; }; 65ED406D235DEF6C0081F399 /* Inspector.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84BBB12B20142A4700F054F5 /* Inspector.storyboard */; }; 65ED406E235DEF6C0081F399 /* AddWebFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363002262A3BC00DA1D35 /* AddWebFeedSheet.xib */; }; - 65ED4076235DEF6C0081F399 /* Account.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8407166A2262A60D00344432 /* Account.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 65ED407C235DEF6C0081F399 /* Subscribe to Feed.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6581C73320CED60000F4AD34 /* Subscribe to Feed.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 65ED4092235DEF770081F399 /* SafariExtensionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6581C73920CED60100F4AD34 /* SafariExtensionViewController.swift */; }; 65ED4093235DEF770081F399 /* SafariExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6581C73720CED60100F4AD34 /* SafariExtensionHandler.swift */; }; @@ -1073,20 +1033,6 @@ remoteGlobalIDString = 840D617B2029031C009BC708; remoteInfo = "NetNewsWire-iOS"; }; - 51C451BF226377D000C03939 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 846E77301F6EF5D600A165E2 /* Account.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 848934F51F62484F00CEBD24; - remoteInfo = Account; - }; - 65ED3FB2235DEF6C0081F399 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 846E77301F6EF5D600A165E2 /* Account.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 848934F51F62484F00CEBD24; - remoteInfo = Account; - }; 65ED41C4235E61550081F399 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 849C64581ED37A5D003D8FC0 /* Project object */; @@ -1248,20 +1194,6 @@ remoteGlobalIDString = 724BB3921D333832005D534A; remoteInfo = SparkleInstallerStatus; }; - 840716692262A60D00344432 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 846E77301F6EF5D600A165E2 /* Account.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 848934F61F62484F00CEBD24; - remoteInfo = Account; - }; - 8407166B2262A60D00344432 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 846E77301F6EF5D600A165E2 /* Account.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 848934FF1F62484F00CEBD24; - remoteInfo = AccountTests; - }; 849C64721ED37A5D003D8FC0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 849C64581ED37A5D003D8FC0 /* Project object */; @@ -1278,8 +1210,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 51B0DEF324D24A19000AD99E /* RSCore in Embed Frameworks */, - 51B0DEF724D24A9D000AD99E /* Account.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -1312,10 +1242,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 51C451F92264C83E00C03939 /* Account.framework in Embed Frameworks */, - 510ECA4624D1E010001C31A6 /* RSTree in Embed Frameworks */, - 51383A3624D1F91F0027E272 /* RSWeb in Embed Frameworks */, - 5102AE6F24D17F9C0050839C /* RSCore in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -1326,11 +1252,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 51B0DF3424D2C903000AD99E /* RSParser in Embed Frameworks */, - 51E4988024A8061400B667CB /* Account.framework in Embed Frameworks */, - 51383A3924D1F9470027E272 /* RSWeb in Embed Frameworks */, - 5102AE7A24D17FF20050839C /* RSCore in Embed Frameworks */, - 51B0DF1F24D24F53000AD99E /* RSDatabase in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -1341,11 +1262,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 51B0DF3124D2C8F6000AD99E /* RSParser in Embed Frameworks */, - 51B0DF2224D24F66000AD99E /* RSDatabase in Embed Frameworks */, - 51E4989B24A8069300B667CB /* Account.framework in Embed Frameworks */, - 51383A3C24D1F9510027E272 /* RSWeb in Embed Frameworks */, - 5102AE7D24D17FFB0050839C /* RSCore in Embed Frameworks */, 51E4997724A87FFC00B667CB /* Sparkle.framework in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -1382,7 +1298,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 65ED4076235DEF6C0081F399 /* Account.framework in Embed Frameworks */, 5102AE6A24D17F7C0050839C /* RSCore in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -1419,13 +1334,8 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 51B0DF1024D24E3B000AD99E /* RSDatabase in Embed Frameworks */, - 51B0DF2624D2C7FA000AD99E /* RSParser in Embed Frameworks */, - 51383A3324D1F90E0027E272 /* RSWeb in Embed Frameworks */, - 5102AE6524D17F640050839C /* RSCore in Embed Frameworks */, - 51C451BE226377D000C03939 /* Account.framework in Embed Frameworks */, 65ED42DF235E74230081F399 /* Sparkle.framework in Embed Frameworks */, - 510ECA4324D1DCD0001C31A6 /* RSTree in Embed Frameworks */, + 514C16DF24D2EF15009A3AFA /* RSTree in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -1728,7 +1638,8 @@ 51CD32A824D2CB25009ABAEF /* SyncDatabase */ = {isa = PBXFileReference; lastKnownFileType = folder; path = SyncDatabase; sourceTree = ""; }; 51CD32C324D2CD57009ABAEF /* ArticlesDatabase */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ArticlesDatabase; sourceTree = ""; }; 51CD32C424D2CF1D009ABAEF /* Articles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Articles; sourceTree = ""; }; - 51CD32C524D2D070009ABAEF /* Secrets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Secrets; sourceTree = ""; }; + 51CD32C624D2DEF9009ABAEF /* Account */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Account; sourceTree = ""; }; + 51CD32C724D2E06C009ABAEF /* Secrets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Secrets; sourceTree = ""; }; 51CE1C0823621EDA005548FC /* RefreshProgressView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RefreshProgressView.xib; sourceTree = ""; }; 51CE1C0A23622006005548FC /* RefreshProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshProgressView.swift; sourceTree = ""; }; 51D6A5BB23199C85001C27D8 /* MasterTimelineDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterTimelineDataSource.swift; sourceTree = ""; }; @@ -1854,7 +1765,6 @@ 845B14A51FC2299E0013CF92 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 845EE7B01FC2366500854A1F /* StarredFeedDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StarredFeedDelegate.swift; sourceTree = ""; }; 845EE7C01FC2488C00854A1F /* SmartFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeed.swift; sourceTree = ""; }; - 846E77301F6EF5D600A165E2 /* Account.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Account.xcodeproj; path = ../Frameworks/Account/Account.xcodeproj; sourceTree = ""; }; 84702AA31FA27AC0006B8943 /* MarkStatusCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkStatusCommand.swift; sourceTree = ""; }; 8472058020142E8900AD578B /* WebFeedInspectorViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebFeedInspectorViewController.swift; sourceTree = ""; }; 847752FE2008879500D93690 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; @@ -2018,7 +1928,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 513146BF235A8FDB00387FDC /* Account.framework in Frameworks */, + 516B696324D2F34E00B5702F /* Account in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2026,8 +1936,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 51B0DEF224D24A19000AD99E /* RSCore in Frameworks */, - 51B0DEF624D24A9D000AD99E /* Account.framework in Frameworks */, + 516B696124D2F34600B5702F /* Account in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2042,11 +1951,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 51B0DF1E24D24F53000AD99E /* RSDatabase in Frameworks */, - 51B0DF3324D2C903000AD99E /* RSParser in Frameworks */, - 51383A3824D1F9470027E272 /* RSWeb in Frameworks */, - 5102AE7924D17FF20050839C /* RSCore in Frameworks */, - 51E4987F24A8061400B667CB /* Account.framework in Frameworks */, + 516B695D24D2F28E00B5702F /* Account in Frameworks */, 51E4989724A8065700B667CB /* CloudKit.framework in Frameworks */, 51E4989924A8067000B667CB /* WebKit.framework in Frameworks */, ); @@ -2056,14 +1961,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5102AE7F24D17FFB0050839C /* RSCoreResources in Frameworks */, + 516B695B24D2F28600B5702F /* Account in Frameworks */, 51E4997624A87FFC00B667CB /* Sparkle.framework in Frameworks */, - 51B0DF3024D2C8F6000AD99E /* RSParser in Frameworks */, - 51E4989A24A8069300B667CB /* Account.framework in Frameworks */, - 51383A3B24D1F9510027E272 /* RSWeb in Frameworks */, 51E498B124A806A400B667CB /* CloudKit.framework in Frameworks */, - 5102AE7C24D17FFB0050839C /* RSCore in Frameworks */, - 51B0DF2124D24F66000AD99E /* RSDatabase in Frameworks */, 51E498B324A806AA00B667CB /* WebKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2080,7 +1980,6 @@ buildActionMask = 2147483647; files = ( 5102AE6C24D17F7C0050839C /* RSCoreResources in Frameworks */, - 65ED4048235DEF6C0081F399 /* Account.framework in Frameworks */, 5102AE6924D17F7C0050839C /* RSCore in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2096,11 +1995,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 51383A3524D1F91F0027E272 /* RSWeb in Frameworks */, - 510ECA4524D1E010001C31A6 /* RSTree in Frameworks */, - 5102AE6E24D17F9C0050839C /* RSCore in Frameworks */, + 516B695F24D2F33B00B5702F /* Account in Frameworks */, 51C452B42265141B00C03939 /* WebKit.framework in Frameworks */, - 51C451F82264C83E00C03939 /* Account.framework in Frameworks */, 51E4DB082425F9EB0091EB5B /* CloudKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2109,16 +2005,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 514C16DE24D2EF15009A3AFA /* RSTree in Frameworks */, 65ED42DE235E74230081F399 /* Sparkle.framework in Frameworks */, - 5102AE6724D17F640050839C /* RSCoreResources in Frameworks */, 65ED42D9235E740D0081F399 /* Sparkle.framework in Frameworks */, - 510ECA4224D1DCD0001C31A6 /* RSTree in Frameworks */, - 51B0DF0F24D24E3B000AD99E /* RSDatabase in Frameworks */, - 51C451BD226377D000C03939 /* Account.framework in Frameworks */, 51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */, - 51383A3224D1F90E0027E272 /* RSWeb in Frameworks */, - 5102AE6424D17F640050839C /* RSCore in Frameworks */, - 51B0DF2524D2C7FA000AD99E /* RSParser in Frameworks */, + 514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */, + 514C16CE24D2E63F009A3AFA /* Account in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2927,15 +2819,6 @@ name = Products; sourceTree = ""; }; - 840716652262A60D00344432 /* Products */ = { - isa = PBXGroup; - children = ( - 8407166A2262A60D00344432 /* Account.framework */, - 8407166C2262A60D00344432 /* AccountTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; 840D61942029031D009BC708 /* NetNewsWire-iOSTests */ = { isa = PBXGroup; children = ( @@ -3185,10 +3068,6 @@ 849C64571ED37A5D003D8FC0 = { isa = PBXGroup; children = ( - 51CD32C524D2D070009ABAEF /* Secrets */, - 51CD32C424D2CF1D009ABAEF /* Articles */, - 51CD32C324D2CD57009ABAEF /* ArticlesDatabase */, - 51CD32A824D2CB25009ABAEF /* SyncDatabase */, 845B14A51FC2299E0013CF92 /* README.md */, 84D2200922B0BC4B0019E085 /* CONTRIBUTING.md */, 84CBDDAE1FD3674C005A61AA /* Technotes */, @@ -3200,6 +3079,11 @@ D5907CDA2002F084005947E5 /* xcconfig */, 849C64611ED37A5D003D8FC0 /* Products */, 51C452B22265141B00C03939 /* Frameworks */, + 51CD32C624D2DEF9009ABAEF /* Account */, + 51CD32C424D2CF1D009ABAEF /* Articles */, + 51CD32C324D2CD57009ABAEF /* ArticlesDatabase */, + 51CD32C724D2E06C009ABAEF /* Secrets */, + 51CD32A824D2CB25009ABAEF /* SyncDatabase */, ); sourceTree = ""; usesTabs = 1; @@ -3270,7 +3154,6 @@ 84C9FC6822629C9A00D921D6 /* Shared */ = { isa = PBXGroup; children = ( - 846E77301F6EF5D600A165E2 /* Account.xcodeproj */, 842E45CD1ED8C308000A8B52 /* AppNotifications.swift */, 511B9805237DCAC90028BCAA /* UserInfoKey.swift */, 51C452AD2265102800C03939 /* Timeline */, @@ -3575,6 +3458,7 @@ ); name = "NetNewsWire iOS Intents Extension"; packageProductDependencies = ( + 516B696224D2F34E00B5702F /* Account */, ); productName = "NetNewsWire iOS Intents Extension"; productReference = 51314637235A7BBE00387FDC /* NetNewsWire iOS Intents Extension.appex */; @@ -3595,7 +3479,7 @@ ); name = "NetNewsWire iOS Share Extension"; packageProductDependencies = ( - 51B0DEF124D24A19000AD99E /* RSCore */, + 516B696024D2F34600B5702F /* Account */, ); productName = "NetNewsWire iOS Share Extension"; productReference = 513C5CE6232571C2003D4054 /* NetNewsWire iOS Share Extension.appex */; @@ -3634,10 +3518,7 @@ ); name = "Multiplatform iOS"; packageProductDependencies = ( - 5102AE7824D17FF20050839C /* RSCore */, - 51383A3724D1F9470027E272 /* RSWeb */, - 51B0DF1D24D24F53000AD99E /* RSDatabase */, - 51B0DF3224D2C903000AD99E /* RSParser */, + 516B695C24D2F28E00B5702F /* Account */, ); productName = iOS; productReference = 51C0513D24A77DF800194D5E /* NetNewsWire.app */; @@ -3659,11 +3540,7 @@ ); name = "Multiplatform macOS"; packageProductDependencies = ( - 5102AE7B24D17FFB0050839C /* RSCore */, - 5102AE7E24D17FFB0050839C /* RSCoreResources */, - 51383A3A24D1F9510027E272 /* RSWeb */, - 51B0DF2024D24F66000AD99E /* RSDatabase */, - 51B0DF2F24D2C8F6000AD99E /* RSParser */, + 516B695A24D2F28600B5702F /* Account */, ); productName = macOS; productReference = 51C0514424A77DF800194D5E /* NetNewsWire.app */; @@ -3702,7 +3579,6 @@ ); dependencies = ( 65ED41C7235E615E0081F399 /* PBXTargetDependency */, - 65ED3FB1235DEF6C0081F399 /* PBXTargetDependency */, ); name = "NetNewsWire MAS"; packageProductDependencies = ( @@ -3748,9 +3624,7 @@ ); name = "NetNewsWire-iOS"; packageProductDependencies = ( - 5102AE6D24D17F9C0050839C /* RSCore */, - 510ECA4424D1E010001C31A6 /* RSTree */, - 51383A3424D1F91F0027E272 /* RSWeb */, + 516B695E24D2F33B00B5702F /* Account */, ); productName = "NetNewsWire-iOS"; productReference = 840D617C2029031C009BC708 /* NetNewsWire.app */; @@ -3774,7 +3648,6 @@ ); dependencies = ( 65ED41C5235E61550081F399 /* PBXTargetDependency */, - 51C451C0226377D000C03939 /* PBXTargetDependency */, 65ED42D0235E71F60081F399 /* PBXTargetDependency */, 65ED42D2235E72000081F399 /* PBXTargetDependency */, 65ED42D4235E72000081F399 /* PBXTargetDependency */, @@ -3783,12 +3656,9 @@ ); name = NetNewsWire; packageProductDependencies = ( - 5102AE6324D17F640050839C /* RSCore */, - 5102AE6624D17F640050839C /* RSCoreResources */, - 510ECA4124D1DCD0001C31A6 /* RSTree */, - 51383A3124D1F90E0027E272 /* RSWeb */, - 51B0DF0E24D24E3B000AD99E /* RSDatabase */, - 51B0DF2424D2C7FA000AD99E /* RSParser */, + 514C16CD24D2E63F009A3AFA /* Account */, + 514C16DD24D2EF15009A3AFA /* RSTree */, + 514C16E024D2EF38009A3AFA /* RSCoreResources */, ); productName = NetNewsWire; productReference = 849C64601ED37A5D003D8FC0 /* NetNewsWire.app */; @@ -3910,10 +3780,6 @@ productRefGroup = 849C64611ED37A5D003D8FC0 /* Products */; projectDirPath = ""; projectReferences = ( - { - ProductGroup = 840716652262A60D00344432 /* Products */; - ProjectRef = 846E77301F6EF5D600A165E2 /* Account.xcodeproj */; - }, { ProductGroup = 65ED429A235E71B40081F399 /* Products */; ProjectRef = 65ED4299235E71B40081F399 /* Sparkle.xcodeproj */; @@ -4049,20 +3915,6 @@ remoteRef = 65ED42CD235E71B40081F399 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 8407166A2262A60D00344432 /* Account.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Account.framework; - remoteRef = 840716692262A60D00344432 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 8407166C2262A60D00344432 /* AccountTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = AccountTests.xctest; - remoteRef = 8407166B2262A60D00344432 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -5313,16 +5165,6 @@ target = 840D617B2029031C009BC708 /* NetNewsWire-iOS */; targetProxy = 518B2ED72351B3DD00400001 /* PBXContainerItemProxy */; }; - 51C451C0226377D000C03939 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Account; - targetProxy = 51C451BF226377D000C03939 /* PBXContainerItemProxy */; - }; - 65ED3FB1235DEF6C0081F399 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Account; - targetProxy = 65ED3FB2235DEF6C0081F399 /* PBXContainerItemProxy */; - }; 65ED41C5235E61550081F399 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 6581C73220CED60000F4AD34 /* Subscribe to Feed */; @@ -5813,16 +5655,6 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 5102AE6324D17F640050839C /* RSCore */ = { - isa = XCSwiftPackageProductDependency; - package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCore; - }; - 5102AE6624D17F640050839C /* RSCoreResources */ = { - isa = XCSwiftPackageProductDependency; - package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCoreResources; - }; 5102AE6824D17F7C0050839C /* RSCore */ = { isa = XCSwiftPackageProductDependency; package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; @@ -5833,90 +5665,39 @@ package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; productName = RSCoreResources; }; - 5102AE6D24D17F9C0050839C /* RSCore */ = { + 514C16CD24D2E63F009A3AFA /* Account */ = { isa = XCSwiftPackageProductDependency; - package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCore; + productName = Account; }; - 5102AE7824D17FF20050839C /* RSCore */ = { + 514C16DD24D2EF15009A3AFA /* RSTree */ = { isa = XCSwiftPackageProductDependency; - package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCore; + package = 510ECA4024D1DCD0001C31A6 /* XCRemoteSwiftPackageReference "RSTree" */; + productName = RSTree; }; - 5102AE7B24D17FFB0050839C /* RSCore */ = { - isa = XCSwiftPackageProductDependency; - package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCore; - }; - 5102AE7E24D17FFB0050839C /* RSCoreResources */ = { + 514C16E024D2EF38009A3AFA /* RSCoreResources */ = { isa = XCSwiftPackageProductDependency; package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; productName = RSCoreResources; }; - 510ECA4124D1DCD0001C31A6 /* RSTree */ = { + 516B695A24D2F28600B5702F /* Account */ = { isa = XCSwiftPackageProductDependency; - package = 510ECA4024D1DCD0001C31A6 /* XCRemoteSwiftPackageReference "RSTree" */; - productName = RSTree; + productName = Account; }; - 510ECA4424D1E010001C31A6 /* RSTree */ = { + 516B695C24D2F28E00B5702F /* Account */ = { isa = XCSwiftPackageProductDependency; - package = 510ECA4024D1DCD0001C31A6 /* XCRemoteSwiftPackageReference "RSTree" */; - productName = RSTree; + productName = Account; }; - 51383A3124D1F90E0027E272 /* RSWeb */ = { + 516B695E24D2F33B00B5702F /* Account */ = { isa = XCSwiftPackageProductDependency; - package = 51383A3024D1F90E0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */; - productName = RSWeb; + productName = Account; }; - 51383A3424D1F91F0027E272 /* RSWeb */ = { + 516B696024D2F34600B5702F /* Account */ = { isa = XCSwiftPackageProductDependency; - package = 51383A3024D1F90E0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */; - productName = RSWeb; + productName = Account; }; - 51383A3724D1F9470027E272 /* RSWeb */ = { + 516B696224D2F34E00B5702F /* Account */ = { isa = XCSwiftPackageProductDependency; - package = 51383A3024D1F90E0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */; - productName = RSWeb; - }; - 51383A3A24D1F9510027E272 /* RSWeb */ = { - isa = XCSwiftPackageProductDependency; - package = 51383A3024D1F90E0027E272 /* XCRemoteSwiftPackageReference "RSWeb" */; - productName = RSWeb; - }; - 51B0DEF124D24A19000AD99E /* RSCore */ = { - isa = XCSwiftPackageProductDependency; - package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; - productName = RSCore; - }; - 51B0DF0E24D24E3B000AD99E /* RSDatabase */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF0D24D24E3B000AD99E /* XCRemoteSwiftPackageReference "RSDatabase" */; - productName = RSDatabase; - }; - 51B0DF1D24D24F53000AD99E /* RSDatabase */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF0D24D24E3B000AD99E /* XCRemoteSwiftPackageReference "RSDatabase" */; - productName = RSDatabase; - }; - 51B0DF2024D24F66000AD99E /* RSDatabase */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF0D24D24E3B000AD99E /* XCRemoteSwiftPackageReference "RSDatabase" */; - productName = RSDatabase; - }; - 51B0DF2424D2C7FA000AD99E /* RSParser */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF2324D2C7FA000AD99E /* XCRemoteSwiftPackageReference "RSParser" */; - productName = RSParser; - }; - 51B0DF2F24D2C8F6000AD99E /* RSParser */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF2324D2C7FA000AD99E /* XCRemoteSwiftPackageReference "RSParser" */; - productName = RSParser; - }; - 51B0DF3224D2C903000AD99E /* RSParser */ = { - isa = XCSwiftPackageProductDependency; - package = 51B0DF2324D2C7FA000AD99E /* XCRemoteSwiftPackageReference "RSParser" */; - productName = RSParser; + productName = Account; }; /* End XCSwiftPackageProductDependency section */ }; diff --git a/Secrets/Package.swift b/Secrets/Package.swift index 087333318..1c596f8b5 100644 --- a/Secrets/Package.swift +++ b/Secrets/Package.swift @@ -3,6 +3,7 @@ import PackageDescription let package = Package( name: "Secrets", + platforms: [.macOS(SupportedPlatform.MacOSVersion.v10_15), .iOS(SupportedPlatform.IOSVersion.v13)], products: [ .library( name: "Secrets", @@ -14,7 +15,9 @@ let package = Package( targets: [ .target( name: "Secrets", - dependencies: [], + dependencies: [ + .product(name: "OAuthSwift", package: "OAuthSwift"), + ], exclude: ["Secrets.swift.gyb"]), ] ) diff --git a/SyncDatabase/Package.swift b/SyncDatabase/Package.swift index 6c7c3528e..cdb88d2c2 100644 --- a/SyncDatabase/Package.swift +++ b/SyncDatabase/Package.swift @@ -3,6 +3,7 @@ import PackageDescription let package = Package( name: "SyncDatabase", + platforms: [.macOS(SupportedPlatform.MacOSVersion.v10_15), .iOS(SupportedPlatform.IOSVersion.v13)], products: [ .library( name: "SyncDatabase", @@ -10,10 +11,14 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/Ranchero-Software/RSDatabase.git", .upToNextMajor(from: "1.0.0-beta1")), + .package(url: "../Articles", .upToNextMajor(from: "1.0.0")), ], targets: [ .target( name: "SyncDatabase", - dependencies: []), + dependencies: [ + .product(name: "RSDatabase", package: "RSDatabase"), + .product(name: "Articles", package: "Articles"), + ]), ] ) diff --git a/xcconfig/NetNewsWire_project.xcconfig b/xcconfig/NetNewsWire_project.xcconfig index 7450fcc47..465091c17 100644 --- a/xcconfig/NetNewsWire_project.xcconfig +++ b/xcconfig/NetNewsWire_project.xcconfig @@ -44,3 +44,6 @@ IPHONEOS_DEPLOYMENT_TARGET = 13.0 //SDKROOT = macosx SWIFT_SWIFT3_OBJC_INFERENCE = Off SWIFT_VERSION = 5.1 + +// https://forums.swift.org/t/swift-packages-in-multiple-targets-results-in-this-will-result-in-duplication-of-library-code-errors/34892/33 +DISABLE_DIAMOND_PROBLEM_DIAGNOSTIC = YES