bytecodealliance / bytecodealliance/ComponentizeJS

fails on regular expressions with Unicode property escapes

未關閉
#177 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
bug good first issue
主要語言
Rust
星號
391
分支
53
平均合併
3 天 5 小時
30 天內合併 PR
1

描述

I am trying to wrap typespec into a component. It pulls in change-case library which uses regular expressions with Unicode. componetize is failing on these regular expressions:

```js
var SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu;
var SPLIT_UPPER_UPPER_RE = /(\p{Lu})([\p{Lu}][\p{Ll}])/gu;
var SPLIT_SEPARATE_NUMBER_RE = /(\d)\p{Ll}|(\p{L})\d/u;
var DEFAULT_STRIP_REGEXP = /[^\p{L}\d]+/giu;
```

The code is from here:
node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js
https://www.npmjs.com/package/change-case
https://github.com/blakeembrey/change-case/blob/main/packages/change-case/src/index.ts

```
$ bunx jco componentize world.js --wit wit -o ts-typescript.wasm -d clocks -d random -d http

Exception while evaluating top-level script
world.js:31083:32 SyntaxError: invalid class property name in regular expression:
world.js:31083:32 ([\p{Ll}\d])(\p{Lu})
world.js:31083:32 ....^
Error: the `componentize.wizer` function trapped

Caused by:
0: error while executing at wasm backtrace:
0: 0x79597a - !
1: 0x7962ed - !
2: 0x20646 - !
3: 0x1f5f9 - !
4: 0xa6a5 - !
5: 0x22acba - !
1: Exited with i32 exit status 1
Error: Failed to initialize the compiled Wasm binary with Wizer:
Wizering failed to complete
at componentize (file:///Users/cataggar/ms/ComponentizeJS/src/componentize.js:305:13)
at async componentize (file:///Users/cataggar/ms/jco/src/cmd/componentize.js:11:25)
at async file:///Users/cataggar/ms/jco/src/jco.js:213:9
error: script "componentize" exited with code 1
(jco componentize)
In 'typescript' script 'componentize' failed with exit code 1
```

# Copilot says:

SpiderMonkey, the JavaScript and WebAssembly engine used in Mozilla Firefox, supports Unicode property escapes as part of the ECMAScript 2018 (ES9) specification. This feature allows you to use Unicode property escapes in regular expressions to match characters based on their Unicode properties.

### Enabling Unicode Property Escapes in SpiderMonkey

To ensure that SpiderMonkey is compiled with support for Unicode property escapes, you need to use a version of SpiderMonkey that supports ECMAScript 2018 or later. Most modern versions of SpiderMonkey, including those used in recent versions of Firefox, already include this support.

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

使用回報的命令 `bunx jco componentize world.js --wit wit -o ts-typescript.wasm -d clocks -d random -d http` 重現失敗,並檢查 `node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js` 中的 Unicode 屬性正規表示式。透過 `src/componentize.js` 第 305 行附近以及回報的 `jco` 進入點追蹤該失敗。完成的標準是相同的輸入可以在沒有 Wizer 初始化錯誤的情況下被 componentize。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
javascript, wasm
領域
tooling
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
需要釐清
新手友好度
30/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。