@traversable/schema
    Preparing search index...

    Module @traversable/json-schema-test - v0.0.25


    ᯓ𝘁𝗿𝗮𝘃𝗲𝗿𝘀𝗮𝗯𝗹𝗲/𝗷𝘀𝗼𝗻-𝘀𝗰𝗵𝗲𝗺𝗮-𝘁𝗲𝘀𝘁


    Testing utility that generates arbitrary, pseudorandom JSON Schema documents, powered by fast-check

    NPM Version   TypeScript   License   npm  
    Static Badge   Static Badge   Static Badge  


    @traversable/json-schema-test has 1 peer dependency:

    1. fast-check
    $ pnpm add -D @traversable/json-schema-test fast-check
    

    Here's an example of importing the library:

    import { JsonSchemaTest } from '@traversable/json-schema-test'

    // see below for specifc examples

    Use JsonSchemaTest.seedToSchema to convert a seed generated by JsonSchemaTest.SeedGenerator into a JSON Schema schema that satisfies the configuration options you specified.

    import { JsonSchemaTest } from '@traversable/json-schema-test'
    import * as fc from 'fast-check'

    const builder = JsonSchemaTest.SeedGenerator()['*']
    const [mySeed] = fc.sample(builder.object, 1)

    const mySchema = JsonSchemaTest.seedToSchema(mySeed)
    // ^? const mySchema: JsonSchema

    Use JsonSchemaTest.seedToValidData to convert a seed generated by JsonSchemaTest.SeedGenerator into data that satisfies the schema that the seed represents.

    import { JsonSchemaTest } from '@traversable/json-schema-test'
    import * as fc from 'fast-check'

    const builder = JsonSchemaTest.SeedGenerator()['*']
    const [mySeed] = fc.sample(builder.object, 1)

    const mySchema = JsonSchemaTest.seedToSchema(mySeed)
    // ^? const mySchema: JsonSchema

    const validData = JsonSchemaTest.seedToValidData(mySeed)
    // ^? validated against `mySchema`, will always succeed

    Use JsonSchemaTest.seedToInvalidData to convert a seed generated by JsonSchemaTest.SeedGenerator into data that does not satisfy the schema that the seed represents.

    import { JsonSchemaTest } from '@traversable/json-schema-test'
    import * as fc from 'fast-check'

    const builder = JsonSchemaTest.SeedGenerator()['*']
    const [mySeed] = fc.sample(builder.object, 1)

    const mySchema = JsonSchemaTest.seedToSchema(mySeed)
    // ^? const mySchema: JsonSchema.TSchema

    const invalidData = JsonSchemaTest.seedToValidData(mySeed)
    // ^? validated against `mySchema`, will always fail
    Note

    JsonSchemaTest.SeedGenerator is fairly low-level. All of the other exports of this library have been implemented in terms of JsonSchemaTest.SeedGenerator.

    Generates a configurable, pseudo-random "seed builder".

    import { JsonSchemaTest, type JsonSchema } from '@traversable/json-schema-test'
    import * as fc from 'fast-check'

    const builder = JsonSchemaTest.SeedGenerator({
    include: ["boolean", "string", "object"],
    // 𐙘 use `include` to only include certain schema types
    exclude: ["boolean", "any"],
    // 𐙘 use `exclude` to exclude certain schema types altogether (overrides `include`)
    object: { maxKeys: 5 },
    // 𐙘 specific arbitraries are configurable by name
    })

    // included schemas are present as properties on your generator...
    builder.string
    builder.object

    // ...excluded schemas are not present...
    builder.boolean // 🚫 TypeError

    // ...a special wildcard `"*"` property (pronounced "surprise me") is always present:
    builder["*"]

    /**
    * `fast-check` will generate a seed, which is a data structure containing
    * integers that represent a kind of AST.
    *
    * To use a seed, you need to pass it to an interpreter like `JsonSchemaTest.seedToSchema`,
    * `JsonSchemaTest.seedToValidData` or `JsonSchemaTest.seedToInvalidData`:
    */

    const [mySeed] = fc.sample(builder.object, 1)

    const mySchema = JsonSchemaTest.seedToSchema(mySeed)
    // ^? const mySchema: JsonSchema

    const validData = JsonSchemaTest.seedToValidData(mySeed)
    // ^? since the `mySeed` was also used to generate `mySchema`,
    // parsing `validData` should always succeed

    const invalidData = JsonSchemaTest.seedToInvalidData(mySeed)
    // ^? since the `mySeed` was also used to generate `mySchema`,
    // parsing `invalidData` should always fail

    Like JsonSchemaTest.SeedGenerator, except JsonSchemaTest.SeedValidDataGenerator comes pre-configured to exclude schemas that make it impossible to reliably generate valid data.

    Note

    JsonSchemaTest.SeedValidDataGenerator does not accept any options. If you need more fine-grained control of the schemas being generated, use JsonSchemaTest.SeedGenerator.

    Like JsonSchemaTest.SeedGenerator, except JsonSchemaTest.SeedValidDataGenerator comes pre-configured to exclude schemas that make it impossible to reliably generate invalid data.

    Note

    JsonSchemaTest.SeedInvalidDataGenerator does not accept any options. If you need more fine-grained control of the schemas being generated, use JsonSchemaTest.SeedGenerator.

    Namespaces

    JsonSchemaTest
    SchemaGenerator
    Seed

    Interfaces

    Builder

    Type Aliases

    Seed
    VERSION

    Variables

    SchemaGenerator
    SeedGenerator
    SeedInvalidDataGenerator
    seedsThatPreventGeneratingInvalidData
    seedsThatPreventGeneratingValidData
    seedToInvalidData
    seedToValidData
    SeedValidDataGenerator
    VERSION

    Functions

    Builder
    seedToInvalidDataGenerator
    seedToSchema
    seedToValidDataGenerator