createSerializer @vuqs/core
Builds a reusable, schema-bound function that turns values into a query.
Usage
ts
import { codecs, createSerializer, defineQuerySchema } from '@vuqs/core'
const schema = defineQuerySchema({ q: codecs.string, page: codecs.integer })
const serialize = createSerializer(schema)
serialize({ q: 'phone' }) // { q: 'phone' }
serialize({ q: 'old', page: '1' }, { page: 2 }) // { q: 'old', page: '2' }
serialize({ q: 'old' }, { q: undefined }) // {}Type
ts
function createSerializer<TSchema extends QueryStateSchemaInput>(
schema: TSchema,
options: CreateSerializerOptions & { stringify: SerializerStringify, parse: SerializerParse },
): Serializer<NormalizeQueryStateSchema<TSchema>, ParsedQuery | string, string>
function createSerializer<TSchema extends QueryStateSchemaInput>(
schema: TSchema,
options: CreateSerializerOptions & { stringify: SerializerStringify },
): Serializer<NormalizeQueryStateSchema<TSchema>, ParsedQuery, string>
function createSerializer<TSchema extends QueryStateSchemaInput>(
schema: TSchema,
options: CreateSerializerOptions & { parse: SerializerParse },
): Serializer<NormalizeQueryStateSchema<TSchema>, ParsedQuery | string, ParsedQueryRaw>
function createSerializer<TSchema extends QueryStateSchemaInput>(
schema: TSchema,
options?: CreateSerializerOptions,
): Serializer<NormalizeQueryStateSchema<TSchema>, ParsedQuery, ParsedQueryRaw>Parameters
schema: TSchema- Codecs or param definitions keyed by logical name. Codec inputs are normalized before serialization.
options?: CreateSerializerOptionsclearOnDefault?: boolean: allows omission of static-default values when the complete static read is preserved. The param setting takes precedence over this option; otherwise the default istrue.stringify?: (query: ParsedQueryRaw) => string: enables string output. Provide it to return a query string instead of a query object.parse?: (search: string) => ParsedQuery: enables a string base. Provide it to accept a raw query string as the base argument.stringifycontrols output;parsecontrols the accepted base. They can be supplied independently.
Return value
serialize: Serializer- Callable two ways:
serialize(values)builds a fresh query fromvalues, andserialize(base, values)patchesvaluesover abasequery. - Omitted params are preserved,
undefinedclears, and a value sets. Unmanaged base params are preserved. - Throws if a string base is passed without a
parseoption.
- Callable two ways:
CreateSerializerOptions
ts
interface CreateSerializerOptions {
clearOnDefault?: boolean
stringify?: (query: ParsedQueryRaw) => string
parse?: (search: string) => ParsedQuery
}Serializer
ts
interface Serializer<TSchema extends QueryStateSchema, TBase, TOutput> {
(values: QueryStateWriteValues<TSchema>): TOutput
(base: TBase, values: QueryStateWriteValues<TSchema>): TOutput
}SerializerStringify
ts
type SerializerStringify = (query: ParsedQueryRaw) => stringSerializerParse
ts
type SerializerParse = (search: string) => ParsedQuery