Skip to content

routier-collection


routier-collection / core/src / s

Variable: s

const s: object

Defined in: core/src/schema/builder.ts:45

Type Declaration

number()

number: <T>(...literals) => SchemaNumber<T[number] extends never ? number : T[number], never>

Type Parameters

T

T extends number[] = number[]

Parameters

literals

...T

Returns

SchemaNumber<T[number] extends never ? number : T[number], never>

string()

string: {<T>(...literals): SchemaString<T[number] extends never ? string : T[number], never>; <T>(options, ...literals): SchemaString<T[number] extends never ? string : T[number], never>; }

Call Signature

<T>(...literals): SchemaString<T[number] extends never ? string : T[number], never>

A string, optionally declaring how long it can be and which values it may take.

ts
s.string()                              // any string
s.string("draft", "published")          // a literal union
s.string({ maxLength: 4000 })           // any string, declared long
s.string({ maxLength: 8 }, "a", "b")    // both

The options object is a leading parameter rather than a .maxLength() modifier so the declaration stays on the factory, next to the literals. A modifier would also have to survive being wrapped by another modifier, which is the trap SchemaBase.maxLength documents.

Type Parameters
T

T extends string[] = string[]

Parameters
literals

...T

Returns

SchemaString<T[number] extends never ? string : T[number], never>

Call Signature

<T>(options, ...literals): SchemaString<T[number] extends never ? string : T[number], never>

A string, optionally declaring how long it can be and which values it may take.

ts
s.string()                              // any string
s.string("draft", "published")          // a literal union
s.string({ maxLength: 4000 })           // any string, declared long
s.string({ maxLength: 8 }, "a", "b")    // both

The options object is a leading parameter rather than a .maxLength() modifier so the declaration stays on the factory, next to the literals. A modifier would also have to survive being wrapped by another modifier, which is the trap SchemaBase.maxLength documents.

Type Parameters
T

T extends string[] = string[]

Parameters
options

StringOptions

literals

...T

Returns

SchemaString<T[number] extends never ? string : T[number], never>

boolean()

boolean: <T>() => SchemaBoolean<T, never>

Type Parameters

T

T extends boolean = boolean

Returns

SchemaBoolean<T, never>

date()

date: <T>() => SchemaDate<T, never>

Type Parameters

T

T extends Date = Date

Returns

SchemaDate<T, never>

array()

array: <T>(schema) => SchemaArray<SchemaBase<T, never>, never>

Type Parameters

T

T extends unknown

Parameters

schema

SchemaBase<T, never>

Returns

SchemaArray<SchemaBase<T, never>, never>

object()

object: <T>(schema) => SchemaObject<T, never>

Type Parameters

T

T extends object = { }

Parameters

schema

T

Returns

SchemaObject<T, never>

file()

file: () => SchemaFile<FileReferenceValue, never>

A file. Assign content, read back a reference.

Needs @routier/blob-plugin wrapping your plugin to turn the one into the other; core only carries the value through untouched.

Returns

SchemaFile<FileReferenceValue, never>

vector()

vector: (dimensions) => SchemaVector<VectorValue, never>

An embedding of dimensions numbers, searchable with .nearest().

Every backend supports it. One with a native vector column uses it; the rest store the numbers as JSON and score the search in memory, which returns the same rows.

Parameters

dimensions

number

Returns

SchemaVector<VectorValue, never>

define()

define: <T>(collectionName, schema) => SchemaDefinition<T>

Type Parameters

T

T extends object

Parameters

collectionName

string

schema

T

Returns

SchemaDefinition<T>

Released under the MIT License.