@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,228 @@
1
+ // `import WeatherKit` for the browser. Apple's weather service answers only
2
+ // apps signed with the WeatherKit capability (the device asks for a token
3
+ // on the app's behalf); a web page has no such signature, so every request
4
+ // throws `WeatherError.permissionDenied`, as it does on a device for an app
5
+ // without the capability. The types are here so an app compiles and takes
6
+ // its own fallback (Apple's Food Truck keeps its placeholder forecast and a
7
+ // clear sky) (docs/ops-protocol.md, "Weather").
8
+
9
+ import CoreLocation
10
+ import Foundation
11
+
12
+ /// Why a weather request failed.
13
+ public enum WeatherError: LocalizedError, Sendable {
14
+ /// The app may not use the weather service: always, in the browser.
15
+ case permissionDenied
16
+ case unknown
17
+
18
+ public var errorDescription: String? {
19
+ switch self {
20
+ case .permissionDenied: "WeatherKit is not available in the browser."
21
+ case .unknown: "The weather service failed."
22
+ }
23
+ }
24
+ }
25
+
26
+ /// Requests weather; in the browser every request throws (see the top of this file).
27
+ public final class WeatherService: Sendable {
28
+ public static let shared = WeatherService()
29
+ public init() {}
30
+
31
+ public func weather(for location: CLLocation) async throws -> Weather {
32
+ throw WeatherError.permissionDenied
33
+ }
34
+
35
+ public func weather<T>(for location: CLLocation, including dataSet: WeatherQuery<T>) async throws -> T {
36
+ throw WeatherError.permissionDenied
37
+ }
38
+
39
+ public func weather<T1, T2>(for location: CLLocation, including dataSet1: WeatherQuery<T1>, _ dataSet2: WeatherQuery<T2>) async throws -> (T1, T2) {
40
+ throw WeatherError.permissionDenied
41
+ }
42
+
43
+ public func weather<T1, T2, T3>(for location: CLLocation, including dataSet1: WeatherQuery<T1>, _ dataSet2: WeatherQuery<T2>,
44
+ _ dataSet3: WeatherQuery<T3>) async throws -> (T1, T2, T3) {
45
+ throw WeatherError.permissionDenied
46
+ }
47
+
48
+ public var attribution: WeatherAttribution {
49
+ get async throws { throw WeatherError.permissionDenied }
50
+ }
51
+ }
52
+
53
+ /// A data set to request (`.current`, `.hourly`, …).
54
+ public struct WeatherQuery<T>: @unchecked Sendable {
55
+ init() {}
56
+
57
+ public static var current: WeatherQuery<CurrentWeather> { WeatherQuery<CurrentWeather>() }
58
+ public static var minute: WeatherQuery<Forecast<MinuteWeather>?> { WeatherQuery<Forecast<MinuteWeather>?>() }
59
+ public static var hourly: WeatherQuery<Forecast<HourWeather>> { WeatherQuery<Forecast<HourWeather>>() }
60
+ public static var daily: WeatherQuery<Forecast<DayWeather>> { WeatherQuery<Forecast<DayWeather>>() }
61
+ public static var alerts: WeatherQuery<[WeatherAlert]?> { WeatherQuery<[WeatherAlert]?>() }
62
+ public static func hourly(startDate: Date, endDate: Date) -> WeatherQuery<Forecast<HourWeather>> { WeatherQuery<Forecast<HourWeather>>() }
63
+ public static func daily(startDate: Date, endDate: Date) -> WeatherQuery<Forecast<DayWeather>> { WeatherQuery<Forecast<DayWeather>>() }
64
+ }
65
+
66
+ /// The weather at a place: now, by the minute, the hour and the day.
67
+ public struct Weather: Sendable {
68
+ public var currentWeather: CurrentWeather
69
+ public var minuteForecast: Forecast<MinuteWeather>?
70
+ public var hourlyForecast: Forecast<HourWeather>
71
+ public var dailyForecast: Forecast<DayWeather>
72
+ public var weatherAlerts: [WeatherAlert]?
73
+ }
74
+
75
+ /// A forecast: its entries, in time order.
76
+ public struct Forecast<Element: Sendable>: RandomAccessCollection, Sendable {
77
+ public var forecast: [Element]
78
+ public var startIndex: Int { forecast.startIndex }
79
+ public var endIndex: Int { forecast.endIndex }
80
+ public subscript(position: Int) -> Element { forecast[position] }
81
+ public var summary: String { "" }
82
+ }
83
+
84
+ public struct CurrentWeather: Sendable {
85
+ public var date: Date
86
+ public var condition: WeatherCondition
87
+ public var symbolName: String
88
+ public var temperature: Measurement<UnitTemperature>
89
+ public var apparentTemperature: Measurement<UnitTemperature>
90
+ public var dewPoint: Measurement<UnitTemperature>
91
+ public var humidity: Double
92
+ public var cloudCover: Double
93
+ public var isDaylight: Bool
94
+ public var visibility: Measurement<UnitLength>
95
+ public var wind: Wind
96
+ public var pressure: Measurement<UnitPressure>
97
+ public var uvIndex: UVIndex
98
+ }
99
+
100
+ public struct MinuteWeather: Sendable {
101
+ public var date: Date
102
+ public var precipitation: Precipitation
103
+ public var precipitationChance: Double
104
+ public var precipitationIntensity: Measurement<UnitSpeed>
105
+ }
106
+
107
+ public struct HourWeather: Sendable {
108
+ public var date: Date
109
+ public var condition: WeatherCondition
110
+ public var symbolName: String
111
+ public var temperature: Measurement<UnitTemperature>
112
+ public var apparentTemperature: Measurement<UnitTemperature>
113
+ public var humidity: Double
114
+ public var cloudCover: Double
115
+ public var isDaylight: Bool
116
+ public var precipitation: Precipitation
117
+ public var precipitationChance: Double
118
+ public var precipitationAmount: Measurement<UnitLength>
119
+ public var wind: Wind
120
+ public var uvIndex: UVIndex
121
+ }
122
+
123
+ public struct DayWeather: Sendable {
124
+ public var date: Date
125
+ public var condition: WeatherCondition
126
+ public var symbolName: String
127
+ public var highTemperature: Measurement<UnitTemperature>
128
+ public var lowTemperature: Measurement<UnitTemperature>
129
+ public var precipitation: Precipitation
130
+ public var precipitationChance: Double
131
+ public var wind: Wind
132
+ public var uvIndex: UVIndex
133
+ }
134
+
135
+ public struct Wind: Sendable {
136
+ public var compassDirection: Direction
137
+ public var direction: Measurement<UnitAngle>
138
+ public var speed: Measurement<UnitSpeed>
139
+ public var gust: Measurement<UnitSpeed>?
140
+
141
+ public enum Direction: String, CaseIterable, Sendable {
142
+ case north, northNortheast, northeast, eastNortheast, east, eastSoutheast, southeast, southSoutheast
143
+ case south, southSouthwest, southwest, westSouthwest, west, westNorthwest, northwest, northNorthwest
144
+ }
145
+ }
146
+
147
+ public struct UVIndex: Sendable {
148
+ public var value: Int
149
+ public var category: ExposureCategory
150
+
151
+ public enum ExposureCategory: String, CaseIterable, Sendable {
152
+ case low, moderate, high, veryHigh, extreme
153
+ }
154
+ }
155
+
156
+ public enum Precipitation: String, CaseIterable, Sendable, CustomStringConvertible {
157
+ case none, hail, mixed, rain, sleet, snow
158
+
159
+ public var description: String { rawValue.capitalized }
160
+ public var accessibilityDescription: String { description }
161
+ }
162
+
163
+ public struct WeatherAlert: Sendable {
164
+ public var summary: String
165
+ public var detailsURL: URL
166
+ public var source: String
167
+ public var region: String?
168
+ }
169
+
170
+ /// The attribution an app shows with the weather (Apple's logos and legal page).
171
+ public struct WeatherAttribution: Sendable {
172
+ public var serviceName: String
173
+ public var legalPageURL: URL
174
+ public var legalAttributionText: String
175
+ public var combinedMarkLightURL: URL
176
+ public var combinedMarkDarkURL: URL
177
+ public var squareMarkURL: URL
178
+ }
179
+
180
+ /// A description of the weather, with Apple's cases.
181
+ public enum WeatherCondition: String, CaseIterable, Codable, Hashable, Sendable, CustomStringConvertible {
182
+ case blizzard
183
+ case blowingDust
184
+ case blowingSnow
185
+ case breezy
186
+ case clear
187
+ case cloudy
188
+ case drizzle
189
+ case flurries
190
+ case foggy
191
+ case freezingDrizzle
192
+ case freezingRain
193
+ case frigid
194
+ case hail
195
+ case haze
196
+ case heavyRain
197
+ case heavySnow
198
+ case hot
199
+ case hurricane
200
+ case isolatedThunderstorms
201
+ case mostlyClear
202
+ case mostlyCloudy
203
+ case partlyCloudy
204
+ case rain
205
+ case scatteredThunderstorms
206
+ case sleet
207
+ case smoky
208
+ case snow
209
+ case strongStorms
210
+ case sunFlurries
211
+ case sunShowers
212
+ case thunderstorms
213
+ case tropicalStorm
214
+ case windy
215
+ case wintryMix
216
+
217
+ /// The condition in words (`partlyCloudy` is "Partly Cloudy").
218
+ public var description: String {
219
+ var words = ""
220
+ for character in rawValue {
221
+ if character.isUppercase { words.append(" ") }
222
+ words.append(character)
223
+ }
224
+ return words.prefix(1).uppercased() + words.dropFirst()
225
+ }
226
+
227
+ public var accessibilityDescription: String { description }
228
+ }
@@ -0,0 +1,245 @@
1
+ // `import WebKit` for the browser: `WKWebView` and the types around it, as
2
+ // declarations that keep their state. A web view inside the page would be an
3
+ // iframe, and most sites refuse to be framed (X-Frame-Options, CSP's
4
+ // frame-ancestors), so the shim has no renderer for one; and since there is
5
+ // no `UIViewRepresentable`, a UIKit view never reaches the screen anyway.
6
+ // What compiles: configuring a web view, `load` (the URL is recorded, nothing
7
+ // is fetched, no navigation delegate method is called), the history and
8
+ // progress properties (empty, finished), and `evaluateJavaScript`, which
9
+ // fails. Ice Cubes imports WebKit and uses none of it; code that does use it
10
+ // compiles and shows nothing.
11
+
12
+ import Foundation
13
+ import FoundationBridge
14
+ import SwiftUI
15
+ import UIKit
16
+
17
+ /// WebKit's errors, with Apple's codes.
18
+ public struct WKError: Error, Hashable, Sendable {
19
+ public enum Code: Int, Sendable {
20
+ case unknown = 1
21
+ case webContentProcessTerminated = 2
22
+ case webViewInvalidated = 3
23
+ case javaScriptExceptionOccurred = 4
24
+ case javaScriptResultTypeIsUnsupported = 5
25
+ }
26
+
27
+ public let code: Code
28
+ public init(_ code: Code) { self.code = code }
29
+
30
+ public static let unknown = Code.unknown
31
+ public static let javaScriptExceptionOccurred = Code.javaScriptExceptionOccurred
32
+ }
33
+
34
+ // MARK: - Configuration
35
+
36
+ /// Website data (cookies, storage): the browser's own, so both stores are the same.
37
+ @MainActor
38
+ open class WKWebsiteDataStore {
39
+ public let isPersistent: Bool
40
+ init(persistent: Bool) { isPersistent = persistent }
41
+ public static func `default`() -> WKWebsiteDataStore { WKWebsiteDataStore(persistent: true) }
42
+ public static func nonPersistent() -> WKWebsiteDataStore { WKWebsiteDataStore(persistent: false) }
43
+ public static func allWebsiteDataTypes() -> Set<String> { [] }
44
+ /// Nothing to remove: the page cannot reach another site's data.
45
+ open func removeData(ofTypes dataTypes: Set<String>, modifiedSince date: Date, completionHandler: @escaping @MainActor () -> Void) {
46
+ completionHandler()
47
+ }
48
+ }
49
+
50
+ @MainActor
51
+ open class WKPreferences {
52
+ open var javaScriptCanOpenWindowsAutomatically = false
53
+ open var isFraudulentWebsiteWarningEnabled = true
54
+ open var minimumFontSize: CGFloat = 0
55
+ public init() {}
56
+ }
57
+
58
+ @MainActor
59
+ open class WKWebpagePreferences {
60
+ open var allowsContentJavaScript = true
61
+ public init() {}
62
+ }
63
+
64
+ /// A message a page's script posts to the app; none ever arrives.
65
+ @MainActor
66
+ open class WKScriptMessage {
67
+ public let name: String
68
+ public let body: Any
69
+ init(name: String, body: Any) {
70
+ self.name = name
71
+ self.body = body
72
+ }
73
+ }
74
+
75
+ @MainActor
76
+ public protocol WKScriptMessageHandler: AnyObject {
77
+ func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
78
+ }
79
+
80
+ /// A script to inject into pages; kept.
81
+ @MainActor
82
+ open class WKUserScript {
83
+ public enum InjectionTime: Int, Sendable { case atDocumentStart, atDocumentEnd }
84
+ public let source: String
85
+ public let injectionTime: InjectionTime
86
+ public let isForMainFrameOnly: Bool
87
+ public init(source: String, injectionTime: InjectionTime, forMainFrameOnly: Bool) {
88
+ self.source = source
89
+ self.injectionTime = injectionTime
90
+ self.isForMainFrameOnly = forMainFrameOnly
91
+ }
92
+ }
93
+
94
+ /// Scripts and message handlers; kept.
95
+ @MainActor
96
+ open class WKUserContentController {
97
+ public private(set) var userScripts: [WKUserScript] = []
98
+ private var handlers: [String: any WKScriptMessageHandler] = [:]
99
+ public init() {}
100
+ open func addUserScript(_ userScript: WKUserScript) { userScripts.append(userScript) }
101
+ open func removeAllUserScripts() { userScripts.removeAll() }
102
+ open func add(_ scriptMessageHandler: any WKScriptMessageHandler, name: String) { handlers[name] = scriptMessageHandler }
103
+ open func removeScriptMessageHandler(forName name: String) { handlers[name] = nil }
104
+ open func removeAllScriptMessageHandlers() { handlers.removeAll() }
105
+ }
106
+
107
+ @MainActor
108
+ open class WKWebViewConfiguration {
109
+ open var websiteDataStore = WKWebsiteDataStore.default()
110
+ open var preferences = WKPreferences()
111
+ open var defaultWebpagePreferences = WKWebpagePreferences()
112
+ open var userContentController = WKUserContentController()
113
+ open var allowsInlineMediaPlayback = false
114
+ open var mediaTypesRequiringUserActionForPlayback: WKAudiovisualMediaTypes = .all
115
+ open var applicationNameForUserAgent: String?
116
+ public init() {}
117
+ }
118
+
119
+ public struct WKAudiovisualMediaTypes: OptionSet, Sendable {
120
+ public let rawValue: UInt
121
+ public init(rawValue: UInt) { self.rawValue = rawValue }
122
+ public static let audio = WKAudiovisualMediaTypes(rawValue: 1 << 0)
123
+ public static let video = WKAudiovisualMediaTypes(rawValue: 1 << 1)
124
+ public static let all: WKAudiovisualMediaTypes = [.audio, .video]
125
+ }
126
+
127
+ // MARK: - Navigation
128
+
129
+ /// One load; returned by `load` and never reported on.
130
+ @MainActor
131
+ open class WKNavigation {}
132
+
133
+ public enum WKNavigationType: Int, Sendable {
134
+ case linkActivated, formSubmitted, backForward, reload, formResubmitted
135
+ case other = -1
136
+ }
137
+
138
+ public enum WKNavigationActionPolicy: Int, Sendable { case cancel, allow, download }
139
+ public enum WKNavigationResponsePolicy: Int, Sendable { case cancel, allow, download }
140
+
141
+ @MainActor
142
+ open class WKNavigationAction {
143
+ public let request: URLRequest
144
+ public let navigationType: WKNavigationType
145
+ init(request: URLRequest, navigationType: WKNavigationType) {
146
+ self.request = request
147
+ self.navigationType = navigationType
148
+ }
149
+ }
150
+
151
+ /// What a web view tells about its loads. Every method is optional; none is
152
+ /// called, since nothing loads.
153
+ @MainActor
154
+ public protocol WKNavigationDelegate: AnyObject {
155
+ func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping @MainActor (WKNavigationActionPolicy) -> Void)
156
+ func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
157
+ func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
158
+ func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: any Error)
159
+ func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: any Error)
160
+ }
161
+
162
+ extension WKNavigationDelegate {
163
+ public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping @MainActor (WKNavigationActionPolicy) -> Void) {
164
+ decisionHandler(.allow)
165
+ }
166
+ public func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {}
167
+ public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {}
168
+ public func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: any Error) {}
169
+ public func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: any Error) {}
170
+ }
171
+
172
+ /// Windows, alerts and panels a page's script asks for; never asked.
173
+ @MainActor
174
+ public protocol WKUIDelegate: AnyObject {}
175
+
176
+ // MARK: - The web view
177
+
178
+ /// A web view that keeps its state and shows nothing (see the top of this file).
179
+ @MainActor
180
+ open class WKWebView: UIView {
181
+ public let configuration: WKWebViewConfiguration
182
+ open weak var navigationDelegate: (any WKNavigationDelegate)?
183
+ open weak var uiDelegate: (any WKUIDelegate)?
184
+ open var allowsBackForwardNavigationGestures = false
185
+ open var allowsLinkPreview = true
186
+ open var customUserAgent: String?
187
+ open var isInspectable = false
188
+ /// The last URL given to `load`.
189
+ public private(set) var url: URL?
190
+ public private(set) var title: String?
191
+ /// Never loading: nothing is fetched.
192
+ public var isLoading: Bool { false }
193
+ public var estimatedProgress: Double { url == nil ? 0 : 1 }
194
+ public var canGoBack: Bool { false }
195
+ public var canGoForward: Bool { false }
196
+ public var hasOnlySecureContent: Bool { url?.scheme?.lowercased() == "https" }
197
+
198
+ public init(frame: CGRect, configuration: WKWebViewConfiguration) {
199
+ self.configuration = configuration
200
+ super.init(frame: frame)
201
+ }
202
+
203
+ public convenience override init(frame: CGRect) {
204
+ self.init(frame: frame, configuration: WKWebViewConfiguration())
205
+ }
206
+
207
+ public required init?(coder: NSCoder) {
208
+ configuration = WKWebViewConfiguration()
209
+ super.init(coder: coder)
210
+ }
211
+
212
+ /// Records the URL; nothing is fetched or shown.
213
+ @discardableResult
214
+ open func load(_ request: URLRequest) -> WKNavigation? {
215
+ url = request.url
216
+ return WKNavigation()
217
+ }
218
+
219
+ @discardableResult
220
+ open func loadHTMLString(_ string: String, baseURL: URL?) -> WKNavigation? {
221
+ url = baseURL
222
+ return WKNavigation()
223
+ }
224
+
225
+ @discardableResult
226
+ open func loadFileURL(_ URL: URL, allowingReadAccessTo readAccessURL: URL) -> WKNavigation? {
227
+ url = URL
228
+ return WKNavigation()
229
+ }
230
+
231
+ @discardableResult open func reload() -> WKNavigation? { url == nil ? nil : WKNavigation() }
232
+ @discardableResult open func goBack() -> WKNavigation? { nil }
233
+ @discardableResult open func goForward() -> WKNavigation? { nil }
234
+ open func stopLoading() {}
235
+
236
+ /// Fails: there is no page to run the script in.
237
+ open func evaluateJavaScript(_ javaScriptString: String, completionHandler: (@MainActor (Any?, (any Error)?) -> Void)? = nil) {
238
+ completionHandler?(nil, WKError(.javaScriptExceptionOccurred))
239
+ }
240
+
241
+ /// Throws `WKError.javaScriptExceptionOccurred`: there is no page to run the script in.
242
+ open func evaluateJavaScript(_ javaScriptString: String) async throws -> Any? {
243
+ throw WKError(.javaScriptExceptionOccurred)
244
+ }
245
+ }