Hi,

really interesting work, but don't you think something like feature 
detection should be handled by a dedicated library like Modernizr for 
example? You likely want to check for vendor prefixed support when you do 
feature detection.

-- J.

[email protected] schrieb am Dienstag, 14. September 2021 um 02:48:52 
UTC+2:

> Akasha is a typed browser API layer that is always up to date with the 
> latest web specifications.
>
> Several significant changes have been made since the 0.17 announced to 
> this group. The major changes include:
>
>
>    - The ability to test for features before using the feature 
>    using methods such as WindowGlobal.isIndexedDBSupported(). The feature 
>    tests can be done dynamically at runtime or statically at compile-time. If 
>    done at compile time then the code can be compiled assuming that the 
>    feature is present or absent.
>    - Global execution contexts other than "window" are natively 
>    supported. From a practical perspective this means it is relatively easy 
> to 
>    use Akasha to write service workers and access the globals via 
>    ServiceWorkerGlobal. Similarly  there exists AudioWorkletGlobal and 
>    DedicatedWorkerGlobal etc. Within a GWT application, these global 
>    execution contexts may still require custom linkers but are much easier to 
>    write.
>
> Other changes since the 0.17 release:
>
>    - Update the WebGPU spec to the W3C Working Draft, 10 September 2021 
> version. 
>    This update resulted in a few minor name changes (i.e. the 
>    GPURequestAdapterOptions.forceSoftware member was renamed to 
>    GPURequestAdapterOptions.forceFallbackAdapter, GPUAdapter.isSoftware was 
>    renamed to GPUAdapter.isFallbackAdapter) as well as improved modelling 
>    of the types that contain constants (i.e. GPUMapMode no longer extends 
>    JsObject and is a final class in the java binding).
>    - Update the Permissions spec to the W3C Working Draft 07 September 
>    2021 version. This update resulted in a few minor changes to the 
>    PermissionsName enumeration, the addition of the name attribute to the 
>    PermissionStatus type and the removal of the (unused) 
>    PermissionSetParameters.
>    - Update the WebCodecs spec to the W3C Working Draft, 8 September 2021 
> version. 
>    This update resulted in many changes across several types. See the API 
> diff 
>    for further details.
>    - Migrate artifacts generated from the WebCodecs spec to the package 
>    codecs in the java binding.
>    - Update the Visual Viewport API spec to the Draft Community Group 
>    Report 10 September 2021 version. This update resulted in the 
>    VisualViewport.segments attribute being made optional (or Nullable in 
>    the java binding).
>    - Update the Web Share API spec to the W3C Working Draft 03 September 
>    2021 version. This update resulted in the addition of the 
>    Navigator.canShare(...) operation.
>    - Update the WebXR Device API spec to the W3C Working Draft, 24 August 
>    2021 version. This update resulted in several changes, check the API 
>    diff for further details.
>    - Update the HTML Living Standard spec to the 11 September 2021 version. 
>    This update resulted in several changes, check the API diff for further 
>    details. The most significant changes were the addition of 
>    oncontextlost and oncontextrestored message handlers to several types 
>    and the addition of isContextLost() to contexts as appropriate.
>    - Updates across several specifications resulted in PostMessageOptions 
> being 
>    renamed to StructuredSerializeOptions.
>    - Re-fetch the entire set of specifications ensuring that the required 
>    members in dictionaries appear in declaration order as initiated in 
> version 
>    v0.15. This has resulted in the reordering of parameters in create() 
> methods 
>    in the java binding to represent members in declaration order. This 
>    impacted the following types at a minimum: StaticRangeInit, 
>    XRInputSourcesChangeEventInit, RTCRtpCodecCapability, 
>    RTCRtpCodecParameters, RTCRtpContributingSource, 
>    RTCRtpHeaderExtensionParameters, RTCRtpParameters, RTCRtpSendParameters
>    , RTCStats, RTCTrackEventInit, HkdfParams, Pbkdf2Params, 
>    AllowedBluetoothDevice, AudioProcessingEventInit, IIRFilterOptions, 
>    OfflineAudioContextOptions (as well as several other less used 
>    dictionaries)
>    - Rename several union types to reflect intent, migrate the unions to 
>    the java package where they are used and convert unions to marker 
>    interfaces where appropriate. i.e. The union type 
>    IDBObjectStoreOrIDBIndexUnion was renamed to IDBCursorSource, 
>    converted to a marker interface and migrated to the akasha.idb java 
>    package. See the API diff for a full list of unions migrated.
>    - Type the AudioTrack.kind attribute as an enumeration containing the 
>    set of valid values.
>    - Add the Resize Observer spec at W3C First Public Working Draft, 11 
>    February 2020 version to the set of specs that are used to 
>    generate the browser API. This added the ResizeObserver type and 
>    related infrastructure.
>    - Generate static types for global execution contexts of a service 
>    worker (i.e. SharedWorkerGlobal), a worker (i.e. DedicatedWorkerGlobal), 
>    a shared worker (i.e. SharedWorkerGlobal) and audio worklets (i.e. 
>    AudioWorkletGlobal).
>    - Change the way the java binding generates unions so that methods of 
>    the form as[X]() and is[X]() exist for every component type X that is 
>    part of the union.
>    - Replace usages of @javax.annotations.Nullable with 
>    @jsinterop.annotations.JsNullable and @javax.annotations.Nonnull with 
>    @jsinterop.annotations.JsNonNull on natively exposed elements to 
>    provide additional guidance to the J2CL/closure compiler variant of the 
>    java binding.
>    - Add event handling code to types (i.e. addXListener(...) and 
>    removeXListener(...) methods etc.) to more types and more events. The 
>    types and associated events as follows:
>       - *AbstractWorker*: error
>       - *Animation*: cancel finish remove
>       - *AudioWorkletNode*: processorerror
>       - *BaseAudioContext*: statechange
>       - *Element*: click contextmenu
>       - *EventSource*: error
>       - *GlobalEventHandlers*: abort animationcancel animationend 
>       animationiteration animationstart auxclick beforeinput blur cancel 
>       canplay canplaythrough change click close compositionend 
>       compositionstart compositionupdate contextmenu cuechange dblclick 
>       drag dragend dragenter dragexit dragleave dragover dragstart drop 
>       durationchange emptied ended error focus focusin focusout 
>       gotpointercapture input invalid keydown keypress keyup load 
>       loadeddata loadedmetadata loadstart lostpointercapture mousedown 
>       mouseenter mouseleave mousemove mouseout mouseover mouseup pause 
>       play playing pointercancel pointerdown pointerenter pointerleave 
>       pointermove pointerout pointerover pointerup progress ratechange 
>       reset resize scroll securitypolicyviolation seeked seeking select 
>       selectionchange selectstart stalled submit suspend timeupdate toggle
>        touchcancel touchend touchmove touchstart transitioncancel 
>       transitionend transitionrun transitionstart volumechange waiting 
>       wheel
>       - *HTMLCanvasElement*: contextlost contextrestored
>       - *IDBDatabase*: versionchange
>       - *MediaDevices*: devicechange
>       - *MediaKeySession*: keystatuseschange message
>       - *MediaQueryList*: change
>       - *MediaSource*: sourceclose sourceended sourceopen
>       - *Notification*: click close error show
>       - *OffscreenCanvas*: contextlost contextrestored
>       - *PermissionStatus*: change
>       - *RTCDtlsTransport*: error statechange
>       - *ScreenOrientation*: change
>       - *ServiceWorkerContainer*: controllerchange messageerror
>       - *ServiceWorkerGlobalScope*: canmakepayment fetch messageerror 
>       notificationclose paymentrequest sync
>       - *ServiceWorkerRegistration*: updatefound
>       - *SourceBuffer*: abort error update updateend updatestart
>       - *SourceBufferList*: addsourcebuffer removesourcebuffer
>       - *TextTrackCue*: enter exit
>       - *TextTrackList*: removetrack
>       - *WindowEventHandlers*: afterprint beforeprint beforeunload 
>       hashchange languagechange message messageerror offline online 
>       pagehide pageshow popstate rejectionhandled storage 
>       unhandledrejection unload
>       - *WorkerGlobalScope*: offline online rejectionhandled 
>       unhandledrejection
>       - *XMLHttpRequestEventTarget*: abort error load loadend loadstart 
>       progress timeout
>    - Move the classes IDBObjectStoreOrIDBIndexUnion and 
>    IDBObjectStoreOrIDBIndexOrIDBCursorUnion from the akasha.indexdb package 
>    to the akasha.idb package. This was done to align with the rename of 
>    indexDB package that occurred prior to the initial release of akasha.
>    - Annotate several synthesized unions with the 
>    @org.jetbrains.annotations.ApiStatus.Internal annotation to make it 
>    clear that these types should not be used in user code. IntelliJ IDE will 
>    also generate a warning if user code interacts directly with internal 
> types.
>    - Ensure that the code parameter to GPUShaderModuleDescriptor.create() is 
>    annotated with @WGSL.
>    - Replace usages of goog.global with $wnd in the GWT variant. If there 
>    is an error while the GWT application is initializing or Akasha is used 
>    early in the initialization process, there was previously a period where 
>    goog.global had not been assigned and thus the Akasha code would 
>    generate errors when using the symbol. This change eliminated this 
>    possibility.
>    - Start generating @JsOverlay methods of the form boolean 
>    isXSupported() for features that may be optional in an implementation. 
>    This allows downstream libraries to detect whether a feature is present 
>    before making use of the feature. The feature detection can be done at run 
>    time or at compile time depending on the needs of the application. The 
>    default behaviour of feature detection methods are to perform the checks 
> at 
>    runtime, however this can be be changed by defining an appropriately named 
>    property in closure compiler to either true or false when using the 
>    J2CL variant or setting the equivalent binding property when using the GWT 
>    variant. The name of the property is derived from the symbol that is 
>    feature detected. Feature detection methods added and the associated 
>    compile time properties include:
>       - Navigator.isBluetoothSupported() with a property 
>       akasha.is__Navigator_bluetooth__supported
>       - Navigator.isGpuSupported() with a property 
>       akasha.is__Navigator_gpu__supported
>       - Window.isLocalStorageSupported() and 
>       WindowGlobal.isLocalStorageSupported() with a property 
>       akasha.is__Window_localStorage__supported
>       - Window.isIndexedDBSupported() and 
>       WindowGlobal.isIndexedDBSupported() with a property 
>       akasha.is__Window_indexedDB__supported
>       - Window.isSessionStorageSupported() and 
>       WindowGlobal.isSessionStorageSupported() with a property 
>       akasha.is__Window_sessionStorage__supported
>       - Window.isSpeechSynthesisSupported() and 
>       WindowGlobal.isSpeechSynthesisSupported() with a property 
>       akasha.is__Window_speechSynthesis__supported
>       - Navigator.isClipboardSupported() with a property 
>       akasha.is__Navigator_clipboard__supported
>       - Navigator.isCredentialsSupported() with a property 
>       akasha.is__Navigator_credentials__supported
>       - Navigator.isGeolocationSupported() with a property 
>       akasha.is__Navigator_geolocation__supported
>       - Navigator.isGetGamepadsSupported() with a property 
>       akasha.is__Navigator_isGetGamepadsSupported__supported
>       - Navigator.isMediaDevicesSupported() with a property 
>       akasha.is__Navigator_mediaDevices__supported
>       - Navigator.isPermissionsSupported() with a property 
>       akasha.is__Navigator_permissions__supported
>       - Navigator.isRequestMediaKeySystemAccessSupported() with a 
>       property akasha.is__Navigator_requestMediaKeySystemAccess__supported
>       - Navigator.isSendBeaconSupported() with a property 
>       akasha.is__Navigator_sendBeacon__supported
>       - Navigator.isServiceWorkerSupported() with a property 
>       akasha.is__Navigator_serviceWorker__supported
>       - Navigator.isShareSupported() with a property 
>       akasha.is__Navigator_share__supported
>       - Navigator.isVibrateSupported() with a property 
>       akasha.is__Navigator_vibrate__supported
>       - Navigator.isWakeLockSupported() with a property 
>       akasha.is__Navigator_wakeLock__supported
>       - Navigator.isXrSupported() with a property 
>       akasha.is__Navigator_xr__supported
>    - Move the akasha.StringOrLongLongUnion type to 
>    akasha.core.StringOrLongLongUnion as it is only used by the 
>    akasha.core.JSON type.
>    - Add initial support for the akasha:webgpu-j2cl artifact which is an 
>    Elemental2 compatible variant of the WebGPU specification.
>    - Remove the TrustedScript symbol from the externs generated for the 
>    akasha:j2cl artifact as it is no longer required with more recent 
>    versions of the closure compiler.
>
> To learn more about Akasha and get started:
>
> https://github.com/akasha/akasha
>
> Thanks!
>
> The Akasha Team
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit/806168cd-8352-4842-b658-dbe8a7549a5fn%40googlegroups.com.

Reply via email to