@swiftbrowser/swift 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Package.swift +214 -0
- package/README.md +10 -2
- package/Sources/AVFoundation/AVFoundation.swift +131 -0
- package/Sources/AVFoundation/Asset.swift +487 -0
- package/Sources/AVFoundation/AudioSession.swift +144 -0
- package/Sources/AVFoundation/CMTime.swift +303 -0
- package/Sources/AVFoundation/Capture.swift +688 -0
- package/Sources/AVFoundation/Player.swift +749 -0
- package/Sources/AVFoundation/PlayerView.swift +117 -0
- package/Sources/AVKit/AVKit.swift +132 -0
- package/Sources/Accelerate/Accelerate.swift +122 -0
- package/Sources/AppIntents/AppIntents.swift +144 -0
- package/Sources/AppIntents/Parameters.swift +220 -0
- package/Sources/AppIntents/Shortcuts.swift +159 -0
- package/Sources/AudioToolbox/AudioToolbox.swift +55 -0
- package/Sources/AuthenticationServices/AuthenticationServices.swift +257 -0
- package/Sources/AuthenticationServices/Authorization.swift +251 -0
- package/Sources/Charts/Charts.swift +61 -0
- package/Sources/Combine/AnyCancellable.swift +65 -0
- package/Sources/Combine/AnyPublisher.swift +148 -0
- package/Sources/Combine/AnySubscriber.swift +230 -0
- package/Sources/Combine/Cancellable.swift +35 -0
- package/Sources/Combine/Codable.swift +29 -0
- package/Sources/Combine/CombineIdentifier.swift +45 -0
- package/Sources/Combine/Concurrency/ConcurrencyHelpers.swift +24 -0
- package/Sources/Combine/Concurrency/Future+Concurrency.swift +136 -0
- package/Sources/Combine/Concurrency/GENERATED-Publisher+Concurrency.swift +397 -0
- package/Sources/Combine/CurrentValueSubject.swift +252 -0
- package/Sources/Combine/CustomCombineIdentifierConvertible.swift +28 -0
- package/Sources/Combine/Future.swift +228 -0
- package/Sources/Combine/GENERATED-RootProtocols.swift +426 -0
- package/Sources/Combine/Helpers/ConduitBase.swift +40 -0
- package/Sources/Combine/Helpers/ConduitList.swift +59 -0
- package/Sources/Combine/Helpers/DebugHook.swift +177 -0
- package/Sources/Combine/Helpers/FilterProducer.swift +174 -0
- package/Sources/Combine/Helpers/Locking.swift +30 -0
- package/Sources/Combine/Helpers/PartialCompletion.swift +26 -0
- package/Sources/Combine/Helpers/ReduceProducer.swift +249 -0
- package/Sources/Combine/Helpers/SubjectSubscriber.swift +96 -0
- package/Sources/Combine/Helpers/SubscriberTap.swift +69 -0
- package/Sources/Combine/Helpers/SubscriptionStatus.swift +33 -0
- package/Sources/Combine/Helpers/SubscriptionTap.swift +33 -0
- package/Sources/Combine/Helpers/Utils.swift +30 -0
- package/Sources/Combine/Helpers/Violations.swift +33 -0
- package/Sources/Combine/ImmediateScheduler.swift +178 -0
- package/Sources/Combine/LICENSE +21 -0
- package/Sources/Combine/NotificationPublisher.swift +48 -0
- package/Sources/Combine/ObjectWillChange.swift +46 -0
- package/Sources/Combine/PassthroughSubject.swift +222 -0
- package/Sources/Combine/Publisher+Subscribe.swift +53 -0
- package/Sources/Combine/Publishers/Deferred.swift +48 -0
- package/Sources/Combine/Publishers/Empty.swift +54 -0
- package/Sources/Combine/Publishers/Fail.swift +42 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.Catch.swift +673 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.Encode.swift +388 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.MapKeyPath.swift +384 -0
- package/Sources/Combine/Publishers/Just.swift +313 -0
- package/Sources/Combine/Publishers/Optional.Publisher.swift +315 -0
- package/Sources/Combine/Publishers/Publishers.AllSatisfy.swift +217 -0
- package/Sources/Combine/Publishers/Publishers.AssertNoFailure.swift +158 -0
- package/Sources/Combine/Publishers/Publishers.Autoconnect.swift +193 -0
- package/Sources/Combine/Publishers/Publishers.Breakpoint.swift +231 -0
- package/Sources/Combine/Publishers/Publishers.Buffer.swift +356 -0
- package/Sources/Combine/Publishers/Publishers.Collect.swift +102 -0
- package/Sources/Combine/Publishers/Publishers.CollectByCount.swift +195 -0
- package/Sources/Combine/Publishers/Publishers.CompactMap.swift +241 -0
- package/Sources/Combine/Publishers/Publishers.Comparison.swift +371 -0
- package/Sources/Combine/Publishers/Publishers.Concatenate.swift +474 -0
- package/Sources/Combine/Publishers/Publishers.Contains.swift +293 -0
- package/Sources/Combine/Publishers/Publishers.Count.swift +87 -0
- package/Sources/Combine/Publishers/Publishers.Debounce.swift +332 -0
- package/Sources/Combine/Publishers/Publishers.Delay.swift +269 -0
- package/Sources/Combine/Publishers/Publishers.Drop.swift +155 -0
- package/Sources/Combine/Publishers/Publishers.DropUntilOutput.swift +283 -0
- package/Sources/Combine/Publishers/Publishers.DropWhile.swift +378 -0
- package/Sources/Combine/Publishers/Publishers.Filter.swift +248 -0
- package/Sources/Combine/Publishers/Publishers.First.swift +261 -0
- package/Sources/Combine/Publishers/Publishers.FlatMap.swift +533 -0
- package/Sources/Combine/Publishers/Publishers.HandleEvents.swift +260 -0
- package/Sources/Combine/Publishers/Publishers.IgnoreOutput.swift +109 -0
- package/Sources/Combine/Publishers/Publishers.Last.swift +252 -0
- package/Sources/Combine/Publishers/Publishers.MakeConnectable.swift +82 -0
- package/Sources/Combine/Publishers/Publishers.Map.swift +351 -0
- package/Sources/Combine/Publishers/Publishers.MapError.swift +140 -0
- package/Sources/Combine/Publishers/Publishers.MeasureInterval.swift +187 -0
- package/Sources/Combine/Publishers/Publishers.Multicast.swift +284 -0
- package/Sources/Combine/Publishers/Publishers.Output.swift +241 -0
- package/Sources/Combine/Publishers/Publishers.PrefixUntilOutput.swift +197 -0
- package/Sources/Combine/Publishers/Publishers.PrefixWhile.swift +176 -0
- package/Sources/Combine/Publishers/Publishers.Print.swift +206 -0
- package/Sources/Combine/Publishers/Publishers.ReceiveOn.swift +227 -0
- package/Sources/Combine/Publishers/Publishers.Reduce.swift +204 -0
- package/Sources/Combine/Publishers/Publishers.RemoveDuplicates.swift +264 -0
- package/Sources/Combine/Publishers/Publishers.ReplaceEmpty.swift +201 -0
- package/Sources/Combine/Publishers/Publishers.ReplaceError.swift +211 -0
- package/Sources/Combine/Publishers/Publishers.Retry.swift +274 -0
- package/Sources/Combine/Publishers/Publishers.Scan.swift +331 -0
- package/Sources/Combine/Publishers/Publishers.Sequence.swift +437 -0
- package/Sources/Combine/Publishers/Publishers.SetFailureType.swift +120 -0
- package/Sources/Combine/Publishers/Publishers.Share.swift +104 -0
- package/Sources/Combine/Publishers/Publishers.SubscribeOn.swift +197 -0
- package/Sources/Combine/Publishers/Publishers.SwitchToLatest.swift +444 -0
- package/Sources/Combine/Publishers/Publishers.Throttle.swift +359 -0
- package/Sources/Combine/Publishers/Publishers.Timeout.swift +301 -0
- package/Sources/Combine/Publishers/Publishers.Zip.swift +720 -0
- package/Sources/Combine/Publishers/Publishers.swift +13 -0
- package/Sources/Combine/Publishers/Record.swift +237 -0
- package/Sources/Combine/Publishers/Result.Publisher.swift +337 -0
- package/Sources/Combine/Result.swift +46 -0
- package/Sources/Combine/Scheduler.swift +89 -0
- package/Sources/Combine/Schedulers.swift +211 -0
- package/Sources/Combine/Subject+Void.swift +17 -0
- package/Sources/Combine/Subscriber+Void.swift +20 -0
- package/Sources/Combine/Subscribers/Subscribers.Assign.swift +175 -0
- package/Sources/Combine/Subscribers/Subscribers.Completion.swift +90 -0
- package/Sources/Combine/Subscribers/Subscribers.Demand.swift +476 -0
- package/Sources/Combine/Subscribers/Subscribers.Sink.swift +206 -0
- package/Sources/Combine/Subscribers/Subscribers.swift +9 -0
- package/Sources/Combine/Subscription.swift +22 -0
- package/Sources/Combine/Subscriptions.swift +42 -0
- package/Sources/Combine/SwiftUIObservation.swift +10 -0
- package/Sources/Combine/_Introspection.swift +107 -0
- package/Sources/CommonCrypto/CommonCrypto.swift +80 -0
- package/Sources/Compression/Compression.swift +365 -0
- package/Sources/Compression/Deflate.swift +407 -0
- package/Sources/Compression/Zlib.swift +179 -0
- package/Sources/CoreFoundationTypes/CoreFoundationTypes.swift +101 -0
- package/Sources/CoreGraphics/CoreGraphics.swift +411 -0
- package/Sources/CoreGraphics/ProjectionTransforms.swift +28 -0
- package/Sources/CoreHaptics/CoreHaptics.swift +399 -0
- package/Sources/CoreImage/CIColor.swift +41 -0
- package/Sources/CoreImage/CIContext.swift +31 -0
- package/Sources/CoreImage/CIDetector.swift +57 -0
- package/Sources/CoreImage/CIFilter.swift +243 -0
- package/Sources/CoreImage/CIFilterBuiltins.swift +136 -0
- package/Sources/CoreImage/CIImage.swift +162 -0
- package/Sources/CoreImage/QRCode.swift +393 -0
- package/Sources/CoreLocation/Coordinate.swift +30 -0
- package/Sources/CoreLocation/Location.swift +65 -0
- package/Sources/CoreML/Evaluation.swift +414 -0
- package/Sources/CoreML/FeatureValue.swift +266 -0
- package/Sources/CoreML/Model.swift +269 -0
- package/Sources/CoreML/MultiArray.swift +92 -0
- package/Sources/CoreML/Specification.swift +233 -0
- package/Sources/CoreText/CoreText.swift +64 -0
- package/Sources/CoreTransferable/CoreTransferable.swift +606 -0
- package/Sources/CryptoKit/ChaChaPoly.swift +258 -0
- package/Sources/CryptoKit/CryptoKit.swift +375 -0
- package/Sources/CryptoKit/Curve25519.swift +317 -0
- package/Sources/CryptoKit/P256.swift +321 -0
- package/Sources/FoundationBridge/AppStorage.swift +165 -0
- package/Sources/FoundationBridge/AssetResources.swift +90 -0
- package/Sources/FoundationBridge/AsyncBytes.swift +128 -0
- package/Sources/FoundationBridge/AsyncImage.swift +116 -0
- package/Sources/FoundationBridge/AttributedStrings.swift +16 -0
- package/Sources/FoundationBridge/Bundle.swift +119 -0
- package/Sources/FoundationBridge/CombineExports.swift +8 -0
- package/Sources/FoundationBridge/CoreFoundation.swift +77 -0
- package/Sources/FoundationBridge/Dispatch.swift +458 -0
- package/Sources/FoundationBridge/EnvironmentFoundation.swift +41 -0
- package/Sources/FoundationBridge/FileImporter.swift +128 -0
- package/Sources/FoundationBridge/FileSystem.swift +68 -0
- package/Sources/FoundationBridge/FoundationBridge.swift +29 -0
- package/Sources/FoundationBridge/HostResolution.swift +31 -0
- package/Sources/FoundationBridge/ItemProvider.swift +655 -0
- package/Sources/FoundationBridge/KeyValueObserving.swift +138 -0
- package/Sources/FoundationBridge/Links.swift +127 -0
- package/Sources/FoundationBridge/ListFormatter.swift +32 -0
- package/Sources/FoundationBridge/Locale.swift +86 -0
- package/Sources/FoundationBridge/Localization.swift +149 -0
- package/Sources/FoundationBridge/Locks.swift +50 -0
- package/Sources/FoundationBridge/Markdown.swift +527 -0
- package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
- package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
- package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
- package/Sources/FoundationBridge/Operation.swift +195 -0
- package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
- package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
- package/Sources/FoundationBridge/SceneStorage.swift +78 -0
- package/Sources/FoundationBridge/SecurityExports.swift +8 -0
- package/Sources/FoundationBridge/Selector.swift +226 -0
- package/Sources/FoundationBridge/StringComparators.swift +17 -0
- package/Sources/FoundationBridge/Table.swift +211 -0
- package/Sources/FoundationBridge/TextAttributes.swift +42 -0
- package/Sources/FoundationBridge/Timer.swift +53 -0
- package/Sources/FoundationBridge/UITextChecker.swift +30 -0
- package/Sources/FoundationBridge/URLSession.swift +718 -0
- package/Sources/FoundationBridge/UserDefaults.swift +183 -0
- package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
- package/Sources/FoundationBridge/WebSocket.swift +187 -0
- package/Sources/FoundationModels/FoundationModels.swift +1098 -0
- package/Sources/ImageIO/GIF.swift +72 -0
- package/Sources/ImageIO/ImageIO.swift +248 -0
- package/Sources/ImageIO/ImageTypes.swift +28 -0
- package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
- package/Sources/LocalAuthentication/LAContext.swift +86 -0
- package/Sources/MapKit/Geometry.swift +223 -0
- package/Sources/MapKit/Map.swift +638 -0
- package/Sources/MapKit/MapView.swift +229 -0
- package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
- package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
- package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
- package/Sources/OSLog/OSLog.swift +6 -0
- package/Sources/Photos/Photos.swift +572 -0
- package/Sources/PhotosUI/PhotosPicker.swift +248 -0
- package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
- package/Sources/QuickLook/QuickLook.swift +168 -0
- package/Sources/SafariServices/SafariServices.swift +106 -0
- package/Sources/Security/Security.swift +332 -0
- package/Sources/StoreKit/AppStore.swift +207 -0
- package/Sources/StoreKit/Products.swift +280 -0
- package/Sources/StoreKit/RequestReview.swift +28 -0
- package/Sources/StoreKit/StoreKit1.swift +486 -0
- package/Sources/StoreKit/StoreViews.swift +428 -0
- package/Sources/StoreKit/Transactions.swift +197 -0
- package/Sources/SwiftData/Macros.swift +58 -0
- package/Sources/SwiftData/ModelActor.swift +38 -0
- package/Sources/SwiftData/ModelContainer.swift +129 -0
- package/Sources/SwiftData/ModelContext.swift +451 -0
- package/Sources/SwiftData/PersistentModel.swift +238 -0
- package/Sources/SwiftData/Properties.swift +261 -0
- package/Sources/SwiftData/Query.swift +256 -0
- package/Sources/SwiftData/Schema.swift +192 -0
- package/Sources/SwiftData/Store.swift +146 -0
- package/Sources/SwiftData/StringPredicates.swift +125 -0
- package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
- package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
- package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
- package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
- package/Sources/SwiftDataMacros/Plugin.swift +18 -0
- package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
- package/Sources/SwiftUI/API/Accessibility.swift +181 -0
- package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
- package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
- package/Sources/SwiftUI/API/Alert.swift +221 -0
- package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
- package/Sources/SwiftUI/API/Animation.swift +285 -0
- package/Sources/SwiftUI/API/App.swift +87 -0
- package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
- package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
- package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
- package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
- package/Sources/SwiftUI/API/Canvas.swift +337 -0
- package/Sources/SwiftUI/API/Color.swift +237 -0
- package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
- package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
- package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
- package/Sources/SwiftUI/API/Commands.swift +106 -0
- package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
- package/Sources/SwiftUI/API/ContentShape.swift +33 -0
- package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
- package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
- package/Sources/SwiftUI/API/Controls.swift +300 -0
- package/Sources/SwiftUI/API/CustomLayout.swift +442 -0
- package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
- package/Sources/SwiftUI/API/Decorations.swift +92 -0
- package/Sources/SwiftUI/API/EditMode.swift +212 -0
- package/Sources/SwiftUI/API/Effects.swift +388 -0
- package/Sources/SwiftUI/API/Entry.swift +8 -0
- package/Sources/SwiftUI/API/Environment.swift +439 -0
- package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
- package/Sources/SwiftUI/API/Focus.swift +137 -0
- package/Sources/SwiftUI/API/Font.swift +131 -0
- package/Sources/SwiftUI/API/Gauge.swift +290 -0
- package/Sources/SwiftUI/API/Geometry.swift +89 -0
- package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
- package/Sources/SwiftUI/API/GeometryReader.swift +135 -0
- package/Sources/SwiftUI/API/GestureState.swift +65 -0
- package/Sources/SwiftUI/API/Gestures.swift +342 -0
- package/Sources/SwiftUI/API/Glass.swift +127 -0
- package/Sources/SwiftUI/API/Grid.swift +188 -0
- package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
- package/Sources/SwiftUI/API/KeyPress.swift +54 -0
- package/Sources/SwiftUI/API/LabelStyle.swift +124 -0
- package/Sources/SwiftUI/API/Layout.swift +220 -0
- package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
- package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
- package/Sources/SwiftUI/API/Lists.swift +331 -0
- package/Sources/SwiftUI/API/Menu.swift +58 -0
- package/Sources/SwiftUI/API/Modifiers.swift +313 -0
- package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
- package/Sources/SwiftUI/API/Namespace.swift +44 -0
- package/Sources/SwiftUI/API/Navigation.swift +386 -0
- package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
- package/Sources/SwiftUI/API/ObservableObject.swift +293 -0
- package/Sources/SwiftUI/API/OnChange.swift +48 -0
- package/Sources/SwiftUI/API/Path.swift +543 -0
- package/Sources/SwiftUI/API/Phase8Controls.swift +411 -0
- package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
- package/Sources/SwiftUI/API/Picker.swift +185 -0
- package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
- package/Sources/SwiftUI/API/Popover.swift +41 -0
- package/Sources/SwiftUI/API/Preferences.swift +262 -0
- package/Sources/SwiftUI/API/Presentation.swift +122 -0
- package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
- package/Sources/SwiftUI/API/Primitives.swift +517 -0
- package/Sources/SwiftUI/API/Publishers.swift +107 -0
- package/Sources/SwiftUI/API/Redaction.swift +75 -0
- package/Sources/SwiftUI/API/RowActions.swift +84 -0
- package/Sources/SwiftUI/API/Scenes.swift +131 -0
- package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
- package/Sources/SwiftUI/API/ScrollTargets.swift +104 -0
- package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
- package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
- package/Sources/SwiftUI/API/Shape.swift +214 -0
- package/Sources/SwiftUI/API/ShapeStyle.swift +409 -0
- package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
- package/Sources/SwiftUI/API/Sharing.swift +193 -0
- package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
- package/Sources/SwiftUI/API/State.swift +144 -0
- package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
- package/Sources/SwiftUI/API/StrokeStyle.swift +30 -0
- package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
- package/Sources/SwiftUI/API/TabContent.swift +841 -0
- package/Sources/SwiftUI/API/Table.swift +382 -0
- package/Sources/SwiftUI/API/Tabs.swift +263 -0
- package/Sources/SwiftUI/API/Tasks.swift +35 -0
- package/Sources/SwiftUI/API/Text.swift +386 -0
- package/Sources/SwiftUI/API/TextDates.swift +61 -0
- package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
- package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
- package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
- package/Sources/SwiftUI/API/Timeline.swift +212 -0
- package/Sources/SwiftUI/API/Toolbar.swift +251 -0
- package/Sources/SwiftUI/API/Transfer.swift +145 -0
- package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
- package/Sources/SwiftUI/API/Video.swift +64 -0
- package/Sources/SwiftUI/API/View.swift +215 -0
- package/Sources/SwiftUI/API/ViewModifier.swift +43 -0
- package/Sources/SwiftUI/API/VisualEffect.swift +155 -0
- package/Sources/SwiftUI/API/Windows.swift +25 -0
- package/Sources/SwiftUI/Charts/Axis.swift +325 -0
- package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
- package/Sources/SwiftUI/Charts/Chart.swift +660 -0
- package/Sources/SwiftUI/Charts/ChartContent.swift +376 -0
- package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
- package/Sources/SwiftUI/Charts/Marks.swift +204 -0
- package/Sources/SwiftUI/Charts/Plottable.swift +99 -0
- package/Sources/SwiftUI/Charts/Scales.swift +326 -0
- package/Sources/SwiftUI/Localization/Localization.swift +498 -0
- package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
- package/Sources/SwiftUI/Runtime/Executor.swift +85 -0
- package/Sources/SwiftUI/Runtime/Exports.swift +101 -0
- package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
- package/Sources/SwiftUI/Runtime/JSON.swift +143 -0
- package/Sources/SwiftUI/Runtime/JSONParser.swift +443 -0
- package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
- package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
- package/Sources/SwiftUI/Runtime/Ops.swift +152 -0
- package/Sources/SwiftUI/Runtime/Reconciler.swift +219 -0
- package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
- package/Sources/SwiftUI/Runtime/Runtime.swift +2146 -0
- package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
- package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
- package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
- package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
- package/Sources/Symbols/Symbols.swift +25 -0
- package/Sources/Translation/Translation.swift +423 -0
- package/Sources/UIKit/Activity.swift +213 -0
- package/Sources/UIKit/Alerts.swift +69 -0
- package/Sources/UIKit/AppDelegate.swift +222 -0
- package/Sources/UIKit/Appearance.swift +84 -0
- package/Sources/UIKit/ColorConversions.swift +70 -0
- package/Sources/UIKit/Controls.swift +225 -0
- package/Sources/UIKit/Device.swift +200 -0
- package/Sources/UIKit/Feedback.swift +65 -0
- package/Sources/UIKit/Font.swift +307 -0
- package/Sources/UIKit/Graphics.swift +204 -0
- package/Sources/UIKit/HostingController.swift +185 -0
- package/Sources/UIKit/Identity.swift +24 -0
- package/Sources/UIKit/Introspectable.swift +510 -0
- package/Sources/UIKit/Pasteboard.swift +363 -0
- package/Sources/UIKit/PhotoAlbum.swift +81 -0
- package/Sources/UIKit/RemoteNotifications.swift +15 -0
- package/Sources/UIKit/Representable.swift +288 -0
- package/Sources/UIKit/SafeArea.swift +12 -0
- package/Sources/UIKit/SceneDelegates.swift +132 -0
- package/Sources/UIKit/Scenes.swift +40 -0
- package/Sources/UIKit/ScrollView.swift +157 -0
- package/Sources/UIKit/ShortcutItems.swift +67 -0
- package/Sources/UIKit/SymbolConfiguration.swift +124 -0
- package/Sources/UIKit/TargetAction.swift +123 -0
- package/Sources/UIKit/TextPaste.swift +161 -0
- package/Sources/UIKit/TextView.swift +538 -0
- package/Sources/UIKit/UIKit.swift +292 -0
- package/Sources/UIKit/UIView.swift +855 -0
- package/Sources/UIKit/ViewTranslation.swift +311 -0
- package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
- package/Sources/UserNotifications/Content.swift +370 -0
- package/Sources/UserNotifications/NotificationCenter.swift +309 -0
- package/Sources/WeatherKit/WeatherKit.swift +228 -0
- package/Sources/WebKit/WebKit.swift +245 -0
- package/Sources/os/os.swift +376 -0
- package/Sources/zlib/zlib.swift +6 -0
- package/index.d.ts +2 -0
- package/index.mjs +16 -0
- package/manifest.d.mts +2 -0
- package/manifest.mjs +39 -0
- package/package.json +30 -4
- package/sync-sources.mjs +33 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Publishers.swift
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
// Created by Sergej Jaskiewicz on 14.06.2019.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
/// A namespace for types that serve as publishers.
|
|
9
|
+
///
|
|
10
|
+
/// The various operators defined as extensions on `Publisher` implement their
|
|
11
|
+
/// functionality as classes or structures that extend this enumeration.
|
|
12
|
+
/// For example, the `contains(_:)` operator returns a `Publishers.Contains` instance.
|
|
13
|
+
public enum Publishers {}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Record.swift
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
// Created by Sergej Jaskiewicz on 12.11.2019.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
/// A publisher that allows for recording a series of inputs and a completion for later
|
|
9
|
+
/// playback to each subscriber.
|
|
10
|
+
public struct Record<Output, Failure: Error>: Publisher {
|
|
11
|
+
|
|
12
|
+
/// The recorded output and completion.
|
|
13
|
+
public let recording: Recording
|
|
14
|
+
|
|
15
|
+
/// Creates a publisher to interactively record a series of outputs and a completion.
|
|
16
|
+
///
|
|
17
|
+
/// - Parameter record: A recording instance that can be retrieved after completion
|
|
18
|
+
/// to create new record publishers to replay the recording.
|
|
19
|
+
public init(record: (inout Recording) -> Void) {
|
|
20
|
+
var recording = Recording()
|
|
21
|
+
record(&recording)
|
|
22
|
+
self.init(recording: recording)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/// Creates a record publisher from an existing recording.
|
|
26
|
+
///
|
|
27
|
+
/// - Parameter recording: A previously-recorded recording of published elements
|
|
28
|
+
/// and a completion.
|
|
29
|
+
public init(recording: Recording) {
|
|
30
|
+
self.recording = recording
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/// Creates a record publisher to publish the provided elements, followed by
|
|
34
|
+
/// the provided completion value.
|
|
35
|
+
///
|
|
36
|
+
/// - Parameters:
|
|
37
|
+
/// - output: An array of output elements to publish.
|
|
38
|
+
/// - completion: The completion value with which to end publishing.
|
|
39
|
+
public init(output: [Output], completion: Subscribers.Completion<Failure>) {
|
|
40
|
+
self.init(recording: Recording(output: output, completion: completion))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public func receive<Downstream: Subscriber>(subscriber: Downstream)
|
|
44
|
+
where Output == Downstream.Input, Failure == Downstream.Failure
|
|
45
|
+
{
|
|
46
|
+
if recording.output.isEmpty {
|
|
47
|
+
subscriber.receive(subscription: Subscriptions.empty)
|
|
48
|
+
subscriber.receive(completion: recording.completion)
|
|
49
|
+
} else {
|
|
50
|
+
let inner = Inner(downstream: subscriber,
|
|
51
|
+
sequence: recording.output,
|
|
52
|
+
completion: recording.completion)
|
|
53
|
+
subscriber.receive(subscription: inner)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// A recorded sequence of outputs, followed by a completion value.
|
|
58
|
+
public struct Recording {
|
|
59
|
+
|
|
60
|
+
public typealias Input = Output
|
|
61
|
+
|
|
62
|
+
private enum State {
|
|
63
|
+
case input
|
|
64
|
+
case complete
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private var state: State
|
|
68
|
+
|
|
69
|
+
/// The output which will be sent to a `Subscriber`.
|
|
70
|
+
public private(set) var output: [Output]
|
|
71
|
+
|
|
72
|
+
/// The completion which will be sent to a `Subscriber`.
|
|
73
|
+
public private(set) var completion: Subscribers.Completion<Failure>
|
|
74
|
+
|
|
75
|
+
/// Set up a recording in a state ready to receive output.
|
|
76
|
+
public init() {
|
|
77
|
+
state = .input
|
|
78
|
+
output = []
|
|
79
|
+
completion = .finished
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/// Set up a complete recording with the specified output and completion.
|
|
83
|
+
public init(output: [Output],
|
|
84
|
+
completion: Subscribers.Completion<Failure> = .finished) {
|
|
85
|
+
self.state = .complete
|
|
86
|
+
self.output = output
|
|
87
|
+
self.completion = completion
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/// Add an output to the recording.
|
|
91
|
+
///
|
|
92
|
+
/// A `fatalError` will be raised if output is added after adding completion.
|
|
93
|
+
public mutating func receive(_ input: Input) {
|
|
94
|
+
precondition(state == .input,
|
|
95
|
+
"Receiving values after completion is not allowed")
|
|
96
|
+
output.append(input)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/// Add a completion to the recording.
|
|
100
|
+
///
|
|
101
|
+
/// A `fatalError` will be raised if more than one completion is added.
|
|
102
|
+
public mutating func receive(completion: Subscribers.Completion<Failure>) {
|
|
103
|
+
precondition(state == .input,
|
|
104
|
+
"Receiving completion more than once is not allowed")
|
|
105
|
+
self.completion = completion
|
|
106
|
+
self.state = .complete
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
extension Record: Codable where Output: Codable, Failure: Codable {}
|
|
112
|
+
|
|
113
|
+
extension Record.Recording: Codable where Output: Codable, Failure: Codable {
|
|
114
|
+
|
|
115
|
+
private enum CodingKeys: String, CodingKey {
|
|
116
|
+
case output = "output"
|
|
117
|
+
case completion = "completion"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
public init(from decoder: Decoder) throws {
|
|
121
|
+
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
122
|
+
let output = try container.decode([Output].self, forKey: .output)
|
|
123
|
+
let completion = try container.decode(Subscribers.Completion<Failure>.self,
|
|
124
|
+
forKey: .completion)
|
|
125
|
+
self.init(output: output, completion: completion)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
public func encode(into encoder: Encoder) throws {
|
|
129
|
+
try encode(to: encoder)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
public func encode(to encoder: Encoder) throws {
|
|
133
|
+
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
134
|
+
try container.encode(output, forKey: .output)
|
|
135
|
+
try container.encode(completion, forKey: .completion)
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
extension Record {
|
|
140
|
+
|
|
141
|
+
// This class is almost the same as Publishers.Sequence.Inner
|
|
142
|
+
// despite some small details.
|
|
143
|
+
private final class Inner<Downstream: Subscriber>
|
|
144
|
+
: Subscription,
|
|
145
|
+
CustomStringConvertible,
|
|
146
|
+
CustomReflectable,
|
|
147
|
+
CustomPlaygroundDisplayConvertible
|
|
148
|
+
where Downstream.Input == Output, Downstream.Failure == Failure
|
|
149
|
+
{
|
|
150
|
+
// NOTE: This class has been audited for thread-safety
|
|
151
|
+
|
|
152
|
+
private var sequence: [Output]?
|
|
153
|
+
private let completion: Subscribers.Completion<Failure>
|
|
154
|
+
private var downstream: Downstream?
|
|
155
|
+
private var iterator: IndexingIterator<[Output]>
|
|
156
|
+
private var next: Output?
|
|
157
|
+
private var pendingDemand = Subscribers.Demand.none
|
|
158
|
+
private var recursion = false
|
|
159
|
+
private var lock = UnfairLock.allocate()
|
|
160
|
+
|
|
161
|
+
fileprivate init(downstream: Downstream,
|
|
162
|
+
sequence: [Output],
|
|
163
|
+
completion: Subscribers.Completion<Failure>) {
|
|
164
|
+
self.sequence = sequence
|
|
165
|
+
self.completion = completion
|
|
166
|
+
self.downstream = downstream
|
|
167
|
+
self.iterator = sequence.makeIterator()
|
|
168
|
+
next = iterator.next()
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
deinit {
|
|
172
|
+
lock.deallocate()
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
var description: String {
|
|
176
|
+
lock.lock()
|
|
177
|
+
defer { lock.unlock() }
|
|
178
|
+
return sequence.map { $0.description } ?? "Cancelled Events"
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
var customMirror: Mirror {
|
|
182
|
+
lock.lock()
|
|
183
|
+
defer { lock.unlock() }
|
|
184
|
+
let children: [Mirror.Child] = [
|
|
185
|
+
("sequence", sequence ?? [Output]()),
|
|
186
|
+
("completion", completion)
|
|
187
|
+
]
|
|
188
|
+
return Mirror(self, children: children)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
var playgroundDescription: Any { return description }
|
|
192
|
+
|
|
193
|
+
func request(_ demand: Subscribers.Demand) {
|
|
194
|
+
lock.lock()
|
|
195
|
+
guard downstream != nil else {
|
|
196
|
+
lock.unlock()
|
|
197
|
+
return
|
|
198
|
+
}
|
|
199
|
+
pendingDemand += demand
|
|
200
|
+
if recursion {
|
|
201
|
+
lock.unlock()
|
|
202
|
+
return
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
while let downstream = self.downstream, pendingDemand > 0 {
|
|
206
|
+
if let current = self.next {
|
|
207
|
+
pendingDemand -= 1
|
|
208
|
+
let next = iterator.next()
|
|
209
|
+
recursion = true
|
|
210
|
+
lock.unlock()
|
|
211
|
+
let additionalDemand = downstream.receive(current)
|
|
212
|
+
lock.lock()
|
|
213
|
+
recursion = false
|
|
214
|
+
pendingDemand += additionalDemand
|
|
215
|
+
self.next = next
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if next == nil {
|
|
219
|
+
self.downstream = nil
|
|
220
|
+
self.sequence = nil
|
|
221
|
+
lock.unlock()
|
|
222
|
+
downstream.receive(completion: completion)
|
|
223
|
+
return
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
lock.unlock()
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
func cancel() {
|
|
231
|
+
lock.lock()
|
|
232
|
+
downstream = nil
|
|
233
|
+
sequence = nil
|
|
234
|
+
lock.unlock()
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Result.Publisher.swift
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
// Created by Sergej Jaskiewicz on 17.06.2019.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
extension Result {
|
|
9
|
+
|
|
10
|
+
/// A namespace for disambiguation when both OpenCombine and Combine are imported.
|
|
11
|
+
///
|
|
12
|
+
/// Combine extends `Result` with a nested type `Publisher`.
|
|
13
|
+
/// If you import both OpenCombine and Combine (either explicitly or implicitly,
|
|
14
|
+
/// e. g. when importing Foundation), you will not be able
|
|
15
|
+
/// to write `Result<Int, Error>.Publisher`,
|
|
16
|
+
/// because Swift is unable to understand which `Publisher` you're referring to.
|
|
17
|
+
///
|
|
18
|
+
/// So you have to write `Result<Int, Error>.OCombine.Publisher`.
|
|
19
|
+
///
|
|
20
|
+
/// This bug is tracked [here](https://bugs.swift.org/browse/SR-11183).
|
|
21
|
+
///
|
|
22
|
+
/// You can omit this whenever Combine is not available (e. g. on Linux).
|
|
23
|
+
public struct OCombine {
|
|
24
|
+
|
|
25
|
+
fileprivate let result: Result
|
|
26
|
+
|
|
27
|
+
fileprivate init(_ result: Result) {
|
|
28
|
+
self.result = result
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public var publisher: Publisher {
|
|
32
|
+
return Publisher(result)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/// A publisher that publishes an output to each subscriber exactly once then
|
|
36
|
+
/// finishes, or fails immediately without producing any elements.
|
|
37
|
+
///
|
|
38
|
+
/// If `result` is `.success`, then `Once` waits until it receives a request for
|
|
39
|
+
/// at least 1 value before sending the output. If `result` is `.failure`,
|
|
40
|
+
/// then `Once` sends the failure immediately upon subscription.
|
|
41
|
+
///
|
|
42
|
+
/// In contrast with `Just`, a `Once` publisher can terminate with an error
|
|
43
|
+
/// instead of sending a value. In contrast with `Optional`, a `Once` publisher
|
|
44
|
+
/// always sends one value (unless it terminates with an error).
|
|
45
|
+
public struct Publisher: Combine.Publisher {
|
|
46
|
+
|
|
47
|
+
public typealias Output = Success
|
|
48
|
+
|
|
49
|
+
/// The result to deliver to each subscriber.
|
|
50
|
+
public let result: Result
|
|
51
|
+
|
|
52
|
+
/// Creates a publisher that delivers the specified result.
|
|
53
|
+
///
|
|
54
|
+
/// If the result is `.success`, the `Once` publisher sends the specified
|
|
55
|
+
/// output to all subscribers and finishes normally. If the result is
|
|
56
|
+
/// `.failure`, then the publisher fails immediately with the specified
|
|
57
|
+
/// error.
|
|
58
|
+
///
|
|
59
|
+
/// - Parameter result: The result to deliver to each subscriber.
|
|
60
|
+
public init(_ result: Result) {
|
|
61
|
+
self.result = result
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// Creates a publisher that sends the specified output to all subscribers and
|
|
65
|
+
/// finishes normally.
|
|
66
|
+
///
|
|
67
|
+
/// - Parameter output: The output to deliver to each subscriber.
|
|
68
|
+
public init(_ output: Output) {
|
|
69
|
+
self.init(.success(output))
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/// Creates a publisher that immediately terminates upon subscription with
|
|
73
|
+
/// the given failure.
|
|
74
|
+
///
|
|
75
|
+
/// - Parameter failure: The failure to send when terminating.
|
|
76
|
+
public init(_ failure: Failure) {
|
|
77
|
+
self.init(.failure(failure))
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
public func receive<Downstream: Subscriber>(subscriber: Downstream)
|
|
81
|
+
where Downstream.Input == Success, Downstream.Failure == Failure
|
|
82
|
+
{
|
|
83
|
+
switch result {
|
|
84
|
+
case .success(let value):
|
|
85
|
+
subscriber.receive(subscription: Inner(value: value,
|
|
86
|
+
downstream: subscriber))
|
|
87
|
+
case .failure(let failure):
|
|
88
|
+
subscriber.receive(subscription: Subscriptions.empty)
|
|
89
|
+
subscriber.receive(completion: .failure(failure))
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public var ocombine: OCombine {
|
|
96
|
+
return OCombine(self)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
#if !canImport(Combine)
|
|
100
|
+
/// A publisher that publishes an output to each subscriber exactly once then
|
|
101
|
+
/// finishes, or fails immediately without producing any elements.
|
|
102
|
+
///
|
|
103
|
+
/// If `result` is `.success`, then `Once` waits until it receives a request for
|
|
104
|
+
/// at least 1 value before sending the output. If `result` is `.failure`, then `Once`
|
|
105
|
+
/// sends the failure immediately upon subscription.
|
|
106
|
+
///
|
|
107
|
+
/// In contrast with `Just`, a `Once` publisher can terminate with an error instead of
|
|
108
|
+
/// sending a value. In contrast with `Optional`, a `Once` publisher always sends one
|
|
109
|
+
/// value (unless it terminates with an error).
|
|
110
|
+
public typealias Publisher = OCombine.Publisher
|
|
111
|
+
|
|
112
|
+
public var publisher: Publisher {
|
|
113
|
+
return Publisher(self)
|
|
114
|
+
}
|
|
115
|
+
#endif
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
extension Result.OCombine {
|
|
119
|
+
private final class Inner<Downstream: Subscriber>
|
|
120
|
+
: Subscription,
|
|
121
|
+
CustomStringConvertible,
|
|
122
|
+
CustomReflectable,
|
|
123
|
+
CustomPlaygroundDisplayConvertible
|
|
124
|
+
where Downstream.Input == Success, Downstream.Failure == Failure
|
|
125
|
+
{
|
|
126
|
+
// NOTE: this class has been audited for thread safety.
|
|
127
|
+
// Combine doesn't use any locking here.
|
|
128
|
+
|
|
129
|
+
private var downstream: Downstream?
|
|
130
|
+
private let output: Success
|
|
131
|
+
|
|
132
|
+
init(value: Success, downstream: Downstream) {
|
|
133
|
+
self.output = value
|
|
134
|
+
self.downstream = downstream
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
func request(_ demand: Subscribers.Demand) {
|
|
138
|
+
demand.assertNonZero()
|
|
139
|
+
guard let downstream = self.downstream.take() else { return }
|
|
140
|
+
_ = downstream.receive(output)
|
|
141
|
+
downstream.receive(completion: .finished)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
func cancel() {
|
|
145
|
+
downstream = nil
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
var description: String { return "Once" }
|
|
149
|
+
|
|
150
|
+
var customMirror: Mirror {
|
|
151
|
+
return Mirror(self, unlabeledChildren: CollectionOfOne(output))
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
var playgroundDescription: Any { return description }
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
extension Result.OCombine.Publisher: Equatable
|
|
159
|
+
where Output: Equatable, Failure: Equatable
|
|
160
|
+
{
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
extension Result.OCombine.Publisher where Output: Equatable {
|
|
164
|
+
|
|
165
|
+
public func contains(_ output: Output) -> Result<Bool, Failure>.OCombine.Publisher {
|
|
166
|
+
return .init(result.map { $0 == output })
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
public func removeDuplicates() -> Result<Output, Failure>.OCombine.Publisher {
|
|
170
|
+
return self
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
extension Result.OCombine.Publisher where Output: Comparable {
|
|
175
|
+
|
|
176
|
+
public func min() -> Result<Output, Failure>.OCombine.Publisher {
|
|
177
|
+
return self
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
public func max() -> Result<Output, Failure>.OCombine.Publisher {
|
|
181
|
+
return self
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
extension Result.OCombine.Publisher {
|
|
186
|
+
|
|
187
|
+
public func allSatisfy(
|
|
188
|
+
_ predicate: (Output) -> Bool
|
|
189
|
+
) -> Result<Bool, Failure>.OCombine.Publisher {
|
|
190
|
+
return .init(result.map(predicate))
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
public func tryAllSatisfy(
|
|
194
|
+
_ predicate: (Output) throws -> Bool
|
|
195
|
+
) -> Result<Bool, Error>.OCombine.Publisher {
|
|
196
|
+
return .init(result.tryMap(predicate))
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
public func contains(
|
|
200
|
+
where predicate: (Output) -> Bool
|
|
201
|
+
) -> Result<Bool, Failure>.OCombine.Publisher {
|
|
202
|
+
return .init(result.map(predicate))
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
public func tryContains(
|
|
206
|
+
where predicate: (Output) throws -> Bool
|
|
207
|
+
) -> Result<Bool, Error>.OCombine.Publisher {
|
|
208
|
+
return .init(result.tryMap(predicate))
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
public func collect() -> Result<[Output], Failure>.OCombine.Publisher {
|
|
212
|
+
return .init(result.map { [$0] })
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
public func min(
|
|
216
|
+
by areInIncreasingOrder: (Output, Output) -> Bool
|
|
217
|
+
) -> Result<Output, Failure>.OCombine.Publisher {
|
|
218
|
+
return self
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
public func tryMin(
|
|
222
|
+
by areInIncreasingOrder: (Output, Output) throws -> Bool
|
|
223
|
+
) -> Result<Output, Error>.OCombine.Publisher {
|
|
224
|
+
return .init(result.tryMap { _ = try areInIncreasingOrder($0, $0); return $0 })
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
public func max(
|
|
228
|
+
by areInIncreasingOrder: (Output, Output
|
|
229
|
+
) -> Bool) -> Result<Output, Failure>.OCombine.Publisher {
|
|
230
|
+
return self
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
public func tryMax(
|
|
234
|
+
by areInIncreasingOrder: (Output, Output) throws -> Bool
|
|
235
|
+
) -> Result<Output, Error>.OCombine.Publisher {
|
|
236
|
+
return .init(result.tryMap { _ = try areInIncreasingOrder($0, $0); return $0 })
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
public func count() -> Result<Int, Failure>.OCombine.Publisher {
|
|
240
|
+
return .init(result.map { _ in 1 })
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
public func first() -> Result<Output, Failure>.OCombine.Publisher {
|
|
244
|
+
return self
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
public func last() -> Result<Output, Failure>.OCombine.Publisher {
|
|
248
|
+
return self
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
public func ignoreOutput() -> Empty<Output, Failure> {
|
|
252
|
+
return .init()
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
public func map<ElementOfResult>(
|
|
256
|
+
_ transform: (Output) -> ElementOfResult
|
|
257
|
+
) -> Result<ElementOfResult, Failure>.OCombine.Publisher {
|
|
258
|
+
return .init(result.map(transform))
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
public func tryMap<ElementOfResult>(
|
|
262
|
+
_ transform: (Output) throws -> ElementOfResult
|
|
263
|
+
) -> Result<ElementOfResult, Error>.OCombine.Publisher {
|
|
264
|
+
return .init(result.tryMap(transform))
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
public func mapError<TransformedFailure: Error>(
|
|
268
|
+
_ transform: (Failure) -> TransformedFailure
|
|
269
|
+
) -> Result<Output, TransformedFailure>.OCombine.Publisher {
|
|
270
|
+
return .init(result.mapError(transform))
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
public func removeDuplicates(
|
|
274
|
+
by predicate: (Output, Output) -> Bool
|
|
275
|
+
) -> Result<Output, Failure>.OCombine.Publisher {
|
|
276
|
+
return self
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
public func tryRemoveDuplicates(
|
|
280
|
+
by predicate: (Output, Output) throws -> Bool
|
|
281
|
+
) -> Result<Output, Error>.OCombine.Publisher {
|
|
282
|
+
return .init(result.tryMap { _ = try predicate($0, $0); return $0 })
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
public func replaceError(
|
|
286
|
+
with output: Output
|
|
287
|
+
) -> Result<Output, Never>.OCombine.Publisher {
|
|
288
|
+
return .init(.success(result.unwrapOr(output)))
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
public func replaceEmpty(
|
|
292
|
+
with output: Output
|
|
293
|
+
) -> Result<Output, Failure>.OCombine.Publisher {
|
|
294
|
+
return self
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
public func retry(_ times: Int) -> Result<Output, Failure>.OCombine.Publisher {
|
|
298
|
+
return self
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
public func reduce<Accumulator>(
|
|
302
|
+
_ initialResult: Accumulator,
|
|
303
|
+
_ nextPartialResult: (Accumulator, Output) -> Accumulator
|
|
304
|
+
) -> Result<Accumulator, Failure>.OCombine.Publisher {
|
|
305
|
+
return .init(result.map { nextPartialResult(initialResult, $0) })
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
public func tryReduce<Accumulator>(
|
|
309
|
+
_ initialResult: Accumulator,
|
|
310
|
+
_ nextPartialResult: (Accumulator, Output) throws -> Accumulator
|
|
311
|
+
) -> Result<Accumulator, Error>.OCombine.Publisher{
|
|
312
|
+
return .init(result.tryMap { try nextPartialResult(initialResult, $0) })
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
public func scan<ElementOfResult>(
|
|
316
|
+
_ initialResult: ElementOfResult,
|
|
317
|
+
_ nextPartialResult: (ElementOfResult, Output) -> ElementOfResult
|
|
318
|
+
) -> Result<ElementOfResult, Failure>.OCombine.Publisher {
|
|
319
|
+
return .init(result.map { nextPartialResult(initialResult, $0) })
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
public func tryScan<ElementOfResult>(
|
|
323
|
+
_ initialResult: ElementOfResult,
|
|
324
|
+
_ nextPartialResult: (ElementOfResult, Output) throws -> ElementOfResult
|
|
325
|
+
) -> Result<ElementOfResult, Error>.OCombine.Publisher {
|
|
326
|
+
return .init(result.tryMap { try nextPartialResult(initialResult, $0) })
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
extension Result.OCombine.Publisher where Failure == Never {
|
|
331
|
+
|
|
332
|
+
public func setFailureType<Failure: Error>(
|
|
333
|
+
to failureType: Failure.Type
|
|
334
|
+
) -> Result<Output, Failure>.OCombine.Publisher {
|
|
335
|
+
return .init(result.success)
|
|
336
|
+
}
|
|
337
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Result.swift
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
// Created by Sergej Jaskiewicz on 17.06.2019.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
extension Result {
|
|
9
|
+
|
|
10
|
+
internal func tryMap<NewSuccess>(
|
|
11
|
+
_ transform: (Success) throws -> NewSuccess
|
|
12
|
+
) -> Result<NewSuccess, Error> {
|
|
13
|
+
switch self {
|
|
14
|
+
case .success(let success):
|
|
15
|
+
do {
|
|
16
|
+
return try .success(transform(success))
|
|
17
|
+
} catch {
|
|
18
|
+
return .failure(error)
|
|
19
|
+
}
|
|
20
|
+
case .failure(let error):
|
|
21
|
+
return .failure(error)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
internal func unwrapOr(_ handleError: (Failure) -> Success) -> Success {
|
|
26
|
+
switch self {
|
|
27
|
+
case .success(let success):
|
|
28
|
+
return success
|
|
29
|
+
case .failure(let error):
|
|
30
|
+
return handleError(error)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
internal func unwrapOr(_ handleError: @autoclosure () -> Success) -> Success {
|
|
35
|
+
return unwrapOr { _ in handleError() }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
extension Result where Failure == Never {
|
|
40
|
+
internal var success: Success {
|
|
41
|
+
switch self {
|
|
42
|
+
case .success(let success):
|
|
43
|
+
return success
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|