Skip to content

Validation logic in case of undefined #1211

Open
@anatoly-tenenev

Description

@anatoly-tenenev

Hi!
Is this the expected behavior?

import * as v from 'valibot';

const NumberTest = v.pipe(
  v.optional(
    v.pipe(
      v.number(),
      v.transform(() => 'NUMBER RESULT')
    ),
    10
  ),
  v.transform((text) => `success: ${text}`)
);

console.log(v.parse(NumberTest, undefined)) // OK: prints "success: NUMBER RESULT"

const UndefinedTest = v.pipe(
  v.optional(
    v.pipe(
      v.undefined(),
      v.transform(() => 'UNDEFINED RESULT')
    ),
    () => undefined
  ),
  v.transform((text) => `success: ${text}`)
);

console.log(v.parse(UndefinedTest, undefined)) // WHY: prints "success: undefined"

https://valibot.dev/playground/?code=JYWwDg9gTgLgBAKjgQwM5wG5wGZQiOAcg2QBtgAjCGQgbgCh6BjCAO1XgDkBXECgUygAVfhzgBeTADowwMPwAU9ONIhgYwNmSUqVGGXMXLdeqa14CoCgJQAaYyf0woydtmggFNiQD4inAFUAWQAhAFEAJTgIsIBlAIAZIUJrBzg7NIBGAAZjDNNnV1R3KE8FGH4ADxhrXzgAA1RuJiZRVAAuOAASAG8K6oBfetTrBmY2VAhSfilSCABzBX0wZChURR4+QREOWzhuVgATfmxgVn5D61qAemu4AHkAaU6wKDOYdAAiJpa2zsDQpFonFEkJPowWOx4AEjiczhcdvBJMtDDpVOpNKxtGkUfI0Y4pAdjqdzocbPYTAUXG4PF5auI-IQApwACJhABiAElOGEWcD4kkUml8rpvAz9rCSRc8hTpIUaaUvP0anVGs1WqgOt0+lUYEMRmNIZNprMFksZKt1goYcT4YdEXsiXDSVc4Lc4AB1AASAE0Xm9WB84N91X8JbbSeCgA

Metadata

Metadata

Assignees

Labels

intendedThe behavior is expectedquestionFurther information is requested

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions