generated at
scrapbox-bundlerのimport map解決方法
scrapbox-bundlerimport map及びexternal (scrapbox-bundler)によるbundle除外項目のURL解決方法メモ

import mapの仕様はgithubWICG/import-mapsに準拠する
deno_x/importmapの仕様がこれに準拠していない気がするので、自前で解決algorithmを作るつもり
いやもしかしたらあってるのか?
わからんtakker

採用する解決手順
前処理
external の相対URLを絶対URLに直す
bare module spesifierはそのままにする
1. path importer を組み合わせてresourceの絶対URLを作る
bare moduleの場合はそのまま
2. deno_x/importmapを使ってresourceのpathを変換する
3. 解決結果を返す
URLの場合
URLを返す
redirectが必要な場合は、redirect解決函数 redirect() を使って変換したURLを返す
CORS制限のないURLの場合
そのまま fetch() を実行してredirect後のURLを取得する
fetch() した内容はcacheに保存しておく
CORS制限つきURLの場合
個別にclient側で対処するしかない
さしあたり現状で実装しているpax.deno.devdeno.landだけ対応することにする
他のドメインへの対応が必要な場合は、別途PRを作って対処する
bare moduleもしくは external で指定されたpathの場合
{external: true, path: "..."} を返す

hr
解決の順序
keyの方のみ
valueはいじらない
2. externalがあれば、それにもCORS回避用URL変換処理 (scrapbox-bundler)をかけておく
3. 解決対象のpathを絶対URLに変換する
単に importer と統合するだけ
bare module nameだった場合はそのままにする
4. import mapでpathを変換する
5. externalで指定されたpathをskipする
この段階でもbare module nameだったpathもskipする
6. pathを読み込み対象として登録する

CORS回避用URL変換処理 (scrapbox-bundler)で変換する pax.deno.dev などのURLは、redirect先URLに差し替えている
これって、redirect先URLをimport mapによる書き換え対象とすべき?それともredirect元URLの方を書き換え対象とすべき?
どっちも書き換えたいかなtakker
一方でscrapbox-proxyはURLを変える意図はない
単にresourceの取得先を切り替えているだけ
URLは書き換えないべきだろう

#2021-12-06 12:57:24
#2021-12-05 09:07:15
#2021-11-29 22:46:38