0.0.8 • Published 2 years ago

@takurinton/eslint-plugin-zod-fluct v0.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

eslint-plugin-zod-fluct

fluct で zod を使うための eslint プラグインです。
まだ開発途中です。

インストール

pnpm install -D @takurinton/eslint-plugin-zod-fluct

使い方

// .eslintrc.js
module.exports = {
  plugins: ["@takurinton/eslint-plugin-zod-fluct"],
  rules: {
    // 適用したいルールを追加する
    "@takurinton/zod-fluct/number": "error",
    "@takurinton/zod-fluct/string": "error",
    "@takurinton/zod-fluct/utils": "error",
  },
};

ルール

対応するつもりがあるものを書いてます。
もしかしたらもう少し抽象化したりするかもしれません。

  • number
  • string
  • array
  • object
  • discriminated unions / unions
  • enum
  • refine
  • utils

number

  • min() を必ずつける
  • max() を必ずつける
  • min() と max() 以外の範囲を制限する検証(nonnegative, positive, ...etc)は禁止
  • エラーメッセージは必須
  • 表記ぶれを防ぐために以下のエイリアスを禁止する。
    • gt
    • gte
    • lt
    • lte
    • nonnegative
    • positive
    • negative
    • nonpositive
    • finite

string

  • nullable() または optional() または nullish() が指定されてない場合は min() は必ずつける
    • 存在確認は min() を使う
  • max() を必ずつける
  • エラーメッセージは必須

array

TODO

object

TODO

discriminated unions / unions

TODO

enum

TODO

refine

TODO

utils

number を使用するときは min() と max() にエラーメッセージをオブジェクトで渡す。

import { z } from "zod";

// min と max にエラーメッセージがないのでエラー
const schema = z.number().min(0).max(100);

// min と max にエラーメッセージがあるのでエラーにならない
const schema = z
  .number()
  .min(0, { message: "0以上である必要があります" })
  .max(100, { message: "100以下である必要があります" });
0.0.8

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.0

2 years ago

0.0.0-beta.2

2 years ago

0.0.0-beta.1

2 years ago

0.0.1

2 years ago