@swiftbrowser/swift 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Package.swift +200 -9
- package/README.md +7 -9
- package/Sources/AVFoundation/AVFoundation.swift +131 -0
- package/Sources/AVFoundation/Asset.swift +487 -0
- package/Sources/AVFoundation/AudioSession.swift +144 -0
- package/Sources/AVFoundation/CMTime.swift +303 -0
- package/Sources/AVFoundation/Capture.swift +688 -0
- package/Sources/AVFoundation/Player.swift +749 -0
- package/Sources/AVFoundation/PlayerView.swift +117 -0
- package/Sources/AVKit/AVKit.swift +132 -0
- package/Sources/Accelerate/Accelerate.swift +122 -0
- package/Sources/AppIntents/AppIntents.swift +144 -0
- package/Sources/AppIntents/Parameters.swift +220 -0
- package/Sources/AppIntents/Shortcuts.swift +159 -0
- package/Sources/AudioToolbox/AudioToolbox.swift +55 -0
- package/Sources/AuthenticationServices/AuthenticationServices.swift +257 -0
- package/Sources/AuthenticationServices/Authorization.swift +251 -0
- package/Sources/Charts/Charts.swift +0 -4
- package/Sources/Combine/AnyCancellable.swift +65 -0
- package/Sources/Combine/AnyPublisher.swift +148 -0
- package/Sources/Combine/AnySubscriber.swift +230 -0
- package/Sources/Combine/Cancellable.swift +35 -0
- package/Sources/Combine/Codable.swift +29 -0
- package/Sources/Combine/CombineIdentifier.swift +45 -0
- package/Sources/Combine/Concurrency/ConcurrencyHelpers.swift +24 -0
- package/Sources/Combine/Concurrency/Future+Concurrency.swift +136 -0
- package/Sources/Combine/Concurrency/GENERATED-Publisher+Concurrency.swift +397 -0
- package/Sources/Combine/CurrentValueSubject.swift +252 -0
- package/Sources/Combine/CustomCombineIdentifierConvertible.swift +28 -0
- package/Sources/Combine/Future.swift +228 -0
- package/Sources/Combine/GENERATED-RootProtocols.swift +426 -0
- package/Sources/Combine/Helpers/ConduitBase.swift +40 -0
- package/Sources/Combine/Helpers/ConduitList.swift +59 -0
- package/Sources/Combine/Helpers/DebugHook.swift +177 -0
- package/Sources/Combine/Helpers/FilterProducer.swift +174 -0
- package/Sources/Combine/Helpers/Locking.swift +30 -0
- package/Sources/Combine/Helpers/PartialCompletion.swift +26 -0
- package/Sources/Combine/Helpers/ReduceProducer.swift +249 -0
- package/Sources/Combine/Helpers/SubjectSubscriber.swift +96 -0
- package/Sources/Combine/Helpers/SubscriberTap.swift +69 -0
- package/Sources/Combine/Helpers/SubscriptionStatus.swift +33 -0
- package/Sources/Combine/Helpers/SubscriptionTap.swift +33 -0
- package/Sources/Combine/Helpers/Utils.swift +30 -0
- package/Sources/Combine/Helpers/Violations.swift +33 -0
- package/Sources/Combine/ImmediateScheduler.swift +178 -0
- package/Sources/Combine/LICENSE +21 -0
- package/Sources/Combine/NotificationPublisher.swift +48 -0
- package/Sources/Combine/ObjectWillChange.swift +46 -0
- package/Sources/Combine/PassthroughSubject.swift +222 -0
- package/Sources/Combine/Publisher+Subscribe.swift +53 -0
- package/Sources/Combine/Publishers/Deferred.swift +48 -0
- package/Sources/Combine/Publishers/Empty.swift +54 -0
- package/Sources/Combine/Publishers/Fail.swift +42 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.Catch.swift +673 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.Encode.swift +388 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.MapKeyPath.swift +384 -0
- package/Sources/Combine/Publishers/Just.swift +313 -0
- package/Sources/Combine/Publishers/Optional.Publisher.swift +315 -0
- package/Sources/Combine/Publishers/Publishers.AllSatisfy.swift +217 -0
- package/Sources/Combine/Publishers/Publishers.AssertNoFailure.swift +158 -0
- package/Sources/Combine/Publishers/Publishers.Autoconnect.swift +193 -0
- package/Sources/Combine/Publishers/Publishers.Breakpoint.swift +231 -0
- package/Sources/Combine/Publishers/Publishers.Buffer.swift +356 -0
- package/Sources/Combine/Publishers/Publishers.Collect.swift +102 -0
- package/Sources/Combine/Publishers/Publishers.CollectByCount.swift +195 -0
- package/Sources/Combine/Publishers/Publishers.CompactMap.swift +241 -0
- package/Sources/Combine/Publishers/Publishers.Comparison.swift +371 -0
- package/Sources/Combine/Publishers/Publishers.Concatenate.swift +474 -0
- package/Sources/Combine/Publishers/Publishers.Contains.swift +293 -0
- package/Sources/Combine/Publishers/Publishers.Count.swift +87 -0
- package/Sources/Combine/Publishers/Publishers.Debounce.swift +332 -0
- package/Sources/Combine/Publishers/Publishers.Delay.swift +269 -0
- package/Sources/Combine/Publishers/Publishers.Drop.swift +155 -0
- package/Sources/Combine/Publishers/Publishers.DropUntilOutput.swift +283 -0
- package/Sources/Combine/Publishers/Publishers.DropWhile.swift +378 -0
- package/Sources/Combine/Publishers/Publishers.Filter.swift +248 -0
- package/Sources/Combine/Publishers/Publishers.First.swift +261 -0
- package/Sources/Combine/Publishers/Publishers.FlatMap.swift +533 -0
- package/Sources/Combine/Publishers/Publishers.HandleEvents.swift +260 -0
- package/Sources/Combine/Publishers/Publishers.IgnoreOutput.swift +109 -0
- package/Sources/Combine/Publishers/Publishers.Last.swift +252 -0
- package/Sources/Combine/Publishers/Publishers.MakeConnectable.swift +82 -0
- package/Sources/Combine/Publishers/Publishers.Map.swift +351 -0
- package/Sources/Combine/Publishers/Publishers.MapError.swift +140 -0
- package/Sources/Combine/Publishers/Publishers.MeasureInterval.swift +187 -0
- package/Sources/Combine/Publishers/Publishers.Multicast.swift +284 -0
- package/Sources/Combine/Publishers/Publishers.Output.swift +241 -0
- package/Sources/Combine/Publishers/Publishers.PrefixUntilOutput.swift +197 -0
- package/Sources/Combine/Publishers/Publishers.PrefixWhile.swift +176 -0
- package/Sources/Combine/Publishers/Publishers.Print.swift +206 -0
- package/Sources/Combine/Publishers/Publishers.ReceiveOn.swift +227 -0
- package/Sources/Combine/Publishers/Publishers.Reduce.swift +204 -0
- package/Sources/Combine/Publishers/Publishers.RemoveDuplicates.swift +264 -0
- package/Sources/Combine/Publishers/Publishers.ReplaceEmpty.swift +201 -0
- package/Sources/Combine/Publishers/Publishers.ReplaceError.swift +211 -0
- package/Sources/Combine/Publishers/Publishers.Retry.swift +274 -0
- package/Sources/Combine/Publishers/Publishers.Scan.swift +331 -0
- package/Sources/Combine/Publishers/Publishers.Sequence.swift +437 -0
- package/Sources/Combine/Publishers/Publishers.SetFailureType.swift +120 -0
- package/Sources/Combine/Publishers/Publishers.Share.swift +104 -0
- package/Sources/Combine/Publishers/Publishers.SubscribeOn.swift +197 -0
- package/Sources/Combine/Publishers/Publishers.SwitchToLatest.swift +444 -0
- package/Sources/Combine/Publishers/Publishers.Throttle.swift +359 -0
- package/Sources/Combine/Publishers/Publishers.Timeout.swift +301 -0
- package/Sources/Combine/Publishers/Publishers.Zip.swift +720 -0
- package/Sources/Combine/Publishers/Publishers.swift +13 -0
- package/Sources/Combine/Publishers/Record.swift +237 -0
- package/Sources/Combine/Publishers/Result.Publisher.swift +337 -0
- package/Sources/Combine/Result.swift +46 -0
- package/Sources/Combine/Scheduler.swift +89 -0
- package/Sources/Combine/Schedulers.swift +211 -0
- package/Sources/Combine/Subject+Void.swift +17 -0
- package/Sources/Combine/Subscriber+Void.swift +20 -0
- package/Sources/Combine/Subscribers/Subscribers.Assign.swift +175 -0
- package/Sources/Combine/Subscribers/Subscribers.Completion.swift +90 -0
- package/Sources/Combine/Subscribers/Subscribers.Demand.swift +476 -0
- package/Sources/Combine/Subscribers/Subscribers.Sink.swift +206 -0
- package/Sources/Combine/Subscribers/Subscribers.swift +9 -0
- package/Sources/Combine/Subscription.swift +22 -0
- package/Sources/Combine/Subscriptions.swift +42 -0
- package/Sources/Combine/SwiftUIObservation.swift +10 -0
- package/Sources/Combine/_Introspection.swift +107 -0
- package/Sources/CommonCrypto/CommonCrypto.swift +80 -0
- package/Sources/Compression/Compression.swift +365 -0
- package/Sources/Compression/Deflate.swift +407 -0
- package/Sources/Compression/Zlib.swift +179 -0
- package/Sources/CoreFoundationTypes/CoreFoundationTypes.swift +101 -0
- package/Sources/CoreGraphics/CoreGraphics.swift +411 -0
- package/Sources/CoreGraphics/ProjectionTransforms.swift +28 -0
- package/Sources/CoreHaptics/CoreHaptics.swift +399 -0
- package/Sources/CoreImage/CIColor.swift +41 -0
- package/Sources/CoreImage/CIContext.swift +31 -0
- package/Sources/CoreImage/CIDetector.swift +57 -0
- package/Sources/CoreImage/CIFilter.swift +243 -0
- package/Sources/CoreImage/CIFilterBuiltins.swift +136 -0
- package/Sources/CoreImage/CIImage.swift +162 -0
- package/Sources/CoreImage/QRCode.swift +393 -0
- package/Sources/CoreLocation/Coordinate.swift +30 -0
- package/Sources/CoreLocation/Location.swift +65 -0
- package/Sources/CoreML/Evaluation.swift +414 -0
- package/Sources/CoreML/FeatureValue.swift +266 -0
- package/Sources/CoreML/Model.swift +269 -0
- package/Sources/CoreML/MultiArray.swift +92 -0
- package/Sources/CoreML/Specification.swift +233 -0
- package/Sources/CoreText/CoreText.swift +64 -0
- package/Sources/CoreTransferable/CoreTransferable.swift +606 -0
- package/Sources/CryptoKit/ChaChaPoly.swift +258 -0
- package/Sources/CryptoKit/CryptoKit.swift +375 -0
- package/Sources/CryptoKit/Curve25519.swift +317 -0
- package/Sources/CryptoKit/P256.swift +321 -0
- package/Sources/FoundationBridge/AppStorage.swift +165 -0
- package/Sources/FoundationBridge/AssetResources.swift +90 -0
- package/Sources/FoundationBridge/AsyncBytes.swift +128 -0
- package/Sources/FoundationBridge/AsyncImage.swift +116 -0
- package/Sources/FoundationBridge/AttributedStrings.swift +16 -0
- package/Sources/{_FoundationCommon → FoundationBridge}/Bundle.swift +41 -4
- package/Sources/FoundationBridge/CombineExports.swift +8 -0
- package/Sources/FoundationBridge/CoreFoundation.swift +77 -0
- package/Sources/FoundationBridge/Dispatch.swift +458 -0
- package/Sources/FoundationBridge/EnvironmentFoundation.swift +41 -0
- package/Sources/FoundationBridge/FileImporter.swift +128 -0
- package/Sources/FoundationBridge/FileSystem.swift +68 -0
- package/Sources/FoundationBridge/FoundationBridge.swift +24 -72
- package/Sources/FoundationBridge/HostResolution.swift +31 -0
- package/Sources/FoundationBridge/ItemProvider.swift +655 -0
- package/Sources/FoundationBridge/KeyValueObserving.swift +138 -0
- package/Sources/FoundationBridge/Links.swift +127 -0
- package/Sources/FoundationBridge/ListFormatter.swift +32 -0
- package/Sources/FoundationBridge/Localization.swift +149 -0
- package/Sources/FoundationBridge/Locks.swift +50 -0
- package/Sources/FoundationBridge/Markdown.swift +527 -0
- package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
- package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
- package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
- package/Sources/FoundationBridge/Operation.swift +195 -0
- package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
- package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
- package/Sources/FoundationBridge/SceneStorage.swift +78 -0
- package/Sources/FoundationBridge/SecurityExports.swift +8 -0
- package/Sources/FoundationBridge/Selector.swift +226 -0
- package/Sources/FoundationBridge/StringComparators.swift +17 -0
- package/Sources/FoundationBridge/Table.swift +211 -0
- package/Sources/FoundationBridge/TextAttributes.swift +42 -0
- package/Sources/FoundationBridge/Timer.swift +6 -1
- package/Sources/FoundationBridge/URLSession.swift +718 -0
- package/Sources/{_FoundationCommon → FoundationBridge}/UserDefaults.swift +17 -4
- package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
- package/Sources/FoundationBridge/WebSocket.swift +187 -0
- package/Sources/FoundationModels/FoundationModels.swift +1098 -0
- package/Sources/ImageIO/GIF.swift +72 -0
- package/Sources/ImageIO/ImageIO.swift +248 -0
- package/Sources/ImageIO/ImageTypes.swift +28 -0
- package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
- package/Sources/LocalAuthentication/LAContext.swift +86 -0
- package/Sources/MapKit/Geometry.swift +223 -0
- package/Sources/MapKit/Map.swift +638 -0
- package/Sources/MapKit/MapView.swift +229 -0
- package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
- package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
- package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
- package/Sources/OSLog/OSLog.swift +6 -0
- package/Sources/Photos/Photos.swift +572 -0
- package/Sources/PhotosUI/PhotosPicker.swift +248 -0
- package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
- package/Sources/QuickLook/QuickLook.swift +168 -0
- package/Sources/SafariServices/SafariServices.swift +106 -0
- package/Sources/Security/Security.swift +332 -0
- package/Sources/StoreKit/AppStore.swift +207 -0
- package/Sources/StoreKit/Products.swift +280 -0
- package/Sources/StoreKit/RequestReview.swift +28 -0
- package/Sources/StoreKit/StoreKit1.swift +486 -0
- package/Sources/StoreKit/StoreViews.swift +428 -0
- package/Sources/StoreKit/Transactions.swift +197 -0
- package/Sources/SwiftData/Macros.swift +58 -0
- package/Sources/SwiftData/ModelActor.swift +38 -0
- package/Sources/SwiftData/ModelContainer.swift +129 -0
- package/Sources/SwiftData/ModelContext.swift +451 -0
- package/Sources/SwiftData/PersistentModel.swift +238 -0
- package/Sources/SwiftData/Properties.swift +261 -0
- package/Sources/SwiftData/Query.swift +256 -0
- package/Sources/SwiftData/Schema.swift +192 -0
- package/Sources/SwiftData/Store.swift +146 -0
- package/Sources/SwiftData/StringPredicates.swift +125 -0
- package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
- package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
- package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
- package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
- package/Sources/SwiftDataMacros/Plugin.swift +18 -0
- package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
- package/Sources/SwiftUI/API/Accessibility.swift +55 -6
- package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
- package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
- package/Sources/SwiftUI/API/Alert.swift +1 -1
- package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
- package/Sources/SwiftUI/API/Animation.swift +37 -5
- package/Sources/SwiftUI/API/App.swift +31 -1
- package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
- package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
- package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
- package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
- package/Sources/SwiftUI/API/Canvas.swift +337 -0
- package/Sources/SwiftUI/API/Color.swift +104 -28
- package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
- package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
- package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
- package/Sources/SwiftUI/API/Commands.swift +106 -0
- package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
- package/Sources/SwiftUI/API/ContentShape.swift +33 -0
- package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
- package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
- package/Sources/SwiftUI/API/Controls.swift +59 -27
- package/Sources/SwiftUI/API/CustomLayout.swift +49 -10
- package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
- package/Sources/SwiftUI/API/Decorations.swift +1 -1
- package/Sources/SwiftUI/API/EditMode.swift +25 -82
- package/Sources/SwiftUI/API/Effects.swift +105 -7
- package/Sources/SwiftUI/API/Entry.swift +8 -0
- package/Sources/SwiftUI/API/Environment.swift +93 -9
- package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
- package/Sources/SwiftUI/API/Focus.swift +11 -3
- package/Sources/SwiftUI/API/Gauge.swift +3 -2
- package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
- package/Sources/SwiftUI/API/GeometryReader.swift +13 -2
- package/Sources/SwiftUI/API/GestureState.swift +65 -0
- package/Sources/SwiftUI/API/Gestures.swift +1 -1
- package/Sources/SwiftUI/API/Glass.swift +127 -0
- package/Sources/SwiftUI/API/Grid.swift +1 -1
- package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
- package/Sources/SwiftUI/API/KeyPress.swift +54 -0
- package/Sources/SwiftUI/API/LabelStyle.swift +13 -6
- package/Sources/SwiftUI/API/Layout.swift +67 -12
- package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
- package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
- package/Sources/SwiftUI/API/Lists.swift +61 -6
- package/Sources/SwiftUI/API/Menu.swift +8 -1
- package/Sources/SwiftUI/API/Modifiers.swift +80 -10
- package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
- package/Sources/SwiftUI/API/Namespace.swift +44 -0
- package/Sources/SwiftUI/API/Navigation.swift +24 -9
- package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
- package/Sources/SwiftUI/API/ObservableObject.swift +16 -2
- package/Sources/SwiftUI/API/Path.swift +543 -0
- package/Sources/SwiftUI/API/Phase8Controls.swift +48 -31
- package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
- package/Sources/SwiftUI/API/Picker.swift +11 -2
- package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
- package/Sources/SwiftUI/API/Popover.swift +41 -0
- package/Sources/SwiftUI/API/Preferences.swift +262 -0
- package/Sources/SwiftUI/API/Presentation.swift +17 -4
- package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
- package/Sources/SwiftUI/API/Primitives.swift +164 -37
- package/Sources/SwiftUI/API/Publishers.swift +4 -4
- package/Sources/SwiftUI/API/Redaction.swift +75 -0
- package/Sources/SwiftUI/API/RowActions.swift +3 -2
- package/Sources/SwiftUI/API/Scenes.swift +131 -0
- package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
- package/Sources/SwiftUI/API/ScrollTargets.swift +3 -3
- package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
- package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
- package/Sources/SwiftUI/API/Shape.swift +214 -0
- package/Sources/SwiftUI/API/ShapeStyle.swift +105 -7
- package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
- package/Sources/SwiftUI/API/Sharing.swift +193 -0
- package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
- package/Sources/SwiftUI/API/State.swift +18 -1
- package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
- package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
- package/Sources/SwiftUI/API/TabContent.swift +841 -0
- package/Sources/SwiftUI/API/Table.swift +382 -0
- package/Sources/SwiftUI/API/Tabs.swift +148 -4
- package/Sources/SwiftUI/API/Tasks.swift +2 -2
- package/Sources/SwiftUI/API/Text.swift +386 -0
- package/Sources/SwiftUI/API/TextDates.swift +61 -0
- package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
- package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
- package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
- package/Sources/SwiftUI/API/Toolbar.swift +52 -16
- package/Sources/SwiftUI/API/Transfer.swift +145 -0
- package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
- package/Sources/SwiftUI/API/Video.swift +64 -0
- package/Sources/SwiftUI/API/View.swift +10 -2
- package/Sources/SwiftUI/API/ViewModifier.swift +4 -1
- package/Sources/SwiftUI/API/VisualEffect.swift +74 -1
- package/Sources/SwiftUI/API/Windows.swift +25 -0
- package/Sources/SwiftUI/Charts/Axis.swift +7 -1
- package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
- package/Sources/SwiftUI/Charts/Chart.swift +17 -3
- package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
- package/Sources/SwiftUI/Localization/Localization.swift +498 -0
- package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
- package/Sources/SwiftUI/Runtime/Executor.swift +2 -0
- package/Sources/SwiftUI/Runtime/Exports.swift +37 -1
- package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
- package/Sources/SwiftUI/Runtime/JSON.swift +76 -4
- package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
- package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
- package/Sources/SwiftUI/Runtime/Ops.swift +58 -12
- package/Sources/SwiftUI/Runtime/Reconciler.swift +10 -1
- package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
- package/Sources/SwiftUI/Runtime/Runtime.swift +977 -198
- package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
- package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
- package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
- package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
- package/Sources/Symbols/Symbols.swift +25 -0
- package/Sources/Translation/Translation.swift +423 -0
- package/Sources/UIKit/Activity.swift +213 -0
- package/Sources/UIKit/Alerts.swift +69 -0
- package/Sources/UIKit/AppDelegate.swift +222 -0
- package/Sources/UIKit/Appearance.swift +84 -0
- package/Sources/UIKit/ColorConversions.swift +70 -0
- package/Sources/UIKit/Controls.swift +225 -0
- package/Sources/UIKit/Device.swift +200 -0
- package/Sources/UIKit/Feedback.swift +65 -0
- package/Sources/UIKit/Font.swift +307 -0
- package/Sources/UIKit/Graphics.swift +204 -0
- package/Sources/UIKit/HostingController.swift +185 -0
- package/Sources/UIKit/Identity.swift +24 -0
- package/Sources/UIKit/Introspectable.swift +510 -0
- package/Sources/UIKit/Pasteboard.swift +363 -0
- package/Sources/UIKit/PhotoAlbum.swift +81 -0
- package/Sources/UIKit/RemoteNotifications.swift +15 -0
- package/Sources/UIKit/Representable.swift +288 -0
- package/Sources/UIKit/SafeArea.swift +12 -0
- package/Sources/UIKit/SceneDelegates.swift +132 -0
- package/Sources/UIKit/Scenes.swift +40 -0
- package/Sources/UIKit/ScrollView.swift +157 -0
- package/Sources/UIKit/ShortcutItems.swift +67 -0
- package/Sources/UIKit/SymbolConfiguration.swift +124 -0
- package/Sources/UIKit/TargetAction.swift +123 -0
- package/Sources/UIKit/TextPaste.swift +161 -0
- package/Sources/UIKit/TextView.swift +538 -0
- package/Sources/UIKit/UIKit.swift +292 -0
- package/Sources/UIKit/UIView.swift +855 -0
- package/Sources/UIKit/ViewTranslation.swift +311 -0
- package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
- package/Sources/UserNotifications/Content.swift +370 -0
- package/Sources/UserNotifications/NotificationCenter.swift +309 -0
- package/Sources/WeatherKit/WeatherKit.swift +228 -0
- package/Sources/WebKit/WebKit.swift +245 -0
- package/Sources/os/os.swift +376 -0
- package/Sources/zlib/zlib.swift +6 -0
- package/index.d.ts +1 -1
- package/index.mjs +2 -2
- package/manifest.d.mts +2 -0
- package/manifest.mjs +39 -0
- package/package.json +5 -3
- package/sync-sources.mjs +21 -7
- package/Sources/FoundationLite/Common.swift +0 -3
- package/Sources/FoundationLite/FoundationLite.swift +0 -171
- package/Sources/FoundationLite/Interaction.swift +0 -146
- package/Sources/FoundationLite/Timer.swift +0 -48
- package/Sources/_FoundationCommon/_FoundationCommon.swift +0 -10
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
/// The slice of Foundation's formatting API that SwiftUI apps lean on, for
|
|
2
|
-
/// platforms where only `FoundationEssentials` is linked (WebAssembly, Linux):
|
|
3
|
-
/// the CLI's lean mode and the repository's own examples.
|
|
4
|
-
///
|
|
5
|
-
/// Full Foundation on Wasm costs about 14 MB more than FoundationEssentials
|
|
6
|
-
/// even with its ICU data trimmed (docs/ops-protocol.md, "Phase 11"), so apps
|
|
7
|
-
/// that must stay small import `FoundationEssentials` plus this module; the
|
|
8
|
-
/// CLI's default is the real Foundation with `FoundationBridge`.
|
|
9
|
-
/// The spellings match Foundation's, so a file that does
|
|
10
|
-
///
|
|
11
|
-
/// #if canImport(FoundationEssentials)
|
|
12
|
-
/// import FoundationEssentials
|
|
13
|
-
/// import FoundationLite
|
|
14
|
-
/// #else
|
|
15
|
-
/// import Foundation
|
|
16
|
-
/// #endif
|
|
17
|
-
///
|
|
18
|
-
/// compiles unchanged against Apple's SDKs. Output is fixed to US English
|
|
19
|
-
/// conventions (`1,234.5`, `Nov 14, 2023`, `10:13 PM`), which is also what
|
|
20
|
-
/// keeps headless snapshots byte-stable.
|
|
21
|
-
#if canImport(FoundationEssentials)
|
|
22
|
-
import FoundationEssentials
|
|
23
|
-
|
|
24
|
-
// MARK: - Dates
|
|
25
|
-
|
|
26
|
-
extension Date {
|
|
27
|
-
/// Namespaces for `formatted(date:time:)`, mirroring `Foundation.Date.FormatStyle`.
|
|
28
|
-
public struct FormatStyle: Sendable {
|
|
29
|
-
public enum DateStyle: Hashable, Sendable {
|
|
30
|
-
case omitted, numeric, abbreviated, long, complete
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public enum TimeStyle: Hashable, Sendable {
|
|
34
|
-
case omitted, shortened, standard, complete
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/// `11/14/2023, 10:13 PM`, `Nov 14, 2023`, `November 14, 2023`,
|
|
39
|
-
/// `Tuesday, November 14, 2023`; times `10:13 PM`, `10:13:20 PM`.
|
|
40
|
-
/// Uses `Calendar.current`, which is Gregorian/UTC on WebAssembly.
|
|
41
|
-
public func formatted(date dateStyle: FormatStyle.DateStyle = .numeric,
|
|
42
|
-
time timeStyle: FormatStyle.TimeStyle = .shortened) -> String {
|
|
43
|
-
let calendar = Calendar.current
|
|
44
|
-
let c = calendar.dateComponents([.year, .month, .day, .weekday, .hour, .minute, .second], from: self)
|
|
45
|
-
let year = c.year ?? 1970, month = c.month ?? 1, day = c.day ?? 1
|
|
46
|
-
let monthName = _monthNames[(month - 1) % 12]
|
|
47
|
-
let datePart: String?
|
|
48
|
-
switch dateStyle {
|
|
49
|
-
case .omitted: datePart = nil
|
|
50
|
-
case .numeric: datePart = "\(month)/\(day)/\(year)"
|
|
51
|
-
case .abbreviated: datePart = "\(monthName.prefix(3)) \(day), \(year)"
|
|
52
|
-
case .long: datePart = "\(monthName) \(day), \(year)"
|
|
53
|
-
case .complete: datePart = "\(_weekdayNames[((c.weekday ?? 1) - 1) % 7]), \(monthName) \(day), \(year)"
|
|
54
|
-
}
|
|
55
|
-
let timePart: String?
|
|
56
|
-
if timeStyle == .omitted {
|
|
57
|
-
timePart = nil
|
|
58
|
-
} else {
|
|
59
|
-
let hour24 = c.hour ?? 0, minute = c.minute ?? 0, second = c.second ?? 0
|
|
60
|
-
let hour12 = hour24 % 12 == 0 ? 12 : hour24 % 12
|
|
61
|
-
let suffix = hour24 < 12 ? "AM" : "PM"
|
|
62
|
-
let base = "\(hour12):\(_twoDigits(minute))"
|
|
63
|
-
switch timeStyle {
|
|
64
|
-
case .shortened: timePart = "\(base) \(suffix)"
|
|
65
|
-
case .standard, .complete: timePart = "\(base):\(_twoDigits(second)) \(suffix)"
|
|
66
|
-
case .omitted: timePart = nil
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
switch (datePart, timePart) {
|
|
70
|
-
case (let d?, let t?): return "\(d), \(t)"
|
|
71
|
-
case (let d?, nil): return d
|
|
72
|
-
case (nil, let t?): return t
|
|
73
|
-
case (nil, nil): return ""
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
public func formatted() -> String { formatted(date: .numeric, time: .shortened) }
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private let _monthNames = ["January", "February", "March", "April", "May", "June", "July",
|
|
81
|
-
"August", "September", "October", "November", "December"]
|
|
82
|
-
private let _weekdayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
|
|
83
|
-
|
|
84
|
-
func _twoDigits(_ value: Int) -> String { value < 10 ? "0\(value)" : "\(value)" }
|
|
85
|
-
|
|
86
|
-
// MARK: - Numbers
|
|
87
|
-
|
|
88
|
-
/// Inserts thousands separators into a run of digits (optionally signed).
|
|
89
|
-
func _grouped(_ digits: Substring) -> String {
|
|
90
|
-
var sign = ""
|
|
91
|
-
var body = digits
|
|
92
|
-
if body.first == "-" {
|
|
93
|
-
sign = "-"
|
|
94
|
-
body = body.dropFirst()
|
|
95
|
-
}
|
|
96
|
-
var out: [Character] = []
|
|
97
|
-
for (index, ch) in body.reversed().enumerated() {
|
|
98
|
-
if index > 0 && index % 3 == 0 { out.append(",") }
|
|
99
|
-
out.append(ch)
|
|
100
|
-
}
|
|
101
|
-
return sign + String(out.reversed())
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/// Formats a decimal string (`-1234.5000`) the way `.number` does: grouped
|
|
105
|
-
/// integer digits and at most `maxFractionDigits` fraction digits, trailing
|
|
106
|
-
/// zeros dropped.
|
|
107
|
-
func _formatDecimalString(_ text: String, maxFractionDigits: Int = 3) -> String {
|
|
108
|
-
let parts = text.split(separator: ".", maxSplits: 1, omittingEmptySubsequences: false)
|
|
109
|
-
let integer = _grouped(parts[0])
|
|
110
|
-
guard parts.count == 2 else { return integer }
|
|
111
|
-
var fraction = String(parts[1].prefix(maxFractionDigits))
|
|
112
|
-
while fraction.last == "0" { fraction.removeLast() }
|
|
113
|
-
return fraction.isEmpty ? integer : "\(integer).\(fraction)"
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
extension BinaryInteger {
|
|
117
|
-
/// `1234` → `1,234`.
|
|
118
|
-
public func formatted() -> String { _grouped(Substring(String(self))) }
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
extension BinaryFloatingPoint where Self: CustomStringConvertible {
|
|
122
|
-
/// `1234.5678` → `1,234.568`; whole numbers lose the `.0`.
|
|
123
|
-
public func formatted() -> String {
|
|
124
|
-
guard isFinite else { return isNaN ? "NaN" : (self < 0 ? "-∞" : "∞") }
|
|
125
|
-
// Round to 3 fraction digits in integer arithmetic to avoid exponents.
|
|
126
|
-
let scaled = (Double(self) * 1000).rounded()
|
|
127
|
-
let negative = scaled < 0
|
|
128
|
-
let magnitude = Int64(min(abs(scaled), Double(Int64.max / 2)))
|
|
129
|
-
let integer = magnitude / 1000
|
|
130
|
-
let fraction = magnitude % 1000
|
|
131
|
-
let text = "\(negative && magnitude != 0 ? "-" : "")\(integer)." + _threeDigits(fraction)
|
|
132
|
-
return _formatDecimalString(text)
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/// Three-digit zero-padded fraction.
|
|
137
|
-
private func _threeDigits(_ value: Int64) -> String {
|
|
138
|
-
let raw = String(value)
|
|
139
|
-
return String(repeating: "0", count: max(0, 3 - raw.count)) + raw
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
extension Decimal {
|
|
143
|
-
/// `Decimal(string: "3.75")! * 4` → `15`; `Decimal(string: "1234.5")!` → `1,234.5`.
|
|
144
|
-
public func formatted() -> String { _formatDecimalString(description) }
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// MARK: - Strings
|
|
148
|
-
|
|
149
|
-
extension StringProtocol {
|
|
150
|
-
public func localizedCaseInsensitiveContains<T: StringProtocol>(_ other: T) -> Bool {
|
|
151
|
-
lowercased().contains(other.lowercased())
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
public func localizedStandardContains<T: StringProtocol>(_ other: T) -> Bool {
|
|
155
|
-
localizedCaseInsensitiveContains(other)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
public func localizedCompare<T: StringProtocol>(_ other: T) -> ComparisonResult {
|
|
159
|
-
let a = String(self), b = String(other)
|
|
160
|
-
return a == b ? .orderedSame : (a < b ? .orderedAscending : .orderedDescending)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
public func localizedCaseInsensitiveCompare<T: StringProtocol>(_ other: T) -> ComparisonResult {
|
|
164
|
-
lowercased().localizedCompare(other.lowercased())
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
public func localizedStandardCompare<T: StringProtocol>(_ other: T) -> ComparisonResult {
|
|
168
|
-
localizedCaseInsensitiveCompare(other)
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
#endif
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
// Glue between FoundationEssentials and the SwiftUI shim for the Phase 8
|
|
2
|
-
// controls and list editing (docs/ops-protocol.md, "Phase 8"): the shim
|
|
3
|
-
// cannot name Foundation types, so it is generic over small protocols that
|
|
4
|
-
// this file conforms Foundation's types to. Also the Foundation API the
|
|
5
|
-
// Hacking with SwiftUI projects use that FoundationEssentials lacks:
|
|
6
|
-
// `IndexSet`, `trimmingCharacters(in:)` and the number format styles.
|
|
7
|
-
|
|
8
|
-
import FoundationEssentials
|
|
9
|
-
import SwiftUI
|
|
10
|
-
|
|
11
|
-
// MARK: - Dates
|
|
12
|
-
|
|
13
|
-
extension Date: _DatePickerValue {
|
|
14
|
-
public var _secondsSince1970: Double { timeIntervalSince1970 }
|
|
15
|
-
public init(_secondsSince1970 seconds: Double) {
|
|
16
|
-
self.init(timeIntervalSince1970: seconds)
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// MARK: - IndexSet
|
|
21
|
-
|
|
22
|
-
/// The subset of Foundation's `IndexSet` that `onDelete` / `onMove` and
|
|
23
|
-
/// `remove(atOffsets:)` need. FoundationEssentials does not ship `IndexSet`.
|
|
24
|
-
public struct IndexSet: Hashable, Sendable, Sequence, _OffsetSet {
|
|
25
|
-
public private(set) var _offsets: [Int]
|
|
26
|
-
|
|
27
|
-
public init() { _offsets = [] }
|
|
28
|
-
public init(integer: Int) { _offsets = [integer] }
|
|
29
|
-
public init(integersIn range: Range<Int>) { _offsets = Array(range) }
|
|
30
|
-
public init(integersIn range: ClosedRange<Int>) { _offsets = Array(range) }
|
|
31
|
-
public init<S: Sequence>(_ indexes: S) where S.Element == Int {
|
|
32
|
-
_offsets = Array(Set(indexes)).sorted()
|
|
33
|
-
}
|
|
34
|
-
public init(_offsets: [Int]) {
|
|
35
|
-
self._offsets = Array(Set(_offsets)).sorted()
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public var count: Int { _offsets.count }
|
|
39
|
-
public var isEmpty: Bool { _offsets.isEmpty }
|
|
40
|
-
public var first: Int? { _offsets.first }
|
|
41
|
-
public var last: Int? { _offsets.last }
|
|
42
|
-
public func contains(_ integer: Int) -> Bool { _offsets.contains(integer) }
|
|
43
|
-
|
|
44
|
-
public mutating func insert(_ integer: Int) {
|
|
45
|
-
if !_offsets.contains(integer) { _offsets = (_offsets + [integer]).sorted() }
|
|
46
|
-
}
|
|
47
|
-
public mutating func remove(_ integer: Int) { _offsets.removeAll { $0 == integer } }
|
|
48
|
-
|
|
49
|
-
public func makeIterator() -> IndexingIterator<[Int]> { _offsets.makeIterator() }
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// MARK: - Strings
|
|
53
|
-
|
|
54
|
-
/// The subset of Foundation's `CharacterSet` that `trimmingCharacters(in:)`
|
|
55
|
-
/// needs (FoundationEssentials does not ship `CharacterSet`).
|
|
56
|
-
public struct CharacterSet: Hashable, Sendable {
|
|
57
|
-
var scalars: Set<Unicode.Scalar>
|
|
58
|
-
|
|
59
|
-
public init(charactersIn string: String) {
|
|
60
|
-
scalars = Set(string.unicodeScalars)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public func contains(_ scalar: Unicode.Scalar) -> Bool { scalars.contains(scalar) }
|
|
64
|
-
|
|
65
|
-
/// Space and tab, like Foundation's `whitespaces`.
|
|
66
|
-
public static var whitespaces: CharacterSet { CharacterSet(charactersIn: " \t") }
|
|
67
|
-
public static var whitespacesAndNewlines: CharacterSet { CharacterSet(charactersIn: " \t\n\r") }
|
|
68
|
-
public static var newlines: CharacterSet { CharacterSet(charactersIn: "\n\r") }
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
extension StringProtocol {
|
|
72
|
-
/// Removes the characters of `set` from both ends.
|
|
73
|
-
public func trimmingCharacters(in set: CharacterSet) -> String {
|
|
74
|
-
var scalars = Substring(self).unicodeScalars[...]
|
|
75
|
-
while let first = scalars.first, set.contains(first) { scalars.removeFirst() }
|
|
76
|
-
while let last = scalars.last, set.contains(last) { scalars.removeLast() }
|
|
77
|
-
return String(scalars)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/// Every occurrence of `target` replaced by `replacement`.
|
|
81
|
-
public func replacingOccurrences(of target: String, with replacement: String) -> String {
|
|
82
|
-
guard !target.isEmpty else { return String(self) }
|
|
83
|
-
return String(self).split(separator: target, omittingEmptySubsequences: false).joined(separator: replacement)
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// MARK: - Number format styles
|
|
88
|
-
|
|
89
|
-
/// `Text(value, format: .number)` / `.currency(code:)` for floating-point
|
|
90
|
-
/// values, mirroring `Foundation.FloatingPointFormatStyle` (not in
|
|
91
|
-
/// FoundationEssentials). US English only.
|
|
92
|
-
public struct FloatingPointFormatStyle<Value: BinaryFloatingPoint & CustomStringConvertible & LosslessStringConvertible>: _TextFormat, Sendable {
|
|
93
|
-
public typealias Input = Value
|
|
94
|
-
|
|
95
|
-
public init() {}
|
|
96
|
-
|
|
97
|
-
public func _formatText(_ value: Value) -> String { value.formatted() }
|
|
98
|
-
|
|
99
|
-
public func _parseText(_ text: String) -> Value? {
|
|
100
|
-
Value(text.replacingOccurrences(of: ",", with: "").trimmingCharacters(in: .whitespaces))
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/// `$1,234.50`; negative amounts `-$1.00`. Three-letter codes other than
|
|
104
|
-
/// USD print as `EUR 1,234.50`, like `Locale(identifier: "en_US")`.
|
|
105
|
-
public struct Currency: _TextFormat, Sendable {
|
|
106
|
-
public typealias Input = Value
|
|
107
|
-
public var code: String
|
|
108
|
-
|
|
109
|
-
public init(code: String) { self.code = code }
|
|
110
|
-
|
|
111
|
-
public func _formatText(_ value: Value) -> String {
|
|
112
|
-
let amount = Double(value)
|
|
113
|
-
let digits = _grouped(Substring(String(Int(abs(amount).rounded(.down))))) + "." + _twoDigits(Int(((abs(amount) * 100).rounded()) ) % 100)
|
|
114
|
-
let sign = amount < 0 ? "-" : ""
|
|
115
|
-
return code == "USD" ? "\(sign)$\(digits)" : "\(sign)\(code) \(digits)"
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
public func _parseText(_ text: String) -> Value? {
|
|
119
|
-
var cleaned = text.trimmingCharacters(in: .whitespaces)
|
|
120
|
-
for token in ["$", ",", code, " "] { cleaned = cleaned.replacingOccurrences(of: token, with: "") }
|
|
121
|
-
return Value(cleaned)
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/// `Text(count, format: .number)` for integers.
|
|
127
|
-
public struct IntegerFormatStyle<Value: BinaryInteger & LosslessStringConvertible>: _TextFormat, Sendable {
|
|
128
|
-
public typealias Input = Value
|
|
129
|
-
public init() {}
|
|
130
|
-
public func _formatText(_ value: Value) -> String { value.formatted() }
|
|
131
|
-
public func _parseText(_ text: String) -> Value? { Value(text.replacingOccurrences(of: ",", with: "")) }
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
extension _TextFormat where Self == FloatingPointFormatStyle<Double> {
|
|
135
|
-
public static var number: FloatingPointFormatStyle<Double> { FloatingPointFormatStyle() }
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
extension _TextFormat where Self == FloatingPointFormatStyle<Double>.Currency {
|
|
139
|
-
public static func currency(code: String) -> FloatingPointFormatStyle<Double>.Currency {
|
|
140
|
-
FloatingPointFormatStyle<Double>.Currency(code: code)
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
extension _TextFormat where Self == IntegerFormatStyle<Int> {
|
|
145
|
-
public static var number: IntegerFormatStyle<Int> { IntegerFormatStyle() }
|
|
146
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// `Timer` for the browser: `Timer.publish(every:on:in:).autoconnect()` with
|
|
2
|
-
// SwiftUI's `onReceive`, and `scheduledTimer(withTimeInterval:repeats:block:)`.
|
|
3
|
-
// Ticks come from the runtime's executor (`_IntervalPublisher` and
|
|
4
|
-
// `_ExecutorTimer` in the SwiftUI shim), so headless runs stay deterministic.
|
|
5
|
-
// FoundationEssentials has no Timer or RunLoop; these are the pieces SwiftUI
|
|
6
|
-
// code uses. FoundationBridge has the same two types for full Foundation,
|
|
7
|
-
// whose own Timer needs CFRunLoop and cannot link on WASI.
|
|
8
|
-
|
|
9
|
-
import FoundationEssentials
|
|
10
|
-
import SwiftUI
|
|
11
|
-
|
|
12
|
-
public final class RunLoop: @unchecked Sendable {
|
|
13
|
-
public struct Mode: Hashable, Sendable {
|
|
14
|
-
public let rawValue: String
|
|
15
|
-
public init(rawValue: String) { self.rawValue = rawValue }
|
|
16
|
-
public static let `default` = Mode(rawValue: "default")
|
|
17
|
-
public static let common = Mode(rawValue: "common")
|
|
18
|
-
}
|
|
19
|
-
nonisolated(unsafe) public static let main = RunLoop()
|
|
20
|
-
public static var current: RunLoop { main }
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public final class Timer: @unchecked Sendable {
|
|
24
|
-
/// Emits the current date every `interval` seconds once subscribed.
|
|
25
|
-
public typealias TimerPublisher = _IntervalPublisher<Date>
|
|
26
|
-
|
|
27
|
-
public static func publish(every interval: TimeInterval, tolerance: TimeInterval? = nil, on runLoop: RunLoop = .main, in mode: RunLoop.Mode = .default, options: Never? = nil) -> TimerPublisher {
|
|
28
|
-
_IntervalPublisher(every: interval) { Date() }
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
private var core: _ExecutorTimer!
|
|
32
|
-
|
|
33
|
-
public var isValid: Bool { core.isValid }
|
|
34
|
-
public var timeInterval: TimeInterval { core.timeInterval }
|
|
35
|
-
|
|
36
|
-
init(interval: TimeInterval, repeats: Bool, block: @escaping @Sendable (Timer) -> Void) {
|
|
37
|
-
// The core's task holds this timer until it has fired or is invalidated.
|
|
38
|
-
core = _ExecutorTimer(interval: interval, repeats: repeats) { _ in block(self) }
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/// Schedules `block` after `interval` seconds, repeating when asked, on the executor.
|
|
42
|
-
@discardableResult
|
|
43
|
-
public static func scheduledTimer(withTimeInterval interval: TimeInterval, repeats: Bool, block: @escaping @Sendable (Timer) -> Void) -> Timer {
|
|
44
|
-
Timer(interval: interval, repeats: repeats, block: block)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public func invalidate() { core.invalidate() }
|
|
48
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// What FoundationLite (lean builds) and FoundationBridge (full builds) share:
|
|
2
|
-
/// the browser's `UserDefaults` and `Bundle`. Both are written against
|
|
3
|
-
/// FoundationEssentials, whose `Data`, `Date`, `URL` and `FileManager` are the
|
|
4
|
-
/// very types the full Foundation re-exports, so one implementation serves
|
|
5
|
-
/// both modes. FoundationLite re-exports this module; FoundationBridge aliases
|
|
6
|
-
/// the two classes, and the CLI's generated file aliases them again in the app
|
|
7
|
-
/// so they shadow corelibs Foundation's (whose `UserDefaults` cannot persist
|
|
8
|
-
/// and whose `Bundle.main` traps on WASI). See docs/ops-protocol.md, "Phase 11".
|
|
9
|
-
import FoundationEssentials
|
|
10
|
-
import SwiftUI
|