@traversable/schema
    Preparing search index...

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


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


    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

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

    import { JsonSchemaTest } 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", "unknown"],
    // 𐙘 use `exclude` to exclude certain schema types altogether (overrides `include`)
    minDepth: 1,
    // 𐙘 use `minDepth` to control the schema's minimum depth
    // **NOTE:** schemas can get very large!
    // using in your CI/CD pipeline is _not_ recommended
    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

    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