diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-13 21:34:48 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-13 21:34:48 -0800 |
| commit | 76cb9c2a39d477a64824a985ade40507e3bbade1 (patch) | |
| tree | 41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/@standard-schema/spec/README.md | |
| parent | 819a39a21ac992b1393244a4c283bbb125208c69 (diff) | |
| download | neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2 neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip | |
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/@standard-schema/spec/README.md')
| -rw-r--r-- | vanilla/node_modules/@standard-schema/spec/README.md | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/vanilla/node_modules/@standard-schema/spec/README.md b/vanilla/node_modules/@standard-schema/spec/README.md new file mode 100644 index 0000000..f9813ff --- /dev/null +++ b/vanilla/node_modules/@standard-schema/spec/README.md @@ -0,0 +1,198 @@ +<h1 align="center"> + <img alt="Standard Schema fire logo" loading="lazy" width="50" height="50" decoding="async" data-nimg="1" style="color:transparent" src="https://standardschema.dev/favicon.svg"> + </br> + Standard Schema</h1> +<p align="center"> + A family of specs for interoperable TypeScript + <br/> + <a href="https://standardschema.dev">standardschema.dev</a> +</p> +<br/> + +<!-- start --> + +The Standard Schema project is a set of interfaces that standardize the provision and consumption of shared functionality in the TypeScript ecosystem. + +Its goal is to allow tools to accept a single input that includes all the types and capabilities they need— no library-specific adapters, no extra dependencies. The result is an ecosystem that's fair for implementers, friendly for consumers, and open for end users. + +## The specifications + +The specifications can be found below in their entirety. Libraries wishing to implement a spec can copy/paste the code block below into their codebase. They're also available at `@standard-schema/spec` on [npm](https://www.npmjs.com/package/@standard-schema/spec) and [JSR](https://jsr.io/@standard-schema/spec). + +```ts +// ######################### +// ### Standard Typed ### +// ######################### + +/** 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 declare 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"]; +} + +// ########################## +// ### Standard Schema ### +// ########################## + +/** The Standard Schema interface. */ +export interface StandardSchemaV1<Input = unknown, Output = Input> { + /** The Standard Schema properties. */ + readonly "~standard": StandardSchemaV1.Props<Input, Output>; +} + +export declare 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>; +} + +// ############################### +// ### Standard JSON 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 declare 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. May throw if conversion is not supported. */ + readonly input: ( + options: StandardJSONSchemaV1.Options + ) => Record<string, unknown>; + /** Converts the output type to JSON Schema. May throw if conversion is not supported. */ + readonly output: ( + options: StandardJSONSchemaV1.Options + ) => Record<string, unknown>; + } + + /** + * The target version of the generated JSON Schema. + * + * It is *strongly recommended* that implementers support `"draft-2020-12"` and `"draft-07"`, as they are both in wide use. All other targets can be implemented on a best-effort basis. Libraries should throw if they don't support a specified target. + * + * The `"openapi-3.0"` target is intended as a standardized specifier for OpenAPI 3.0 which is a superset of JSON Schema `"draft-04"`. + */ + export type Target = + | "draft-2020-12" + | "draft-07" + | "openapi-3.0" + // Accepts any string for future targets while preserving autocomplete + | ({} & string); + + /** The options for the input/output methods. */ + export interface Options { + /** Specifies the target version of the generated JSON Schema. Support for all versions is on a best-effort basis. If a given version is not supported, the library should throw. */ + 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>; +} +``` |
