153 lines · 5.3 KB · TypeScript
RawDownload
// Type-only vendored subset of @standard-schema/spec 1.1.0.// Source: https://github.com/standard-schema/standard-schema /** The Standard Typed interface. This is a base type extended by other specs. */export interface StandardTypedV1<Input = unknown, Output = Input> {  /** The Standard properties. */  readonly "~standard": StandardTypedV1.Props<Input, Output>;} export namespace StandardTypedV1 {  /** The Standard Typed properties interface. */  export interface Props<Input = unknown, Output = Input> {    /** The version number of the standard. */    readonly version: 1;    /** The vendor name of the schema library. */    readonly vendor: string;    /** Inferred types associated with the schema. */    readonly types?: Types<Input, Output> | undefined;  }   /** The Standard Typed types interface. */  export interface Types<Input = unknown, Output = Input> {    /** The input type of the schema. */    readonly input: Input;    /** The output type of the schema. */    readonly output: Output;  }   /** Infers the input type of a Standard Typed. */  export type InferInput<Schema extends StandardTypedV1> = NonNullable<    Schema["~standard"]["types"]  >["input"];   /** Infers the output type of a Standard Typed. */  export type InferOutput<Schema extends StandardTypedV1> = NonNullable<    Schema["~standard"]["types"]  >["output"];} /** The Standard Schema interface. */export interface StandardSchemaV1<Input = unknown, Output = Input> {  /** The Standard Schema properties. */  readonly "~standard": StandardSchemaV1.Props<Input, Output>;} export namespace StandardSchemaV1 {  /** The Standard Schema properties interface. */  export interface Props<Input = unknown, Output = Input> extends StandardTypedV1.Props<    Input,    Output  > {    /** Validates unknown input values. */    readonly validate: (      value: unknown,      options?: StandardSchemaV1.Options | undefined,    ) => Result<Output> | Promise<Result<Output>>;  }   /** The result interface of the validate function. */  export type Result<Output> = SuccessResult<Output> | FailureResult;   /** The result interface if validation succeeds. */  export interface SuccessResult<Output> {    /** The typed output value. */    readonly value: Output;    /** A falsy value for `issues` indicates success. */    readonly issues?: undefined;  }   export interface Options {    /** Explicit support for additional vendor-specific parameters, if needed. */    readonly libraryOptions?: Record<string, unknown> | undefined;  }   /** The result interface if validation fails. */  export interface FailureResult {    /** The issues of failed validation. */    readonly issues: ReadonlyArray<Issue>;  }   /** The issue interface of the failure output. */  export interface Issue {    /** The error message of the issue. */    readonly message: string;    /** The path of the issue, if any. */    readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;  }   /** The path segment interface of the issue. */  export interface PathSegment {    /** The key representing a path segment. */    readonly key: PropertyKey;  }   /** The Standard types interface. */  export interface Types<Input = unknown, Output = Input> extends StandardTypedV1.Types<    Input,    Output  > {}   /** Infers the input type of a Standard. */  export type InferInput<Schema extends StandardTypedV1> = StandardTypedV1.InferInput<Schema>;   /** Infers the output type of a Standard. */  export type InferOutput<Schema extends StandardTypedV1> = StandardTypedV1.InferOutput<Schema>;} /** The Standard JSON Schema interface. */export interface StandardJSONSchemaV1<Input = unknown, Output = Input> {  /** The Standard JSON Schema properties. */  readonly "~standard": StandardJSONSchemaV1.Props<Input, Output>;} export namespace StandardJSONSchemaV1 {  /** The Standard JSON Schema properties interface. */  export interface Props<Input = unknown, Output = Input> extends StandardTypedV1.Props<    Input,    Output  > {    /** Methods for generating the input/output JSON Schema. */    readonly jsonSchema: StandardJSONSchemaV1.Converter;  }   /** The Standard JSON Schema converter interface. */  export interface Converter {    /** Converts the input type to JSON Schema. */    readonly input: (options: StandardJSONSchemaV1.Options) => Record<string, unknown>;    /** Converts the output type to JSON Schema. */    readonly output: (options: StandardJSONSchemaV1.Options) => Record<string, unknown>;  }   export type Target = "draft-2020-12" | "draft-07" | "openapi-3.0" | ({} & string);   /** The options for the input/output methods. */  export interface Options {    /** Specifies the target version of the generated JSON Schema. */    readonly target: Target;    /** Explicit support for additional vendor-specific parameters, if needed. */    readonly libraryOptions?: Record<string, unknown> | undefined;  }   /** The Standard types interface. */  export interface Types<Input = unknown, Output = Input> extends StandardTypedV1.Types<    Input,    Output  > {}   /** Infers the input type of a Standard. */  export type InferInput<Schema extends StandardTypedV1> = StandardTypedV1.InferInput<Schema>;   /** Infers the output type of a Standard. */  export type InferOutput<Schema extends StandardTypedV1> = StandardTypedV1.InferOutput<Schema>;}