vivliostyle / vivliostyle-pub

Write, Collaborate, Publish.
https://vivliostyle-pub-develop.vercel.app/
Other
13 stars 1 forks source link

Safari (WebKit): "SyntaxError: Invalid regular expression: invalid group specifier name" #184

Closed MurakamiShinyu closed 3 months ago

MurakamiShinyu commented 2 years ago

https://vivliostyle-pub-develop.vercel.app not working in Safari (WebKit).

Safari (WebKit)でVivliostyle Pubが動きません。コンソールを確認すると、SyntaxErrorが発生しています:

SyntaxError: Invalid regular expression: invalid group specifier name

これはWebKItで正規表現の後読み(lookbehind)が未サポートであるために起きるエラーです。WebKitのissue:

問題の正規表現のコードは .replace(/(?<!^)\/+/g,"/") というところで使われています。 これは、Vivliostyle Pubのソースコードではなく、Webpackでバンドルされている依存ライブラリのひとつである upath の中のコードです。

https://github.com/anodynos/upath/blob/7419429d66f28f860f12f6e4cc9734f6be87f88f/source/code/upath.coffee#L13-L16

toUnix = (p) ->
  p = p.replace /\\/g, '/'
  p = p.replace /(?<!^)\/+/g, '/' # replace doubles except beginning for UNC path
  p

この正規表現の後読みが使われているために、このライブラリを使っているとWebKitでエラーになってしまうという困った問題です。

この問題のコードは、私がupathにpull requestしたものでした😅

MurakamiShinyu commented 2 years ago

I made a pull request to upath for fixing this issue:

MurakamiShinyu commented 2 years ago

問題のupathを取り除いても、vfm でも同様に正規表現のlookbehindが使われているため、Safariでのこのエラーは解決しません。

vfmで正規表現のlookbehindが使われている箇所:

https://github.com/vivliostyle/vfm/blob/d58f54c4c2cd37457d338117b506094efa4c68e1/src/plugins/math.ts#L15-L18

https://github.com/vivliostyle/vfm/blob/d58f54c4c2cd37457d338117b506094efa4c68e1/src/plugins/ruby.ts#L13

Safariでのエラー(upathは問題が起きる前のバージョン v1.2.0 に変えてテスト):

Screen Shot 2022-06-03 at 22 18 09

MurakamiShinyu commented 3 months ago

Safari (WebKit) で "SyntaxError: Invalid regular expression: invalid group specifier name" となる問題は、2023年3月リリースのSafari 16.4で解決しているのでこのissueは閉じます。

Safariでログインできないのは別の理由です。(See #297)