• 日本語
  • consistent-namespace

    @praha/byethrow から一貫したネームスペース(Result または R)でインポートを使用することを強制します。

    ルールの詳細

    @praha/byethrow ではネームスペースを Result または R としてインポートできますが、プロジェクト内で両方が混在していると一貫性が失われ、コード検索が難しくなります。このルールは単一の優先エイリアスを強制し、違反を自動修正します。

    デフォルトで優先するネームスペースは Result です。

    誤り

    // ❌ 同じコードベースでResultとRが混在している
    import { 
    import Result
    Result
    ,
    import R
    R
    } from '@praha/byethrow';
    const
    const success: Result.Result<42, never>
    success
    =
    import Result
    Result
    .
    const succeed: <42>(value: 42) => Result.Result<42, never> (+1 overload)
    succeed
    (42);
    const
    const failure: Result.Result<never, Error>
    failure
    =
    import R
    R
    .
    const fail: <Error>(error: Error) => Result.Result<never, Error> (+1 overload)
    fail
    (new
    var Error: ErrorConstructor
    new (message?: string, options?: ErrorOptions) => Error (+1 overload)
    Error
    ('Something went wrong'));

    正しい

    // ✅ Resultを一貫して使用
    import { 
    import Result
    Result
    } from '@praha/byethrow';
    const
    const success: Result.Result<42, never>
    success
    =
    import Result
    Result
    .
    const succeed: <42>(value: 42) => Result.Result<42, never> (+1 overload)
    succeed
    (42);
    const
    const failure: Result.Result<never, Error>
    failure
    =
    import Result
    Result
    .
    const fail: <Error>(error: Error) => Result.Result<never, Error> (+1 overload)
    fail
    (new
    var Error: ErrorConstructor
    new (message?: string, options?: ErrorOptions) => Error (+1 overload)
    Error
    ('Something went wrong'));
    // ✅ Rを一貫して使用(Rを優先するよう設定した場合)
    import { 
    import R
    R
    } from '@praha/byethrow';
    const
    const success: R.Result<42, never>
    success
    =
    import R
    R
    .
    const succeed: <42>(value: 42) => R.Result<42, never> (+1 overload)
    succeed
    (42);
    const
    const failure: R.Result<never, Error>
    failure
    =
    import R
    R
    .
    const fail: <Error>(error: Error) => R.Result<never, Error> (+1 overload)
    fail
    (new
    var Error: ErrorConstructor
    new (message?: string, options?: ErrorOptions) => Error (+1 overload)
    Error
    ('Something went wrong'));

    オプション

    ルールは優先する名前空間を単一の文字列で受け取ります(デフォルト: "Result")。

    ResultではなくRを優先する場合:

    import { 
    function defineConfig<T extends OxlintConfig>(config: T): T

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    } from 'oxlint';
    export default
    defineConfig<{
        rules: {
            'byethrow/consistent-namespace': ["error", string];
        };
    }>(config: {
        rules: {
            'byethrow/consistent-namespace': ["error", string];
        };
    }): {
        rules: {
            'byethrow/consistent-namespace': ["error", string];
        };
    }

    Define an Oxlint configuration with type inference.

    @paramconfig - Oxlint configuration@returnsConfig unchanged
    defineConfig
    ({
    rules: {
        'byethrow/consistent-namespace': ["error", string];
    }
    rules
    : {
    'byethrow/consistent-namespace': ['error', 'R'], }, });