@swiftbrowser/swift 0.1.0 → 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 (393) hide show
  1. package/Package.swift +200 -9
  2. package/README.md +7 -9
  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 +0 -4
  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/{_FoundationCommon → FoundationBridge}/Bundle.swift +41 -4
  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 +24 -72
  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/Localization.swift +149 -0
  170. package/Sources/FoundationBridge/Locks.swift +50 -0
  171. package/Sources/FoundationBridge/Markdown.swift +527 -0
  172. package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
  173. package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
  174. package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
  175. package/Sources/FoundationBridge/Operation.swift +195 -0
  176. package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
  177. package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
  178. package/Sources/FoundationBridge/SceneStorage.swift +78 -0
  179. package/Sources/FoundationBridge/SecurityExports.swift +8 -0
  180. package/Sources/FoundationBridge/Selector.swift +226 -0
  181. package/Sources/FoundationBridge/StringComparators.swift +17 -0
  182. package/Sources/FoundationBridge/Table.swift +211 -0
  183. package/Sources/FoundationBridge/TextAttributes.swift +42 -0
  184. package/Sources/FoundationBridge/Timer.swift +6 -1
  185. package/Sources/FoundationBridge/URLSession.swift +718 -0
  186. package/Sources/{_FoundationCommon → FoundationBridge}/UserDefaults.swift +17 -4
  187. package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
  188. package/Sources/FoundationBridge/WebSocket.swift +187 -0
  189. package/Sources/FoundationModels/FoundationModels.swift +1098 -0
  190. package/Sources/ImageIO/GIF.swift +72 -0
  191. package/Sources/ImageIO/ImageIO.swift +248 -0
  192. package/Sources/ImageIO/ImageTypes.swift +28 -0
  193. package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
  194. package/Sources/LocalAuthentication/LAContext.swift +86 -0
  195. package/Sources/MapKit/Geometry.swift +223 -0
  196. package/Sources/MapKit/Map.swift +638 -0
  197. package/Sources/MapKit/MapView.swift +229 -0
  198. package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
  199. package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
  200. package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
  201. package/Sources/OSLog/OSLog.swift +6 -0
  202. package/Sources/Photos/Photos.swift +572 -0
  203. package/Sources/PhotosUI/PhotosPicker.swift +248 -0
  204. package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
  205. package/Sources/QuickLook/QuickLook.swift +168 -0
  206. package/Sources/SafariServices/SafariServices.swift +106 -0
  207. package/Sources/Security/Security.swift +332 -0
  208. package/Sources/StoreKit/AppStore.swift +207 -0
  209. package/Sources/StoreKit/Products.swift +280 -0
  210. package/Sources/StoreKit/RequestReview.swift +28 -0
  211. package/Sources/StoreKit/StoreKit1.swift +486 -0
  212. package/Sources/StoreKit/StoreViews.swift +428 -0
  213. package/Sources/StoreKit/Transactions.swift +197 -0
  214. package/Sources/SwiftData/Macros.swift +58 -0
  215. package/Sources/SwiftData/ModelActor.swift +38 -0
  216. package/Sources/SwiftData/ModelContainer.swift +129 -0
  217. package/Sources/SwiftData/ModelContext.swift +451 -0
  218. package/Sources/SwiftData/PersistentModel.swift +238 -0
  219. package/Sources/SwiftData/Properties.swift +261 -0
  220. package/Sources/SwiftData/Query.swift +256 -0
  221. package/Sources/SwiftData/Schema.swift +192 -0
  222. package/Sources/SwiftData/Store.swift +146 -0
  223. package/Sources/SwiftData/StringPredicates.swift +125 -0
  224. package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
  225. package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
  226. package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
  227. package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
  228. package/Sources/SwiftDataMacros/Plugin.swift +18 -0
  229. package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
  230. package/Sources/SwiftUI/API/Accessibility.swift +55 -6
  231. package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
  232. package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
  233. package/Sources/SwiftUI/API/Alert.swift +1 -1
  234. package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
  235. package/Sources/SwiftUI/API/Animation.swift +37 -5
  236. package/Sources/SwiftUI/API/App.swift +31 -1
  237. package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
  238. package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
  239. package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
  240. package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
  241. package/Sources/SwiftUI/API/Canvas.swift +337 -0
  242. package/Sources/SwiftUI/API/Color.swift +104 -28
  243. package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
  244. package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
  245. package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
  246. package/Sources/SwiftUI/API/Commands.swift +106 -0
  247. package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
  248. package/Sources/SwiftUI/API/ContentShape.swift +33 -0
  249. package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
  250. package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
  251. package/Sources/SwiftUI/API/Controls.swift +59 -27
  252. package/Sources/SwiftUI/API/CustomLayout.swift +49 -10
  253. package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
  254. package/Sources/SwiftUI/API/Decorations.swift +1 -1
  255. package/Sources/SwiftUI/API/EditMode.swift +25 -82
  256. package/Sources/SwiftUI/API/Effects.swift +105 -7
  257. package/Sources/SwiftUI/API/Entry.swift +8 -0
  258. package/Sources/SwiftUI/API/Environment.swift +93 -9
  259. package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
  260. package/Sources/SwiftUI/API/Focus.swift +11 -3
  261. package/Sources/SwiftUI/API/Gauge.swift +3 -2
  262. package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
  263. package/Sources/SwiftUI/API/GeometryReader.swift +13 -2
  264. package/Sources/SwiftUI/API/GestureState.swift +65 -0
  265. package/Sources/SwiftUI/API/Gestures.swift +1 -1
  266. package/Sources/SwiftUI/API/Glass.swift +127 -0
  267. package/Sources/SwiftUI/API/Grid.swift +1 -1
  268. package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
  269. package/Sources/SwiftUI/API/KeyPress.swift +54 -0
  270. package/Sources/SwiftUI/API/LabelStyle.swift +13 -6
  271. package/Sources/SwiftUI/API/Layout.swift +67 -12
  272. package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
  273. package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
  274. package/Sources/SwiftUI/API/Lists.swift +61 -6
  275. package/Sources/SwiftUI/API/Menu.swift +8 -1
  276. package/Sources/SwiftUI/API/Modifiers.swift +80 -10
  277. package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
  278. package/Sources/SwiftUI/API/Namespace.swift +44 -0
  279. package/Sources/SwiftUI/API/Navigation.swift +24 -9
  280. package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
  281. package/Sources/SwiftUI/API/ObservableObject.swift +16 -2
  282. package/Sources/SwiftUI/API/Path.swift +543 -0
  283. package/Sources/SwiftUI/API/Phase8Controls.swift +48 -31
  284. package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
  285. package/Sources/SwiftUI/API/Picker.swift +11 -2
  286. package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
  287. package/Sources/SwiftUI/API/Popover.swift +41 -0
  288. package/Sources/SwiftUI/API/Preferences.swift +262 -0
  289. package/Sources/SwiftUI/API/Presentation.swift +17 -4
  290. package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
  291. package/Sources/SwiftUI/API/Primitives.swift +164 -37
  292. package/Sources/SwiftUI/API/Publishers.swift +4 -4
  293. package/Sources/SwiftUI/API/Redaction.swift +75 -0
  294. package/Sources/SwiftUI/API/RowActions.swift +3 -2
  295. package/Sources/SwiftUI/API/Scenes.swift +131 -0
  296. package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
  297. package/Sources/SwiftUI/API/ScrollTargets.swift +3 -3
  298. package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
  299. package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
  300. package/Sources/SwiftUI/API/Shape.swift +214 -0
  301. package/Sources/SwiftUI/API/ShapeStyle.swift +105 -7
  302. package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
  303. package/Sources/SwiftUI/API/Sharing.swift +193 -0
  304. package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
  305. package/Sources/SwiftUI/API/State.swift +18 -1
  306. package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
  307. package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
  308. package/Sources/SwiftUI/API/TabContent.swift +841 -0
  309. package/Sources/SwiftUI/API/Table.swift +382 -0
  310. package/Sources/SwiftUI/API/Tabs.swift +148 -4
  311. package/Sources/SwiftUI/API/Tasks.swift +2 -2
  312. package/Sources/SwiftUI/API/Text.swift +386 -0
  313. package/Sources/SwiftUI/API/TextDates.swift +61 -0
  314. package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
  315. package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
  316. package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
  317. package/Sources/SwiftUI/API/Toolbar.swift +52 -16
  318. package/Sources/SwiftUI/API/Transfer.swift +145 -0
  319. package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
  320. package/Sources/SwiftUI/API/Video.swift +64 -0
  321. package/Sources/SwiftUI/API/View.swift +10 -2
  322. package/Sources/SwiftUI/API/ViewModifier.swift +4 -1
  323. package/Sources/SwiftUI/API/VisualEffect.swift +74 -1
  324. package/Sources/SwiftUI/API/Windows.swift +25 -0
  325. package/Sources/SwiftUI/Charts/Axis.swift +7 -1
  326. package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
  327. package/Sources/SwiftUI/Charts/Chart.swift +17 -3
  328. package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
  329. package/Sources/SwiftUI/Localization/Localization.swift +498 -0
  330. package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
  331. package/Sources/SwiftUI/Runtime/Executor.swift +2 -0
  332. package/Sources/SwiftUI/Runtime/Exports.swift +37 -1
  333. package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
  334. package/Sources/SwiftUI/Runtime/JSON.swift +76 -4
  335. package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
  336. package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
  337. package/Sources/SwiftUI/Runtime/Ops.swift +58 -12
  338. package/Sources/SwiftUI/Runtime/Reconciler.swift +10 -1
  339. package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
  340. package/Sources/SwiftUI/Runtime/Runtime.swift +977 -198
  341. package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
  342. package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
  343. package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
  344. package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
  345. package/Sources/Symbols/Symbols.swift +25 -0
  346. package/Sources/Translation/Translation.swift +423 -0
  347. package/Sources/UIKit/Activity.swift +213 -0
  348. package/Sources/UIKit/Alerts.swift +69 -0
  349. package/Sources/UIKit/AppDelegate.swift +222 -0
  350. package/Sources/UIKit/Appearance.swift +84 -0
  351. package/Sources/UIKit/ColorConversions.swift +70 -0
  352. package/Sources/UIKit/Controls.swift +225 -0
  353. package/Sources/UIKit/Device.swift +200 -0
  354. package/Sources/UIKit/Feedback.swift +65 -0
  355. package/Sources/UIKit/Font.swift +307 -0
  356. package/Sources/UIKit/Graphics.swift +204 -0
  357. package/Sources/UIKit/HostingController.swift +185 -0
  358. package/Sources/UIKit/Identity.swift +24 -0
  359. package/Sources/UIKit/Introspectable.swift +510 -0
  360. package/Sources/UIKit/Pasteboard.swift +363 -0
  361. package/Sources/UIKit/PhotoAlbum.swift +81 -0
  362. package/Sources/UIKit/RemoteNotifications.swift +15 -0
  363. package/Sources/UIKit/Representable.swift +288 -0
  364. package/Sources/UIKit/SafeArea.swift +12 -0
  365. package/Sources/UIKit/SceneDelegates.swift +132 -0
  366. package/Sources/UIKit/Scenes.swift +40 -0
  367. package/Sources/UIKit/ScrollView.swift +157 -0
  368. package/Sources/UIKit/ShortcutItems.swift +67 -0
  369. package/Sources/UIKit/SymbolConfiguration.swift +124 -0
  370. package/Sources/UIKit/TargetAction.swift +123 -0
  371. package/Sources/UIKit/TextPaste.swift +161 -0
  372. package/Sources/UIKit/TextView.swift +538 -0
  373. package/Sources/UIKit/UIKit.swift +292 -0
  374. package/Sources/UIKit/UIView.swift +855 -0
  375. package/Sources/UIKit/ViewTranslation.swift +311 -0
  376. package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
  377. package/Sources/UserNotifications/Content.swift +370 -0
  378. package/Sources/UserNotifications/NotificationCenter.swift +309 -0
  379. package/Sources/WeatherKit/WeatherKit.swift +228 -0
  380. package/Sources/WebKit/WebKit.swift +245 -0
  381. package/Sources/os/os.swift +376 -0
  382. package/Sources/zlib/zlib.swift +6 -0
  383. package/index.d.ts +1 -1
  384. package/index.mjs +2 -2
  385. package/manifest.d.mts +2 -0
  386. package/manifest.mjs +39 -0
  387. package/package.json +5 -3
  388. package/sync-sources.mjs +21 -7
  389. package/Sources/FoundationLite/Common.swift +0 -3
  390. package/Sources/FoundationLite/FoundationLite.swift +0 -171
  391. package/Sources/FoundationLite/Interaction.swift +0 -146
  392. package/Sources/FoundationLite/Timer.swift +0 -48
  393. package/Sources/_FoundationCommon/_FoundationCommon.swift +0 -10
@@ -0,0 +1,384 @@
1
+ // ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
+ // ┃ ┃
3
+ // ┃ Auto-generated from GYB template. DO NOT EDIT! ┃
4
+ // ┃ ┃
5
+ // ┃ ┃
6
+ // ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
7
+ //
8
+ // Publishers.MapKeyPath.swift.gyb
9
+ //
10
+ //
11
+ // Created by Sergej Jaskiewicz on 03/10/2019.
12
+ //
13
+
14
+ // swiftlint:disable large_tuple
15
+
16
+ extension Publisher {
17
+ /// Publishes the value of the key path.
18
+ ///
19
+ /// In the following example, the `map(_:)` operator uses the Swift
20
+ /// key path syntax to access the `die` member
21
+ /// of the `DiceRoll` structure published by the `Just` publisher.
22
+ ///
23
+ /// The downstream sink subscriber receives only
24
+ /// the value of this `Int`,
25
+ /// not the entire `DiceRoll`.
26
+ ///
27
+ /// struct DiceRoll {
28
+ /// let die: Int
29
+ /// }
30
+ ///
31
+ /// cancellable = Just(DiceRoll(die: Int.random(in: 1...6)))
32
+ /// .map(\.die)
33
+ /// .sink {
34
+ /// print ("Rolled: \($0)")
35
+ /// }
36
+ /// // Prints "Rolled: 4 (or some other random value).
37
+ ///
38
+ /// - Parameters:
39
+ /// - keyPath: The key path of a property on `Output`.
40
+ /// - Returns: A publisher that publishes the value of the key path.
41
+ public func map<Result>(
42
+ _ keyPath: KeyPath<Output, Result>
43
+ ) -> Publishers.MapKeyPath<Self, Result> {
44
+ return .init(
45
+ upstream: self,
46
+ keyPath: keyPath
47
+ )
48
+ }
49
+ /// Publishes the values of two key paths as a tuple.
50
+ ///
51
+ /// In the following example, the `map(_:_:)` operator uses the Swift
52
+ /// key path syntax to access the `die1` and `die2` members
53
+ /// of the `DiceRoll` structure published by the `Just` publisher.
54
+ ///
55
+ /// The downstream sink subscriber receives only
56
+ /// these two values (as an `(Int, Int)` tuple),
57
+ /// not the entire `DiceRoll`.
58
+ ///
59
+ /// struct DiceRoll {
60
+ /// let die1: Int
61
+ /// let die2: Int
62
+ /// }
63
+ ///
64
+ /// cancellable = Just(DiceRoll(die1: Int.random(in: 1...6),
65
+ /// die2: Int.random(in: 1...6)))
66
+ /// .map(\.die1, \.die2)
67
+ /// .sink { values in
68
+ /// print("""
69
+ /// Rolled: \(values.0), \(values.1) \
70
+ /// (total \(values.0 + values.1))
71
+ /// """)
72
+ /// }
73
+ /// // Prints "Rolled: 4, 1 (total: 5)" (or other random values).
74
+ ///
75
+ /// - Parameters:
76
+ /// - keyPath0: The key path of a property on `Output`.
77
+ /// - keyPath1: The key path of another property on `Output`.
78
+ /// - Returns: A publisher that publishes the values of two key paths as a tuple.
79
+ public func map<Result0, Result1>(
80
+ _ keyPath0: KeyPath<Output, Result0>,
81
+ _ keyPath1: KeyPath<Output, Result1>
82
+ ) -> Publishers.MapKeyPath2<Self, Result0, Result1> {
83
+ return .init(
84
+ upstream: self,
85
+ keyPath0: keyPath0,
86
+ keyPath1: keyPath1
87
+ )
88
+ }
89
+ /// Publishes the values of three key paths as a tuple.
90
+ ///
91
+ /// In the following example, the `map(_:_:_:)` operator uses the Swift
92
+ /// key path syntax to access the `die1`, `die2`, and `die3` members
93
+ /// of the `DiceRoll` structure published by the `Just` publisher.
94
+ ///
95
+ /// The downstream sink subscriber receives only
96
+ /// these three values (as an `(Int, Int, Int)` tuple),
97
+ /// not the entire `DiceRoll`.
98
+ ///
99
+ /// struct DiceRoll {
100
+ /// let die1: Int
101
+ /// let die2: Int
102
+ /// let die3: Int
103
+ /// }
104
+ ///
105
+ /// cancellable = Just(DiceRoll(die1: Int.random(in: 1...6),
106
+ /// die2: Int.random(in: 1...6),
107
+ /// die3: Int.random(in: 1...6)))
108
+ /// .map(\.die1, \.die2, \.die3)
109
+ /// .sink { values in
110
+ /// print("""
111
+ /// Rolled: \(values.0), \(values.1), \(values.2) \
112
+ /// (total \(values.0 + values.1 + values.2))
113
+ /// """)
114
+ /// }
115
+ /// // Prints "Rolled: 3, 5, 4 (total: 12)" (or other random values).
116
+ ///
117
+ /// - Parameters:
118
+ /// - keyPath0: The key path of a property on `Output`.
119
+ /// - keyPath1: The key path of a second property on `Output`.
120
+ /// - keyPath2: The key path of a third property on `Output`.
121
+ /// - Returns: A publisher that publishes the values of three key paths as a tuple.
122
+ public func map<Result0, Result1, Result2>(
123
+ _ keyPath0: KeyPath<Output, Result0>,
124
+ _ keyPath1: KeyPath<Output, Result1>,
125
+ _ keyPath2: KeyPath<Output, Result2>
126
+ ) -> Publishers.MapKeyPath3<Self, Result0, Result1, Result2> {
127
+ return .init(
128
+ upstream: self,
129
+ keyPath0: keyPath0,
130
+ keyPath1: keyPath1,
131
+ keyPath2: keyPath2
132
+ )
133
+ }
134
+ }
135
+
136
+ extension Publishers {
137
+
138
+ /// A publisher that publishes the value of a key path.
139
+ public struct MapKeyPath<Upstream: Publisher, Output>: Publisher {
140
+
141
+ public typealias Failure = Upstream.Failure
142
+
143
+ /// The publisher from which this publisher receives elements.
144
+ public let upstream: Upstream
145
+
146
+ /// The key path of a property to publish.
147
+ public let keyPath: KeyPath<Upstream.Output, Output>
148
+
149
+ public func receive<Downstream: Subscriber>(subscriber: Downstream)
150
+ where Output == Downstream.Input, Failure == Downstream.Failure
151
+ {
152
+ upstream.subscribe(Inner(downstream: subscriber, parent: self))
153
+ }
154
+ }
155
+
156
+ /// A publisher that publishes the values of two key paths as a tuple.
157
+ public struct MapKeyPath2<Upstream: Publisher, Output0, Output1>: Publisher {
158
+
159
+ public typealias Output = (Output0, Output1)
160
+
161
+ public typealias Failure = Upstream.Failure
162
+
163
+ /// The publisher from which this publisher receives elements.
164
+ public let upstream: Upstream
165
+
166
+ /// The key path of a property to publish.
167
+ public let keyPath0: KeyPath<Upstream.Output, Output0>
168
+
169
+ /// The key path of a second property to publish.
170
+ public let keyPath1: KeyPath<Upstream.Output, Output1>
171
+
172
+ public func receive<Downstream: Subscriber>(subscriber: Downstream)
173
+ where Output == Downstream.Input, Failure == Downstream.Failure
174
+ {
175
+ upstream.subscribe(Inner(downstream: subscriber, parent: self))
176
+ }
177
+ }
178
+
179
+ /// A publisher that publishes the values of three key paths as a tuple.
180
+ public struct MapKeyPath3<Upstream: Publisher, Output0, Output1, Output2>: Publisher {
181
+
182
+ public typealias Output = (Output0, Output1, Output2)
183
+
184
+ public typealias Failure = Upstream.Failure
185
+
186
+ /// The publisher from which this publisher receives elements.
187
+ public let upstream: Upstream
188
+
189
+ /// The key path of a property to publish.
190
+ public let keyPath0: KeyPath<Upstream.Output, Output0>
191
+
192
+ /// The key path of a second property to publish.
193
+ public let keyPath1: KeyPath<Upstream.Output, Output1>
194
+
195
+ /// The key path of a third property to publish.
196
+ public let keyPath2: KeyPath<Upstream.Output, Output2>
197
+
198
+ public func receive<Downstream: Subscriber>(subscriber: Downstream)
199
+ where Output == Downstream.Input, Failure == Downstream.Failure
200
+ {
201
+ upstream.subscribe(Inner(downstream: subscriber, parent: self))
202
+ }
203
+ }
204
+ }
205
+
206
+ extension Publishers.MapKeyPath {
207
+
208
+ private struct Inner<Downstream: Subscriber>
209
+ : Subscriber,
210
+ CustomStringConvertible,
211
+ CustomReflectable,
212
+ CustomPlaygroundDisplayConvertible
213
+ where Downstream.Input == Output, Downstream.Failure == Upstream.Failure
214
+ {
215
+ typealias Input = Upstream.Output
216
+
217
+ typealias Failure = Upstream.Failure
218
+
219
+ private let downstream: Downstream
220
+
221
+ private let keyPath: KeyPath<Input, Output>
222
+
223
+ let combineIdentifier = CombineIdentifier()
224
+
225
+ fileprivate init(
226
+ downstream: Downstream,
227
+ parent: Publishers.MapKeyPath<Upstream, Output>
228
+ ) {
229
+ self.downstream = downstream
230
+ self.keyPath = parent.keyPath
231
+ }
232
+
233
+ func receive(subscription: Subscription) {
234
+ downstream.receive(subscription: subscription)
235
+ }
236
+
237
+ func receive(_ input: Input) -> Subscribers.Demand {
238
+ let output = (
239
+ input[keyPath: keyPath]
240
+ )
241
+ return downstream.receive(output)
242
+ }
243
+
244
+ func receive(completion: Subscribers.Completion<Failure>) {
245
+ downstream.receive(completion: completion)
246
+ }
247
+
248
+ var description: String { return "ValueForKey" }
249
+
250
+ var customMirror: Mirror {
251
+ let children: [Mirror.Child] = [
252
+ ("keyPath", keyPath),
253
+ ]
254
+ return Mirror(self, children: children)
255
+ }
256
+
257
+ var playgroundDescription: Any { return description }
258
+ }
259
+ }
260
+
261
+ extension Publishers.MapKeyPath2 {
262
+
263
+ private struct Inner<Downstream: Subscriber>
264
+ : Subscriber,
265
+ CustomStringConvertible,
266
+ CustomReflectable,
267
+ CustomPlaygroundDisplayConvertible
268
+ where Downstream.Input == Output, Downstream.Failure == Upstream.Failure
269
+ {
270
+ typealias Input = Upstream.Output
271
+
272
+ typealias Failure = Upstream.Failure
273
+
274
+ private let downstream: Downstream
275
+
276
+ private let keyPath0: KeyPath<Input, Output0>
277
+
278
+ private let keyPath1: KeyPath<Input, Output1>
279
+
280
+ let combineIdentifier = CombineIdentifier()
281
+
282
+ fileprivate init(
283
+ downstream: Downstream,
284
+ parent: Publishers.MapKeyPath2<Upstream, Output0, Output1>
285
+ ) {
286
+ self.downstream = downstream
287
+ self.keyPath0 = parent.keyPath0
288
+ self.keyPath1 = parent.keyPath1
289
+ }
290
+
291
+ func receive(subscription: Subscription) {
292
+ downstream.receive(subscription: subscription)
293
+ }
294
+
295
+ func receive(_ input: Input) -> Subscribers.Demand {
296
+ let output = (
297
+ input[keyPath: keyPath0],
298
+ input[keyPath: keyPath1]
299
+ )
300
+ return downstream.receive(output)
301
+ }
302
+
303
+ func receive(completion: Subscribers.Completion<Failure>) {
304
+ downstream.receive(completion: completion)
305
+ }
306
+
307
+ var description: String { return "ValueForKeys" }
308
+
309
+ var customMirror: Mirror {
310
+ let children: [Mirror.Child] = [
311
+ ("keyPath0", keyPath0),
312
+ ("keyPath1", keyPath1),
313
+ ]
314
+ return Mirror(self, children: children)
315
+ }
316
+
317
+ var playgroundDescription: Any { return description }
318
+ }
319
+ }
320
+
321
+ extension Publishers.MapKeyPath3 {
322
+
323
+ private struct Inner<Downstream: Subscriber>
324
+ : Subscriber,
325
+ CustomStringConvertible,
326
+ CustomReflectable,
327
+ CustomPlaygroundDisplayConvertible
328
+ where Downstream.Input == Output, Downstream.Failure == Upstream.Failure
329
+ {
330
+ typealias Input = Upstream.Output
331
+
332
+ typealias Failure = Upstream.Failure
333
+
334
+ private let downstream: Downstream
335
+
336
+ private let keyPath0: KeyPath<Input, Output0>
337
+
338
+ private let keyPath1: KeyPath<Input, Output1>
339
+
340
+ private let keyPath2: KeyPath<Input, Output2>
341
+
342
+ let combineIdentifier = CombineIdentifier()
343
+
344
+ fileprivate init(
345
+ downstream: Downstream,
346
+ parent: Publishers.MapKeyPath3<Upstream, Output0, Output1, Output2>
347
+ ) {
348
+ self.downstream = downstream
349
+ self.keyPath0 = parent.keyPath0
350
+ self.keyPath1 = parent.keyPath1
351
+ self.keyPath2 = parent.keyPath2
352
+ }
353
+
354
+ func receive(subscription: Subscription) {
355
+ downstream.receive(subscription: subscription)
356
+ }
357
+
358
+ func receive(_ input: Input) -> Subscribers.Demand {
359
+ let output = (
360
+ input[keyPath: keyPath0],
361
+ input[keyPath: keyPath1],
362
+ input[keyPath: keyPath2]
363
+ )
364
+ return downstream.receive(output)
365
+ }
366
+
367
+ func receive(completion: Subscribers.Completion<Failure>) {
368
+ downstream.receive(completion: completion)
369
+ }
370
+
371
+ var description: String { return "ValueForKeys" }
372
+
373
+ var customMirror: Mirror {
374
+ let children: [Mirror.Child] = [
375
+ ("keyPath0", keyPath0),
376
+ ("keyPath1", keyPath1),
377
+ ("keyPath2", keyPath2),
378
+ ]
379
+ return Mirror(self, children: children)
380
+ }
381
+
382
+ var playgroundDescription: Any { return description }
383
+ }
384
+ }
@@ -0,0 +1,313 @@
1
+ //
2
+ // Just.swift
3
+ //
4
+ //
5
+ // Created by Sergej Jaskiewicz on 16.06.2019.
6
+ //
7
+
8
+ /// A publisher that emits an output to each subscriber just once, and then finishes.
9
+ ///
10
+ /// You can use a `Just` publisher to start a chain of publishers. A `Just` publisher is
11
+ /// also useful when replacing a value with `Publishers.Catch`.
12
+ ///
13
+ /// In contrast with `Result.Publisher`, a `Just` publisher can’t fail with an error.
14
+ /// And unlike `Optional.Publisher`, a `Just` publisher always produces a value.
15
+ public struct Just<Output>: Publisher {
16
+
17
+ public typealias Failure = Never
18
+
19
+ /// The one element that the publisher emits.
20
+ public let output: Output
21
+
22
+ /// Initializes a publisher that emits the specified output just once.
23
+ ///
24
+ /// - Parameter output: The one element that the publisher emits.
25
+ public init(_ output: Output) {
26
+ self.output = output
27
+ }
28
+
29
+ public func receive<Downstream: Subscriber>(subscriber: Downstream)
30
+ where Downstream.Input == Output, Downstream.Failure == Never
31
+ {
32
+ subscriber.receive(subscription: Inner(value: output, downstream: subscriber))
33
+ }
34
+ }
35
+
36
+ extension Just: Equatable where Output: Equatable {}
37
+
38
+ extension Just where Output: Comparable {
39
+
40
+ public func min() -> Just<Output> {
41
+ return self
42
+ }
43
+
44
+ public func max() -> Just<Output> {
45
+ return self
46
+ }
47
+ }
48
+
49
+ extension Just where Output: Equatable {
50
+
51
+ public func contains(_ output: Output) -> Just<Bool> {
52
+ return .init(self.output == output)
53
+ }
54
+
55
+ public func removeDuplicates() -> Just<Output> {
56
+ return self
57
+ }
58
+ }
59
+
60
+ extension Just {
61
+
62
+ public func allSatisfy(_ predicate: (Output) -> Bool) -> Just<Bool> {
63
+ return .init(predicate(output))
64
+ }
65
+
66
+ public func tryAllSatisfy(
67
+ _ predicate: (Output) throws -> Bool
68
+ ) -> Result<Bool, Error>.OCombine.Publisher {
69
+ return .init(Result { try predicate(output) })
70
+ }
71
+
72
+ public func contains(where predicate: (Output) -> Bool) -> Just<Bool> {
73
+ return .init(predicate(output))
74
+ }
75
+
76
+ public func tryContains(
77
+ where predicate: (Output) throws -> Bool
78
+ ) -> Result<Bool, Error>.OCombine.Publisher {
79
+ return .init(Result { try predicate(output) })
80
+ }
81
+
82
+ public func collect() -> Just<[Output]> {
83
+ return .init([output])
84
+ }
85
+
86
+ public func min(
87
+ by areInIncreasingOrder: (Output, Output) -> Bool
88
+ ) -> Just<Output> {
89
+ return self
90
+ }
91
+
92
+ public func max(
93
+ by areInIncreasingOrder: (Output, Output) -> Bool
94
+ ) -> Just<Output> {
95
+ return self
96
+ }
97
+
98
+ public func count() -> Just<Int> {
99
+ return .init(1)
100
+ }
101
+
102
+ public func dropFirst(_ count: Int = 1) -> Optional<Output>.OCombine.Publisher {
103
+ precondition(count >= 0, "count must not be negative")
104
+ return .init(count > 0 ? nil : self.output)
105
+ }
106
+
107
+ public func drop(
108
+ while predicate: (Output) -> Bool
109
+ ) -> Optional<Output>.OCombine.Publisher {
110
+ return .init(predicate(output) ? nil : output)
111
+ }
112
+
113
+ public func first() -> Just<Output> {
114
+ return self
115
+ }
116
+
117
+ public func first(
118
+ where predicate: (Output) -> Bool
119
+ ) -> Optional<Output>.OCombine.Publisher {
120
+ return .init(predicate(output) ? output : nil)
121
+ }
122
+
123
+ public func last() -> Just<Output> {
124
+ return self
125
+ }
126
+
127
+ public func last(
128
+ where predicate: (Output) -> Bool
129
+ ) -> Optional<Output>.OCombine.Publisher {
130
+ return .init(predicate(output) ? output : nil)
131
+ }
132
+
133
+ public func ignoreOutput() -> Empty<Output, Never> {
134
+ return .init()
135
+ }
136
+
137
+ public func map<ElementOfResult>(
138
+ _ transform: (Output) -> ElementOfResult
139
+ ) -> Just<ElementOfResult> {
140
+ return .init(transform(output))
141
+ }
142
+
143
+ public func tryMap<ElementOfResult>(
144
+ _ transform: (Output) throws -> ElementOfResult
145
+ ) -> Result<ElementOfResult, Error>.OCombine.Publisher {
146
+ return .init(Result { try transform(output) })
147
+ }
148
+
149
+ public func compactMap<ElementOfResult>(
150
+ _ transform: (Output) -> ElementOfResult?
151
+ ) -> Optional<ElementOfResult>.OCombine.Publisher {
152
+ return .init(transform(output))
153
+ }
154
+
155
+ public func filter(
156
+ _ isIncluded: (Output) -> Bool
157
+ ) -> Optional<Output>.OCombine.Publisher {
158
+ return .init(isIncluded(output) ? output : nil)
159
+ }
160
+
161
+ public func output(at index: Int) -> Optional<Output>.OCombine.Publisher {
162
+ precondition(index >= 0, "index must not be negative")
163
+ return .init(index == 0 ? output : nil)
164
+ }
165
+
166
+ public func output<RangeExpression: Swift.RangeExpression>(
167
+ in range: RangeExpression
168
+ ) -> Optional<Output>.OCombine.Publisher where RangeExpression.Bound == Int {
169
+ // TODO: Broken in Apple's Combine? (FB6169621)
170
+ // Empty range should result in a nil
171
+ let range = range.relative(to: 0..<Int.max)
172
+ return .init(range.lowerBound == 0 ? output : nil)
173
+ // The above implementation is used for compatibility.
174
+ //
175
+ // It actually probably should be just this:
176
+ // return .init(range.contains(0) ? output : nil)
177
+ }
178
+
179
+ public func prefix(_ maxLength: Int) -> Optional<Output>.OCombine.Publisher {
180
+ precondition(maxLength >= 0, "maxLength must not be negative")
181
+ return .init(maxLength > 0 ? output : nil)
182
+ }
183
+
184
+ public func prefix(
185
+ while predicate: (Output) -> Bool
186
+ ) -> Optional<Output>.OCombine.Publisher {
187
+ return .init(predicate(output) ? output : nil)
188
+ }
189
+
190
+ public func setFailureType<Failure: Error>(
191
+ to failureType: Failure.Type
192
+ ) -> Result<Output, Failure>.OCombine.Publisher {
193
+ return .init(output)
194
+ }
195
+
196
+ public func mapError<Failure: Error>(
197
+ _ transform: (Never) -> Failure
198
+ ) -> Result<Output, Failure>.OCombine.Publisher {
199
+ return .init(output)
200
+ }
201
+
202
+ public func removeDuplicates(
203
+ by predicate: (Output, Output) -> Bool
204
+ ) -> Just<Output> {
205
+ return self
206
+ }
207
+
208
+ public func tryRemoveDuplicates(
209
+ by predicate: (Output, Output) throws -> Bool
210
+ ) -> Result<Output, Error>.OCombine.Publisher {
211
+ return .init(Result { try _ = predicate(output, output); return output })
212
+ }
213
+
214
+ public func replaceError(with output: Output) -> Just<Output> {
215
+ return self
216
+ }
217
+
218
+ public func replaceEmpty(with output: Output) -> Just<Output> {
219
+ return self
220
+ }
221
+
222
+ public func retry(_ times: Int) -> Just<Output> {
223
+ return self
224
+ }
225
+
226
+ public func reduce<Accumulator>(
227
+ _ initialResult: Accumulator,
228
+ _ nextPartialResult: (Accumulator, Output) -> Accumulator
229
+ ) -> Result<Accumulator, Never>.OCombine.Publisher {
230
+ return .init(nextPartialResult(initialResult, output))
231
+ }
232
+
233
+ public func tryReduce<Accumulator>(
234
+ _ initialResult: Accumulator,
235
+ _ nextPartialResult: (Accumulator, Output) throws -> Accumulator
236
+ ) -> Result<Accumulator, Error>.OCombine.Publisher {
237
+ return .init(Result { try nextPartialResult(initialResult, output) })
238
+ }
239
+
240
+ public func scan<ElementOfResult>(
241
+ _ initialResult: ElementOfResult,
242
+ _ nextPartialResult: (ElementOfResult, Output) -> ElementOfResult
243
+ ) -> Result<ElementOfResult, Never>.OCombine.Publisher {
244
+ return .init(nextPartialResult(initialResult, output))
245
+ }
246
+
247
+ public func tryScan<ElementOfResult>(
248
+ _ initialResult: ElementOfResult,
249
+ _ nextPartialResult: (ElementOfResult, Output) throws -> ElementOfResult
250
+ ) -> Result<ElementOfResult, Error>.OCombine.Publisher {
251
+ return .init(Result { try nextPartialResult(initialResult, output) })
252
+ }
253
+
254
+ public func prepend(_ elements: Output...) -> Publishers.Sequence<[Output], Never> {
255
+ return prepend(elements)
256
+ }
257
+
258
+ public func prepend<Elements: Sequence>(
259
+ _ elements: Elements
260
+ ) -> Publishers.Sequence<[Output], Never> where Output == Elements.Element {
261
+ return .init(sequence: elements + [output])
262
+ }
263
+
264
+ public func append(_ elements: Output...) -> Publishers.Sequence<[Output], Never> {
265
+ return append(elements)
266
+ }
267
+
268
+ public func append<Elements: Sequence>(
269
+ _ elements: Elements
270
+ ) -> Publishers.Sequence<[Output], Never> where Output == Elements.Element {
271
+ return .init(sequence: [output] + elements)
272
+ }
273
+ }
274
+
275
+ extension Just {
276
+ private final class Inner<Downstream: Subscriber>
277
+ : Subscription,
278
+ CustomStringConvertible,
279
+ CustomReflectable,
280
+ CustomPlaygroundDisplayConvertible
281
+ where Downstream.Input == Output
282
+ {
283
+ // NOTE: this class has been audited for thread safety.
284
+ // Combine doesn't use any locking here.
285
+
286
+ private var downstream: Downstream?
287
+ private let value: Output
288
+
289
+ fileprivate init(value: Output, downstream: Downstream) {
290
+ self.downstream = downstream
291
+ self.value = value
292
+ }
293
+
294
+ func request(_ demand: Subscribers.Demand) {
295
+ demand.assertNonZero()
296
+ guard let downstream = self.downstream.take() else { return }
297
+ _ = downstream.receive(value)
298
+ downstream.receive(completion: .finished)
299
+ }
300
+
301
+ func cancel() {
302
+ downstream = nil
303
+ }
304
+
305
+ var description: String { return "Just" }
306
+
307
+ var customMirror: Mirror {
308
+ return Mirror(self, unlabeledChildren: CollectionOfOne(value))
309
+ }
310
+
311
+ var playgroundDescription: Any { return description }
312
+ }
313
+ }