Getting started

概要

TypeScript と Effect のための34のルール。

ポリシーを選ぶ

@totto2727/oxlint は、汎用 TypeScript の規約と Effect アプリケーションのポリシーを提供する Oxlint JavaScript プラグインです。 TypeScript プリセット は8つのカスタムルール、Effect プリセット は22のカスタムルールです。両方を使う場合はパッケージの統合プリセットを選びます。 両グループは native Ultracite 7.12.3 core の共通 baseline も含みます。明示的な競合調整は各プリセットのページで説明します。 導入手順ははじめにをご覧ください。

ルールリファレンス

30のプリセットルールと4つの opt-in 互換ポリシー、合計34のカスタムルールを解説します。native Ultracite core のルールは追加の baseline であり、この数には含みません。 force-ts-extension は分割された拡張子ルールと重複します。no-js-extension-imports は mjs/cjs も扱いますが js モードと衝突し、js/jsx の診断が重複します。 no-effect-import-as と no-effect-subpath-import は公式 Effect barrel ルールと逆の import 規約です。互換用に残しますがプリセットでは有効化しません。

TypeScript

Effect

  • no-unused-internal: 内部 export の未使用と公開 API への漏出を防ぎます。
  • no-bigint-literals: bigint リテラルではなく BigInt の構築を使います。
  • no-import-from-barrel-package: バレルの値 export ではなく個別モジュールを import します。
  • no-opaque-instance-fields: Schema.Opaque クラスにインスタンスメンバーを持たせません。
  • force-array-empty: 空・非空の判定に Effect Array の述語を使います。
  • force-iterable-empty: size 比較ではなく Iterable.isEmpty を使います。
  • force-predicate: null、undefined、typeof の直接比較を述語に置き換えます。
  • force-string-empty: 空文字列の判定に String.isEmpty と String.isNonEmpty を使います。
  • no-effect-runtime-run: ランタイム実行を理由の明確なワークフロー境界に限定します。
  • no-error-cause-option: 生のエラーを明示的な error フィールドで保持します。
  • no-error-property-access: 生のエラーのプロパティを参照せず、そのまま渡します。
  • no-fetch: グローバル fetch ではなく Effect HttpClient を使います。
  • no-instanceof-error: instanceof Error による捕捉値の正規化を避けます。
  • no-js-date: ネイティブ Date 操作ではなく Effect DateTime と Duration を使います。
  • no-node-imports: Node 組み込みの直接 import より Effect Platform サービスを優先します。
  • no-option-tag-comparison: _tag 比較ではなく Option.isSome と Option.isNone を使います。
  • no-raw-hono-create-middleware: Hono ミドルウェアの生成を Effect 対応ラッパーに集約します。
  • no-sync-decode: Schema のデコードを Sync や Promise ではなく Effect または Exit に保ちます。
  • no-type-predicate: 手書きの型述語より Schema による検証を優先します。
  • prefer-is-nullish: 区別が意図的でない限り null と undefined を統一して扱います。
  • prefer-non-unknown-decode: 入力型が既知なら型付き Schema デコーダーを使います。
  • require-top-level-decoder: Schema デコーダーをモジュールスコープで構築・キャッシュします。