❌esbuild-wasmのversionを上げつつ改造する (@takker/ScrapJupyter)
from @takker/ScrapJupyter
2022-01-17
21:56:45
JSONに関わる型パズルメモで一旦腰を据えて調べたほうがいい
21:52:24 型パズルで手こずっている
任意の型がValueの部分型として扱えるかどうかを表す式を書けない
code:ts
export type Value =
| null
| boolean
| number
| string
| Uint8Array
| Value[]
| { key: string: Value };
力尽きたやつ
code:ts
export type ValueLike<T> = T extends null | boolean | number | string | Uint8Array
? T
: T extends Value[] ? T
: T extends Record<string, Value> ? T
: Tkeyof T extends Value ? T
: never;
18:33:21 workerの型定義は↓の戦略で問題なくクリアした
今他のコードの型定義を調節している
browserと関係のないコードを消す
17:50:21 再挑戦
今度はwasm exec.jsをいじらずに、型定義ファイルだけ用意する
2022-01-10
20:23:31 断念
esbuildの改造が難しすぎる
wasm_exec.jsが非常に難解
https://github.com/golang/go/blob/go1.17.5/misc/wasm/wasm_exec.js
v0.14.11ではversion 1.17.5を使っているようだhttps://github.com/evanw/esbuild/blob/v0.14.11/Makefile#L23
型定義つけるのがめんどくさい
謎の機能とかがある
一見用をなさないpromiseとか
20:31:32 git blameしたら理由がわかった
https://github.com/golang/go/commit/7d9649bf0d3acb8b83d966afa945db7f2188b753
GO側でclass Goをimportして呼び出しているんだ
複雑怪奇だ……takker.icon
GoのWASMがライブラリではなくアプリケーションであること | Kabuku Developers Blog
全部TypeScriptにしようなんて考えないほうが良かったかも……
コードが難解すぎて吐きそう
下手にscopeをいじると、Goとの通信プロトコルを壊しそう
globalThisとかを平気でGoにそのまま渡しちゃってるんだもんこのコード
Reflect.get()を使う必要性がわからん箇所がいくつもある
これはいじらずに、外部から.d.tsで被せるだけにしたほうがいい
というか本来の目的(BufferSourceを外部から注入できるようにする)はwasm exec.jsをいじらずとも達成できるんだよな……
20:52:54 すっげえ時間無駄にした
18:11:14 esbuild-wasmをv0.14.11にupgradeしている最中
UI codeのページを生成する
worker codeのページを生成する
#2022-01-17 17:48:32
#2022-01-13 09:26:14
#2021-01-10