From 8f3a6638d83fa6f6daa1a5d4b1929a93c741bbb7 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Sun, 21 Feb 2021 10:16:08 +0900 Subject: [PATCH] Delete long-deprecated CoreStore namespace --- CoreStore.xcodeproj/project.pbxproj | 172 +++-------- Sources/CSCoreStore+Migrating.swift | 107 ------- Sources/CSCoreStore+Observing.swift | 114 ------- Sources/CSCoreStore+Querying.swift | 179 ----------- Sources/CSCoreStore+Setup.swift | 129 -------- Sources/CSCoreStore+Transaction.swift | 95 ------ Sources/CoreStore+Migration.swift | 102 ------- Sources/CoreStore+Observing.swift | 236 --------------- Sources/CoreStore+Querying.swift | 411 -------------------------- Sources/CoreStore+Setup.swift | 117 -------- Sources/CoreStore+Transaction.swift | 88 ------ Sources/CoreStore.swift | 50 ---- Sources/SectionsReader.swift | 65 ---- 13 files changed, 41 insertions(+), 1824 deletions(-) delete mode 100644 Sources/CSCoreStore+Migrating.swift delete mode 100644 Sources/CSCoreStore+Observing.swift delete mode 100644 Sources/CSCoreStore+Querying.swift delete mode 100644 Sources/CSCoreStore+Setup.swift delete mode 100644 Sources/CSCoreStore+Transaction.swift delete mode 100644 Sources/CoreStore+Migration.swift delete mode 100644 Sources/CoreStore+Observing.swift delete mode 100644 Sources/CoreStore+Querying.swift delete mode 100644 Sources/CoreStore+Setup.swift delete mode 100644 Sources/CoreStore+Transaction.swift delete mode 100644 Sources/CoreStore.swift delete mode 100644 Sources/SectionsReader.swift diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index c5668b2..50d70ce 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -15,13 +15,10 @@ 18166889232B9ED80097C275 /* String+KeyPaths.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51B5C2A22D43931009FA3BA /* String+KeyPaths.swift */; }; 2F03A53619C5C6DA005002A5 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2F03A54D19C5C872005002A5 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F03A54C19C5C872005002A5 /* CoreData.framework */; }; - 2F291E2719C6D3CF007AF63F /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; 82BA18931C4BBCBA00A0916E /* CoreStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18891C4BBCBA00A0916E /* CoreStore.framework */; }; 82BA18A01C4BBD1400A0916E /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 82BA18A11C4BBD1D00A0916E /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; 82BA18A21C4BBD1D00A0916E /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; 82BA18A31C4BBD2200A0916E /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; - 82BA18A51C4BBD2200A0916E /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; 82BA18A61C4BBD2900A0916E /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; 82BA18A71C4BBD2900A0916E /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; 82BA18A81C4BBD2900A0916E /* CoreStoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */; }; @@ -31,14 +28,12 @@ 82BA18AC1C4BBD3100A0916E /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; }; 82BA18AD1C4BBD3100A0916E /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; 82BA18AE1C4BBD3100A0916E /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; - 82BA18AF1C4BBD3100A0916E /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; 82BA18B01C4BBD3100A0916E /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; 82BA18B21C4BBD3900A0916E /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; 82BA18B31C4BBD3900A0916E /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; 82BA18B41C4BBD3900A0916E /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; 82BA18B51C4BBD3F00A0916E /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; }; 82BA18B61C4BBD3F00A0916E /* DataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */; }; - 82BA18B71C4BBD3F00A0916E /* CoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */; }; 82BA18B81C4BBD4200A0916E /* TypeErasedClauses.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* TypeErasedClauses.swift */; }; 82BA18B91C4BBD4A00A0916E /* From.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F011AFF847B0064E85B /* From.swift */; }; 82BA18BA1C4BBD4A00A0916E /* Select.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F031AFF847B0064E85B /* Select.swift */; }; @@ -48,13 +43,11 @@ 82BA18BE1C4BBD4A00A0916E /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; }; 82BA18BF1C4BBD5300A0916E /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; 82BA18C01C4BBD5300A0916E /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; }; - 82BA18C11C4BBD5300A0916E /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; }; 82BA18C21C4BBD5300A0916E /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; }; 82BA18C31C4BBD5300A0916E /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; }; 82BA18C41C4BBD5300A0916E /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; }; 82BA18C51C4BBD5300A0916E /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; }; 82BA18C61C4BBD5900A0916E /* DataStack+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */; }; - 82BA18C71C4BBD5900A0916E /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; }; 82BA18C81C4BBD5900A0916E /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; }; 82BA18C91C4BBD5900A0916E /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; }; 82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; @@ -96,7 +89,6 @@ B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B50392FB1C479640009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; - B504D0D61B02362500B2BBB1 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; B50564D32350CC3100482308 /* PropertyProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50564D22350CC3100482308 /* PropertyProtocol.swift */; }; B50564D42350CC3100482308 /* PropertyProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50564D22350CC3100482308 /* PropertyProtocol.swift */; }; B50564D52350CC3100482308 /* PropertyProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50564D22350CC3100482308 /* PropertyProtocol.swift */; }; @@ -245,13 +237,11 @@ B5220E111D0DA6AB009BC71E /* ListObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0F1D0DA6AB009BC71E /* ListObserverTests.swift */; }; B5220E131D1305ED009BC71E /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; B5220E141D130614009BC71E /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; }; - B5220E151D130663009BC71E /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; }; B5220E161D13067C009BC71E /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; }; B5220E171D1306DF009BC71E /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; B5220E181D130711009BC71E /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; }; B5220E191D130761009BC71E /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; }; B5220E1A1D130791009BC71E /* Internals.CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* Internals.CoreStoreFetchedResultsController.swift */; }; - B5220E1B1D13079B009BC71E /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; B5220E1C1D130801009BC71E /* Internals.FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* Internals.FetchedResultsControllerDelegate.swift */; }; B5220E1D1D13080A009BC71E /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; B5220E1E1D13080D009BC71E /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; }; @@ -297,10 +287,8 @@ B527767A234F265F0056BE9F /* Internals.SharedNotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5277676234F265F0056BE9F /* Internals.SharedNotificationObserver.swift */; }; B52DD17E1BE1F8CD00949AFE /* CoreStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B52DD1741BE1F8CC00949AFE /* CoreStore.framework */; }; B52DD1931BE1F8FD00949AFE /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B52DD1941BE1F92500949AFE /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; B52DD1951BE1F92500949AFE /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; B52DD1961BE1F92500949AFE /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; - B52DD1981BE1F92500949AFE /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; B52DD1991BE1F92800949AFE /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; B52DD19A1BE1F92800949AFE /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; B52DD19B1BE1F92800949AFE /* CoreStoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */; }; @@ -310,13 +298,11 @@ B52DD19F1BE1F92C00949AFE /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; }; B52DD1A01BE1F92C00949AFE /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; B52DD1A11BE1F92C00949AFE /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; - B52DD1A21BE1F92C00949AFE /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; B52DD1A41BE1F92F00949AFE /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; B52DD1A51BE1F92F00949AFE /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; B52DD1A61BE1F92F00949AFE /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; B52DD1A71BE1F93200949AFE /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; }; B52DD1A81BE1F93200949AFE /* DataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */; }; - B52DD1A91BE1F93200949AFE /* CoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */; }; B52DD1AA1BE1F93500949AFE /* TypeErasedClauses.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* TypeErasedClauses.swift */; }; B52DD1AB1BE1F93900949AFE /* From.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F011AFF847B0064E85B /* From.swift */; }; B52DD1AC1BE1F93900949AFE /* Select.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F031AFF847B0064E85B /* Select.swift */; }; @@ -325,7 +311,6 @@ B52DD1AF1BE1F93900949AFE /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F021AFF847B0064E85B /* GroupBy.swift */; }; B52DD1B01BE1F93900949AFE /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; }; B52DD1B81BE1F94000949AFE /* DataStack+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */; }; - B52DD1B91BE1F94000949AFE /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; }; B52DD1BA1BE1F94000949AFE /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; }; B52DD1BB1BE1F94000949AFE /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; }; B52DD1BC1BE1F94000949AFE /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; @@ -394,10 +379,6 @@ B53FBA061CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; B53FBA071CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; B53FBA081CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; - B53FBA0B1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; - B53FBA0D1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; - B53FBA0E1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; - B53FBA0F1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; B53FBA121CAB63CB00F0D40A /* Progress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* Progress+ObjectiveC.swift */; }; B53FBA141CAB63CB00F0D40A /* Progress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* Progress+ObjectiveC.swift */; }; B53FBA151CAB63CB00F0D40A /* Progress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* Progress+ObjectiveC.swift */; }; @@ -406,10 +387,6 @@ B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; B53FBA1C1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; - B546F9581C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; - B546F9591C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; - B546F95A1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; - B546F95B1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; B546F95D1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; B546F95E1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; B546F95F1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; @@ -494,10 +471,8 @@ B56007141B3F6C2800A9A8F9 /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; B56007161B4018AB00A9A8F9 /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; }; B563217E1BD65110006C9394 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B563217F1BD65216006C9394 /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; B56321801BD65216006C9394 /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; B56321811BD65216006C9394 /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; - B56321831BD65216006C9394 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; B56321841BD65216006C9394 /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; B56321851BD65216006C9394 /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; B56321861BD65216006C9394 /* CoreStoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */; }; @@ -507,13 +482,11 @@ B563218A1BD65216006C9394 /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; }; B563218B1BD65216006C9394 /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; B563218C1BD65216006C9394 /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; - B563218D1BD65216006C9394 /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; B563218F1BD65216006C9394 /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; B56321901BD65216006C9394 /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; B56321911BD65216006C9394 /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; B56321921BD65216006C9394 /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; }; B56321931BD65216006C9394 /* DataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */; }; - B56321941BD65216006C9394 /* CoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */; }; B56321951BD65216006C9394 /* TypeErasedClauses.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* TypeErasedClauses.swift */; }; B56321961BD65216006C9394 /* From.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F011AFF847B0064E85B /* From.swift */; }; B56321971BD65216006C9394 /* Select.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F031AFF847B0064E85B /* Select.swift */; }; @@ -523,13 +496,11 @@ B563219B1BD65216006C9394 /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; }; B563219C1BD65216006C9394 /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; B563219D1BD65216006C9394 /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; }; - B563219E1BD65216006C9394 /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; }; B563219F1BD65216006C9394 /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; }; B56321A01BD65216006C9394 /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; }; B56321A11BD65216006C9394 /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; }; B56321A21BD65216006C9394 /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; }; B56321A31BD65216006C9394 /* DataStack+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */; }; - B56321A41BD65216006C9394 /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; }; B56321A51BD65216006C9394 /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; }; B56321A61BD65216006C9394 /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; }; B56321A71BD65216006C9394 /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; @@ -750,14 +721,22 @@ B5C795A225D7EB2200BDACC1 /* ForEach+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795A025D7EB2200BDACC1 /* ForEach+SwiftUI.swift */; }; B5C795A325D7EB2200BDACC1 /* ForEach+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795A025D7EB2200BDACC1 /* ForEach+SwiftUI.swift */; }; B5C795A425D7EB2200BDACC1 /* ForEach+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795A025D7EB2200BDACC1 /* ForEach+SwiftUI.swift */; }; - B5C795AB25D7ED8600BDACC1 /* SectionsReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AA25D7ED8600BDACC1 /* SectionsReader.swift */; }; - B5C795AC25D7ED8600BDACC1 /* SectionsReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AA25D7ED8600BDACC1 /* SectionsReader.swift */; }; - B5C795AD25D7ED8600BDACC1 /* SectionsReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AA25D7ED8600BDACC1 /* SectionsReader.swift */; }; - B5C795AE25D7ED8600BDACC1 /* SectionsReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AA25D7ED8600BDACC1 /* SectionsReader.swift */; }; - B5C795B025D7EF8600BDACC1 /* ForEachSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AF25D7EF8600BDACC1 /* ForEachSection.swift */; }; - B5C795B125D7EF8600BDACC1 /* ForEachSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AF25D7EF8600BDACC1 /* ForEachSection.swift */; }; - B5C795B225D7EF8600BDACC1 /* ForEachSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AF25D7EF8600BDACC1 /* ForEachSection.swift */; }; - B5C795B325D7EF8600BDACC1 /* ForEachSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795AF25D7EF8600BDACC1 /* ForEachSection.swift */; }; + B5C795C325DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C225DD651F00BDACC1 /* DataStack+Reactive.swift */; }; + B5C795C425DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C225DD651F00BDACC1 /* DataStack+Reactive.swift */; }; + B5C795C525DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C225DD651F00BDACC1 /* DataStack+Reactive.swift */; }; + B5C795C625DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C225DD651F00BDACC1 /* DataStack+Reactive.swift */; }; + B5C795C825DD692600BDACC1 /* PublisherConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C725DD692600BDACC1 /* PublisherConvertible.swift */; }; + B5C795C925DD692600BDACC1 /* PublisherConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C725DD692600BDACC1 /* PublisherConvertible.swift */; }; + B5C795CA25DD692600BDACC1 /* PublisherConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C725DD692600BDACC1 /* PublisherConvertible.swift */; }; + B5C795CB25DD692600BDACC1 /* PublisherConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795C725DD692600BDACC1 /* PublisherConvertible.swift */; }; + B5C795CD25DD6C7600BDACC1 /* PublisherProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795CC25DD6C7600BDACC1 /* PublisherProvider.swift */; }; + B5C795CE25DD6C7600BDACC1 /* PublisherProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795CC25DD6C7600BDACC1 /* PublisherProvider.swift */; }; + B5C795CF25DD6C7600BDACC1 /* PublisherProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795CC25DD6C7600BDACC1 /* PublisherProvider.swift */; }; + B5C795D025DD6C7600BDACC1 /* PublisherProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795CC25DD6C7600BDACC1 /* PublisherProvider.swift */; }; + B5C795D225E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795D125E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift */; }; + B5C795D325E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795D125E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift */; }; + B5C795D425E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795D125E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift */; }; + B5C795D525E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C795D125E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift */; }; B5C976E31C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; B5C976E41C6C9F9A00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; B5C976E51C6C9F9B00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; @@ -854,9 +833,6 @@ B5E1B59D1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; B5E1B5A01CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; - B5E1B5A21CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; - B5E1B5A41CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; - B5E1B5A51CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; B5E1B5A81CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; B5E1B5AA1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; B5E1B5AB1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; @@ -882,7 +858,6 @@ B5E84EF51AFF846E0064E85B /* BaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEB1AFF846E0064E85B /* BaseDataTransaction.swift */; }; B5E84EF61AFF846E0064E85B /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; B5E84EF71AFF846E0064E85B /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; - B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; B5E84EFC1AFF846E0064E85B /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; }; B5E84F0D1AFF847B0064E85B /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; }; B5E84F0E1AFF847B0064E85B /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; }; @@ -892,9 +867,7 @@ B5E84F121AFF847B0064E85B /* OrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F041AFF847B0064E85B /* OrderBy.swift */; }; B5E84F131AFF847B0064E85B /* Where.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F051AFF847B0064E85B /* Where.swift */; }; B5E84F141AFF847B0064E85B /* DataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */; }; - B5E84F151AFF847B0064E85B /* CoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */; }; B5E84F201AFF84860064E85B /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; }; - B5E84F211AFF84860064E85B /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; }; B5E84F221AFF84860064E85B /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; }; B5E84F231AFF84860064E85B /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; }; B5E84F241AFF84860064E85B /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; }; @@ -947,18 +920,10 @@ B5ECDC1F1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; B5ECDC201CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; B5ECDC211CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; - B5ECDC231CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; - B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; - B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; - B5ECDC271CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; B5ECDC291CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; B5ECDC2B1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; B5ECDC2C1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; B5ECDC2D1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; - B5ECDC2F1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; - B5ECDC311CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; - B5ECDC321CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; - B5ECDC331CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; B5F1DA8D1B9AA97D007C5CBB /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; B5F1DA901B9AA991007C5CBB /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; B5F8496C234898240029D57B /* ListSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F8496B234898240029D57B /* ListSnapshot.swift */; }; @@ -967,7 +932,6 @@ B5F8496F234898240029D57B /* ListSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F8496B234898240029D57B /* ListSnapshot.swift */; }; B5FAD6A91B50A4B400714891 /* Progress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* Progress+Convenience.swift */; }; B5FAD6AC1B51285300714891 /* Internals.MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* Internals.MigrationManager.swift */; }; - B5FAD6AE1B518DCB00714891 /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; }; B5FE4DA21C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; B5FE4DA31C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; B5FE4DA41C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; @@ -1017,7 +981,6 @@ 2F03A53B19C5C6DA005002A5 /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 2F03A53E19C5C6DA005002A5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2F03A54C19C5C872005002A5 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 2F291E2619C6D3CF007AF63F /* CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CoreStore.swift; sourceTree = ""; }; 82BA18891C4BBCBA00A0916E /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 82BA18921C4BBCBA00A0916E /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 82BA18DE1C4BBE2600A0916E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -1033,7 +996,6 @@ B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSListMonitor.swift; sourceTree = ""; }; B501FDE61CA8D20500BE22EF /* CSListObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSListObserver.swift; sourceTree = ""; }; B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Transaction.swift"; sourceTree = ""; }; - B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Setup.swift"; sourceTree = ""; }; B50564D22350CC3100482308 /* PropertyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyProtocol.swift; sourceTree = ""; }; B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableAttributeType.swift; sourceTree = ""; }; B509D7B923C846E300F42824 /* Value.Required.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Value.Required.swift; sourceTree = ""; }; @@ -1100,10 +1062,8 @@ B53D9E5823513712000F48FB /* DiffableDataSourceSnapshotProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiffableDataSourceSnapshotProtocol.swift; sourceTree = ""; }; B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSMigrationResult.swift; sourceTree = ""; }; B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSMigrationType.swift; sourceTree = ""; }; - B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Migrating.swift"; sourceTree = ""; }; B53FBA111CAB63CB00F0D40A /* Progress+ObjectiveC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Progress+ObjectiveC.swift"; sourceTree = ""; }; B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+ObjectiveC.swift"; sourceTree = ""; }; - B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Setup.swift"; sourceTree = ""; }; B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSQliteStore.swift; sourceTree = ""; }; B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSInMemoryStore.swift; sourceTree = ""; }; B546F9721C9C553300D5AC55 /* SetupResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupResult.swift; sourceTree = ""; }; @@ -1196,8 +1156,10 @@ B5C7959325D7D18700BDACC1 /* LiveObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveObject.swift; sourceTree = ""; }; B5C7959825D7D8B300BDACC1 /* ListReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListReader.swift; sourceTree = ""; }; B5C795A025D7EB2200BDACC1 /* ForEach+SwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ForEach+SwiftUI.swift"; sourceTree = ""; }; - B5C795AA25D7ED8600BDACC1 /* SectionsReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionsReader.swift; sourceTree = ""; }; - B5C795AF25D7EF8600BDACC1 /* ForEachSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForEachSection.swift; sourceTree = ""; }; + B5C795C225DD651F00BDACC1 /* DataStack+Reactive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataStack+Reactive.swift"; sourceTree = ""; }; + B5C795C725DD692600BDACC1 /* PublisherConvertible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublisherConvertible.swift; sourceTree = ""; }; + B5C795CC25DD6C7600BDACC1 /* PublisherProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublisherProvider.swift; sourceTree = ""; }; + B5C795D125E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSnapshot.SectionInfo.swift; sourceTree = ""; }; B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UnsafeDataTransaction+Observing.swift"; sourceTree = ""; }; B5C976E61C6E3A5900B1AF90 /* Internals.CoreStoreFetchedResultsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Internals.CoreStoreFetchedResultsController.swift; sourceTree = ""; }; B5CA2B071F7E5ACA004B1936 /* WhereClauseType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WhereClauseType.swift; sourceTree = ""; }; @@ -1233,7 +1195,6 @@ B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSObjectMonitor.swift; sourceTree = ""; }; B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSObjectObserver.swift; sourceTree = ""; }; B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Observing.swift"; sourceTree = ""; }; - B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Observing.swift"; sourceTree = ""; }; B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Migrating.swift"; sourceTree = ""; }; B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSynchronousDataTransaction.swift; sourceTree = ""; }; B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSUnsafeDataTransaction.swift; sourceTree = ""; }; @@ -1249,7 +1210,6 @@ B5E84EEB1AFF846E0064E85B /* BaseDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseDataTransaction.swift; sourceTree = ""; }; B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataStack+Transaction.swift"; sourceTree = ""; }; B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnsafeDataTransaction.swift; sourceTree = ""; }; - B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Transaction.swift"; sourceTree = ""; }; B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronousDataTransaction.swift; sourceTree = ""; }; B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BaseDataTransaction+Querying.swift"; sourceTree = ""; }; B5E84F001AFF847B0064E85B /* Tweak.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tweak.swift; sourceTree = ""; }; @@ -1259,9 +1219,7 @@ B5E84F041AFF847B0064E85B /* OrderBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderBy.swift; sourceTree = ""; }; B5E84F051AFF847B0064E85B /* Where.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Where.swift; sourceTree = ""; }; B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataStack+Querying.swift"; sourceTree = ""; }; - B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Querying.swift"; sourceTree = ""; }; B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataStack+Observing.swift"; sourceTree = ""; }; - B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Observing.swift"; sourceTree = ""; }; B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectMonitor.swift; sourceTree = ""; }; B5E84F1D1AFF84860064E85B /* ListMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListMonitor.swift; sourceTree = ""; }; B5E84F1E1AFF84860064E85B /* ListObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListObserver.swift; sourceTree = ""; }; @@ -1284,16 +1242,13 @@ B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSGroupBy.swift; sourceTree = ""; }; B5ECDC101CA816E500C7F112 /* CSTweak.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSTweak.swift; sourceTree = ""; }; B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Querying.swift"; sourceTree = ""; }; - B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Querying.swift"; sourceTree = ""; }; B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Transaction.swift"; sourceTree = ""; }; - B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Transaction.swift"; sourceTree = ""; }; B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableObject.swift; sourceTree = ""; }; B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableUniqueObject.swift; sourceTree = ""; }; B5F8496B234898240029D57B /* ListSnapshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSnapshot.swift; sourceTree = ""; }; B5F849702348A6690029D57B /* EnvironmentValues+DataSources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EnvironmentValues+DataSources.swift"; sourceTree = ""; }; B5FAD6A81B50A4B300714891 /* Progress+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Progress+Convenience.swift"; sourceTree = ""; }; B5FAD6AB1B51285300714891 /* Internals.MigrationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Internals.MigrationManager.swift; sourceTree = ""; }; - B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = "CoreStore+Migration.swift"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageInterface.swift; sourceTree = ""; }; B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InMemoryStore.swift; sourceTree = ""; }; B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteStore.swift; sourceTree = ""; }; @@ -1500,7 +1455,6 @@ children = ( B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */, B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */, - B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */, B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */, B501FDE61CA8D20500BE22EF /* CSListObserver.swift */, B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */, @@ -1592,7 +1546,6 @@ B546F9611C9A13F400D5AC55 /* Setup */ = { isa = PBXGroup; children = ( - B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */, B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */, B56923D71EB8279B007C4DC9 /* Dynamic Models */, B546F9621C9A140E00D5AC55 /* StorageInterfaces */, @@ -1619,7 +1572,6 @@ B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */, B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */, B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */, - B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */, ); name = Transactions; sourceTree = ""; @@ -1657,7 +1609,6 @@ isa = PBXGroup; children = ( B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */, - B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */, B546F9721C9C553300D5AC55 /* SetupResult.swift */, B56007151B4018AB00A9A8F9 /* MigrationChain.swift */, B5A261201B64BFDB006EB6D3 /* MigrationType.swift */, @@ -1737,7 +1688,6 @@ B5A5F26B1CAFF8D0004AB9AF /* Swift */ = { isa = PBXGroup; children = ( - 2F291E2619C6D3CF007AF63F /* CoreStore.swift */, B5DE522F230BDA1300A22534 /* CoreStoreDefaults.swift */, B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */, B549F6721E56A92800FBAB2D /* CoreDataNativeType.swift */, @@ -1789,10 +1739,8 @@ B5C7959E25D7E8B100BDACC1 /* Views */ = { isa = PBXGroup; children = ( - B52FEC732596DBE000368BFB /* ObjectReader.swift */, B5C7959825D7D8B300BDACC1 /* ListReader.swift */, - B5C795AA25D7ED8600BDACC1 /* SectionsReader.swift */, - B5C795AF25D7EF8600BDACC1 /* ForEachSection.swift */, + B52FEC732596DBE000368BFB /* ObjectReader.swift */, ); name = Views; sourceTree = ""; @@ -1808,6 +1756,9 @@ B5C795BE25D933C200BDACC1 /* Reactive Programming */ = { isa = PBXGroup; children = ( + B5C795C725DD692600BDACC1 /* PublisherConvertible.swift */, + B5C795CC25DD6C7600BDACC1 /* PublisherProvider.swift */, + B5C795C225DD651F00BDACC1 /* DataStack+Reactive.swift */, ); name = "Reactive Programming"; sourceTree = ""; @@ -1835,7 +1786,6 @@ isa = PBXGroup; children = ( B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */, - B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */, B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */, B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */, B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */, @@ -1856,7 +1806,6 @@ children = ( B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */, B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */, - B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */, B5ECDBEA1CA6BEAC00C7F112 /* Protocol Clauses */, B5ECDBF11CA6BF2300C7F112 /* Concrete Clauses */, ); @@ -1869,6 +1818,7 @@ B5F849702348A6690029D57B /* EnvironmentValues+DataSources.swift */, B50132292344ECB500FC238B /* ListPublisher.swift */, B5F8496B234898240029D57B /* ListSnapshot.swift */, + B5C795D125E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift */, B5BF7FC0234D7B2E0070E741 /* ObjectPublisher.swift */, B5BF7FC5234D7E460070E741 /* ObjectSnapshot.swift */, B55BB4D3235012AE00C33E34 /* ObjectRepresentation.swift */, @@ -1898,7 +1848,6 @@ B5E84EDA1AFF84500064E85B /* Setup */ = { isa = PBXGroup; children = ( - B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */, B5E84EDB1AFF84500064E85B /* DataStack.swift */, B57358D71E5A7F9B0094B50A /* Dynamic Models */, B5FE4DA01C84818B00FA6A91 /* StorageInterfaces */, @@ -1926,7 +1875,6 @@ B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */, B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */, B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */, - B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */, B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */, ); name = Transactions; @@ -1937,7 +1885,6 @@ children = ( B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */, B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */, - B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */, B596BBB51DD5BC67001DCDD9 /* FetchableSource.swift */, B596BBBA1DD5C39F001DCDD9 /* QueryableSource.swift */, B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */, @@ -1977,7 +1924,6 @@ children = ( B56007131B3F6C2800A9A8F9 /* SectionBy.swift */, B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */, - B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */, B5E8A71F21C1015300EF006A /* CoreStoreObject+Observing.swift */, B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */, B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */, @@ -2373,7 +2319,6 @@ B56923F51EB828BF007C4DC9 /* CSDynamicSchema.swift in Sources */, B5F1DA901B9AA991007C5CBB /* ImportableUniqueObject.swift in Sources */, B51260891E9B252B00402229 /* NSEntityDescription+DynamicModel.swift in Sources */, - B504D0D61B02362500B2BBB1 /* CoreStore+Setup.swift in Sources */, B5D1E22C19FA9FBC003B2874 /* CoreStoreError.swift in Sources */, B5E84F131AFF847B0064E85B /* Where.swift in Sources */, B5D339D81E9489AB00C880DE /* CoreStoreObject.swift in Sources */, @@ -2382,8 +2327,8 @@ B596BBBB1DD5C39F001DCDD9 /* QueryableSource.swift in Sources */, B55BB4D4235012AE00C33E34 /* ObjectRepresentation.swift in Sources */, B5ECDBFF1CA80CBA00C7F112 /* CSWhere.swift in Sources */, - B5C795AB25D7ED8600BDACC1 /* SectionsReader.swift in Sources */, B5ECDC051CA8138100C7F112 /* CSOrderBy.swift in Sources */, + B5C795CD25DD6C7600BDACC1 /* PublisherProvider.swift in Sources */, B5E1B5981CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, B5DAFB4A2203E01D003FCCD0 /* KeyPathGenericBindings.swift in Sources */, B5519A5F1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, @@ -2396,7 +2341,6 @@ B50C3F0323D1B01C00B29880 /* Internals.AnyFieldCoder.swift in Sources */, B5D339E21E948C3600C880DE /* Value.swift in Sources */, B5A261211B64BFDB006EB6D3 /* MigrationType.swift in Sources */, - B53FBA0B1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, B5E84F141AFF847B0064E85B /* DataStack+Querying.swift in Sources */, B5AA37F1235C28EE00FFD4B9 /* DiffableDataSource.CollectionViewAdapter-AppKit.swift in Sources */, B5D7A5B61CA3BF8F005C752B /* CSInto.swift in Sources */, @@ -2418,7 +2362,6 @@ B5D339F11E94AF5800C880DE /* CoreStoreStrings.swift in Sources */, B56007161B4018AB00A9A8F9 /* MigrationChain.swift in Sources */, B5E1B59D1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, - B5ECDC231CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B549F6731E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, B509C7F41E54511B0061C547 /* ImportableAttributeType.swift in Sources */, B5E84F0E1AFF847B0064E85B /* Tweak.swift in Sources */, @@ -2428,10 +2371,8 @@ B5ECDC291CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, B56923F01EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, B5E84F121AFF847B0064E85B /* OrderBy.swift in Sources */, - B546F9581C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, B5635D142356C39500B80E6B /* DiffableDataSource.CollectionViewAdapter-UIKit.swift in Sources */, B5E84F361AFF85470064E85B /* NSManagedObjectContext+Setup.swift in Sources */, - B5FAD6AE1B518DCB00714891 /* CoreStore+Migration.swift in Sources */, B50E175223517C6B004F033C /* Internals.DiffableDataUIDispatcher.Changeset.swift in Sources */, B5E84EE71AFF84610064E85B /* CoreStore+Logging.swift in Sources */, B546F9731C9C553300D5AC55 /* SetupResult.swift in Sources */, @@ -2465,7 +2406,6 @@ B5E41EC01EA9BB37006240F0 /* DynamicSchema+Convenience.swift in Sources */, B501FDE21CA8D1F500BE22EF /* CSListMonitor.swift in Sources */, B5A1DAC81F111BFA003CF369 /* KeyPath+Querying.swift in Sources */, - 2F291E2719C6D3CF007AF63F /* CoreStore.swift in Sources */, B5ECDC111CA816E500C7F112 /* CSTweak.swift in Sources */, B509D7D323C84E1900F42824 /* Transformable.Required.swift in Sources */, B56923C41EB823B4007C4DC9 /* NSEntityDescription+Migration.swift in Sources */, @@ -2480,7 +2420,6 @@ B5FEC18E1C9166E200532541 /* NSPersistentStore+Setup.swift in Sources */, B5BF7FCB234D80910070E741 /* Internals.LazyNonmutating.swift in Sources */, B596BBB61DD5BC67001DCDD9 /* FetchableSource.swift in Sources */, - B5E1B5A21CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B5E84EDF1AFF84500064E85B /* DataStack.swift in Sources */, B50E175723517DE4004F033C /* Differentiable.swift in Sources */, B59AFF411C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, @@ -2508,7 +2447,6 @@ B56E4ECF23CD9E4200E1708C /* Field.Stored.swift in Sources */, B52F744A1E9B8740005F3DAC /* CoreStoreSchema.swift in Sources */, B5AEFAB51C9962AE00AD137F /* CoreStoreBridge.swift in Sources */, - B5C795B025D7EF8600BDACC1 /* ForEachSection.swift in Sources */, B5E2222A1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, B5E84F391AFF85470064E85B /* NSManagedObjectContext+Querying.swift in Sources */, B56923E81EB827F5007C4DC9 /* InferredSchemaMappingProvider.swift in Sources */, @@ -2525,25 +2463,23 @@ B58D0C631EAA0C7E003EDD87 /* NSManagedObject+DynamicModel.swift in Sources */, B533C4DB1D7D4BFA001383CB /* DispatchQueue+CoreStore.swift in Sources */, B559CD491CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */, - B5ECDC2F1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B5E84F311AFF849C0064E85B /* Internals.WeakObject.swift in Sources */, B52FEC742596DBE100368BFB /* ObjectReader.swift in Sources */, B5E84F101AFF847B0064E85B /* GroupBy.swift in Sources */, B5E84F201AFF84860064E85B /* DataStack+Observing.swift in Sources */, B501FDDD1CA8D05000BE22EF /* CSSectionBy.swift in Sources */, B538BA771D15B3E30003A766 /* CoreStoreBridge.m in Sources */, + B5C795D225E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */, B51B5C2B22D43931009FA3BA /* String+KeyPaths.swift in Sources */, B512607F1E97A18000402229 /* CoreStoreObject+Convenience.swift in Sources */, B5C7959425D7D18700BDACC1 /* LiveObject.swift in Sources */, B509D7CE23C8492800F42824 /* Relationship.ToManyUnordered.swift in Sources */, - B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */, B5E84F301AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift in Sources */, B5D4A6B723A236DC00D7373F /* DiffableDataSource.BaseAdapter.swift in Sources */, B5831B7A1F34ACBA00A9F647 /* Transformable.swift in Sources */, B5BF7FB2234C97910070E741 /* DiffableDataSource.swift in Sources */, B546F9691C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, B549F65E1E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, - B5E84F211AFF84860064E85B /* CoreStore+Observing.swift in Sources */, B559CD431CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, B5CA2B121F81DBFE004B1936 /* KeyPathStringConvertible.swift in Sources */, B5A991EC1E9DC2CE0091A2E3 /* VersionLock.swift in Sources */, @@ -2560,6 +2496,7 @@ B5ECDBEC1CA6BF2000C7F112 /* CSFrom.swift in Sources */, B56923EC1EB827F6007C4DC9 /* SchemaMappingProvider.swift in Sources */, B5E834B91B76311F001D3D50 /* BaseDataTransaction+Importing.swift in Sources */, + B5C795C825DD692600BDACC1 /* PublisherConvertible.swift in Sources */, B5E84EE61AFF84610064E85B /* DefaultLogger.swift in Sources */, B53FBA041CAB300C00F0D40A /* CSMigrationType.swift in Sources */, B57E6FAC23D30A5B000FD031 /* FieldRelationshipProtocol.swift in Sources */, @@ -2572,7 +2509,7 @@ B546F95D1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */, B5D339E71E9493A500C880DE /* Entity.swift in Sources */, B5ECDC0B1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, - B5E84F151AFF847B0064E85B /* CoreStore+Querying.swift in Sources */, + B5C795C325DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */, B5E84F241AFF84860064E85B /* ListObserver.swift in Sources */, B501322A2344ECB500FC238B /* ListPublisher.swift in Sources */, B5F8496C234898240029D57B /* ListSnapshot.swift in Sources */, @@ -2641,8 +2578,8 @@ B596BBBC1DD5C39F001DCDD9 /* QueryableSource.swift in Sources */, B5ECDC011CA80CBA00C7F112 /* CSWhere.swift in Sources */, B55BB4D5235012AE00C33E34 /* ObjectRepresentation.swift in Sources */, - B5C795AC25D7ED8600BDACC1 /* SectionsReader.swift in Sources */, B5ECDC071CA8138100C7F112 /* CSOrderBy.swift in Sources */, + B5C795CE25DD6C7600BDACC1 /* PublisherProvider.swift in Sources */, B5E1B59A1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, B5519A601CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, B5277678234F265F0056BE9F /* Internals.SharedNotificationObserver.swift in Sources */, @@ -2655,10 +2592,8 @@ B50C3F0423D1B01C00B29880 /* Internals.AnyFieldCoder.swift in Sources */, B50E175323517C6B004F033C /* Internals.DiffableDataUIDispatcher.Changeset.swift in Sources */, 82BA18C51C4BBD5300A0916E /* ListObserver.swift in Sources */, - B53FBA0D1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, 82BA18C21C4BBD5300A0916E /* ObjectMonitor.swift in Sources */, B5D7A5B81CA3BF8F005C752B /* CSInto.swift in Sources */, - 82BA18A51C4BBD2200A0916E /* CoreStore+Setup.swift in Sources */, 82BA18BD1C4BBD4A00A0916E /* GroupBy.swift in Sources */, B5ECDC1F1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B5BF7FCC234D80910070E741 /* Internals.LazyNonmutating.swift in Sources */, @@ -2672,7 +2607,6 @@ B5D339F21E94AF5800C880DE /* CoreStoreStrings.swift in Sources */, B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, B50E17622351FA66004F033C /* Internals.Closure.swift in Sources */, - B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B549F6741E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, B509C7F51E54511B0061C547 /* ImportableAttributeType.swift in Sources */, 82BA18B31C4BBD3900A0916E /* ImportableUniqueObject.swift in Sources */, @@ -2683,8 +2617,6 @@ 18166887232B9ED60097C275 /* String+KeyPaths.swift in Sources */, B5ECDC2B1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, B56923F11EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, - 82BA18A11C4BBD1D00A0916E /* CoreStore.swift in Sources */, - B546F9591C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, 82BA18A31C4BBD2200A0916E /* DataStack.swift in Sources */, 82BA18C81C4BBD5900A0916E /* MigrationChain.swift in Sources */, B546F9741C9C553300D5AC55 /* SetupResult.swift in Sources */, @@ -2706,7 +2638,6 @@ 82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */, B5519A5A1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */, B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */, - 82BA18C11C4BBD5300A0916E /* CoreStore+Observing.swift in Sources */, B53D9E5A23513712000F48FB /* DiffableDataSourceSnapshotProtocol.swift in Sources */, 82BA18BC1C4BBD4A00A0916E /* OrderBy.swift in Sources */, 82BA18B01C4BBD3100A0916E /* NSManagedObject+Transaction.swift in Sources */, @@ -2729,11 +2660,9 @@ B52F74461E9B8724005F3DAC /* XcodeDataModelSchema.swift in Sources */, 82BA18C61C4BBD5900A0916E /* DataStack+Migration.swift in Sources */, B59851491C90289D00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, - B5E1B5A41CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B596BBB71DD5BC67001DCDD9 /* FetchableSource.swift in Sources */, B50E42F823FBB91800ED476E /* ObjectProxy.swift in Sources */, B5FEC18F1C9166E600532541 /* NSPersistentStore+Setup.swift in Sources */, - 82BA18B71C4BBD3F00A0916E /* CoreStore+Querying.swift in Sources */, B50C3EE123D062C300B29880 /* FieldCoderType.swift in Sources */, 82BA18AA1C4BBD3100A0916E /* BaseDataTransaction.swift in Sources */, 82BA18A91C4BBD3100A0916E /* Into.swift in Sources */, @@ -2750,7 +2679,6 @@ B509D7D423C84E1900F42824 /* Transformable.Required.swift in Sources */, 82BA18AC1C4BBD3100A0916E /* SynchronousDataTransaction.swift in Sources */, B50C3EE623D153EA00B29880 /* Field.Coded.swift in Sources */, - 82BA18C71C4BBD5900A0916E /* CoreStore+Migration.swift in Sources */, B5E222251CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, 82BA18C41C4BBD5300A0916E /* ListMonitor.swift in Sources */, B5215CAA1FA4810300139E3A /* QueryChainBuilder.swift in Sources */, @@ -2767,7 +2695,6 @@ 82BA18D81C4BBD7100A0916E /* Internals.WeakObject.swift in Sources */, B56923E91EB827F5007C4DC9 /* InferredSchemaMappingProvider.swift in Sources */, B53B27601EE3B92E00E9B352 /* CoreStoreManagedObject.swift in Sources */, - B5C795B125D7EF8600BDACC1 /* ForEachSection.swift in Sources */, B509D7BD23C8480A00F42824 /* Value.Required.swift in Sources */, B5215CA51FA47DFD00139E3A /* FetchChainBuilder.swift in Sources */, B5D33A021E96012400C880DE /* Relationship.swift in Sources */, @@ -2776,11 +2703,9 @@ B56923E51EB827F5007C4DC9 /* CustomSchemaMappingProvider.swift in Sources */, B58D0C641EAA0C7E003EDD87 /* NSManagedObject+DynamicModel.swift in Sources */, B533C4DC1D7D4BFA001383CB /* DispatchQueue+CoreStore.swift in Sources */, - B5ECDC311CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B50C3EFA23D1987D00B29880 /* FieldCoders.Json.swift in Sources */, B5DE522C230BD7D500A22534 /* Internals.swift in Sources */, B50C3EDB23D0545800B29880 /* FieldAttributeProtocol.swift in Sources */, - 82BA18AF1C4BBD3100A0916E /* CoreStore+Transaction.swift in Sources */, 82BA18CB1C4BBD6400A0916E /* NSManagedObject+Convenience.swift in Sources */, 82BA18B51C4BBD3F00A0916E /* BaseDataTransaction+Querying.swift in Sources */, B501FDDF1CA8D05000BE22EF /* CSSectionBy.swift in Sources */, @@ -2794,6 +2719,7 @@ B5277673234F1AEB0056BE9F /* NSManagedObjectContext+Logging.swift in Sources */, B509D7D923C84E2600F42824 /* Transformable.Optional.swift in Sources */, B5C7959525D7D18700BDACC1 /* LiveObject.swift in Sources */, + B5C795D325E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */, B5831B7B1F34ACBA00A9F647 /* Transformable.swift in Sources */, 82BA18A81C4BBD2900A0916E /* CoreStoreLogger.swift in Sources */, B549F65F1E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, @@ -2819,6 +2745,7 @@ 82BA18B91C4BBD4A00A0916E /* From.swift in Sources */, B53FBA061CAB300C00F0D40A /* CSMigrationType.swift in Sources */, 82BA18BE1C4BBD4A00A0916E /* Tweak.swift in Sources */, + B5C795C925DD692600BDACC1 /* PublisherConvertible.swift in Sources */, B509D7C523C848DA00F42824 /* Relationship.ToOne.swift in Sources */, B5DBE2CE1C9914A900B5CEFA /* CSCoreStore.swift in Sources */, B57E6FAD23D30A5B000FD031 /* FieldRelationshipProtocol.swift in Sources */, @@ -2832,6 +2759,7 @@ B5BF7FB8234C97CE0070E741 /* DiffableDataSource.TableViewAdapter-UIKit.swift in Sources */, B56E4ED023CD9E4200E1708C /* Field.Stored.swift in Sources */, 82BA18C01C4BBD5300A0916E /* DataStack+Observing.swift in Sources */, + B5C795C425DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */, 82BA18A61C4BBD2900A0916E /* DefaultLogger.swift in Sources */, B56E4ECB23CD9B4800E1708C /* Field.swift in Sources */, B509D7BE23C8480A00F42824 /* Value.Optional.swift in Sources */, @@ -2893,15 +2821,14 @@ B546F9761C9C553300D5AC55 /* SetupResult.swift in Sources */, B53FBA161CAB63CB00F0D40A /* Progress+ObjectiveC.swift in Sources */, B509D7D123C8492800F42824 /* Relationship.ToManyUnordered.swift in Sources */, - B5ECDC271CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B5BF7FBF234C99190070E741 /* Internals.DiffableDataUIDispatcher.swift in Sources */, B5D339DB1E9489AB00C880DE /* CoreStoreObject.swift in Sources */, B52DD1951BE1F92500949AFE /* CoreStoreError.swift in Sources */, B56923FD1EB82956007C4DC9 /* CSXcodeDataModelSchema.swift in Sources */, B55514ED1EED8BF900BAB888 /* From+Querying.swift in Sources */, B5BF7FC4234D7B2E0070E741 /* ObjectPublisher.swift in Sources */, - B5C795AE25D7ED8600BDACC1 /* SectionsReader.swift in Sources */, B596BBBE1DD5C39F001DCDD9 /* QueryableSource.swift in Sources */, + B5C795D025DD6C7600BDACC1 /* PublisherProvider.swift in Sources */, B546F9601C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */, B55BB4D7235012AE00C33E34 /* ObjectRepresentation.swift in Sources */, B5ECDC0F1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, @@ -2917,10 +2844,8 @@ B5D339E51E948C3600C880DE /* Value.swift in Sources */, B50E175523517C6B004F033C /* Internals.DiffableDataUIDispatcher.Changeset.swift in Sources */, B5A5F26A1CAEC50F004AB9AF /* CSSelect.swift in Sources */, - B5220E1B1D13079B009BC71E /* CSCoreStore+Observing.swift in Sources */, B5FEC1911C9166E700532541 /* NSPersistentStore+Setup.swift in Sources */, B52DD1AB1BE1F93900949AFE /* From.swift in Sources */, - B546F95B1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, B52DD1A11BE1F92C00949AFE /* DataStack+Transaction.swift in Sources */, B5220E1C1D130801009BC71E /* Internals.FetchedResultsControllerDelegate.swift in Sources */, B5BF7FCE234D80910070E741 /* Internals.LazyNonmutating.swift in Sources */, @@ -2928,7 +2853,6 @@ B50564D62350CC3100482308 /* PropertyProtocol.swift in Sources */, B57E6FAA23D305D6000FD031 /* FIeldRelationshipType.swift in Sources */, B5831B781F34AC7A00A9F647 /* RelationshipProtocol.swift in Sources */, - B52DD1981BE1F92500949AFE /* CoreStore+Setup.swift in Sources */, B5D339F41E94AF5800C880DE /* CoreStoreStrings.swift in Sources */, B5220E241D13085E009BC71E /* NSFetchedResultsController+Convenience.swift in Sources */, B559CD471CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, @@ -2940,12 +2864,10 @@ B50EE14523473C97009B8C47 /* CoreStoreObject+DataSources.swift in Sources */, B509D7CC23C8491C00F42824 /* Relationship.ToManyOrdered.swift in Sources */, B55BB4D823503B9500C33E34 /* EnvironmentValues+DataSources.swift in Sources */, - B52DD1941BE1F92500949AFE /* CoreStore.swift in Sources */, 18166889232B9ED80097C275 /* String+KeyPaths.swift in Sources */, B52DD1A61BE1F92F00949AFE /* BaseDataTransaction+Importing.swift in Sources */, B56923F31EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, B5220E1D1D13080A009BC71E /* CSDataStack+Observing.swift in Sources */, - B52DD1A91BE1F93200949AFE /* CoreStore+Querying.swift in Sources */, B5519A4D1CA1F4FB002BEF78 /* CSError.swift in Sources */, B5E1B5AC1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, B52DD1961BE1F92500949AFE /* DataStack.swift in Sources */, @@ -3014,7 +2936,6 @@ B52DD1CB1BE1F94600949AFE /* Internals.WeakObject.swift in Sources */, B5220E1A1D130791009BC71E /* Internals.CoreStoreFetchedResultsController.swift in Sources */, B5215CAC1FA4810300139E3A /* QueryChainBuilder.swift in Sources */, - B53FBA0F1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, B514EF1123A8DB190093DBA4 /* DiffableDataSource.Target.swift in Sources */, B50E175A23517DE4004F033C /* Differentiable.swift in Sources */, B52F744D1E9B8740005F3DAC /* CoreStoreSchema.swift in Sources */, @@ -3026,7 +2947,6 @@ B56923EB1EB827F5007C4DC9 /* InferredSchemaMappingProvider.swift in Sources */, B50E175023517C03004F033C /* Internals.DiffableDataUIDispatcher.StagedChangeset.swift in Sources */, B53B27621EE3B92E00E9B352 /* CoreStoreManagedObject.swift in Sources */, - B5C795B325D7EF8600BDACC1 /* ForEachSection.swift in Sources */, B509D7C123C8480B00F42824 /* Value.Required.swift in Sources */, B5215CA71FA47DFD00139E3A /* FetchChainBuilder.swift in Sources */, B5D33A041E96012400C880DE /* Relationship.swift in Sources */, @@ -3037,7 +2957,6 @@ B533C4DE1D7D4BFA001383CB /* DispatchQueue+CoreStore.swift in Sources */, B5220E141D130614009BC71E /* DataStack+Observing.swift in Sources */, B50C3EFC23D1987D00B29880 /* FieldCoders.Json.swift in Sources */, - B52DD1A21BE1F92C00949AFE /* CoreStore+Transaction.swift in Sources */, B50C3EDD23D0545800B29880 /* FieldAttributeProtocol.swift in Sources */, B5DE522E230BD7D600A22534 /* Internals.swift in Sources */, B5E2222E1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, @@ -3049,14 +2968,13 @@ B5BF7FB0234C41E90070E741 /* Internals.DiffableDataSourceSnapshot.swift in Sources */, B51260821E97A18000402229 /* CoreStoreObject+Convenience.swift in Sources */, B52DD1A01BE1F92C00949AFE /* UnsafeDataTransaction.swift in Sources */, - B5ECDC331CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B52DD1BB1BE1F94000949AFE /* MigrationType.swift in Sources */, + B5C795D525E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */, B509D7DB23C84E2600F42824 /* Transformable.Optional.swift in Sources */, B5C7959725D7D18700BDACC1 /* LiveObject.swift in Sources */, B5831B7D1F34ACBA00A9F647 /* Transformable.swift in Sources */, B5277675234F1AEB0056BE9F /* NSManagedObjectContext+Logging.swift in Sources */, B52DD1C91BE1F94600949AFE /* NSManagedObjectContext+Transaction.swift in Sources */, - B5220E151D130663009BC71E /* CoreStore+Observing.swift in Sources */, B549F6611E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, B52DD19B1BE1F92800949AFE /* CoreStoreLogger.swift in Sources */, B52DD1991BE1F92800949AFE /* DefaultLogger.swift in Sources */, @@ -3077,7 +2995,7 @@ B5220E171D1306DF009BC71E /* UnsafeDataTransaction+Observing.swift in Sources */, B56923EF1EB827F6007C4DC9 /* SchemaMappingProvider.swift in Sources */, B53FBA081CAB300C00F0D40A /* CSMigrationType.swift in Sources */, - B52DD1B91BE1F94000949AFE /* CoreStore+Migration.swift in Sources */, + B5C795CB25DD692600BDACC1 /* PublisherConvertible.swift in Sources */, B509D7C723C848DA00F42824 /* Relationship.ToOne.swift in Sources */, B5519A5C1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */, B57E6FAF23D30A5B000FD031 /* FieldRelationshipProtocol.swift in Sources */, @@ -3091,6 +3009,7 @@ B52DD1AA1BE1F93500949AFE /* TypeErasedClauses.swift in Sources */, B56E4ED223CD9E4200E1708C /* Field.Stored.swift in Sources */, B53FBA021CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */, + B5C795C625DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */, B51FE5AF1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */, B56E4ECD23CD9B4800E1708C /* Field.swift in Sources */, B509D7C223C8480B00F42824 /* Value.Optional.swift in Sources */, @@ -3159,8 +3078,8 @@ B596BBBD1DD5C39F001DCDD9 /* QueryableSource.swift in Sources */, B5ECDC081CA8138100C7F112 /* CSOrderBy.swift in Sources */, B55BB4D6235012AE00C33E34 /* ObjectRepresentation.swift in Sources */, - B5C795AD25D7ED8600BDACC1 /* SectionsReader.swift in Sources */, B5E1B59B1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, + B5C795CF25DD6C7600BDACC1 /* PublisherProvider.swift in Sources */, B5519A611CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, B5FE4DAE1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */, B5277679234F265F0056BE9F /* Internals.SharedNotificationObserver.swift in Sources */, @@ -3172,11 +3091,8 @@ B5D339E41E948C3600C880DE /* Value.swift in Sources */, B50C3F0523D1B01C00B29880 /* Internals.AnyFieldCoder.swift in Sources */, B50E175423517C6B004F033C /* Internals.DiffableDataUIDispatcher.Changeset.swift in Sources */, - B53FBA0E1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, - B563219E1BD65216006C9394 /* CoreStore+Observing.swift in Sources */, B5D7A5B91CA3BF8F005C752B /* CSInto.swift in Sources */, B56321891BD65216006C9394 /* AsynchronousDataTransaction.swift in Sources */, - B56321831BD65216006C9394 /* CoreStore+Setup.swift in Sources */, B5ECDC201CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B5C976E51C6C9F9B00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */, B5BF7FCD234D80910070E741 /* Internals.LazyNonmutating.swift in Sources */, @@ -3188,9 +3104,7 @@ B57E6FA923D305D6000FD031 /* FIeldRelationshipType.swift in Sources */, B5D339F31E94AF5800C880DE /* CoreStoreStrings.swift in Sources */, B5E1B5A01CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, - B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B50E17632351FA66004F033C /* Internals.Closure.swift in Sources */, - B563217F1BD65216006C9394 /* CoreStore.swift in Sources */, B549F6751E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, B509C7F61E54511B0061C547 /* ImportableAttributeType.swift in Sources */, B5E1B5961CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, @@ -3201,8 +3115,6 @@ 18166888232B9ED70097C275 /* String+KeyPaths.swift in Sources */, B56321911BD65216006C9394 /* BaseDataTransaction+Importing.swift in Sources */, B56923F21EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, - B546F95A1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, - B56321941BD65216006C9394 /* CoreStore+Querying.swift in Sources */, B56321811BD65216006C9394 /* DataStack.swift in Sources */, B56321A81BD65219006C9394 /* NSManagedObject+Convenience.swift in Sources */, B546F9751C9C553300D5AC55 /* SetupResult.swift in Sources */, @@ -3250,7 +3162,6 @@ B5FEC1901C9166E700532541 /* NSPersistentStore+Setup.swift in Sources */, B56321A11BD65216006C9394 /* ListMonitor.swift in Sources */, B50E42F923FBB91800ED476E /* ObjectProxy.swift in Sources */, - B5E1B5A51CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B596BBB81DD5BC67001DCDD9 /* FetchableSource.swift in Sources */, B50C3EE223D062C300B29880 /* FieldCoderType.swift in Sources */, B56321881BD65216006C9394 /* BaseDataTransaction.swift in Sources */, @@ -3285,7 +3196,6 @@ B563219F1BD65216006C9394 /* ObjectMonitor.swift in Sources */, B56321B61BD6521C006C9394 /* Internals.WeakObject.swift in Sources */, B56923EA1EB827F5007C4DC9 /* InferredSchemaMappingProvider.swift in Sources */, - B5C795B225D7EF8600BDACC1 /* ForEachSection.swift in Sources */, B509D7BF23C8480B00F42824 /* Value.Required.swift in Sources */, B53B27611EE3B92E00E9B352 /* CoreStoreManagedObject.swift in Sources */, B5215CA61FA47DFD00139E3A /* FetchChainBuilder.swift in Sources */, @@ -3296,7 +3206,6 @@ B58D0C651EAA0C7E003EDD87 /* NSManagedObject+DynamicModel.swift in Sources */, B533C4DD1D7D4BFA001383CB /* DispatchQueue+CoreStore.swift in Sources */, B50C3EFB23D1987D00B29880 /* FieldCoders.Json.swift in Sources */, - B5ECDC321CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B50C3EDC23D0545800B29880 /* FieldAttributeProtocol.swift in Sources */, B5DE522D230BD7D600A22534 /* Internals.swift in Sources */, B56321851BD65216006C9394 /* CoreStore+Logging.swift in Sources */, @@ -3307,10 +3216,10 @@ B52FEC762596DBE100368BFB /* ObjectReader.swift in Sources */, B51260811E97A18000402229 /* CoreStoreObject+Convenience.swift in Sources */, B56321B11BD6521C006C9394 /* NSManagedObjectContext+CoreStore.swift in Sources */, - B563218D1BD65216006C9394 /* CoreStore+Transaction.swift in Sources */, B546F96B1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, B5277674234F1AEB0056BE9F /* NSManagedObjectContext+Logging.swift in Sources */, B509D7DA23C84E2600F42824 /* Transformable.Optional.swift in Sources */, + B5C795D425E0DD1B00BDACC1 /* ListSnapshot.SectionInfo.swift in Sources */, B5C7959625D7D18700BDACC1 /* LiveObject.swift in Sources */, B5831B7C1F34ACBA00A9F647 /* Transformable.swift in Sources */, B563218B1BD65216006C9394 /* UnsafeDataTransaction.swift in Sources */, @@ -3337,6 +3246,7 @@ B56321861BD65216006C9394 /* CoreStoreLogger.swift in Sources */, B53FBA071CAB300C00F0D40A /* CSMigrationType.swift in Sources */, B56321841BD65216006C9394 /* DefaultLogger.swift in Sources */, + B5C795CA25DD692600BDACC1 /* PublisherConvertible.swift in Sources */, B509D7C623C848DA00F42824 /* Relationship.ToOne.swift in Sources */, B5DBE2CF1C9914A900B5CEFA /* CSCoreStore.swift in Sources */, B57E6FAE23D30A5B000FD031 /* FieldRelationshipProtocol.swift in Sources */, @@ -3346,10 +3256,10 @@ B5ECDC0E1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, B5D339E91E9493A500C880DE /* Entity.swift in Sources */, B5BF7FC8234D7E460070E741 /* ObjectSnapshot.swift in Sources */, - B56321A41BD65216006C9394 /* CoreStore+Migration.swift in Sources */, B5BF7FB9234C97CE0070E741 /* DiffableDataSource.TableViewAdapter-UIKit.swift in Sources */, B56E4ED123CD9E4200E1708C /* Field.Stored.swift in Sources */, B56321A01BD65216006C9394 /* ObjectObserver.swift in Sources */, + B5C795C525DD651F00BDACC1 /* DataStack+Reactive.swift in Sources */, B56321951BD65216006C9394 /* TypeErasedClauses.swift in Sources */, B56E4ECC23CD9B4800E1708C /* Field.swift in Sources */, B509D7C023C8480B00F42824 /* Value.Optional.swift in Sources */, diff --git a/Sources/CSCoreStore+Migrating.swift b/Sources/CSCoreStore+Migrating.swift deleted file mode 100644 index 2c75467..0000000 --- a/Sources/CSCoreStore+Migrating.swift +++ /dev/null @@ -1,107 +0,0 @@ -// -// CSCoreStore+Migrating.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CSCoreStore - -@available(*, deprecated, message: "Call methods directly from the CSDataStack instead") -extension CSCoreStore { - - /** - Asynchronously adds a `CSInMemoryStore` to the `defaultStack`. Migrations are also initiated by default. - ``` - NSError *error; - NSProgress *migrationProgress = [dataStack - addInMemoryStorage:[CSInMemoryStore new] - completion:^(CSSetupResult *result) { - if (result.isSuccess) { - // ... - } - } - error: &error]; - ``` - - parameter storage: the `CSInMemoryStore` instance - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `CSSetupResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a failure `CSSetupResult` result if an error occurs asynchronously. - */ - public static func addInMemoryStorage(_ storage: CSInMemoryStore, completion: @escaping (CSSetupResult) -> Void) { - - self.defaultStack.addInMemoryStorage(storage, completion: completion) - } - - /** - Asynchronously adds a `CSSQLiteStore` to the `defaultStack`. Migrations are also initiated by default. - ``` - NSError *error; - NSProgress *migrationProgress = [dataStack - addInMemoryStorage:[[CSSQLiteStore alloc] - initWithFileName:@"core_data.sqlite" - configuration:@"Config1"] - completion:^(CSSetupResult *result) { - if (result.isSuccess) { - // ... - } - } - error: &error]; - ``` - - parameter storage: the `CSSQLiteStore` instance - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `CSSetupResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a failure `CSSetupResult` result if an error occurs asynchronously. Note that the `CSLocalStorage` associated to the `-[CSSetupResult storage]` may not always be the same instance as the parameter argument if a previous `CSLocalStorage` was already added at the same URL and with the same configuration. - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: an `NSProgress` instance if a migration has started. `nil` if no migrations are required or if `error` was set. - */ - public static func addSQLiteStorage(_ storage: CSSQLiteStore, completion: @escaping (CSSetupResult) -> Void, error: NSErrorPointer) -> Progress? { - - return self.defaultStack.addSQLiteStorage(storage, completion: completion, error: error) - } - - /** - Migrates a `CSSQLiteStore` to match the `defaultStack`'s managed object model version. This method does NOT add the migrated store to the data stack. - - - parameter storage: the `CSSQLiteStore` instance - - parameter completion: the closure to be executed on the main queue when the migration completes, either due to success or failure. The closure's `CSMigrationResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a failure `CSSetupResult` result if an error occurs asynchronously. - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: an `NSProgress` instance if a migration has started. `nil` if no migrations are required or if `error` was set. - */ - @objc - public static func upgradeStorageIfNeeded(_ storage: CSSQLiteStore, completion: @escaping (CSMigrationResult) -> Void, error: NSErrorPointer) -> Progress? { - - return self.defaultStack.upgradeStorageIfNeeded(storage, completion: completion, error: error) - } - - /** - Checks the migration steps required for the `CSSQLiteStore` to match the `defaultStack`'s managed object model version. - - - parameter storage: the `CSSQLiteStore` instance - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: a `CSMigrationType` array indicating the migration steps required for the store, or an empty array if the file does not exist yet. Otherwise, `nil` is returned and the `error` argument is set if either inspection of the store failed, or if no mapping model was found/inferred. - */ - @objc - public static func requiredMigrationsForSQLiteStore(_ storage: CSSQLiteStore, error: NSErrorPointer) -> [CSMigrationType]? { - - return self.defaultStack.requiredMigrationsForSQLiteStore(storage, error: error) - } -} diff --git a/Sources/CSCoreStore+Observing.swift b/Sources/CSCoreStore+Observing.swift deleted file mode 100644 index c4e5b79..0000000 --- a/Sources/CSCoreStore+Observing.swift +++ /dev/null @@ -1,114 +0,0 @@ -// -// CSCoreStore+Observing.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CSCoreStore - -@available(*, deprecated, message: "Call methods directly from the CSDataStack instead") -@available(macOS 10.12, *) -extension CSCoreStore { - - /** - Using the `defaultStack`, creates an `CSObjectMonitor` for the specified `NSManagedObject`. Multiple `CSObjectObserver`s may then register themselves to be notified when changes are made to the `NSManagedObject`. - - - parameter object: the `NSManagedObject` to observe changes from - - returns: a `CSObjectMonitor` that monitors changes to `object` - */ - @objc - public static func monitorObject(_ object: NSManagedObject) -> CSObjectMonitor { - - return self.defaultStack.monitorObject(object) - } - - /** - Using the `defaultStack`, creates a `CSListMonitor` for a list of `NSManagedObject`s that satisfy the specified fetch clauses. Multiple `CSListObserver`s may then register themselves to be notified when changes are made to the list. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter fetchClauses: a series of `CSFetchClause` instances for fetching the object list. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: a `CSListMonitor` instance that monitors changes to the list - */ - @objc - public static func monitorListFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> CSListMonitor { - - return self.defaultStack.monitorListFrom(from, fetchClauses: fetchClauses) - } - - /** - Using the `defaultStack`, asynchronously creates a `CSListMonitor` for a list of `NSManagedObject`s that satisfy the specified fetch clauses. Multiple `CSListObserver`s may then register themselves to be notified when changes are made to the list. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - - parameter createAsynchronously: the closure that receives the created `CSListMonitor` instance - - parameter from: a `CSFrom` clause indicating the entity type - - parameter fetchClauses: a series of `CSFetchClause` instances for fetching the object list. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - */ - @objc - public static func monitorListByCreatingAsynchronously(_ createAsynchronously: @escaping (CSListMonitor) -> Void, from: CSFrom, fetchClauses: [CSFetchClause]) { - - return self.defaultStack.monitorListByCreatingAsynchronously( - createAsynchronously, - from: from, - fetchClauses: fetchClauses - ) - } - - /** - Using the `defaultStack`, creates a `CSListMonitor` for a sectioned list of `NSManagedObject`s that satisfy the specified fetch clauses. Multiple `CSListObserver`s may then register themselves to be notified when changes are made to the list. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter sectionBy: a `CSSectionBy` clause indicating the keyPath for the attribute to use when sorting the list into sections. - - parameter fetchClauses: a series of `CSFetchClause` instances for fetching the object list. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: a `CSListMonitor` instance that monitors changes to the list - */ - @objc - public static func monitorSectionedListFrom(_ from: CSFrom, sectionBy: CSSectionBy, fetchClauses: [CSFetchClause]) -> CSListMonitor { - - return self.defaultStack.monitorSectionedListFrom( - from, - sectionBy: sectionBy, - fetchClauses: fetchClauses - ) - } - - /** - Using the `defaultStack`, asynchronously creates a `CSListMonitor` for a sectioned list of `NSManagedObject`s that satisfy the specified fetch clauses. Multiple `CSListObserver`s may then register themselves to be notified when changes are made to the list. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - - parameter createAsynchronously: the closure that receives the created `CSListMonitor` instance - - parameter from: a `CSFrom` clause indicating the entity type - - parameter sectionBy: a `CSSectionBy` clause indicating the keyPath for the attribute to use when sorting the list into sections. - - parameter fetchClauses: a series of `CSFetchClause` instances for fetching the object list. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - */ - @objc - public static func monitorSectionedListByCreatingAsynchronously(_ createAsynchronously: @escaping (CSListMonitor) -> Void, from: CSFrom, sectionBy: CSSectionBy, fetchClauses: [CSFetchClause]) { - - self.defaultStack.monitorSectionedListByCreatingAsynchronously( - createAsynchronously, - from: from, - sectionBy: sectionBy, - fetchClauses: fetchClauses - ) - } -} diff --git a/Sources/CSCoreStore+Querying.swift b/Sources/CSCoreStore+Querying.swift deleted file mode 100644 index d241222..0000000 --- a/Sources/CSCoreStore+Querying.swift +++ /dev/null @@ -1,179 +0,0 @@ -// -// CSCoreStore+Querying.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CSCoreStore - -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -extension CSCoreStore { - - /** - Using the `defaultStack`, fetches the `NSManagedObject` instance in the transaction's context from a reference created from a transaction or from a different managed object context. - - - parameter object: a reference to the object created/fetched outside the transaction - - returns: the `NSManagedObject` instance if the object exists in the transaction, or `nil` if not found. - */ - @objc - public static func fetchExistingObject(_ object: NSManagedObject) -> Any? { - - return self.defaultStack.fetchExistingObject(object) - } - - /** - Using the `defaultStack`, fetches the `NSManagedObject` instance in the transaction's context from an `NSManagedObjectID`. - - - parameter objectID: the `NSManagedObjectID` for the object - - returns: the `NSManagedObject` instance if the object exists in the transaction, or `nil` if not found. - */ - @objc - public static func fetchExistingObjectWithID(_ objectID: NSManagedObjectID) -> Any? { - - return self.defaultStack.fetchExistingObjectWithID(objectID) - } - - /** - Using the `defaultStack`, fetches the `NSManagedObject` instances in the transaction's context from references created from a transaction or from a different managed object context. - - - parameter objects: an array of `NSManagedObject`s created/fetched outside the transaction - - returns: the `NSManagedObject` array for objects that exists in the transaction - */ - @objc - public static func fetchExistingObjects(_ objects: [NSManagedObject]) -> [Any] { - - return self.defaultStack.fetchExistingObjects(objects) - } - - /** - Using the `defaultStack`, fetches the `NSManagedObject` instances in the transaction's context from a list of `NSManagedObjectID`. - - - parameter objectIDs: the `NSManagedObjectID` array for the objects - - returns: the `NSManagedObject` array for objects that exists in the transaction - */ - @objc - public static func fetchExistingObjectsWithIDs(_ objectIDs: [NSManagedObjectID]) -> [Any] { - - return self.defaultStack.fetchExistingObjectsWithIDs(objectIDs) - } - - /** - Using the `defaultStack`, fetches the first `NSManagedObject` instance that satisfies the specified `CSFetchClause`s. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `CSFetchClause` instances for the fetch request. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: the first `NSManagedObject` instance that satisfies the specified `CSFetchClause`s - */ - @objc - public static func fetchOneFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> Any? { - - return self.defaultStack.fetchOneFrom(from, fetchClauses: fetchClauses) - } - - /** - Using the `defaultStack`, fetches all `NSManagedObject` instances that satisfy the specified `CSFetchClause`s. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter fetchClauses: a series of `CSFetchClause` instances for the fetch request. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: all `NSManagedObject` instances that satisfy the specified `CSFetchClause`s - */ - @objc - public static func fetchAllFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> [Any]? { - - return self.defaultStack.fetchAllFrom(from, fetchClauses: fetchClauses) - } - - /** - Using the `defaultStack`, fetches the number of `NSManagedObject`s that satisfy the specified `CSFetchClause`s. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter fetchClauses: a series of `CSFetchClause` instances for the fetch request. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: the number `NSManagedObject`s that satisfy the specified `CSFetchClause`s - */ - @objc - public static func fetchCountFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSNumber? { - - return self.defaultStack.fetchCountFrom(from, fetchClauses: fetchClauses) - } - - /** - Using the `defaultStack`, fetches the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `CSFetchClause`s. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter fetchClauses: a series of `CSFetchClause` instances for the fetch request. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `CSFetchClause`s - */ - @objc - public static func fetchObjectIDFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSManagedObjectID? { - - return self.defaultStack.fetchObjectIDFrom(from, fetchClauses: fetchClauses) - } - - /** - Using the `defaultStack`, fetches the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `CSFetchClause`s. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `CSWhere`, `CSOrderBy`, and `CSTweak` clauses. - - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `CSFetchClause`s - */ - @objc - public static func fetchObjectIDsFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> [NSManagedObjectID]? { - - return self.defaultStack.fetchObjectIDsFrom(from, fetchClauses: fetchClauses) - } - - /** - Using the `defaultStack`, queries aggregate values as specified by the `CSQueryClause`s. Requires at least a `CSSelect` clause, and optional `CSWhere`, `CSOrderBy`, `CSGroupBy`, and `CSTweak` clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter selectClause: a `CSSelect` clause indicating the properties to fetch, and with the generic type indicating the return type. - - parameter queryClauses: a series of `CSQueryClause` instances for the query request. Accepts `CSWhere`, `CSOrderBy`, `CSGroupBy`, and `CSTweak` clauses. - - returns: the result of the the query. The type of the return value is specified by the generic type of the `CSSelect` parameter. - */ - @objc - public static func queryValueFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> Any? { - - return self.defaultStack.queryValueFrom(from, selectClause: selectClause, queryClauses: queryClauses) - } - - /** - Using the `defaultStack`, queries a dictionary of attribute values as specified by the `CSQueryClause`s. Requires at least a `CSSelect` clause, and optional `CSWhere`, `CSOrderBy`, `CSGroupBy`, and `CSTweak` clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - - - parameter from: a `CSFrom` clause indicating the entity type - - parameter selectClause: a `CSSelect` clause indicating the properties to fetch, and with the generic type indicating the return type. - - parameter queryClauses: a series of `CSQueryClause` instances for the query request. Accepts `CSWhere`, `CSOrderBy`, `CSGroupBy`, and `CSTweak` clauses. - - returns: the result of the the query. The type of the return value is specified by the generic type of the `CSSelect` parameter. - */ - @objc - public static func queryAttributesFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> [[String: Any]]? { - - return self.defaultStack.queryAttributesFrom(from, selectClause: selectClause, queryClauses: queryClauses) - } -} diff --git a/Sources/CSCoreStore+Setup.swift b/Sources/CSCoreStore+Setup.swift deleted file mode 100644 index 6665205..0000000 --- a/Sources/CSCoreStore+Setup.swift +++ /dev/null @@ -1,129 +0,0 @@ -// -// CSCoreStore+Setup.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CSCoreStore - -@available(*, deprecated, message: "Call methods directly from the CSDataStack instead") -extension CSCoreStore { - - /** - Returns the `defaultStack`'s model version. The version string is the same as the name of the version-specific .xcdatamodeld file. - */ - @objc - public static var modelVersion: String { - - return self.defaultStack.modelVersion - } - - /** - Returns the entity name-to-class type mapping from the `defaultStack`'s model. - */ - @objc - public static func entityTypesByNameForType(_ type: NSManagedObject.Type) -> [EntityName: NSManagedObject.Type] { - - return self.defaultStack.bridgeToSwift.entityTypesByName(for: type) - } - - /** - Returns the `NSEntityDescription` for the specified `NSManagedObject` subclass from `defaultStack`'s model. - */ - @objc - public static func entityDescriptionForClass(_ type: NSManagedObject.Type) -> NSEntityDescription? { - - return self.defaultStack.bridgeToSwift.entityDescription(for: type) - } - - /** - Creates an `CSInMemoryStore` with default parameters and adds it to the `defaultStack`. This method blocks until completion. - ``` - CSSQLiteStore *storage = [CSCoreStore addInMemoryStorageAndWaitAndReturnError:&error]; - ``` - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: the `CSInMemoryStore` added to the `defaultStack` - */ - @objc - @discardableResult - public static func addInMemoryStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSInMemoryStore? { - - return self.defaultStack.addInMemoryStorageAndWaitAndReturnError(error) - } - - /** - Creates an `CSSQLiteStore` with default parameters and adds it to the `defaultStack`. This method blocks until completion. - ``` - CSSQLiteStore *storage = [CSCoreStore addSQLiteStorageAndWaitAndReturnError:&error]; - ``` - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: the `CSSQLiteStore` added to the `defaultStack` - */ - @objc - @discardableResult - public static func addSQLiteStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSSQLiteStore? { - - return self.defaultStack.addSQLiteStorageAndWaitAndReturnError(error) - } - - /** - Adds a `CSInMemoryStore` to the `defaultStack` and blocks until completion. - ``` - NSError *error; - CSInMemoryStore *storage = [CSCoreStore - addStorageAndWait: [[CSInMemoryStore alloc] initWithConfiguration: @"Config1"] - error: &error]; - ``` - - parameter storage: the `CSInMemoryStore` - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: the `CSInMemoryStore` added to the `defaultStack` - */ - @objc - @discardableResult - public static func addInMemoryStorageAndWait(_ storage: CSInMemoryStore, error: NSErrorPointer) -> CSInMemoryStore? { - - return self.defaultStack.addInMemoryStorageAndWait(storage, error: error) - } - - /** - Adds a `CSSQLiteStore` to the `defaultStack` and blocks until completion. - ``` - NSError *error; - CSSQLiteStore *storage = [CSCoreStore - addStorageAndWait: [[CSSQLiteStore alloc] initWithConfiguration: @"Config1"] - error: &error]; - ``` - - parameter storage: the `CSSQLiteStore` - - parameter error: the `NSError` pointer that indicates the reason in case of an failure - - returns: the `CSSQLiteStore` added to the `defaultStack` - */ - @objc - @discardableResult - public static func addSQLiteStorageAndWait(_ storage: CSSQLiteStore, error: NSErrorPointer) -> CSSQLiteStore? { - - return self.defaultStack.addSQLiteStorageAndWait(storage, error: error) - } -} diff --git a/Sources/CSCoreStore+Transaction.swift b/Sources/CSCoreStore+Transaction.swift deleted file mode 100644 index 53a4f9f..0000000 --- a/Sources/CSCoreStore+Transaction.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// CSCoreStore+Transaction.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation - - -// MARK: - CSCoreStore - -@available(*, deprecated, message: "Call methods directly from the CSDataStack instead") -extension CSCoreStore { - - /** - Using the `defaultStack`, begins a transaction asynchronously where `NSManagedObject` creates, updates, and deletes can be made. - - - parameter closure: the block where creates, updates, and deletes can be made to the transaction. Transaction blocks are executed serially in a background queue, and all changes are made from a concurrent `NSManagedObjectContext`. - */ - @objc - public static func beginAsynchronous(_ closure: @escaping (_ transaction: CSAsynchronousDataTransaction) -> Void) { - - self.defaultStack.beginAsynchronous(closure) - } - - /** - Using the `defaultStack`, begins a transaction synchronously where `NSManagedObject` creates, updates, and deletes can be made. - - - parameter closure: the block where creates, updates, and deletes can be made to the transaction. Transaction blocks are executed serially in a background queue, and all changes are made from a concurrent `NSManagedObjectContext`. - - returns: `YES` if the commit succeeded, `NO` if the commit failed. If `NO`, the `error` argument will hold error information. - */ - @objc - public static func beginSynchronous(_ closure: @escaping (_ transaction: CSSynchronousDataTransaction) -> Void, error: NSErrorPointer) -> Bool { - - return self.defaultStack.beginSynchronous(closure, error: error) - } - - /** - Using the `defaultStack`, begins a child transaction where `NSManagedObject` creates, updates, and deletes can be made. This is useful for making temporary changes, such as partially filled forms. - - To support "undo" methods such as `-undo`, `-redo`, and `-rollback`, use the `-beginSafeWithSupportsUndo:` method passing `YES` to the argument. Without "undo" support, calling those methods will raise an exception. - - returns: a `CSUnsafeDataTransaction` instance where creates, updates, and deletes can be made. - */ - @objc - public static func beginUnsafe() -> CSUnsafeDataTransaction { - - return bridge { - - self.defaultStack.bridgeToSwift.beginUnsafe() - } - } - - /** - Using the `defaultStack`, begins a child transaction where `NSManagedObject` creates, updates, and deletes can be made. This is useful for making temporary changes, such as partially filled forms. - - - prameter supportsUndo: `-undo`, `-redo`, and `-rollback` methods are only available when this parameter is `YES`, otherwise those method will raise an exception. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited. - - returns: a `CSUnsafeDataTransaction` instance where creates, updates, and deletes can be made. - */ - @objc - public static func beginUnsafeWithSupportsUndo(_ supportsUndo: Bool) -> CSUnsafeDataTransaction { - - return bridge { - - self.defaultStack.bridgeToSwift.beginUnsafe(supportsUndo: supportsUndo) - } - } - - /** - Refreshes all registered objects `NSManagedObject`s in the `defaultStack`. - */ - @objc - public static func refreshAndMergeAllObjects() { - - self.defaultStack.refreshAndMergeAllObjects() - } -} diff --git a/Sources/CoreStore+Migration.swift b/Sources/CoreStore+Migration.swift deleted file mode 100644 index dd31d5d..0000000 --- a/Sources/CoreStore+Migration.swift +++ /dev/null @@ -1,102 +0,0 @@ -// -// CoreStore+Migration.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CoreStore - -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -extension CoreStore { - - /** - Asynchronously adds a `StorageInterface` to the `CoreStoreDefaults.dataStack`. Migrations are also initiated by default. - ``` - dataStack.addStorage( - InMemoryStore(configuration: "Config1"), - completion: { result in - switch result { - case .success(let storage): // ... - case .failure(let error): // ... - } - } - ) - ``` - - parameter storage: the storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. - */ - public static func addStorage(_ storage: T, completion: @escaping (SetupResult) -> Void) { - - CoreStoreDefaults.dataStack.addStorage(storage, completion: completion) - } - - /** - Asynchronously adds a `LocalStorage` to the `CoreStoreDefaults.dataStack`. Migrations are also initiated by default. - ``` - let migrationProgress = dataStack.addStorage( - SQLiteStore(fileName: "core_data.sqlite", configuration: "Config1"), - completion: { result in - switch result { - case .success(let storage): // ... - case .failure(let error): // ... - } - } - ) - ``` - - parameter storage: the local storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. - - returns: a `Progress` instance if a migration has started, or `nil` if either no migrations are required or if a failure occured. - */ - public static func addStorage(_ storage: T, completion: @escaping (SetupResult) -> Void) -> Progress? { - - return CoreStoreDefaults.dataStack.addStorage(storage, completion: completion) - } - - /** - Migrates a local storage to match the `CoreStoreDefaults.dataStack`'s managed object model version. This method does NOT add the migrated store to the data stack. - - - parameter storage: the local storage - - parameter completion: the closure to be executed on the main queue when the migration completes, either due to success or failure. The closure's `MigrationResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.failure` result if an error occurs asynchronously. - - throws: a `CoreStoreError` value indicating the failure - - returns: a `Progress` instance if a migration has started, or `nil` is no migrations are required - */ - public static func upgradeStorageIfNeeded(_ storage: T, completion: @escaping (MigrationResult) -> Void) throws -> Progress? { - - return try CoreStoreDefaults.dataStack.upgradeStorageIfNeeded(storage, completion: completion) - } - - /** - Checks the migration steps required for the storage to match the `CoreStoreDefaults.dataStack`'s managed object model version. - - - parameter storage: the local storage - - throws: a `CoreStoreError` value indicating the failure - - returns: a `MigrationType` array indicating the migration steps required for the store, or an empty array if the file does not exist yet. Otherwise, an error is thrown if either inspection of the store failed, or if no mapping model was found/inferred. - */ - public static func requiredMigrationsForStorage(_ storage: T) throws -> [MigrationType] { - - return try CoreStoreDefaults.dataStack.requiredMigrationsForStorage(storage) - } -} diff --git a/Sources/CoreStore+Observing.swift b/Sources/CoreStore+Observing.swift deleted file mode 100644 index 0e0ca9c..0000000 --- a/Sources/CoreStore+Observing.swift +++ /dev/null @@ -1,236 +0,0 @@ -// -// CoreStore+Observing.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CoreStore - -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -@available(macOS 10.12, *) -extension CoreStore { - - /** - Using the `CoreStoreDefaults.dataStack`, creates an `ObjectMonitor` for the specified `DynamicObject`. Multiple `ObjectObserver`s may then register themselves to be notified when changes are made to the `DynamicObject`. - - - parameter object: the `DynamicObject` to observe changes from - - returns: an `ObjectMonitor` that monitors changes to `object` - */ - public static func monitorObject(_ object: O) -> ObjectMonitor { - - return CoreStoreDefaults.dataStack.monitorObject(object) - } - - /** - Using the `CoreStoreDefaults.dataStack`, creates a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: a `ListMonitor` instance that monitors changes to the list - */ - public static func monitorList(_ from: From, _ fetchClauses: FetchClause...) -> ListMonitor { - - return CoreStoreDefaults.dataStack.monitorList(from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, creates a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: a `ListMonitor` instance that monitors changes to the list - */ - public static func monitorList(_ from: From, _ fetchClauses: [FetchClause]) -> ListMonitor { - - return CoreStoreDefaults.dataStack.monitorList(from, fetchClauses) - } - - /** - Creates a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified `FetchChainableBuilderType` built from a chain of clauses. - ``` - let monitor = dataStack.monitorList( - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - - returns: a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified `FetchChainableBuilderType` - */ - public static func monitorList(_ clauseChain: B) -> ListMonitor { - - return CoreStoreDefaults.dataStack.monitorList(clauseChain.from, clauseChain.fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, asynchronously creates a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - - parameter createAsynchronously: the closure that receives the created `ListMonitor` instance - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - */ - public static func monitorList(createAsynchronously: @escaping (ListMonitor) -> Void, _ from: From, _ fetchClauses: FetchClause...) { - - CoreStoreDefaults.dataStack.monitorList(createAsynchronously: createAsynchronously, from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, asynchronously creates a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - - parameter createAsynchronously: the closure that receives the created `ListMonitor` instance - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - */ - public static func monitorList(createAsynchronously: @escaping (ListMonitor) -> Void, _ from: From, _ fetchClauses: [FetchClause]) { - - CoreStoreDefaults.dataStack.monitorList(createAsynchronously: createAsynchronously, from, fetchClauses) - } - - /** - Asynchronously creates a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified `FetchChainableBuilderType` built from a chain of clauses. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - ``` - dataStack.monitorList( - createAsynchronously: { (monitor) in - self.monitor = monitor - }, - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter createAsynchronously: the closure that receives the created `ListMonitor` instance - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - */ - public static func monitorList(createAsynchronously: @escaping (ListMonitor) -> Void, _ clauseChain: B) { - - CoreStoreDefaults.dataStack.monitorList( - createAsynchronously: createAsynchronously, - clauseChain.from, - clauseChain.fetchClauses - ) - } - - /** - Using the `CoreStoreDefaults.dataStack`, creates a `ListMonitor` for a sectioned list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. - - - parameter from: a `From` clause indicating the entity type - - parameter sectionBy: a `SectionBy` clause indicating the keyPath for the attribute to use when sorting the list into sections. - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: a `ListMonitor` instance that monitors changes to the list - */ - public static func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: FetchClause...) -> ListMonitor { - - return CoreStoreDefaults.dataStack.monitorSectionedList(from, sectionBy, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, creates a `ListMonitor` for a sectioned list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. - - - parameter from: a `From` clause indicating the entity type - - parameter sectionBy: a `SectionBy` clause indicating the keyPath for the attribute to use when sorting the list into sections. - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: a `ListMonitor` instance that monitors changes to the list - */ - public static func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: [FetchClause]) -> ListMonitor { - - return CoreStoreDefaults.dataStack.monitorSectionedList(from, sectionBy, fetchClauses) - } - - /** - Creates a `ListMonitor` for a sectioned list of `DynamicObject`s that satisfy the specified `SectionMonitorBuilderType` built from a chain of clauses. - ``` - let monitor = dataStack.monitorSectionedList( - From() - .sectionBy(\.age, { "\($0!) years old" }) - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `SectionMonitorBuilderType` built from a chain of clauses - - returns: a `ListMonitor` for a list of `DynamicObject`s that satisfy the specified `SectionMonitorBuilderType` - */ - public static func monitorSectionedList(_ clauseChain: B) -> ListMonitor { - - return CoreStoreDefaults.dataStack.monitorSectionedList( - clauseChain.from, - clauseChain.sectionBy, - clauseChain.fetchClauses - ) - } - - /** - Using the `CoreStoreDefaults.dataStack`, asynchronously creates a `ListMonitor` for a sectioned list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - - parameter createAsynchronously: the closure that receives the created `ListMonitor` instance - - parameter from: a `From` clause indicating the entity type - - parameter sectionBy: a `SectionBy` clause indicating the keyPath for the attribute to use when sorting the list into sections. - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - */ - public static func monitorSectionedList(createAsynchronously: @escaping (ListMonitor) -> Void, _ from: From, _ sectionBy: SectionBy, _ fetchClauses: FetchClause...) { - - CoreStoreDefaults.dataStack.monitorSectionedList(createAsynchronously: createAsynchronously, from, sectionBy, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, asynchronously creates a `ListMonitor` for a sectioned list of `DynamicObject`s that satisfy the specified fetch clauses. Multiple `ListObserver`s may then register themselves to be notified when changes are made to the list. Since `NSFetchedResultsController` greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed. - - - parameter createAsynchronously: the closure that receives the created `ListMonitor` instance - - parameter from: a `From` clause indicating the entity type - - parameter sectionBy: a `SectionBy` clause indicating the keyPath for the attribute to use when sorting the list into sections. - - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - */ - public static func monitorSectionedList(createAsynchronously: @escaping (ListMonitor) -> Void, _ from: From, _ sectionBy: SectionBy, _ fetchClauses: [FetchClause]) { - - CoreStoreDefaults.dataStack.monitorSectionedList(createAsynchronously: createAsynchronously, from, sectionBy, fetchClauses) - } - - /** - Asynchronously creates a `ListMonitor` for a sectioned list of `DynamicObject`s that satisfy the specified `SectionMonitorBuilderType` built from a chain of clauses. - ``` - dataStack.monitorSectionedList( - createAsynchronously: { (monitor) in - self.monitor = monitor - }, - From() - .sectionBy(\.age, { "\($0!) years old" }) - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter createAsynchronously: the closure that receives the created `ListMonitor` instance - - parameter clauseChain: a `SectionMonitorBuilderType` built from a chain of clauses - */ - public static func monitorSectionedList(createAsynchronously: @escaping (ListMonitor) -> Void, _ clauseChain: B) { - - CoreStoreDefaults.dataStack.monitorSectionedList( - createAsynchronously: createAsynchronously, - clauseChain.from, - clauseChain.sectionBy, - clauseChain.fetchClauses - ) - } -} diff --git a/Sources/CoreStore+Querying.swift b/Sources/CoreStore+Querying.swift deleted file mode 100644 index bbb098a..0000000 --- a/Sources/CoreStore+Querying.swift +++ /dev/null @@ -1,411 +0,0 @@ -// -// CoreStore+Querying.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CoreStore - -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -extension CoreStore { - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `DynamicObject` instance in the `DataStack`'s context from a reference created from a transaction or from a different managed object context. - - - parameter object: a reference to the object created/fetched outside the `DataStack` - - returns: the `DynamicObject` instance if the object exists in the `DataStack`, or `nil` if not found. - */ - public static func fetchExisting(_ object: O) -> O? { - - return CoreStoreDefaults.dataStack.fetchExisting(object) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `DynamicObject` instance in the `DataStack`'s context from an `NSManagedObjectID`. - - - parameter objectID: the `NSManagedObjectID` for the object - - returns: the `DynamicObject` instance if the object exists in the `DataStack`, or `nil` if not found. - */ - public static func fetchExisting(_ objectID: NSManagedObjectID) -> O? { - - return CoreStoreDefaults.dataStack.fetchExisting(objectID) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `DynamicObject` instances in the `DataStack`'s context from references created from a transaction or from a different managed object context. - - - parameter objects: an array of `DynamicObject`s created/fetched outside the `DataStack` - - returns: the `DynamicObject` array for objects that exists in the `DataStack` - */ - public static func fetchExisting(_ objects: S) -> [O] where S.Iterator.Element == O { - - return CoreStoreDefaults.dataStack.fetchExisting(objects) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `DynamicObject` instances in the `DataStack`'s context from a list of `NSManagedObjectID`. - - - parameter objectIDs: the `NSManagedObjectID` array for the objects - - returns: the `DynamicObject` array for objects that exists in the `DataStack` - */ - public static func fetchExisting(_ objectIDs: S) -> [O] where S.Iterator.Element == NSManagedObjectID { - - return CoreStoreDefaults.dataStack.fetchExisting(objectIDs) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the first `DynamicObject` instance that satisfies the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the first `DynamicObject` instance that satisfies the specified `FetchClause`s, or `nil` if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchOne(_ from: From, _ fetchClauses: FetchClause...) throws -> O? { - - return try CoreStoreDefaults.dataStack.fetchOne(from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the first `DynamicObject` instance that satisfies the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the first `DynamicObject` instance that satisfies the specified `FetchClause`s, or `nil` if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchOne(_ from: From, _ fetchClauses: [FetchClause]) throws -> O? { - - return try CoreStoreDefaults.dataStack.fetchOne(from, fetchClauses) - } - - /** - Fetches the first `DynamicObject` instance that satisfies the specified `FetchChainableBuilderType` built from a chain of clauses. - ``` - let youngestTeen = dataStack.fetchOne( - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - - returns: the first `DynamicObject` instance that satisfies the specified `FetchChainableBuilderType`, or `nil` if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchOne(_ clauseChain: B) throws -> B.ObjectType? { - - return try CoreStoreDefaults.dataStack.fetchOne(clauseChain) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches all `DynamicObject` instances that satisfy the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: all `DynamicObject` instances that satisfy the specified `FetchClause`s, or an empty array if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchAll(_ from: From, _ fetchClauses: FetchClause...) throws -> [O] { - - return try CoreStoreDefaults.dataStack.fetchAll(from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches all `DynamicObject` instances that satisfy the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: all `DynamicObject` instances that satisfy the specified `FetchClause`s, or an empty array if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchAll(_ from: From, _ fetchClauses: [FetchClause]) throws -> [O] { - - return try CoreStoreDefaults.dataStack.fetchAll(from, fetchClauses) - } - - /** - Fetches all `DynamicObject` instances that satisfy the specified `FetchChainableBuilderType` built from a chain of clauses. - ``` - let people = dataStack.fetchAll( - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - - returns: all `DynamicObject` instances that satisfy the specified `FetchChainableBuilderType`, or an empty array if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchAll(_ clauseChain: B) throws -> [B.ObjectType] { - - return try CoreStoreDefaults.dataStack.fetchAll(clauseChain) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the number of `DynamicObject`s that satisfy the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the number of `DynamicObject`s that satisfy the specified `FetchClause`s - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchCount(_ from: From, _ fetchClauses: FetchClause...) throws -> Int { - - return try CoreStoreDefaults.dataStack.fetchCount(from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the number of `DynamicObject`s that satisfy the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the number of `DynamicObject`s that satisfy the specified `FetchClause`s - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchCount(_ from: From, _ fetchClauses: [FetchClause]) throws -> Int { - - return try CoreStoreDefaults.dataStack.fetchCount(from, fetchClauses) - } - - /** - Fetches the number of `DynamicObject`s that satisfy the specified `FetchChainableBuilderType` built from a chain of clauses. - ``` - let numberOfAdults = dataStack.fetchCount( - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - - returns: the number of `DynamicObject`s that satisfy the specified `FetchChainableBuilderType` - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchCount(_ clauseChain: B) throws -> Int { - - return try CoreStoreDefaults.dataStack.fetchCount(clauseChain) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `NSManagedObjectID` for the first `DynamicObject` that satisfies the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the `NSManagedObjectID` for the first `DynamicObject` that satisfies the specified `FetchClause`s, or `nil` if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchObjectID(_ from: From, _ fetchClauses: FetchClause...) throws -> NSManagedObjectID? { - - return try CoreStoreDefaults.dataStack.fetchObjectID(from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `NSManagedObjectID` for the first `DynamicObject` that satisfies the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the `NSManagedObjectID` for the first `DynamicObject` that satisfies the specified `FetchClause`s, or `nil` if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchObjectID(_ from: From, _ fetchClauses: [FetchClause]) throws -> NSManagedObjectID? { - - return try CoreStoreDefaults.dataStack.fetchObjectID(from, fetchClauses) - } - - /** - Fetches the `NSManagedObjectID` for the first `DynamicObject` that satisfies the specified `FetchChainableBuilderType` built from a chain of clauses. - ``` - let youngestTeenID = dataStack.fetchObjectID( - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - - returns: the `NSManagedObjectID` for the first `DynamicObject` that satisfies the specified `FetchChainableBuilderType`, or `nil` if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchObjectID(_ clauseChain: B) throws -> NSManagedObjectID? { - - return try CoreStoreDefaults.dataStack.fetchObjectID(clauseChain) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `NSManagedObjectID` for all `DynamicObject`s that satisfy the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the `NSManagedObjectID` for all `DynamicObject`s that satisfy the specified `FetchClause`s, or an empty array if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchObjectIDs(_ from: From, _ fetchClauses: FetchClause...) throws -> [NSManagedObjectID] { - - return try CoreStoreDefaults.dataStack.fetchObjectIDs(from, fetchClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, fetches the `NSManagedObjectID` for all `DynamicObject`s that satisfy the specified `FetchClause`s. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - - parameter from: a `From` clause indicating the entity type - - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - - returns: the `NSManagedObjectID` for all `DynamicObject`s that satisfy the specified `FetchClause`s, or an empty array if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchObjectIDs(_ from: From, _ fetchClauses: [FetchClause]) throws -> [NSManagedObjectID] { - - return try CoreStoreDefaults.dataStack.fetchObjectIDs(from, fetchClauses) - } - - /** - Fetches the `NSManagedObjectID` for all `DynamicObject`s that satisfy the specified `FetchChainableBuilderType` built from a chain of clauses. - ``` - let idsOfAdults = transaction.fetchObjectIDs( - From() - .where(\.age > 18) - .orderBy(.ascending(\.age)) - ) - ``` - - parameter clauseChain: a `FetchChainableBuilderType` built from a chain of clauses - - returns: the `NSManagedObjectID` for all `DynamicObject`s that satisfy the specified `FetchChainableBuilderType`, or an empty array if no match was found - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func fetchObjectIDs(_ clauseChain: B) throws -> [NSManagedObjectID] { - - return try CoreStoreDefaults.dataStack.fetchObjectIDs(clauseChain) - } - - /** - Using the `CoreStoreDefaults.dataStack`, queries aggregate values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - - - parameter from: a `From` clause indicating the entity type - - parameter selectClause: a `Select` clause indicating the properties to fetch, and with the generic type indicating the return type. - - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - returns: the result of the the query, or `nil` if no match was found. The type of the return value is specified by the generic type of the `Select` parameter. - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) throws -> U? { - - return try CoreStoreDefaults.dataStack.queryValue(from, selectClause, queryClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, queries aggregate values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - - - parameter from: a `From` clause indicating the entity type - - parameter selectClause: a `Select` clause indicating the properties to fetch, and with the generic type indicating the return type. - - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - returns: the result of the the query, or `nil` if no match was found. The type of the return value is specified by the generic type of the `Select` parameter. - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) throws -> U? { - - return try CoreStoreDefaults.dataStack.queryValue(from, selectClause, queryClauses) - } - - /** - Queries a property value or aggregate as specified by the `QueryChainableBuilderType` built from a chain of clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - ``` - let averageAdultAge = dataStack.queryValue( - From() - .select(Int.self, .average(\.age)) - .where(\.age > 18) - ) - ``` - - parameter clauseChain: a `QueryChainableBuilderType` indicating the property/aggregate to fetch and the series of queries for the request. - - returns: the result of the the query as specified by the `QueryChainableBuilderType`, or `nil` if no match was found. - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func queryValue(_ clauseChain: B) throws -> B.ResultType? where B.ResultType: QueryableAttributeType { - - return try CoreStoreDefaults.dataStack.queryValue(clauseChain) - } - - /** - Using the `CoreStoreDefaults.dataStack`, queries a dictionary of attribute values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - - - parameter from: a `From` clause indicating the entity type - - parameter selectClause: a `Select` clause indicating the properties to fetch, and with the generic type indicating the return type. - - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) throws -> [[String: Any]] { - - return try CoreStoreDefaults.dataStack.queryAttributes(from, selectClause, queryClauses) - } - - /** - Using the `CoreStoreDefaults.dataStack`, queries a dictionary of attribute values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - - - parameter from: a `From` clause indicating the entity type - - parameter selectClause: a `Select` clause indicating the properties to fetch, and with the generic type indicating the return type. - - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) throws -> [[String: Any]] { - - return try CoreStoreDefaults.dataStack.queryAttributes(from, selectClause, queryClauses) - } - - /** - Queries a dictionary of attribute values or as specified by the `QueryChainableBuilderType` built from a chain of clauses. - - A "query" differs from a "fetch" in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result. - ``` - let results = dataStack.queryAttributes( - From() - .select( - NSDictionary.self, - .attribute(\.age, as: "age"), - .count(\.age, as: "numberOfPeople") - ) - .groupBy(\.age) - ) - for dictionary in results! { - let age = dictionary["age"] as! Int - let count = dictionary["numberOfPeople"] as! Int - print("There are \(count) people who are \(age) years old." - } - ``` - - parameter clauseChain: a `QueryChainableBuilderType` indicating the properties to fetch and the series of queries for the request. - - returns: the result of the the query as specified by the `QueryChainableBuilderType` - - throws: `CoreStoreError.persistentStoreNotFound` if the specified entity could not be found in any store's schema. - */ - public static func queryAttributes(_ clauseChain: B) throws -> [[String: Any]] where B.ResultType == NSDictionary { - - return try CoreStoreDefaults.dataStack.queryAttributes(clauseChain) - } -} diff --git a/Sources/CoreStore+Setup.swift b/Sources/CoreStore+Setup.swift deleted file mode 100644 index b55260f..0000000 --- a/Sources/CoreStore+Setup.swift +++ /dev/null @@ -1,117 +0,0 @@ -// -// CoreStore+Setup.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CoreStore - -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -extension CoreStore { - - /** - Returns the `CoreStoreDefaults.dataStack`'s model version. The version string is the same as the name of a version-specific .xcdatamodeld file or `CoreStoreSchema`. - */ - public static var modelVersion: String { - - return CoreStoreDefaults.dataStack.modelVersion - } - - /** - Returns the entity name-to-class type mapping from the `CoreStoreDefaults.dataStack`'s model. - */ - public static func entityTypesByName(for type: NSManagedObject.Type) -> [EntityName: NSManagedObject.Type] { - - return CoreStoreDefaults.dataStack.entityTypesByName(for: type) - } - - /** - Returns the entity name-to-class type mapping from the `CoreStoreDefaults.dataStack`'s model. - */ - public static func entityTypesByName(for type: CoreStoreObject.Type) -> [EntityName: CoreStoreObject.Type] { - - return CoreStoreDefaults.dataStack.entityTypesByName(for: type) - } - - /** - Returns the `NSEntityDescription` for the specified `NSManagedObject` subclass from `CoreStoreDefaults.dataStack`'s model. - */ - public static func entityDescription(for type: NSManagedObject.Type) -> NSEntityDescription? { - - return CoreStoreDefaults.dataStack.entityDescription(for: type) - } - - /** - Returns the `NSEntityDescription` for the specified `CoreStoreObject` subclass from `CoreStoreDefaults.dataStack`'s model. - */ - public static func entityDescription(for type: CoreStoreObject.Type) -> NSEntityDescription? { - - return CoreStoreDefaults.dataStack.entityDescription(for: type) - } - - /** - Creates an `SQLiteStore` with default parameters and adds it to the `CoreStoreDefaults.dataStack`. This method blocks until completion. - ``` - try CoreStore.addStorageAndWait() - ``` - - returns: the local SQLite storage added to the `CoreStoreDefaults.dataStack` - */ - @discardableResult - public static func addStorageAndWait() throws -> SQLiteStore { - - return try CoreStoreDefaults.dataStack.addStorageAndWait(SQLiteStore()) - } - - /** - Adds a `StorageInterface` to the `CoreStoreDefaults.dataStack` and blocks until completion. - ``` - try CoreStore.addStorageAndWait(InMemoryStore(configuration: "Config1")) - ``` - - parameter storage: the `StorageInterface` - - throws: a `CoreStoreError` value indicating the failure - - returns: the `StorageInterface` added to the `CoreStoreDefaults.dataStack` - */ - @discardableResult - public static func addStorageAndWait(_ storage: T) throws -> T { - - return try CoreStoreDefaults.dataStack.addStorageAndWait(storage) - } - - /** - Adds a `LocalStorage` to the `CoreStoreDefaults.dataStack` and blocks until completion. - ``` - try CoreStore.addStorageAndWait(SQLiteStore(configuration: "Config1")) - ``` - - parameter storage: the local storage - - throws: a `CoreStoreError` value indicating the failure - - returns: the local storage added to the `CoreStoreDefaults.dataStack`. Note that this may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. - */ - @discardableResult - public static func addStorageAndWait(_ storage: T) throws -> T { - - return try CoreStoreDefaults.dataStack.addStorageAndWait(storage) - } -} diff --git a/Sources/CoreStore+Transaction.swift b/Sources/CoreStore+Transaction.swift deleted file mode 100644 index c0a7052..0000000 --- a/Sources/CoreStore+Transaction.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// CoreStore+Transaction.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation - - -// MARK: - CoreStore - -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -extension CoreStore { - - /** - Using the `CoreStoreDefaults.dataStack`, performs a transaction asynchronously where `NSManagedObject` or `CoreStoreObject` creates, updates, and deletes can be made. The changes are commited automatically after the `task` closure returns. On success, the value returned from closure will be the wrapped as `.success(T)` in the `completion`'s `Result`. Any errors thrown from inside the `task` will be reported as `.failure(CoreStoreError)`. To cancel/rollback changes, call `try transaction.cancel()`, which throws a `CoreStoreError.userCancelled`. - - - parameter task: the asynchronous closure where creates, updates, and deletes can be made to the transaction. Transaction blocks are executed serially in a background queue, and all changes are made from a concurrent `NSManagedObjectContext`. - - parameter completion: the closure executed after the save completes. The `Result` argument of the closure will either wrap the return value of `task`, or any uncaught errors thrown from within `task`. Cancelled `task`s will be indicated by `.failure(error: CoreStoreError.userCancelled)`. Custom errors thrown by the user will be wrapped in `CoreStoreError.userError(error: Error)`. - */ - public static func perform(asynchronous task: @escaping (_ transaction: AsynchronousDataTransaction) throws -> T, completion: @escaping (AsynchronousDataTransaction.Result) -> Void) { - - CoreStoreDefaults.dataStack.perform(asynchronous: task, completion: completion) - } - - /** - Using the `CoreStoreDefaults.dataStack`, performs a transaction asynchronously where `NSManagedObject` or `CoreStoreObject` creates, updates, and deletes can be made. The changes are commited automatically after the `task` closure returns. On success, the value returned from closure will be the argument of the `success` closure. Any errors thrown from inside the `task` will be wrapped in a `CoreStoreError` and reported in the `failure` closure. To cancel/rollback changes, call `try transaction.cancel()`, which throws a `CoreStoreError.userCancelled`. - - - parameter task: the asynchronous closure where creates, updates, and deletes can be made to the transaction. Transaction blocks are executed serially in a background queue, and all changes are made from a concurrent `NSManagedObjectContext`. - - parameter success: the closure executed after the save succeeds. The `T` argument of the closure will be the value returned from `task`. - - parameter failure: the closure executed if the save fails or if any errors are thrown within `task`. Cancelled `task`s will be indicated by `CoreStoreError.userCancelled`. Custom errors thrown by the user will be wrapped in `CoreStoreError.userError(error: Error)`. - */ - public static func perform(asynchronous task: @escaping (_ transaction: AsynchronousDataTransaction) throws -> T, success: @escaping (T) -> Void, failure: @escaping (CoreStoreError) -> Void) { - - CoreStoreDefaults.dataStack.perform(asynchronous: task, success: success, failure: failure) - } - - /** - Using the `CoreStoreDefaults.dataStack`, performs a transaction synchronously where `NSManagedObject` or `CoreStoreObject` creates, updates, and deletes can be made. The changes are commited automatically after the `task` closure returns. On success, the value returned from closure will be the return value of `perform(synchronous:)`. Any errors thrown from inside the `task` will be thrown from `perform(synchronous:)`. To cancel/rollback changes, call `try transaction.cancel()`, which throws a `CoreStoreError.userCancelled`. - - - parameter task: the synchronous non-escaping closure where creates, updates, and deletes can be made to the transaction. Transaction blocks are executed serially in a background queue, and all changes are made from a concurrent `NSManagedObjectContext`. - - parameter waitForAllObservers: When `true`, this method waits for all observers to be notified of the changes before returning. This results in more predictable data update order, but may risk triggering deadlocks. When `false`, this method does not wait for observers to be notified of the changes before returning. This results in lower risk for deadlocks, but the updated data may not have been propagated to the `DataStack` after returning. Defaults to `true`. - - throws: a `CoreStoreError` value indicating the failure. Cancelled `task`s will be indicated by `CoreStoreError.userCancelled`. Custom errors thrown by the user will be wrapped in `CoreStoreError.userError(error: Error)`. - - returns: the value returned from `task` - */ - public static func perform(synchronous task: ((_ transaction: SynchronousDataTransaction) throws -> T), waitForAllObservers: Bool = true) throws -> T { - - return try CoreStoreDefaults.dataStack.perform(synchronous: task, waitForAllObservers: waitForAllObservers) - } - - /** - Using the `CoreStoreDefaults.dataStack`, begins a non-contiguous transaction where `NSManagedObject` or `CoreStoreObject` creates, updates, and deletes can be made. This is useful for making temporary changes, such as partially filled forms. - - - prameter supportsUndo: `undo()`, `redo()`, and `rollback()` methods are only available when this parameter is `true`, otherwise those method will raise an exception. Defaults to `false`. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited. - - returns: a `UnsafeDataTransaction` instance where creates, updates, and deletes can be made. - */ - public static func beginUnsafe(supportsUndo: Bool = false) -> UnsafeDataTransaction { - - return CoreStoreDefaults.dataStack.beginUnsafe(supportsUndo: supportsUndo) - } - - /** - Refreshes all registered objects `NSManagedObject`s or `CoreStoreObject`s in the `CoreStoreDefaults.dataStack`. - */ - public static func refreshAndMergeAllObjects() { - - CoreStoreDefaults.dataStack.refreshAndMergeAllObjects() - } -} diff --git a/Sources/CoreStore.swift b/Sources/CoreStore.swift deleted file mode 100644 index 77f975a..0000000 --- a/Sources/CoreStore.swift +++ /dev/null @@ -1,50 +0,0 @@ -// -// CoreStore.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import CoreData - - -// MARK: - CoreStore - -/** - `CoreStore` is the main entry point for all other APIs. - */ -@available(*, deprecated, message: "Call methods directly from the DataStack instead") -public enum CoreStore { - - @available(*, unavailable, renamed: "CoreStoreDefaults.logger") - public static var logger: CoreStoreLogger { - - get { return CoreStoreDefaults.logger } - set { CoreStoreDefaults.logger = newValue } - } - - @available(*, unavailable, renamed: "CoreStoreDefaults.dataStack") - public static var defaultStack: DataStack { - - get { return CoreStoreDefaults.dataStack } - set { CoreStoreDefaults.dataStack = newValue } - } -} diff --git a/Sources/SectionsReader.swift b/Sources/SectionsReader.swift deleted file mode 100644 index c461224..0000000 --- a/Sources/SectionsReader.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// SectionsReader.swift -// CoreStore -// -// Copyright © 2021 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#if canImport(Combine) && canImport(SwiftUI) - -import Combine -import SwiftUI - - -// MARK: - SectionsReader - -@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) -public struct SectionsReader: View { - - // MARK: Internal - - public init( - _ listPublisher: ListPublisher, - @ViewBuilder content: @escaping (LiveList.Items) -> Content - ) { - - self._list = .init(listPublisher) - self.content = content - } - - - // MARK: View - - public var body: some View { - - self.content(self.list) - } - - - // MARK: Private - - @LiveList - private var list: LiveList.Items - - private let content: (LiveList.Items) -> Content -} - -#endif