Non-owner LGTM! As Ben's spec mentor, I want to mention how well the specification-writing process for this has gone. Not only did Ben produce an extremely thorough spec, with review for every commit, but we also had the good fortune of getting a second implementation <https://github.com/denoland/rust-urlpattern> as the spec came out, which found a number of small bugs that slipped through review. In combination with the good web platform tests <https://wpt.fyi/results/urlpattern?label=experimental&label=master&aligned> which have high coverage <https://analysis.chromium.org/p/chromium/coverage/dir?host=chromium.googlesource.com&project=chromium/src&ref=refs/heads/main&revision=399808806081f555cc4b4ca60821c9efc9a9ac04&path=//third_party/liburlpattern/&platform=linux&test_suite_type=any>, I'm confident that the resulting spec will be interoperably implementable.
Separately, I want to note how this is a great instance of responsible platform evolution. At the original TPAC where URL pattern matching for service worker scopes was proposed, there was some worry that we might create a solution that is good enough for service workers, but not useful for web developers in general. Ben took this criticism to heart and prioritized this general URLPattern API, with lots of involvement from the web developer community, to ensure that we're creating something generally useful. -Domenic On Mon, Aug 30, 2021 at 5:08 PM Ben Kelly <[email protected]> wrote: > Contact [email protected] > > Explainerhttps://github.com/WICG/urlpattern/blob/master/explainer.md > > Specificationhttps://wicg.github.io/urlpattern/ > > Summary > > URLPattern is a new web API that provides native support for matching URLs > given a pattern string. It is designed to be usable both in javascript > directly and by passing patterns to other web platform APIs; e.g. as a > service worker scope. > > > Blink componentBlink > <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink> > > TAG reviewhttps://github.com/w3ctag/design-reviews/issues/417 > > TAG review statusIssues addressed > > Risks > > > Interoperability and Compatibility > > This API has minimal interop and compat risk. It can easily be feature > detected and a polyfill is available at: > https://www.npmjs.com/package/urlpattern-polyfill > > > Gecko: No signal ( > https://github.com/mozilla/standards-positions/issues/566 > <https://chromestatus.com/admin/features/launch/5731920199548928/5?intent=1> > ) > > WebKit: No signal ( > https://lists.webkit.org/pipermail/webkit-dev/2021-August/031942.html) > > Web developers: Positive ( > https://github.com/WICG/urlpattern/blob/main/dev-trials-feedack.md) > > Ergonomics > > The URLPattern API will often be used with the URL API. To make this more > natural we have tried to match URL behavior and API shape wherever > possible. URLPattern is also similar in nature to RegExp and we have > attempted to match its API shape as well; e.g. providing `test()` and > `exec()` methods. In regard to the ergonomics of the pattern syntax itself, > we have adopted the syntax from the popular javascript library > path-to-regexp. Our hope is that using a popular syntax will result in the > web API being more natural for developers to use. > > > Activation > > The URLPattern API is easily feature detected and a polyfill is availabe > at: https://www.npmjs.com/package/urlpattern-polyfill > > > Security > > The main security risks involve the addition of a new parser in the > platform. Since parsers are common attack vectors it does represent a risk. > We mitigate this risk by requiring that URLPattern strings must be parsed > in the sandboxed renderer. In addition, we are actively fuzzing the parser. > > > Debuggability > > Currently URLPattern does not have any special integration with devtools. > The summary view of the URLPattern object is already useful for inspecting > what patterns it will use to match. Exceptions are used to report errors in > constructing a URLPattern. In the future it may be useful to provide some > kind of syntax highlighting or checking of URLPattern syntax. This seems > challenging, though, as the values are passed as plain javascript strings > and are not a javascript type like regular expressions. This could be an > area for future exploration, though. > > > Is this feature fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> > ?Yes > > DevTrial instructionshttps://github.com/WICG/urlpattern/blob/main/howto.md > > Flag nameabout://flags/#enable-experimental-web-platform-features > > Requires code in //chrome?False > > Tracking bughttps://bugs.chromium.org/p/chromium/issues/detail?id=1141510 > > Estimated milestones > DevTrial on desktop 93 > DevTrial on Webview 93 > > Link to entry on the Chrome Platform Status > https://chromestatus.com/feature/5731920199548928 > > Links to previous Intent discussionsIntent to prototype: > https://groups.google.com/a/chromium.org/d/msg/blink-dev/jBMvUEkyBq8/IwYIZmhEBQAJ > Ready for Trial: > https://groups.google.com/a/chromium.org/g/blink-dev/c/WitVII_BzyU/m/mI8lZY4NAgAJ > > > This intent message was generated by Chrome Platform Status > <https://www.chromestatus.com/>. > > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" 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/a/chromium.org/d/msgid/blink-dev/CAK7rkMgCrO2VN09hUEvfwnMBLqRWzA1NVHk%3D-PBwPhtJ%2BVO3Ag%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAK7rkMgCrO2VN09hUEvfwnMBLqRWzA1NVHk%3D-PBwPhtJ%2BVO3Ag%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" 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/a/chromium.org/d/msgid/blink-dev/CAM0wra8Seygh-0z6qGFNdfS%3Dr5HyC66z74OX6WVvFPNno%3DUuuQ%40mail.gmail.com.
