標準ライブラリ
Dicks 0.2 の配布スナップショットには 11 個の公式パッケージがあります。各パッケージは独立したリポジトリで管理し、取り込むコミットを固定します。関数一覧と正確なバージョンは 公式パッケージ一覧 を参照してください。標準関数の実装も .dicks からコンパイルし、DaaS と同じ検査を通します。
{
"dependencies": {
"@dicks/http": {"builtin": "http"},
"@dicks/validation": {"builtin": "validation"}
},
"modules": {
"app": {
"source": "main.dicks",
"imports": {
"10": {"from": "@dicks/http", "name": "json"},
"11": {"from": "@dicks/validation", "name": "integer"}
}
}
}
}
実際のプロジェクトでは name, entry なども必要です。モジュールの説明を参照してください。依存は推移的に解決され、dicks lock でファイルごとのハッシュを固定します。
| パッケージ | 公開関数・役割 |
|---|---|
@dicks/core | 共通の List / Result 型、検査付き JSON・文字列ホスト境界 |
@dicks/math | min, max, clamp, between, abs, sign, divide, remainder, add |
@dicks/collections | sum, firstInt, firstText, lastInt, lastText, containsInt, containsText, sliceInts |
@dicks/json | object0 … object4, getText, getInt, getBool, arrayLength, integer, encode |
@dicks/text | repeat, join, nonEmpty, parseInt, isDigits, utf8Bytes, startsWith, slice |
@dicks/http | response, json, error, text, empty, header, query, withHeader, withStatus, redirect, method, path, isSuccess, matches |
@dicks/validation | integer, required, maxBytes, oneOf, range |
@dicks/random | uniform:供給された u32 列から剰余の偏りを避けて整数を選ぶ |
@dicks/testing | equalInt, equalText, equalBool, isTrue, isFalse, okInt, errInt |
@dicks/cloudflare | Workers Request/Response、D1、環境変数、乱数、時刻、HTTP、リソース、ログ |
@dicks/discord | Gateway、コマンド、データ取得、REST、定期タスク。詳細は Discord bots |
契約
関数の完全な引数・戻り値型は各 library.dicks の関数ヘッダと package.json の export 表が正です。代表例:
| 関数 | スタック上の引数 → 戻り値 |
|---|---|
math.add / divide / remainder | Int Int → Result<Int,Text> |
math.abs | Int → Result<Int,Text> |
math.clamp | value min max → Result<Int,Text> |
validation.integer | Text min max → Result<Int,Text> |
text.parseInt | Text → Result<Int,Text> |
http.json | Json status → HttpResponse |
http.error | detail status → HttpResponse |
http.query | HttpRequest name → Result<Text,Text> |
random.uniform | List<Int> cursor min max → nextCursor Result<Int,Text> |
collections.sliceInts | List<Int> start count → Result<List<Int>,Text> |
- 整数は符号付き 64 bit。加算オーバーフロー、ゼロ除算、最小値の絶対値、範囲不正は Result のエラーです。
- JSON 整数は ±9,007,199,254,740,991 以内。型不一致を数値へ強制変換しません。
text.parseIntは符号つき 10 進整数だけを受け付けます。小数、空白、64 bit 範囲外はエラーです。text.repeatは最大 4096 回、joinは最大 64 要素、出力は UTF-8 で 65536 bytes まで。sliceIntsの最大 count は 4096。通常の実行 fuel とメモリ上限も適用されます。uniformは両端を含み、0 … 2³²−1 の範囲です。1 回につき最大 64 語を検査します。語の範囲不正や枯渇はエラー。暗黙に弱い乱数へ切り替えません。暗号学的な乱数源は Cloudflare ホスト側から供給します。http.headerのキーは Request 境界で小文字に正規化されています。見つからなければ空文字。query は Result で欠落を区別します。testingの失敗は assertion trap になり、CLI は非ゼロで終了します。
境界値・エラー・日本語/非 BMP 文字を含む 31 シナリオを、TypeScript オラクルと Rust 出力の両方で実行します。ブートストラップ検証では Dicks 製コンパイラの stage 2 / stage 3 が同じコードを生成することも検査します。