TURBOWARP EXTENSION · 0.1.0

TurboWarp-UUID

プロジェクトのデータやイベントに、UUIDの識別子を付けます。v4/v7の生成と形式判定を、3つのブロックで使えます。

読み込みと基本の使い方

TurboWarpの「拡張機能を追加」→「カスタム拡張機能」で、URL欄に https://kubohiroya.github.io/turbowarp-uuid/dist/turbowarp-uuid.js を指定します。unsandboxed指定は不要です。

拡張JSをダウンロードして、ファイルから読み込む方法も使えます。配布契約はextension-manifest.jsonで確認できます。

同じUUIDを複数箇所で使うには、生成結果を変数へ保存します。生成ブロックは実行のたびに新しいUUIDを返します。モニター表示は無効です。

緑の旗が押されたとき
  変数「データID」を (UUID v4を生成する) にする
  「データID」を使ってデータを保存する

UUID v4を生成する

UUID v4を生成する

値を返すブロックです。引数はありません。opcodeは generateV4 です。

暗号学的に安全な122ビットの乱数から、versionとvariantを設定した小文字・ハイフン付きのUUIDを返します。

例: 919108f7-52d1-4220-9bac-f847db4148a8

時刻を識別子に含める必要がない場合や、通常のデータIDに使用できます。

UUID v7を生成する

UUID v7を生成する

値を返すブロックです。引数はありません。opcodeは generateV7 です。

先頭48ビットへ現在のUnix時刻(ミリ秒)を格納し、残りの74ビットに暗号学的乱数を使います。小文字・ハイフン付きのUUIDを返します。

形式の例: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

異なるミリ秒の時刻が増加する場合は、文字列順が時刻順になります。同じミリ秒内の生成順や、端末の時計が巻き戻った場合の単調増加は保証しません。

文字列がUUIDか判定する

[UUID] はUUID?

真偽値を返すブロックです。opcodeは isUuid、引数IDは UUID、型は文字列です。既定値は 017f22e2-79b0-7cc3-98c4-dc0c0c07398f です。

36文字の 8-4-4-4-12 形式、versionとvariantを判定します。大文字・小文字は区別しません。RFC variantのv1〜v8、すべて0のNil UUID、すべてfのMax UUIDを受け付けます。

空文字、前後の空白・改行、波括弧、urn:uuid: 接頭辞、ハイフン省略、未定義のversion、不正なvariantは false になります。形式の判定であり、一意性・真正性を証明するものではありません。

もし <(入力されたID) はUUID?> なら
  データを受け付ける
でなければ
  「UUIDの形式を確認してください」と言う

形式・時刻・実行環境について

生成にはブラウザの crypto.getRandomValues が必要です。利用できない場合はエラーとなり、弱い乱数を代用しません。UUID形式の判定は乱数APIがなくても動作します。

外部通信、外部ライブラリの読み込み、永続化は行いません。v7は生成時刻を含みます。UUIDをパスワードや認証用の秘密値として使わないでください。

言語はTurboWarpの設定に従い、日本語と英語に対応します。切り戻しは拡張の読み込み解除です。

ソースコードはMPL-2.0で公開しています。文書と配布ファイルは、同じコミットのCI成功後にGitHub Pagesへ公開します。