├── .github └── FUNDING.yml ├── .gitignore ├── Example ├── Example.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── swiftpm │ │ └── Package.resolved └── Example │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json │ ├── Base.lproj │ └── LaunchScreen.storyboard │ ├── Car.swift │ ├── Info.plist │ ├── MainView.swift │ ├── MainViewController.swift │ └── SceneDelegate.swift ├── Package.resolved ├── Package.swift ├── README.md ├── Sources ├── SBSObservation │ ├── Internal │ │ ├── AccessList.swift │ │ ├── AnyObservationChangeHandler.swift │ │ ├── LockingObservationStore.swift │ │ ├── ManagedCriticalState.swift │ │ ├── ObservationStore.swift │ │ ├── ObservationStoring.swift │ │ ├── StoredObservation.swift │ │ └── ThreadLocal.swift │ ├── Macros.swift │ ├── ObservableRegistrar.swift │ ├── Observation.swift │ ├── ObservationChangeHandler.swift │ ├── ObservationOptions.swift │ ├── ObserverRegistrar.swift │ └── PropertyChangeType.swift └── SBSObservationMacros │ ├── Extensions.swift │ ├── Plugin.swift │ ├── SBSMacroDiagnostic.swift │ ├── SBSObservableMacro.swift │ ├── SBSObservationIgnoredMacro.swift │ ├── SBSObservationTrackedMacro.swift │ └── SBSObserverMacro.swift └── Tests ├── SBSObservationMacrosTests ├── SBSObservableMacroTests.swift ├── SBSObservationTrackedMacroTests.swift └── SBSObserverMacroTests.swift └── SBSObservationTests ├── AccessListTests.swift ├── AnyObservationChangeHandlerTests.swift ├── LockingObservationStoreTests.swift ├── Mock ├── MockObservable.swift ├── MockObserver.swift └── ObservationStoreSpy.swift ├── ObservableRegistrarTests.swift ├── ObservationOptionTests.swift ├── ObservationTests.swift ├── ObserverRegistrarTests.swift ├── StoredObservationTests.swift └── ThreadLocalTests.swift /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: simonbs 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/.gitignore -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved -------------------------------------------------------------------------------- /Example/Example/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/AppDelegate.swift -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /Example/Example/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /Example/Example/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /Example/Example/Car.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/Car.swift -------------------------------------------------------------------------------- /Example/Example/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/Info.plist -------------------------------------------------------------------------------- /Example/Example/MainView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/MainView.swift -------------------------------------------------------------------------------- /Example/Example/MainViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/MainViewController.swift -------------------------------------------------------------------------------- /Example/Example/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Example/Example/SceneDelegate.swift -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Package.resolved -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Package.swift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/README.md -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/AccessList.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/AccessList.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/AnyObservationChangeHandler.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/AnyObservationChangeHandler.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/LockingObservationStore.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/LockingObservationStore.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/ManagedCriticalState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/ManagedCriticalState.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/ObservationStore.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/ObservationStore.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/ObservationStoring.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/ObservationStoring.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/StoredObservation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/StoredObservation.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Internal/ThreadLocal.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Internal/ThreadLocal.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Macros.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Macros.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/ObservableRegistrar.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/ObservableRegistrar.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/Observation.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/Observation.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/ObservationChangeHandler.swift: -------------------------------------------------------------------------------- 1 | public typealias ObservationChangeHandler = (T, T) -> Void 2 | -------------------------------------------------------------------------------- /Sources/SBSObservation/ObservationOptions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/ObservationOptions.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/ObserverRegistrar.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/ObserverRegistrar.swift -------------------------------------------------------------------------------- /Sources/SBSObservation/PropertyChangeType.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservation/PropertyChangeType.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/Extensions.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/Plugin.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/Plugin.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/SBSMacroDiagnostic.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/SBSMacroDiagnostic.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/SBSObservableMacro.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/SBSObservableMacro.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/SBSObservationIgnoredMacro.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/SBSObservationIgnoredMacro.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/SBSObservationTrackedMacro.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/SBSObservationTrackedMacro.swift -------------------------------------------------------------------------------- /Sources/SBSObservationMacros/SBSObserverMacro.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Sources/SBSObservationMacros/SBSObserverMacro.swift -------------------------------------------------------------------------------- /Tests/SBSObservationMacrosTests/SBSObservableMacroTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationMacrosTests/SBSObservableMacroTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationMacrosTests/SBSObservationTrackedMacroTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationMacrosTests/SBSObservationTrackedMacroTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationMacrosTests/SBSObserverMacroTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationMacrosTests/SBSObserverMacroTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/AccessListTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/AccessListTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/AnyObservationChangeHandlerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/AnyObservationChangeHandlerTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/LockingObservationStoreTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/LockingObservationStoreTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/Mock/MockObservable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/Mock/MockObservable.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/Mock/MockObserver.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/Mock/MockObserver.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/Mock/ObservationStoreSpy.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/Mock/ObservationStoreSpy.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/ObservableRegistrarTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/ObservableRegistrarTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/ObservationOptionTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/ObservationOptionTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/ObservationTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/ObservationTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/ObserverRegistrarTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/ObserverRegistrarTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/StoredObservationTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/StoredObservationTests.swift -------------------------------------------------------------------------------- /Tests/SBSObservationTests/ThreadLocalTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simonbs/SBSObservation/HEAD/Tests/SBSObservationTests/ThreadLocalTests.swift --------------------------------------------------------------------------------