@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,226 @@
1
+ // `#selector` without the Objective-C runtime. On Apple platforms a selector
2
+ // names a method the runtime looks up when a message is sent. Here the
3
+ // staging rewrites `#selector(handle(_:))` into
4
+ // `Selector(Self.handle(_:), name: "handle(_:)")`: the method itself,
5
+ // unbound, which the selector calls on whatever target the API holds (it
6
+ // dispatches dynamically, so overrides are called). `@objc` is dropped from
7
+ // the declarations (packages/cli/src/stage.ts, `rewriteObjC`).
8
+ //
9
+ // The APIs that take a target and a selector take this `Selector`:
10
+ // `NotificationCenter.addObserver(_:selector:name:object:)`
11
+ // (NotificationCenter.swift), `Timer`'s target/selector initializers (here),
12
+ // and UIKit's `CADisplayLink`,
13
+ // `UIControl.addTarget(_:action:for:)` and gesture recognizers. Selectors
14
+ // made from strings (`Selector("tick")`, `NSSelectorFromString`) have a name
15
+ // and nothing to call.
16
+
17
+ import Foundation
18
+ import SwiftUI
19
+
20
+ public struct Selector: Hashable, CustomStringConvertible, ExpressibleByStringLiteral, @unchecked Sendable {
21
+ /// The method's name as the source spelled it; selectors compare by it.
22
+ public let name: String
23
+ let invoke: ((AnyObject, Any?) -> Void)?
24
+
25
+ public init(_ name: String) {
26
+ self.name = name
27
+ invoke = nil
28
+ }
29
+
30
+ public init(stringLiteral value: String) { self.init(value) }
31
+
32
+ /// A method without arguments.
33
+ public init<T: AnyObject, R>(_ method: @escaping (T) -> () -> R, name: String) {
34
+ self.name = name
35
+ invoke = { target, _ in
36
+ guard let target = target as? T else { return }
37
+ _ = method(target)()
38
+ }
39
+ }
40
+
41
+ /// A method with one argument: the sender, the notification, the timer.
42
+ public init<T: AnyObject, A, R>(_ method: @escaping (T) -> (A) -> R, name: String) {
43
+ self.name = name
44
+ invoke = { target, argument in
45
+ guard let target = target as? T, let argument = Self.cast(argument, to: A.self) else { return }
46
+ _ = method(target)(argument)
47
+ }
48
+ }
49
+
50
+ /// A method with two arguments (`(_:forEvent:)`); the second is nil when it can be.
51
+ public init<T: AnyObject, A, B, R>(_ method: @escaping (T) -> (A, B) -> R, name: String) {
52
+ self.name = name
53
+ invoke = { target, argument in
54
+ guard let target = target as? T, let first = Self.cast(argument, to: A.self),
55
+ let second = Self.cast(nil, to: B.self) else { return }
56
+ _ = method(target)(first, second)
57
+ }
58
+ }
59
+
60
+ /// A main-actor method, bound to the target by a closure
61
+ /// (`{ (target: Proxy) in target.tick }`): Swift 6 does not let a
62
+ /// main-actor method of a class that is not `Sendable` be named unapplied.
63
+ /// The page has one thread, so the target is called on the main actor.
64
+ public init<T: AnyObject, R>(name: String, isolated method: @escaping @MainActor (T) -> @MainActor () -> R) {
65
+ self.name = name
66
+ nonisolated(unsafe) let method = method
67
+ invoke = { target, _ in
68
+ guard let target = target as? T else { return }
69
+ nonisolated(unsafe) let held = target
70
+ MainActor.assumeIsolated { _ = method(held)() }
71
+ }
72
+ }
73
+
74
+ public init<T: AnyObject, A, R>(name: String, isolated method: @escaping @MainActor (T) -> @MainActor (A) -> R) {
75
+ self.name = name
76
+ nonisolated(unsafe) let method = method
77
+ invoke = { target, argument in
78
+ guard let target = target as? T, let argument = Self.cast(argument, to: A.self) else { return }
79
+ nonisolated(unsafe) let held = target
80
+ nonisolated(unsafe) let value = argument
81
+ MainActor.assumeIsolated { _ = method(held)(value) }
82
+ }
83
+ }
84
+
85
+ /// A method of another object than the target (`#selector(model.refresh)`): it is called as it is.
86
+ public init<R>(bound method: @escaping () -> R, name: String) {
87
+ self.name = name
88
+ invoke = { _, _ in _ = method() }
89
+ }
90
+
91
+ public init<A, R>(bound method: @escaping (A) -> R, name: String) {
92
+ self.name = name
93
+ invoke = { _, argument in
94
+ guard let argument = Self.cast(argument, to: A.self) else { return }
95
+ _ = method(argument)
96
+ }
97
+ }
98
+
99
+ /// `argument` as an `A`; nil is an `A` when `A` is optional.
100
+ static func cast<A>(_ argument: Any?, to type: A.Type) -> A? {
101
+ if let argument, let value = argument as? A { return value }
102
+ return Optional<Any>.none as? A
103
+ }
104
+
105
+ /// Whether the selector was made from a method (`#selector`), not a string.
106
+ public var _hasMethod: Bool { invoke != nil }
107
+
108
+ /// Calls the method on `target`; a selector made from a string calls nothing.
109
+ public func _perform(on target: AnyObject, with argument: Any? = nil) {
110
+ invoke?(target, argument)
111
+ }
112
+
113
+ public var description: String { name }
114
+ public static func == (lhs: Selector, rhs: Selector) -> Bool { lhs.name == rhs.name }
115
+ public func hash(into hasher: inout Hasher) { hasher.combine(name) }
116
+ }
117
+
118
+ extension Selector {
119
+ nonisolated(unsafe) private static var pointers: [String: UnsafeMutableRawPointer] = [:]
120
+ private static let pointersLock = NSLock()
121
+
122
+ /// One address per selector name, as the runtime's uniqued selectors
123
+ /// have: what `unsafeBitCast(selector, to: UnsafeRawPointer.self)` gives on
124
+ /// Apple platforms, usually as an associated object's key
125
+ /// (`objc_setAssociatedObject`, CoreFoundation.swift). The staging rewrites
126
+ /// that bit cast, which would trap on this struct, into this property
127
+ /// (packages/cli/src/stage.ts, `selectorPointers`).
128
+ public var _uniquePointer: UnsafeRawPointer {
129
+ Self.pointersLock.lock(); defer { Self.pointersLock.unlock() }
130
+ if let pointer = Self.pointers[name] { return UnsafeRawPointer(pointer) }
131
+ let pointer = UnsafeMutableRawPointer.allocate(byteCount: 1, alignment: 1)
132
+ Self.pointers[name] = pointer
133
+ return UnsafeRawPointer(pointer)
134
+ }
135
+ }
136
+
137
+ public func NSSelectorFromString(_ name: String) -> Selector { Selector(name) }
138
+ public func NSStringFromSelector(_ selector: Selector) -> String { selector.name }
139
+
140
+ extension NSObject {
141
+ /// Whether the Objective-C runtime finds a method for the selector: there
142
+ /// is no runtime to ask, so never. Code that checks before calling a
143
+ /// method by name (`method(for:)`, `perform(_:)`) takes its fallback.
144
+ public func responds(to aSelector: Selector?) -> Bool { false }
145
+ }
146
+
147
+ // MARK: - Timers
148
+
149
+ extension Timer {
150
+ /// A timer that calls `selector` on `target` (which it keeps) each time it fires.
151
+ @discardableResult
152
+ public static func scheduledTimer(timeInterval interval: TimeInterval, target: Any, selector aSelector: Selector, userInfo: Any?, repeats: Bool) -> Timer {
153
+ let target = target as AnyObject
154
+ nonisolated(unsafe) let held = target
155
+ let timer = Timer(interval: interval, repeats: repeats) { timer in aSelector._perform(on: held, with: timer) }
156
+ timer.userInfo = userInfo
157
+ return timer
158
+ }
159
+
160
+ /// As `scheduledTimer`; the timer runs at once (adding it to a run loop changes nothing).
161
+ public convenience init(timeInterval interval: TimeInterval, target: Any, selector aSelector: Selector, userInfo: Any?, repeats: Bool) {
162
+ let target = target as AnyObject
163
+ nonisolated(unsafe) let held = target
164
+ self.init(interval: interval, repeats: repeats) { timer in aSelector._perform(on: held, with: timer) }
165
+ self.userInfo = userInfo
166
+ }
167
+ }
168
+
169
+ // MARK: - Numbers read off any object
170
+
171
+ /// What `x as? AnyObject` becomes in a file that reads a number off the
172
+ /// result (`(props[key] as? AnyObject)?.doubleValue`; the CLI's staging,
173
+ /// `numberCasts`). Objective-C finds `doubleValue` on any object at run time
174
+ /// and answers nil where there is none; here the members are on the values a
175
+ /// dictionary of `Any` holds: Swift's numbers, `Bool`, `String` and
176
+ /// `NSNumber`. A type's own member of the same name (`NSNumber.doubleValue`)
177
+ /// still wins on that type.
178
+ public protocol _AnyObjectValue {}
179
+
180
+ extension _AnyObjectValue {
181
+ var _number: Double? {
182
+ switch self as Any {
183
+ case let value as Double: value
184
+ case let value as Float: Double(value)
185
+ case let value as Int: Double(value)
186
+ case let value as Int8: Double(value)
187
+ case let value as Int16: Double(value)
188
+ case let value as Int32: Double(value)
189
+ case let value as Int64: Double(value)
190
+ case let value as UInt: Double(value)
191
+ case let value as UInt8: Double(value)
192
+ case let value as UInt16: Double(value)
193
+ case let value as UInt32: Double(value)
194
+ case let value as UInt64: Double(value)
195
+ case let value as Bool: value ? 1 : 0
196
+ case let value as NSNumber: value.doubleValue
197
+ case let value as String: Double(value)
198
+ default: nil
199
+ }
200
+ }
201
+
202
+ public var doubleValue: Double? { _number }
203
+ public var floatValue: Float? { _number.map { Float($0) } }
204
+ public var intValue: Int? { _number.map { Int($0) } }
205
+ public var integerValue: Int? { intValue }
206
+ public var int64Value: Int64? { _number.map { Int64($0) } }
207
+ public var uintValue: UInt? { _number.map { UInt(max(0, $0)) } }
208
+ public var uint64Value: UInt64? { _number.map { UInt64(max(0, $0)) } }
209
+ public var boolValue: Bool? { _number.map { $0 != 0 } }
210
+ }
211
+
212
+ extension Double: _AnyObjectValue {}
213
+ extension Float: _AnyObjectValue {}
214
+ extension Int: _AnyObjectValue {}
215
+ extension Int8: _AnyObjectValue {}
216
+ extension Int16: _AnyObjectValue {}
217
+ extension Int32: _AnyObjectValue {}
218
+ extension Int64: _AnyObjectValue {}
219
+ extension UInt: _AnyObjectValue {}
220
+ extension UInt8: _AnyObjectValue {}
221
+ extension UInt16: _AnyObjectValue {}
222
+ extension UInt32: _AnyObjectValue {}
223
+ extension UInt64: _AnyObjectValue {}
224
+ extension Bool: _AnyObjectValue {}
225
+ extension String: _AnyObjectValue {}
226
+ extension NSNumber: _AnyObjectValue {}
@@ -0,0 +1,17 @@
1
+ // String comparators that Apple's Foundation has and the SDK's does not.
2
+
3
+ import Foundation
4
+
5
+ // MARK: - Localized string comparators
6
+
7
+ extension String.StandardComparator {
8
+ /// Finder-like ordering on Apple platforms (case-insensitive, numbers by
9
+ /// value, in the user's locale). The SDK's Foundation has only `.lexical`
10
+ /// off Apple platforms and builds no other comparator, so this orders as
11
+ /// `.lexical` does.
12
+ public static var localizedStandard: String.StandardComparator { .lexical }
13
+
14
+ /// The user's locale's ordering on Apple platforms; `.lexical` here (see
15
+ /// `localizedStandard`).
16
+ public static var localized: String.StandardComparator { .lexical }
17
+ }
@@ -0,0 +1,211 @@
1
+ // The parts of SwiftUI's `Table` that need Foundation's `KeyPathComparator`
2
+ // (the shim's SwiftUI has no Foundation): sortable columns, which carry the
3
+ // comparator their title sorts by, and the tables bound to a `sortOrder`.
4
+ // Tapping a sortable column's title puts its comparator first in the sort
5
+ // order, or reverses it when it is first already; the app sorts its rows by
6
+ // the binding (the table itself is in Sources/SwiftUI/API/Table.swift).
7
+
8
+ import Foundation
9
+ import SwiftUI
10
+
11
+ extension TableColumn where Sort == KeyPathComparator<RowValue>, Label == Text {
12
+ public init(_ titleKey: LocalizedStringKey, value: KeyPath<RowValue, String> & Sendable) where Content == Text {
13
+ self.init(_column: _TableColumn(title: Text(titleKey), sortComparator: KeyPathComparator(value)) {
14
+ AnyView(Text($0[keyPath: value]))
15
+ })
16
+ }
17
+
18
+ @_disfavoredOverload
19
+ public init<S: StringProtocol>(_ title: S, value: KeyPath<RowValue, String> & Sendable) where Content == Text {
20
+ self.init(_column: _TableColumn(title: Text(String(title)), sortComparator: KeyPathComparator(value)) {
21
+ AnyView(Text($0[keyPath: value]))
22
+ })
23
+ }
24
+
25
+ public init<V: Comparable>(_ titleKey: LocalizedStringKey, value: KeyPath<RowValue, V> & Sendable,
26
+ @ViewBuilder content: @escaping (RowValue) -> Content) {
27
+ self.init(_column: _TableColumn(title: Text(titleKey), sortComparator: KeyPathComparator(value)) {
28
+ AnyView(content($0))
29
+ })
30
+ }
31
+
32
+ @_disfavoredOverload
33
+ public init<S: StringProtocol, V: Comparable>(_ title: S, value: KeyPath<RowValue, V> & Sendable,
34
+ @ViewBuilder content: @escaping (RowValue) -> Content) {
35
+ self.init(_column: _TableColumn(title: Text(String(title)), sortComparator: KeyPathComparator(value)) {
36
+ AnyView(content($0))
37
+ })
38
+ }
39
+
40
+ public init<V: Comparable>(_ text: Text, value: KeyPath<RowValue, V> & Sendable, @ViewBuilder content: @escaping (RowValue) -> Content) {
41
+ self.init(_column: _TableColumn(title: text, sortComparator: KeyPathComparator(value)) { AnyView(content($0)) })
42
+ }
43
+ }
44
+
45
+ /// The sort a `sortOrder` binding makes of the column titles (see the top of the file).
46
+ private func _tableSort<Value, Sort: SortComparator>(_ sortOrder: Binding<[Sort]>, _ columns: [_TableColumn<Value>]) -> _TableSort
47
+ where Sort.Compared == Value {
48
+ _TableSort(order: { index in
49
+ guard let column = columns[index].sortComparator as? KeyPathComparator<Value>,
50
+ let first = sortOrder.wrappedValue.first as? KeyPathComparator<Value>,
51
+ first.keyPath == column.keyPath else { return nil }
52
+ return first.order == .forward
53
+ }, tap: { index in
54
+ guard var column = columns[index].sortComparator as? KeyPathComparator<Value> else { return }
55
+ var order = sortOrder.wrappedValue
56
+ if let first = order.first as? KeyPathComparator<Value>, first.keyPath == column.keyPath {
57
+ column.order = first.order == .forward ? .reverse : .forward
58
+ }
59
+ order.removeAll { ($0 as? KeyPathComparator<Value>)?.keyPath == column.keyPath }
60
+ guard let sort = column as? Sort else { return }
61
+ order.insert(sort, at: 0)
62
+ sortOrder.wrappedValue = order
63
+ })
64
+ }
65
+
66
+ extension Table {
67
+ public init(
68
+ _ data: [Value], sortOrder: Binding<[KeyPathComparator<Value>]>, @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns
69
+ ) where Rows == TableForEachContent<[Value]> {
70
+ let columns = columns()
71
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, sort: _tableSort(sortOrder, columns._tableColumns))
72
+ }
73
+
74
+ @_disfavoredOverload
75
+ public init<Sort: SortComparator>(
76
+ _ data: [Value], sortOrder: Binding<[Sort]>, @TableColumnBuilder<Value, Sort> columns: () -> Columns
77
+ ) where Rows == TableForEachContent<[Value]>, Sort.Compared == Value {
78
+ let columns = columns()
79
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, sort: _tableSort(sortOrder, columns._tableColumns))
80
+ }
81
+
82
+ @_disfavoredOverload
83
+ public init<Data: RandomAccessCollection, Sort: SortComparator>(
84
+ _ data: Data, sortOrder: Binding<[Sort]>, @TableColumnBuilder<Data.Element, Sort> columns: () -> Columns
85
+ ) where Rows == TableForEachContent<Data>, Data.Element == Value, Sort.Compared == Value {
86
+ let columns = columns()
87
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, sort: _tableSort(sortOrder, columns._tableColumns))
88
+ }
89
+
90
+ public init(
91
+ _ data: [Value], selection: Binding<Value.ID?>, sortOrder: Binding<[KeyPathComparator<Value>]>,
92
+ @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns
93
+ ) where Rows == TableForEachContent<[Value]> {
94
+ let columns = columns()
95
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, selection: selection,
96
+ sort: _tableSort(sortOrder, columns._tableColumns))
97
+ }
98
+
99
+ @_disfavoredOverload
100
+ public init<Sort: SortComparator>(
101
+ _ data: [Value], selection: Binding<Value.ID?>, sortOrder: Binding<[Sort]>,
102
+ @TableColumnBuilder<Value, Sort> columns: () -> Columns
103
+ ) where Rows == TableForEachContent<[Value]>, Sort.Compared == Value {
104
+ let columns = columns()
105
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, selection: selection,
106
+ sort: _tableSort(sortOrder, columns._tableColumns))
107
+ }
108
+
109
+ @_disfavoredOverload
110
+ public init<Data: RandomAccessCollection, Sort: SortComparator>(
111
+ _ data: Data, selection: Binding<Value.ID?>, sortOrder: Binding<[Sort]>,
112
+ @TableColumnBuilder<Data.Element, Sort> columns: () -> Columns
113
+ ) where Rows == TableForEachContent<Data>, Data.Element == Value, Sort.Compared == Value {
114
+ let columns = columns()
115
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, selection: selection,
116
+ sort: _tableSort(sortOrder, columns._tableColumns))
117
+ }
118
+
119
+ public init(
120
+ _ data: [Value], selection: Binding<Set<Value.ID>>, sortOrder: Binding<[KeyPathComparator<Value>]>,
121
+ @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns
122
+ ) where Rows == TableForEachContent<[Value]> {
123
+ let columns = columns()
124
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, selection: selection,
125
+ sort: _tableSort(sortOrder, columns._tableColumns))
126
+ }
127
+
128
+ @_disfavoredOverload
129
+ public init<Sort: SortComparator>(
130
+ _ data: [Value], selection: Binding<Set<Value.ID>>, sortOrder: Binding<[Sort]>,
131
+ @TableColumnBuilder<Value, Sort> columns: () -> Columns
132
+ ) where Rows == TableForEachContent<[Value]>, Sort.Compared == Value {
133
+ let columns = columns()
134
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, selection: selection,
135
+ sort: _tableSort(sortOrder, columns._tableColumns))
136
+ }
137
+
138
+ @_disfavoredOverload
139
+ public init<Data: RandomAccessCollection, Sort: SortComparator>(
140
+ _ data: Data, selection: Binding<Set<Value.ID>>, sortOrder: Binding<[Sort]>,
141
+ @TableColumnBuilder<Data.Element, Sort> columns: () -> Columns
142
+ ) where Rows == TableForEachContent<Data>, Data.Element == Value, Sort.Compared == Value {
143
+ let columns = columns()
144
+ self.init(_columns: columns, rows: ForEach(data) { TableRow($0) }, selection: selection,
145
+ sort: _tableSort(sortOrder, columns._tableColumns))
146
+ }
147
+
148
+ public init(
149
+ sortOrder: Binding<[KeyPathComparator<Value>]>, @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns, @ViewBuilder rows: () -> Rows
150
+ ) where Rows: View {
151
+ let columns = columns()
152
+ self.init(_columns: columns, rows: rows(), sort: _tableSort(sortOrder, columns._tableColumns))
153
+ }
154
+
155
+ @_disfavoredOverload
156
+ public init<Sort: SortComparator>(
157
+ sortOrder: Binding<[Sort]>, @TableColumnBuilder<Value, Sort> columns: () -> Columns, @ViewBuilder rows: () -> Rows
158
+ ) where Rows: View, Sort.Compared == Value {
159
+ let columns = columns()
160
+ self.init(_columns: columns, rows: rows(), sort: _tableSort(sortOrder, columns._tableColumns))
161
+ }
162
+
163
+ public init(
164
+ selection: Binding<Value.ID?>, sortOrder: Binding<[KeyPathComparator<Value>]>, @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns,
165
+ @ViewBuilder rows: () -> Rows
166
+ ) where Rows: View {
167
+ let columns = columns()
168
+ self.init(_columns: columns, rows: rows(), selection: selection, sort: _tableSort(sortOrder, columns._tableColumns))
169
+ }
170
+
171
+ @_disfavoredOverload
172
+ public init<Sort: SortComparator>(
173
+ selection: Binding<Value.ID?>, sortOrder: Binding<[Sort]>, @TableColumnBuilder<Value, Sort> columns: () -> Columns,
174
+ @ViewBuilder rows: () -> Rows
175
+ ) where Rows: View, Sort.Compared == Value {
176
+ let columns = columns()
177
+ self.init(_columns: columns, rows: rows(), selection: selection, sort: _tableSort(sortOrder, columns._tableColumns))
178
+ }
179
+
180
+ public init(
181
+ selection: Binding<Set<Value.ID>>, sortOrder: Binding<[KeyPathComparator<Value>]>, @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns,
182
+ @ViewBuilder rows: () -> Rows
183
+ ) where Rows: View {
184
+ let columns = columns()
185
+ self.init(_columns: columns, rows: rows(), selection: selection, sort: _tableSort(sortOrder, columns._tableColumns))
186
+ }
187
+
188
+ @_disfavoredOverload
189
+ public init<Sort: SortComparator>(
190
+ selection: Binding<Set<Value.ID>>, sortOrder: Binding<[Sort]>, @TableColumnBuilder<Value, Sort> columns: () -> Columns,
191
+ @ViewBuilder rows: () -> Rows
192
+ ) where Rows: View, Sort.Compared == Value {
193
+ let columns = columns()
194
+ self.init(_columns: columns, rows: rows(), selection: selection, sort: _tableSort(sortOrder, columns._tableColumns))
195
+ }
196
+
197
+ public init(
198
+ of valueType: Value.Type, sortOrder: Binding<[KeyPathComparator<Value>]>, @TableColumnBuilder<Value, KeyPathComparator<Value>> columns: () -> Columns,
199
+ @ViewBuilder rows: () -> Rows
200
+ ) where Rows: View {
201
+ self.init(sortOrder: sortOrder, columns: columns, rows: rows)
202
+ }
203
+
204
+ @_disfavoredOverload
205
+ public init<Sort: SortComparator>(
206
+ of valueType: Value.Type, sortOrder: Binding<[Sort]>, @TableColumnBuilder<Value, Sort> columns: () -> Columns,
207
+ @ViewBuilder rows: () -> Rows
208
+ ) where Rows: View, Sort.Compared == Value {
209
+ self.init(sortOrder: sortOrder, columns: columns, rows: rows)
210
+ }
211
+ }
@@ -0,0 +1,42 @@
1
+ // The SwiftUI attributes of an `AttributedString`'s runs (`run.kern`,
2
+ // `string[range].foregroundColor = .red`, …), which `Text(_:)` draws as the
3
+ // matching `Text` modifiers (Links.swift). On Apple platforms they are
4
+ // `AttributeScopes.SwiftUIAttributes`; here they extend Foundation's scope,
5
+ // which is the one an attributed string's dynamic members look through.
6
+
7
+ import Foundation
8
+ import SwiftUI
9
+
10
+ extension AttributeScopes.FoundationAttributes {
11
+ public enum KernAttribute: AttributedStringKey {
12
+ public typealias Value = SwiftUI.CGFloat
13
+ public static let name = "NSKern"
14
+ }
15
+
16
+ public enum TrackingAttribute: AttributedStringKey {
17
+ public typealias Value = SwiftUI.CGFloat
18
+ public static let name = "SwiftUI.Tracking"
19
+ }
20
+
21
+ public enum BaselineOffsetAttribute: AttributedStringKey {
22
+ public typealias Value = SwiftUI.CGFloat
23
+ public static let name = "NSBaselineOffset"
24
+ }
25
+
26
+ public enum ForegroundColorAttribute: AttributedStringKey {
27
+ public typealias Value = Color
28
+ public static let name = "SwiftUI.ForegroundColor"
29
+ }
30
+
31
+ public enum FontAttribute: AttributedStringKey {
32
+ public typealias Value = Font
33
+ public static let name = "SwiftUI.Font"
34
+ }
35
+
36
+ // Like the scope's own attributes, a key path names the key and its value is never read.
37
+ public var kern: KernAttribute { fatalError("an attribute key path is never read") }
38
+ public var tracking: TrackingAttribute { fatalError("an attribute key path is never read") }
39
+ public var baselineOffset: BaselineOffsetAttribute { fatalError("an attribute key path is never read") }
40
+ public var foregroundColor: ForegroundColorAttribute { fatalError("an attribute key path is never read") }
41
+ public var font: FontAttribute { fatalError("an attribute key path is never read") }
42
+ }
@@ -0,0 +1,53 @@
1
+ // `Timer` and `RunLoop` for full-Foundation apps in the browser. swift-corelibs
2
+ // Foundation marks `RunLoop` unavailable on WASI and its `Timer` needs
3
+ // CFRunLoop, which the WASI build does not have (the link fails), and
4
+ // `Timer.publish` is Combine's anyway. These two classes have the same names;
5
+ // the CLI's staging gives the app `typealias Timer = FoundationBridge.Timer`
6
+ // and `typealias RunLoop = FoundationBridge.RunLoop`, so `Timer.publish(every:
7
+ // 1, on: .main, in: .common).autoconnect()` and `Timer.scheduledTimer` resolve
8
+ // here. Ticks come from the runtime's executor (`_IntervalPublisher` and
9
+ // `_ExecutorTimer` in the SwiftUI shim), so headless runs stay deterministic.
10
+
11
+ import Foundation
12
+ import SwiftUI
13
+
14
+ public final class RunLoop: @unchecked Sendable {
15
+ public struct Mode: Hashable, Sendable {
16
+ public let rawValue: String
17
+ public init(rawValue: String) { self.rawValue = rawValue }
18
+ public static let `default` = Mode(rawValue: "default")
19
+ public static let common = Mode(rawValue: "common")
20
+ }
21
+ nonisolated(unsafe) public static let main = RunLoop()
22
+ public static var current: RunLoop { main }
23
+
24
+ /// Timers run as soon as they are made; adding one changes nothing.
25
+ public func add(_ timer: Timer, forMode mode: Mode) {}
26
+ }
27
+
28
+ public final class Timer: @unchecked Sendable {
29
+ /// Emits the current date every `interval` seconds once subscribed.
30
+ public typealias TimerPublisher = _IntervalPublisher<Date>
31
+
32
+ public static func publish(every interval: TimeInterval, tolerance: TimeInterval? = nil, on runLoop: RunLoop = .main, in mode: RunLoop.Mode = .default, options: Never? = nil) -> TimerPublisher {
33
+ _IntervalPublisher(every: interval) { Date() }
34
+ }
35
+
36
+ private var core: _ExecutorTimer!
37
+ /// What the timer was made with (`scheduledTimer(timeInterval:target:selector:userInfo:repeats:)`).
38
+ public internal(set) var userInfo: Any?
39
+
40
+ public var isValid: Bool { core.isValid }
41
+ public var timeInterval: TimeInterval { core.timeInterval }
42
+
43
+ init(interval: TimeInterval, repeats: Bool, block: @escaping @Sendable (Timer) -> Void) {
44
+ core = _ExecutorTimer(interval: interval, repeats: repeats) { _ in block(self) }
45
+ }
46
+
47
+ @discardableResult
48
+ public static func scheduledTimer(withTimeInterval interval: TimeInterval, repeats: Bool, block: @escaping @Sendable (Timer) -> Void) -> Timer {
49
+ Timer(interval: interval, repeats: repeats, block: block)
50
+ }
51
+
52
+ public func invalidate() { core.invalidate() }
53
+ }
@@ -0,0 +1,30 @@
1
+ // A stand-in for UIKit's `UITextChecker`, which SwiftUI apps reach through
2
+ // SwiftUI's re-export of UIKit (Hacking with SwiftUI's WordScramble checks
3
+ // spelling with it). Full-Foundation builds only (NSRange is Foundation's). The
4
+ // browser has no spell checker to ask, so every word
5
+ // passes: `rangeOfMisspelledWord` is always `NSNotFound`, `guesses` and
6
+ // `completions` are nil. Enough for the code to compile and run; the game
7
+ // just stops rejecting misspellings.
8
+
9
+ import Foundation
10
+
11
+ public final class UITextChecker: @unchecked Sendable {
12
+ public init() {}
13
+
14
+ /// Always "no misspelling": `NSRange(location: NSNotFound, length: 0)`.
15
+ public func rangeOfMisspelledWord(in stringToCheck: String, range: NSRange, startingAt startingOffset: Int,
16
+ wrap wrapFlag: Bool, language: String) -> NSRange {
17
+ NSRange(location: NSNotFound, length: 0)
18
+ }
19
+
20
+ public func guesses(forWordRange range: NSRange, in string: String, language: String) -> [String]? { nil }
21
+ public func completions(forPartialWordRange range: NSRange, in string: String, language: String) -> [String]? { nil }
22
+
23
+ public static let availableLanguages: [String] = ["en"]
24
+ public static func hasLearnedWord(_ word: String) -> Bool { false }
25
+ public static func learnWord(_ word: String) {}
26
+ public static func unlearnWord(_ word: String) {}
27
+ public func ignoreWord(_ wordToIgnore: String) {}
28
+ public func ignoredWords() -> [String]? { nil }
29
+ public func setIgnoredWords(_ words: [String]?) {}
30
+ }