@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.
Files changed (400) hide show
  1. package/Package.swift +214 -0
  2. package/README.md +10 -2
  3. package/Sources/AVFoundation/AVFoundation.swift +131 -0
  4. package/Sources/AVFoundation/Asset.swift +487 -0
  5. package/Sources/AVFoundation/AudioSession.swift +144 -0
  6. package/Sources/AVFoundation/CMTime.swift +303 -0
  7. package/Sources/AVFoundation/Capture.swift +688 -0
  8. package/Sources/AVFoundation/Player.swift +749 -0
  9. package/Sources/AVFoundation/PlayerView.swift +117 -0
  10. package/Sources/AVKit/AVKit.swift +132 -0
  11. package/Sources/Accelerate/Accelerate.swift +122 -0
  12. package/Sources/AppIntents/AppIntents.swift +144 -0
  13. package/Sources/AppIntents/Parameters.swift +220 -0
  14. package/Sources/AppIntents/Shortcuts.swift +159 -0
  15. package/Sources/AudioToolbox/AudioToolbox.swift +55 -0
  16. package/Sources/AuthenticationServices/AuthenticationServices.swift +257 -0
  17. package/Sources/AuthenticationServices/Authorization.swift +251 -0
  18. package/Sources/Charts/Charts.swift +61 -0
  19. package/Sources/Combine/AnyCancellable.swift +65 -0
  20. package/Sources/Combine/AnyPublisher.swift +148 -0
  21. package/Sources/Combine/AnySubscriber.swift +230 -0
  22. package/Sources/Combine/Cancellable.swift +35 -0
  23. package/Sources/Combine/Codable.swift +29 -0
  24. package/Sources/Combine/CombineIdentifier.swift +45 -0
  25. package/Sources/Combine/Concurrency/ConcurrencyHelpers.swift +24 -0
  26. package/Sources/Combine/Concurrency/Future+Concurrency.swift +136 -0
  27. package/Sources/Combine/Concurrency/GENERATED-Publisher+Concurrency.swift +397 -0
  28. package/Sources/Combine/CurrentValueSubject.swift +252 -0
  29. package/Sources/Combine/CustomCombineIdentifierConvertible.swift +28 -0
  30. package/Sources/Combine/Future.swift +228 -0
  31. package/Sources/Combine/GENERATED-RootProtocols.swift +426 -0
  32. package/Sources/Combine/Helpers/ConduitBase.swift +40 -0
  33. package/Sources/Combine/Helpers/ConduitList.swift +59 -0
  34. package/Sources/Combine/Helpers/DebugHook.swift +177 -0
  35. package/Sources/Combine/Helpers/FilterProducer.swift +174 -0
  36. package/Sources/Combine/Helpers/Locking.swift +30 -0
  37. package/Sources/Combine/Helpers/PartialCompletion.swift +26 -0
  38. package/Sources/Combine/Helpers/ReduceProducer.swift +249 -0
  39. package/Sources/Combine/Helpers/SubjectSubscriber.swift +96 -0
  40. package/Sources/Combine/Helpers/SubscriberTap.swift +69 -0
  41. package/Sources/Combine/Helpers/SubscriptionStatus.swift +33 -0
  42. package/Sources/Combine/Helpers/SubscriptionTap.swift +33 -0
  43. package/Sources/Combine/Helpers/Utils.swift +30 -0
  44. package/Sources/Combine/Helpers/Violations.swift +33 -0
  45. package/Sources/Combine/ImmediateScheduler.swift +178 -0
  46. package/Sources/Combine/LICENSE +21 -0
  47. package/Sources/Combine/NotificationPublisher.swift +48 -0
  48. package/Sources/Combine/ObjectWillChange.swift +46 -0
  49. package/Sources/Combine/PassthroughSubject.swift +222 -0
  50. package/Sources/Combine/Publisher+Subscribe.swift +53 -0
  51. package/Sources/Combine/Publishers/Deferred.swift +48 -0
  52. package/Sources/Combine/Publishers/Empty.swift +54 -0
  53. package/Sources/Combine/Publishers/Fail.swift +42 -0
  54. package/Sources/Combine/Publishers/GENERATED-Publishers.Catch.swift +673 -0
  55. package/Sources/Combine/Publishers/GENERATED-Publishers.Encode.swift +388 -0
  56. package/Sources/Combine/Publishers/GENERATED-Publishers.MapKeyPath.swift +384 -0
  57. package/Sources/Combine/Publishers/Just.swift +313 -0
  58. package/Sources/Combine/Publishers/Optional.Publisher.swift +315 -0
  59. package/Sources/Combine/Publishers/Publishers.AllSatisfy.swift +217 -0
  60. package/Sources/Combine/Publishers/Publishers.AssertNoFailure.swift +158 -0
  61. package/Sources/Combine/Publishers/Publishers.Autoconnect.swift +193 -0
  62. package/Sources/Combine/Publishers/Publishers.Breakpoint.swift +231 -0
  63. package/Sources/Combine/Publishers/Publishers.Buffer.swift +356 -0
  64. package/Sources/Combine/Publishers/Publishers.Collect.swift +102 -0
  65. package/Sources/Combine/Publishers/Publishers.CollectByCount.swift +195 -0
  66. package/Sources/Combine/Publishers/Publishers.CompactMap.swift +241 -0
  67. package/Sources/Combine/Publishers/Publishers.Comparison.swift +371 -0
  68. package/Sources/Combine/Publishers/Publishers.Concatenate.swift +474 -0
  69. package/Sources/Combine/Publishers/Publishers.Contains.swift +293 -0
  70. package/Sources/Combine/Publishers/Publishers.Count.swift +87 -0
  71. package/Sources/Combine/Publishers/Publishers.Debounce.swift +332 -0
  72. package/Sources/Combine/Publishers/Publishers.Delay.swift +269 -0
  73. package/Sources/Combine/Publishers/Publishers.Drop.swift +155 -0
  74. package/Sources/Combine/Publishers/Publishers.DropUntilOutput.swift +283 -0
  75. package/Sources/Combine/Publishers/Publishers.DropWhile.swift +378 -0
  76. package/Sources/Combine/Publishers/Publishers.Filter.swift +248 -0
  77. package/Sources/Combine/Publishers/Publishers.First.swift +261 -0
  78. package/Sources/Combine/Publishers/Publishers.FlatMap.swift +533 -0
  79. package/Sources/Combine/Publishers/Publishers.HandleEvents.swift +260 -0
  80. package/Sources/Combine/Publishers/Publishers.IgnoreOutput.swift +109 -0
  81. package/Sources/Combine/Publishers/Publishers.Last.swift +252 -0
  82. package/Sources/Combine/Publishers/Publishers.MakeConnectable.swift +82 -0
  83. package/Sources/Combine/Publishers/Publishers.Map.swift +351 -0
  84. package/Sources/Combine/Publishers/Publishers.MapError.swift +140 -0
  85. package/Sources/Combine/Publishers/Publishers.MeasureInterval.swift +187 -0
  86. package/Sources/Combine/Publishers/Publishers.Multicast.swift +284 -0
  87. package/Sources/Combine/Publishers/Publishers.Output.swift +241 -0
  88. package/Sources/Combine/Publishers/Publishers.PrefixUntilOutput.swift +197 -0
  89. package/Sources/Combine/Publishers/Publishers.PrefixWhile.swift +176 -0
  90. package/Sources/Combine/Publishers/Publishers.Print.swift +206 -0
  91. package/Sources/Combine/Publishers/Publishers.ReceiveOn.swift +227 -0
  92. package/Sources/Combine/Publishers/Publishers.Reduce.swift +204 -0
  93. package/Sources/Combine/Publishers/Publishers.RemoveDuplicates.swift +264 -0
  94. package/Sources/Combine/Publishers/Publishers.ReplaceEmpty.swift +201 -0
  95. package/Sources/Combine/Publishers/Publishers.ReplaceError.swift +211 -0
  96. package/Sources/Combine/Publishers/Publishers.Retry.swift +274 -0
  97. package/Sources/Combine/Publishers/Publishers.Scan.swift +331 -0
  98. package/Sources/Combine/Publishers/Publishers.Sequence.swift +437 -0
  99. package/Sources/Combine/Publishers/Publishers.SetFailureType.swift +120 -0
  100. package/Sources/Combine/Publishers/Publishers.Share.swift +104 -0
  101. package/Sources/Combine/Publishers/Publishers.SubscribeOn.swift +197 -0
  102. package/Sources/Combine/Publishers/Publishers.SwitchToLatest.swift +444 -0
  103. package/Sources/Combine/Publishers/Publishers.Throttle.swift +359 -0
  104. package/Sources/Combine/Publishers/Publishers.Timeout.swift +301 -0
  105. package/Sources/Combine/Publishers/Publishers.Zip.swift +720 -0
  106. package/Sources/Combine/Publishers/Publishers.swift +13 -0
  107. package/Sources/Combine/Publishers/Record.swift +237 -0
  108. package/Sources/Combine/Publishers/Result.Publisher.swift +337 -0
  109. package/Sources/Combine/Result.swift +46 -0
  110. package/Sources/Combine/Scheduler.swift +89 -0
  111. package/Sources/Combine/Schedulers.swift +211 -0
  112. package/Sources/Combine/Subject+Void.swift +17 -0
  113. package/Sources/Combine/Subscriber+Void.swift +20 -0
  114. package/Sources/Combine/Subscribers/Subscribers.Assign.swift +175 -0
  115. package/Sources/Combine/Subscribers/Subscribers.Completion.swift +90 -0
  116. package/Sources/Combine/Subscribers/Subscribers.Demand.swift +476 -0
  117. package/Sources/Combine/Subscribers/Subscribers.Sink.swift +206 -0
  118. package/Sources/Combine/Subscribers/Subscribers.swift +9 -0
  119. package/Sources/Combine/Subscription.swift +22 -0
  120. package/Sources/Combine/Subscriptions.swift +42 -0
  121. package/Sources/Combine/SwiftUIObservation.swift +10 -0
  122. package/Sources/Combine/_Introspection.swift +107 -0
  123. package/Sources/CommonCrypto/CommonCrypto.swift +80 -0
  124. package/Sources/Compression/Compression.swift +365 -0
  125. package/Sources/Compression/Deflate.swift +407 -0
  126. package/Sources/Compression/Zlib.swift +179 -0
  127. package/Sources/CoreFoundationTypes/CoreFoundationTypes.swift +101 -0
  128. package/Sources/CoreGraphics/CoreGraphics.swift +411 -0
  129. package/Sources/CoreGraphics/ProjectionTransforms.swift +28 -0
  130. package/Sources/CoreHaptics/CoreHaptics.swift +399 -0
  131. package/Sources/CoreImage/CIColor.swift +41 -0
  132. package/Sources/CoreImage/CIContext.swift +31 -0
  133. package/Sources/CoreImage/CIDetector.swift +57 -0
  134. package/Sources/CoreImage/CIFilter.swift +243 -0
  135. package/Sources/CoreImage/CIFilterBuiltins.swift +136 -0
  136. package/Sources/CoreImage/CIImage.swift +162 -0
  137. package/Sources/CoreImage/QRCode.swift +393 -0
  138. package/Sources/CoreLocation/Coordinate.swift +30 -0
  139. package/Sources/CoreLocation/Location.swift +65 -0
  140. package/Sources/CoreML/Evaluation.swift +414 -0
  141. package/Sources/CoreML/FeatureValue.swift +266 -0
  142. package/Sources/CoreML/Model.swift +269 -0
  143. package/Sources/CoreML/MultiArray.swift +92 -0
  144. package/Sources/CoreML/Specification.swift +233 -0
  145. package/Sources/CoreText/CoreText.swift +64 -0
  146. package/Sources/CoreTransferable/CoreTransferable.swift +606 -0
  147. package/Sources/CryptoKit/ChaChaPoly.swift +258 -0
  148. package/Sources/CryptoKit/CryptoKit.swift +375 -0
  149. package/Sources/CryptoKit/Curve25519.swift +317 -0
  150. package/Sources/CryptoKit/P256.swift +321 -0
  151. package/Sources/FoundationBridge/AppStorage.swift +165 -0
  152. package/Sources/FoundationBridge/AssetResources.swift +90 -0
  153. package/Sources/FoundationBridge/AsyncBytes.swift +128 -0
  154. package/Sources/FoundationBridge/AsyncImage.swift +116 -0
  155. package/Sources/FoundationBridge/AttributedStrings.swift +16 -0
  156. package/Sources/FoundationBridge/Bundle.swift +119 -0
  157. package/Sources/FoundationBridge/CombineExports.swift +8 -0
  158. package/Sources/FoundationBridge/CoreFoundation.swift +77 -0
  159. package/Sources/FoundationBridge/Dispatch.swift +458 -0
  160. package/Sources/FoundationBridge/EnvironmentFoundation.swift +41 -0
  161. package/Sources/FoundationBridge/FileImporter.swift +128 -0
  162. package/Sources/FoundationBridge/FileSystem.swift +68 -0
  163. package/Sources/FoundationBridge/FoundationBridge.swift +29 -0
  164. package/Sources/FoundationBridge/HostResolution.swift +31 -0
  165. package/Sources/FoundationBridge/ItemProvider.swift +655 -0
  166. package/Sources/FoundationBridge/KeyValueObserving.swift +138 -0
  167. package/Sources/FoundationBridge/Links.swift +127 -0
  168. package/Sources/FoundationBridge/ListFormatter.swift +32 -0
  169. package/Sources/FoundationBridge/Locale.swift +86 -0
  170. package/Sources/FoundationBridge/Localization.swift +149 -0
  171. package/Sources/FoundationBridge/Locks.swift +50 -0
  172. package/Sources/FoundationBridge/Markdown.swift +527 -0
  173. package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
  174. package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
  175. package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
  176. package/Sources/FoundationBridge/Operation.swift +195 -0
  177. package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
  178. package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
  179. package/Sources/FoundationBridge/SceneStorage.swift +78 -0
  180. package/Sources/FoundationBridge/SecurityExports.swift +8 -0
  181. package/Sources/FoundationBridge/Selector.swift +226 -0
  182. package/Sources/FoundationBridge/StringComparators.swift +17 -0
  183. package/Sources/FoundationBridge/Table.swift +211 -0
  184. package/Sources/FoundationBridge/TextAttributes.swift +42 -0
  185. package/Sources/FoundationBridge/Timer.swift +53 -0
  186. package/Sources/FoundationBridge/UITextChecker.swift +30 -0
  187. package/Sources/FoundationBridge/URLSession.swift +718 -0
  188. package/Sources/FoundationBridge/UserDefaults.swift +183 -0
  189. package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
  190. package/Sources/FoundationBridge/WebSocket.swift +187 -0
  191. package/Sources/FoundationModels/FoundationModels.swift +1098 -0
  192. package/Sources/ImageIO/GIF.swift +72 -0
  193. package/Sources/ImageIO/ImageIO.swift +248 -0
  194. package/Sources/ImageIO/ImageTypes.swift +28 -0
  195. package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
  196. package/Sources/LocalAuthentication/LAContext.swift +86 -0
  197. package/Sources/MapKit/Geometry.swift +223 -0
  198. package/Sources/MapKit/Map.swift +638 -0
  199. package/Sources/MapKit/MapView.swift +229 -0
  200. package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
  201. package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
  202. package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
  203. package/Sources/OSLog/OSLog.swift +6 -0
  204. package/Sources/Photos/Photos.swift +572 -0
  205. package/Sources/PhotosUI/PhotosPicker.swift +248 -0
  206. package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
  207. package/Sources/QuickLook/QuickLook.swift +168 -0
  208. package/Sources/SafariServices/SafariServices.swift +106 -0
  209. package/Sources/Security/Security.swift +332 -0
  210. package/Sources/StoreKit/AppStore.swift +207 -0
  211. package/Sources/StoreKit/Products.swift +280 -0
  212. package/Sources/StoreKit/RequestReview.swift +28 -0
  213. package/Sources/StoreKit/StoreKit1.swift +486 -0
  214. package/Sources/StoreKit/StoreViews.swift +428 -0
  215. package/Sources/StoreKit/Transactions.swift +197 -0
  216. package/Sources/SwiftData/Macros.swift +58 -0
  217. package/Sources/SwiftData/ModelActor.swift +38 -0
  218. package/Sources/SwiftData/ModelContainer.swift +129 -0
  219. package/Sources/SwiftData/ModelContext.swift +451 -0
  220. package/Sources/SwiftData/PersistentModel.swift +238 -0
  221. package/Sources/SwiftData/Properties.swift +261 -0
  222. package/Sources/SwiftData/Query.swift +256 -0
  223. package/Sources/SwiftData/Schema.swift +192 -0
  224. package/Sources/SwiftData/Store.swift +146 -0
  225. package/Sources/SwiftData/StringPredicates.swift +125 -0
  226. package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
  227. package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
  228. package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
  229. package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
  230. package/Sources/SwiftDataMacros/Plugin.swift +18 -0
  231. package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
  232. package/Sources/SwiftUI/API/Accessibility.swift +181 -0
  233. package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
  234. package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
  235. package/Sources/SwiftUI/API/Alert.swift +221 -0
  236. package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
  237. package/Sources/SwiftUI/API/Animation.swift +285 -0
  238. package/Sources/SwiftUI/API/App.swift +87 -0
  239. package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
  240. package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
  241. package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
  242. package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
  243. package/Sources/SwiftUI/API/Canvas.swift +337 -0
  244. package/Sources/SwiftUI/API/Color.swift +237 -0
  245. package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
  246. package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
  247. package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
  248. package/Sources/SwiftUI/API/Commands.swift +106 -0
  249. package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
  250. package/Sources/SwiftUI/API/ContentShape.swift +33 -0
  251. package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
  252. package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
  253. package/Sources/SwiftUI/API/Controls.swift +300 -0
  254. package/Sources/SwiftUI/API/CustomLayout.swift +442 -0
  255. package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
  256. package/Sources/SwiftUI/API/Decorations.swift +92 -0
  257. package/Sources/SwiftUI/API/EditMode.swift +212 -0
  258. package/Sources/SwiftUI/API/Effects.swift +388 -0
  259. package/Sources/SwiftUI/API/Entry.swift +8 -0
  260. package/Sources/SwiftUI/API/Environment.swift +439 -0
  261. package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
  262. package/Sources/SwiftUI/API/Focus.swift +137 -0
  263. package/Sources/SwiftUI/API/Font.swift +131 -0
  264. package/Sources/SwiftUI/API/Gauge.swift +290 -0
  265. package/Sources/SwiftUI/API/Geometry.swift +89 -0
  266. package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
  267. package/Sources/SwiftUI/API/GeometryReader.swift +135 -0
  268. package/Sources/SwiftUI/API/GestureState.swift +65 -0
  269. package/Sources/SwiftUI/API/Gestures.swift +342 -0
  270. package/Sources/SwiftUI/API/Glass.swift +127 -0
  271. package/Sources/SwiftUI/API/Grid.swift +188 -0
  272. package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
  273. package/Sources/SwiftUI/API/KeyPress.swift +54 -0
  274. package/Sources/SwiftUI/API/LabelStyle.swift +124 -0
  275. package/Sources/SwiftUI/API/Layout.swift +220 -0
  276. package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
  277. package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
  278. package/Sources/SwiftUI/API/Lists.swift +331 -0
  279. package/Sources/SwiftUI/API/Menu.swift +58 -0
  280. package/Sources/SwiftUI/API/Modifiers.swift +313 -0
  281. package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
  282. package/Sources/SwiftUI/API/Namespace.swift +44 -0
  283. package/Sources/SwiftUI/API/Navigation.swift +386 -0
  284. package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
  285. package/Sources/SwiftUI/API/ObservableObject.swift +293 -0
  286. package/Sources/SwiftUI/API/OnChange.swift +48 -0
  287. package/Sources/SwiftUI/API/Path.swift +543 -0
  288. package/Sources/SwiftUI/API/Phase8Controls.swift +411 -0
  289. package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
  290. package/Sources/SwiftUI/API/Picker.swift +185 -0
  291. package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
  292. package/Sources/SwiftUI/API/Popover.swift +41 -0
  293. package/Sources/SwiftUI/API/Preferences.swift +262 -0
  294. package/Sources/SwiftUI/API/Presentation.swift +122 -0
  295. package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
  296. package/Sources/SwiftUI/API/Primitives.swift +517 -0
  297. package/Sources/SwiftUI/API/Publishers.swift +107 -0
  298. package/Sources/SwiftUI/API/Redaction.swift +75 -0
  299. package/Sources/SwiftUI/API/RowActions.swift +84 -0
  300. package/Sources/SwiftUI/API/Scenes.swift +131 -0
  301. package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
  302. package/Sources/SwiftUI/API/ScrollTargets.swift +104 -0
  303. package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
  304. package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
  305. package/Sources/SwiftUI/API/Shape.swift +214 -0
  306. package/Sources/SwiftUI/API/ShapeStyle.swift +409 -0
  307. package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
  308. package/Sources/SwiftUI/API/Sharing.swift +193 -0
  309. package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
  310. package/Sources/SwiftUI/API/State.swift +144 -0
  311. package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
  312. package/Sources/SwiftUI/API/StrokeStyle.swift +30 -0
  313. package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
  314. package/Sources/SwiftUI/API/TabContent.swift +841 -0
  315. package/Sources/SwiftUI/API/Table.swift +382 -0
  316. package/Sources/SwiftUI/API/Tabs.swift +263 -0
  317. package/Sources/SwiftUI/API/Tasks.swift +35 -0
  318. package/Sources/SwiftUI/API/Text.swift +386 -0
  319. package/Sources/SwiftUI/API/TextDates.swift +61 -0
  320. package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
  321. package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
  322. package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
  323. package/Sources/SwiftUI/API/Timeline.swift +212 -0
  324. package/Sources/SwiftUI/API/Toolbar.swift +251 -0
  325. package/Sources/SwiftUI/API/Transfer.swift +145 -0
  326. package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
  327. package/Sources/SwiftUI/API/Video.swift +64 -0
  328. package/Sources/SwiftUI/API/View.swift +215 -0
  329. package/Sources/SwiftUI/API/ViewModifier.swift +43 -0
  330. package/Sources/SwiftUI/API/VisualEffect.swift +155 -0
  331. package/Sources/SwiftUI/API/Windows.swift +25 -0
  332. package/Sources/SwiftUI/Charts/Axis.swift +325 -0
  333. package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
  334. package/Sources/SwiftUI/Charts/Chart.swift +660 -0
  335. package/Sources/SwiftUI/Charts/ChartContent.swift +376 -0
  336. package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
  337. package/Sources/SwiftUI/Charts/Marks.swift +204 -0
  338. package/Sources/SwiftUI/Charts/Plottable.swift +99 -0
  339. package/Sources/SwiftUI/Charts/Scales.swift +326 -0
  340. package/Sources/SwiftUI/Localization/Localization.swift +498 -0
  341. package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
  342. package/Sources/SwiftUI/Runtime/Executor.swift +85 -0
  343. package/Sources/SwiftUI/Runtime/Exports.swift +101 -0
  344. package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
  345. package/Sources/SwiftUI/Runtime/JSON.swift +143 -0
  346. package/Sources/SwiftUI/Runtime/JSONParser.swift +443 -0
  347. package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
  348. package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
  349. package/Sources/SwiftUI/Runtime/Ops.swift +152 -0
  350. package/Sources/SwiftUI/Runtime/Reconciler.swift +219 -0
  351. package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
  352. package/Sources/SwiftUI/Runtime/Runtime.swift +2146 -0
  353. package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
  354. package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
  355. package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
  356. package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
  357. package/Sources/Symbols/Symbols.swift +25 -0
  358. package/Sources/Translation/Translation.swift +423 -0
  359. package/Sources/UIKit/Activity.swift +213 -0
  360. package/Sources/UIKit/Alerts.swift +69 -0
  361. package/Sources/UIKit/AppDelegate.swift +222 -0
  362. package/Sources/UIKit/Appearance.swift +84 -0
  363. package/Sources/UIKit/ColorConversions.swift +70 -0
  364. package/Sources/UIKit/Controls.swift +225 -0
  365. package/Sources/UIKit/Device.swift +200 -0
  366. package/Sources/UIKit/Feedback.swift +65 -0
  367. package/Sources/UIKit/Font.swift +307 -0
  368. package/Sources/UIKit/Graphics.swift +204 -0
  369. package/Sources/UIKit/HostingController.swift +185 -0
  370. package/Sources/UIKit/Identity.swift +24 -0
  371. package/Sources/UIKit/Introspectable.swift +510 -0
  372. package/Sources/UIKit/Pasteboard.swift +363 -0
  373. package/Sources/UIKit/PhotoAlbum.swift +81 -0
  374. package/Sources/UIKit/RemoteNotifications.swift +15 -0
  375. package/Sources/UIKit/Representable.swift +288 -0
  376. package/Sources/UIKit/SafeArea.swift +12 -0
  377. package/Sources/UIKit/SceneDelegates.swift +132 -0
  378. package/Sources/UIKit/Scenes.swift +40 -0
  379. package/Sources/UIKit/ScrollView.swift +157 -0
  380. package/Sources/UIKit/ShortcutItems.swift +67 -0
  381. package/Sources/UIKit/SymbolConfiguration.swift +124 -0
  382. package/Sources/UIKit/TargetAction.swift +123 -0
  383. package/Sources/UIKit/TextPaste.swift +161 -0
  384. package/Sources/UIKit/TextView.swift +538 -0
  385. package/Sources/UIKit/UIKit.swift +292 -0
  386. package/Sources/UIKit/UIView.swift +855 -0
  387. package/Sources/UIKit/ViewTranslation.swift +311 -0
  388. package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
  389. package/Sources/UserNotifications/Content.swift +370 -0
  390. package/Sources/UserNotifications/NotificationCenter.swift +309 -0
  391. package/Sources/WeatherKit/WeatherKit.swift +228 -0
  392. package/Sources/WebKit/WebKit.swift +245 -0
  393. package/Sources/os/os.swift +376 -0
  394. package/Sources/zlib/zlib.swift +6 -0
  395. package/index.d.ts +2 -0
  396. package/index.mjs +16 -0
  397. package/manifest.d.mts +2 -0
  398. package/manifest.mjs +39 -0
  399. package/package.json +30 -4
  400. 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
+ }